@ixfx/components 0.5.19 → 0.6.0
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 +462 -210
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +8027 -6493
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.js +3 -3
- package/dist/ac-token-DVbmHmky.d.ts +107 -0
- package/dist/ac-token-DVbmHmky.d.ts.map +1 -0
- package/dist/ac-token.d.ts +2 -0
- package/dist/ac-token.js +646 -0
- package/dist/ac-token.js.map +1 -0
- package/dist/{button-CphdEaZd.js → button-Bn0BuLpO.js} +2 -3
- package/dist/{button-CphdEaZd.js.map → button-Bn0BuLpO.js.map} +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.d.ts.map +1 -1
- package/dist/button.js +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{colour-picker-37NyVenk.js → colour-picker-0stHB90J.js} +18 -8
- package/dist/colour-picker-0stHB90J.js.map +1 -0
- package/dist/colour-picker.d.ts +1 -1
- package/dist/colour-picker.js +1 -1
- package/dist/crumbs.d.ts +2 -2
- package/dist/crumbs.js +1152 -1
- package/dist/crumbs.js.map +1 -0
- package/dist/data-controller-DOlmqNKb.js +171 -0
- package/dist/data-controller-DOlmqNKb.js.map +1 -0
- package/dist/data-display.js +1 -1
- package/dist/data-grid-BeAkORz2.d.ts +215 -0
- package/dist/data-grid-BeAkORz2.d.ts.map +1 -0
- package/dist/data-grid.d.ts +2 -0
- package/dist/data-grid.js +1225 -0
- package/dist/data-grid.js.map +1 -0
- package/dist/data-provider-BAn_-oR1.d.ts +61 -0
- package/dist/data-provider-BAn_-oR1.d.ts.map +1 -0
- package/dist/{defaults-BkWCPJFL.js → defaults-BCiDhZbF.js} +20 -3
- package/dist/defaults-BCiDhZbF.js.map +1 -0
- package/dist/drag-ghost-DtSDvjri.js +85 -0
- package/dist/drag-ghost-DtSDvjri.js.map +1 -0
- package/dist/editable-label.js +1 -1
- package/dist/{incr-search-2pz21xtR.js → element-search-Y8SRfPGM.js} +2 -133
- package/dist/element-search-Y8SRfPGM.js.map +1 -0
- package/dist/fallbacks-DEE1nCTt.js +406 -0
- package/dist/fallbacks-DEE1nCTt.js.map +1 -0
- package/dist/form-CsXJX15p.js +64 -0
- package/dist/form-CsXJX15p.js.map +1 -0
- package/dist/form.d.ts +15 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +2 -0
- package/dist/grouped-item-lister-CNLMgdIr.d.ts +121 -0
- package/dist/grouped-item-lister-CNLMgdIr.d.ts.map +1 -0
- package/dist/grouped-item-lister.d.ts +2 -0
- package/dist/grouped-item-lister.js +177 -0
- package/dist/grouped-item-lister.js.map +1 -0
- package/dist/{icon-DG9Lm3LT.js → icons-Bm2ByQ3s.js} +6 -3
- package/dist/icons-Bm2ByQ3s.js.map +1 -0
- package/dist/icons.js +2 -8
- package/dist/incr-search-vCzuao-2.js +137 -0
- package/dist/incr-search-vCzuao-2.js.map +1 -0
- package/dist/incr-search.d.ts +1 -1
- package/dist/incr-search.js +2 -1
- package/dist/{index-BKAlRgbq.d.ts → index-BOUaDIW-.d.ts} +4 -1
- package/dist/index-BOUaDIW-.d.ts.map +1 -0
- package/dist/{index-D9u_Q7-b.d.ts → index-Cu5i8zZY.d.ts} +3 -3
- package/dist/{index-D9u_Q7-b.d.ts.map → index-Cu5i8zZY.d.ts.map} +1 -1
- package/dist/{index-DkhBGHgF.d.ts → index-ovq_GTdl.d.ts} +2 -2
- package/dist/{index-DkhBGHgF.d.ts.map → index-ovq_GTdl.d.ts.map} +1 -1
- package/dist/index.d.ts +54 -572
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1898 -4253
- package/dist/index.js.map +1 -1
- package/dist/labelled-radial-input.d.ts +1 -1
- package/dist/labelled-radial-input.js +1 -2
- package/dist/labelled-radial-input.js.map +1 -1
- package/dist/led.d.ts +0 -1
- package/dist/led.d.ts.map +1 -1
- package/dist/led.js +2 -4
- package/dist/led.js.map +1 -1
- package/dist/menu-DIfU70AA.js +1609 -0
- package/dist/menu-DIfU70AA.js.map +1 -0
- package/dist/menu-item-BG5w7fi4.d.ts.map +1 -1
- package/dist/menu.d.ts +1 -1
- package/dist/menu.js +1 -2
- package/dist/miller.d.ts +3 -3
- package/dist/miller.js +3 -3
- package/dist/narrowed-text.d.ts.map +1 -1
- package/dist/narrowed-text.js +4 -4
- package/dist/narrowed-text.js.map +1 -1
- package/dist/notification-pill-DyZydXoZ.d.ts +68 -0
- package/dist/notification-pill-DyZydXoZ.d.ts.map +1 -0
- package/dist/notifier.d.ts +2 -0
- package/dist/notifier.js +146 -0
- package/dist/notifier.js.map +1 -0
- package/dist/panel.js +1 -2
- package/dist/panel.js.map +1 -1
- package/dist/plots.js +1 -1
- package/dist/polar-pad.d.ts +1 -1
- package/dist/polar-pad.js +1 -1
- package/dist/{radial-input-BhZeyyP-.d.ts → radial-input-DXMN55Nz.d.ts} +2 -2
- package/dist/{radial-input-BhZeyyP-.d.ts.map → radial-input-DXMN55Nz.d.ts.map} +1 -1
- package/dist/{radial-input-CVxGH-Cp.js → radial-input-Dk8Wydp5.js} +4 -4
- package/dist/radial-input-Dk8Wydp5.js.map +1 -0
- package/dist/radial-input.d.ts +1 -1
- package/dist/radial-input.js +1 -1
- package/dist/range-input.d.ts +1 -1
- package/dist/range-input.js +1 -1
- package/dist/range.d.ts +1 -1
- package/dist/range.js +1 -1
- package/dist/scroll-fade-CAs1EabA.js +70 -0
- package/dist/scroll-fade-CAs1EabA.js.map +1 -0
- package/dist/select-horiz.d.ts +50 -0
- package/dist/select-horiz.d.ts.map +1 -0
- package/dist/select-horiz.js +263 -0
- package/dist/select-horiz.js.map +1 -0
- package/dist/{slider-input-CzmSVgm7.js → slider-input-CT4gcF-o.js} +2 -2
- package/dist/{slider-input-CzmSVgm7.js.map → slider-input-CT4gcF-o.js.map} +1 -1
- package/dist/{slider-input-TidGhvXt.d.ts → slider-input-XppH3vcy.d.ts} +2 -2
- package/dist/{slider-input-TidGhvXt.d.ts.map → slider-input-XppH3vcy.d.ts.map} +1 -1
- package/dist/slider-input.d.ts +1 -1
- package/dist/slider-input.js +1 -1
- package/dist/snackbar.d.ts +58 -0
- package/dist/snackbar.d.ts.map +1 -0
- package/dist/snackbar.js +265 -0
- package/dist/snackbar.js.map +1 -0
- package/dist/split-layout.js +1 -1
- package/dist/swipe.d.ts +1 -1
- package/dist/swipe.js +1 -1
- package/dist/tabs.js +533 -1
- package/dist/tabs.js.map +1 -0
- package/dist/{tickled-controller-BF2Ea0DE.d.ts → tickled-controller-BtevrRLV.d.ts} +8 -6
- package/dist/tickled-controller-BtevrRLV.d.ts.map +1 -0
- package/dist/{tickled-styles-fNDdqf6l.js → tickled-controller-DkAU-0qL.js} +19 -105
- package/dist/tickled-controller-DkAU-0qL.js.map +1 -0
- package/dist/tickled-styles-BrAHEj1q.js +89 -0
- package/dist/tickled-styles-BrAHEj1q.js.map +1 -0
- package/dist/transitory-label.d.ts +30 -0
- package/dist/transitory-label.d.ts.map +1 -0
- package/dist/transitory-label.js +249 -0
- package/dist/transitory-label.js.map +1 -0
- package/dist/{tree-BtiiDX1a.js → tree-BO6BXI2b.js} +4 -4
- package/dist/{tree-BtiiDX1a.js.map → tree-BO6BXI2b.js.map} +1 -1
- package/dist/{tree-component-DQ9vzdy5.d.ts → tree-component-BvV4muxx.d.ts} +2 -2
- package/dist/{tree-component-DQ9vzdy5.d.ts.map → tree-component-BvV4muxx.d.ts.map} +1 -1
- package/dist/tree.d.ts +3 -3
- package/dist/tree.js +1 -1
- package/dist/{types-DO3gt5vg.d.ts → types-Bc23SI94.d.ts} +3 -61
- package/dist/types-Bc23SI94.d.ts.map +1 -0
- package/dist/types-DlVNJez_.d.ts +41 -0
- package/dist/types-DlVNJez_.d.ts.map +1 -0
- package/dist/vertical-list.d.ts +122 -0
- package/dist/vertical-list.d.ts.map +1 -0
- package/dist/vertical-list.js +737 -0
- package/dist/vertical-list.js.map +1 -0
- package/dist/wheel-nudge-BlSCe_hD.js.map +1 -1
- package/dist/{wheel-nudge-DgMTRYlh.d.ts → wheel-nudge-DGrNzWuE.d.ts} +3 -3
- package/dist/wheel-nudge-DGrNzWuE.d.ts.map +1 -0
- package/dist/{xy-axis-CxHC8z5E.js → xy-axis-B6yMjckW.js} +3 -109
- package/dist/xy-axis-B6yMjckW.js.map +1 -0
- package/dist/xy-pad.d.ts +1 -1
- package/dist/xy-pad.js +1 -1
- package/docs-user/README.md +3 -2
- package/docs-user/ac-token.md +7 -1
- package/docs-user/colour-picker.md +8 -4
- package/docs-user/data-grid.md +248 -0
- package/docs-user/index.json +217 -0
- package/docs-user/llms.txt +57 -0
- package/docs-user/menu.md +11 -8
- package/docs-user/rating.md +102 -0
- package/llms.txt +57 -0
- package/package.json +21 -11
- package/dist/colour-picker-37NyVenk.js.map +0 -1
- package/dist/crumb-navigation-BrB0r14u.js +0 -1220
- package/dist/crumb-navigation-BrB0r14u.js.map +0 -1
- package/dist/defaults-BkWCPJFL.js.map +0 -1
- package/dist/fallbacks-DPgPEqo8.js +0 -218
- package/dist/fallbacks-DPgPEqo8.js.map +0 -1
- package/dist/icon-DG9Lm3LT.js.map +0 -1
- package/dist/icons.js.map +0 -1
- package/dist/incr-search-2pz21xtR.js.map +0 -1
- package/dist/index-BKAlRgbq.d.ts.map +0 -1
- package/dist/interaction-D6efrBLo.js +0 -1
- package/dist/menu-CdwSe_XN.js +0 -825
- package/dist/menu-CdwSe_XN.js.map +0 -1
- package/dist/menu-item-CrmUwIoJ.js +0 -782
- package/dist/menu-item-CrmUwIoJ.js.map +0 -1
- package/dist/radial-input-CVxGH-Cp.js.map +0 -1
- package/dist/registry-CkW7q09Q.js +0 -21
- package/dist/registry-CkW7q09Q.js.map +0 -1
- package/dist/selecthorizontal.d.ts +0 -15
- package/dist/selecthorizontal.d.ts.map +0 -1
- package/dist/selecthorizontal.js +0 -43
- package/dist/selecthorizontal.js.map +0 -1
- package/dist/tab-list-mAoD6L0e.js +0 -615
- package/dist/tab-list-mAoD6L0e.js.map +0 -1
- package/dist/tickled-controller-BF2Ea0DE.d.ts.map +0 -1
- package/dist/tickled-styles-fNDdqf6l.js.map +0 -1
- package/dist/types-DO3gt5vg.d.ts.map +0 -1
- package/dist/wheel-nudge-DgMTRYlh.d.ts.map +0 -1
- package/dist/xy-axis-CxHC8z5E.js.map +0 -1
- package/docs-user/selecthorizontal.md +0 -32
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
|
|
2
|
+
import { t as DataController } from "./data-controller-DOlmqNKb.js";
|
|
3
|
+
import "./panel.js";
|
|
4
|
+
import { LitElement, html, nothing } from "lit";
|
|
5
|
+
import { property } from "lit/decorators.js";
|
|
6
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
7
|
+
//#region src/grouped-item-lister/grouped-item-lister.ts
|
|
8
|
+
const UNGROUPED_KEY = `__ungrouped__`;
|
|
9
|
+
let GroupedItemListerElement = class GroupedItemListerElement extends LitElement {
|
|
10
|
+
constructor(..._args) {
|
|
11
|
+
super(..._args);
|
|
12
|
+
this.grouped = false;
|
|
13
|
+
this.crossGroupSelection = false;
|
|
14
|
+
this.#subComponents = /* @__PURE__ */ new Map();
|
|
15
|
+
this.#clearingSelection = false;
|
|
16
|
+
this.#data = new DataController(this);
|
|
17
|
+
this.#onSelect = (event) => {
|
|
18
|
+
if (this.#clearingSelection) return;
|
|
19
|
+
const sourceEl = event.target;
|
|
20
|
+
let sourceKey;
|
|
21
|
+
for (const [key, subEl] of this.#subComponents) if (subEl === sourceEl) {
|
|
22
|
+
sourceKey = key;
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
if (sourceKey === void 0) return;
|
|
26
|
+
if (this.grouped && !this.crossGroupSelection) {
|
|
27
|
+
this.#clearingSelection = true;
|
|
28
|
+
for (const [key, subEl] of this.#subComponents) if (key !== sourceKey) subEl.clearSelection();
|
|
29
|
+
this.#clearingSelection = false;
|
|
30
|
+
}
|
|
31
|
+
this.dispatchEvent(new CustomEvent(`grouped-select`, {
|
|
32
|
+
detail: {
|
|
33
|
+
selected: this.selectedItems,
|
|
34
|
+
groupKey: sourceKey === UNGROUPED_KEY ? void 0 : sourceKey
|
|
35
|
+
},
|
|
36
|
+
bubbles: true,
|
|
37
|
+
composed: true
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
#groupBy;
|
|
42
|
+
#factory;
|
|
43
|
+
#subComponents;
|
|
44
|
+
#renderedGroups;
|
|
45
|
+
#clearingSelection;
|
|
46
|
+
#data;
|
|
47
|
+
get groupBy() {
|
|
48
|
+
return this.#groupBy;
|
|
49
|
+
}
|
|
50
|
+
set groupBy(value) {
|
|
51
|
+
this.#groupBy = value;
|
|
52
|
+
this.requestUpdate();
|
|
53
|
+
}
|
|
54
|
+
get factory() {
|
|
55
|
+
return this.#factory;
|
|
56
|
+
}
|
|
57
|
+
set factory(value) {
|
|
58
|
+
if (value === this.#factory) return;
|
|
59
|
+
this.#clearSubComponents();
|
|
60
|
+
this.#factory = value;
|
|
61
|
+
this.requestUpdate();
|
|
62
|
+
}
|
|
63
|
+
get provider() {
|
|
64
|
+
return this.#data.provider;
|
|
65
|
+
}
|
|
66
|
+
set provider(value) {
|
|
67
|
+
this.#data.provider = value;
|
|
68
|
+
if (value) this.#data.request(void 0);
|
|
69
|
+
}
|
|
70
|
+
/** The union of all selected items across every sub-component. */
|
|
71
|
+
get selectedItems() {
|
|
72
|
+
const all = /* @__PURE__ */ new Set();
|
|
73
|
+
for (const subEl of this.#subComponents.values()) for (const item of subEl.selectedItems) all.add(item);
|
|
74
|
+
return all;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Forward a command to all live sub-components.
|
|
78
|
+
* Use this to propagate changes like sort order, filter state, or view mode.
|
|
79
|
+
*/
|
|
80
|
+
dispatch(commandId, args) {
|
|
81
|
+
for (const subEl of this.#subComponents.values()) subEl.dispatch(commandId, args);
|
|
82
|
+
}
|
|
83
|
+
createRenderRoot() {
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
connectedCallback() {
|
|
87
|
+
super.connectedCallback();
|
|
88
|
+
this.addEventListener(`select`, this.#onSelect);
|
|
89
|
+
}
|
|
90
|
+
disconnectedCallback() {
|
|
91
|
+
super.disconnectedCallback();
|
|
92
|
+
this.removeEventListener(`select`, this.#onSelect);
|
|
93
|
+
}
|
|
94
|
+
updated(changed) {
|
|
95
|
+
super.updated(changed);
|
|
96
|
+
if (changed.has(`grouped`)) this.#clearSubComponents();
|
|
97
|
+
this.#syncSubComponents();
|
|
98
|
+
}
|
|
99
|
+
render() {
|
|
100
|
+
if (!this.#factory) return nothing;
|
|
101
|
+
if (!this.grouped) return html`<div class="ungrouped-host"></div>`;
|
|
102
|
+
if (!this.#groupBy) return nothing;
|
|
103
|
+
this.#renderedGroups = this.#computeGroups();
|
|
104
|
+
return html`${repeat(this.#renderedGroups.keys(), (key) => key, (key) => html`<ixfx-panel data-group-key=${key} .title=${key}></ixfx-panel>`)}`;
|
|
105
|
+
}
|
|
106
|
+
#computeGroups() {
|
|
107
|
+
const groups = /* @__PURE__ */ new Map();
|
|
108
|
+
if (!this.#groupBy) return groups;
|
|
109
|
+
for (const item of this.#data.items) {
|
|
110
|
+
const key = this.#groupBy(item);
|
|
111
|
+
let bucket = groups.get(key);
|
|
112
|
+
if (!bucket) {
|
|
113
|
+
bucket = [];
|
|
114
|
+
groups.set(key, bucket);
|
|
115
|
+
}
|
|
116
|
+
bucket.push(item);
|
|
117
|
+
}
|
|
118
|
+
return groups;
|
|
119
|
+
}
|
|
120
|
+
#clearSubComponents() {
|
|
121
|
+
for (const subEl of this.#subComponents.values()) subEl.remove();
|
|
122
|
+
this.#subComponents.clear();
|
|
123
|
+
}
|
|
124
|
+
#syncSubComponents() {
|
|
125
|
+
if (!this.#factory) return;
|
|
126
|
+
if (!this.grouped) {
|
|
127
|
+
this.#syncUngrouped();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (!this.#groupBy) return;
|
|
131
|
+
this.#syncGrouped();
|
|
132
|
+
}
|
|
133
|
+
#syncUngrouped() {
|
|
134
|
+
const host = this.querySelector(`.ungrouped-host`);
|
|
135
|
+
if (!host) return;
|
|
136
|
+
let subEl = this.#subComponents.get(UNGROUPED_KEY);
|
|
137
|
+
if (!subEl) {
|
|
138
|
+
subEl = this.#factory(void 0);
|
|
139
|
+
host.appendChild(subEl);
|
|
140
|
+
this.#subComponents.set(UNGROUPED_KEY, subEl);
|
|
141
|
+
}
|
|
142
|
+
subEl.setItems(this.#data.items);
|
|
143
|
+
}
|
|
144
|
+
#syncGrouped() {
|
|
145
|
+
const groups = this.#renderedGroups ?? this.#computeGroups();
|
|
146
|
+
for (const key of [...this.#subComponents.keys()]) if (!groups.has(key)) {
|
|
147
|
+
this.#subComponents.get(key)?.remove();
|
|
148
|
+
this.#subComponents.delete(key);
|
|
149
|
+
}
|
|
150
|
+
for (const [key, items] of groups) {
|
|
151
|
+
const panel = [...this.children].find((el) => el instanceof HTMLElement && el.dataset.groupKey === key);
|
|
152
|
+
if (!panel) continue;
|
|
153
|
+
let subEl = this.#subComponents.get(key);
|
|
154
|
+
if (!subEl) {
|
|
155
|
+
subEl = this.#factory(key);
|
|
156
|
+
panel.appendChild(subEl);
|
|
157
|
+
this.#subComponents.set(key, subEl);
|
|
158
|
+
}
|
|
159
|
+
subEl.setItems(items);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
#onSelect;
|
|
163
|
+
};
|
|
164
|
+
__decorate([property({
|
|
165
|
+
type: Boolean,
|
|
166
|
+
reflect: true
|
|
167
|
+
})], GroupedItemListerElement.prototype, "grouped", void 0);
|
|
168
|
+
__decorate([property({
|
|
169
|
+
type: Boolean,
|
|
170
|
+
attribute: `cross-group-selection`,
|
|
171
|
+
reflect: true
|
|
172
|
+
})], GroupedItemListerElement.prototype, "crossGroupSelection", void 0);
|
|
173
|
+
GroupedItemListerElement = __decorate([safeCustomElement(`ixfx-grouped-item-lister`)], GroupedItemListerElement);
|
|
174
|
+
//#endregion
|
|
175
|
+
export { GroupedItemListerElement };
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=grouped-item-lister.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouped-item-lister.js","names":["#clearingSelection","#subComponents","#data","#groupBy","#factory","#clearSubComponents","#onSelect","#syncSubComponents","#renderedGroups","#computeGroups","#syncUngrouped","#syncGrouped","customElement"],"sources":["../src/grouped-item-lister/grouped-item-lister.ts"],"sourcesContent":["/* eslint-disable ts/no-unsafe-declaration-merging */\nimport type { CommandId } from '@clinth/ui-commands';\nimport type { PropertyValues } from 'lit';\nimport type { IDataProvider } from '../common/data-provider.js';\nimport type {\n GroupedItemListerElementEventMap,\n GroupedSelectDetail,\n IGroupedSubComponent,\n SubComponentFactory,\n} from './types.js';\nimport { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { DataController } from '../common/data-controller.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport '../panel/panel.js';\n\nexport type {\n GroupedItemListerElementEventMap,\n GroupedSelectDetail,\n GroupedSelectEvent,\n IGroupedSubComponent,\n IGroupedSubComponentEventMap,\n SubComponentActivateDetail,\n SubComponentActivateEvent,\n SubComponentFactory,\n SubComponentItemClickDetail,\n SubComponentItemClickEvent,\n SubComponentSelectDetail,\n SubComponentSelectEvent,\n SubComponentTickleDetail,\n SubComponentTickleEvent,\n} from './types.js';\n\nconst UNGROUPED_KEY = `__ungrouped__`;\n\n@customElement(`ixfx-grouped-item-lister`)\nexport class GroupedItemListerElement<T = unknown> extends LitElement {\n @property({ type: Boolean, reflect: true }) grouped = false;\n\n @property({ type: Boolean, attribute: `cross-group-selection`, reflect: true })\n crossGroupSelection = false;\n\n #groupBy: ((item: T) => string) | undefined;\n #factory: SubComponentFactory<T> | undefined;\n #subComponents = new Map<string, HTMLElement & IGroupedSubComponent<T>>();\n // Computed in render() and reused in updated() to avoid a second groupBy pass\n #renderedGroups: Map<string, T[]> | undefined;\n // Guard against re-entrant select events when we call clearSelection() on siblings\n #clearingSelection = false;\n\n readonly #data = new DataController<void, T>(this);\n\n // ---------------------------------------------------------------------------\n // JS-only properties (not HTML attributes — carry function/type information)\n // ---------------------------------------------------------------------------\n\n get groupBy(): ((item: T) => string) | undefined {\n return this.#groupBy;\n }\n\n set groupBy(value: ((item: T) => string) | undefined) {\n this.#groupBy = value;\n this.requestUpdate();\n }\n\n get factory(): SubComponentFactory<T> | undefined {\n return this.#factory;\n }\n\n set factory(value: SubComponentFactory<T> | undefined) {\n if (value === this.#factory)\n return;\n this.#clearSubComponents();\n this.#factory = value;\n this.requestUpdate();\n }\n\n get provider(): IDataProvider<void, T> | undefined {\n return this.#data.provider;\n }\n\n set provider(value: IDataProvider<void, T> | undefined) {\n this.#data.provider = value;\n if (value)\n this.#data.request(undefined);\n }\n\n // ---------------------------------------------------------------------------\n // Public API\n // ---------------------------------------------------------------------------\n\n /** The union of all selected items across every sub-component. */\n get selectedItems(): ReadonlySet<T> {\n const all = new Set<T>();\n for (const subEl of this.#subComponents.values()) {\n for (const item of subEl.selectedItems) {\n all.add(item);\n }\n }\n return all;\n }\n\n /**\n * Forward a command to all live sub-components.\n * Use this to propagate changes like sort order, filter state, or view mode.\n */\n dispatch(commandId: CommandId, args?: Record<string, unknown>): void {\n for (const subEl of this.#subComponents.values()) {\n subEl.dispatch(commandId, args);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Lit lifecycle\n // ---------------------------------------------------------------------------\n\n protected override createRenderRoot() {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(`select`, this.#onSelect as EventListener);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener(`select`, this.#onSelect as EventListener);\n }\n\n protected override updated(changed: PropertyValues): void {\n super.updated(changed);\n if (changed.has(`grouped`)) {\n this.#clearSubComponents();\n }\n this.#syncSubComponents();\n }\n\n protected override render() {\n if (!this.#factory)\n return nothing;\n\n if (!this.grouped) {\n return html`<div class=\"ungrouped-host\"></div>`;\n }\n\n if (!this.#groupBy)\n return nothing;\n\n // Store computed groups so updated() can reuse them without a second pass\n this.#renderedGroups = this.#computeGroups();\n return html`${repeat(\n this.#renderedGroups.keys(),\n key => key,\n key => html`<ixfx-panel data-group-key=${key} .title=${key}></ixfx-panel>`,\n )}`;\n }\n\n // ---------------------------------------------------------------------------\n // Internal — DOM management\n // ---------------------------------------------------------------------------\n\n #computeGroups(): Map<string, T[]> {\n const groups = new Map<string, T[]>();\n if (!this.#groupBy)\n return groups;\n for (const item of this.#data.items) {\n const key = this.#groupBy(item);\n let bucket = groups.get(key);\n if (!bucket) {\n bucket = [];\n groups.set(key, bucket);\n }\n bucket.push(item);\n }\n return groups;\n }\n\n #clearSubComponents(): void {\n for (const subEl of this.#subComponents.values()) {\n subEl.remove();\n }\n this.#subComponents.clear();\n }\n\n #syncSubComponents(): void {\n if (!this.#factory)\n return;\n\n if (!this.grouped) {\n this.#syncUngrouped();\n return;\n }\n\n if (!this.#groupBy)\n return;\n this.#syncGrouped();\n }\n\n #syncUngrouped(): void {\n const host = this.querySelector<HTMLElement>(`.ungrouped-host`);\n if (!host)\n return;\n\n let subEl = this.#subComponents.get(UNGROUPED_KEY);\n if (!subEl) {\n subEl = this.#factory!(undefined);\n host.appendChild(subEl);\n this.#subComponents.set(UNGROUPED_KEY, subEl);\n }\n subEl.setItems(this.#data.items);\n }\n\n #syncGrouped(): void {\n const groups = this.#renderedGroups ?? this.#computeGroups();\n\n // Remove sub-components for groups that no longer exist\n for (const key of [...this.#subComponents.keys()]) {\n if (!groups.has(key)) {\n this.#subComponents.get(key)?.remove();\n this.#subComponents.delete(key);\n }\n }\n\n // Mount or update sub-components per group.\n // Panels are already in the DOM at this point (rendered by Lit's repeat above).\n for (const [key, items] of groups) {\n const panel = [...this.children].find(\n el => el instanceof HTMLElement && (el as HTMLElement).dataset.groupKey === key,\n ) as HTMLElement | undefined;\n if (!panel)\n continue;\n\n let subEl = this.#subComponents.get(key);\n if (!subEl) {\n subEl = this.#factory!(key);\n panel.appendChild(subEl);\n this.#subComponents.set(key, subEl);\n }\n subEl.setItems(items);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Internal — selection coordination\n // ---------------------------------------------------------------------------\n\n #onSelect = (event: Event): void => {\n if (this.#clearingSelection)\n return;\n\n const sourceEl = event.target as HTMLElement;\n let sourceKey: string | undefined;\n for (const [key, subEl] of this.#subComponents) {\n if (subEl === sourceEl) {\n sourceKey = key;\n break;\n }\n }\n\n if (sourceKey === undefined)\n return;\n\n if (this.grouped && !this.crossGroupSelection) {\n this.#clearingSelection = true;\n for (const [key, subEl] of this.#subComponents) {\n if (key !== sourceKey)\n subEl.clearSelection();\n }\n this.#clearingSelection = false;\n }\n\n this.dispatchEvent(\n new CustomEvent<GroupedSelectDetail<T>>(`grouped-select`, {\n detail: {\n selected: this.selectedItems,\n groupKey: sourceKey === UNGROUPED_KEY ? undefined : sourceKey,\n },\n bubbles: true,\n composed: true,\n }),\n );\n };\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-grouped-item-lister': GroupedItemListerElement;\n }\n}\n\nexport interface GroupedItemListerElement<T> {\n addEventListener: (<K extends keyof GroupedItemListerElementEventMap<T>>(\n type: K,\n listener: (this: GroupedItemListerElement<T>, event: GroupedItemListerElementEventMap<T>[K]) => void,\n options?: boolean | AddEventListenerOptions,\n ) => void) & ((\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void);\n}\n"],"mappings":";;;;;;;AAkCA,MAAM,gBAAgB;AAGf,IAAM,2BAAN,MAAM,iCAA8C,WAAW;;;EACd,KAAA,UAAA;EAGhC,KAAA,sBAAA;EAIL,KAAA,iCAAA,IAAI,IAAmD;EAInD,KAAA,qBAAA;EAEJ,KAAA,QAAA,IAAI,eAAwB,IAAI;EAqMpC,KAAA,aAAA,UAAuB;GAClC,IAAI,KAAKA,oBACP;GAEF,MAAM,WAAW,MAAM;GACvB,IAAI;GACJ,KAAK,MAAM,CAAC,KAAK,UAAU,KAAKC,gBAC9B,IAAI,UAAU,UAAU;IACtB,YAAY;IACZ;GACF;GAGF,IAAI,cAAc,KAAA,GAChB;GAEF,IAAI,KAAK,WAAW,CAAC,KAAK,qBAAqB;IAC7C,KAAKD,qBAAqB;IAC1B,KAAK,MAAM,CAAC,KAAK,UAAU,KAAKC,gBAC9B,IAAI,QAAQ,WACV,MAAM,eAAe;IAEzB,KAAKD,qBAAqB;GAC5B;GAEA,KAAK,cACH,IAAI,YAAoC,kBAAkB;IACxD,QAAQ;KACN,UAAU,KAAK;KACf,UAAU,cAAc,gBAAgB,KAAA,IAAY;IACtD;IACA,SAAS;IACT,UAAU;GACZ,CAAC,CACH;EACF;;CAhPA;CACA;CACA;CAEA;CAEA;CAEA;CAMA,IAAI,UAA6C;EAC/C,OAAO,KAAKG;CACd;CAEA,IAAI,QAAQ,OAA0C;EACpD,KAAKA,WAAW;EAChB,KAAK,cAAc;CACrB;CAEA,IAAI,UAA8C;EAChD,OAAO,KAAKC;CACd;CAEA,IAAI,QAAQ,OAA2C;EACrD,IAAI,UAAU,KAAKA,UACjB;EACF,KAAKC,oBAAoB;EACzB,KAAKD,WAAW;EAChB,KAAK,cAAc;CACrB;CAEA,IAAI,WAA+C;EACjD,OAAO,KAAKF,MAAM;CACpB;CAEA,IAAI,SAAS,OAA2C;EACtD,KAAKA,MAAM,WAAW;EACtB,IAAI,OACF,KAAKA,MAAM,QAAQ,KAAA,CAAS;CAChC;;CAOA,IAAI,gBAAgC;EAClC,MAAM,sBAAM,IAAI,IAAO;EACvB,KAAK,MAAM,SAAS,KAAKD,eAAe,OAAO,GAC7C,KAAK,MAAM,QAAQ,MAAM,eACvB,IAAI,IAAI,IAAI;EAGhB,OAAO;CACT;;;;;CAMA,SAAS,WAAsB,MAAsC;EACnE,KAAK,MAAM,SAAS,KAAKA,eAAe,OAAO,GAC7C,MAAM,SAAS,WAAW,IAAI;CAElC;CAMA,mBAAsC;EACpC,OAAO;CACT;CAEA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,KAAK,iBAAiB,UAAU,KAAKK,SAA0B;CACjE;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,KAAK,oBAAoB,UAAU,KAAKA,SAA0B;CACpE;CAEA,QAA2B,SAA+B;EACxD,MAAM,QAAQ,OAAO;EACrB,IAAI,QAAQ,IAAI,SAAS,GACvB,KAAKD,oBAAoB;EAE3B,KAAKE,mBAAmB;CAC1B;CAEA,SAA4B;EAC1B,IAAI,CAAC,KAAKH,UACR,OAAO;EAET,IAAI,CAAC,KAAK,SACR,OAAO,IAAI;EAGb,IAAI,CAAC,KAAKD,UACR,OAAO;EAGT,KAAKK,kBAAkB,KAAKC,eAAe;EAC3C,OAAO,IAAI,GAAG,OACZ,KAAKD,gBAAgB,KAAK,IAC1B,QAAO,MACP,QAAO,IAAI,8BAA8B,IAAI,UAAU,IAAI,eAC7D;CACF;CAMA,iBAAmC;EACjC,MAAM,yBAAS,IAAI,IAAiB;EACpC,IAAI,CAAC,KAAKL,UACR,OAAO;EACT,KAAK,MAAM,QAAQ,KAAKD,MAAM,OAAO;GACnC,MAAM,MAAM,KAAKC,SAAS,IAAI;GAC9B,IAAI,SAAS,OAAO,IAAI,GAAG;GAC3B,IAAI,CAAC,QAAQ;IACX,SAAS,CAAC;IACV,OAAO,IAAI,KAAK,MAAM;GACxB;GACA,OAAO,KAAK,IAAI;EAClB;EACA,OAAO;CACT;CAEA,sBAA4B;EAC1B,KAAK,MAAM,SAAS,KAAKF,eAAe,OAAO,GAC7C,MAAM,OAAO;EAEf,KAAKA,eAAe,MAAM;CAC5B;CAEA,qBAA2B;EACzB,IAAI,CAAC,KAAKG,UACR;EAEF,IAAI,CAAC,KAAK,SAAS;GACjB,KAAKM,eAAe;GACpB;EACF;EAEA,IAAI,CAAC,KAAKP,UACR;EACF,KAAKQ,aAAa;CACpB;CAEA,iBAAuB;EACrB,MAAM,OAAO,KAAK,cAA2B,iBAAiB;EAC9D,IAAI,CAAC,MACH;EAEF,IAAI,QAAQ,KAAKV,eAAe,IAAI,aAAa;EACjD,IAAI,CAAC,OAAO;GACV,QAAQ,KAAKG,SAAU,KAAA,CAAS;GAChC,KAAK,YAAY,KAAK;GACtB,KAAKH,eAAe,IAAI,eAAe,KAAK;EAC9C;EACA,MAAM,SAAS,KAAKC,MAAM,KAAK;CACjC;CAEA,eAAqB;EACnB,MAAM,SAAS,KAAKM,mBAAmB,KAAKC,eAAe;EAG3D,KAAK,MAAM,OAAO,CAAC,GAAG,KAAKR,eAAe,KAAK,CAAC,GAC9C,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG;GACpB,KAAKA,eAAe,IAAI,GAAG,CAAC,EAAE,OAAO;GACrC,KAAKA,eAAe,OAAO,GAAG;EAChC;EAKF,KAAK,MAAM,CAAC,KAAK,UAAU,QAAQ;GACjC,MAAM,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,MAC/B,OAAM,cAAc,eAAgB,GAAmB,QAAQ,aAAa,GAC9E;GACA,IAAI,CAAC,OACH;GAEF,IAAI,QAAQ,KAAKA,eAAe,IAAI,GAAG;GACvC,IAAI,CAAC,OAAO;IACV,QAAQ,KAAKG,SAAU,GAAG;IAC1B,MAAM,YAAY,KAAK;IACvB,KAAKH,eAAe,IAAI,KAAK,KAAK;GACpC;GACA,MAAM,SAAS,KAAK;EACtB;CACF;CAMA;AAoCF;AAtPG,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,yBAAA,WAAA,WAAA,KAAA,CAAA;AAEzC,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,WAAW;CAAyB,SAAS;AAAK,CAAC,CAAA,GAAA,yBAAA,WAAA,uBAAA,KAAA,CAAA;AAJ/EW,2BAAAA,WAAAA,CAAAA,kBAAc,0BAA0B,CAAA,GAAA,wBAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as themeFallbacks } from "./fallbacks-
|
|
1
|
+
import { t as themeFallbacks } from "./fallbacks-DEE1nCTt.js";
|
|
2
2
|
import { n as safeCustomElement, t as __decorate } from "./decorate-VRK8rslU.js";
|
|
3
|
-
import {
|
|
3
|
+
import { a as registerDefaults, c as iconBus, o as getIcon } from "./defaults-BCiDhZbF.js";
|
|
4
4
|
import { LitElement, css, html, nothing } from "lit";
|
|
5
5
|
import { property } from "lit/decorators.js";
|
|
6
6
|
import { unsafeHTML } from "lit/directives/unsafe-html.js";
|
|
@@ -97,6 +97,9 @@ __decorate([property({
|
|
|
97
97
|
})], IxfxIconElement.prototype, "rotate", void 0);
|
|
98
98
|
IxfxIconElement = __decorate([safeCustomElement(`ixfx-icon`)], IxfxIconElement);
|
|
99
99
|
//#endregion
|
|
100
|
+
//#region src/icons/index.ts
|
|
101
|
+
registerDefaults();
|
|
102
|
+
//#endregion
|
|
100
103
|
export { IxfxIconElement as t };
|
|
101
104
|
|
|
102
|
-
//# sourceMappingURL=
|
|
105
|
+
//# sourceMappingURL=icons-Bm2ByQ3s.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons-Bm2ByQ3s.js","names":["#onIconChange","customElement"],"sources":["../src/icons/icon.ts","../src/icons/index.ts"],"sourcesContent":["import type { IconChangedEvent } from './registry.js';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { themeFallbacks } from '../styles/fallbacks.js';\nimport { safeCustomElement as customElement } from '../util/custom-elements.js';\nimport { getIcon, iconBus } from './registry.js';\n\n/**\n * Renders an icon from the icon registry by name.\n *\n * @example\n * ```html\n * <ixfx-icon name=\"chevron-down\"></ixfx-icon>\n * <ixfx-icon name=\"close\" size=\"32\" label=\"Close dialog\"></ixfx-icon>\n * ```\n *\n * Use `registerIcon(name, svgString)` to add or override icons.\n */\n@customElement(`ixfx-icon`)\nexport class IxfxIconElement extends LitElement {\n @property() name = ``;\n @property({ type: Number }) size: number | undefined;\n @property() label = ``;\n @property({ type: Boolean, attribute: `prominence` }) prominence = false;\n @property({ type: String, attribute: `rotate`, reflect: true }) rotate = ``;\n\n #onIconChange = (e: Event): void => {\n if ((e as IconChangedEvent).detail.name === this.name) {\n this.requestUpdate();\n }\n };\n\n override connectedCallback(): void {\n super.connectedCallback();\n iconBus.addEventListener(`ixfx-icon-change`, this.#onIconChange);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n iconBus.removeEventListener(`ixfx-icon-change`, this.#onIconChange);\n }\n\n protected override render() {\n const svg = getIcon(this.name);\n if (!svg)\n return nothing;\n\n const hasLabel = this.label.length > 0;\n\n return html`\n <span\n class=\"icon-wrapper\"\n aria-hidden=${hasLabel ? nothing : `true`}\n aria-label=${hasLabel ? this.label : nothing}\n >${unsafeHTML(svg)}</span>\n `;\n }\n\n protected override updated(changed: Map<string, unknown>): void {\n super.updated(changed);\n if (changed.has(`rotate`)) {\n if (this.rotate?.length > 0) {\n this.style.setProperty(`--rotate`, this.rotate);\n } else {\n this.style.removeProperty(`--rotate`);\n }\n }\n }\n\n static override styles = [themeFallbacks, css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1em;\n height: 1em;\n opacity: var(--opacity, 1);\n }\n\n :host([prominence]) {\n opacity: var(--prominence-idle-opacity, 1);\n }\n\n :host([prominence]:hover) {\n opacity: var(--prominence-tickled-opacity, 1);\n }\n\n :host([prominence][disabled]) {\n opacity: var(--prominence-disabled-opacity, 0.5);\n }\n\n .icon-wrapper {\n display: contents;\n }\n\n :host svg {\n width: 100%;\n height: 100%;\n transition: transform var(--transition, 0.15s ease-out);\n }\n\n :host([rotate]) svg {\n transform: rotate(var(--rotate));\n }\n `];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-icon': IxfxIconElement;\n }\n}\n","import { registerDefaults } from './defaults.js';\n\nexport { ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE } from './defaults.js';\nexport { IxfxIconElement } from './icon.js';\nexport { getIcon, hasIcon, iconBus, registerIcon, svgToDataUri } from './registry.js';\nexport type { IconChangedDetail, IconChangedEvent } from './registry.js';\n\nregisterDefaults();\n"],"mappings":";;;;;;;AAoBO,IAAM,kBAAN,MAAM,wBAAwB,WAAW;;;EAC3B,KAAA,OAAA;EAEC,KAAA,QAAA;EAC+C,KAAA,aAAA;EACM,KAAA,SAAA;EAExD,KAAA,iBAAA,MAAmB;GAClC,IAAK,EAAuB,OAAO,SAAS,KAAK,MAC/C,KAAK,cAAc;EAEvB;;CAJA;CAMA,oBAAmC;EACjC,MAAM,kBAAkB;EACxB,QAAQ,iBAAiB,oBAAoB,KAAKA,aAAa;CACjE;CAEA,uBAAsC;EACpC,MAAM,qBAAqB;EAC3B,QAAQ,oBAAoB,oBAAoB,KAAKA,aAAa;CACpE;CAEA,SAA4B;EAC1B,MAAM,MAAM,QAAQ,KAAK,IAAI;EAC7B,IAAI,CAAC,KACH,OAAO;EAET,MAAM,WAAW,KAAK,MAAM,SAAS;EAErC,OAAO,IAAI;;;sBAGO,WAAW,UAAU,OAAO;qBAC7B,WAAW,KAAK,QAAQ,QAAQ;SAC5C,WAAW,GAAG,EAAE;;CAEvB;CAEA,QAA2B,SAAqC;EAC9D,MAAM,QAAQ,OAAO;EACrB,IAAI,QAAQ,IAAI,QAAQ,GAAG;GACzB,IAAI,KAAK,QAAQ,SAAS,GACxB,KAAK,MAAM,YAAY,YAAY,KAAK,MAAM;QAE9C,KAAK,MAAM,eAAe,UAAU;EAExC;CACF;;EAEyB,KAAA,SAAA,CAAC,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmC5C;;AACH;AArFG,WAAA,CAAA,SAAS,CAAA,GAAA,gBAAA,WAAA,QAAA,KAAA,CAAA;AACT,WAAA,CAAA,SAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,gBAAA,WAAA,QAAA,KAAA,CAAA;AACzB,WAAA,CAAA,SAAS,CAAA,GAAA,gBAAA,WAAA,SAAA,KAAA,CAAA;AACT,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,WAAW;AAAa,CAAC,CAAA,GAAA,gBAAA,WAAA,cAAA,KAAA,CAAA;AACnD,WAAA,CAAA,SAAS;CAAE,MAAM;CAAQ,WAAW;CAAU,SAAS;AAAK,CAAC,CAAA,GAAA,gBAAA,WAAA,UAAA,KAAA,CAAA;AAN/DC,kBAAAA,WAAAA,CAAAA,kBAAc,WAAW,CAAA,GAAA,eAAA;;;ACZ1B,iBAAiB"}
|
package/dist/icons.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as IxfxIconElement } from "./
|
|
3
|
-
import { a as registerDefaults, i as ICON_CLOSE, n as ICON_CHECK, r as ICON_CHEVRON_DOWN, t as ICON_CARET_RIGHT } from "./defaults-BkWCPJFL.js";
|
|
4
|
-
//#region src/icons/index.ts
|
|
5
|
-
registerDefaults();
|
|
6
|
-
//#endregion
|
|
1
|
+
import { c as iconBus, i as ICON_CLOSE, l as registerIcon, n as ICON_CHECK, o as getIcon, r as ICON_CHEVRON_DOWN, s as hasIcon, t as ICON_CARET_RIGHT, u as svgToDataUri } from "./defaults-BCiDhZbF.js";
|
|
2
|
+
import { t as IxfxIconElement } from "./icons-Bm2ByQ3s.js";
|
|
7
3
|
export { ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IxfxIconElement, getIcon, hasIcon, iconBus, registerIcon, svgToDataUri };
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { n as buildHighlightTargets, r as clearHighlights, t as applyHighlights } from "./highlight-B-eQrhhb.js";
|
|
2
|
+
import { n as createIncrSearch, r as createFuzzySearch } from "./element-search-Y8SRfPGM.js";
|
|
3
|
+
//#region src/incr-search/ac-adapter.ts
|
|
4
|
+
/**
|
|
5
|
+
* Creates an ixfx-ac-text-compatible `completionProvider` function from a
|
|
6
|
+
* static item list. Uses synchronous fuzzy search wrapped in a Promise so it
|
|
7
|
+
* fits the async provider signature.
|
|
8
|
+
*
|
|
9
|
+
* Each returned item has `positions` populated with matched character indices,
|
|
10
|
+
* which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.
|
|
11
|
+
*
|
|
12
|
+
* Empty query returns all items in original order (no positions).
|
|
13
|
+
* A cancelled signal causes the returned promise to reject with an AbortError.
|
|
14
|
+
*/
|
|
15
|
+
function createAcCompletionProvider(items, options = {}) {
|
|
16
|
+
const selector = options.selector ?? ((item) => item.label);
|
|
17
|
+
const fuzzy = createFuzzySearch(items, { selector });
|
|
18
|
+
return (query, signal) => new Promise((resolve, reject) => {
|
|
19
|
+
if (signal.aborted) {
|
|
20
|
+
reject(new DOMException(`Aborted`, `AbortError`));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const results = fuzzy.find(query).map((r) => ({
|
|
24
|
+
...r.item,
|
|
25
|
+
positions: r.positions
|
|
26
|
+
}));
|
|
27
|
+
if (signal.aborted) {
|
|
28
|
+
reject(new DOMException(`Aborted`, `AbortError`));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
resolve(results);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/incr-search/controller-tree.ts
|
|
36
|
+
const DEFAULT_HIGHLIGHT_KEY = `incr-search-highlight`;
|
|
37
|
+
/**
|
|
38
|
+
* Incremental-search controller for any component implementing `TreeSearchHost`
|
|
39
|
+
* (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).
|
|
40
|
+
*
|
|
41
|
+
* Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`
|
|
42
|
+
* classes — the unified `TreeFilterPredicate` (with depth) means one implementation works
|
|
43
|
+
* for all tree-like components.
|
|
44
|
+
*
|
|
45
|
+
* @example Using with ixfx-tree-list:
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const ctrl = new IncrSearchTreeController(myTreeList, {
|
|
48
|
+
* selector: item => item.node.item.label,
|
|
49
|
+
* });
|
|
50
|
+
* ctrl.connect();
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example Using with ixfx-miller-list (different label selector):
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const ctrl = new IncrSearchTreeController(myMillerList, {
|
|
56
|
+
* selector: item => item.node.item.label,
|
|
57
|
+
* labelSelector: '.label',
|
|
58
|
+
* });
|
|
59
|
+
* ctrl.connect();
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
var IncrSearchTreeController = class {
|
|
63
|
+
#el;
|
|
64
|
+
#opts;
|
|
65
|
+
#search;
|
|
66
|
+
#unsub;
|
|
67
|
+
#labelMap = /* @__PURE__ */ new Map();
|
|
68
|
+
constructor(el, opts) {
|
|
69
|
+
this.#el = el;
|
|
70
|
+
this.#opts = opts;
|
|
71
|
+
this.#search = createIncrSearch({
|
|
72
|
+
selector: opts.selector,
|
|
73
|
+
fzf: opts.fzf
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
connect() {
|
|
77
|
+
this.disconnect();
|
|
78
|
+
const items = this.#el.getNodes();
|
|
79
|
+
for (const item of items) this.#labelMap.set(this.#opts.selector(item), item);
|
|
80
|
+
this.#search.setItems(items);
|
|
81
|
+
if (this.#opts.input) {
|
|
82
|
+
this.#opts.input.addEventListener(`input`, this.#onInput);
|
|
83
|
+
this.#opts.input.addEventListener(`keydown`, this.#onKeydown);
|
|
84
|
+
}
|
|
85
|
+
this.#unsub = this.#search.onChange((state) => this.#onStateChange(state));
|
|
86
|
+
}
|
|
87
|
+
disconnect() {
|
|
88
|
+
if (this.#unsub) {
|
|
89
|
+
this.#unsub();
|
|
90
|
+
this.#unsub = void 0;
|
|
91
|
+
}
|
|
92
|
+
if (this.#opts.input) {
|
|
93
|
+
this.#opts.input.removeEventListener(`input`, this.#onInput);
|
|
94
|
+
this.#opts.input.removeEventListener(`keydown`, this.#onKeydown);
|
|
95
|
+
}
|
|
96
|
+
this.#el.filterPredicate = void 0;
|
|
97
|
+
clearHighlights({ key: this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY });
|
|
98
|
+
this.#labelMap.clear();
|
|
99
|
+
}
|
|
100
|
+
async setQuery(query) {
|
|
101
|
+
await this.#search.setQuery(query);
|
|
102
|
+
}
|
|
103
|
+
async clearQuery() {
|
|
104
|
+
await this.#search.clearQuery();
|
|
105
|
+
}
|
|
106
|
+
#onInput = () => {
|
|
107
|
+
const value = this.#opts.input?.value ?? ``;
|
|
108
|
+
this.setQuery(value);
|
|
109
|
+
};
|
|
110
|
+
#onKeydown = (e) => {
|
|
111
|
+
if (e.key === `Escape` && this.#opts.input) {
|
|
112
|
+
this.#opts.input.value = ``;
|
|
113
|
+
this.clearQuery();
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
#onStateChange(state) {
|
|
117
|
+
const matched = new Set(state.results.map((r) => r.item.node.item.key));
|
|
118
|
+
const hasQuery = state.query.trim().length > 0;
|
|
119
|
+
this.#el.filterPredicate = hasQuery && matched.size > 0 ? (node, _depth) => matched.has(node.item.key) : void 0;
|
|
120
|
+
const key = this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY;
|
|
121
|
+
if (!this.#el.shadowRoot) return;
|
|
122
|
+
if (!state.query.trim()) {
|
|
123
|
+
clearHighlights({ key });
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const labelSelector = this.#opts.labelSelector ?? `.tree-label`;
|
|
127
|
+
const targets = buildHighlightTargets(this.#el.shadowRoot, labelSelector, state.positionsByItem, (labelEl) => {
|
|
128
|
+
const text = labelEl.textContent ?? ``;
|
|
129
|
+
return this.#labelMap.get(text);
|
|
130
|
+
}, (labelEl) => labelEl.textContent ?? ``);
|
|
131
|
+
applyHighlights(targets, { key });
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
//#endregion
|
|
135
|
+
export { createAcCompletionProvider as n, IncrSearchTreeController as t };
|
|
136
|
+
|
|
137
|
+
//# sourceMappingURL=incr-search-vCzuao-2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incr-search-vCzuao-2.js","names":["#el","#opts","#search","#labelMap","#onInput","#onKeydown","#unsub","#onStateChange"],"sources":["../src/incr-search/ac-adapter.ts","../src/incr-search/controller-tree.ts"],"sourcesContent":["import type { FuzzySearchOptions } from './types.js';\nimport { createFuzzySearch } from './fuzzy.js';\n\n/**\n * Creates an ixfx-ac-text-compatible `completionProvider` function from a\n * static item list. Uses synchronous fuzzy search wrapped in a Promise so it\n * fits the async provider signature.\n *\n * Each returned item has `positions` populated with matched character indices,\n * which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.\n *\n * Empty query returns all items in original order (no positions).\n * A cancelled signal causes the returned promise to reject with an AbortError.\n */\nexport function createAcCompletionProvider<T extends { label: string }>(\n items: readonly T[],\n options: Pick<FuzzySearchOptions<T>, `selector`> = {},\n): (query: string, signal: AbortSignal) => Promise<Array<T & { positions: ReadonlySet<number> }>> {\n const selector = options.selector ?? ((item: T) => item.label);\n const fuzzy = createFuzzySearch(items, { selector });\n\n return (\n query: string,\n signal: AbortSignal,\n ): Promise<Array<T & { positions: ReadonlySet<number> }>> =>\n new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n const results = fuzzy.find(query).map(r => ({ ...r.item, positions: r.positions }));\n\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n resolve(results);\n });\n}\n","import type { FzfOptions } from 'fzf';\nimport type { TreeSearchHost } from '../common/searchable.js';\nimport type { TreeNode } from '../common/types.js';\nimport type { IncrSearchState } from './types.js';\nimport { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';\nimport { createIncrSearch } from './incr-search.js';\n\nconst DEFAULT_HIGHLIGHT_KEY = `incr-search-highlight`;\n\nexport type IncrSearchTreeOptions = {\n selector: (item: { node: TreeNode; depth: number }) => string;\n /**\n * CSS selector for the label elements inside the shadow root.\n * Defaults to `.tree-label` (suitable for ixfx-tree-list).\n * Use `.label` for ixfx-miller-list.\n */\n labelSelector?: string;\n highlightKey?: string;\n input?: HTMLInputElement;\n fzf?: Partial<FzfOptions<{ node: TreeNode; depth: number }>>;\n};\n\ntype SearchItem = { node: TreeNode; depth: number };\n\n/**\n * Incremental-search controller for any component implementing `TreeSearchHost`\n * (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).\n *\n * Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`\n * classes — the unified `TreeFilterPredicate` (with depth) means one implementation works\n * for all tree-like components.\n *\n * @example Using with ixfx-tree-list:\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myTreeList, {\n * selector: item => item.node.item.label,\n * });\n * ctrl.connect();\n * ```\n *\n * @example Using with ixfx-miller-list (different label selector):\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myMillerList, {\n * selector: item => item.node.item.label,\n * labelSelector: '.label',\n * });\n * ctrl.connect();\n * ```\n */\nexport class IncrSearchTreeController {\n #el: TreeSearchHost;\n #opts: IncrSearchTreeOptions;\n #search: ReturnType<typeof createIncrSearch<SearchItem>>;\n #unsub: (() => void) | undefined;\n #labelMap = new Map<string, SearchItem>();\n\n constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions) {\n this.#el = el;\n this.#opts = opts;\n this.#search = createIncrSearch<SearchItem>({\n selector: opts.selector,\n fzf: opts.fzf,\n });\n }\n\n connect(): void {\n this.disconnect();\n\n const items = this.#el.getNodes();\n for (const item of items) {\n this.#labelMap.set(this.#opts.selector(item), item);\n }\n void this.#search.setItems(items);\n\n if (this.#opts.input) {\n this.#opts.input.addEventListener(`input`, this.#onInput);\n this.#opts.input.addEventListener(`keydown`, this.#onKeydown);\n }\n\n this.#unsub = this.#search.onChange(state => this.#onStateChange(state));\n }\n\n disconnect(): void {\n if (this.#unsub) {\n this.#unsub();\n this.#unsub = undefined;\n }\n if (this.#opts.input) {\n this.#opts.input.removeEventListener(`input`, this.#onInput);\n this.#opts.input.removeEventListener(`keydown`, this.#onKeydown);\n }\n this.#el.filterPredicate = undefined;\n clearHighlights({ key: this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY });\n this.#labelMap.clear();\n }\n\n async setQuery(query: string): Promise<void> {\n await this.#search.setQuery(query);\n }\n\n async clearQuery(): Promise<void> {\n await this.#search.clearQuery();\n }\n\n #onInput = () => {\n const value = this.#opts.input?.value ?? ``;\n void this.setQuery(value);\n };\n\n #onKeydown = (e: KeyboardEvent) => {\n if (e.key === `Escape` && this.#opts.input) {\n this.#opts.input.value = ``;\n void this.clearQuery();\n }\n };\n\n #onStateChange(state: IncrSearchState<SearchItem>): void {\n const matched = new Set(state.results.map(r => r.item.node.item.key));\n const hasQuery = state.query.trim().length > 0;\n this.#el.filterPredicate = hasQuery && matched.size > 0\n ? (node: TreeNode, _depth: number) => matched.has(node.item.key)\n : undefined;\n\n const key = this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY;\n if (!this.#el.shadowRoot)\n return;\n\n if (!state.query.trim()) {\n clearHighlights({ key });\n return;\n }\n\n const labelSelector = this.#opts.labelSelector ?? `.tree-label`;\n const targets = buildHighlightTargets(\n this.#el.shadowRoot,\n labelSelector,\n state.positionsByItem,\n (labelEl) => {\n const text = labelEl.textContent ?? ``;\n return this.#labelMap.get(text);\n },\n labelEl => labelEl.textContent ?? ``,\n );\n applyHighlights(targets, { key });\n }\n}\n"],"mappings":"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"}
|
package/dist/incr-search.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as IncrSearchChangeCallback, a as createFuzzySearch, b as IncrSearchState, c as IncrSearchTreeController, d as ElementIncrSearchOptions, f as FuzzySearch, g as IncrSearch, h as HighlightTarget, i as clearHighlights, l as IncrSearchTreeOptions, m as HighlightOptions, n as applyHighlights, o as ElementIncrSearch, p as FuzzySearchOptions, r as buildHighlightTargets, s as createElementIncrSearch, t as createIncrSearch, u as createAcCompletionProvider, v as IncrSearchOptions, y as IncrSearchResult } from "./index-
|
|
1
|
+
import { _ as IncrSearchChangeCallback, a as createFuzzySearch, b as IncrSearchState, c as IncrSearchTreeController, d as ElementIncrSearchOptions, f as FuzzySearch, g as IncrSearch, h as HighlightTarget, i as clearHighlights, l as IncrSearchTreeOptions, m as HighlightOptions, n as applyHighlights, o as ElementIncrSearch, p as FuzzySearchOptions, r as buildHighlightTargets, s as createElementIncrSearch, t as createIncrSearch, u as createAcCompletionProvider, v as IncrSearchOptions, y as IncrSearchResult } from "./index-Cu5i8zZY.js";
|
|
2
2
|
export { type ElementIncrSearch, type ElementIncrSearchOptions, type FuzzySearch, type FuzzySearchOptions, type HighlightOptions, type HighlightTarget, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, applyHighlights, buildHighlightTargets, clearHighlights, createAcCompletionProvider, createElementIncrSearch, createFuzzySearch, createIncrSearch };
|
package/dist/incr-search.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { n as buildHighlightTargets, r as clearHighlights, t as applyHighlights } from "./highlight-B-eQrhhb.js";
|
|
2
|
-
import {
|
|
2
|
+
import { n as createIncrSearch, r as createFuzzySearch, t as createElementIncrSearch } from "./element-search-Y8SRfPGM.js";
|
|
3
|
+
import { n as createAcCompletionProvider, t as IncrSearchTreeController } from "./incr-search-vCzuao-2.js";
|
|
3
4
|
export { IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, applyHighlights, buildHighlightTargets, clearHighlights, createAcCompletionProvider, createElementIncrSearch, createFuzzySearch, createIncrSearch };
|
|
@@ -10,6 +10,8 @@ type OklchValue = {
|
|
|
10
10
|
readonly c: number;
|
|
11
11
|
readonly h: number;
|
|
12
12
|
readonly a?: number;
|
|
13
|
+
readonly unit: `scalar`;
|
|
14
|
+
readonly space: `oklch`;
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
17
|
* Event detail for colour picker input/change events
|
|
@@ -157,6 +159,7 @@ declare class ColourPickerPopup extends LitElement {
|
|
|
157
159
|
private _pendingConfirmed;
|
|
158
160
|
constructor();
|
|
159
161
|
get value(): string;
|
|
162
|
+
set value(colour: Colour.Colourish);
|
|
160
163
|
private get _innerHidePreview();
|
|
161
164
|
private get _pickerDimensions();
|
|
162
165
|
setColour(colour: Colour.Colourish): void;
|
|
@@ -181,4 +184,4 @@ declare global {
|
|
|
181
184
|
}
|
|
182
185
|
//#endregion
|
|
183
186
|
export { ColourPickerInputEvent as a, ColourPickerEventDetail as i, ColourPicker as n, OklchValue as o, ColourPickerChangeEvent as r, ColourPickerPopup as t };
|
|
184
|
-
//# sourceMappingURL=index-
|
|
187
|
+
//# sourceMappingURL=index-BOUaDIW-.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BOUaDIW-.d.ts","names":[],"sources":["../src/colour-picker/types.ts","../src/colour-picker/colour-picker.ts","../src/colour-picker/colour-picker-popup.ts"],"mappings":";;;;;;;KAGY;WACD;WACA;WACA;WACA;WACA;WACA;;;;;KAMC,0BAA0B;;;;KAK1B,yBAAyB,YAAY;KACrC,0BAA0B,YAAY;KAiBtC;KACA;;;;QAKJ;YACI;IACR,sBAAmD;;;;;cCZ1C,qBAAqB;EACJ;EACA;EACA;EACA;EAE2C;EACN;EACA;EACA;EACf;EACmB;EACM;EACH;UAGhE;EAE0C;EACA;EACA;EACA;UAE1C;EAOY,UAAW;EACX,UAAW;EACX,UAAW;EACX,UAAW;EACZ,YAAa;UAIxB;UACA;UACA;UACA;mBAKS;MAEb;MAIA,MAAM;;;;;;EAcV,UAAU,QAAQ,OAAO;MASrB,UAAU;MAIV,OAAO,OAAO;MAId,UAAU;MAIV,OAAO,OAAO;MAId,UAAU;MAIV,OAAO,OAAO;MAId,UAAU;MAIV,OAAO,OAAO;EAIlB,UAAU,OAAO;EAIjB,UAAU,OAAO;EAIjB,UAAU,OAAO;EAIjB,UAAU,OAAO;EAIR,WAAW,mBAAmB;UAY/B;UAOA;UASA;UAUA;UA0BA;UAIA;UAYA;UAWA;EAKC,wBAAM;EAoCN,aAAa,mBAAmB;EAKhC,QAAQ,mBAAmB;EAqBpC;EA4FA,WAAY,GAAG,OAAO;EAQtB,YAAa,GAAG,OAAO;EAevB;EAKA;SAKO,QAAQ;;QAoIT;YACI;IACR,sBAAsB;;;;;cCthBpB;;;;;;;;;;;;;;;;;;KAOD,0BAA0B;cAgBlB,0BAA0B;EACT;EAEA;EACA;EACA;EACA;EAE4B;EACS;EACA;EACA;EACf;EACI;EAC1B,MAAM;UAEjB;UACA;EAEA,UAAW;EACC,WAAY;mBAExB;mBACA;mBACA;UAGT;UACA;UACA;UACA;UAGA;UACA;UACA;UACA;UAGA;;MAUJ;MAIA,MAAM,QAAQ,OAAO;cAIb;cAQA;EAIZ,UAAU,QAAQ,OAAO;EAQhB,aAAa,mBAAmB;EAMhC,QAAQ,mBAAmB;UAS5B;UAUA;UAOA;UAoBA;UAmBA;UAmBA;UAcA;UAYA;UAKA;EAKC,wBAAM;SAiDR,QAAQ;;QAmGT;YACI;IACR,4BAA4B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as TreeNode } from "./types-
|
|
2
|
-
import { d as TreeSearchHost } from "./tree-component-
|
|
1
|
+
import { o as TreeNode } from "./types-Bc23SI94.js";
|
|
2
|
+
import { d as TreeSearchHost } from "./tree-component-BvV4muxx.js";
|
|
3
3
|
import { FzfOptions } from "fzf";
|
|
4
4
|
//#region src/incr-search/types.d.ts
|
|
5
5
|
type IncrSearchResult<T> = {
|
|
@@ -157,4 +157,4 @@ declare function buildHighlightTargets<T>(root: ShadowRoot | Element, itemSelect
|
|
|
157
157
|
declare function createIncrSearch<T>(options?: IncrSearchOptions<T>): IncrSearch<T>;
|
|
158
158
|
//#endregion
|
|
159
159
|
export { IncrSearchChangeCallback as _, createFuzzySearch as a, IncrSearchState as b, IncrSearchTreeController as c, ElementIncrSearchOptions as d, FuzzySearch as f, IncrSearch as g, HighlightTarget as h, clearHighlights as i, IncrSearchTreeOptions as l, HighlightOptions as m, applyHighlights as n, ElementIncrSearch as o, FuzzySearchOptions as p, buildHighlightTargets as r, createElementIncrSearch as s, createIncrSearch as t, createAcCompletionProvider as u, IncrSearchOptions as v, IncrSearchResult as y };
|
|
160
|
-
//# sourceMappingURL=index-
|
|
160
|
+
//# sourceMappingURL=index-Cu5i8zZY.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Cu5i8zZY.d.ts","names":[],"sources":["../src/incr-search/types.ts","../src/incr-search/ac-adapter.ts","../src/incr-search/controller-tree.ts","../src/incr-search/element-search.ts","../src/incr-search/fuzzy.ts","../src/incr-search/highlight.ts","../src/incr-search/incr-search.ts"],"mappings":";;;;KAGY,iBAAiB;WAClB,MAAM;WACN,WAAW;WACX;;KAIC,gBAAgB;WACjB;WACA,SAAS,cAAc,iBAAiB;WAExC,iBAAiB,YAAY,GAAG;;KAG/B,yBAAyB,MAAM,OAAO,gBAAgB;KAEtD,kBAAkB;WACnB,iBAAiB;WACjB,YAAY,MAAM;WAClB,MAAM,QAAQ,WAAW;WACzB,WAAW,yBAAyB;;KAInC,WAAW;WACZ,WAAW,gBAAgB,KAAK,SAAS,gBAAgB;WACzD,WAAW,eAAe,SAAS,gBAAgB,QAAQ,gBAAgB;WAC3E,kBAAkB;WAClB,OAAO,gBAAgB;WACvB,WAAW,IAAI,yBAAyB;WACxC;;KAGC,mBAAmB;WACpB,YAAY,MAAM;WAClB,MAAM,QAAQ,WAAW;;KAGxB,YAAY;WACb,OAAO,kBAAkB,cAAc,iBAAiB;WACxD,gBAAgB;;KAIf;WACD,SAAS;WACT;WACA,WAAW;;KAGV;WACD;;KAGC;WACD,WAAW;WACX;WACA,YAAY,IAAI;WAChB,UAAU,IAAI;WACd;WACA;WACA,MAAM,QAAQ;IAAa;IAAa;;WACxC,WAAW;IAA2B;IAAa;;;;;;;;;;;;;;;;iBCnD9C,2BAA2B;EAAY;GACrD,gBAAgB,KAChB,UAAS,KAAK,mBAAmB,mBAC/B,eAAe,QAAQ,gBAAgB,QAAQ,MAAM;EAAM,WAAW;;;;KCR9D;EACV,WAAW;IAAQ,MAAM;IAAU;;;;;;;EAMnC;EACA;EACA,QAAQ;EACR,MAAM,QAAQ;IAAa,MAAM;IAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BhC;;EAOC,YAAA,IAAI,gBAAgB,MAAM;EAStC;EAiBA;EAcM,SAAS,gBAAgB;EAIzB,cAAc;;;;KC5FjB;WAAyB;WAAsB;;KAWxC;WACD,WAAW,eAAe,SAAS,gBAAgB;WACnD,kBAAkB;WAClB;WACA,WAAW,IAAI,yBAAyB;WACxC;;iBAGK,wBAAwB,MAAM,2BAA2B;;;iBCXzD,kBAAkB,GAChC,gBAAgB,KAChB,UAAS,mBAAmB,KAC3B,YAAY;;;iBCfC,gBACd,kBAAkB,mBAClB,UAAS;iBA+BK,gBAAgB,UAAS;iBAMzB,sBAAsB,GACpC,MAAM,aAAa,SACnB,sBACA,iBAAiB,YAAY,GAAG,sBAChC,UAAU,IAAI,YAAY,eAC1B,UAAU,IAAI,qBACb;;;iBC7Ba,iBAAiB,GAAG,UAAS,kBAAkB,KAAU,WAAW"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./icon-BUwP1CZ1.js";
|
|
2
|
-
import { o as TreeNode } from "./types-
|
|
2
|
+
import { o as TreeNode } from "./types-Bc23SI94.js";
|
|
3
3
|
import { i as MenuContainer, n as MenuTrigger, r as MenuTriggerCommandDetail, t as MenuItem } from "./menu-item-BG5w7fi4.js";
|
|
4
4
|
import { LitElement, TemplateResult } from "lit";
|
|
5
5
|
import { CommandRegistry, KeyboardManager } from "@clinth/ui-commands";
|
|
@@ -179,4 +179,4 @@ declare namespace index_d_exports {
|
|
|
179
179
|
}
|
|
180
180
|
//#endregion
|
|
181
181
|
export { menuFromTree as a, MenuSeparator as c, MenuCheckItem as d, MenuBar as f, MenuFromTreeOptions as i, MenuSubTrigger as l, MenuRadioGroup as n, menuFromTreeToElements as o, MenuRadioItem as r, MenuHeader as s, index_d_exports as t, MenuCommandController as u };
|
|
182
|
-
//# sourceMappingURL=index-
|
|
182
|
+
//# sourceMappingURL=index-ovq_GTdl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-ovq_GTdl.d.ts","names":[],"sources":["../src/menu/menu-bar.ts","../src/menu/menu-check-item.ts","../src/menu/menu-command-controller.ts","../src/menu/menu-sub-trigger.ts","../src/menu/menu-separator.ts","../src/menu/menu-header.ts","../src/menu/menu-from-tree.ts","../src/menu/menu-radio-item.ts","../src/menu/menu-radio-group.ts","../src/menu/index.ts"],"mappings":";;;;;;cAMa,gBAAgB;UACnB;UACA;EAER;EASA;UASQ;UAOA;UAIA;UAMA;UAIA;UAQA;UASA;SAkCD,sBAAM;EAab,wBAAM;;QAKA;YACI;IACR,iBAAiB;;;;;cCvGR,sBAAsB;EACL;EAC2B;EAC3B;EACC;EACA;EACuB;EACpB,WAAW;EACX,kBAAkB;UAE1C;UAYA;UASA;EASR,WAAW,mBAAmB;EAU9B,QAAQ,mBAAmB;UAInB;SAaQ,sBAAM;EA0DtB,wBAAM;;QAoBA;YACI;IACR,wBAAwB;;;;;cClKf;UACH;UACA;UACA;EAEI,YAAA;IAAW,UAAU;IAA0B,SAAS;;EAMpE;EAIA;UAIQ;;;;cCZG,uBAAuB;EACN;EAC2B;EAC3B;EACC;EACuB;EACpB,WAAW;EACX,kBAAkB;UAEjC;UACsB;UACJ;UACX;iBAET;UACP;UACA;UACA;EAER;EAKA;EAIA;UAWQ;EAUC,QAAQ,mBAAmB;EAMpC,WAAW,mBAAmB;UAUtB;UASA;UAKA;UAQA;UAQA;UAOA;UAQA;UAYA;UAQA;UAIA;UAIA;UAWA;SAiCQ,sBAAM;EAmEtB,wBAAM;;QA2BA;YACI;IACR,yBAAyB;;;;;cC1RhB,sBAAsB;SAC1B,sBAAM;EAYb,wBAAM;;QAKA;YACI;IACR,uBAAuB;;;;;cCnBd,mBAAmB;EACF;SAErB,sBAAM;EAYb,wBAAM;;QAKA;YACI;IACR,oBAAoB;;;;;KCjBZ;EACV,aAAa,QAAQ;EACrB,WAAW;EACX,kBAAkB;;iBAOJ,aACd,OAAO,YACP,UAAS,sBACR;iBAmGa,uBACd,OAAO,YACP,UAAS,sBACR;;;cChHU,sBAAsB;EACL;EACA;EACC;EACD;EACwB;UAE5C;SAWQ,sBAAM;EAoDtB,wBAAM;;QAmBA;YACI;IACR,wBAAwB;;;;;cC5Ff,uBAAuB;EACN;EACA;UAEX;UAET;UAMA;UAMA;EAYR,QAAQ,mBAAmB;SAMpB,sBAAM;EAUb,wBAAM;;QAOA;YACI;IACR,yBAAyB"}
|