mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 18:34:02 +00:00
feat(ui): render the Scene panel's shot list and scene options as components
SceneShotList and SceneOptions render the project from a gev-scenes store instead of scenePresentation building rows with createElement. SceneControls stays the owner: it publishes the director's state and attaches the row actions, and a late destroy cannot detach a newer owner. Rows keep their identity across selection; a rename keeps its typed text across republishing and ends with its row. The select still changes its choice only when its options are rendered. Vue keeps whitespace in every component, so Prettier formats single-file components with strict whitespace sensitivity, and the test loader parses templates with the same options as the browser build. The i18n check reads view text without its interpolations, whose t() calls are scanned with the sources.
This commit is contained in:
1 parent
6802c9c8b0
commit
d9fdcfc641
13 files changed
+518
-306
No files matched your search
+8
-2
@@ -431,13 +431,19 @@ function markupFiles() {
|
||||
);
|
||||
}
|
||||
|
||||
/** A file's markup; for a single-file component, its template block. */
|
||||
/**
|
||||
* A file's markup; for a single-file component, its template block without
|
||||
* interpolations, which are code: their t() calls are read with the sources.
|
||||
*/
|
||||
function readMarkup(file) {
|
||||
const source = readFileSync(path.join(ROOT, file), 'utf8');
|
||||
if (!file.endsWith('.vue')) return source;
|
||||
const start = source.indexOf('<template>');
|
||||
const end = source.lastIndexOf('</template>');
|
||||
return start === -1 ? '' : source.slice(start + '<template>'.length, end);
|
||||
if (start === -1) return '';
|
||||
return source
|
||||
.slice(start + '<template>'.length, end)
|
||||
.replace(/\{\{[\s\S]*?\}\}/g, '');
|
||||
}
|
||||
|
||||
// Text that never reaches the page as UI: tool results and descriptions for
|
||||
|
||||
@@ -28,7 +28,23 @@
|
||||
"src/ui/views/LayerPanelsView.vue",
|
||||
"src/ui/views/ProviderSettingsView.vue",
|
||||
"src/ui/views/SceneChromeView.vue",
|
||||
"src/ui/views/WelcomeView.vue"
|
||||
"src/ui/views/WelcomeView.vue",
|
||||
"src/ui/views/SceneOptions.vue",
|
||||
"src/ui/views/SceneShotList.vue",
|
||||
"src/ui/stores/scenes.js",
|
||||
"src/ui/scenePresentation.js",
|
||||
"src/i18n/index.js",
|
||||
"src/i18n/locale.js",
|
||||
"src/i18n/locales/de.json",
|
||||
"src/i18n/locales/es.json",
|
||||
"src/i18n/locales/fr.json",
|
||||
"src/i18n/locales/it.json",
|
||||
"src/i18n/locales/ja.json",
|
||||
"src/i18n/locales/pt.json",
|
||||
"src/i18n/locales/ru.json",
|
||||
"src/i18n/locales/uk.json",
|
||||
"src/i18n/locales/zh-CN.json",
|
||||
"src/i18n/locales/zh-Hant.json"
|
||||
],
|
||||
"external": ["vue", "pinia"]
|
||||
},
|
||||
@@ -708,6 +724,9 @@
|
||||
"src/ui/scenes.js",
|
||||
"src/ui/sceneControls.js",
|
||||
"src/ui/scenePresentation.js",
|
||||
"src/ui/stores/scenes.js",
|
||||
"src/ui/views/SceneOptions.vue",
|
||||
"src/ui/views/SceneShotList.vue",
|
||||
"src/ui/actionButton.js",
|
||||
"src/i18n/index.js",
|
||||
"src/i18n/locale.js",
|
||||
@@ -721,9 +740,10 @@
|
||||
"src/i18n/locales/uk.json",
|
||||
"src/i18n/locales/zh-CN.json",
|
||||
"src/i18n/locales/zh-Hant.json",
|
||||
"src/ui/unitLabels.js"
|
||||
"src/ui/unitLabels.js",
|
||||
"src/ui/vueRuntime.js"
|
||||
],
|
||||
"external": []
|
||||
"external": ["vue", "pinia"]
|
||||
},
|
||||
"ui-shell": {
|
||||
"exports": ["./ui/shell"],
|
||||
@@ -842,6 +862,9 @@
|
||||
"src/ui/rightPanelRail.js",
|
||||
"src/ui/sceneControls.js",
|
||||
"src/ui/scenePresentation.js",
|
||||
"src/ui/stores/scenes.js",
|
||||
"src/ui/views/SceneOptions.vue",
|
||||
"src/ui/views/SceneShotList.vue",
|
||||
"src/ui/actionButton.js",
|
||||
"src/ui/scenes.js",
|
||||
"src/ui/shareFollow.js",
|
||||
@@ -979,6 +1002,9 @@
|
||||
"src/ui/scenes.js",
|
||||
"src/ui/sceneControls.js",
|
||||
"src/ui/scenePresentation.js",
|
||||
"src/ui/stores/scenes.js",
|
||||
"src/ui/views/SceneOptions.vue",
|
||||
"src/ui/views/SceneShotList.vue",
|
||||
"src/ui/actionButton.js",
|
||||
"src/contextModePolicy.js",
|
||||
"src/director/clock.js",
|
||||
@@ -1025,9 +1051,10 @@
|
||||
"src/i18n/locales/zh-CN.json",
|
||||
"src/i18n/locales/zh-Hant.json",
|
||||
"src/ui/unitLabels.js",
|
||||
"src/visualStylePolicy.js"
|
||||
"src/visualStylePolicy.js",
|
||||
"src/ui/vueRuntime.js"
|
||||
],
|
||||
"external": ["cesium"]
|
||||
"external": ["cesium", "vue", "pinia"]
|
||||
},
|
||||
"live-observations": {
|
||||
"exports": ["./sources/live"],
|
||||
@@ -2519,6 +2546,9 @@
|
||||
"src/ui/rightPanelRail.js",
|
||||
"src/ui/sceneControls.js",
|
||||
"src/ui/scenePresentation.js",
|
||||
"src/ui/stores/scenes.js",
|
||||
"src/ui/views/SceneOptions.vue",
|
||||
"src/ui/views/SceneShotList.vue",
|
||||
"src/ui/actionButton.js",
|
||||
"src/ui/scenes.js",
|
||||
"src/ui/shareFollow.js",
|
||||
|
||||
Reference in new issue
Block a user