@ixfx/components 0.15.3 → 0.15.5
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/bundle/index.d.ts +473 -17
- package/bundle/index.js +432 -225
- package/dist/crumbs.d.ts +1 -1
- package/dist/{data-grid-Dx3l3dxw.js → data-grid-C1sZX6n9.js} +37 -9
- package/dist/{data-grid-DmkId8bu.d.ts → data-grid-D7qzmMMp.d.ts} +13 -6
- package/dist/data-grid.d.ts +2 -2
- package/dist/data-grid.js +1 -1
- package/dist/{detail-list-CmQqeXvp.d.ts → detail-list-CKIKlszv.d.ts} +3 -3
- package/dist/detail-list.d.ts +3 -3
- package/dist/{flat-list-BmQBB3ZC.d.ts → flat-list-DXMyDiSH.d.ts} +2 -2
- package/dist/flat-list.d.ts +1 -1
- package/dist/{grid-list-BVsUEvgd.d.ts → grid-list-0e7snW6t.d.ts} +3 -3
- package/dist/grid-list.d.ts +2 -2
- package/dist/incr-search.d.ts +1 -1
- package/dist/{index-DuhzWWTr.d.ts → index-DEVyVIn8.d.ts} +28 -8
- package/dist/{index-BvoXLnBf.d.ts → index-KN2MW_xD.d.ts} +1 -1
- package/dist/index.d.ts +176 -15
- package/dist/index.js +274 -64
- package/dist/{list-native-drag-controller-NMspr0E1.d.ts → list-native-drag-controller-O2Nruqpi.d.ts} +1 -1
- package/dist/miller.d.ts +2 -2
- package/dist/sunburst-tree.d.ts +2 -0
- package/dist/sunburst-tree.js +2 -0
- package/dist/sunbursttree-list--Z0uyh8O.d.ts +266 -0
- package/dist/sunbursttree-list-yXwS-uEI.js +1337 -0
- package/dist/{tree-2_TRrLAV.js → tree-D8VxvR9u.js} +44 -5
- package/dist/{tree-component-CDsYTBDi.d.ts → tree-component-C6UHO-w9.d.ts} +12 -3
- package/dist/tree.d.ts +3 -3
- package/dist/tree.js +1 -1
- package/dist/{vertical-list-ztrdFvyT.d.ts → vertical-list-D8MksoTp.d.ts} +2 -2
- package/dist/vertical-list.d.ts +2 -2
- package/docs-user/README.md +1 -0
- package/docs-user/data-grid.md +11 -4
- package/docs-user/dock.md +62 -1
- package/docs-user/index.json +7 -2
- package/docs-user/llms.txt +1 -0
- package/docs-user/sunburst-tree.md +193 -0
- package/docs-user/tree.md +40 -1
- package/llms.txt +1 -0
- package/package.json +5 -1
package/dist/index.js
CHANGED
|
@@ -26,13 +26,13 @@ import { t as CheckedSelect } from "./checked-select-CBUidG7n.js";
|
|
|
26
26
|
import { n as ColourPicker, t as ColourPickerPopup } from "./colour-picker-DwAa6RDh.js";
|
|
27
27
|
import { LabelledRangeInput } from "./labelled-range-input.js";
|
|
28
28
|
import { t as collectDataResult } from "./data-provider-35TyWclX.js";
|
|
29
|
-
import { a as TreeDataModel, c as pruneDraggedDescendants, i as TreeDropController, n as TreeListElement, o as applyTreeDrop, r as TreeBaseElement, s as dropTargetFor, t as TreeController } from "./tree-
|
|
29
|
+
import { a as TreeDataModel, c as pruneDraggedDescendants, i as TreeDropController, n as TreeListElement, o as applyTreeDrop, r as TreeBaseElement, s as dropTargetFor, t as TreeController } from "./tree-D8VxvR9u.js";
|
|
30
30
|
import { t as scrollFadeStyles } from "./scroll-fade-Xx28D7mH.js";
|
|
31
31
|
import { NarrowedTextElement } from "./narrowed-text.js";
|
|
32
32
|
import { CrumbNavigationElement } from "./crumbs.js";
|
|
33
33
|
import { DataDisplayComponent } from "./data-display.js";
|
|
34
34
|
import { t as createDragGhost } from "./drag-ghost-DtSDvjri.js";
|
|
35
|
-
import { t as DataGridElement } from "./data-grid-
|
|
35
|
+
import { t as DataGridElement } from "./data-grid-C1sZX6n9.js";
|
|
36
36
|
import { a as menuFromTreeToElements, t as menu_exports } from "./menu-CU9KAm8s.js";
|
|
37
37
|
import { t as PanTextElement } from "./pan-text-CqtvjPyK.js";
|
|
38
38
|
import { t as DetailListElement } from "./detail-list-q8bs67BM.js";
|
|
@@ -64,6 +64,7 @@ import { RangeElement } from "./range.js";
|
|
|
64
64
|
import { SelectHorizElement } from "./select-horiz.js";
|
|
65
65
|
import { SnackbarElement } from "./snackbar.js";
|
|
66
66
|
import { SnapContainer } from "./snap-container.js";
|
|
67
|
+
import { a as findSunburstId, c as sunburstChildId, d as sunburstParentId, f as sunburstPathToId, i as defaultSunburstValueAccessor, l as sunburstHasChildren, n as computeSunburstLayout, o as findSunburstNodeById, p as SUNBURST_PATH_SEPARATOR, r as createValueResolver, s as isSunburstAncestorId, t as SunburstTreeListElement, u as sunburstIdToPath } from "./sunbursttree-list-yXwS-uEI.js";
|
|
67
68
|
import { SwipeElement } from "./swipe.js";
|
|
68
69
|
import { a as resolveCssVars, i as attachTimelineInteractions, n as TimelineTrackTabElement, o as resolveGrid, r as timelineStyles, s as TimelineController, t as IxfxTimelineElement } from "./timeline-BP1Ux2EV.js";
|
|
69
70
|
import { TransitoryLabelElement } from "./transitory-label.js";
|
|
@@ -2723,7 +2724,10 @@ function startDrag(panelId, sourceHost, pointerId, clientX, clientY, kind) {
|
|
|
2723
2724
|
ghost: createGhostForPanel(sourceHost, panelId),
|
|
2724
2725
|
outside: false
|
|
2725
2726
|
};
|
|
2726
|
-
for (const host of dragHosts) host.setDragActive(true)
|
|
2727
|
+
for (const host of dragHosts) host.setDragActive(true, hostsExchange(sourceHost, host) ? {
|
|
2728
|
+
panelId,
|
|
2729
|
+
kind
|
|
2730
|
+
} : void 0);
|
|
2727
2731
|
activeDrag.ghost?.move(clientX, clientY);
|
|
2728
2732
|
window.addEventListener(`pointermove`, onPointerMove);
|
|
2729
2733
|
window.addEventListener(`pointerup`, onPointerUp);
|
|
@@ -2788,10 +2792,18 @@ function onKeyDown(event) {
|
|
|
2788
2792
|
if (event.key !== `Escape`) return;
|
|
2789
2793
|
endDrag();
|
|
2790
2794
|
}
|
|
2795
|
+
/**
|
|
2796
|
+
* Whether `target` may receive panels dragged from `source`: always for the
|
|
2797
|
+
* same host; otherwise only when the source is not `isolated` and both hosts
|
|
2798
|
+
* share a `family`.
|
|
2799
|
+
*/
|
|
2800
|
+
function hostsExchange(source, target) {
|
|
2801
|
+
if (source === target) return true;
|
|
2802
|
+
return !source.isolated && source.family === target.family;
|
|
2803
|
+
}
|
|
2791
2804
|
function findDropZone(drag, clientX, clientY) {
|
|
2792
|
-
const sourceIsolated = drag.sourceHost.isolated;
|
|
2793
2805
|
for (const host of dragHosts) {
|
|
2794
|
-
if (
|
|
2806
|
+
if (!hostsExchange(drag.sourceHost, host)) continue;
|
|
2795
2807
|
const zone = host.computeDropZone(clientX, clientY, drag.panelId, drag.kind);
|
|
2796
2808
|
if (zone !== null) return zone;
|
|
2797
2809
|
}
|
|
@@ -2957,6 +2969,8 @@ function replaceNodeContents(target, source) {
|
|
|
2957
2969
|
else delete t.name;
|
|
2958
2970
|
if (source.hideLabels !== void 0) t.hideLabels = source.hideLabels;
|
|
2959
2971
|
else delete t.hideLabels;
|
|
2972
|
+
if (source.hideSingleTabStrip !== void 0) t.hideSingleTabStrip = source.hideSingleTabStrip;
|
|
2973
|
+
else delete t.hideSingleTabStrip;
|
|
2960
2974
|
delete t.collapsed;
|
|
2961
2975
|
delete t.preCollapseSize;
|
|
2962
2976
|
if (source.collapsed !== void 0) t.collapsed = source.collapsed;
|
|
@@ -2971,6 +2985,8 @@ function replaceNodeContents(target, source) {
|
|
|
2971
2985
|
delete stale.panels;
|
|
2972
2986
|
delete stale.active;
|
|
2973
2987
|
delete stale.name;
|
|
2988
|
+
delete stale.hideLabels;
|
|
2989
|
+
delete stale.hideSingleTabStrip;
|
|
2974
2990
|
delete stale.collapsed;
|
|
2975
2991
|
delete stale.preCollapseSize;
|
|
2976
2992
|
}
|
|
@@ -3387,6 +3403,8 @@ function moveLeafNodeToEdge(root, ref, edge) {
|
|
|
3387
3403
|
active: rest.active
|
|
3388
3404
|
};
|
|
3389
3405
|
if (rest.name !== void 0) remaining.name = rest.name;
|
|
3406
|
+
if (rest.hideLabels !== void 0) remaining.hideLabels = rest.hideLabels;
|
|
3407
|
+
if (rest.hideSingleTabStrip !== void 0) remaining.hideSingleTabStrip = rest.hideSingleTabStrip;
|
|
3390
3408
|
if (rest.collapsed !== void 0) remaining.collapsed = rest.collapsed;
|
|
3391
3409
|
if (rest.preCollapseSize !== void 0) remaining.preCollapseSize = rest.preCollapseSize;
|
|
3392
3410
|
replaceNodeContents(root, {
|
|
@@ -3436,6 +3454,7 @@ function serializeNode(node) {
|
|
|
3436
3454
|
};
|
|
3437
3455
|
if (node.name !== void 0) out.name = node.name;
|
|
3438
3456
|
if (node.hideLabels !== void 0) out.hideLabels = node.hideLabels;
|
|
3457
|
+
if (node.hideSingleTabStrip !== void 0) out.hideSingleTabStrip = node.hideSingleTabStrip;
|
|
3439
3458
|
if (node.collapsed !== void 0) out.collapsed = node.collapsed;
|
|
3440
3459
|
if (node.preCollapseSize !== void 0) out.preCollapseSize = node.preCollapseSize;
|
|
3441
3460
|
return out;
|
|
@@ -3465,6 +3484,36 @@ function parseLayout(json) {
|
|
|
3465
3484
|
return null;
|
|
3466
3485
|
}
|
|
3467
3486
|
}
|
|
3487
|
+
/** Every stack holding at least one panel, keyed by node identity. */
|
|
3488
|
+
function snapshotNonEmptyStacks(root) {
|
|
3489
|
+
const out = /* @__PURE__ */ new Map();
|
|
3490
|
+
const visit = (node) => {
|
|
3491
|
+
if (isStack(node)) {
|
|
3492
|
+
if (node.panels.length > 0) out.set(node, {
|
|
3493
|
+
name: node.name,
|
|
3494
|
+
key: node.panels.join(`\n`)
|
|
3495
|
+
});
|
|
3496
|
+
return;
|
|
3497
|
+
}
|
|
3498
|
+
node.children.forEach(visit);
|
|
3499
|
+
};
|
|
3500
|
+
visit(root);
|
|
3501
|
+
return out;
|
|
3502
|
+
}
|
|
3503
|
+
/**
|
|
3504
|
+
* Stacks in `before` that no longer hold their panels in `after`. A stack
|
|
3505
|
+
* node that was re-created with the same panels (some leaf moves rebuild
|
|
3506
|
+
* nodes) does not count as emptied.
|
|
3507
|
+
*/
|
|
3508
|
+
function findEmptiedStacks(before, after) {
|
|
3509
|
+
const afterKeys = new Set([...after.values()].map((s) => s.key));
|
|
3510
|
+
const emptied = [];
|
|
3511
|
+
for (const [node, snapshot] of before) {
|
|
3512
|
+
if (after.has(node) || afterKeys.has(snapshot.key)) continue;
|
|
3513
|
+
emptied.push(snapshot);
|
|
3514
|
+
}
|
|
3515
|
+
return emptied;
|
|
3516
|
+
}
|
|
3468
3517
|
//#endregion
|
|
3469
3518
|
//#region src/tabs/tab-list-item.ts
|
|
3470
3519
|
const resizeHandlers = /* @__PURE__ */ new WeakMap();
|
|
@@ -4078,6 +4127,8 @@ DockPanelElement = __decorate([safeCustomElement(`ixfx-dock-panel`)], DockPanelE
|
|
|
4078
4127
|
const BAND = .25;
|
|
4079
4128
|
/** Pointer movement threshold before a press becomes a dock drag (matches tab-list). */
|
|
4080
4129
|
const DRAG_THRESHOLD_PX$3 = 5;
|
|
4130
|
+
/** Tab items of a strip, or the stand-in tab of a hidden strip's drop hint. */
|
|
4131
|
+
const STRIP_ITEMS = `ixfx-tab-list-item, .ghost-tab`;
|
|
4081
4132
|
/** Tolerance (px) when matching a child gutter endpoint to a parent gutter line. */
|
|
4082
4133
|
const JUNCTION_TOL_PX = 6;
|
|
4083
4134
|
/** Junction points closer than this merge into one handle (a 4-way cross yields one per side). */
|
|
@@ -4088,10 +4139,15 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4088
4139
|
this.layout = null;
|
|
4089
4140
|
this.accepts = `tabs horizontal vertical`;
|
|
4090
4141
|
this.isolated = false;
|
|
4142
|
+
this.hideSingleTabStrip = false;
|
|
4143
|
+
this.family = ``;
|
|
4144
|
+
this.acceptsKinds = null;
|
|
4091
4145
|
this._model = createStack([]);
|
|
4092
4146
|
this._pool = [];
|
|
4093
4147
|
this._dropZone = null;
|
|
4094
4148
|
this._dragActive = false;
|
|
4149
|
+
this._dragPanel = null;
|
|
4150
|
+
this._liveStacks = /* @__PURE__ */ new Map();
|
|
4095
4151
|
this._junctions = [];
|
|
4096
4152
|
this._toolbarsOut = /* @__PURE__ */ new Map();
|
|
4097
4153
|
this._leafContentRules = /* @__PURE__ */ new Map();
|
|
@@ -4104,6 +4160,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4104
4160
|
this._toolbarObserver = null;
|
|
4105
4161
|
this._panelObservers = /* @__PURE__ */ new Map();
|
|
4106
4162
|
this._onDragStart = (event) => {
|
|
4163
|
+
if (event.composedPath().find((n) => n instanceof HTMLElement && n.tagName === `IXFX-DOCK-HOST`) !== this) return;
|
|
4107
4164
|
const { panelId, pointerId, clientX, clientY } = event.detail;
|
|
4108
4165
|
startDrag(panelId, this, pointerId, clientX, clientY, this._findPanelEl(panelId)?.kind);
|
|
4109
4166
|
};
|
|
@@ -4179,17 +4236,18 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4179
4236
|
if (!(node instanceof HTMLElement)) continue;
|
|
4180
4237
|
if (node.classList.contains(`list-toolbar`) || node.classList.contains(`close-btn`)) return;
|
|
4181
4238
|
}
|
|
4182
|
-
const item = path
|
|
4183
|
-
if (item === null
|
|
4184
|
-
this.
|
|
4239
|
+
const item = tabItemIn(path);
|
|
4240
|
+
if (item === null) return;
|
|
4241
|
+
this._armPanelDrag(item.id, event);
|
|
4242
|
+
};
|
|
4243
|
+
this._onStripContextMenu = (event) => {
|
|
4244
|
+
const item = tabItemIn(event.composedPath());
|
|
4245
|
+
if (item === null) return;
|
|
4246
|
+
if (!this._emit(`dock-tab-contextmenu`, {
|
|
4185
4247
|
panelId: item.id,
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
};
|
|
4190
|
-
window.addEventListener(`pointermove`, this._onTabDragMove);
|
|
4191
|
-
window.addEventListener(`pointerup`, this._onTabDragUp);
|
|
4192
|
-
window.addEventListener(`pointercancel`, this._onTabDragUp);
|
|
4248
|
+
clientX: event.clientX,
|
|
4249
|
+
clientY: event.clientY
|
|
4250
|
+
}, true)) event.preventDefault();
|
|
4193
4251
|
};
|
|
4194
4252
|
this._onTabDragMove = (event) => {
|
|
4195
4253
|
const pending = this._tabDragPending;
|
|
@@ -4218,6 +4276,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4218
4276
|
connectedCallback() {
|
|
4219
4277
|
super.connectedCallback();
|
|
4220
4278
|
this._buildInitialModel();
|
|
4279
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4221
4280
|
registerDockHost(this);
|
|
4222
4281
|
this.addEventListener(`dock-panel-drag-start`, this._onDragStart);
|
|
4223
4282
|
this._hostResizeObserver = new ResizeObserver(() => this._scheduleJunctions());
|
|
@@ -4256,8 +4315,25 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4256
4315
|
if (parsed) {
|
|
4257
4316
|
this._model = parsed.root;
|
|
4258
4317
|
this._mergePoolIntoModel();
|
|
4318
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4259
4319
|
}
|
|
4260
4320
|
}
|
|
4321
|
+
this._returnToolbarsOfHiddenStrips();
|
|
4322
|
+
}
|
|
4323
|
+
/**
|
|
4324
|
+
* A toolbar parked in a tab item would be destroyed with the strip, so
|
|
4325
|
+
* hand it back before a hidden strip stops rendering.
|
|
4326
|
+
*/
|
|
4327
|
+
_returnToolbarsOfHiddenStrips() {
|
|
4328
|
+
for (const [panelId, nodes] of [...this._toolbarsOut]) {
|
|
4329
|
+
const path = findStackOf(this._model, panelId);
|
|
4330
|
+
const stack = path === null ? null : findNode(this._model, path);
|
|
4331
|
+
if (stack === null || !isStack(stack) || this._stripHidden(stack)) this._returnToolbar(panelId, nodes);
|
|
4332
|
+
}
|
|
4333
|
+
}
|
|
4334
|
+
/** Whether `stack` currently renders without a tab strip. */
|
|
4335
|
+
_stripHidden(stack) {
|
|
4336
|
+
return stack.panels.length === 1 && (stack.hideSingleTabStrip ?? this.hideSingleTabStrip);
|
|
4261
4337
|
}
|
|
4262
4338
|
updated(changed) {
|
|
4263
4339
|
super.updated(changed);
|
|
@@ -4386,11 +4462,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4386
4462
|
this._unobservePanel(el);
|
|
4387
4463
|
this._toolbarsOut.delete(el.panelId);
|
|
4388
4464
|
this._removeFromModel(el.panelId);
|
|
4389
|
-
this.
|
|
4390
|
-
detail: { panelId: el.panelId },
|
|
4391
|
-
bubbles: true,
|
|
4392
|
-
composed: true
|
|
4393
|
-
}));
|
|
4465
|
+
this._emitRemoved(el.panelId);
|
|
4394
4466
|
structuralChange = true;
|
|
4395
4467
|
}
|
|
4396
4468
|
for (const el of current) {
|
|
@@ -4398,11 +4470,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4398
4470
|
if (!collectPanelIds(this._model).includes(el.panelId)) {
|
|
4399
4471
|
this._appendPanelToFirstStack(el.panelId);
|
|
4400
4472
|
normalize(this._model);
|
|
4401
|
-
this.
|
|
4402
|
-
detail: { panelId: el.panelId },
|
|
4403
|
-
bubbles: true,
|
|
4404
|
-
composed: true
|
|
4405
|
-
}));
|
|
4473
|
+
this._emitAdded(el.panelId);
|
|
4406
4474
|
structuralChange = true;
|
|
4407
4475
|
}
|
|
4408
4476
|
}
|
|
@@ -4420,6 +4488,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4420
4488
|
this._loadGeneration++;
|
|
4421
4489
|
this._model = normalize(cloneNode(layout.root));
|
|
4422
4490
|
this._mergePoolIntoModel();
|
|
4491
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4423
4492
|
this.requestUpdate();
|
|
4424
4493
|
this._emitChange();
|
|
4425
4494
|
}
|
|
@@ -4479,11 +4548,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4479
4548
|
} else this._appendPanelToFirstStack(el.panelId);
|
|
4480
4549
|
normalize(this._model);
|
|
4481
4550
|
this.requestUpdate();
|
|
4482
|
-
this.
|
|
4483
|
-
detail: { panelId: el.panelId },
|
|
4484
|
-
bubbles: true,
|
|
4485
|
-
composed: true
|
|
4486
|
-
}));
|
|
4551
|
+
this._emitAdded(el.panelId);
|
|
4487
4552
|
this._emitChange();
|
|
4488
4553
|
return true;
|
|
4489
4554
|
}
|
|
@@ -4506,11 +4571,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4506
4571
|
this._scanPanels().find((p) => p.panelId === panelId)?.remove();
|
|
4507
4572
|
normalize(this._model);
|
|
4508
4573
|
this.requestUpdate();
|
|
4509
|
-
this.
|
|
4510
|
-
detail: { panelId },
|
|
4511
|
-
bubbles: true,
|
|
4512
|
-
composed: true
|
|
4513
|
-
}));
|
|
4574
|
+
this._emitRemoved(panelId);
|
|
4514
4575
|
this._emitChange();
|
|
4515
4576
|
return true;
|
|
4516
4577
|
}
|
|
@@ -4753,7 +4814,10 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4753
4814
|
* {@link endExternalDrop} when the drag leaves or ends.
|
|
4754
4815
|
*/
|
|
4755
4816
|
previewExternalDrop(clientX, clientY, panelId = `__external__`, kind) {
|
|
4756
|
-
this.setDragActive(true
|
|
4817
|
+
this.setDragActive(true, {
|
|
4818
|
+
panelId,
|
|
4819
|
+
kind
|
|
4820
|
+
});
|
|
4757
4821
|
const zone = this.computeDropZone(clientX, clientY, panelId, kind);
|
|
4758
4822
|
this.setDropZone(zone);
|
|
4759
4823
|
return zone === null ? null : zoneToTarget(zone);
|
|
@@ -4769,11 +4833,12 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4769
4833
|
* panel lands where a drop there would put it (respecting `accepts` /
|
|
4770
4834
|
* `canAccept` and leaf content rules); without them, or when the point
|
|
4771
4835
|
* misses the host, it goes into the first stack admitting its kind.
|
|
4772
|
-
* Returns the created element, or null when a panel
|
|
4773
|
-
*
|
|
4836
|
+
* Returns the created element, or null when a panel with that id is
|
|
4837
|
+
* already docked here or its kind is refused by `acceptsKinds`.
|
|
4774
4838
|
*/
|
|
4775
4839
|
acceptExternalPanel(snapshot, at) {
|
|
4776
4840
|
if (collectPanelIds(this._model).includes(snapshot.panelId)) return null;
|
|
4841
|
+
if (this.acceptsKinds !== null && !this.acceptsKinds.includes(normalizeKind(snapshot.kind))) return null;
|
|
4777
4842
|
const el = document.createElement(`ixfx-dock-panel`);
|
|
4778
4843
|
el.panelId = snapshot.panelId;
|
|
4779
4844
|
if (snapshot.title !== void 0) el.title = snapshot.title;
|
|
@@ -4784,20 +4849,16 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4784
4849
|
if (`accepts` in snapshot && snapshot.accepts) el.setAttribute(`accepts`, snapshot.accepts);
|
|
4785
4850
|
if (`contentHTML` in snapshot && snapshot.contentHTML) el.innerHTML = snapshot.contentHTML;
|
|
4786
4851
|
this._returnAllToolbars();
|
|
4787
|
-
this.appendChild(el);
|
|
4788
4852
|
this._pool = [...this._pool, el];
|
|
4789
4853
|
this._appendPanelToFirstStack(el.panelId);
|
|
4854
|
+
this.appendChild(el);
|
|
4790
4855
|
normalize(this._model);
|
|
4791
4856
|
this.endExternalDrop();
|
|
4792
4857
|
const zone = at ? this.computeDropZone(at.clientX, at.clientY, el.panelId) : null;
|
|
4793
4858
|
if (zone !== null) this._applyZone(el.panelId, zone);
|
|
4794
4859
|
normalize(this._model);
|
|
4795
4860
|
this.requestUpdate();
|
|
4796
|
-
this.
|
|
4797
|
-
detail: { panelId: el.panelId },
|
|
4798
|
-
bubbles: true,
|
|
4799
|
-
composed: true
|
|
4800
|
-
}));
|
|
4861
|
+
this._emitAdded(el.panelId);
|
|
4801
4862
|
this._emitChange();
|
|
4802
4863
|
return el;
|
|
4803
4864
|
}
|
|
@@ -4816,6 +4877,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4816
4877
|
w: r.width,
|
|
4817
4878
|
h: r.height
|
|
4818
4879
|
});
|
|
4880
|
+
const splitsAllowed = tokenAllows(this.accepts, `horizontal`) || tokenAllows(this.accepts, `vertical`);
|
|
4819
4881
|
for (const path of collectStackPaths(this._model)) {
|
|
4820
4882
|
const leaf = this.shadowRoot?.querySelector(`[data-dock-path="${path.join(`-`)}"]`);
|
|
4821
4883
|
if (!leaf) continue;
|
|
@@ -4823,7 +4885,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4823
4885
|
if (clientX < leafRect.left || clientX > leafRect.right || clientY < leafRect.top || clientY > leafRect.bottom) continue;
|
|
4824
4886
|
const stack = findNode(this._model, path);
|
|
4825
4887
|
if (stack === null || !isStack(stack)) continue;
|
|
4826
|
-
const strip = leaf.querySelector(`ixfx-tab-list`);
|
|
4888
|
+
const strip = leaf.querySelector(`ixfx-tab-list`) ?? leaf.querySelector(`.ghost-strip`);
|
|
4827
4889
|
if (strip !== null) {
|
|
4828
4890
|
const stripRect = strip.getBoundingClientRect();
|
|
4829
4891
|
if (clientX >= stripRect.left && clientX <= stripRect.right && clientY >= stripRect.top && clientY <= stripRect.bottom) {
|
|
@@ -4842,7 +4904,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4842
4904
|
}
|
|
4843
4905
|
const relX = (clientX - leafRect.left) / Math.max(leafRect.width, 1);
|
|
4844
4906
|
const relY = (clientY - leafRect.top) / Math.max(leafRect.height, 1);
|
|
4845
|
-
if (relX >= BAND && relX <= .75 && relY >= BAND && relY <= .75) {
|
|
4907
|
+
if (!splitsAllowed || relX >= BAND && relX <= .75 && relY >= BAND && relY <= .75) {
|
|
4846
4908
|
const zone = {
|
|
4847
4909
|
host: this,
|
|
4848
4910
|
operation: `tabs`,
|
|
@@ -4956,6 +5018,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4956
5018
|
return this._zoneAllowed(panelId, zone, resolvedKind) ? zone : null;
|
|
4957
5019
|
}
|
|
4958
5020
|
_zoneAllowed(panelId, zone, kind) {
|
|
5021
|
+
if (this.acceptsKinds !== null && !collectPanelIds(this._model).includes(panelId) && !this.acceptsKinds.includes(normalizeKind(kind))) return false;
|
|
4959
5022
|
if (!tokenAllows(this.accepts, operationToToken(zone.operation))) return false;
|
|
4960
5023
|
const stack = findNode(this._model, zone.targetPath);
|
|
4961
5024
|
if (stack !== null && isStack(stack) && stack.panels.length === 1) {
|
|
@@ -4982,6 +5045,11 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4982
5045
|
}
|
|
4983
5046
|
this._applyZone(panelId, zone, sourceHost === void 0 || sourceHost === this);
|
|
4984
5047
|
this._commit();
|
|
5048
|
+
if (sourceHost !== void 0 && sourceHost !== this) this._emit(`dock-panel-moved`, {
|
|
5049
|
+
panelId,
|
|
5050
|
+
sourceHost,
|
|
5051
|
+
targetHost: this
|
|
5052
|
+
});
|
|
4985
5053
|
}
|
|
4986
5054
|
/**
|
|
4987
5055
|
* Move `panelId` (already present somewhere in the model) to the position
|
|
@@ -5022,26 +5090,34 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5022
5090
|
}
|
|
5023
5091
|
normalize(this._model);
|
|
5024
5092
|
this._pool = this._pool.filter((p) => p !== el);
|
|
5025
|
-
|
|
5093
|
+
this._toolbarsOut.delete(panelId);
|
|
5094
|
+
this._emitRemoved(panelId, target);
|
|
5095
|
+
if (el !== void 0) target.adoptPanelElement(el, this);
|
|
5026
5096
|
this.requestUpdate();
|
|
5097
|
+
this._emitChange();
|
|
5027
5098
|
}
|
|
5028
|
-
/**
|
|
5029
|
-
|
|
5030
|
-
|
|
5099
|
+
/**
|
|
5100
|
+
* Adopt a panel element from another host (the one sanctioned reparent).
|
|
5101
|
+
* `sourceHost` is reported in `dock-panel-added`.
|
|
5102
|
+
*/
|
|
5103
|
+
adoptPanelElement(el, sourceHost = null) {
|
|
5031
5104
|
if (!this._pool.some((p) => p.panelId === el.panelId)) this._pool = [...this._pool, el];
|
|
5032
|
-
this._appendPanelToFirstStack(el.panelId);
|
|
5105
|
+
if (!collectPanelIds(this._model).includes(el.panelId)) this._appendPanelToFirstStack(el.panelId);
|
|
5106
|
+
this.appendChild(el);
|
|
5033
5107
|
normalize(this._model);
|
|
5034
|
-
this.
|
|
5035
|
-
detail: { panelId: el.panelId },
|
|
5036
|
-
bubbles: true,
|
|
5037
|
-
composed: true
|
|
5038
|
-
}));
|
|
5108
|
+
this._emitAdded(el.panelId, sourceHost);
|
|
5039
5109
|
}
|
|
5040
|
-
|
|
5110
|
+
/**
|
|
5111
|
+
* `drag` names the panel in flight when this host may receive it; it drives
|
|
5112
|
+
* the drop hint over a leaf whose tab strip is hidden.
|
|
5113
|
+
*/
|
|
5114
|
+
setDragActive(active, drag) {
|
|
5115
|
+
const next = active && drag !== void 0 ? drag : null;
|
|
5041
5116
|
if (this._dragActive !== active) {
|
|
5042
5117
|
this._dragActive = active;
|
|
5043
5118
|
this.requestUpdate();
|
|
5044
5119
|
}
|
|
5120
|
+
if (this._dragPanel?.panelId !== next?.panelId || this._dragPanel?.kind !== next?.kind) this._dragPanel = next;
|
|
5045
5121
|
}
|
|
5046
5122
|
setDropZone(zone) {
|
|
5047
5123
|
if (this._dropZone !== zone) {
|
|
@@ -5133,6 +5209,29 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5133
5209
|
}
|
|
5134
5210
|
}
|
|
5135
5211
|
}
|
|
5212
|
+
/**
|
|
5213
|
+
* Start a panel drag from an app-supplied handle — the way to move a panel
|
|
5214
|
+
* whose tab strip is hidden. Call it from the handle's `pointerdown`. The
|
|
5215
|
+
* drag begins once the pointer moves a few pixels (a plain click is left
|
|
5216
|
+
* alone) and then behaves exactly like a tab-item drag. Returns false when
|
|
5217
|
+
* the panel is not docked here or the press is not a primary-button press.
|
|
5218
|
+
*/
|
|
5219
|
+
beginPanelDrag(panelId, event) {
|
|
5220
|
+
if (event.button !== 0 || !collectPanelIds(this._model).includes(panelId)) return false;
|
|
5221
|
+
this._armPanelDrag(panelId, event);
|
|
5222
|
+
return true;
|
|
5223
|
+
}
|
|
5224
|
+
_armPanelDrag(panelId, event) {
|
|
5225
|
+
this._tabDragPending = {
|
|
5226
|
+
panelId,
|
|
5227
|
+
pointerId: event.pointerId,
|
|
5228
|
+
startX: event.clientX,
|
|
5229
|
+
startY: event.clientY
|
|
5230
|
+
};
|
|
5231
|
+
window.addEventListener(`pointermove`, this._onTabDragMove);
|
|
5232
|
+
window.addEventListener(`pointerup`, this._onTabDragUp);
|
|
5233
|
+
window.addEventListener(`pointercancel`, this._onTabDragUp);
|
|
5234
|
+
}
|
|
5136
5235
|
_teardownTabDragListeners() {
|
|
5137
5236
|
window.removeEventListener(`pointermove`, this._onTabDragMove);
|
|
5138
5237
|
window.removeEventListener(`pointerup`, this._onTabDragUp);
|
|
@@ -5214,13 +5313,44 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5214
5313
|
_returnAllToolbars() {
|
|
5215
5314
|
for (const [panelId, nodes] of [...this._toolbarsOut]) this._returnToolbar(panelId, nodes);
|
|
5216
5315
|
}
|
|
5217
|
-
|
|
5218
|
-
|
|
5219
|
-
|
|
5316
|
+
/** Dispatch a bubbling, composed event; returns false when a cancelable one was cancelled. */
|
|
5317
|
+
_emit(type, detail, cancelable = false) {
|
|
5318
|
+
return this.dispatchEvent(new CustomEvent(type, {
|
|
5319
|
+
detail,
|
|
5220
5320
|
bubbles: true,
|
|
5221
|
-
composed: true
|
|
5321
|
+
composed: true,
|
|
5322
|
+
cancelable
|
|
5222
5323
|
}));
|
|
5223
5324
|
}
|
|
5325
|
+
_emitAdded(panelId, sourceHost = null) {
|
|
5326
|
+
this._emit(`dock-panel-added`, {
|
|
5327
|
+
panelId,
|
|
5328
|
+
sourceHost,
|
|
5329
|
+
targetHost: this
|
|
5330
|
+
});
|
|
5331
|
+
}
|
|
5332
|
+
_emitRemoved(panelId, targetHost = null) {
|
|
5333
|
+
this._emit(`dock-panel-removed`, {
|
|
5334
|
+
panelId,
|
|
5335
|
+
sourceHost: this,
|
|
5336
|
+
targetHost
|
|
5337
|
+
});
|
|
5338
|
+
}
|
|
5339
|
+
/** Announce `dock-stack-empty` for each stack that lost its last panel since the last change. */
|
|
5340
|
+
_announceEmptiedStacks() {
|
|
5341
|
+
const now = snapshotNonEmptyStacks(this._model);
|
|
5342
|
+
const emptied = findEmptiedStacks(this._liveStacks, now);
|
|
5343
|
+
this._liveStacks = now;
|
|
5344
|
+
for (const stack of emptied) this._emit(`dock-stack-empty`, {
|
|
5345
|
+
name: stack.name ?? null,
|
|
5346
|
+
hostEmpty: now.size === 0
|
|
5347
|
+
});
|
|
5348
|
+
}
|
|
5349
|
+
_emitChange() {
|
|
5350
|
+
const layout = this.saveLayout();
|
|
5351
|
+
this._announceEmptiedStacks();
|
|
5352
|
+
this._emit(`dock-change`, { layout });
|
|
5353
|
+
}
|
|
5224
5354
|
render() {
|
|
5225
5355
|
return html`
|
|
5226
5356
|
<div class="root">
|
|
@@ -5291,6 +5421,12 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5291
5421
|
</div>
|
|
5292
5422
|
`);
|
|
5293
5423
|
const toolbarSlot = stack.name !== void 0 && this._toolbarSlots.has(`toolbar-${stack.name}`) ? html`<slot name="toolbar-${stack.name}" slot="toolbar"></slot>` : nothing;
|
|
5424
|
+
if (this._stripHidden(stack)) return leafAttrs(html`
|
|
5425
|
+
${this._renderDropHint(stack, path)}
|
|
5426
|
+
<div class="leaf-body">
|
|
5427
|
+
<slot name="dock-panel-${stack.active}"></slot>
|
|
5428
|
+
</div>
|
|
5429
|
+
`);
|
|
5294
5430
|
return leafAttrs(html`
|
|
5295
5431
|
<ixfx-tab-list
|
|
5296
5432
|
class="strip"
|
|
@@ -5300,6 +5436,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5300
5436
|
?hide-labels=${stack.hideLabels === true}
|
|
5301
5437
|
@change=${(e) => this._onTabChange(e, path)}
|
|
5302
5438
|
@pointerdown=${this._onStripPointerDown}
|
|
5439
|
+
@contextmenu=${this._onStripContextMenu}
|
|
5303
5440
|
>
|
|
5304
5441
|
${repeat(stack.panels, (id) => id, (id) => this._renderTabItem(stack, id))}
|
|
5305
5442
|
${toolbarSlot}
|
|
@@ -5308,6 +5445,34 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5308
5445
|
<slot name="dock-panel-${stack.active}"></slot>
|
|
5309
5446
|
</div>
|
|
5310
5447
|
`);
|
|
5448
|
+
}
|
|
5449
|
+
/**
|
|
5450
|
+
* While a drag that this leaf would accept is in flight, overlay a compact
|
|
5451
|
+
* strip stand-in on the hidden strip's slot: it shows where the dropped tab
|
|
5452
|
+
* will land (the overlay takes no layout space, so nothing jumps).
|
|
5453
|
+
*/
|
|
5454
|
+
_renderDropHint(stack, path) {
|
|
5455
|
+
const drag = this._dragPanel;
|
|
5456
|
+
if (!this._dragActive || drag === null || stack.panels[0] === drag.panelId) return nothing;
|
|
5457
|
+
const probe = {
|
|
5458
|
+
host: this,
|
|
5459
|
+
operation: `tabs`,
|
|
5460
|
+
targetPath: path,
|
|
5461
|
+
side: `after`,
|
|
5462
|
+
rect: {
|
|
5463
|
+
x: 0,
|
|
5464
|
+
y: 0,
|
|
5465
|
+
w: 0,
|
|
5466
|
+
h: 0
|
|
5467
|
+
}
|
|
5468
|
+
};
|
|
5469
|
+
if (!this._zoneAllowed(drag.panelId, probe, drag.kind)) return nothing;
|
|
5470
|
+
const id = stack.panels[0];
|
|
5471
|
+
return html`
|
|
5472
|
+
<div class="ghost-strip" part="drop-hint">
|
|
5473
|
+
<span class="ghost-tab">${this._findPanelEl(id)?.title || id}</span>
|
|
5474
|
+
</div>
|
|
5475
|
+
`;
|
|
5311
5476
|
}
|
|
5312
5477
|
_renderTabItem(stack, panelId) {
|
|
5313
5478
|
const el = this._findPanelEl(panelId);
|
|
@@ -5322,7 +5487,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5322
5487
|
`;
|
|
5323
5488
|
}
|
|
5324
5489
|
_stripCaretRect(strip, gapIndex, hostRect) {
|
|
5325
|
-
const items = Array.from(strip.querySelectorAll(
|
|
5490
|
+
const items = Array.from(strip.querySelectorAll(STRIP_ITEMS));
|
|
5326
5491
|
if (items.length === 0) return void 0;
|
|
5327
5492
|
const index = Math.max(0, Math.min(gapIndex ?? items.length, items.length));
|
|
5328
5493
|
const edge = index < items.length ? items[index].getBoundingClientRect().left : items[items.length - 1].getBoundingClientRect().right;
|
|
@@ -5369,6 +5534,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5369
5534
|
min-height: 0;
|
|
5370
5535
|
box-sizing: border-box;
|
|
5371
5536
|
overflow: hidden;
|
|
5537
|
+
position: relative;
|
|
5372
5538
|
border: 1px solid var(--surface-4);
|
|
5373
5539
|
border-radius: var(--radius-m);
|
|
5374
5540
|
}
|
|
@@ -5406,6 +5572,32 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5406
5572
|
padding-right: var(--space-xs);
|
|
5407
5573
|
}
|
|
5408
5574
|
|
|
5575
|
+
/* Drop hint over a hidden strip: overlaid, so it reserves no height. */
|
|
5576
|
+
.ghost-strip {
|
|
5577
|
+
position: absolute;
|
|
5578
|
+
inset: 0 0 auto 0;
|
|
5579
|
+
height: var(--dock-tab-height, 30px);
|
|
5580
|
+
z-index: 1;
|
|
5581
|
+
display: flex;
|
|
5582
|
+
align-items: center;
|
|
5583
|
+
box-sizing: border-box;
|
|
5584
|
+
padding: 0 var(--space-s);
|
|
5585
|
+
background: var(--surface-3);
|
|
5586
|
+
border-bottom: 1px solid var(--surface-4);
|
|
5587
|
+
color: var(--surface-3-text);
|
|
5588
|
+
font-size: var(--text-m);
|
|
5589
|
+
pointer-events: none;
|
|
5590
|
+
}
|
|
5591
|
+
|
|
5592
|
+
.ghost-tab {
|
|
5593
|
+
overflow: hidden;
|
|
5594
|
+
text-overflow: ellipsis;
|
|
5595
|
+
white-space: nowrap;
|
|
5596
|
+
text-decoration: underline;
|
|
5597
|
+
text-decoration-thickness: 2px;
|
|
5598
|
+
text-underline-offset: 4px;
|
|
5599
|
+
}
|
|
5600
|
+
|
|
5409
5601
|
.leaf-body {
|
|
5410
5602
|
flex: 1;
|
|
5411
5603
|
min-height: 0;
|
|
@@ -5497,11 +5689,24 @@ __decorate([property({
|
|
|
5497
5689
|
type: Boolean,
|
|
5498
5690
|
attribute: `isolated`
|
|
5499
5691
|
})], DockHostElement.prototype, "isolated", void 0);
|
|
5692
|
+
__decorate([property({
|
|
5693
|
+
type: Boolean,
|
|
5694
|
+
attribute: `hide-single-tab-strip`
|
|
5695
|
+
})], DockHostElement.prototype, "hideSingleTabStrip", void 0);
|
|
5696
|
+
__decorate([property({
|
|
5697
|
+
type: String,
|
|
5698
|
+
attribute: `family`
|
|
5699
|
+
})], DockHostElement.prototype, "family", void 0);
|
|
5700
|
+
__decorate([property({
|
|
5701
|
+
attribute: `accepts-kinds`,
|
|
5702
|
+
converter: { fromAttribute: (value) => value === null ? null : value.split(/\s+/).filter((k) => k.length > 0) }
|
|
5703
|
+
})], DockHostElement.prototype, "acceptsKinds", void 0);
|
|
5500
5704
|
__decorate([property({ attribute: false })], DockHostElement.prototype, "canAccept", void 0);
|
|
5501
5705
|
__decorate([state()], DockHostElement.prototype, "_model", void 0);
|
|
5502
5706
|
__decorate([state()], DockHostElement.prototype, "_pool", void 0);
|
|
5503
5707
|
__decorate([state()], DockHostElement.prototype, "_dropZone", void 0);
|
|
5504
5708
|
__decorate([state()], DockHostElement.prototype, "_dragActive", void 0);
|
|
5709
|
+
__decorate([state()], DockHostElement.prototype, "_dragPanel", void 0);
|
|
5505
5710
|
__decorate([state()], DockHostElement.prototype, "_junctions", void 0);
|
|
5506
5711
|
DockHostElement = __decorate([safeCustomElement(`ixfx-dock-host`)], DockHostElement);
|
|
5507
5712
|
/** `split-horizontal` = horizontal divider = panels stacked vertically. */
|
|
@@ -5551,13 +5756,18 @@ function normalizeKind(kind) {
|
|
|
5551
5756
|
function parsePath(pathStr) {
|
|
5552
5757
|
return pathStr.length === 0 ? [] : pathStr.split(`-`).filter((s) => s.length > 0).map(Number);
|
|
5553
5758
|
}
|
|
5759
|
+
/** The tab item in an event's composed path, if it has a panel id. */
|
|
5760
|
+
function tabItemIn(path) {
|
|
5761
|
+
const item = path.find((node) => node instanceof HTMLElement && node.tagName === `IXFX-TAB-LIST-ITEM`);
|
|
5762
|
+
return item !== void 0 && item.id ? item : null;
|
|
5763
|
+
}
|
|
5554
5764
|
/** Toolbar-slot light children of a dock panel. */
|
|
5555
5765
|
function toolbarNodesOf(el) {
|
|
5556
5766
|
return Array.from(el.children).filter((c) => c instanceof HTMLElement && c.getAttribute(`slot`) === `toolbar`);
|
|
5557
5767
|
}
|
|
5558
5768
|
/** Nearest strip gap to the pointer (reuses the tab-list midpoint rule). */
|
|
5559
5769
|
function computeStripGapIndex(strip, clientX, _clientY) {
|
|
5560
|
-
const items = Array.from(strip.querySelectorAll(
|
|
5770
|
+
const items = Array.from(strip.querySelectorAll(STRIP_ITEMS));
|
|
5561
5771
|
if (items.length === 0) return 0;
|
|
5562
5772
|
for (let i = 0; i < items.length; i++) {
|
|
5563
5773
|
const r = items[i].getBoundingClientRect();
|
|
@@ -16057,4 +16267,4 @@ function init() {
|
|
|
16057
16267
|
console.log(`Init`);
|
|
16058
16268
|
}
|
|
16059
16269
|
//#endregion
|
|
16060
|
-
export { AcTextElement, AcTokenElement, BottomDrawerElement, ButtonElement, Checkbox, CheckedSelect, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DEFAULT_SIBLING_SPACING, DataController, DataDisplayComponent, DataGridElement, DataTableElement, DetailListElement, DockHostElement, DockPanelElement, EMPTY_GROUP_LABEL, EditableLabel, EditableNumber, FlatListElement, FormElement, FormGroupElement, FormOptionsElement, FormPartElement, FormRowElement, GridListElement, GroupedItemListerElement, HyperbolicTreeListElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IcicleTreeListElement, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, KeyedElementIndex, LIST_ITEM_MOTION_MS, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, ListDragSelectController, ListGroupHeaderElement, ListNativeDragController, ListSearchController, ListSelectionController, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, MulticolListElement, NarrowedTextElement, NotificationManager, NotificationPillElement, PanTextElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SelectHorizElement, ShapefillValueElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TickledController, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeDropController, TreeKeyboardNavController, TreeListElement, TreemapListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applyIsometry, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clampToDisk, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, composeIsometry, computeCanonicalPositions, computeColour, computeHyperbolicLayout, computeIcicleLayout, computeLeafGeoms, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, decomposeViewIsometry, defaultGroupLabel, distribute, dropTargetFor, euclideanRadiusForHyperbolicDistance, extractStack, findHyperbolicIdOf, findHyperbolicKeyPath, findHyperbolicNode, findHyperbolicPath, findHyperbolicPathById, findIcicleNode, findIciclePath, findNode, findPanelNode, findParentOf, findStackOf, findStackPathByName, findTreemapNode, findTreemapPath, geodesicInterpolate, geodesicPath, geodesicSegment, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, hyperbolicBranchId, hyperbolicChildIds, hyperbolicDistanceForEuclideanRadius, hyperbolicIdDepth, hyperbolicRelativeFrame, iconBus, identityIsometry, init, insertBeside, invertIsometry, isDragging, isHyperbolicDescendantId, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, mobiusAdd, mobiusFromOrigin, mobiusToOrigin, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, norm, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, partitionByGroup, poincareDistance, pointerOverAnyHost, prefersReducedMotion, preserveRestoreWeights, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveGroupKey, resolveLeafPath, resolveTracks, rotationIsometry, serializeLayout, setActive, setIconFont, setPanelRestoreWeight, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toGroupKey, toSnapshot, toggleInSet, toolbarGapIndex, translationFromOrigin, viewIsometry, walk, wrapRoot };
|
|
16270
|
+
export { AcTextElement, AcTokenElement, BottomDrawerElement, ButtonElement, Checkbox, CheckedSelect, ColourPicker, ColourPickerPopup, CrumbNavigationElement, CrumbPathController, CrumbPathElement, DEFAULT_SIBLING_SPACING, DataController, DataDisplayComponent, DataGridElement, DataTableElement, DetailListElement, DockHostElement, DockPanelElement, EMPTY_GROUP_LABEL, EditableLabel, EditableNumber, FlatListElement, FormElement, FormGroupElement, FormOptionsElement, FormPartElement, FormRowElement, GridListElement, GroupedItemListerElement, HyperbolicTreeListElement, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IcicleTreeListElement, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, IxfxHexEditorElement, IxfxIconElement, IxfxTimelineElement, KeyedElementIndex, LIST_ITEM_MOTION_MS, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LedElement, ListDragSelectController, ListGroupHeaderElement, ListNativeDragController, ListSearchController, ListSelectionController, menu_exports as Menu, MillerBaseElement, MillerListElement, MillerTreeController, MulticolListElement, NarrowedTextElement, NotificationManager, NotificationPillElement, PanTextElement, PanelElement, PanelGroupElement, PlotDataSeries, PlotHistogram, PlotMultiAxis, PlotSingleAxis, PlotXyAxis, PolarPad, RadialInputElement, RadioGroup, RangeElement, RangeInput, RangeMultiElement, RatingElement, SUNBURST_PATH_SEPARATOR, SelectHorizElement, ShapefillValueElement, SliderInputElement, SlidingNumberElement, SnackbarElement, SnapContainer, SplitButton, SplitLayoutElement, SplitPanelElement, SunburstTreeListElement, SwipeElement, TabController, TabListElement, TabListItemElement, TabPanelElement, TabPanelsElement, TextShimmerElement, TickledController, TimelineController, TimelineTrackTabElement, TitlebarElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TransitoryLabelElement, TreeBaseElement, TreeController, TreeDataModel, TreeDropController, TreeKeyboardNavController, TreeListElement, TreemapListElement, TwoSplitLayoutElement, VerticalListElement, XyPad, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applyIsometry, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clampToDisk, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, composeIsometry, computeCanonicalPositions, computeColour, computeHyperbolicLayout, computeIcicleLayout, computeLeafGeoms, computeSunburstLayout, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createValueResolver, createVerticalListAdapter, decomposeViewIsometry, defaultGroupLabel, defaultSunburstValueAccessor, distribute, dropTargetFor, euclideanRadiusForHyperbolicDistance, extractStack, findEmptiedStacks, findHyperbolicIdOf, findHyperbolicKeyPath, findHyperbolicNode, findHyperbolicPath, findHyperbolicPathById, findIcicleNode, findIciclePath, findNode, findPanelNode, findParentOf, findStackOf, findStackPathByName, findSunburstId, findSunburstNodeById, findTreemapNode, findTreemapPath, geodesicInterpolate, geodesicPath, geodesicSegment, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, hyperbolicBranchId, hyperbolicChildIds, hyperbolicDistanceForEuclideanRadius, hyperbolicIdDepth, hyperbolicRelativeFrame, iconBus, identityIsometry, init, insertBeside, invertIsometry, isDragging, isHyperbolicDescendantId, isMultiMode, isSplit, isStack, isSunburstAncestorId, keyForElement, listItemFadeKeyframes, listSearchStyles, mobiusAdd, mobiusFromOrigin, mobiusToOrigin, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, norm, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, partitionByGroup, poincareDistance, pointerOverAnyHost, prefersReducedMotion, preserveRestoreWeights, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveGroupKey, resolveLeafPath, resolveTracks, rotationIsometry, serializeLayout, setActive, setIconFont, setPanelRestoreWeight, snapshotNonEmptyStacks, startListItemOutAnimation, sunburstChildId, sunburstHasChildren, sunburstIdToPath, sunburstParentId, sunburstPathToId, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toGroupKey, toSnapshot, toggleInSet, toolbarGapIndex, translationFromOrigin, viewIsometry, walk, wrapRoot };
|
package/dist/{list-native-drag-controller-NMspr0E1.d.ts → list-native-drag-controller-O2Nruqpi.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, N as ListDragEntry, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-
|
|
1
|
+
import { F as ListDragPreviewContext, I as ListDragPreviewRenderer, L as ListDragPreviewSourceResolver, N as ListDragEntry, R as ListDragSource, z as ListNativeDragStartDetail } from "./tree-component-C6UHO-w9.js";
|
|
2
2
|
import { ReactiveController, ReactiveControllerHost } from "lit";
|
|
3
3
|
//#region src/interaction/list-native-drag-controller.d.ts
|
|
4
4
|
type ListNativeDragControllerConfig<T> = {
|