@xenosystem/blocks 0.13.0 → 0.13.2
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-SFSCCISX.js} +59 -30
- package/dist/data/index.js +169 -295
- package/dist/edit/index.js +50 -146
- package/dist/icons/index.d.ts +20 -2
- package/dist/icons/index.js +41 -8
- package/dist/ops/index.js +140 -199
- package/dist/time/index.js +25 -44
- package/package.json +3 -3
package/dist/edit/index.js
CHANGED
|
@@ -6,18 +6,25 @@ import {
|
|
|
6
6
|
LinkIcon,
|
|
7
7
|
LockStateIcon,
|
|
8
8
|
NextIcon,
|
|
9
|
-
PendingGlyph,
|
|
10
9
|
PrevIcon,
|
|
11
10
|
RedoIcon,
|
|
12
11
|
ResetIcon,
|
|
13
12
|
StopwatchIcon,
|
|
14
13
|
SwapIcon,
|
|
15
14
|
TrashIcon,
|
|
15
|
+
TreeIcon,
|
|
16
16
|
UndoIcon,
|
|
17
17
|
VisibilityIcon,
|
|
18
18
|
XIcon,
|
|
19
19
|
XIcon2
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-SFSCCISX.js";
|
|
21
|
+
import {
|
|
22
|
+
CaseGlyph,
|
|
23
|
+
ChevronGlyph,
|
|
24
|
+
CollapseGlyph,
|
|
25
|
+
ExpandGlyph,
|
|
26
|
+
RefreshGlyph
|
|
27
|
+
} from "../chunk-GQWAIPDF.js";
|
|
21
28
|
import "../chunk-2KG3PWR4.js";
|
|
22
29
|
|
|
23
30
|
// src/edit/layers/panel.ts
|
|
@@ -4825,7 +4832,7 @@ var HISTORY_DECLARATION = {
|
|
|
4825
4832
|
node: {
|
|
4826
4833
|
component: "fragment",
|
|
4827
4834
|
children: [
|
|
4828
|
-
{ component: "
|
|
4835
|
+
{ component: "chrome/Spinner", when: { item: "pending" } },
|
|
4829
4836
|
{ component: "chrome/Badge", when: { item: "failed" }, props: { size: { value: "sm" }, tone: { value: "error" } }, children: [text3({ value: "failed" })] },
|
|
4830
4837
|
{ component: "chrome/Badge", when: { item: "showSource" }, props: { size: { value: "sm" }, title: { item: "sourceTitle" } }, children: [text3({ item: "sourceGlyph" })] },
|
|
4831
4838
|
{ component: "chrome/Badge", when: { item: "showCoalesced" }, props: { size: { value: "sm" }, title: { item: "coalescedTitle" } }, children: [text3({ item: "coalescedText" })] },
|
|
@@ -4861,7 +4868,7 @@ var HISTORY_DECLARATION = {
|
|
|
4861
4868
|
};
|
|
4862
4869
|
|
|
4863
4870
|
// src/edit/history/react/HistoryPanelView.tsx
|
|
4864
|
-
import { Badge as Badge3, Column as Column3, EmptyState as EmptyState3, IconButton as IconButton4, InlineConfirm, RowList as RowList2, Row as Row2, ScrollArea as ScrollArea3, SearchField as SearchField3, StatusBar as StatusBar2, Text as Text4, Toolbar as Toolbar2, VirtualWindow as VirtualWindow2 } from "@xenosystem/components/chrome";
|
|
4871
|
+
import { Badge as Badge3, Column as Column3, EmptyState as EmptyState3, IconButton as IconButton4, InlineConfirm, RowList as RowList2, Row as Row2, ScrollArea as ScrollArea3, SearchField as SearchField3, Spinner, StatusBar as StatusBar2, Text as Text4, Toolbar as Toolbar2, VirtualWindow as VirtualWindow2 } from "@xenosystem/components/chrome";
|
|
4865
4872
|
import { Fragment as Fragment4, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
4866
4873
|
function HistoryPanelView({ controller }) {
|
|
4867
4874
|
const subscribe = useCallback4((cb) => controller.subscribe(cb), [controller]);
|
|
@@ -4958,7 +4965,7 @@ function HistoryRowView({ row: row2, controller }) {
|
|
|
4958
4965
|
"data-history-row": row2.key,
|
|
4959
4966
|
title: row2.label,
|
|
4960
4967
|
trailing: /* @__PURE__ */ jsxs4(Fragment4, { children: [
|
|
4961
|
-
row2.pending ? /* @__PURE__ */ jsx5(
|
|
4968
|
+
row2.pending ? /* @__PURE__ */ jsx5(Spinner, {}) : null,
|
|
4962
4969
|
row2.failed ? /* @__PURE__ */ jsx5(Badge3, { size: "sm", tone: "error", children: "failed" }) : null,
|
|
4963
4970
|
row2.showSource ? /* @__PURE__ */ jsx5(Badge3, { size: "sm", title: row2.sourceTitle, children: row2.sourceGlyph }) : null,
|
|
4964
4971
|
row2.showCoalesced ? /* @__PURE__ */ jsx5(Badge3, { size: "sm", title: row2.coalescedTitle, children: row2.coalescedText }) : null,
|
|
@@ -9347,12 +9354,7 @@ import {
|
|
|
9347
9354
|
} from "@xenosystem/components/chrome";
|
|
9348
9355
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
9349
9356
|
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
|
-
] });
|
|
9357
|
+
return /* @__PURE__ */ jsx9(CaseGlyph, { size: 12 });
|
|
9356
9358
|
}
|
|
9357
9359
|
function WordIcon() {
|
|
9358
9360
|
return /* @__PURE__ */ jsxs8("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: [
|
|
@@ -13189,105 +13191,7 @@ import {
|
|
|
13189
13191
|
ToolbarGroup as ToolbarGroup5
|
|
13190
13192
|
} from "@xenosystem/components/chrome";
|
|
13191
13193
|
import { computeWindow as computeWindow3 } from "@xenosystem/tree-core";
|
|
13192
|
-
|
|
13193
|
-
// src/edit/tree/react/icons.tsx
|
|
13194
13194
|
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
13195
|
function TreePanelView({
|
|
13292
13196
|
controller,
|
|
13293
13197
|
rowHeight = 24,
|
|
@@ -13319,13 +13223,13 @@ function TreePanelView({
|
|
|
13319
13223
|
const sourceState = source?.sourceState ?? "idle";
|
|
13320
13224
|
const body = (() => {
|
|
13321
13225
|
if (!source || sourceState === "idle") {
|
|
13322
|
-
return /* @__PURE__ */
|
|
13226
|
+
return /* @__PURE__ */ jsx12(EmptyState8, { title: "No source", hint: emptyHint ?? "Connect a source to browse it." });
|
|
13323
13227
|
}
|
|
13324
13228
|
if (sourceState === "loading" && state.rows.length === 0) {
|
|
13325
|
-
return /* @__PURE__ */
|
|
13229
|
+
return /* @__PURE__ */ jsx12(LoadingState, { label: source.sourceMessage ?? "Loading\u2026" });
|
|
13326
13230
|
}
|
|
13327
13231
|
if (sourceState === "error" || sourceState === "denied") {
|
|
13328
|
-
return /* @__PURE__ */
|
|
13232
|
+
return /* @__PURE__ */ jsx12(
|
|
13329
13233
|
ErrorState,
|
|
13330
13234
|
{
|
|
13331
13235
|
title: sourceState === "denied" ? "Access not granted" : "Could not read this source",
|
|
@@ -13336,7 +13240,7 @@ function TreePanelView({
|
|
|
13336
13240
|
);
|
|
13337
13241
|
}
|
|
13338
13242
|
if (state.rows.length === 0) {
|
|
13339
|
-
return state.filter ? /* @__PURE__ */
|
|
13243
|
+
return state.filter ? /* @__PURE__ */ jsx12(EmptyState8, { title: "No matches", hint: `Nothing matches \u201C${state.filter}\u201D.` }) : /* @__PURE__ */ jsx12(
|
|
13340
13244
|
EmptyState8,
|
|
13341
13245
|
{
|
|
13342
13246
|
title: "Nothing here",
|
|
@@ -13352,7 +13256,7 @@ function TreePanelView({
|
|
|
13352
13256
|
overscan
|
|
13353
13257
|
});
|
|
13354
13258
|
const slice = state.rows.slice(window2.startIndex, window2.endIndex);
|
|
13355
|
-
return /* @__PURE__ */
|
|
13259
|
+
return /* @__PURE__ */ jsx12(ScrollArea6, { children: /* @__PURE__ */ jsx12(
|
|
13356
13260
|
"div",
|
|
13357
13261
|
{
|
|
13358
13262
|
ref: scrollRef,
|
|
@@ -13366,7 +13270,7 @@ function TreePanelView({
|
|
|
13366
13270
|
e.preventDefault();
|
|
13367
13271
|
}
|
|
13368
13272
|
},
|
|
13369
|
-
children: /* @__PURE__ */
|
|
13273
|
+
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
13274
|
TreeRowView,
|
|
13371
13275
|
{
|
|
13372
13276
|
row: row2,
|
|
@@ -13382,11 +13286,11 @@ function TreePanelView({
|
|
|
13382
13286
|
}
|
|
13383
13287
|
) });
|
|
13384
13288
|
})();
|
|
13385
|
-
return /* @__PURE__ */
|
|
13386
|
-
/* @__PURE__ */
|
|
13289
|
+
return /* @__PURE__ */ jsxs11("div", { style: { display: "flex", flexDirection: "column", height: "100%", minHeight: 0 }, children: [
|
|
13290
|
+
/* @__PURE__ */ jsx12(
|
|
13387
13291
|
Toolbar7,
|
|
13388
13292
|
{
|
|
13389
|
-
left: showSearch ? /* @__PURE__ */
|
|
13293
|
+
left: showSearch ? /* @__PURE__ */ jsx12(
|
|
13390
13294
|
SearchField5,
|
|
13391
13295
|
{
|
|
13392
13296
|
value: state.filter,
|
|
@@ -13394,22 +13298,22 @@ function TreePanelView({
|
|
|
13394
13298
|
placeholder: "Filter\u2026"
|
|
13395
13299
|
}
|
|
13396
13300
|
) : void 0,
|
|
13397
|
-
right: /* @__PURE__ */
|
|
13398
|
-
/* @__PURE__ */
|
|
13399
|
-
/* @__PURE__ */
|
|
13301
|
+
right: /* @__PURE__ */ jsxs11(ToolbarGroup5, { end: true, children: [
|
|
13302
|
+
/* @__PURE__ */ jsx12(IconButton7, { icon: /* @__PURE__ */ jsx12(ExpandGlyph, {}), label: "Expand all", onClick: () => controller.expandAll() }),
|
|
13303
|
+
/* @__PURE__ */ jsx12(
|
|
13400
13304
|
IconButton7,
|
|
13401
13305
|
{
|
|
13402
|
-
icon: /* @__PURE__ */
|
|
13306
|
+
icon: /* @__PURE__ */ jsx12(CollapseGlyph, {}),
|
|
13403
13307
|
label: "Collapse all",
|
|
13404
13308
|
onClick: () => controller.collapseAll()
|
|
13405
13309
|
}
|
|
13406
13310
|
),
|
|
13407
|
-
/* @__PURE__ */
|
|
13311
|
+
/* @__PURE__ */ jsx12(IconButton7, { icon: /* @__PURE__ */ jsx12(RefreshGlyph, {}), label: "Refresh", onClick: () => controller.refresh() })
|
|
13408
13312
|
] })
|
|
13409
13313
|
}
|
|
13410
13314
|
),
|
|
13411
13315
|
body,
|
|
13412
|
-
/* @__PURE__ */
|
|
13316
|
+
/* @__PURE__ */ jsx12(
|
|
13413
13317
|
StatusBar8,
|
|
13414
13318
|
{
|
|
13415
13319
|
left: `${state.rows.length} item${state.rows.length === 1 ? "" : "s"}`,
|
|
@@ -13431,7 +13335,7 @@ function TreeRowView({
|
|
|
13431
13335
|
const selected = state.selection.includes(row2.id);
|
|
13432
13336
|
const renaming = state.renaming?.id === row2.id ? state.renaming : null;
|
|
13433
13337
|
const drop = state.drag?.targetId === row2.id ? state.drag : null;
|
|
13434
|
-
const twisty = row2.container ? /* @__PURE__ */
|
|
13338
|
+
const twisty = row2.container ? /* @__PURE__ */ jsx12(
|
|
13435
13339
|
"span",
|
|
13436
13340
|
{
|
|
13437
13341
|
role: "button",
|
|
@@ -13451,13 +13355,13 @@ function TreeRowView({
|
|
|
13451
13355
|
transition: "transform 80ms ease",
|
|
13452
13356
|
opacity: 0.7
|
|
13453
13357
|
},
|
|
13454
|
-
children: /* @__PURE__ */
|
|
13358
|
+
children: /* @__PURE__ */ jsx12(ChevronGlyph, { size: 9 })
|
|
13455
13359
|
}
|
|
13456
13360
|
) : (
|
|
13457
13361
|
// A leaf still reserves the twisty column, so labels stay in ONE column across mixed rows.
|
|
13458
|
-
/* @__PURE__ */
|
|
13362
|
+
/* @__PURE__ */ jsx12("span", { style: { width: 12, flex: "0 0 auto" } })
|
|
13459
13363
|
);
|
|
13460
|
-
return /* @__PURE__ */
|
|
13364
|
+
return /* @__PURE__ */ jsx12(
|
|
13461
13365
|
"div",
|
|
13462
13366
|
{
|
|
13463
13367
|
style: {
|
|
@@ -13468,7 +13372,7 @@ function TreeRowView({
|
|
|
13468
13372
|
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
13373
|
},
|
|
13470
13374
|
title: drop?.reason,
|
|
13471
|
-
children: /* @__PURE__ */
|
|
13375
|
+
children: /* @__PURE__ */ jsx12(
|
|
13472
13376
|
Row4,
|
|
13473
13377
|
{
|
|
13474
13378
|
role: "treeitem",
|
|
@@ -13504,11 +13408,11 @@ function TreeRowView({
|
|
|
13504
13408
|
onPointerUp: () => {
|
|
13505
13409
|
if (state.drag) controller.endDrag();
|
|
13506
13410
|
},
|
|
13507
|
-
icon: /* @__PURE__ */
|
|
13411
|
+
icon: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13508
13412
|
twisty,
|
|
13509
|
-
/* @__PURE__ */
|
|
13413
|
+
/* @__PURE__ */ jsx12(NodeIcon, { icon: node.icon ?? defaultIconFor(node.kind) })
|
|
13510
13414
|
] }),
|
|
13511
|
-
label: renaming ? /* @__PURE__ */
|
|
13415
|
+
label: renaming ? /* @__PURE__ */ jsx12(
|
|
13512
13416
|
"input",
|
|
13513
13417
|
{
|
|
13514
13418
|
autoFocus: true,
|
|
@@ -13533,19 +13437,19 @@ function TreeRowView({
|
|
|
13533
13437
|
}
|
|
13534
13438
|
}
|
|
13535
13439
|
) : node.label,
|
|
13536
|
-
meta: /* @__PURE__ */
|
|
13537
|
-
trailing: /* @__PURE__ */
|
|
13538
|
-
columns?.map((columnId) => /* @__PURE__ */
|
|
13539
|
-
node.glyphs?.map((glyph) => /* @__PURE__ */
|
|
13440
|
+
meta: /* @__PURE__ */ jsx12(ChildStateChip, { row: row2, controller }),
|
|
13441
|
+
trailing: /* @__PURE__ */ jsxs11(Fragment8, { children: [
|
|
13442
|
+
columns?.map((columnId) => /* @__PURE__ */ jsx12("span", { style: { opacity: 0.7, fontVariantNumeric: "tabular-nums" }, children: node.columns?.[columnId] ?? "" }, columnId)),
|
|
13443
|
+
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
13444
|
node.badges?.map((badge) => (
|
|
13541
13445
|
// Opaque: the host formatted the text, the panel only places it.
|
|
13542
|
-
/* @__PURE__ */
|
|
13446
|
+
/* @__PURE__ */ jsx12(Badge7, { tone: badge.tone, className: badge.title ? void 0 : void 0, children: badge.text }, badge.id)
|
|
13543
13447
|
)),
|
|
13544
|
-
node.actions?.map((action) => /* @__PURE__ */
|
|
13448
|
+
node.actions?.map((action) => /* @__PURE__ */ jsx12(
|
|
13545
13449
|
IconButton7,
|
|
13546
13450
|
{
|
|
13547
13451
|
size: "sm",
|
|
13548
|
-
icon: /* @__PURE__ */
|
|
13452
|
+
icon: /* @__PURE__ */ jsx12(NodeIcon, { icon: action.icon }),
|
|
13549
13453
|
label: action.label,
|
|
13550
13454
|
disabled: action.disabled,
|
|
13551
13455
|
onClick: () => controller.runAction(row2.id, action.id)
|
|
@@ -13564,14 +13468,14 @@ function ChildStateChip({
|
|
|
13564
13468
|
}) {
|
|
13565
13469
|
if (!row2.container) return null;
|
|
13566
13470
|
if (row2.childState === "loading") {
|
|
13567
|
-
return /* @__PURE__ */
|
|
13471
|
+
return /* @__PURE__ */ jsx12("span", { style: { opacity: 0.5, fontSize: 9 }, children: "loading\u2026" });
|
|
13568
13472
|
}
|
|
13569
13473
|
if (row2.childState === "error") {
|
|
13570
13474
|
const error = row2.node.error;
|
|
13571
|
-
return /* @__PURE__ */
|
|
13475
|
+
return /* @__PURE__ */ jsx12(Badge7, { tone: "error", children: error?.code === "denied" ? "no access" : error?.code ?? "failed" });
|
|
13572
13476
|
}
|
|
13573
13477
|
if (row2.node.hasMore && row2.expanded) {
|
|
13574
|
-
return /* @__PURE__ */
|
|
13478
|
+
return /* @__PURE__ */ jsx12(
|
|
13575
13479
|
"span",
|
|
13576
13480
|
{
|
|
13577
13481
|
role: "button",
|
|
@@ -13585,18 +13489,18 @@ function ChildStateChip({
|
|
|
13585
13489
|
);
|
|
13586
13490
|
}
|
|
13587
13491
|
if (row2.node.truncatedAt !== void 0) {
|
|
13588
|
-
return /* @__PURE__ */
|
|
13492
|
+
return /* @__PURE__ */ jsx12(Badge7, { tone: "warning", children: `first ${row2.node.truncatedAt}` });
|
|
13589
13493
|
}
|
|
13590
13494
|
if (row2.expanded && isEmptyContainer(row2.node)) {
|
|
13591
|
-
return /* @__PURE__ */
|
|
13495
|
+
return /* @__PURE__ */ jsx12("span", { style: { opacity: 0.4, fontSize: 9 }, children: "empty" });
|
|
13592
13496
|
}
|
|
13593
13497
|
return null;
|
|
13594
13498
|
}
|
|
13595
13499
|
function NodeIcon({ icon }) {
|
|
13596
13500
|
if (icon.kind === "text") {
|
|
13597
|
-
return /* @__PURE__ */
|
|
13501
|
+
return /* @__PURE__ */ jsx12("span", { style: { fontSize: 11, lineHeight: 1, display: "flex", alignItems: "center" }, children: icon.value });
|
|
13598
13502
|
}
|
|
13599
|
-
return /* @__PURE__ */
|
|
13503
|
+
return /* @__PURE__ */ jsx12(TreeIcon, { name: icon.name });
|
|
13600
13504
|
}
|
|
13601
13505
|
|
|
13602
13506
|
// 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
|
@@ -21,17 +21,34 @@ import {
|
|
|
21
21
|
LinkIcon,
|
|
22
22
|
LockStateIcon,
|
|
23
23
|
NextIcon,
|
|
24
|
-
PendingGlyph,
|
|
25
24
|
PrevIcon,
|
|
26
25
|
RedoIcon,
|
|
27
26
|
ResetIcon,
|
|
28
27
|
StopwatchIcon,
|
|
29
28
|
SwapIcon,
|
|
30
29
|
TrashIcon,
|
|
30
|
+
TreeIcon,
|
|
31
31
|
UndoIcon,
|
|
32
|
-
VisibilityIcon
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
VisibilityIcon
|
|
33
|
+
} from "../chunk-SFSCCISX.js";
|
|
34
|
+
import {
|
|
35
|
+
CancelGlyph,
|
|
36
|
+
CaseGlyph,
|
|
37
|
+
ChevronGlyph,
|
|
38
|
+
ClearGlyph,
|
|
39
|
+
CollapseGlyph,
|
|
40
|
+
CopyGlyph,
|
|
41
|
+
DownloadGlyph,
|
|
42
|
+
ExpandGlyph,
|
|
43
|
+
PlugGlyph,
|
|
44
|
+
PlusGlyph,
|
|
45
|
+
RefreshGlyph,
|
|
46
|
+
RetryGlyph,
|
|
47
|
+
SortAscGlyph,
|
|
48
|
+
SortDescGlyph,
|
|
49
|
+
Svg,
|
|
50
|
+
XGlyph
|
|
51
|
+
} from "../chunk-GQWAIPDF.js";
|
|
35
52
|
import "../chunk-2KG3PWR4.js";
|
|
36
53
|
|
|
37
54
|
// src/icons/index.ts
|
|
@@ -54,8 +71,6 @@ var ICONS = Object.freeze({
|
|
|
54
71
|
"icons/Undo": UndoIcon,
|
|
55
72
|
"icons/Redo": RedoIcon,
|
|
56
73
|
"icons/Trash": TrashIcon,
|
|
57
|
-
"icons/X": XIcon,
|
|
58
|
-
"icons/Pending": PendingGlyph,
|
|
59
74
|
"icons/HistoryEntry": EntryIcon,
|
|
60
75
|
// inspector
|
|
61
76
|
"icons/Stopwatch": StopwatchIcon,
|
|
@@ -70,10 +85,28 @@ var ICONS = Object.freeze({
|
|
|
70
85
|
"icons/LockState": LockStateIcon,
|
|
71
86
|
// color
|
|
72
87
|
"icons/Swap": SwapIcon,
|
|
73
|
-
"icons/Eyedropper": EyedropperIcon
|
|
88
|
+
"icons/Eyedropper": EyedropperIcon,
|
|
89
|
+
// shared (src/icons/glyphs.tsx — the one source; the data/ops/time blocks re-export these)
|
|
90
|
+
"icons/Refresh": RefreshGlyph,
|
|
91
|
+
"icons/Close": XGlyph,
|
|
92
|
+
"icons/Plus": PlusGlyph,
|
|
93
|
+
"icons/Chevron": ChevronGlyph,
|
|
94
|
+
"icons/Download": DownloadGlyph,
|
|
95
|
+
"icons/Plug": PlugGlyph,
|
|
96
|
+
"icons/SortAsc": SortAscGlyph,
|
|
97
|
+
"icons/SortDesc": SortDescGlyph,
|
|
98
|
+
"icons/Expand": ExpandGlyph,
|
|
99
|
+
"icons/Collapse": CollapseGlyph,
|
|
100
|
+
"icons/Copy": CopyGlyph,
|
|
101
|
+
"icons/Clear": ClearGlyph,
|
|
102
|
+
"icons/Cancel": CancelGlyph,
|
|
103
|
+
"icons/Retry": RetryGlyph,
|
|
104
|
+
"icons/Case": CaseGlyph,
|
|
105
|
+
"icons/TreeKind": TreeIcon
|
|
74
106
|
});
|
|
75
107
|
var ICON_UNITS = Object.keys(ICONS);
|
|
76
108
|
export {
|
|
77
109
|
ICONS,
|
|
78
|
-
ICON_UNITS
|
|
110
|
+
ICON_UNITS,
|
|
111
|
+
Svg
|
|
79
112
|
};
|