Commit be2d3eb792ef8939e96ed01a645678c886dc46e5
1 parent
b2c9bc49
fix: #132 #134
Showing
10 changed files
with
155 additions
and
150 deletions
front-end/h5/src/components/core/editor/edit-panel/background.js
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | * @Author: ly525 | 2 | * @Author: ly525 |
| 3 | * @Date: 2019-12-01 18:11:49 | 3 | * @Date: 2019-12-01 18:11:49 |
| 4 | * @LastEditors : ly525 | 4 | * @LastEditors : ly525 |
| 5 | - * @LastEditTime : 2019-12-22 18:09:54 | 5 | + * @LastEditTime : 2020-01-15 01:03:31 |
| 6 | * @FilePath: /luban-h5/front-end/h5/src/components/core/editor/edit-panel/background.js | 6 | * @FilePath: /luban-h5/front-end/h5/src/components/core/editor/edit-panel/background.js |
| 7 | * @Github: https://github.com/ly525/luban-h5 | 7 | * @Github: https://github.com/ly525/luban-h5 |
| 8 | * @Description: Do not edit | 8 | * @Description: Do not edit |
| @@ -23,14 +23,11 @@ export default { | @@ -23,14 +23,11 @@ export default { | ||
| 23 | ]) | 23 | ]) |
| 24 | }, | 24 | }, |
| 25 | render () { | 25 | render () { |
| 26 | - return <propsEditPanel layout="vertical" /> | ||
| 27 | - }, | ||
| 28 | - created () { | ||
| 29 | - const bgElement = this.editingPage.elements.find(e => e.name === 'lbp-background') | ||
| 30 | - this.setEditingElement(bgElement) | ||
| 31 | - }, | ||
| 32 | - beforeDestroy () { | ||
| 33 | - this.setEditingElement() | 26 | + const bgEle = this.editingPage.elements.find(e => e.name === 'lbp-background') |
| 27 | + return <propsEditPanel | ||
| 28 | + layout="vertical" | ||
| 29 | + realEditingElement={bgEle} | ||
| 30 | + /> | ||
| 34 | } | 31 | } |
| 35 | 32 | ||
| 36 | } | 33 | } |
front-end/h5/src/components/core/editor/edit-panel/props.js
| 1 | import Vue from 'vue' | 1 | import Vue from 'vue' |
| 2 | import { mapState, mapActions } from 'vuex' | 2 | import { mapState, mapActions } from 'vuex' |
| 3 | -import { getVM } from '../../../../utils/element' | 3 | +import { getVM, getComponentsForPropsEditor } from '../../../../utils/element' |
| 4 | 4 | ||
| 5 | export default { | 5 | export default { |
| 6 | data: () => ({ | 6 | data: () => ({ |
| @@ -10,12 +10,22 @@ export default { | @@ -10,12 +10,22 @@ export default { | ||
| 10 | layout: { | 10 | layout: { |
| 11 | type: String, | 11 | type: String, |
| 12 | default: 'horizontal' | 12 | default: 'horizontal' |
| 13 | + }, | ||
| 14 | + // 优先级更高的当前编辑元素 | ||
| 15 | + realEditingElement: { | ||
| 16 | + type: Object, | ||
| 17 | + default: () => null | ||
| 13 | } | 18 | } |
| 14 | }, | 19 | }, |
| 15 | computed: { | 20 | computed: { |
| 16 | - ...mapState('editor', ['editingElement', 'editingElementEditorConfig']), | 21 | + ...mapState('editor', { |
| 22 | + stateEditingElement: state => state.editingElement | ||
| 23 | + }), | ||
| 17 | customEditorName () { | 24 | customEditorName () { |
| 18 | return `${this.editingElement.name}-custom-editor` | 25 | return `${this.editingElement.name}-custom-editor` |
| 26 | + }, | ||
| 27 | + editingElement () { | ||
| 28 | + return this.realEditingElement || this.stateEditingElement | ||
| 19 | } | 29 | } |
| 20 | }, | 30 | }, |
| 21 | methods: { | 31 | methods: { |
| @@ -42,11 +52,10 @@ export default { | @@ -42,11 +52,10 @@ export default { | ||
| 42 | * 将插件属性的 自定义增强编辑器注入 属性编辑面板中 | 52 | * 将插件属性的 自定义增强编辑器注入 属性编辑面板中 |
| 43 | */ | 53 | */ |
| 44 | mixinEnhancedPropsEditor (editingElement) { | 54 | mixinEnhancedPropsEditor (editingElement) { |
| 45 | - if (!this.editingElementEditorConfig || !this.editingElementEditorConfig.components) return | ||
| 46 | - const { components } = this.editingElementEditorConfig | ||
| 47 | - for (const key in components) { | 55 | + if (!this.componentsForPropsEditor) return |
| 56 | + for (const key in this.componentsForPropsEditor) { | ||
| 48 | if (this.$options.components[key]) return | 57 | if (this.$options.components[key]) return |
| 49 | - this.$options.components[key] = components[key] | 58 | + this.$options.components[key] = this.componentsForPropsEditor[key] |
| 50 | } | 59 | } |
| 51 | }, | 60 | }, |
| 52 | /** | 61 | /** |
| @@ -81,7 +90,7 @@ export default { | @@ -81,7 +90,7 @@ export default { | ||
| 81 | // editingElement.pluginProps[propKey] = e.target ? e.target.value : e | 90 | // editingElement.pluginProps[propKey] = e.target ? e.target.value : e |
| 82 | // } | 91 | // } |
| 83 | change (e) { | 92 | change (e) { |
| 84 | - // TODO fixme: update plugin props in vuex with dispatch | 93 | + // TODO fixme: update plugin props in vuex with dispatch |
| 85 | editingElement.pluginProps[propKey] = e.target ? e.target.value : e | 94 | editingElement.pluginProps[propKey] = e.target ? e.target.value : e |
| 86 | } | 95 | } |
| 87 | } | 96 | } |
| @@ -140,6 +149,9 @@ export default { | @@ -140,6 +149,9 @@ export default { | ||
| 140 | return this.renderPropsEditorPanel(h, ele) | 149 | return this.renderPropsEditorPanel(h, ele) |
| 141 | }, | 150 | }, |
| 142 | created () { | 151 | created () { |
| 143 | - window.getEditorApp.$on('setEditingElement', this.loadCustomEditorForPlugin) | 152 | + window.getEditorApp.$on('setEditingElement', (ele) => { |
| 153 | + this.loadCustomEditorForPlugin() | ||
| 154 | + this.componentsForPropsEditor = getComponentsForPropsEditor(ele.name) | ||
| 155 | + }) | ||
| 144 | } | 156 | } |
| 145 | } | 157 | } |
front-end/h5/src/components/core/models/element.js
| @@ -31,42 +31,28 @@ class Element { | @@ -31,42 +31,28 @@ class Element { | ||
| 31 | * 3. 为何需要 clone,因为会有 element.clone() 以及 page.clone(), | 31 | * 3. 为何需要 clone,因为会有 element.clone() 以及 page.clone(), |
| 32 | * element.pluginProps 和 elementcommonStyle 是引用类型,如果不做 deep_clone 可能会出现意外错误 | 32 | * element.pluginProps 和 elementcommonStyle 是引用类型,如果不做 deep_clone 可能会出现意外错误 |
| 33 | */ | 33 | */ |
| 34 | - this.pluginProps = (typeof ele.pluginProps === 'object' && cloneObj({ ...ele.pluginProps, uuid: this.uuid })) || this.getDefaultPluginProps(ele.editorConfig || {}) | 34 | + this.pluginProps = (typeof ele.pluginProps === 'object' && cloneObj({ ...ele.pluginProps, uuid: this.uuid })) || this.getDefaultPluginProps(ele.props || {}) |
| 35 | this.commonStyle = (typeof ele.commonStyle === 'object' && cloneObj(ele.commonStyle)) || { ...defaultStyle, zindex: ele.zindex } | 35 | this.commonStyle = (typeof ele.commonStyle === 'object' && cloneObj(ele.commonStyle)) || { ...defaultStyle, zindex: ele.zindex } |
| 36 | this.events = [] | 36 | this.events = [] |
| 37 | this.animations = ele.animations || [] | 37 | this.animations = ele.animations || [] |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | // init prop of plugin | 40 | // init prop of plugin |
| 41 | - getDefaultPluginProps (propsConfig) { | 41 | + getDefaultPluginProps (props) { |
| 42 | const pluginProps = { | 42 | const pluginProps = { |
| 43 | uuid: this.uuid | 43 | uuid: this.uuid |
| 44 | } | 44 | } |
| 45 | - Object.keys(propsConfig).forEach(key => { | 45 | + Object.keys(props).forEach(key => { |
| 46 | // #6 | 46 | // #6 |
| 47 | if (key === 'name') { | 47 | if (key === 'name') { |
| 48 | console.warn('Please do not use {name} as plugin prop') | 48 | console.warn('Please do not use {name} as plugin prop') |
| 49 | return | 49 | return |
| 50 | } | 50 | } |
| 51 | - const defaultValue = propsConfig[key].default | 51 | + const defaultValue = props[key].default |
| 52 | pluginProps[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue | 52 | pluginProps[key] = typeof defaultValue === 'function' ? defaultValue() : defaultValue |
| 53 | }) | 53 | }) |
| 54 | return pluginProps | 54 | return pluginProps |
| 55 | } | 55 | } |
| 56 | - // getDefaultPluginProps (editorConfig) { | ||
| 57 | - // // init prop of plugin | ||
| 58 | - // const propConf = editorConfig.propsConfig | ||
| 59 | - // const pluginProps = {} | ||
| 60 | - // Object.keys(propConf).forEach(key => { | ||
| 61 | - // // #6 | ||
| 62 | - // if (key === 'name') { | ||
| 63 | - // console.warn('Please do not use {name} as plugin prop') | ||
| 64 | - // return | ||
| 65 | - // } | ||
| 66 | - // pluginProps[key] = propConf[key].defaultPropValue | ||
| 67 | - // }) | ||
| 68 | - // return pluginProps | ||
| 69 | - // } | ||
| 70 | 56 | ||
| 71 | getStyle ({ position = 'static', isRem = false } = {}) { | 57 | getStyle ({ position = 'static', isRem = false } = {}) { |
| 72 | if (this.name === 'lbp-background') { | 58 | if (this.name === 'lbp-background') { |
front-end/h5/src/components/plugins/lbp-form-button.js
| @@ -75,21 +75,20 @@ export default { | @@ -75,21 +75,20 @@ export default { | ||
| 75 | req.send(formData) | 75 | req.send(formData) |
| 76 | } | 76 | } |
| 77 | }, | 77 | }, |
| 78 | - editorConfig: { | ||
| 79 | - components: { | ||
| 80 | - 'lbs-select-input-type': { | ||
| 81 | - props: ['value'], | ||
| 82 | - computed: { | ||
| 83 | - value_: { | ||
| 84 | - get () { | ||
| 85 | - return this.value | ||
| 86 | - }, | ||
| 87 | - set (val) { | ||
| 88 | - this.$emit('input', val) | ||
| 89 | - } | 78 | + componentsForPropsEditor: { |
| 79 | + 'lbs-select-input-type': { | ||
| 80 | + props: ['value'], | ||
| 81 | + computed: { | ||
| 82 | + value_: { | ||
| 83 | + get () { | ||
| 84 | + return this.value | ||
| 85 | + }, | ||
| 86 | + set (val) { | ||
| 87 | + this.$emit('input', val) | ||
| 90 | } | 88 | } |
| 91 | - }, | ||
| 92 | - template: ` | 89 | + } |
| 90 | + }, | ||
| 91 | + template: ` | ||
| 93 | <a-select v-model="value_" placeholder="类型"> | 92 | <a-select v-model="value_" placeholder="类型"> |
| 94 | <a-option | 93 | <a-option |
| 95 | v-for="item in options" | 94 | v-for="item in options" |
| @@ -99,31 +98,30 @@ export default { | @@ -99,31 +98,30 @@ export default { | ||
| 99 | </a-option> | 98 | </a-option> |
| 100 | </a-select> | 99 | </a-select> |
| 101 | `, | 100 | `, |
| 102 | - data: () => ({ | ||
| 103 | - options: [ | ||
| 104 | - { | ||
| 105 | - label: '文字', | ||
| 106 | - value: 'text' | ||
| 107 | - }, | ||
| 108 | - { | ||
| 109 | - label: '密码', | ||
| 110 | - value: 'password' | ||
| 111 | - }, | ||
| 112 | - { | ||
| 113 | - label: '日期', | ||
| 114 | - value: 'date' | ||
| 115 | - }, | ||
| 116 | - { | ||
| 117 | - label: '邮箱', | ||
| 118 | - value: 'email' | ||
| 119 | - }, | ||
| 120 | - { | ||
| 121 | - label: '手机号', | ||
| 122 | - value: 'tel' | ||
| 123 | - } | ||
| 124 | - ] | ||
| 125 | - }) | ||
| 126 | - } | 101 | + data: () => ({ |
| 102 | + options: [ | ||
| 103 | + { | ||
| 104 | + label: '文字', | ||
| 105 | + value: 'text' | ||
| 106 | + }, | ||
| 107 | + { | ||
| 108 | + label: '密码', | ||
| 109 | + value: 'password' | ||
| 110 | + }, | ||
| 111 | + { | ||
| 112 | + label: '日期', | ||
| 113 | + value: 'date' | ||
| 114 | + }, | ||
| 115 | + { | ||
| 116 | + label: '邮箱', | ||
| 117 | + value: 'email' | ||
| 118 | + }, | ||
| 119 | + { | ||
| 120 | + label: '手机号', | ||
| 121 | + value: 'tel' | ||
| 122 | + } | ||
| 123 | + ] | ||
| 124 | + }) | ||
| 127 | } | 125 | } |
| 128 | } | 126 | } |
| 129 | } | 127 | } |
front-end/h5/src/components/plugins/lbp-form-input.js
| @@ -54,66 +54,64 @@ export default { | @@ -54,66 +54,64 @@ export default { | ||
| 54 | lineHeight: commonProps.lineHeight, | 54 | lineHeight: commonProps.lineHeight, |
| 55 | textAlign: commonProps.textAlign({ defaultValue: 'left' }) | 55 | textAlign: commonProps.textAlign({ defaultValue: 'left' }) |
| 56 | }, | 56 | }, |
| 57 | - editorConfig: { | ||
| 58 | - components: { | ||
| 59 | - 'lbs-select-input-type': { | ||
| 60 | - props: ['value'], | ||
| 61 | - computed: { | ||
| 62 | - value_: { | ||
| 63 | - get () { | ||
| 64 | - return this.value | ||
| 65 | - }, | ||
| 66 | - set (val) { | ||
| 67 | - this.$emit('input', val) | ||
| 68 | - } | 57 | + componentsForPropsEditor: { |
| 58 | + 'lbs-select-input-type': { | ||
| 59 | + props: ['value'], | ||
| 60 | + computed: { | ||
| 61 | + value_: { | ||
| 62 | + get () { | ||
| 63 | + return this.value | ||
| 64 | + }, | ||
| 65 | + set (val) { | ||
| 66 | + this.$emit('input', val) | ||
| 69 | } | 67 | } |
| 70 | - }, | ||
| 71 | - render (h) { | ||
| 72 | - return ( | ||
| 73 | - <a-select | ||
| 74 | - placeholder="类型" | ||
| 75 | - value={this.value} | ||
| 76 | - onChange={(value) => { | ||
| 77 | - this.$emit('input', value) | ||
| 78 | - this.$emit('change', value) | ||
| 79 | - }} | ||
| 80 | - > | ||
| 81 | - { | ||
| 82 | - this.options.map(option => ( | ||
| 83 | - <a-select-option | ||
| 84 | - key={option.value} | ||
| 85 | - value={option.value} | ||
| 86 | - >{option.label}</a-select-option> | ||
| 87 | - )) | ||
| 88 | - } | ||
| 89 | - </a-select> | ||
| 90 | - ) | ||
| 91 | - }, | ||
| 92 | - data: () => ({ | ||
| 93 | - options: [ | ||
| 94 | - { | ||
| 95 | - label: '文字', | ||
| 96 | - value: 'text' | ||
| 97 | - }, | ||
| 98 | - { | ||
| 99 | - label: '密码', | ||
| 100 | - value: 'password' | ||
| 101 | - }, | ||
| 102 | - { | ||
| 103 | - label: '日期', | ||
| 104 | - value: 'date' | ||
| 105 | - }, | 68 | + } |
| 69 | + }, | ||
| 70 | + render (h) { | ||
| 71 | + return ( | ||
| 72 | + <a-select | ||
| 73 | + placeholder="类型" | ||
| 74 | + value={this.value} | ||
| 75 | + onChange={(value) => { | ||
| 76 | + this.$emit('input', value) | ||
| 77 | + this.$emit('change', value) | ||
| 78 | + }} | ||
| 79 | + > | ||
| 106 | { | 80 | { |
| 107 | - label: '邮箱', | ||
| 108 | - value: 'email' | ||
| 109 | - }, | ||
| 110 | - { | ||
| 111 | - label: '手机号', | ||
| 112 | - value: 'tel' | 81 | + this.options.map(option => ( |
| 82 | + <a-select-option | ||
| 83 | + key={option.value} | ||
| 84 | + value={option.value} | ||
| 85 | + >{option.label}</a-select-option> | ||
| 86 | + )) | ||
| 113 | } | 87 | } |
| 114 | - ] | ||
| 115 | - }) | ||
| 116 | - } | 88 | + </a-select> |
| 89 | + ) | ||
| 90 | + }, | ||
| 91 | + data: () => ({ | ||
| 92 | + options: [ | ||
| 93 | + { | ||
| 94 | + label: '文字', | ||
| 95 | + value: 'text' | ||
| 96 | + }, | ||
| 97 | + { | ||
| 98 | + label: '密码', | ||
| 99 | + value: 'password' | ||
| 100 | + }, | ||
| 101 | + { | ||
| 102 | + label: '日期', | ||
| 103 | + value: 'date' | ||
| 104 | + }, | ||
| 105 | + { | ||
| 106 | + label: '邮箱', | ||
| 107 | + value: 'email' | ||
| 108 | + }, | ||
| 109 | + { | ||
| 110 | + label: '手机号', | ||
| 111 | + value: 'tel' | ||
| 112 | + } | ||
| 113 | + ] | ||
| 114 | + }) | ||
| 117 | } | 115 | } |
| 118 | } | 116 | } |
| 119 | } | 117 | } |
front-end/h5/src/components/plugins/lbp-slide.js
front-end/h5/src/components/plugins/lbp-video.js
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | * @Author: ly525 | 2 | * @Author: ly525 |
| 3 | * @Date: 2019-12-01 18:11:50 | 3 | * @Date: 2019-12-01 18:11:50 |
| 4 | * @LastEditors : ly525 | 4 | * @LastEditors : ly525 |
| 5 | - * @LastEditTime : 2020-01-13 00:31:39 | 5 | + * @LastEditTime : 2020-01-15 00:53:48 |
| 6 | * @FilePath: /luban-h5/front-end/h5/src/components/plugins/lbp-video.js | 6 | * @FilePath: /luban-h5/front-end/h5/src/components/plugins/lbp-video.js |
| 7 | * @Github: https://github.com/ly525/luban-h5 | 7 | * @Github: https://github.com/ly525/luban-h5 |
| 8 | * @Description: Do not edit | 8 | * @Description: Do not edit |
| @@ -96,8 +96,6 @@ export default { | @@ -96,8 +96,6 @@ export default { | ||
| 96 | </div> | 96 | </div> |
| 97 | ) | 97 | ) |
| 98 | }, | 98 | }, |
| 99 | - editorConfig: { | ||
| 100 | - components: { | ||
| 101 | - } | 99 | + componentsForPropsEditor: { |
| 102 | } | 100 | } |
| 103 | } | 101 | } |
front-end/h5/src/store/modules/editor.js
| @@ -9,7 +9,6 @@ const state = { | @@ -9,7 +9,6 @@ const state = { | ||
| 9 | work: new Work(), | 9 | work: new Work(), |
| 10 | editingPage: { elements: [] }, | 10 | editingPage: { elements: [] }, |
| 11 | editingElement: null, | 11 | editingElement: null, |
| 12 | - editingElementEditorConfig: null, | ||
| 13 | formDetailOfWork: { | 12 | formDetailOfWork: { |
| 14 | uuidMap2Name: {}, | 13 | uuidMap2Name: {}, |
| 15 | formRecords: [] | 14 | formRecords: [] |
front-end/h5/src/store/modules/element.js
| 1 | import Element from '../../components/core/models/element' | 1 | import Element from '../../components/core/models/element' |
| 2 | -import { getEditorConfigForEditingElement, swapZindex, getVM } from '../../utils/element' | 2 | +import { swapZindex, getVM } from '../../utils/element' |
| 3 | 3 | ||
| 4 | // actions | 4 | // actions |
| 5 | export const actions = { | 5 | export const actions = { |
| 6 | setEditingElement ({ commit }, payload) { | 6 | setEditingElement ({ commit }, payload) { |
| 7 | commit('setEditingElement', payload) | 7 | commit('setEditingElement', payload) |
| 8 | - | ||
| 9 | - const vm = (payload && payload.name) ? getEditorConfigForEditingElement(payload.name) : null | ||
| 10 | - commit('setEditingElementEditorConfig', vm) | ||
| 11 | - | ||
| 12 | payload && window.getEditorApp.$emit('setEditingElement', payload) | 8 | payload && window.getEditorApp.$emit('setEditingElement', payload) |
| 13 | }, | 9 | }, |
| 14 | setElementPosition ({ commit }, payload) { | 10 | setElementPosition ({ commit }, payload) { |
| @@ -30,9 +26,6 @@ export const mutations = { | @@ -30,9 +26,6 @@ export const mutations = { | ||
| 30 | setEditingElement (state, payload) { | 26 | setEditingElement (state, payload) { |
| 31 | state.editingElement = payload | 27 | state.editingElement = payload |
| 32 | }, | 28 | }, |
| 33 | - setEditingElementEditorConfig (state, payload) { | ||
| 34 | - state.editingElementEditorConfig = payload | ||
| 35 | - }, | ||
| 36 | setElementCommonStyle (state, payload) { | 29 | setElementCommonStyle (state, payload) { |
| 37 | state.editingElement.commonStyle = { | 30 | state.editingElement.commonStyle = { |
| 38 | ...state.editingElement.commonStyle, | 31 | ...state.editingElement.commonStyle, |
| @@ -54,7 +47,7 @@ export const mutations = { | @@ -54,7 +47,7 @@ export const mutations = { | ||
| 54 | ...value, | 47 | ...value, |
| 55 | zindex: len + 1 | 48 | zindex: len + 1 |
| 56 | } | 49 | } |
| 57 | - const element = new Element({ name, editorConfig: props }) | 50 | + const element = new Element({ name, props }) |
| 58 | elements.push(element) | 51 | elements.push(element) |
| 59 | break | 52 | break |
| 60 | case 'copy': | 53 | case 'copy': |
front-end/h5/src/utils/element.js
| @@ -3,10 +3,36 @@ import Vue from 'vue' | @@ -3,10 +3,36 @@ import Vue from 'vue' | ||
| 3 | const DESIGN_DRAFT_WIDTH = 320 | 3 | const DESIGN_DRAFT_WIDTH = 320 |
| 4 | const styleKey = 'commonStyle' | 4 | const styleKey = 'commonStyle' |
| 5 | 5 | ||
| 6 | -export function getEditorConfigForEditingElement (elementName) { | 6 | +/** |
| 7 | + * | ||
| 8 | + | ||
| 9 | + * 获取组件中的 「componentsForPropsEditor」对象 | ||
| 10 | + * @param {String} elementName | ||
| 11 | + * | ||
| 12 | + * 可以查看下面的组件 Demo | ||
| 13 | + { | ||
| 14 | + name: 'lbp-button', | ||
| 15 | + props: { | ||
| 16 | + color: { | ||
| 17 | + default: 'red', | ||
| 18 | + editor: { | ||
| 19 | + type: 'custom-color-editor' | ||
| 20 | + } | ||
| 21 | + } | ||
| 22 | + }, | ||
| 23 | + componentsForPropsEditor: { | ||
| 24 | + 'custom-color-editor': { | ||
| 25 | + render() { | ||
| 26 | + return <input type="color" /> | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + } | ||
| 30 | + } | ||
| 31 | + */ | ||
| 32 | +export function getComponentsForPropsEditor (elementName) { | ||
| 7 | const Ctor = Vue.component(elementName) | 33 | const Ctor = Vue.component(elementName) |
| 8 | // TODO 为何直接 return new Ctor() 并将其赋值给 vuex 的 state 会报错:Cannot convert a Symbol value to a string | 34 | // TODO 为何直接 return new Ctor() 并将其赋值给 vuex 的 state 会报错:Cannot convert a Symbol value to a string |
| 9 | - return new Ctor().$options.editorConfig | 35 | + return new Ctor().$options.componentsForPropsEditor |
| 10 | } | 36 | } |
| 11 | 37 | ||
| 12 | export function getVM (pluginName) { | 38 | export function getVM (pluginName) { |