Files
Hydro/packages/ui-default/misc/Page.js
T
undefined 5faa54c7ca ui-default: init
将ui-default合并至主存储库便于维护
2021-04-03 01:44:22 +08:00

48 lines
1.4 KiB
JavaScript

export class Page {
constructor(name, autoload, afterLoading, beforeLoading) {
if (process.env.NODE_ENV !== 'production') {
if (typeof name !== 'string' && !(name instanceof Array)) {
// eslint-disable-next-line quotes
throw new Error(`'name' should be a string or string[]`);
}
if (typeof afterLoading !== 'function' && afterLoading != null) {
// eslint-disable-next-line quotes
throw new Error(`'afterLoading' should be a function`);
}
if (typeof beforeLoading !== 'function' && beforeLoading != null) {
// eslint-disable-next-line quotes
throw new Error(`'beforeLoading' should be a function`);
}
}
this.name = name;
this.autoload = autoload;
this.afterLoading = afterLoading;
this.beforeLoading = beforeLoading;
}
isNameMatch(name) {
if (typeof this.name === 'string') {
return this.name === name;
}
if (this.name instanceof Array) {
return this.name.indexOf(name) !== -1;
}
return false;
}
}
export class NamedPage extends Page {
constructor(name, afterLoading = null, beforeLoading = null) {
super(name, false, afterLoading, beforeLoading);
}
}
export class AutoloadPage extends Page {
constructor(name, afterLoading = null, beforeLoading = null) {
super(name, true, afterLoading, beforeLoading);
}
}
window.Hydro.NamedPage = NamedPage;
window.Hydro.AutoloadPage = AutoloadPage;