mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 10:53:59 +00:00
feat(ui): render application templates as Vue views mounted before wiring
Templates listed in build/applicationViews.js expand to mount hosts, and mountApplicationViews() renders them before translation and wiring. Markup tests read the page through a server-side render helper, the i18n scanner reads view templates, and Vue preserves whitespace so views keep the exact DOM. No template is converted yet.
This commit is contained in:
1 parent
b7e7058a5c
commit
9d24945143
32 files changed
+243
-63
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import { readFileSync } from 'node:fs';
|
||||
import { APPLICATION_VIEW_NAMES } from './applicationViews.js';
|
||||
|
||||
export const APPLICATION_TEMPLATES = Object.freeze([
|
||||
'scene-chrome',
|
||||
@@ -12,6 +13,16 @@ export const APPLICATION_TEMPLATES = Object.freeze([
|
||||
'hud-loading',
|
||||
]);
|
||||
const allowed = new Set(APPLICATION_TEMPLATES);
|
||||
const views = new Set(APPLICATION_VIEW_NAMES);
|
||||
|
||||
/**
|
||||
* The element a Vue view renders into. `display: contents` keeps the view's
|
||||
* own elements laid out as children of the page.
|
||||
* @param {string} name Application template name.
|
||||
*/
|
||||
export function applicationViewHost(name) {
|
||||
return `<div class="gev-view" data-gev-view="${name}"></div>\n`;
|
||||
}
|
||||
|
||||
/** Expand only known component templates; markers cannot name filesystem paths. */
|
||||
export function expandApplicationHtml(html) {
|
||||
@@ -20,6 +31,7 @@ export function expandApplicationHtml(html) {
|
||||
(_, name) => {
|
||||
if (!allowed.has(name))
|
||||
throw new Error(`Unknown application template: ${name}`);
|
||||
if (views.has(name)) return applicationViewHost(name);
|
||||
return readFileSync(
|
||||
new URL(`../src/ui/templates/${name}.html`, import.meta.url),
|
||||
'utf8',
|
||||
|
||||
Reference in new issue
Block a user