@ixfx/components 0.15.3 → 0.15.4
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 +167 -13
- package/bundle/index.js +202 -164
- package/dist/ac-text.d.ts +1 -1
- package/dist/{ac-token-qEs3FsQv.d.ts → ac-token-Cq7lsYf-.d.ts} +1 -1
- package/dist/ac-token.d.ts +1 -1
- package/dist/colour-picker.d.ts +1 -1
- package/dist/crumbs.d.ts +2 -2
- package/dist/{data-grid-DmkId8bu.d.ts → data-grid-CbiubdG2.d.ts} +4 -4
- package/dist/data-grid.d.ts +2 -2
- package/dist/{detail-list-CmQqeXvp.d.ts → detail-list-ClkMV0SN.d.ts} +4 -4
- package/dist/detail-list.d.ts +3 -3
- package/dist/{flat-list-BmQBB3ZC.d.ts → flat-list-0xTZdXzh.d.ts} +3 -3
- package/dist/flat-list.d.ts +1 -1
- package/dist/{grid-list-BVsUEvgd.d.ts → grid-list-BnWJUIBC.d.ts} +3 -3
- package/dist/grid-list.d.ts +2 -2
- package/dist/{grouped-item-lister-DETte0Dh.d.ts → grouped-item-lister-Bhyo-dkH.d.ts} +1 -1
- package/dist/grouped-item-lister.d.ts +1 -1
- package/dist/{icon-CDGprSdE.d.ts → icon-DR_3rSyZ.d.ts} +1 -1
- package/dist/icons.d.ts +2 -2
- package/dist/incr-search.d.ts +1 -1
- package/dist/{index-DuhzWWTr.d.ts → index-BAuqR9El.d.ts} +28 -8
- package/dist/{index-BvoXLnBf.d.ts → index-BPTuCRGb.d.ts} +2 -2
- package/dist/{index-CoqtMSd9.d.ts → index-BUB5SICW.d.ts} +1 -1
- package/dist/{index-DN2BWctP.d.ts → index-Bz3loIAf.d.ts} +1 -1
- package/dist/{index-UvnoZUAo.d.ts → index-CJ5fshD3.d.ts} +1 -1
- package/dist/{index-DxyyVqzA.d.ts → index-cnaRPQPp.d.ts} +2 -2
- package/dist/{index-CYndvTWH.d.ts → index-garxxqgV.d.ts} +1 -1
- package/dist/index.d.ts +152 -27
- package/dist/index.js +272 -63
- package/dist/{labelled-input-base-DiTme1JO.d.ts → labelled-input-base-Dp_9KP0G.d.ts} +1 -1
- package/dist/labelled-radial-input.d.ts +2 -2
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-slider-input.d.ts +1 -1
- package/dist/list-group-header.d.ts +1 -1
- package/dist/{list-native-drag-controller-NMspr0E1.d.ts → list-native-drag-controller-O2Nruqpi.d.ts} +1 -1
- package/dist/{menu-item-bF6narIz.d.ts → menu-item-B0zqw2xp.d.ts} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/miller.d.ts +2 -2
- package/dist/panel.d.ts +1 -1
- package/dist/{split-layout-JK3xWVX2.d.ts → split-layout-C5SYbDrq.d.ts} +1 -1
- package/dist/split-layout.d.ts +1 -1
- package/dist/{tab-list-Df371rqw.d.ts → tab-list-wC0xNz1b.d.ts} +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/{titlebar-Tqu-VvMU.d.ts → titlebar-B5zSTZnF.d.ts} +1 -1
- package/dist/titlebar.d.ts +1 -1
- 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-B8FoU-pU.d.ts} +2 -2
- package/dist/vertical-list.d.ts +2 -2
- package/docs-user/dock.md +62 -1
- package/docs-user/index.json +2 -2
- package/docs-user/tree.md +39 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ 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";
|
|
@@ -2723,7 +2723,10 @@ function startDrag(panelId, sourceHost, pointerId, clientX, clientY, kind) {
|
|
|
2723
2723
|
ghost: createGhostForPanel(sourceHost, panelId),
|
|
2724
2724
|
outside: false
|
|
2725
2725
|
};
|
|
2726
|
-
for (const host of dragHosts) host.setDragActive(true)
|
|
2726
|
+
for (const host of dragHosts) host.setDragActive(true, hostsExchange(sourceHost, host) ? {
|
|
2727
|
+
panelId,
|
|
2728
|
+
kind
|
|
2729
|
+
} : void 0);
|
|
2727
2730
|
activeDrag.ghost?.move(clientX, clientY);
|
|
2728
2731
|
window.addEventListener(`pointermove`, onPointerMove);
|
|
2729
2732
|
window.addEventListener(`pointerup`, onPointerUp);
|
|
@@ -2788,10 +2791,18 @@ function onKeyDown(event) {
|
|
|
2788
2791
|
if (event.key !== `Escape`) return;
|
|
2789
2792
|
endDrag();
|
|
2790
2793
|
}
|
|
2794
|
+
/**
|
|
2795
|
+
* Whether `target` may receive panels dragged from `source`: always for the
|
|
2796
|
+
* same host; otherwise only when the source is not `isolated` and both hosts
|
|
2797
|
+
* share a `family`.
|
|
2798
|
+
*/
|
|
2799
|
+
function hostsExchange(source, target) {
|
|
2800
|
+
if (source === target) return true;
|
|
2801
|
+
return !source.isolated && source.family === target.family;
|
|
2802
|
+
}
|
|
2791
2803
|
function findDropZone(drag, clientX, clientY) {
|
|
2792
|
-
const sourceIsolated = drag.sourceHost.isolated;
|
|
2793
2804
|
for (const host of dragHosts) {
|
|
2794
|
-
if (
|
|
2805
|
+
if (!hostsExchange(drag.sourceHost, host)) continue;
|
|
2795
2806
|
const zone = host.computeDropZone(clientX, clientY, drag.panelId, drag.kind);
|
|
2796
2807
|
if (zone !== null) return zone;
|
|
2797
2808
|
}
|
|
@@ -2957,6 +2968,8 @@ function replaceNodeContents(target, source) {
|
|
|
2957
2968
|
else delete t.name;
|
|
2958
2969
|
if (source.hideLabels !== void 0) t.hideLabels = source.hideLabels;
|
|
2959
2970
|
else delete t.hideLabels;
|
|
2971
|
+
if (source.hideSingleTabStrip !== void 0) t.hideSingleTabStrip = source.hideSingleTabStrip;
|
|
2972
|
+
else delete t.hideSingleTabStrip;
|
|
2960
2973
|
delete t.collapsed;
|
|
2961
2974
|
delete t.preCollapseSize;
|
|
2962
2975
|
if (source.collapsed !== void 0) t.collapsed = source.collapsed;
|
|
@@ -2971,6 +2984,8 @@ function replaceNodeContents(target, source) {
|
|
|
2971
2984
|
delete stale.panels;
|
|
2972
2985
|
delete stale.active;
|
|
2973
2986
|
delete stale.name;
|
|
2987
|
+
delete stale.hideLabels;
|
|
2988
|
+
delete stale.hideSingleTabStrip;
|
|
2974
2989
|
delete stale.collapsed;
|
|
2975
2990
|
delete stale.preCollapseSize;
|
|
2976
2991
|
}
|
|
@@ -3387,6 +3402,8 @@ function moveLeafNodeToEdge(root, ref, edge) {
|
|
|
3387
3402
|
active: rest.active
|
|
3388
3403
|
};
|
|
3389
3404
|
if (rest.name !== void 0) remaining.name = rest.name;
|
|
3405
|
+
if (rest.hideLabels !== void 0) remaining.hideLabels = rest.hideLabels;
|
|
3406
|
+
if (rest.hideSingleTabStrip !== void 0) remaining.hideSingleTabStrip = rest.hideSingleTabStrip;
|
|
3390
3407
|
if (rest.collapsed !== void 0) remaining.collapsed = rest.collapsed;
|
|
3391
3408
|
if (rest.preCollapseSize !== void 0) remaining.preCollapseSize = rest.preCollapseSize;
|
|
3392
3409
|
replaceNodeContents(root, {
|
|
@@ -3436,6 +3453,7 @@ function serializeNode(node) {
|
|
|
3436
3453
|
};
|
|
3437
3454
|
if (node.name !== void 0) out.name = node.name;
|
|
3438
3455
|
if (node.hideLabels !== void 0) out.hideLabels = node.hideLabels;
|
|
3456
|
+
if (node.hideSingleTabStrip !== void 0) out.hideSingleTabStrip = node.hideSingleTabStrip;
|
|
3439
3457
|
if (node.collapsed !== void 0) out.collapsed = node.collapsed;
|
|
3440
3458
|
if (node.preCollapseSize !== void 0) out.preCollapseSize = node.preCollapseSize;
|
|
3441
3459
|
return out;
|
|
@@ -3465,6 +3483,36 @@ function parseLayout(json) {
|
|
|
3465
3483
|
return null;
|
|
3466
3484
|
}
|
|
3467
3485
|
}
|
|
3486
|
+
/** Every stack holding at least one panel, keyed by node identity. */
|
|
3487
|
+
function snapshotNonEmptyStacks(root) {
|
|
3488
|
+
const out = /* @__PURE__ */ new Map();
|
|
3489
|
+
const visit = (node) => {
|
|
3490
|
+
if (isStack(node)) {
|
|
3491
|
+
if (node.panels.length > 0) out.set(node, {
|
|
3492
|
+
name: node.name,
|
|
3493
|
+
key: node.panels.join(`\n`)
|
|
3494
|
+
});
|
|
3495
|
+
return;
|
|
3496
|
+
}
|
|
3497
|
+
node.children.forEach(visit);
|
|
3498
|
+
};
|
|
3499
|
+
visit(root);
|
|
3500
|
+
return out;
|
|
3501
|
+
}
|
|
3502
|
+
/**
|
|
3503
|
+
* Stacks in `before` that no longer hold their panels in `after`. A stack
|
|
3504
|
+
* node that was re-created with the same panels (some leaf moves rebuild
|
|
3505
|
+
* nodes) does not count as emptied.
|
|
3506
|
+
*/
|
|
3507
|
+
function findEmptiedStacks(before, after) {
|
|
3508
|
+
const afterKeys = new Set([...after.values()].map((s) => s.key));
|
|
3509
|
+
const emptied = [];
|
|
3510
|
+
for (const [node, snapshot] of before) {
|
|
3511
|
+
if (after.has(node) || afterKeys.has(snapshot.key)) continue;
|
|
3512
|
+
emptied.push(snapshot);
|
|
3513
|
+
}
|
|
3514
|
+
return emptied;
|
|
3515
|
+
}
|
|
3468
3516
|
//#endregion
|
|
3469
3517
|
//#region src/tabs/tab-list-item.ts
|
|
3470
3518
|
const resizeHandlers = /* @__PURE__ */ new WeakMap();
|
|
@@ -4078,6 +4126,8 @@ DockPanelElement = __decorate([safeCustomElement(`ixfx-dock-panel`)], DockPanelE
|
|
|
4078
4126
|
const BAND = .25;
|
|
4079
4127
|
/** Pointer movement threshold before a press becomes a dock drag (matches tab-list). */
|
|
4080
4128
|
const DRAG_THRESHOLD_PX$3 = 5;
|
|
4129
|
+
/** Tab items of a strip, or the stand-in tab of a hidden strip's drop hint. */
|
|
4130
|
+
const STRIP_ITEMS = `ixfx-tab-list-item, .ghost-tab`;
|
|
4081
4131
|
/** Tolerance (px) when matching a child gutter endpoint to a parent gutter line. */
|
|
4082
4132
|
const JUNCTION_TOL_PX = 6;
|
|
4083
4133
|
/** Junction points closer than this merge into one handle (a 4-way cross yields one per side). */
|
|
@@ -4088,10 +4138,15 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4088
4138
|
this.layout = null;
|
|
4089
4139
|
this.accepts = `tabs horizontal vertical`;
|
|
4090
4140
|
this.isolated = false;
|
|
4141
|
+
this.hideSingleTabStrip = false;
|
|
4142
|
+
this.family = ``;
|
|
4143
|
+
this.acceptsKinds = null;
|
|
4091
4144
|
this._model = createStack([]);
|
|
4092
4145
|
this._pool = [];
|
|
4093
4146
|
this._dropZone = null;
|
|
4094
4147
|
this._dragActive = false;
|
|
4148
|
+
this._dragPanel = null;
|
|
4149
|
+
this._liveStacks = /* @__PURE__ */ new Map();
|
|
4095
4150
|
this._junctions = [];
|
|
4096
4151
|
this._toolbarsOut = /* @__PURE__ */ new Map();
|
|
4097
4152
|
this._leafContentRules = /* @__PURE__ */ new Map();
|
|
@@ -4104,6 +4159,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4104
4159
|
this._toolbarObserver = null;
|
|
4105
4160
|
this._panelObservers = /* @__PURE__ */ new Map();
|
|
4106
4161
|
this._onDragStart = (event) => {
|
|
4162
|
+
if (event.composedPath().find((n) => n instanceof HTMLElement && n.tagName === `IXFX-DOCK-HOST`) !== this) return;
|
|
4107
4163
|
const { panelId, pointerId, clientX, clientY } = event.detail;
|
|
4108
4164
|
startDrag(panelId, this, pointerId, clientX, clientY, this._findPanelEl(panelId)?.kind);
|
|
4109
4165
|
};
|
|
@@ -4179,17 +4235,18 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4179
4235
|
if (!(node instanceof HTMLElement)) continue;
|
|
4180
4236
|
if (node.classList.contains(`list-toolbar`) || node.classList.contains(`close-btn`)) return;
|
|
4181
4237
|
}
|
|
4182
|
-
const item = path
|
|
4183
|
-
if (item === null
|
|
4184
|
-
this.
|
|
4238
|
+
const item = tabItemIn(path);
|
|
4239
|
+
if (item === null) return;
|
|
4240
|
+
this._armPanelDrag(item.id, event);
|
|
4241
|
+
};
|
|
4242
|
+
this._onStripContextMenu = (event) => {
|
|
4243
|
+
const item = tabItemIn(event.composedPath());
|
|
4244
|
+
if (item === null) return;
|
|
4245
|
+
if (!this._emit(`dock-tab-contextmenu`, {
|
|
4185
4246
|
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);
|
|
4247
|
+
clientX: event.clientX,
|
|
4248
|
+
clientY: event.clientY
|
|
4249
|
+
}, true)) event.preventDefault();
|
|
4193
4250
|
};
|
|
4194
4251
|
this._onTabDragMove = (event) => {
|
|
4195
4252
|
const pending = this._tabDragPending;
|
|
@@ -4218,6 +4275,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4218
4275
|
connectedCallback() {
|
|
4219
4276
|
super.connectedCallback();
|
|
4220
4277
|
this._buildInitialModel();
|
|
4278
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4221
4279
|
registerDockHost(this);
|
|
4222
4280
|
this.addEventListener(`dock-panel-drag-start`, this._onDragStart);
|
|
4223
4281
|
this._hostResizeObserver = new ResizeObserver(() => this._scheduleJunctions());
|
|
@@ -4256,8 +4314,25 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4256
4314
|
if (parsed) {
|
|
4257
4315
|
this._model = parsed.root;
|
|
4258
4316
|
this._mergePoolIntoModel();
|
|
4317
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4259
4318
|
}
|
|
4260
4319
|
}
|
|
4320
|
+
this._returnToolbarsOfHiddenStrips();
|
|
4321
|
+
}
|
|
4322
|
+
/**
|
|
4323
|
+
* A toolbar parked in a tab item would be destroyed with the strip, so
|
|
4324
|
+
* hand it back before a hidden strip stops rendering.
|
|
4325
|
+
*/
|
|
4326
|
+
_returnToolbarsOfHiddenStrips() {
|
|
4327
|
+
for (const [panelId, nodes] of [...this._toolbarsOut]) {
|
|
4328
|
+
const path = findStackOf(this._model, panelId);
|
|
4329
|
+
const stack = path === null ? null : findNode(this._model, path);
|
|
4330
|
+
if (stack === null || !isStack(stack) || this._stripHidden(stack)) this._returnToolbar(panelId, nodes);
|
|
4331
|
+
}
|
|
4332
|
+
}
|
|
4333
|
+
/** Whether `stack` currently renders without a tab strip. */
|
|
4334
|
+
_stripHidden(stack) {
|
|
4335
|
+
return stack.panels.length === 1 && (stack.hideSingleTabStrip ?? this.hideSingleTabStrip);
|
|
4261
4336
|
}
|
|
4262
4337
|
updated(changed) {
|
|
4263
4338
|
super.updated(changed);
|
|
@@ -4386,11 +4461,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4386
4461
|
this._unobservePanel(el);
|
|
4387
4462
|
this._toolbarsOut.delete(el.panelId);
|
|
4388
4463
|
this._removeFromModel(el.panelId);
|
|
4389
|
-
this.
|
|
4390
|
-
detail: { panelId: el.panelId },
|
|
4391
|
-
bubbles: true,
|
|
4392
|
-
composed: true
|
|
4393
|
-
}));
|
|
4464
|
+
this._emitRemoved(el.panelId);
|
|
4394
4465
|
structuralChange = true;
|
|
4395
4466
|
}
|
|
4396
4467
|
for (const el of current) {
|
|
@@ -4398,11 +4469,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4398
4469
|
if (!collectPanelIds(this._model).includes(el.panelId)) {
|
|
4399
4470
|
this._appendPanelToFirstStack(el.panelId);
|
|
4400
4471
|
normalize(this._model);
|
|
4401
|
-
this.
|
|
4402
|
-
detail: { panelId: el.panelId },
|
|
4403
|
-
bubbles: true,
|
|
4404
|
-
composed: true
|
|
4405
|
-
}));
|
|
4472
|
+
this._emitAdded(el.panelId);
|
|
4406
4473
|
structuralChange = true;
|
|
4407
4474
|
}
|
|
4408
4475
|
}
|
|
@@ -4420,6 +4487,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4420
4487
|
this._loadGeneration++;
|
|
4421
4488
|
this._model = normalize(cloneNode(layout.root));
|
|
4422
4489
|
this._mergePoolIntoModel();
|
|
4490
|
+
this._liveStacks = snapshotNonEmptyStacks(this._model);
|
|
4423
4491
|
this.requestUpdate();
|
|
4424
4492
|
this._emitChange();
|
|
4425
4493
|
}
|
|
@@ -4479,11 +4547,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4479
4547
|
} else this._appendPanelToFirstStack(el.panelId);
|
|
4480
4548
|
normalize(this._model);
|
|
4481
4549
|
this.requestUpdate();
|
|
4482
|
-
this.
|
|
4483
|
-
detail: { panelId: el.panelId },
|
|
4484
|
-
bubbles: true,
|
|
4485
|
-
composed: true
|
|
4486
|
-
}));
|
|
4550
|
+
this._emitAdded(el.panelId);
|
|
4487
4551
|
this._emitChange();
|
|
4488
4552
|
return true;
|
|
4489
4553
|
}
|
|
@@ -4506,11 +4570,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4506
4570
|
this._scanPanels().find((p) => p.panelId === panelId)?.remove();
|
|
4507
4571
|
normalize(this._model);
|
|
4508
4572
|
this.requestUpdate();
|
|
4509
|
-
this.
|
|
4510
|
-
detail: { panelId },
|
|
4511
|
-
bubbles: true,
|
|
4512
|
-
composed: true
|
|
4513
|
-
}));
|
|
4573
|
+
this._emitRemoved(panelId);
|
|
4514
4574
|
this._emitChange();
|
|
4515
4575
|
return true;
|
|
4516
4576
|
}
|
|
@@ -4753,7 +4813,10 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4753
4813
|
* {@link endExternalDrop} when the drag leaves or ends.
|
|
4754
4814
|
*/
|
|
4755
4815
|
previewExternalDrop(clientX, clientY, panelId = `__external__`, kind) {
|
|
4756
|
-
this.setDragActive(true
|
|
4816
|
+
this.setDragActive(true, {
|
|
4817
|
+
panelId,
|
|
4818
|
+
kind
|
|
4819
|
+
});
|
|
4757
4820
|
const zone = this.computeDropZone(clientX, clientY, panelId, kind);
|
|
4758
4821
|
this.setDropZone(zone);
|
|
4759
4822
|
return zone === null ? null : zoneToTarget(zone);
|
|
@@ -4769,11 +4832,12 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4769
4832
|
* panel lands where a drop there would put it (respecting `accepts` /
|
|
4770
4833
|
* `canAccept` and leaf content rules); without them, or when the point
|
|
4771
4834
|
* misses the host, it goes into the first stack admitting its kind.
|
|
4772
|
-
* Returns the created element, or null when a panel
|
|
4773
|
-
*
|
|
4835
|
+
* Returns the created element, or null when a panel with that id is
|
|
4836
|
+
* already docked here or its kind is refused by `acceptsKinds`.
|
|
4774
4837
|
*/
|
|
4775
4838
|
acceptExternalPanel(snapshot, at) {
|
|
4776
4839
|
if (collectPanelIds(this._model).includes(snapshot.panelId)) return null;
|
|
4840
|
+
if (this.acceptsKinds !== null && !this.acceptsKinds.includes(normalizeKind(snapshot.kind))) return null;
|
|
4777
4841
|
const el = document.createElement(`ixfx-dock-panel`);
|
|
4778
4842
|
el.panelId = snapshot.panelId;
|
|
4779
4843
|
if (snapshot.title !== void 0) el.title = snapshot.title;
|
|
@@ -4784,20 +4848,16 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4784
4848
|
if (`accepts` in snapshot && snapshot.accepts) el.setAttribute(`accepts`, snapshot.accepts);
|
|
4785
4849
|
if (`contentHTML` in snapshot && snapshot.contentHTML) el.innerHTML = snapshot.contentHTML;
|
|
4786
4850
|
this._returnAllToolbars();
|
|
4787
|
-
this.appendChild(el);
|
|
4788
4851
|
this._pool = [...this._pool, el];
|
|
4789
4852
|
this._appendPanelToFirstStack(el.panelId);
|
|
4853
|
+
this.appendChild(el);
|
|
4790
4854
|
normalize(this._model);
|
|
4791
4855
|
this.endExternalDrop();
|
|
4792
4856
|
const zone = at ? this.computeDropZone(at.clientX, at.clientY, el.panelId) : null;
|
|
4793
4857
|
if (zone !== null) this._applyZone(el.panelId, zone);
|
|
4794
4858
|
normalize(this._model);
|
|
4795
4859
|
this.requestUpdate();
|
|
4796
|
-
this.
|
|
4797
|
-
detail: { panelId: el.panelId },
|
|
4798
|
-
bubbles: true,
|
|
4799
|
-
composed: true
|
|
4800
|
-
}));
|
|
4860
|
+
this._emitAdded(el.panelId);
|
|
4801
4861
|
this._emitChange();
|
|
4802
4862
|
return el;
|
|
4803
4863
|
}
|
|
@@ -4816,6 +4876,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4816
4876
|
w: r.width,
|
|
4817
4877
|
h: r.height
|
|
4818
4878
|
});
|
|
4879
|
+
const splitsAllowed = tokenAllows(this.accepts, `horizontal`) || tokenAllows(this.accepts, `vertical`);
|
|
4819
4880
|
for (const path of collectStackPaths(this._model)) {
|
|
4820
4881
|
const leaf = this.shadowRoot?.querySelector(`[data-dock-path="${path.join(`-`)}"]`);
|
|
4821
4882
|
if (!leaf) continue;
|
|
@@ -4823,7 +4884,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4823
4884
|
if (clientX < leafRect.left || clientX > leafRect.right || clientY < leafRect.top || clientY > leafRect.bottom) continue;
|
|
4824
4885
|
const stack = findNode(this._model, path);
|
|
4825
4886
|
if (stack === null || !isStack(stack)) continue;
|
|
4826
|
-
const strip = leaf.querySelector(`ixfx-tab-list`);
|
|
4887
|
+
const strip = leaf.querySelector(`ixfx-tab-list`) ?? leaf.querySelector(`.ghost-strip`);
|
|
4827
4888
|
if (strip !== null) {
|
|
4828
4889
|
const stripRect = strip.getBoundingClientRect();
|
|
4829
4890
|
if (clientX >= stripRect.left && clientX <= stripRect.right && clientY >= stripRect.top && clientY <= stripRect.bottom) {
|
|
@@ -4842,7 +4903,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4842
4903
|
}
|
|
4843
4904
|
const relX = (clientX - leafRect.left) / Math.max(leafRect.width, 1);
|
|
4844
4905
|
const relY = (clientY - leafRect.top) / Math.max(leafRect.height, 1);
|
|
4845
|
-
if (relX >= BAND && relX <= .75 && relY >= BAND && relY <= .75) {
|
|
4906
|
+
if (!splitsAllowed || relX >= BAND && relX <= .75 && relY >= BAND && relY <= .75) {
|
|
4846
4907
|
const zone = {
|
|
4847
4908
|
host: this,
|
|
4848
4909
|
operation: `tabs`,
|
|
@@ -4956,6 +5017,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4956
5017
|
return this._zoneAllowed(panelId, zone, resolvedKind) ? zone : null;
|
|
4957
5018
|
}
|
|
4958
5019
|
_zoneAllowed(panelId, zone, kind) {
|
|
5020
|
+
if (this.acceptsKinds !== null && !collectPanelIds(this._model).includes(panelId) && !this.acceptsKinds.includes(normalizeKind(kind))) return false;
|
|
4959
5021
|
if (!tokenAllows(this.accepts, operationToToken(zone.operation))) return false;
|
|
4960
5022
|
const stack = findNode(this._model, zone.targetPath);
|
|
4961
5023
|
if (stack !== null && isStack(stack) && stack.panels.length === 1) {
|
|
@@ -4982,6 +5044,11 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
4982
5044
|
}
|
|
4983
5045
|
this._applyZone(panelId, zone, sourceHost === void 0 || sourceHost === this);
|
|
4984
5046
|
this._commit();
|
|
5047
|
+
if (sourceHost !== void 0 && sourceHost !== this) this._emit(`dock-panel-moved`, {
|
|
5048
|
+
panelId,
|
|
5049
|
+
sourceHost,
|
|
5050
|
+
targetHost: this
|
|
5051
|
+
});
|
|
4985
5052
|
}
|
|
4986
5053
|
/**
|
|
4987
5054
|
* Move `panelId` (already present somewhere in the model) to the position
|
|
@@ -5022,26 +5089,34 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5022
5089
|
}
|
|
5023
5090
|
normalize(this._model);
|
|
5024
5091
|
this._pool = this._pool.filter((p) => p !== el);
|
|
5025
|
-
|
|
5092
|
+
this._toolbarsOut.delete(panelId);
|
|
5093
|
+
this._emitRemoved(panelId, target);
|
|
5094
|
+
if (el !== void 0) target.adoptPanelElement(el, this);
|
|
5026
5095
|
this.requestUpdate();
|
|
5096
|
+
this._emitChange();
|
|
5027
5097
|
}
|
|
5028
|
-
/**
|
|
5029
|
-
|
|
5030
|
-
|
|
5098
|
+
/**
|
|
5099
|
+
* Adopt a panel element from another host (the one sanctioned reparent).
|
|
5100
|
+
* `sourceHost` is reported in `dock-panel-added`.
|
|
5101
|
+
*/
|
|
5102
|
+
adoptPanelElement(el, sourceHost = null) {
|
|
5031
5103
|
if (!this._pool.some((p) => p.panelId === el.panelId)) this._pool = [...this._pool, el];
|
|
5032
|
-
this._appendPanelToFirstStack(el.panelId);
|
|
5104
|
+
if (!collectPanelIds(this._model).includes(el.panelId)) this._appendPanelToFirstStack(el.panelId);
|
|
5105
|
+
this.appendChild(el);
|
|
5033
5106
|
normalize(this._model);
|
|
5034
|
-
this.
|
|
5035
|
-
detail: { panelId: el.panelId },
|
|
5036
|
-
bubbles: true,
|
|
5037
|
-
composed: true
|
|
5038
|
-
}));
|
|
5107
|
+
this._emitAdded(el.panelId, sourceHost);
|
|
5039
5108
|
}
|
|
5040
|
-
|
|
5109
|
+
/**
|
|
5110
|
+
* `drag` names the panel in flight when this host may receive it; it drives
|
|
5111
|
+
* the drop hint over a leaf whose tab strip is hidden.
|
|
5112
|
+
*/
|
|
5113
|
+
setDragActive(active, drag) {
|
|
5114
|
+
const next = active && drag !== void 0 ? drag : null;
|
|
5041
5115
|
if (this._dragActive !== active) {
|
|
5042
5116
|
this._dragActive = active;
|
|
5043
5117
|
this.requestUpdate();
|
|
5044
5118
|
}
|
|
5119
|
+
if (this._dragPanel?.panelId !== next?.panelId || this._dragPanel?.kind !== next?.kind) this._dragPanel = next;
|
|
5045
5120
|
}
|
|
5046
5121
|
setDropZone(zone) {
|
|
5047
5122
|
if (this._dropZone !== zone) {
|
|
@@ -5133,6 +5208,29 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5133
5208
|
}
|
|
5134
5209
|
}
|
|
5135
5210
|
}
|
|
5211
|
+
/**
|
|
5212
|
+
* Start a panel drag from an app-supplied handle — the way to move a panel
|
|
5213
|
+
* whose tab strip is hidden. Call it from the handle's `pointerdown`. The
|
|
5214
|
+
* drag begins once the pointer moves a few pixels (a plain click is left
|
|
5215
|
+
* alone) and then behaves exactly like a tab-item drag. Returns false when
|
|
5216
|
+
* the panel is not docked here or the press is not a primary-button press.
|
|
5217
|
+
*/
|
|
5218
|
+
beginPanelDrag(panelId, event) {
|
|
5219
|
+
if (event.button !== 0 || !collectPanelIds(this._model).includes(panelId)) return false;
|
|
5220
|
+
this._armPanelDrag(panelId, event);
|
|
5221
|
+
return true;
|
|
5222
|
+
}
|
|
5223
|
+
_armPanelDrag(panelId, event) {
|
|
5224
|
+
this._tabDragPending = {
|
|
5225
|
+
panelId,
|
|
5226
|
+
pointerId: event.pointerId,
|
|
5227
|
+
startX: event.clientX,
|
|
5228
|
+
startY: event.clientY
|
|
5229
|
+
};
|
|
5230
|
+
window.addEventListener(`pointermove`, this._onTabDragMove);
|
|
5231
|
+
window.addEventListener(`pointerup`, this._onTabDragUp);
|
|
5232
|
+
window.addEventListener(`pointercancel`, this._onTabDragUp);
|
|
5233
|
+
}
|
|
5136
5234
|
_teardownTabDragListeners() {
|
|
5137
5235
|
window.removeEventListener(`pointermove`, this._onTabDragMove);
|
|
5138
5236
|
window.removeEventListener(`pointerup`, this._onTabDragUp);
|
|
@@ -5214,13 +5312,44 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5214
5312
|
_returnAllToolbars() {
|
|
5215
5313
|
for (const [panelId, nodes] of [...this._toolbarsOut]) this._returnToolbar(panelId, nodes);
|
|
5216
5314
|
}
|
|
5217
|
-
|
|
5218
|
-
|
|
5219
|
-
|
|
5315
|
+
/** Dispatch a bubbling, composed event; returns false when a cancelable one was cancelled. */
|
|
5316
|
+
_emit(type, detail, cancelable = false) {
|
|
5317
|
+
return this.dispatchEvent(new CustomEvent(type, {
|
|
5318
|
+
detail,
|
|
5220
5319
|
bubbles: true,
|
|
5221
|
-
composed: true
|
|
5320
|
+
composed: true,
|
|
5321
|
+
cancelable
|
|
5222
5322
|
}));
|
|
5223
5323
|
}
|
|
5324
|
+
_emitAdded(panelId, sourceHost = null) {
|
|
5325
|
+
this._emit(`dock-panel-added`, {
|
|
5326
|
+
panelId,
|
|
5327
|
+
sourceHost,
|
|
5328
|
+
targetHost: this
|
|
5329
|
+
});
|
|
5330
|
+
}
|
|
5331
|
+
_emitRemoved(panelId, targetHost = null) {
|
|
5332
|
+
this._emit(`dock-panel-removed`, {
|
|
5333
|
+
panelId,
|
|
5334
|
+
sourceHost: this,
|
|
5335
|
+
targetHost
|
|
5336
|
+
});
|
|
5337
|
+
}
|
|
5338
|
+
/** Announce `dock-stack-empty` for each stack that lost its last panel since the last change. */
|
|
5339
|
+
_announceEmptiedStacks() {
|
|
5340
|
+
const now = snapshotNonEmptyStacks(this._model);
|
|
5341
|
+
const emptied = findEmptiedStacks(this._liveStacks, now);
|
|
5342
|
+
this._liveStacks = now;
|
|
5343
|
+
for (const stack of emptied) this._emit(`dock-stack-empty`, {
|
|
5344
|
+
name: stack.name ?? null,
|
|
5345
|
+
hostEmpty: now.size === 0
|
|
5346
|
+
});
|
|
5347
|
+
}
|
|
5348
|
+
_emitChange() {
|
|
5349
|
+
const layout = this.saveLayout();
|
|
5350
|
+
this._announceEmptiedStacks();
|
|
5351
|
+
this._emit(`dock-change`, { layout });
|
|
5352
|
+
}
|
|
5224
5353
|
render() {
|
|
5225
5354
|
return html`
|
|
5226
5355
|
<div class="root">
|
|
@@ -5291,6 +5420,12 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5291
5420
|
</div>
|
|
5292
5421
|
`);
|
|
5293
5422
|
const toolbarSlot = stack.name !== void 0 && this._toolbarSlots.has(`toolbar-${stack.name}`) ? html`<slot name="toolbar-${stack.name}" slot="toolbar"></slot>` : nothing;
|
|
5423
|
+
if (this._stripHidden(stack)) return leafAttrs(html`
|
|
5424
|
+
${this._renderDropHint(stack, path)}
|
|
5425
|
+
<div class="leaf-body">
|
|
5426
|
+
<slot name="dock-panel-${stack.active}"></slot>
|
|
5427
|
+
</div>
|
|
5428
|
+
`);
|
|
5294
5429
|
return leafAttrs(html`
|
|
5295
5430
|
<ixfx-tab-list
|
|
5296
5431
|
class="strip"
|
|
@@ -5300,6 +5435,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5300
5435
|
?hide-labels=${stack.hideLabels === true}
|
|
5301
5436
|
@change=${(e) => this._onTabChange(e, path)}
|
|
5302
5437
|
@pointerdown=${this._onStripPointerDown}
|
|
5438
|
+
@contextmenu=${this._onStripContextMenu}
|
|
5303
5439
|
>
|
|
5304
5440
|
${repeat(stack.panels, (id) => id, (id) => this._renderTabItem(stack, id))}
|
|
5305
5441
|
${toolbarSlot}
|
|
@@ -5308,6 +5444,34 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5308
5444
|
<slot name="dock-panel-${stack.active}"></slot>
|
|
5309
5445
|
</div>
|
|
5310
5446
|
`);
|
|
5447
|
+
}
|
|
5448
|
+
/**
|
|
5449
|
+
* While a drag that this leaf would accept is in flight, overlay a compact
|
|
5450
|
+
* strip stand-in on the hidden strip's slot: it shows where the dropped tab
|
|
5451
|
+
* will land (the overlay takes no layout space, so nothing jumps).
|
|
5452
|
+
*/
|
|
5453
|
+
_renderDropHint(stack, path) {
|
|
5454
|
+
const drag = this._dragPanel;
|
|
5455
|
+
if (!this._dragActive || drag === null || stack.panels[0] === drag.panelId) return nothing;
|
|
5456
|
+
const probe = {
|
|
5457
|
+
host: this,
|
|
5458
|
+
operation: `tabs`,
|
|
5459
|
+
targetPath: path,
|
|
5460
|
+
side: `after`,
|
|
5461
|
+
rect: {
|
|
5462
|
+
x: 0,
|
|
5463
|
+
y: 0,
|
|
5464
|
+
w: 0,
|
|
5465
|
+
h: 0
|
|
5466
|
+
}
|
|
5467
|
+
};
|
|
5468
|
+
if (!this._zoneAllowed(drag.panelId, probe, drag.kind)) return nothing;
|
|
5469
|
+
const id = stack.panels[0];
|
|
5470
|
+
return html`
|
|
5471
|
+
<div class="ghost-strip" part="drop-hint">
|
|
5472
|
+
<span class="ghost-tab">${this._findPanelEl(id)?.title || id}</span>
|
|
5473
|
+
</div>
|
|
5474
|
+
`;
|
|
5311
5475
|
}
|
|
5312
5476
|
_renderTabItem(stack, panelId) {
|
|
5313
5477
|
const el = this._findPanelEl(panelId);
|
|
@@ -5322,7 +5486,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5322
5486
|
`;
|
|
5323
5487
|
}
|
|
5324
5488
|
_stripCaretRect(strip, gapIndex, hostRect) {
|
|
5325
|
-
const items = Array.from(strip.querySelectorAll(
|
|
5489
|
+
const items = Array.from(strip.querySelectorAll(STRIP_ITEMS));
|
|
5326
5490
|
if (items.length === 0) return void 0;
|
|
5327
5491
|
const index = Math.max(0, Math.min(gapIndex ?? items.length, items.length));
|
|
5328
5492
|
const edge = index < items.length ? items[index].getBoundingClientRect().left : items[items.length - 1].getBoundingClientRect().right;
|
|
@@ -5369,6 +5533,7 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5369
5533
|
min-height: 0;
|
|
5370
5534
|
box-sizing: border-box;
|
|
5371
5535
|
overflow: hidden;
|
|
5536
|
+
position: relative;
|
|
5372
5537
|
border: 1px solid var(--surface-4);
|
|
5373
5538
|
border-radius: var(--radius-m);
|
|
5374
5539
|
}
|
|
@@ -5406,6 +5571,32 @@ let DockHostElement = class DockHostElement extends LitElement {
|
|
|
5406
5571
|
padding-right: var(--space-xs);
|
|
5407
5572
|
}
|
|
5408
5573
|
|
|
5574
|
+
/* Drop hint over a hidden strip: overlaid, so it reserves no height. */
|
|
5575
|
+
.ghost-strip {
|
|
5576
|
+
position: absolute;
|
|
5577
|
+
inset: 0 0 auto 0;
|
|
5578
|
+
height: var(--dock-tab-height, 30px);
|
|
5579
|
+
z-index: 1;
|
|
5580
|
+
display: flex;
|
|
5581
|
+
align-items: center;
|
|
5582
|
+
box-sizing: border-box;
|
|
5583
|
+
padding: 0 var(--space-s);
|
|
5584
|
+
background: var(--surface-3);
|
|
5585
|
+
border-bottom: 1px solid var(--surface-4);
|
|
5586
|
+
color: var(--surface-3-text);
|
|
5587
|
+
font-size: var(--text-m);
|
|
5588
|
+
pointer-events: none;
|
|
5589
|
+
}
|
|
5590
|
+
|
|
5591
|
+
.ghost-tab {
|
|
5592
|
+
overflow: hidden;
|
|
5593
|
+
text-overflow: ellipsis;
|
|
5594
|
+
white-space: nowrap;
|
|
5595
|
+
text-decoration: underline;
|
|
5596
|
+
text-decoration-thickness: 2px;
|
|
5597
|
+
text-underline-offset: 4px;
|
|
5598
|
+
}
|
|
5599
|
+
|
|
5409
5600
|
.leaf-body {
|
|
5410
5601
|
flex: 1;
|
|
5411
5602
|
min-height: 0;
|
|
@@ -5497,11 +5688,24 @@ __decorate([property({
|
|
|
5497
5688
|
type: Boolean,
|
|
5498
5689
|
attribute: `isolated`
|
|
5499
5690
|
})], DockHostElement.prototype, "isolated", void 0);
|
|
5691
|
+
__decorate([property({
|
|
5692
|
+
type: Boolean,
|
|
5693
|
+
attribute: `hide-single-tab-strip`
|
|
5694
|
+
})], DockHostElement.prototype, "hideSingleTabStrip", void 0);
|
|
5695
|
+
__decorate([property({
|
|
5696
|
+
type: String,
|
|
5697
|
+
attribute: `family`
|
|
5698
|
+
})], DockHostElement.prototype, "family", void 0);
|
|
5699
|
+
__decorate([property({
|
|
5700
|
+
attribute: `accepts-kinds`,
|
|
5701
|
+
converter: { fromAttribute: (value) => value === null ? null : value.split(/\s+/).filter((k) => k.length > 0) }
|
|
5702
|
+
})], DockHostElement.prototype, "acceptsKinds", void 0);
|
|
5500
5703
|
__decorate([property({ attribute: false })], DockHostElement.prototype, "canAccept", void 0);
|
|
5501
5704
|
__decorate([state()], DockHostElement.prototype, "_model", void 0);
|
|
5502
5705
|
__decorate([state()], DockHostElement.prototype, "_pool", void 0);
|
|
5503
5706
|
__decorate([state()], DockHostElement.prototype, "_dropZone", void 0);
|
|
5504
5707
|
__decorate([state()], DockHostElement.prototype, "_dragActive", void 0);
|
|
5708
|
+
__decorate([state()], DockHostElement.prototype, "_dragPanel", void 0);
|
|
5505
5709
|
__decorate([state()], DockHostElement.prototype, "_junctions", void 0);
|
|
5506
5710
|
DockHostElement = __decorate([safeCustomElement(`ixfx-dock-host`)], DockHostElement);
|
|
5507
5711
|
/** `split-horizontal` = horizontal divider = panels stacked vertically. */
|
|
@@ -5551,13 +5755,18 @@ function normalizeKind(kind) {
|
|
|
5551
5755
|
function parsePath(pathStr) {
|
|
5552
5756
|
return pathStr.length === 0 ? [] : pathStr.split(`-`).filter((s) => s.length > 0).map(Number);
|
|
5553
5757
|
}
|
|
5758
|
+
/** The tab item in an event's composed path, if it has a panel id. */
|
|
5759
|
+
function tabItemIn(path) {
|
|
5760
|
+
const item = path.find((node) => node instanceof HTMLElement && node.tagName === `IXFX-TAB-LIST-ITEM`);
|
|
5761
|
+
return item !== void 0 && item.id ? item : null;
|
|
5762
|
+
}
|
|
5554
5763
|
/** Toolbar-slot light children of a dock panel. */
|
|
5555
5764
|
function toolbarNodesOf(el) {
|
|
5556
5765
|
return Array.from(el.children).filter((c) => c instanceof HTMLElement && c.getAttribute(`slot`) === `toolbar`);
|
|
5557
5766
|
}
|
|
5558
5767
|
/** Nearest strip gap to the pointer (reuses the tab-list midpoint rule). */
|
|
5559
5768
|
function computeStripGapIndex(strip, clientX, _clientY) {
|
|
5560
|
-
const items = Array.from(strip.querySelectorAll(
|
|
5769
|
+
const items = Array.from(strip.querySelectorAll(STRIP_ITEMS));
|
|
5561
5770
|
if (items.length === 0) return 0;
|
|
5562
5771
|
for (let i = 0; i < items.length; i++) {
|
|
5563
5772
|
const r = items[i].getBoundingClientRect();
|
|
@@ -16057,4 +16266,4 @@ function init() {
|
|
|
16057
16266
|
console.log(`Init`);
|
|
16058
16267
|
}
|
|
16059
16268
|
//#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 };
|
|
16269
|
+
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, findEmptiedStacks, 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, snapshotNonEmptyStacks, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toGroupKey, toSnapshot, toggleInSet, toolbarGapIndex, translationFromOrigin, viewIsometry, walk, wrapRoot };
|
|
@@ -33,7 +33,7 @@ declare abstract class LabelledInputBase extends LitElement {
|
|
|
33
33
|
value: number;
|
|
34
34
|
}>) => void;
|
|
35
35
|
protected _syncValue(v: number): void;
|
|
36
|
-
protected _renderEditableNumber():
|
|
36
|
+
protected _renderEditableNumber(): import("lit").TemplateResult<1> | typeof nothing;
|
|
37
37
|
updated(changedProperties: Map<string, unknown>): void;
|
|
38
38
|
}
|
|
39
39
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as LabelledInputBase } from "./labelled-input-base-
|
|
1
|
+
import { t as LabelledInputBase } from "./labelled-input-base-Dp_9KP0G.js";
|
|
2
2
|
import { i as MarkerStyle, l as ValueMode } from "./radial-input-DU6t2hYO.js";
|
|
3
3
|
import { CSSResultGroup, nothing } from "lit";
|
|
4
4
|
//#region src/labelled-radial-input/labelled-radial-input.d.ts
|
|
@@ -19,7 +19,7 @@ declare class LabelledRadialInput extends LabelledInputBase {
|
|
|
19
19
|
private _isWide;
|
|
20
20
|
private _getEffectivePrecision;
|
|
21
21
|
protected _handleResize(entries: ResizeObserverEntry[]): void;
|
|
22
|
-
protected _renderEditableNumber():
|
|
22
|
+
protected _renderEditableNumber(): import("lit").TemplateResult<1> | typeof nothing;
|
|
23
23
|
render(): import("lit").TemplateResult<1>;
|
|
24
24
|
private _getTooltipValue;
|
|
25
25
|
static styles: CSSResultGroup;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as LabelledRangeInput } from "./index-
|
|
1
|
+
import { t as LabelledRangeInput } from "./index-BUB5SICW.js";
|
|
2
2
|
export { LabelledRangeInput };
|