generated from Labyricorn/labyricorn-project-template
fix: correct observation embedding and orphan waiting state
This commit is contained in:
@@ -2445,9 +2445,37 @@ body.surface-observation > main {
|
|||||||
body.surface-observation .observation-overlay {
|
body.surface-observation .observation-overlay {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
|
/* The NGN pane is already the surface viewport. Do not retain the console
|
||||||
|
overlay's centered 16:9 box, transform, or its outside-pane letterbox. */
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
transform: none;
|
||||||
|
box-shadow: none;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* A secondary surface has no authority of its own. This is only shown after
|
||||||
|
its attach request times out; the inactive Observation controls stay hidden. */
|
||||||
|
body.surface-observation.surface-waiting::before {
|
||||||
|
content: "WAITING FOR EXHIBIT OWNER\A Observation surface is not connected.";
|
||||||
|
white-space: pre-line;
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 2;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
padding: 2rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #010308;
|
||||||
|
color: var(--tertiary-accent);
|
||||||
|
font-family: var(--mono-font);
|
||||||
|
font-size: clamp(.8rem, 1.4vw, 1.1rem);
|
||||||
|
letter-spacing: .12em;
|
||||||
|
line-height: 1.8;
|
||||||
|
text-align: center;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* Exiting/returning to the console is NGN's job (pane lifecycle), not the
|
/* Exiting/returning to the console is NGN's job (pane lifecycle), not the
|
||||||
surface's -- these controls would otherwise mutate the *console's* own
|
surface's -- these controls would otherwise mutate the *console's* own
|
||||||
view.observation overlay flag from a stray click (report SS7/SS8). */
|
view.observation overlay flag from a stray click (report SS7/SS8). */
|
||||||
|
|||||||
@@ -337,6 +337,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
channelName: XZBTSurfaceMode.channelName(xzbtInstanceId),
|
channelName: XZBTSurfaceMode.channelName(xzbtInstanceId),
|
||||||
timeoutMs: 1500,
|
timeoutMs: 1500,
|
||||||
onSnapshot: (values, stateRevision, registryRevision, presentation) => {
|
onSnapshot: (values, stateRevision, registryRevision, presentation) => {
|
||||||
|
document.body.classList.remove('surface-waiting');
|
||||||
Object.keys(values || {}).forEach(target => applyPresentationState(target, values[target]));
|
Object.keys(values || {}).forEach(target => applyPresentationState(target, values[target]));
|
||||||
if (presentation && typeof presentation.tickerText === 'string' && presentation.tickerText) {
|
if (presentation && typeof presentation.tickerText === 'string' && presentation.tickerText) {
|
||||||
const ticker = document.getElementById('observation-ticker-text');
|
const ticker = document.getElementById('observation-ticker-text');
|
||||||
@@ -368,6 +369,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
// No console instance open on this channel (or a stale/unknown
|
// No console instance open on this channel (or a stale/unknown
|
||||||
// ?xi=). Degrade to a clear waiting state rather than inventing
|
// ?xi=). Degrade to a clear waiting state rather than inventing
|
||||||
// local authority (report SS9, Museum's proven behavior).
|
// local authority (report SS9, Museum's proven behavior).
|
||||||
|
document.body.classList.add('surface-waiting');
|
||||||
console.warn('[SciFi-XZBT] Observation surface: no console instance found for xi=' + xzbtInstanceId);
|
console.warn('[SciFi-XZBT] Observation surface: no console instance found for xi=' + xzbtInstanceId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user