@gravity-ui/page-constructor 5.14.4-alpha.0 → 5.14.4-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -1
- package/build/cjs/blocks/CardLayout/index.d.ts +1 -1
- package/build/cjs/blocks/ContentLayout/index.d.ts +1 -1
- package/build/cjs/blocks/ExtendedFeatures/index.d.ts +1 -1
- package/build/cjs/blocks/FilterBlock/index.d.ts +1 -1
- package/build/cjs/blocks/Form/index.d.ts +1 -1
- package/build/cjs/blocks/Header/dynamic-form.d.ts +2 -2
- package/build/cjs/blocks/Header/index.d.ts +1 -1
- package/build/cjs/blocks/HeaderSlider/index.d.ts +1 -1
- package/build/cjs/blocks/Icons/index.d.ts +1 -1
- package/build/cjs/blocks/Info/index.d.ts +1 -1
- package/build/cjs/blocks/Map/index.d.ts +1 -1
- package/build/cjs/blocks/Media/index.d.ts +1 -1
- package/build/cjs/blocks/PromoFeaturesBlock/index.d.ts +1 -1
- package/build/cjs/blocks/Questions/index.d.ts +1 -1
- package/build/cjs/blocks/Share/index.d.ts +1 -1
- package/build/cjs/blocks/Slider/dynamic-form.d.ts +3 -3
- package/build/cjs/blocks/Slider/index.d.ts +1 -1
- package/build/cjs/blocks/Table/index.d.ts +1 -1
- package/build/cjs/blocks/Tabs/index.d.ts +1 -1
- package/build/cjs/blocks/TestEditorBlock/form.d.ts +1 -1
- package/build/cjs/blocks/TestEditorBlock/index.d.ts +1 -1
- package/build/cjs/common/hooks/usePostMessage.d.ts +11 -0
- package/build/cjs/common/hooks/usePostMessage.js +94 -0
- package/build/{esm → cjs/common}/types/actions/initial.d.ts +1 -1
- package/build/{esm → cjs/common}/types/actions/other.d.ts +1 -1
- package/build/cjs/{types → common/types}/actions/reorder.d.ts +3 -1
- package/build/cjs/{types/index.d.ts → common/types/common.d.ts} +3 -3
- package/build/cjs/{types/dynamic-form.d.ts → common/types/forms.d.ts} +2 -1
- package/build/cjs/common/types/index.d.ts +4 -0
- package/build/cjs/common/types/index.js +7 -0
- package/build/cjs/{context/messagesContext/types.d.ts → common/types/messages.d.ts} +1 -1
- package/build/cjs/components/Image/dynamic-form.d.ts +1 -1
- package/build/cjs/constructor-items.d.ts +7 -1
- package/build/cjs/constructor-items.js +6 -0
- package/build/cjs/containers/PageConstructor/components/ConstructorBlock/hooks/useEditorBlockMouseEvents.js +1 -1
- package/build/cjs/context/editorContext/store.d.ts +1 -1
- package/build/cjs/context/editorContext/store.js +7 -7
- package/build/cjs/context/messagesContext/hooks/useMessageObserver.d.ts +1 -1
- package/build/cjs/context/messagesContext/hooks/useMessageSender.d.ts +1 -1
- package/build/cjs/context/messagesContext/messagesContext.d.ts +1 -2
- package/build/cjs/context/messagesContext/messagesProvider.js +7 -53
- package/build/cjs/context/messagesContext/store.d.ts +1 -2
- package/build/cjs/editor/data/templates/test-editor-block.json +18 -0
- package/build/cjs/editor-v2/components/BigOverlay/BigOverlay.css +33 -0
- package/build/cjs/editor-v2/components/BigOverlay/BigOverlay.d.ts +6 -0
- package/build/cjs/editor-v2/components/BigOverlay/BigOverlay.js +40 -0
- package/build/cjs/editor-v2/components/BlockConfig/BlockConfig.css +33 -0
- package/build/cjs/editor-v2/components/BlockConfig/BlockConfig.d.ts +6 -0
- package/build/cjs/editor-v2/components/BlockConfig/BlockConfig.js +35 -0
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.css +42 -0
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.d.ts +7 -0
- package/build/cjs/editor-v2/components/BlocksList/BlocksList.js +22 -0
- package/build/cjs/editor-v2/components/DynamicForm/DynamicForm.css +2 -0
- package/build/cjs/editor-v2/components/DynamicForm/DynamicForm.d.ts +11 -0
- package/build/cjs/editor-v2/components/DynamicForm/DynamicForm.js +118 -0
- package/build/cjs/editor-v2/components/DynamicForm/FieldBase/FieldBase.css +61 -0
- package/build/cjs/editor-v2/components/DynamicForm/FieldBase/FieldBase.d.ts +12 -0
- package/build/cjs/editor-v2/components/DynamicForm/FieldBase/FieldBase.js +32 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Array/Array.css +38 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Array/Array.d.ts +13 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Array/Array.js +83 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Array/ItemButton/ItemButton.d.ts +11 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Array/ItemButton/ItemButton.js +28 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Boolean/Boolean.d.ts +9 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Boolean/Boolean.js +14 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Number/Number.d.ts +9 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Number/Number.js +17 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Object/Object.css +5 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Object/Object.d.ts +12 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Object/Object.js +16 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.css +8 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.d.ts +11 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.js +34 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Select/Select.d.ts +12 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Select/Select.js +16 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Text/Text.d.ts +9 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/Text/Text.js +14 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/TextArea/TextArea.d.ts +9 -0
- package/build/cjs/editor-v2/components/DynamicForm/Fields/TextArea/TextArea.js +14 -0
- package/build/cjs/editor-v2/components/DynamicForm/utils.d.ts +3 -0
- package/build/cjs/editor-v2/components/DynamicForm/utils.js +22 -0
- package/build/cjs/editor-v2/components/GlobalConfig/GlobalConfig.css +22 -0
- package/build/cjs/editor-v2/components/GlobalConfig/GlobalConfig.d.ts +6 -0
- package/build/cjs/editor-v2/components/GlobalConfig/GlobalConfig.js +18 -0
- package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.css +53 -0
- package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.d.ts +6 -0
- package/build/cjs/editor-v2/components/MiddleScreen/MiddleScreen.js +34 -0
- package/build/cjs/editor-v2/components/Overlay/Overlay.css +56 -0
- package/build/cjs/editor-v2/components/Overlay/Overlay.d.ts +6 -0
- package/build/cjs/editor-v2/components/Overlay/Overlay.js +71 -0
- package/build/cjs/editor-v2/components/Sidebar/Sidebar.css +66 -0
- package/build/cjs/editor-v2/components/Sidebar/Sidebar.d.ts +7 -0
- package/build/cjs/editor-v2/components/Sidebar/Sidebar.js +68 -0
- package/build/cjs/editor-v2/components/Source/Source.css +21 -0
- package/build/cjs/editor-v2/components/Source/Source.d.ts +6 -0
- package/build/cjs/editor-v2/components/Source/Source.js +30 -0
- package/build/cjs/editor-v2/components/SourceCode/SourceCode.css +44 -0
- package/build/cjs/editor-v2/components/SourceCode/SourceCode.d.ts +6 -0
- package/build/cjs/editor-v2/components/SourceCode/SourceCode.js +55 -0
- package/build/cjs/editor-v2/components/TopBar/TopBar.css +34 -0
- package/build/cjs/editor-v2/components/TopBar/TopBar.d.ts +10 -0
- package/build/cjs/editor-v2/components/TopBar/TopBar.js +15 -0
- package/build/cjs/editor-v2/components/Tree/Tree.css +148 -0
- package/build/cjs/editor-v2/components/Tree/Tree.d.ts +7 -0
- package/build/cjs/editor-v2/components/Tree/Tree.js +32 -0
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.css +23 -0
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +10 -0
- package/build/cjs/editor-v2/components/ViewSwitches/ViewSwitches.js +22 -0
- package/build/cjs/editor-v2/constants.d.ts +1 -0
- package/build/cjs/editor-v2/constants.js +4 -0
- package/build/cjs/editor-v2/containers/Editor/Editor.css +54 -0
- package/build/cjs/editor-v2/containers/Editor/Editor.d.ts +9 -0
- package/build/cjs/editor-v2/containers/Editor/Editor.js +66 -0
- package/build/cjs/editor-v2/containers/Editor/hooks/useAdminInitialize.d.ts +2 -0
- package/build/cjs/editor-v2/containers/Editor/hooks/useAdminInitialize.js +25 -0
- package/build/cjs/editor-v2/context/contentConfig/contentConfigContext.d.ts +10 -0
- package/build/cjs/editor-v2/context/contentConfig/contentConfigContext.js +9 -0
- package/build/cjs/editor-v2/context/contentConfig/contentConfigProvider.d.ts +8 -0
- package/build/cjs/editor-v2/context/contentConfig/contentConfigProvider.js +19 -0
- package/build/cjs/editor-v2/context/contentConfig/hooks/useContentConfigStore.d.ts +2 -0
- package/build/cjs/editor-v2/context/contentConfig/hooks/useContentConfigStore.js +15 -0
- package/build/cjs/editor-v2/context/contentConfig/index.d.ts +4 -0
- package/build/cjs/editor-v2/context/contentConfig/index.js +7 -0
- package/build/cjs/editor-v2/context/contentConfig/store.d.ts +35 -0
- package/build/cjs/editor-v2/context/contentConfig/store.js +106 -0
- package/build/cjs/editor-v2/context/editorContext/editorContext.d.ts +11 -0
- package/build/cjs/editor-v2/context/editorContext/editorContext.js +10 -0
- package/build/cjs/editor-v2/context/editorContext/editorProvider.d.ts +2 -0
- package/build/cjs/editor-v2/context/editorContext/editorProvider.js +15 -0
- package/build/cjs/editor-v2/context/editorContext/hooks/useEditorStore.d.ts +2 -0
- package/build/cjs/editor-v2/context/editorContext/hooks/useEditorStore.js +15 -0
- package/build/cjs/editor-v2/context/editorContext/index.d.ts +4 -0
- package/build/cjs/editor-v2/context/editorContext/index.js +7 -0
- package/build/cjs/editor-v2/context/editorContext/store.d.ts +26 -0
- package/build/cjs/editor-v2/context/editorContext/store.js +55 -0
- package/build/cjs/editor-v2/context/iframeContext/hooks/useIframeStore.d.ts +2 -0
- package/build/cjs/editor-v2/context/iframeContext/hooks/useIframeStore.js +15 -0
- package/build/cjs/editor-v2/context/iframeContext/iframeContext.d.ts +13 -0
- package/build/cjs/editor-v2/context/iframeContext/iframeContext.js +9 -0
- package/build/cjs/editor-v2/context/iframeContext/iframeProvider.d.ts +7 -0
- package/build/cjs/editor-v2/context/iframeContext/iframeProvider.js +23 -0
- package/build/cjs/editor-v2/context/iframeContext/index.d.ts +4 -0
- package/build/cjs/editor-v2/context/iframeContext/index.js +7 -0
- package/build/cjs/editor-v2/context/iframeContext/store.d.ts +26 -0
- package/build/cjs/editor-v2/context/iframeContext/store.js +45 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessageObserver.d.ts +4 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessageObserver.js +17 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessageSender.d.ts +2 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessageSender.js +11 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessagesStore.d.ts +2 -0
- package/build/cjs/editor-v2/context/messagesContext/hooks/useMessagesStore.js +15 -0
- package/build/cjs/editor-v2/context/messagesContext/index.d.ts +5 -0
- package/build/cjs/editor-v2/context/messagesContext/index.js +8 -0
- package/build/cjs/editor-v2/context/messagesContext/messagesContext.d.ts +13 -0
- package/build/cjs/editor-v2/context/messagesContext/messagesContext.js +12 -0
- package/build/cjs/editor-v2/context/messagesContext/messagesProvider.d.ts +2 -0
- package/build/cjs/editor-v2/context/messagesContext/messagesProvider.js +35 -0
- package/build/cjs/editor-v2/context/messagesContext/store.d.ts +22 -0
- package/build/cjs/editor-v2/context/messagesContext/store.js +17 -0
- package/build/cjs/editor-v2/icons/Tablet.d.ts +2 -0
- package/build/cjs/editor-v2/icons/Tablet.js +9 -0
- package/build/cjs/editor-v2/index.d.ts +2 -0
- package/build/cjs/editor-v2/index.js +7 -0
- package/build/cjs/editor-v2/styles/mixins.css +0 -0
- package/build/cjs/editor-v2/styles/root.css +9 -0
- package/build/cjs/editor-v2/styles/variables.css +0 -0
- package/build/cjs/editor-v2/utils/code.d.ts +6 -0
- package/build/cjs/editor-v2/utils/code.js +11 -0
- package/build/cjs/editor-v2/utils/index.d.ts +17 -0
- package/build/cjs/editor-v2/utils/index.js +151 -0
- package/build/cjs/editor-v2/utils/store.d.ts +14 -0
- package/build/cjs/editor-v2/utils/store.js +9 -0
- package/build/cjs/hooks/useEditorInitialize.js +9 -9
- package/build/cjs/sub-blocks/BackgroundCard/dynamic-form.d.ts +2 -2
- package/build/cjs/sub-blocks/LayoutItem/form.d.ts +1 -1
- package/build/cjs/utils/form-generator.d.ts +1 -1
- package/build/esm/blocks/CardLayout/index.d.ts +1 -1
- package/build/esm/blocks/ContentLayout/index.d.ts +1 -1
- package/build/esm/blocks/ExtendedFeatures/index.d.ts +1 -1
- package/build/esm/blocks/FilterBlock/index.d.ts +1 -1
- package/build/esm/blocks/Form/index.d.ts +1 -1
- package/build/esm/blocks/Header/dynamic-form.d.ts +2 -2
- package/build/esm/blocks/Header/index.d.ts +1 -1
- package/build/esm/blocks/HeaderSlider/index.d.ts +1 -1
- package/build/esm/blocks/Icons/index.d.ts +1 -1
- package/build/esm/blocks/Info/index.d.ts +1 -1
- package/build/esm/blocks/Map/index.d.ts +1 -1
- package/build/esm/blocks/Media/index.d.ts +1 -1
- package/build/esm/blocks/PromoFeaturesBlock/index.d.ts +1 -1
- package/build/esm/blocks/Questions/index.d.ts +1 -1
- package/build/esm/blocks/Share/index.d.ts +1 -1
- package/build/esm/blocks/Slider/dynamic-form.d.ts +3 -3
- package/build/esm/blocks/Slider/index.d.ts +1 -1
- package/build/esm/blocks/Table/index.d.ts +1 -1
- package/build/esm/blocks/Tabs/index.d.ts +1 -1
- package/build/esm/blocks/TestEditorBlock/form.d.ts +1 -1
- package/build/esm/blocks/TestEditorBlock/index.d.ts +1 -1
- package/build/esm/common/hooks/usePostMessage.d.ts +11 -0
- package/build/esm/common/hooks/usePostMessage.js +90 -0
- package/build/{cjs → esm/common}/types/actions/initial.d.ts +1 -1
- package/build/{cjs → esm/common}/types/actions/other.d.ts +1 -1
- package/build/esm/{types → common/types}/actions/reorder.d.ts +3 -1
- package/build/esm/{types/index.d.ts → common/types/common.d.ts} +3 -3
- package/build/esm/{types/dynamic-form.d.ts → common/types/forms.d.ts} +2 -1
- package/build/esm/common/types/index.d.ts +4 -0
- package/build/esm/common/types/index.js +4 -0
- package/build/esm/{context/messagesContext/types.d.ts → common/types/messages.d.ts} +1 -1
- package/build/esm/components/Image/dynamic-form.d.ts +1 -1
- package/build/esm/constructor-items.d.ts +7 -1
- package/build/esm/constructor-items.js +6 -0
- package/build/esm/containers/PageConstructor/components/ConstructorBlock/hooks/useEditorBlockMouseEvents.js +1 -1
- package/build/esm/context/editorContext/store.d.ts +1 -1
- package/build/esm/context/editorContext/store.js +1 -1
- package/build/esm/context/messagesContext/hooks/useMessageObserver.d.ts +1 -1
- package/build/esm/context/messagesContext/hooks/useMessageSender.d.ts +1 -1
- package/build/esm/context/messagesContext/messagesContext.d.ts +1 -2
- package/build/esm/context/messagesContext/messagesProvider.js +8 -54
- package/build/esm/context/messagesContext/store.d.ts +1 -2
- package/build/esm/editor/data/templates/test-editor-block.json +18 -0
- package/build/esm/editor-v2/components/BigOverlay/BigOverlay.css +33 -0
- package/build/esm/editor-v2/components/BigOverlay/BigOverlay.d.ts +7 -0
- package/build/esm/editor-v2/components/BigOverlay/BigOverlay.js +38 -0
- package/build/esm/editor-v2/components/BlockConfig/BlockConfig.css +33 -0
- package/build/esm/editor-v2/components/BlockConfig/BlockConfig.d.ts +7 -0
- package/build/esm/editor-v2/components/BlockConfig/BlockConfig.js +33 -0
- package/build/esm/editor-v2/components/BlocksList/BlocksList.css +42 -0
- package/build/esm/editor-v2/components/BlocksList/BlocksList.d.ts +8 -0
- package/build/esm/editor-v2/components/BlocksList/BlocksList.js +20 -0
- package/build/esm/editor-v2/components/DynamicForm/DynamicForm.css +2 -0
- package/build/esm/editor-v2/components/DynamicForm/DynamicForm.d.ts +12 -0
- package/build/esm/editor-v2/components/DynamicForm/DynamicForm.js +116 -0
- package/build/esm/editor-v2/components/DynamicForm/FieldBase/FieldBase.css +61 -0
- package/build/esm/editor-v2/components/DynamicForm/FieldBase/FieldBase.d.ts +13 -0
- package/build/esm/editor-v2/components/DynamicForm/FieldBase/FieldBase.js +30 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Array/Array.css +38 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Array/Array.d.ts +14 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Array/Array.js +81 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Array/ItemButton/ItemButton.d.ts +11 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Array/ItemButton/ItemButton.js +25 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Boolean/Boolean.d.ts +9 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Boolean/Boolean.js +11 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Number/Number.d.ts +9 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Number/Number.js +14 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Object/Object.css +5 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Object/Object.d.ts +13 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Object/Object.js +14 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.css +8 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.d.ts +12 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/OneOf/OneOf.js +32 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Select/Select.d.ts +12 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Select/Select.js +13 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Text/Text.d.ts +9 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/Text/Text.js +11 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/TextArea/TextArea.d.ts +9 -0
- package/build/esm/editor-v2/components/DynamicForm/Fields/TextArea/TextArea.js +11 -0
- package/build/esm/editor-v2/components/DynamicForm/utils.d.ts +3 -0
- package/build/esm/editor-v2/components/DynamicForm/utils.js +16 -0
- package/build/esm/editor-v2/components/GlobalConfig/GlobalConfig.css +22 -0
- package/build/esm/editor-v2/components/GlobalConfig/GlobalConfig.d.ts +7 -0
- package/build/esm/editor-v2/components/GlobalConfig/GlobalConfig.js +16 -0
- package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.css +53 -0
- package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.d.ts +7 -0
- package/build/esm/editor-v2/components/MiddleScreen/MiddleScreen.js +32 -0
- package/build/esm/editor-v2/components/Overlay/Overlay.css +56 -0
- package/build/esm/editor-v2/components/Overlay/Overlay.d.ts +7 -0
- package/build/esm/editor-v2/components/Overlay/Overlay.js +69 -0
- package/build/esm/editor-v2/components/Sidebar/Sidebar.css +66 -0
- package/build/esm/editor-v2/components/Sidebar/Sidebar.d.ts +8 -0
- package/build/esm/editor-v2/components/Sidebar/Sidebar.js +64 -0
- package/build/esm/editor-v2/components/Source/Source.css +21 -0
- package/build/esm/editor-v2/components/Source/Source.d.ts +7 -0
- package/build/esm/editor-v2/components/Source/Source.js +28 -0
- package/build/esm/editor-v2/components/SourceCode/SourceCode.css +44 -0
- package/build/esm/editor-v2/components/SourceCode/SourceCode.d.ts +7 -0
- package/build/esm/editor-v2/components/SourceCode/SourceCode.js +53 -0
- package/build/esm/editor-v2/components/TopBar/TopBar.css +34 -0
- package/build/esm/editor-v2/components/TopBar/TopBar.d.ts +11 -0
- package/build/esm/editor-v2/components/TopBar/TopBar.js +13 -0
- package/build/esm/editor-v2/components/Tree/Tree.css +148 -0
- package/build/esm/editor-v2/components/Tree/Tree.d.ts +8 -0
- package/build/esm/editor-v2/components/Tree/Tree.js +30 -0
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.css +23 -0
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.d.ts +11 -0
- package/build/esm/editor-v2/components/ViewSwitches/ViewSwitches.js +20 -0
- package/build/esm/editor-v2/constants.d.ts +1 -0
- package/build/esm/editor-v2/constants.js +1 -0
- package/build/esm/editor-v2/containers/Editor/Editor.css +54 -0
- package/build/esm/editor-v2/containers/Editor/Editor.d.ts +10 -0
- package/build/esm/editor-v2/containers/Editor/Editor.js +62 -0
- package/build/esm/editor-v2/containers/Editor/hooks/useAdminInitialize.d.ts +2 -0
- package/build/esm/editor-v2/containers/Editor/hooks/useAdminInitialize.js +23 -0
- package/build/esm/editor-v2/context/contentConfig/contentConfigContext.d.ts +10 -0
- package/build/esm/editor-v2/context/contentConfig/contentConfigContext.js +5 -0
- package/build/esm/editor-v2/context/contentConfig/contentConfigProvider.d.ts +8 -0
- package/build/esm/editor-v2/context/contentConfig/contentConfigProvider.js +14 -0
- package/build/esm/editor-v2/context/contentConfig/hooks/useContentConfigStore.d.ts +2 -0
- package/build/esm/editor-v2/context/contentConfig/hooks/useContentConfigStore.js +11 -0
- package/build/esm/editor-v2/context/contentConfig/index.d.ts +4 -0
- package/build/esm/editor-v2/context/contentConfig/index.js +4 -0
- package/build/esm/editor-v2/context/contentConfig/store.d.ts +35 -0
- package/build/esm/editor-v2/context/contentConfig/store.js +102 -0
- package/build/esm/editor-v2/context/editorContext/editorContext.d.ts +11 -0
- package/build/esm/editor-v2/context/editorContext/editorContext.js +6 -0
- package/build/esm/editor-v2/context/editorContext/editorProvider.d.ts +2 -0
- package/build/esm/editor-v2/context/editorContext/editorProvider.js +10 -0
- package/build/esm/editor-v2/context/editorContext/hooks/useEditorStore.d.ts +2 -0
- package/build/esm/editor-v2/context/editorContext/hooks/useEditorStore.js +11 -0
- package/build/esm/editor-v2/context/editorContext/index.d.ts +4 -0
- package/build/esm/editor-v2/context/editorContext/index.js +4 -0
- package/build/esm/editor-v2/context/editorContext/store.d.ts +26 -0
- package/build/esm/editor-v2/context/editorContext/store.js +52 -0
- package/build/esm/editor-v2/context/iframeContext/hooks/useIframeStore.d.ts +2 -0
- package/build/esm/editor-v2/context/iframeContext/hooks/useIframeStore.js +11 -0
- package/build/esm/editor-v2/context/iframeContext/iframeContext.d.ts +13 -0
- package/build/esm/editor-v2/context/iframeContext/iframeContext.js +5 -0
- package/build/esm/editor-v2/context/iframeContext/iframeProvider.d.ts +7 -0
- package/build/esm/editor-v2/context/iframeContext/iframeProvider.js +18 -0
- package/build/esm/editor-v2/context/iframeContext/index.d.ts +4 -0
- package/build/esm/editor-v2/context/iframeContext/index.js +4 -0
- package/build/esm/editor-v2/context/iframeContext/store.d.ts +26 -0
- package/build/esm/editor-v2/context/iframeContext/store.js +42 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessageObserver.d.ts +4 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessageObserver.js +12 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessageSender.d.ts +2 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessageSender.js +7 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessagesStore.d.ts +2 -0
- package/build/esm/editor-v2/context/messagesContext/hooks/useMessagesStore.js +11 -0
- package/build/esm/editor-v2/context/messagesContext/index.d.ts +5 -0
- package/build/esm/editor-v2/context/messagesContext/index.js +5 -0
- package/build/esm/editor-v2/context/messagesContext/messagesContext.d.ts +13 -0
- package/build/esm/editor-v2/context/messagesContext/messagesContext.js +8 -0
- package/build/esm/editor-v2/context/messagesContext/messagesProvider.d.ts +2 -0
- package/build/esm/editor-v2/context/messagesContext/messagesProvider.js +30 -0
- package/build/esm/editor-v2/context/messagesContext/store.d.ts +22 -0
- package/build/esm/editor-v2/context/messagesContext/store.js +14 -0
- package/build/esm/editor-v2/icons/Tablet.d.ts +2 -0
- package/build/esm/editor-v2/icons/Tablet.js +4 -0
- package/build/esm/editor-v2/index.d.ts +2 -0
- package/build/esm/editor-v2/index.js +2 -0
- package/build/esm/editor-v2/styles/mixins.css +0 -0
- package/build/esm/editor-v2/styles/root.css +9 -0
- package/build/esm/editor-v2/styles/variables.css +0 -0
- package/build/esm/editor-v2/utils/code.d.ts +6 -0
- package/build/esm/editor-v2/utils/code.js +6 -0
- package/build/esm/editor-v2/utils/index.d.ts +17 -0
- package/build/esm/editor-v2/utils/index.js +134 -0
- package/build/esm/editor-v2/utils/store.d.ts +14 -0
- package/build/esm/editor-v2/utils/store.js +5 -0
- package/build/esm/hooks/useEditorInitialize.js +1 -1
- package/build/esm/sub-blocks/BackgroundCard/dynamic-form.d.ts +2 -2
- package/build/esm/sub-blocks/LayoutItem/form.d.ts +1 -1
- package/build/esm/utils/form-generator.d.ts +1 -1
- package/package.json +12 -3
- package/widget/index.js +1 -1
- package/build/cjs/{types → common/types}/actions/codes.d.ts +0 -0
- package/build/cjs/{types → common/types}/actions/codes.js +0 -0
- package/build/cjs/{types → common/types}/actions/index.d.ts +1 -1
- package/build/cjs/{types → common/types}/actions/index.js +1 -1
- package/build/cjs/{types → common/types}/actions/initial.js +0 -0
- package/build/cjs/{types → common/types}/actions/insert.d.ts +0 -0
- package/build/cjs/{types → common/types}/actions/insert.js +0 -0
- package/build/cjs/{types → common/types}/actions/other.js +0 -0
- package/build/cjs/{types → common/types}/actions/overlay.d.ts +0 -0
- package/build/cjs/{types → common/types}/actions/overlay.js +0 -0
- package/build/cjs/{types → common/types}/actions/reorder.js +0 -0
- package/build/cjs/{types → common/types}/actions/select.d.ts +0 -0
- package/build/cjs/{types → common/types}/actions/select.js +0 -0
- package/build/cjs/{context/messagesContext/types.js → common/types/common.js} +0 -0
- package/build/cjs/{types/dynamic-form.js → common/types/forms.js} +0 -0
- package/build/cjs/{types/index.js → common/types/messages.js} +0 -0
- package/build/esm/{types → common/types}/actions/codes.d.ts +0 -0
- package/build/esm/{types → common/types}/actions/codes.js +0 -0
- package/build/esm/{types → common/types}/actions/index.d.ts +1 -1
- package/build/esm/{types → common/types}/actions/index.js +1 -1
- /package/build/esm/{types → common/types}/actions/initial.js +0 -0
- /package/build/esm/{types → common/types}/actions/insert.d.ts +0 -0
- /package/build/esm/{types → common/types}/actions/insert.js +0 -0
- /package/build/esm/{types → common/types}/actions/other.js +0 -0
- /package/build/esm/{types → common/types}/actions/overlay.d.ts +0 -0
- /package/build/esm/{types → common/types}/actions/overlay.js +0 -0
- /package/build/esm/{types → common/types}/actions/reorder.js +0 -0
- /package/build/esm/{types → common/types}/actions/select.d.ts +0 -0
- /package/build/esm/{types → common/types}/actions/select.js +0 -0
- /package/build/esm/{context/messagesContext/types.js → common/types/common.js} +0 -0
- /package/build/esm/{types/dynamic-form.js → common/types/forms.js} +0 -0
- /package/build/esm/{types/index.js → common/types/messages.js} +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { Plus } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Card, Icon } from '@gravity-ui/uikit';
|
|
4
|
+
import { block } from '../../../../../utils';
|
|
5
|
+
import { removeFromArray, swapArrayItems } from '../../../../utils';
|
|
6
|
+
import DynamicForm from '../../DynamicForm';
|
|
7
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
8
|
+
import Text from '../Text/Text';
|
|
9
|
+
import ItemButton from './ItemButton/ItemButton';
|
|
10
|
+
import './Array.css';
|
|
11
|
+
const b = block('array-dynamic-field');
|
|
12
|
+
const ArrayDynamicField = (props) => {
|
|
13
|
+
const { title, values, onUpdate, className, blockConfig } = props;
|
|
14
|
+
const haveItems = values && Array.isArray(values) && values.length;
|
|
15
|
+
const onAddItem = useCallback(() => {
|
|
16
|
+
if (blockConfig.arrayType === 'text') {
|
|
17
|
+
onUpdate('', haveItems ? [...values, ''] : ['']);
|
|
18
|
+
}
|
|
19
|
+
else if (blockConfig.arrayType === 'object') {
|
|
20
|
+
onUpdate('', haveItems ? [...values, {}] : [{}]);
|
|
21
|
+
}
|
|
22
|
+
}, [blockConfig.arrayType, haveItems, onUpdate, values]);
|
|
23
|
+
const onDeleteItem = useCallback((index) => {
|
|
24
|
+
if (Array.isArray(values)) {
|
|
25
|
+
const newArray = removeFromArray(values, index);
|
|
26
|
+
onUpdate('', newArray);
|
|
27
|
+
}
|
|
28
|
+
}, [onUpdate, values]);
|
|
29
|
+
const onReorderItem = useCallback((index, placement) => {
|
|
30
|
+
if (Array.isArray(values)) {
|
|
31
|
+
const newArray = swapArrayItems(values, index, placement === 'up' ? index - 1 : index + 1);
|
|
32
|
+
onUpdate('', newArray);
|
|
33
|
+
}
|
|
34
|
+
}, [onUpdate, values]);
|
|
35
|
+
const renderInput = useCallback((value, index) => {
|
|
36
|
+
const arrayItemButton = (React.createElement(ItemButton, { onRemove: () => onDeleteItem(index), onReorderUp: () => onReorderItem(index, 'up'), onReorderDown: () => onReorderItem(index, 'down'), disableReorderUp: index === 0, disableReorderDown: Boolean(haveItems) && values.length === index + 1 }));
|
|
37
|
+
switch (blockConfig.arrayType) {
|
|
38
|
+
case 'text': {
|
|
39
|
+
return (React.createElement("div", { className: b('row') },
|
|
40
|
+
React.createElement(Text, { className: b('row-field'), value: String(value), onUpdate: (updateValue) => onUpdate(`[${index}]`, updateValue), onRefresh: (updatedValue) => onUpdate('', updatedValue) }),
|
|
41
|
+
arrayItemButton));
|
|
42
|
+
}
|
|
43
|
+
case 'object': {
|
|
44
|
+
if (!blockConfig.properties) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return (React.createElement(Card, { key: index, className: b('card') },
|
|
48
|
+
React.createElement("div", { className: `${b('row')} ${b('card-head')}` },
|
|
49
|
+
React.createElement("div", { className: b('row-title') },
|
|
50
|
+
"#",
|
|
51
|
+
index),
|
|
52
|
+
arrayItemButton),
|
|
53
|
+
React.createElement(DynamicForm, { contentConfig: value, blockConfig: blockConfig.properties, onUpdate: (key, updateValue) => onUpdate(`[${index}].${key}`, updateValue) })));
|
|
54
|
+
}
|
|
55
|
+
default: {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}, [blockConfig, haveItems, onDeleteItem, onReorderItem, onUpdate, values]);
|
|
60
|
+
const renderInputs = useCallback(() => {
|
|
61
|
+
if (haveItems) {
|
|
62
|
+
const renderItems = values
|
|
63
|
+
.map(renderInput)
|
|
64
|
+
.filter(Boolean);
|
|
65
|
+
return (React.createElement(React.Fragment, null,
|
|
66
|
+
renderItems,
|
|
67
|
+
React.createElement(Button, { className: b('add-button'), onClick: onAddItem },
|
|
68
|
+
React.createElement(Icon, { data: Plus }),
|
|
69
|
+
blockConfig.buttonText)));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return (React.createElement("div", { className: b('empty') },
|
|
73
|
+
React.createElement(Button, { className: b('add-button'), onClick: onAddItem },
|
|
74
|
+
React.createElement(Icon, { data: Plus }),
|
|
75
|
+
"Please, add new item")));
|
|
76
|
+
}
|
|
77
|
+
}, [blockConfig.buttonText, haveItems, onAddItem, renderInput, values]);
|
|
78
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: (value) => onUpdate('', value), expandable: true },
|
|
79
|
+
React.createElement(Card, { className: b('card') }, renderInputs())));
|
|
80
|
+
};
|
|
81
|
+
export default ArrayDynamicField;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ClassNameProps } from '../../../../../../models';
|
|
3
|
+
interface ItemButtonProps extends ClassNameProps {
|
|
4
|
+
onRemove: () => void;
|
|
5
|
+
onReorderUp: () => void;
|
|
6
|
+
disableReorderUp?: boolean;
|
|
7
|
+
onReorderDown: () => void;
|
|
8
|
+
disableReorderDown?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const ItemButton: React.FC<ItemButtonProps>;
|
|
11
|
+
export default ItemButton;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React, { Fragment, useCallback, useRef, useState } from 'react';
|
|
2
|
+
import { ArrowDown, ArrowUp, EllipsisVertical, TrashBin } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Icon, Menu, Popup } from '@gravity-ui/uikit';
|
|
4
|
+
import { block } from '../../../../../../utils';
|
|
5
|
+
const b = block('array-item-button');
|
|
6
|
+
const ItemButton = (props) => {
|
|
7
|
+
const { className, onRemove, onReorderUp, onReorderDown, disableReorderUp = false, disableReorderDown = false, } = props;
|
|
8
|
+
const buttonRef = useRef(null);
|
|
9
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
10
|
+
const onMenuItemClickWrapper = useCallback((callback) => {
|
|
11
|
+
return () => {
|
|
12
|
+
setIsOpen(false);
|
|
13
|
+
callback();
|
|
14
|
+
};
|
|
15
|
+
}, []);
|
|
16
|
+
return (React.createElement(Fragment, null,
|
|
17
|
+
React.createElement(Button, { className: b(null, className), ref: buttonRef, onClick: () => setIsOpen(true) },
|
|
18
|
+
React.createElement(Icon, { data: EllipsisVertical })),
|
|
19
|
+
React.createElement(Popup, { placement: 'bottom-end', anchorRef: buttonRef, open: isOpen, onOutsideClick: () => setIsOpen(false) },
|
|
20
|
+
React.createElement(Menu, null,
|
|
21
|
+
React.createElement(Menu.Item, { theme: 'danger', onClick: onMenuItemClickWrapper(onRemove), iconStart: React.createElement(Icon, { data: TrashBin }) }, "Remove"),
|
|
22
|
+
React.createElement(Menu.Item, { disabled: disableReorderUp, onClick: onMenuItemClickWrapper(onReorderUp), iconStart: React.createElement(Icon, { data: ArrowUp }) }, "Reorder Up"),
|
|
23
|
+
React.createElement(Menu.Item, { disabled: disableReorderDown, onClick: onMenuItemClickWrapper(onReorderDown), iconStart: React.createElement(Icon, { data: ArrowDown }) }, "Reorder Down")))));
|
|
24
|
+
};
|
|
25
|
+
export default ItemButton;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ClassNameProps } from '../../../../../models';
|
|
3
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
4
|
+
interface BooleanProps extends ClassNameProps, FieldBaseParams {
|
|
5
|
+
value: string;
|
|
6
|
+
onUpdate: (value: boolean | undefined) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const BooleanDynamicField: React.FC<BooleanProps>;
|
|
9
|
+
export default BooleanDynamicField;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Switch } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
5
|
+
const b = block('boolean-dynamic-field');
|
|
6
|
+
const BooleanDynamicField = (props) => {
|
|
7
|
+
const { title, value, onUpdate, className } = props;
|
|
8
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: onUpdate },
|
|
9
|
+
React.createElement(Switch, { checked: Boolean(value), onUpdate: onUpdate })));
|
|
10
|
+
};
|
|
11
|
+
export default BooleanDynamicField;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ClassNameProps } from '../../../../../models';
|
|
3
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
4
|
+
interface NumberDynamicFieldProps extends ClassNameProps, FieldBaseParams {
|
|
5
|
+
value: string;
|
|
6
|
+
onUpdate: (value: number | undefined) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const NumberDynamicField: React.FC<NumberDynamicFieldProps>;
|
|
9
|
+
export default NumberDynamicField;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TextInput } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
5
|
+
const b = block('number-dynamic-field');
|
|
6
|
+
const NumberDynamicField = (props) => {
|
|
7
|
+
const { title, value, onUpdate, className } = props;
|
|
8
|
+
const onUpdateFunc = (updateValue) => {
|
|
9
|
+
onUpdate(Number(updateValue));
|
|
10
|
+
};
|
|
11
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: onUpdate },
|
|
12
|
+
React.createElement(TextInput, { value: value || '', onUpdate: onUpdateFunc })));
|
|
13
|
+
};
|
|
14
|
+
export default NumberDynamicField;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ConfigInput } from '../../../../../common/types';
|
|
3
|
+
import { ClassNameProps, PageContent } from '../../../../../models';
|
|
4
|
+
import { DynamicFormValue } from '../../DynamicForm';
|
|
5
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
6
|
+
import './Object.css';
|
|
7
|
+
interface ObjectDynamicFieldProps extends ClassNameProps, FieldBaseParams {
|
|
8
|
+
value: PageContent;
|
|
9
|
+
onUpdate: (key: string, value: DynamicFormValue) => void;
|
|
10
|
+
blockConfig: Array<ConfigInput>;
|
|
11
|
+
}
|
|
12
|
+
declare const ObjectDynamicField: React.FC<ObjectDynamicFieldProps>;
|
|
13
|
+
export default ObjectDynamicField;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Card } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import DynamicForm from '../../DynamicForm';
|
|
5
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
6
|
+
import './Object.css';
|
|
7
|
+
const b = block('object-dynamic-field');
|
|
8
|
+
const ObjectDynamicField = (props) => {
|
|
9
|
+
const { title, value, onUpdate, className, blockConfig } = props;
|
|
10
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: (updatedValue) => onUpdate('', updatedValue), expandable: true },
|
|
11
|
+
React.createElement(Card, { className: b('card') },
|
|
12
|
+
React.createElement(DynamicForm, { contentConfig: value, blockConfig: blockConfig, onUpdate: onUpdate }))));
|
|
13
|
+
};
|
|
14
|
+
export default ObjectDynamicField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { OneOfInput } from '../../../../../common/types';
|
|
3
|
+
import { ClassNameProps, PageContent } from '../../../../../models';
|
|
4
|
+
import { DynamicFormValue } from '../../DynamicForm';
|
|
5
|
+
import './OneOf.css';
|
|
6
|
+
interface OneOfDynamicFieldProps extends ClassNameProps {
|
|
7
|
+
contentConfig: PageContent;
|
|
8
|
+
onUpdate: (key: string, value: DynamicFormValue) => void;
|
|
9
|
+
inputConfig: OneOfInput;
|
|
10
|
+
}
|
|
11
|
+
declare const OneOfDynamicField: React.FC<OneOfDynamicFieldProps>;
|
|
12
|
+
export default OneOfDynamicField;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
2
|
+
import { Card, RadioButton } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import DynamicForm from '../../DynamicForm';
|
|
5
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
6
|
+
import './OneOf.css';
|
|
7
|
+
const b = block('oneof-dynamic-field');
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
|
+
const getOneOfContentConfig = (contentConfig, name) => {
|
|
10
|
+
if (name) {
|
|
11
|
+
return contentConfig ? contentConfig[name] : {};
|
|
12
|
+
}
|
|
13
|
+
return contentConfig;
|
|
14
|
+
};
|
|
15
|
+
const OneOfDynamicField = (props) => {
|
|
16
|
+
const { contentConfig, onUpdate, className, inputConfig } = props;
|
|
17
|
+
const defaultValue = inputConfig.options[0].value;
|
|
18
|
+
const [oneOfMetaValue, setOneOfMetaValue] = useState(defaultValue);
|
|
19
|
+
const oneOfContentConfig = getOneOfContentConfig(contentConfig, inputConfig.name);
|
|
20
|
+
const oneOfChosenOption = useMemo(() => inputConfig.options.find(({ value: foundOneOfValue }) => foundOneOfValue === oneOfMetaValue), [inputConfig.options, oneOfMetaValue]);
|
|
21
|
+
const onUpdateOneOf = useCallback((value) => {
|
|
22
|
+
setOneOfMetaValue(value);
|
|
23
|
+
}, []);
|
|
24
|
+
return (React.createElement(FieldBase, { title: inputConfig.title, className: b(null, className), onRefresh: (value) => onUpdate('', value), expandable: true },
|
|
25
|
+
React.createElement(Card, { className: b('card') },
|
|
26
|
+
React.createElement(RadioButton, { className: b('radio'), options: inputConfig.options.map((option) => ({
|
|
27
|
+
content: option.title,
|
|
28
|
+
value: option.value,
|
|
29
|
+
})), value: oneOfMetaValue, onUpdate: onUpdateOneOf }),
|
|
30
|
+
oneOfChosenOption && (React.createElement(DynamicForm, { blockConfig: oneOfChosenOption.properties, contentConfig: oneOfContentConfig, onUpdate: onUpdate })))));
|
|
31
|
+
};
|
|
32
|
+
export default OneOfDynamicField;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SelectMultipleInput, SelectSingleInput } from '../../../../../common/types';
|
|
3
|
+
import { ClassNameProps } from '../../../../../models';
|
|
4
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
5
|
+
type SelectInput = SelectSingleInput | SelectMultipleInput;
|
|
6
|
+
interface SelectDynamicFieldProps extends ClassNameProps, FieldBaseParams {
|
|
7
|
+
input: SelectInput;
|
|
8
|
+
value: string;
|
|
9
|
+
onUpdate: (value: string | undefined) => void;
|
|
10
|
+
}
|
|
11
|
+
declare const SelectDynamicField: React.FC<SelectDynamicFieldProps>;
|
|
12
|
+
export default SelectDynamicField;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RadioButton, Select } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
5
|
+
const b = block('select-field');
|
|
6
|
+
const SelectDynamicField = (props) => {
|
|
7
|
+
const { input, value, onUpdate, className } = props;
|
|
8
|
+
const inputView = input.view || 'radiobutton';
|
|
9
|
+
return (React.createElement(FieldBase, { title: input.title, className: b(null, className), onRefresh: onUpdate },
|
|
10
|
+
inputView === 'select' && (React.createElement(Select, { placeholder: 'Value', value: value ? [value] : [], onUpdate: ([selectValue]) => onUpdate(selectValue), options: input.enum })),
|
|
11
|
+
inputView === 'radiobutton' && (React.createElement(RadioButton, { options: input.enum, value: value, onUpdate: onUpdate }))));
|
|
12
|
+
};
|
|
13
|
+
export default SelectDynamicField;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ClassNameProps } from '../../../../../models';
|
|
3
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
4
|
+
interface TextDynamicFieldProps extends ClassNameProps, FieldBaseParams {
|
|
5
|
+
value: string;
|
|
6
|
+
onUpdate: (value: string | undefined) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const TextDynamicField: React.FC<TextDynamicFieldProps>;
|
|
9
|
+
export default TextDynamicField;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TextInput } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
5
|
+
const b = block('text-dynamic-field');
|
|
6
|
+
const TextDynamicField = (props) => {
|
|
7
|
+
const { title, value, onUpdate, className } = props;
|
|
8
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: onUpdate },
|
|
9
|
+
React.createElement(TextInput, { value: value || '', onUpdate: onUpdate })));
|
|
10
|
+
};
|
|
11
|
+
export default TextDynamicField;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ClassNameProps } from '../../../../../models';
|
|
3
|
+
import { FieldBaseParams } from '../../FieldBase/FieldBase';
|
|
4
|
+
interface TextAreaDynamicFieldProps extends ClassNameProps, FieldBaseParams {
|
|
5
|
+
value: string;
|
|
6
|
+
onUpdate: (value: string | undefined) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const TextAreaDynamicField: React.FC<TextAreaDynamicFieldProps>;
|
|
9
|
+
export default TextAreaDynamicField;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TextArea } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../../../utils';
|
|
4
|
+
import FieldBase from '../../FieldBase/FieldBase';
|
|
5
|
+
const b = block('textarea-dynamic-field');
|
|
6
|
+
const TextAreaDynamicField = (props) => {
|
|
7
|
+
const { title, value, onUpdate, className } = props;
|
|
8
|
+
return (React.createElement(FieldBase, { title: title, className: b(null, className), onRefresh: onUpdate },
|
|
9
|
+
React.createElement(TextArea, { minRows: 5, maxRows: 20, value: value || '', onUpdate: onUpdate })));
|
|
10
|
+
};
|
|
11
|
+
export default TextAreaDynamicField;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import _ from 'lodash';
|
|
2
|
+
export const getFullPath = (path, name) => {
|
|
3
|
+
if (!path && !name) {
|
|
4
|
+
return '';
|
|
5
|
+
}
|
|
6
|
+
if (!path) {
|
|
7
|
+
return name;
|
|
8
|
+
}
|
|
9
|
+
if (!name) {
|
|
10
|
+
return path;
|
|
11
|
+
}
|
|
12
|
+
return path + '.' + name;
|
|
13
|
+
};
|
|
14
|
+
export const getContent = (contentConfig, path) => {
|
|
15
|
+
return path ? _.get(contentConfig, path) : contentConfig;
|
|
16
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
body {
|
|
4
|
+
--pc-editor-header-height: 48px;
|
|
5
|
+
--pc-editor-code-header-height: 36px;
|
|
6
|
+
--pc-editor-divider-width: 12px;
|
|
7
|
+
--pc-editor-left-column-width: calc(400px + var(--pc-editor-divider-width));
|
|
8
|
+
--pc-editor-base-color: var(--g-color-base-brand);
|
|
9
|
+
--pc-editor-control-color: var(--g-color-base-brand);
|
|
10
|
+
--pc-editor-control-icon-color: var(--g-color-text-dark-primary);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.pc-global-config {
|
|
14
|
+
padding: 12px;
|
|
15
|
+
}
|
|
16
|
+
.pc-global-config__title {
|
|
17
|
+
margin-bottom: 16px;
|
|
18
|
+
margin-top: 8px;
|
|
19
|
+
font-size: var(--g-text-subheader-3-font-size);
|
|
20
|
+
line-height: var(--g-text-subheader-3-line-height);
|
|
21
|
+
font-weight: var(--g-text-subheader-font-weight);
|
|
22
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { block } from '../../../utils';
|
|
3
|
+
import { useContentConfigStore } from '../../context/contentConfig';
|
|
4
|
+
import DynamicForm from '../DynamicForm/DynamicForm';
|
|
5
|
+
import './GlobalConfig.css';
|
|
6
|
+
const b = block('global-config');
|
|
7
|
+
const GlobalConfig = ({ className }) => {
|
|
8
|
+
const { global, updateField, config } = useContentConfigStore();
|
|
9
|
+
const onUpdate = (key, value) => {
|
|
10
|
+
updateField(key, value);
|
|
11
|
+
};
|
|
12
|
+
return (React.createElement("div", { className: b(null, className) },
|
|
13
|
+
React.createElement("div", { className: b('title') }, "Global Config"),
|
|
14
|
+
React.createElement(DynamicForm, { contentConfig: config, blockConfig: global, onUpdate: onUpdate })));
|
|
15
|
+
};
|
|
16
|
+
export default GlobalConfig;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
body {
|
|
4
|
+
--pc-editor-header-height: 48px;
|
|
5
|
+
--pc-editor-code-header-height: 36px;
|
|
6
|
+
--pc-editor-divider-width: 12px;
|
|
7
|
+
--pc-editor-left-column-width: calc(400px + var(--pc-editor-divider-width));
|
|
8
|
+
--pc-editor-base-color: var(--g-color-base-brand);
|
|
9
|
+
--pc-editor-control-color: var(--g-color-base-brand);
|
|
10
|
+
--pc-editor-control-icon-color: var(--g-color-text-dark-primary);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.pc-middle-screen {
|
|
14
|
+
height: 100%;
|
|
15
|
+
width: 100%;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
}
|
|
19
|
+
.pc-middle-screen__topbar {
|
|
20
|
+
height: 40px;
|
|
21
|
+
}
|
|
22
|
+
.pc-middle-screen__wrapper {
|
|
23
|
+
height: 100%;
|
|
24
|
+
}
|
|
25
|
+
.pc-middle-screen__canvas {
|
|
26
|
+
transform-origin: left top;
|
|
27
|
+
overflow-y: scroll;
|
|
28
|
+
position: relative;
|
|
29
|
+
}
|
|
30
|
+
.pc-middle-screen__overlay {
|
|
31
|
+
position: absolute;
|
|
32
|
+
left: 0;
|
|
33
|
+
top: 0;
|
|
34
|
+
width: 100%;
|
|
35
|
+
height: 100%;
|
|
36
|
+
pointer-events: none;
|
|
37
|
+
}
|
|
38
|
+
.pc-middle-screen__border {
|
|
39
|
+
position: absolute;
|
|
40
|
+
border: 3px var(--g-color-line-brand) solid;
|
|
41
|
+
border-radius: 10px;
|
|
42
|
+
}
|
|
43
|
+
.pc-middle-screen__loading {
|
|
44
|
+
position: absolute;
|
|
45
|
+
left: 0;
|
|
46
|
+
top: 0;
|
|
47
|
+
width: 100%;
|
|
48
|
+
height: 100%;
|
|
49
|
+
background: var(--g-color-base-background);
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import { Loader } from '@gravity-ui/uikit';
|
|
3
|
+
import { block } from '../../../utils';
|
|
4
|
+
import { useEditorStore } from '../../context/editorContext';
|
|
5
|
+
import { IframeContext, useIframeStore } from '../../context/iframeContext';
|
|
6
|
+
import Overlay from '../Overlay/Overlay';
|
|
7
|
+
import TopBar from '../TopBar/TopBar';
|
|
8
|
+
import './MiddleScreen.css';
|
|
9
|
+
const b = block('middle-screen');
|
|
10
|
+
const MiddleScreen = ({ className }) => {
|
|
11
|
+
const { url, height, zoom, decreaseZoom, increaseZoom, setZoom } = useIframeStore();
|
|
12
|
+
const { initialized } = useEditorStore();
|
|
13
|
+
const { setIframeElement } = useContext(IframeContext);
|
|
14
|
+
return (React.createElement("div", { className: b(null, className) },
|
|
15
|
+
React.createElement("div", { className: b('topbar') },
|
|
16
|
+
React.createElement(TopBar, { onZoomUpdate: setZoom, zoom: zoom, onDecreaseZoom: decreaseZoom, onIncreaseZoom: increaseZoom })),
|
|
17
|
+
React.createElement("div", { className: b('wrapper') },
|
|
18
|
+
React.createElement("div", { className: b('canvas', { hidden: !initialized }), style: {
|
|
19
|
+
transform: `scale(${zoom}%)`,
|
|
20
|
+
height: `${(100 / zoom) * 100}%`,
|
|
21
|
+
width: `${(100 / zoom) * 100}%`,
|
|
22
|
+
} },
|
|
23
|
+
React.createElement("iframe", { ref: (element) => {
|
|
24
|
+
if (element) {
|
|
25
|
+
setIframeElement(element);
|
|
26
|
+
}
|
|
27
|
+
}, className: b('iframe'), src: url, height: `${height}px`, width: "100%", frameBorder: "0" }),
|
|
28
|
+
React.createElement(Overlay, { className: b('overlay') }),
|
|
29
|
+
!initialized && (React.createElement("div", { className: b('loading') },
|
|
30
|
+
React.createElement(Loader, { size: 'l' })))))));
|
|
31
|
+
};
|
|
32
|
+
export default MiddleScreen;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* use this for style redefinitions to awoid problems with
|
|
2
|
+
unpredictable css rules order in build */
|
|
3
|
+
body {
|
|
4
|
+
--pc-editor-header-height: 48px;
|
|
5
|
+
--pc-editor-code-header-height: 36px;
|
|
6
|
+
--pc-editor-divider-width: 12px;
|
|
7
|
+
--pc-editor-left-column-width: calc(400px + var(--pc-editor-divider-width));
|
|
8
|
+
--pc-editor-base-color: var(--g-color-base-brand);
|
|
9
|
+
--pc-editor-control-color: var(--g-color-base-brand);
|
|
10
|
+
--pc-editor-control-icon-color: var(--g-color-text-dark-primary);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.pc-overlay {
|
|
14
|
+
position: absolute;
|
|
15
|
+
left: 0;
|
|
16
|
+
top: 0;
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
pointer-events: none;
|
|
20
|
+
}
|
|
21
|
+
.pc-overlay__border {
|
|
22
|
+
position: absolute;
|
|
23
|
+
border: 3px var(--g-color-line-brand) solid;
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
box-shadow: 4px 4px 8px 0 var(--g-color-sfx-shadow);
|
|
26
|
+
}
|
|
27
|
+
.pc-overlay__line {
|
|
28
|
+
position: absolute;
|
|
29
|
+
border: 3px var(--g-color-base-selection) solid;
|
|
30
|
+
}
|
|
31
|
+
.pc-overlay__line_position_top {
|
|
32
|
+
border-top: 5px var(--g-color-line-brand) solid;
|
|
33
|
+
}
|
|
34
|
+
.pc-overlay__line_position_bottom {
|
|
35
|
+
border-bottom: 5px var(--g-color-line-brand) solid;
|
|
36
|
+
}
|
|
37
|
+
.pc-overlay__line_position_left {
|
|
38
|
+
border-left: 5px var(--g-color-line-brand) solid;
|
|
39
|
+
}
|
|
40
|
+
.pc-overlay__line_position_right {
|
|
41
|
+
border-right: 5px var(--g-color-line-brand) solid;
|
|
42
|
+
}
|
|
43
|
+
.pc-overlay__actions {
|
|
44
|
+
pointer-events: auto;
|
|
45
|
+
position: absolute;
|
|
46
|
+
bottom: -40px;
|
|
47
|
+
left: 0;
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
background: transparent;
|
|
51
|
+
box-shadow: 4px 4px 8px 0 var(--g-color-sfx-shadow);
|
|
52
|
+
border-radius: 20px;
|
|
53
|
+
}
|
|
54
|
+
.pc-overlay__action-button_grip {
|
|
55
|
+
cursor: grab;
|
|
56
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import React, { useCallback, useState } from 'react';
|
|
2
|
+
import { Copy, Grip, TrashBin } from '@gravity-ui/icons';
|
|
3
|
+
import { Button, Icon } from '@gravity-ui/uikit';
|
|
4
|
+
import { ActionTypes, } from '../../../common/types';
|
|
5
|
+
import { block } from '../../../utils';
|
|
6
|
+
import { useContentConfigStore } from '../../context/contentConfig';
|
|
7
|
+
import { useEditorStore } from '../../context/editorContext';
|
|
8
|
+
import { useIframeStore } from '../../context/iframeContext';
|
|
9
|
+
import { useMessageObserver, useMessageSender } from '../../context/messagesContext';
|
|
10
|
+
import './Overlay.css';
|
|
11
|
+
const b = block('overlay');
|
|
12
|
+
const Overlay = ({ className }) => {
|
|
13
|
+
const { selectedBlock } = useEditorStore();
|
|
14
|
+
const [insertLineBox, setInsertLineBox] = useState(undefined);
|
|
15
|
+
const { height } = useIframeStore();
|
|
16
|
+
const { deleteBlock, duplicateBlock } = useContentConfigStore();
|
|
17
|
+
const sendMessage = useMessageSender();
|
|
18
|
+
const margin = 0;
|
|
19
|
+
useMessageObserver(ActionTypes.OverlayModeOnMove, (payload) => {
|
|
20
|
+
if (payload && payload.block) {
|
|
21
|
+
const { rect, cursorPosition } = payload.block;
|
|
22
|
+
setInsertLineBox({
|
|
23
|
+
left: rect.x,
|
|
24
|
+
top: rect.y,
|
|
25
|
+
height: rect.height,
|
|
26
|
+
width: rect.width,
|
|
27
|
+
position: cursorPosition,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
useMessageObserver(ActionTypes.InsertModeDisable, () => {
|
|
32
|
+
setInsertLineBox(undefined);
|
|
33
|
+
});
|
|
34
|
+
useMessageObserver(ActionTypes.ReorderModeDisable, () => {
|
|
35
|
+
setInsertLineBox(undefined);
|
|
36
|
+
});
|
|
37
|
+
const onMouseDown = useCallback(() => {
|
|
38
|
+
if (selectedBlock) {
|
|
39
|
+
sendMessage({
|
|
40
|
+
type: ActionTypes.ReorderModeEnable,
|
|
41
|
+
payload: { path: selectedBlock.path },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}, [selectedBlock, sendMessage]);
|
|
45
|
+
return (React.createElement("div", { className: b(null, className), style: { height: `${height}px` } },
|
|
46
|
+
selectedBlock ? (React.createElement("div", { className: b('border'), style: {
|
|
47
|
+
top: selectedBlock.rect.top - margin,
|
|
48
|
+
left: selectedBlock.rect.left - margin,
|
|
49
|
+
width: selectedBlock.rect.width + margin * 2,
|
|
50
|
+
height: selectedBlock.rect.height + margin * 2,
|
|
51
|
+
} },
|
|
52
|
+
React.createElement("div", { className: b('actions') },
|
|
53
|
+
React.createElement("div", { onMouseDown: onMouseDown },
|
|
54
|
+
React.createElement(Button, { pin: 'round-clear', className: `${b('action-button', { grip: true })}`, size: 'm', view: 'action' },
|
|
55
|
+
React.createElement(Icon, { data: Grip, size: 18 }))),
|
|
56
|
+
React.createElement(Button, { pin: 'clear-clear', className: b('action-button'), size: 'm', view: 'action', onClick: () => selectedBlock && deleteBlock(selectedBlock.path) },
|
|
57
|
+
React.createElement(Icon, { data: TrashBin, size: 18 })),
|
|
58
|
+
React.createElement(Button, { pin: 'clear-round', className: b('action-button'), size: 'm', view: 'action', onClick: () => selectedBlock && duplicateBlock(selectedBlock.path) },
|
|
59
|
+
React.createElement(Icon, { data: Copy, size: 18 }))))) : null,
|
|
60
|
+
insertLineBox ? (React.createElement("div", { className: b('line', {
|
|
61
|
+
position: insertLineBox.position,
|
|
62
|
+
}), style: {
|
|
63
|
+
top: insertLineBox.top,
|
|
64
|
+
left: insertLineBox.left,
|
|
65
|
+
width: insertLineBox.width,
|
|
66
|
+
height: insertLineBox.height,
|
|
67
|
+
} })) : null));
|
|
68
|
+
};
|
|
69
|
+
export default Overlay;
|