Skip to content

Commit

Permalink
feat: 添加基于注册表的可插拔功能的基础逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
gene9831 committed May 25, 2024
1 parent 3f6059e commit 9d50a36
Show file tree
Hide file tree
Showing 10 changed files with 88 additions and 86 deletions.
68 changes: 0 additions & 68 deletions packages/design-core/config/addons.js

This file was deleted.

53 changes: 51 additions & 2 deletions packages/design-core/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,57 @@
*
*/

import i18nMeta from '@opentiny/tiny-engine-plugin-i18n'
import Breadcrumb from '@opentiny/tiny-engine-toolbar-breadcrumb'
import Fullscreen from '@opentiny/tiny-engine-toolbar-fullscreen'
import Lang from '@opentiny/tiny-engine-toolbar-lang'
import Checkinout from '@opentiny/tiny-engine-toolbar-checkinout'
import Logo from '@opentiny/tiny-engine-toolbar-logo'
import Media from '@opentiny/tiny-engine-toolbar-media'
import Redoundo from '@opentiny/tiny-engine-toolbar-redoundo'
import Save from '@opentiny/tiny-engine-toolbar-save'
import Clean from '@opentiny/tiny-engine-toolbar-clean'
import Preview from '@opentiny/tiny-engine-toolbar-preview'
import GenerateVue from '@opentiny/tiny-engine-toolbar-generate-vue'
import Refresh from '@opentiny/tiny-engine-toolbar-refresh'
import Collaboration from '@opentiny/tiny-engine-toolbar-collaboration'
import Setting from '@opentiny/tiny-engine-toolbar-setting'

import Materials from '@opentiny/tiny-engine-plugin-materials'
import Data from '@opentiny/tiny-engine-plugin-data'
import Script from '@opentiny/tiny-engine-plugin-script'
import Tree from '@opentiny/tiny-engine-plugin-tree'
import Help from '@opentiny/tiny-engine-plugin-help'
import Schema from '@opentiny/tiny-engine-plugin-schema'
import Page from '@opentiny/tiny-engine-plugin-page'
import I18n from '@opentiny/tiny-engine-plugin-i18n'
import Bridge from '@opentiny/tiny-engine-plugin-bridge'
import Block from '@opentiny/tiny-engine-plugin-block'
import Datasource from '@opentiny/tiny-engine-plugin-datasource'
import Robot from '@opentiny/tiny-engine-plugin-robot'

import Props from '@opentiny/tiny-engine-setting-props'
import Events from '@opentiny/tiny-engine-setting-events'
import Styles from '@opentiny/tiny-engine-setting-styles'

import '@opentiny/tiny-engine-theme'

export default {
plugins: [i18nMeta]
plugins: [Materials, Tree, Page, Block, Datasource, Bridge, I18n, Script, Data, Schema, Help, Robot],
toolbars: [
Logo,
Breadcrumb,
Media,
Collaboration,
Clean,
Refresh,
Save,
GenerateVue,
Preview,
Redoundo,
Fullscreen,
Checkinout,
Setting,
Lang
],
settings: [Props, Styles, Events]
}
2 changes: 0 additions & 2 deletions packages/design-core/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import DesignToolbars from './DesignToolbars.vue'
import DesignPlugins from './DesignPlugins.vue'
import DesignCanvas from './DesignCanvas.vue'
import DesignSettings from './DesignSettings.vue'
import addons from '@opentiny/tiny-engine-app-addons'
import blockPlugin from '@opentiny/tiny-engine-plugin-block'
import materials from '@opentiny/tiny-engine-plugin-materials'
import { useBroadcastChannel } from '@vueuse/core'
Expand Down Expand Up @@ -141,7 +140,6 @@ export default {
right,
plugins,
toggleNav,
addons,
layoutState,
designSmbConfig
}
Expand Down
6 changes: 3 additions & 3 deletions packages/design-core/src/DesignPlugins.vue
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
import { reactive, ref, watch } from 'vue'
import { Popover, Tooltip } from '@opentiny/vue'
import { useLayout, usePage } from '@opentiny/tiny-engine-controller'
import Addons from '@opentiny/tiny-engine-app-addons'
import { getMergeRegistry } from '@opentiny/tiny-engine-entry'
import { PublicIcon } from '@opentiny/tiny-engine-common'
export default {
Expand All @@ -112,7 +112,7 @@ export default {
},
emits: ['click', 'node-click'],
setup(props, { emit }) {
const plugins = Addons.plugins
const plugins = getMergeRegistry('plugins')
const components = {}
const iconComponents = {}
const pluginRef = ref(null)
Expand All @@ -127,7 +127,7 @@ export default {
layoutState: { plugins: pluginsState }
} = useLayout()
Addons.plugins.forEach(({ id, component, api, icon }) => {
plugins.forEach(({ id, component, api, icon }) => {
components[id] = component
iconComponents[id] = icon
if (api) {
Expand Down
4 changes: 2 additions & 2 deletions packages/design-core/src/DesignSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import { computed, ref } from 'vue'
import { Tabs, TabItem } from '@opentiny/vue'
import { useLayout } from '@opentiny/tiny-engine-controller'
import addons from '@opentiny/tiny-engine-app-addons'
import { getMergeRegistry } from '@opentiny/tiny-engine-entry'
export default {
components: {
Expand All @@ -23,7 +23,7 @@ export default {
setup() {
const { layoutState } = useLayout()
const settings = addons && addons.settings
const settings = getMergeRegistry('settings')
const activating = computed(() => layoutState.settings.activating)
const showMask = ref(true)
Expand Down
5 changes: 3 additions & 2 deletions packages/design-core/src/DesignToolbars.vue
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@

<script>
import { reactive, nextTick } from 'vue'
import addons from '@opentiny/tiny-engine-app-addons'
import { useLayout } from '@opentiny/tiny-engine-controller'
import { ProgressBar } from '@opentiny/tiny-engine-common'
import { getMergeRegistry } from '@opentiny/tiny-engine-entry'
export default {
components: {
ProgressBar
Expand All @@ -32,7 +33,7 @@ export default {
showDeployBlock: false
})
addons.toolbars.forEach((item) => {
getMergeRegistry('toolbars').forEach((item) => {
if (item.align === 'right') {
rightBar.push(item)
} else if (item.align === 'center') {
Expand Down
3 changes: 3 additions & 0 deletions packages/design-core/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ import 'virtual:svg-icons-register'

import TinyThemeTool from '@opentiny/vue-theme/theme-tool'
import { tinySmbTheme } from '@opentiny/vue-theme/theme' // SMB 主题
import { defineEntry } from '@opentiny/tiny-engine-entry'
import defaultResigry from '../registry.js'

defineEntry(defaultResigry)
initHttp({ env: import.meta.env })

// eslint-disable-next-line no-new
Expand Down
4 changes: 2 additions & 2 deletions packages/design-core/src/preview/src/Toolbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
<script lang="jsx">
import { defineAsyncComponent } from 'vue'
import { useBreadcrumb } from '@opentiny/tiny-engine-controller'
import { getMergeRegistry } from '@opentiny/tiny-engine-entry'
import { Switch as TinySwitch } from '@opentiny/vue'
import { getSearchParams } from './preview/http'
import { BROADCAST_CHANNEL } from '../src/preview/srcFiles/constant'
import addons from '@opentiny/tiny-engine-app-addons'
import { injectDebugSwitch } from './preview/debugSwitch'
const getToolbars = (pluginId) => {
return defineAsyncComponent(() =>
Promise.resolve(addons?.toolbars?.find((t) => t.id === pluginId)?.component || <span></span>)
Promise.resolve(getMergeRegistry('toolbars')?.find((t) => t.id === pluginId)?.component || <span></span>)
)
}

Expand Down
11 changes: 7 additions & 4 deletions packages/design-core/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ import { importmapPlugin } from './scripts/externalDeps.js'
import visualizerCjs from 'rollup-plugin-visualizer'
import { fileURLToPath } from 'node:url'
import generateComment from '@opentiny/vite-plugin-generate-comments'
import { getBaseUrlFromCli, copyBundleDeps, copyPreviewImportMap, copyLocalImportMap } from './scripts/localCdnFile'
import {
getBaseUrlFromCli,
copyBundleDeps,
copyPreviewImportMap,
copyLocalImportMap
} from './scripts/localCdnFile/index.js'

const monacoEditorPlugin = monacoEditorPluginCjs.default
const nodeGlobalsPolyfillPlugin = nodeGlobalsPolyfillPluginCjs.default
Expand Down Expand Up @@ -206,9 +211,7 @@ const prodAlias = {
)
}

const commonAlias = {
'@opentiny/tiny-engine-app-addons': path.resolve(__dirname, './config/addons.js')
}
const commonAlias = {}

export default defineConfig(({ command = 'serve', mode = 'serve' }) => {
const {
Expand Down
18 changes: 17 additions & 1 deletion packages/entry/src/entryHash.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,23 @@ import { generateRegistry, entryHashMap } from './common'

const lowcodeRegistry = { registry: null }

export const getMergeRegistry = () => lowcodeRegistry.registry
export const getMergeRegistry = (type, id) => {
if (!type) {
return lowcodeRegistry.registry
}

const registry = lowcodeRegistry.registry[type]
if (!id) {
return registry
}

if (Array.isArray(registry)) {
const item = registry.find((item) => item.id === id)
return item || null
}

return registry?.id ? registry : null
}

export const defineEntry = (registry) => {
if (!registry) {
Expand Down

0 comments on commit 9d50a36

Please sign in to comment.