|
|
@ -20,6 +20,14 @@ export default () => { |
|
|
|
|
|
|
|
|
Pages, |
|
|
Pages, |
|
|
|
|
|
|
|
|
|
|
|
events: { |
|
|
|
|
|
select: evPageSelect, |
|
|
|
|
|
add: evPageAdd, |
|
|
|
|
|
addBefore: evPageAddBefore, |
|
|
|
|
|
remove: evPageRemove, |
|
|
|
|
|
removeBefore: evPageRemoveBefore |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Initialize module |
|
|
* Initialize module |
|
|
* @param {Object} config Configurations |
|
|
* @param {Object} config Configurations |
|
|
@ -30,6 +38,7 @@ export default () => { |
|
|
const { em } = opts; |
|
|
const { em } = opts; |
|
|
const cnf = { ...opts }; |
|
|
const cnf = { ...opts }; |
|
|
this.config = cnf; |
|
|
this.config = cnf; |
|
|
|
|
|
this.em = em; |
|
|
const defPages = cnf.pages || []; |
|
|
const defPages = cnf.pages || []; |
|
|
const pages = new Pages(defPages, cnf); |
|
|
const pages = new Pages(defPages, cnf); |
|
|
this.pages = pages; |
|
|
this.pages = pages; |
|
|
@ -37,7 +46,6 @@ export default () => { |
|
|
const mainPage = !pages.length |
|
|
const mainPage = !pages.length |
|
|
? this.add({ type: typeMain }) |
|
|
? this.add({ type: typeMain }) |
|
|
: this.getMain(); |
|
|
: this.getMain(); |
|
|
this.em = em; |
|
|
|
|
|
this.model = model; |
|
|
this.model = model; |
|
|
this.select(mainPage, { silent: 1, main: 1 }); |
|
|
this.select(mainPage, { silent: 1, main: 1 }); |
|
|
pages.on('add', (p, c, o) => em.trigger(evPageAdd, p, o)); |
|
|
pages.on('add', (p, c, o) => em.trigger(evPageAdd, p, o)); |
|
|
@ -70,11 +78,16 @@ export default () => { |
|
|
* @returns {Page} |
|
|
* @returns {Page} |
|
|
*/ |
|
|
*/ |
|
|
add(props, opts = {}) { |
|
|
add(props, opts = {}) { |
|
|
|
|
|
const { em } = this; |
|
|
props.id = props.id || this._createId(); |
|
|
props.id = props.id || this._createId(); |
|
|
props.frames = props.frames || [{}]; |
|
|
props.frames = props.frames || [{}]; |
|
|
const page = this.pages.add(props, opts); |
|
|
const add = () => { |
|
|
opts.select && this.select(page); |
|
|
const page = this.pages.add(props, opts); |
|
|
return page; |
|
|
opts.select && this.select(page); |
|
|
|
|
|
return page; |
|
|
|
|
|
}; |
|
|
|
|
|
em.trigger(evPageAddBefore, props, add, opts); |
|
|
|
|
|
return !opts.abort && add(); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -82,10 +95,15 @@ export default () => { |
|
|
* @param {String|Page} page Page or page id |
|
|
* @param {String|Page} page Page or page id |
|
|
* @returns {Page} |
|
|
* @returns {Page} |
|
|
*/ |
|
|
*/ |
|
|
remove(pg) { |
|
|
remove(pg, opts = {}) { |
|
|
|
|
|
const { em } = this; |
|
|
const page = isString(pg) ? this.get(pg) : pg; |
|
|
const page = isString(pg) ? this.get(pg) : pg; |
|
|
page && this.pages.remove(page); |
|
|
const rm = () => { |
|
|
return page; |
|
|
page && this.pages.remove(page, opts); |
|
|
|
|
|
return page; |
|
|
|
|
|
}; |
|
|
|
|
|
em.trigger(evPageRemoveBefore, page, rm, opts); |
|
|
|
|
|
return !opts.abort && rm(); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
|