feat(tree): close rust family shell cutover
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
"use client";
|
||||
|
||||
import type { ReactNode } from "react";
|
||||
import { TreeShellRustDomShellHost } from "@/components/sidebar/tree-shell-dom-host";
|
||||
import type { TreeShellPickerItem } from "@/components/sidebar/tree-shell-dom-model";
|
||||
import {
|
||||
TreeShellIframeHost,
|
||||
type TreeShellPickerItem,
|
||||
} from "@/components/sidebar/tree-shell-iframe-host";
|
||||
import type { KernelFileTreeProjectionItem } from "@/lib/kernel-file-tree";
|
||||
import type { PageTreeProjectionItem } from "@/lib/tree-projection";
|
||||
@@ -14,6 +15,8 @@ export type TreeRendererFamily = "react" | "rust_family";
|
||||
export type TreeShellHostMode = "page" | "filetree" | "picker";
|
||||
|
||||
const RUST_RENDERER_CONTRACT = "rust_renderer_input_v1";
|
||||
const RUST_WASM_DOM_SHELL_HOST = "rust_wasm_dom_shell_host";
|
||||
const RUST_LEGACY_IFRAME_HOST = "rust_runtime_artifact_host";
|
||||
|
||||
export type TreeShellPickerCommand = {
|
||||
kind: "next" | "previous" | "home" | "end" | "pick";
|
||||
@@ -118,11 +121,17 @@ export function TreeShellHost({
|
||||
children,
|
||||
}: TreeShellHostProps) {
|
||||
const useRustHost = rendererFamily === "rust_family";
|
||||
const useIframeHost = useRustHost && Boolean(workspaceId?.trim());
|
||||
const useDomHost = useRustHost && Boolean(workspaceId?.trim());
|
||||
const useLegacyIframeHost =
|
||||
useDomHost &&
|
||||
typeof process !== "undefined" &&
|
||||
process.env.NEXT_PUBLIC_TREE_SHELL_LEGACY_IFRAME_HOST === "1";
|
||||
const hostKind = rendererFamily === "rust_family" ? "rust_family" : "react";
|
||||
const rendererContract = useRustHost ? RUST_RENDERER_CONTRACT : undefined;
|
||||
const implementation = useIframeHost
|
||||
? "rust_inline_compat_host"
|
||||
const implementation = useLegacyIframeHost
|
||||
? RUST_LEGACY_IFRAME_HOST
|
||||
: useDomHost
|
||||
? RUST_WASM_DOM_SHELL_HOST
|
||||
: fallbackImplementation ??
|
||||
(rendererFamily === "rust_family" ? "react_fallback" : "react_primary");
|
||||
|
||||
@@ -146,36 +155,70 @@ export function TreeShellHost({
|
||||
data-tree-renderer-contract={rendererContract}
|
||||
className="contents"
|
||||
>
|
||||
{useIframeHost && workspaceId ? (
|
||||
<TreeShellIframeHost
|
||||
mode={mode}
|
||||
surfaceTestId={surfaceTestId}
|
||||
workspaceId={workspaceId}
|
||||
rootNodeId={rootNodeId}
|
||||
activeDocumentId={activeDocumentId}
|
||||
focusedDocumentId={focusedDocumentId}
|
||||
activePickerItemKey={activePickerItemKey}
|
||||
allowRootPick={allowRootPick}
|
||||
excludeIds={excludeIds}
|
||||
pickerCommand={pickerCommand}
|
||||
pickerItems={pickerItems}
|
||||
pageTreeItems={pageTreeItems}
|
||||
inlineFileTreeItems={inlineFileTreeItems}
|
||||
channel={channel}
|
||||
host={host}
|
||||
onNavigate={onNavigate}
|
||||
onPick={onPick}
|
||||
onPickerFocusChange={onPickerFocusChange}
|
||||
onPageContextMenu={onPageContextMenu}
|
||||
onPageExpandChange={onPageExpandChange}
|
||||
onPageFocusChange={onPageFocusChange}
|
||||
onFileTreeContextMenu={onFileTreeContextMenu}
|
||||
onFileTreeSelectionChange={onFileTreeSelectionChange}
|
||||
onInternalDrop={onInternalDrop}
|
||||
onDropFiles={onDropFiles}
|
||||
onAssetOpen={onAssetOpen}
|
||||
onTreeMutation={onTreeMutation}
|
||||
/>
|
||||
{useDomHost && workspaceId ? (
|
||||
useLegacyIframeHost ? (
|
||||
<TreeShellIframeHost
|
||||
mode={mode}
|
||||
surfaceTestId={surfaceTestId}
|
||||
workspaceId={workspaceId}
|
||||
rootNodeId={rootNodeId}
|
||||
activeDocumentId={activeDocumentId}
|
||||
focusedDocumentId={focusedDocumentId}
|
||||
activePickerItemKey={activePickerItemKey}
|
||||
allowRootPick={allowRootPick}
|
||||
excludeIds={excludeIds}
|
||||
pickerCommand={pickerCommand}
|
||||
pickerItems={pickerItems}
|
||||
pageTreeItems={pageTreeItems}
|
||||
inlineFileTreeItems={inlineFileTreeItems}
|
||||
channel={channel}
|
||||
host={host}
|
||||
onNavigate={onNavigate}
|
||||
onPick={onPick}
|
||||
onPickerFocusChange={onPickerFocusChange}
|
||||
onPageContextMenu={onPageContextMenu}
|
||||
onPageExpandChange={onPageExpandChange}
|
||||
onPageFocusChange={onPageFocusChange}
|
||||
onFileTreeContextMenu={onFileTreeContextMenu}
|
||||
onFileTreeSelectionChange={onFileTreeSelectionChange}
|
||||
onInternalDrop={onInternalDrop}
|
||||
onDropFiles={onDropFiles}
|
||||
onAssetOpen={onAssetOpen}
|
||||
onTreeMutation={onTreeMutation}
|
||||
/>
|
||||
) : (
|
||||
<TreeShellRustDomShellHost
|
||||
mode={mode}
|
||||
surfaceTestId={surfaceTestId}
|
||||
workspaceId={workspaceId}
|
||||
rootNodeId={rootNodeId}
|
||||
activeDocumentId={activeDocumentId}
|
||||
focusedDocumentId={focusedDocumentId}
|
||||
activePickerItemKey={activePickerItemKey}
|
||||
allowRootPick={allowRootPick}
|
||||
excludeIds={excludeIds}
|
||||
pickerCommand={pickerCommand}
|
||||
pickerItems={pickerItems}
|
||||
pageTreeItems={pageTreeItems}
|
||||
inlineFileTreeItems={inlineFileTreeItems}
|
||||
channel={channel}
|
||||
host={host}
|
||||
onNavigate={onNavigate}
|
||||
onPick={onPick}
|
||||
onPickerFocusChange={onPickerFocusChange}
|
||||
onPageContextMenu={onPageContextMenu}
|
||||
onPageExpandChange={onPageExpandChange}
|
||||
onPageFocusChange={onPageFocusChange}
|
||||
onFileTreeContextMenu={onFileTreeContextMenu}
|
||||
onFileTreeSelectionChange={onFileTreeSelectionChange}
|
||||
onInternalDrop={onInternalDrop}
|
||||
onDropFiles={onDropFiles}
|
||||
onAssetOpen={onAssetOpen}
|
||||
onTreeMutation={onTreeMutation}
|
||||
>
|
||||
{children}
|
||||
</TreeShellRustDomShellHost>
|
||||
)
|
||||
) : (
|
||||
children
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user