@aiquants/directory-tree 2.3.0 → 3.0.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/README.md +40 -0
- package/dist/directory-tree.css +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +935 -736
- package/dist/src/DirectoryTree.d.ts +15 -19
- package/dist/src/DirectoryTree.d.ts.map +1 -1
- package/dist/src/DirectoryTreeGrid.d.ts +64 -0
- package/dist/src/DirectoryTreeGrid.d.ts.map +1 -0
- package/dist/src/entryRendering.d.ts +50 -0
- package/dist/src/entryRendering.d.ts.map +1 -0
- package/dist/src/gridUtils.d.ts +47 -0
- package/dist/src/gridUtils.d.ts.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +87 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/useEntryInteraction.d.ts +20 -0
- package/dist/src/useEntryInteraction.d.ts.map +1 -0
- package/dist/styles/directory-tree.css +1 -1
- package/package.json +3 -2
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { directoryTreeClasses } from './entryRendering.tsx';
|
|
2
|
+
import { DirectoryTreeProps, TreeLineGeometry, TreeLineItemInfo } from './types.ts';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Builds geometry data for the canvas based tree line renderer, including segments and glyphs.
|
|
5
|
+
*
|
|
6
|
+
* Canvas ベースのツリーラインレンダラ用に線分とグリフのジオメトリデータを構築する。
|
|
7
|
+
*
|
|
8
|
+
* @param items - ツリーラインアイテムの配列。
|
|
9
|
+
* @param itemHeights - 各アイテムの高さの配列 (items と同じ順序・長さ)。
|
|
10
|
+
* @param itemOffsets - 各アイテムの累積上端オフセット表 (長さ = items.length + 1)。
|
|
11
|
+
* @param segmentWidth - インデントセグメントの幅。
|
|
12
|
+
* @param includeGlyphs - グリフ情報を含めるかどうか。
|
|
13
|
+
* @param glyphSizeOverride - グリフサイズの上書き値。
|
|
14
|
+
* @returns セグメントおよびグリフの配列をまとめたジオメトリデータ。
|
|
5
15
|
*/
|
|
6
|
-
declare const
|
|
7
|
-
container: string;
|
|
8
|
-
containerPending: string;
|
|
9
|
-
entry: string;
|
|
10
|
-
entryHover: string;
|
|
11
|
-
entrySelected: string;
|
|
12
|
-
entryItemSelected: string;
|
|
13
|
-
expandIcon: string;
|
|
14
|
-
expandIconSelected: string;
|
|
15
|
-
typeIcon: string;
|
|
16
|
-
typeIconSelected: string;
|
|
17
|
-
name: string;
|
|
18
|
-
nameDirectory: string;
|
|
19
|
-
nameSelected: string;
|
|
20
|
-
};
|
|
16
|
+
export declare const buildTreeLineGeometry: (items: TreeLineItemInfo[], itemHeights: number[], itemOffsets: number[], segmentWidth: number, includeGlyphs: boolean, glyphSizeOverride?: number) => TreeLineGeometry;
|
|
21
17
|
/**
|
|
22
18
|
* @component DirectoryTree
|
|
23
19
|
* @description A component to display a directory tree structure. It allows navigation and selection of files.
|
|
24
20
|
* ディレクトリツリー構造を表示するコンポーネント。ファイルのナビゲーションと選択が可能。
|
|
25
21
|
*/
|
|
26
|
-
export declare const DirectoryTree: ({ entries, expansion: { toggle, isExpanded, expandMultiple, collapseMultiple, isPending, alwaysExpanded, doubleClickAction }, selection: { onEntryClick, selectedPath, mode: selectionMode, selectedItems, onSelectionChange }, visual: { className, style, lineColor, showTreeLines, showExpandIcons, showDirectoryIcons, showFileIcons, iconOverrides, expandIconSize, itemHeight, removeRootIndent, highlightStyles, entryClassName, entryStyle, nameClassName, nameStyle, directoryNameClassName, directoryNameStyle, fileNameClassName, fileNameStyle, }, virtualScroll: virtualScrollOptions, }: DirectoryTreeProps) => import("react").JSX.Element;
|
|
22
|
+
export declare const DirectoryTree: ({ entries, expansion: { toggle, isExpanded, expandMultiple, collapseMultiple, isPending, alwaysExpanded, doubleClickAction }, selection: { onEntryClick, selectedPath, mode: selectionMode, selectedItems, onSelectionChange }, visual: { className, style, lineColor, showTreeLines, showExpandIcons, showDirectoryIcons, showFileIcons, iconOverrides, expandIconSize, itemHeight, removeRootIndent, highlightStyles, entryClassName, entryStyle, nameClassName, nameStyle, directoryNameClassName, directoryNameStyle, fileNameClassName, fileNameStyle, }, virtualScroll: virtualScrollOptions, grid, }: DirectoryTreeProps) => import("react").JSX.Element;
|
|
27
23
|
export { directoryTreeClasses };
|
|
28
24
|
//# sourceMappingURL=DirectoryTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectoryTree.d.ts","sourceRoot":"","sources":["../../src/DirectoryTree.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DirectoryTree.d.ts","sourceRoot":"","sources":["../../src/DirectoryTree.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAuB,oBAAoB,EAAyF,MAAM,sBAAsB,CAAA;AAGvK,OAAO,KAAK,EAA2C,kBAAkB,EAAqC,gBAAgB,EAAiB,gBAAgB,EAAmB,MAAM,YAAY,CAAA;AA+IpM;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,gBAAgB,EAAE,EAAE,aAAa,MAAM,EAAE,EAAE,aAAa,MAAM,EAAE,EAAE,cAAc,MAAM,EAAE,eAAe,OAAO,EAAE,oBAAoB,MAAM,KAAG,gBA4IzL,CAAA;AA8ND;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,6kBA4B3B,kBAAkB,gCA2ZpB,CAAA;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { DirectoryEntry, DirectoryTreeColumn, DirectoryTreeIconOverrides, HighlightStyles } from './types.ts';
|
|
2
|
+
/** Visual options shared by grid rows (mirrors the subset of DirectoryTree visual props needed here). */
|
|
3
|
+
export type GridRowVisual = {
|
|
4
|
+
iconOverrides?: DirectoryTreeIconOverrides;
|
|
5
|
+
showExpandIcons?: boolean;
|
|
6
|
+
showDirectoryIcons?: boolean;
|
|
7
|
+
showFileIcons?: boolean;
|
|
8
|
+
useCanvasExpandIcons?: boolean;
|
|
9
|
+
expandIconSize?: number;
|
|
10
|
+
highlightStyles?: HighlightStyles;
|
|
11
|
+
};
|
|
12
|
+
/** True when the entry is an expanded directory. Files short-circuit without querying isDirOpen. / 展開済みディレクトリなら true。 */
|
|
13
|
+
export declare const isEntryExpanded: (entry: DirectoryEntry, isDirOpen: (path: string) => boolean) => boolean;
|
|
14
|
+
export type DirectoryTreeGridRowProps = {
|
|
15
|
+
entry: DirectoryEntry;
|
|
16
|
+
indentLevel: number;
|
|
17
|
+
rowHeight: number;
|
|
18
|
+
isDirOpen: (path: string) => boolean;
|
|
19
|
+
columns: DirectoryTreeColumn[];
|
|
20
|
+
numericTemplate: string;
|
|
21
|
+
numericTotal: number;
|
|
22
|
+
nameWidth: number;
|
|
23
|
+
rowClassName?: string | ((entry: DirectoryEntry) => string);
|
|
24
|
+
selection: {
|
|
25
|
+
selectedPath: string | null;
|
|
26
|
+
mode?: "none" | "single" | "multiple";
|
|
27
|
+
selectedItems?: Set<string>;
|
|
28
|
+
onEntryClick: (event: import('./types.ts').DirectoryTreeClickEvent) => void;
|
|
29
|
+
onSelectionChange?: (entry: DirectoryEntry, isSelected: boolean) => void;
|
|
30
|
+
};
|
|
31
|
+
expansion: {
|
|
32
|
+
toggleDirectory: (path: string) => void;
|
|
33
|
+
onToggleDirectoryRecursive: (entry: DirectoryEntry) => void;
|
|
34
|
+
};
|
|
35
|
+
visual: GridRowVisual;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @component DirectoryTreeGridRow
|
|
39
|
+
* @description A single TreeGrid row: frozen name cell (indent + glyph + icon + label) plus a
|
|
40
|
+
* horizontally-scrollable numeric track. Memoized; the `--dt-hscroll` variable is not
|
|
41
|
+
* a prop, so horizontal scrolling never re-renders rows.
|
|
42
|
+
*/
|
|
43
|
+
export declare const DirectoryTreeGridRow: import('react').NamedExoticComponent<DirectoryTreeGridRowProps>;
|
|
44
|
+
export type DirectoryTreeGridHeaderRowProps = {
|
|
45
|
+
columns: DirectoryTreeColumn[];
|
|
46
|
+
numericTemplate: string;
|
|
47
|
+
numericTotal: number;
|
|
48
|
+
nameWidth: number;
|
|
49
|
+
scrollBarWidth: number;
|
|
50
|
+
className?: string;
|
|
51
|
+
};
|
|
52
|
+
export declare const DirectoryTreeGridHeaderRow: ({ columns, className, ...rest }: DirectoryTreeGridHeaderRowProps) => import("react").JSX.Element;
|
|
53
|
+
export type DirectoryTreeGridFooterRowProps = {
|
|
54
|
+
columns: DirectoryTreeColumn[];
|
|
55
|
+
numericTemplate: string;
|
|
56
|
+
numericTotal: number;
|
|
57
|
+
nameWidth: number;
|
|
58
|
+
scrollBarWidth: number;
|
|
59
|
+
/** All nodes of the tree (collapsed included), for footer aggregation. / フッタ集計用の全ノード。 */
|
|
60
|
+
allEntries: DirectoryEntry[];
|
|
61
|
+
className?: string;
|
|
62
|
+
};
|
|
63
|
+
export declare const DirectoryTreeGridFooterRow: ({ columns, allEntries, className, ...rest }: DirectoryTreeGridFooterRowProps) => import("react").JSX.Element;
|
|
64
|
+
//# sourceMappingURL=DirectoryTreeGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DirectoryTreeGrid.d.ts","sourceRoot":"","sources":["../../src/DirectoryTreeGrid.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGlH,yGAAyG;AACzG,MAAM,MAAM,aAAa,GAAG;IACxB,aAAa,CAAC,EAAE,0BAA0B,CAAA;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,eAAe,CAAA;CACpC,CAAA;AAKD,yHAAyH;AACzH,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,EAAE,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,KAAG,OAAwE,CAAA;AAQtK,MAAM,MAAM,yBAAyB,GAAG;IACpC,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACpC,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,MAAM,CAAC,CAAA;IAC3D,SAAS,EAAE;QACP,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;QACrC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC3B,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,uBAAuB,KAAK,IAAI,CAAA;QAC3E,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;KAC3E,CAAA;IACD,SAAS,EAAE;QACP,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;QACvC,0BAA0B,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;KAC9D,CAAA;IACD,MAAM,EAAE,aAAa,CAAA;CACxB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,iEAgHhC,CAAA;AAmDD,MAAM,MAAM,+BAA+B,GAAG;IAC1C,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,iCAAiC,+BAA+B,gCAA4K,CAAA;AAEvR,MAAM,MAAM,+BAA+B,GAAG;IAC1C,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,yFAAyF;IACzF,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAKD,eAAO,MAAM,0BAA0B,GAAI,6CAA6C,+BAA+B,gCAEtH,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { DirectoryTreeIconOverrides, DirectoryTreeIconRenderContext } from './types.ts';
|
|
3
|
+
/** Default row height in px. / 各行の高さの既定値 (px)。 */
|
|
4
|
+
export declare const DEFAULT_ITEM_HEIGHT = 20;
|
|
5
|
+
/** Indentation per depth level in px. / 1 階層あたりのインデント幅 (px)。 */
|
|
6
|
+
export declare const INDENT_SIZE = 16;
|
|
7
|
+
/** Standard expand glyph size. / 展開アイコンの標準サイズ。 */
|
|
8
|
+
export declare const EXPAND_GLYPH_SIZE = 12;
|
|
9
|
+
/**
|
|
10
|
+
* TailwindCSS v4 class names for DirectoryTree component.
|
|
11
|
+
* DirectoryTreeコンポーネント用の TailwindCSS v4 クラス名。
|
|
12
|
+
*/
|
|
13
|
+
export declare const directoryTreeClasses: {
|
|
14
|
+
container: string;
|
|
15
|
+
containerPending: string;
|
|
16
|
+
entry: string;
|
|
17
|
+
entryHover: string;
|
|
18
|
+
entrySelected: string;
|
|
19
|
+
entryItemSelected: string;
|
|
20
|
+
expandIcon: string;
|
|
21
|
+
expandIconSelected: string;
|
|
22
|
+
typeIcon: string;
|
|
23
|
+
typeIconSelected: string;
|
|
24
|
+
name: string;
|
|
25
|
+
nameDirectory: string;
|
|
26
|
+
nameSelected: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @function getFileExtension
|
|
30
|
+
* @description Extracts the extension from a filename. / ファイル名から拡張子を抽出する。
|
|
31
|
+
*/
|
|
32
|
+
export declare const getFileExtension: (filename: string) => string;
|
|
33
|
+
export type ExpandIconParams = {
|
|
34
|
+
isDirectory: boolean;
|
|
35
|
+
isExpanded: boolean;
|
|
36
|
+
showExpandIcons: boolean;
|
|
37
|
+
useCanvasExpandIcons: boolean;
|
|
38
|
+
expandIconSize?: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @function resolveExpandIcon
|
|
42
|
+
* @description Determines the expand icon node for a directory entry. / 展開アイコンノードを決定する。
|
|
43
|
+
*/
|
|
44
|
+
export declare const resolveExpandIcon: ({ isDirectory, isExpanded, showExpandIcons, useCanvasExpandIcons, expandIconSize }: ExpandIconParams) => ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Determines the icon to render for a directory entry.
|
|
47
|
+
* ディレクトリエントリに表示するアイコンを決定する関数。
|
|
48
|
+
*/
|
|
49
|
+
export declare const resolveEntryIcon: (ctx: DirectoryTreeIconRenderContext, overrides?: DirectoryTreeIconOverrides) => ReactNode;
|
|
50
|
+
//# sourceMappingURL=entryRendering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entryRendering.d.ts","sourceRoot":"","sources":["../../src/entryRendering.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,0BAA0B,EAAE,8BAA8B,EAA6B,MAAM,YAAY,CAAA;AAEvH,kDAAkD;AAClD,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,gEAAgE;AAChE,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,KAAK,CAAA;AAEnC;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;CA8BhC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAEnD,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,oFAAoF,gBAAgB,KAAG,SAQxI,CAAA;AA8BD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,8BAA8B,EAAE,YAAY,0BAA0B,KAAG,SAW9G,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DirectoryEntry, DirectoryTreeColumn } from './types.ts';
|
|
2
|
+
/** Default frozen width of the name (tree) column in px. / 名前列の既定凍結幅 (px)。 */
|
|
3
|
+
export declare const DEFAULT_NAME_COLUMN_WIDTH = 240;
|
|
4
|
+
/** Default width of a numeric column in px. / 数値列の既定幅 (px)。 */
|
|
5
|
+
export declare const DEFAULT_NUMERIC_COLUMN_WIDTH = 96;
|
|
6
|
+
/** Default vertical scrollbar width used to align header/footer with the body. / ヘッダ/フッタ整合用の既定縦バー幅。 */
|
|
7
|
+
export declare const DEFAULT_GRID_SCROLLBAR_WIDTH = 12;
|
|
8
|
+
/**
|
|
9
|
+
* Builds the `grid-template-columns` string for the numeric (non-name) columns.
|
|
10
|
+
* 数値列(columns[1..])の `grid-template-columns` 文字列を構築する。
|
|
11
|
+
*
|
|
12
|
+
* @returns e.g. `"96px 96px 120px"`. Empty string when there is no numeric column.
|
|
13
|
+
*/
|
|
14
|
+
export declare const buildNumericTemplate: (columns: DirectoryTreeColumn[]) => string;
|
|
15
|
+
/** Metrics describing the frozen/scrollable split of a TreeGrid. / TreeGrid の凍結/可動分割を表す寸法。 */
|
|
16
|
+
export type GridMetrics = {
|
|
17
|
+
/** Frozen width of the name column. / 名前列の凍結幅。 */
|
|
18
|
+
nameWidth: number;
|
|
19
|
+
/** Total width of all numeric columns (the scrollable content width). / 数値列合計幅(可動コンテンツ幅)。 */
|
|
20
|
+
numericTotal: number;
|
|
21
|
+
/** Visible width of the numeric region (viewport). / 数値領域の可視幅(ビューポート)。 */
|
|
22
|
+
numericVisible: number;
|
|
23
|
+
/** Maximum horizontal scroll offset (>= 0). / 横スクロールの最大オフセット (>= 0)。 */
|
|
24
|
+
maxHScroll: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Computes the frozen/scrollable layout metrics from the measured container width.
|
|
28
|
+
* 計測済みコンテナ幅から凍結/可動レイアウトの寸法を算出する。
|
|
29
|
+
*
|
|
30
|
+
* `numericVisible = measuredWidth - nameWidth - scrollBarWidth`, clamped to >= 0. This single
|
|
31
|
+
* source of truth keeps the body (reduced by the vertical scrollbar) aligned with the
|
|
32
|
+
* header/footer (which reserve an equal right-side spacer).
|
|
33
|
+
*/
|
|
34
|
+
export declare const computeGridMetrics: ({ measuredWidth, columns, scrollBarWidth }: {
|
|
35
|
+
measuredWidth: number;
|
|
36
|
+
columns: DirectoryTreeColumn[];
|
|
37
|
+
scrollBarWidth?: number;
|
|
38
|
+
}) => GridMetrics;
|
|
39
|
+
/** Clamps a horizontal scroll offset into `[0, maxHScroll]`. / 横スクロール量を [0, maxHScroll] に丸める。 */
|
|
40
|
+
export declare const clampHScroll: (value: number, maxHScroll: number) => number;
|
|
41
|
+
/**
|
|
42
|
+
* Depth-first flattens every node of the tree **regardless of expansion state** — used to feed
|
|
43
|
+
* column footers that total over all entries (including collapsed subtrees).
|
|
44
|
+
* 展開状態に依存せず全ノードを DFS で平坦化する。列フッタの全 entries 合計に使用。
|
|
45
|
+
*/
|
|
46
|
+
export declare const flattenAllEntries: (entries: DirectoryEntry[]) => DirectoryEntry[];
|
|
47
|
+
//# sourceMappingURL=gridUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gridUtils.d.ts","sourceRoot":"","sources":["../../src/gridUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErE,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAC5C,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAC9C,uGAAuG;AACvG,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAQ9C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,mBAAmB,EAAE,KAAG,MAIpD,CAAA;AAElB,8FAA8F;AAC9F,MAAM,MAAM,WAAW,GAAG;IACtB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,6FAA6F;IAC7F,YAAY,EAAE,MAAM,CAAA;IACpB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAA;IACtB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,4CAA2E;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,WAOlM,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,YAAY,MAAM,KAAG,MAKhE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,cAAc,EAAE,KAAG,cAAc,EAY3E,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { DirectoryTree, directoryTreeClasses } from './DirectoryTree.tsx';
|
|
2
|
-
export type { DirectoryEntry, DirectoryEntryItemProps, DirectoryTreeClickEvent, DirectoryTreeIconOverrides, DirectoryTreeIconRenderContext, DirectoryTreeIconRenderer, DirectoryTreeProps, DirectoryTreeState, DirectoryTreeVirtualScrollOptions, HighlightStyles, ItemHeight, TreeLineItemInfo, TreeLineProps, UseDirectoryTreeStateProps, } from './types.ts';
|
|
2
|
+
export type { DirectoryEntry, DirectoryEntryItemProps, DirectoryTreeClickEvent, DirectoryTreeColumn, DirectoryTreeGrid, DirectoryTreeIconOverrides, DirectoryTreeIconRenderContext, DirectoryTreeIconRenderer, DirectoryTreeProps, DirectoryTreeState, DirectoryTreeVirtualScrollOptions, HighlightStyles, ItemHeight, TreeLineItemInfo, TreeLineProps, UseDirectoryTreeStateProps, } from './types.ts';
|
|
3
3
|
export { useDirectoryTreeState } from './useDirectoryTreeState.ts';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACzE,YAAY,EACR,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,iCAAiC,EACjC,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,0BAA0B,GAC7B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,uBAAuB,CAAA;AAE9B,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACzE,YAAY,EACR,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,iCAAiC,EACjC,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,0BAA0B,GAC7B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -128,6 +128,83 @@ export type DirectoryTreeVirtualScrollOptions = Omit<ComponentProps<typeof Virtu
|
|
|
128
128
|
/** Override for viewport height. / 内部計測をスキップするための任意の固定ビューポート高さ。 */
|
|
129
129
|
viewportHeightOverride?: number;
|
|
130
130
|
};
|
|
131
|
+
/**
|
|
132
|
+
* A single column definition for the TreeGrid (columns) mode.
|
|
133
|
+
* `columns[0]` is always the name / tree column (indent + expand glyph + type icon live here).
|
|
134
|
+
*
|
|
135
|
+
* TreeGrid(列)モードの列定義。`columns[0]` は常に名前(ツリー)列。
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* `render` / `footer` の関数は参照を安定させること(`useMemo` / `useCallback`)。
|
|
139
|
+
* identity が毎レンダー変わると行のメモ化が無効化され、可視行が毎回再描画されて
|
|
140
|
+
* 仮想スクロールの利点が失われる(`ItemHeight` と同じ制約)。
|
|
141
|
+
*/
|
|
142
|
+
export type DirectoryTreeColumn = {
|
|
143
|
+
/** Unique column key (duplicates are flagged in dev). / 一意なキー(dev で重複検証)。 */
|
|
144
|
+
key: string;
|
|
145
|
+
/** Column header content. / 列ヘッダ内容。 */
|
|
146
|
+
header?: ReactNode;
|
|
147
|
+
/**
|
|
148
|
+
* Footer content. The function form receives **every node of the `entries` prop
|
|
149
|
+
* (including collapsed subtrees)**, not just the visible rows.
|
|
150
|
+
* フッタ内容。関数形は entries prop の全ノード(折り畳み subtree 含む)を受け取る。
|
|
151
|
+
*/
|
|
152
|
+
footer?: ReactNode | ((allEntries: DirectoryEntry[]) => ReactNode);
|
|
153
|
+
/**
|
|
154
|
+
* Column width in px. The name column (`columns[0]`) uses this as its frozen width;
|
|
155
|
+
* numeric columns use it as the grid track width.
|
|
156
|
+
* 列幅(px)。名前列は凍結幅、数値列は grid track 幅として使用。
|
|
157
|
+
* 既定: 名前列 240、数値列 96。
|
|
158
|
+
*/
|
|
159
|
+
width?: number;
|
|
160
|
+
/** Cell text alignment. Default `left` (numeric columns should use `right`). / セル寄せ。既定 left。 */
|
|
161
|
+
align?: "left" | "right" | "center";
|
|
162
|
+
/** Extra class name for cells in this column. / この列のセルに付与する追加クラス。 */
|
|
163
|
+
className?: string;
|
|
164
|
+
/**
|
|
165
|
+
* Cell content renderer. In the name column the indent / expand glyph / type icon are
|
|
166
|
+
* drawn by the library, and this render output is placed as the label content
|
|
167
|
+
* (falls back to `entry.name` when omitted).
|
|
168
|
+
* セル内容レンダラ。名前列では indent/glyph/icon はライブラリが描画し、本 render の
|
|
169
|
+
* 戻り値がラベル内容として配置される(省略時は `entry.name`)。
|
|
170
|
+
*/
|
|
171
|
+
render?: (entry: DirectoryEntry, ctx: {
|
|
172
|
+
indentLevel: number;
|
|
173
|
+
isDirectory: boolean;
|
|
174
|
+
isExpanded: boolean;
|
|
175
|
+
}) => ReactNode;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* TreeGrid (columns) mode configuration. When provided, the name column is frozen on the
|
|
179
|
+
* left (indent + connector lines confined there) and the remaining columns render as an
|
|
180
|
+
* aligned grid with an aligned header/footer and a horizontally scrollable numeric region.
|
|
181
|
+
* When omitted, the classic label-based tree rendering is used.
|
|
182
|
+
*
|
|
183
|
+
* TreeGrid(列)モード設定。指定時は名前列を凍結し数値列を整列グリッドで描画、整列ヘッダ/フッタと
|
|
184
|
+
* 数値領域の横スクロールを提供する。省略時は従来のラベルツリー描画。
|
|
185
|
+
*
|
|
186
|
+
* @remarks `columns` と各 `render` / `footer` は参照安定必須。
|
|
187
|
+
*/
|
|
188
|
+
export type DirectoryTreeGrid = {
|
|
189
|
+
/** Column definitions (**stable reference required**). `columns[0]` is the name/tree column. / 列定義(参照安定必須)。 */
|
|
190
|
+
columns: DirectoryTreeColumn[];
|
|
191
|
+
/** Render the header row. Default true. / ヘッダ行表示。既定 true。 */
|
|
192
|
+
showHeader?: boolean;
|
|
193
|
+
/** Render the footer row. Default false. / フッタ行表示。既定 false。 */
|
|
194
|
+
showFooter?: boolean;
|
|
195
|
+
/** Extra class for the header row. / ヘッダ行の追加クラス。 */
|
|
196
|
+
headerClassName?: string;
|
|
197
|
+
/** Extra class for the footer row. / フッタ行の追加クラス。 */
|
|
198
|
+
footerClassName?: string;
|
|
199
|
+
/** Extra class (or per-entry factory) for body rows. / 行の追加クラス(またはエントリ別ファクトリ)。 */
|
|
200
|
+
rowClassName?: string | ((entry: DirectoryEntry) => string);
|
|
201
|
+
/**
|
|
202
|
+
* Vertical scrollbar width, used to keep the header/footer numeric viewport aligned with
|
|
203
|
+
* the body (whose width is reduced by the vertical scrollbar). Default 12.
|
|
204
|
+
* 縦スクロールバー幅。ヘッダ/フッタの数値ビューポート幅を本体と一致させるために使用。既定 12。
|
|
205
|
+
*/
|
|
206
|
+
scrollBarWidth?: number;
|
|
207
|
+
};
|
|
131
208
|
/**
|
|
132
209
|
* Represents the state and actions for a directory tree.
|
|
133
210
|
* ディレクトリツリーの状態とアクションを表します。
|
|
@@ -368,6 +445,16 @@ export type DirectoryTreeProps = {
|
|
|
368
445
|
* VirtualScroll の設定を上書きするオプション。
|
|
369
446
|
*/
|
|
370
447
|
virtualScroll?: DirectoryTreeVirtualScrollOptions;
|
|
448
|
+
/**
|
|
449
|
+
* TreeGrid (columns) mode. When provided, the name column is frozen on the left and the
|
|
450
|
+
* remaining columns render as an aligned grid with header/footer and a horizontally
|
|
451
|
+
* scrollable numeric region. When omitted, the classic label-based tree is rendered.
|
|
452
|
+
*
|
|
453
|
+
* TreeGrid(列)モード。指定時は名前列を凍結し数値列を整列グリッドで描画する。省略時は従来のツリー。
|
|
454
|
+
*
|
|
455
|
+
* `grid.columns` と各 `render` / `footer` は参照安定必須(`itemHeight` と同じ制約)。
|
|
456
|
+
*/
|
|
457
|
+
grid?: DirectoryTreeGrid;
|
|
371
458
|
};
|
|
372
459
|
/**
|
|
373
460
|
* Props for the useDirectoryTreeState hook.
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MouseEvent } from 'react';
|
|
2
|
+
import { DirectoryEntry, DirectoryTreeClickEvent } from './types.ts';
|
|
3
|
+
export type UseEntryInteractionArgs = {
|
|
4
|
+
entry: DirectoryEntry;
|
|
5
|
+
isDirectory: boolean;
|
|
6
|
+
isExpanded: boolean;
|
|
7
|
+
isItemSelected: boolean;
|
|
8
|
+
selectionMode: "none" | "single" | "multiple";
|
|
9
|
+
onSelectionChange?: (entry: DirectoryEntry, isSelected: boolean) => void;
|
|
10
|
+
onEntryClick: (event: DirectoryTreeClickEvent) => void;
|
|
11
|
+
toggleDirectory: (path: string) => void;
|
|
12
|
+
onToggleDirectoryRecursive: (entry: DirectoryEntry) => void;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Returns a click handler implementing: fire onEntryClick immediately; for files toggle
|
|
16
|
+
* selection; for directories, single click toggles (after a delay) and double click expands
|
|
17
|
+
* recursively — unless the consumer calls preventDefault() on the click event.
|
|
18
|
+
*/
|
|
19
|
+
export declare const useEntryInteraction: ({ entry, isDirectory, isExpanded, isItemSelected, selectionMode, onSelectionChange, onEntryClick, toggleDirectory, onToggleDirectoryRecursive }: UseEntryInteractionArgs) => (e: MouseEvent<HTMLDivElement>) => void;
|
|
20
|
+
//# sourceMappingURL=useEntryInteraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEntryInteraction.d.ts","sourceRoot":"","sources":["../../src/useEntryInteraction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAKzE,MAAM,MAAM,uBAAuB,GAAG;IAClC,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;IAC7C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IACxE,YAAY,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAA;IACtD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,0BAA0B,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;CAC9D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,iJAAiJ,uBAAuB,SAWhM,UAAU,CAAC,cAAc,CAAC,SA+BrC,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--color-amber-100:oklch(96.2% .059 95.617);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-900:oklch(42.1% .095 57.708);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-900:oklch(37.8% .077 168.94);--color-cyan-400:oklch(78.9% .154 211.53);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base;@layer components{@layer theme,base;@layer components{@layer utilities{.aqvs-scroll-pane{display:flex;position:relative}.aqvs-scroll-pane-content{flex:1;height:100%;position:relative;overflow:hidden}.aqvs-tap-scroll-circle{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;transition-property:transform;transition-duration:.1s;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}.aqvs-tap-scroll-circle-visual-outer{border-radius:9999px;position:absolute;inset:0}.aqvs-tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66);border-width:1px;border-color:#fff6;border-radius:9999px;position:absolute;inset:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-tap-scroll-circle-inner{border-radius:9999px;position:absolute;inset:18%}.aqvs-sample-visual-rod{background-color:#ffffffd9;border-width:1px;border-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-pupil{background-color:#fffc;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-highlight{background-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-scrollbar{z-index:50;cursor:default;-webkit-user-select:none;user-select:none;touch-action:none;background-color:#fff;position:relative}.aqvs-scrollbar-horizontal{flex-direction:row;align-items:stretch;display:flex}.aqvs-scrollbar-vertical{flex-direction:column;align-items:stretch;display:flex}.aqvs-scrollbar-tap-circle-wrapper{pointer-events:auto;transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute}.aqvs-scrollbar-arrow-button{color:#313131;background-color:#e0e0e0;justify-content:center;align-items:center;font-size:.75rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex}.aqvs-scrollbar-arrow-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scrollbar-arrow-button:focus-visible{outline-offset:1px;outline:2px solid #60a5fa}.aqvs-scrollbar-arrow-button:disabled{cursor:not-allowed;opacity:.5}.aqvs-scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs-scrollbar-track{background-color:#f5f5f5;flex:1;position:relative}.aqvs-scrollbar-overlay{pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-thumb-wrapper{touch-action:none;position:absolute}.aqvs-scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out;position:absolute}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs-scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs-scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs-scrollbar-thumb-vertical{inset:0 1.5px}.aqvs-scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs-scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}.aqvs-scroll-to-edge-button{pointer-events:auto;color:#fff;text-transform:uppercase;letter-spacing:.05em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1f2937cc;border-radius:9999px;padding:.25rem 3rem;font-size:10px;font-weight:500;transition-property:transform,background-color;transition-duration:.15s;transform:none;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-scroll-to-edge-button:hover{background-color:#374151}.aqvs-scroll-to-edge-button:active{transform:scale(.95)}.aqvs-scroll-to-edge-overlay{pointer-events:none;z-index:10;transition-property:opacity;transition-duration:.5s;position:absolute;inset:0}.aqvs-scroll-to-edge-overlay[data-visible=true]{opacity:1}.aqvs-scroll-to-edge-overlay[data-visible=false]{opacity:0}.aqvs-scroll-to-edge-button-container{justify-content:center;display:flex;position:absolute;left:0;right:0}.aqvs-scroll-to-edge-button-container-top{top:.5rem}.aqvs-scroll-to-edge-button-container-bottom{bottom:.5rem}.aqvs-no-items-container{width:100%;position:absolute;top:0}.aqvs-no-items-text{text-align:center;color:#6b7280}.aqvs-item-container,.aqvs-bottom-inset,.aqvs-items-wrapper{width:100%;position:absolute}}}@layer utilities;}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.z-0{z-index:0}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-full{width:100%}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-center{justify-content:center}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-400\/10{background-color:color-mix(in oklab, var(--color-blue-400) 10%, transparent)}}.bg-blue-400\/20{background-color:#54a2ff33}@supports (color:color-mix(in lab, red, red)){.bg-blue-400\/20{background-color:color-mix(in oklab, var(--color-blue-400) 20%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-yellow-50{background-color:var(--color-yellow-50)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-1{padding-block:calc(var(--spacing) * 1)}.pr-\[3px\]{padding-right:3px}.pb-\[5px\]{padding-bottom:5px}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-cyan-400{color:var(--color-cyan-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-slate-600{color:var(--color-slate-600)}.text-slate-800{color:var(--color-slate-800)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.hover\:bg-gray-400\/15:hover{background-color:#99a1af26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-400\/15:hover{background-color:color-mix(in oklab, var(--color-gray-400) 15%, transparent)}}.hover\:bg-slate-100\/50:hover{background-color:#f1f5f980}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-100\/50:hover{background-color:color-mix(in oklab, var(--color-slate-100) 50%, transparent)}}}@media (prefers-color-scheme:dark){.dark\:bg-amber-900\/20{background-color:#7b330633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/20{background-color:color-mix(in oklab, var(--color-amber-900) 20%, transparent)}}.dark\:bg-blue-400\/15{background-color:#54a2ff26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/15{background-color:color-mix(in oklab, var(--color-blue-400) 15%, transparent)}}.dark\:bg-blue-400\/25{background-color:#54a2ff40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/25{background-color:color-mix(in oklab, var(--color-blue-400) 25%, transparent)}}.dark\:bg-emerald-900\/20{background-color:#004e3b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/20{background-color:color-mix(in oklab, var(--color-emerald-900) 20%, transparent)}}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-indigo-900\/20{background-color:#312c8533}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-900\/20{background-color:color-mix(in oklab, var(--color-indigo-900) 20%, transparent)}}.dark\:bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-slate-100{color:var(--color-slate-100)}.dark\:text-slate-300{color:var(--color-slate-300)}.dark\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(96\,165\,250\,0\.4\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#60a5fa66);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.dark\:hover\:bg-gray-200\/10:hover{background-color:#e5e7eb1a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-200\/10:hover{background-color:color-mix(in oklab, var(--color-gray-200) 10%, transparent)}}}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--color-amber-100:oklch(96.2% .059 95.617);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-900:oklch(42.1% .095 57.708);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-900:oklch(37.8% .077 168.94);--color-cyan-400:oklch(78.9% .154 211.53);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-800:oklch(39.8% .195 277.366);--color-indigo-900:oklch(35.9% .144 278.697);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base;@layer components{@layer theme,base;@layer components{@layer utilities{.aqvs-scroll-pane{display:flex;position:relative}.aqvs-scroll-pane-content{flex:1;height:100%;position:relative;overflow:hidden}.aqvs-tap-scroll-circle{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;transition-property:transform;transition-duration:.1s;transition-timing-function:cubic-bezier(0,0,.2,1);display:flex;position:relative}.aqvs-tap-scroll-circle-visual-outer{border-radius:9999px;position:absolute;inset:0}.aqvs-tap-scroll-circle-gradient{background:linear-gradient(to bottom right,#1d4ed899,#60a5fa8c,#bfdbfe66);border-width:1px;border-color:#fff6;border-radius:9999px;position:absolute;inset:0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-tap-scroll-circle-inner{border-radius:9999px;position:absolute;inset:18%}.aqvs-sample-visual-rod{background-color:#ffffffd9;border-width:1px;border-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-pupil{background-color:#fffc;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-sample-visual-highlight{background-color:#ffffff80;border-radius:9999px;position:absolute;top:50%;left:50%}.aqvs-scrollbar{z-index:50;cursor:default;-webkit-user-select:none;user-select:none;touch-action:none;background-color:#fff;position:relative}.aqvs-scrollbar-horizontal{flex-direction:row;align-items:stretch;display:flex}.aqvs-scrollbar-vertical{flex-direction:column;align-items:stretch;display:flex}.aqvs-scrollbar-tap-circle-wrapper{pointer-events:auto;transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute}.aqvs-scrollbar-arrow-button{color:#313131;background-color:#e0e0e0;justify-content:center;align-items:center;font-size:.75rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:flex}.aqvs-scrollbar-arrow-button:focus{outline-offset:2px;outline:2px solid #0000}.aqvs-scrollbar-arrow-button:focus-visible{outline-offset:1px;outline:2px solid #60a5fa}.aqvs-scrollbar-arrow-button:disabled{cursor:not-allowed;opacity:.5}.aqvs-scrollbar-arrow-button:enabled:hover{background-color:#d4d4d4}.aqvs-scrollbar-track{background-color:#f5f5f5;flex:1;position:relative}.aqvs-scrollbar-overlay{pointer-events:none;position:absolute;inset:0}.aqvs-scrollbar-thumb-wrapper{touch-action:none;position:absolute}.aqvs-scrollbar-thumb{transform-origin:50%;background-color:#7f7f7f;transition:transform 80ms ease-out;position:absolute}.aqvs-scrollbar-thumb[data-thumb-state=disabled]{transition:none;transform:none}.aqvs-scrollbar-thumb[data-thumb-state=hover]{background-color:#5f5f5f}.aqvs-scrollbar-thumb[data-thumb-state=dragging]{background-color:#4f4f4f;transition:transform 60ms ease-out}.aqvs-scrollbar-thumb-horizontal{inset:1.5px 0}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=hover]{top:-.5px;bottom:-.5px;transform:scaleY(1.06)}.aqvs-scrollbar-thumb-horizontal[data-thumb-state=dragging]{top:-.5px;bottom:-.5px;transform:scaleY(1.12)}.aqvs-scrollbar-thumb-vertical{inset:0 1.5px}.aqvs-scrollbar-thumb-vertical[data-thumb-state=hover]{left:-.5px;right:-.5px;transform:scaleX(1.06)}.aqvs-scrollbar-thumb-vertical[data-thumb-state=dragging]{left:-.5px;right:-.5px;transform:scaleX(1.12)}.aqvs-scroll-to-edge-button{pointer-events:auto;color:#fff;text-transform:uppercase;letter-spacing:.05em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#1f2937cc;border-radius:9999px;padding:.25rem 3rem;font-size:10px;font-weight:500;transition-property:transform,background-color;transition-duration:.15s;transform:none;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.aqvs-scroll-to-edge-button:hover{background-color:#374151}.aqvs-scroll-to-edge-button:active{transform:scale(.95)}.aqvs-scroll-to-edge-overlay{pointer-events:none;z-index:10;transition-property:opacity;transition-duration:.5s;position:absolute;inset:0}.aqvs-scroll-to-edge-overlay[data-visible=true]{opacity:1}.aqvs-scroll-to-edge-overlay[data-visible=false]{opacity:0}.aqvs-scroll-to-edge-button-container{justify-content:center;display:flex;position:absolute;left:0;right:0}.aqvs-scroll-to-edge-button-container-top{top:.5rem}.aqvs-scroll-to-edge-button-container-bottom{bottom:.5rem}.aqvs-no-items-container{width:100%;position:absolute;top:0}.aqvs-no-items-text{text-align:center;color:#6b7280}.aqvs-item-container,.aqvs-bottom-inset,.aqvs-items-wrapper{width:100%;position:absolute}}}@layer utilities{.dt-grid{flex-direction:column;display:flex;position:relative}.dt-grid-body{flex:1;min-height:0;position:relative}.dt-grid-header,.dt-grid-footer,.dt-grid-row,.dt-grid-hscrollbar-row{align-items:stretch;display:flex}.dt-grid-name-cell,.dt-grid-name-header,.dt-grid-name-footer{z-index:1;flex-shrink:0;align-items:center;display:flex;position:relative;overflow:hidden}.dt-grid-numeric-viewport{flex:1;position:relative;overflow:hidden}.dt-grid-numeric-track{transform:translateX(calc(-1 * var(--dt-hscroll,0px)));will-change:transform;display:grid}.dt-grid-cell{white-space:nowrap;text-overflow:ellipsis;align-items:center;padding:0 8px;display:flex;overflow:hidden}.dt-grid-cell--right{text-align:right;justify-content:flex-end}.dt-grid-cell--center{text-align:center;justify-content:center}.dt-grid-name-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dt-grid-scrollbar-spacer{flex-shrink:0}}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.z-0{z-index:0}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-96{height:calc(var(--spacing) * 96)}.h-full{height:100%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-full{width:100%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.overflow-hidden{overflow:hidden}.overflow-y-hidden{overflow-y:hidden}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-400\/10{background-color:#54a2ff1a}@supports (color:color-mix(in lab, red, red)){.bg-blue-400\/10{background-color:color-mix(in oklab, var(--color-blue-400) 10%, transparent)}}.bg-blue-400\/20{background-color:#54a2ff33}@supports (color:color-mix(in lab, red, red)){.bg-blue-400\/20{background-color:color-mix(in oklab, var(--color-blue-400) 20%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-yellow-50{background-color:var(--color-yellow-50)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-1{padding-block:calc(var(--spacing) * 1)}.pr-\[3px\]{padding-right:3px}.pb-\[5px\]{padding-bottom:5px}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-cyan-400{color:var(--color-cyan-400)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-indigo-800{color:var(--color-indigo-800)}.text-slate-600{color:var(--color-slate-600)}.text-slate-800{color:var(--color-slate-800)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(59\,130\,246\,0\.3\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#3b82f64d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.hover\:bg-gray-400\/15:hover{background-color:#99a1af26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-gray-400\/15:hover{background-color:color-mix(in oklab, var(--color-gray-400) 15%, transparent)}}.hover\:bg-slate-100\/50:hover{background-color:#f1f5f980}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-100\/50:hover{background-color:color-mix(in oklab, var(--color-slate-100) 50%, transparent)}}}@media (prefers-color-scheme:dark){.dark\:bg-amber-900\/20{background-color:#7b330633}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-900\/20{background-color:color-mix(in oklab, var(--color-amber-900) 20%, transparent)}}.dark\:bg-blue-400\/15{background-color:#54a2ff26}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/15{background-color:color-mix(in oklab, var(--color-blue-400) 15%, transparent)}}.dark\:bg-blue-400\/25{background-color:#54a2ff40}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-400\/25{background-color:color-mix(in oklab, var(--color-blue-400) 25%, transparent)}}.dark\:bg-emerald-900\/20{background-color:#004e3b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/20{background-color:color-mix(in oklab, var(--color-emerald-900) 20%, transparent)}}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-indigo-900\/20{background-color:#312c8533}@supports (color:color-mix(in lab, red, red)){.dark\:bg-indigo-900\/20{background-color:color-mix(in oklab, var(--color-indigo-900) 20%, transparent)}}.dark\:bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-yellow-900\/20{background-color:color-mix(in oklab, var(--color-yellow-900) 20%, transparent)}}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-slate-100{color:var(--color-slate-100)}.dark\:text-slate-300{color:var(--color-slate-300)}.dark\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-\[0_0_0_1px_rgba\(96\,165\,250\,0\.4\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#60a5fa66);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.dark\:hover\:bg-gray-200\/10:hover{background-color:#e5e7eb1a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-gray-200\/10:hover{background-color:color-mix(in oklab, var(--color-gray-200) 10%, transparent)}}}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiquants/directory-tree",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "High-performance directory tree component for React with virtual scrolling and file selection",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@heroicons/react": "^2.2.0",
|
|
28
28
|
"@phosphor-icons/react": "^2.1.10",
|
|
29
29
|
"tailwind-merge": "^3.4.0",
|
|
30
|
-
"@aiquants/virtualscroll": "1.
|
|
30
|
+
"@aiquants/virtualscroll": "1.18.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": "^19.2.7",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@types/react": "^19.2.7",
|
|
44
44
|
"@types/react-dom": "^19.2.3",
|
|
45
45
|
"@vitejs/plugin-react": "^5.1.2",
|
|
46
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
46
47
|
"jsdom": "^26.1.0",
|
|
47
48
|
"rimraf": "^6.1.2",
|
|
48
49
|
"tailwindcss": "^4.1.18",
|