@djangocfg/ui-tools 2.1.316 → 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-A25RIGYE.cjs.map → TreeRoot-A3J65L6F.mjs.map} +1 -1
- package/dist/TreeRoot-DSK5JILT.cjs +19 -0
- package/dist/{TreeRoot-HBRJEHBH.mjs.map → TreeRoot-DSK5JILT.cjs.map} +1 -1
- package/dist/{chunk-4CEOJDMB.cjs → chunk-3Z3A7FHA.cjs} +36 -15
- package/dist/chunk-3Z3A7FHA.cjs.map +1 -0
- package/dist/{chunk-NFIMVYJU.mjs → chunk-MOME6KYD.mjs} +36 -15
- package/dist/chunk-MOME6KYD.mjs.map +1 -0
- package/dist/file-icon/index.cjs +173 -0
- package/dist/file-icon/index.cjs.map +1 -0
- package/dist/file-icon/index.d.cts +98 -0
- package/dist/file-icon/index.d.ts +98 -0
- package/dist/file-icon/index.mjs +167 -0
- package/dist/file-icon/index.mjs.map +1 -0
- package/dist/index.cjs +122 -122
- package/dist/index.d.cts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.mjs +3 -3
- package/dist/tree/index.cjs +33 -33
- package/dist/tree/index.d.cts +10 -172
- package/dist/tree/index.d.ts +10 -172
- package/dist/tree/index.mjs +1 -1
- package/dist/types-CevSbyfD.d.cts +204 -0
- package/dist/types-CevSbyfD.d.ts +204 -0
- package/package.json +13 -7
- package/src/tools/FileIcon/FileIcon.tsx +102 -0
- package/src/tools/FileIcon/index.ts +15 -0
- package/src/tools/FileIcon/loader.ts +47 -0
- package/src/tools/FileIcon/specialFolders.ts +93 -0
- package/src/tools/FileIcon/treeAdapter.tsx +49 -0
- package/src/tools/Tree/README.md +100 -0
- package/src/tools/Tree/Tree.story.tsx +84 -0
- package/src/tools/Tree/TreeRoot.tsx +6 -1
- package/src/tools/Tree/components/TreeContent.tsx +3 -1
- package/src/tools/Tree/components/TreeRow.tsx +17 -8
- package/src/tools/Tree/context/TreeContext.tsx +14 -3
- package/src/tools/Tree/data/flatten.ts +10 -1
- package/src/tools/Tree/index.tsx +2 -0
- package/src/tools/Tree/types.ts +43 -2
- package/dist/TreeRoot-A25RIGYE.cjs +0 -19
- package/dist/TreeRoot-HBRJEHBH.mjs +0 -4
- package/dist/chunk-4CEOJDMB.cjs.map +0 -1
- package/dist/chunk-NFIMVYJU.mjs.map +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { LucideIcon } from 'lucide-react';
|
|
3
|
+
import { T as TreeNode, a as TreeRowSlot } from '../types-CevSbyfD.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
interface ResolveFolderIconOptions {
|
|
7
|
+
/** Folder display name (no path). */
|
|
8
|
+
name: string;
|
|
9
|
+
/** Open / closed state — only used for the *generic* folder fallback. */
|
|
10
|
+
isExpanded?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Optional override map. Wins over the built-in table. Keys are
|
|
13
|
+
* matched case-insensitively after `trim()`.
|
|
14
|
+
*/
|
|
15
|
+
overrides?: Record<string, LucideIcon>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Pick the right folder icon for `name`. Returns `Folder` / `FolderOpen`
|
|
19
|
+
* for unknown names so callers can render the generic open/closed pair.
|
|
20
|
+
*/
|
|
21
|
+
declare function resolveFolderIcon({ name, isExpanded, overrides, }: ResolveFolderIconOptions): LucideIcon;
|
|
22
|
+
type FolderIconOverrides = Record<string, LucideIcon>;
|
|
23
|
+
|
|
24
|
+
type FileIconSize = 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 40 | 48 | 64;
|
|
25
|
+
interface FileIconProps {
|
|
26
|
+
/** File name (with extension) or folder name. */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Render a folder icon instead of a file icon. */
|
|
29
|
+
isFolder?: boolean;
|
|
30
|
+
/** Folder open / closed state. Ignored when `isFolder` is false. */
|
|
31
|
+
isExpanded?: boolean;
|
|
32
|
+
/** Pixel size of the icon. */
|
|
33
|
+
size?: FileIconSize;
|
|
34
|
+
/**
|
|
35
|
+
* Override or extend the built-in special-folder mapping. Keys are
|
|
36
|
+
* matched case-insensitively. Only used when `isFolder` is true.
|
|
37
|
+
*/
|
|
38
|
+
folderOverrides?: FolderIconOverrides;
|
|
39
|
+
className?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* VSCode-style file icon.
|
|
43
|
+
*
|
|
44
|
+
* - Folders render Lucide `Folder` / `FolderOpen` (amber tint).
|
|
45
|
+
* - Files use `material-file-icons` if it's installed in the consumer; otherwise
|
|
46
|
+
* fall back to a neutral Lucide `File` icon.
|
|
47
|
+
*
|
|
48
|
+
* The optional dependency is loaded lazily on first render — there is zero
|
|
49
|
+
* bundle cost for consumers who never mount this component.
|
|
50
|
+
*/
|
|
51
|
+
declare function FileIcon({ name, isFolder, isExpanded, size, folderOverrides, className, }: FileIconProps): react_jsx_runtime.JSX.Element;
|
|
52
|
+
|
|
53
|
+
interface CreateFileIconSlotOptions<T> {
|
|
54
|
+
/**
|
|
55
|
+
* How to read the displayed name (with extension) for a node. Use the same
|
|
56
|
+
* accessor you pass to `<TreeRoot getItemName={...} />`.
|
|
57
|
+
*/
|
|
58
|
+
getName: (node: TreeNode<T>) => string;
|
|
59
|
+
/** Pixel size for both file and folder icons. Default: 16. */
|
|
60
|
+
size?: FileIconSize;
|
|
61
|
+
/**
|
|
62
|
+
* Override or extend the built-in special-folder mapping (e.g. give
|
|
63
|
+
* `tests` a custom icon). Keys are matched case-insensitively.
|
|
64
|
+
*/
|
|
65
|
+
folderOverrides?: FolderIconOverrides;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Build a `renderIcon` slot for `<TreeRoot>` that uses `<FileIcon>` for both
|
|
69
|
+
* leaves and folders.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```tsx
|
|
73
|
+
* <TreeRoot
|
|
74
|
+
* data={data}
|
|
75
|
+
* getItemName={(n) => n.data.name}
|
|
76
|
+
* renderIcon={createFileIconSlot({ getName: (n) => n.data.name })}
|
|
77
|
+
* />
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare function createFileIconSlot<T>({ getName, size, folderOverrides, }: CreateFileIconSlotOptions<T>): TreeRowSlot<T>;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Lazy loader for `material-file-icons`. The package is an optional dependency:
|
|
84
|
+
* if it's installed in the consumer's tree, we render its rich VSCode-style
|
|
85
|
+
* SVGs; if not, the loader resolves to `null` and `<FileIcon>` falls back to a
|
|
86
|
+
* Lucide icon. Either way, ui-tools never throws or warns about a missing
|
|
87
|
+
* package.
|
|
88
|
+
*
|
|
89
|
+
* Resolution is cached per-process so we don't re-import on every render.
|
|
90
|
+
*/
|
|
91
|
+
type GetIconFn = (name: string) => {
|
|
92
|
+
svg: string;
|
|
93
|
+
} | undefined;
|
|
94
|
+
declare function loadMaterialIcons(): Promise<GetIconFn | null>;
|
|
95
|
+
/** Synchronous accessor — returns null until `loadMaterialIcons` resolves. */
|
|
96
|
+
declare function getMaterialIconsSync(): GetIconFn | null;
|
|
97
|
+
|
|
98
|
+
export { type CreateFileIconSlotOptions, FileIcon, type FileIconProps, type FileIconSize, type FolderIconOverrides, type ResolveFolderIconOptions, createFileIconSlot, getMaterialIconsSync, loadMaterialIcons, resolveFolderIcon };
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { __name } from '../chunk-CGILA3WO.mjs';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { FolderGit2, Github, Settings, Terminal, FlaskConical, BookOpen, FolderOutput, Image, FolderInput, Package, FolderCode, FolderOpen, Folder, File } from 'lucide-react';
|
|
4
|
+
import { cn } from '@djangocfg/ui-core/lib';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
// src/tools/FileIcon/loader.ts
|
|
8
|
+
var cached;
|
|
9
|
+
var inflight = null;
|
|
10
|
+
async function loadMaterialIcons() {
|
|
11
|
+
if (cached !== void 0) return cached;
|
|
12
|
+
if (inflight) return inflight;
|
|
13
|
+
inflight = (async () => {
|
|
14
|
+
try {
|
|
15
|
+
const specifier = "material-file-icons";
|
|
16
|
+
const mod = await import(
|
|
17
|
+
/* @vite-ignore */
|
|
18
|
+
specifier
|
|
19
|
+
);
|
|
20
|
+
const fn = mod.getIcon ?? mod.default?.getIcon ?? null;
|
|
21
|
+
cached = fn;
|
|
22
|
+
return fn;
|
|
23
|
+
} catch {
|
|
24
|
+
cached = null;
|
|
25
|
+
return null;
|
|
26
|
+
} finally {
|
|
27
|
+
inflight = null;
|
|
28
|
+
}
|
|
29
|
+
})();
|
|
30
|
+
return inflight;
|
|
31
|
+
}
|
|
32
|
+
__name(loadMaterialIcons, "loadMaterialIcons");
|
|
33
|
+
function getMaterialIconsSync() {
|
|
34
|
+
return cached ?? null;
|
|
35
|
+
}
|
|
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");
|
|
85
|
+
function FileIcon({
|
|
86
|
+
name,
|
|
87
|
+
isFolder = false,
|
|
88
|
+
isExpanded = false,
|
|
89
|
+
size = 16,
|
|
90
|
+
folderOverrides,
|
|
91
|
+
className
|
|
92
|
+
}) {
|
|
93
|
+
const [svg, setSvg] = useState(() => {
|
|
94
|
+
if (isFolder) return null;
|
|
95
|
+
const fn = getMaterialIconsSync();
|
|
96
|
+
return fn ? fn(name)?.svg ?? null : null;
|
|
97
|
+
});
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (isFolder) {
|
|
100
|
+
setSvg(null);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
let cancelled = false;
|
|
104
|
+
void loadMaterialIcons().then((fn) => {
|
|
105
|
+
if (cancelled) return;
|
|
106
|
+
setSvg(fn ? fn(name)?.svg ?? null : null);
|
|
107
|
+
});
|
|
108
|
+
return () => {
|
|
109
|
+
cancelled = true;
|
|
110
|
+
};
|
|
111
|
+
}, [isFolder, name]);
|
|
112
|
+
if (isFolder) {
|
|
113
|
+
const Icon = resolveFolderIcon({
|
|
114
|
+
name,
|
|
115
|
+
isExpanded,
|
|
116
|
+
overrides: folderOverrides
|
|
117
|
+
});
|
|
118
|
+
return /* @__PURE__ */ jsx(
|
|
119
|
+
Icon,
|
|
120
|
+
{
|
|
121
|
+
className: cn("shrink-0 text-amber-500", className),
|
|
122
|
+
style: { width: size, height: size }
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
if (!svg) {
|
|
127
|
+
return /* @__PURE__ */ jsx(
|
|
128
|
+
File,
|
|
129
|
+
{
|
|
130
|
+
className: cn("shrink-0 text-muted-foreground/80", className),
|
|
131
|
+
style: { width: size, height: size }
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
return /* @__PURE__ */ jsx(
|
|
136
|
+
"span",
|
|
137
|
+
{
|
|
138
|
+
role: "img",
|
|
139
|
+
"aria-hidden": true,
|
|
140
|
+
className: cn("inline-block shrink-0", className),
|
|
141
|
+
style: { width: size, height: size },
|
|
142
|
+
dangerouslySetInnerHTML: { __html: svg }
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
__name(FileIcon, "FileIcon");
|
|
147
|
+
function createFileIconSlot({
|
|
148
|
+
getName,
|
|
149
|
+
size = 16,
|
|
150
|
+
folderOverrides
|
|
151
|
+
}) {
|
|
152
|
+
return ({ node, isFolder, isExpanded }) => /* @__PURE__ */ jsx(
|
|
153
|
+
FileIcon,
|
|
154
|
+
{
|
|
155
|
+
name: getName(node),
|
|
156
|
+
isFolder,
|
|
157
|
+
isExpanded,
|
|
158
|
+
size,
|
|
159
|
+
folderOverrides
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
__name(createFileIconSlot, "createFileIconSlot");
|
|
164
|
+
|
|
165
|
+
export { FileIcon, createFileIconSlot, getMaterialIconsSync, loadMaterialIcons, resolveFolderIcon };
|
|
166
|
+
//# sourceMappingURL=index.mjs.map
|
|
167
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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":";;;;;;;AAcA,IAAI,MAAA;AACJ,IAAI,QAAA,GAA6C,IAAA;AAEjD,eAAsB,iBAAA,GAA+C;AACnE,EAAA,IAAI,MAAA,KAAW,QAAW,OAAO,MAAA;AACjC,EAAA,IAAI,UAAU,OAAO,QAAA;AAErB,EAAA,QAAA,GAAA,CAAY,YAAY;AACtB,IAAA,IAAI;AAEF,MAAA,MAAM,SAAA,GAAY,qBAAA;AAClB,MAAA,MAAM,MAAO,MAAM;AAAA;AAAA,QAA0B;AAAA,OAAA;AAI7C,MAAA,MAAM,EAAA,GAAK,GAAA,CAAI,OAAA,IAAW,GAAA,CAAI,SAAS,OAAA,IAAW,IAAA;AAClD,MAAA,MAAA,GAAS,EAAA;AACT,MAAA,OAAO,EAAA;AAAA,IACT,CAAA,CAAA,MAAQ;AACN,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,OAAO,IAAA;AAAA,IACT,CAAA,SAAE;AACA,MAAA,QAAA,GAAW,IAAA;AAAA,IACb;AAAA,EACF,CAAA,GAAG;AAEH,EAAA,OAAO,QAAA;AACT;AAxBsB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AA2Bf,SAAS,oBAAA,GAAyC;AACvD,EAAA,OAAO,MAAA,IAAU,IAAA;AACnB;AAFgB,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;ACjBhB,IAAM,eAAA,GAA8C;AAAA,EAClD,GAAA,EAAK,UAAA;AAAA,EACL,MAAA,EAAQ,UAAA;AAAA,EACR,GAAA,EAAK,UAAA;AAAA,EACL,GAAA,EAAK,UAAA;AAAA,EACL,QAAA,EAAU,OAAA;AAAA,EACV,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,OAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQA,KAAA;AAAA,EACR,MAAA,EAAQA,KAAA;AAAA,EACR,KAAA,EAAOA,KAAA;AAAA,EACP,IAAA,EAAM,YAAA;AAAA,EACN,KAAA,EAAO,YAAA;AAAA,EACP,GAAA,EAAK,YAAA;AAAA,EACL,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,QAAA,EAAU,YAAA;AAAA,EACV,IAAA,EAAM,QAAA;AAAA,EACN,aAAA,EAAe,QAAA;AAAA,EACf,KAAA,EAAO,YAAA;AAAA,EACP,IAAA,EAAM,YAAA;AAAA,EACN,SAAA,EAAW,YAAA;AAAA,EACX,QAAA,EAAU,YAAA;AAAA,EACV,OAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,QAAA;AAAA,EACT,SAAA,EAAW,QAAA;AAAA,EACX,SAAA,EAAW,QAAA;AAAA,EACX,OAAA,EAAS,QAAA;AAAA,EACT,MAAA,EAAQ,UAAA;AAAA,EACR,SAAA,EAAW,MAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAA;AAkBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,IAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb;AACF,CAAA,EAAyC;AACvC,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,EAAK,CAAE,WAAA,EAAY;AACpC,EAAA,IAAI,SAAA,GAAY,GAAG,CAAA,EAAG,OAAO,UAAU,GAAG,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,gBAAgB,GAAG,CAAA;AACnC,EAAA,IAAI,SAAS,OAAO,OAAA;AACpB,EAAA,OAAO,aAAa,UAAA,GAAa,MAAA;AACnC;AAVgB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;AC1CT,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,IAAA,GAAO,EAAA;AAAA,EACP,eAAA;AAAA,EACA;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAwB,MAAM;AAClD,IAAA,IAAI,UAAU,OAAO,IAAA;AACrB,IAAA,MAAM,KAAK,oBAAA,EAAqB;AAChC,IAAA,OAAO,EAAA,GAAM,EAAA,CAAG,IAAI,CAAA,EAAG,OAAO,IAAA,GAAQ,IAAA;AAAA,EACxC,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAA,CAAO,IAAI,CAAA;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,KAAK,iBAAA,EAAkB,CAAE,IAAA,CAAK,CAAC,EAAA,KAAO;AACpC,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAA,CAAO,KAAM,EAAA,CAAG,IAAI,CAAA,EAAG,GAAA,IAAO,OAAQ,IAAI,CAAA;AAAA,IAC5C,CAAC,CAAA;AACD,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA;AAEnB,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,OAAO,iBAAA,CAAkB;AAAA,MAC7B,IAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW;AAAA,KACZ,CAAA;AACD,IAAA,uBACE,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,QAClD,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA;AAAK;AAAA,KACrC;AAAA,EAEJ;AAEA,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,uBACE,GAAA;AAAA,MAACC,IAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,QAC5D,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA;AAAK;AAAA,KACrC;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,KAAA;AAAA,MACL,aAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,EAAA,CAAG,uBAAA,EAAyB,SAAS,CAAA;AAAA,MAChD,KAAA,EAAO,EAAE,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAK;AAAA,MACnC,uBAAA,EAAyB,EAAE,MAAA,EAAQ,GAAA;AAAI;AAAA,GACzC;AAEJ;AA7DgB,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;ACJT,SAAS,kBAAA,CAAsB;AAAA,EACpC,OAAA;AAAA,EACA,IAAA,GAAO,EAAA;AAAA,EACP;AACF,CAAA,EAAiD;AAC/C,EAAA,OAAO,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,UAAA,uBACxBC,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,QAAQ,IAAI,CAAA;AAAA,MAClB,QAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA;AAAA,GACF;AAEJ;AAdgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA","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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkL37FZYJU_cjs = require('./chunk-L37FZYJU.cjs');
|
|
3
4
|
var chunkPRPG2T2E_cjs = require('./chunk-PRPG2T2E.cjs');
|
|
4
5
|
var chunkZLQHUZDU_cjs = require('./chunk-ZLQHUZDU.cjs');
|
|
5
6
|
var chunkDFTVB66S_cjs = require('./chunk-DFTVB66S.cjs');
|
|
@@ -7,11 +8,10 @@ var chunkIHAY6FO6_cjs = require('./chunk-IHAY6FO6.cjs');
|
|
|
7
8
|
var chunk77HQWEQ6_cjs = require('./chunk-77HQWEQ6.cjs');
|
|
8
9
|
var chunkF2CMIIOH_cjs = require('./chunk-F2CMIIOH.cjs');
|
|
9
10
|
var chunkYXBOAGIM_cjs = require('./chunk-YXBOAGIM.cjs');
|
|
10
|
-
var
|
|
11
|
+
var chunk3Z3A7FHA_cjs = require('./chunk-3Z3A7FHA.cjs');
|
|
11
12
|
var chunkS44PW6NK_cjs = require('./chunk-S44PW6NK.cjs');
|
|
12
13
|
var chunk33AMWFBZ_cjs = require('./chunk-33AMWFBZ.cjs');
|
|
13
14
|
require('./chunk-2SMCH62O.cjs');
|
|
14
|
-
var chunkL37FZYJU_cjs = require('./chunk-L37FZYJU.cjs');
|
|
15
15
|
var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
|
|
16
16
|
var React = require('react');
|
|
17
17
|
var lib = require('@djangocfg/ui-core/lib');
|
|
@@ -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" })
|
|
@@ -1401,6 +1401,94 @@ function MarkdownToolbar({ editor }) {
|
|
|
1401
1401
|
}
|
|
1402
1402
|
chunkWGEGR3DF_cjs.__name(MarkdownToolbar, "MarkdownToolbar");
|
|
1403
1403
|
|
|
1404
|
+
Object.defineProperty(exports, "ArrayFieldItemTemplate", {
|
|
1405
|
+
enumerable: true,
|
|
1406
|
+
get: function () { return chunkL37FZYJU_cjs.ArrayFieldItemTemplate; }
|
|
1407
|
+
});
|
|
1408
|
+
Object.defineProperty(exports, "ArrayFieldTemplate", {
|
|
1409
|
+
enumerable: true,
|
|
1410
|
+
get: function () { return chunkL37FZYJU_cjs.ArrayFieldTemplate; }
|
|
1411
|
+
});
|
|
1412
|
+
Object.defineProperty(exports, "BaseInputTemplate", {
|
|
1413
|
+
enumerable: true,
|
|
1414
|
+
get: function () { return chunkL37FZYJU_cjs.BaseInputTemplate; }
|
|
1415
|
+
});
|
|
1416
|
+
Object.defineProperty(exports, "CheckboxWidget", {
|
|
1417
|
+
enumerable: true,
|
|
1418
|
+
get: function () { return chunkL37FZYJU_cjs.CheckboxWidget; }
|
|
1419
|
+
});
|
|
1420
|
+
Object.defineProperty(exports, "ColorWidget", {
|
|
1421
|
+
enumerable: true,
|
|
1422
|
+
get: function () { return chunkL37FZYJU_cjs.ColorWidget; }
|
|
1423
|
+
});
|
|
1424
|
+
Object.defineProperty(exports, "ErrorListTemplate", {
|
|
1425
|
+
enumerable: true,
|
|
1426
|
+
get: function () { return chunkL37FZYJU_cjs.ErrorListTemplate; }
|
|
1427
|
+
});
|
|
1428
|
+
Object.defineProperty(exports, "FieldTemplate", {
|
|
1429
|
+
enumerable: true,
|
|
1430
|
+
get: function () { return chunkL37FZYJU_cjs.FieldTemplate; }
|
|
1431
|
+
});
|
|
1432
|
+
Object.defineProperty(exports, "JsonSchemaForm", {
|
|
1433
|
+
enumerable: true,
|
|
1434
|
+
get: function () { return chunkL37FZYJU_cjs.JsonSchemaForm; }
|
|
1435
|
+
});
|
|
1436
|
+
Object.defineProperty(exports, "NumberWidget", {
|
|
1437
|
+
enumerable: true,
|
|
1438
|
+
get: function () { return chunkL37FZYJU_cjs.NumberWidget; }
|
|
1439
|
+
});
|
|
1440
|
+
Object.defineProperty(exports, "ObjectFieldTemplate", {
|
|
1441
|
+
enumerable: true,
|
|
1442
|
+
get: function () { return chunkL37FZYJU_cjs.ObjectFieldTemplate; }
|
|
1443
|
+
});
|
|
1444
|
+
Object.defineProperty(exports, "SelectWidget", {
|
|
1445
|
+
enumerable: true,
|
|
1446
|
+
get: function () { return chunkL37FZYJU_cjs.SelectWidget; }
|
|
1447
|
+
});
|
|
1448
|
+
Object.defineProperty(exports, "SliderWidget", {
|
|
1449
|
+
enumerable: true,
|
|
1450
|
+
get: function () { return chunkL37FZYJU_cjs.SliderWidget; }
|
|
1451
|
+
});
|
|
1452
|
+
Object.defineProperty(exports, "SwitchWidget", {
|
|
1453
|
+
enumerable: true,
|
|
1454
|
+
get: function () { return chunkL37FZYJU_cjs.SwitchWidget; }
|
|
1455
|
+
});
|
|
1456
|
+
Object.defineProperty(exports, "TextWidget", {
|
|
1457
|
+
enumerable: true,
|
|
1458
|
+
get: function () { return chunkL37FZYJU_cjs.TextWidget; }
|
|
1459
|
+
});
|
|
1460
|
+
Object.defineProperty(exports, "getRequiredFields", {
|
|
1461
|
+
enumerable: true,
|
|
1462
|
+
get: function () { return chunkL37FZYJU_cjs.getRequiredFields; }
|
|
1463
|
+
});
|
|
1464
|
+
Object.defineProperty(exports, "hasRequiredFields", {
|
|
1465
|
+
enumerable: true,
|
|
1466
|
+
get: function () { return chunkL37FZYJU_cjs.hasRequiredFields; }
|
|
1467
|
+
});
|
|
1468
|
+
Object.defineProperty(exports, "mergeDefaults", {
|
|
1469
|
+
enumerable: true,
|
|
1470
|
+
get: function () { return chunkL37FZYJU_cjs.mergeDefaults; }
|
|
1471
|
+
});
|
|
1472
|
+
Object.defineProperty(exports, "normalizeFormData", {
|
|
1473
|
+
enumerable: true,
|
|
1474
|
+
get: function () { return chunkL37FZYJU_cjs.normalizeFormData; }
|
|
1475
|
+
});
|
|
1476
|
+
Object.defineProperty(exports, "safeJsonParse", {
|
|
1477
|
+
enumerable: true,
|
|
1478
|
+
get: function () { return chunkL37FZYJU_cjs.safeJsonParse; }
|
|
1479
|
+
});
|
|
1480
|
+
Object.defineProperty(exports, "safeJsonStringify", {
|
|
1481
|
+
enumerable: true,
|
|
1482
|
+
get: function () { return chunkL37FZYJU_cjs.safeJsonStringify; }
|
|
1483
|
+
});
|
|
1484
|
+
Object.defineProperty(exports, "validateRequiredFields", {
|
|
1485
|
+
enumerable: true,
|
|
1486
|
+
get: function () { return chunkL37FZYJU_cjs.validateRequiredFields; }
|
|
1487
|
+
});
|
|
1488
|
+
Object.defineProperty(exports, "validateSchema", {
|
|
1489
|
+
enumerable: true,
|
|
1490
|
+
get: function () { return chunkL37FZYJU_cjs.validateSchema; }
|
|
1491
|
+
});
|
|
1404
1492
|
Object.defineProperty(exports, "useLottie", {
|
|
1405
1493
|
enumerable: true,
|
|
1406
1494
|
get: function () { return chunkPRPG2T2E_cjs.useLottie; }
|
|
@@ -1583,127 +1671,127 @@ Object.defineProperty(exports, "createDemoTree", {
|
|
|
1583
1671
|
});
|
|
1584
1672
|
Object.defineProperty(exports, "DEFAULT_TREE_APPEARANCE", {
|
|
1585
1673
|
enumerable: true,
|
|
1586
|
-
get: function () { return
|
|
1674
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_APPEARANCE; }
|
|
1587
1675
|
});
|
|
1588
1676
|
Object.defineProperty(exports, "DEFAULT_TREE_LABELS", {
|
|
1589
1677
|
enumerable: true,
|
|
1590
|
-
get: function () { return
|
|
1678
|
+
get: function () { return chunk3Z3A7FHA_cjs.DEFAULT_TREE_LABELS; }
|
|
1591
1679
|
});
|
|
1592
1680
|
Object.defineProperty(exports, "Tree", {
|
|
1593
1681
|
enumerable: true,
|
|
1594
|
-
get: function () { return
|
|
1682
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
1595
1683
|
});
|
|
1596
1684
|
Object.defineProperty(exports, "TreeChevron", {
|
|
1597
1685
|
enumerable: true,
|
|
1598
|
-
get: function () { return
|
|
1686
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeChevron; }
|
|
1599
1687
|
});
|
|
1600
1688
|
Object.defineProperty(exports, "TreeContent", {
|
|
1601
1689
|
enumerable: true,
|
|
1602
|
-
get: function () { return
|
|
1690
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeContent; }
|
|
1603
1691
|
});
|
|
1604
1692
|
Object.defineProperty(exports, "TreeEmpty", {
|
|
1605
1693
|
enumerable: true,
|
|
1606
|
-
get: function () { return
|
|
1694
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeEmpty; }
|
|
1607
1695
|
});
|
|
1608
1696
|
Object.defineProperty(exports, "TreeIcon", {
|
|
1609
1697
|
enumerable: true,
|
|
1610
|
-
get: function () { return
|
|
1698
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIcon; }
|
|
1611
1699
|
});
|
|
1612
1700
|
Object.defineProperty(exports, "TreeIndentGuides", {
|
|
1613
1701
|
enumerable: true,
|
|
1614
|
-
get: function () { return
|
|
1702
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeIndentGuides; }
|
|
1615
1703
|
});
|
|
1616
1704
|
Object.defineProperty(exports, "TreeLabel", {
|
|
1617
1705
|
enumerable: true,
|
|
1618
|
-
get: function () { return
|
|
1706
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeLabel; }
|
|
1619
1707
|
});
|
|
1620
1708
|
Object.defineProperty(exports, "TreeProvider", {
|
|
1621
1709
|
enumerable: true,
|
|
1622
|
-
get: function () { return
|
|
1710
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeProvider; }
|
|
1623
1711
|
});
|
|
1624
1712
|
Object.defineProperty(exports, "TreeRoot", {
|
|
1625
1713
|
enumerable: true,
|
|
1626
|
-
get: function () { return
|
|
1714
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRoot; }
|
|
1627
1715
|
});
|
|
1628
1716
|
Object.defineProperty(exports, "TreeRow", {
|
|
1629
1717
|
enumerable: true,
|
|
1630
|
-
get: function () { return
|
|
1718
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeRow; }
|
|
1631
1719
|
});
|
|
1632
1720
|
Object.defineProperty(exports, "TreeSearchInput", {
|
|
1633
1721
|
enumerable: true,
|
|
1634
|
-
get: function () { return
|
|
1722
|
+
get: function () { return chunk3Z3A7FHA_cjs.TreeSearchInput; }
|
|
1635
1723
|
});
|
|
1636
1724
|
Object.defineProperty(exports, "appearanceToStyle", {
|
|
1637
1725
|
enumerable: true,
|
|
1638
|
-
get: function () { return
|
|
1726
|
+
get: function () { return chunk3Z3A7FHA_cjs.appearanceToStyle; }
|
|
1639
1727
|
});
|
|
1640
1728
|
Object.defineProperty(exports, "clearTreeState", {
|
|
1641
1729
|
enumerable: true,
|
|
1642
|
-
get: function () { return
|
|
1730
|
+
get: function () { return chunk3Z3A7FHA_cjs.clearTreeState; }
|
|
1643
1731
|
});
|
|
1644
1732
|
Object.defineProperty(exports, "createChildCache", {
|
|
1645
1733
|
enumerable: true,
|
|
1646
|
-
get: function () { return
|
|
1734
|
+
get: function () { return chunk3Z3A7FHA_cjs.createChildCache; }
|
|
1647
1735
|
});
|
|
1648
1736
|
Object.defineProperty(exports, "flattenTree", {
|
|
1649
1737
|
enumerable: true,
|
|
1650
|
-
get: function () { return
|
|
1738
|
+
get: function () { return chunk3Z3A7FHA_cjs.flattenTree; }
|
|
1651
1739
|
});
|
|
1652
1740
|
Object.defineProperty(exports, "loadTreeState", {
|
|
1653
1741
|
enumerable: true,
|
|
1654
|
-
get: function () { return
|
|
1742
|
+
get: function () { return chunk3Z3A7FHA_cjs.loadTreeState; }
|
|
1655
1743
|
});
|
|
1656
1744
|
Object.defineProperty(exports, "resolveAppearance", {
|
|
1657
1745
|
enumerable: true,
|
|
1658
|
-
get: function () { return
|
|
1746
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveAppearance; }
|
|
1659
1747
|
});
|
|
1660
1748
|
Object.defineProperty(exports, "resolveChildren", {
|
|
1661
1749
|
enumerable: true,
|
|
1662
|
-
get: function () { return
|
|
1750
|
+
get: function () { return chunk3Z3A7FHA_cjs.resolveChildren; }
|
|
1663
1751
|
});
|
|
1664
1752
|
Object.defineProperty(exports, "saveTreeState", {
|
|
1665
1753
|
enumerable: true,
|
|
1666
|
-
get: function () { return
|
|
1754
|
+
get: function () { return chunk3Z3A7FHA_cjs.saveTreeState; }
|
|
1667
1755
|
});
|
|
1668
1756
|
Object.defineProperty(exports, "useTreeActions", {
|
|
1669
1757
|
enumerable: true,
|
|
1670
|
-
get: function () { return
|
|
1758
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeActions; }
|
|
1671
1759
|
});
|
|
1672
1760
|
Object.defineProperty(exports, "useTreeContext", {
|
|
1673
1761
|
enumerable: true,
|
|
1674
|
-
get: function () { return
|
|
1762
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeContext; }
|
|
1675
1763
|
});
|
|
1676
1764
|
Object.defineProperty(exports, "useTreeExpansion", {
|
|
1677
1765
|
enumerable: true,
|
|
1678
|
-
get: function () { return
|
|
1766
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeExpansion; }
|
|
1679
1767
|
});
|
|
1680
1768
|
Object.defineProperty(exports, "useTreeFocus", {
|
|
1681
1769
|
enumerable: true,
|
|
1682
|
-
get: function () { return
|
|
1770
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeFocus; }
|
|
1683
1771
|
});
|
|
1684
1772
|
Object.defineProperty(exports, "useTreeKeyboard", {
|
|
1685
1773
|
enumerable: true,
|
|
1686
|
-
get: function () { return
|
|
1774
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeKeyboard; }
|
|
1687
1775
|
});
|
|
1688
1776
|
Object.defineProperty(exports, "useTreeLabels", {
|
|
1689
1777
|
enumerable: true,
|
|
1690
|
-
get: function () { return
|
|
1778
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeLabels; }
|
|
1691
1779
|
});
|
|
1692
1780
|
Object.defineProperty(exports, "useTreeRows", {
|
|
1693
1781
|
enumerable: true,
|
|
1694
|
-
get: function () { return
|
|
1782
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeRows; }
|
|
1695
1783
|
});
|
|
1696
1784
|
Object.defineProperty(exports, "useTreeSearch", {
|
|
1697
1785
|
enumerable: true,
|
|
1698
|
-
get: function () { return
|
|
1786
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSearch; }
|
|
1699
1787
|
});
|
|
1700
1788
|
Object.defineProperty(exports, "useTreeSelection", {
|
|
1701
1789
|
enumerable: true,
|
|
1702
|
-
get: function () { return
|
|
1790
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeSelection; }
|
|
1703
1791
|
});
|
|
1704
1792
|
Object.defineProperty(exports, "useTreeTypeAhead", {
|
|
1705
1793
|
enumerable: true,
|
|
1706
|
-
get: function () { return
|
|
1794
|
+
get: function () { return chunk3Z3A7FHA_cjs.useTreeTypeAhead; }
|
|
1707
1795
|
});
|
|
1708
1796
|
Object.defineProperty(exports, "MarkdownMessage", {
|
|
1709
1797
|
enumerable: true,
|
|
@@ -1729,94 +1817,6 @@ Object.defineProperty(exports, "JsonTree", {
|
|
|
1729
1817
|
enumerable: true,
|
|
1730
1818
|
get: function () { return chunk33AMWFBZ_cjs.JsonTree_default; }
|
|
1731
1819
|
});
|
|
1732
|
-
Object.defineProperty(exports, "ArrayFieldItemTemplate", {
|
|
1733
|
-
enumerable: true,
|
|
1734
|
-
get: function () { return chunkL37FZYJU_cjs.ArrayFieldItemTemplate; }
|
|
1735
|
-
});
|
|
1736
|
-
Object.defineProperty(exports, "ArrayFieldTemplate", {
|
|
1737
|
-
enumerable: true,
|
|
1738
|
-
get: function () { return chunkL37FZYJU_cjs.ArrayFieldTemplate; }
|
|
1739
|
-
});
|
|
1740
|
-
Object.defineProperty(exports, "BaseInputTemplate", {
|
|
1741
|
-
enumerable: true,
|
|
1742
|
-
get: function () { return chunkL37FZYJU_cjs.BaseInputTemplate; }
|
|
1743
|
-
});
|
|
1744
|
-
Object.defineProperty(exports, "CheckboxWidget", {
|
|
1745
|
-
enumerable: true,
|
|
1746
|
-
get: function () { return chunkL37FZYJU_cjs.CheckboxWidget; }
|
|
1747
|
-
});
|
|
1748
|
-
Object.defineProperty(exports, "ColorWidget", {
|
|
1749
|
-
enumerable: true,
|
|
1750
|
-
get: function () { return chunkL37FZYJU_cjs.ColorWidget; }
|
|
1751
|
-
});
|
|
1752
|
-
Object.defineProperty(exports, "ErrorListTemplate", {
|
|
1753
|
-
enumerable: true,
|
|
1754
|
-
get: function () { return chunkL37FZYJU_cjs.ErrorListTemplate; }
|
|
1755
|
-
});
|
|
1756
|
-
Object.defineProperty(exports, "FieldTemplate", {
|
|
1757
|
-
enumerable: true,
|
|
1758
|
-
get: function () { return chunkL37FZYJU_cjs.FieldTemplate; }
|
|
1759
|
-
});
|
|
1760
|
-
Object.defineProperty(exports, "JsonSchemaForm", {
|
|
1761
|
-
enumerable: true,
|
|
1762
|
-
get: function () { return chunkL37FZYJU_cjs.JsonSchemaForm; }
|
|
1763
|
-
});
|
|
1764
|
-
Object.defineProperty(exports, "NumberWidget", {
|
|
1765
|
-
enumerable: true,
|
|
1766
|
-
get: function () { return chunkL37FZYJU_cjs.NumberWidget; }
|
|
1767
|
-
});
|
|
1768
|
-
Object.defineProperty(exports, "ObjectFieldTemplate", {
|
|
1769
|
-
enumerable: true,
|
|
1770
|
-
get: function () { return chunkL37FZYJU_cjs.ObjectFieldTemplate; }
|
|
1771
|
-
});
|
|
1772
|
-
Object.defineProperty(exports, "SelectWidget", {
|
|
1773
|
-
enumerable: true,
|
|
1774
|
-
get: function () { return chunkL37FZYJU_cjs.SelectWidget; }
|
|
1775
|
-
});
|
|
1776
|
-
Object.defineProperty(exports, "SliderWidget", {
|
|
1777
|
-
enumerable: true,
|
|
1778
|
-
get: function () { return chunkL37FZYJU_cjs.SliderWidget; }
|
|
1779
|
-
});
|
|
1780
|
-
Object.defineProperty(exports, "SwitchWidget", {
|
|
1781
|
-
enumerable: true,
|
|
1782
|
-
get: function () { return chunkL37FZYJU_cjs.SwitchWidget; }
|
|
1783
|
-
});
|
|
1784
|
-
Object.defineProperty(exports, "TextWidget", {
|
|
1785
|
-
enumerable: true,
|
|
1786
|
-
get: function () { return chunkL37FZYJU_cjs.TextWidget; }
|
|
1787
|
-
});
|
|
1788
|
-
Object.defineProperty(exports, "getRequiredFields", {
|
|
1789
|
-
enumerable: true,
|
|
1790
|
-
get: function () { return chunkL37FZYJU_cjs.getRequiredFields; }
|
|
1791
|
-
});
|
|
1792
|
-
Object.defineProperty(exports, "hasRequiredFields", {
|
|
1793
|
-
enumerable: true,
|
|
1794
|
-
get: function () { return chunkL37FZYJU_cjs.hasRequiredFields; }
|
|
1795
|
-
});
|
|
1796
|
-
Object.defineProperty(exports, "mergeDefaults", {
|
|
1797
|
-
enumerable: true,
|
|
1798
|
-
get: function () { return chunkL37FZYJU_cjs.mergeDefaults; }
|
|
1799
|
-
});
|
|
1800
|
-
Object.defineProperty(exports, "normalizeFormData", {
|
|
1801
|
-
enumerable: true,
|
|
1802
|
-
get: function () { return chunkL37FZYJU_cjs.normalizeFormData; }
|
|
1803
|
-
});
|
|
1804
|
-
Object.defineProperty(exports, "safeJsonParse", {
|
|
1805
|
-
enumerable: true,
|
|
1806
|
-
get: function () { return chunkL37FZYJU_cjs.safeJsonParse; }
|
|
1807
|
-
});
|
|
1808
|
-
Object.defineProperty(exports, "safeJsonStringify", {
|
|
1809
|
-
enumerable: true,
|
|
1810
|
-
get: function () { return chunkL37FZYJU_cjs.safeJsonStringify; }
|
|
1811
|
-
});
|
|
1812
|
-
Object.defineProperty(exports, "validateRequiredFields", {
|
|
1813
|
-
enumerable: true,
|
|
1814
|
-
get: function () { return chunkL37FZYJU_cjs.validateRequiredFields; }
|
|
1815
|
-
});
|
|
1816
|
-
Object.defineProperty(exports, "validateSchema", {
|
|
1817
|
-
enumerable: true,
|
|
1818
|
-
get: function () { return chunkL37FZYJU_cjs.validateSchema; }
|
|
1819
|
-
});
|
|
1820
1820
|
exports.CardLoadingFallback = CardLoadingFallback;
|
|
1821
1821
|
exports.CronScheduler = CronScheduler;
|
|
1822
1822
|
exports.DiffEditor = DiffEditor;
|