diff --git a/index.js b/index.js index 6e993ac..fe9721d 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ import Renderer from './renderer/RenderMain' -export { RENDERER_SETTINGS_KEY } from './renderer/renderer-settings' +export { RENDERER_SETTINGS } from './renderer/renderer-settings' export { customElements, Mapper } from './renderer/render' diff --git a/renderer/RenderMain.js b/renderer/RenderMain.js index 4c73000..3eb61fe 100644 --- a/renderer/RenderMain.js +++ b/renderer/RenderMain.js @@ -16,8 +16,6 @@ import Loading from './Loading.vue' import renderer, { parseData } from './render' import useContext from './useContext' import { setPageCss } from './pageCss' -import { RENDERER_SETTINGS_KEY } from './renderer-settings' -import useCustomSetting from './useCustomSetting' import { getPageLifeCycleFns } from './lifeCycles' export default { @@ -39,14 +37,6 @@ export default { Object.keys(obj).forEach((key) => delete obj[key]) } - // 设置 customSettings,如 Function - const { setCustomSettings } = useCustomSetting() - - const customSettings = inject(RENDERER_SETTINGS_KEY, null) - if (customSettings) { - setCustomSettings(customSettings) - } - const customContext = inject('customContext', null) if (customContext) { setContext({ customContext }) diff --git a/renderer/render.js b/renderer/render.js index 9d7ee93..8abf8aa 100644 --- a/renderer/render.js +++ b/renderer/render.js @@ -14,7 +14,7 @@ import { h, provide, inject } from 'vue' import { isHTMLTag, hyphenate } from '@vue/shared' import Notify from '@opentiny/vue-notify' -import useCustomSetting, { DEFAULT_RENDERER_SETTINGS } from './useCustomSetting' +import { RENDERER_SETTINGS, DEFAULT_RENDERER_SETTINGS } from './renderer-settings' import { applyDefaultPropsToProps } from './applyDefaultProps' import { CanvasRow, @@ -34,8 +34,6 @@ import { CanvasRouterView } from './builtin' -const { getCustomSettings } = useCustomSetting() - const hyphenateRE = /\B([A-Z])/g export const customElements = {} const [JS_EXPRESSION, JS_FUNCTION] = ['JSExpression', 'JSFunction'] @@ -75,7 +73,7 @@ const isFunctionConstructor = (fn) => { // 规避创建function eslint报错 export const newFn = (...argv) => { - const Fn = getCustomSettings().Function ?? DEFAULT_RENDERER_SETTINGS.Function + const Fn = inject(RENDERER_SETTINGS)?.Function ?? DEFAULT_RENDERER_SETTINGS.Function if (Fn && isFunctionConstructor(Fn)) { return new Fn(...argv) @@ -85,7 +83,7 @@ export const newFn = (...argv) => { } const transformJSX = (code) => { - const customSettings = getCustomSettings() + const customSettings = inject(RENDERER_SETTINGS) if (customSettings.transformJSX) { return customSettings.transformJSX(code) @@ -347,7 +345,7 @@ const generateCollection = (schema) => { } const getMaterial = (name) => { - const materials = getCustomSettings().materials || DEFAULT_RENDERER_SETTINGS.materials + const materials = inject(RENDERER_SETTINGS)?.materials || DEFAULT_RENDERER_SETTINGS.materials return materials?.[name] } @@ -603,7 +601,7 @@ const getBindProps = (schema, scope, context) => { bindProps.class = bindProps.className delete bindProps.className - applyDefaultPropsToProps(componentName, bindProps, getCustomSettings()?.defaultPropsMap) + applyDefaultPropsToProps(componentName, bindProps, inject(RENDERER_SETTINGS)?.defaultPropsMap) return bindProps } diff --git a/renderer/renderer-settings.js b/renderer/renderer-settings.js deleted file mode 100644 index f95ce16..0000000 --- a/renderer/renderer-settings.js +++ /dev/null @@ -1 +0,0 @@ -export const RENDERER_SETTINGS_KEY = Symbol('RENDERER_SETTINGS_KEY') diff --git a/renderer/renderer-settings.ts b/renderer/renderer-settings.ts new file mode 100644 index 0000000..a5fd461 --- /dev/null +++ b/renderer/renderer-settings.ts @@ -0,0 +1,17 @@ +import type { DefaultPropsMap } from './applyDefaultProps' +import type { Component } from 'vue' + +export const RENDERER_SETTINGS = Symbol('RENDERER_SETTINGS') + +const defaultMaterials: Record = {} + +export interface IRendererSettings { + Function?: FunctionConstructor + materials?: Record + defaultPropsMap?: DefaultPropsMap +} + +export const DEFAULT_RENDERER_SETTINGS: IRendererSettings = { + Function: Function, + materials: defaultMaterials +} diff --git a/renderer/useCustomSetting.ts b/renderer/useCustomSetting.ts deleted file mode 100644 index 05998f8..0000000 --- a/renderer/useCustomSetting.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { Component } from 'vue' -import type { DefaultPropsMap } from './applyDefaultProps' - -export interface IRendererSettings { - Function?: FunctionConstructor - materials?: Record - defaultPropsMap?: DefaultPropsMap -} - -const defaultMaterials: Record = {} - -export const DEFAULT_RENDERER_SETTINGS: IRendererSettings = { - Function: Function, - materials: defaultMaterials -} - -let customSettings: IRendererSettings = {} - -export const setCustomSettings = (rendererSettings: IRendererSettings): void => { - customSettings = rendererSettings -} - -export const getCustomSettings = (): IRendererSettings => customSettings || {} - -export default function useCustomSetting(): { - setCustomSettings: (rendererSettings: IRendererSettings) => void - getCustomSettings: () => IRendererSettings -} { - return { - setCustomSettings, - getCustomSettings - } -} diff --git a/src/App.vue b/src/App.vue index 3c6ace2..96f40fb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,12 +1,12 @@