From 5bf72f61f8eadcf21d11a0639d7bc5f5b390c2e6 Mon Sep 17 00:00:00 2001 From: 4eb0da <4eb0da@yandex-team.com> Date: Fri, 1 Dec 2023 12:35:12 +0300 Subject: [PATCH] DivKitPro editor --- .mapping.json | 7 + site/.eslintignore | 1 + .../src/assets/divkitpro/components.svg | 1 + site/client/src/assets/divkitpro/palette.svg | 1 + site/client/src/assets/divkitpro/sources.svg | 1 + site/client/src/auto/lang.json | 12 +- site/client/src/components/App.svelte | 4 +- site/client/src/components/Design.svelte | 284 ++++++++++++++++++ site/client/src/components/Editor.svelte | 189 +++++++----- site/client/src/components/Header.svelte | 5 + site/client/src/components/Main.svelte | 9 +- site/client/src/components/ToolbarItem.svelte | 112 +++++++ site/client/src/data/defaultEditorValue.ts | 130 ++++++++ site/client/src/data/editorModule.ts | 2 + site/client/src/data/languageContext.ts | 2 +- site/client/src/data/session.ts | 2 + site/client/src/data/sessionController.ts | 15 +- 17 files changed, 686 insertions(+), 91 deletions(-) create mode 100644 site/client/src/assets/divkitpro/components.svg create mode 100644 site/client/src/assets/divkitpro/palette.svg create mode 100644 site/client/src/assets/divkitpro/sources.svg create mode 100644 site/client/src/components/Design.svelte create mode 100644 site/client/src/components/ToolbarItem.svelte create mode 100644 site/client/src/data/defaultEditorValue.ts create mode 100644 site/client/src/data/editorModule.ts diff --git a/.mapping.json b/.mapping.json index e98526e9b..12b431428 100644 --- a/.mapping.json +++ b/.mapping.json @@ -14968,6 +14968,9 @@ "site/client/src/assets/closeWhite.svg":"divkit/public/site/client/src/assets/closeWhite.svg", "site/client/src/assets/copy.svg":"divkit/public/site/client/src/assets/copy.svg", "site/client/src/assets/copyOk.svg":"divkit/public/site/client/src/assets/copyOk.svg", + "site/client/src/assets/divkitpro/components.svg":"divkit/public/site/client/src/assets/divkitpro/components.svg", + "site/client/src/assets/divkitpro/palette.svg":"divkit/public/site/client/src/assets/divkitpro/palette.svg", + "site/client/src/assets/divkitpro/sources.svg":"divkit/public/site/client/src/assets/divkitpro/sources.svg", "site/client/src/assets/dot.svg":"divkit/public/site/client/src/assets/dot.svg", "site/client/src/assets/dropdown.svg":"divkit/public/site/client/src/assets/dropdown.svg", "site/client/src/assets/errors.svg":"divkit/public/site/client/src/assets/errors.svg", @@ -14981,6 +14984,7 @@ "site/client/src/components/App.svelte":"divkit/public/site/client/src/components/App.svelte", "site/client/src/components/Button.svelte":"divkit/public/site/client/src/components/Button.svelte", "site/client/src/components/CopyButton.svelte":"divkit/public/site/client/src/components/CopyButton.svelte", + "site/client/src/components/Design.svelte":"divkit/public/site/client/src/components/Design.svelte", "site/client/src/components/Editor.svelte":"divkit/public/site/client/src/components/Editor.svelte", "site/client/src/components/ErrorPage.svelte":"divkit/public/site/client/src/components/ErrorPage.svelte", "site/client/src/components/ErrorView.svelte":"divkit/public/site/client/src/components/ErrorView.svelte", @@ -15001,6 +15005,7 @@ "site/client/src/components/StructureBox.svelte":"divkit/public/site/client/src/components/StructureBox.svelte", "site/client/src/components/StructureCurrent.svelte":"divkit/public/site/client/src/components/StructureCurrent.svelte", "site/client/src/components/StructureTemplates.svelte":"divkit/public/site/client/src/components/StructureTemplates.svelte", + "site/client/src/components/ToolbarItem.svelte":"divkit/public/site/client/src/components/ToolbarItem.svelte", "site/client/src/components/Tree.svelte":"divkit/public/site/client/src/components/Tree.svelte", "site/client/src/components/TreeLeaf.svelte":"divkit/public/site/client/src/components/TreeLeaf.svelte", "site/client/src/components/Viewer.svelte":"divkit/public/site/client/src/components/Viewer.svelte", @@ -15011,7 +15016,9 @@ "site/client/src/components/WebViewerSidebar.svelte":"divkit/public/site/client/src/components/WebViewerSidebar.svelte", "site/client/src/components/WebViewerWrapper.svelte":"divkit/public/site/client/src/components/WebViewerWrapper.svelte", "site/client/src/ctx/tree.ts":"divkit/public/site/client/src/ctx/tree.ts", + "site/client/src/data/defaultEditorValue.ts":"divkit/public/site/client/src/data/defaultEditorValue.ts", "site/client/src/data/editorMode.ts":"divkit/public/site/client/src/data/editorMode.ts", + "site/client/src/data/editorModule.ts":"divkit/public/site/client/src/data/editorModule.ts", "site/client/src/data/externalViewers.ts":"divkit/public/site/client/src/data/externalViewers.ts", "site/client/src/data/initialValue.ts":"divkit/public/site/client/src/data/initialValue.ts", "site/client/src/data/jsonStore.ts":"divkit/public/site/client/src/data/jsonStore.ts", diff --git a/site/.eslintignore b/site/.eslintignore index 6fb80054f..4b32ab292 100644 --- a/site/.eslintignore +++ b/site/.eslintignore @@ -1 +1,2 @@ +/client/artifacts /server/artifacts diff --git a/site/client/src/assets/divkitpro/components.svg b/site/client/src/assets/divkitpro/components.svg new file mode 100644 index 000000000..b0c9885f4 --- /dev/null +++ b/site/client/src/assets/divkitpro/components.svg @@ -0,0 +1 @@ + diff --git a/site/client/src/assets/divkitpro/palette.svg b/site/client/src/assets/divkitpro/palette.svg new file mode 100644 index 000000000..88066f2a3 --- /dev/null +++ b/site/client/src/assets/divkitpro/palette.svg @@ -0,0 +1 @@ + diff --git a/site/client/src/assets/divkitpro/sources.svg b/site/client/src/assets/divkitpro/sources.svg new file mode 100644 index 000000000..faf0fbb9b --- /dev/null +++ b/site/client/src/assets/divkitpro/sources.svg @@ -0,0 +1 @@ + diff --git a/site/client/src/auto/lang.json b/site/client/src/auto/lang.json index 4c2e3b551..8dc69e377 100644 --- a/site/client/src/auto/lang.json +++ b/site/client/src/auto/lang.json @@ -4,6 +4,7 @@ "languageChooser": "Выбранный язык", "playground": "Веб песочница", "samples": "Примеры", + "design": "Визуальный редактор", "share": "Поделиться", "components": "Компоненты: ", "timeToRender": "Время на отрисовку: ", @@ -32,13 +33,17 @@ "webSupportWarning": "Данный пример содержит функционал, который не поддержан в реализации для Веба. Он может отличаться от нативных платформ.", "collapse": "Свернуть", "expand": "Развернуть", - "selectComponent": "Выбрать компонент" + "selectComponent": "Выбрать компонент", + "designComponents": "Компоненты", + "designPalette": "Палитра", + "designVariables": "Переменные" }, "en": { "name": "Eng", "languageChooser": "Selected language", "playground": "Web playground", "samples": "Samples", + "design": "Visual editor", "share": "Share", "components": "Components: ", "timeToRender": "Time to render: ", @@ -67,6 +72,9 @@ "webSupportWarning": "This sample contains functionality that is not supported in the implementation for the Web. It may differ from native platforms.", "collapse": "Collapse", "expand": "Expand", - "selectComponent": "Select component" + "selectComponent": "Select component", + "designComponents": "Components", + "designPalette": "Palette", + "designVariables": "Variables" } } diff --git a/site/client/src/components/App.svelte b/site/client/src/components/App.svelte index e37a2425e..524f05ac8 100644 --- a/site/client/src/components/App.svelte +++ b/site/client/src/components/App.svelte @@ -17,7 +17,7 @@ if (langVal !== 'ru' && langVal !== 'en') { langVal = 'en'; } - let lang = writable(langVal); + let lang = writable<'ru' | 'en'>(langVal as 'ru' | 'en'); const l10n = derived(lang, lang => { return (key: keyof typeof langObj['en'], overrideLang?: string) => // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -36,7 +36,7 @@ getLanguage(): string { return get(lang); }, - setLanguage(name: string): void { + setLanguage(name: 'ru' | 'en'): void { lang.set(name); }, l10n, diff --git a/site/client/src/components/Design.svelte b/site/client/src/components/Design.svelte new file mode 100644 index 000000000..89b2cc215 --- /dev/null +++ b/site/client/src/components/Design.svelte @@ -0,0 +1,284 @@ + + +