@xenosystem/blocks 0.13.0 → 0.13.1
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/chunk-GQWAIPDF.js +125 -0
- package/dist/{chunk-OCEZTO2D.js → chunk-J5XEAON6.js} +52 -1
- package/dist/data/index.js +169 -295
- package/dist/edit/index.js +47 -142
- package/dist/icons/index.d.ts +20 -2
- package/dist/icons/index.js +40 -3
- package/dist/ops/index.js +140 -199
- package/dist/time/index.js +25 -44
- package/package.json +1 -1
package/dist/edit/index.js
CHANGED
|
@@ -13,11 +13,19 @@ import {
|
|
|
13
13
|
StopwatchIcon,
|
|
14
14
|
SwapIcon,
|
|
15
15
|
TrashIcon,
|
|
16
|
+
TreeIcon,
|
|
16
17
|
UndoIcon,
|
|
17
18
|
VisibilityIcon,
|
|
18
19
|
XIcon,
|
|
19
20
|
XIcon2
|
|
20
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-J5XEAON6.js";
|
|
22
|
+
import {
|
|
23
|
+
CaseGlyph,
|
|
24
|
+
ChevronGlyph,
|
|
25
|
+
CollapseGlyph,
|
|
26
|
+
ExpandGlyph,
|
|
27
|
+
RefreshGlyph
|
|
28
|
+
} from "../chunk-GQWAIPDF.js";
|
|
21
29
|
import "../chunk-2KG3PWR4.js";
|
|
22
30
|
|
|
23
31
|
// src/edit/layers/panel.ts
|
|
@@ -9347,12 +9355,7 @@ import {
|
|
|
9347
9355
|
} from "@xenosystem/components/chrome";
|
|
9348
9356
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
9349
9357
|
function CaseIcon() {
|
|
9350
|
-
return /* @__PURE__ */
|
|
9351
|
-
/* @__PURE__ */ jsx9("path", { d: "m3 15 4-8 4 8" }),
|
|
9352
|
-
/* @__PURE__ */ jsx9("path", { d: "M4 13h6" }),
|
|
9353
|
-
/* @__PURE__ */ jsx9("circle", { cx: "18", cy: "12", r: "3" }),
|
|
9354
|
-
/* @__PURE__ */ jsx9("path", { d: "M21 9v6" })
|
|
9355
|
-
] });
|
|
9358
|
+
return /* @__PURE__ */ jsx9(CaseGlyph, { size: 12 });
|
|
9356
9359
|
}
|
|
9357
9360
|
function WordIcon() {
|
|
9358
9361
|
return /* @__PURE__ */ jsxs8("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [
|
|
@@ -13189,105 +13192,7 @@ import {
|
|
|
13189
13192
|
ToolbarGroup as ToolbarGroup5
|
|
13190
13193
|
} from "@xenosystem/components/chrome";
|
|
13191
13194
|
import { computeWindow as computeWindow3 } from "@xenosystem/tree-core";
|
|
13192
|
-
|
|
13193
|
-
// src/edit/tree/react/icons.tsx
|
|
13194
13195
|
import { Fragment as Fragment8, jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
13195
|
-
function Svg({ children, size = 11 }) {
|
|
13196
|
-
return /* @__PURE__ */ jsx12(
|
|
13197
|
-
"svg",
|
|
13198
|
-
{
|
|
13199
|
-
width: size,
|
|
13200
|
-
height: size,
|
|
13201
|
-
viewBox: "0 0 24 24",
|
|
13202
|
-
fill: "none",
|
|
13203
|
-
stroke: "currentColor",
|
|
13204
|
-
strokeWidth: "1.5",
|
|
13205
|
-
strokeLinecap: "round",
|
|
13206
|
-
strokeLinejoin: "round",
|
|
13207
|
-
"aria-hidden": "true",
|
|
13208
|
-
children
|
|
13209
|
-
}
|
|
13210
|
-
);
|
|
13211
|
-
}
|
|
13212
|
-
function ChevronGlyph() {
|
|
13213
|
-
return /* @__PURE__ */ jsx12(Svg, { size: 9, children: /* @__PURE__ */ jsx12("path", { d: "m9 18 6-6-6-6" }) });
|
|
13214
|
-
}
|
|
13215
|
-
function ExpandGlyph() {
|
|
13216
|
-
return /* @__PURE__ */ jsxs11(Svg, { children: [
|
|
13217
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 22v-6" }),
|
|
13218
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 8V2" }),
|
|
13219
|
-
/* @__PURE__ */ jsx12("path", { d: "m9 5 3-3 3 3" }),
|
|
13220
|
-
/* @__PURE__ */ jsx12("path", { d: "m9 19 3 3 3-3" }),
|
|
13221
|
-
/* @__PURE__ */ jsx12("path", { d: "M4 12H2" }),
|
|
13222
|
-
/* @__PURE__ */ jsx12("path", { d: "M10 12H8" }),
|
|
13223
|
-
/* @__PURE__ */ jsx12("path", { d: "M16 12h-2" }),
|
|
13224
|
-
/* @__PURE__ */ jsx12("path", { d: "M22 12h-2" })
|
|
13225
|
-
] });
|
|
13226
|
-
}
|
|
13227
|
-
function CollapseGlyph() {
|
|
13228
|
-
return /* @__PURE__ */ jsxs11(Svg, { children: [
|
|
13229
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 22v-6" }),
|
|
13230
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 8V2" }),
|
|
13231
|
-
/* @__PURE__ */ jsx12("path", { d: "m9 13 3 3 3-3" }),
|
|
13232
|
-
/* @__PURE__ */ jsx12("path", { d: "m9 11 3-3 3 3" }),
|
|
13233
|
-
/* @__PURE__ */ jsx12("path", { d: "M4 12H2" }),
|
|
13234
|
-
/* @__PURE__ */ jsx12("path", { d: "M22 12h-2" })
|
|
13235
|
-
] });
|
|
13236
|
-
}
|
|
13237
|
-
function RefreshGlyph() {
|
|
13238
|
-
return /* @__PURE__ */ jsxs11(Svg, { children: [
|
|
13239
|
-
/* @__PURE__ */ jsx12("path", { d: "M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
|
|
13240
|
-
/* @__PURE__ */ jsx12("path", { d: "M3 3v5h5" }),
|
|
13241
|
-
/* @__PURE__ */ jsx12("path", { d: "M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16" }),
|
|
13242
|
-
/* @__PURE__ */ jsx12("path", { d: "M16 16h5v5" })
|
|
13243
|
-
] });
|
|
13244
|
-
}
|
|
13245
|
-
var PATHS = {
|
|
13246
|
-
folder: /* @__PURE__ */ jsx12("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }),
|
|
13247
|
-
file: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13248
|
-
/* @__PURE__ */ jsx12("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
|
|
13249
|
-
/* @__PURE__ */ jsx12("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
|
|
13250
|
-
] }),
|
|
13251
|
-
"folder-tree": /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13252
|
-
/* @__PURE__ */ jsx12("path", { d: "M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z" }),
|
|
13253
|
-
/* @__PURE__ */ jsx12("path", { d: "M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2a1 1 0 0 0-.8-.4h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z" }),
|
|
13254
|
-
/* @__PURE__ */ jsx12("path", { d: "M3 5a2 2 0 0 0 2 2h3" }),
|
|
13255
|
-
/* @__PURE__ */ jsx12("path", { d: "M3 3v13a2 2 0 0 0 2 2h3" })
|
|
13256
|
-
] }),
|
|
13257
|
-
box: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13258
|
-
/* @__PURE__ */ jsx12("path", { d: "M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" }),
|
|
13259
|
-
/* @__PURE__ */ jsx12("path", { d: "m3.3 7 8.7 5 8.7-5" }),
|
|
13260
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 22V12" })
|
|
13261
|
-
] }),
|
|
13262
|
-
component: /* @__PURE__ */ jsx12("path", { d: "m12 2 4 4-4 4-4-4Zm0 12 4 4-4 4-4-4ZM2 12l4-4 4 4-4 4Zm12 0 4-4 4 4-4 4Z" }),
|
|
13263
|
-
"file-text": /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13264
|
-
/* @__PURE__ */ jsx12("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
|
|
13265
|
-
/* @__PURE__ */ jsx12("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" }),
|
|
13266
|
-
/* @__PURE__ */ jsx12("path", { d: "M8 13h8M8 17h5" })
|
|
13267
|
-
] }),
|
|
13268
|
-
heading: /* @__PURE__ */ jsx12(Fragment8, { children: /* @__PURE__ */ jsx12("path", { d: "M6 4v16M18 4v16M6 12h12" }) }),
|
|
13269
|
-
bot: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13270
|
-
/* @__PURE__ */ jsx12("rect", { x: "3", y: "8", width: "18", height: "12", rx: "2" }),
|
|
13271
|
-
/* @__PURE__ */ jsx12("path", { d: "M12 4v4M8 14h.01M16 14h.01" })
|
|
13272
|
-
] }),
|
|
13273
|
-
link: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13274
|
-
/* @__PURE__ */ jsx12("path", { d: "M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7-7l-1.8 1.7" }),
|
|
13275
|
-
/* @__PURE__ */ jsx12("path", { d: "M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7 7l1.8-1.7" })
|
|
13276
|
-
] }),
|
|
13277
|
-
"link-2-off": /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13278
|
-
/* @__PURE__ */ jsx12("path", { d: "M9 17H7A5 5 0 0 1 7 7" }),
|
|
13279
|
-
/* @__PURE__ */ jsx12("path", { d: "M15 7h2a5 5 0 0 1 4 8" }),
|
|
13280
|
-
/* @__PURE__ */ jsx12("path", { d: "M8 12h4" }),
|
|
13281
|
-
/* @__PURE__ */ jsx12("path", { d: "m2 2 20 20" })
|
|
13282
|
-
] }),
|
|
13283
|
-
"circle-dot": /* @__PURE__ */ jsx12("rect", { x: "9", y: "9", width: "6", height: "6", rx: "1" })
|
|
13284
|
-
};
|
|
13285
|
-
function TreeIcon({ name, size = 11 }) {
|
|
13286
|
-
return /* @__PURE__ */ jsx12(Svg, { size, children: PATHS[name] ?? PATHS["circle-dot"] });
|
|
13287
|
-
}
|
|
13288
|
-
|
|
13289
|
-
// src/edit/tree/react/TreePanelView.tsx
|
|
13290
|
-
import { Fragment as Fragment9, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
13291
13196
|
function TreePanelView({
|
|
13292
13197
|
controller,
|
|
13293
13198
|
rowHeight = 24,
|
|
@@ -13319,13 +13224,13 @@ function TreePanelView({
|
|
|
13319
13224
|
const sourceState = source?.sourceState ?? "idle";
|
|
13320
13225
|
const body = (() => {
|
|
13321
13226
|
if (!source || sourceState === "idle") {
|
|
13322
|
-
return /* @__PURE__ */
|
|
13227
|
+
return /* @__PURE__ */ jsx12(EmptyState8, { title: "No source", hint: emptyHint ?? "Connect a source to browse it." });
|
|
13323
13228
|
}
|
|
13324
13229
|
if (sourceState === "loading" && state.rows.length === 0) {
|
|
13325
|
-
return /* @__PURE__ */
|
|
13230
|
+
return /* @__PURE__ */ jsx12(LoadingState, { label: source.sourceMessage ?? "Loading\u2026" });
|
|
13326
13231
|
}
|
|
13327
13232
|
if (sourceState === "error" || sourceState === "denied") {
|
|
13328
|
-
return /* @__PURE__ */
|
|
13233
|
+
return /* @__PURE__ */ jsx12(
|
|
13329
13234
|
ErrorState,
|
|
13330
13235
|
{
|
|
13331
13236
|
title: sourceState === "denied" ? "Access not granted" : "Could not read this source",
|
|
@@ -13336,7 +13241,7 @@ function TreePanelView({
|
|
|
13336
13241
|
);
|
|
13337
13242
|
}
|
|
13338
13243
|
if (state.rows.length === 0) {
|
|
13339
|
-
return state.filter ? /* @__PURE__ */
|
|
13244
|
+
return state.filter ? /* @__PURE__ */ jsx12(EmptyState8, { title: "No matches", hint: `Nothing matches \u201C${state.filter}\u201D.` }) : /* @__PURE__ */ jsx12(
|
|
13340
13245
|
EmptyState8,
|
|
13341
13246
|
{
|
|
13342
13247
|
title: "Nothing here",
|
|
@@ -13352,7 +13257,7 @@ function TreePanelView({
|
|
|
13352
13257
|
overscan
|
|
13353
13258
|
});
|
|
13354
13259
|
const slice = state.rows.slice(window2.startIndex, window2.endIndex);
|
|
13355
|
-
return /* @__PURE__ */
|
|
13260
|
+
return /* @__PURE__ */ jsx12(ScrollArea6, { children: /* @__PURE__ */ jsx12(
|
|
13356
13261
|
"div",
|
|
13357
13262
|
{
|
|
13358
13263
|
ref: scrollRef,
|
|
@@ -13366,7 +13271,7 @@ function TreePanelView({
|
|
|
13366
13271
|
e.preventDefault();
|
|
13367
13272
|
}
|
|
13368
13273
|
},
|
|
13369
|
-
children: /* @__PURE__ */
|
|
13274
|
+
children: /* @__PURE__ */ jsx12("div", { style: { height: window2.totalHeight, position: "relative" }, children: /* @__PURE__ */ jsx12("div", { style: { transform: `translateY(${window2.offsetTop}px)` }, children: slice.map((row2) => /* @__PURE__ */ jsx12(
|
|
13370
13275
|
TreeRowView,
|
|
13371
13276
|
{
|
|
13372
13277
|
row: row2,
|
|
@@ -13382,11 +13287,11 @@ function TreePanelView({
|
|
|
13382
13287
|
}
|
|
13383
13288
|
) });
|
|
13384
13289
|
})();
|
|
13385
|
-
return /* @__PURE__ */
|
|
13386
|
-
/* @__PURE__ */
|
|
13290
|
+
return /* @__PURE__ */ jsxs11("div", { style: { display: "flex", flexDirection: "column", height: "100%", minHeight: 0 }, children: [
|
|
13291
|
+
/* @__PURE__ */ jsx12(
|
|
13387
13292
|
Toolbar7,
|
|
13388
13293
|
{
|
|
13389
|
-
left: showSearch ? /* @__PURE__ */
|
|
13294
|
+
left: showSearch ? /* @__PURE__ */ jsx12(
|
|
13390
13295
|
SearchField5,
|
|
13391
13296
|
{
|
|
13392
13297
|
value: state.filter,
|
|
@@ -13394,22 +13299,22 @@ function TreePanelView({
|
|
|
13394
13299
|
placeholder: "Filter\u2026"
|
|
13395
13300
|
}
|
|
13396
13301
|
) : void 0,
|
|
13397
|
-
right: /* @__PURE__ */
|
|
13398
|
-
/* @__PURE__ */
|
|
13399
|
-
/* @__PURE__ */
|
|
13302
|
+
right: /* @__PURE__ */ jsxs11(ToolbarGroup5, { end: true, children: [
|
|
13303
|
+
/* @__PURE__ */ jsx12(IconButton7, { icon: /* @__PURE__ */ jsx12(ExpandGlyph, {}), label: "Expand all", onClick: () => controller.expandAll() }),
|
|
13304
|
+
/* @__PURE__ */ jsx12(
|
|
13400
13305
|
IconButton7,
|
|
13401
13306
|
{
|
|
13402
|
-
icon: /* @__PURE__ */
|
|
13307
|
+
icon: /* @__PURE__ */ jsx12(CollapseGlyph, {}),
|
|
13403
13308
|
label: "Collapse all",
|
|
13404
13309
|
onClick: () => controller.collapseAll()
|
|
13405
13310
|
}
|
|
13406
13311
|
),
|
|
13407
|
-
/* @__PURE__ */
|
|
13312
|
+
/* @__PURE__ */ jsx12(IconButton7, { icon: /* @__PURE__ */ jsx12(RefreshGlyph, {}), label: "Refresh", onClick: () => controller.refresh() })
|
|
13408
13313
|
] })
|
|
13409
13314
|
}
|
|
13410
13315
|
),
|
|
13411
13316
|
body,
|
|
13412
|
-
/* @__PURE__ */
|
|
13317
|
+
/* @__PURE__ */ jsx12(
|
|
13413
13318
|
StatusBar8,
|
|
13414
13319
|
{
|
|
13415
13320
|
left: `${state.rows.length} item${state.rows.length === 1 ? "" : "s"}`,
|
|
@@ -13431,7 +13336,7 @@ function TreeRowView({
|
|
|
13431
13336
|
const selected = state.selection.includes(row2.id);
|
|
13432
13337
|
const renaming = state.renaming?.id === row2.id ? state.renaming : null;
|
|
13433
13338
|
const drop = state.drag?.targetId === row2.id ? state.drag : null;
|
|
13434
|
-
const twisty = row2.container ? /* @__PURE__ */
|
|
13339
|
+
const twisty = row2.container ? /* @__PURE__ */ jsx12(
|
|
13435
13340
|
"span",
|
|
13436
13341
|
{
|
|
13437
13342
|
role: "button",
|
|
@@ -13451,13 +13356,13 @@ function TreeRowView({
|
|
|
13451
13356
|
transition: "transform 80ms ease",
|
|
13452
13357
|
opacity: 0.7
|
|
13453
13358
|
},
|
|
13454
|
-
children: /* @__PURE__ */
|
|
13359
|
+
children: /* @__PURE__ */ jsx12(ChevronGlyph, { size: 9 })
|
|
13455
13360
|
}
|
|
13456
13361
|
) : (
|
|
13457
13362
|
// A leaf still reserves the twisty column, so labels stay in ONE column across mixed rows.
|
|
13458
|
-
/* @__PURE__ */
|
|
13363
|
+
/* @__PURE__ */ jsx12("span", { style: { width: 12, flex: "0 0 auto" } })
|
|
13459
13364
|
);
|
|
13460
|
-
return /* @__PURE__ */
|
|
13365
|
+
return /* @__PURE__ */ jsx12(
|
|
13461
13366
|
"div",
|
|
13462
13367
|
{
|
|
13463
13368
|
style: {
|
|
@@ -13468,7 +13373,7 @@ function TreeRowView({
|
|
|
13468
13373
|
boxShadow: drop?.position === "into" ? "inset 0 0 0 1px var(--xeno-active)" : drop?.position === "before" ? "inset 0 1px 0 0 var(--xeno-active)" : drop?.position === "after" ? "inset 0 -1px 0 0 var(--xeno-active)" : void 0
|
|
13469
13374
|
},
|
|
13470
13375
|
title: drop?.reason,
|
|
13471
|
-
children: /* @__PURE__ */
|
|
13376
|
+
children: /* @__PURE__ */ jsx12(
|
|
13472
13377
|
Row4,
|
|
13473
13378
|
{
|
|
13474
13379
|
role: "treeitem",
|
|
@@ -13504,11 +13409,11 @@ function TreeRowView({
|
|
|
13504
13409
|
onPointerUp: () => {
|
|
13505
13410
|
if (state.drag) controller.endDrag();
|
|
13506
13411
|
},
|
|
13507
|
-
icon: /* @__PURE__ */
|
|
13412
|
+
icon: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13508
13413
|
twisty,
|
|
13509
|
-
/* @__PURE__ */
|
|
13414
|
+
/* @__PURE__ */ jsx12(NodeIcon, { icon: node.icon ?? defaultIconFor(node.kind) })
|
|
13510
13415
|
] }),
|
|
13511
|
-
label: renaming ? /* @__PURE__ */
|
|
13416
|
+
label: renaming ? /* @__PURE__ */ jsx12(
|
|
13512
13417
|
"input",
|
|
13513
13418
|
{
|
|
13514
13419
|
autoFocus: true,
|
|
@@ -13533,19 +13438,19 @@ function TreeRowView({
|
|
|
13533
13438
|
}
|
|
13534
13439
|
}
|
|
13535
13440
|
) : node.label,
|
|
13536
|
-
meta: /* @__PURE__ */
|
|
13537
|
-
trailing: /* @__PURE__ */
|
|
13538
|
-
columns?.map((columnId) => /* @__PURE__ */
|
|
13539
|
-
node.glyphs?.map((glyph) => /* @__PURE__ */
|
|
13441
|
+
meta: /* @__PURE__ */ jsx12(ChildStateChip, { row: row2, controller }),
|
|
13442
|
+
trailing: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13443
|
+
columns?.map((columnId) => /* @__PURE__ */ jsx12("span", { style: { opacity: 0.7, fontVariantNumeric: "tabular-nums" }, children: node.columns?.[columnId] ?? "" }, columnId)),
|
|
13444
|
+
node.glyphs?.map((glyph) => /* @__PURE__ */ jsx12("span", { title: glyph.title, style: { display: "flex", opacity: 0.7 }, children: /* @__PURE__ */ jsx12(NodeIcon, { icon: glyph.icon }) }, glyph.id)),
|
|
13540
13445
|
node.badges?.map((badge) => (
|
|
13541
13446
|
// Opaque: the host formatted the text, the panel only places it.
|
|
13542
|
-
/* @__PURE__ */
|
|
13447
|
+
/* @__PURE__ */ jsx12(Badge7, { tone: badge.tone, className: badge.title ? void 0 : void 0, children: badge.text }, badge.id)
|
|
13543
13448
|
)),
|
|
13544
|
-
node.actions?.map((action) => /* @__PURE__ */
|
|
13449
|
+
node.actions?.map((action) => /* @__PURE__ */ jsx12(
|
|
13545
13450
|
IconButton7,
|
|
13546
13451
|
{
|
|
13547
13452
|
size: "sm",
|
|
13548
|
-
icon: /* @__PURE__ */
|
|
13453
|
+
icon: /* @__PURE__ */ jsx12(NodeIcon, { icon: action.icon }),
|
|
13549
13454
|
label: action.label,
|
|
13550
13455
|
disabled: action.disabled,
|
|
13551
13456
|
onClick: () => controller.runAction(row2.id, action.id)
|
|
@@ -13564,14 +13469,14 @@ function ChildStateChip({
|
|
|
13564
13469
|
}) {
|
|
13565
13470
|
if (!row2.container) return null;
|
|
13566
13471
|
if (row2.childState === "loading") {
|
|
13567
|
-
return /* @__PURE__ */
|
|
13472
|
+
return /* @__PURE__ */ jsx12("span", { style: { opacity: 0.5, fontSize: 9 }, children: "loading\u2026" });
|
|
13568
13473
|
}
|
|
13569
13474
|
if (row2.childState === "error") {
|
|
13570
13475
|
const error = row2.node.error;
|
|
13571
|
-
return /* @__PURE__ */
|
|
13476
|
+
return /* @__PURE__ */ jsx12(Badge7, { tone: "error", children: error?.code === "denied" ? "no access" : error?.code ?? "failed" });
|
|
13572
13477
|
}
|
|
13573
13478
|
if (row2.node.hasMore && row2.expanded) {
|
|
13574
|
-
return /* @__PURE__ */
|
|
13479
|
+
return /* @__PURE__ */ jsx12(
|
|
13575
13480
|
"span",
|
|
13576
13481
|
{
|
|
13577
13482
|
role: "button",
|
|
@@ -13585,18 +13490,18 @@ function ChildStateChip({
|
|
|
13585
13490
|
);
|
|
13586
13491
|
}
|
|
13587
13492
|
if (row2.node.truncatedAt !== void 0) {
|
|
13588
|
-
return /* @__PURE__ */
|
|
13493
|
+
return /* @__PURE__ */ jsx12(Badge7, { tone: "warning", children: `first ${row2.node.truncatedAt}` });
|
|
13589
13494
|
}
|
|
13590
13495
|
if (row2.expanded && isEmptyContainer(row2.node)) {
|
|
13591
|
-
return /* @__PURE__ */
|
|
13496
|
+
return /* @__PURE__ */ jsx12("span", { style: { opacity: 0.4, fontSize: 9 }, children: "empty" });
|
|
13592
13497
|
}
|
|
13593
13498
|
return null;
|
|
13594
13499
|
}
|
|
13595
13500
|
function NodeIcon({ icon }) {
|
|
13596
13501
|
if (icon.kind === "text") {
|
|
13597
|
-
return /* @__PURE__ */
|
|
13502
|
+
return /* @__PURE__ */ jsx12("span", { style: { fontSize: 11, lineHeight: 1, display: "flex", alignItems: "center" }, children: icon.value });
|
|
13598
13503
|
}
|
|
13599
|
-
return /* @__PURE__ */
|
|
13504
|
+
return /* @__PURE__ */ jsx12(TreeIcon, { name: icon.name });
|
|
13600
13505
|
}
|
|
13601
13506
|
|
|
13602
13507
|
// src/edit/tree/panel.ts
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -1,4 +1,22 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
1
|
+
import { ReactNode, ComponentType } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The shared glyphs — ONE source for the strokes that used to be copied per block (`Refresh` was
|
|
5
|
+
* byte-identical in three files, `X` in three, `Plus` in two). Lucide geometry at strokeWidth 1.5,
|
|
6
|
+
* rectangles and lines only: no circles anywhere (DESIGN_SYSTEM §3). Every block-local `icons.tsx`
|
|
7
|
+
* re-exports from here under its own name, so no view changed when the copies collapsed.
|
|
8
|
+
*
|
|
9
|
+
* Interim, like the registry beside it: when `@xenosystem/elements-react` ships the icon set, this
|
|
10
|
+
* file becomes re-exports and the blocks are untouched.
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** The frame every glyph draws in. */
|
|
16
|
+
declare function Svg({ children, size }: {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
size?: number;
|
|
19
|
+
}): ReactNode;
|
|
2
20
|
|
|
3
21
|
/**
|
|
4
22
|
* `@xenosystem/blocks/icons` — ONE glyph registry for every declared block, keyed `icons/<Name>`.
|
|
@@ -20,4 +38,4 @@ declare const ICONS: Readonly<Record<`icons/${string}`, ComponentType<any>>>;
|
|
|
20
38
|
/** The registry names, for a host's registry check and the seen-before-used gate. */
|
|
21
39
|
declare const ICON_UNITS: readonly string[];
|
|
22
40
|
|
|
23
|
-
export { ICONS, ICON_UNITS };
|
|
41
|
+
export { ICONS, ICON_UNITS, Svg };
|
package/dist/icons/index.js
CHANGED
|
@@ -28,10 +28,29 @@ import {
|
|
|
28
28
|
StopwatchIcon,
|
|
29
29
|
SwapIcon,
|
|
30
30
|
TrashIcon,
|
|
31
|
+
TreeIcon,
|
|
31
32
|
UndoIcon,
|
|
32
33
|
VisibilityIcon,
|
|
33
34
|
XIcon2 as XIcon
|
|
34
|
-
} from "../chunk-
|
|
35
|
+
} from "../chunk-J5XEAON6.js";
|
|
36
|
+
import {
|
|
37
|
+
CancelGlyph,
|
|
38
|
+
CaseGlyph,
|
|
39
|
+
ChevronGlyph,
|
|
40
|
+
ClearGlyph,
|
|
41
|
+
CollapseGlyph,
|
|
42
|
+
CopyGlyph,
|
|
43
|
+
DownloadGlyph,
|
|
44
|
+
ExpandGlyph,
|
|
45
|
+
PlugGlyph,
|
|
46
|
+
PlusGlyph,
|
|
47
|
+
RefreshGlyph,
|
|
48
|
+
RetryGlyph,
|
|
49
|
+
SortAscGlyph,
|
|
50
|
+
SortDescGlyph,
|
|
51
|
+
Svg,
|
|
52
|
+
XGlyph
|
|
53
|
+
} from "../chunk-GQWAIPDF.js";
|
|
35
54
|
import "../chunk-2KG3PWR4.js";
|
|
36
55
|
|
|
37
56
|
// src/icons/index.ts
|
|
@@ -70,10 +89,28 @@ var ICONS = Object.freeze({
|
|
|
70
89
|
"icons/LockState": LockStateIcon,
|
|
71
90
|
// color
|
|
72
91
|
"icons/Swap": SwapIcon,
|
|
73
|
-
"icons/Eyedropper": EyedropperIcon
|
|
92
|
+
"icons/Eyedropper": EyedropperIcon,
|
|
93
|
+
// shared (src/icons/glyphs.tsx — the one source; the data/ops/time blocks re-export these)
|
|
94
|
+
"icons/Refresh": RefreshGlyph,
|
|
95
|
+
"icons/Close": XGlyph,
|
|
96
|
+
"icons/Plus": PlusGlyph,
|
|
97
|
+
"icons/Chevron": ChevronGlyph,
|
|
98
|
+
"icons/Download": DownloadGlyph,
|
|
99
|
+
"icons/Plug": PlugGlyph,
|
|
100
|
+
"icons/SortAsc": SortAscGlyph,
|
|
101
|
+
"icons/SortDesc": SortDescGlyph,
|
|
102
|
+
"icons/Expand": ExpandGlyph,
|
|
103
|
+
"icons/Collapse": CollapseGlyph,
|
|
104
|
+
"icons/Copy": CopyGlyph,
|
|
105
|
+
"icons/Clear": ClearGlyph,
|
|
106
|
+
"icons/Cancel": CancelGlyph,
|
|
107
|
+
"icons/Retry": RetryGlyph,
|
|
108
|
+
"icons/Case": CaseGlyph,
|
|
109
|
+
"icons/TreeKind": TreeIcon
|
|
74
110
|
});
|
|
75
111
|
var ICON_UNITS = Object.keys(ICONS);
|
|
76
112
|
export {
|
|
77
113
|
ICONS,
|
|
78
|
-
ICON_UNITS
|
|
114
|
+
ICON_UNITS,
|
|
115
|
+
Svg
|
|
79
116
|
};
|