From aac4047c9a2de3caf1eca2fa3e6bbb5582038727 Mon Sep 17 00:00:00 2001 From: luoer Date: Mon, 4 Dec 2023 17:41:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=92=8C=E8=A7=86=E9=A2=91=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/editor/blocks/font/option.vue | 10 +- src/components/editor/blocks/image/index.ts | 35 +++++ .../editor/blocks/image/interface.ts | 33 ++++ src/components/editor/blocks/image/option.vue | 89 +++++++++++ src/components/editor/blocks/image/render.vue | 29 ++++ src/components/editor/blocks/time/option.vue | 17 +- src/components/editor/blocks/time/render.vue | 45 +++--- src/components/editor/blocks/video/index.ts | 36 +++++ .../editor/blocks/video/interface.ts | 19 +++ src/components/editor/blocks/video/option.vue | 97 ++++++++++++ src/components/editor/blocks/video/render.vue | 28 ++++ .../editor/components/BaseOption.vue | 6 +- .../editor/components/ContextMenu.vue | 81 ++++++++++ .../editor/components/ContextMenuList.vue | 147 ++++++++++++++++++ src/components/editor/components/Editor.vue | 112 ++++++++++--- .../editor/components/EditorConfig.vue | 56 +++++++ .../editor/components/EditorHeader.vue | 56 +++++++ .../{PanelLeft.vue => EditorLeft.vue} | 0 .../{PanelMain.vue => EditorMain.vue} | 34 ++-- ...PanelMainBlock.vue => EditorMainBlock.vue} | 1 - ...nelMainHeader.vue => EditorMainHeader.vue} | 60 ++++--- .../editor/components/EditorPreview.vue | 55 +++++-- .../editor/components/EditorRight.vue | 35 +++++ .../editor/components/EditorSetting.vue | 55 +++++++ .../editor/components/ImagePicker.vue | 63 ++++---- .../editor/components/PanelHeader.vue | 37 ----- .../editor/components/PanelRight.vue | 25 --- src/components/editor/core/block.ts | 25 +++ src/types/auto-component.d.ts | 14 ++ 29 files changed, 1098 insertions(+), 202 deletions(-) create mode 100644 src/components/editor/blocks/image/index.ts create mode 100644 src/components/editor/blocks/image/interface.ts create mode 100644 src/components/editor/blocks/image/option.vue create mode 100644 src/components/editor/blocks/image/render.vue create mode 100644 src/components/editor/blocks/video/index.ts create mode 100644 src/components/editor/blocks/video/interface.ts create mode 100644 src/components/editor/blocks/video/option.vue create mode 100644 src/components/editor/blocks/video/render.vue create mode 100644 src/components/editor/components/ContextMenu.vue create mode 100644 src/components/editor/components/ContextMenuList.vue create mode 100644 src/components/editor/components/EditorConfig.vue create mode 100644 src/components/editor/components/EditorHeader.vue rename src/components/editor/components/{PanelLeft.vue => EditorLeft.vue} (100%) rename src/components/editor/components/{PanelMain.vue => EditorMain.vue} (71%) rename src/components/editor/components/{PanelMainBlock.vue => EditorMainBlock.vue} (98%) rename src/components/editor/components/{PanelMainHeader.vue => EditorMainHeader.vue} (54%) create mode 100644 src/components/editor/components/EditorRight.vue create mode 100644 src/components/editor/components/EditorSetting.vue delete mode 100644 src/components/editor/components/PanelHeader.vue delete mode 100644 src/components/editor/components/PanelRight.vue diff --git a/src/components/editor/blocks/font/option.vue b/src/components/editor/blocks/font/option.vue index 6af3eb1..b549b65 100644 --- a/src/components/editor/blocks/font/option.vue +++ b/src/components/editor/blocks/font/option.vue @@ -6,21 +6,21 @@ - +
- + - +
- +
- +
diff --git a/src/components/editor/blocks/image/index.ts b/src/components/editor/blocks/image/index.ts new file mode 100644 index 0000000..1020d8e --- /dev/null +++ b/src/components/editor/blocks/image/index.ts @@ -0,0 +1,35 @@ +import { defineBlocker } from '../../core'; +import { Image } from './interface'; +import Option from './option.vue'; +import Render from './render.vue'; + +export default defineBlocker({ + type: 'image', + icon: 'icon-park-outline-pic', + title: '图片组件', + description: '文字', + render: Render, + option: Option, + initial: { + id: '', + type: 'image', + title: '', + x: 0, + y: 0, + w: 300, + h: 100, + xFixed: false, + yFixed: false, + bgImage: '', + bgColor: '', + meta: {}, + actived: false, + resizable: true, + draggable: true, + params: { + fit: 'cover', + switchTime: 500, + images: [], + }, + }, +}); diff --git a/src/components/editor/blocks/image/interface.ts b/src/components/editor/blocks/image/interface.ts new file mode 100644 index 0000000..e3ce503 --- /dev/null +++ b/src/components/editor/blocks/image/interface.ts @@ -0,0 +1,33 @@ +import { Block } from '../../core'; + +export interface ImagePramsImage { + id: any; + title: string; + url: string; +} + +export interface ImagePrams { + fit: 'cover' | 'contain'; + switchTime: number; + images: ImagePramsImage[]; +} + +/** + * 图片组件 + */ +export type Image = Block; + +export const fitOptions = [ + { + label: '保持比例,适应容器', + value: 'contain', + }, + { + label: '保持比例,占满容器', + value: 'cover', + }, + { + label: '拉伸比例,占满容器', + value: '100% 100%', + }, +]; diff --git a/src/components/editor/blocks/image/option.vue b/src/components/editor/blocks/image/option.vue new file mode 100644 index 0000000..8302f76 --- /dev/null +++ b/src/components/editor/blocks/image/option.vue @@ -0,0 +1,89 @@ + + + + + +../components/font ../font diff --git a/src/components/editor/blocks/image/render.vue b/src/components/editor/blocks/image/render.vue new file mode 100644 index 0000000..f5f5049 --- /dev/null +++ b/src/components/editor/blocks/image/render.vue @@ -0,0 +1,29 @@ + + + + + +../components/font../font diff --git a/src/components/editor/blocks/time/option.vue b/src/components/editor/blocks/time/option.vue index 1481504..7d44ae0 100644 --- a/src/components/editor/blocks/time/option.vue +++ b/src/components/editor/blocks/time/option.vue @@ -13,9 +13,12 @@ @@ -25,9 +28,9 @@ @@ -39,4 +42,4 @@ const model = defineModel