@moku-labs/game 0.15.9 → 0.15.10
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/dist/app/page.d.mts +1 -1
- package/dist/app/system.d.mts +2 -2
- package/dist/app.d.mts +2 -2
- package/dist/app.mjs +1 -1
- package/dist/{commands-5woFUxUr.d.mts → commands-DoMH0hnR.d.mts} +2 -2
- package/dist/control.d.mts +1 -1
- package/dist/{index-DT9aYVGd.d.mts → index-PbX7OQIC.d.mts} +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.mjs +1 -1
- package/dist/inspect.d.mts +2 -2
- package/dist/jsx-dev-runtime.d.mts +1 -1
- package/dist/jsx-runtime.d.mts +1 -1
- package/dist/{runtime-BZQQPq56.d.mts → runtime-Bk_rHR3K.d.mts} +1 -1
- package/dist/{src-Cs1bP3v7.mjs → src-zXAFOqEc.mjs} +220 -49
- package/dist/testing.d.mts +2 -2
- package/dist/testing.mjs +1 -1
- package/dist/{types-DDmfkONF.d.mts → types-B73p1XBn.d.mts} +1 -1
- package/dist/{types-DK-IYk-s.d.mts → types-Dr5uC2fS.d.mts} +3 -3
- package/dist/{types-D8roM1u3.d.mts → types-DwktxRrt.d.mts} +4 -2
- package/dist/{visual-1doiBOD3.d.mts → visual-CQnurNOj.d.mts} +3 -3
- package/dist/visual.d.mts +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
package/dist/app/page.d.mts
CHANGED
package/dist/app/system.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Or as PlayerStateProvider } from "../types-i77Nrrv-.mjs";
|
|
2
|
-
import { mt as PlatformProvider } from "../index-
|
|
3
|
-
import { _ as SystemShellFactory, g as SystemName, h as SystemModules } from "../types-
|
|
2
|
+
import { mt as PlatformProvider } from "../index-PbX7OQIC.mjs";
|
|
3
|
+
import { _ as SystemShellFactory, g as SystemName, h as SystemModules } from "../types-Dr5uC2fS.mjs";
|
|
4
4
|
import { Back, Haptics, KeepAwake, Lifecycle, Store } from "@moku-labs/system";
|
|
5
5
|
|
|
6
6
|
//#region src/app/system.d.ts
|
package/dist/app.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cr as Json } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { H as StringTable } from "./types-
|
|
3
|
-
import { a as GameHandle, c as MemoryProvider, d as SaveKind, f as Scenario, g as SystemName, i as GameDefinition, l as PageAgent, n as GameApp, o as GamePluginConfigs, p as ScreenSeams, r as GameConfig, s as HeadlessSeams, v as WithGameState } from "./types-
|
|
2
|
+
import { H as StringTable } from "./types-DwktxRrt.mjs";
|
|
3
|
+
import { a as GameHandle, c as MemoryProvider, d as SaveKind, f as Scenario, g as SystemName, i as GameDefinition, l as PageAgent, n as GameApp, o as GamePluginConfigs, p as ScreenSeams, r as GameConfig, s as HeadlessSeams, v as WithGameState } from "./types-Dr5uC2fS.mjs";
|
|
4
4
|
import { AnyPluginInstance } from "@moku-labs/core";
|
|
5
5
|
|
|
6
6
|
//#region src/app/define.d.ts
|
package/dist/app.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bt as audioPlugin, J as platformPlugin, i as screen, kt as effectsPlugin, m as flattenFeatures, t as createApp } from "./src-
|
|
1
|
+
import { Bt as audioPlugin, J as platformPlugin, i as screen, kt as effectsPlugin, m as flattenFeatures, t as createApp } from "./src-zXAFOqEc.mjs";
|
|
2
2
|
import { t as memory } from "./memory-CWlqhS7l.mjs";
|
|
3
3
|
import { n as isFakeClock, t as fakeClock } from "./fake-6mazmHK3.mjs";
|
|
4
4
|
//#region src/app/define.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { E as Api$1, Gr as FrameRate, L as Captured, Lr as Api, Mr as Snapshot, Ot as DebugSwitches, Pr as StoreApi, Qn as Bookmark, Qt as Api$2, S as ScenesApi, Yr as Time, tr as FlowState } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { P as AnimApi, a as AudioApi, h as EffectsApi, r as UiApi } from "./types-
|
|
3
|
-
import { M as InputApi } from "./types-
|
|
2
|
+
import { P as AnimApi, a as AudioApi, h as EffectsApi, r as UiApi } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { M as InputApi } from "./types-DwktxRrt.mjs";
|
|
4
4
|
import { t as HeadlessApp } from "./headless-CrxofjLt.mjs";
|
|
5
5
|
import { n as Command, r as ControlApp } from "./types-YXykgTOp.mjs";
|
|
6
6
|
|
package/dist/control.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as HeadlessApp } from "./headless-CrxofjLt.mjs";
|
|
2
2
|
import { i as InputArguments, n as Command, o as InputSchema, s as Ran } from "./types-YXykgTOp.mjs";
|
|
3
|
-
import { t as commands } from "./commands-
|
|
3
|
+
import { t as commands } from "./commands-DoMH0hnR.mjs";
|
|
4
4
|
import { t as defineCommand } from "./define-B8A5IoeS.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/plugins/flow/doors/dev.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { $n as DefineNode, $r as Require, $t as Config$8, Bn as State$3, Br as PauseReason, C as State$7, Cr as Json, D as Config$6, Dn as ProjectionMotion, Dr as Patch, E as Api$4, En as NumericFields, Fn as Config$3, Fr as RngApi, In as EmitterIdOf, Jn as FeatureDescription, Jr as ThermalReading, Kr as RateChange, Kt as SpriteOptions, Ln as GameTypes, Lr as Api$3, Lt as HudPartValue, Nn as Api$2, Nt as ViewportSize, On as ProjectionSpec, P as State$6, Pn as BundlesOf, Pr as StoreApi, Qr as Events$1, Qt as Api$6, Rn as HudKeysOf, Rr as Config$4, S as ScenesApi, Sn as Ease, Tr as State$5, U as FrameRecord, Un as defineFlow, Ur as Api$5, Vn as TextStylesOf, Vr as State$4, Vt as OverlayValue, W as FrameRing, Wr as Config$7, Wt as ShapeValue, Xn as FeatureTree, Xt as sprite, Yn as FeaturePlugin, Yt as TransformValue, Zr as Config$9, _ as DefineScene, _n as SystemDefinition, a as Config$1, ar as SceneIdOf, b as SceneDefinition, c as LoadBundles, cn as ComponentType, cr as Effect, dr as Hint, et as PassKind, f as State$1, g as AnySceneProjection, gn as ResourceType, gr as Config$2, hn as QueryTerm, i as BundleSpec, kn as ReducedMotion, l as LoadReason, ln as ComponentValue, lr as EffectOptions, mn as Narrowed, mr as Api$1, o as DefineBundles, on as ComponentHandle, p as Tier, pn as Mut, pr as Answer, qr as State$8, qt as SpriteValue, r as BundleMap, sr as Descriptor, t as Api, tn as State$9, u as LoadResult, ur as GuideOptions, vn as SystemFor, vr as State$2, wr as Root, x as SceneSpec, xn as DescriptionNode, xr as Config$5, y as LayerMap, yn as TagType, zr as Events, zt as NineSliceValue } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { A as GlowValue, B as Target, C as BlurValue, D as FilterComponent, F as AnimPlayerValue, H as HapticKind, I as Config$10, K as defineAnimation, L as FramesValue, M as OutlineValue, N as UniformDeclaration, O as FilterSpec, P as AnimApi, Q as play, R as MotionKeyframe, S as AlphaValue, T as DisplacementValue, U as SfxDescriptor, W as Step, _ as State$12, a as AudioApi, b as EmitterDefinition, c as MusicDescriptor, ct as OverlayApi, d as State$11, f as VolumesFor, h as EffectsApi, j as NoiseValue, k as FilterValueOf, l as MusicOptions, m as Config$12, n as State$13, r as UiApi, s as Config$11, t as Config$13, w as ColorMatrixValue, x as EmitterValue, y as EmitterConfig, z as State$10 } from "./types-
|
|
3
|
-
import { A as defineComponent, B as Part, C as TextApi, D as TextStyles, E as TextStyleInput, F as Argument, I as Config$14, J as Style, K as IsFlags, L as I18nApi, M as InputApi, N as State$15, O as TextValue, R as IntlKit, S as State$16, U as TextKey, V as State$14, W as TypedTr, X as WhenFlags, _ as BindField, b as CountdownValue, h as IntrinsicElementsFor, j as Config$15, m as defineTokens, q as ResolvedStyle, s as PopupComponent, v as BindOptions, w as TextBind, x as Point, y as Config$16, z as Message } from "./types-
|
|
2
|
+
import { A as GlowValue, B as Target, C as BlurValue, D as FilterComponent, F as AnimPlayerValue, H as HapticKind, I as Config$10, K as defineAnimation, L as FramesValue, M as OutlineValue, N as UniformDeclaration, O as FilterSpec, P as AnimApi, Q as play, R as MotionKeyframe, S as AlphaValue, T as DisplacementValue, U as SfxDescriptor, W as Step, _ as State$12, a as AudioApi, b as EmitterDefinition, c as MusicDescriptor, ct as OverlayApi, d as State$11, f as VolumesFor, h as EffectsApi, j as NoiseValue, k as FilterValueOf, l as MusicOptions, m as Config$12, n as State$13, r as UiApi, s as Config$11, t as Config$13, w as ColorMatrixValue, x as EmitterValue, y as EmitterConfig, z as State$10 } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { A as defineComponent, B as Part, C as TextApi, D as TextStyles, E as TextStyleInput, F as Argument, I as Config$14, J as Style, K as IsFlags, L as I18nApi, M as InputApi, N as State$15, O as TextValue, R as IntlKit, S as State$16, U as TextKey, V as State$14, W as TypedTr, X as WhenFlags, _ as BindField, b as CountdownValue, h as IntrinsicElementsFor, j as Config$15, m as defineTokens, q as ResolvedStyle, s as PopupComponent, v as BindOptions, w as TextBind, x as Point, y as Config$16, z as Message } from "./types-DwktxRrt.mjs";
|
|
4
4
|
import { Log } from "@moku-labs/common/browser";
|
|
5
5
|
import { PluginCtx } from "@moku-labs/core";
|
|
6
6
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $ as PROBLEM_RULES, B as FrameColumns, Bt as Overlay, Ct as ProblemRule, Dt as WarmDetail, Er as types_d_exports$10, Et as ShaderWhat, Ft as Display, G as LongFrameEntry, Gn as slot, Gt as Sprite, H as FrameReadout, Hn as types_d_exports$6, Hr as types_d_exports$9, Ht as Parent, I as types_d_exports$12, It as HudPart, J as OverlayEventDetail, Jt as Transform, K as MONITOR_SECTIONS, Kn as to, Lt as HudPartValue, N as PoolTrim, O as MonitorConfig, Q as PERF_LOG_VERSION, R as MonitorCounts, Rt as NineSlice, St as ProblemEventDetail, T as AdaptiveScale, Tt as ShaderEventDetail, U as FrameRecord, Ut as Shape, V as FrameReadResult, Vt as OverlayValue, W as FrameRing, Wn as exit, X as PERF_CAUSES, Xr as types_d_exports$15, Xt as sprite, Y as OverlayWhat, Z as PERF_GAP_BUCKETS, Zt as DEMAND_REASONS, _t as PerfSpikeLine, at as PerfCollectorLine, bt as PerfThermalLine, ct as PerfEventLine, dt as PerfHeaderLine, et as PassKind, ft as PerfLogLine, gt as PerfSampleLine, h as types_d_exports$1, ht as PerfMeasured, it as PerfChangeEntry, jr as SaveUnreadableError, lt as PerfEventName, mt as PerfMarkLine, nn as types_d_exports$17, nt as PerfCause, ot as PerfCounts, pt as PerfLongFrameLine, q as MonitorSections, qn as type, rt as PerfChange, st as PerfDisplay, tt as PassRecord, ut as PerfGapLine, vt as PerfStartupLine, w as types_d_exports$13, wt as SHADER_WHATS, xn as DescriptionNode, xt as PoolTrimDetail, yr as types_d_exports$3, yt as PerfTelemetryLine } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { $ as sequence, E as FilterArea, G as HAPTIC_KINDS, H as HapticKind, J as frames, K as defineAnimation, Q as play, V as types_d_exports, X as mark, Y as haptic, Z as parallel, at as tween, et as set, i as types_d_exports$16, it as stagger, lt as types_d_exports$4, nt as spawn, ot as use, p as types_d_exports$2, q as external, rt as spawned, st as wait, tt as sfx, v as types_d_exports$5 } from "./types-
|
|
3
|
-
import { A as defineComponent, G as types_d_exports$7, P as types_d_exports$8, T as TextFormat, b as CountdownValue, d as LocalWrite, f as ScrollState, k as types_d_exports$14, l as Box, m as defineTokens, p as popup, u as DebugTrigger, v as BindOptions } from "./types-
|
|
4
|
-
import { $ as tag, A as DropTarget, At as bind, B as Traceable, C as AnimPlayer, Ct as clockPlugin, D as defineBundles, Dt as projection, E as defineScene, Et as animPlugin, F as Pressable, G as Layer, H as PASS_KINDS, I as Pressed, J as Tree, K as Now, L as Swipeable, M as Hovered, Mt as label, N as Pointer, O as load, Ot as Countdown, P as PointerOver, Q as system, R as Tappable, S as defineMotion, St as debugPlugin, T as Frames, Tt as assetsPlugin, U as frameAt, V as Traced, W as Exiting, X as mut, Y as component, Z as resource, _ as defineStyle, _t as lifecyclePlugin, a as defineEmitter, at as flattenFeatures, b as messageDuration, bt as flowPlugin, c as Alpha, ct as timePlugin, d as Displacement, dt as rendererPlugin, et as defineEffect, f as Glow, ft as platformPlugin, g as resolve, gt as modelPlugin, h as music, ht as types_d_exports$11, i as screen, it as defineFeature, j as Held, jt as defineTextStyles, k as Draggable, kt as Text, l as Blur, lt as textPlugin, m as Outline, mt as PlatformProvider, n as createPlugin, nt as hint, o as Emitter, ot as worldPlugin, p as Noise, pt as BackResult, q as Order, r as defineGame, rt as schedule, s as defineFilter, st as uiPlugin, t as createApp, tt as guide, u as ColorMatrix, ut as scenesPlugin, v as tr, vt as inputPlugin, w as Animation, wt as audioPlugin, x as cubicBezier, xt as effectsPlugin, y as messageArgument, yt as i18nPlugin, z as Touchable } from "./index-
|
|
2
|
+
import { $ as sequence, E as FilterArea, G as HAPTIC_KINDS, H as HapticKind, J as frames, K as defineAnimation, Q as play, V as types_d_exports, X as mark, Y as haptic, Z as parallel, at as tween, et as set, i as types_d_exports$16, it as stagger, lt as types_d_exports$4, nt as spawn, ot as use, p as types_d_exports$2, q as external, rt as spawned, st as wait, tt as sfx, v as types_d_exports$5 } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { A as defineComponent, G as types_d_exports$7, P as types_d_exports$8, T as TextFormat, b as CountdownValue, d as LocalWrite, f as ScrollState, k as types_d_exports$14, l as Box, m as defineTokens, p as popup, u as DebugTrigger, v as BindOptions } from "./types-DwktxRrt.mjs";
|
|
4
|
+
import { $ as tag, A as DropTarget, At as bind, B as Traceable, C as AnimPlayer, Ct as clockPlugin, D as defineBundles, Dt as projection, E as defineScene, Et as animPlugin, F as Pressable, G as Layer, H as PASS_KINDS, I as Pressed, J as Tree, K as Now, L as Swipeable, M as Hovered, Mt as label, N as Pointer, O as load, Ot as Countdown, P as PointerOver, Q as system, R as Tappable, S as defineMotion, St as debugPlugin, T as Frames, Tt as assetsPlugin, U as frameAt, V as Traced, W as Exiting, X as mut, Y as component, Z as resource, _ as defineStyle, _t as lifecyclePlugin, a as defineEmitter, at as flattenFeatures, b as messageDuration, bt as flowPlugin, c as Alpha, ct as timePlugin, d as Displacement, dt as rendererPlugin, et as defineEffect, f as Glow, ft as platformPlugin, g as resolve, gt as modelPlugin, h as music, ht as types_d_exports$11, i as screen, it as defineFeature, j as Held, jt as defineTextStyles, k as Draggable, kt as Text, l as Blur, lt as textPlugin, m as Outline, mt as PlatformProvider, n as createPlugin, nt as hint, o as Emitter, ot as worldPlugin, p as Noise, pt as BackResult, q as Order, r as defineGame, rt as schedule, s as defineFilter, st as uiPlugin, t as createApp, tt as guide, u as ColorMatrix, ut as scenesPlugin, v as tr, vt as inputPlugin, w as Animation, wt as audioPlugin, x as cubicBezier, xt as effectsPlugin, y as messageArgument, yt as i18nPlugin, z as Touchable } from "./index-PbX7OQIC.mjs";
|
|
5
5
|
export { type AdaptiveScale, Alpha, types_d_exports as Anim, AnimPlayer, Animation, types_d_exports$1 as Assets, types_d_exports$2 as Audio, type BackResult, type BindOptions, Blur, Box, types_d_exports$3 as Clock, ColorMatrix, Countdown, type CountdownValue, DEMAND_REASONS, types_d_exports$4 as Debug, DebugTrigger, type DescriptionNode, Displacement, Display, Draggable, DropTarget, types_d_exports$5 as Effects, Emitter, Exiting, type FilterArea, types_d_exports$6 as Flow, type FrameColumns, type FrameReadResult, type FrameReadout, type FrameRecord, type FrameRing, Frames, Glow, HAPTIC_KINDS, type HapticKind, Held, Hovered, HudPart, type HudPartValue, types_d_exports$7 as I18n, types_d_exports$8 as Input, Layer, types_d_exports$9 as Lifecycle, LocalWrite, type LongFrameEntry, MONITOR_SECTIONS, types_d_exports$10 as Model, type MonitorConfig, type MonitorCounts, type MonitorSections, NineSlice, Noise, Now, Order, Outline, Overlay, type OverlayEventDetail, type OverlayValue, type OverlayWhat, PASS_KINDS, PERF_CAUSES, PERF_GAP_BUCKETS, PERF_LOG_VERSION, PROBLEM_RULES, Parent, type PassKind, type PassRecord, type PerfCause, type PerfChange, type PerfChangeEntry, type PerfCollectorLine, type PerfCounts, type PerfDisplay, type PerfEventLine, type PerfEventName, type PerfGapLine, type PerfHeaderLine, type PerfLogLine, type PerfLongFrameLine, type PerfMarkLine, type PerfMeasured, type PerfSampleLine, type PerfSpikeLine, type PerfStartupLine, type PerfTelemetryLine, type PerfThermalLine, types_d_exports$11 as Platform, type PlatformProvider, Pointer, PointerOver, type PoolTrim, type PoolTrimDetail, Pressable, Pressed, type ProblemEventDetail, type ProblemRule, types_d_exports$12 as Renderer, SHADER_WHATS, SaveUnreadableError, types_d_exports$13 as Scenes, ScrollState, type ShaderEventDetail, type ShaderWhat, Shape, Sprite, Swipeable, Tappable, Text, type TextFormat, types_d_exports$14 as TextTypes, types_d_exports$15 as Time, Touchable, Traceable, Traced, Transform, Tree, types_d_exports$16 as Ui, type WarmDetail, types_d_exports$17 as World, animPlugin, assetsPlugin, audioPlugin, bind, clockPlugin, component, createApp, createPlugin, cubicBezier, debugPlugin, defineAnimation, defineBundles, defineComponent, defineEffect, defineEmitter, defineFeature, defineFilter, defineGame, defineMotion, defineScene, defineStyle, defineTextStyles, defineTokens, effectsPlugin, exit, external, flattenFeatures, flowPlugin, frameAt, frames, guide, haptic, hint, i18nPlugin, inputPlugin, label, lifecyclePlugin, load, mark, messageArgument, messageDuration, modelPlugin, music, mut, parallel, platformPlugin, play, popup, projection, rendererPlugin, resolve, resource, scenesPlugin, schedule, screen, sequence, set, sfx, slot, spawn, spawned, sprite, stagger, system, tag, textPlugin, timePlugin, to, tr, tween, type, uiPlugin, use, wait, worldPlugin };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as haptic, $t as PERF_LOG_VERSION, A as types_exports$6, At as Emitter, B as Box, Bt as audioPlugin, C as types_exports$13, Ct as Touchable, D as types_exports$9, Dt as messageArgument, E as types_exports$10, Et as i18nPlugin, F as types_exports$1, Ft as Glow, G as defineTokens, Gt as Animation, H as LocalWrite, Ht as assetsPlugin, I as types_exports, It as Noise, J as platformPlugin, Jt as PASS_KINDS, K as defineStyle, Kt as Frames, L as uiPlugin, Lt as Outline, M as types_exports$4, Mt as Blur, N as types_exports$3, Nt as ColorMatrix, O as types_exports$8, Ot as messageDuration, P as types_exports$2, Pt as Displacement, Q as frames, Qt as PERF_GAP_BUCKETS, R as resolve, Rt as defineFilter, S as types_exports$14, St as Tappable, T as types_exports$11, Tt as Traced, U as ScrollState, Ut as animPlugin, V as DebugTrigger, Vt as scenesPlugin, W as popup, Wt as AnimPlayer, X as defineAnimation, Xt as MONITOR_SECTIONS, Y as HAPTIC_KINDS, Yt as frameAt, Z as external, Zt as PERF_CAUSES, _ as defineBundles, _t as Pointer, a as cubicBezier, at as sfx, b as types_exports$16, bt as Pressed, c as hint, cn as to, ct as stagger, d as defineScene, dn as SaveUnreadableError, dt as wait, en as PROBLEM_RULES, et as mark, f as tr, fn as lifecyclePlugin, ft as inputPlugin, g as music, gt as Hovered, h as defineEmitter, ht as Held, i as screen, in as flowPlugin, it as set, j as types_exports$5, jt as Alpha, k as types_exports$7, kt as effectsPlugin, l as schedule, ln as type, lt as tween, m as flattenFeatures, mn as clockPlugin, mt as DropTarget, n as createPlugin, nn as DEMAND_REASONS, nt as play, o as defineEffect, on as exit, ot as spawn, p as defineFeature, pn as timePlugin, pt as Draggable, q as textPlugin, qt as rendererPlugin, r as defineGame, rn as worldPlugin, rt as sequence, s as guide, sn as slot, st as spawned, t as createApp, tn as SHADER_WHATS, tt as parallel, u as projection, un as modelPlugin, ut as use, v as load, vt as PointerOver, w as types_exports$12, wt as Traceable, x as types_exports$15, xt as Swipeable, y as types_exports$17, yt as Pressable, z as defineMotion, zt as debugPlugin } from "./src-
|
|
1
|
+
import { $ as haptic, $t as PERF_LOG_VERSION, A as types_exports$6, At as Emitter, B as Box, Bt as audioPlugin, C as types_exports$13, Ct as Touchable, D as types_exports$9, Dt as messageArgument, E as types_exports$10, Et as i18nPlugin, F as types_exports$1, Ft as Glow, G as defineTokens, Gt as Animation, H as LocalWrite, Ht as assetsPlugin, I as types_exports, It as Noise, J as platformPlugin, Jt as PASS_KINDS, K as defineStyle, Kt as Frames, L as uiPlugin, Lt as Outline, M as types_exports$4, Mt as Blur, N as types_exports$3, Nt as ColorMatrix, O as types_exports$8, Ot as messageDuration, P as types_exports$2, Pt as Displacement, Q as frames, Qt as PERF_GAP_BUCKETS, R as resolve, Rt as defineFilter, S as types_exports$14, St as Tappable, T as types_exports$11, Tt as Traced, U as ScrollState, Ut as animPlugin, V as DebugTrigger, Vt as scenesPlugin, W as popup, Wt as AnimPlayer, X as defineAnimation, Xt as MONITOR_SECTIONS, Y as HAPTIC_KINDS, Yt as frameAt, Z as external, Zt as PERF_CAUSES, _ as defineBundles, _t as Pointer, a as cubicBezier, at as sfx, b as types_exports$16, bt as Pressed, c as hint, cn as to, ct as stagger, d as defineScene, dn as SaveUnreadableError, dt as wait, en as PROBLEM_RULES, et as mark, f as tr, fn as lifecyclePlugin, ft as inputPlugin, g as music, gt as Hovered, h as defineEmitter, ht as Held, i as screen, in as flowPlugin, it as set, j as types_exports$5, jt as Alpha, k as types_exports$7, kt as effectsPlugin, l as schedule, ln as type, lt as tween, m as flattenFeatures, mn as clockPlugin, mt as DropTarget, n as createPlugin, nn as DEMAND_REASONS, nt as play, o as defineEffect, on as exit, ot as spawn, p as defineFeature, pn as timePlugin, pt as Draggable, q as textPlugin, qt as rendererPlugin, r as defineGame, rn as worldPlugin, rt as sequence, s as guide, sn as slot, st as spawned, t as createApp, tn as SHADER_WHATS, tt as parallel, u as projection, un as modelPlugin, ut as use, v as load, vt as PointerOver, w as types_exports$12, wt as Traceable, x as types_exports$15, xt as Swipeable, y as types_exports$17, yt as Pressable, z as defineMotion, zt as debugPlugin } from "./src-zXAFOqEc.mjs";
|
|
2
2
|
import { A as Now, C as Sprite, D as sprite, F as resource, I as system, M as Tree, N as component, O as Exiting, P as mut, R as tag, S as Shape, _ as HudPart, c as Countdown, f as defineTextStyles, g as Display, j as Order, k as Layer, l as Text, p as label, u as bind, v as NineSlice, w as Transform, x as Parent, y as Overlay } from "./visual-CIUx49C0.mjs";
|
|
3
3
|
import { r as defineComponent } from "./flatten-BkXuscAV.mjs";
|
|
4
4
|
export { Alpha, types_exports as Anim, AnimPlayer, Animation, types_exports$1 as Assets, types_exports$2 as Audio, Blur, Box, types_exports$3 as Clock, ColorMatrix, Countdown, DEMAND_REASONS, types_exports$4 as Debug, DebugTrigger, Displacement, Display, Draggable, DropTarget, types_exports$5 as Effects, Emitter, Exiting, types_exports$6 as Flow, Frames, Glow, HAPTIC_KINDS, Held, Hovered, HudPart, types_exports$7 as I18n, types_exports$8 as Input, Layer, types_exports$9 as Lifecycle, LocalWrite, MONITOR_SECTIONS, types_exports$10 as Model, NineSlice, Noise, Now, Order, Outline, Overlay, PASS_KINDS, PERF_CAUSES, PERF_GAP_BUCKETS, PERF_LOG_VERSION, PROBLEM_RULES, Parent, types_exports$11 as Platform, Pointer, PointerOver, Pressable, Pressed, types_exports$12 as Renderer, SHADER_WHATS, SaveUnreadableError, types_exports$13 as Scenes, ScrollState, Shape, Sprite, Swipeable, Tappable, Text, types_exports$14 as TextTypes, types_exports$15 as Time, Touchable, Traceable, Traced, Transform, Tree, types_exports$16 as Ui, types_exports$17 as World, animPlugin, assetsPlugin, audioPlugin, bind, clockPlugin, component, createApp, createPlugin, cubicBezier, debugPlugin, defineAnimation, defineBundles, defineComponent, defineEffect, defineEmitter, defineFeature, defineFilter, defineGame, defineMotion, defineScene, defineStyle, defineTextStyles, defineTokens, effectsPlugin, exit, external, flattenFeatures, flowPlugin, frameAt, frames, guide, haptic, hint, i18nPlugin, inputPlugin, label, lifecyclePlugin, load, mark, messageArgument, messageDuration, modelPlugin, music, mut, parallel, platformPlugin, play, popup, projection, rendererPlugin, resolve, resource, scenesPlugin, schedule, screen, sequence, set, sfx, slot, spawn, spawned, sprite, stagger, system, tag, textPlugin, timePlugin, to, tr, tween, type, uiPlugin, use, wait, worldPlugin };
|
package/dist/inspect.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { E as Api$2, F as Under, Mr as Snapshot, Qt as Api$1, br as Api, dn as EntitySnapshot, en as Explained, er as FlowGraph, fn as FrameDiff, m as Usage, nr as JournalEntry, sn as ComponentSchema, t as Api$3, z as RenderStats, zn as Position } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { a as AudioApi, g as EffectsStats, h as EffectsApi, r as UiApi, u as SoundEntry } from "./types-
|
|
3
|
-
import { c as UiNode } from "./types-
|
|
2
|
+
import { a as AudioApi, g as EffectsStats, h as EffectsApi, r as UiApi, u as SoundEntry } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { c as UiNode } from "./types-DwktxRrt.mjs";
|
|
4
4
|
import { t as HeadlessApp } from "./headless-CrxofjLt.mjs";
|
|
5
5
|
import { a as InputOf, c as Source, i as InputArguments, l as WatchApp, o as InputSchema, t as CheatEntry, u as WatchInput } from "./types-YXykgTOp.mjs";
|
|
6
6
|
import { n as defineSource } from "./define-B8A5IoeS.mjs";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as jsxs, i as jsxDEV, n as JSX, r as jsx, t as Fragment } from "./runtime-
|
|
1
|
+
import { a as jsxs, i as jsxDEV, n as JSX, r as jsx, t as Fragment } from "./runtime-Bk_rHR3K.mjs";
|
|
2
2
|
export { Fragment, type JSX, jsx, jsxDEV, jsxs };
|
package/dist/jsx-runtime.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as jsxs, n as JSX, r as jsx, t as Fragment } from "./runtime-
|
|
1
|
+
import { a as jsxs, n as JSX, r as jsx, t as Fragment } from "./runtime-Bk_rHR3K.mjs";
|
|
2
2
|
export { Fragment, type JSX, jsx, jsxs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as JsxChild, g as UiIntrinsicElements, t as DescriptionNode } from "./types-
|
|
1
|
+
import { a as JsxChild, g as UiIntrinsicElements, t as DescriptionNode } from "./types-DwktxRrt.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/plugins/ui/jsx/runtime.d.ts
|
|
4
4
|
/** What the compiler passes as props: the children plus whatever the tag declared. */
|
|
@@ -16484,8 +16484,9 @@ function writeTakeKeys(record, now, box) {
|
|
|
16484
16484
|
}
|
|
16485
16485
|
/**
|
|
16486
16486
|
* Takes or retakes the picture of a record: stages 1, 2 (when its first filter has inputs) and 3, at the phase of this
|
|
16487
|
-
* frame.
|
|
16488
|
-
* over 4096 device pixels, or a budget that
|
|
16487
|
+
* frame. The bounds are cut to the filter area of the top when it holds one (F43). Refused, and the view drawn live,
|
|
16488
|
+
* for a `Display` in the subtree without `onDemand`, empty bounds, a picture over 4096 device pixels, or a budget that
|
|
16489
|
+
* has no room (P6.3, warned once).
|
|
16489
16490
|
*
|
|
16490
16491
|
* @param kctx - The kept context.
|
|
16491
16492
|
* @param pixi - The module that draws.
|
|
@@ -16498,7 +16499,7 @@ function writeTakeKeys(record, now, box) {
|
|
|
16498
16499
|
function takePicture(kctx, pixi, matrices, record, view, now) {
|
|
16499
16500
|
const { top } = record;
|
|
16500
16501
|
if (!kctx.ctx.config.onDemand && holdsDisplay(kctx, top)) return false;
|
|
16501
|
-
const local = top.getLocalBounds();
|
|
16502
|
+
const local = clippedToArea(top.getLocalBounds(), top.filterArea);
|
|
16502
16503
|
if (isEmptyBounds(local)) return false;
|
|
16503
16504
|
const box = linearBounds(now.a, now.b, now.c, now.d, local);
|
|
16504
16505
|
const x = gridSpan(now.tx + box.x0, now.tx + box.x1, now.rs);
|
|
@@ -16530,6 +16531,27 @@ function takePicture(kctx, pixi, matrices, record, view, now) {
|
|
|
16530
16531
|
return ok;
|
|
16531
16532
|
}
|
|
16532
16533
|
/**
|
|
16534
|
+
* The local bounds of a top cut to its filter area, both in the top's own units: its filters draw nothing outside
|
|
16535
|
+
* the area. With no area the bounds are returned as they are. Pure.
|
|
16536
|
+
*
|
|
16537
|
+
* @param bounds - The top's local bounds.
|
|
16538
|
+
* @param area - The filter area on the top, or none.
|
|
16539
|
+
* @returns The bounds the picture takes.
|
|
16540
|
+
* @example
|
|
16541
|
+
* ```ts
|
|
16542
|
+
* clippedToArea({ minX: 0, minY: 0, maxX: 400, maxY: 400 }, { x: 100, y: 100, width: 40, height: 40 }); // { minX: 100, minY: 100, maxX: 140, maxY: 140 }
|
|
16543
|
+
* ```
|
|
16544
|
+
*/
|
|
16545
|
+
function clippedToArea(bounds, area) {
|
|
16546
|
+
if (area === null || area === void 0) return bounds;
|
|
16547
|
+
return {
|
|
16548
|
+
minX: Math.max(bounds.minX, area.x),
|
|
16549
|
+
minY: Math.max(bounds.minY, area.y),
|
|
16550
|
+
maxX: Math.min(bounds.maxX, area.x + area.width),
|
|
16551
|
+
maxY: Math.min(bounds.maxY, area.y + area.height)
|
|
16552
|
+
};
|
|
16553
|
+
}
|
|
16554
|
+
/**
|
|
16533
16555
|
* Tells whether local bounds hold nothing to draw: no width or no height. Pure.
|
|
16534
16556
|
*
|
|
16535
16557
|
* @param bounds - The bounds of a subtree in its own space.
|
|
@@ -27329,7 +27351,9 @@ function displayObjectOf(sctx, entity) {
|
|
|
27329
27351
|
}
|
|
27330
27352
|
/**
|
|
27331
27353
|
* Detaches the children of a parent that left, and names the ones that stay. A child that leaves in the same teardown
|
|
27332
|
-
* is no orphan: its view goes in this very pass (it waits in `removed`), or it plays its exit (`Exiting`).
|
|
27354
|
+
* is no orphan: its view goes in this very pass (it waits in `removed`), or it plays its exit (`Exiting`). Nor is a
|
|
27355
|
+
* child whose `Parent` names another entity, or none, by now: it moved in the same frame (a hosted view a restore
|
|
27356
|
+
* hung under the rebuilt host, F44), and the later steps of this pass hang it where it belongs.
|
|
27333
27357
|
*
|
|
27334
27358
|
* @param sctx - Domain context of the sync module.
|
|
27335
27359
|
* @param entity - The parent entity.
|
|
@@ -27337,7 +27361,6 @@ function displayObjectOf(sctx, entity) {
|
|
|
27337
27361
|
*/
|
|
27338
27362
|
function detachChildren(sctx, entity, host) {
|
|
27339
27363
|
const state = sctx.ctx.state.sync;
|
|
27340
|
-
const ecs = sctx.ctx.deps.world.ecs;
|
|
27341
27364
|
const orphans = [];
|
|
27342
27365
|
for (const [child, childView] of state.views) {
|
|
27343
27366
|
if (child === entity) continue;
|
|
@@ -27346,7 +27369,7 @@ function detachChildren(sctx, entity, host) {
|
|
|
27346
27369
|
markView(sctx, child);
|
|
27347
27370
|
detach$1(object);
|
|
27348
27371
|
state.orphans.add(child);
|
|
27349
|
-
if (
|
|
27372
|
+
if (isLostOrphan(sctx, child, entity)) orphans.push(child);
|
|
27350
27373
|
}
|
|
27351
27374
|
if (orphans.length > 0) sctx.ctx.log.warn("renderer: parent left before its children", {
|
|
27352
27375
|
parent: entity,
|
|
@@ -27354,6 +27377,19 @@ function detachChildren(sctx, entity, host) {
|
|
|
27354
27377
|
});
|
|
27355
27378
|
}
|
|
27356
27379
|
/**
|
|
27380
|
+
* Tells whether a child of a parent that left is an orphan worth a warning: it does not go in this pass, it plays no
|
|
27381
|
+
* exit, and its `Parent` still names the parent that left.
|
|
27382
|
+
*
|
|
27383
|
+
* @param sctx - Domain context of the sync module.
|
|
27384
|
+
* @param child - The child entity.
|
|
27385
|
+
* @param parent - The parent that left.
|
|
27386
|
+
* @returns True when the child stays behind with no parent.
|
|
27387
|
+
*/
|
|
27388
|
+
function isLostOrphan(sctx, child, parent) {
|
|
27389
|
+
const ecs = sctx.ctx.deps.world.ecs;
|
|
27390
|
+
return !sctx.ctx.state.sync.removed.has(child) && !isLeaving(ecs, child) && parentOf$1(ecs, child) === parent;
|
|
27391
|
+
}
|
|
27392
|
+
/**
|
|
27357
27393
|
* Takes a view out of the tree and gives its object back to the pool.
|
|
27358
27394
|
*
|
|
27359
27395
|
* @param sctx - Domain context of the sync module.
|
|
@@ -32939,9 +32975,23 @@ function startTrack$1(actx, entity, component, to, options, muted, driven = fals
|
|
|
32939
32975
|
countPlaying(actx.deps.world.ecs, entity, 1);
|
|
32940
32976
|
actx.deps.time.wake();
|
|
32941
32977
|
warnIfCrowded(actx);
|
|
32978
|
+
if (landsAtStart(track, options)) writeFields(actx, track, true);
|
|
32942
32979
|
return track;
|
|
32943
32980
|
}
|
|
32944
32981
|
/**
|
|
32982
|
+
* Tells whether a track writes its target as it starts: an absolute one of 0 ms with no delay,
|
|
32983
|
+
* no repeat and no keys, started so by its caller (not cut by reduced motion). A rest pose a
|
|
32984
|
+
* caller sets in phase `layout` so lands with the fields written beside it in that frame (F47);
|
|
32985
|
+
* the next frame step ends it, where its `Animation` count lands too.
|
|
32986
|
+
*
|
|
32987
|
+
* @param track - The track that starts.
|
|
32988
|
+
* @param options - What its caller asked for.
|
|
32989
|
+
* @returns True when it lands now.
|
|
32990
|
+
*/
|
|
32991
|
+
function landsAtStart(track, options) {
|
|
32992
|
+
return options.ms === 0 && track.delayMs === 0 && !track.additive && !track.driven && track.repeatsLeft === 0 && track.segments === void 0;
|
|
32993
|
+
}
|
|
32994
|
+
/**
|
|
32945
32995
|
* Tells whether a loop stands on its first key instead of walking: with reduced motion on, unless
|
|
32946
32996
|
* the author kept it, or when it has no length to walk. It stays in the table either way, so it
|
|
32947
32997
|
* never ends by itself.
|
|
@@ -42352,16 +42402,20 @@ function boxCovers(ectx, entity, width, height, size) {
|
|
|
42352
42402
|
return width * scale >= size.width && height * scale >= size.height;
|
|
42353
42403
|
}
|
|
42354
42404
|
/**
|
|
42355
|
-
* Tells whether a filtered view covers the whole viewport
|
|
42356
|
-
*
|
|
42357
|
-
*
|
|
42405
|
+
* Tells whether a filtered view covers the whole viewport. A view whose enabled filters declare an
|
|
42406
|
+
* area draws only there: that area, times the view's scale, covers the reference size on both axes
|
|
42407
|
+
* (F43, a lens over a full-screen sprite is not full screen). Otherwise the box its sprite, its
|
|
42408
|
+
* nine-slice or its shape declares, times its scale, does. A sprite without a size declares none.
|
|
42409
|
+
* Read from components and the area handed over last, never from Pixi bounds.
|
|
42358
42410
|
*
|
|
42359
42411
|
* @param ectx - Domain context of the effects plugin.
|
|
42360
|
-
* @param
|
|
42412
|
+
* @param view - The view's record.
|
|
42361
42413
|
* @param size - The viewport size.
|
|
42362
42414
|
* @returns True for a full-screen view.
|
|
42363
42415
|
*/
|
|
42364
|
-
function coversScreen(ectx,
|
|
42416
|
+
function coversScreen(ectx, view, size) {
|
|
42417
|
+
const { entity, areaSent } = view;
|
|
42418
|
+
if (areaSent.some) return boxCovers(ectx, entity, areaSent.width, areaSent.height, size);
|
|
42365
42419
|
const ecs = ectx.deps.world.ecs;
|
|
42366
42420
|
const sprite = ecs.get(entity, Sprite);
|
|
42367
42421
|
if (sprite !== void 0) {
|
|
@@ -42436,7 +42490,7 @@ function countFullScreen(ectx, size) {
|
|
|
42436
42490
|
let count = 0;
|
|
42437
42491
|
for (const view of ectx.state.viewList) {
|
|
42438
42492
|
if (view.gone) continue;
|
|
42439
|
-
if (hasEnabledFilter(ectx, view) && coversScreen(ectx, view
|
|
42493
|
+
if (hasEnabledFilter(ectx, view) && coversScreen(ectx, view, size)) count += 1;
|
|
42440
42494
|
}
|
|
42441
42495
|
return count;
|
|
42442
42496
|
}
|
|
@@ -49353,24 +49407,37 @@ function createTextSystem(ctx, frame) {
|
|
|
49353
49407
|
});
|
|
49354
49408
|
}
|
|
49355
49409
|
/**
|
|
49356
|
-
* Resolves the labels whose `Text` came after the layout system ran. `ui` adds a label in
|
|
49357
|
-
* solve, and the flush at the end of phase `layout` attaches it with the rest of its batch, a
|
|
49358
|
-
* component included; this runs right after that flush and before phase `sync`, so the
|
|
49359
|
-
* builds the label with its string, and lists it, so the next system run writes its `Text`
|
|
49360
|
-
* more for the remeasure of `ui`. A label whose content
|
|
49361
|
-
*
|
|
49362
|
-
*
|
|
49410
|
+
* Resolves the labels whose `Text` came or changed after the layout system ran. `ui` adds a label in
|
|
49411
|
+
* its solve, and the flush at the end of phase `layout` attaches it with the rest of its batch, a
|
|
49412
|
+
* bound component included; this runs right after that flush and before phase `sync`, so the
|
|
49413
|
+
* renderer builds the label with its string, and lists it, so the next system run writes its `Text`
|
|
49414
|
+
* once more for the remeasure of `ui`. A label whose content or style `ui` changed in its reconcile
|
|
49415
|
+
* is resolved here too, in the frame of the change (F45): `ui` measured its content itself, so it is
|
|
49416
|
+
* not listed. While the world is not live its layout phase did not run: the list is dropped, and the
|
|
49417
|
+
* labels, marked, wait for the next live run, as every label does.
|
|
49363
49418
|
*
|
|
49364
49419
|
* @param ctx - Domain context of the text plugin.
|
|
49365
49420
|
* @param frame - What the system's runs share.
|
|
49366
49421
|
*/
|
|
49367
49422
|
function resolveAdded(ctx, frame) {
|
|
49368
49423
|
const added = ctx.state.added;
|
|
49369
|
-
if (added.length
|
|
49370
|
-
|
|
49371
|
-
|
|
49372
|
-
|
|
49424
|
+
if (added.length > 0) {
|
|
49425
|
+
if (ctx.deps.world.ecs.mode() !== "live") {
|
|
49426
|
+
added.length = 0;
|
|
49427
|
+
return;
|
|
49428
|
+
}
|
|
49429
|
+
resolveCame(ctx, frame, added);
|
|
49373
49430
|
}
|
|
49431
|
+
resolveChanged(ctx, frame);
|
|
49432
|
+
}
|
|
49433
|
+
/**
|
|
49434
|
+
* Resolves the labels whose `Text` came with the layout flush, and lists them for the remeasure.
|
|
49435
|
+
*
|
|
49436
|
+
* @param ctx - Domain context of the text plugin.
|
|
49437
|
+
* @param frame - What the system's runs share.
|
|
49438
|
+
* @param added - The labels that came.
|
|
49439
|
+
*/
|
|
49440
|
+
function resolveCame(ctx, frame, added) {
|
|
49374
49441
|
frame.now = NaN;
|
|
49375
49442
|
frame.locale = ctx.deps.i18n.locale();
|
|
49376
49443
|
for (const entity of added) {
|
|
@@ -49382,6 +49449,25 @@ function resolveAdded(ctx, frame) {
|
|
|
49382
49449
|
forgetAdded(added);
|
|
49383
49450
|
}
|
|
49384
49451
|
/**
|
|
49452
|
+
* Resolves the labels of this frame's `changed(Text)` whose content or style moved since they were
|
|
49453
|
+
* resolved: `ui` writes `Text` after the layout system. The labels this frame resolved already
|
|
49454
|
+
* stand on what they show; a bound label shows its value, as in the system.
|
|
49455
|
+
*
|
|
49456
|
+
* @param ctx - Domain context of the text plugin.
|
|
49457
|
+
* @param frame - What the system's runs share; the locale of this frame is already in it.
|
|
49458
|
+
*/
|
|
49459
|
+
function resolveChanged(ctx, frame) {
|
|
49460
|
+
const ecs = ctx.deps.world.ecs;
|
|
49461
|
+
let live = false;
|
|
49462
|
+
for (const entity of ecs.changed(Text)) {
|
|
49463
|
+
const text = ecs.get(entity, Text);
|
|
49464
|
+
if (text === void 0 || !isStale(ctx, entity, text, frame)) continue;
|
|
49465
|
+
if (!live && ecs.mode() !== "live") return;
|
|
49466
|
+
live = true;
|
|
49467
|
+
stepText(ctx, entity, text, frame);
|
|
49468
|
+
}
|
|
49469
|
+
}
|
|
49470
|
+
/**
|
|
49385
49471
|
* Marks labels for the next layout phase: every one of them, or only the ones `keep` names. A
|
|
49386
49472
|
* locale change names the labels whose content is a message; a dev hot swap names the labels
|
|
49387
49473
|
* drawn with a replaced font or icon.
|
|
@@ -53973,7 +54059,10 @@ function recordRest(ctx, element, value) {
|
|
|
53973
54059
|
* @param name - The component name of the extra.
|
|
53974
54060
|
*/
|
|
53975
54061
|
function cancelExtra(element, name) {
|
|
53976
|
-
element.extraHandles.get(name)
|
|
54062
|
+
const last = element.extraHandles.get(name);
|
|
54063
|
+
if (last === void 0) return;
|
|
54064
|
+
last.cancel();
|
|
54065
|
+
element.endless?.delete(last);
|
|
53977
54066
|
element.extraHandles.delete(name);
|
|
53978
54067
|
}
|
|
53979
54068
|
//#endregion
|
|
@@ -55687,10 +55776,11 @@ function createReconciler(ctx, modules, fields) {
|
|
|
55687
55776
|
*/
|
|
55688
55777
|
function subtreeSettled(element) {
|
|
55689
55778
|
if (!modules.layout.settled(element)) return false;
|
|
55690
|
-
|
|
55779
|
+
for (const child of element.children) {
|
|
55691
55780
|
const childElement = state.elements.get(child);
|
|
55692
|
-
|
|
55693
|
-
}
|
|
55781
|
+
if (childElement !== void 0 && !subtreeSettled(childElement)) return false;
|
|
55782
|
+
}
|
|
55783
|
+
return true;
|
|
55694
55784
|
}
|
|
55695
55785
|
/**
|
|
55696
55786
|
* Drops the identity, the key and the key registration of an element and of everything under
|
|
@@ -55745,6 +55835,24 @@ function createReconciler(ctx, modules, fields) {
|
|
|
55745
55835
|
if (!subtreeSettled(element)) continue;
|
|
55746
55836
|
despawnTree(element);
|
|
55747
55837
|
}
|
|
55838
|
+
dropRemovedRoots();
|
|
55839
|
+
}
|
|
55840
|
+
/**
|
|
55841
|
+
* Despawns every exiting element at once, finished or not, and drops the roots that were leaving:
|
|
55842
|
+
* what a restore or a load does, as a page reload would (F42).
|
|
55843
|
+
*/
|
|
55844
|
+
function dropLeaving() {
|
|
55845
|
+
for (const entity of state.exiting) {
|
|
55846
|
+
const element = state.elements.get(entity);
|
|
55847
|
+
if (element === void 0) state.exiting.delete(entity);
|
|
55848
|
+
else despawnTree(element);
|
|
55849
|
+
}
|
|
55850
|
+
dropRemovedRoots();
|
|
55851
|
+
}
|
|
55852
|
+
/**
|
|
55853
|
+
* Drops every removed root whose element tree is gone, and closes its popup.
|
|
55854
|
+
*/
|
|
55855
|
+
function dropRemovedRoots() {
|
|
55748
55856
|
for (const entity of state.removing) {
|
|
55749
55857
|
const root = state.roots.get(entity);
|
|
55750
55858
|
if (root === void 0) continue;
|
|
@@ -56079,11 +56187,12 @@ function createReconciler(ctx, modules, fields) {
|
|
|
56079
56187
|
* element stands exactly as if its root had just been mounted with the restored state: a new
|
|
56080
56188
|
* entity with the components of the description, then its `enter` hook, then its loop. What a
|
|
56081
56189
|
* mount does not bring is gone with the old tree: the local state of a component, a scroll
|
|
56082
|
-
* offset, the keyboard focus, a text being edited, a hover.
|
|
56083
|
-
* leaving.
|
|
56190
|
+
* offset, the keyboard focus, a text being edited, a hover. An element or a root that is
|
|
56191
|
+
* leaving is dropped at once, as a page reload drops it.
|
|
56084
56192
|
*/
|
|
56085
56193
|
function remountRoots() {
|
|
56086
56194
|
state.remount = false;
|
|
56195
|
+
dropLeaving();
|
|
56087
56196
|
for (const root of state.roots.values()) {
|
|
56088
56197
|
if (state.removing.has(root.entity)) continue;
|
|
56089
56198
|
const element = root.element === void 0 ? void 0 : lookup(root.element);
|
|
@@ -56247,8 +56356,8 @@ function createReconciler(ctx, modules, fields) {
|
|
|
56247
56356
|
/**
|
|
56248
56357
|
* The second system of phase `layout`: every root takes its slot, then one solve per marked
|
|
56249
56358
|
* root, a root in a slot after the root of its slot and in its content box, then the rects, the
|
|
56250
|
-
* rest poses and the hooks, the scrolls settled on what the solve and the render gave them,
|
|
56251
|
-
*
|
|
56359
|
+
* rest poses and the hooks, the scrolls settled on what the solve and the render gave them, the
|
|
56360
|
+
* hosting of the hosts that came, and a sweep of what left with nothing to wait for. The hints released since the last frame step are dropped
|
|
56252
56361
|
* at its end, so the `change.Box` and `change.Transform` hooks the solve plays get the hint the
|
|
56253
56362
|
* reconcile routed, and the next frame starts with none.
|
|
56254
56363
|
*
|
|
@@ -56268,6 +56377,7 @@ function createReconciler(ctx, modules, fields) {
|
|
|
56268
56377
|
hostViews(ctx, state, state.risen);
|
|
56269
56378
|
state.risen.clear();
|
|
56270
56379
|
}
|
|
56380
|
+
if (state.exiting.size > 0 || state.removing.size > 0) sweep();
|
|
56271
56381
|
state.hints.length = 0;
|
|
56272
56382
|
writeCounters();
|
|
56273
56383
|
}
|
|
@@ -56850,14 +56960,15 @@ function noteTrack(span, options) {
|
|
|
56850
56960
|
span.reduced = options.reduced;
|
|
56851
56961
|
}
|
|
56852
56962
|
/**
|
|
56853
|
-
* The view handle of a hook
|
|
56854
|
-
* their track
|
|
56963
|
+
* The view handle of a watched hook: every call goes to the real handle; `tween` notes whether its track repeats
|
|
56964
|
+
* forever, and with a span `tween` and `toRest` note their track for the level of an overlay.
|
|
56855
56965
|
*
|
|
56856
56966
|
* @param handle - The real handle.
|
|
56857
|
-
* @param span - The span being measured.
|
|
56858
|
-
* @
|
|
56967
|
+
* @param span - The span being measured, or nothing.
|
|
56968
|
+
* @param watch - Where a track that repeats forever is noted.
|
|
56969
|
+
* @returns The watching handle.
|
|
56859
56970
|
*/
|
|
56860
|
-
function
|
|
56971
|
+
function watched(handle, span, watch) {
|
|
56861
56972
|
return {
|
|
56862
56973
|
entity: handle.entity,
|
|
56863
56974
|
key: handle.key,
|
|
@@ -56865,11 +56976,12 @@ function spanned(handle, span) {
|
|
|
56865
56976
|
rest: (component) => handle.rest(component),
|
|
56866
56977
|
set: (component, patch) => handle.set(component, patch),
|
|
56867
56978
|
tween: (component, to, options) => {
|
|
56868
|
-
|
|
56979
|
+
if (options.repeat === "forever") watch.forever = true;
|
|
56980
|
+
if (span !== void 0) noteTrack(span, options);
|
|
56869
56981
|
return handle.tween(component, to, options);
|
|
56870
56982
|
},
|
|
56871
56983
|
toRest: (component, options) => {
|
|
56872
|
-
noteTrack(span, options);
|
|
56984
|
+
if (span !== void 0) noteTrack(span, options);
|
|
56873
56985
|
return handle.toRest(component, options);
|
|
56874
56986
|
},
|
|
56875
56987
|
all: (handles) => handle.all(handles),
|
|
@@ -56878,8 +56990,9 @@ function spanned(handle, span) {
|
|
|
56878
56990
|
}
|
|
56879
56991
|
/**
|
|
56880
56992
|
* Runs one motion hook and keeps the handle it returned, so the exit sweep knows when the
|
|
56881
|
-
* element is still playing.
|
|
56882
|
-
*
|
|
56993
|
+
* element is still playing. A motion whose hook started a track that repeats forever is also
|
|
56994
|
+
* noted as endless: the sweep never waits for it. Without a hook the value the solve wrote stands;
|
|
56995
|
+
* a throwing hook is logged and the same happens.
|
|
56883
56996
|
*
|
|
56884
56997
|
* @param ctx - Domain context of the ui plugin.
|
|
56885
56998
|
* @param element - The element the hook belongs to.
|
|
@@ -56892,9 +57005,11 @@ function play(ctx, element, hook, span) {
|
|
|
56892
57005
|
const handle = handleOf(ctx, element);
|
|
56893
57006
|
if (handle === void 0) return void 0;
|
|
56894
57007
|
try {
|
|
56895
|
-
const
|
|
57008
|
+
const watch = { forever: false };
|
|
57009
|
+
const motion = hook(watched(handle, span, watch));
|
|
56896
57010
|
if (motion === void 0) return void 0;
|
|
56897
57011
|
element.handles.push(motion);
|
|
57012
|
+
if (watch.forever) noteEndless(element, motion);
|
|
56898
57013
|
return motion;
|
|
56899
57014
|
} catch (error) {
|
|
56900
57015
|
ctx.log.error("ui:motion-failed", {
|
|
@@ -56905,6 +57020,16 @@ function play(ctx, element, hook, span) {
|
|
|
56905
57020
|
}
|
|
56906
57021
|
}
|
|
56907
57022
|
/**
|
|
57023
|
+
* Notes a motion that never ends on its element, the set made with the first one.
|
|
57024
|
+
*
|
|
57025
|
+
* @param element - The element the motion plays on.
|
|
57026
|
+
* @param motion - The endless motion.
|
|
57027
|
+
*/
|
|
57028
|
+
function noteEndless(element, motion) {
|
|
57029
|
+
element.endless ??= /* @__PURE__ */ new Set();
|
|
57030
|
+
element.endless.add(motion);
|
|
57031
|
+
}
|
|
57032
|
+
/**
|
|
56908
57033
|
* Plays the `change` hook of one extra component whose fields changed. The motion the last change
|
|
56909
57034
|
* of that name started is cancelled first, so its value stays where it is and the new motion
|
|
56910
57035
|
* starts from there; the new motion is kept with the element's handles, so an exit waits for it.
|
|
@@ -56919,8 +57044,12 @@ function play(ctx, element, hook, span) {
|
|
|
56919
57044
|
* @returns True when the hook returned a motion: the caller writes nothing directly.
|
|
56920
57045
|
*/
|
|
56921
57046
|
function playExtraChange(ctx, element, name, values, hint) {
|
|
56922
|
-
element.extraHandles.get(name)
|
|
56923
|
-
|
|
57047
|
+
const last = element.extraHandles.get(name);
|
|
57048
|
+
if (last !== void 0) {
|
|
57049
|
+
last.cancel();
|
|
57050
|
+
element.endless?.delete(last);
|
|
57051
|
+
element.extraHandles.delete(name);
|
|
57052
|
+
}
|
|
56924
57053
|
const hook = element.motion?.change?.[name];
|
|
56925
57054
|
if (hook === void 0) return false;
|
|
56926
57055
|
const motion = play(ctx, element, (view) => hook(view, values.previous, values.next, hint));
|
|
@@ -56956,19 +57085,23 @@ function startLoop(ctx, element) {
|
|
|
56956
57085
|
}
|
|
56957
57086
|
/**
|
|
56958
57087
|
* Tells whether every motion of an element has finished, which is when an exiting element may
|
|
56959
|
-
* be despawned.
|
|
57088
|
+
* be despawned. A motion over a track that repeats forever never finishes, so it does not count:
|
|
57089
|
+
* waiting for it would keep the element for the life of the page (F42).
|
|
56960
57090
|
*
|
|
56961
57091
|
* @param element - The element to ask about.
|
|
56962
|
-
* @returns True when nothing is still playing.
|
|
57092
|
+
* @returns True when nothing that can end is still playing.
|
|
56963
57093
|
*/
|
|
56964
57094
|
function still(element) {
|
|
56965
|
-
|
|
57095
|
+
const { handles, endless } = element;
|
|
57096
|
+
for (const handle of handles) if (handle.active() && endless?.has(handle) !== true) return false;
|
|
57097
|
+
return true;
|
|
56966
57098
|
}
|
|
56967
57099
|
/**
|
|
56968
57100
|
* Moves the rest `Transform` of an element to where its rect, style and fit put it now. A live
|
|
56969
57101
|
* element plays its `change.Transform` motion when it has one, else takes the pose through a
|
|
56970
|
-
* 0 ms rest track
|
|
56971
|
-
*
|
|
57102
|
+
* 0 ms rest track. That track writes the pose as it starts, so the pivot and the position land in
|
|
57103
|
+
* the same frame, and ends at the next frame step, where an additive loop re-bases on the new
|
|
57104
|
+
* rest. An element that has not spawned yet only records it, and so does one whose
|
|
56972
57105
|
* `change.Box` motion already played. The content of a scroll keeps its `Transform` and records
|
|
56973
57106
|
* no rest with the world: the scroll step owns it.
|
|
56974
57107
|
*
|
|
@@ -57081,10 +57214,14 @@ function placeChildren(state, parent, children) {
|
|
|
57081
57214
|
* @file ui/layout — exiting elements, policy "leave": the element leaves the flow in the same
|
|
57082
57215
|
* reconcile, so its siblings reflow this frame while it plays its exit over them.
|
|
57083
57216
|
*/
|
|
57217
|
+
/** The dev warning of an element that left while a motion of it repeated forever. */
|
|
57218
|
+
const EXIT_WAITS_FOREVER = "ui:exit-waits-forever";
|
|
57084
57219
|
/**
|
|
57085
57220
|
* Starts the exit of one element: out of the Yoga tree at once, tagged `Exiting` so `input`
|
|
57086
57221
|
* never hits it, then the hook plays over the siblings that already moved. A `change` motion of
|
|
57087
57222
|
* an extra component that still runs, a counter's roll, is kept, so the sweep waits for it too.
|
|
57223
|
+
* One that repeats forever, a hot pulse, is cancelled where it stands: it would never end, and a
|
|
57224
|
+
* dev build names the element once (F42).
|
|
57088
57225
|
*
|
|
57089
57226
|
* @param ctx - Domain context of the ui plugin.
|
|
57090
57227
|
* @param state - The layout state.
|
|
@@ -57098,11 +57235,45 @@ function beginExit(ctx, state, element, cause, span) {
|
|
|
57098
57235
|
element.dropKey = void 0;
|
|
57099
57236
|
if (!element.live) return;
|
|
57100
57237
|
ctx.deps.world.ecs.tag(element.entity, Exiting);
|
|
57101
|
-
element.handles =
|
|
57238
|
+
element.handles = keptExtras(ctx, element);
|
|
57102
57239
|
const hook = element.motion?.exit;
|
|
57103
57240
|
play(ctx, element, hook === void 0 ? void 0 : (view) => hook(view, element.node, void 0, cause), span);
|
|
57104
57241
|
}
|
|
57105
57242
|
/**
|
|
57243
|
+
* The `change` motions of the extras an exit waits for: the ones still running that can end. One
|
|
57244
|
+
* that repeats forever is cancelled where it stands, and a dev build warns once per element.
|
|
57245
|
+
*
|
|
57246
|
+
* @param ctx - Domain context of the ui plugin.
|
|
57247
|
+
* @param element - The element that starts its exit.
|
|
57248
|
+
* @returns The motions the sweep waits for.
|
|
57249
|
+
*/
|
|
57250
|
+
function keptExtras(ctx, element) {
|
|
57251
|
+
const kept = [];
|
|
57252
|
+
for (const handle of element.extraHandles.values()) {
|
|
57253
|
+
if (!handle.active()) continue;
|
|
57254
|
+
if (element.endless?.has(handle) !== true) {
|
|
57255
|
+
kept.push(handle);
|
|
57256
|
+
continue;
|
|
57257
|
+
}
|
|
57258
|
+
handle.cancel();
|
|
57259
|
+
warnEndless(ctx, element);
|
|
57260
|
+
}
|
|
57261
|
+
return kept;
|
|
57262
|
+
}
|
|
57263
|
+
/**
|
|
57264
|
+
* Names an element that left while a motion of it repeated forever, once per element, in a dev
|
|
57265
|
+
* build: the motion is cut where it stands, which the author may want to end in the exit instead.
|
|
57266
|
+
*
|
|
57267
|
+
* @param ctx - Domain context of the ui plugin.
|
|
57268
|
+
* @param element - The leaving element.
|
|
57269
|
+
*/
|
|
57270
|
+
function warnEndless(ctx, element) {
|
|
57271
|
+
if (typeof __MOKU_GAME_DEV__ === "undefined" || !__MOKU_GAME_DEV__) return;
|
|
57272
|
+
if (element.warned.has(EXIT_WAITS_FOREVER)) return;
|
|
57273
|
+
element.warned.add(EXIT_WAITS_FOREVER);
|
|
57274
|
+
ctx.log.warn(EXIT_WAITS_FOREVER, { key: element.key ?? element.identity });
|
|
57275
|
+
}
|
|
57276
|
+
/**
|
|
57106
57277
|
* Tells whether an exiting element may be despawned: no hook, or every hook finished.
|
|
57107
57278
|
*
|
|
57108
57279
|
* @param element - The exiting element.
|
package/dist/testing.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Cr as Json, Yn as FeaturePlugin, Zn as AnyFlow, _r as FakeClock, dr as Hint, fr as NodeFx, hr as ClockSource, rr as NodeTable, sr as Descriptor } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { t as createApp } from "./index-
|
|
3
|
-
import { b as saveOf, v as WithGameState, y as memory } from "./types-
|
|
2
|
+
import { t as createApp } from "./index-PbX7OQIC.mjs";
|
|
3
|
+
import { b as saveOf, v as WithGameState, y as memory } from "./types-Dr5uC2fS.mjs";
|
|
4
4
|
import { a as createHeadless, i as ReproResult, n as HeadlessGame, o as runRepro, r as Repro, s as stepFrames, t as HeadlessApp } from "./headless-CrxofjLt.mjs";
|
|
5
5
|
import { AnyPluginInstance } from "@moku-labs/core";
|
|
6
6
|
|
package/dist/testing.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { an as refuseStart, ln as type, m as flattenFeatures, on as exit, t as createApp } from "./src-
|
|
1
|
+
import { an as refuseStart, ln as type, m as flattenFeatures, on as exit, t as createApp } from "./src-zXAFOqEc.mjs";
|
|
2
2
|
import { n as saveOf, t as memory } from "./memory-CWlqhS7l.mjs";
|
|
3
3
|
import { t as fakeClock } from "./fake-6mazmHK3.mjs";
|
|
4
4
|
import { i as stepFrames, r as runRepro, t as createHeadless } from "./headless-BA6ffzqD.mjs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $r as Require, A as PixiModule, An as TrackOptions, At as FilterSlotInputs, Cr as Json, E as Api$4, En as NumericFields, M as PixiTexture, Mt as Point, Nn as Api$2, Pt as FilterCache, Qr as Events$2, Qt as Api$3, Sn as Ease, Sr as Events$3, Tn as MotionHandle, Ur as Api$1, an as AnyComponentValue, br as Api$6, cn as ComponentType, j as PixiSprite, jn as TrackSegment, k as PixiFilter, kn as ReducedMotion, kt as FilterSlot, on as ComponentHandle, or as TypeTag, rn as AnyComponent, s as Events$1, sr as Descriptor, t as Api$5, un as Entity, v as Events$4, zr as Events$5 } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { C as TextApi, L as I18nApi, M as InputApi, Y as StylesState, c as UiNode, i as Finding, n as ElementChange, o as JsxState, r as ElementMotion } from "./types-
|
|
2
|
+
import { C as TextApi, L as I18nApi, M as InputApi, Y as StylesState, c as UiNode, i as Finding, n as ElementChange, o as JsxState, r as ElementMotion } from "./types-DwktxRrt.mjs";
|
|
3
3
|
import { Log } from "@moku-labs/common/browser";
|
|
4
4
|
import { PluginCtx } from "@moku-labs/core";
|
|
5
5
|
import { Node, Yoga } from "yoga-layout/load";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { A as PixiModule, Ar as SaveDoc, Cr as Json, D as Config$2, Fn as Config$1, Nr as SnapshotOf, Or as PlayerStateProvider, Yn as FeaturePlugin, Zn as AnyFlow, _r as FakeClock, a as Config$3, d as Manifest, hr as ClockSource, jt as Orientation, kr as ProviderCall, n as AssetsIo, or as TypeTag, xr as Config } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { o as AudioContextLike, s as Config$4 } from "./types-
|
|
3
|
-
import { H as StringTable, L as I18nApi, U as TextKey } from "./types-
|
|
4
|
-
import { ft as platformPlugin, i as screen, mt as PlatformProvider, t as createApp, wt as audioPlugin, xt as effectsPlugin } from "./index-
|
|
2
|
+
import { o as AudioContextLike, s as Config$4 } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { H as StringTable, L as I18nApi, U as TextKey } from "./types-DwktxRrt.mjs";
|
|
4
|
+
import { ft as platformPlugin, i as screen, mt as PlatformProvider, t as createApp, wt as audioPlugin, xt as effectsPlugin } from "./index-PbX7OQIC.mjs";
|
|
5
5
|
import { AnyPluginInstance } from "@moku-labs/core";
|
|
6
6
|
|
|
7
7
|
//#region src/plugins/model/store/providers/memory.d.ts
|
|
@@ -2541,7 +2541,8 @@ type StyleBasis = {
|
|
|
2541
2541
|
* `cause` is why the element appeared: `"mount"` when it came with the first build of its root and
|
|
2542
2542
|
* the root came by a mount, `"change"` otherwise; its `enter` hook is told. `rebuilds` counts the
|
|
2543
2543
|
* patches in a row that brought a loop of another reference that is not really another loop: a
|
|
2544
|
-
* dev build names the element once it reaches three.
|
|
2544
|
+
* dev build names the element once it reaches three. `endless` holds the motions a hook returned
|
|
2545
|
+
* after it started a track that repeats forever: they never end, so no exit waits for them (F42).
|
|
2545
2546
|
*/
|
|
2546
2547
|
type Element = {
|
|
2547
2548
|
entity: Entity;
|
|
@@ -2591,7 +2592,8 @@ type Element = {
|
|
|
2591
2592
|
width: number;
|
|
2592
2593
|
height: number;
|
|
2593
2594
|
};
|
|
2594
|
-
basis?: StyleBasis;
|
|
2595
|
+
basis?: StyleBasis; /** The motions of its hooks that started a `repeat: "forever"` track; made with the first one. */
|
|
2596
|
+
endless?: Set<MotionHandle>;
|
|
2595
2597
|
};
|
|
2596
2598
|
/**
|
|
2597
2599
|
* The popup side of a root: the handler that shows it now and the root it was opened over.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { E as Api, Lr as Api$3, Qt as Api$1, br as Api$2 } from "./types-i77Nrrv-.mjs";
|
|
2
|
-
import { P as AnimApi, r as UiApi } from "./types-
|
|
3
|
-
import { M as InputApi } from "./types-
|
|
2
|
+
import { P as AnimApi, r as UiApi } from "./types-B73p1XBn.mjs";
|
|
3
|
+
import { M as InputApi } from "./types-DwktxRrt.mjs";
|
|
4
4
|
import { r as Repro } from "./headless-CrxofjLt.mjs";
|
|
5
5
|
import { a as InputOf, r as ControlApp } from "./types-YXykgTOp.mjs";
|
|
6
|
-
import { t as commands } from "./commands-
|
|
6
|
+
import { t as commands } from "./commands-DoMH0hnR.mjs";
|
|
7
7
|
|
|
8
8
|
//#region src/visual/types.d.ts
|
|
9
9
|
/** The base commands of the `/control` door, keyed by their short names. */
|
package/dist/visual.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as VisualApp, c as VisualRenderer, d as VisualStart, f as VisualStep, h as VisualTolerance, i as CheckpointResult, l as VisualReport, m as VisualTestResult, n as runVisualTests, o as VisualOptions, p as VisualTest, r as defineVisualTest, s as VisualPage, t as parseVisualArgv, u as VisualSetup } from "./visual-
|
|
1
|
+
import { a as VisualApp, c as VisualRenderer, d as VisualStart, f as VisualStep, h as VisualTolerance, i as CheckpointResult, l as VisualReport, m as VisualTestResult, n as runVisualTests, o as VisualOptions, p as VisualTest, r as defineVisualTest, s as VisualPage, t as parseVisualArgv, u as VisualSetup } from "./visual-CQnurNOj.mjs";
|
|
2
2
|
export { type CheckpointResult, type VisualApp, type VisualOptions, type VisualPage, type VisualRenderer, type VisualReport, type VisualSetup, type VisualStart, type VisualStep, type VisualTest, type VisualTestResult, type VisualTolerance, defineVisualTest, parseVisualArgv, runVisualTests };
|
package/llms.txt
CHANGED
|
@@ -541,7 +541,7 @@ The graph. Modules `runner`, `gate`, `inbox`, `fx`, `features`. Runner methods s
|
|
|
541
541
|
- Overdraw heat map (dev and debug builds): `app.renderer.sync.debug.overdraw(true)` (or `game.debug { overdraw: true }`) draws every frame so a pixel's brightness counts the layers drawn there: 1/16 white a layer, white at sixteen. While on, every frame is drawn (also with `onDemand`), kept pictures draw live and filters are off; only the stage pass changes, the tree between frames stays the game's, and off draws the game again from the next frame. Texels a texture leaves transparent count nothing.
|
|
542
542
|
- `app.renderer.viewport.size()` answers one frozen object, replaced only when the frame changes (a resize, a rotation, new insets, a new scale): compare frames with `===`; a write into it throws a `TypeError`.
|
|
543
543
|
- `pluginConfigs.renderer.warm` (default `1`, 0 to 16) is the pipeline warm-up: while a game loads, each drawn frame first draws that many invisible probes (sprites, graphics, text, particles, every filter kind and stage `effects` registers, on the canvas and on a texture, with and without a clip), wiped by the stage pass, so no screen creates a GPU pipeline in the frame it opens in; `0` turns it off. `app.renderer.sync.filters.warm(filter)` warms a game's own filter (answers `true` once drawn). An agent build writes a `warm` event `{ draws }` when the queue empties.
|
|
544
|
-
- `defineFilter(id, { area: value => [x, y, width, height] })` declares the box, in the entity's own units, outside of which the filter draws nothing: Pixi renders and fills only that box (a lens over a full-screen cover fills its disc, not the screen). The view gets the union of its enabled filters' areas, none when an enabled filter declares none (`renderer.sync.filters.area(entity, area)`). The area also clips the view's own children: Pixi draws nothing of the view outside it, so a shadow or a badge that overhangs the box is cut; make the box hold them. Distance-field text uses device pixels for its edge: sharper at a resolution above 1.
|
|
544
|
+
- `defineFilter(id, { area: value => [x, y, width, height] })` declares the box, in the entity's own units, outside of which the filter draws nothing: Pixi renders and fills only that box (a lens over a full-screen cover fills its disc, not the screen). The view gets the union of its enabled filters' areas, none when an enabled filter declares none (`renderer.sync.filters.area(entity, area)`). The area also clips the view's own children: Pixi draws nothing of the view outside it, so a shadow or a badge that overhangs the box is cut; make the box hold them. The full-screen filter budget and the kept-picture budget count a view with an area by that area, not by its box. Distance-field text uses device pixels for its edge: sharper at a resolution above 1.
|
|
545
545
|
- `pluginConfigs.renderer.poolTrim` (default `{ restMs: 1000, aboveMb: 16 }`) gives back the idle render targets Pixi's texture pool keeps, strictly between frames: after `restMs` of a still screen (`onDemand`), `restMs` after a scene change (each when the targets grew by `aboveMb` MiB), and on a pause (whatever grew); `false` keeps them. `stats().textureMbSplit.targets` shows the drop; an agent build writes a `pool-trim` event `{ reason, freedMb }`.
|
|
546
546
|
- `app.renderer.viewport.size().safeArea` is read from four CSS custom properties on the page, `--moku-safe-top`, `--moku-safe-right`, `--moku-safe-bottom`, `--moku-safe-left`, each falling back to `env(safe-area-inset-*, 0px)`. Any CSS length works (`max()`, `calc()`, `env()`); a negative one counts as 0. A change of a property or of the page's insets, and the window event `moku-native:insets`, is laid out at the next frame. There is no `setInsets`: set the properties, e.g. `:root { --moku-safe-top: max(env(safe-area-inset-top, 0px), 24px); }`.
|
|
547
547
|
|