@momoyu-ink/kit 0.1.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.txt +21 -0
- package/dist/bindings/AnimationFormat.d.ts +1 -0
- package/dist/bindings/AnimationFormat.js +4 -0
- package/dist/bindings/AnimationFormat.js.map +1 -0
- package/dist/bindings/AnimationFrameCallbackEvent.d.ts +3 -0
- package/dist/bindings/AnimationFrameCallbackEvent.js +4 -0
- package/dist/bindings/AnimationFrameCallbackEvent.js.map +1 -0
- package/dist/bindings/AnimationProps.d.ts +6 -0
- package/dist/bindings/AnimationProps.js +3 -0
- package/dist/bindings/AnimationProps.js.map +1 -0
- package/dist/bindings/AudioCommand.d.ts +52 -0
- package/dist/bindings/AudioCommand.js +3 -0
- package/dist/bindings/AudioCommand.js.map +1 -0
- package/dist/bindings/AudioSettings.d.ts +42 -0
- package/dist/bindings/AudioSettings.js +4 -0
- package/dist/bindings/AudioSettings.js.map +1 -0
- package/dist/bindings/BackdropProps.d.ts +6 -0
- package/dist/bindings/BackdropProps.js +3 -0
- package/dist/bindings/BackdropProps.js.map +1 -0
- package/dist/bindings/BeforeUnloadEvent.d.ts +1 -0
- package/dist/bindings/BeforeUnloadEvent.js +4 -0
- package/dist/bindings/BeforeUnloadEvent.js.map +1 -0
- package/dist/bindings/ClipProps.d.ts +4 -0
- package/dist/bindings/ClipProps.js +4 -0
- package/dist/bindings/ClipProps.js.map +1 -0
- package/dist/bindings/CustomEvent.d.ts +18 -0
- package/dist/bindings/CustomEvent.js +4 -0
- package/dist/bindings/CustomEvent.js.map +1 -0
- package/dist/bindings/EffectParams.d.ts +6 -0
- package/dist/bindings/EffectParams.js +4 -0
- package/dist/bindings/EffectParams.js.map +1 -0
- package/dist/bindings/FilterKind.d.ts +34 -0
- package/dist/bindings/FilterKind.js +4 -0
- package/dist/bindings/FilterKind.js.map +1 -0
- package/dist/bindings/FilterProps.d.ts +4 -0
- package/dist/bindings/FilterProps.js +3 -0
- package/dist/bindings/FilterProps.js.map +1 -0
- package/dist/bindings/FocusEvent.d.ts +5 -0
- package/dist/bindings/FocusEvent.js +3 -0
- package/dist/bindings/FocusEvent.js.map +1 -0
- package/dist/bindings/FocusEventKind.d.ts +1 -0
- package/dist/bindings/FocusEventKind.js +4 -0
- package/dist/bindings/FocusEventKind.js.map +1 -0
- package/dist/bindings/FullScreenEvent.d.ts +4 -0
- package/dist/bindings/FullScreenEvent.js +3 -0
- package/dist/bindings/FullScreenEvent.js.map +1 -0
- package/dist/bindings/FullscreenEventKind.d.ts +1 -0
- package/dist/bindings/FullscreenEventKind.js +4 -0
- package/dist/bindings/FullscreenEventKind.js.map +1 -0
- package/dist/bindings/GameEvent.d.ts +1 -0
- package/dist/bindings/GameEvent.js +4 -0
- package/dist/bindings/GameEvent.js.map +1 -0
- package/dist/bindings/Gamepad.d.ts +44 -0
- package/dist/bindings/Gamepad.js +3 -0
- package/dist/bindings/Gamepad.js.map +1 -0
- package/dist/bindings/GamepadButton.d.ts +20 -0
- package/dist/bindings/GamepadButton.js +4 -0
- package/dist/bindings/GamepadButton.js.map +1 -0
- package/dist/bindings/GamepadCommand.d.ts +9 -0
- package/dist/bindings/GamepadCommand.js +3 -0
- package/dist/bindings/GamepadCommand.js.map +1 -0
- package/dist/bindings/GamepadEvent.d.ts +12 -0
- package/dist/bindings/GamepadEvent.js +3 -0
- package/dist/bindings/GamepadEvent.js.map +1 -0
- package/dist/bindings/GamepadHapticActuator.d.ts +11 -0
- package/dist/bindings/GamepadHapticActuator.js +4 -0
- package/dist/bindings/GamepadHapticActuator.js.map +1 -0
- package/dist/bindings/KeyboardEventKind.d.ts +1 -0
- package/dist/bindings/KeyboardEventKind.js +4 -0
- package/dist/bindings/KeyboardEventKind.js.map +1 -0
- package/dist/bindings/KeyboardLocation.d.ts +1 -0
- package/dist/bindings/KeyboardLocation.js +4 -0
- package/dist/bindings/KeyboardLocation.js.map +1 -0
- package/dist/bindings/Literal.d.ts +3 -0
- package/dist/bindings/Literal.js +4 -0
- package/dist/bindings/Literal.js.map +1 -0
- package/dist/bindings/MouseEventKind.d.ts +1 -0
- package/dist/bindings/MouseEventKind.js +4 -0
- package/dist/bindings/MouseEventKind.js.map +1 -0
- package/dist/bindings/MoyuCursor.d.ts +1 -0
- package/dist/bindings/MoyuCursor.js +4 -0
- package/dist/bindings/MoyuCursor.js.map +1 -0
- package/dist/bindings/NineSliceMode.d.ts +1 -0
- package/dist/bindings/NineSliceMode.js +4 -0
- package/dist/bindings/NineSliceMode.js.map +1 -0
- package/dist/bindings/NodeEvent.d.ts +4 -0
- package/dist/bindings/NodeEvent.js +4 -0
- package/dist/bindings/NodeEvent.js.map +1 -0
- package/dist/bindings/NodeProps.d.ts +20 -0
- package/dist/bindings/NodeProps.js +3 -0
- package/dist/bindings/NodeProps.js.map +1 -0
- package/dist/bindings/RawKeyboardEvent.d.ts +16 -0
- package/dist/bindings/RawKeyboardEvent.js +3 -0
- package/dist/bindings/RawKeyboardEvent.js.map +1 -0
- package/dist/bindings/RawMouseEvent.d.ts +12 -0
- package/dist/bindings/RawMouseEvent.js +3 -0
- package/dist/bindings/RawMouseEvent.js.map +1 -0
- package/dist/bindings/RawTouchEvent.d.ts +13 -0
- package/dist/bindings/RawTouchEvent.js +3 -0
- package/dist/bindings/RawTouchEvent.js.map +1 -0
- package/dist/bindings/RawWheelEvent.d.ts +9 -0
- package/dist/bindings/RawWheelEvent.js +3 -0
- package/dist/bindings/RawWheelEvent.js.map +1 -0
- package/dist/bindings/ResizeEvent.d.ts +4 -0
- package/dist/bindings/ResizeEvent.js +4 -0
- package/dist/bindings/ResizeEvent.js.map +1 -0
- package/dist/bindings/ResolvedArgument.d.ts +5 -0
- package/dist/bindings/ResolvedArgument.js +3 -0
- package/dist/bindings/ResolvedArgument.js.map +1 -0
- package/dist/bindings/ResolvedCommandLine.d.ts +5 -0
- package/dist/bindings/ResolvedCommandLine.js +3 -0
- package/dist/bindings/ResolvedCommandLine.js.map +1 -0
- package/dist/bindings/ResolvedSystemCallLine.d.ts +5 -0
- package/dist/bindings/ResolvedSystemCallLine.js +3 -0
- package/dist/bindings/ResolvedSystemCallLine.js.map +1 -0
- package/dist/bindings/ScenarioCommand.d.ts +90 -0
- package/dist/bindings/ScenarioCommand.js +3 -0
- package/dist/bindings/ScenarioCommand.js.map +1 -0
- package/dist/bindings/ScenarioEvent.d.ts +4 -0
- package/dist/bindings/ScenarioEvent.js +3 -0
- package/dist/bindings/ScenarioEvent.js.map +1 -0
- package/dist/bindings/SpriteMode.d.ts +1 -0
- package/dist/bindings/SpriteMode.js +4 -0
- package/dist/bindings/SpriteMode.js.map +1 -0
- package/dist/bindings/SpriteProps.d.ts +11 -0
- package/dist/bindings/SpriteProps.js +3 -0
- package/dist/bindings/SpriteProps.js.map +1 -0
- package/dist/bindings/SystemCommand.d.ts +28 -0
- package/dist/bindings/SystemCommand.js +3 -0
- package/dist/bindings/SystemCommand.js.map +1 -0
- package/dist/bindings/TextCommand.d.ts +9 -0
- package/dist/bindings/TextCommand.js +4 -0
- package/dist/bindings/TextCommand.js.map +1 -0
- package/dist/bindings/TextEvent.d.ts +1 -0
- package/dist/bindings/TextEvent.js +4 -0
- package/dist/bindings/TextEvent.js.map +1 -0
- package/dist/bindings/TextLine.d.ts +5 -0
- package/dist/bindings/TextLine.js +4 -0
- package/dist/bindings/TextLine.js.map +1 -0
- package/dist/bindings/TextPrintMode.d.ts +4 -0
- package/dist/bindings/TextPrintMode.js +4 -0
- package/dist/bindings/TextPrintMode.js.map +1 -0
- package/dist/bindings/TextProps.d.ts +41 -0
- package/dist/bindings/TextProps.js +3 -0
- package/dist/bindings/TextProps.js.map +1 -0
- package/dist/bindings/TouchEventKind.d.ts +1 -0
- package/dist/bindings/TouchEventKind.js +4 -0
- package/dist/bindings/TouchEventKind.js.map +1 -0
- package/dist/bindings/WheelEventDeltaMode.d.ts +1 -0
- package/dist/bindings/WheelEventDeltaMode.js +4 -0
- package/dist/bindings/WheelEventDeltaMode.js.map +1 -0
- package/dist/bindings/WindowState.d.ts +1 -0
- package/dist/bindings/WindowState.js +4 -0
- package/dist/bindings/WindowState.js.map +1 -0
- package/dist/bindings/serde_json/JsonValue.d.ts +3 -0
- package/dist/bindings/serde_json/JsonValue.js +4 -0
- package/dist/bindings/serde_json/JsonValue.js.map +1 -0
- package/dist/commands.d.ts +17 -0
- package/dist/commands.js +25 -0
- package/dist/commands.js.map +1 -0
- package/dist/components/navigation.d.ts +154 -0
- package/dist/components/navigation.js +253 -0
- package/dist/components/navigation.js.map +1 -0
- package/dist/declaration.d.ts +74 -0
- package/dist/declaration.js +3 -0
- package/dist/declaration.js.map +1 -0
- package/dist/events/base.d.ts +16 -0
- package/dist/events/base.js +20 -0
- package/dist/events/base.js.map +1 -0
- package/dist/events/globals.d.ts +2 -0
- package/dist/events/globals.js +123 -0
- package/dist/events/globals.js.map +1 -0
- package/dist/events/keyboard.d.ts +37 -0
- package/dist/events/keyboard.js +3 -0
- package/dist/events/keyboard.js.map +1 -0
- package/dist/events/listener.d.ts +1 -0
- package/dist/events/listener.js +14 -0
- package/dist/events/listener.js.map +1 -0
- package/dist/events/mouse.d.ts +15 -0
- package/dist/events/mouse.js +3 -0
- package/dist/events/mouse.js.map +1 -0
- package/dist/events/touch.d.ts +16 -0
- package/dist/events/touch.js +3 -0
- package/dist/events/touch.js.map +1 -0
- package/dist/events.d.ts +32 -0
- package/dist/events.js +49 -0
- package/dist/events.js.map +1 -0
- package/dist/hooks/useFadeInOut.d.ts +16 -0
- package/dist/hooks/useFadeInOut.js +63 -0
- package/dist/hooks/useFadeInOut.js.map +1 -0
- package/dist/hooks/useScenario.d.ts +13 -0
- package/dist/hooks/useScenario.js +65 -0
- package/dist/hooks/useScenario.js.map +1 -0
- package/dist/hooks/useSoundEffect.d.ts +4 -0
- package/dist/hooks/useSoundEffect.js +64 -0
- package/dist/hooks/useSoundEffect.js.map +1 -0
- package/dist/hooks/useStage.d.ts +85 -0
- package/dist/hooks/useStage.js +409 -0
- package/dist/hooks/useStage.js.map +1 -0
- package/dist/hooks.d.ts +4 -0
- package/dist/hooks.js +21 -0
- package/dist/hooks.js.map +1 -0
- package/dist/lib.d.ts +13 -0
- package/dist/lib.js +53 -0
- package/dist/lib.js.map +1 -0
- package/dist/moyu.d.ts +18 -0
- package/dist/moyu.js +50 -0
- package/dist/moyu.js.map +1 -0
- package/dist/node.d.ts +16 -0
- package/dist/node.js +106 -0
- package/dist/node.js.map +1 -0
- package/dist/react.d.ts +20 -0
- package/dist/react.js +223 -0
- package/dist/react.js.map +1 -0
- package/dist/runtime-globals.d.ts +63 -0
- package/dist/runtime-globals.js +3 -0
- package/dist/runtime-globals.js.map +1 -0
- package/dist/spring/animated.d.ts +27 -0
- package/dist/spring/animated.js +3 -0
- package/dist/spring/animated.js.map +1 -0
- package/dist/spring/index.d.ts +5 -0
- package/dist/spring/index.js +39 -0
- package/dist/spring/index.js.map +1 -0
- package/dist/spring/primitives.d.ts +3 -0
- package/dist/spring/primitives.js +5 -0
- package/dist/spring/primitives.js.map +1 -0
- package/dist/state.d.ts +6 -0
- package/dist/state.js +9 -0
- package/dist/state.js.map +1 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.js +11 -0
- package/dist/utils.js.map +1 -0
- package/jsx-runtime.d.ts +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.skipState = void 0;
|
|
4
|
+
exports.useIsSkipping = useIsSkipping;
|
|
5
|
+
exports.createStage = createStage;
|
|
6
|
+
exports.useStageContext = useStageContext;
|
|
7
|
+
exports.StageContextProvider = StageContextProvider;
|
|
8
|
+
exports.useSkipCallback = useSkipCallback;
|
|
9
|
+
exports.useInterruptCallback = useInterruptCallback;
|
|
10
|
+
exports.useSkipBlocker = useSkipBlocker;
|
|
11
|
+
exports.useBeforeHandleCommandCallback = useBeforeHandleCommandCallback;
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const valtio_1 = require("valtio");
|
|
14
|
+
const useScenario_1 = require("./useScenario");
|
|
15
|
+
const events_1 = require("../events");
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Skip state — independent valtio proxy (not serialized with game saves)
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
const SKIP_INTERVAL_MS = 5;
|
|
20
|
+
/** Reactive skip state. Actors read via useIsSkipping(). */
|
|
21
|
+
exports.skipState = (0, valtio_1.proxy)({ active: false });
|
|
22
|
+
/** Reactively returns whether skip (Ctrl fast-forward) is active. */
|
|
23
|
+
function useIsSkipping() {
|
|
24
|
+
return (0, valtio_1.useSnapshot)(exports.skipState).active;
|
|
25
|
+
}
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
// createStage — module-level infrastructure
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
function createStage() {
|
|
30
|
+
// --- registries ---
|
|
31
|
+
let commandSchema = null;
|
|
32
|
+
const commandHandlers = new Map();
|
|
33
|
+
const textLineHandlers = [];
|
|
34
|
+
const skipCallbacks = [];
|
|
35
|
+
const interruptCallbacks = [];
|
|
36
|
+
const skipBlockers = [];
|
|
37
|
+
const beforeHandleCommandCallbacks = [];
|
|
38
|
+
// --- registration functions ---
|
|
39
|
+
/**
|
|
40
|
+
* Register command schema.
|
|
41
|
+
* Returns an unregister function.
|
|
42
|
+
*/
|
|
43
|
+
function registerCommandSchema(schema) {
|
|
44
|
+
if (commandSchema !== null) {
|
|
45
|
+
console.warn('[Stage] Command schema is already registered — overwriting.');
|
|
46
|
+
}
|
|
47
|
+
commandSchema = schema;
|
|
48
|
+
return () => {
|
|
49
|
+
if (commandSchema === schema) {
|
|
50
|
+
commandSchema = null;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Register a command handler for one or more command names.
|
|
56
|
+
* Returns an unregister function.
|
|
57
|
+
*/
|
|
58
|
+
function registerCommand(commands, handler) {
|
|
59
|
+
const names = Array.isArray(commands) ? commands : [commands];
|
|
60
|
+
for (const name of names) {
|
|
61
|
+
if (commandHandlers.has(name)) {
|
|
62
|
+
console.warn(`[Stage] Command handler for "${name}" is already registered — overwriting.`);
|
|
63
|
+
}
|
|
64
|
+
commandHandlers.set(name, handler);
|
|
65
|
+
}
|
|
66
|
+
return () => {
|
|
67
|
+
for (const name of names) {
|
|
68
|
+
if (commandHandlers.get(name) === handler) {
|
|
69
|
+
commandHandlers.delete(name);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Register a text line handler.
|
|
76
|
+
* Returns an unregister function.
|
|
77
|
+
*/
|
|
78
|
+
function registerTextLine(handler) {
|
|
79
|
+
textLineHandlers.push(handler);
|
|
80
|
+
return () => {
|
|
81
|
+
const idx = textLineHandlers.indexOf(handler);
|
|
82
|
+
if (idx !== -1)
|
|
83
|
+
textLineHandlers.splice(idx, 1);
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Add a skip callback (called when scenariowaitingcancelled fires).
|
|
88
|
+
* Returns a remove function.
|
|
89
|
+
*/
|
|
90
|
+
function addSkipCallback(cb) {
|
|
91
|
+
skipCallbacks.push(cb);
|
|
92
|
+
return () => {
|
|
93
|
+
const idx = skipCallbacks.indexOf(cb);
|
|
94
|
+
if (idx !== -1)
|
|
95
|
+
skipCallbacks.splice(idx, 1);
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Add an interrupt callback (called on user click, in order).
|
|
100
|
+
* Return `true` from the callback to consume the click.
|
|
101
|
+
* Returns a remove function.
|
|
102
|
+
*/
|
|
103
|
+
function addInterruptCallback(cb) {
|
|
104
|
+
interruptCallbacks.push(cb);
|
|
105
|
+
return () => {
|
|
106
|
+
const idx = interruptCallbacks.indexOf(cb);
|
|
107
|
+
if (idx !== -1)
|
|
108
|
+
interruptCallbacks.splice(idx, 1);
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Try to interrupt: iterate through interrupt callbacks until one returns true.
|
|
113
|
+
* Returns true if a callback consumed the event.
|
|
114
|
+
*/
|
|
115
|
+
function tryInterrupt() {
|
|
116
|
+
for (const cb of interruptCallbacks) {
|
|
117
|
+
try {
|
|
118
|
+
if (cb())
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
console.error('Error in interrupt callback:', err);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
// --- skip blocker ---
|
|
128
|
+
/**
|
|
129
|
+
* Add a skip blocker callback. Return `true` from the callback to block skipping.
|
|
130
|
+
* Returns a remove function.
|
|
131
|
+
*/
|
|
132
|
+
function addSkipBlocker(cb) {
|
|
133
|
+
skipBlockers.push(cb);
|
|
134
|
+
return () => {
|
|
135
|
+
const idx = skipBlockers.indexOf(cb);
|
|
136
|
+
if (idx !== -1)
|
|
137
|
+
skipBlockers.splice(idx, 1);
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/** Returns true if any registered skip blocker is active. */
|
|
141
|
+
function isAnyBlockerActive() {
|
|
142
|
+
for (const cb of skipBlockers) {
|
|
143
|
+
try {
|
|
144
|
+
if (cb())
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
console.error('Error in skip blocker callback:', err);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
/** Add a callback to be invoked before handling each command. */
|
|
154
|
+
function addBeforeHandleCommandCallback(cb) {
|
|
155
|
+
beforeHandleCommandCallbacks.push(cb);
|
|
156
|
+
return () => {
|
|
157
|
+
const idx = beforeHandleCommandCallbacks.indexOf(cb);
|
|
158
|
+
if (idx !== -1)
|
|
159
|
+
beforeHandleCommandCallbacks.splice(idx, 1);
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// --- skip (Ctrl fast-forward) management ---
|
|
163
|
+
let _skipTimer = null;
|
|
164
|
+
/** Schedule a delayed nextLine() call for the skip chain. */
|
|
165
|
+
function scheduleNextLine() {
|
|
166
|
+
if (_skipTimer !== null)
|
|
167
|
+
clearTimeout(_skipTimer);
|
|
168
|
+
_skipTimer = setTimeout(() => {
|
|
169
|
+
_skipTimer = null;
|
|
170
|
+
if (exports.skipState.active)
|
|
171
|
+
(0, useScenario_1.nextLine)();
|
|
172
|
+
}, SKIP_INTERVAL_MS);
|
|
173
|
+
}
|
|
174
|
+
/** Enter skip mode. Called when Ctrl is pressed. */
|
|
175
|
+
function startSkip() {
|
|
176
|
+
if (exports.skipState.active)
|
|
177
|
+
return;
|
|
178
|
+
if (isAnyBlockerActive())
|
|
179
|
+
return;
|
|
180
|
+
exports.skipState.active = true;
|
|
181
|
+
invokeSkipCallbacks(); // finish current animations
|
|
182
|
+
tryInterrupt(); // finish current printing
|
|
183
|
+
scheduleNextLine(); // kick off the chain
|
|
184
|
+
}
|
|
185
|
+
/** Exit skip mode. Called when Ctrl is released, window blurs, or Stage unmounts. */
|
|
186
|
+
function stopSkip() {
|
|
187
|
+
exports.skipState.active = false;
|
|
188
|
+
if (_skipTimer !== null) {
|
|
189
|
+
clearTimeout(_skipTimer);
|
|
190
|
+
_skipTimer = null;
|
|
191
|
+
// ensure engine continues normally
|
|
192
|
+
(0, useScenario_1.nextLine)();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function isSkipping() {
|
|
196
|
+
return exports.skipState.active;
|
|
197
|
+
}
|
|
198
|
+
// --- internal helpers ---
|
|
199
|
+
/** Build a one-shot GameControl for a single dispatch cycle. */
|
|
200
|
+
function buildControl() {
|
|
201
|
+
let handled = false;
|
|
202
|
+
let unskippableFlag = false;
|
|
203
|
+
const control = {
|
|
204
|
+
setWaiting(time, skippable) {
|
|
205
|
+
handled = true;
|
|
206
|
+
if (exports.skipState.active) {
|
|
207
|
+
// Skip mode: finish residual animations and continue the chain
|
|
208
|
+
invokeSkipCallbacks();
|
|
209
|
+
scheduleNextLine();
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
(0, useScenario_1.setWaiting)(time, skippable);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
hold() {
|
|
216
|
+
handled = true;
|
|
217
|
+
if (exports.skipState.active && !unskippableFlag) {
|
|
218
|
+
if (isAnyBlockerActive()) {
|
|
219
|
+
stopSkip();
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
scheduleNextLine();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else if (exports.skipState.active && unskippableFlag) {
|
|
226
|
+
stopSkip();
|
|
227
|
+
}
|
|
228
|
+
// When not skipping: do nothing (normal hold behavior)
|
|
229
|
+
},
|
|
230
|
+
nextLine() {
|
|
231
|
+
handled = true;
|
|
232
|
+
void (0, useScenario_1.nextLine)();
|
|
233
|
+
},
|
|
234
|
+
unskippable() {
|
|
235
|
+
unskippableFlag = true;
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
return { control, wasHandled: () => handled };
|
|
239
|
+
}
|
|
240
|
+
// Transform actual command object to a more convenient format
|
|
241
|
+
function transformCommand(command) {
|
|
242
|
+
if (commandSchema === null) {
|
|
243
|
+
throw new Error('No command schema registered in Stage');
|
|
244
|
+
}
|
|
245
|
+
const parsed = commandSchema.safeParse({
|
|
246
|
+
command: command.command,
|
|
247
|
+
...Object.fromEntries(command.arguments.map((arg) => [arg.name, arg.value])),
|
|
248
|
+
});
|
|
249
|
+
if (!parsed.success) {
|
|
250
|
+
throw new Error(`Invalid command: ${command.command} with arguments ${JSON.stringify(command.arguments)}`);
|
|
251
|
+
}
|
|
252
|
+
return parsed.data;
|
|
253
|
+
}
|
|
254
|
+
/** Dispatch a scenariocommandline event. */
|
|
255
|
+
function dispatchCommand(e) {
|
|
256
|
+
// execute beforeHandleCommand callbacks
|
|
257
|
+
for (const cb of beforeHandleCommandCallbacks) {
|
|
258
|
+
try {
|
|
259
|
+
cb();
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
console.error('Error in beforeHandleCommand callback:', err);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
let cmd;
|
|
266
|
+
try {
|
|
267
|
+
cmd = transformCommand(e);
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
console.error('Failed to transform scenario command:', err);
|
|
271
|
+
void (0, useScenario_1.nextLine)();
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const handler = commandHandlers.get(cmd.command);
|
|
275
|
+
if (!handler) {
|
|
276
|
+
console.warn(`[Stage] No handler registered for command "${cmd.command}". Auto-advancing.`);
|
|
277
|
+
void (0, useScenario_1.nextLine)();
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const { control, wasHandled } = buildControl();
|
|
281
|
+
handler(cmd, control);
|
|
282
|
+
// Default: auto-advance if handler didn't explicitly control flow
|
|
283
|
+
if (!wasHandled()) {
|
|
284
|
+
void (0, useScenario_1.nextLine)();
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/** Dispatch a scenariotext event. */
|
|
288
|
+
function dispatchTextLine(e) {
|
|
289
|
+
const { control, wasHandled } = buildControl();
|
|
290
|
+
for (const handler of textLineHandlers) {
|
|
291
|
+
handler(e, control);
|
|
292
|
+
}
|
|
293
|
+
if (!wasHandled()) {
|
|
294
|
+
void (0, useScenario_1.nextLine)();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** Invoke all skip callbacks. */
|
|
298
|
+
function invokeSkipCallbacks() {
|
|
299
|
+
for (const cb of skipCallbacks) {
|
|
300
|
+
try {
|
|
301
|
+
cb();
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
console.error('Error in skip callback:', err);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// --- bind engine events (called inside StageContextProvider's useEffect) ---
|
|
309
|
+
function bindEvents() {
|
|
310
|
+
const cleanups = [
|
|
311
|
+
(0, events_1.addEventListener)('scenariocommandline', (e) => {
|
|
312
|
+
dispatchCommand(e);
|
|
313
|
+
}),
|
|
314
|
+
(0, events_1.addEventListener)('scenariotext', (e) => {
|
|
315
|
+
dispatchTextLine(e);
|
|
316
|
+
}),
|
|
317
|
+
(0, events_1.addEventListener)('scenariowaiting', () => {
|
|
318
|
+
console.log('still waiting...');
|
|
319
|
+
}),
|
|
320
|
+
(0, events_1.addEventListener)('scenariowaitingcancelled', () => {
|
|
321
|
+
invokeSkipCallbacks();
|
|
322
|
+
}),
|
|
323
|
+
];
|
|
324
|
+
return () => {
|
|
325
|
+
for (const cleanup of cleanups)
|
|
326
|
+
cleanup();
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
registerCommandSchema,
|
|
331
|
+
registerCommand,
|
|
332
|
+
registerTextLine,
|
|
333
|
+
addSkipCallback,
|
|
334
|
+
addInterruptCallback,
|
|
335
|
+
addSkipBlocker,
|
|
336
|
+
addBeforeHandleCommandCallback,
|
|
337
|
+
tryInterrupt,
|
|
338
|
+
startSkip,
|
|
339
|
+
stopSkip,
|
|
340
|
+
isSkipping,
|
|
341
|
+
bindEvents,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
const StageContext = (0, react_1.createContext)(null);
|
|
345
|
+
/** Access the stage instance from within StageContextProvider. */
|
|
346
|
+
function useStageContext() {
|
|
347
|
+
const ctx = (0, react_1.useContext)(StageContext);
|
|
348
|
+
if (!ctx)
|
|
349
|
+
throw new Error('useStageContext must be used within StageContextProvider');
|
|
350
|
+
return ctx;
|
|
351
|
+
}
|
|
352
|
+
// ---------------------------------------------------------------------------
|
|
353
|
+
// StageContextProvider — binds engine events within React lifecycle
|
|
354
|
+
// ---------------------------------------------------------------------------
|
|
355
|
+
function StageContextProvider({ stage, children }) {
|
|
356
|
+
// Bind engine events on mount, unbind on unmount
|
|
357
|
+
(0, react_1.useEffect)(() => {
|
|
358
|
+
return stage.bindEvents();
|
|
359
|
+
}, [stage]);
|
|
360
|
+
return (0, react_1.createElement)(StageContext.Provider, { value: stage }, children);
|
|
361
|
+
}
|
|
362
|
+
// ---------------------------------------------------------------------------
|
|
363
|
+
// Actor hooks — register skip / interrupt callbacks
|
|
364
|
+
// ---------------------------------------------------------------------------
|
|
365
|
+
/**
|
|
366
|
+
* Register a skip callback that fires when scenariowaitingcancelled is received.
|
|
367
|
+
* Automatically removed on unmount.
|
|
368
|
+
*/
|
|
369
|
+
function useSkipCallback(callback) {
|
|
370
|
+
const stage = useStageContext();
|
|
371
|
+
(0, react_1.useEffect)(() => {
|
|
372
|
+
return stage.addSkipCallback(callback);
|
|
373
|
+
}, [stage, callback]);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Register an interrupt callback for user click handling.
|
|
377
|
+
* Return `true` from the callback to consume the click.
|
|
378
|
+
* Automatically removed on unmount.
|
|
379
|
+
*/
|
|
380
|
+
function useInterruptCallback(callback) {
|
|
381
|
+
const stage = useStageContext();
|
|
382
|
+
(0, react_1.useEffect)(() => {
|
|
383
|
+
return stage.addInterruptCallback(callback);
|
|
384
|
+
}, [stage, callback]);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Register a skip blocker callback. Return `true` to block skipping.
|
|
388
|
+
* When any blocker is active, skip mode cannot start or will be stopped.
|
|
389
|
+
* Automatically removed on unmount.
|
|
390
|
+
*
|
|
391
|
+
* NOTE: `callback` must be a stable reference (wrap with `useCallback`).
|
|
392
|
+
*/
|
|
393
|
+
function useSkipBlocker(callback) {
|
|
394
|
+
const stage = useStageContext();
|
|
395
|
+
(0, react_1.useEffect)(() => {
|
|
396
|
+
return stage.addSkipBlocker(callback);
|
|
397
|
+
}, [stage, callback]);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Register a callback to be invoked before handling each command.
|
|
401
|
+
* Automatically removed on unmount.
|
|
402
|
+
*/
|
|
403
|
+
function useBeforeHandleCommandCallback(callback) {
|
|
404
|
+
const stage = useStageContext();
|
|
405
|
+
(0, react_1.useEffect)(() => {
|
|
406
|
+
return stage.addBeforeHandleCommandCallback(callback);
|
|
407
|
+
}, [stage, callback]);
|
|
408
|
+
}
|
|
409
|
+
//# sourceMappingURL=useStage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStage.js","sourceRoot":"","sources":["../../src/hooks/useStage.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.d.ts
ADDED
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./hooks/useFadeInOut"), exports);
|
|
18
|
+
__exportStar(require("./hooks/useScenario"), exports);
|
|
19
|
+
__exportStar(require("./hooks/useSoundEffect"), exports);
|
|
20
|
+
__exportStar(require("./hooks/useStage"), exports);
|
|
21
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,sDAAoC;AACpC,yDAAuC;AACvC,mDAAiC"}
|
package/dist/lib.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './react';
|
|
2
|
+
import * as moyu from './moyu';
|
|
3
|
+
export { executeNodeCommand, executePluginCommand } from './moyu';
|
|
4
|
+
export * from './spring';
|
|
5
|
+
export type * from './declaration';
|
|
6
|
+
export * from './events';
|
|
7
|
+
export type * from './node';
|
|
8
|
+
export * from './utils';
|
|
9
|
+
export * from './commands';
|
|
10
|
+
export * from './runtime-globals';
|
|
11
|
+
export * from './components/navigation';
|
|
12
|
+
export * from './hooks';
|
|
13
|
+
export { moyu };
|
package/dist/lib.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.moyu = exports.executePluginCommand = exports.executeNodeCommand = void 0;
|
|
40
|
+
__exportStar(require("./react"), exports);
|
|
41
|
+
const moyu = __importStar(require("./moyu"));
|
|
42
|
+
exports.moyu = moyu;
|
|
43
|
+
var moyu_1 = require("./moyu");
|
|
44
|
+
Object.defineProperty(exports, "executeNodeCommand", { enumerable: true, get: function () { return moyu_1.executeNodeCommand; } });
|
|
45
|
+
Object.defineProperty(exports, "executePluginCommand", { enumerable: true, get: function () { return moyu_1.executePluginCommand; } });
|
|
46
|
+
__exportStar(require("./spring"), exports);
|
|
47
|
+
__exportStar(require("./events"), exports);
|
|
48
|
+
__exportStar(require("./utils"), exports);
|
|
49
|
+
__exportStar(require("./commands"), exports);
|
|
50
|
+
__exportStar(require("./runtime-globals"), exports);
|
|
51
|
+
__exportStar(require("./components/navigation"), exports);
|
|
52
|
+
__exportStar(require("./hooks"), exports);
|
|
53
|
+
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA+B;AAYtB,oBAAI;AAXb,+BAAkE;AAAzD,0GAAA,kBAAkB,OAAA;AAAE,4GAAA,oBAAoB,OAAA;AACjD,2CAAyB;AAEzB,2CAAyB;AAEzB,0CAAwB;AACxB,6CAA2B;AAC3B,oDAAkC;AAClC,0DAAwC;AACxC,0CAAwB"}
|
package/dist/moyu.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Command, MaybePromise } from './commands';
|
|
2
|
+
import type { MoyuEvent } from './events';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
moyu: any;
|
|
6
|
+
}
|
|
7
|
+
var __moyu_receive_event: (event: MoyuEvent) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createInstance(nodeType: string, label: string | undefined, props: Record<string, any>): number;
|
|
10
|
+
export declare function destroyInstance(nodeId: number): void;
|
|
11
|
+
export declare function addChild(nodeId: number, childNodeId: number): void;
|
|
12
|
+
export declare function insertChild(nodeId: number, index: number, childNodeId: number): void;
|
|
13
|
+
export declare function insertChildBefore(nodeId: number, beforeChildNodeId: number, childNodeId: number): void;
|
|
14
|
+
export declare function removeChildAt(nodeId: number, index: number): void;
|
|
15
|
+
export declare function removeChild(nodeId: number, childNodeId: number): void;
|
|
16
|
+
export declare function updateProps(nodeId: number, props: Record<string, any>): void;
|
|
17
|
+
export declare function executeNodeCommand(nodeId: number, payload: Command): MaybePromise;
|
|
18
|
+
export declare function executePluginCommand(pluginName: string, payload: Command): MaybePromise;
|
package/dist/moyu.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInstance = createInstance;
|
|
4
|
+
exports.destroyInstance = destroyInstance;
|
|
5
|
+
exports.addChild = addChild;
|
|
6
|
+
exports.insertChild = insertChild;
|
|
7
|
+
exports.insertChildBefore = insertChildBefore;
|
|
8
|
+
exports.removeChildAt = removeChildAt;
|
|
9
|
+
exports.removeChild = removeChild;
|
|
10
|
+
exports.updateProps = updateProps;
|
|
11
|
+
exports.executeNodeCommand = executeNodeCommand;
|
|
12
|
+
exports.executePluginCommand = executePluginCommand;
|
|
13
|
+
function createInstance(nodeType, label, props) {
|
|
14
|
+
let node_id = 0;
|
|
15
|
+
const ret = moyu.pushCommand('create_instance', [nodeType, label, props], (id) => {
|
|
16
|
+
node_id = id;
|
|
17
|
+
});
|
|
18
|
+
if (ret) {
|
|
19
|
+
return ret;
|
|
20
|
+
}
|
|
21
|
+
return node_id;
|
|
22
|
+
}
|
|
23
|
+
function destroyInstance(nodeId) {
|
|
24
|
+
moyu.pushCommand('destroy_instance', [nodeId]);
|
|
25
|
+
}
|
|
26
|
+
function addChild(nodeId, childNodeId) {
|
|
27
|
+
moyu.pushCommand('add_child', [nodeId, childNodeId]);
|
|
28
|
+
}
|
|
29
|
+
function insertChild(nodeId, index, childNodeId) {
|
|
30
|
+
moyu.pushCommand('insert_child', [nodeId, index, childNodeId]);
|
|
31
|
+
}
|
|
32
|
+
function insertChildBefore(nodeId, beforeChildNodeId, childNodeId) {
|
|
33
|
+
moyu.pushCommand('insert_child_before', [nodeId, beforeChildNodeId, childNodeId]);
|
|
34
|
+
}
|
|
35
|
+
function removeChildAt(nodeId, index) {
|
|
36
|
+
moyu.pushCommand('remove_child_at', [nodeId, index]);
|
|
37
|
+
}
|
|
38
|
+
function removeChild(nodeId, childNodeId) {
|
|
39
|
+
moyu.pushCommand('remove_child', [nodeId, childNodeId]);
|
|
40
|
+
}
|
|
41
|
+
function updateProps(nodeId, props) {
|
|
42
|
+
moyu.pushCommand('update_props', [nodeId, props]);
|
|
43
|
+
}
|
|
44
|
+
function executeNodeCommand(nodeId, payload) {
|
|
45
|
+
return moyu.executeNodeCommand(nodeId, payload);
|
|
46
|
+
}
|
|
47
|
+
function executePluginCommand(pluginName, payload) {
|
|
48
|
+
return moyu.executePluginCommand(pluginName, payload);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=moyu.js.map
|
package/dist/moyu.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moyu.js","sourceRoot":"","sources":["../src/moyu.ts"],"names":[],"mappings":";;AAmBA,wCASC;AAED,0CAEC;AAED,4BAEC;AAED,kCAEC;AAED,8CAEC;AAED,sCAEC;AAED,kCAEC;AAED,kCAEC;AAED,gDAEC;AAED,oDAEC;AA7CD,SAAgB,cAAc,CAAC,QAAgB,EAAE,KAAyB,EAAE,KAA0B;IACpG,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,GAAG,GAAW,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,EAAU,EAAE,EAAE;QAC/F,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,eAAe,CAAC,MAAc;IAC5C,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,QAAQ,CAAC,MAAc,EAAE,WAAmB;IAC1D,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,KAAa,EAAE,WAAmB;IAC5E,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAc,EAAE,iBAAyB,EAAE,WAAmB;IAC9F,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc,EAAE,KAAa;IACzD,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,WAAmB;IAC7D,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,KAA0B;IACpE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAc,EAAE,OAAgB;IACjE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,OAAgB;IACvE,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from './commands';
|
|
2
|
+
import type { BubbleEvent } from './events/base';
|
|
3
|
+
export declare class Node {
|
|
4
|
+
nodeId: number;
|
|
5
|
+
label?: string;
|
|
6
|
+
props: Record<string, any>;
|
|
7
|
+
listeners: Record<string, (evt?: BubbleEvent | Record<string, any>) => any>;
|
|
8
|
+
static create(label: string, type: string, props: Record<string, any>): Node;
|
|
9
|
+
static rootNode(): Node;
|
|
10
|
+
addChild(child: Node): void;
|
|
11
|
+
insertChild(index: number, child: Node): void;
|
|
12
|
+
insertChildBefore(beforeChild: Node, child: Node): void;
|
|
13
|
+
removeChild(child: Node): void;
|
|
14
|
+
updateProps(props: Record<string, any>): void;
|
|
15
|
+
executeCommand(payload: Command): any;
|
|
16
|
+
}
|