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.
Hydro/packages/ui-default/misc/PageLoader.js

31 lines
984 B
JavaScript

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);
window.Hydro.pageInstances = this.pageInstances;
}
getAutoloadPages() {
return this.pageInstances.filter((page) => page && page.autoload);
}
getNamedPage(pageName) {
return this.pageInstances.filter((page) => page && page.isNameMatch(pageName));
}
}