@almadar/shell-web 1.0.0 → 1.2.0
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/LICENSE +72 -0
- package/dist/AvlGlyph-KZMJDBEB.js +5 -0
- package/dist/AvlStateMachine-KVZMFHFU.js +8 -0
- package/dist/AvlTransitionDetail-7DVGV27I.js +10 -0
- package/dist/AvlTransitionExplainer-RMJ5LQLK.js +11 -0
- package/dist/BehaviorView-EYRPME67.js +10 -0
- package/dist/{FileTree-BCFnBEuQ.d.ts → FileTree-B3GDAjaQ.d.ts} +131 -4
- package/dist/FlowCanvas-J54627TC.js +23 -0
- package/dist/{FlowCanvas-3JRMNJLV.css → FlowCanvas-R4LL3KRI.css} +190 -192
- package/dist/{GameAudioProvider-ceM_n0ey.d.ts → GameAudioProvider-BgWOOYT3.d.ts} +15 -20
- package/dist/{KernelEngineContext-CcxGYtlr.d.ts → KernelEngineContext-BPx-q0iw.d.ts} +15 -2
- package/dist/{LayersPanel-M2LHWUFF.js → LayersPanel-PSXI4EHG.js} +4 -4
- package/dist/ModuleCard-TNRLL45H.js +6 -0
- package/dist/{OrbInspector-MHLJ6OEE.css → OrbInspector-2EGVZLOJ.css} +190 -192
- package/dist/OrbInspector-UBEQWWZ2.js +23 -0
- package/dist/{parseLessonSegments-GpCeMrb2.d.ts → SegmentRenderer-BAQ6Jwf6.d.ts} +4 -20
- package/dist/{Select-B-iDdnvE.d.ts → Select-BJ8Fgc8A.d.ts} +1 -1
- package/dist/{UISlotContext-Dl_ewwCI.d.ts → UISlotContext-7r0SQdTL.d.ts} +1 -1
- package/dist/UISlotRenderer-5OURMAP2.js +23 -0
- package/dist/{UISlotRenderer-KVFO6J7R.css → UISlotRenderer-SJBSQGBQ.css} +190 -192
- package/dist/auth/react/index.js +7 -6
- package/dist/avl/index.css +190 -192
- package/dist/avl/index.d.ts +19 -7
- package/dist/avl/index.js +170 -39
- package/dist/{chunk-AE7VCQB6.js → chunk-2LNXLMK3.js} +2 -2
- package/dist/{chunk-REXYVBUO.js → chunk-3DA36FOA.js} +1 -1
- package/dist/{chunk-UXLE3IPR.js → chunk-3UQNFRYV.js} +207 -9
- package/dist/{chunk-AGXD77SL.js → chunk-3YUMGEEW.js} +1 -1
- package/dist/{chunk-K4MOPSEL.js → chunk-6RXP5ZXE.js} +7 -8
- package/dist/{chunk-E6KA4J6N.js → chunk-7UCL26QB.js} +4 -5
- package/dist/{chunk-57DC34LY.js → chunk-AL2XXMYR.js} +2 -2
- package/dist/{chunk-YHMRX6YA.js → chunk-ANTJUQRD.js} +53 -13
- package/dist/{chunk-P4ZFUQFF.js → chunk-AZ74UPG6.js} +4 -1
- package/dist/{chunk-ROICKAU7.js → chunk-B23EZH2P.js} +3 -3
- package/dist/{chunk-CPLN6NBQ.js → chunk-CCO2ZH7F.js} +3 -4
- package/dist/{chunk-4YXBKHHM.js → chunk-D5FJU4XC.js} +87 -16
- package/dist/{chunk-HH5KSMH5.js → chunk-DPDKBY6Z.js} +1 -1
- package/dist/{chunk-A2LR6VQQ.js → chunk-ECC3WQIB.js} +9 -93
- package/dist/{chunk-VO2TTLS5.js → chunk-GHAF7QUD.js} +1 -1
- package/dist/{chunk-TXAUOLWZ.js → chunk-HA2BYO5E.js} +1 -1
- package/dist/{chunk-ILQXJ2AR.js → chunk-JEN4EIUF.js} +1 -1
- package/dist/{chunk-UTDC2NEA.js → chunk-KTYOYEVA.js} +1 -1
- package/dist/{chunk-X3DMMX27.js → chunk-LINJRTNB.js} +2 -2
- package/dist/{chunk-TUPZWTRE.js → chunk-LKL5RULQ.js} +467 -141
- package/dist/{chunk-UU57VNS2.js → chunk-PWXZN5G5.js} +2 -2
- package/dist/{chunk-SP5CDJ6K.js → chunk-RDPELAFQ.js} +4 -4
- package/dist/{chunk-PRXQGGCO.js → chunk-S3LS3B7N.js} +1 -1
- package/dist/{chunk-LHP2TK7O.js → chunk-TAEOMNDK.js} +3611 -4737
- package/dist/{chunk-3S54FWRC.js → chunk-UFQLHCFJ.js} +1 -1
- package/dist/{chunk-AB3X7QTE.js → chunk-V5SVGUYN.js} +2 -3
- package/dist/{chunk-3VZ36ZKO.js → chunk-ZDRDJKYB.js} +5 -2
- package/dist/components/index.css +190 -192
- package/dist/components/index.d.ts +568 -190
- package/dist/components/index.js +27 -30
- package/dist/context/index.d.ts +2 -2
- package/dist/context/index.js +5 -5
- package/dist/core.d.ts +21 -4
- package/dist/core.js +1 -1
- package/dist/{fx-CmQjnHmT.d.ts → fx-Bx5RqplG.d.ts} +10 -7
- package/dist/hooks/index.d.ts +8 -8
- package/dist/hooks/index.js +6 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -2
- package/dist/{katexPlugin-FA7NX4PE.css → katexPlugin-BUHVNRBJ.css} +1 -1
- package/dist/{kernel-client-TZKGHJRY.js → kernel-client-NMZ56JVU.js} +60 -6
- package/dist/{kernel-wire-wNdAPfhJ.d.ts → kernel-wire-CRsHtLsf.d.ts} +8 -1
- package/dist/lib/index.d.ts +3 -4
- package/dist/lib/index.js +435 -4
- package/dist/providers/index.css +190 -192
- package/dist/providers/index.d.ts +6 -8
- package/dist/providers/index.js +21 -25
- package/dist/renderer/index.d.ts +3 -79
- package/dist/renderer/index.js +2 -2
- package/dist/runtime/index.css +190 -192
- package/dist/runtime/index.d.ts +9 -2
- package/dist/runtime/index.js +20 -23
- package/dist/ssr/index.cjs +105 -28
- package/dist/ssr/index.js +106 -29
- package/dist/test-support.js +2 -2
- package/dist/{useUISlots-CiobNFGb.d.ts → useUISlots-BLcGd__D.d.ts} +2 -0
- package/dist/{paintDispatch-CuJLsr9Y.d.ts → verificationRegistry-BLuQU1JV.d.ts} +127 -15
- package/package.json +10 -38
- package/src/core/locales/ar.json +10 -1
- package/src/core/locales/en.json +10 -1
- package/src/core/locales/sl.json +10 -1
- package/tailwind-preset.cjs +8 -4
- package/dist/AvlGlyph-EPJKFEO3.js +0 -6
- package/dist/AvlStateMachine-RKZIKNGC.js +0 -9
- package/dist/AvlTransitionDetail-63SD6GZF.js +0 -11
- package/dist/AvlTransitionExplainer-ZBTLOM3T.js +0 -12
- package/dist/BehaviorView-YS5G4GNB.js +0 -11
- package/dist/Canvas3DHost-BkZQB5l2.d.ts +0 -552
- package/dist/FlowCanvas-AUMTWMNG.js +0 -26
- package/dist/ModuleCard-QHDGK5XK.js +0 -7
- package/dist/OrbInspector-QCPEPUPH.js +0 -26
- package/dist/UISlotRenderer-C7WWOK43.js +0 -26
- package/dist/avl-3d-context-BycmO6tG.d.ts +0 -201
- package/dist/avl-schema-parser-CtJxJ9KU.d.ts +0 -132
- package/dist/avl-zoom-state-CKMVuBFg.d.ts +0 -17
- package/dist/chunk-4T3P43NS.js +0 -1133
- package/dist/chunk-DZBQA2OW.js +0 -176
- package/dist/chunk-EOWMARUB.js +0 -16
- package/dist/chunk-GFXCPUMX.js +0 -1334
- package/dist/chunk-ILZ7ORX7.js +0 -432
- package/dist/three/index.css +0 -503
- package/dist/three/index.d.ts +0 -1185
- package/dist/three/index.js +0 -3908
- package/dist/verificationRegistry-CVrcxG1s.d.ts +0 -122
- /package/dist/{katexPlugin-NCDKOOQY.js → katexPlugin-WGJ4JFZU.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { U as UiError } from './fx-
|
|
2
|
+
import { AudioPlay } from '@almadar/core';
|
|
3
|
+
import { U as UiError } from './fx-Bx5RqplG.js';
|
|
4
4
|
import './EventBusProvider-BFFHfN4O.js';
|
|
5
5
|
|
|
6
6
|
/** Core owns the sound-manifest shape (`@almadar/core` `types/asset.ts`) so the
|
|
@@ -8,32 +8,30 @@ import './EventBusProvider-BFFHfN4O.js';
|
|
|
8
8
|
* declaration; re-exported here for the hook's existing consumers. */
|
|
9
9
|
|
|
10
10
|
interface GameAudioControls {
|
|
11
|
-
/** Play a sound
|
|
12
|
-
|
|
11
|
+
/** Play a sound std-audio-cue already resolved */
|
|
12
|
+
playPlan: (plan: AudioPlay) => void;
|
|
13
|
+
/** Crossfade to a resolved track; an empty key fades out over `fadeMs` */
|
|
14
|
+
playMusicPlan: (plan: AudioPlay) => void;
|
|
13
15
|
/** Stop all instances of a sound effect */
|
|
14
16
|
stop: (key: string) => void;
|
|
15
17
|
/** Stop all sounds including music */
|
|
16
18
|
stopAll: () => void;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
/** Fade out and stop the current music */
|
|
20
|
-
stopMusic: (fadeDurationMs?: number) => void;
|
|
19
|
+
/** Fade out over `fadeDurationMs` and stop the current music */
|
|
20
|
+
stopMusic: (fadeDurationMs: number) => void;
|
|
21
21
|
muted: boolean;
|
|
22
22
|
setMuted: (muted: boolean) => void;
|
|
23
23
|
masterVolume: number;
|
|
24
24
|
setMasterVolume: (volume: number) => void;
|
|
25
25
|
}
|
|
26
26
|
interface UseGameAudioOptions {
|
|
27
|
-
/** Sound definitions keyed by logical name */
|
|
28
|
-
manifest: AudioManifest;
|
|
29
|
-
/** Prefix prepended to all `path` values (default '') */
|
|
30
|
-
baseUrl?: string;
|
|
31
27
|
/** Start muted (default false) */
|
|
32
28
|
initialMuted?: boolean;
|
|
33
29
|
/** Master volume 0–1 (default 1) */
|
|
34
30
|
initialVolume?: number;
|
|
31
|
+
/** Resolved sounds to start on the first user gesture */
|
|
32
|
+
autostart?: AudioPlay[];
|
|
35
33
|
}
|
|
36
|
-
declare function useGameAudio({
|
|
34
|
+
declare function useGameAudio({ initialMuted, initialVolume, autostart, }: UseGameAudioOptions): GameAudioControls;
|
|
37
35
|
declare namespace useGameAudio {
|
|
38
36
|
var displayName: string;
|
|
39
37
|
}
|
|
@@ -43,7 +41,8 @@ declare namespace useGameAudio {
|
|
|
43
41
|
*
|
|
44
42
|
* Context provider that owns the game audio. While it is mounted, the kernel's
|
|
45
43
|
* `audio/play-sound`, `audio/stop-sound`, `audio/change-music` and `audio/stop-music`
|
|
46
|
-
* asks drive it
|
|
44
|
+
* asks drive it: each carries what std-audio-cue resolved (the sound or track to play, or the
|
|
45
|
+
* music fade-out length), so the provider plays it as given.
|
|
47
46
|
*
|
|
48
47
|
* The provider also exposes `muted`/`setMuted` and `masterVolume`/
|
|
49
48
|
* `setMasterVolume` via the `GameAudioContext` for toggle buttons.
|
|
@@ -54,7 +53,7 @@ declare namespace useGameAudio {
|
|
|
54
53
|
* @packageDocumentation
|
|
55
54
|
*/
|
|
56
55
|
|
|
57
|
-
type GameAudioContextValue = Pick<GameAudioControls, 'muted' | 'setMuted' | 'masterVolume' | 'setMasterVolume' | '
|
|
56
|
+
type GameAudioContextValue = Pick<GameAudioControls, 'muted' | 'setMuted' | 'masterVolume' | 'setMasterVolume' | 'playPlan' | 'playMusicPlan' | 'stopMusic'>;
|
|
58
57
|
declare const GameAudioContext: React__default.Context<GameAudioContextValue | null>;
|
|
59
58
|
/**
|
|
60
59
|
* Access the game audio context.
|
|
@@ -68,10 +67,6 @@ declare function useGameAudioContext(): GameAudioContextValue;
|
|
|
68
67
|
*/
|
|
69
68
|
declare function useGameAudioContextOptional(): GameAudioContextValue | null;
|
|
70
69
|
interface GameAudioProviderProps {
|
|
71
|
-
/** Sound manifest — keys mapped to SoundEntry definitions */
|
|
72
|
-
manifest: AudioManifest;
|
|
73
|
-
/** Base URL prepended to all sound paths (default '') */
|
|
74
|
-
baseUrl?: string;
|
|
75
70
|
/** Children to render */
|
|
76
71
|
children: React__default.ReactNode;
|
|
77
72
|
/** Initial muted state */
|
|
@@ -81,7 +76,7 @@ interface GameAudioProviderProps {
|
|
|
81
76
|
isLoading?: boolean;
|
|
82
77
|
error?: UiError | null;
|
|
83
78
|
}
|
|
84
|
-
declare function GameAudioProvider({
|
|
79
|
+
declare function GameAudioProvider({ children, initialMuted, }: GameAudioProviderProps): React__default.JSX.Element;
|
|
85
80
|
declare namespace GameAudioProvider {
|
|
86
81
|
var displayName: string;
|
|
87
82
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { K as KernelModule, a as KernelLoader } from './kernel-wire-
|
|
3
|
+
import { K as KernelModule, a as KernelLoader } from './kernel-wire-CRsHtLsf.js';
|
|
4
4
|
import { OsHostPort } from '@almadar/shell-runtime/kernel/os-port';
|
|
5
|
+
import { KernelGpuHost, KernelCanvas3DFactory, KernelSceneCanvasFactory } from '@almadar/shell-runtime/kernel/wire';
|
|
5
6
|
|
|
6
7
|
/** Request the next frame; returns its cancel. `requestAnimationFrame` where the host has one. */
|
|
7
8
|
type FrameScheduler = (callback: (nowMs: number) => void) => () => void;
|
|
@@ -13,6 +14,12 @@ interface KernelEngineValue {
|
|
|
13
14
|
scheduleFrame?: FrameScheduler;
|
|
14
15
|
/** The host's `os` port (`createFetchOsHost(fetch)`) every local-store kernel under the provider is opened with; absent, a program's `os` asks are denied. */
|
|
15
16
|
os?: OsHostPort;
|
|
17
|
+
/** The host's GPU answerer (the kernel module's `GpuHost`), made once after the module loads and installed into every circuit kernel under the provider; absent, a `gpu/` ask answers `unsupported`. */
|
|
18
|
+
gpu?: () => KernelGpuHost;
|
|
19
|
+
/** Makes an orbital-canvas 3D view on a page canvas once the module has loaded; absent, a 3D canvas has no renderer. */
|
|
20
|
+
canvas3d?: KernelCanvas3DFactory;
|
|
21
|
+
/** Makes an orbital-canvas scene canvas (2D instruments, diagrams) on a page canvas once the module has loaded. */
|
|
22
|
+
sceneCanvas?: KernelSceneCanvasFactory;
|
|
16
23
|
}
|
|
17
24
|
declare const KernelEngineContext: React$1.Context<KernelEngineValue | null>;
|
|
18
25
|
/** The kernel the nearest `KernelEngineProvider` supplies; `null` with none above. */
|
|
@@ -25,9 +32,15 @@ interface KernelEngineProviderProps {
|
|
|
25
32
|
loader: KernelLoader;
|
|
26
33
|
scheduleFrame?: FrameScheduler;
|
|
27
34
|
os?: OsHostPort;
|
|
35
|
+
/** Makes the host's GPU answerer once the module has loaded (`() => new GpuHost()`). */
|
|
36
|
+
gpu?: () => KernelGpuHost;
|
|
37
|
+
/** Makes a 3D view on a page canvas (`(canvas) => Canvas3D.create(canvas)`). */
|
|
38
|
+
canvas3d?: KernelCanvas3DFactory;
|
|
39
|
+
/** Makes a scene canvas on a page canvas (`(canvas) => SceneCanvas.create(canvas)`). */
|
|
40
|
+
sceneCanvas?: KernelSceneCanvasFactory;
|
|
28
41
|
children?: ReactNode;
|
|
29
42
|
}
|
|
30
|
-
declare function KernelEngineProvider({ loader, scheduleFrame, os, children }: KernelEngineProviderProps): React.ReactElement;
|
|
43
|
+
declare function KernelEngineProvider({ loader, scheduleFrame, os, gpu, canvas3d, sceneCanvas, children }: KernelEngineProviderProps): React.ReactElement;
|
|
31
44
|
|
|
32
45
|
export { KernelEngineContext as a, KernelEngineProvider as b, KernelLoaderMissingError as d, useKernelEngine as u };
|
|
33
46
|
export type { KernelEngineValue as K, KernelEngineProviderProps as c };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { LayersPanel, parseLayerId, schemaToLayerItems } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { LayersPanel, parseLayerId, schemaToLayerItems } from './chunk-UFQLHCFJ.js';
|
|
2
|
+
import './chunk-AL2XXMYR.js';
|
|
3
3
|
import './chunk-PCR37T3U.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-GHAF7QUD.js';
|
|
5
|
+
import './chunk-D5FJU4XC.js';
|
|
6
6
|
import './chunk-G7DCAZ22.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
|
|
1
|
+
/* ../../../../../node_modules/.pnpm/katex@0.16.47/node_modules/katex/dist/katex.min.css */
|
|
2
2
|
@font-face {
|
|
3
3
|
font-display: block;
|
|
4
4
|
font-family: KaTeX_AMS;
|
|
@@ -1160,7 +1160,195 @@ body {
|
|
|
1160
1160
|
counter-reset: katexEqnNo mmlEqnNo;
|
|
1161
1161
|
}
|
|
1162
1162
|
|
|
1163
|
-
/* src/lib/drawable/
|
|
1163
|
+
/* src/lib/drawable/orbital/OrbitalCanvas3D.css */
|
|
1164
|
+
.game-canvas-3d {
|
|
1165
|
+
background: #1a1a2e;
|
|
1166
|
+
border-radius: 8px;
|
|
1167
|
+
}
|
|
1168
|
+
.game-canvas-3d canvas {
|
|
1169
|
+
display: block;
|
|
1170
|
+
width: 100%;
|
|
1171
|
+
height: 100%;
|
|
1172
|
+
}
|
|
1173
|
+
.game-canvas-3d--loading {
|
|
1174
|
+
display: flex;
|
|
1175
|
+
align-items: center;
|
|
1176
|
+
justify-content: center;
|
|
1177
|
+
background:
|
|
1178
|
+
linear-gradient(
|
|
1179
|
+
135deg,
|
|
1180
|
+
#1a1a2e 0%,
|
|
1181
|
+
#16213e 100%);
|
|
1182
|
+
}
|
|
1183
|
+
.game-canvas-3d__loading {
|
|
1184
|
+
padding: 20px 40px;
|
|
1185
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1186
|
+
border-radius: 8px;
|
|
1187
|
+
color: #ffffff;
|
|
1188
|
+
font-size: 16px;
|
|
1189
|
+
animation: pulse 1.5s ease-in-out infinite;
|
|
1190
|
+
}
|
|
1191
|
+
.game-canvas-3d--error {
|
|
1192
|
+
display: flex;
|
|
1193
|
+
align-items: center;
|
|
1194
|
+
justify-content: center;
|
|
1195
|
+
background:
|
|
1196
|
+
linear-gradient(
|
|
1197
|
+
135deg,
|
|
1198
|
+
#2e1a1a 0%,
|
|
1199
|
+
#3e1616 100%);
|
|
1200
|
+
}
|
|
1201
|
+
.game-canvas-3d__error {
|
|
1202
|
+
position: relative;
|
|
1203
|
+
z-index: 1;
|
|
1204
|
+
padding: 20px 40px;
|
|
1205
|
+
background: rgba(255, 0, 0, 0.2);
|
|
1206
|
+
border: 1px solid rgba(255, 0, 0, 0.3);
|
|
1207
|
+
border-radius: 8px;
|
|
1208
|
+
color: #ff6b6b;
|
|
1209
|
+
font-size: 14px;
|
|
1210
|
+
}
|
|
1211
|
+
.game-canvas-3d__coordinates {
|
|
1212
|
+
position: absolute;
|
|
1213
|
+
bottom: 20px;
|
|
1214
|
+
left: 20px;
|
|
1215
|
+
padding: 8px 16px;
|
|
1216
|
+
background: rgba(0, 0, 0, 0.7);
|
|
1217
|
+
border-radius: 4px;
|
|
1218
|
+
color: #ffffff;
|
|
1219
|
+
font-family: monospace;
|
|
1220
|
+
font-size: 12px;
|
|
1221
|
+
pointer-events: none;
|
|
1222
|
+
z-index: 10;
|
|
1223
|
+
}
|
|
1224
|
+
.game-canvas-3d__tile-info {
|
|
1225
|
+
position: absolute;
|
|
1226
|
+
top: 20px;
|
|
1227
|
+
left: 20px;
|
|
1228
|
+
padding: 12px 16px;
|
|
1229
|
+
background: rgba(0, 0, 0, 0.8);
|
|
1230
|
+
border-radius: 6px;
|
|
1231
|
+
color: #ffffff;
|
|
1232
|
+
pointer-events: none;
|
|
1233
|
+
z-index: 10;
|
|
1234
|
+
min-width: 120px;
|
|
1235
|
+
}
|
|
1236
|
+
.tile-info__type {
|
|
1237
|
+
font-weight: 600;
|
|
1238
|
+
font-size: 14px;
|
|
1239
|
+
text-transform: capitalize;
|
|
1240
|
+
margin-bottom: 4px;
|
|
1241
|
+
}
|
|
1242
|
+
.tile-info__terrain {
|
|
1243
|
+
font-size: 12px;
|
|
1244
|
+
color: #aaaaaa;
|
|
1245
|
+
}
|
|
1246
|
+
@keyframes pulse {
|
|
1247
|
+
0%, 100% {
|
|
1248
|
+
opacity: 1;
|
|
1249
|
+
}
|
|
1250
|
+
50% {
|
|
1251
|
+
opacity: 0.5;
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
.game-canvas-3d[data-camera-mode=isometric]::before {
|
|
1255
|
+
content: "Isometric";
|
|
1256
|
+
position: absolute;
|
|
1257
|
+
top: 20px;
|
|
1258
|
+
right: 20px;
|
|
1259
|
+
padding: 6px 12px;
|
|
1260
|
+
background: rgba(0, 0, 0, 0.6);
|
|
1261
|
+
border-radius: 4px;
|
|
1262
|
+
color: #ffffff;
|
|
1263
|
+
font-size: 11px;
|
|
1264
|
+
text-transform: uppercase;
|
|
1265
|
+
letter-spacing: 1px;
|
|
1266
|
+
pointer-events: none;
|
|
1267
|
+
}
|
|
1268
|
+
.game-canvas-3d[data-camera-mode=perspective]::before {
|
|
1269
|
+
content: "Perspective";
|
|
1270
|
+
position: absolute;
|
|
1271
|
+
top: 20px;
|
|
1272
|
+
right: 20px;
|
|
1273
|
+
padding: 6px 12px;
|
|
1274
|
+
background: rgba(0, 0, 0, 0.6);
|
|
1275
|
+
border-radius: 4px;
|
|
1276
|
+
color: #ffffff;
|
|
1277
|
+
font-size: 11px;
|
|
1278
|
+
text-transform: uppercase;
|
|
1279
|
+
letter-spacing: 1px;
|
|
1280
|
+
pointer-events: none;
|
|
1281
|
+
}
|
|
1282
|
+
.game-canvas-3d[data-camera-mode=top-down]::before {
|
|
1283
|
+
content: "Top Down";
|
|
1284
|
+
position: absolute;
|
|
1285
|
+
top: 20px;
|
|
1286
|
+
right: 20px;
|
|
1287
|
+
padding: 6px 12px;
|
|
1288
|
+
background: rgba(0, 0, 0, 0.6);
|
|
1289
|
+
border-radius: 4px;
|
|
1290
|
+
color: #ffffff;
|
|
1291
|
+
font-size: 11px;
|
|
1292
|
+
text-transform: uppercase;
|
|
1293
|
+
letter-spacing: 1px;
|
|
1294
|
+
pointer-events: none;
|
|
1295
|
+
}
|
|
1296
|
+
.game-canvas-3d[data-overlay=hidden] .game-canvas-3d__coordinates,
|
|
1297
|
+
.game-canvas-3d[data-overlay=hidden] .game-canvas-3d__tile-info,
|
|
1298
|
+
.game-canvas-3d[data-overlay=hidden]::before {
|
|
1299
|
+
display: none;
|
|
1300
|
+
}
|
|
1301
|
+
.game-canvas-3d[data-orientation=rotated] {
|
|
1302
|
+
}
|
|
1303
|
+
.game-canvas-3d canvas {
|
|
1304
|
+
cursor: crosshair;
|
|
1305
|
+
}
|
|
1306
|
+
.game-canvas-3d canvas:active {
|
|
1307
|
+
cursor: grabbing;
|
|
1308
|
+
}
|
|
1309
|
+
@media (max-width: 768px) {
|
|
1310
|
+
.game-canvas-3d__coordinates,
|
|
1311
|
+
.game-canvas-3d__tile-info {
|
|
1312
|
+
font-size: 10px;
|
|
1313
|
+
padding: 6px 10px;
|
|
1314
|
+
}
|
|
1315
|
+
.game-canvas-3d::before {
|
|
1316
|
+
font-size: 9px;
|
|
1317
|
+
padding: 4px 8px;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
.game-canvas-3d:focus {
|
|
1321
|
+
outline: 2px solid #4488ff;
|
|
1322
|
+
outline-offset: 2px;
|
|
1323
|
+
}
|
|
1324
|
+
.game-canvas-3d canvas {
|
|
1325
|
+
transition: opacity 0.3s ease;
|
|
1326
|
+
}
|
|
1327
|
+
.game-canvas-3d__context-menu {
|
|
1328
|
+
position: absolute;
|
|
1329
|
+
background: rgba(0, 0, 0, 0.9);
|
|
1330
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1331
|
+
border-radius: 6px;
|
|
1332
|
+
padding: 8px 0;
|
|
1333
|
+
min-width: 150px;
|
|
1334
|
+
z-index: 100;
|
|
1335
|
+
}
|
|
1336
|
+
.game-canvas-3d__context-menu-item {
|
|
1337
|
+
padding: 8px 16px;
|
|
1338
|
+
color: #ffffff;
|
|
1339
|
+
cursor: pointer;
|
|
1340
|
+
font-size: 13px;
|
|
1341
|
+
transition: background 0.15s ease;
|
|
1342
|
+
}
|
|
1343
|
+
.game-canvas-3d__context-menu-item:hover {
|
|
1344
|
+
background: rgba(255, 255, 255, 0.1);
|
|
1345
|
+
}
|
|
1346
|
+
.game-canvas-3d__context-menu-item--danger {
|
|
1347
|
+
color: #ff6b6b;
|
|
1348
|
+
}
|
|
1349
|
+
.game-canvas-3d__context-menu-item--danger:hover {
|
|
1350
|
+
background: rgba(255, 0, 0, 0.2);
|
|
1351
|
+
}
|
|
1164
1352
|
.canvas-3d-loading {
|
|
1165
1353
|
position: absolute;
|
|
1166
1354
|
inset: 0;
|
|
@@ -1312,8 +1500,6 @@ body {
|
|
|
1312
1500
|
font-size: 12px;
|
|
1313
1501
|
}
|
|
1314
1502
|
}
|
|
1315
|
-
|
|
1316
|
-
/* src/lib/drawable/three/Canvas3DErrorBoundary.css */
|
|
1317
1503
|
.canvas-3d-error {
|
|
1318
1504
|
position: absolute;
|
|
1319
1505
|
inset: 0;
|
|
@@ -1476,194 +1662,6 @@ body {
|
|
|
1476
1662
|
}
|
|
1477
1663
|
}
|
|
1478
1664
|
|
|
1479
|
-
/* src/lib/drawable/three/Canvas3DHost.css */
|
|
1480
|
-
.game-canvas-3d {
|
|
1481
|
-
background: #1a1a2e;
|
|
1482
|
-
border-radius: 8px;
|
|
1483
|
-
}
|
|
1484
|
-
.game-canvas-3d canvas {
|
|
1485
|
-
display: block;
|
|
1486
|
-
width: 100%;
|
|
1487
|
-
height: 100%;
|
|
1488
|
-
}
|
|
1489
|
-
.game-canvas-3d--loading {
|
|
1490
|
-
display: flex;
|
|
1491
|
-
align-items: center;
|
|
1492
|
-
justify-content: center;
|
|
1493
|
-
background:
|
|
1494
|
-
linear-gradient(
|
|
1495
|
-
135deg,
|
|
1496
|
-
#1a1a2e 0%,
|
|
1497
|
-
#16213e 100%);
|
|
1498
|
-
}
|
|
1499
|
-
.game-canvas-3d__loading {
|
|
1500
|
-
padding: 20px 40px;
|
|
1501
|
-
background: rgba(255, 255, 255, 0.1);
|
|
1502
|
-
border-radius: 8px;
|
|
1503
|
-
color: #ffffff;
|
|
1504
|
-
font-size: 16px;
|
|
1505
|
-
animation: pulse 1.5s ease-in-out infinite;
|
|
1506
|
-
}
|
|
1507
|
-
.game-canvas-3d--error {
|
|
1508
|
-
display: flex;
|
|
1509
|
-
align-items: center;
|
|
1510
|
-
justify-content: center;
|
|
1511
|
-
background:
|
|
1512
|
-
linear-gradient(
|
|
1513
|
-
135deg,
|
|
1514
|
-
#2e1a1a 0%,
|
|
1515
|
-
#3e1616 100%);
|
|
1516
|
-
}
|
|
1517
|
-
.game-canvas-3d__error {
|
|
1518
|
-
padding: 20px 40px;
|
|
1519
|
-
background: rgba(255, 0, 0, 0.2);
|
|
1520
|
-
border: 1px solid rgba(255, 0, 0, 0.3);
|
|
1521
|
-
border-radius: 8px;
|
|
1522
|
-
color: #ff6b6b;
|
|
1523
|
-
font-size: 14px;
|
|
1524
|
-
}
|
|
1525
|
-
.game-canvas-3d__coordinates {
|
|
1526
|
-
position: absolute;
|
|
1527
|
-
bottom: 20px;
|
|
1528
|
-
left: 20px;
|
|
1529
|
-
padding: 8px 16px;
|
|
1530
|
-
background: rgba(0, 0, 0, 0.7);
|
|
1531
|
-
border-radius: 4px;
|
|
1532
|
-
color: #ffffff;
|
|
1533
|
-
font-family: monospace;
|
|
1534
|
-
font-size: 12px;
|
|
1535
|
-
pointer-events: none;
|
|
1536
|
-
z-index: 10;
|
|
1537
|
-
}
|
|
1538
|
-
.game-canvas-3d__tile-info {
|
|
1539
|
-
position: absolute;
|
|
1540
|
-
top: 20px;
|
|
1541
|
-
left: 20px;
|
|
1542
|
-
padding: 12px 16px;
|
|
1543
|
-
background: rgba(0, 0, 0, 0.8);
|
|
1544
|
-
border-radius: 6px;
|
|
1545
|
-
color: #ffffff;
|
|
1546
|
-
pointer-events: none;
|
|
1547
|
-
z-index: 10;
|
|
1548
|
-
min-width: 120px;
|
|
1549
|
-
}
|
|
1550
|
-
.tile-info__type {
|
|
1551
|
-
font-weight: 600;
|
|
1552
|
-
font-size: 14px;
|
|
1553
|
-
text-transform: capitalize;
|
|
1554
|
-
margin-bottom: 4px;
|
|
1555
|
-
}
|
|
1556
|
-
.tile-info__terrain {
|
|
1557
|
-
font-size: 12px;
|
|
1558
|
-
color: #aaaaaa;
|
|
1559
|
-
}
|
|
1560
|
-
@keyframes pulse {
|
|
1561
|
-
0%, 100% {
|
|
1562
|
-
opacity: 1;
|
|
1563
|
-
}
|
|
1564
|
-
50% {
|
|
1565
|
-
opacity: 0.5;
|
|
1566
|
-
}
|
|
1567
|
-
}
|
|
1568
|
-
.game-canvas-3d[data-camera-mode=isometric]::before {
|
|
1569
|
-
content: "Isometric";
|
|
1570
|
-
position: absolute;
|
|
1571
|
-
top: 20px;
|
|
1572
|
-
right: 20px;
|
|
1573
|
-
padding: 6px 12px;
|
|
1574
|
-
background: rgba(0, 0, 0, 0.6);
|
|
1575
|
-
border-radius: 4px;
|
|
1576
|
-
color: #ffffff;
|
|
1577
|
-
font-size: 11px;
|
|
1578
|
-
text-transform: uppercase;
|
|
1579
|
-
letter-spacing: 1px;
|
|
1580
|
-
pointer-events: none;
|
|
1581
|
-
}
|
|
1582
|
-
.game-canvas-3d[data-camera-mode=perspective]::before {
|
|
1583
|
-
content: "Perspective";
|
|
1584
|
-
position: absolute;
|
|
1585
|
-
top: 20px;
|
|
1586
|
-
right: 20px;
|
|
1587
|
-
padding: 6px 12px;
|
|
1588
|
-
background: rgba(0, 0, 0, 0.6);
|
|
1589
|
-
border-radius: 4px;
|
|
1590
|
-
color: #ffffff;
|
|
1591
|
-
font-size: 11px;
|
|
1592
|
-
text-transform: uppercase;
|
|
1593
|
-
letter-spacing: 1px;
|
|
1594
|
-
pointer-events: none;
|
|
1595
|
-
}
|
|
1596
|
-
.game-canvas-3d[data-camera-mode=top-down]::before {
|
|
1597
|
-
content: "Top Down";
|
|
1598
|
-
position: absolute;
|
|
1599
|
-
top: 20px;
|
|
1600
|
-
right: 20px;
|
|
1601
|
-
padding: 6px 12px;
|
|
1602
|
-
background: rgba(0, 0, 0, 0.6);
|
|
1603
|
-
border-radius: 4px;
|
|
1604
|
-
color: #ffffff;
|
|
1605
|
-
font-size: 11px;
|
|
1606
|
-
text-transform: uppercase;
|
|
1607
|
-
letter-spacing: 1px;
|
|
1608
|
-
pointer-events: none;
|
|
1609
|
-
}
|
|
1610
|
-
.game-canvas-3d[data-overlay=hidden] .game-canvas-3d__coordinates,
|
|
1611
|
-
.game-canvas-3d[data-overlay=hidden] .game-canvas-3d__tile-info,
|
|
1612
|
-
.game-canvas-3d[data-overlay=hidden]::before {
|
|
1613
|
-
display: none;
|
|
1614
|
-
}
|
|
1615
|
-
.game-canvas-3d[data-orientation=rotated] {
|
|
1616
|
-
}
|
|
1617
|
-
.game-canvas-3d canvas {
|
|
1618
|
-
cursor: crosshair;
|
|
1619
|
-
}
|
|
1620
|
-
.game-canvas-3d canvas:active {
|
|
1621
|
-
cursor: grabbing;
|
|
1622
|
-
}
|
|
1623
|
-
@media (max-width: 768px) {
|
|
1624
|
-
.game-canvas-3d__coordinates,
|
|
1625
|
-
.game-canvas-3d__tile-info {
|
|
1626
|
-
font-size: 10px;
|
|
1627
|
-
padding: 6px 10px;
|
|
1628
|
-
}
|
|
1629
|
-
.game-canvas-3d::before {
|
|
1630
|
-
font-size: 9px;
|
|
1631
|
-
padding: 4px 8px;
|
|
1632
|
-
}
|
|
1633
|
-
}
|
|
1634
|
-
.game-canvas-3d:focus {
|
|
1635
|
-
outline: 2px solid #4488ff;
|
|
1636
|
-
outline-offset: 2px;
|
|
1637
|
-
}
|
|
1638
|
-
.game-canvas-3d canvas {
|
|
1639
|
-
transition: opacity 0.3s ease;
|
|
1640
|
-
}
|
|
1641
|
-
.game-canvas-3d__context-menu {
|
|
1642
|
-
position: absolute;
|
|
1643
|
-
background: rgba(0, 0, 0, 0.9);
|
|
1644
|
-
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1645
|
-
border-radius: 6px;
|
|
1646
|
-
padding: 8px 0;
|
|
1647
|
-
min-width: 150px;
|
|
1648
|
-
z-index: 100;
|
|
1649
|
-
}
|
|
1650
|
-
.game-canvas-3d__context-menu-item {
|
|
1651
|
-
padding: 8px 16px;
|
|
1652
|
-
color: #ffffff;
|
|
1653
|
-
cursor: pointer;
|
|
1654
|
-
font-size: 13px;
|
|
1655
|
-
transition: background 0.15s ease;
|
|
1656
|
-
}
|
|
1657
|
-
.game-canvas-3d__context-menu-item:hover {
|
|
1658
|
-
background: rgba(255, 255, 255, 0.1);
|
|
1659
|
-
}
|
|
1660
|
-
.game-canvas-3d__context-menu-item--danger {
|
|
1661
|
-
color: #ff6b6b;
|
|
1662
|
-
}
|
|
1663
|
-
.game-canvas-3d__context-menu-item--danger:hover {
|
|
1664
|
-
background: rgba(255, 0, 0, 0.2);
|
|
1665
|
-
}
|
|
1666
|
-
|
|
1667
1665
|
/* src/components/core/organisms/debug/RuntimeDebugger.css */
|
|
1668
1666
|
.runtime-debugger {
|
|
1669
1667
|
font-family:
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { OrbInspector } from './chunk-TAEOMNDK.js';
|
|
2
|
+
import './chunk-AL2XXMYR.js';
|
|
3
|
+
import './chunk-RDPELAFQ.js';
|
|
4
|
+
import './chunk-CCO2ZH7F.js';
|
|
5
|
+
import './chunk-DPDKBY6Z.js';
|
|
6
|
+
import './chunk-3DA36FOA.js';
|
|
7
|
+
import './chunk-3YUMGEEW.js';
|
|
8
|
+
import './chunk-HA2BYO5E.js';
|
|
9
|
+
import './chunk-PCR37T3U.js';
|
|
10
|
+
import './chunk-V5SVGUYN.js';
|
|
11
|
+
import './chunk-3UQNFRYV.js';
|
|
12
|
+
import './chunk-LKL5RULQ.js';
|
|
13
|
+
import './chunk-TZZBINQY.js';
|
|
14
|
+
import './chunk-ZDRDJKYB.js';
|
|
15
|
+
import './chunk-S3LS3B7N.js';
|
|
16
|
+
import './chunk-GHAF7QUD.js';
|
|
17
|
+
import './chunk-2LNXLMK3.js';
|
|
18
|
+
import './chunk-3BBUBJFF.js';
|
|
19
|
+
import './chunk-ANTJUQRD.js';
|
|
20
|
+
import './chunk-D5FJU4XC.js';
|
|
21
|
+
import './chunk-ECC3WQIB.js';
|
|
22
|
+
import './chunk-AZ74UPG6.js';
|
|
23
|
+
import './chunk-G7DCAZ22.js';
|
|
@@ -234,7 +234,7 @@ type LessonSegment = {
|
|
|
234
234
|
};
|
|
235
235
|
/**
|
|
236
236
|
* User progress state passed into SegmentRenderer. Declared here (rather than
|
|
237
|
-
*
|
|
237
|
+
* in a `lib/` module) so the
|
|
238
238
|
* pattern-sync scanner — which only indexes types under `components/**` —
|
|
239
239
|
* can resolve it to a concrete `.lolo` object shape instead of `json`.
|
|
240
240
|
*/
|
|
@@ -244,10 +244,8 @@ interface LessonUserProgress {
|
|
|
244
244
|
bloomAnswered?: Record<number, boolean>;
|
|
245
245
|
}
|
|
246
246
|
interface SegmentRendererProps extends Omit<React__default.AriaAttributes, keyof A11yProps>, A11yProps {
|
|
247
|
-
/**
|
|
247
|
+
/** The lesson as segments (std-lesson-segments parses lesson text into them). */
|
|
248
248
|
segments?: LessonSegment[];
|
|
249
|
-
/** Raw lesson markdown with learning tags; parsed with `parseLessonSegments` and rendered */
|
|
250
|
-
lesson?: string;
|
|
251
249
|
/** Event emitted when the activation prompt is saved or skipped (as `UI:<activationSaveEvent>`) */
|
|
252
250
|
activationSaveEvent?: EventEmit<{
|
|
253
251
|
response: string;
|
|
@@ -316,19 +314,5 @@ interface SegmentRendererProps extends Omit<React__default.AriaAttributes, keyof
|
|
|
316
314
|
}
|
|
317
315
|
declare const SegmentRenderer: React__default.FC<SegmentRendererProps>;
|
|
318
316
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
* XML-style tags into a typed Segment array.
|
|
322
|
-
*
|
|
323
|
-
* Supported tags: <activate>, <connect>, <reflect>, <bloom level="...">,
|
|
324
|
-
* <question>/<answer>, <visualize type="..." description="..." />.
|
|
325
|
-
*
|
|
326
|
-
* Tags may be open (unclosed) — the parser falls back to consuming content
|
|
327
|
-
* until the next recognised tag, a section heading (`\n\n#`), or end-of-input.
|
|
328
|
-
*/
|
|
329
|
-
|
|
330
|
-
/** Parse a lesson string into typed segments. Returns `[]` when input is empty. */
|
|
331
|
-
declare function parseLessonSegments(lesson: string | undefined): LessonSegment[];
|
|
332
|
-
|
|
333
|
-
export { EDITOR_MOTIONS as E, INDENT_UNIT as I, SegmentRenderer as S, EDITOR_OPERATORS as b, applyMotion as e, applyOperator as f, isEditorOperator as g, parseLessonSegments as h, isEditorMotion as i, parseMarkdownWithCodeBlocks as j, BloomQuizBlock as l, motionRange as m, CodeRunnerPanel as o, parseContentSegments as p };
|
|
334
|
-
export type { ApplyOperatorInput as A, BloomLevel as B, ContentSegment as C, LessonSegment as L, ApplyOperatorResult as a, EditorMotion as c, EditorOperator as d, ContentAnnotation as k, BloomQuizBlockProps as n, CodeRunnerPanelProps as q, CodeSimulationOutput as r, LessonUserProgress as s, SegmentRendererProps as t };
|
|
317
|
+
export { EDITOR_MOTIONS as E, INDENT_UNIT as I, SegmentRenderer as S, EDITOR_OPERATORS as b, applyMotion as e, applyOperator as f, isEditorOperator as g, parseMarkdownWithCodeBlocks as h, isEditorMotion as i, BloomQuizBlock as k, motionRange as m, CodeRunnerPanel as n, parseContentSegments as p };
|
|
318
|
+
export type { ApplyOperatorInput as A, BloomLevel as B, ContentSegment as C, LessonSegment as L, ApplyOperatorResult as a, EditorMotion as c, EditorOperator as d, ContentAnnotation as j, BloomQuizBlockProps as l, CodeRunnerPanelProps as o, CodeSimulationOutput as q, LessonUserProgress as r, SegmentRendererProps as s };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
2
|
import { A11yProps, Asset, EventKey, EventPayload, EventEmit } from '@almadar/core';
|
|
3
|
-
import { I as IconInput } from './fx-
|
|
3
|
+
import { I as IconInput } from './fx-Bx5RqplG.js';
|
|
4
4
|
|
|
5
5
|
type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default" | "link";
|
|
6
6
|
type ButtonSize = "sm" | "md" | "lg";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export { SlotContainedContext, SlotContentRenderer, SuspenseConfigProvider, UISlotComponent, UISlotRenderer, renderPatternProps, renderPatternValue } from './chunk-TAEOMNDK.js';
|
|
2
|
+
import './chunk-AL2XXMYR.js';
|
|
3
|
+
import './chunk-RDPELAFQ.js';
|
|
4
|
+
import './chunk-CCO2ZH7F.js';
|
|
5
|
+
import './chunk-DPDKBY6Z.js';
|
|
6
|
+
import './chunk-3DA36FOA.js';
|
|
7
|
+
import './chunk-3YUMGEEW.js';
|
|
8
|
+
import './chunk-HA2BYO5E.js';
|
|
9
|
+
import './chunk-PCR37T3U.js';
|
|
10
|
+
import './chunk-V5SVGUYN.js';
|
|
11
|
+
import './chunk-3UQNFRYV.js';
|
|
12
|
+
import './chunk-LKL5RULQ.js';
|
|
13
|
+
import './chunk-TZZBINQY.js';
|
|
14
|
+
import './chunk-ZDRDJKYB.js';
|
|
15
|
+
import './chunk-S3LS3B7N.js';
|
|
16
|
+
import './chunk-GHAF7QUD.js';
|
|
17
|
+
import './chunk-2LNXLMK3.js';
|
|
18
|
+
import './chunk-3BBUBJFF.js';
|
|
19
|
+
import './chunk-ANTJUQRD.js';
|
|
20
|
+
import './chunk-D5FJU4XC.js';
|
|
21
|
+
import './chunk-ECC3WQIB.js';
|
|
22
|
+
import './chunk-AZ74UPG6.js';
|
|
23
|
+
import './chunk-G7DCAZ22.js';
|