@ai-matrx/canvas 0.3.0 → 0.5.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/dist/react.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType, ReactNode, CSSProperties, ButtonHTMLAttributes, HTMLAttributes, ReactElement } from 'react';
3
- import { F as CanvasRect, d as CanvasPaneId, C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, i as CanvasItem, h as CanvasController, I as CanvasSessionEvent, G as CanvasSessionAttachReason, H as CanvasSessionDetachReason, e as CanvasStoreBinding, E as CanvasPersistencePort, w as CanvasErrorSink, z as CanvasLayoutRules, T as ToggleKindInput, y as CanvasKindVisibility, f as CanvasState } from './toggleKind-A9v45oSb.cjs';
3
+ import { N as CanvasRect, d as CanvasPaneId, C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, i as CanvasItem, h as CanvasController, L as CanvasPresentation, Q as CanvasSessionEvent, O as CanvasSessionAttachReason, P as CanvasSessionDetachReason, K as CanvasPreferredTarget, e as CanvasStoreBinding, J as CanvasPersistencePort, A as CanvasErrorSink, E as CanvasLayoutRules, X as ToggleKindInput, D as CanvasKindVisibility, f as CanvasState } from './toggleKind-BD78LnMB.cjs';
4
4
 
5
5
  /** One floating thing. Plain data, so a host can draw it in another process. */
6
6
  type CanvasFloating = {
@@ -66,9 +66,21 @@ interface CanvasKindProps<TData extends CanvasJson = CanvasJson> {
66
66
  readonly data: TData;
67
67
  readonly paneId: CanvasPaneId;
68
68
  readonly isFocused: boolean;
69
+ /**
70
+ * On screen right now: its tab is active and its canvas is open. A body
71
+ * stays mounted while hidden (a background tab, a put-away canvas) — pause
72
+ * costly work (polling, animation) while this is false.
73
+ */
74
+ readonly isVisible: boolean;
69
75
  /** The canvas, acting for the window this pane is in. */
70
76
  readonly canvas: CanvasController;
71
77
  readonly windowId: CanvasWindowId;
78
+ /**
79
+ * The space this body has, live: size, orientation, narrow, expanded, pane
80
+ * count. Lay content out for it (a graph in a tall narrow pane flows top to
81
+ * bottom). Nested components read the same value with `useCanvasPresentation()`.
82
+ */
83
+ readonly presentation: CanvasPresentation;
72
84
  }
73
85
  interface CanvasMenuItem {
74
86
  readonly id: string;
@@ -105,8 +117,26 @@ interface CanvasKind<TData extends CanvasJson = CanvasJson> {
105
117
  readonly onAttach?: (event: CanvasSessionEvent<CanvasSessionAttachReason>) => void;
106
118
  /** restore "session": the tab no longer shows it ("close" | "leave" | "unmount"). Never kill the process here. */
107
119
  readonly onDetach?: (event: CanvasSessionEvent<CanvasSessionDetachReason>) => void;
108
- /** Stays mounted while its tab is in the background (live chat, a running tool). */
120
+ /**
121
+ * @deprecated Since 0.5.0 every body stays mounted from the first time it
122
+ * is shown until its tab closes — through tab switches, splits, moves,
123
+ * expand and the canvas being put away. This field changes nothing.
124
+ */
109
125
  readonly keepAlive?: boolean;
126
+ /**
127
+ * Opt OUT of staying mounted: the body unmounts whenever it is not on
128
+ * screen (a hidden tab, a put-away canvas) and mounts fresh when shown.
129
+ * Only for genuinely heavy bodies whose state is cheap to rebuild.
130
+ */
131
+ readonly unmountWhenHidden?: boolean;
132
+ /**
133
+ * Where a NEW item of this kind opens while the canvas already shows
134
+ * something: "split-down" puts it in a pane below (the layout rules' split
135
+ * share — a feed under the work), "split-right" beside, "focused" (default)
136
+ * in the focused pane. A pane already showing this kind takes it instead of
137
+ * a new split. A caller's explicit `target` always wins.
138
+ */
139
+ readonly preferredTarget?: CanvasPreferredTarget;
110
140
  /**
111
141
  * "native": the body is drawn by the HOST outside the DOM (an Electron
112
142
  * WebContentsView). The pane renders a placeholder and reports its rect
@@ -133,6 +163,13 @@ interface CanvasKind<TData extends CanvasJson = CanvasJson> {
133
163
  readonly HeaderLeading?: ComponentType<CanvasKindProps<TData>>;
134
164
  /** The kind's own button, rendered left of the pane's "…" menu. */
135
165
  readonly HeaderAction?: ComponentType<CanvasKindProps<TData>>;
166
+ /**
167
+ * A toolbar ROW between the pane header and the body, for the active item
168
+ * only (a browser's back / forward / reload / address / screenshot). Always
169
+ * DOM, never covered by a native view: a `body: "native"` frame is measured
170
+ * BELOW it.
171
+ */
172
+ readonly Toolbar?: ComponentType<CanvasKindProps<TData>>;
136
173
  /** Kind-specific entries for the pane's "…" menu. */
137
174
  readonly menuItems?: (props: CanvasKindProps<TData>) => readonly CanvasMenuItem[];
138
175
  }
@@ -178,6 +215,22 @@ interface CanvasHostPorts {
178
215
  readonly onNativeBodyFrame?: CanvasNativeBodyFrame | undefined;
179
216
  }
180
217
  type CanvasTabStripMode = "auto" | "always";
218
+ /**
219
+ * One contextual launcher entry: a page offers something about ITSELF in the
220
+ * canvas's "New tab" launcher ("This chat's documents" on a chat page) for as
221
+ * long as it is mounted. Shown before the global kinds.
222
+ */
223
+ interface CanvasLauncherEntry {
224
+ readonly kind: string;
225
+ readonly key: string;
226
+ readonly data?: CanvasJson | undefined;
227
+ /** The entry's label (and the new tab's title). Default: the kind's label. */
228
+ readonly title?: string | null | undefined;
229
+ /** Default: the kind's icon. */
230
+ readonly icon?: ComponentType<{
231
+ className?: string;
232
+ }> | undefined;
233
+ }
181
234
  interface CanvasProviderProps extends CanvasHostPorts {
182
235
  readonly children: ReactNode;
183
236
  /** A Redux-bound store (bindCanvasToReduxStore), a remote one (createRemoteCanvasStore), or omit for a standalone store. */
@@ -243,6 +296,15 @@ declare function useCanvasKindToggle(input: ToggleKindInput): {
243
296
  /** Re-renders when kinds register, so late-registered kinds appear. */
244
297
  declare function useCanvasKinds(): readonly AnyCanvasKind[];
245
298
  declare function useCanvasKind(id: string): AnyCanvasKind | undefined;
299
+ /**
300
+ * Offers `entry` in the canvas's "New tab" launcher while the calling
301
+ * component is mounted — a route registers what is about IT (a chat's
302
+ * documents, a table's saved views). Contextual entries show before the
303
+ * global kinds. A no-op outside a CanvasProvider.
304
+ */
305
+ declare function useCanvasLauncherEntry(entry: CanvasLauncherEntry): void;
306
+ /** Contextual launcher entries, latest registration of each `kind::key` only, in registration order. */
307
+ declare function useCanvasLauncherEntries(): readonly CanvasLauncherEntry[];
246
308
 
247
309
  /** The column's rendered width in px for this window: 0 when put away, null when expanded. */
248
310
  declare function useCanvasColumnWidth(): number | null;
@@ -267,6 +329,31 @@ declare function CanvasToggle({ className, variant, }: {
267
329
  className?: string;
268
330
  variant?: "glass" | "transparent";
269
331
  }): react.JSX.Element;
332
+ /** One icon of a `CanvasKindIcons` cluster. A string is a kind on its "default" tab. */
333
+ interface CanvasKindIcon {
334
+ readonly kind: string;
335
+ /** Default "default" — one instance of the kind (a toolbar tool). */
336
+ readonly key?: string | undefined;
337
+ /** Data for a NEW item; an open one keeps its own. */
338
+ readonly data?: CanvasJson | undefined;
339
+ readonly title?: string | null | undefined;
340
+ /** What a press does while the item is in front: close it (default) or put the canvas away. */
341
+ readonly whenVisible?: "close" | "hide" | undefined;
342
+ /** Accessible name and tooltip. Default: the kind's label. */
343
+ readonly label?: string | undefined;
344
+ }
345
+ /**
346
+ * A cluster of icon buttons for pinned kinds — the tool icons of a header
347
+ * (Terminal, Review, Browser…). Each toggles or focuses its kind and is drawn
348
+ * pressed while its item is in front, so web and desktop show the same
349
+ * cluster. A kind that is not registered draws nothing.
350
+ */
351
+ declare function CanvasKindIcons({ kinds, variant, className, label, }: {
352
+ kinds: readonly (string | CanvasKindIcon)[];
353
+ variant?: "glass" | "transparent";
354
+ className?: string;
355
+ label?: string;
356
+ }): react.JSX.Element;
270
357
  /**
271
358
  * For hosts without their own shell (a Vite app, an Electron window): the app
272
359
  * on the left, the canvas column on the right, expand handled.
@@ -276,6 +363,16 @@ declare function CanvasFrame({ children, className }: {
276
363
  className?: string;
277
364
  }): react.JSX.Element;
278
365
 
366
+ /**
367
+ * The live presentation of the canvas body this component renders in: size,
368
+ * orientation, narrow, expanded, pane count. `null` outside the canvas — so a
369
+ * component used both on a page and in a canvas adapts only in the canvas.
370
+ *
371
+ * const p = useCanvasPresentation();
372
+ * const direction = preferredFlowDirection(p); // "vertical" in a tall narrow pane
373
+ */
374
+ declare function useCanvasPresentation(): CanvasPresentation | null;
375
+
279
376
  declare function itemTitle(item: CanvasItem, kind: AnyCanvasKind | undefined): string;
280
377
  declare function CanvasPaneView({ paneId }: {
281
378
  paneId: CanvasPaneId;
@@ -382,4 +479,4 @@ interface BrowserBarProps {
382
479
  /** A browser's back · forward · reload · address bar, for a kind's leading slot or its body. */
383
480
  declare function BrowserBar({ url, canGoBack, canGoForward, onBack, onForward, onReload, onNavigate, trailing, className }: BrowserBarProps): react.JSX.Element;
384
481
 
385
- export { type AnyCanvasKind, BrowserBar, type BrowserBarProps, type BrowserTab, BrowserTabs, type BrowserTabsProps, CanvasColumn, type CanvasColumnProps, type CanvasFloating, CanvasFrame, CanvasHeaderButton, type CanvasHeaderButtonProps, type CanvasHostPorts, type CanvasKind, type CanvasKindProps, type CanvasMenuEntry, type CanvasMenuItem, CanvasMenuTrigger, type CanvasNativeBodyFrame, type CanvasNativeBodyInfo, type CanvasNativeRect, type CanvasOverlayPort, CanvasPaneView, CanvasPanel, CanvasPanelEmpty, type CanvasPanelProps, CanvasProvider, type CanvasProviderProps, type CanvasShowMenu, CanvasTab, type CanvasTabProps, type CanvasTabStripMode, CanvasToggle, CanvasWindowScope, canvasSessionKey, defineCanvasKind, getCanvasKind, itemTitle, listCanvasKinds, registerCanvasKind, registerCanvasKinds, useCanvas, useCanvasColumnWidth, useCanvasHostPorts, useCanvasIsPresented, useCanvasKind, useCanvasKindToggle, useCanvasKinds, useCanvasNativeBodies, useCanvasState, useCanvasWindowId, useOptionalCanvas, useOptionalCanvasState };
482
+ export { type AnyCanvasKind, BrowserBar, type BrowserBarProps, type BrowserTab, BrowserTabs, type BrowserTabsProps, CanvasColumn, type CanvasColumnProps, type CanvasFloating, CanvasFrame, CanvasHeaderButton, type CanvasHeaderButtonProps, type CanvasHostPorts, type CanvasKind, type CanvasKindIcon, CanvasKindIcons, type CanvasKindProps, type CanvasLauncherEntry, type CanvasMenuEntry, type CanvasMenuItem, CanvasMenuTrigger, type CanvasNativeBodyFrame, type CanvasNativeBodyInfo, type CanvasNativeRect, type CanvasOverlayPort, CanvasPaneView, CanvasPanel, CanvasPanelEmpty, type CanvasPanelProps, CanvasProvider, type CanvasProviderProps, type CanvasShowMenu, CanvasTab, type CanvasTabProps, type CanvasTabStripMode, CanvasToggle, CanvasWindowScope, canvasSessionKey, defineCanvasKind, getCanvasKind, itemTitle, listCanvasKinds, registerCanvasKind, registerCanvasKinds, useCanvas, useCanvasColumnWidth, useCanvasHostPorts, useCanvasIsPresented, useCanvasKind, useCanvasKindToggle, useCanvasKinds, useCanvasLauncherEntries, useCanvasLauncherEntry, useCanvasNativeBodies, useCanvasPresentation, useCanvasState, useCanvasWindowId, useOptionalCanvas, useOptionalCanvasState };
package/dist/react.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType, ReactNode, CSSProperties, ButtonHTMLAttributes, HTMLAttributes, ReactElement } from 'react';
3
- import { F as CanvasRect, d as CanvasPaneId, C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, i as CanvasItem, h as CanvasController, I as CanvasSessionEvent, G as CanvasSessionAttachReason, H as CanvasSessionDetachReason, e as CanvasStoreBinding, E as CanvasPersistencePort, w as CanvasErrorSink, z as CanvasLayoutRules, T as ToggleKindInput, y as CanvasKindVisibility, f as CanvasState } from './toggleKind-A9v45oSb.js';
3
+ import { N as CanvasRect, d as CanvasPaneId, C as CanvasItemId, a as CanvasWindowId, b as CanvasJson, i as CanvasItem, h as CanvasController, L as CanvasPresentation, Q as CanvasSessionEvent, O as CanvasSessionAttachReason, P as CanvasSessionDetachReason, K as CanvasPreferredTarget, e as CanvasStoreBinding, J as CanvasPersistencePort, A as CanvasErrorSink, E as CanvasLayoutRules, X as ToggleKindInput, D as CanvasKindVisibility, f as CanvasState } from './toggleKind-BD78LnMB.js';
4
4
 
5
5
  /** One floating thing. Plain data, so a host can draw it in another process. */
6
6
  type CanvasFloating = {
@@ -66,9 +66,21 @@ interface CanvasKindProps<TData extends CanvasJson = CanvasJson> {
66
66
  readonly data: TData;
67
67
  readonly paneId: CanvasPaneId;
68
68
  readonly isFocused: boolean;
69
+ /**
70
+ * On screen right now: its tab is active and its canvas is open. A body
71
+ * stays mounted while hidden (a background tab, a put-away canvas) — pause
72
+ * costly work (polling, animation) while this is false.
73
+ */
74
+ readonly isVisible: boolean;
69
75
  /** The canvas, acting for the window this pane is in. */
70
76
  readonly canvas: CanvasController;
71
77
  readonly windowId: CanvasWindowId;
78
+ /**
79
+ * The space this body has, live: size, orientation, narrow, expanded, pane
80
+ * count. Lay content out for it (a graph in a tall narrow pane flows top to
81
+ * bottom). Nested components read the same value with `useCanvasPresentation()`.
82
+ */
83
+ readonly presentation: CanvasPresentation;
72
84
  }
73
85
  interface CanvasMenuItem {
74
86
  readonly id: string;
@@ -105,8 +117,26 @@ interface CanvasKind<TData extends CanvasJson = CanvasJson> {
105
117
  readonly onAttach?: (event: CanvasSessionEvent<CanvasSessionAttachReason>) => void;
106
118
  /** restore "session": the tab no longer shows it ("close" | "leave" | "unmount"). Never kill the process here. */
107
119
  readonly onDetach?: (event: CanvasSessionEvent<CanvasSessionDetachReason>) => void;
108
- /** Stays mounted while its tab is in the background (live chat, a running tool). */
120
+ /**
121
+ * @deprecated Since 0.5.0 every body stays mounted from the first time it
122
+ * is shown until its tab closes — through tab switches, splits, moves,
123
+ * expand and the canvas being put away. This field changes nothing.
124
+ */
109
125
  readonly keepAlive?: boolean;
126
+ /**
127
+ * Opt OUT of staying mounted: the body unmounts whenever it is not on
128
+ * screen (a hidden tab, a put-away canvas) and mounts fresh when shown.
129
+ * Only for genuinely heavy bodies whose state is cheap to rebuild.
130
+ */
131
+ readonly unmountWhenHidden?: boolean;
132
+ /**
133
+ * Where a NEW item of this kind opens while the canvas already shows
134
+ * something: "split-down" puts it in a pane below (the layout rules' split
135
+ * share — a feed under the work), "split-right" beside, "focused" (default)
136
+ * in the focused pane. A pane already showing this kind takes it instead of
137
+ * a new split. A caller's explicit `target` always wins.
138
+ */
139
+ readonly preferredTarget?: CanvasPreferredTarget;
110
140
  /**
111
141
  * "native": the body is drawn by the HOST outside the DOM (an Electron
112
142
  * WebContentsView). The pane renders a placeholder and reports its rect
@@ -133,6 +163,13 @@ interface CanvasKind<TData extends CanvasJson = CanvasJson> {
133
163
  readonly HeaderLeading?: ComponentType<CanvasKindProps<TData>>;
134
164
  /** The kind's own button, rendered left of the pane's "…" menu. */
135
165
  readonly HeaderAction?: ComponentType<CanvasKindProps<TData>>;
166
+ /**
167
+ * A toolbar ROW between the pane header and the body, for the active item
168
+ * only (a browser's back / forward / reload / address / screenshot). Always
169
+ * DOM, never covered by a native view: a `body: "native"` frame is measured
170
+ * BELOW it.
171
+ */
172
+ readonly Toolbar?: ComponentType<CanvasKindProps<TData>>;
136
173
  /** Kind-specific entries for the pane's "…" menu. */
137
174
  readonly menuItems?: (props: CanvasKindProps<TData>) => readonly CanvasMenuItem[];
138
175
  }
@@ -178,6 +215,22 @@ interface CanvasHostPorts {
178
215
  readonly onNativeBodyFrame?: CanvasNativeBodyFrame | undefined;
179
216
  }
180
217
  type CanvasTabStripMode = "auto" | "always";
218
+ /**
219
+ * One contextual launcher entry: a page offers something about ITSELF in the
220
+ * canvas's "New tab" launcher ("This chat's documents" on a chat page) for as
221
+ * long as it is mounted. Shown before the global kinds.
222
+ */
223
+ interface CanvasLauncherEntry {
224
+ readonly kind: string;
225
+ readonly key: string;
226
+ readonly data?: CanvasJson | undefined;
227
+ /** The entry's label (and the new tab's title). Default: the kind's label. */
228
+ readonly title?: string | null | undefined;
229
+ /** Default: the kind's icon. */
230
+ readonly icon?: ComponentType<{
231
+ className?: string;
232
+ }> | undefined;
233
+ }
181
234
  interface CanvasProviderProps extends CanvasHostPorts {
182
235
  readonly children: ReactNode;
183
236
  /** A Redux-bound store (bindCanvasToReduxStore), a remote one (createRemoteCanvasStore), or omit for a standalone store. */
@@ -243,6 +296,15 @@ declare function useCanvasKindToggle(input: ToggleKindInput): {
243
296
  /** Re-renders when kinds register, so late-registered kinds appear. */
244
297
  declare function useCanvasKinds(): readonly AnyCanvasKind[];
245
298
  declare function useCanvasKind(id: string): AnyCanvasKind | undefined;
299
+ /**
300
+ * Offers `entry` in the canvas's "New tab" launcher while the calling
301
+ * component is mounted — a route registers what is about IT (a chat's
302
+ * documents, a table's saved views). Contextual entries show before the
303
+ * global kinds. A no-op outside a CanvasProvider.
304
+ */
305
+ declare function useCanvasLauncherEntry(entry: CanvasLauncherEntry): void;
306
+ /** Contextual launcher entries, latest registration of each `kind::key` only, in registration order. */
307
+ declare function useCanvasLauncherEntries(): readonly CanvasLauncherEntry[];
246
308
 
247
309
  /** The column's rendered width in px for this window: 0 when put away, null when expanded. */
248
310
  declare function useCanvasColumnWidth(): number | null;
@@ -267,6 +329,31 @@ declare function CanvasToggle({ className, variant, }: {
267
329
  className?: string;
268
330
  variant?: "glass" | "transparent";
269
331
  }): react.JSX.Element;
332
+ /** One icon of a `CanvasKindIcons` cluster. A string is a kind on its "default" tab. */
333
+ interface CanvasKindIcon {
334
+ readonly kind: string;
335
+ /** Default "default" — one instance of the kind (a toolbar tool). */
336
+ readonly key?: string | undefined;
337
+ /** Data for a NEW item; an open one keeps its own. */
338
+ readonly data?: CanvasJson | undefined;
339
+ readonly title?: string | null | undefined;
340
+ /** What a press does while the item is in front: close it (default) or put the canvas away. */
341
+ readonly whenVisible?: "close" | "hide" | undefined;
342
+ /** Accessible name and tooltip. Default: the kind's label. */
343
+ readonly label?: string | undefined;
344
+ }
345
+ /**
346
+ * A cluster of icon buttons for pinned kinds — the tool icons of a header
347
+ * (Terminal, Review, Browser…). Each toggles or focuses its kind and is drawn
348
+ * pressed while its item is in front, so web and desktop show the same
349
+ * cluster. A kind that is not registered draws nothing.
350
+ */
351
+ declare function CanvasKindIcons({ kinds, variant, className, label, }: {
352
+ kinds: readonly (string | CanvasKindIcon)[];
353
+ variant?: "glass" | "transparent";
354
+ className?: string;
355
+ label?: string;
356
+ }): react.JSX.Element;
270
357
  /**
271
358
  * For hosts without their own shell (a Vite app, an Electron window): the app
272
359
  * on the left, the canvas column on the right, expand handled.
@@ -276,6 +363,16 @@ declare function CanvasFrame({ children, className }: {
276
363
  className?: string;
277
364
  }): react.JSX.Element;
278
365
 
366
+ /**
367
+ * The live presentation of the canvas body this component renders in: size,
368
+ * orientation, narrow, expanded, pane count. `null` outside the canvas — so a
369
+ * component used both on a page and in a canvas adapts only in the canvas.
370
+ *
371
+ * const p = useCanvasPresentation();
372
+ * const direction = preferredFlowDirection(p); // "vertical" in a tall narrow pane
373
+ */
374
+ declare function useCanvasPresentation(): CanvasPresentation | null;
375
+
279
376
  declare function itemTitle(item: CanvasItem, kind: AnyCanvasKind | undefined): string;
280
377
  declare function CanvasPaneView({ paneId }: {
281
378
  paneId: CanvasPaneId;
@@ -382,4 +479,4 @@ interface BrowserBarProps {
382
479
  /** A browser's back · forward · reload · address bar, for a kind's leading slot or its body. */
383
480
  declare function BrowserBar({ url, canGoBack, canGoForward, onBack, onForward, onReload, onNavigate, trailing, className }: BrowserBarProps): react.JSX.Element;
384
481
 
385
- export { type AnyCanvasKind, BrowserBar, type BrowserBarProps, type BrowserTab, BrowserTabs, type BrowserTabsProps, CanvasColumn, type CanvasColumnProps, type CanvasFloating, CanvasFrame, CanvasHeaderButton, type CanvasHeaderButtonProps, type CanvasHostPorts, type CanvasKind, type CanvasKindProps, type CanvasMenuEntry, type CanvasMenuItem, CanvasMenuTrigger, type CanvasNativeBodyFrame, type CanvasNativeBodyInfo, type CanvasNativeRect, type CanvasOverlayPort, CanvasPaneView, CanvasPanel, CanvasPanelEmpty, type CanvasPanelProps, CanvasProvider, type CanvasProviderProps, type CanvasShowMenu, CanvasTab, type CanvasTabProps, type CanvasTabStripMode, CanvasToggle, CanvasWindowScope, canvasSessionKey, defineCanvasKind, getCanvasKind, itemTitle, listCanvasKinds, registerCanvasKind, registerCanvasKinds, useCanvas, useCanvasColumnWidth, useCanvasHostPorts, useCanvasIsPresented, useCanvasKind, useCanvasKindToggle, useCanvasKinds, useCanvasNativeBodies, useCanvasState, useCanvasWindowId, useOptionalCanvas, useOptionalCanvasState };
482
+ export { type AnyCanvasKind, BrowserBar, type BrowserBarProps, type BrowserTab, BrowserTabs, type BrowserTabsProps, CanvasColumn, type CanvasColumnProps, type CanvasFloating, CanvasFrame, CanvasHeaderButton, type CanvasHeaderButtonProps, type CanvasHostPorts, type CanvasKind, type CanvasKindIcon, CanvasKindIcons, type CanvasKindProps, type CanvasLauncherEntry, type CanvasMenuEntry, type CanvasMenuItem, CanvasMenuTrigger, type CanvasNativeBodyFrame, type CanvasNativeBodyInfo, type CanvasNativeRect, type CanvasOverlayPort, CanvasPaneView, CanvasPanel, CanvasPanelEmpty, type CanvasPanelProps, CanvasProvider, type CanvasProviderProps, type CanvasShowMenu, CanvasTab, type CanvasTabProps, type CanvasTabStripMode, CanvasToggle, CanvasWindowScope, canvasSessionKey, defineCanvasKind, getCanvasKind, itemTitle, listCanvasKinds, registerCanvasKind, registerCanvasKinds, useCanvas, useCanvasColumnWidth, useCanvasHostPorts, useCanvasIsPresented, useCanvasKind, useCanvasKindToggle, useCanvasKinds, useCanvasLauncherEntries, useCanvasLauncherEntry, useCanvasNativeBodies, useCanvasPresentation, useCanvasState, useCanvasWindowId, useOptionalCanvas, useOptionalCanvasState };