lumiverse-spindle-types 0.5.23 → 0.5.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lumiverse-spindle-types",
3
- "version": "0.5.23",
3
+ "version": "0.5.24",
4
4
  "types": "./src/index.ts",
5
5
  "keywords": [
6
6
  "lumiverse",
package/src/dom.ts CHANGED
@@ -212,6 +212,13 @@ export interface SpindleDockPanelHandle {
212
212
  onVisibilityChange(handler: (visible: boolean) => void): () => void;
213
213
  }
214
214
 
215
+ // ── Tab Mobility ──
216
+
217
+ /** Where a built-in drawer tab currently lives. */
218
+ export type SpindleTabLocation =
219
+ | { kind: "main-drawer" }
220
+ | { kind: "container"; containerId: string };
221
+
215
222
  // ── App Mount ──
216
223
 
217
224
  export interface SpindleAppMountOptions {
@@ -752,6 +759,12 @@ export interface SpindleFrontendContext {
752
759
  * ```
753
760
  */
754
761
  showConfirm(options: SpindleConfirmOptions): Promise<SpindleConfirmResult>;
762
+ /** Request a tab move to a specific drawer location. */
763
+ requestTabLocation(tabId: string, location: SpindleTabLocation): void;
764
+ /** Get the display title of a built-in drawer tab by its id. */
765
+ getBuiltInTabTitle(tabId: string): string | undefined;
766
+ /** Get the root HTMLElement of a built-in drawer tab by its id, or undefined if not mounted. */
767
+ getBuiltInTabRoot(tabId: string): HTMLElement | undefined;
755
768
  };
756
769
  /**
757
770
  * Mount instances of Lumiverse's first-party shared UI components (form
@@ -761,6 +774,13 @@ export interface SpindleFrontendContext {
761
774
  * {@link SpindleComponentsHelper} for the full surface.
762
775
  */
763
776
  components: SpindleComponentsHelper;
777
+ /** Register or unregister passive DOM containers that can receive tab roots. */
778
+ containers: {
779
+ /** Register a container element with a stable id. Tabs routed to this id via `requestTabLocation` will be reparented into `element`. Idempotent on id collision. */
780
+ registerContainer(entry: { id: string; side: 'left' | 'right' | 'top' | 'bottom'; element: HTMLElement }): void;
781
+ /** Remove a previously registered container. Tabs still pointing to this id will fall back to the main drawer. */
782
+ unregisterContainer(id: string): void;
783
+ };
764
784
  uploads: {
765
785
  pickFile(options?: {
766
786
  accept?: string[];
package/src/index.ts CHANGED
@@ -233,7 +233,8 @@ export type {
233
233
  SpindleDisplayScriptsArgs,
234
234
  SpindleDisplayResolveResult,
235
235
  SpindleDisplayTemplatesResult,
236
- } from "./dom";
236
+ SpindleTabLocation,
237
+ } from "./dom";
237
238
 
238
239
  export type {
239
240
  SpindleMountedComponent,