@pstdio/ui 0.8.0 → 0.9.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/{MermaidComponent-D7Baqkwx.js → MermaidComponent-Cz_Iob5U.js} +56 -53
- package/dist/MermaidComponent-Cz_Iob5U.js.map +1 -0
- package/dist/chat-ui.js +117 -117
- package/dist/chat-ui.js.map +1 -1
- package/dist/components/data-renderer/data-renderer-board.d.ts +1 -0
- package/dist/components/data-renderer/data-renderer-card.d.ts +5 -20
- package/dist/components/data-renderer/data-renderer-grouping.d.ts +11 -10
- package/dist/components/data-renderer/data-renderer-helpers.d.ts +63 -15
- package/dist/components/data-renderer/data-renderer-list.d.ts +5 -8
- package/dist/components/data-renderer/data-renderer-toolbar.d.ts +12 -0
- package/dist/components/data-renderer/data-renderer.d.ts +12 -23
- package/dist/components/data-renderer/display-menu.d.ts +9 -8
- package/dist/components/data-renderer/filter-menu.d.ts +5 -4
- package/dist/components/data-renderer/types.d.ts +83 -49
- package/dist/components/data-renderer/use-data-renderer-store.d.ts +15 -11
- package/dist/components/data-renderer/use-resolved-attributes.d.ts +14 -0
- package/dist/components/diff-viewer/diff-card-body.d.ts +10 -0
- package/dist/components/diff-viewer/diff-card-content.d.ts +1 -0
- package/dist/components/diff-viewer/diff-card.d.ts +1 -0
- package/dist/components/diff-viewer/diff-size.d.ts +2 -0
- package/dist/components/icon-color-picker.d.ts +13 -0
- package/dist/components/list-row/list-row-content.d.ts +9 -0
- package/dist/components/list-row/list-row.types.d.ts +1 -0
- package/dist/components/rich-text/shared/lexical-code.d.ts +2 -0
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +1 -1
- package/dist/components/rich-text/shared/prism-global.d.ts +2 -0
- package/dist/components/status-option-editor/index.d.ts +2 -0
- package/dist/components/status-option-editor/status-option-editor.d.ts +2 -0
- package/dist/components/status-option-editor/status-option-editor.types.d.ts +39 -0
- package/dist/components/status-option-editor/status-option-row.d.ts +16 -0
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +19 -0
- package/dist/components/tab-strip/tab-visibility.store.d.ts +41 -0
- package/dist/components/tree-list/tree-list-model.d.ts +58 -0
- package/dist/components/tree-list/tree-list-node-row.d.ts +20 -0
- package/dist/components/tree-list/tree-list-order-filter.d.ts +3 -0
- package/dist/components/tree-list/tree-list-order.store.d.ts +42 -0
- package/dist/components/tree-list/tree-list-reorder.d.ts +13 -0
- package/dist/components/tree-list/tree-list-section-header.d.ts +14 -0
- package/dist/components/tree-list/tree-list-sortable.d.ts +22 -0
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +17 -0
- package/dist/components/tree-list/tree-list-visibility.store.d.ts +45 -0
- package/dist/components/tree-list/tree-list.d.ts +7 -27
- package/dist/components/tree-list/tree-list.types.d.ts +2 -0
- package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +15 -0
- package/dist/get-file-type-icon-ufFb0IkR.js +102 -0
- package/dist/get-file-type-icon-ufFb0IkR.js.map +1 -0
- package/dist/index.d.ts +22 -3
- package/dist/index.js +5171 -3890
- package/dist/index.js.map +1 -1
- package/dist/{rich-message-33DPxuWJ.js → rich-message-CEOSsdR2.js} +428 -421
- package/dist/rich-message-CEOSsdR2.js.map +1 -0
- package/dist/rich-text.js +26 -26
- package/dist/rich-text.js.map +1 -1
- package/dist/theme/custom/index.d.ts +0 -3
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/recipes/tabs.d.ts +30 -0
- package/dist/theme/tokens/colors.d.ts +6 -0
- package/dist/{theme-D-aCJqTf.js → theme-qP4YOZ2R.js} +197 -148
- package/dist/theme-qP4YOZ2R.js.map +1 -0
- package/dist/theme.js +2 -4
- package/dist/utils/browser-storage.d.ts +7 -0
- package/dist/utils/prism.d.ts +1 -0
- package/package.json +8 -3
- package/dist/MermaidComponent-D7Baqkwx.js.map +0 -1
- package/dist/components/data-renderer/tag-badge.d.ts +0 -10
- package/dist/components/data-renderer/tag-option-icon.d.ts +0 -2
- package/dist/get-file-type-icon-Bwqf1WXA.js +0 -101
- package/dist/get-file-type-icon-Bwqf1WXA.js.map +0 -1
- package/dist/rich-message-33DPxuWJ.js.map +0 -1
- package/dist/theme/custom/monokai.json.d.ts +0 -80
- package/dist/theme-D-aCJqTf.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface StatusOptionEditorItem {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
color: string;
|
|
5
|
+
sortOrder: number;
|
|
6
|
+
actions?: string[];
|
|
7
|
+
icon?: string | null;
|
|
8
|
+
isDefault?: boolean;
|
|
9
|
+
isNew?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface StatusOptionEditorAction {
|
|
12
|
+
value: string;
|
|
13
|
+
label: string;
|
|
14
|
+
}
|
|
15
|
+
export interface StatusOptionEditorProps {
|
|
16
|
+
title: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
items: StatusOptionEditorItem[];
|
|
19
|
+
onItemsChange: (items: StatusOptionEditorItem[]) => void;
|
|
20
|
+
onSave: () => void | Promise<void>;
|
|
21
|
+
onCancel: () => void;
|
|
22
|
+
onDeleteItem?: (item: StatusOptionEditorItem) => void;
|
|
23
|
+
onSetDefault?: (item: StatusOptionEditorItem) => void;
|
|
24
|
+
hasChanges?: boolean;
|
|
25
|
+
isSaving?: boolean;
|
|
26
|
+
addLabel?: string;
|
|
27
|
+
addPlaceholder?: string;
|
|
28
|
+
actionOptions?: StatusOptionEditorAction[];
|
|
29
|
+
actionsColumnLabel?: string;
|
|
30
|
+
cancelLabel?: string;
|
|
31
|
+
defaultAddColor?: string;
|
|
32
|
+
defaultColumnLabel?: string;
|
|
33
|
+
deleteButtonText?: string;
|
|
34
|
+
deleteHeadline?: string;
|
|
35
|
+
deleteNotificationText?: (item: StatusOptionEditorItem) => string;
|
|
36
|
+
saveLabel?: string;
|
|
37
|
+
showDefault?: boolean;
|
|
38
|
+
showIcons?: boolean;
|
|
39
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StatusOptionEditorAction, StatusOptionEditorItem } from './status-option-editor.types';
|
|
2
|
+
interface StatusOptionRowProps {
|
|
3
|
+
actionOptions?: StatusOptionEditorAction[];
|
|
4
|
+
item: StatusOptionEditorItem;
|
|
5
|
+
isSaving?: boolean;
|
|
6
|
+
showDefault?: boolean;
|
|
7
|
+
showIcons?: boolean;
|
|
8
|
+
onActionsChange: (actions: string[]) => void;
|
|
9
|
+
onColorChange: (color: string) => void;
|
|
10
|
+
onDelete: () => void;
|
|
11
|
+
onIconChange: (icon: string | null) => void;
|
|
12
|
+
onNameChange: (name: string) => void;
|
|
13
|
+
onSetDefault: () => void;
|
|
14
|
+
}
|
|
15
|
+
export declare const StatusOptionRow: (props: StatusOptionRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ResourceContextAction } from '../resource-context-menu';
|
|
3
|
+
import { VisibilityOverride } from '../tree-list/tree-list-visibility.store';
|
|
4
|
+
export interface TabVisibilityPlacement {
|
|
5
|
+
closable?: boolean;
|
|
6
|
+
hiddenByDefault?: boolean;
|
|
7
|
+
title?: string;
|
|
8
|
+
contributionId: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const filterVisibleTabs: <T extends TabVisibilityPlacement>(placements: T[], tabOverrides: Record<string, VisibilityOverride>, getKey: (placement: T) => string) => T[];
|
|
11
|
+
export interface TabVisibilityMenuActions {
|
|
12
|
+
onToggleTab: (key: string, hiddenByDefault: boolean) => void;
|
|
13
|
+
onResetAll: () => void;
|
|
14
|
+
}
|
|
15
|
+
interface BuildTabMenuOptions {
|
|
16
|
+
checkmark: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
export declare const buildTabVisibilityMenuActions: <T extends TabVisibilityPlacement>(placements: T[], tabOverrides: Record<string, VisibilityOverride>, actions: TabVisibilityMenuActions, getKey: (placement: T) => string, options: BuildTabMenuOptions) => ResourceContextAction[];
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { VisibilityOverride } from '../tree-list/tree-list-visibility.store';
|
|
2
|
+
interface TabVisibilitySnapshot {
|
|
3
|
+
tabOverrides: Record<string, VisibilityOverride>;
|
|
4
|
+
}
|
|
5
|
+
interface TabVisibilityState extends TabVisibilitySnapshot {
|
|
6
|
+
setTab: (key: string, value: VisibilityOverride | undefined) => void;
|
|
7
|
+
toggleTab: (key: string, hiddenByDefault: boolean) => void;
|
|
8
|
+
clearTab: (key: string) => void;
|
|
9
|
+
reset: () => void;
|
|
10
|
+
}
|
|
11
|
+
interface CreateTabVisibilityStoreOptions {
|
|
12
|
+
storageKey: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const createTabVisibilityStore: (options: CreateTabVisibilityStoreOptions) => Omit<import('zustand').StoreApi<TabVisibilityState>, "setState" | "persist"> & {
|
|
15
|
+
setState(partial: TabVisibilityState | Partial<TabVisibilityState> | ((state: TabVisibilityState) => TabVisibilityState | Partial<TabVisibilityState>), replace?: false | undefined): unknown;
|
|
16
|
+
setState(state: TabVisibilityState | ((state: TabVisibilityState) => TabVisibilityState), replace: true): unknown;
|
|
17
|
+
persist: {
|
|
18
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TabVisibilityState, unknown, unknown>>) => void;
|
|
19
|
+
clearStorage: () => void;
|
|
20
|
+
rehydrate: () => Promise<void> | void;
|
|
21
|
+
hasHydrated: () => boolean;
|
|
22
|
+
onHydrate: (fn: (state: TabVisibilityState) => void) => () => void;
|
|
23
|
+
onFinishHydration: (fn: (state: TabVisibilityState) => void) => () => void;
|
|
24
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TabVisibilityState, unknown, unknown>>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare const getTabVisibilityStore: (storageKey: string) => Omit<import('zustand').StoreApi<TabVisibilityState>, "setState" | "persist"> & {
|
|
28
|
+
setState(partial: TabVisibilityState | Partial<TabVisibilityState> | ((state: TabVisibilityState) => TabVisibilityState | Partial<TabVisibilityState>), replace?: false | undefined): unknown;
|
|
29
|
+
setState(state: TabVisibilityState | ((state: TabVisibilityState) => TabVisibilityState), replace: true): unknown;
|
|
30
|
+
persist: {
|
|
31
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TabVisibilityState, unknown, unknown>>) => void;
|
|
32
|
+
clearStorage: () => void;
|
|
33
|
+
rehydrate: () => Promise<void> | void;
|
|
34
|
+
hasHydrated: () => boolean;
|
|
35
|
+
onHydrate: (fn: (state: TabVisibilityState) => void) => () => void;
|
|
36
|
+
onFinishHydration: (fn: (state: TabVisibilityState) => void) => () => void;
|
|
37
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TabVisibilityState, unknown, unknown>>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export declare const useTabVisibilityStore: <T>(storageKey: string, selector: (state: TabVisibilityState) => T) => T;
|
|
41
|
+
export type { TabVisibilitySnapshot, TabVisibilityState };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { TreeListNode, TreeListSection } from './tree-list.types';
|
|
2
|
+
export declare const isInList: (id: string, values: string[]) => boolean;
|
|
3
|
+
export declare const isActiveNode: (id: string, activeNodeId?: string | string[] | null) => boolean;
|
|
4
|
+
export declare const isNavigableNode: (node: TreeListNode) => boolean;
|
|
5
|
+
export declare const getNodeChildren: (node: TreeListNode) => TreeListNode[];
|
|
6
|
+
export declare const hasExpandableChildren: (node: TreeListNode) => boolean;
|
|
7
|
+
export type VirtualRow = {
|
|
8
|
+
kind: "section-header";
|
|
9
|
+
key: string;
|
|
10
|
+
sectionId: string;
|
|
11
|
+
section: TreeListSection;
|
|
12
|
+
collapsible: boolean;
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "node";
|
|
16
|
+
key: string;
|
|
17
|
+
sectionId: string;
|
|
18
|
+
node: TreeListNode;
|
|
19
|
+
level: number;
|
|
20
|
+
parentNodeId?: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "section-empty";
|
|
23
|
+
key: string;
|
|
24
|
+
sectionId: string;
|
|
25
|
+
emptyState: TreeListSection["emptyState"];
|
|
26
|
+
};
|
|
27
|
+
export type VirtualNodeRow = Extract<VirtualRow, {
|
|
28
|
+
kind: "node";
|
|
29
|
+
}>;
|
|
30
|
+
export type VirtualSectionHeaderRow = Extract<VirtualRow, {
|
|
31
|
+
kind: "section-header";
|
|
32
|
+
}>;
|
|
33
|
+
/** Rows the keyboard can land on: enabled nodes and collapsible section headers. */
|
|
34
|
+
export type FocusableRow = VirtualNodeRow | VirtualSectionHeaderRow;
|
|
35
|
+
export declare const buildVirtualRows: (sections: TreeListSection[], expandedSectionIds: string[], expandedNodeIds: string[]) => VirtualRow[];
|
|
36
|
+
/** Stable id used to track keyboard focus across renders. */
|
|
37
|
+
export declare const getRowFocusId: (row: FocusableRow) => string;
|
|
38
|
+
export declare const isFocusableRow: (row: VirtualRow) => row is FocusableRow;
|
|
39
|
+
export declare const getFocusableRows: (rows: VirtualRow[]) => FocusableRow[];
|
|
40
|
+
export declare const resolveTreeListFocusRowId: (focusedRowId: string | undefined, activeNodeId: string | string[] | null | undefined, rows: VirtualRow[]) => string | undefined;
|
|
41
|
+
export declare const resolveTreeListKeyboardNavigation: (input: {
|
|
42
|
+
rows: VirtualRow[];
|
|
43
|
+
focusedRowId: string | undefined;
|
|
44
|
+
activeNodeId?: string | string[] | null;
|
|
45
|
+
expandedNodeIds: string[];
|
|
46
|
+
key: string;
|
|
47
|
+
}) => {
|
|
48
|
+
type: "toggle-section";
|
|
49
|
+
sectionId: string;
|
|
50
|
+
rowId?: undefined;
|
|
51
|
+
} | {
|
|
52
|
+
type: "toggle-node";
|
|
53
|
+
nodeId: string;
|
|
54
|
+
rowId?: undefined;
|
|
55
|
+
} | {
|
|
56
|
+
type: "focus";
|
|
57
|
+
rowId: string;
|
|
58
|
+
} | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StackProps } from '@chakra-ui/react';
|
|
2
|
+
import { FocusEventHandler } from 'react';
|
|
3
|
+
import { TreeListLinkComponent, TreeListNavigateEvent, TreeListNode } from './tree-list.types';
|
|
4
|
+
type TreeListRowVariant = "compact" | "tree";
|
|
5
|
+
interface TreeListNodeRowProps {
|
|
6
|
+
sectionId: string;
|
|
7
|
+
node: TreeListNode;
|
|
8
|
+
level: number;
|
|
9
|
+
expandedNodeIds: string[];
|
|
10
|
+
activeNodeId?: string | string[] | null;
|
|
11
|
+
rowVariant: TreeListRowVariant;
|
|
12
|
+
nodeGap: StackProps["gap"];
|
|
13
|
+
linkComponent?: TreeListLinkComponent;
|
|
14
|
+
tabIndex?: number;
|
|
15
|
+
onFocus?: FocusEventHandler<HTMLElement>;
|
|
16
|
+
onNavigate?: (event: TreeListNavigateEvent) => void;
|
|
17
|
+
onToggleNode?: (nodeId: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const TreeListNodeRow: (props: TreeListNodeRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { TreeListNode, TreeListSection } from './tree-list.types';
|
|
2
|
+
export declare const applyTreeListOrder: (sections: TreeListSection[], sectionOrder: string[], nodeOrderBySection: Record<string, string[]>) => TreeListSection[];
|
|
3
|
+
export declare const reorderNodesById: (nodes: TreeListNode[], order: string[]) => TreeListNode[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
interface TreeListOrderSnapshot {
|
|
2
|
+
sectionOrder: string[];
|
|
3
|
+
nodeOrderBySection: Record<string, string[]>;
|
|
4
|
+
}
|
|
5
|
+
interface TreeListOrderState extends TreeListOrderSnapshot {
|
|
6
|
+
setSectionOrder: (nextSectionIds: string[]) => void;
|
|
7
|
+
setNodeOrder: (sectionId: string, nextNodeIds: string[]) => void;
|
|
8
|
+
resetSectionOrder: () => void;
|
|
9
|
+
resetNodeOrder: (sectionId: string) => void;
|
|
10
|
+
reset: () => void;
|
|
11
|
+
}
|
|
12
|
+
interface CreateTreeListOrderStoreOptions {
|
|
13
|
+
storageKey: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const createTreeListOrderStore: (options: CreateTreeListOrderStoreOptions) => Omit<import('zustand').StoreApi<TreeListOrderState>, "setState" | "persist"> & {
|
|
16
|
+
setState(partial: TreeListOrderState | Partial<TreeListOrderState> | ((state: TreeListOrderState) => TreeListOrderState | Partial<TreeListOrderState>), replace?: false | undefined): unknown;
|
|
17
|
+
setState(state: TreeListOrderState | ((state: TreeListOrderState) => TreeListOrderState), replace: true): unknown;
|
|
18
|
+
persist: {
|
|
19
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TreeListOrderState, unknown, unknown>>) => void;
|
|
20
|
+
clearStorage: () => void;
|
|
21
|
+
rehydrate: () => Promise<void> | void;
|
|
22
|
+
hasHydrated: () => boolean;
|
|
23
|
+
onHydrate: (fn: (state: TreeListOrderState) => void) => () => void;
|
|
24
|
+
onFinishHydration: (fn: (state: TreeListOrderState) => void) => () => void;
|
|
25
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TreeListOrderState, unknown, unknown>>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare const getTreeListOrderStore: (storageKey: string) => Omit<import('zustand').StoreApi<TreeListOrderState>, "setState" | "persist"> & {
|
|
29
|
+
setState(partial: TreeListOrderState | Partial<TreeListOrderState> | ((state: TreeListOrderState) => TreeListOrderState | Partial<TreeListOrderState>), replace?: false | undefined): unknown;
|
|
30
|
+
setState(state: TreeListOrderState | ((state: TreeListOrderState) => TreeListOrderState), replace: true): unknown;
|
|
31
|
+
persist: {
|
|
32
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TreeListOrderState, unknown, unknown>>) => void;
|
|
33
|
+
clearStorage: () => void;
|
|
34
|
+
rehydrate: () => Promise<void> | void;
|
|
35
|
+
hasHydrated: () => boolean;
|
|
36
|
+
onHydrate: (fn: (state: TreeListOrderState) => void) => () => void;
|
|
37
|
+
onFinishHydration: (fn: (state: TreeListOrderState) => void) => () => void;
|
|
38
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TreeListOrderState, unknown, unknown>>;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export declare const useTreeListOrderStore: <T>(storageKey: string, selector: (state: TreeListOrderState) => T) => T;
|
|
42
|
+
export type { TreeListOrderSnapshot, TreeListOrderState };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TreeListSection } from './tree-list.types';
|
|
2
|
+
export declare const toSectionDragId: (sectionId: string) => string;
|
|
3
|
+
export declare const isSectionDragId: (id: string) => boolean;
|
|
4
|
+
export declare const fromSectionDragId: (id: string) => string;
|
|
5
|
+
export type ReorderResult = {
|
|
6
|
+
kind: "section";
|
|
7
|
+
nextSectionIds: string[];
|
|
8
|
+
} | {
|
|
9
|
+
kind: "node";
|
|
10
|
+
sectionId: string;
|
|
11
|
+
nextNodeIds: string[];
|
|
12
|
+
};
|
|
13
|
+
export declare const computeReorderResult: (sections: TreeListSection[], activeId: string, overId: string) => ReorderResult | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FocusEventHandler, MouseEvent as ReactMouseEvent } from 'react';
|
|
2
|
+
import { TreeListSection } from './tree-list.types';
|
|
3
|
+
interface TreeListSectionHeaderProps {
|
|
4
|
+
section: TreeListSection;
|
|
5
|
+
collapsible: boolean;
|
|
6
|
+
expanded: boolean;
|
|
7
|
+
focusId: string;
|
|
8
|
+
tabIndex: number;
|
|
9
|
+
onFocus: FocusEventHandler<HTMLElement>;
|
|
10
|
+
onToggle: () => void;
|
|
11
|
+
onContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const TreeListSectionHeader: (props: TreeListSectionHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { StackProps } from '@chakra-ui/react';
|
|
2
|
+
import { MouseEvent as ReactMouseEvent } from 'react';
|
|
3
|
+
import { TreeListLinkComponent, TreeListNavigateEvent, TreeListSection } from './tree-list.types';
|
|
4
|
+
type TreeListRowVariant = "compact" | "tree";
|
|
5
|
+
interface TreeListSortableProps {
|
|
6
|
+
sections: TreeListSection[];
|
|
7
|
+
expandedSectionIds?: string[];
|
|
8
|
+
expandedNodeIds?: string[];
|
|
9
|
+
activeNodeId?: string | string[] | null;
|
|
10
|
+
rowVariant?: TreeListRowVariant;
|
|
11
|
+
sectionGap?: StackProps["gap"];
|
|
12
|
+
nodeGap?: StackProps["gap"];
|
|
13
|
+
linkComponent?: TreeListLinkComponent;
|
|
14
|
+
onNavigate?: (event: TreeListNavigateEvent) => void;
|
|
15
|
+
onToggleSection?: (sectionId: string) => void;
|
|
16
|
+
onToggleNode?: (nodeId: string) => void;
|
|
17
|
+
onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;
|
|
18
|
+
onReorderSections?: (nextSectionIds: string[]) => void;
|
|
19
|
+
onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const TreeListSortable: (props: TreeListSortableProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ResourceContextAction } from '../resource-context-menu';
|
|
3
|
+
import { TreeListSection } from './tree-list.types';
|
|
4
|
+
import { VisibilityOverride } from './tree-list-visibility.store';
|
|
5
|
+
export declare const resolveVisibility: (override: VisibilityOverride | undefined, hiddenByDefault: boolean | undefined) => VisibilityOverride;
|
|
6
|
+
export declare const filterVisibleSections: (sections: TreeListSection[], sectionOverrides: Record<string, VisibilityOverride>, nodeOverrides: Record<string, VisibilityOverride>) => TreeListSection[];
|
|
7
|
+
export interface TreeVisibilityMenuActions {
|
|
8
|
+
onToggleSection: (id: string, hiddenByDefault: boolean) => void;
|
|
9
|
+
onToggleNode: (id: string, hiddenByDefault: boolean) => void;
|
|
10
|
+
onResetAll: () => void;
|
|
11
|
+
onResetOrder?: () => void;
|
|
12
|
+
}
|
|
13
|
+
interface BuildMenuOptions {
|
|
14
|
+
checkmark: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare const buildTreeVisibilityMenuActions: (sections: TreeListSection[], sectionOverrides: Record<string, VisibilityOverride>, nodeOverrides: Record<string, VisibilityOverride>, actions: TreeVisibilityMenuActions, options: BuildMenuOptions) => ResourceContextAction[];
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type VisibilityOverride = "hidden" | "shown";
|
|
2
|
+
interface TreeListVisibilitySnapshot {
|
|
3
|
+
sectionOverrides: Record<string, VisibilityOverride>;
|
|
4
|
+
nodeOverrides: Record<string, VisibilityOverride>;
|
|
5
|
+
}
|
|
6
|
+
interface TreeListVisibilityState extends TreeListVisibilitySnapshot {
|
|
7
|
+
setSection: (id: string, value: VisibilityOverride | undefined) => void;
|
|
8
|
+
setNode: (id: string, value: VisibilityOverride | undefined) => void;
|
|
9
|
+
toggleSection: (id: string, hiddenByDefault: boolean) => void;
|
|
10
|
+
toggleNode: (id: string, hiddenByDefault: boolean) => void;
|
|
11
|
+
clearSection: (id: string) => void;
|
|
12
|
+
clearNode: (id: string) => void;
|
|
13
|
+
reset: () => void;
|
|
14
|
+
}
|
|
15
|
+
interface CreateTreeListVisibilityStoreOptions {
|
|
16
|
+
storageKey: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const createTreeListVisibilityStore: (options: CreateTreeListVisibilityStoreOptions) => Omit<import('zustand').StoreApi<TreeListVisibilityState>, "setState" | "persist"> & {
|
|
19
|
+
setState(partial: TreeListVisibilityState | Partial<TreeListVisibilityState> | ((state: TreeListVisibilityState) => TreeListVisibilityState | Partial<TreeListVisibilityState>), replace?: false | undefined): unknown;
|
|
20
|
+
setState(state: TreeListVisibilityState | ((state: TreeListVisibilityState) => TreeListVisibilityState), replace: true): unknown;
|
|
21
|
+
persist: {
|
|
22
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TreeListVisibilityState, unknown, unknown>>) => void;
|
|
23
|
+
clearStorage: () => void;
|
|
24
|
+
rehydrate: () => Promise<void> | void;
|
|
25
|
+
hasHydrated: () => boolean;
|
|
26
|
+
onHydrate: (fn: (state: TreeListVisibilityState) => void) => () => void;
|
|
27
|
+
onFinishHydration: (fn: (state: TreeListVisibilityState) => void) => () => void;
|
|
28
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TreeListVisibilityState, unknown, unknown>>;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export declare const getTreeListVisibilityStore: (storageKey: string) => Omit<import('zustand').StoreApi<TreeListVisibilityState>, "setState" | "persist"> & {
|
|
32
|
+
setState(partial: TreeListVisibilityState | Partial<TreeListVisibilityState> | ((state: TreeListVisibilityState) => TreeListVisibilityState | Partial<TreeListVisibilityState>), replace?: false | undefined): unknown;
|
|
33
|
+
setState(state: TreeListVisibilityState | ((state: TreeListVisibilityState) => TreeListVisibilityState), replace: true): unknown;
|
|
34
|
+
persist: {
|
|
35
|
+
setOptions: (options: Partial<import('zustand/middleware').PersistOptions<TreeListVisibilityState, unknown, unknown>>) => void;
|
|
36
|
+
clearStorage: () => void;
|
|
37
|
+
rehydrate: () => Promise<void> | void;
|
|
38
|
+
hasHydrated: () => boolean;
|
|
39
|
+
onHydrate: (fn: (state: TreeListVisibilityState) => void) => () => void;
|
|
40
|
+
onFinishHydration: (fn: (state: TreeListVisibilityState) => void) => () => void;
|
|
41
|
+
getOptions: () => Partial<import('zustand/middleware').PersistOptions<TreeListVisibilityState, unknown, unknown>>;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export declare const useTreeListVisibilityStore: <T>(storageKey: string, selector: (state: TreeListVisibilityState) => T) => T;
|
|
45
|
+
export type { TreeListVisibilitySnapshot, TreeListVisibilityState };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StackProps } from '@chakra-ui/react';
|
|
2
|
-
import { RefObject } from 'react';
|
|
3
|
-
import { TreeListLinkComponent, TreeListNavigateEvent,
|
|
2
|
+
import { MouseEvent as ReactMouseEvent, RefObject } from 'react';
|
|
3
|
+
import { TreeListLinkComponent, TreeListNavigateEvent, TreeListSection } from './tree-list.types';
|
|
4
|
+
export { buildVirtualRows } from './tree-list-model';
|
|
4
5
|
type TreeListRowVariant = "compact" | "tree";
|
|
5
6
|
interface TreeListProps {
|
|
6
7
|
sections: TreeListSection[];
|
|
@@ -14,32 +15,11 @@ interface TreeListProps {
|
|
|
14
15
|
onNavigate?: (event: TreeListNavigateEvent) => void;
|
|
15
16
|
onToggleSection?: (sectionId: string) => void;
|
|
16
17
|
onToggleNode?: (nodeId: string) => void;
|
|
17
|
-
|
|
18
|
-
* When set, the tree's rows are virtualized via @tanstack/react-virtual.
|
|
19
|
-
* Requires `scrollRef` to point at the ancestor scroll viewport.
|
|
20
|
-
*/
|
|
18
|
+
onSectionContextMenu?: (event: ReactMouseEvent<HTMLElement>, sectionId: string) => void;
|
|
21
19
|
virtualize?: boolean;
|
|
22
20
|
scrollRef?: RefObject<HTMLDivElement | null>;
|
|
21
|
+
draggable?: boolean;
|
|
22
|
+
onReorderSections?: (nextSectionIds: string[]) => void;
|
|
23
|
+
onReorderNodes?: (sectionId: string, nextNodeIds: string[]) => void;
|
|
23
24
|
}
|
|
24
|
-
export type VirtualRow = {
|
|
25
|
-
kind: "section-header";
|
|
26
|
-
key: string;
|
|
27
|
-
sectionId: string;
|
|
28
|
-
section: TreeListSection;
|
|
29
|
-
collapsible: boolean;
|
|
30
|
-
expanded: boolean;
|
|
31
|
-
} | {
|
|
32
|
-
kind: "node";
|
|
33
|
-
key: string;
|
|
34
|
-
sectionId: string;
|
|
35
|
-
node: TreeListNode;
|
|
36
|
-
level: number;
|
|
37
|
-
} | {
|
|
38
|
-
kind: "section-empty";
|
|
39
|
-
key: string;
|
|
40
|
-
sectionId: string;
|
|
41
|
-
emptyState: TreeListSection["emptyState"];
|
|
42
|
-
};
|
|
43
|
-
export declare const buildVirtualRows: (sections: TreeListSection[], expandedSectionIds: string[], expandedNodeIds: string[]) => VirtualRow[];
|
|
44
25
|
export declare const TreeList: (props: TreeListProps) => import("react/jsx-runtime").JSX.Element;
|
|
45
|
-
export {};
|
|
@@ -7,6 +7,7 @@ export type TreeListAction = ListRowAction;
|
|
|
7
7
|
export type TreeListNode = ListRowItem & {
|
|
8
8
|
id: string;
|
|
9
9
|
children?: TreeListNode[];
|
|
10
|
+
hiddenByDefault?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export interface TreeListSection {
|
|
12
13
|
id: string;
|
|
@@ -15,6 +16,7 @@ export interface TreeListSection {
|
|
|
15
16
|
actions?: TreeListAction[];
|
|
16
17
|
emptyState?: ReactNode;
|
|
17
18
|
nodes: TreeListNode[];
|
|
19
|
+
hiddenByDefault?: boolean;
|
|
18
20
|
}
|
|
19
21
|
export interface TreeListNavigateEvent {
|
|
20
22
|
sectionId: string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KeyboardEvent } from 'react';
|
|
2
|
+
import { VirtualRow } from './tree-list-model';
|
|
3
|
+
export declare const useTreeListKeyboardNavigation: (input: {
|
|
4
|
+
rows: VirtualRow[];
|
|
5
|
+
activeNodeId?: string | string[] | null;
|
|
6
|
+
expandedNodeIds: string[];
|
|
7
|
+
onToggleNode?: (nodeId: string) => void;
|
|
8
|
+
onToggleSection?: (sectionId: string) => void;
|
|
9
|
+
scrollToRow?: (index: number) => void;
|
|
10
|
+
}) => {
|
|
11
|
+
focusRowId: string | undefined;
|
|
12
|
+
rootRef: import('react').RefObject<HTMLDivElement | null>;
|
|
13
|
+
handleKeyDown: (event: KeyboardEvent<HTMLElement>) => void;
|
|
14
|
+
onRowFocus: (rowId: string) => void;
|
|
15
|
+
};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { jsx as g, jsxs as $ } from "react/jsx-runtime";
|
|
2
|
+
import { c as q } from "react/compiler-runtime";
|
|
3
|
+
import { Tooltip as F, Portal as D, ScrollArea as R } from "@chakra-ui/react";
|
|
4
|
+
import * as V from "react";
|
|
5
|
+
import { FileSpreadsheet as E, FileCode as H, FileChartLine as I, FileJson as L, FileText as _, FileCog as k, FileImage as J, FileArchive as W, File as B } from "lucide-react";
|
|
6
|
+
const U = V.forwardRef(function(t, v) {
|
|
7
|
+
const e = q(26);
|
|
8
|
+
let l, r, i, d, s, a, f, u;
|
|
9
|
+
e[0] !== t ? ({
|
|
10
|
+
showArrow: f,
|
|
11
|
+
children: l,
|
|
12
|
+
disabled: d,
|
|
13
|
+
portalled: u,
|
|
14
|
+
content: r,
|
|
15
|
+
contentProps: i,
|
|
16
|
+
portalRef: s,
|
|
17
|
+
...a
|
|
18
|
+
} = t, e[0] = t, e[1] = l, e[2] = r, e[3] = i, e[4] = d, e[5] = s, e[6] = a, e[7] = f, e[8] = u) : (l = e[1], r = e[2], i = e[3], d = e[4], s = e[5], a = e[6], f = e[7], u = e[8]);
|
|
19
|
+
const x = u === void 0 ? !0 : u;
|
|
20
|
+
if (d || K(r))
|
|
21
|
+
return l;
|
|
22
|
+
let n;
|
|
23
|
+
e[9] !== l ? (n = /* @__PURE__ */ g(F.Trigger, { asChild: !0, children: l }), e[9] = l, e[10] = n) : n = e[10];
|
|
24
|
+
const h = !x;
|
|
25
|
+
let p;
|
|
26
|
+
e[11] !== f ? (p = f && /* @__PURE__ */ g(F.Arrow, { children: /* @__PURE__ */ g(F.ArrowTip, {}) }), e[11] = f, e[12] = p) : p = e[12];
|
|
27
|
+
let o;
|
|
28
|
+
e[13] !== r || e[14] !== i || e[15] !== v || e[16] !== p ? (o = /* @__PURE__ */ g(F.Positioner, { children: /* @__PURE__ */ $(F.Content, { ref: v, ...i, children: [
|
|
29
|
+
p,
|
|
30
|
+
r
|
|
31
|
+
] }) }), e[13] = r, e[14] = i, e[15] = v, e[16] = p, e[17] = o) : o = e[17];
|
|
32
|
+
let m;
|
|
33
|
+
e[18] !== s || e[19] !== h || e[20] !== o ? (m = /* @__PURE__ */ g(D, { disabled: h, container: s, children: o }), e[18] = s, e[19] = h, e[20] = o, e[21] = m) : m = e[21];
|
|
34
|
+
let w;
|
|
35
|
+
return e[22] !== a || e[23] !== n || e[24] !== m ? (w = /* @__PURE__ */ $(F.Root, { openDelay: 100, closeDelay: 100, ...a, children: [
|
|
36
|
+
n,
|
|
37
|
+
m
|
|
38
|
+
] }), e[22] = a, e[23] = n, e[24] = m, e[25] = w) : w = e[25], w;
|
|
39
|
+
});
|
|
40
|
+
function G(c) {
|
|
41
|
+
return typeof c == "string" ? c.trim().length === 0 : !1;
|
|
42
|
+
}
|
|
43
|
+
function K(c) {
|
|
44
|
+
if (c == null || c === !1)
|
|
45
|
+
return !0;
|
|
46
|
+
const t = V.Children.toArray(c);
|
|
47
|
+
return t.length === 0 ? !0 : t.every(G);
|
|
48
|
+
}
|
|
49
|
+
const X = V.forwardRef(function(t, v) {
|
|
50
|
+
const e = q(40);
|
|
51
|
+
let l, r, i, d, s, a, f, u, x, b, n, h;
|
|
52
|
+
e[0] !== t ? ({
|
|
53
|
+
children: l,
|
|
54
|
+
viewportRef: h,
|
|
55
|
+
contentRef: i,
|
|
56
|
+
viewportProps: n,
|
|
57
|
+
contentProps: r,
|
|
58
|
+
verticalScrollbarProps: b,
|
|
59
|
+
horizontalScrollbarProps: d,
|
|
60
|
+
showVerticalScrollbar: a,
|
|
61
|
+
showHorizontalScrollbar: f,
|
|
62
|
+
showCorner: u,
|
|
63
|
+
size: x,
|
|
64
|
+
...s
|
|
65
|
+
} = t, e[0] = t, e[1] = l, e[2] = r, e[3] = i, e[4] = d, e[5] = s, e[6] = a, e[7] = f, e[8] = u, e[9] = x, e[10] = b, e[11] = n, e[12] = h) : (l = e[1], r = e[2], i = e[3], d = e[4], s = e[5], a = e[6], f = e[7], u = e[8], x = e[9], b = e[10], n = e[11], h = e[12]);
|
|
66
|
+
const p = a === void 0 ? !0 : a, o = f === void 0 ? !1 : f, m = u === void 0 ? p && o : u, w = x === void 0 ? "xs" : x;
|
|
67
|
+
let A;
|
|
68
|
+
e[13] !== r || e[14] !== o ? (A = o ? r : {
|
|
69
|
+
...r,
|
|
70
|
+
style: {
|
|
71
|
+
minWidth: 0,
|
|
72
|
+
...r?.style
|
|
73
|
+
}
|
|
74
|
+
}, e[13] = r, e[14] = o, e[15] = A) : A = e[15];
|
|
75
|
+
const P = A;
|
|
76
|
+
let C;
|
|
77
|
+
e[16] !== l || e[17] !== i || e[18] !== P ? (C = /* @__PURE__ */ g(R.Content, { ...P, ref: i, children: l }), e[16] = l, e[17] = i, e[18] = P, e[19] = C) : C = e[19];
|
|
78
|
+
let S;
|
|
79
|
+
e[20] !== C || e[21] !== n || e[22] !== h ? (S = /* @__PURE__ */ g(R.Viewport, { ...n, ref: h, children: C }), e[20] = C, e[21] = n, e[22] = h, e[23] = S) : S = e[23];
|
|
80
|
+
let y;
|
|
81
|
+
e[24] !== p || e[25] !== b ? (y = p ? /* @__PURE__ */ g(R.Scrollbar, { ...b, borderRadius: "xs" }) : null, e[24] = p, e[25] = b, e[26] = y) : y = e[26];
|
|
82
|
+
let j;
|
|
83
|
+
e[27] !== d || e[28] !== o ? (j = o ? /* @__PURE__ */ g(R.Scrollbar, { orientation: "horizontal", ...d, borderRadius: "xs" }) : null, e[27] = d, e[28] = o, e[29] = j) : j = e[29];
|
|
84
|
+
let z;
|
|
85
|
+
e[30] !== m ? (z = m ? /* @__PURE__ */ g(R.Corner, {}) : null, e[30] = m, e[31] = z) : z = e[31];
|
|
86
|
+
let T;
|
|
87
|
+
return e[32] !== v || e[33] !== s || e[34] !== w || e[35] !== S || e[36] !== y || e[37] !== j || e[38] !== z ? (T = /* @__PURE__ */ $(R.Root, { ref: v, size: w, ...s, children: [
|
|
88
|
+
S,
|
|
89
|
+
y,
|
|
90
|
+
j,
|
|
91
|
+
z
|
|
92
|
+
] }), e[32] = v, e[33] = s, e[34] = w, e[35] = S, e[36] = y, e[37] = j, e[38] = z, e[39] = T) : T = e[39], T;
|
|
93
|
+
}), Y = (c) => {
|
|
94
|
+
const t = c.split(".").pop()?.toLowerCase() ?? "";
|
|
95
|
+
return ["csv", "tsv", "xlsx", "xls", "parquet"].includes(t) ? E : ["sql", "py", "js", "ts", "jsx", "tsx", "java", "cpp", "c", "h", "css", "scss", "sass", "php", "rb", "go", "rs", "kt", "swift"].includes(t) ? H : ["json", "jsonl", "ndjson"].includes(t) ? c.includes("/visualizations/") ? I : L : ["md", "txt", "rst", "org", "pdf", "doc", "docx", "rtf"].includes(t) ? _ : ["yaml", "yml", "toml", "ini", "conf", "config"].includes(t) ? k : ["png", "jpg", "jpeg", "gif", "svg", "webp", "ico"].includes(t) ? J : ["zip", "tar", "gz", "rar", "7z"].includes(t) ? W : B;
|
|
96
|
+
};
|
|
97
|
+
export {
|
|
98
|
+
X as S,
|
|
99
|
+
U as T,
|
|
100
|
+
Y as g
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=get-file-type-icon-ufFb0IkR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-file-type-icon-ufFb0IkR.js","sources":["../src/components/tooltip.tsx","../src/components/scroll-area.tsx","../src/utils/get-file-type-icon.ts"],"sourcesContent":["import { Tooltip as ChakraTooltip, Portal } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\nexport interface TooltipProps extends ChakraTooltip.RootProps {\n children?: React.ReactElement;\n showArrow?: boolean;\n portalled?: boolean;\n portalRef?: React.RefObject<HTMLElement>;\n content: React.ReactNode;\n contentProps?: ChakraTooltip.ContentProps;\n disabled?: boolean;\n}\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(props, ref) {\n const { showArrow, children, disabled, portalled = true, content, contentProps, portalRef, ...rest } = props;\n\n const isEmptyContent = (node: React.ReactNode): boolean => {\n if (node === null || node === undefined || node === false) return true;\n const arr = React.Children.toArray(node);\n if (arr.length === 0) return true;\n return arr.every((child) => (typeof child === \"string\" ? child.trim().length === 0 : false));\n };\n\n if (disabled || isEmptyContent(content)) return children;\n\n return (\n <ChakraTooltip.Root openDelay={100} closeDelay={100} {...rest}>\n <ChakraTooltip.Trigger asChild>{children}</ChakraTooltip.Trigger>\n <Portal disabled={!portalled} container={portalRef}>\n <ChakraTooltip.Positioner>\n <ChakraTooltip.Content ref={ref} {...contentProps}>\n {showArrow && (\n <ChakraTooltip.Arrow>\n <ChakraTooltip.ArrowTip />\n </ChakraTooltip.Arrow>\n )}\n {content}\n </ChakraTooltip.Content>\n </ChakraTooltip.Positioner>\n </Portal>\n </ChakraTooltip.Root>\n );\n});\n","import { ScrollArea as ChakraScrollArea } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\ntype VerticalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\ntype HorizontalScrollbarProps = Omit<ChakraScrollArea.ScrollbarProps, \"orientation\">;\n\nexport interface ScrollAreaProps extends ChakraScrollArea.RootProps {\n viewportRef?: React.Ref<HTMLDivElement>;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportProps?: ChakraScrollArea.ViewportProps;\n contentProps?: ChakraScrollArea.ContentProps;\n verticalScrollbarProps?: VerticalScrollbarProps;\n horizontalScrollbarProps?: HorizontalScrollbarProps;\n showVerticalScrollbar?: boolean;\n showHorizontalScrollbar?: boolean;\n showCorner?: boolean;\n}\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(function ScrollArea(props, ref) {\n const {\n children,\n viewportRef,\n contentRef,\n viewportProps,\n contentProps,\n verticalScrollbarProps,\n horizontalScrollbarProps,\n showVerticalScrollbar = true,\n showHorizontalScrollbar = false,\n showCorner = showVerticalScrollbar && showHorizontalScrollbar,\n size = \"xs\",\n ...rest\n } = props;\n\n const mergedContentProps = showHorizontalScrollbar\n ? contentProps\n : { ...contentProps, style: { minWidth: 0, ...contentProps?.style } };\n\n return (\n <ChakraScrollArea.Root ref={ref} size={size} {...rest}>\n <ChakraScrollArea.Viewport {...viewportProps} ref={viewportRef}>\n <ChakraScrollArea.Content {...mergedContentProps} ref={contentRef}>\n {children}\n </ChakraScrollArea.Content>\n </ChakraScrollArea.Viewport>\n {showVerticalScrollbar ? <ChakraScrollArea.Scrollbar {...verticalScrollbarProps} borderRadius={\"xs\"} /> : null}\n {showHorizontalScrollbar ? (\n <ChakraScrollArea.Scrollbar orientation=\"horizontal\" {...horizontalScrollbarProps} borderRadius={\"xs\"} />\n ) : null}\n {showCorner ? <ChakraScrollArea.Corner /> : null}\n </ChakraScrollArea.Root>\n );\n});\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n File,\n FileArchive,\n FileChartLine,\n FileCode,\n FileCog,\n FileImage,\n FileJson,\n FileSpreadsheet,\n FileText,\n} from \"lucide-react\";\n\nexport const getFileTypeIcon = (filename: string): LucideIcon => {\n const extension = filename.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n if ([\"csv\", \"tsv\", \"xlsx\", \"xls\", \"parquet\"].includes(extension)) return FileSpreadsheet;\n if (\n [\n \"sql\",\n \"py\",\n \"js\",\n \"ts\",\n \"jsx\",\n \"tsx\",\n \"java\",\n \"cpp\",\n \"c\",\n \"h\",\n \"css\",\n \"scss\",\n \"sass\",\n \"php\",\n \"rb\",\n \"go\",\n \"rs\",\n \"kt\",\n \"swift\",\n ].includes(extension)\n ) {\n return FileCode;\n }\n if ([\"json\", \"jsonl\", \"ndjson\"].includes(extension)) {\n if (filename.includes(\"/visualizations/\")) return FileChartLine;\n return FileJson;\n }\n if ([\"md\", \"txt\", \"rst\", \"org\", \"pdf\", \"doc\", \"docx\", \"rtf\"].includes(extension)) return FileText;\n if ([\"yaml\", \"yml\", \"toml\", \"ini\", \"conf\", \"config\"].includes(extension)) return FileCog;\n if ([\"png\", \"jpg\", \"jpeg\", \"gif\", \"svg\", \"webp\", \"ico\"].includes(extension)) return FileImage;\n if ([\"zip\", \"tar\", \"gz\", \"rar\", \"7z\"].includes(extension)) return FileArchive;\n return File;\n};\n"],"names":["Tooltip","React","forwardRef","props","ref","$","_c","children","content","contentProps","disabled","portalRef","rest","showArrow","t0","portalled","undefined","_temp2","t1","ChakraTooltip","t2","t3","jsx","t4","jsxs","t5","Portal","t6","_temp","child","trim","length","node","arr","Children","toArray","every","ScrollArea","contentRef","horizontalScrollbarProps","verticalScrollbarProps","viewportProps","viewportRef","showVerticalScrollbar","showHorizontalScrollbar","showCorner","size","style","minWidth","mergedContentProps","ChakraScrollArea","t7","t8","t9","t10","getFileTypeIcon","filename","extension","split","pop","toLowerCase","includes","FileSpreadsheet","FileCode","FileChartLine","FileJson","FileText","FileCog","FileImage","FileArchive","File"],"mappings":"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"}
|