@pascal-app/viewer 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -0
- package/dist/components/viewer/drone-controller.d.ts.map +1 -1
- package/dist/components/viewer/drone-controller.js +1 -5
- package/dist/components/viewer/first-person/build-collider-world.d.ts +14 -0
- package/dist/components/viewer/first-person/build-collider-world.d.ts.map +1 -0
- package/dist/components/viewer/first-person/build-collider-world.js +426 -0
- package/dist/components/viewer/first-person/ground-holes.d.ts +22 -0
- package/dist/components/viewer/first-person/ground-holes.d.ts.map +1 -0
- package/dist/components/viewer/first-person/ground-holes.js +116 -0
- package/dist/components/viewer/first-person/mechanism-targets.d.ts +27 -0
- package/dist/components/viewer/first-person/mechanism-targets.d.ts.map +1 -0
- package/dist/components/viewer/first-person/mechanism-targets.js +79 -0
- package/dist/components/viewer/first-person/terrain-collider.d.ts +32 -0
- package/dist/components/viewer/first-person/terrain-collider.d.ts.map +1 -0
- package/dist/components/viewer/first-person/terrain-collider.js +175 -0
- package/dist/components/viewer/glb-walkthrough-controller.d.ts +1 -1
- package/dist/components/viewer/glb-walkthrough-controller.d.ts.map +1 -1
- package/dist/components/viewer/glb-walkthrough-controller.js +3 -4
- package/dist/components/viewer/live-walkthrough-controller.d.ts +17 -0
- package/dist/components/viewer/live-walkthrough-controller.d.ts.map +1 -0
- package/dist/components/viewer/live-walkthrough-controller.js +1449 -0
- package/dist/components/viewer/post-processing.d.ts.map +1 -1
- package/dist/components/viewer/post-processing.js +22 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/lib/daylight/room-map.d.ts +29 -4
- package/dist/lib/daylight/room-map.d.ts.map +1 -1
- package/dist/lib/daylight/room-map.js +219 -36
- package/dist/lib/daylight/room-scene.d.ts.map +1 -1
- package/dist/lib/daylight/room-scene.js +9 -3
- package/dist/lib/daylight/rooms.d.ts +15 -6
- package/dist/lib/daylight/rooms.d.ts.map +1 -1
- package/dist/lib/daylight/rooms.js +49 -9
- package/dist/lib/measurement-presentation.d.ts +2 -0
- package/dist/lib/measurement-presentation.d.ts.map +1 -1
- package/dist/lib/measurement-presentation.js +6 -0
- package/dist/lib/typing-target.d.ts +2 -0
- package/dist/lib/typing-target.d.ts.map +1 -0
- package/dist/lib/typing-target.js +7 -0
- package/dist/lib/viewer-config.d.ts +6 -0
- package/dist/lib/viewer-config.d.ts.map +1 -1
- package/dist/lib/viewer-config.js +2 -0
- package/dist/sfx/audio-settings.d.ts +81 -0
- package/dist/sfx/audio-settings.d.ts.map +1 -0
- package/dist/sfx/audio-settings.js +166 -0
- package/dist/sfx/index.d.ts +6 -0
- package/dist/sfx/index.d.ts.map +1 -0
- package/dist/sfx/index.js +5 -0
- package/dist/sfx/interaction-sounds.d.ts +7 -0
- package/dist/sfx/interaction-sounds.d.ts.map +1 -0
- package/dist/sfx/interaction-sounds.js +39 -0
- package/dist/sfx/player.d.ts +31 -0
- package/dist/sfx/player.d.ts.map +1 -0
- package/dist/sfx/player.js +255 -0
- package/dist/sfx/sounds.d.ts +60 -0
- package/dist/sfx/sounds.d.ts.map +1 -0
- package/dist/sfx/sounds.js +25 -0
- package/dist/sfx/use-viewer-ui-sounds.d.ts +8 -0
- package/dist/sfx/use-viewer-ui-sounds.d.ts.map +1 -0
- package/dist/sfx/use-viewer-ui-sounds.js +42 -0
- package/dist/store/use-first-person-hud.d.ts +13 -0
- package/dist/store/use-first-person-hud.d.ts.map +1 -0
- package/dist/store/use-first-person-hud.js +21 -0
- package/dist/systems/roof/roof-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-system.js +27 -13
- package/dist/ui/components/action-button.d.ts +14 -0
- package/dist/ui/components/action-button.d.ts.map +1 -0
- package/dist/ui/components/action-button.js +21 -0
- package/dist/ui/components/action-menu-placement.d.ts +7 -0
- package/dist/ui/components/action-menu-placement.d.ts.map +1 -0
- package/dist/ui/components/action-menu-placement.js +10 -0
- package/dist/ui/components/floorplan-compass-button.d.ts +10 -0
- package/dist/ui/components/floorplan-compass-button.d.ts.map +1 -0
- package/dist/ui/components/floorplan-compass-button.js +22 -0
- package/dist/ui/components/follow-pascal-toggle.d.ts +6 -0
- package/dist/ui/components/follow-pascal-toggle.d.ts.map +1 -0
- package/dist/ui/components/follow-pascal-toggle.js +21 -0
- package/dist/ui/components/localized-html.d.ts +9 -0
- package/dist/ui/components/localized-html.d.ts.map +1 -0
- package/dist/ui/components/localized-html.js +16 -0
- package/dist/ui/components/render-settings-menu.d.ts +9 -0
- package/dist/ui/components/render-settings-menu.d.ts.map +1 -0
- package/dist/ui/components/render-settings-menu.js +145 -0
- package/dist/ui/components/rooms/room-highlight.d.ts +10 -0
- package/dist/ui/components/rooms/room-highlight.d.ts.map +1 -0
- package/dist/ui/components/rooms/room-highlight.js +56 -0
- package/dist/ui/components/rooms/room-labels.d.ts +278 -0
- package/dist/ui/components/rooms/room-labels.d.ts.map +1 -0
- package/dist/ui/components/rooms/room-labels.js +1295 -0
- package/dist/ui/components/rooms/viewer-rooms.d.ts +14 -0
- package/dist/ui/components/rooms/viewer-rooms.d.ts.map +1 -0
- package/dist/ui/components/rooms/viewer-rooms.js +123 -0
- package/dist/ui/components/scene-loader.d.ts +18 -0
- package/dist/ui/components/scene-loader.d.ts.map +1 -0
- package/dist/ui/components/scene-loader.js +29 -0
- package/dist/ui/components/sky-control.d.ts +37 -0
- package/dist/ui/components/sky-control.d.ts.map +1 -0
- package/dist/ui/components/sky-control.js +382 -0
- package/dist/ui/components/use-viewer-camera-navigation-sync.d.ts +4 -0
- package/dist/ui/components/use-viewer-camera-navigation-sync.d.ts.map +1 -0
- package/dist/ui/components/use-viewer-camera-navigation-sync.js +117 -0
- package/dist/ui/components/viewer-controls-bar.d.ts +20 -0
- package/dist/ui/components/viewer-controls-bar.d.ts.map +1 -0
- package/dist/ui/components/viewer-controls-bar.js +130 -0
- package/dist/ui/components/viewer-hover-label.d.ts +14 -0
- package/dist/ui/components/viewer-hover-label.d.ts.map +1 -0
- package/dist/ui/components/viewer-hover-label.js +28 -0
- package/dist/ui/components/viewer-scene-header.d.ts +34 -0
- package/dist/ui/components/viewer-scene-header.d.ts.map +1 -0
- package/dist/ui/components/viewer-scene-header.js +92 -0
- package/dist/ui/components/viewer-selection-manager.d.ts +7 -0
- package/dist/ui/components/viewer-selection-manager.d.ts.map +1 -0
- package/dist/ui/components/viewer-selection-manager.js +116 -0
- package/dist/ui/components/viewer-stage-modes.d.ts +7 -0
- package/dist/ui/components/viewer-stage-modes.d.ts.map +1 -0
- package/dist/ui/components/viewer-stage-modes.js +42 -0
- package/dist/ui/components/viewer-stage-switcher.d.ts +10 -0
- package/dist/ui/components/viewer-stage-switcher.d.ts.map +1 -0
- package/dist/ui/components/viewer-stage-switcher.js +16 -0
- package/dist/ui/components/viewer-stage.d.ts +25 -0
- package/dist/ui/components/viewer-stage.d.ts.map +1 -0
- package/dist/ui/components/viewer-stage.js +107 -0
- package/dist/ui/components/walkthrough-hud.d.ts +29 -0
- package/dist/ui/components/walkthrough-hud.d.ts.map +1 -0
- package/dist/ui/components/walkthrough-hud.js +55 -0
- package/dist/ui/floorplan/floorplan-camera-sync.d.ts +22 -0
- package/dist/ui/floorplan/floorplan-camera-sync.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-camera-sync.js +157 -0
- package/dist/ui/floorplan/floorplan-dimension-renderer.d.ts +61 -0
- package/dist/ui/floorplan/floorplan-dimension-renderer.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-dimension-renderer.js +280 -0
- package/dist/ui/floorplan/floorplan-geometry-renderer.d.ts +54 -0
- package/dist/ui/floorplan/floorplan-geometry-renderer.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-geometry-renderer.js +317 -0
- package/dist/ui/floorplan/floorplan-label-angle.d.ts +24 -0
- package/dist/ui/floorplan/floorplan-label-angle.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-label-angle.js +60 -0
- package/dist/ui/floorplan/floorplan-navigation-sync.d.ts +18 -0
- package/dist/ui/floorplan/floorplan-navigation-sync.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-navigation-sync.js +41 -0
- package/dist/ui/floorplan/floorplan-preview-geometry.d.ts +26 -0
- package/dist/ui/floorplan/floorplan-preview-geometry.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-preview-geometry.js +173 -0
- package/dist/ui/floorplan/floorplan-preview-navigation.d.ts +22 -0
- package/dist/ui/floorplan/floorplan-preview-navigation.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-preview-navigation.js +41 -0
- package/dist/ui/floorplan/floorplan-preview-visibility.d.ts +8 -0
- package/dist/ui/floorplan/floorplan-preview-visibility.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-preview-visibility.js +21 -0
- package/dist/ui/floorplan/floorplan-preview.d.ts +19 -0
- package/dist/ui/floorplan/floorplan-preview.d.ts.map +1 -0
- package/dist/ui/floorplan/floorplan-preview.js +700 -0
- package/dist/ui/hooks/use-mobile.d.ts +2 -0
- package/dist/ui/hooks/use-mobile.d.ts.map +1 -0
- package/dist/ui/hooks/use-mobile.js +14 -0
- package/dist/ui/index.d.ts +49 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +48 -0
- package/dist/ui/lib/below-grade.d.ts +38 -0
- package/dist/ui/lib/below-grade.d.ts.map +1 -0
- package/dist/ui/lib/below-grade.js +102 -0
- package/dist/ui/lib/camera-pose.d.ts +19 -0
- package/dist/ui/lib/camera-pose.d.ts.map +1 -0
- package/dist/ui/lib/camera-pose.js +113 -0
- package/dist/ui/lib/cn.d.ts +3 -0
- package/dist/ui/lib/cn.d.ts.map +1 -0
- package/dist/ui/lib/cn.js +5 -0
- package/dist/ui/lib/level-name.d.ts +10 -0
- package/dist/ui/lib/level-name.d.ts.map +1 -0
- package/dist/ui/lib/level-name.js +33 -0
- package/dist/ui/lib/node-display-label.d.ts +8 -0
- package/dist/ui/lib/node-display-label.d.ts.map +1 -0
- package/dist/ui/lib/node-display-label.js +36 -0
- package/dist/ui/lib/room-area.d.ts +3 -0
- package/dist/ui/lib/room-area.d.ts.map +1 -0
- package/dist/ui/lib/room-area.js +8 -0
- package/dist/ui/lib/room-assembly-overlay.d.ts +46 -0
- package/dist/ui/lib/room-assembly-overlay.d.ts.map +1 -0
- package/dist/ui/lib/room-assembly-overlay.js +222 -0
- package/dist/ui/lib/room-name-messages.d.ts +28 -0
- package/dist/ui/lib/room-name-messages.d.ts.map +1 -0
- package/dist/ui/lib/room-name-messages.js +112 -0
- package/dist/ui/lib/room-selection.d.ts +58 -0
- package/dist/ui/lib/room-selection.d.ts.map +1 -0
- package/dist/ui/lib/room-selection.js +297 -0
- package/dist/ui/lib/scene-theme-name.d.ts +4 -0
- package/dist/ui/lib/scene-theme-name.d.ts.map +1 -0
- package/dist/ui/lib/scene-theme-name.js +22 -0
- package/dist/ui/lib/selection-modifiers.d.ts +20 -0
- package/dist/ui/lib/selection-modifiers.d.ts.map +1 -0
- package/dist/ui/lib/selection-modifiers.js +15 -0
- package/dist/ui/lib/viewer-selection.d.ts +132 -0
- package/dist/ui/lib/viewer-selection.d.ts.map +1 -0
- package/dist/ui/lib/viewer-selection.js +462 -0
- package/dist/ui/lib/zone-content.d.ts +6 -0
- package/dist/ui/lib/zone-content.d.ts.map +1 -0
- package/dist/ui/lib/zone-content.js +96 -0
- package/dist/ui/primitives/button.d.ts +11 -0
- package/dist/ui/primitives/button.d.ts.map +1 -0
- package/dist/ui/primitives/button.js +35 -0
- package/dist/ui/primitives/dropdown-menu.d.ts +26 -0
- package/dist/ui/primitives/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/primitives/dropdown-menu.js +53 -0
- package/dist/ui/primitives/popover.d.ts +8 -0
- package/dist/ui/primitives/popover.d.ts.map +1 -0
- package/dist/ui/primitives/popover.js +17 -0
- package/dist/ui/primitives/switch.d.ts +5 -0
- package/dist/ui/primitives/switch.d.ts.map +1 -0
- package/dist/ui/primitives/switch.js +8 -0
- package/dist/ui/primitives/tooltip.d.ts +8 -0
- package/dist/ui/primitives/tooltip.d.ts.map +1 -0
- package/dist/ui/primitives/tooltip.js +17 -0
- package/dist/ui/store/camera-pose-store.d.ts +17 -0
- package/dist/ui/store/camera-pose-store.d.ts.map +1 -0
- package/dist/ui/store/camera-pose-store.js +15 -0
- package/dist/ui/store/navigation-sync-pose-store.d.ts +26 -0
- package/dist/ui/store/navigation-sync-pose-store.d.ts.map +1 -0
- package/dist/ui/store/navigation-sync-pose-store.js +16 -0
- package/dist/ui/store/use-follow-pascal.d.ts +30 -0
- package/dist/ui/store/use-follow-pascal.d.ts.map +1 -0
- package/dist/ui/store/use-follow-pascal.js +28 -0
- package/dist/ui/theme.css +339 -0
- package/package.json +34 -7
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { type Polygon, type ZoneNode } from '@pascal-app/core';
|
|
2
|
+
import { type MouseEvent as ReactMouseEvent, type ReactNode, type PointerEvent as ReactPointerEvent } from 'react';
|
|
3
|
+
import { type Camera, type Object3D, Vector3 } from 'three';
|
|
4
|
+
import type { RoomSelectionRecord } from '../../lib/room-selection';
|
|
5
|
+
/** What decides whether a level's room pills show: what is selected, and what is focused. */
|
|
6
|
+
export type RoomLabelSelection = {
|
|
7
|
+
selectedTypes: readonly (string | undefined)[];
|
|
8
|
+
zoneId: string | null;
|
|
9
|
+
focusedUnitId: string | null;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Room pills are the resting view of a level: nothing picked but the site,
|
|
13
|
+
* building or level itself, no room, and no unit being looked at. Anything
|
|
14
|
+
* else selected takes them away.
|
|
15
|
+
*/
|
|
16
|
+
export declare function roomLabelsVisible(state: RoomLabelSelection): boolean;
|
|
17
|
+
export type LabelRect = {
|
|
18
|
+
left: number;
|
|
19
|
+
top: number;
|
|
20
|
+
right: number;
|
|
21
|
+
bottom: number;
|
|
22
|
+
};
|
|
23
|
+
type PaneSize = {
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
};
|
|
27
|
+
/** A pill's screen rect: centred on where its anchor lands, at its size. */
|
|
28
|
+
export declare function pillRect(x: number, y: number, [width, height]: readonly [number, number]): {
|
|
29
|
+
left: number;
|
|
30
|
+
top: number;
|
|
31
|
+
right: number;
|
|
32
|
+
bottom: number;
|
|
33
|
+
};
|
|
34
|
+
/** A pill's measured size: its full width, its height, and its width with the name alone. */
|
|
35
|
+
export type PillSize = readonly [fullWidth: number, height: number, nameWidth: number];
|
|
36
|
+
/** How much of a pill shows: dot, name and area; dot and name; its dot; nothing. */
|
|
37
|
+
export type PillTier = 'full' | 'name' | 'dot' | 'hidden';
|
|
38
|
+
/** Where a pill goes: how much of it shows, moved `dy` px off its anchor. */
|
|
39
|
+
export type PillPlacement = {
|
|
40
|
+
tier: PillTier;
|
|
41
|
+
dy: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A pill to place: where its room's anchor lands on screen, its size, its
|
|
45
|
+
* room's area and the part of the room's outline in front of the camera, on
|
|
46
|
+
* screen.
|
|
47
|
+
*/
|
|
48
|
+
export type PillCandidate = {
|
|
49
|
+
id: string;
|
|
50
|
+
x: number;
|
|
51
|
+
y: number;
|
|
52
|
+
size: PillSize;
|
|
53
|
+
area: number;
|
|
54
|
+
outline: Polygon;
|
|
55
|
+
};
|
|
56
|
+
/** The clear space around a placed pill, and around the detail chip. */
|
|
57
|
+
export declare const PILL_GAP = 4;
|
|
58
|
+
/** The rect a placed pill takes on screen, or null when it is hidden. */
|
|
59
|
+
export declare function placedRect(pill: PillCandidate, { tier, dy }: PillPlacement): LabelRect | null;
|
|
60
|
+
/**
|
|
61
|
+
* Where every pill goes, so that none overlap and each stays inside its room
|
|
62
|
+
* and the pane. Larger rooms are placed first (ties by id, so the order holds
|
|
63
|
+
* while the camera moves). Each pill takes the first slot that fits: its full
|
|
64
|
+
* pill, then its name alone, then its dot, each at its anchor or nudged up or
|
|
65
|
+
* down; with no slot it is hidden. A room's size on screen decides how much of
|
|
66
|
+
* its label shows, so the detail follows the zoom.
|
|
67
|
+
*/
|
|
68
|
+
export declare function placePills(candidates: readonly PillCandidate[], bounds: PaneSize, previous?: ReadonlyMap<string, PillPlacement>): Map<string, PillPlacement>;
|
|
69
|
+
/** The placed pills whose rects come within the gap of `chip`. */
|
|
70
|
+
export declare function suppressedBy(chip: LabelRect, rects: ReadonlyMap<string, LabelRect>): ReadonlySet<string>;
|
|
71
|
+
export type RoomLabelEntry = {
|
|
72
|
+
zoneId: string;
|
|
73
|
+
polygon: [number, number][];
|
|
74
|
+
holes: [number, number][][];
|
|
75
|
+
area: number;
|
|
76
|
+
};
|
|
77
|
+
type LabelEntry = RoomLabelEntry;
|
|
78
|
+
/** Where the pointer meets a room's plane: the point in it, and how far along the pointer's ray. */
|
|
79
|
+
export type RoomHit = readonly [x: number, y: number, distance: number];
|
|
80
|
+
/**
|
|
81
|
+
* The room under the pointer: of the rooms whose outline, holes excluded,
|
|
82
|
+
* holds the point where the pointer meets their plane, the nearest along the
|
|
83
|
+
* pointer's ray (the floor it reaches first), then the smallest (a zone drawn
|
|
84
|
+
* inside a room, on the same floor). `pointOn` gives that point for each room
|
|
85
|
+
* (in 3D, where the ray meets the room's floor), or null if it never meets it.
|
|
86
|
+
*/
|
|
87
|
+
export declare function roomAt(entries: readonly RoomLabelEntry[], pointOn: (entry: RoomLabelEntry) => RoomHit | null): string | null;
|
|
88
|
+
/** How long the pointer rests on a room before its detail opens. */
|
|
89
|
+
export declare const REVEAL_DWELL_MS = 80;
|
|
90
|
+
/** How long the detail stays once the pointer has left its room. */
|
|
91
|
+
export declare const REVEAL_GRACE_MS = 120;
|
|
92
|
+
/**
|
|
93
|
+
* When a layer re-places its pills: once the view has held still, and again
|
|
94
|
+
* whenever its pills change while it rests. Still means within an epsilon of
|
|
95
|
+
* the view last seen moving — camera damping keeps nudging the camera by
|
|
96
|
+
* fractions of a millimetre for a second or more after it visibly stops, and
|
|
97
|
+
* waiting for it to stop exactly left pills misplaced for that long.
|
|
98
|
+
*/
|
|
99
|
+
export declare class DeclutterClock {
|
|
100
|
+
private reference;
|
|
101
|
+
private movedAt;
|
|
102
|
+
private settled;
|
|
103
|
+
private dirty;
|
|
104
|
+
/** Whether the view rests and its pills were placed for it. */
|
|
105
|
+
get atRest(): boolean;
|
|
106
|
+
/** The pills changed (mounted, unmounted, resized): place them again. */
|
|
107
|
+
invalidate(): void;
|
|
108
|
+
/** Whether to place pills for this view (any flat list of numbers) at `now` seconds. */
|
|
109
|
+
shouldRead(view: ArrayLike<number>, now: number): boolean;
|
|
110
|
+
}
|
|
111
|
+
/** The pills a layer has mounted, by zone id; the layer hears each one come and go. */
|
|
112
|
+
export declare class PillElements extends Map<string, HTMLElement> {
|
|
113
|
+
onMount: ((id: string, element: HTMLElement) => void) | null;
|
|
114
|
+
onUnmount: ((element: HTMLElement) => void) | null;
|
|
115
|
+
onMeasure: ((id: string, element: HTMLElement) => void) | null;
|
|
116
|
+
measure(id: string): void;
|
|
117
|
+
set(id: string, element: HTMLElement): this;
|
|
118
|
+
delete(id: string): boolean;
|
|
119
|
+
}
|
|
120
|
+
/** Where each room's pill floats, level-local; moving one has the pills placed again. */
|
|
121
|
+
export declare class RoomAnchors extends Map<string, Vector3> {
|
|
122
|
+
onMove: (() => void) | null;
|
|
123
|
+
set(id: string, position: Vector3): this;
|
|
124
|
+
}
|
|
125
|
+
/** Read a pill's full border-box and its width without the area, whatever it shows now. */
|
|
126
|
+
export declare function measureFullPill(element: HTMLElement, read?: (element: Element) => Pick<CSSStyleDeclaration, 'width' | 'height' | 'columnGap'>): PillSize;
|
|
127
|
+
type Timer = ReturnType<typeof setTimeout>;
|
|
128
|
+
/**
|
|
129
|
+
* Applies placements to the mounted pills as direct style writes: the nudge
|
|
130
|
+
* as a `translate`, the tier as `data-room-label-tier`, both eased by the
|
|
131
|
+
* pill's transition. A pill placed hidden fades out without taking the
|
|
132
|
+
* pointer, then leaves the DOM (`gone`); one given room again mounts and fades
|
|
133
|
+
* back in. A mounted pill that a pass leaves out (not measured yet, or its
|
|
134
|
+
* anchor off screen) waits hidden: no pill shows that placement has not
|
|
135
|
+
* cleared.
|
|
136
|
+
*/
|
|
137
|
+
export declare class PillPlacer {
|
|
138
|
+
private readonly elements;
|
|
139
|
+
private readonly onGone;
|
|
140
|
+
private readonly schedule;
|
|
141
|
+
private readonly cancel;
|
|
142
|
+
gone: ReadonlySet<string>;
|
|
143
|
+
/** The last pass's placements: a remounting pill takes its own at once. */
|
|
144
|
+
placements: ReadonlyMap<string, PillPlacement>;
|
|
145
|
+
private readonly fading;
|
|
146
|
+
private suppressed;
|
|
147
|
+
private open;
|
|
148
|
+
private shown;
|
|
149
|
+
constructor(elements: ReadonlyMap<string, HTMLElement>, onGone: (gone: ReadonlySet<string>) => void, schedule?: (run: () => void, ms: number) => Timer, cancel?: (timer: Timer) => void);
|
|
150
|
+
apply(placements: ReadonlyMap<string, PillPlacement>, fadeMs?: number): void;
|
|
151
|
+
/** A pill mounting takes its last placement at once, or waits hidden for one. */
|
|
152
|
+
mount(id: string, element: HTMLElement): void;
|
|
153
|
+
/**
|
|
154
|
+
* Fade the pills under the detail chip out of its way, and every other back.
|
|
155
|
+
* The open room's own pill fades too but still takes the pointer: the chip
|
|
156
|
+
* over it is read-only, so the pill stays the control.
|
|
157
|
+
*/
|
|
158
|
+
suppress(ids: ReadonlySet<string>, open: string | null): void;
|
|
159
|
+
/** Remount hidden pills invisibly so changed text or fonts can be measured. */
|
|
160
|
+
remeasure(): void;
|
|
161
|
+
/** Fade every mounted pill out (the layer is leaving), or the placed ones back in. */
|
|
162
|
+
showAll(shown: boolean): void;
|
|
163
|
+
dispose(): void;
|
|
164
|
+
private show;
|
|
165
|
+
private mark;
|
|
166
|
+
private setGone;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Which room's detail chip is open. A pill under the pointer, or a pill with
|
|
170
|
+
* keyboard focus, opens at once; when both are set, whichever moved last
|
|
171
|
+
* wins. Otherwise the room under the pointer opens once the pointer has
|
|
172
|
+
* rested on it for a moment, and stays a moment after the pointer leaves, so
|
|
173
|
+
* crossing a wall hands over from one room to the next without a gap and
|
|
174
|
+
* passing over a room opens nothing. Escape closes it until the pointer or
|
|
175
|
+
* focus moves on to another room.
|
|
176
|
+
*/
|
|
177
|
+
export declare class LabelReveal {
|
|
178
|
+
private readonly onChange;
|
|
179
|
+
private readonly schedule;
|
|
180
|
+
private readonly cancel;
|
|
181
|
+
active: string | null;
|
|
182
|
+
private activeFocused;
|
|
183
|
+
private hovered;
|
|
184
|
+
private focused;
|
|
185
|
+
private picked;
|
|
186
|
+
private keyboardLast;
|
|
187
|
+
private dismissed;
|
|
188
|
+
private pending;
|
|
189
|
+
constructor(onChange: (id: string | null, focused: boolean) => void, schedule?: (run: () => void, ms: number) => Timer, cancel?: (timer: Timer) => void);
|
|
190
|
+
/** The pill under the pointer. */
|
|
191
|
+
hover(id: string | null): void;
|
|
192
|
+
/** The pill with keyboard focus. */
|
|
193
|
+
focus(id: string | null): void;
|
|
194
|
+
/** The room under the pointer. */
|
|
195
|
+
pick(id: string | null): void;
|
|
196
|
+
/** Close what is open, and keep it closed while the pointer and focus stay on it. */
|
|
197
|
+
dismiss(): void;
|
|
198
|
+
/**
|
|
199
|
+
* Close at once and forget the pointer: the view moved, or the layer hid.
|
|
200
|
+
* Focus is kept, so a focused pill opens again once the view rests.
|
|
201
|
+
*/
|
|
202
|
+
clear(): void;
|
|
203
|
+
private update;
|
|
204
|
+
private stop;
|
|
205
|
+
private set;
|
|
206
|
+
}
|
|
207
|
+
/** True while `shown`, and through the fade once it turns false; then false, so the pills unmount. */
|
|
208
|
+
export declare function useFadePresence(shown: boolean, onGone?: () => void): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* The pills of one level: every detected room, and every drawn zone that
|
|
211
|
+
* bounds none. A smaller one inside a larger one (a zone drawn in a room) is
|
|
212
|
+
* a hole in the larger: the label there, and the room under the pointer
|
|
213
|
+
* there, are the smaller one's.
|
|
214
|
+
*/
|
|
215
|
+
export declare function roomLabelEntries(rooms: readonly RoomSelectionRecord[], zones: readonly ZoneNode[]): RoomLabelEntry[];
|
|
216
|
+
/**
|
|
217
|
+
* The pill itself, a button: a colour dot, the name (cut at 160 px) and the
|
|
218
|
+
* area in the active unit, as much of it as its placement shows.
|
|
219
|
+
*/
|
|
220
|
+
export declare function RoomPillChip({ zoneId, view, color, name, areaM2, elements, onClick, onHover, onLeave, }: {
|
|
221
|
+
zoneId: string;
|
|
222
|
+
view: '2d' | '3d';
|
|
223
|
+
color: string;
|
|
224
|
+
name: string;
|
|
225
|
+
areaM2: number;
|
|
226
|
+
elements: Map<string, HTMLElement>;
|
|
227
|
+
onClick: (event: ReactMouseEvent) => void;
|
|
228
|
+
onHover: (event: ReactPointerEvent) => void;
|
|
229
|
+
onLeave: () => void;
|
|
230
|
+
}): import("react").JSX.Element;
|
|
231
|
+
/**
|
|
232
|
+
* The detail chip: the open room's whole label, wrapping to fit its layer.
|
|
233
|
+
* It only reads: the pill under it is the control, and the pointer goes
|
|
234
|
+
* through it to the rooms it covers.
|
|
235
|
+
*/
|
|
236
|
+
export declare function RoomPillDetail({ zoneId, view, color, name, areaM2, }: {
|
|
237
|
+
zoneId: string;
|
|
238
|
+
view: '2d' | '3d';
|
|
239
|
+
color: string;
|
|
240
|
+
name: string;
|
|
241
|
+
areaM2: number;
|
|
242
|
+
}): import("react").JSX.Element;
|
|
243
|
+
/** Where the pills of a level land on screen, each with the part of its room in front of the camera. */
|
|
244
|
+
export declare function candidates3D(entries: readonly LabelEntry[], anchors: ReadonlyMap<string, Vector3>, sizes: ReadonlyMap<string, PillSize>, camera: Camera, level: Object3D, size: PaneSize): PillCandidate[];
|
|
245
|
+
/**
|
|
246
|
+
* The pills of one level in 3D, riding the level's object (so they follow
|
|
247
|
+
* level stacking) and placed from where their anchors land on screen. They
|
|
248
|
+
* live in their own stacking layer clipped to the canvas, so every piece of
|
|
249
|
+
* UI over the canvas stays above them; the open room's chip, the label being
|
|
250
|
+
* read, has a layer of its own above the canvas's flags.
|
|
251
|
+
*/
|
|
252
|
+
export declare function RoomPillsLayer3D({ entries, levelObject, renderLabel, renderDetail, shown, }: {
|
|
253
|
+
entries: readonly LabelEntry[];
|
|
254
|
+
levelObject: () => Object3D | undefined;
|
|
255
|
+
renderLabel: (entry: LabelEntry, anchors: Map<string, Vector3>, elements: Map<string, HTMLElement>) => ReactNode;
|
|
256
|
+
renderDetail: (entry: LabelEntry) => ReactNode;
|
|
257
|
+
shown?: boolean;
|
|
258
|
+
}): import("react").JSX.Element | null;
|
|
259
|
+
/** Where a room's pill floats: over its interior, at mid-storey above its floor. */
|
|
260
|
+
export declare function RoomLabelAnchor3D({ entry, floorY, anchors, children, }: {
|
|
261
|
+
entry: LabelEntry;
|
|
262
|
+
floorY: number;
|
|
263
|
+
anchors: Map<string, Vector3>;
|
|
264
|
+
children: ReactNode;
|
|
265
|
+
}): import("react").JSX.Element | null;
|
|
266
|
+
/**
|
|
267
|
+
* The same pills over a 2D plan, mounted inside the plan's SVG: screen-positioned
|
|
268
|
+
* from the plan's transform, re-placed as in 3D once the plan rests, and clipped
|
|
269
|
+
* to the plan's pane in the plan's own stacking layer, under the UI over it.
|
|
270
|
+
*/
|
|
271
|
+
export declare function RoomPillsLayer2D({ entries, renderLabel, renderDetail, shown, }: {
|
|
272
|
+
entries: readonly LabelEntry[];
|
|
273
|
+
renderLabel: (entry: LabelEntry, elements: Map<string, HTMLElement>) => ReactNode;
|
|
274
|
+
renderDetail: (entry: LabelEntry) => ReactNode;
|
|
275
|
+
shown: boolean;
|
|
276
|
+
}): import("react").JSX.Element;
|
|
277
|
+
export {};
|
|
278
|
+
//# sourceMappingURL=room-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-labels.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/rooms/room-labels.tsx"],"names":[],"mappings":"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"}
|