@energy8platform/shell 0.6.1 → 0.6.2

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/html.cjs.js CHANGED
@@ -1448,7 +1448,7 @@ class KeyboardController {
1448
1448
 
1449
1449
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit. Mirrors package.json "version".
1450
1450
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
1451
- const PACKAGE_VERSION = '0.6.1';
1451
+ const PACKAGE_VERSION = '0.6.2';
1452
1452
 
1453
1453
  /** Apply defaults to the raw config (the mount target lives on the renderer, not here). */
1454
1454
  function resolveConfig(config) {
package/dist/html.d.ts CHANGED
@@ -511,7 +511,7 @@ declare class ShellController extends EventEmitter<ShellEvents> implements Shell
511
511
  tokens: ShellTokens;
512
512
  layout: ShellLayoutMode;
513
513
  soundOn: boolean;
514
- readonly engineVersion = "0.6.1";
514
+ readonly engineVersion = "0.6.2";
515
515
  readonly actions: ShellActions;
516
516
  private renderer;
517
517
  private i18n;
@@ -593,7 +593,7 @@ interface I18n {
593
593
  declare function createI18n(opts: I18nOptions): I18n;
594
594
 
595
595
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
596
- declare const PACKAGE_VERSION = "0.6.1";
596
+ declare const PACKAGE_VERSION = "0.6.2";
597
597
 
598
598
  /** A shell: the renderer-agnostic controller plus the surface facade (safeArea/barHeight/setVisible)
599
599
  * an embedding host reads. `createShell`, `createGameShell` and `createPixiShell` all return this. */
package/dist/html.esm.js CHANGED
@@ -1446,7 +1446,7 @@ class KeyboardController {
1446
1446
 
1447
1447
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit. Mirrors package.json "version".
1448
1448
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
1449
- const PACKAGE_VERSION = '0.6.1';
1449
+ const PACKAGE_VERSION = '0.6.2';
1450
1450
 
1451
1451
  /** Apply defaults to the raw config (the mount target lives on the renderer, not here). */
1452
1452
  function resolveConfig(config) {
package/dist/index.cjs.js CHANGED
@@ -1422,7 +1422,7 @@ class KeyboardController {
1422
1422
 
1423
1423
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit. Mirrors package.json "version".
1424
1424
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
1425
- const PACKAGE_VERSION = '0.6.1';
1425
+ const PACKAGE_VERSION = '0.6.2';
1426
1426
 
1427
1427
  /** Apply defaults to the raw config (the mount target lives on the renderer, not here). */
1428
1428
  function resolveConfig(config) {
package/dist/index.d.ts CHANGED
@@ -511,7 +511,7 @@ declare class ShellController extends EventEmitter<ShellEvents> implements Shell
511
511
  tokens: ShellTokens;
512
512
  layout: ShellLayoutMode;
513
513
  soundOn: boolean;
514
- readonly engineVersion = "0.6.1";
514
+ readonly engineVersion = "0.6.2";
515
515
  readonly actions: ShellActions;
516
516
  private renderer;
517
517
  private i18n;
@@ -593,7 +593,7 @@ interface I18n {
593
593
  declare function createI18n(opts: I18nOptions): I18n;
594
594
 
595
595
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
596
- declare const PACKAGE_VERSION = "0.6.1";
596
+ declare const PACKAGE_VERSION = "0.6.2";
597
597
 
598
598
  /** A shell: the renderer-agnostic controller plus the surface facade (safeArea/barHeight/setVisible)
599
599
  * an embedding host reads. `createShell`, `createGameShell` and `createPixiShell` all return this. */
package/dist/index.esm.js CHANGED
@@ -1420,7 +1420,7 @@ class KeyboardController {
1420
1420
 
1421
1421
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit. Mirrors package.json "version".
1422
1422
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
1423
- const PACKAGE_VERSION = '0.6.1';
1423
+ const PACKAGE_VERSION = '0.6.2';
1424
1424
 
1425
1425
  /** Apply defaults to the raw config (the mount target lives on the renderer, not here). */
1426
1426
  function resolveConfig(config) {
package/dist/pixi.cjs.js CHANGED
@@ -1449,7 +1449,7 @@ class KeyboardController {
1449
1449
 
1450
1450
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit. Mirrors package.json "version".
1451
1451
  /** The @energy8platform/shell package version, stamped into the game-info footer. */
1452
- const PACKAGE_VERSION = '0.6.1';
1452
+ const PACKAGE_VERSION = '0.6.2';
1453
1453
 
1454
1454
  /** Apply defaults to the raw config (the mount target lives on the renderer, not here). */
1455
1455
  function resolveConfig(config) {
@@ -4634,7 +4634,7 @@ function sectionCustom(host, s, width) {
4634
4634
  const sec = section(host, s.title != null ? host.t(s.title) : undefined);
4635
4635
  const inner = width - SECTION_PAD;
4636
4636
  if (s.node) {
4637
- sec.add(s.node); // game-supplied Pixi content owns its own layout
4637
+ sec.add(persistentSlot(s.node)); // game-supplied Pixi content owns its own layout
4638
4638
  }
4639
4639
  else if (s.html) {
4640
4640
  const text = s.html.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
@@ -4691,6 +4691,23 @@ function spacerBox(w, h) {
4691
4691
  g.rect(0, 0, w, h).fill({ color: 0xffffff, alpha: 0 });
4692
4692
  return g;
4693
4693
  }
4694
+ /** Wrap a GAME-supplied custom `node` so the shell BORROWS it instead of owning it. The overlay is
4695
+ * torn down with `destroy({ children: true })` on every close; that would recursively destroy the
4696
+ * game's node, so the section renders blank on reopen. This slot's `destroy` DETACHES the node
4697
+ * (leaving it intact) and destroys only the empty wrapper — the SAME node instance is re-mounted,
4698
+ * with all its drawing, the next time Game info opens. Mirrors the HTML shell, where the game's DOM
4699
+ * node simply persists in config across open/close. The game owns the node's lifetime, not us. */
4700
+ function persistentSlot(node) {
4701
+ const slot = new pixi_js.Container();
4702
+ slot.addChild(node);
4703
+ const destroySelf = pixi_js.Container.prototype.destroy.bind(slot);
4704
+ slot.destroy = () => {
4705
+ if (node.parent === slot)
4706
+ slot.removeChild(node); // keep the game node alive for the next open
4707
+ destroySelf({ children: false });
4708
+ };
4709
+ return slot;
4710
+ }
4694
4711
  /** A fixed box that loads an image into it (object-fit: contain) once the texture resolves. */
4695
4712
  function imageBox(url, w, h) {
4696
4713
  const c = new pixi_js.Container();