@djangocfg/ui-tools 2.1.317 → 2.1.318
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/TreeRoot-A3J65L6F.mjs +4 -0
- package/dist/{TreeRoot-R6XVHYQK.mjs.map → TreeRoot-A3J65L6F.mjs.map} +1 -1
- package/dist/TreeRoot-DSK5JILT.cjs +19 -0
- package/dist/{TreeRoot-RAMQSBMO.cjs.map → TreeRoot-DSK5JILT.cjs.map} +1 -1
- package/dist/{chunk-44ZTWYAF.cjs → chunk-3Z3A7FHA.cjs} +17 -6
- package/dist/chunk-3Z3A7FHA.cjs.map +1 -0
- package/dist/{chunk-NTJL2SXK.mjs → chunk-MOME6KYD.mjs} +17 -6
- package/dist/chunk-MOME6KYD.mjs.map +1 -0
- package/dist/file-icon/index.cjs +59 -3
- package/dist/file-icon/index.cjs.map +1 -1
- package/dist/file-icon/index.d.cts +33 -4
- package/dist/file-icon/index.d.ts +33 -4
- package/dist/file-icon/index.mjs +60 -5
- package/dist/file-icon/index.mjs.map +1 -1
- package/dist/index.cjs +33 -33
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/tree/index.cjs +33 -33
- package/dist/tree/index.d.cts +6 -4
- package/dist/tree/index.d.ts +6 -4
- package/dist/tree/index.mjs +1 -1
- package/dist/{types-Cclwv4Hl.d.cts → types-CevSbyfD.d.cts} +6 -0
- package/dist/{types-Cclwv4Hl.d.ts → types-CevSbyfD.d.ts} +6 -0
- package/package.json +6 -6
- package/src/tools/FileIcon/FileIcon.tsx +13 -2
- package/src/tools/FileIcon/index.ts +6 -0
- package/src/tools/FileIcon/specialFolders.ts +93 -0
- package/src/tools/FileIcon/treeAdapter.tsx +8 -0
- package/src/tools/Tree/README.md +46 -2
- package/src/tools/Tree/Tree.story.tsx +36 -0
- package/src/tools/Tree/TreeRoot.tsx +2 -0
- package/src/tools/Tree/components/TreeContent.tsx +3 -1
- package/src/tools/Tree/context/TreeContext.tsx +4 -1
- package/src/tools/Tree/data/flatten.ts +10 -1
- package/src/tools/Tree/types.ts +7 -0
- package/dist/TreeRoot-R6XVHYQK.mjs +0 -4
- package/dist/TreeRoot-RAMQSBMO.cjs +0 -19
- package/dist/chunk-44ZTWYAF.cjs.map +0 -1
- package/dist/chunk-NTJL2SXK.mjs.map +0 -1
package/dist/file-icon/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __name } from '../chunk-CGILA3WO.mjs';
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
-
import { FolderOpen, Folder, File } from 'lucide-react';
|
|
3
|
+
import { FolderGit2, Github, Settings, Terminal, FlaskConical, BookOpen, FolderOutput, Image, FolderInput, Package, FolderCode, FolderOpen, Folder, File } from 'lucide-react';
|
|
4
4
|
import { cn } from '@djangocfg/ui-core/lib';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -34,11 +34,60 @@ function getMaterialIconsSync() {
|
|
|
34
34
|
return cached ?? null;
|
|
35
35
|
}
|
|
36
36
|
__name(getMaterialIconsSync, "getMaterialIconsSync");
|
|
37
|
+
var SPECIAL_FOLDERS = {
|
|
38
|
+
src: FolderCode,
|
|
39
|
+
source: FolderCode,
|
|
40
|
+
lib: FolderCode,
|
|
41
|
+
app: FolderCode,
|
|
42
|
+
packages: Package,
|
|
43
|
+
node_modules: Package,
|
|
44
|
+
vendor: Package,
|
|
45
|
+
public: FolderInput,
|
|
46
|
+
static: FolderInput,
|
|
47
|
+
assets: Image,
|
|
48
|
+
images: Image,
|
|
49
|
+
media: Image,
|
|
50
|
+
dist: FolderOutput,
|
|
51
|
+
build: FolderOutput,
|
|
52
|
+
out: FolderOutput,
|
|
53
|
+
".next": FolderOutput,
|
|
54
|
+
".nuxt": FolderOutput,
|
|
55
|
+
".turbo": FolderOutput,
|
|
56
|
+
docs: BookOpen,
|
|
57
|
+
documentation: BookOpen,
|
|
58
|
+
tests: FlaskConical,
|
|
59
|
+
test: FlaskConical,
|
|
60
|
+
__tests__: FlaskConical,
|
|
61
|
+
__test__: FlaskConical,
|
|
62
|
+
scripts: Terminal,
|
|
63
|
+
bin: Terminal,
|
|
64
|
+
config: Settings,
|
|
65
|
+
configs: Settings,
|
|
66
|
+
".config": Settings,
|
|
67
|
+
".vscode": Settings,
|
|
68
|
+
".idea": Settings,
|
|
69
|
+
".git": FolderGit2,
|
|
70
|
+
".github": Github,
|
|
71
|
+
".gitlab": FolderGit2
|
|
72
|
+
};
|
|
73
|
+
function resolveFolderIcon({
|
|
74
|
+
name,
|
|
75
|
+
isExpanded = false,
|
|
76
|
+
overrides
|
|
77
|
+
}) {
|
|
78
|
+
const key = name.trim().toLowerCase();
|
|
79
|
+
if (overrides?.[key]) return overrides[key];
|
|
80
|
+
const special = SPECIAL_FOLDERS[key];
|
|
81
|
+
if (special) return special;
|
|
82
|
+
return isExpanded ? FolderOpen : Folder;
|
|
83
|
+
}
|
|
84
|
+
__name(resolveFolderIcon, "resolveFolderIcon");
|
|
37
85
|
function FileIcon({
|
|
38
86
|
name,
|
|
39
87
|
isFolder = false,
|
|
40
88
|
isExpanded = false,
|
|
41
89
|
size = 16,
|
|
90
|
+
folderOverrides,
|
|
42
91
|
className
|
|
43
92
|
}) {
|
|
44
93
|
const [svg, setSvg] = useState(() => {
|
|
@@ -61,7 +110,11 @@ function FileIcon({
|
|
|
61
110
|
};
|
|
62
111
|
}, [isFolder, name]);
|
|
63
112
|
if (isFolder) {
|
|
64
|
-
const Icon =
|
|
113
|
+
const Icon = resolveFolderIcon({
|
|
114
|
+
name,
|
|
115
|
+
isExpanded,
|
|
116
|
+
overrides: folderOverrides
|
|
117
|
+
});
|
|
65
118
|
return /* @__PURE__ */ jsx(
|
|
66
119
|
Icon,
|
|
67
120
|
{
|
|
@@ -93,7 +146,8 @@ function FileIcon({
|
|
|
93
146
|
__name(FileIcon, "FileIcon");
|
|
94
147
|
function createFileIconSlot({
|
|
95
148
|
getName,
|
|
96
|
-
size = 16
|
|
149
|
+
size = 16,
|
|
150
|
+
folderOverrides
|
|
97
151
|
}) {
|
|
98
152
|
return ({ node, isFolder, isExpanded }) => /* @__PURE__ */ jsx(
|
|
99
153
|
FileIcon,
|
|
@@ -101,12 +155,13 @@ function createFileIconSlot({
|
|
|
101
155
|
name: getName(node),
|
|
102
156
|
isFolder,
|
|
103
157
|
isExpanded,
|
|
104
|
-
size
|
|
158
|
+
size,
|
|
159
|
+
folderOverrides
|
|
105
160
|
}
|
|
106
161
|
);
|
|
107
162
|
}
|
|
108
163
|
__name(createFileIconSlot, "createFileIconSlot");
|
|
109
164
|
|
|
110
|
-
export { FileIcon, createFileIconSlot, getMaterialIconsSync, loadMaterialIcons };
|
|
165
|
+
export { FileIcon, createFileIconSlot, getMaterialIconsSync, loadMaterialIcons, resolveFolderIcon };
|
|
111
166
|
//# sourceMappingURL=index.mjs.map
|
|
112
167
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tools/FileIcon/loader.ts","../../src/tools/FileIcon/FileIcon.tsx","../../src/tools/FileIcon/treeAdapter.tsx"],"names":["FileFallback","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\n/**\n * Lazy loader for `material-file-icons`. The package is an optional dependency:\n * if it's installed in the consumer's tree, we render its rich VSCode-style\n * SVGs; if not, the loader resolves to `null` and `<FileIcon>` falls back to a\n * Lucide icon. Either way, ui-tools never throws or warns about a missing\n * package.\n *\n * Resolution is cached per-process so we don't re-import on every render.\n */\n\ntype GetIconFn = (name: string) => { svg: string } | undefined;\n\nlet cached: GetIconFn | null | undefined;\nlet inflight: Promise<GetIconFn | null> | null = null;\n\nexport async function loadMaterialIcons(): Promise<GetIconFn | null> {\n if (cached !== undefined) return cached;\n if (inflight) return inflight;\n\n inflight = (async () => {\n try {\n // Computed specifier so bundlers don't try to eagerly resolve it.\n const specifier = 'material-file-icons';\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n getIcon?: GetIconFn;\n default?: { getIcon?: GetIconFn };\n };\n const fn = mod.getIcon ?? mod.default?.getIcon ?? null;\n cached = fn;\n return fn;\n } catch {\n cached = null;\n return null;\n } finally {\n inflight = null;\n }\n })();\n\n return inflight;\n}\n\n/** Synchronous accessor — returns null until `loadMaterialIcons` resolves. */\nexport function getMaterialIconsSync(): GetIconFn | null {\n return cached ?? null;\n}\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { File as FileFallback, Folder, FolderOpen } from 'lucide-react';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport { getMaterialIconsSync, loadMaterialIcons } from './loader';\n\nexport type FileIconSize = 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 40 | 48 | 64;\n\nexport interface FileIconProps {\n /** File name (with extension) or folder name. */\n name: string;\n /** Render a folder icon instead of a file icon. */\n isFolder?: boolean;\n /** Folder open / closed state. Ignored when `isFolder` is false. */\n isExpanded?: boolean;\n /** Pixel size of the icon. */\n size?: FileIconSize;\n className?: string;\n}\n\n/**\n * VSCode-style file icon.\n *\n * - Folders render Lucide `Folder` / `FolderOpen` (amber tint).\n * - Files use `material-file-icons` if it's installed in the consumer; otherwise\n * fall back to a neutral Lucide `File` icon.\n *\n * The optional dependency is loaded lazily on first render — there is zero\n * bundle cost for consumers who never mount this component.\n */\nexport function FileIcon({\n name,\n isFolder = false,\n isExpanded = false,\n size = 16,\n className,\n}: FileIconProps) {\n const [svg, setSvg] = useState<string | null>(() => {\n if (isFolder) return null;\n const fn = getMaterialIconsSync();\n return fn ? (fn(name)?.svg ?? null) : null;\n });\n\n useEffect(() => {\n if (isFolder) {\n setSvg(null);\n return;\n }\n let cancelled = false;\n void loadMaterialIcons().then((fn) => {\n if (cancelled) return;\n setSvg(fn ? (fn(name)?.svg ?? null) : null);\n });\n return () => {\n cancelled = true;\n };\n }, [isFolder, name]);\n\n if (isFolder) {\n const Icon = isExpanded ? FolderOpen : Folder;\n return (\n <Icon\n className={cn('shrink-0 text-amber-500', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n if (!svg) {\n return (\n <FileFallback\n className={cn('shrink-0 text-muted-foreground/80', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n return (\n <span\n role=\"img\"\n aria-hidden\n className={cn('inline-block shrink-0', className)}\n style={{ width: size, height: size }}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n}\n\nexport default FileIcon;\n","'use client';\n\nimport type { TreeNode, TreeRowSlot } from '../Tree/types';\nimport { FileIcon, type FileIconSize } from './FileIcon';\n\nexport interface CreateFileIconSlotOptions<T> {\n /**\n * How to read the displayed name (with extension) for a node. Use the same\n * accessor you pass to `<TreeRoot getItemName={...} />`.\n */\n getName: (node: TreeNode<T>) => string;\n /** Pixel size for both file and folder icons. Default: 16. */\n size?: FileIconSize;\n}\n\n/**\n * Build a `renderIcon` slot for `<TreeRoot>` that uses `<FileIcon>` for both\n * leaves and folders.\n *\n * @example\n * ```tsx\n * <TreeRoot\n * data={data}\n * getItemName={(n) => n.data.name}\n * renderIcon={createFileIconSlot({ getName: (n) => n.data.name })}\n * />\n * ```\n */\nexport function createFileIconSlot<T>({\n getName,\n size = 16,\n}: CreateFileIconSlotOptions<T>): TreeRowSlot<T> {\n return ({ node, isFolder, isExpanded }) => (\n <FileIcon\n name={getName(node)}\n isFolder={isFolder}\n isExpanded={isExpanded}\n size={size}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/FileIcon/loader.ts","../../src/tools/FileIcon/specialFolders.ts","../../src/tools/FileIcon/FileIcon.tsx","../../src/tools/FileIcon/treeAdapter.tsx"],"names":["ImageIcon","FileFallback","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\n/**\n * Lazy loader for `material-file-icons`. The package is an optional dependency:\n * if it's installed in the consumer's tree, we render its rich VSCode-style\n * SVGs; if not, the loader resolves to `null` and `<FileIcon>` falls back to a\n * Lucide icon. Either way, ui-tools never throws or warns about a missing\n * package.\n *\n * Resolution is cached per-process so we don't re-import on every render.\n */\n\ntype GetIconFn = (name: string) => { svg: string } | undefined;\n\nlet cached: GetIconFn | null | undefined;\nlet inflight: Promise<GetIconFn | null> | null = null;\n\nexport async function loadMaterialIcons(): Promise<GetIconFn | null> {\n if (cached !== undefined) return cached;\n if (inflight) return inflight;\n\n inflight = (async () => {\n try {\n // Computed specifier so bundlers don't try to eagerly resolve it.\n const specifier = 'material-file-icons';\n const mod = (await import(/* @vite-ignore */ specifier)) as {\n getIcon?: GetIconFn;\n default?: { getIcon?: GetIconFn };\n };\n const fn = mod.getIcon ?? mod.default?.getIcon ?? null;\n cached = fn;\n return fn;\n } catch {\n cached = null;\n return null;\n } finally {\n inflight = null;\n }\n })();\n\n return inflight;\n}\n\n/** Synchronous accessor — returns null until `loadMaterialIcons` resolves. */\nexport function getMaterialIconsSync(): GetIconFn | null {\n return cached ?? null;\n}\n","'use client';\n\nimport {\n BookOpen,\n FlaskConical,\n Folder,\n FolderCode,\n FolderGit2,\n FolderInput,\n FolderOpen,\n FolderOutput,\n Github,\n Image as ImageIcon,\n Package,\n Settings,\n Terminal,\n type LucideIcon,\n} from 'lucide-react';\n\n/**\n * Conventional folder names → Lucide icon. Lookup is case-insensitive and\n * trimmed. Anything not in this map falls back to a generic folder icon.\n *\n * Designed to feel \"right\" across the common dev project layouts (Node,\n * Python, Go, Rust, Django, Next, Vite). Not exhaustive on purpose —\n * keeps the bundle light and the behaviour predictable.\n */\nconst SPECIAL_FOLDERS: Record<string, LucideIcon> = {\n src: FolderCode,\n source: FolderCode,\n lib: FolderCode,\n app: FolderCode,\n packages: Package,\n node_modules: Package,\n vendor: Package,\n public: FolderInput,\n static: FolderInput,\n assets: ImageIcon,\n images: ImageIcon,\n media: ImageIcon,\n dist: FolderOutput,\n build: FolderOutput,\n out: FolderOutput,\n '.next': FolderOutput,\n '.nuxt': FolderOutput,\n '.turbo': FolderOutput,\n docs: BookOpen,\n documentation: BookOpen,\n tests: FlaskConical,\n test: FlaskConical,\n __tests__: FlaskConical,\n __test__: FlaskConical,\n scripts: Terminal,\n bin: Terminal,\n config: Settings,\n configs: Settings,\n '.config': Settings,\n '.vscode': Settings,\n '.idea': Settings,\n '.git': FolderGit2,\n '.github': Github,\n '.gitlab': FolderGit2,\n};\n\nexport interface ResolveFolderIconOptions {\n /** Folder display name (no path). */\n name: string;\n /** Open / closed state — only used for the *generic* folder fallback. */\n isExpanded?: boolean;\n /**\n * Optional override map. Wins over the built-in table. Keys are\n * matched case-insensitively after `trim()`.\n */\n overrides?: Record<string, LucideIcon>;\n}\n\n/**\n * Pick the right folder icon for `name`. Returns `Folder` / `FolderOpen`\n * for unknown names so callers can render the generic open/closed pair.\n */\nexport function resolveFolderIcon({\n name,\n isExpanded = false,\n overrides,\n}: ResolveFolderIconOptions): LucideIcon {\n const key = name.trim().toLowerCase();\n if (overrides?.[key]) return overrides[key];\n const special = SPECIAL_FOLDERS[key];\n if (special) return special;\n return isExpanded ? FolderOpen : Folder;\n}\n\nexport type FolderIconOverrides = Record<string, LucideIcon>;\n","'use client';\n\nimport { useEffect, useState } from 'react';\nimport { File as FileFallback } from 'lucide-react';\nimport { cn } from '@djangocfg/ui-core/lib';\n\nimport { getMaterialIconsSync, loadMaterialIcons } from './loader';\nimport { resolveFolderIcon, type FolderIconOverrides } from './specialFolders';\n\nexport type FileIconSize = 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 40 | 48 | 64;\n\nexport interface FileIconProps {\n /** File name (with extension) or folder name. */\n name: string;\n /** Render a folder icon instead of a file icon. */\n isFolder?: boolean;\n /** Folder open / closed state. Ignored when `isFolder` is false. */\n isExpanded?: boolean;\n /** Pixel size of the icon. */\n size?: FileIconSize;\n /**\n * Override or extend the built-in special-folder mapping. Keys are\n * matched case-insensitively. Only used when `isFolder` is true.\n */\n folderOverrides?: FolderIconOverrides;\n className?: string;\n}\n\n/**\n * VSCode-style file icon.\n *\n * - Folders render Lucide `Folder` / `FolderOpen` (amber tint).\n * - Files use `material-file-icons` if it's installed in the consumer; otherwise\n * fall back to a neutral Lucide `File` icon.\n *\n * The optional dependency is loaded lazily on first render — there is zero\n * bundle cost for consumers who never mount this component.\n */\nexport function FileIcon({\n name,\n isFolder = false,\n isExpanded = false,\n size = 16,\n folderOverrides,\n className,\n}: FileIconProps) {\n const [svg, setSvg] = useState<string | null>(() => {\n if (isFolder) return null;\n const fn = getMaterialIconsSync();\n return fn ? (fn(name)?.svg ?? null) : null;\n });\n\n useEffect(() => {\n if (isFolder) {\n setSvg(null);\n return;\n }\n let cancelled = false;\n void loadMaterialIcons().then((fn) => {\n if (cancelled) return;\n setSvg(fn ? (fn(name)?.svg ?? null) : null);\n });\n return () => {\n cancelled = true;\n };\n }, [isFolder, name]);\n\n if (isFolder) {\n const Icon = resolveFolderIcon({\n name,\n isExpanded,\n overrides: folderOverrides,\n });\n return (\n <Icon\n className={cn('shrink-0 text-amber-500', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n if (!svg) {\n return (\n <FileFallback\n className={cn('shrink-0 text-muted-foreground/80', className)}\n style={{ width: size, height: size }}\n />\n );\n }\n\n return (\n <span\n role=\"img\"\n aria-hidden\n className={cn('inline-block shrink-0', className)}\n style={{ width: size, height: size }}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n}\n\nexport default FileIcon;\n","'use client';\n\nimport type { TreeNode, TreeRowSlot } from '../Tree/types';\nimport { FileIcon, type FileIconSize } from './FileIcon';\nimport type { FolderIconOverrides } from './specialFolders';\n\nexport interface CreateFileIconSlotOptions<T> {\n /**\n * How to read the displayed name (with extension) for a node. Use the same\n * accessor you pass to `<TreeRoot getItemName={...} />`.\n */\n getName: (node: TreeNode<T>) => string;\n /** Pixel size for both file and folder icons. Default: 16. */\n size?: FileIconSize;\n /**\n * Override or extend the built-in special-folder mapping (e.g. give\n * `tests` a custom icon). Keys are matched case-insensitively.\n */\n folderOverrides?: FolderIconOverrides;\n}\n\n/**\n * Build a `renderIcon` slot for `<TreeRoot>` that uses `<FileIcon>` for both\n * leaves and folders.\n *\n * @example\n * ```tsx\n * <TreeRoot\n * data={data}\n * getItemName={(n) => n.data.name}\n * renderIcon={createFileIconSlot({ getName: (n) => n.data.name })}\n * />\n * ```\n */\nexport function createFileIconSlot<T>({\n getName,\n size = 16,\n folderOverrides,\n}: CreateFileIconSlotOptions<T>): TreeRowSlot<T> {\n return ({ node, isFolder, isExpanded }) => (\n <FileIcon\n name={getName(node)}\n isFolder={isFolder}\n isExpanded={isExpanded}\n size={size}\n folderOverrides={folderOverrides}\n />\n );\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -8,7 +8,7 @@ var chunkIHAY6FO6_cjs = require('./chunk-IHAY6FO6.cjs');
|
|
|
8
8
|
var chunk77HQWEQ6_cjs = require('./chunk-77HQWEQ6.cjs');
|
|
9
9
|
var chunkF2CMIIOH_cjs = require('./chunk-F2CMIIOH.cjs');
|
|
10
10
|
var chunkYXBOAGIM_cjs = require('./chunk-YXBOAGIM.cjs');
|
|
11
|
-
var
|
|
11
|
+
var chunk3Z3A7FHA_cjs = require('./chunk-3Z3A7FHA.cjs');
|
|
12
12
|
var chunkS44PW6NK_cjs = require('./chunk-S44PW6NK.cjs');
|
|
13
13
|
var chunk33AMWFBZ_cjs = require('./chunk-33AMWFBZ.cjs');
|
|
14
14
|
require('./chunk-2SMCH62O.cjs');
|
|
@@ -363,7 +363,7 @@ var LazyCronScheduler = createLazyComponent(
|
|
|
363
363
|
}
|
|
364
364
|
);
|
|
365
365
|
var LazyTree = createLazyComponent(
|
|
366
|
-
() => import('./TreeRoot-
|
|
366
|
+
() => import('./TreeRoot-DSK5JILT.cjs'),
|
|
367
367
|
{
|
|
368
368
|
displayName: "LazyTree",
|
|
369
369
|
fallback: /* @__PURE__ */ jsxRuntime.jsx(LoadingFallback, { minHeight: 200, text: "Loading tree\u2026" })
|
|
@@ -1671,127 +1671,127 @@ Object.defineProperty(exports, "createDemoTree", {
|
|
|
1671
1671
|
});
|
|
1672
1672
|
Object.defineProperty(exports, "DEFAULT_TREE_APPEARANCE", {
|
|
1673
1673
|
enumerable: true,
|
|
1674
|
-
get: function () { return
|
|
1674
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_APPEARANCE; }
|
|
1675
1675
|
});
|
|
1676
1676
|
Object.defineProperty(exports, "DEFAULT_TREE_LABELS", {
|
|
1677
1677
|
enumerable: true,
|
|
1678
|
-
get: function () { return
|
|
1678
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_LABELS; }
|
|
1679
1679
|
});
|
|
1680
1680
|
Object.defineProperty(exports, "Tree", {
|
|
1681
1681
|
enumerable: true,
|
|
1682
|
-
get: function () { return
|
|
1682
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
1683
1683
|
});
|
|
1684
1684
|
Object.defineProperty(exports, "TreeChevron", {
|
|
1685
1685
|
enumerable: true,
|
|
1686
|
-
get: function () { return
|
|
1686
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeChevron; }
|
|
1687
1687
|
});
|
|
1688
1688
|
Object.defineProperty(exports, "TreeContent", {
|
|
1689
1689
|
enumerable: true,
|
|
1690
|
-
get: function () { return
|
|
1690
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeContent; }
|
|
1691
1691
|
});
|
|
1692
1692
|
Object.defineProperty(exports, "TreeEmpty", {
|
|
1693
1693
|
enumerable: true,
|
|
1694
|
-
get: function () { return
|
|
1694
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeEmpty; }
|
|
1695
1695
|
});
|
|
1696
1696
|
Object.defineProperty(exports, "TreeIcon", {
|
|
1697
1697
|
enumerable: true,
|
|
1698
|
-
get: function () { return
|
|
1698
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIcon; }
|
|
1699
1699
|
});
|
|
1700
1700
|
Object.defineProperty(exports, "TreeIndentGuides", {
|
|
1701
1701
|
enumerable: true,
|
|
1702
|
-
get: function () { return
|
|
1702
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIndentGuides; }
|
|
1703
1703
|
});
|
|
1704
1704
|
Object.defineProperty(exports, "TreeLabel", {
|
|
1705
1705
|
enumerable: true,
|
|
1706
|
-
get: function () { return
|
|
1706
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeLabel; }
|
|
1707
1707
|
});
|
|
1708
1708
|
Object.defineProperty(exports, "TreeProvider", {
|
|
1709
1709
|
enumerable: true,
|
|
1710
|
-
get: function () { return
|
|
1710
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeProvider; }
|
|
1711
1711
|
});
|
|
1712
1712
|
Object.defineProperty(exports, "TreeRoot", {
|
|
1713
1713
|
enumerable: true,
|
|
1714
|
-
get: function () { return
|
|
1714
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
1715
1715
|
});
|
|
1716
1716
|
Object.defineProperty(exports, "TreeRow", {
|
|
1717
1717
|
enumerable: true,
|
|
1718
|
-
get: function () { return
|
|
1718
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRow; }
|
|
1719
1719
|
});
|
|
1720
1720
|
Object.defineProperty(exports, "TreeSearchInput", {
|
|
1721
1721
|
enumerable: true,
|
|
1722
|
-
get: function () { return
|
|
1722
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeSearchInput; }
|
|
1723
1723
|
});
|
|
1724
1724
|
Object.defineProperty(exports, "appearanceToStyle", {
|
|
1725
1725
|
enumerable: true,
|
|
1726
|
-
get: function () { return
|
|
1726
|
+
get: function () { return chunk3Z3A7FHA_cjs.appearanceToStyle; }
|
|
1727
1727
|
});
|
|
1728
1728
|
Object.defineProperty(exports, "clearTreeState", {
|
|
1729
1729
|
enumerable: true,
|
|
1730
|
-
get: function () { return
|
|
1730
|
+
get: function () { return chunk3Z3A7FHA_cjs.clearTreeState; }
|
|
1731
1731
|
});
|
|
1732
1732
|
Object.defineProperty(exports, "createChildCache", {
|
|
1733
1733
|
enumerable: true,
|
|
1734
|
-
get: function () { return
|
|
1734
|
+
get: function () { return chunk3Z3A7FHA_cjs.createChildCache; }
|
|
1735
1735
|
});
|
|
1736
1736
|
Object.defineProperty(exports, "flattenTree", {
|
|
1737
1737
|
enumerable: true,
|
|
1738
|
-
get: function () { return
|
|
1738
|
+
get: function () { return chunk3Z3A7FHA_cjs.flattenTree; }
|
|
1739
1739
|
});
|
|
1740
1740
|
Object.defineProperty(exports, "loadTreeState", {
|
|
1741
1741
|
enumerable: true,
|
|
1742
|
-
get: function () { return
|
|
1742
|
+
get: function () { return chunk3Z3A7FHA_cjs.loadTreeState; }
|
|
1743
1743
|
});
|
|
1744
1744
|
Object.defineProperty(exports, "resolveAppearance", {
|
|
1745
1745
|
enumerable: true,
|
|
1746
|
-
get: function () { return
|
|
1746
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveAppearance; }
|
|
1747
1747
|
});
|
|
1748
1748
|
Object.defineProperty(exports, "resolveChildren", {
|
|
1749
1749
|
enumerable: true,
|
|
1750
|
-
get: function () { return
|
|
1750
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveChildren; }
|
|
1751
1751
|
});
|
|
1752
1752
|
Object.defineProperty(exports, "saveTreeState", {
|
|
1753
1753
|
enumerable: true,
|
|
1754
|
-
get: function () { return
|
|
1754
|
+
get: function () { return chunk3Z3A7FHA_cjs.saveTreeState; }
|
|
1755
1755
|
});
|
|
1756
1756
|
Object.defineProperty(exports, "useTreeActions", {
|
|
1757
1757
|
enumerable: true,
|
|
1758
|
-
get: function () { return
|
|
1758
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeActions; }
|
|
1759
1759
|
});
|
|
1760
1760
|
Object.defineProperty(exports, "useTreeContext", {
|
|
1761
1761
|
enumerable: true,
|
|
1762
|
-
get: function () { return
|
|
1762
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeContext; }
|
|
1763
1763
|
});
|
|
1764
1764
|
Object.defineProperty(exports, "useTreeExpansion", {
|
|
1765
1765
|
enumerable: true,
|
|
1766
|
-
get: function () { return
|
|
1766
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeExpansion; }
|
|
1767
1767
|
});
|
|
1768
1768
|
Object.defineProperty(exports, "useTreeFocus", {
|
|
1769
1769
|
enumerable: true,
|
|
1770
|
-
get: function () { return
|
|
1770
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeFocus; }
|
|
1771
1771
|
});
|
|
1772
1772
|
Object.defineProperty(exports, "useTreeKeyboard", {
|
|
1773
1773
|
enumerable: true,
|
|
1774
|
-
get: function () { return
|
|
1774
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeKeyboard; }
|
|
1775
1775
|
});
|
|
1776
1776
|
Object.defineProperty(exports, "useTreeLabels", {
|
|
1777
1777
|
enumerable: true,
|
|
1778
|
-
get: function () { return
|
|
1778
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeLabels; }
|
|
1779
1779
|
});
|
|
1780
1780
|
Object.defineProperty(exports, "useTreeRows", {
|
|
1781
1781
|
enumerable: true,
|
|
1782
|
-
get: function () { return
|
|
1782
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeRows; }
|
|
1783
1783
|
});
|
|
1784
1784
|
Object.defineProperty(exports, "useTreeSearch", {
|
|
1785
1785
|
enumerable: true,
|
|
1786
|
-
get: function () { return
|
|
1786
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSearch; }
|
|
1787
1787
|
});
|
|
1788
1788
|
Object.defineProperty(exports, "useTreeSelection", {
|
|
1789
1789
|
enumerable: true,
|
|
1790
|
-
get: function () { return
|
|
1790
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSelection; }
|
|
1791
1791
|
});
|
|
1792
1792
|
Object.defineProperty(exports, "useTreeTypeAhead", {
|
|
1793
1793
|
enumerable: true,
|
|
1794
|
-
get: function () { return
|
|
1794
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeTypeAhead; }
|
|
1795
1795
|
});
|
|
1796
1796
|
Object.defineProperty(exports, "MarkdownMessage", {
|
|
1797
1797
|
enumerable: true,
|
package/dist/index.d.cts
CHANGED
|
@@ -8,8 +8,8 @@ export { Language } from 'prism-react-renderer';
|
|
|
8
8
|
import { RJSFSchema, UiSchema, WidgetProps, FieldTemplateProps, ObjectFieldTemplateProps, ArrayFieldTemplateProps, ArrayFieldItemTemplateProps, ErrorListProps } from '@rjsf/utils';
|
|
9
9
|
import { FormProps, IChangeEvent } from '@rjsf/core';
|
|
10
10
|
import { CommonExternalProps } from 'react-json-tree';
|
|
11
|
-
import { b as TreeRootProps } from './types-
|
|
12
|
-
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, F as FlatRow, R as ResolvedAppearance, m as TreeAccentIntensity, k as TreeAppearance, e as TreeContextMenuSlot, l as TreeDensity, f as TreeItemId, g as TreeLabels, j as TreeLoadChildren, T as TreeNode, n as TreeRadius, i as TreeRowRenderProps, a as TreeRowSlot, h as TreeSelectionMode, d as appearanceToStyle, r as resolveAppearance } from './types-
|
|
11
|
+
import { b as TreeRootProps } from './types-CevSbyfD.cjs';
|
|
12
|
+
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, F as FlatRow, R as ResolvedAppearance, m as TreeAccentIntensity, k as TreeAppearance, e as TreeContextMenuSlot, l as TreeDensity, f as TreeItemId, g as TreeLabels, j as TreeLoadChildren, T as TreeNode, n as TreeRadius, i as TreeRowRenderProps, a as TreeRowSlot, h as TreeSelectionMode, d as appearanceToStyle, r as resolveAppearance } from './types-CevSbyfD.cjs';
|
|
13
13
|
import { MediaPlayerInstance } from '@vidstack/react';
|
|
14
14
|
import * as monaco from 'monaco-editor';
|
|
15
15
|
export { ChildCache, ChildEntry, ChildEntryStatus, DemoNode, FlattenInput, PersistedTreeState, TreeRoot as Tree, TreeChevron, TreeChevronProps, TreeContent, TreeContentProps, TreeContextValue, TreeEmpty, TreeEmptyProps, TreeError, TreeErrorProps, TreeIcon, TreeIconProps, TreeIndentGuides, TreeIndentGuidesProps, TreeLabel, TreeLabelProps, TreeProvider, TreeProviderProps, TreeRoot, TreeRow, TreeRowProps, TreeSearchInput, TreeSearchInputProps, TreeSkeleton, TreeSkeletonProps, UseTreeKeyboardOptions, UseTreeTypeAheadOptions, clearTreeState, createChildCache, createDemoTree, flattenTree, loadTreeState, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from './tree/index.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export { Language } from 'prism-react-renderer';
|
|
|
8
8
|
import { RJSFSchema, UiSchema, WidgetProps, FieldTemplateProps, ObjectFieldTemplateProps, ArrayFieldTemplateProps, ArrayFieldItemTemplateProps, ErrorListProps } from '@rjsf/utils';
|
|
9
9
|
import { FormProps, IChangeEvent } from '@rjsf/core';
|
|
10
10
|
import { CommonExternalProps } from 'react-json-tree';
|
|
11
|
-
import { b as TreeRootProps } from './types-
|
|
12
|
-
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, F as FlatRow, R as ResolvedAppearance, m as TreeAccentIntensity, k as TreeAppearance, e as TreeContextMenuSlot, l as TreeDensity, f as TreeItemId, g as TreeLabels, j as TreeLoadChildren, T as TreeNode, n as TreeRadius, i as TreeRowRenderProps, a as TreeRowSlot, h as TreeSelectionMode, d as appearanceToStyle, r as resolveAppearance } from './types-
|
|
11
|
+
import { b as TreeRootProps } from './types-CevSbyfD.js';
|
|
12
|
+
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, F as FlatRow, R as ResolvedAppearance, m as TreeAccentIntensity, k as TreeAppearance, e as TreeContextMenuSlot, l as TreeDensity, f as TreeItemId, g as TreeLabels, j as TreeLoadChildren, T as TreeNode, n as TreeRadius, i as TreeRowRenderProps, a as TreeRowSlot, h as TreeSelectionMode, d as appearanceToStyle, r as resolveAppearance } from './types-CevSbyfD.js';
|
|
13
13
|
import { MediaPlayerInstance } from '@vidstack/react';
|
|
14
14
|
import * as monaco from 'monaco-editor';
|
|
15
15
|
export { ChildCache, ChildEntry, ChildEntryStatus, DemoNode, FlattenInput, PersistedTreeState, TreeRoot as Tree, TreeChevron, TreeChevronProps, TreeContent, TreeContentProps, TreeContextValue, TreeEmpty, TreeEmptyProps, TreeError, TreeErrorProps, TreeIcon, TreeIconProps, TreeIndentGuides, TreeIndentGuidesProps, TreeLabel, TreeLabelProps, TreeProvider, TreeProviderProps, TreeRoot, TreeRow, TreeRowProps, TreeSearchInput, TreeSearchInputProps, TreeSkeleton, TreeSkeletonProps, UseTreeKeyboardOptions, UseTreeTypeAheadOptions, clearTreeState, createChildCache, createDemoTree, flattenTree, loadTreeState, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from './tree/index.js';
|
package/dist/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ export { ImageViewer } from './chunk-GGKGH5PM.mjs';
|
|
|
6
6
|
export { generateContentKey, useAudioCache, useBlobUrlCleanup, useImageCache, useMediaCacheStore, useVideoCache, useVideoPlayerSettings } from './chunk-5LBDYFWH.mjs';
|
|
7
7
|
export { CronSchedulerProvider, CustomInput, DayChips, MonthDayGrid, SchedulePreview, ScheduleTypeSelector, TimeSelector, buildCron, humanizeCron, isValidCron, parseCron, useCronCustom, useCronMonthDays, useCronPreview, useCronScheduler, useCronSchedulerContext, useCronTime, useCronType, useCronWeekDays } from './chunk-PZKAH7WQ.mjs';
|
|
8
8
|
export { TreeError, TreeSkeleton, createDemoTree } from './chunk-KR6B3LVY.mjs';
|
|
9
|
-
export { DEFAULT_TREE_APPEARANCE, DEFAULT_TREE_LABELS, TreeRoot as Tree, TreeChevron, TreeContent, TreeEmpty, TreeIcon, TreeIndentGuides, TreeLabel, TreeProvider, TreeRoot, TreeRow, TreeSearchInput, appearanceToStyle, clearTreeState, createChildCache, flattenTree, loadTreeState, resolveAppearance, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from './chunk-
|
|
9
|
+
export { DEFAULT_TREE_APPEARANCE, DEFAULT_TREE_LABELS, TreeRoot as Tree, TreeChevron, TreeContent, TreeEmpty, TreeIcon, TreeIndentGuides, TreeLabel, TreeProvider, TreeRoot, TreeRow, TreeSearchInput, appearanceToStyle, clearTreeState, createChildCache, flattenTree, loadTreeState, resolveAppearance, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from './chunk-MOME6KYD.mjs';
|
|
10
10
|
import { PlaygroundProvider } from './chunk-GBLQTHWT.mjs';
|
|
11
11
|
export { MarkdownMessage, Mermaid_default as Mermaid, PrettyCode_default as PrettyCode, extractTextFromChildren, useCollapsibleContent } from './chunk-GBLQTHWT.mjs';
|
|
12
12
|
export { JsonTree_default as JsonTree } from './chunk-LFWQ36LJ.mjs';
|
|
@@ -338,7 +338,7 @@ var LazyCronScheduler = createLazyComponent(
|
|
|
338
338
|
}
|
|
339
339
|
);
|
|
340
340
|
var LazyTree = createLazyComponent(
|
|
341
|
-
() => import('./TreeRoot-
|
|
341
|
+
() => import('./TreeRoot-A3J65L6F.mjs'),
|
|
342
342
|
{
|
|
343
343
|
displayName: "LazyTree",
|
|
344
344
|
fallback: /* @__PURE__ */ jsx(LoadingFallback, { minHeight: 200, text: "Loading tree\u2026" })
|
package/dist/tree/index.cjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var chunkYXBOAGIM_cjs = require('../chunk-YXBOAGIM.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunk3Z3A7FHA_cjs = require('../chunk-3Z3A7FHA.cjs');
|
|
7
7
|
require('../chunk-WGEGR3DF.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
@@ -22,131 +22,131 @@ Object.defineProperty(exports, "createDemoTree", {
|
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "DEFAULT_TREE_APPEARANCE", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_APPEARANCE; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "DEFAULT_TREE_LABELS", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_LABELS; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "Tree", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "TreeChevron", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeChevron; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "TreeContent", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeContent; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "TreeEmpty", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeEmpty; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "TreeIcon", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIcon; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "TreeIndentGuides", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIndentGuides; }
|
|
54
54
|
});
|
|
55
55
|
Object.defineProperty(exports, "TreeLabel", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeLabel; }
|
|
58
58
|
});
|
|
59
59
|
Object.defineProperty(exports, "TreeProvider", {
|
|
60
60
|
enumerable: true,
|
|
61
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeProvider; }
|
|
62
62
|
});
|
|
63
63
|
Object.defineProperty(exports, "TreeRoot", {
|
|
64
64
|
enumerable: true,
|
|
65
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
66
66
|
});
|
|
67
67
|
Object.defineProperty(exports, "TreeRow", {
|
|
68
68
|
enumerable: true,
|
|
69
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRow; }
|
|
70
70
|
});
|
|
71
71
|
Object.defineProperty(exports, "TreeSearchInput", {
|
|
72
72
|
enumerable: true,
|
|
73
|
-
get: function () { return
|
|
73
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeSearchInput; }
|
|
74
74
|
});
|
|
75
75
|
Object.defineProperty(exports, "appearanceToStyle", {
|
|
76
76
|
enumerable: true,
|
|
77
|
-
get: function () { return
|
|
77
|
+
get: function () { return chunk3Z3A7FHA_cjs.appearanceToStyle; }
|
|
78
78
|
});
|
|
79
79
|
Object.defineProperty(exports, "clearTreeState", {
|
|
80
80
|
enumerable: true,
|
|
81
|
-
get: function () { return
|
|
81
|
+
get: function () { return chunk3Z3A7FHA_cjs.clearTreeState; }
|
|
82
82
|
});
|
|
83
83
|
Object.defineProperty(exports, "createChildCache", {
|
|
84
84
|
enumerable: true,
|
|
85
|
-
get: function () { return
|
|
85
|
+
get: function () { return chunk3Z3A7FHA_cjs.createChildCache; }
|
|
86
86
|
});
|
|
87
87
|
Object.defineProperty(exports, "default", {
|
|
88
88
|
enumerable: true,
|
|
89
|
-
get: function () { return
|
|
89
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot_default; }
|
|
90
90
|
});
|
|
91
91
|
Object.defineProperty(exports, "flattenTree", {
|
|
92
92
|
enumerable: true,
|
|
93
|
-
get: function () { return
|
|
93
|
+
get: function () { return chunk3Z3A7FHA_cjs.flattenTree; }
|
|
94
94
|
});
|
|
95
95
|
Object.defineProperty(exports, "loadTreeState", {
|
|
96
96
|
enumerable: true,
|
|
97
|
-
get: function () { return
|
|
97
|
+
get: function () { return chunk3Z3A7FHA_cjs.loadTreeState; }
|
|
98
98
|
});
|
|
99
99
|
Object.defineProperty(exports, "resolveAppearance", {
|
|
100
100
|
enumerable: true,
|
|
101
|
-
get: function () { return
|
|
101
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveAppearance; }
|
|
102
102
|
});
|
|
103
103
|
Object.defineProperty(exports, "resolveChildren", {
|
|
104
104
|
enumerable: true,
|
|
105
|
-
get: function () { return
|
|
105
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveChildren; }
|
|
106
106
|
});
|
|
107
107
|
Object.defineProperty(exports, "saveTreeState", {
|
|
108
108
|
enumerable: true,
|
|
109
|
-
get: function () { return
|
|
109
|
+
get: function () { return chunk3Z3A7FHA_cjs.saveTreeState; }
|
|
110
110
|
});
|
|
111
111
|
Object.defineProperty(exports, "useTreeActions", {
|
|
112
112
|
enumerable: true,
|
|
113
|
-
get: function () { return
|
|
113
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeActions; }
|
|
114
114
|
});
|
|
115
115
|
Object.defineProperty(exports, "useTreeContext", {
|
|
116
116
|
enumerable: true,
|
|
117
|
-
get: function () { return
|
|
117
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeContext; }
|
|
118
118
|
});
|
|
119
119
|
Object.defineProperty(exports, "useTreeExpansion", {
|
|
120
120
|
enumerable: true,
|
|
121
|
-
get: function () { return
|
|
121
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeExpansion; }
|
|
122
122
|
});
|
|
123
123
|
Object.defineProperty(exports, "useTreeFocus", {
|
|
124
124
|
enumerable: true,
|
|
125
|
-
get: function () { return
|
|
125
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeFocus; }
|
|
126
126
|
});
|
|
127
127
|
Object.defineProperty(exports, "useTreeKeyboard", {
|
|
128
128
|
enumerable: true,
|
|
129
|
-
get: function () { return
|
|
129
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeKeyboard; }
|
|
130
130
|
});
|
|
131
131
|
Object.defineProperty(exports, "useTreeLabels", {
|
|
132
132
|
enumerable: true,
|
|
133
|
-
get: function () { return
|
|
133
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeLabels; }
|
|
134
134
|
});
|
|
135
135
|
Object.defineProperty(exports, "useTreeRows", {
|
|
136
136
|
enumerable: true,
|
|
137
|
-
get: function () { return
|
|
137
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeRows; }
|
|
138
138
|
});
|
|
139
139
|
Object.defineProperty(exports, "useTreeSearch", {
|
|
140
140
|
enumerable: true,
|
|
141
|
-
get: function () { return
|
|
141
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSearch; }
|
|
142
142
|
});
|
|
143
143
|
Object.defineProperty(exports, "useTreeSelection", {
|
|
144
144
|
enumerable: true,
|
|
145
|
-
get: function () { return
|
|
145
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSelection; }
|
|
146
146
|
});
|
|
147
147
|
Object.defineProperty(exports, "useTreeTypeAhead", {
|
|
148
148
|
enumerable: true,
|
|
149
|
-
get: function () { return
|
|
149
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeTypeAhead; }
|
|
150
150
|
});
|
|
151
151
|
//# sourceMappingURL=index.cjs.map
|
|
152
152
|
//# sourceMappingURL=index.cjs.map
|
package/dist/tree/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { b as TreeRootProps, f as TreeItemId, T as TreeNode, F as FlatRow, o as TreeActivateOptions, g as TreeLabels, R as ResolvedAppearance, h as TreeSelectionMode, p as TreeActivationMode, a as TreeRowSlot, e as TreeContextMenuSlot } from '../types-
|
|
3
|
-
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, m as TreeAccentIntensity, k as TreeAppearance, l as TreeDensity, j as TreeLoadChildren, n as TreeRadius, i as TreeRowRenderProps, d as appearanceToStyle, r as resolveAppearance } from '../types-
|
|
2
|
+
import { b as TreeRootProps, f as TreeItemId, T as TreeNode, F as FlatRow, o as TreeActivateOptions, g as TreeLabels, R as ResolvedAppearance, h as TreeSelectionMode, p as TreeActivationMode, a as TreeRowSlot, e as TreeContextMenuSlot } from '../types-CevSbyfD.cjs';
|
|
3
|
+
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, m as TreeAccentIntensity, k as TreeAppearance, l as TreeDensity, j as TreeLoadChildren, n as TreeRadius, i as TreeRowRenderProps, d as appearanceToStyle, r as resolveAppearance } from '../types-CevSbyfD.cjs';
|
|
4
4
|
import * as React$1 from 'react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -70,7 +70,7 @@ interface TreeContextValue<T> {
|
|
|
70
70
|
renderContextMenu?: TreeContextMenuSlot<T>;
|
|
71
71
|
}
|
|
72
72
|
declare function useTreeContext<T>(): TreeContextValue<T>;
|
|
73
|
-
interface TreeProviderProps<T> extends Pick<TreeRootProps<T>, 'data' | 'getItemName' | 'loadChildren' | 'selectionMode' | 'activationMode' | 'initialExpandedIds' | 'initialSelectedIds' | 'indent' | 'appearance' | 'onSelectionChange' | 'onExpansionChange' | 'onActivate' | 'enableSearch' | 'showIndentGuides' | 'renderIcon' | 'renderLabel' | 'renderActions' | 'renderContextMenu' | 'labels' | 'persistKey' | 'persistSelection'> {
|
|
73
|
+
interface TreeProviderProps<T> extends Pick<TreeRootProps<T>, 'data' | 'getItemName' | 'loadChildren' | 'selectionMode' | 'activationMode' | 'initialExpandedIds' | 'initialSelectedIds' | 'indent' | 'appearance' | 'onSelectionChange' | 'onExpansionChange' | 'onActivate' | 'filterNode' | 'enableSearch' | 'showIndentGuides' | 'renderIcon' | 'renderLabel' | 'renderActions' | 'renderContextMenu' | 'labels' | 'persistKey' | 'persistSelection'> {
|
|
74
74
|
children: React$1.ReactNode;
|
|
75
75
|
}
|
|
76
76
|
declare function TreeProvider<T>(props: TreeProviderProps<T>): react_jsx_runtime.JSX.Element;
|
|
@@ -241,6 +241,8 @@ interface FlattenInput<T> {
|
|
|
241
241
|
roots: TreeNode<T>[];
|
|
242
242
|
expandedIds: ReadonlySet<TreeItemId>;
|
|
243
243
|
cache: ChildCache<T>;
|
|
244
|
+
/** Optional predicate. Nodes returning `false` (and their descendants) are excluded. */
|
|
245
|
+
filterNode?: (node: TreeNode<T>) => boolean;
|
|
244
246
|
}
|
|
245
247
|
/**
|
|
246
248
|
* Walk the tree top-to-bottom and produce a flat list of visible rows.
|
|
@@ -249,7 +251,7 @@ interface FlattenInput<T> {
|
|
|
249
251
|
* `expandedIds`. The output is ordered exactly as it should render,
|
|
250
252
|
* which keeps keyboard navigation (next/prev row) trivial.
|
|
251
253
|
*/
|
|
252
|
-
declare function flattenTree<T>({ roots, expandedIds, cache }: FlattenInput<T>): FlatRow<T>[];
|
|
254
|
+
declare function flattenTree<T>({ roots, expandedIds, cache, filterNode, }: FlattenInput<T>): FlatRow<T>[];
|
|
253
255
|
|
|
254
256
|
interface PersistedTreeState {
|
|
255
257
|
expandedItems: TreeItemId[];
|
package/dist/tree/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { b as TreeRootProps, f as TreeItemId, T as TreeNode, F as FlatRow, o as TreeActivateOptions, g as TreeLabels, R as ResolvedAppearance, h as TreeSelectionMode, p as TreeActivationMode, a as TreeRowSlot, e as TreeContextMenuSlot } from '../types-
|
|
3
|
-
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, m as TreeAccentIntensity, k as TreeAppearance, l as TreeDensity, j as TreeLoadChildren, n as TreeRadius, i as TreeRowRenderProps, d as appearanceToStyle, r as resolveAppearance } from '../types-
|
|
2
|
+
import { b as TreeRootProps, f as TreeItemId, T as TreeNode, F as FlatRow, o as TreeActivateOptions, g as TreeLabels, R as ResolvedAppearance, h as TreeSelectionMode, p as TreeActivationMode, a as TreeRowSlot, e as TreeContextMenuSlot } from '../types-CevSbyfD.js';
|
|
3
|
+
export { c as DEFAULT_TREE_APPEARANCE, D as DEFAULT_TREE_LABELS, m as TreeAccentIntensity, k as TreeAppearance, l as TreeDensity, j as TreeLoadChildren, n as TreeRadius, i as TreeRowRenderProps, d as appearanceToStyle, r as resolveAppearance } from '../types-CevSbyfD.js';
|
|
4
4
|
import * as React$1 from 'react';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -70,7 +70,7 @@ interface TreeContextValue<T> {
|
|
|
70
70
|
renderContextMenu?: TreeContextMenuSlot<T>;
|
|
71
71
|
}
|
|
72
72
|
declare function useTreeContext<T>(): TreeContextValue<T>;
|
|
73
|
-
interface TreeProviderProps<T> extends Pick<TreeRootProps<T>, 'data' | 'getItemName' | 'loadChildren' | 'selectionMode' | 'activationMode' | 'initialExpandedIds' | 'initialSelectedIds' | 'indent' | 'appearance' | 'onSelectionChange' | 'onExpansionChange' | 'onActivate' | 'enableSearch' | 'showIndentGuides' | 'renderIcon' | 'renderLabel' | 'renderActions' | 'renderContextMenu' | 'labels' | 'persistKey' | 'persistSelection'> {
|
|
73
|
+
interface TreeProviderProps<T> extends Pick<TreeRootProps<T>, 'data' | 'getItemName' | 'loadChildren' | 'selectionMode' | 'activationMode' | 'initialExpandedIds' | 'initialSelectedIds' | 'indent' | 'appearance' | 'onSelectionChange' | 'onExpansionChange' | 'onActivate' | 'filterNode' | 'enableSearch' | 'showIndentGuides' | 'renderIcon' | 'renderLabel' | 'renderActions' | 'renderContextMenu' | 'labels' | 'persistKey' | 'persistSelection'> {
|
|
74
74
|
children: React$1.ReactNode;
|
|
75
75
|
}
|
|
76
76
|
declare function TreeProvider<T>(props: TreeProviderProps<T>): react_jsx_runtime.JSX.Element;
|
|
@@ -241,6 +241,8 @@ interface FlattenInput<T> {
|
|
|
241
241
|
roots: TreeNode<T>[];
|
|
242
242
|
expandedIds: ReadonlySet<TreeItemId>;
|
|
243
243
|
cache: ChildCache<T>;
|
|
244
|
+
/** Optional predicate. Nodes returning `false` (and their descendants) are excluded. */
|
|
245
|
+
filterNode?: (node: TreeNode<T>) => boolean;
|
|
244
246
|
}
|
|
245
247
|
/**
|
|
246
248
|
* Walk the tree top-to-bottom and produce a flat list of visible rows.
|
|
@@ -249,7 +251,7 @@ interface FlattenInput<T> {
|
|
|
249
251
|
* `expandedIds`. The output is ordered exactly as it should render,
|
|
250
252
|
* which keeps keyboard navigation (next/prev row) trivial.
|
|
251
253
|
*/
|
|
252
|
-
declare function flattenTree<T>({ roots, expandedIds, cache }: FlattenInput<T>): FlatRow<T>[];
|
|
254
|
+
declare function flattenTree<T>({ roots, expandedIds, cache, filterNode, }: FlattenInput<T>): FlatRow<T>[];
|
|
253
255
|
|
|
254
256
|
interface PersistedTreeState {
|
|
255
257
|
expandedItems: TreeItemId[];
|
package/dist/tree/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { TreeError, TreeSkeleton, createDemoTree } from '../chunk-KR6B3LVY.mjs';
|
|
2
|
-
export { DEFAULT_TREE_APPEARANCE, DEFAULT_TREE_LABELS, TreeRoot as Tree, TreeChevron, TreeContent, TreeEmpty, TreeIcon, TreeIndentGuides, TreeLabel, TreeProvider, TreeRoot, TreeRow, TreeSearchInput, appearanceToStyle, clearTreeState, createChildCache, TreeRoot_default as default, flattenTree, loadTreeState, resolveAppearance, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from '../chunk-
|
|
2
|
+
export { DEFAULT_TREE_APPEARANCE, DEFAULT_TREE_LABELS, TreeRoot as Tree, TreeChevron, TreeContent, TreeEmpty, TreeIcon, TreeIndentGuides, TreeLabel, TreeProvider, TreeRoot, TreeRow, TreeSearchInput, appearanceToStyle, clearTreeState, createChildCache, TreeRoot_default as default, flattenTree, loadTreeState, resolveAppearance, resolveChildren, saveTreeState, useTreeActions, useTreeContext, useTreeExpansion, useTreeFocus, useTreeKeyboard, useTreeLabels, useTreeRows, useTreeSearch, useTreeSelection, useTreeTypeAhead } from '../chunk-MOME6KYD.mjs';
|
|
3
3
|
import '../chunk-CGILA3WO.mjs';
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|