@ixfx/components 0.5.18 → 0.5.20
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 +107 -112
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +736 -361
- package/bundle/index.js.map +1 -1
- package/bundle/style.css +4 -2
- package/dist/ac-text.d.ts +7 -12
- package/dist/ac-text.d.ts.map +1 -1
- package/dist/ac-text.js +5 -4
- package/dist/ac-text.js.map +1 -1
- package/dist/{button-CphdEaZd.js → button-pcDaCemT.js} +2 -2
- package/dist/{button-CphdEaZd.js.map → button-pcDaCemT.js.map} +1 -1
- package/dist/button.d.ts +2 -1
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -1
- package/dist/checkbox.d.ts +1 -0
- package/dist/checkbox.d.ts.map +1 -1
- package/dist/checkbox.js +2 -2
- package/dist/checkbox.js.map +1 -1
- package/dist/{colour-picker-DbypcEp6.js → colour-picker-D43Q96r0.js} +29 -16
- package/dist/colour-picker-D43Q96r0.js.map +1 -0
- package/dist/colour-picker.d.ts +1 -1
- package/dist/colour-picker.js +1 -1
- package/dist/{crumb-navigation-DTwJ8468.js → crumb-navigation-Pif-kupA.js} +125 -27
- package/dist/crumb-navigation-Pif-kupA.js.map +1 -0
- package/dist/crumbs.d.ts +4 -4
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +1 -1
- package/dist/data-display.d.ts +2 -1
- package/dist/data-display.d.ts.map +1 -1
- package/dist/data-display.js +23 -25
- package/dist/data-display.js.map +1 -1
- package/dist/{decorate-VRK8rslU.js → decorate-DdjvVHS-.js} +2 -2
- package/dist/{decorate-VRK8rslU.js.map → decorate-DdjvVHS-.js.map} +1 -1
- package/dist/{defaults-DcE8RQJc.js → defaults-BkWCPJFL.js} +7 -1
- package/dist/{defaults-DcE8RQJc.js.map → defaults-BkWCPJFL.js.map} +1 -1
- package/dist/editable-label.d.ts +2 -1
- package/dist/editable-label.d.ts.map +1 -1
- package/dist/editable-label.js +2 -2
- package/dist/editable-label.js.map +1 -1
- package/dist/fallbacks-DEE1nCTt.js +406 -0
- package/dist/fallbacks-DEE1nCTt.js.map +1 -0
- package/dist/{hex-editor-Bk6rxhfg.js → hex-editor-B-UI4OZu.js} +8 -6
- package/dist/{hex-editor-Bk6rxhfg.js.map → hex-editor-B-UI4OZu.js.map} +1 -1
- package/dist/{hex-editor-Caq8vNQk.d.ts → hex-editor-CMIxtNgT.d.ts} +3 -2
- package/dist/hex-editor-CMIxtNgT.d.ts.map +1 -0
- package/dist/hex.d.ts +1 -1
- package/dist/hex.js +1 -1
- package/dist/highlight-B-eQrhhb.js.map +1 -1
- package/dist/{icon-BUwP1CZ1.d.ts → icon-Bd5BiU4b.d.ts} +4 -3
- package/dist/icon-Bd5BiU4b.d.ts.map +1 -0
- package/dist/{icon-DG9Lm3LT.js → icon-CK14NUcE.js} +5 -7
- package/dist/{icon-DG9Lm3LT.js.map → icon-CK14NUcE.js.map} +1 -1
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +2 -2
- package/dist/{incr-search-2pz21xtR.js → incr-search-CeERfijK.js} +6 -9
- package/dist/{incr-search-2pz21xtR.js.map → incr-search-CeERfijK.js.map} +1 -1
- package/dist/incr-search.d.ts +1 -1
- package/dist/incr-search.js +1 -1
- package/dist/{index-D9u_Q7-b.d.ts → index-BslNaMLo.d.ts} +3 -3
- package/dist/index-BslNaMLo.d.ts.map +1 -0
- package/dist/{index-DkhBGHgF.d.ts → index-Cdmrn0SZ.d.ts} +11 -11
- package/dist/index-Cdmrn0SZ.d.ts.map +1 -0
- package/dist/{index-BUB5SICW.d.ts → index-CkMIKEWp.d.ts} +4 -3
- package/dist/index-CkMIKEWp.d.ts.map +1 -0
- package/dist/{index-RqMh1i-O.d.ts → index-D87kRcEs.d.ts} +1 -2
- package/dist/index-D87kRcEs.d.ts.map +1 -0
- package/dist/{index-BKAlRgbq.d.ts → index-DrKRD8_a.d.ts} +7 -4
- package/dist/index-DrKRD8_a.d.ts.map +1 -0
- package/dist/{index-BeuCXtiO.d.ts → index-tX6fKF8m.d.ts} +3 -3
- package/dist/index-tX6fKF8m.d.ts.map +1 -0
- package/dist/index.d.ts +48 -53
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +155 -122
- package/dist/index.js.map +1 -1
- package/dist/interaction-_Y2qO3QI.js +1 -0
- package/dist/{labelled-input-base-hoKGwyKT.js → labelled-input-base-9K_w3oLj.js} +2 -2
- package/dist/{labelled-input-base-hoKGwyKT.js.map → labelled-input-base-9K_w3oLj.js.map} +1 -1
- package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-ORb1rGq6.d.ts} +3 -2
- package/dist/labelled-input-base-ORb1rGq6.d.ts.map +1 -0
- package/dist/labelled-radial-input.d.ts +5 -4
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-radial-input.js +4 -4
- package/dist/labelled-radial-input.js.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-range-input.js +2 -2
- package/dist/labelled-range-input.js.map +1 -1
- package/dist/led.d.ts +2 -2
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +3 -5
- package/dist/led.js.map +1 -1
- package/dist/{menu-CdwSe_XN.js → menu-BiFarLUA.js} +9 -8
- package/dist/{menu-CdwSe_XN.js.map → menu-BiFarLUA.js.map} +1 -1
- package/dist/{menu-item-BG5w7fi4.d.ts → menu-item-AtoP6bD4.d.ts} +4 -4
- package/dist/menu-item-AtoP6bD4.d.ts.map +1 -0
- package/dist/{menu-item-CrmUwIoJ.js → menu-item-yHSPV8nS.js} +10 -9
- package/dist/{menu-item-CrmUwIoJ.js.map → menu-item-yHSPV8nS.js.map} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +5 -7
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +26 -24
- package/dist/miller.js.map +1 -1
- package/dist/narrowed-text.d.ts +2 -1
- package/dist/narrowed-text.d.ts.map +1 -1
- package/dist/narrowed-text.js +14 -15
- package/dist/narrowed-text.js.map +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +3 -3
- package/dist/panel.js.map +1 -1
- package/dist/plots.d.ts +1 -1
- package/dist/plots.js +1 -1
- package/dist/polar-pad.d.ts +2 -1
- package/dist/polar-pad.d.ts.map +1 -1
- package/dist/polar-pad.js +3 -3
- package/dist/polar-pad.js.map +1 -1
- package/dist/{radial-input-CVxGH-Cp.js → radial-input-C4f-2Bya.js} +15 -25
- package/dist/{radial-input-CVxGH-Cp.js.map → radial-input-C4f-2Bya.js.map} +1 -1
- package/dist/{radial-input-BhZeyyP-.d.ts → radial-input-Dhu5ZGP5.d.ts} +3 -2
- package/dist/radial-input-Dhu5ZGP5.d.ts.map +1 -0
- package/dist/radial-input.d.ts +1 -1
- package/dist/radial-input.js +1 -1
- package/dist/range-input.d.ts +3 -2
- package/dist/range-input.d.ts.map +1 -1
- package/dist/range-input.js +3 -3
- package/dist/range-input.js.map +1 -1
- package/dist/range.d.ts +3 -2
- package/dist/range.d.ts.map +1 -1
- package/dist/range.js +3 -3
- package/dist/range.js.map +1 -1
- package/dist/selecthorizontal.d.ts +2 -1
- package/dist/selecthorizontal.d.ts.map +1 -1
- package/dist/selecthorizontal.js +2 -2
- package/dist/selecthorizontal.js.map +1 -1
- package/dist/{slider-input-TidGhvXt.d.ts → slider-input-BEaztT-g.d.ts} +3 -2
- package/dist/slider-input-BEaztT-g.d.ts.map +1 -0
- package/dist/{slider-input-CzmSVgm7.js → slider-input-SW7e2Ac2.js} +28 -31
- package/dist/{slider-input-CzmSVgm7.js.map → slider-input-SW7e2Ac2.js.map} +1 -1
- package/dist/slider-input.d.ts +1 -1
- package/dist/slider-input.js +1 -1
- package/dist/snap-container.d.ts +2 -1
- package/dist/snap-container.d.ts.map +1 -1
- package/dist/snap-container.js +5 -6
- package/dist/snap-container.js.map +1 -1
- package/dist/split-layout.d.ts +9 -2
- package/dist/split-layout.d.ts.map +1 -1
- package/dist/split-layout.js +88 -20
- package/dist/split-layout.js.map +1 -1
- package/dist/style.css +4 -2
- package/dist/swipe.d.ts +2 -1
- package/dist/swipe.d.ts.map +1 -1
- package/dist/swipe.js +4 -5
- package/dist/swipe.js.map +1 -1
- package/dist/{tab-list-CLqlPnX-.d.ts → tab-list-B8v9KntS.d.ts} +12 -5
- package/dist/tab-list-B8v9KntS.d.ts.map +1 -0
- package/dist/{tab-list-6W5CgXix.js → tab-list-CR0v53KJ.js} +22 -4
- package/dist/tab-list-CR0v53KJ.js.map +1 -0
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{tickled-controller-BF2Ea0DE.d.ts → tickled-controller-JDOR9B8V.d.ts} +9 -6
- package/dist/tickled-controller-JDOR9B8V.d.ts.map +1 -0
- package/dist/{tickled-styles-fNDdqf6l.js → tickled-styles-Bgo_Lpw-.js} +28 -28
- package/dist/tickled-styles-Bgo_Lpw-.js.map +1 -0
- package/dist/{timeline-B2fgDL4U.js → timeline-CdSI003L.js} +3 -3
- package/dist/{timeline-B2fgDL4U.js.map → timeline-CdSI003L.js.map} +1 -1
- package/dist/timeline.d.ts +1 -1
- package/dist/timeline.js +1 -1
- package/dist/{tooltip-BlvBUQxx.d.ts → tooltip-BMTSUPBU.d.ts} +3 -2
- package/dist/tooltip-BMTSUPBU.d.ts.map +1 -0
- package/dist/{tree-BtiiDX1a.js → tree-CqPhQRHo.js} +11 -10
- package/dist/{tree-BtiiDX1a.js.map → tree-CqPhQRHo.js.map} +1 -1
- package/dist/{tree-component-DQ9vzdy5.d.ts → tree-component-CDLO1ITF.d.ts} +124 -8
- package/dist/tree-component-CDLO1ITF.d.ts.map +1 -0
- package/dist/tree.d.ts +4 -9
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1
- package/dist/types-DSfbtHs3.d.ts +8 -0
- package/dist/types-DSfbtHs3.d.ts.map +1 -0
- package/dist/{wheel-nudge-DgMTRYlh.d.ts → wheel-nudge-C-ra_1os.d.ts} +2 -1
- package/dist/wheel-nudge-C-ra_1os.d.ts.map +1 -0
- package/dist/{wheel-nudge-BlSCe_hD.js → wheel-nudge-Dhzi5nHc.js} +2 -2
- package/dist/{wheel-nudge-BlSCe_hD.js.map → wheel-nudge-Dhzi5nHc.js.map} +1 -1
- package/dist/{xy-axis-CxHC8z5E.js → xy-axis-BpA2eJq6.js} +4 -6
- package/dist/{xy-axis-CxHC8z5E.js.map → xy-axis-BpA2eJq6.js.map} +1 -1
- package/dist/{xy-axis-5KhVTNoX.d.ts → xy-axis-CtDDQzGZ.d.ts} +6 -8
- package/dist/xy-axis-CtDDQzGZ.d.ts.map +1 -0
- package/dist/xy-pad.d.ts +2 -1
- package/dist/xy-pad.d.ts.map +1 -1
- package/dist/xy-pad.js +3 -3
- package/dist/xy-pad.js.map +1 -1
- package/docs-user/ac-token.md +7 -1
- package/docs-user/colour-picker.md +8 -4
- package/docs-user/crumbs.md +4 -0
- package/docs-user/menu.md +11 -8
- package/docs-user/split-layout.md +29 -7
- package/package.json +3 -1
- package/dist/colour-picker-DbypcEp6.js.map +0 -1
- package/dist/crumb-navigation-DTwJ8468.js.map +0 -1
- package/dist/fallbacks-DPgPEqo8.js +0 -218
- package/dist/fallbacks-DPgPEqo8.js.map +0 -1
- package/dist/hex-editor-Caq8vNQk.d.ts.map +0 -1
- package/dist/icon-BUwP1CZ1.d.ts.map +0 -1
- package/dist/index-BKAlRgbq.d.ts.map +0 -1
- package/dist/index-BUB5SICW.d.ts.map +0 -1
- package/dist/index-BeuCXtiO.d.ts.map +0 -1
- package/dist/index-D9u_Q7-b.d.ts.map +0 -1
- package/dist/index-DkhBGHgF.d.ts.map +0 -1
- package/dist/index-RqMh1i-O.d.ts.map +0 -1
- package/dist/interaction-D6efrBLo.js +0 -1
- package/dist/labelled-input-base-Dp_9KP0G.d.ts.map +0 -1
- package/dist/menu-item-BG5w7fi4.d.ts.map +0 -1
- package/dist/radial-input-BhZeyyP-.d.ts.map +0 -1
- package/dist/slider-input-TidGhvXt.d.ts.map +0 -1
- package/dist/tab-list-6W5CgXix.js.map +0 -1
- package/dist/tab-list-CLqlPnX-.d.ts.map +0 -1
- package/dist/tickled-controller-BF2Ea0DE.d.ts.map +0 -1
- package/dist/tickled-styles-fNDdqf6l.js.map +0 -1
- package/dist/tooltip-BlvBUQxx.d.ts.map +0 -1
- package/dist/tree-component-DQ9vzdy5.d.ts.map +0 -1
- package/dist/types-DO3gt5vg.d.ts +0 -130
- package/dist/types-DO3gt5vg.d.ts.map +0 -1
- package/dist/wheel-nudge-DgMTRYlh.d.ts.map +0 -1
- package/dist/xy-axis-5KhVTNoX.d.ts.map +0 -1
- /package/bundle/{rolldown-runtime-D7D4PA-g.js → chunk-D7D4PA-g.js} +0 -0
- /package/dist/{rolldown-runtime-D7D4PA-g.js → chunk-D7D4PA-g.js} +0 -0
package/bundle/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as __exportAll } from "./
|
|
1
|
+
import { t as __exportAll } from "./chunk-D7D4PA-g.js";
|
|
2
2
|
import { eventOptions, property, query, queryAssignedElements, state } from "lit/decorators.js";
|
|
3
3
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
4
4
|
import { Fzf } from "fzf";
|
|
@@ -18,10 +18,7 @@ import { keyed } from "lit/directives/keyed.js";
|
|
|
18
18
|
* Copyright 2019 Google LLC
|
|
19
19
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
20
20
|
*/
|
|
21
|
-
const t$1 = globalThis;
|
|
22
|
-
const e$2 = t$1.ShadowRoot && (void 0 === t$1.ShadyCSS || t$1.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype;
|
|
23
|
-
const s$2 = Symbol();
|
|
24
|
-
const o$3 = /* @__PURE__ */ new WeakMap();
|
|
21
|
+
const t$1 = globalThis, e$2 = t$1.ShadowRoot && (void 0 === t$1.ShadyCSS || t$1.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, s$2 = Symbol(), o$3 = /* @__PURE__ */ new WeakMap();
|
|
25
22
|
var n$2 = class {
|
|
26
23
|
constructor(t, e, o) {
|
|
27
24
|
if (this._$cssResult$ = !0, o !== s$2) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
|
|
@@ -40,22 +37,19 @@ var n$2 = class {
|
|
|
40
37
|
return this.cssText;
|
|
41
38
|
}
|
|
42
39
|
};
|
|
43
|
-
const r$2 = (t) => new n$2("string" == typeof t ? t : t + "", void 0, s$2)
|
|
44
|
-
const i$3 = (t, ...e) => {
|
|
40
|
+
const r$2 = (t) => new n$2("string" == typeof t ? t : t + "", void 0, s$2), i$3 = (t, ...e) => {
|
|
45
41
|
return new n$2(1 === t.length ? t[0] : e.reduce((e, s, o) => e + ((t) => {
|
|
46
42
|
if (!0 === t._$cssResult$) return t.cssText;
|
|
47
43
|
if ("number" == typeof t) return t;
|
|
48
44
|
throw Error("Value passed to 'css' function must be a 'css' function result: " + t + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
|
|
49
45
|
})(s) + t[o + 1], t[0]), t, s$2);
|
|
50
|
-
}
|
|
51
|
-
const S$1 = (s, o) => {
|
|
46
|
+
}, S$1 = (s, o) => {
|
|
52
47
|
if (e$2) s.adoptedStyleSheets = o.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
|
|
53
48
|
else for (const e of o) {
|
|
54
49
|
const o = document.createElement("style"), n = t$1.litNonce;
|
|
55
50
|
void 0 !== n && o.setAttribute("nonce", n), o.textContent = e.cssText, s.appendChild(o);
|
|
56
51
|
}
|
|
57
|
-
}
|
|
58
|
-
const c$2 = e$2 ? (t) => t : (t) => t instanceof CSSStyleSheet ? ((t) => {
|
|
52
|
+
}, c$2 = e$2 ? (t) => t : (t) => t instanceof CSSStyleSheet ? ((t) => {
|
|
59
53
|
let e = "";
|
|
60
54
|
for (const s of t.cssRules) e += s.cssText;
|
|
61
55
|
return r$2(e);
|
|
@@ -165,7 +159,7 @@ var y$1 = class extends HTMLElement {
|
|
|
165
159
|
static finalizeStyles(s) {
|
|
166
160
|
const i = [];
|
|
167
161
|
if (Array.isArray(s)) {
|
|
168
|
-
const e = new Set(s.flat(
|
|
162
|
+
const e = new Set(s.flat(Infinity).reverse());
|
|
169
163
|
for (const s of e) i.unshift(c$2(s));
|
|
170
164
|
} else void 0 !== s && i.push(c$2(s));
|
|
171
165
|
return i;
|
|
@@ -297,38 +291,11 @@ y$1.elementStyles = [], y$1.shadowRootOptions = { mode: "open" }, y$1[d$1("eleme
|
|
|
297
291
|
* Copyright 2017 Google LLC
|
|
298
292
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
299
293
|
*/
|
|
300
|
-
const t = globalThis
|
|
301
|
-
const i$1 = (t) => t;
|
|
302
|
-
const s$1 = t.trustedTypes;
|
|
303
|
-
const e = s$1 ? s$1.createPolicy("lit-html", { createHTML: (t) => t }) : void 0;
|
|
304
|
-
const h = "$lit$";
|
|
305
|
-
const o$1 = `lit$${Math.random().toFixed(9).slice(2)}$`;
|
|
306
|
-
const n = "?" + o$1;
|
|
307
|
-
const r = `<${n}>`;
|
|
308
|
-
const l = document;
|
|
309
|
-
const c = () => l.createComment("");
|
|
310
|
-
const a = (t) => null === t || "object" != typeof t && "function" != typeof t;
|
|
311
|
-
const u = Array.isArray;
|
|
312
|
-
const d = (t) => u(t) || "function" == typeof t?.[Symbol.iterator];
|
|
313
|
-
const f = "[ \n\f\r]";
|
|
314
|
-
const v = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g;
|
|
315
|
-
const _ = /-->/g;
|
|
316
|
-
const m = />/g;
|
|
317
|
-
const p = RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g");
|
|
318
|
-
const g = /'/g;
|
|
319
|
-
const $ = /"/g;
|
|
320
|
-
const y = /^(?:script|style|textarea|title)$/i;
|
|
321
|
-
const x = (t) => (i, ...s) => ({
|
|
294
|
+
const t = globalThis, i$1 = (t) => t, s$1 = t.trustedTypes, e = s$1 ? s$1.createPolicy("lit-html", { createHTML: (t) => t }) : void 0, h = "$lit$", o$1 = `lit$${Math.random().toFixed(9).slice(2)}$`, n = "?" + o$1, r = `<${n}>`, l = document, c = () => l.createComment(""), a = (t) => null === t || "object" != typeof t && "function" != typeof t, u = Array.isArray, d = (t) => u(t) || "function" == typeof t?.[Symbol.iterator], f = "[ \n\f\r]", v = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _ = /-->/g, m = />/g, p = RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g"), g = /'/g, $ = /"/g, y = /^(?:script|style|textarea|title)$/i, x = (t) => (i, ...s) => ({
|
|
322
295
|
_$litType$: t,
|
|
323
296
|
strings: i,
|
|
324
297
|
values: s
|
|
325
|
-
});
|
|
326
|
-
const b = x(1);
|
|
327
|
-
const w = x(2);
|
|
328
|
-
const E = Symbol.for("lit-noChange");
|
|
329
|
-
const A = Symbol.for("lit-nothing");
|
|
330
|
-
const C = /* @__PURE__ */ new WeakMap();
|
|
331
|
-
const P = l.createTreeWalker(l, 129);
|
|
298
|
+
}), b = x(1), w = x(2), E = Symbol.for("lit-noChange"), A = Symbol.for("lit-nothing"), C = /* @__PURE__ */ new WeakMap(), P = l.createTreeWalker(l, 129);
|
|
332
299
|
function V(t, i) {
|
|
333
300
|
if (!u(t) || !t.hasOwnProperty("raw")) throw Error("invalid template strings array");
|
|
334
301
|
return void 0 !== e ? e.createHTML(i) : i;
|
|
@@ -666,10 +633,11 @@ function findTextNode(element, expectedText) {
|
|
|
666
633
|
*
|
|
667
634
|
* ## Global Mouse Tracking
|
|
668
635
|
*
|
|
669
|
-
* This controller uses a
|
|
670
|
-
* mouse movement. This prevents `pointerenter`
|
|
671
|
-
* from incorrectly switching to mouse mode when
|
|
672
|
-
* navigation.
|
|
636
|
+
* This controller uses a single, ref-counted global `pointermove` listener (shared
|
|
637
|
+
* across all instances) to track actual mouse movement. This prevents `pointerenter`
|
|
638
|
+
* events caused by content scrolling from incorrectly switching to mouse mode when
|
|
639
|
+
* the user is actually using keyboard navigation. The listener is attached when the
|
|
640
|
+
* first host connects and removed once the last host disconnects.
|
|
673
641
|
*
|
|
674
642
|
* @example
|
|
675
643
|
* ```ts
|
|
@@ -716,7 +684,12 @@ var TickledController = class TickledController {
|
|
|
716
684
|
this._mouseMovedSinceKeyboard = true;
|
|
717
685
|
}
|
|
718
686
|
static {
|
|
719
|
-
this.
|
|
687
|
+
this._listenerRefCount = 0;
|
|
688
|
+
}
|
|
689
|
+
static {
|
|
690
|
+
this._onGlobalPointerMove = (e) => {
|
|
691
|
+
TickledController.handleGlobalPointerMove(e.clientX, e.clientY);
|
|
692
|
+
};
|
|
720
693
|
}
|
|
721
694
|
constructor(host, config) {
|
|
722
695
|
this._tickledId = void 0;
|
|
@@ -726,14 +699,13 @@ var TickledController = class TickledController {
|
|
|
726
699
|
host.addController(this);
|
|
727
700
|
}
|
|
728
701
|
hostConnected() {
|
|
729
|
-
if (
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
702
|
+
if (TickledController._listenerRefCount === 0) document.addEventListener(`pointermove`, TickledController._onGlobalPointerMove, { passive: true });
|
|
703
|
+
TickledController._listenerRefCount++;
|
|
704
|
+
}
|
|
705
|
+
hostDisconnected() {
|
|
706
|
+
TickledController._listenerRefCount--;
|
|
707
|
+
if (TickledController._listenerRefCount === 0) document.removeEventListener(`pointermove`, TickledController._onGlobalPointerMove);
|
|
735
708
|
}
|
|
736
|
-
hostDisconnected() {}
|
|
737
709
|
/**
|
|
738
710
|
* Get the current input mode
|
|
739
711
|
*/
|
|
@@ -876,19 +848,14 @@ var TickledController = class TickledController {
|
|
|
876
848
|
*
|
|
877
849
|
* ## CSS Variable Contract
|
|
878
850
|
*
|
|
879
|
-
* **Style variables
|
|
880
|
-
*
|
|
881
|
-
*
|
|
882
|
-
*
|
|
883
|
-
* - `--item-bg-
|
|
884
|
-
* - `--item-border
|
|
885
|
-
* - `--item-
|
|
886
|
-
* - `--item-border-
|
|
887
|
-
* - `--item-text-tickled`: Text color when tickled (default: inherit)
|
|
888
|
-
* - `--item-text-selected`: Text color when selected (default: #fff)
|
|
889
|
-
* - `--item-padding`: Item padding (default: 4px 8px)
|
|
890
|
-
* - `--item-border-radius`: Border radius (default: 4px)
|
|
891
|
-
* - `--item-icon-spacing`: Gap between icon and text (default: 4px)
|
|
851
|
+
* **Style variables** — `tickledItemStyles` only consumes these via `var()`; it
|
|
852
|
+
* defines no defaults itself. Fallback values (used when no theme CSS is loaded)
|
|
853
|
+
* are registered in `themeFallbacks` (`../styles/fallbacks.ts`) and mirror the
|
|
854
|
+
* documented base theme in `user-theming.md`:
|
|
855
|
+
* - `--item-bg`, `--item-bg-tickled`, `--item-bg-selected`, `--item-bg-selected-tickled`
|
|
856
|
+
* - `--item-border`, `--item-border-tickled`, `--item-border-selected` (full border shorthands, not colours)
|
|
857
|
+
* - `--item-text-tickled`, `--item-text-selected`
|
|
858
|
+
* - `--item-padding`, `--item-border-radius`, `--item-icon-spacing`
|
|
892
859
|
*
|
|
893
860
|
* ## Usage
|
|
894
861
|
*
|
|
@@ -940,13 +907,13 @@ const tickledItemStyles = i$3`
|
|
|
940
907
|
|
|
941
908
|
.item.tickled {
|
|
942
909
|
background: var(--item-bg-tickled);
|
|
943
|
-
border
|
|
910
|
+
border: var(--item-border-tickled);
|
|
944
911
|
color: var(--item-text-tickled);
|
|
945
912
|
}
|
|
946
913
|
|
|
947
914
|
.item.selected {
|
|
948
915
|
background: var(--item-bg-selected);
|
|
949
|
-
border
|
|
916
|
+
border: var(--item-border-selected);
|
|
950
917
|
color: var(--item-text-selected);
|
|
951
918
|
}
|
|
952
919
|
|
|
@@ -968,12 +935,13 @@ const tickledItemStyles = i$3`
|
|
|
968
935
|
* - If no theme CSS is loaded, these initial values ensure components still
|
|
969
936
|
* have visible backgrounds, text colours, etc.
|
|
970
937
|
*
|
|
971
|
-
*
|
|
972
|
-
*
|
|
973
|
-
*
|
|
974
|
-
*
|
|
938
|
+
* `@property` registration is document-global — it is not scoped per shadow
|
|
939
|
+
* root — so this is registered exactly once (via `_registerThemeFallbacksOnce`
|
|
940
|
+
* below) rather than adopted into every component's shadow-root stylesheet.
|
|
941
|
+
* Registering the same `@property` rule repeatedly across many shadow roots
|
|
942
|
+
* causes Chrome to log "Ignored @property rule" for every repeat.
|
|
975
943
|
*/
|
|
976
|
-
const
|
|
944
|
+
const _themeFallbacksCss = i$3`
|
|
977
945
|
@property --surface-0 {
|
|
978
946
|
syntax: '<color>';
|
|
979
947
|
inherits: true;
|
|
@@ -1017,7 +985,7 @@ const themeFallbacks = i$3`
|
|
|
1017
985
|
@property --surface-5 {
|
|
1018
986
|
syntax: '<color>';
|
|
1019
987
|
inherits: true;
|
|
1020
|
-
initial-value: oklch(
|
|
988
|
+
initial-value: oklch(19% 0.02 240);
|
|
1021
989
|
}
|
|
1022
990
|
@property --surface-5-text {
|
|
1023
991
|
syntax: '<color>';
|
|
@@ -1169,7 +1137,194 @@ const themeFallbacks = i$3`
|
|
|
1169
1137
|
inherits: true;
|
|
1170
1138
|
initial-value: 5ch;
|
|
1171
1139
|
}
|
|
1140
|
+
@property --space-xs {
|
|
1141
|
+
syntax: '<length>';
|
|
1142
|
+
inherits: true;
|
|
1143
|
+
initial-value: 3px;
|
|
1144
|
+
}
|
|
1145
|
+
@property --space-s {
|
|
1146
|
+
syntax: '<length>';
|
|
1147
|
+
inherits: true;
|
|
1148
|
+
initial-value: 4px;
|
|
1149
|
+
}
|
|
1150
|
+
@property --space-m {
|
|
1151
|
+
syntax: '<length>';
|
|
1152
|
+
inherits: true;
|
|
1153
|
+
initial-value: 8px;
|
|
1154
|
+
}
|
|
1155
|
+
@property --space-l {
|
|
1156
|
+
syntax: '<length>';
|
|
1157
|
+
inherits: true;
|
|
1158
|
+
initial-value: 12px;
|
|
1159
|
+
}
|
|
1160
|
+
@property --space-xl {
|
|
1161
|
+
syntax: '<length>';
|
|
1162
|
+
inherits: true;
|
|
1163
|
+
initial-value: 16px;
|
|
1164
|
+
}
|
|
1165
|
+
@property --space-2xl {
|
|
1166
|
+
syntax: '<length>';
|
|
1167
|
+
inherits: true;
|
|
1168
|
+
initial-value: 20px;
|
|
1169
|
+
}
|
|
1170
|
+
@property --text-xs {
|
|
1171
|
+
syntax: '<length>';
|
|
1172
|
+
inherits: true;
|
|
1173
|
+
initial-value: 10px;
|
|
1174
|
+
}
|
|
1175
|
+
@property --text-s {
|
|
1176
|
+
syntax: '<length>';
|
|
1177
|
+
inherits: true;
|
|
1178
|
+
initial-value: 11px;
|
|
1179
|
+
}
|
|
1180
|
+
@property --text-m {
|
|
1181
|
+
syntax: '<length>';
|
|
1182
|
+
inherits: true;
|
|
1183
|
+
initial-value: 12px;
|
|
1184
|
+
}
|
|
1185
|
+
@property --text-l {
|
|
1186
|
+
syntax: '<length>';
|
|
1187
|
+
inherits: true;
|
|
1188
|
+
initial-value: 13px;
|
|
1189
|
+
}
|
|
1190
|
+
@property --text-xl {
|
|
1191
|
+
syntax: '<length>';
|
|
1192
|
+
inherits: true;
|
|
1193
|
+
initial-value: 16px;
|
|
1194
|
+
}
|
|
1195
|
+
@property --text-2xl {
|
|
1196
|
+
syntax: '<length>';
|
|
1197
|
+
inherits: true;
|
|
1198
|
+
initial-value: 20px;
|
|
1199
|
+
}
|
|
1200
|
+
@property --font-weight-bold {
|
|
1201
|
+
syntax: '<number>';
|
|
1202
|
+
inherits: true;
|
|
1203
|
+
initial-value: 600;
|
|
1204
|
+
}
|
|
1205
|
+
@property --radius-s {
|
|
1206
|
+
syntax: '<length>';
|
|
1207
|
+
inherits: true;
|
|
1208
|
+
initial-value: 3px;
|
|
1209
|
+
}
|
|
1210
|
+
@property --radius-m {
|
|
1211
|
+
syntax: '<length>';
|
|
1212
|
+
inherits: true;
|
|
1213
|
+
initial-value: 4px;
|
|
1214
|
+
}
|
|
1215
|
+
@property --radius-l {
|
|
1216
|
+
syntax: '<length>';
|
|
1217
|
+
inherits: true;
|
|
1218
|
+
initial-value: 6px;
|
|
1219
|
+
}
|
|
1220
|
+
@property --radius-xl {
|
|
1221
|
+
syntax: '<length>';
|
|
1222
|
+
inherits: true;
|
|
1223
|
+
initial-value: 8px;
|
|
1224
|
+
}
|
|
1225
|
+
@property --shadow-m {
|
|
1226
|
+
syntax: '*';
|
|
1227
|
+
inherits: true;
|
|
1228
|
+
initial-value: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
1229
|
+
}
|
|
1230
|
+
@property --shadow-l {
|
|
1231
|
+
syntax: '*';
|
|
1232
|
+
inherits: true;
|
|
1233
|
+
initial-value: 0 4px 24px rgba(0, 0, 0, 0.5);
|
|
1234
|
+
}
|
|
1235
|
+
@property --item-bg {
|
|
1236
|
+
syntax: '<color>';
|
|
1237
|
+
inherits: true;
|
|
1238
|
+
initial-value: transparent;
|
|
1239
|
+
}
|
|
1240
|
+
@property --item-bg-tickled {
|
|
1241
|
+
syntax: '<color>';
|
|
1242
|
+
inherits: true;
|
|
1243
|
+
initial-value: oklch(19% 0.02 240);
|
|
1244
|
+
}
|
|
1245
|
+
@property --item-bg-selected {
|
|
1246
|
+
syntax: '<color>';
|
|
1247
|
+
inherits: true;
|
|
1248
|
+
initial-value: oklch(60% 0.15 140);
|
|
1249
|
+
}
|
|
1250
|
+
@property --item-bg-selected-tickled {
|
|
1251
|
+
syntax: '<color>';
|
|
1252
|
+
inherits: true;
|
|
1253
|
+
initial-value: color-mix(in oklch, oklch(60% 0.15 140) 80%, oklch(0% 0 0));
|
|
1254
|
+
}
|
|
1255
|
+
@property --item-text-tickled {
|
|
1256
|
+
syntax: '<color>';
|
|
1257
|
+
inherits: true;
|
|
1258
|
+
initial-value: #fff;
|
|
1259
|
+
}
|
|
1260
|
+
@property --item-text-selected {
|
|
1261
|
+
syntax: '<color>';
|
|
1262
|
+
inherits: true;
|
|
1263
|
+
initial-value: #fff;
|
|
1264
|
+
}
|
|
1265
|
+
@property --item-border {
|
|
1266
|
+
syntax: '*';
|
|
1267
|
+
inherits: true;
|
|
1268
|
+
initial-value: 1px solid oklch(19% 0.02 240);
|
|
1269
|
+
}
|
|
1270
|
+
@property --item-border-tickled {
|
|
1271
|
+
syntax: '*';
|
|
1272
|
+
inherits: true;
|
|
1273
|
+
initial-value: 1px solid color-mix(in oklch, oklch(60% 0.15 140) 40%, transparent);
|
|
1274
|
+
}
|
|
1275
|
+
@property --item-border-selected {
|
|
1276
|
+
syntax: '*';
|
|
1277
|
+
inherits: true;
|
|
1278
|
+
initial-value: 1px dashed oklch(60% 0.15 140);
|
|
1279
|
+
}
|
|
1280
|
+
@property --item-border-active {
|
|
1281
|
+
syntax: '*';
|
|
1282
|
+
inherits: true;
|
|
1283
|
+
initial-value: 2px solid oklch(60% 0.15 140);
|
|
1284
|
+
}
|
|
1285
|
+
@property --item-border-dragged {
|
|
1286
|
+
syntax: '*';
|
|
1287
|
+
inherits: true;
|
|
1288
|
+
initial-value: 2px dotted color-mix(in oklch, oklch(60% 0.15 140) 80%, transparent);
|
|
1289
|
+
}
|
|
1290
|
+
@property --item-border-disabled {
|
|
1291
|
+
syntax: '*';
|
|
1292
|
+
inherits: true;
|
|
1293
|
+
initial-value: 1px solid oklch(22% 0.02 240);
|
|
1294
|
+
}
|
|
1295
|
+
@property --item-padding {
|
|
1296
|
+
syntax: '*';
|
|
1297
|
+
inherits: true;
|
|
1298
|
+
initial-value: 4px 8px;
|
|
1299
|
+
}
|
|
1300
|
+
@property --item-border-radius {
|
|
1301
|
+
syntax: '<length>';
|
|
1302
|
+
inherits: true;
|
|
1303
|
+
initial-value: 4px;
|
|
1304
|
+
}
|
|
1305
|
+
@property --item-icon-spacing {
|
|
1306
|
+
syntax: '<length>';
|
|
1307
|
+
inherits: true;
|
|
1308
|
+
initial-value: 4px;
|
|
1309
|
+
}
|
|
1172
1310
|
`;
|
|
1311
|
+
let _themeFallbacksRegistered = false;
|
|
1312
|
+
function _registerThemeFallbacksOnce() {
|
|
1313
|
+
if (_themeFallbacksRegistered || typeof document === `undefined`) return;
|
|
1314
|
+
_themeFallbacksRegistered = true;
|
|
1315
|
+
const styleEl = document.createElement(`style`);
|
|
1316
|
+
styleEl.textContent = _themeFallbacksCss.cssText;
|
|
1317
|
+
document.head.append(styleEl);
|
|
1318
|
+
}
|
|
1319
|
+
_registerThemeFallbacksOnce();
|
|
1320
|
+
/**
|
|
1321
|
+
* Spread this into any component whose styles reference theme variables.
|
|
1322
|
+
* It is an empty stylesheet — the actual `@property` rules are registered
|
|
1323
|
+
* once at the document level as a side effect of importing this module — so
|
|
1324
|
+
* this exists only to keep the familiar `static styles = [themeFallbacks, ...]`
|
|
1325
|
+
* pattern working across all consuming components.
|
|
1326
|
+
*/
|
|
1327
|
+
const themeFallbacks = i$3``;
|
|
1173
1328
|
//#endregion
|
|
1174
1329
|
//#region src/styles/popup.ts
|
|
1175
1330
|
/**
|
|
@@ -1227,7 +1382,7 @@ function svgToDataUri(svg) {
|
|
|
1227
1382
|
return `url("data:image/svg+xml,${encodeURIComponent(svg)}")`;
|
|
1228
1383
|
}
|
|
1229
1384
|
//#endregion
|
|
1230
|
-
//#region \0@oxc-project+runtime@0.
|
|
1385
|
+
//#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
|
|
1231
1386
|
function __decorate(decorators, target, key, desc) {
|
|
1232
1387
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1233
1388
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -1270,10 +1425,8 @@ let IxfxIconElement = class IxfxIconElement extends i {
|
|
|
1270
1425
|
}
|
|
1271
1426
|
updated(changed) {
|
|
1272
1427
|
super.updated(changed);
|
|
1273
|
-
if (changed.has(`rotate`))
|
|
1274
|
-
|
|
1275
|
-
else this.style.removeProperty(`--rotate`);
|
|
1276
|
-
}
|
|
1428
|
+
if (changed.has(`rotate`)) if (this.rotate?.length > 0) this.style.setProperty(`--rotate`, this.rotate);
|
|
1429
|
+
else this.style.removeProperty(`--rotate`);
|
|
1277
1430
|
}
|
|
1278
1431
|
static {
|
|
1279
1432
|
this.styles = [themeFallbacks, i$3`
|
|
@@ -1438,6 +1591,7 @@ let AcTextElement = class AcTextElement extends i {
|
|
|
1438
1591
|
if (!this._isOpen) return;
|
|
1439
1592
|
e.preventDefault();
|
|
1440
1593
|
this.#closePopup();
|
|
1594
|
+
break;
|
|
1441
1595
|
}
|
|
1442
1596
|
};
|
|
1443
1597
|
this.#onItemPointerDown = (e, item) => {
|
|
@@ -2014,9 +2168,8 @@ function defaultSelector(item) {
|
|
|
2014
2168
|
return String(item);
|
|
2015
2169
|
}
|
|
2016
2170
|
function createFuzzySearch(items, options = {}) {
|
|
2017
|
-
const selector = options.selector ?? defaultSelector;
|
|
2018
2171
|
const fzf = new Fzf(items, {
|
|
2019
|
-
selector,
|
|
2172
|
+
selector: options.selector ?? defaultSelector,
|
|
2020
2173
|
...options.fzf ?? {}
|
|
2021
2174
|
});
|
|
2022
2175
|
const find = (query) => {
|
|
@@ -2458,6 +2611,15 @@ let AcTokenElement = class AcTokenElement extends i {
|
|
|
2458
2611
|
this._tokens = [...value];
|
|
2459
2612
|
this.#emitChange();
|
|
2460
2613
|
}
|
|
2614
|
+
/**
|
|
2615
|
+
* Set the token list programmatically. Unlike the `tokens` property setter,
|
|
2616
|
+
* this does not dispatch `ac-token-change` — use it for initialisation or any
|
|
2617
|
+
* other programmatic update that should not re-enter a parent's own
|
|
2618
|
+
* `ac-token-change` handler.
|
|
2619
|
+
*/
|
|
2620
|
+
setTokens(value) {
|
|
2621
|
+
this._tokens = [...value];
|
|
2622
|
+
}
|
|
2461
2623
|
/** All committed token labels joined with commas. */
|
|
2462
2624
|
get value() {
|
|
2463
2625
|
return this._tokens.map((t) => t.label).join(`, `);
|
|
@@ -2478,7 +2640,8 @@ let AcTokenElement = class AcTokenElement extends i {
|
|
|
2478
2640
|
if (changedProps.has(`completionProvider`)) this.#buildStaticProvider();
|
|
2479
2641
|
if (this.#data.items !== this.#lastSuggestions) {
|
|
2480
2642
|
this.#lastSuggestions = this.#data.items;
|
|
2481
|
-
this._tickled.
|
|
2643
|
+
if (this.#data.items.length > 0) this._tickled.setTickled(0);
|
|
2644
|
+
else this._tickled.clearTickled();
|
|
2482
2645
|
}
|
|
2483
2646
|
}
|
|
2484
2647
|
#buildStaticProvider() {
|
|
@@ -2548,6 +2711,7 @@ let AcTokenElement = class AcTokenElement extends i {
|
|
|
2548
2711
|
e.preventDefault();
|
|
2549
2712
|
this.#closePopup();
|
|
2550
2713
|
this._selectedTokenIndex = void 0;
|
|
2714
|
+
break;
|
|
2551
2715
|
}
|
|
2552
2716
|
}
|
|
2553
2717
|
#onPaste;
|
|
@@ -2665,10 +2829,9 @@ let AcTokenElement = class AcTokenElement extends i {
|
|
|
2665
2829
|
});
|
|
2666
2830
|
}
|
|
2667
2831
|
#renderChip(item, index) {
|
|
2668
|
-
const isSelected = this._selectedTokenIndex === index;
|
|
2669
2832
|
return b`
|
|
2670
2833
|
<span
|
|
2671
|
-
class="token-chip ${
|
|
2834
|
+
class="token-chip ${this._selectedTokenIndex === index ? `selected` : ``}"
|
|
2672
2835
|
title=${item.subLabel ?? A}
|
|
2673
2836
|
@pointerdown=${(e) => this.#onChipPointerDown(e, index)}
|
|
2674
2837
|
>
|
|
@@ -2979,6 +3142,11 @@ const ICON_WARNING = `<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="
|
|
|
2979
3142
|
* fill="currentColor" so it inherits CSS color.
|
|
2980
3143
|
*/
|
|
2981
3144
|
const ICON_CHEVRON_RIGHT = `<svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"/></svg>`;
|
|
3145
|
+
/**
|
|
3146
|
+
* Folder with up arrow. Angled line style for navigating up one level.
|
|
3147
|
+
* fill="currentColor" so it inherits CSS color.
|
|
3148
|
+
*/
|
|
3149
|
+
const ICON_FOLDER_UP = `<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 4L4 12h5v8h6v-8h5L12 4z"/></svg>`;
|
|
2982
3150
|
function registerDefaults() {
|
|
2983
3151
|
registerIcon(`chevron-down`, ICON_CHEVRON_DOWN);
|
|
2984
3152
|
registerIcon(`chevron-right`, ICON_CHEVRON_RIGHT);
|
|
@@ -2986,6 +3154,7 @@ function registerDefaults() {
|
|
|
2986
3154
|
registerIcon(`check`, ICON_CHECK);
|
|
2987
3155
|
registerIcon(`close`, ICON_CLOSE);
|
|
2988
3156
|
registerIcon(`error`, ICON_ERROR);
|
|
3157
|
+
registerIcon(`folder-up`, ICON_FOLDER_UP);
|
|
2989
3158
|
registerIcon(`info`, ICON_INFO);
|
|
2990
3159
|
registerIcon(`warning`, ICON_WARNING);
|
|
2991
3160
|
}
|
|
@@ -3469,6 +3638,11 @@ let RadioGroup = class RadioGroup extends i {
|
|
|
3469
3638
|
.radio-item:hover:not([disabled]) {
|
|
3470
3639
|
opacity: 0.9;
|
|
3471
3640
|
background: color-mix(in oklch, var(--surface-4) 80%, transparent);
|
|
3641
|
+
border-color: var(--accent, #666);
|
|
3642
|
+
box-shadow:
|
|
3643
|
+
inset 1px 1px 1px 1px color-mix(in oklch, var(--surface-5) 70%, transparent),
|
|
3644
|
+
inset -1px -1px 1px 1px color-mix(in oklch, var(--surface-2) 60%, transparent),
|
|
3645
|
+
2px 2px 1px 0px color-mix(in oklch, var(--surface-2) 90%, transparent);
|
|
3472
3646
|
}
|
|
3473
3647
|
|
|
3474
3648
|
.radio-item.selected {
|
|
@@ -3632,6 +3806,7 @@ let MenuContainer = class MenuContainer extends i {
|
|
|
3632
3806
|
e.preventDefault();
|
|
3633
3807
|
e.stopPropagation();
|
|
3634
3808
|
this._activateFocusedItem(items);
|
|
3809
|
+
break;
|
|
3635
3810
|
}
|
|
3636
3811
|
};
|
|
3637
3812
|
}
|
|
@@ -4248,9 +4423,9 @@ let MenuItem = class MenuItem extends i {
|
|
|
4248
4423
|
}
|
|
4249
4424
|
|
|
4250
4425
|
:host(.tickled) .item {
|
|
4251
|
-
background:
|
|
4252
|
-
border:
|
|
4253
|
-
color:
|
|
4426
|
+
background: var(--item-bg-tickled);
|
|
4427
|
+
border: var(--item-border-tickled);
|
|
4428
|
+
color: var(--item-text-tickled);
|
|
4254
4429
|
}
|
|
4255
4430
|
|
|
4256
4431
|
:host(:focus) {
|
|
@@ -5364,7 +5539,9 @@ let ColourPicker = class ColourPicker extends i {
|
|
|
5364
5539
|
case `h`:
|
|
5365
5540
|
this.h = value;
|
|
5366
5541
|
break;
|
|
5367
|
-
case `a`:
|
|
5542
|
+
case `a`:
|
|
5543
|
+
this.a = value;
|
|
5544
|
+
break;
|
|
5368
5545
|
}
|
|
5369
5546
|
e.stopPropagation();
|
|
5370
5547
|
this.requestUpdate();
|
|
@@ -5474,7 +5651,9 @@ let ColourPicker = class ColourPicker extends i {
|
|
|
5474
5651
|
case `h`:
|
|
5475
5652
|
this.h = this._clampToRange(`h`, this.h);
|
|
5476
5653
|
break;
|
|
5477
|
-
case `a`:
|
|
5654
|
+
case `a`:
|
|
5655
|
+
this.a = this._clampToRange(`a`, this.a);
|
|
5656
|
+
break;
|
|
5478
5657
|
}
|
|
5479
5658
|
this.requestUpdate();
|
|
5480
5659
|
}
|
|
@@ -5586,25 +5765,25 @@ let ColourPicker = class ColourPicker extends i {
|
|
|
5586
5765
|
for (const v of trackBgVars) el.style.setProperty(v, grad);
|
|
5587
5766
|
for (const v of trackValueVars) el.style.setProperty(v, `transparent`);
|
|
5588
5767
|
}
|
|
5589
|
-
if (this._previewEl) {
|
|
5590
|
-
|
|
5591
|
-
const previewBg = `
|
|
5768
|
+
if (this._previewEl) if (this.a < 1) {
|
|
5769
|
+
const previewBg = `
|
|
5592
5770
|
linear-gradient(oklch(${l} ${c} ${h} / ${a}), oklch(${l} ${c} ${h} / ${a})),
|
|
5593
5771
|
repeating-conic-gradient(
|
|
5594
5772
|
var(--surface-2) 0% 25%,
|
|
5595
5773
|
var(--surface-4) 0% 50%
|
|
5596
5774
|
) 50% / 16px 16px
|
|
5597
5775
|
`;
|
|
5598
|
-
|
|
5599
|
-
|
|
5600
|
-
}
|
|
5776
|
+
this._previewEl.style.background = previewBg;
|
|
5777
|
+
} else this._previewEl.style.background = this.value;
|
|
5601
5778
|
}
|
|
5602
5779
|
_dispatchInput() {
|
|
5603
5780
|
const detail = {
|
|
5604
5781
|
l: this.l,
|
|
5605
5782
|
c: this.c,
|
|
5606
5783
|
h: this.h,
|
|
5607
|
-
a: this.a
|
|
5784
|
+
a: this.a,
|
|
5785
|
+
unit: `scalar`,
|
|
5786
|
+
space: `oklch`
|
|
5608
5787
|
};
|
|
5609
5788
|
this.dispatchEvent(new CustomEvent(`input`, {
|
|
5610
5789
|
detail,
|
|
@@ -5617,7 +5796,9 @@ let ColourPicker = class ColourPicker extends i {
|
|
|
5617
5796
|
l: this.l,
|
|
5618
5797
|
c: this.c,
|
|
5619
5798
|
h: this.h,
|
|
5620
|
-
a: this.a
|
|
5799
|
+
a: this.a,
|
|
5800
|
+
unit: `scalar`,
|
|
5801
|
+
space: `oklch`
|
|
5621
5802
|
};
|
|
5622
5803
|
this.dispatchEvent(new CustomEvent(`change`, {
|
|
5623
5804
|
detail,
|
|
@@ -5959,6 +6140,9 @@ let ColourPickerPopup = class ColourPickerPopup extends i {
|
|
|
5959
6140
|
get value() {
|
|
5960
6141
|
return oklchToCss(this.l, this.c, this.h, this.a);
|
|
5961
6142
|
}
|
|
6143
|
+
set value(colour) {
|
|
6144
|
+
this.setColour(colour);
|
|
6145
|
+
}
|
|
5962
6146
|
get _innerHidePreview() {
|
|
5963
6147
|
if (this.mode === `fluid`) return !this.showPreview;
|
|
5964
6148
|
return false;
|
|
@@ -5996,7 +6180,9 @@ let ColourPickerPopup = class ColourPickerPopup extends i {
|
|
|
5996
6180
|
l: this.l,
|
|
5997
6181
|
c: this.c,
|
|
5998
6182
|
h: this.h,
|
|
5999
|
-
a: this.a
|
|
6183
|
+
a: this.a,
|
|
6184
|
+
unit: `scalar`,
|
|
6185
|
+
space: `oklch`
|
|
6000
6186
|
};
|
|
6001
6187
|
this.dispatchEvent(new CustomEvent(`input`, {
|
|
6002
6188
|
detail,
|
|
@@ -6009,7 +6195,9 @@ let ColourPickerPopup = class ColourPickerPopup extends i {
|
|
|
6009
6195
|
l: this.l,
|
|
6010
6196
|
c: this.c,
|
|
6011
6197
|
h: this.h,
|
|
6012
|
-
a: this.a
|
|
6198
|
+
a: this.a,
|
|
6199
|
+
unit: `scalar`,
|
|
6200
|
+
space: `oklch`
|
|
6013
6201
|
};
|
|
6014
6202
|
this.dispatchEvent(new CustomEvent(`change`, {
|
|
6015
6203
|
detail,
|
|
@@ -6592,6 +6780,7 @@ let NarrowedTextElement = class NarrowedTextElement extends i {
|
|
|
6592
6780
|
this._query = ``;
|
|
6593
6781
|
this.tickled.clearTickled();
|
|
6594
6782
|
this._updateFilteredItems();
|
|
6783
|
+
break;
|
|
6595
6784
|
}
|
|
6596
6785
|
};
|
|
6597
6786
|
this.#onFocus = () => {
|
|
@@ -6811,13 +7000,12 @@ let NarrowedTextElement = class NarrowedTextElement extends i {
|
|
|
6811
7000
|
(this.shadowRoot?.querySelector(`.search-input`))?.focus();
|
|
6812
7001
|
}
|
|
6813
7002
|
_selectItem(item, clearFilter = true) {
|
|
6814
|
-
if (this.selectionMode === `single`)
|
|
6815
|
-
|
|
6816
|
-
|
|
6817
|
-
|
|
6818
|
-
|
|
6819
|
-
|
|
6820
|
-
} else if (this._selectedValues.has(item.value)) {
|
|
7003
|
+
if (this.selectionMode === `single`) if (this._selectedValues.has(item.value) && !this.requiredSelection) this._selectedValues.clear();
|
|
7004
|
+
else {
|
|
7005
|
+
this._selectedValues.clear();
|
|
7006
|
+
this._selectedValues.add(item.value);
|
|
7007
|
+
}
|
|
7008
|
+
else if (this._selectedValues.has(item.value)) {
|
|
6821
7009
|
if (!this.requiredSelection || this._selectedValues.size > 1) this._selectedValues.delete(item.value);
|
|
6822
7010
|
} else this._selectedValues.add(item.value);
|
|
6823
7011
|
this._updateValueFromSelected();
|
|
@@ -7105,6 +7293,8 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7105
7293
|
this.leadingCaret = false;
|
|
7106
7294
|
this.caretEmbedded = true;
|
|
7107
7295
|
this.hideRoot = false;
|
|
7296
|
+
this.padEnding = false;
|
|
7297
|
+
this.withUp = false;
|
|
7108
7298
|
this.#previousSelectionKey = ``;
|
|
7109
7299
|
this.#menuOpenedByKeyboard = false;
|
|
7110
7300
|
this.#currentOpenTrigger = null;
|
|
@@ -7197,6 +7387,7 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7197
7387
|
e.preventDefault();
|
|
7198
7388
|
this.#shiftFocusToNarrowedText();
|
|
7199
7389
|
}
|
|
7390
|
+
break;
|
|
7200
7391
|
}
|
|
7201
7392
|
};
|
|
7202
7393
|
this.#onNarrowedTextBlur = () => {
|
|
@@ -7483,25 +7674,46 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7483
7674
|
inline: `start`
|
|
7484
7675
|
});
|
|
7485
7676
|
}
|
|
7677
|
+
#updateTrailingWidth() {
|
|
7678
|
+
if (!this.padEnding || !this.shadowRoot) return;
|
|
7679
|
+
const hostContainer = this.shadowRoot.querySelector(`.host-container`);
|
|
7680
|
+
const trailing = this.shadowRoot.querySelector(`.trailing`);
|
|
7681
|
+
if (!hostContainer || !trailing) return;
|
|
7682
|
+
const segments = this.shadowRoot.querySelectorAll(`.crumb-segment`);
|
|
7683
|
+
const lastSegment = segments[segments.length - 1];
|
|
7684
|
+
if (!lastSegment) return;
|
|
7685
|
+
const containerWidth = hostContainer.getBoundingClientRect().width;
|
|
7686
|
+
const itemWidth = lastSegment.getBoundingClientRect().width;
|
|
7687
|
+
if (itemWidth < containerWidth) {
|
|
7688
|
+
trailing.style.width = `${containerWidth - itemWidth - 5}px`;
|
|
7689
|
+
requestAnimationFrame(() => {
|
|
7690
|
+
if (hostContainer.scrollWidth <= hostContainer.clientWidth) hostContainer.style.setProperty(`--scroll-fade-x-start`, `0px`, `important`);
|
|
7691
|
+
else hostContainer.style.removeProperty(`--scroll-fade-x-start`);
|
|
7692
|
+
});
|
|
7693
|
+
} else trailing.style.width = ``;
|
|
7694
|
+
}
|
|
7486
7695
|
#setSelected(node) {
|
|
7487
7696
|
const previous = this.selectedNode;
|
|
7488
7697
|
if (previous) this.#previousSelectionKey = previous.item?.key ?? ``;
|
|
7489
7698
|
else this.#previousSelectionKey = ``;
|
|
7490
|
-
const previousSet = previous ?
|
|
7699
|
+
const previousSet = previous ? new Set([previous]) : /* @__PURE__ */ new Set();
|
|
7491
7700
|
this.selectedNode = node;
|
|
7492
|
-
this._selectedNodes =
|
|
7701
|
+
this._selectedNodes = new Set([node]);
|
|
7493
7702
|
if (this.root) {
|
|
7494
7703
|
const path = this.#findPath(this.root, node);
|
|
7495
7704
|
if (path) {
|
|
7496
7705
|
const depth = this.hideRoot && path.length > 1 ? path.length - 2 : path.length - 1;
|
|
7497
7706
|
requestAnimationFrame(() => {
|
|
7707
|
+
this.#updateTrailingWidth();
|
|
7708
|
+
const hostContainer = this.#getHostContainer();
|
|
7709
|
+
if (hostContainer) hostContainer.scrollLeft = 0;
|
|
7498
7710
|
this.#scrollSegmentIntoView(depth);
|
|
7499
7711
|
});
|
|
7500
7712
|
}
|
|
7501
7713
|
}
|
|
7502
7714
|
this.dispatchEvent(new CustomEvent(`select`, {
|
|
7503
7715
|
detail: {
|
|
7504
|
-
selected:
|
|
7716
|
+
selected: new Set([node]),
|
|
7505
7717
|
previous: previousSet
|
|
7506
7718
|
},
|
|
7507
7719
|
bubbles: true,
|
|
@@ -7625,6 +7837,15 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7625
7837
|
composed: true
|
|
7626
7838
|
}));
|
|
7627
7839
|
}
|
|
7840
|
+
#onUpClick() {
|
|
7841
|
+
const r = this.root;
|
|
7842
|
+
const sel = this.selectedNode;
|
|
7843
|
+
if (!r || !sel) return;
|
|
7844
|
+
const path = this.#findPath(r, sel);
|
|
7845
|
+
if (!path || path.length <= 1) return;
|
|
7846
|
+
const parent = path[path.length - 2];
|
|
7847
|
+
this.#setSelected(parent);
|
|
7848
|
+
}
|
|
7628
7849
|
/** Navigate to a node by key path. Returns false if any key is not found in already-loaded children. */
|
|
7629
7850
|
navigateTo(keys) {
|
|
7630
7851
|
if (!this.root?.children) return false;
|
|
@@ -7672,6 +7893,9 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7672
7893
|
let pathNodes = this.#findPath(r, sel) ?? [r];
|
|
7673
7894
|
if (this.hideRoot && pathNodes.length > 1) pathNodes = pathNodes.slice(1);
|
|
7674
7895
|
this.#hasChildOptions();
|
|
7896
|
+
const isAtRoot = (() => {
|
|
7897
|
+
return (this.#findPath(r, sel) ?? [r]).length <= 1;
|
|
7898
|
+
})();
|
|
7675
7899
|
const parts = [];
|
|
7676
7900
|
let segmentId = 0;
|
|
7677
7901
|
pathNodes.forEach((node, i) => {
|
|
@@ -7785,18 +8009,29 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7785
8009
|
}
|
|
7786
8010
|
});
|
|
7787
8011
|
return b`
|
|
7788
|
-
<div
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
8012
|
+
<div class="crumb-wrapper">
|
|
8013
|
+
${this.withUp ? b`
|
|
8014
|
+
<button
|
|
8015
|
+
class="up-button"
|
|
8016
|
+
?disabled=${isAtRoot}
|
|
8017
|
+
aria-label="Go up one level"
|
|
8018
|
+
@click=${this.#onUpClick}
|
|
8019
|
+
>
|
|
8020
|
+
<ixfx-icon name="folder-up"></ixfx-icon>
|
|
8021
|
+
</button>
|
|
8022
|
+
` : A}
|
|
8023
|
+
<div
|
|
8024
|
+
class="host-container scroll-fade-x"
|
|
8025
|
+
tabindex="0"
|
|
8026
|
+
@focus=${this.#onFocus}
|
|
8027
|
+
@blur=${this.#onBlur}
|
|
8028
|
+
@keydown=${this.#onKeyDown}
|
|
8029
|
+
@click=${this.#onHostClick}
|
|
8030
|
+
@menu-trigger-close=${this.#onMenuTriggerClose}
|
|
8031
|
+
@mouseout=${(e) => this.tickled.handlePointerLeave(e)}
|
|
8032
|
+
>
|
|
8033
|
+
<div class="parts"
|
|
8034
|
+
@mouseover=${(e) => {
|
|
7800
8035
|
if (this.#isWheelScrolling) return;
|
|
7801
8036
|
const target = e.target;
|
|
7802
8037
|
if (!(target instanceof HTMLElement)) return;
|
|
@@ -7817,8 +8052,9 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7817
8052
|
composed: true
|
|
7818
8053
|
}));
|
|
7819
8054
|
}}
|
|
7820
|
-
|
|
7821
|
-
|
|
8055
|
+
>${parts}${this.padEnding ? b`<div class="trailing"></div>` : A}</div>
|
|
8056
|
+
${this.showSuggestions ? this.#renderChildOptions() : A}
|
|
8057
|
+
</div>
|
|
7822
8058
|
</div>
|
|
7823
8059
|
`;
|
|
7824
8060
|
}
|
|
@@ -7896,15 +8132,57 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7896
8132
|
outline-offset: 2px;
|
|
7897
8133
|
}
|
|
7898
8134
|
|
|
8135
|
+
.crumb-wrapper {
|
|
8136
|
+
display: flex;
|
|
8137
|
+
align-items: center;
|
|
8138
|
+
gap: var(--crumb-item-gap);
|
|
8139
|
+
width: 100%;
|
|
8140
|
+
}
|
|
8141
|
+
|
|
8142
|
+
.up-button {
|
|
8143
|
+
display: inline-flex;
|
|
8144
|
+
align-items: center;
|
|
8145
|
+
justify-content: center;
|
|
8146
|
+
flex-shrink: 0;
|
|
8147
|
+
background: var(--crumb-item-bg);
|
|
8148
|
+
border: var(--crumb-item-border);
|
|
8149
|
+
border-radius: var(--crumb-item-border-radius);
|
|
8150
|
+
padding: var(--crumb-item-padding);
|
|
8151
|
+
cursor: pointer;
|
|
8152
|
+
color: inherit;
|
|
8153
|
+
}
|
|
8154
|
+
|
|
8155
|
+
.up-button:disabled {
|
|
8156
|
+
opacity: 0.5;
|
|
8157
|
+
cursor: not-allowed;
|
|
8158
|
+
}
|
|
8159
|
+
|
|
8160
|
+
.up-button:hover:not(:disabled) {
|
|
8161
|
+
background: var(--crumb-item-bg-tickled);
|
|
8162
|
+
border-color: var(--crumb-item-border-tickled);
|
|
8163
|
+
}
|
|
8164
|
+
|
|
8165
|
+
.up-button ixfx-icon {
|
|
8166
|
+
width: 1em;
|
|
8167
|
+
height: 1em;
|
|
8168
|
+
pointer-events: none;
|
|
8169
|
+
}
|
|
8170
|
+
|
|
7899
8171
|
/* Edge fade (shows/hides based on scroll position) comes from the
|
|
7900
8172
|
* shared .scroll-fade-x class - see ../styles/scroll-fade.ts */
|
|
7901
8173
|
.host-container {
|
|
7902
8174
|
display: flex;
|
|
7903
|
-
|
|
8175
|
+
flex: 1;
|
|
8176
|
+
min-width: 0;
|
|
7904
8177
|
outline: none;
|
|
7905
8178
|
overflow: scroll;
|
|
7906
8179
|
scroll-snap-type: x mandatory;
|
|
7907
8180
|
scrollbar-width: none;
|
|
8181
|
+
overscroll-behavior: none;
|
|
8182
|
+
}
|
|
8183
|
+
|
|
8184
|
+
.host-container::-webkit-scrollbar {
|
|
8185
|
+
display: none;
|
|
7908
8186
|
}
|
|
7909
8187
|
|
|
7910
8188
|
.parts {
|
|
@@ -7913,9 +8191,7 @@ let CrumbNavigationElement = class CrumbNavigationElement extends i {
|
|
|
7913
8191
|
}
|
|
7914
8192
|
|
|
7915
8193
|
.trailing {
|
|
7916
|
-
flex:
|
|
7917
|
-
min-width: 1em;
|
|
7918
|
-
cursor: pointer;
|
|
8194
|
+
flex-shrink: 0;
|
|
7919
8195
|
}
|
|
7920
8196
|
|
|
7921
8197
|
.crumb-segment {
|
|
@@ -8131,6 +8407,16 @@ __decorate([property({
|
|
|
8131
8407
|
reflect: true,
|
|
8132
8408
|
attribute: `hide-root`
|
|
8133
8409
|
})], CrumbNavigationElement.prototype, "hideRoot", void 0);
|
|
8410
|
+
__decorate([property({
|
|
8411
|
+
type: Boolean,
|
|
8412
|
+
reflect: true,
|
|
8413
|
+
attribute: `pad-ending`
|
|
8414
|
+
})], CrumbNavigationElement.prototype, "padEnding", void 0);
|
|
8415
|
+
__decorate([property({
|
|
8416
|
+
type: Boolean,
|
|
8417
|
+
reflect: true,
|
|
8418
|
+
attribute: `with-up`
|
|
8419
|
+
})], CrumbNavigationElement.prototype, "withUp", void 0);
|
|
8134
8420
|
CrumbNavigationElement = __decorate([safeCustomElement(`ixfx-crumb-navigation`)], CrumbNavigationElement);
|
|
8135
8421
|
//#endregion
|
|
8136
8422
|
//#region src/crumbs/crumb-path-controller.ts
|
|
@@ -8251,6 +8537,7 @@ let CrumbPathElement = class CrumbPathElement extends i {
|
|
|
8251
8537
|
case `Escape`:
|
|
8252
8538
|
e.preventDefault();
|
|
8253
8539
|
this.#closeDropdown();
|
|
8540
|
+
break;
|
|
8254
8541
|
}
|
|
8255
8542
|
};
|
|
8256
8543
|
this.#onHostKeyDown = (e) => {
|
|
@@ -8589,11 +8876,9 @@ let CrumbPathElement = class CrumbPathElement extends i {
|
|
|
8589
8876
|
#onHostKeyDown;
|
|
8590
8877
|
render() {
|
|
8591
8878
|
const segments = this.#getSegments();
|
|
8592
|
-
if (this._editing)
|
|
8593
|
-
const editValue = this.path;
|
|
8594
|
-
return b`
|
|
8879
|
+
if (this._editing) return b`
|
|
8595
8880
|
<ixfx-ac-text
|
|
8596
|
-
.value=${
|
|
8881
|
+
.value=${this.path}
|
|
8597
8882
|
.tabSuffix=${this.separator}
|
|
8598
8883
|
.completionProvider=${this.#makeCompletionProvider()}
|
|
8599
8884
|
@change=${this.#onAcChange}
|
|
@@ -8601,7 +8886,6 @@ let CrumbPathElement = class CrumbPathElement extends i {
|
|
|
8601
8886
|
@keydown=${this.#onAcKeyDown}
|
|
8602
8887
|
></ixfx-ac-text>
|
|
8603
8888
|
`;
|
|
8604
|
-
}
|
|
8605
8889
|
const rootSegments = this.#getRootSegments();
|
|
8606
8890
|
const leadingCaret = this.siblingLookup && rootSegments.length === 0 ? b`
|
|
8607
8891
|
<div class="caret ${this._openIdx === -1 ? `open` : ``} ${this._confirmedLeafIndices.has(``) ? `disabled` : ``}"
|
|
@@ -8946,16 +9230,15 @@ let DataDisplayComponent = class DataDisplayComponent extends i {
|
|
|
8946
9230
|
}
|
|
8947
9231
|
continue;
|
|
8948
9232
|
}
|
|
8949
|
-
if (typeof value === `object` && value !== null && !Array.isArray(value))
|
|
8950
|
-
|
|
8951
|
-
|
|
8952
|
-
|
|
8953
|
-
this.#renderNestedDisplay(row, value, true);
|
|
8954
|
-
} else {
|
|
8955
|
-
const row = this.#ensureRow(fullPath, key);
|
|
8956
|
-
this.#renderNestedDisplay(row, value);
|
|
8957
|
-
}
|
|
9233
|
+
if (typeof value === `object` && value !== null && !Array.isArray(value)) if (this.#hasDescendantConfig(fullPath)) this.#walk(value, fullPath, activePaths);
|
|
9234
|
+
else if (this.automap) {
|
|
9235
|
+
const row = this.#ensureRow(fullPath, key);
|
|
9236
|
+
this.#renderNestedDisplay(row, value, true);
|
|
8958
9237
|
} else {
|
|
9238
|
+
const row = this.#ensureRow(fullPath, key);
|
|
9239
|
+
this.#renderNestedDisplay(row, value);
|
|
9240
|
+
}
|
|
9241
|
+
else {
|
|
8959
9242
|
const autoStyle = this.#determineAutoStyle(value);
|
|
8960
9243
|
if (autoStyle !== void 0) {
|
|
8961
9244
|
const row = this.#ensureRow(fullPath, key);
|
|
@@ -9036,15 +9319,13 @@ let DataDisplayComponent = class DataDisplayComponent extends i {
|
|
|
9036
9319
|
case `plot`:
|
|
9037
9320
|
if (typeof value === `number`) {
|
|
9038
9321
|
if (changed) el.add(value);
|
|
9039
|
-
} else if (typeof value === `object` && value !== null && changed) {
|
|
9040
|
-
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
} else el.addData(value);
|
|
9047
|
-
}
|
|
9322
|
+
} else if (typeof value === `object` && value !== null && changed) if (Array.isArray(value)) {
|
|
9323
|
+
const record = {};
|
|
9324
|
+
value.forEach((v, i) => {
|
|
9325
|
+
if (typeof v === `number`) record[String(i)] = v;
|
|
9326
|
+
});
|
|
9327
|
+
if (Object.keys(record).length > 0) el.addData(record);
|
|
9328
|
+
} else el.addData(value);
|
|
9048
9329
|
this.#applyPlotOptions(el, style, options);
|
|
9049
9330
|
break;
|
|
9050
9331
|
case `plot-xy`:
|
|
@@ -9056,7 +9337,9 @@ let DataDisplayComponent = class DataDisplayComponent extends i {
|
|
|
9056
9337
|
if (typeof value === `number` && changed) el.add(value);
|
|
9057
9338
|
this.#applyPlotOptions(el, style, options);
|
|
9058
9339
|
break;
|
|
9059
|
-
case `time-elapsed`:
|
|
9340
|
+
case `time-elapsed`:
|
|
9341
|
+
el.textContent = this.#formatTimeElapsed(value);
|
|
9342
|
+
break;
|
|
9060
9343
|
}
|
|
9061
9344
|
this.#previousValues.set(path, value);
|
|
9062
9345
|
}
|
|
@@ -9102,10 +9385,9 @@ let DataDisplayComponent = class DataDisplayComponent extends i {
|
|
|
9102
9385
|
#formatTimeElapsed(value) {
|
|
9103
9386
|
let timestamp;
|
|
9104
9387
|
if (value instanceof Date) timestamp = value.getTime();
|
|
9105
|
-
else if (typeof value === `number`)
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
} else if (typeof value === `string`) timestamp = new Date(value).getTime();
|
|
9388
|
+
else if (typeof value === `number`) if (value > 0xe8d4a51000) timestamp = value;
|
|
9389
|
+
else timestamp = Date.now();
|
|
9390
|
+
else if (typeof value === `string`) timestamp = new Date(value).getTime();
|
|
9109
9391
|
else return String(value);
|
|
9110
9392
|
if (Number.isNaN(timestamp)) return String(value);
|
|
9111
9393
|
const elapsed = Date.now() - timestamp;
|
|
@@ -9837,15 +10119,14 @@ let EditableNumber = class EditableNumber extends WheelNudgeMixin(EditableLabel)
|
|
|
9837
10119
|
this.style.setProperty(`--value`, String(normalized));
|
|
9838
10120
|
let valueStart = 0;
|
|
9839
10121
|
let valueEnd = normalized;
|
|
9840
|
-
if (this.linearStyle === `bipolar`) {
|
|
9841
|
-
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
} else if (this.linearStyle === `unipolar`) {
|
|
10122
|
+
if (this.linearStyle === `bipolar`) if (normalized <= .5) {
|
|
10123
|
+
valueStart = normalized;
|
|
10124
|
+
valueEnd = .5;
|
|
10125
|
+
} else {
|
|
10126
|
+
valueStart = .5;
|
|
10127
|
+
valueEnd = normalized;
|
|
10128
|
+
}
|
|
10129
|
+
else if (this.linearStyle === `unipolar`) {
|
|
9849
10130
|
valueStart = .5 - normalized * .5;
|
|
9850
10131
|
valueEnd = .5 + normalized * .5;
|
|
9851
10132
|
}
|
|
@@ -9908,6 +10189,7 @@ let EditableNumber = class EditableNumber extends WheelNudgeMixin(EditableLabel)
|
|
|
9908
10189
|
case `End`:
|
|
9909
10190
|
delta = (this.max ?? 0) - this._parseValue();
|
|
9910
10191
|
handled = true;
|
|
10192
|
+
break;
|
|
9911
10193
|
}
|
|
9912
10194
|
if (handled) {
|
|
9913
10195
|
e.preventDefault();
|
|
@@ -10256,15 +10538,13 @@ function collectFormValues(root) {
|
|
|
10256
10538
|
root.querySelectorAll(`[name]`).forEach((el) => {
|
|
10257
10539
|
const name = el.getAttribute(`name`);
|
|
10258
10540
|
if (!name) return;
|
|
10259
|
-
if (el instanceof HTMLInputElement) {
|
|
10260
|
-
if (el.
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
else values[name] = el.value;
|
|
10267
|
-
} else if (el instanceof HTMLTextAreaElement) values[name] = el.value;
|
|
10541
|
+
if (el instanceof HTMLInputElement) if (el.type === `radio`) {
|
|
10542
|
+
if (el.checked) values[name] = el.value;
|
|
10543
|
+
} else if (el.type === `checkbox`) values[name] = el.checked;
|
|
10544
|
+
else values[name] = el.value;
|
|
10545
|
+
else if (el instanceof HTMLSelectElement) if (el.multiple) values[name] = Array.from(el.selectedOptions).map((opt) => opt.value);
|
|
10546
|
+
else values[name] = el.value;
|
|
10547
|
+
else if (el instanceof HTMLTextAreaElement) values[name] = el.value;
|
|
10268
10548
|
else if (`value` in el) values[name] = el.value;
|
|
10269
10549
|
});
|
|
10270
10550
|
return values;
|
|
@@ -11000,6 +11280,7 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
11000
11280
|
case `Escape`:
|
|
11001
11281
|
event.preventDefault();
|
|
11002
11282
|
this.#abortPending();
|
|
11283
|
+
break;
|
|
11003
11284
|
}
|
|
11004
11285
|
};
|
|
11005
11286
|
this.#onDblClick = (e) => {
|
|
@@ -11261,7 +11542,9 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
11261
11542
|
case `manual`:
|
|
11262
11543
|
this.#handleManualClick(node, depth, event);
|
|
11263
11544
|
break;
|
|
11264
|
-
case `checked`:
|
|
11545
|
+
case `checked`:
|
|
11546
|
+
this.#handleExpandOnly(node, depth);
|
|
11547
|
+
break;
|
|
11265
11548
|
}
|
|
11266
11549
|
this.requestUpdate();
|
|
11267
11550
|
}
|
|
@@ -11428,10 +11711,8 @@ let TreeBaseElement = class TreeBaseElement extends i {
|
|
|
11428
11711
|
return node.children.every((child) => this.#allDescendantsSelected(child));
|
|
11429
11712
|
}
|
|
11430
11713
|
#applyCheckedToggle(node, selected) {
|
|
11431
|
-
if (this.#canSelect(node))
|
|
11432
|
-
|
|
11433
|
-
else this._selectedNodes.delete(node);
|
|
11434
|
-
}
|
|
11714
|
+
if (this.#canSelect(node)) if (selected) this._selectedNodes.add(node);
|
|
11715
|
+
else this._selectedNodes.delete(node);
|
|
11435
11716
|
if (node.children) for (const child of node.children) this.#applyCheckedToggle(child, selected);
|
|
11436
11717
|
}
|
|
11437
11718
|
#getFlatIndexOf(node) {
|
|
@@ -12249,7 +12530,9 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12249
12530
|
}
|
|
12250
12531
|
break;
|
|
12251
12532
|
}
|
|
12252
|
-
case `Escape`:
|
|
12533
|
+
case `Escape`:
|
|
12534
|
+
this._clearSelection();
|
|
12535
|
+
break;
|
|
12253
12536
|
}
|
|
12254
12537
|
};
|
|
12255
12538
|
this._onClick = (e) => {
|
|
@@ -12437,7 +12720,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12437
12720
|
if (this.selectionMode === `none`) return;
|
|
12438
12721
|
if (!this._isCheckable(item)) return;
|
|
12439
12722
|
const previous = this._selectedItems;
|
|
12440
|
-
const next =
|
|
12723
|
+
const next = new Set([item]);
|
|
12441
12724
|
this._selectedItems = next;
|
|
12442
12725
|
this.#selectionAnchor = item;
|
|
12443
12726
|
this._syncItemStates();
|
|
@@ -12527,7 +12810,9 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12527
12810
|
else this._replaceSelection(item);
|
|
12528
12811
|
break;
|
|
12529
12812
|
case `checked`: break;
|
|
12530
|
-
case `sticky`:
|
|
12813
|
+
case `sticky`:
|
|
12814
|
+
this._toggleItem(item);
|
|
12815
|
+
break;
|
|
12531
12816
|
}
|
|
12532
12817
|
}
|
|
12533
12818
|
_handleSpaceKey(item) {
|
|
@@ -12614,10 +12899,7 @@ let VerticalListElement = class VerticalListElement extends i {
|
|
|
12614
12899
|
if (wantsCustom) {
|
|
12615
12900
|
cb.setAttribute(`aria-checked`, String(checked));
|
|
12616
12901
|
cb.toggleAttribute(`data-checked`, checked);
|
|
12617
|
-
if (this.checkboxRenderer)
|
|
12618
|
-
const renderer = typeof this.checkboxRenderer === `function` ? this.checkboxRenderer : this.checkboxRenderer.renderer;
|
|
12619
|
-
D(renderer(checked), cb);
|
|
12620
|
-
}
|
|
12902
|
+
if (this.checkboxRenderer) D((typeof this.checkboxRenderer === `function` ? this.checkboxRenderer : this.checkboxRenderer.renderer)(checked), cb);
|
|
12621
12903
|
} else {
|
|
12622
12904
|
const input = cb.querySelector(`input.ixfx-list-checkbox`);
|
|
12623
12905
|
if (input) input.checked = checked;
|
|
@@ -13027,7 +13309,7 @@ function createVerticalListAdapter(renderItem, options) {
|
|
|
13027
13309
|
}
|
|
13028
13310
|
//#endregion
|
|
13029
13311
|
//#region src/hex/colour.ts
|
|
13030
|
-
const WHITESPACE_BYTES =
|
|
13312
|
+
const WHITESPACE_BYTES = new Set([
|
|
13031
13313
|
9,
|
|
13032
13314
|
10,
|
|
13033
13315
|
11,
|
|
@@ -13076,7 +13358,7 @@ function clamp$3(value) {
|
|
|
13076
13358
|
function writeByte(store, pos, value) {
|
|
13077
13359
|
const clampedValue = clamp$3(value);
|
|
13078
13360
|
const before = store.data[pos];
|
|
13079
|
-
const diff =
|
|
13361
|
+
const diff = new Map([[pos, {
|
|
13080
13362
|
before,
|
|
13081
13363
|
after: clampedValue
|
|
13082
13364
|
}]]);
|
|
@@ -13285,7 +13567,9 @@ function extendRectangular(sel, dir, columns, _dataLength, anchorX = 0, anchorY
|
|
|
13285
13567
|
height += 1;
|
|
13286
13568
|
}
|
|
13287
13569
|
break;
|
|
13288
|
-
case `down`:
|
|
13570
|
+
case `down`:
|
|
13571
|
+
height += 1;
|
|
13572
|
+
break;
|
|
13289
13573
|
}
|
|
13290
13574
|
return {
|
|
13291
13575
|
kind: `rectangular`,
|
|
@@ -13331,7 +13615,7 @@ let IxfxHexEditorElement = class IxfxHexEditorElement extends i {
|
|
|
13331
13615
|
this._containerH = 0;
|
|
13332
13616
|
this._shadeMap = null;
|
|
13333
13617
|
this._focusSide = null;
|
|
13334
|
-
this._store = createHexStore(
|
|
13618
|
+
this._store = createHexStore(new Uint8Array(0));
|
|
13335
13619
|
this._undoStack = createUndoRedoStack();
|
|
13336
13620
|
this._copyBuffer = null;
|
|
13337
13621
|
this._rowHeight = 24;
|
|
@@ -14209,10 +14493,7 @@ function valueToAngle(relativeValue, valueMode, flatten) {
|
|
|
14209
14493
|
switch (valueMode) {
|
|
14210
14494
|
case `range`: return startAngle + relativeValue * totalArc;
|
|
14211
14495
|
case `bipolar`: if (relativeValue <= .5) return startAngle + relativeValue / .5 * (MIDPOINT_ANGLE - startAngle);
|
|
14212
|
-
else
|
|
14213
|
-
const t = (relativeValue - .5) / .5;
|
|
14214
|
-
return MIDPOINT_ANGLE + t * (endAngle - MIDPOINT_ANGLE);
|
|
14215
|
-
}
|
|
14496
|
+
else return MIDPOINT_ANGLE + (relativeValue - .5) / .5 * (endAngle - MIDPOINT_ANGLE);
|
|
14216
14497
|
case `unipolar`: return MIDPOINT_ANGLE;
|
|
14217
14498
|
default: return startAngle;
|
|
14218
14499
|
}
|
|
@@ -14235,14 +14516,11 @@ function getValueArcAngles(relativeValue, valueMode, flatten) {
|
|
|
14235
14516
|
startAngle: startAngle + relativeValue / .5 * (MIDPOINT_ANGLE - startAngle),
|
|
14236
14517
|
endAngle: MIDPOINT_ANGLE
|
|
14237
14518
|
};
|
|
14238
|
-
else if (relativeValue > .5) {
|
|
14239
|
-
|
|
14240
|
-
|
|
14241
|
-
|
|
14242
|
-
|
|
14243
|
-
endAngle: valueAngle
|
|
14244
|
-
};
|
|
14245
|
-
} else return {
|
|
14519
|
+
else if (relativeValue > .5) return {
|
|
14520
|
+
startAngle: MIDPOINT_ANGLE,
|
|
14521
|
+
endAngle: MIDPOINT_ANGLE + (relativeValue - .5) / .5 * (endAngle - MIDPOINT_ANGLE)
|
|
14522
|
+
};
|
|
14523
|
+
else return {
|
|
14246
14524
|
startAngle: MIDPOINT_ANGLE,
|
|
14247
14525
|
endAngle: MIDPOINT_ANGLE
|
|
14248
14526
|
};
|
|
@@ -14433,10 +14711,9 @@ function getMidpointPosition(radius, center = {
|
|
|
14433
14711
|
x: 50,
|
|
14434
14712
|
y: 50
|
|
14435
14713
|
}) {
|
|
14436
|
-
const position = polarToCartesian(MIDPOINT_ANGLE, radius, center);
|
|
14437
14714
|
return {
|
|
14438
14715
|
angle: MIDPOINT_ANGLE,
|
|
14439
|
-
position
|
|
14716
|
+
position: polarToCartesian(MIDPOINT_ANGLE, radius, center)
|
|
14440
14717
|
};
|
|
14441
14718
|
}
|
|
14442
14719
|
/**
|
|
@@ -14544,6 +14821,7 @@ let RadialInputElement = class RadialInputElement extends WheelNudgeMixin(i) {
|
|
|
14544
14821
|
case `End`:
|
|
14545
14822
|
this.#setValueFromRelative(1, true);
|
|
14546
14823
|
handled = true;
|
|
14824
|
+
break;
|
|
14547
14825
|
}
|
|
14548
14826
|
if (handled) event.preventDefault();
|
|
14549
14827
|
};
|
|
@@ -14666,13 +14944,10 @@ let RadialInputElement = class RadialInputElement extends WheelNudgeMixin(i) {
|
|
|
14666
14944
|
#renderCircleBorder() {
|
|
14667
14945
|
const path = generateCircleBorderPath(this.radius, this.flatten, CENTER);
|
|
14668
14946
|
const borderWidth = this.#getCssVar(`--dial-border-width`, 2);
|
|
14669
|
-
|
|
14670
|
-
return w`<path class="dial-border" d="${path}" fill="none" stroke="${borderColor}" stroke-width="${borderWidth}" stroke-linecap="round" vector-effect="non-scaling-stroke" />`;
|
|
14947
|
+
return w`<path class="dial-border" d="${path}" fill="none" stroke="${getComputedStyle(this).getPropertyValue(`--dial-border-color`).trim() || `var(--surface-4)`}" stroke-width="${borderWidth}" stroke-linecap="round" vector-effect="non-scaling-stroke" />`;
|
|
14671
14948
|
}
|
|
14672
14949
|
#renderCircleFill() {
|
|
14673
|
-
|
|
14674
|
-
const fill = getComputedStyle(this).getPropertyValue(`--dial-fill`).trim() || `transparent`;
|
|
14675
|
-
return w`<path class="dial-fill" d="${path}" fill="${fill}" />`;
|
|
14950
|
+
return w`<path class="dial-fill" d="${generateCircleBorderPath(this.radius, this.flatten, CENTER)}" fill="${getComputedStyle(this).getPropertyValue(`--dial-fill`).trim() || `transparent`}" />`;
|
|
14676
14951
|
}
|
|
14677
14952
|
#renderWedge() {
|
|
14678
14953
|
const { startAngle, endAngle, clockwise } = getWedgeAngles(this.#getRelativeValue(), this.valueMode, this.flatten);
|
|
@@ -14746,10 +15021,9 @@ let RadialInputElement = class RadialInputElement extends WheelNudgeMixin(i) {
|
|
|
14746
15021
|
`;
|
|
14747
15022
|
const length = this.#getCssVar(`--marker-length`, .8);
|
|
14748
15023
|
const offset = this.#getCssVar(`--marker-offset`, .2);
|
|
14749
|
-
const path = this.#getNeedlePath(angle, length, offset);
|
|
14750
15024
|
return w`
|
|
14751
15025
|
<g class="value-marker" part="value-marker">
|
|
14752
|
-
<path d="${
|
|
15026
|
+
<path d="${this.#getNeedlePath(angle, length, offset)}" />
|
|
14753
15027
|
</g>
|
|
14754
15028
|
`;
|
|
14755
15029
|
}
|
|
@@ -15224,16 +15498,14 @@ let LedElement = class LedElement extends i {
|
|
|
15224
15498
|
}
|
|
15225
15499
|
#blinkInterval;
|
|
15226
15500
|
willUpdate(changedProperties) {
|
|
15227
|
-
if (changedProperties.has(`
|
|
15501
|
+
if (changedProperties.has(`lit`)) this.value = this.lit ? 1 : 0;
|
|
15502
|
+
if (changedProperties.has(`value`) || changedProperties.has(`lit`)) this.style.setProperty(`--value`, String(this.value));
|
|
15228
15503
|
if (changedProperties.has(`blinking`) || changedProperties.has(`rate`)) this.#updateBlinking();
|
|
15229
15504
|
if (changedProperties.has(`rate`)) {
|
|
15230
15505
|
const transitionMs = this.rate < 300 ? this.rate * .5 : 150;
|
|
15231
15506
|
this.style.setProperty(`--transition-duration`, `${transitionMs}ms`);
|
|
15232
15507
|
}
|
|
15233
15508
|
}
|
|
15234
|
-
updated(changedProperties) {
|
|
15235
|
-
if (changedProperties.has(`lit`)) this.value = this.lit ? 1 : 0;
|
|
15236
|
-
}
|
|
15237
15509
|
disconnectedCallback() {
|
|
15238
15510
|
super.disconnectedCallback();
|
|
15239
15511
|
this.#stopBlinking();
|
|
@@ -15698,6 +15970,7 @@ let MenuSubTrigger = class MenuSubTrigger extends i {
|
|
|
15698
15970
|
e.preventDefault();
|
|
15699
15971
|
e.stopPropagation();
|
|
15700
15972
|
this._hideSubmenu();
|
|
15973
|
+
break;
|
|
15701
15974
|
}
|
|
15702
15975
|
}
|
|
15703
15976
|
static {
|
|
@@ -16269,20 +16542,19 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16269
16542
|
const tickled = this.#getTickledNodeAndDepth();
|
|
16270
16543
|
if (!tickled) return;
|
|
16271
16544
|
const { node, depth, index } = tickled;
|
|
16272
|
-
if (this.interactionMode === `standard` || this.interactionMode === `vscode`) {
|
|
16273
|
-
|
|
16274
|
-
|
|
16275
|
-
|
|
16276
|
-
|
|
16277
|
-
|
|
16278
|
-
|
|
16279
|
-
|
|
16280
|
-
|
|
16281
|
-
|
|
16282
|
-
|
|
16283
|
-
|
|
16284
|
-
|
|
16285
|
-
} else this._selectedByDepth.set(depth, node);
|
|
16545
|
+
if (this.interactionMode === `standard` || this.interactionMode === `vscode`) if (event.shiftKey && this.#anchor?.depth === depth) {
|
|
16546
|
+
const from = Math.min(this.#anchor.index, index);
|
|
16547
|
+
const to = Math.max(this.#anchor.index, index);
|
|
16548
|
+
this._selectedKeys = new Set(col.slice(from, to + 1).map((n) => n.item.key));
|
|
16549
|
+
} else {
|
|
16550
|
+
this._selectedKeys.add(node.item.key);
|
|
16551
|
+
this.#anchor = {
|
|
16552
|
+
key: node.item.key,
|
|
16553
|
+
depth,
|
|
16554
|
+
index
|
|
16555
|
+
};
|
|
16556
|
+
}
|
|
16557
|
+
else this._selectedByDepth.set(depth, node);
|
|
16286
16558
|
this.dispatchEvent(new CustomEvent(`activate`, {
|
|
16287
16559
|
detail: {
|
|
16288
16560
|
node,
|
|
@@ -16308,6 +16580,7 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16308
16580
|
}
|
|
16309
16581
|
this.requestUpdate();
|
|
16310
16582
|
}
|
|
16583
|
+
break;
|
|
16311
16584
|
}
|
|
16312
16585
|
};
|
|
16313
16586
|
this.#onResizeStart = (event, depth) => {
|
|
@@ -16436,7 +16709,7 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16436
16709
|
set selectedNode(node) {
|
|
16437
16710
|
this.#lastSelectedNode = node;
|
|
16438
16711
|
if (node) {
|
|
16439
|
-
if (this.interactionMode === `implicit` || this.interactionMode === `standard`) this._selectedKeys =
|
|
16712
|
+
if (this.interactionMode === `implicit` || this.interactionMode === `standard`) this._selectedKeys = new Set([node.item.key]);
|
|
16440
16713
|
}
|
|
16441
16714
|
this.requestUpdate();
|
|
16442
16715
|
}
|
|
@@ -16537,7 +16810,7 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16537
16810
|
if (lastNode) this.tickled.setTickled(this.#buildTickledId(lastNode, lastDepth));
|
|
16538
16811
|
if (this.interactionMode !== `implicit` && this.interactionMode !== `manual`) {
|
|
16539
16812
|
const leafKey = keys.at(-1);
|
|
16540
|
-
if (leafKey) this._selectedKeys =
|
|
16813
|
+
if (leafKey) this._selectedKeys = new Set([leafKey]);
|
|
16541
16814
|
}
|
|
16542
16815
|
this.requestUpdate();
|
|
16543
16816
|
this.#scrollNavigatedItemIntoView();
|
|
@@ -16742,14 +17015,16 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16742
17015
|
this.#handleStandardClick(node, depth, event);
|
|
16743
17016
|
break;
|
|
16744
17017
|
case `manual`: break;
|
|
16745
|
-
case `checked`:
|
|
17018
|
+
case `checked`:
|
|
17019
|
+
this.#expandNode(node, depth);
|
|
17020
|
+
break;
|
|
16746
17021
|
}
|
|
16747
17022
|
}
|
|
16748
17023
|
#handleImplicitClick(node, depth) {
|
|
16749
17024
|
const previous = new Set(this._selectedNodes);
|
|
16750
17025
|
this._selectedByDepth.set(depth, node);
|
|
16751
17026
|
this.#lastSelectedNode = node;
|
|
16752
|
-
this._selectedKeys =
|
|
17027
|
+
this._selectedKeys = new Set([node.item.key]);
|
|
16753
17028
|
this._selectedNodes.clear();
|
|
16754
17029
|
this._selectedNodes.add(node);
|
|
16755
17030
|
this.#expandNode(node, depth);
|
|
@@ -16786,8 +17061,8 @@ let MillerBaseElement = class MillerBaseElement extends i {
|
|
|
16786
17061
|
return;
|
|
16787
17062
|
}
|
|
16788
17063
|
const previous = new Set(this._selectedNodes);
|
|
16789
|
-
this._selectedKeys =
|
|
16790
|
-
this._selectedNodes =
|
|
17064
|
+
this._selectedKeys = new Set([node.item.key]);
|
|
17065
|
+
this._selectedNodes = new Set([node]);
|
|
16791
17066
|
this.#anchor = index >= 0 ? {
|
|
16792
17067
|
key: node.item.key,
|
|
16793
17068
|
depth,
|
|
@@ -18855,7 +19130,6 @@ let PlotHistogram = class PlotHistogram extends i {
|
|
|
18855
19130
|
};
|
|
18856
19131
|
} else {
|
|
18857
19132
|
const y = padding + i * bucketSize;
|
|
18858
|
-
const height = i === bucketCount - 1 ? Math.max(0, padding + availableMain - y) : Math.max(0, bucketSize - gap);
|
|
18859
19133
|
return {
|
|
18860
19134
|
count,
|
|
18861
19135
|
valueMin,
|
|
@@ -18864,7 +19138,7 @@ let PlotHistogram = class PlotHistogram extends i {
|
|
|
18864
19138
|
x: padding,
|
|
18865
19139
|
y,
|
|
18866
19140
|
width: barLen,
|
|
18867
|
-
height
|
|
19141
|
+
height: i === bucketCount - 1 ? Math.max(0, padding + availableMain - y) : Math.max(0, bucketSize - gap)
|
|
18868
19142
|
};
|
|
18869
19143
|
}
|
|
18870
19144
|
});
|
|
@@ -19116,8 +19390,7 @@ function renderArea(points, cr, bottom, areaColor) {
|
|
|
19116
19390
|
if (points.length < 2) return w``;
|
|
19117
19391
|
const lineD = buildLinePath(points);
|
|
19118
19392
|
const fillColor = areaColor || cr.fill;
|
|
19119
|
-
|
|
19120
|
-
return w`<path d=${areaD} fill=${fillColor} opacity=${cr.opacity * .2} />`;
|
|
19393
|
+
return w`<path d=${`${lineD} L ${points[points.length - 1].x},${bottom} L ${points[0].x},${bottom} Z`} fill=${fillColor} opacity=${cr.opacity * .2} />`;
|
|
19121
19394
|
}
|
|
19122
19395
|
function renderCircles(points, crs, radius, ageStyle) {
|
|
19123
19396
|
return points.map((p, i) => {
|
|
@@ -21119,13 +21392,11 @@ let RangeMultiElement = class RangeMultiElement extends i {
|
|
|
21119
21392
|
}
|
|
21120
21393
|
a = newA;
|
|
21121
21394
|
b = newB;
|
|
21122
|
-
} else if (which === `a`)
|
|
21123
|
-
|
|
21124
|
-
|
|
21125
|
-
|
|
21126
|
-
|
|
21127
|
-
else b = v;
|
|
21128
|
-
} else throw new Error(`Expected 'a' or 'b', got: '${t.id}'`);
|
|
21395
|
+
} else if (which === `a`) if (v > this.b && this.crossover === `stop`) t.valueAsNumber = this.#scaleTo100(this.a);
|
|
21396
|
+
else a = v;
|
|
21397
|
+
else if (which === `b`) if (v < a && this.crossover === `stop`) t.valueAsNumber = this.#scaleTo100(this.b);
|
|
21398
|
+
else b = v;
|
|
21399
|
+
else throw new Error(`Expected 'a' or 'b', got: '${t.id}'`);
|
|
21129
21400
|
this.setPoles(a, b);
|
|
21130
21401
|
}
|
|
21131
21402
|
setPoles(a, b) {
|
|
@@ -21184,65 +21455,63 @@ let RangeMultiElement = class RangeMultiElement extends i {
|
|
|
21184
21455
|
const currentPos = isVertical ? current.offset.y : current.offset.x;
|
|
21185
21456
|
const amt = (isVertical ? startPos - currentPos : currentPos - startPos) / valuePerPix;
|
|
21186
21457
|
polesChanged = true;
|
|
21187
|
-
if (draggingWhich === `a`) {
|
|
21188
|
-
|
|
21189
|
-
|
|
21190
|
-
|
|
21191
|
-
|
|
21192
|
-
|
|
21193
|
-
|
|
21194
|
-
|
|
21195
|
-
|
|
21196
|
-
|
|
21197
|
-
|
|
21198
|
-
|
|
21199
|
-
|
|
21200
|
-
calcB = startB - amt;
|
|
21201
|
-
}
|
|
21202
|
-
if (calcA < min) calcA = min;
|
|
21203
|
-
if (calcA > max) calcA = max;
|
|
21204
|
-
if (calcB < min) calcB = min;
|
|
21205
|
-
if (calcB > max) calcB = max;
|
|
21206
|
-
if (calcA > calcB) return;
|
|
21207
|
-
setPoles(calcA, calcB);
|
|
21208
|
-
} else {
|
|
21209
|
-
let constrainedAmt = amt;
|
|
21210
|
-
if (startA + amt < min) constrainedAmt = min - startA;
|
|
21211
|
-
if (startB + constrainedAmt > max) constrainedAmt = max - startB;
|
|
21212
|
-
const finalA = startA + constrainedAmt;
|
|
21213
|
-
const finalB = startB + constrainedAmt;
|
|
21214
|
-
if (finalA >= min && finalB <= max) setPoles(finalA, finalB);
|
|
21458
|
+
if (draggingWhich === `a`) if (resizeMode === `bipolar`) {
|
|
21459
|
+
const calcA = startA + amt;
|
|
21460
|
+
const calcB = startB - amt;
|
|
21461
|
+
if (calcA < min || calcB > max || calcA > max || calcB < min) return;
|
|
21462
|
+
setPoles(calcA, calcB);
|
|
21463
|
+
} else if (resizeMode === `bipolar-flex`) {
|
|
21464
|
+
let calcA = startA + amt;
|
|
21465
|
+
let calcB = startB;
|
|
21466
|
+
if (startB <= min) calcB = min;
|
|
21467
|
+
else if (startB >= max) calcB = max;
|
|
21468
|
+
else {
|
|
21469
|
+
calcA = startA + amt;
|
|
21470
|
+
calcB = startB - amt;
|
|
21215
21471
|
}
|
|
21216
|
-
|
|
21217
|
-
if (
|
|
21218
|
-
|
|
21219
|
-
|
|
21220
|
-
|
|
21221
|
-
|
|
21222
|
-
|
|
21223
|
-
|
|
21224
|
-
|
|
21225
|
-
|
|
21226
|
-
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
|
|
21230
|
-
|
|
21231
|
-
|
|
21232
|
-
|
|
21233
|
-
|
|
21234
|
-
|
|
21235
|
-
|
|
21236
|
-
|
|
21237
|
-
|
|
21238
|
-
|
|
21239
|
-
|
|
21240
|
-
|
|
21241
|
-
|
|
21242
|
-
|
|
21243
|
-
if (finalA >= min && finalB <= max) setPoles(finalA, finalB);
|
|
21472
|
+
if (calcA < min) calcA = min;
|
|
21473
|
+
if (calcA > max) calcA = max;
|
|
21474
|
+
if (calcB < min) calcB = min;
|
|
21475
|
+
if (calcB > max) calcB = max;
|
|
21476
|
+
if (calcA > calcB) return;
|
|
21477
|
+
setPoles(calcA, calcB);
|
|
21478
|
+
} else {
|
|
21479
|
+
let constrainedAmt = amt;
|
|
21480
|
+
if (startA + amt < min) constrainedAmt = min - startA;
|
|
21481
|
+
if (startB + constrainedAmt > max) constrainedAmt = max - startB;
|
|
21482
|
+
const finalA = startA + constrainedAmt;
|
|
21483
|
+
const finalB = startB + constrainedAmt;
|
|
21484
|
+
if (finalA >= min && finalB <= max) setPoles(finalA, finalB);
|
|
21485
|
+
}
|
|
21486
|
+
else if (draggingWhich === `b`) if (resizeMode === `bipolar`) {
|
|
21487
|
+
const calcA = startA - amt;
|
|
21488
|
+
const calcB = startB + amt;
|
|
21489
|
+
if (calcA < min || calcB > max || calcA > max || calcB < min) return;
|
|
21490
|
+
setPoles(calcA, calcB);
|
|
21491
|
+
} else if (resizeMode === `bipolar-flex`) {
|
|
21492
|
+
let calcA = startA;
|
|
21493
|
+
let calcB = startB + amt;
|
|
21494
|
+
if (startA <= min) calcA = min;
|
|
21495
|
+
else if (startA >= max) calcA = max;
|
|
21496
|
+
else {
|
|
21497
|
+
calcA = startA - amt;
|
|
21498
|
+
calcB = startB + amt;
|
|
21244
21499
|
}
|
|
21245
|
-
|
|
21500
|
+
if (calcA < min) calcA = min;
|
|
21501
|
+
if (calcA > max) calcA = max;
|
|
21502
|
+
if (calcB < min) calcB = min;
|
|
21503
|
+
if (calcB > max) calcB = max;
|
|
21504
|
+
if (calcA > calcB) return;
|
|
21505
|
+
setPoles(calcA, calcB);
|
|
21506
|
+
} else {
|
|
21507
|
+
let constrainedAmt = amt;
|
|
21508
|
+
if (startA + amt < min) constrainedAmt = min - startA;
|
|
21509
|
+
if (startB + constrainedAmt > max) constrainedAmt = max - startB;
|
|
21510
|
+
const finalA = startA + constrainedAmt;
|
|
21511
|
+
const finalB = startB + constrainedAmt;
|
|
21512
|
+
if (finalA >= min && finalB <= max) setPoles(finalA, finalB);
|
|
21513
|
+
}
|
|
21514
|
+
else if (resizeMode === `bipolar`) {
|
|
21246
21515
|
const calcA = startA + amt;
|
|
21247
21516
|
const calcB = startB + amt;
|
|
21248
21517
|
if (calcA < min || calcB > max) return;
|
|
@@ -21803,13 +22072,13 @@ let SelectHorizElement = class SelectHorizElement extends WheelNudgeMixin(i) {
|
|
|
21803
22072
|
|
|
21804
22073
|
::slotted(.tickled) {
|
|
21805
22074
|
background: var(--item-bg-tickled);
|
|
21806
|
-
border
|
|
22075
|
+
border: var(--item-border-tickled);
|
|
21807
22076
|
color: var(--item-text-tickled);
|
|
21808
22077
|
}
|
|
21809
22078
|
|
|
21810
22079
|
::slotted([selected]) {
|
|
21811
22080
|
background: var(--item-bg-selected);
|
|
21812
|
-
border
|
|
22081
|
+
border: var(--item-border-selected);
|
|
21813
22082
|
color: var(--item-text-selected);
|
|
21814
22083
|
}
|
|
21815
22084
|
|
|
@@ -21934,14 +22203,14 @@ function getTrackBounds(orientation) {
|
|
|
21934
22203
|
if (orientation === `horizontal`) return {
|
|
21935
22204
|
trackStart: 5,
|
|
21936
22205
|
trackEnd: 95,
|
|
21937
|
-
centre:
|
|
21938
|
-
crossCentre:
|
|
22206
|
+
centre: 100 / 2,
|
|
22207
|
+
crossCentre: 24 / 2
|
|
21939
22208
|
};
|
|
21940
22209
|
return {
|
|
21941
22210
|
trackStart: 5,
|
|
21942
22211
|
trackEnd: 95,
|
|
21943
|
-
centre:
|
|
21944
|
-
crossCentre:
|
|
22212
|
+
centre: 100 / 2,
|
|
22213
|
+
crossCentre: 24 / 2
|
|
21945
22214
|
};
|
|
21946
22215
|
}
|
|
21947
22216
|
/**
|
|
@@ -21961,12 +22230,11 @@ function valueToPosition(relativeValue, singleStyle, trackBounds, orientation) {
|
|
|
21961
22230
|
const crossCentre = trackBounds.crossCentre;
|
|
21962
22231
|
let pos;
|
|
21963
22232
|
if (singleStyle === `range`) pos = trackBounds.trackStart + relativeValue * span;
|
|
21964
|
-
else if (singleStyle === `bipolar`) {
|
|
21965
|
-
|
|
21966
|
-
|
|
21967
|
-
|
|
21968
|
-
|
|
21969
|
-
} else pos = centre + relativeValue * span / 2;
|
|
22233
|
+
else if (singleStyle === `bipolar`) if (relativeValue <= .5) {
|
|
22234
|
+
const t = relativeValue / .5;
|
|
22235
|
+
pos = trackBounds.trackStart + t * (centre - trackBounds.trackStart);
|
|
22236
|
+
} else pos = centre + (relativeValue - .5) / .5 * (trackBounds.trackEnd - centre);
|
|
22237
|
+
else pos = centre + relativeValue * span / 2;
|
|
21970
22238
|
if (orientation === `horizontal`) return {
|
|
21971
22239
|
x: pos,
|
|
21972
22240
|
y: crossCentre
|
|
@@ -22377,6 +22645,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22377
22645
|
if (this.valueMode === `single`) this.#setSingleValueFromRelative(1, true);
|
|
22378
22646
|
else this.#stepHandleByRelativeDelta(handle, 1);
|
|
22379
22647
|
handled = true;
|
|
22648
|
+
break;
|
|
22380
22649
|
}
|
|
22381
22650
|
if (handled) event.preventDefault();
|
|
22382
22651
|
};
|
|
@@ -22622,10 +22891,9 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22622
22891
|
const gap = this.#getEffectiveValueMin();
|
|
22623
22892
|
const other = handle === `a` ? poleB : poleA;
|
|
22624
22893
|
let desired = this.#quantise(clamp$1(proposed, this.min, this.max));
|
|
22625
|
-
if (this.crossover === `none`)
|
|
22626
|
-
|
|
22627
|
-
|
|
22628
|
-
} else if (desired > other - gap && desired < other + gap) desired = Math.abs(desired - (other - gap)) <= Math.abs(desired - (other + gap)) ? other - gap : other + gap;
|
|
22894
|
+
if (this.crossover === `none`) if ((handle === `a` ? poleA : poleB) <= other) desired = Math.min(desired, other - gap);
|
|
22895
|
+
else desired = Math.max(desired, other + gap);
|
|
22896
|
+
else if (desired > other - gap && desired < other + gap) desired = Math.abs(desired - (other - gap)) <= Math.abs(desired - (other + gap)) ? other - gap : other + gap;
|
|
22629
22897
|
desired = clamp$1(desired, this.min, this.max);
|
|
22630
22898
|
if (handle === `a`) {
|
|
22631
22899
|
if (desired === poleA) return null;
|
|
@@ -22898,7 +23166,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22898
23166
|
if (isVertical) return w`
|
|
22899
23167
|
<rect
|
|
22900
23168
|
class="track"
|
|
22901
|
-
x="${
|
|
23169
|
+
x="${24 / 2 - strokeWidth / 2}"
|
|
22902
23170
|
y="${5}"
|
|
22903
23171
|
width="${strokeWidth}"
|
|
22904
23172
|
height="${90}"
|
|
@@ -22911,7 +23179,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22911
23179
|
<rect
|
|
22912
23180
|
class="track"
|
|
22913
23181
|
x="${5}"
|
|
22914
|
-
y="${
|
|
23182
|
+
y="${24 / 2 - strokeWidth / 2}"
|
|
22915
23183
|
width="${90}"
|
|
22916
23184
|
height="${strokeWidth}"
|
|
22917
23185
|
fill="${fill}"
|
|
@@ -22979,9 +23247,9 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22979
23247
|
const markerBorderWidth = this.#getCssVar(`--marker-border-width`, 0);
|
|
22980
23248
|
const center = isHorizontal ? {
|
|
22981
23249
|
x: pos.x,
|
|
22982
|
-
y: bounds.crossCentre + markerOffset *
|
|
23250
|
+
y: bounds.crossCentre + markerOffset * (24 / 2)
|
|
22983
23251
|
} : {
|
|
22984
|
-
x: bounds.crossCentre + markerOffset *
|
|
23252
|
+
x: bounds.crossCentre + markerOffset * (24 / 2),
|
|
22985
23253
|
y: pos.y
|
|
22986
23254
|
};
|
|
22987
23255
|
const lowCenter = this.valueMode === `single` && this.singleStyle === `unipolar` ? isHorizontal ? {
|
|
@@ -22994,7 +23262,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
22994
23262
|
const id = handle ?? `s`;
|
|
22995
23263
|
const effectiveMarkerStyle = handle === `c` && this.markerStyleC ? this.markerStyleC : this.markerStyle;
|
|
22996
23264
|
if (effectiveMarkerStyle === `dot`) {
|
|
22997
|
-
const r = markerThickness *
|
|
23265
|
+
const r = markerThickness * (24 / 2);
|
|
22998
23266
|
const renderDot = (cx, cy, mid) => {
|
|
22999
23267
|
if (markerBorderWidth > 0) {
|
|
23000
23268
|
defs.push(w`<circle id="dot-${mid}-path" cx="${cx}" cy="${cy}" r="${r}" />`);
|
|
@@ -23049,7 +23317,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
23049
23317
|
}
|
|
23050
23318
|
if (effectiveMarkerStyle === `triangle`) {
|
|
23051
23319
|
const halfLen = markerLength * 24 / 4;
|
|
23052
|
-
const halfBase = markerThickness *
|
|
23320
|
+
const halfBase = markerThickness * (24 / 2);
|
|
23053
23321
|
const renderTriangle = (cx, cy, mid) => {
|
|
23054
23322
|
let apex;
|
|
23055
23323
|
let base1;
|
|
@@ -23114,7 +23382,7 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
23114
23382
|
const size = this.#getCssVar(`--midpoint-thickness`, .08);
|
|
23115
23383
|
return w`
|
|
23116
23384
|
<g class="midpoint-marker" part="midpoint-marker">
|
|
23117
|
-
<circle cx="${center.x}" cy="${center.y}" r="${size *
|
|
23385
|
+
<circle cx="${center.x}" cy="${center.y}" r="${size * (24 / 2)}" />
|
|
23118
23386
|
</g>
|
|
23119
23387
|
`;
|
|
23120
23388
|
}
|
|
@@ -23186,12 +23454,10 @@ let SliderInputElement = class SliderInputElement extends WheelNudgeMixin(i) {
|
|
|
23186
23454
|
} else this.#poleC = void 0;
|
|
23187
23455
|
if (changed.has(`valueA`) || changed.has(`valueB`) || changed.has(`valueMode`) || changed.has(`singleStyle`) || !this.hasUpdated) {
|
|
23188
23456
|
const valueLane = this.#lanes.get(`value`);
|
|
23189
|
-
if (valueLane && valueLane.type === `value`)
|
|
23190
|
-
|
|
23191
|
-
|
|
23192
|
-
|
|
23193
|
-
valueLane.valueMax = valueToRelative(this.#high(), this.min, this.max);
|
|
23194
|
-
}
|
|
23457
|
+
if (valueLane && valueLane.type === `value`) if (this.valueMode === `single`) this.#applySingleStyleValueLane(valueLane, this.#getRelativeValueA());
|
|
23458
|
+
else {
|
|
23459
|
+
valueLane.valueMin = valueToRelative(this.#low(), this.min, this.max);
|
|
23460
|
+
valueLane.valueMax = valueToRelative(this.#high(), this.min, this.max);
|
|
23195
23461
|
}
|
|
23196
23462
|
}
|
|
23197
23463
|
}
|
|
@@ -23860,11 +24126,10 @@ let SnapContainer = class SnapContainer extends i {
|
|
|
23860
24126
|
};
|
|
23861
24127
|
this._onKeyDown = (e) => {
|
|
23862
24128
|
let newSnap = this.snap;
|
|
23863
|
-
if (this._isHorizontal)
|
|
23864
|
-
|
|
23865
|
-
|
|
23866
|
-
|
|
23867
|
-
} else if (e.key === `ArrowUp`) newSnap = Math.max(0, this.snap - 1);
|
|
24129
|
+
if (this._isHorizontal) if (e.key === `ArrowLeft`) newSnap = Math.max(0, this.snap - 1);
|
|
24130
|
+
else if (e.key === `ArrowRight`) newSnap = Math.min(this.snapPositions - 1, this.snap + 1);
|
|
24131
|
+
else return;
|
|
24132
|
+
else if (e.key === `ArrowUp`) newSnap = Math.max(0, this.snap - 1);
|
|
23868
24133
|
else if (e.key === `ArrowDown`) newSnap = Math.min(this.snapPositions - 1, this.snap + 1);
|
|
23869
24134
|
else return;
|
|
23870
24135
|
e.preventDefault();
|
|
@@ -24104,8 +24369,7 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24104
24369
|
if (!bounds) return;
|
|
24105
24370
|
const threshold = 5;
|
|
24106
24371
|
if (this.layout === `horizontal`) {
|
|
24107
|
-
const
|
|
24108
|
-
const relativeY = clamp(y / bounds.height);
|
|
24372
|
+
const relativeY = clamp((event.y - bounds.y) / bounds.height);
|
|
24109
24373
|
if (this.collapsible && this.collapsedA) {
|
|
24110
24374
|
if (relativeY > (this.#collapsedAPointerAtCollapse ?? .05) + this.#hysteresisThreshold) {
|
|
24111
24375
|
this.collapsedA = false;
|
|
@@ -24143,8 +24407,7 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24143
24407
|
this.#collapsedBPointerAtCollapse = relativeY;
|
|
24144
24408
|
}
|
|
24145
24409
|
} else {
|
|
24146
|
-
const
|
|
24147
|
-
const relativeX = clamp(x / bounds.width);
|
|
24410
|
+
const relativeX = clamp((event.x - bounds.x) / bounds.width);
|
|
24148
24411
|
if (this.collapsible && this.collapsedA) {
|
|
24149
24412
|
if (relativeX > (this.#collapsedAPointerAtCollapse ?? .05) + this.#hysteresisThreshold) {
|
|
24150
24413
|
this.collapsedA = false;
|
|
@@ -24198,7 +24461,7 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24198
24461
|
if (nestedSplit) {
|
|
24199
24462
|
this.#nestedSplitInitialSizeA = nestedSplit.sizeA;
|
|
24200
24463
|
const nestedBounds = nestedSplit.getBoundingClientRect();
|
|
24201
|
-
const nestedHandle = nestedSplit.shadowRoot?.querySelector(`.
|
|
24464
|
+
const nestedHandle = nestedSplit.shadowRoot?.querySelector(`.split-bar`);
|
|
24202
24465
|
if (nestedHandle) {
|
|
24203
24466
|
this.#nestedSplitBounds = nestedBounds;
|
|
24204
24467
|
this.#nestedHandleBounds = nestedHandle.getBoundingClientRect();
|
|
@@ -24267,6 +24530,11 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24267
24530
|
event.preventDefault();
|
|
24268
24531
|
};
|
|
24269
24532
|
}
|
|
24533
|
+
get showGrabHandle() {
|
|
24534
|
+
const size = getComputedStyle(this).getPropertyValue(`--handle-size`).trim();
|
|
24535
|
+
const num = Number.parseFloat(size);
|
|
24536
|
+
return !Number.isNaN(num) && num > 3;
|
|
24537
|
+
}
|
|
24270
24538
|
#elementBounds;
|
|
24271
24539
|
#startSizeA;
|
|
24272
24540
|
#startSizeB;
|
|
@@ -24487,17 +24755,30 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24487
24755
|
<div id="zone">
|
|
24488
24756
|
<slot style=${sizeA} name="a"></slot>
|
|
24489
24757
|
${this._hasCorner ? b`<div class="corner-zone" @pointerdown=${this.#onCornerResizeDown}></div>` : ``}
|
|
24490
|
-
<div @pointerdown=${this.#onResizeHandleDown} class="
|
|
24491
|
-
|
|
24758
|
+
<div @pointerdown=${this.#onResizeHandleDown} class="split-bar">
|
|
24759
|
+
${this.showGrabHandle ? b`
|
|
24760
|
+
<div class="grab-handle">
|
|
24761
|
+
<span class="dot"></span>
|
|
24762
|
+
<span class="dot"></span>
|
|
24763
|
+
<span class="dot"></span>
|
|
24764
|
+
</div>
|
|
24765
|
+
` : ``}
|
|
24766
|
+
</div>
|
|
24767
|
+
<slot style=${sizeB} name="b"></slot>
|
|
24492
24768
|
</div>`;
|
|
24493
24769
|
}
|
|
24494
24770
|
static {
|
|
24495
24771
|
this.styles = [themeFallbacks, i$3`
|
|
24496
24772
|
:host {
|
|
24497
24773
|
--handle-size: 2px;
|
|
24498
|
-
--handle-colour:
|
|
24774
|
+
--handle-colour: transparent;
|
|
24499
24775
|
--handle-hover-colour: var(--surface-6);
|
|
24500
24776
|
--handle-active-colour: var(--accent);
|
|
24777
|
+
--handle-bg: var(--handle-colour);
|
|
24778
|
+
--handle-grab-colour: var(--border-subtle-color);
|
|
24779
|
+
--handle-grab-dot-size: 3px;
|
|
24780
|
+
--handle-grab-size: 16px;
|
|
24781
|
+
--handle-grab-thickness: 8px;
|
|
24501
24782
|
|
|
24502
24783
|
display: block;
|
|
24503
24784
|
box-sizing: border-box;
|
|
@@ -24515,29 +24796,80 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24515
24796
|
slot {
|
|
24516
24797
|
display: block;
|
|
24517
24798
|
overflow: hidden;
|
|
24799
|
+
border: var(--border-subtle);
|
|
24800
|
+
border-radius: var(--radius-m);
|
|
24518
24801
|
}
|
|
24519
24802
|
:slotted(*) {
|
|
24520
24803
|
width: 100%;
|
|
24521
24804
|
height: 100%;
|
|
24522
24805
|
}
|
|
24523
24806
|
|
|
24524
|
-
.
|
|
24807
|
+
.split-bar {
|
|
24808
|
+
position: relative;
|
|
24525
24809
|
background-color: var(--handle-colour);
|
|
24810
|
+
transition: background-color 0.3s ease 0s;
|
|
24526
24811
|
width: var(--handle-size);
|
|
24527
24812
|
height: 100%;
|
|
24528
24813
|
cursor: ew-resize;
|
|
24529
24814
|
flex-shrink: 0;
|
|
24815
|
+
border-radius: var(--radius-m);
|
|
24816
|
+
|
|
24817
|
+
}
|
|
24818
|
+
|
|
24819
|
+
@keyframes handle-hover {
|
|
24820
|
+
from { background-color: var(--handle-colour); }
|
|
24821
|
+
to { background-color: var(--handle-hover-colour); }
|
|
24822
|
+
}
|
|
24823
|
+
|
|
24824
|
+
.grab-handle {
|
|
24825
|
+
position: absolute;
|
|
24826
|
+
top: 50%;
|
|
24827
|
+
left: 50%;
|
|
24828
|
+
transform: translate(-50%, -50%);
|
|
24829
|
+
display: flex;
|
|
24830
|
+
align-items: center;
|
|
24831
|
+
justify-content: center;
|
|
24832
|
+
gap: var(--handle-grab-dot-size);
|
|
24833
|
+
background: var(--handle-bg);
|
|
24834
|
+
border-radius: var(--radius-s);
|
|
24835
|
+
}
|
|
24836
|
+
|
|
24837
|
+
.grab-handle .dot {
|
|
24838
|
+
width: var(--handle-grab-dot-size);
|
|
24839
|
+
height: var(--handle-grab-dot-size);
|
|
24840
|
+
border-radius: 50%;
|
|
24841
|
+
background: var(--handle-grab-colour);
|
|
24842
|
+
flex-shrink: 0;
|
|
24843
|
+
}
|
|
24844
|
+
|
|
24845
|
+
:host([layout="vertical"]) .grab-handle {
|
|
24846
|
+
flex-direction: column;
|
|
24847
|
+
width: var(--handle-grab-thickness);
|
|
24848
|
+
height: var(--handle-grab-size);
|
|
24849
|
+
}
|
|
24850
|
+
|
|
24851
|
+
:host([layout="horizontal"]) .grab-handle {
|
|
24852
|
+
flex-direction: row;
|
|
24853
|
+
width: var(--handle-grab-size);
|
|
24854
|
+
height: var(--handle-grab-thickness);
|
|
24855
|
+
}
|
|
24856
|
+
|
|
24857
|
+
#zone.user-resizing .grab-handle {
|
|
24858
|
+
display: none;
|
|
24530
24859
|
}
|
|
24531
24860
|
#zone.user-resizing {
|
|
24532
24861
|
slot {
|
|
24533
24862
|
opacity: 0.5;
|
|
24534
24863
|
}
|
|
24535
|
-
.
|
|
24864
|
+
.split-bar {
|
|
24536
24865
|
background-color: var(--handle-active-colour);
|
|
24866
|
+
transition: none;
|
|
24867
|
+
animation: none !important;
|
|
24537
24868
|
}
|
|
24538
24869
|
}
|
|
24539
|
-
|
|
24540
|
-
|
|
24870
|
+
|
|
24871
|
+
#zone:not(.user-resizing) .split-bar:hover {
|
|
24872
|
+
animation: handle-hover 0.001s ease-out 0.7s both;
|
|
24541
24873
|
}
|
|
24542
24874
|
|
|
24543
24875
|
.corner-zone {
|
|
@@ -24556,17 +24888,18 @@ let SplitLayoutElement = class SplitLayoutElement extends i {
|
|
|
24556
24888
|
#zone {
|
|
24557
24889
|
flex-direction: column;
|
|
24558
24890
|
}
|
|
24559
|
-
.
|
|
24560
|
-
|
|
24891
|
+
.split-bar {
|
|
24892
|
+
position: relative;
|
|
24893
|
+
background-color: var(--handle-colour);
|
|
24894
|
+
transition: background-color 0.3s ease 0s;
|
|
24561
24895
|
height: var(--handle-size);
|
|
24562
24896
|
width: 100%;
|
|
24563
24897
|
cursor: ns-resize;
|
|
24564
24898
|
}
|
|
24565
|
-
.
|
|
24566
|
-
background-color: var(--handle-hover-colour);
|
|
24567
|
-
}
|
|
24568
|
-
#zone.user-resizing .resize-handle {
|
|
24899
|
+
#zone.user-resizing .split-bar {
|
|
24569
24900
|
background-color: var(--handle-active-colour);
|
|
24901
|
+
transition: none;
|
|
24902
|
+
animation: none !important;
|
|
24570
24903
|
}
|
|
24571
24904
|
}
|
|
24572
24905
|
|
|
@@ -24760,8 +25093,7 @@ let SwipeElement = class SwipeElement extends WheelNudgeMixin(i) {
|
|
|
24760
25093
|
const x0 = cx - half;
|
|
24761
25094
|
const x1 = cx + half;
|
|
24762
25095
|
const colorVar = i % 2 === 0 ? `var(--swipe-color-a, var(--surface-4))` : `var(--swipe-color-b, var(--surface-5))`;
|
|
24763
|
-
|
|
24764
|
-
return w`<path d=${d} style="fill:${colorVar}"></path>`;
|
|
25096
|
+
return w`<path d=${`M${x0},0 L${x1},0 L${x1 + off},${mid} L${x1},${h} L${x0},${h} L${x0 + off},${mid}Z`} style="fill:${colorVar}"></path>`;
|
|
24765
25097
|
})}`;
|
|
24766
25098
|
}
|
|
24767
25099
|
static {
|
|
@@ -24822,11 +25154,16 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24822
25154
|
constructor(..._args) {
|
|
24823
25155
|
super(..._args);
|
|
24824
25156
|
this.closeable = false;
|
|
25157
|
+
this.hideLabels = false;
|
|
24825
25158
|
this.iconName = void 0;
|
|
24826
25159
|
this.description = void 0;
|
|
24827
25160
|
this.commandActive = void 0;
|
|
24828
25161
|
this.registry = void 0;
|
|
24829
25162
|
this._compact = false;
|
|
25163
|
+
this._hasToolbarContent = false;
|
|
25164
|
+
this._onToolbarSlotChange = () => {
|
|
25165
|
+
this._updateToolbarContent();
|
|
25166
|
+
};
|
|
24830
25167
|
}
|
|
24831
25168
|
connectedCallback() {
|
|
24832
25169
|
super.connectedCallback();
|
|
@@ -24834,6 +25171,7 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24834
25171
|
this._compact = entry.contentRect.width < 64;
|
|
24835
25172
|
});
|
|
24836
25173
|
this._resizeObserver.observe(this);
|
|
25174
|
+
(this.shadowRoot?.querySelector(`slot[name="toolbar"]`))?.addEventListener(`slotchange`, this._onToolbarSlotChange);
|
|
24837
25175
|
}
|
|
24838
25176
|
disconnectedCallback() {
|
|
24839
25177
|
super.disconnectedCallback();
|
|
@@ -24841,6 +25179,7 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24841
25179
|
this._resizeObserver = void 0;
|
|
24842
25180
|
this._commandCleanup?.();
|
|
24843
25181
|
this._commandCleanup = void 0;
|
|
25182
|
+
(this.shadowRoot?.querySelector(`slot[name="toolbar"]`))?.removeEventListener(`slotchange`, this._onToolbarSlotChange);
|
|
24844
25183
|
}
|
|
24845
25184
|
updated(changed) {
|
|
24846
25185
|
super.updated(changed);
|
|
@@ -24863,12 +25202,21 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24863
25202
|
if (id === this.commandActive) this.click();
|
|
24864
25203
|
});
|
|
24865
25204
|
}
|
|
25205
|
+
_updateToolbarContent() {
|
|
25206
|
+
const slot = this.shadowRoot?.querySelector(`slot[name="toolbar"]`);
|
|
25207
|
+
this._hasToolbarContent = (slot?.assignedElements().length ?? 0) > 0;
|
|
25208
|
+
}
|
|
25209
|
+
firstUpdated() {
|
|
25210
|
+
this._updateToolbarContent();
|
|
25211
|
+
}
|
|
24866
25212
|
render() {
|
|
24867
|
-
const showLabel = !this.
|
|
25213
|
+
const showLabel = !this.hideLabels || !this.iconName;
|
|
25214
|
+
const hasActions = this.closeable || this._hasToolbarContent;
|
|
24868
25215
|
return b`
|
|
24869
25216
|
<div>
|
|
24870
25217
|
${this.iconName ? b`<ixfx-icon name="${this.iconName}"></ixfx-icon>` : A}
|
|
24871
25218
|
${showLabel ? b`<span class="label"><slot></slot></span>` : A}
|
|
25219
|
+
${hasActions ? b`
|
|
24872
25220
|
<div class="actions">
|
|
24873
25221
|
<div class="toolbar"><slot name="toolbar"></slot></div>
|
|
24874
25222
|
${this.closeable ? b`
|
|
@@ -24882,6 +25230,7 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24882
25230
|
</button>
|
|
24883
25231
|
` : A}
|
|
24884
25232
|
</div>
|
|
25233
|
+
` : A}
|
|
24885
25234
|
</div>
|
|
24886
25235
|
`;
|
|
24887
25236
|
}
|
|
@@ -24908,17 +25257,19 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24908
25257
|
min-width: 0;
|
|
24909
25258
|
user-select: none;
|
|
24910
25259
|
box-sizing: border-box;
|
|
25260
|
+
height:fit-content;
|
|
24911
25261
|
}
|
|
24912
25262
|
|
|
24913
25263
|
:host > div {
|
|
24914
25264
|
display: flex;
|
|
24915
25265
|
align-items: center;
|
|
24916
|
-
|
|
24917
|
-
padding: var(--tab-padding) calc(2 * var(--tab-padding));
|
|
25266
|
+
padding: var(--tab-padding) calc(2 * var(--tab-padding-horizontal, var(--tab-padding)));
|
|
24918
25267
|
min-width: 0;
|
|
24919
25268
|
width: 100%;
|
|
24920
25269
|
font-weight: 500;
|
|
24921
25270
|
border: var(--selected-tab-border-width) solid transparent;
|
|
25271
|
+
gap: var(--space-s);
|
|
25272
|
+
|
|
24922
25273
|
}
|
|
24923
25274
|
|
|
24924
25275
|
:host([selected]) > div {
|
|
@@ -24929,6 +25280,7 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
24929
25280
|
border-right-color: var(--indicator-color-right, transparent);
|
|
24930
25281
|
background: var(--selected-background);
|
|
24931
25282
|
font-weight: var(--selected-tab-weight);
|
|
25283
|
+
border-radius:var(--radius-m);
|
|
24932
25284
|
}
|
|
24933
25285
|
|
|
24934
25286
|
.label {
|
|
@@ -25003,6 +25355,10 @@ let TabListItemElement = class TabListItemElement extends i {
|
|
|
25003
25355
|
}
|
|
25004
25356
|
};
|
|
25005
25357
|
__decorate([property({ type: Boolean })], TabListItemElement.prototype, "closeable", void 0);
|
|
25358
|
+
__decorate([property({
|
|
25359
|
+
type: Boolean,
|
|
25360
|
+
attribute: `hide-labels`
|
|
25361
|
+
})], TabListItemElement.prototype, "hideLabels", void 0);
|
|
25006
25362
|
__decorate([property({
|
|
25007
25363
|
type: String,
|
|
25008
25364
|
attribute: `icon-name`
|
|
@@ -25014,6 +25370,7 @@ __decorate([property({
|
|
|
25014
25370
|
})], TabListItemElement.prototype, "commandActive", void 0);
|
|
25015
25371
|
__decorate([property({ attribute: false })], TabListItemElement.prototype, "registry", void 0);
|
|
25016
25372
|
__decorate([state()], TabListItemElement.prototype, "_compact", void 0);
|
|
25373
|
+
__decorate([state()], TabListItemElement.prototype, "_hasToolbarContent", void 0);
|
|
25017
25374
|
TabListItemElement = __decorate([safeCustomElement(`ixfx-tab-list-item`)], TabListItemElement);
|
|
25018
25375
|
//#endregion
|
|
25019
25376
|
//#region src/tabs/tab-panel.ts
|
|
@@ -25432,6 +25789,7 @@ let TabListElement = class TabListElement extends i {
|
|
|
25432
25789
|
this.orientation = `horizontal`;
|
|
25433
25790
|
this.flip = false;
|
|
25434
25791
|
this.scrollable = false;
|
|
25792
|
+
this.hideLabels = false;
|
|
25435
25793
|
this.dragMode = `off`;
|
|
25436
25794
|
this.#items = [];
|
|
25437
25795
|
this.#dragState = null;
|
|
@@ -25440,6 +25798,7 @@ let TabListElement = class TabListElement extends i {
|
|
|
25440
25798
|
this.updateComplete.then(() => {
|
|
25441
25799
|
this.#items = (this.shadowRoot?.querySelector(`slot`))?.assignedElements({ flatten: true }) ?? [];
|
|
25442
25800
|
this.#syncIndicatorColors();
|
|
25801
|
+
this.#syncHideLabels();
|
|
25443
25802
|
});
|
|
25444
25803
|
};
|
|
25445
25804
|
this.#onKeyUp = (event) => {
|
|
@@ -25581,13 +25940,21 @@ let TabListElement = class TabListElement extends i {
|
|
|
25581
25940
|
#onSlotChange;
|
|
25582
25941
|
firstUpdated() {
|
|
25583
25942
|
this.updateComplete.then(() => {
|
|
25584
|
-
if (this.#items.length > 0)
|
|
25943
|
+
if (this.#items.length > 0) {
|
|
25944
|
+
this.#syncIndicatorColors();
|
|
25945
|
+
this.#syncHideLabels();
|
|
25946
|
+
}
|
|
25585
25947
|
});
|
|
25586
25948
|
}
|
|
25587
25949
|
updated(changedProperties) {
|
|
25588
25950
|
super.updated(changedProperties);
|
|
25589
25951
|
this.classList.toggle(`scrollable`, this.scrollable);
|
|
25590
25952
|
if (changedProperties.has(`dragMode`)) this.toggleAttribute(`drag-mode`, this.dragMode !== `off`);
|
|
25953
|
+
if (changedProperties.has(`hideLabels`)) this.#syncHideLabels();
|
|
25954
|
+
}
|
|
25955
|
+
#syncHideLabels() {
|
|
25956
|
+
for (const item of this.#items) if (this.hideLabels) item.setAttribute(`hide-labels`, ``);
|
|
25957
|
+
else item.removeAttribute(`hide-labels`);
|
|
25591
25958
|
}
|
|
25592
25959
|
#syncIndicatorColors() {
|
|
25593
25960
|
for (const item of this.#items) {
|
|
@@ -25842,6 +26209,10 @@ let TabListElement = class TabListElement extends i {
|
|
|
25842
26209
|
:host(.scrollable) {
|
|
25843
26210
|
max-height: var(--scroll-max-height);
|
|
25844
26211
|
}
|
|
26212
|
+
:host([hide-labels]) {
|
|
26213
|
+
display: inline-flex;
|
|
26214
|
+
width: auto;
|
|
26215
|
+
}
|
|
25845
26216
|
text {
|
|
25846
26217
|
user-select:none;
|
|
25847
26218
|
}
|
|
@@ -25925,6 +26296,10 @@ let TabListElement = class TabListElement extends i {
|
|
|
25925
26296
|
__decorate([property({ type: String })], TabListElement.prototype, "orientation", void 0);
|
|
25926
26297
|
__decorate([property({ type: Boolean })], TabListElement.prototype, "flip", void 0);
|
|
25927
26298
|
__decorate([property({ type: Boolean })], TabListElement.prototype, "scrollable", void 0);
|
|
26299
|
+
__decorate([property({
|
|
26300
|
+
type: Boolean,
|
|
26301
|
+
attribute: `hide-labels`
|
|
26302
|
+
})], TabListElement.prototype, "hideLabels", void 0);
|
|
25928
26303
|
__decorate([property({
|
|
25929
26304
|
type: String,
|
|
25930
26305
|
attribute: `drag-mode`
|
|
@@ -26282,7 +26657,7 @@ function drawEventRects(ctx, region, events, trackLayout, selectedIds, tickledId
|
|
|
26282
26657
|
const x = evt.start * ppu;
|
|
26283
26658
|
const w = (evt.end - evt.start) * ppu;
|
|
26284
26659
|
const y = layout.y + padding;
|
|
26285
|
-
const h = layout.height -
|
|
26660
|
+
const h = layout.height - padding * 2;
|
|
26286
26661
|
if (w < 1) continue;
|
|
26287
26662
|
const isSelected = selectedIds.has(evt.id);
|
|
26288
26663
|
const isTickled = tickledId === evt.id;
|