|
@@ -1,53 +1,122 @@
|
|
|
import {
|
|
import {
|
|
|
- CREATE_ITEM_AFTER,
|
|
|
|
|
- SET_TAG_NAME,
|
|
|
|
|
- CHANGE_CONTENT
|
|
|
|
|
|
|
+ INIT_BY_STATE,
|
|
|
|
|
+ INIT_BY_DEFAULT,
|
|
|
|
|
+ SET_SELECTION,
|
|
|
|
|
+ ADD_PAGE_AFTER,
|
|
|
|
|
+ DELETE_PAGE,
|
|
|
|
|
+ ADD_ITEM_AFTER,
|
|
|
|
|
+ MODIFY_ITEM,
|
|
|
|
|
+ DELETE_ITEM
|
|
|
} from '../types/editor-types'
|
|
} from '../types/editor-types'
|
|
|
|
|
+
|
|
|
import uuid from 'uuid'
|
|
import uuid from 'uuid'
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
state: {
|
|
state: {
|
|
|
- editableItems: [{
|
|
|
|
|
- id: uuid.v4(),
|
|
|
|
|
- tagName: 'div',
|
|
|
|
|
- content: '2',
|
|
|
|
|
- isFocus: true
|
|
|
|
|
- }]
|
|
|
|
|
|
|
+ pages: [],
|
|
|
|
|
+ selection: {}
|
|
|
},
|
|
},
|
|
|
|
|
+
|
|
|
mutations: {
|
|
mutations: {
|
|
|
- [CREATE_ITEM_AFTER](state, payload) {
|
|
|
|
|
- // todo 快要看不懂了...需要改一改
|
|
|
|
|
- const index = state.editableItems.indexOf(state.editableItems.filter(item => item.id === payload.id)[0])
|
|
|
|
|
- state.editableItems = [...state.editableItems.slice(0, index + 1).map(item => ({
|
|
|
|
|
- ...item,
|
|
|
|
|
- isFocus: false
|
|
|
|
|
- })), {
|
|
|
|
|
|
|
+ [INIT_BY_STATE](state, payload) {},
|
|
|
|
|
+ [INIT_BY_DEFAULT](state, payload) {
|
|
|
|
|
+ state.pages = [{
|
|
|
id: uuid.v4(),
|
|
id: uuid.v4(),
|
|
|
- tagName: 'div',
|
|
|
|
|
- content: '',
|
|
|
|
|
- isFocus: true
|
|
|
|
|
- }, ...state.editableItems.slice(index + 1).map(item => ({
|
|
|
|
|
- ...item,
|
|
|
|
|
- isFocus: false
|
|
|
|
|
- }))]
|
|
|
|
|
|
|
+ items: [{
|
|
|
|
|
+ id: uuid.v4(),
|
|
|
|
|
+ type: 'h1',
|
|
|
|
|
+ placeholder: '未命名文档标题',
|
|
|
|
|
+ content: ''
|
|
|
|
|
+ }, {
|
|
|
|
|
+ id: uuid.v4(),
|
|
|
|
|
+ type: 'div',
|
|
|
|
|
+ placeholder: '未命名小标题',
|
|
|
|
|
+ content: ''
|
|
|
|
|
+ }]
|
|
|
|
|
+ }]
|
|
|
|
|
+ },
|
|
|
|
|
+ [SET_SELECTION](state, payload) {
|
|
|
|
|
+ state.selection = {
|
|
|
|
|
+ ...payload.selection
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ [ADD_PAGE_AFTER](state, payload) {
|
|
|
|
|
+ const index = state.pages.indexOf(state.pages.filter(page => page.id === payload.pageId)[0])
|
|
|
|
|
+
|
|
|
|
|
+ state.pages = [
|
|
|
|
|
+ ...state.pages.slice(0, index + 1), {
|
|
|
|
|
+ id: uuid.v4(),
|
|
|
|
|
+ items: [{
|
|
|
|
|
+ id: uuid.v4(),
|
|
|
|
|
+ type: 'h3',
|
|
|
|
|
+ placeholder: '未命名副标题',
|
|
|
|
|
+ content: ''
|
|
|
|
|
+ }]
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ [DELETE_PAGE](state, payload) {
|
|
|
|
|
+ state.pages = [...state.pages.filter(page => page.id !== payload.id)]
|
|
|
},
|
|
},
|
|
|
- [SET_TAG_NAME](state, payload) {
|
|
|
|
|
- state.editableItems = [...state.editableItems.map(item =>
|
|
|
|
|
- item.id === payload.id ? {
|
|
|
|
|
- ...item,
|
|
|
|
|
- tagName: payload.tagName
|
|
|
|
|
- } : item
|
|
|
|
|
- )]
|
|
|
|
|
|
|
+ // [SPLITE_PAGE](state, payload) {},
|
|
|
|
|
+ // [JOIN_PAGE](state, payload) {},
|
|
|
|
|
+ [ADD_ITEM_AFTER](state, payload) {
|
|
|
|
|
+ state.pages = [
|
|
|
|
|
+ ...state.pages.map(page => {
|
|
|
|
|
+ if (page.id === payload.pageId) {
|
|
|
|
|
+ const index = page.items.indexOf(page.items.filter(item => item.id === payload.itemId)[0])
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...page,
|
|
|
|
|
+ items: [
|
|
|
|
|
+ ...page.items.slice(0, index + 1), {
|
|
|
|
|
+ id: uuid.v4(),
|
|
|
|
|
+ type: 'div',
|
|
|
|
|
+ content: ''
|
|
|
|
|
+ },
|
|
|
|
|
+ ...page.items.slice(index + 1)
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return page
|
|
|
|
|
+ })
|
|
|
|
|
+ ]
|
|
|
},
|
|
},
|
|
|
- [CHANGE_CONTENT](state, payload) {
|
|
|
|
|
- state.editableItems = [...state.editableItems.map(item =>
|
|
|
|
|
- item.id === payload.id ? {
|
|
|
|
|
- ...item,
|
|
|
|
|
- content: payload.content
|
|
|
|
|
- } : item
|
|
|
|
|
- )]
|
|
|
|
|
|
|
+ [MODIFY_ITEM](state, payload) {
|
|
|
|
|
+ state.pages = [
|
|
|
|
|
+ ...state.pages.map(page => {
|
|
|
|
|
+ if (page.id === payload.pageId) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...page,
|
|
|
|
|
+ items: page.items.map(item => {
|
|
|
|
|
+ if (item.id === payload.itemId) {
|
|
|
|
|
+ return {
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ ...payload.diff
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return item
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return page
|
|
|
|
|
+ })
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ [DELETE_ITEM](state, payload) {
|
|
|
|
|
+ state.pages = {
|
|
|
|
|
+ ...state.pages.map(page => page.id === payload.id && page.items.filter(item => item.id !== payload.id))
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
actions: {},
|
|
actions: {},
|
|
|
getters: {}
|
|
getters: {}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// [SET_TAG_NAME](state, payload) {
|
|
|
|
|
+// state.editableItems = [...state.editableItems.map(item =>
|
|
|
|
|
+// item.id === payload.id ? {
|
|
|
|
|
+// ...item,
|
|
|
|
|
+// tagName: payload.tagName
|
|
|
|
|
+// } : item
|
|
|
|
|
+// )]
|
|
|
|
|
+// },
|