You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import { Page } from './Page';
|
|
|
|
|
|
|
|
export default class PageLoader {
|
|
|
|
constructor() {
|
|
|
|
const pages = require.context('../pages/', true, /\.page\.[jt]sx?$/i);
|
|
|
|
const components = require.context('../components/', true, /\.page\.[jt]sx?$/i);
|
|
|
|
this.pageInstances = [
|
|
|
|
...pages.keys().map((key) => {
|
|
|
|
const page = pages(key).default;
|
|
|
|
if (!page || !(page instanceof Page)) return null;
|
|
|
|
return page;
|
|
|
|
}),
|
|
|
|
...components.keys().map((key) => {
|
|
|
|
const page = components(key).default;
|
|
|
|
if (!page || !(page instanceof Page)) return null;
|
|
|
|
return page;
|
|
|
|
}),
|
|
|
|
];
|
|
|
|
if (window.Hydro.extraPages) this.pageInstances.push(...window.Hydro.extraPages.filter((i) => i instanceof Page));
|
|
|
|
window.Hydro.pageInstances = this.pageInstances;
|
|
|
|
window.Hydro.extraPages.filter((i) => !(i instanceof Page)).forEach((i) => i());
|
|
|
|
}
|
|
|
|
|
|
|
|
getAutoloadPages() {
|
|
|
|
return this.pageInstances.filter((page) => page && page.autoload);
|
|
|
|
}
|
|
|
|
|
|
|
|
getNamedPage(pageName) {
|
|
|
|
return this.pageInstances.filter((page) => page && page.isNameMatch(pageName));
|
|
|
|
}
|
|
|
|
}
|