@fieldia/viewer 0.19.1 → 0.20.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.
Files changed (158) hide show
  1. package/README.md +18 -0
  2. package/bundle/fieldia.ar.js +2 -2
  3. package/bundle/fieldia.ar.js.map +2 -2
  4. package/bundle/fieldia.choice.js +5 -0
  5. package/bundle/fieldia.choice.js.map +7 -0
  6. package/bundle/fieldia.de.js +2 -2
  7. package/bundle/fieldia.de.js.map +2 -2
  8. package/bundle/fieldia.filters.js +5 -0
  9. package/bundle/fieldia.filters.js.map +7 -0
  10. package/bundle/fieldia.fr.js +2 -2
  11. package/bundle/fieldia.fr.js.map +2 -2
  12. package/bundle/fieldia.head.js +5 -0
  13. package/bundle/fieldia.head.js.map +7 -0
  14. package/bundle/fieldia.js +44 -44
  15. package/bundle/fieldia.js.map +4 -4
  16. package/bundle/fieldia.path.js +5 -0
  17. package/bundle/fieldia.path.js.map +7 -0
  18. package/bundle/fieldia.text.js +24 -0
  19. package/bundle/fieldia.text.js.map +7 -0
  20. package/package.json +7 -3
  21. package/src/index.d.mts +2 -1
  22. package/src/index.d.ts +2 -1
  23. package/src/index.js +6 -1
  24. package/src/index.js.map +1 -1
  25. package/src/index.mjs +1 -0
  26. package/src/index.mjs.map +1 -1
  27. package/src/lib/button-parts.d.mts +30 -0
  28. package/src/lib/button-parts.d.ts +30 -0
  29. package/src/lib/button-parts.js +24 -0
  30. package/src/lib/button-parts.js.map +1 -0
  31. package/src/lib/button-parts.mjs +18 -0
  32. package/src/lib/button-parts.mjs.map +1 -0
  33. package/src/lib/dialog-window.d.mts +11 -0
  34. package/src/lib/dialog-window.d.ts +11 -0
  35. package/src/lib/dialog-window.js +86 -0
  36. package/src/lib/dialog-window.js.map +1 -0
  37. package/src/lib/dialog-window.mjs +82 -0
  38. package/src/lib/dialog-window.mjs.map +1 -0
  39. package/src/lib/dialog.d.mts +14 -3
  40. package/src/lib/dialog.d.ts +14 -3
  41. package/src/lib/dialog.js +84 -14
  42. package/src/lib/dialog.js.map +1 -1
  43. package/src/lib/dialog.mjs +85 -15
  44. package/src/lib/dialog.mjs.map +1 -1
  45. package/src/lib/filter-bar.d.mts +39 -0
  46. package/src/lib/filter-bar.d.ts +39 -0
  47. package/src/lib/filter-bar.js +290 -0
  48. package/src/lib/filter-bar.js.map +1 -0
  49. package/src/lib/filter-bar.mjs +287 -0
  50. package/src/lib/filter-bar.mjs.map +1 -0
  51. package/src/lib/filter-styles.d.mts +4 -0
  52. package/src/lib/filter-styles.d.ts +4 -0
  53. package/src/lib/filter-styles.js +63 -0
  54. package/src/lib/filter-styles.js.map +1 -0
  55. package/src/lib/filter-styles.mjs +59 -0
  56. package/src/lib/filter-styles.mjs.map +1 -0
  57. package/src/lib/filters-part.d.mts +8 -0
  58. package/src/lib/filters-part.d.ts +8 -0
  59. package/src/lib/filters-part.js +14 -0
  60. package/src/lib/filters-part.js.map +1 -0
  61. package/src/lib/filters-part.mjs +9 -0
  62. package/src/lib/filters-part.mjs.map +1 -0
  63. package/src/lib/group-styles.d.mts +9 -0
  64. package/src/lib/group-styles.d.ts +9 -0
  65. package/src/lib/group-styles.js +64 -0
  66. package/src/lib/group-styles.js.map +1 -0
  67. package/src/lib/group-styles.mjs +60 -0
  68. package/src/lib/group-styles.mjs.map +1 -0
  69. package/src/lib/head-part.d.mts +15 -0
  70. package/src/lib/head-part.d.ts +15 -0
  71. package/src/lib/head-part.js +26 -0
  72. package/src/lib/head-part.js.map +1 -0
  73. package/src/lib/head-part.mjs +16 -0
  74. package/src/lib/head-part.mjs.map +1 -0
  75. package/src/lib/head-styles.d.mts +28 -0
  76. package/src/lib/head-styles.d.ts +28 -0
  77. package/src/lib/head-styles.js +320 -0
  78. package/src/lib/head-styles.js.map +1 -0
  79. package/src/lib/head-styles.mjs +316 -0
  80. package/src/lib/head-styles.mjs.map +1 -0
  81. package/src/lib/labels.d.mts +29 -0
  82. package/src/lib/labels.d.ts +29 -0
  83. package/src/lib/labels.js +16 -0
  84. package/src/lib/labels.js.map +1 -1
  85. package/src/lib/labels.mjs +16 -0
  86. package/src/lib/labels.mjs.map +1 -1
  87. package/src/lib/list-styles.d.mts +1 -1
  88. package/src/lib/list-styles.d.ts +1 -1
  89. package/src/lib/list-styles.js +88 -1
  90. package/src/lib/list-styles.js.map +1 -1
  91. package/src/lib/list-styles.mjs +88 -1
  92. package/src/lib/list-styles.mjs.map +1 -1
  93. package/src/lib/list.d.mts +16 -1
  94. package/src/lib/list.d.ts +16 -1
  95. package/src/lib/list.js +281 -51
  96. package/src/lib/list.js.map +1 -1
  97. package/src/lib/list.mjs +282 -52
  98. package/src/lib/list.mjs.map +1 -1
  99. package/src/lib/locales/ar.js +16 -0
  100. package/src/lib/locales/ar.js.map +1 -1
  101. package/src/lib/locales/ar.mjs +16 -0
  102. package/src/lib/locales/ar.mjs.map +1 -1
  103. package/src/lib/locales/de.js +16 -0
  104. package/src/lib/locales/de.js.map +1 -1
  105. package/src/lib/locales/de.mjs +16 -0
  106. package/src/lib/locales/de.mjs.map +1 -1
  107. package/src/lib/locales/fr.js +16 -0
  108. package/src/lib/locales/fr.js.map +1 -1
  109. package/src/lib/locales/fr.mjs +16 -0
  110. package/src/lib/locales/fr.mjs.map +1 -1
  111. package/src/lib/look.d.mts +1 -1
  112. package/src/lib/look.d.ts +1 -1
  113. package/src/lib/look.js +3 -0
  114. package/src/lib/look.js.map +1 -1
  115. package/src/lib/look.mjs +3 -0
  116. package/src/lib/look.mjs.map +1 -1
  117. package/src/lib/record-bar.d.mts +10 -1
  118. package/src/lib/record-bar.d.ts +10 -1
  119. package/src/lib/record-bar.js +15 -7
  120. package/src/lib/record-bar.js.map +1 -1
  121. package/src/lib/record-bar.mjs +14 -7
  122. package/src/lib/record-bar.mjs.map +1 -1
  123. package/src/lib/record-head.d.mts +58 -0
  124. package/src/lib/record-head.d.ts +58 -0
  125. package/src/lib/record-head.js +245 -0
  126. package/src/lib/record-head.js.map +1 -0
  127. package/src/lib/record-head.mjs +240 -0
  128. package/src/lib/record-head.mjs.map +1 -0
  129. package/src/lib/rich-button.d.mts +12 -0
  130. package/src/lib/rich-button.d.ts +12 -0
  131. package/src/lib/rich-button.js +186 -0
  132. package/src/lib/rich-button.js.map +1 -0
  133. package/src/lib/rich-button.mjs +183 -0
  134. package/src/lib/rich-button.mjs.map +1 -0
  135. package/src/lib/section-head.d.mts +26 -0
  136. package/src/lib/section-head.d.ts +26 -0
  137. package/src/lib/section-head.js +65 -0
  138. package/src/lib/section-head.js.map +1 -0
  139. package/src/lib/section-head.mjs +56 -0
  140. package/src/lib/section-head.mjs.map +1 -0
  141. package/src/lib/section-tools.d.mts +12 -0
  142. package/src/lib/section-tools.d.ts +12 -0
  143. package/src/lib/section-tools.js +124 -0
  144. package/src/lib/section-tools.js.map +1 -0
  145. package/src/lib/section-tools.mjs +121 -0
  146. package/src/lib/section-tools.mjs.map +1 -0
  147. package/src/lib/viewer-parts.d.mts +33 -0
  148. package/src/lib/viewer-parts.d.ts +33 -0
  149. package/src/lib/viewer-parts.js +75 -0
  150. package/src/lib/viewer-parts.js.map +1 -0
  151. package/src/lib/viewer-parts.mjs +70 -0
  152. package/src/lib/viewer-parts.mjs.map +1 -0
  153. package/src/lib/viewer.d.mts +30 -7
  154. package/src/lib/viewer.d.ts +30 -7
  155. package/src/lib/viewer.js +317 -97
  156. package/src/lib/viewer.js.map +1 -1
  157. package/src/lib/viewer.mjs +319 -99
  158. package/src/lib/viewer.mjs.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-bar.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-bar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,287 @@
1
+ import { suggestions } from '@fieldia/core';
2
+ import { drawIcon } from '@fieldia/widgets';
3
+ import { installFilterStyles } from './filter-styles.mjs';
4
+ /** How long typing rests before the keyword is looked for. */
5
+ const KEYWORD_PAUSE = 250;
6
+ /**
7
+ * A list's filter bar (`search: "fields"`), as a work tracker's backlog has
8
+ * it: "Filter by keyword" looks in the list's search fields; each field of
9
+ * `filterFields` has a list of its values to tick, its button in muted words
10
+ * until some are ticked, then the words ticked; × clears every filter; the
11
+ * gear chooses which fields the bar offers, each by its own name where the
12
+ * page gives one (`filterLabels`). A field's values are its
13
+ * choices, yes and no, or those its records hold (a link's, through the data
14
+ * source). Keys: ↓ opens a list, the arrows move, Space ticks, Escape closes.
15
+ */
16
+ export function filterBar(context) {
17
+ const { page, node, doc, el, labels, fill, uid } = context;
18
+ installFilterStyles(doc);
19
+ const fields = (node.filterFields ?? []).filter((name) => page.fields[name]);
20
+ const icon = (name, className) => {
21
+ const drawn = drawIcon(doc, name, context.icons);
22
+ drawn?.setAttribute('aria-hidden', 'true');
23
+ if (className)
24
+ drawn?.classList.add(className);
25
+ return drawn ? [drawn] : [];
26
+ };
27
+ // ---- what is asked for: a keyword, each field's values ticked, and anything else the list started with ----
28
+ let keyword = '';
29
+ const picks = new Map();
30
+ /** Searches this bar does not draw (the list's default filters, a map's area): they apply until cleared. */
31
+ let others = [];
32
+ for (const facet of context.facets) {
33
+ const own = facet.kind === 'field' && fields.includes(facet.field) && facet.values.every((v) => v.op === '=' || v.op === 'contains');
34
+ if (own)
35
+ picks.set(facet.field, facet.values.map((v) => ({ value: v.value, label: v.label })));
36
+ else
37
+ others.push(facet);
38
+ }
39
+ const opFor = (field) => (page.fields[field]?.type === 'many2many' ? 'contains' : '=');
40
+ /** The keyword in any of the search fields: their words, a choice by its label, a number as it is. */
41
+ const keywordFilter = (text) => {
42
+ const found = suggestions(text, page, node).map((s) => ({ field: s.field, op: s.op, value: s.value }));
43
+ return [{ any: found }];
44
+ };
45
+ const facets = () => [
46
+ ...others,
47
+ ...fields.flatMap((field) => {
48
+ const ticked = picks.get(field) ?? [];
49
+ return ticked.length ? [{ kind: 'field', field, label: page.fields[field].label, values: ticked.map((p) => ({ op: opFor(field), value: p.value, label: p.label })) }] : [];
50
+ }),
51
+ ...(keyword ? [{ kind: 'custom', label: keyword, filter: keywordFilter(keyword) }] : []),
52
+ ];
53
+ const changed = () => {
54
+ drawButtons();
55
+ context.onChange(facets());
56
+ };
57
+ // ---- the keyword ----------------------------------------------------------------------------------
58
+ const input = el('input', { type: 'search', class: 'fd-filter-keyword', placeholder: labels.filterByKeyword, 'aria-label': labels.filterByKeyword, autocomplete: 'off', enterkeyhint: 'search' });
59
+ let pause = null;
60
+ const takeKeyword = () => {
61
+ if (pause)
62
+ clearTimeout(pause);
63
+ pause = null;
64
+ const next = input.value.trim();
65
+ if (next === keyword)
66
+ return;
67
+ keyword = next;
68
+ changed();
69
+ };
70
+ input.addEventListener('input', () => {
71
+ if (pause)
72
+ clearTimeout(pause);
73
+ pause = setTimeout(takeKeyword, KEYWORD_PAUSE);
74
+ });
75
+ input.addEventListener('keydown', (event) => {
76
+ if (event.isComposing)
77
+ return;
78
+ if (event.key === 'Enter') {
79
+ // Never the form's Enter: a list has nothing to send.
80
+ event.preventDefault();
81
+ takeKeyword();
82
+ }
83
+ else if (event.key === 'Escape' && input.value) {
84
+ event.preventDefault();
85
+ event.stopPropagation();
86
+ input.value = '';
87
+ takeKeyword();
88
+ }
89
+ });
90
+ // ---- a list of values to tick, for each field ---------------------------------------------------------
91
+ /** Which fields the bar offers: all unless the person took some away with the gear. */
92
+ const shownKey = `filters:${page.id}:${node.id}`;
93
+ const hiddenFields = () => {
94
+ const kept = context.preferences.get(shownKey);
95
+ return Array.isArray(kept) ? kept.filter((name) => typeof name === 'string') : [];
96
+ };
97
+ /** A field's values to tick: its choices, yes and no, or those its records hold. */
98
+ async function valuesOf(field) {
99
+ const def = page.fields[field];
100
+ if (def.type === 'selection')
101
+ return def.options.map((option) => ({ value: option.value, label: option.label }));
102
+ if (def.type === 'boolean')
103
+ return [{ value: true, label: labels.yes }, { value: false, label: labels.no }];
104
+ const source = context.dataSource;
105
+ if (def.type === 'many2many') {
106
+ const found = (await source?.search?.({ model: def.relation, query: '', limit: 100 })) ?? [];
107
+ return found.map((record) => ({ value: record.id, label: record.label }));
108
+ }
109
+ const groups = (await source?.groups?.({ model: context.model, field, filter: context.fixedFilter() })) ?? [];
110
+ return groups.filter((group) => group.value !== null && group.label !== '').map((group) => ({ value: group.value, label: group.label || String(group.value) }));
111
+ }
112
+ const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
113
+ const openMenus = [];
114
+ /** Close every list but `keep`. */
115
+ const closeOthers = (keep) => {
116
+ for (const close of openMenus)
117
+ if (close !== keep)
118
+ close();
119
+ };
120
+ function menuFor(button, menu, load) {
121
+ const items = () => [...menu.querySelectorAll('[role^="menuitem"]')];
122
+ const close = (focusBack = false) => {
123
+ if (menu.hidden)
124
+ return;
125
+ menu.hidden = true;
126
+ button.setAttribute('aria-expanded', 'false');
127
+ if (focusBack)
128
+ button.focus();
129
+ };
130
+ const open = async (at = 'checked') => {
131
+ closeOthers(closer);
132
+ menu.hidden = false;
133
+ button.setAttribute('aria-expanded', 'true');
134
+ await load();
135
+ if (menu.hidden)
136
+ return;
137
+ const all = items();
138
+ const first = at === 'last' ? all[all.length - 1] : at === 'checked' ? (all.find((item) => item.getAttribute('aria-checked') === 'true') ?? all[0]) : all[0];
139
+ first?.focus();
140
+ };
141
+ const closer = () => close();
142
+ openMenus.push(closer);
143
+ button.addEventListener('click', () => (menu.hidden ? void open() : close()));
144
+ button.addEventListener('keydown', (event) => {
145
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
146
+ event.preventDefault();
147
+ void open(event.key === 'ArrowUp' ? 'last' : 'first');
148
+ }
149
+ });
150
+ menu.addEventListener('keydown', (event) => {
151
+ const all = items();
152
+ const at = all.indexOf(doc.activeElement);
153
+ const to = { ArrowDown: at + 1, ArrowUp: at - 1, Home: 0, End: all.length - 1 }[event.key];
154
+ if (to !== undefined) {
155
+ event.preventDefault();
156
+ all[(to + all.length) % all.length]?.focus();
157
+ }
158
+ else if (event.key === ' ' || event.key === 'Enter') {
159
+ event.preventDefault();
160
+ doc.activeElement?.click();
161
+ }
162
+ else if (event.key === 'Escape') {
163
+ event.preventDefault();
164
+ // Only the list closes: not a dialog the list is in.
165
+ event.stopPropagation();
166
+ close(true);
167
+ }
168
+ else if (event.key === 'Tab')
169
+ close();
170
+ });
171
+ return { close };
172
+ }
173
+ /** A row of the list: a box ticked or not, and the value's words. */
174
+ const tickRow = (text, checked, onClick) => {
175
+ const row = el('div', { role: 'menuitemcheckbox', class: 'fd-filter-option', tabindex: '-1', 'aria-checked': String(checked) }, el('span', { class: 'fd-filter-box', 'aria-hidden': 'true' }, ...icon('check')), el('span', { class: 'fd-filter-option-text' }, text));
176
+ row.addEventListener('click', onClick);
177
+ return row;
178
+ };
179
+ const dropdowns = fields.map((field) => {
180
+ // Its own name where the page gives one ("Iteration" for Iteration Path): on its button, its list and the gear's.
181
+ const def = { ...page.fields[field], label: node.filterLabels?.[field] ?? page.fields[field].label };
182
+ const menuId = uid(`${node.id}-filter-${field}`);
183
+ const words = el('span', { class: 'fd-filter-words' });
184
+ const button = el('button', { type: 'button', class: 'fd-filter-pick', 'data-field': field, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': menuId }, words, ...icon('chevron-down', 'fd-filter-chevron'));
185
+ const menu = el('div', { class: 'fd-filter-menu', role: 'menu', id: menuId, 'aria-label': fill(labels.filterNamed, { label: def.label }), hidden: '' });
186
+ let known = [];
187
+ const draw = () => {
188
+ const ticked = picks.get(field) ?? [];
189
+ // What is ticked first, though the records no longer hold it; then the rest, in their order.
190
+ const all = [...ticked.filter((p) => !known.some((k) => same(k.value, p.value))), ...known];
191
+ menu.replaceChildren(...all.map((option) => {
192
+ const on = ticked.some((p) => same(p.value, option.value));
193
+ return tickRow(option.label, on, () => {
194
+ const now = picks.get(field) ?? [];
195
+ const next = on ? now.filter((p) => !same(p.value, option.value)) : [...now, option];
196
+ if (next.length)
197
+ picks.set(field, next);
198
+ else
199
+ picks.delete(field);
200
+ const focused = [...menu.children].indexOf(doc.activeElement);
201
+ changed();
202
+ draw();
203
+ menu.children[focused]?.focus();
204
+ });
205
+ }));
206
+ };
207
+ const { close } = menuFor(button, menu, async () => {
208
+ known = await valuesOf(field);
209
+ draw();
210
+ });
211
+ const holder = el('span', { class: 'fd-filter-field', 'data-field': field }, button, menu);
212
+ return { field, def, button, words, holder, close };
213
+ });
214
+ function drawButtons() {
215
+ const hidden = new Set(hiddenFields());
216
+ for (const { field, def, button, words, holder } of dropdowns) {
217
+ holder.hidden = hidden.has(field);
218
+ const ticked = picks.get(field) ?? [];
219
+ button.toggleAttribute('data-picked', ticked.length > 0);
220
+ // The field's name read out before what is ticked, which alone shows: "Work Item Type: Bug".
221
+ words.replaceChildren(...(ticked.length ? [el('span', { class: 'fd-sr-only' }, `${def.label}: `), ticked.map((p) => p.label).join(', ')] : [def.label]));
222
+ }
223
+ clear.hidden = !keyword && !others.length && ![...picks.values()].some((p) => p.length);
224
+ }
225
+ // ---- the gear: which fields the bar offers ------------------------------------------------------------
226
+ const settingsId = uid(`${node.id}-filter-settings`);
227
+ const gear = el('button', { type: 'button', class: 'fd-filter-tool', 'aria-label': labels.filterSettings, title: labels.filterSettings, 'aria-haspopup': 'menu', 'aria-expanded': 'false', 'aria-controls': settingsId }, ...icon('gear'));
228
+ const settings = el('div', { class: 'fd-filter-menu fd-filter-settings', role: 'menu', id: settingsId, 'aria-label': labels.filterSettings, hidden: '' });
229
+ const drawSettings = () => {
230
+ const hidden = new Set(hiddenFields());
231
+ settings.replaceChildren(...dropdowns.map(({ field, def }) => tickRow(def.label, !hidden.has(field), () => {
232
+ const next = hidden.has(field) ? [...hidden].filter((f) => f !== field) : [...hidden, field];
233
+ context.preferences.set(shownKey, next);
234
+ // A field taken away from the bar no longer filters the list.
235
+ if (!hidden.has(field) && picks.delete(field))
236
+ changed();
237
+ else
238
+ drawButtons();
239
+ const focused = [...settings.children].indexOf(doc.activeElement);
240
+ drawSettings();
241
+ settings.children[focused]?.focus();
242
+ })));
243
+ };
244
+ const gearMenu = menuFor(gear, settings, drawSettings);
245
+ const gearHolder = el('span', { class: 'fd-filter-field' }, gear, settings);
246
+ gearHolder.hidden = dropdowns.length === 0;
247
+ // ---- × clears every filter ------------------------------------------------------------------------------
248
+ const clear = el('button', { type: 'button', class: 'fd-filter-tool fd-filter-clear', 'aria-label': labels.clearFilters, title: labels.clearFilters }, ...icon('close'));
249
+ clear.addEventListener('click', () => {
250
+ keyword = '';
251
+ input.value = '';
252
+ picks.clear();
253
+ others = [];
254
+ changed();
255
+ input.focus();
256
+ });
257
+ const element = el('div', { class: 'fd-filter-bar', role: 'search', 'data-node': `${node.id}-filters` }, el('label', { class: 'fd-filter-search' }, ...icon('filter-lines', 'fd-filter-icon'), input), el('div', { class: 'fd-filter-fields' }, ...dropdowns.map((d) => d.holder), gearHolder, clear));
258
+ // A press anywhere else closes an open list.
259
+ const outside = (event) => {
260
+ if (!element.contains(event.target))
261
+ closeOthers();
262
+ };
263
+ doc.addEventListener('pointerdown', outside);
264
+ element.addEventListener('focusout', (event) => {
265
+ if (!element.contains(event.relatedTarget) && event.relatedTarget)
266
+ closeOthers();
267
+ });
268
+ drawButtons();
269
+ return {
270
+ element,
271
+ /** A search put in from outside (a map's "In this area"): it applies with the rest, one with the same words in its place. */
272
+ add(facet) {
273
+ const words = facet.kind === 'custom' ? facet.label : null;
274
+ others = [...others.filter((f) => !(words !== null && f.kind === 'custom' && f.label === words)), facet];
275
+ changed();
276
+ },
277
+ destroy() {
278
+ if (pause)
279
+ clearTimeout(pause);
280
+ doc.removeEventListener('pointerdown', outside);
281
+ gearMenu.close();
282
+ for (const dropdown of dropdowns)
283
+ dropdown.close();
284
+ },
285
+ };
286
+ }
287
+ //# sourceMappingURL=filter-bar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-bar.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA8F,MAAM,eAAe,CAAC;AACxI,OAAO,EAAE,QAAQ,EAAsC,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AA0BtD,8DAA8D;AAC9D,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC3D,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,SAAkB,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,EAAE,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,SAAS;YAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,8GAA8G;IAE9G,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,4GAA4G;IAC5G,IAAI,MAAM,GAAY,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QACrI,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;YAC1F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/F,sGAAsG;IACtG,MAAM,aAAa,GAAG,CAAC,IAAY,EAAoB,EAAE;QACvD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvG,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC;QAC5B,GAAG,MAAM;QACT,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAgB,EAAE;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7K,CAAC,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClG,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,sGAAsG;IAEtG,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,YAAY,EAAE,MAAM,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClM,IAAI,KAAK,GAAyC,IAAI,CAAC;IACvD,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO;QAC7B,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACnC,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO;QAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC1B,sDAAsD;YACtD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,WAAW,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACjB,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0GAA0G;IAE1G,uFAAuF;IACvF,MAAM,QAAQ,GAAG,WAAW,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,GAAa,EAAE;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC,CAAC;IAEF,oFAAoF;IACpF,KAAK,UAAU,QAAQ,CAAC,KAAa;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjH,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;QAClC,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7F,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9G,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClK,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAY,EAAE,CAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,mCAAmC;IACnC,MAAM,WAAW,GAAG,CAAC,IAAiB,EAAE,EAAE;QACxC,KAAK,MAAM,KAAK,IAAI,SAAS;YAAE,IAAI,KAAK,KAAK,IAAI;gBAAE,KAAK,EAAE,CAAC;IAC7D,CAAC,CAAC;IAEF,SAAS,OAAO,CAAC,MAAyB,EAAE,IAAiB,EAAE,IAAgC;QAC7F,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAc,oBAAoB,CAAC,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,SAAS;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,EAAE,KAAmC,SAAS,EAAE,EAAE;YAClE,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,IAAI,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7J,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACzC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC;YACpB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAA4B,CAAC,CAAC;YACzD,MAAM,EAAE,GAAI,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAA6B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvH,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACtB,GAAG,CAAC,aAAoC,EAAE,KAAK,EAAE,CAAC;YACrD,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,qDAAqD;gBACrD,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;gBAAE,KAAK,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,qEAAqE;IACrE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,OAAgB,EAAE,OAAmB,EAAE,EAAE;QACtE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACvQ,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACrC,kHAAkH;QAClH,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACrG,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC/N,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACxJ,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,6FAA6F;YAC7F,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,eAAe,CAClB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE;oBACpC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;oBACrF,IAAI,IAAI,CAAC,MAAM;wBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;wBACnC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAwB,CAAC,CAAC;oBACzE,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,CAAC;oBACN,IAAI,CAAC,QAAQ,CAAC,OAAO,CAA6B,EAAE,KAAK,EAAE,CAAC;gBAC/D,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;YACjD,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3F,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,SAAS,WAAW;QAClB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QACvC,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC9D,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzD,6FAA6F;YAC7F,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3J,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1F,CAAC;IAED,0GAA0G;IAE1G,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3O,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1J,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,eAAe,CACtB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7F,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxC,8DAA8D;YAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACpD,WAAW,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,aAAwB,CAAC,CAAC;YAC7E,YAAY,EAAE,CAAC;YACd,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAA6B,EAAE,KAAK,EAAE,CAAC;QACnE,CAAC,CAAC,CACH,CACF,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IAE3C,4GAA4G;IAE5G,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gCAAgC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACzK,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACnC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,GAAG,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;QACV,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,EAAE,CAChB,KAAK,EACL,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,UAAU,EAAE,EAC7E,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE,KAAK,CAAC,EAC5F,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAC/F,CAAC;IACF,6CAA6C;IAC7C,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;QAC/B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;YAAE,WAAW,EAAE,CAAC;IAC7D,CAAC,CAAC;IACF,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,IAAI,KAAK,CAAC,aAAa;YAAE,WAAW,EAAE,CAAC;IAClG,CAAC,CAAC,CAAC;IACH,WAAW,EAAE,CAAC;IAEd,OAAO;QACL,OAAO;QACP,6HAA6H;QAC7H,GAAG,CAAC,KAAY;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzG,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO;YACL,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
2
+ export declare const FILTER_CSS = "\n/* The filter bar (search \"fields\"): a card with a keyword box at its start, each field's list of values at its end, then the gear and \u00D7. */\n.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }\n.fd-filter-icon { width: 16px; height: 16px; flex: none; }\n.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }\n.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }\n.fd-filter-keyword::-webkit-search-cancel-button { display: none; }\n.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }\n.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }\n.fd-filter-field { position: relative; display: inline-flex; }\n.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }\n.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }\n.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }\n.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }\n.fd-filter-clear { color: var(--fd-text); }\n.fd-filter-tool svg { width: 16px; height: 16px; }\n.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded=\"true\"], .fd-filter-tool[aria-expanded=\"true\"] { background: var(--fd-page); }\n.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }\n.fd-filter-option:hover { background: var(--fd-page); }\n.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }\n.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }\n.fd-filter-box svg { width: 12px; height: 12px; }\n.fd-filter-option[aria-checked=\"true\"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }\n.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }\n/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,\n a pixel above their middle; the settings' small light cog 24px after the last chevron, the \u00D7 12px wide further on\n (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-fields { gap: 6px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-chevron {\n position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);\n}\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear { margin-inline-start: 4px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear svg { width: 19px; height: 19px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }\n";
3
+ /** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
4
+ export declare function installFilterStyles(doc: Document): void;
@@ -0,0 +1,4 @@
1
+ /** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
2
+ export declare const FILTER_CSS = "\n/* The filter bar (search \"fields\"): a card with a keyword box at its start, each field's list of values at its end, then the gear and \u00D7. */\n.fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }\n.fd-filter-icon { width: 16px; height: 16px; flex: none; }\n.fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }\n.fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }\n.fd-filter-keyword::-webkit-search-cancel-button { display: none; }\n.fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }\n.fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }\n.fd-filter-field { position: relative; display: inline-flex; }\n.fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }\n.fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }\n.fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }\n.fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }\n.fd-filter-clear { color: var(--fd-text); }\n.fd-filter-tool svg { width: 16px; height: 16px; }\n.fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded=\"true\"], .fd-filter-tool[aria-expanded=\"true\"] { background: var(--fd-page); }\n.fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n.fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }\n.fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }\n.fd-filter-option:hover { background: var(--fd-page); }\n.fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }\n.fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }\n.fd-filter-box svg { width: 12px; height: 12px; }\n.fd-filter-option[aria-checked=\"true\"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }\n.fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n/* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }\n/* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,\n a pixel above their middle; the settings' small light cog 24px after the last chevron, the \u00D7 12px wide further on\n (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-fields { gap: 6px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-chevron {\n position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);\n}\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear { margin-inline-start: 4px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-filter-clear svg { width: 19px; height: 19px; }\n.fd-form[data-fd-theme=\"fluent\"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }\n";
3
+ /** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
4
+ export declare function installFilterStyles(doc: Document): void;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FILTER_CSS = void 0;
4
+ exports.installFilterStyles = installFilterStyles;
5
+ /** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
6
+ exports.FILTER_CSS = `
7
+ /* The filter bar (search "fields"): a card with a keyword box at its start, each field's list of values at its end, then the gear and ×. */
8
+ .fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
9
+ .fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }
10
+ .fd-filter-icon { width: 16px; height: 16px; flex: none; }
11
+ .fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }
12
+ .fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }
13
+ .fd-filter-keyword::-webkit-search-cancel-button { display: none; }
14
+ .fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }
15
+ .fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }
16
+ .fd-filter-field { position: relative; display: inline-flex; }
17
+ .fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }
18
+ .fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }
19
+ .fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
20
+ .fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }
21
+ .fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }
22
+ .fd-filter-clear { color: var(--fd-text); }
23
+ .fd-filter-tool svg { width: 16px; height: 16px; }
24
+ .fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded="true"], .fd-filter-tool[aria-expanded="true"] { background: var(--fd-page); }
25
+ .fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }
26
+ .fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
27
+ .fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }
28
+ .fd-filter-option:hover { background: var(--fd-page); }
29
+ .fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }
30
+ .fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }
31
+ .fd-filter-box svg { width: 12px; height: 12px; }
32
+ .fd-filter-option[aria-checked="true"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }
33
+ .fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
34
+ /* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */
35
+ .fd-form[data-fd-theme="fluent"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }
36
+ .fd-form[data-fd-theme="fluent"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }
37
+ /* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,
38
+ a pixel above their middle; the settings' small light cog 24px after the last chevron, the × 12px wide further on
39
+ (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */
40
+ .fd-form[data-fd-theme="fluent"] .fd-filter-fields { gap: 6px; }
41
+ .fd-form[data-fd-theme="fluent"] .fd-filter-chevron {
42
+ position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);
43
+ }
44
+ .fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }
45
+ .fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }
46
+ .fd-form[data-fd-theme="fluent"] .fd-filter-clear { margin-inline-start: 4px; }
47
+ .fd-form[data-fd-theme="fluent"] .fd-filter-clear svg { width: 19px; height: 19px; }
48
+ .fd-form[data-fd-theme="fluent"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }
49
+ `;
50
+ /** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
51
+ function installFilterStyles(doc) {
52
+ if (doc.getElementById('fd-filter-styles'))
53
+ return;
54
+ const style = doc.createElement('style');
55
+ style.id = 'fd-filter-styles';
56
+ style.textContent = exports.FILTER_CSS;
57
+ const list = doc.getElementById('fd-list-styles');
58
+ if (list)
59
+ list.after(style);
60
+ else
61
+ doc.head.append(style);
62
+ }
63
+ //# sourceMappingURL=filter-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-styles.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-styles.ts"],"names":[],"mappings":";;;AA+CA,kDAQC;AAvDD,0HAA0H;AAC7G,QAAA,UAAU,GAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnC,CAAC;AAEF,oGAAoG;AACpG,SAAgB,mBAAmB,CAAC,GAAa;IAC/C,IAAI,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC9B,KAAK,CAAC,WAAW,GAAG,kBAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;QACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,59 @@
1
+ /** The filter bar (filter-bar.ts): the filters part's sheet, put after the list's own the first time a list draws one. */
2
+ export const FILTER_CSS = /* css */ `
3
+ /* The filter bar (search "fields"): a card with a keyword box at its start, each field's list of values at its end, then the gear and ×. */
4
+ .fd-filter-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; flex: 1 1 100%; min-width: 0; min-height: 45px; box-sizing: border-box; padding: 6px 8px 6px 16px; padding-inline: 16px 8px; background: var(--fd-surface); border-radius: var(--fd-radius); box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
5
+ .fd-filter-search { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--fd-muted); }
6
+ .fd-filter-icon { width: 16px; height: 16px; flex: none; }
7
+ .fd-filter-keyword { flex: 1; min-width: 0; border: 0; outline: none; background: none; font: inherit; font-size: 14px; color: var(--fd-text); padding: 6px 0; }
8
+ .fd-filter-keyword::placeholder { color: var(--fd-muted); opacity: 1; }
9
+ .fd-filter-keyword::-webkit-search-cancel-button { display: none; }
10
+ .fd-filter-search:focus-within { box-shadow: inset 0 -2px 0 var(--fd-focus); }
11
+ .fd-filter-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-inline-start: auto; }
12
+ .fd-filter-field { position: relative; display: inline-flex; }
13
+ .fd-filter-pick { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; max-width: 220px; min-height: 32px; padding-inline: 8px; border-radius: 2px; font-size: 14px; color: var(--fd-muted); }
14
+ .fd-filter-pick[data-picked] { color: var(--fd-text); font-weight: 600; }
15
+ .fd-filter-words { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
16
+ .fd-filter-chevron { width: 16px; height: 16px; flex: none; color: var(--fd-muted); }
17
+ .fd-filter-tool { all: unset; box-sizing: border-box; cursor: pointer; display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 2px; color: var(--fd-muted); }
18
+ .fd-filter-clear { color: var(--fd-text); }
19
+ .fd-filter-tool svg { width: 16px; height: 16px; }
20
+ .fd-filter-pick:hover, .fd-filter-tool:hover, .fd-filter-pick[aria-expanded="true"], .fd-filter-tool[aria-expanded="true"] { background: var(--fd-page); }
21
+ .fd-filter-pick:focus-visible, .fd-filter-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }
22
+ .fd-filter-menu { position: absolute; z-index: 30; inset-inline-end: 0; top: calc(100% + 4px); box-sizing: border-box; min-width: 200px; max-width: min(320px, 90vw); max-height: 320px; overflow: auto; padding-block: 4px; background: var(--fd-surface); border-radius: 4px; box-shadow: 0 3.2px 7.2px rgba(0, 0, 0, 0.132), 0 0.6px 1.8px rgba(0, 0, 0, 0.108); }
23
+ .fd-filter-option { display: flex; align-items: center; gap: 10px; min-height: 32px; padding-inline: 12px; cursor: pointer; font-size: 14px; color: var(--fd-text); outline: none; }
24
+ .fd-filter-option:hover { background: var(--fd-page); }
25
+ .fd-filter-option:focus-visible, .fd-filter-option:focus { background: var(--fd-page); box-shadow: inset 0 0 0 1px var(--fd-focus); }
26
+ .fd-filter-box { display: grid; place-items: center; width: 16px; height: 16px; flex: none; box-sizing: border-box; border: 1px solid var(--fd-border-strong); border-radius: 2px; color: transparent; }
27
+ .fd-filter-box svg { width: 12px; height: 12px; }
28
+ .fd-filter-option[aria-checked="true"] .fd-filter-box { background: var(--fd-accent); border-color: var(--fd-accent); color: var(--fd-accent-text, #fff); }
29
+ .fd-filter-option-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
30
+ /* Fluent's filter bar: a card 50px tall, its words a little above the middle, 16px over the table's card (measured). */
31
+ .fd-form[data-fd-theme="fluent"] .fd-list:has(> .fd-list-bar > .fd-filter-bar) { row-gap: 16px; }
32
+ .fd-form[data-fd-theme="fluent"] .fd-filter-bar { min-height: 50px; padding-block: 7px 5px; padding-inline-end: 10px; }
33
+ /* Its fields 28px apart, word to word, each with a chevron 12px by 7 in a one-pixel line a shade lighter than the words,
34
+ a pixel above their middle; the settings' small light cog 24px after the last chevron, the × 12px wide further on
35
+ (measured on 08_18: the chevrons #8a8a8a, Tags' ending at 1790, the cog at 1815). */
36
+ .fd-form[data-fd-theme="fluent"] .fd-filter-fields { gap: 6px; }
37
+ .fd-form[data-fd-theme="fluent"] .fd-filter-chevron {
38
+ position: relative; inset-block-start: -1px; width: 22px; height: 22px; margin-inline: -3px -1px; stroke-width: 1.1; color: var(--fd-muted);
39
+ }
40
+ .fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) { margin-inline-start: -5px; }
41
+ .fd-form[data-fd-theme="fluent"] .fd-filter-tool:not(.fd-filter-clear) svg { width: 13px; height: 13px; }
42
+ .fd-form[data-fd-theme="fluent"] .fd-filter-clear { margin-inline-start: 4px; }
43
+ .fd-form[data-fd-theme="fluent"] .fd-filter-clear svg { width: 19px; height: 19px; }
44
+ .fd-form[data-fd-theme="fluent"] .fd-list-scroll { border: 0; border-radius: 4px; box-shadow: 0 1.6px 3.6px rgba(0, 0, 0, 0.132), 0 0.3px 0.9px rgba(0, 0, 0, 0.108); }
45
+ `;
46
+ /** The sheet in a document, once: after the list's own (list-styles.ts), whose rules it adds to. */
47
+ export function installFilterStyles(doc) {
48
+ if (doc.getElementById('fd-filter-styles'))
49
+ return;
50
+ const style = doc.createElement('style');
51
+ style.id = 'fd-filter-styles';
52
+ style.textContent = FILTER_CSS;
53
+ const list = doc.getElementById('fd-list-styles');
54
+ if (list)
55
+ list.after(style);
56
+ else
57
+ doc.head.append(style);
58
+ }
59
+ //# sourceMappingURL=filter-styles.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-styles.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filter-styles.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CnC,CAAC;AAEF,oGAAoG;AACpG,MAAM,UAAU,mBAAmB,CAAC,GAAa;IAC/C,IAAI,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAAE,OAAO;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;IAC9B,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;QACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
3
+ * keyword, each field's values to tick, the gear choosing the fields, × that
4
+ * clears them — and its stylesheet. Loaded the first time a list draws one,
5
+ * through `filtersPart`; the viewer waits for it before it draws that list.
6
+ */
7
+ export { filterBar } from './filter-bar.mjs';
8
+ export { installFilterStyles } from './filter-styles.mjs';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
3
+ * keyword, each field's values to tick, the gear choosing the fields, × that
4
+ * clears them — and its stylesheet. Loaded the first time a list draws one,
5
+ * through `filtersPart`; the viewer waits for it before it draws that list.
6
+ */
7
+ export { filterBar } from './filter-bar';
8
+ export { installFilterStyles } from './filter-styles';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installFilterStyles = exports.filterBar = void 0;
4
+ /**
5
+ * The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
6
+ * keyword, each field's values to tick, the gear choosing the fields, × that
7
+ * clears them — and its stylesheet. Loaded the first time a list draws one,
8
+ * through `filtersPart`; the viewer waits for it before it draws that list.
9
+ */
10
+ var filter_bar_1 = require("./filter-bar");
11
+ Object.defineProperty(exports, "filterBar", { enumerable: true, get: function () { return filter_bar_1.filterBar; } });
12
+ var filter_styles_1 = require("./filter-styles");
13
+ Object.defineProperty(exports, "installFilterStyles", { enumerable: true, get: function () { return filter_styles_1.installFilterStyles; } });
14
+ //# sourceMappingURL=filters-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters-part.js","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filters-part.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The filters part (parts.ts in @fieldia/widgets): a list's filter bar — a
3
+ * keyword, each field's values to tick, the gear choosing the fields, × that
4
+ * clears them — and its stylesheet. Loaded the first time a list draws one,
5
+ * through `filtersPart`; the viewer waits for it before it draws that list.
6
+ */
7
+ export { filterBar } from './filter-bar.mjs';
8
+ export { installFilterStyles } from './filter-styles.mjs';
9
+ //# sourceMappingURL=filters-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters-part.mjs","sourceRoot":"","sources":["../../../../../libs/viewer/src/lib/filters-part.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A group drawn as a work item draws one (section-tools.ts): its heading with
3
+ * its tools at the end — ⤢, ^ and ⌄ — its fields under it, and the group shown
4
+ * alone over the body. The head part's, put in its place among Fieldia's the
5
+ * first time a page draws such a heading (installPartStyles, PART_RANK.groups).
6
+ */
7
+ export declare const GROUP_CSS = "\n/* ---- a group's heading with tools at its end: 16px words, a rule 50px down ---- */\n.fd-form .fd-section[data-head] { gap: 0; --fd-group-inset: 8px; }\n.fd-form .fd-section[data-head] > .fd-section-title {\n display: flex; align-items: center; float: none; width: 100%; box-sizing: border-box; min-height: 51px; margin: 0; padding: 0;\n border-block-end: 1px solid var(--fd-border); font-size: 16px; font-weight: 600; line-height: 22px; color: var(--fd-heading, var(--fd-text));\n text-transform: none; letter-spacing: 0;\n}\n.fd-form .fd-section[data-head] > .fd-section-title > .fd-section-name { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }\n.fd-form .fd-section[data-head] > .fd-section-title .fd-icon { margin-inline-end: 0.4em; }\n.fd-form .fd-section[data-head] > .fd-grid { padding: 4px var(--fd-group-inset) 0; row-gap: 7px; }\n/* Its fields: a 12px label on a 16px line right over a 32px box, words 7px into it, 55px from one label to the next. */\n.fd-form .fd-section[data-head] { --fd-pad-x: 6px; --fd-control-height: 32px; }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field { gap: 0; line-height: 20px; }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field > .fd-label { font-size: 12px; line-height: 16px; font-weight: 400; color: var(--fd-muted); }\n/* A number's box is a compact one, 22px: 45px from its label to the next one, as the tracker's numbers (measured 20.22.23). */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field:is([data-type=\"integer\"], [data-type=\"float\"]) > input.fd-input { height: 22px; min-height: 22px; padding-block: 0; }\n/* A lock in such a group is drawn in the words' colour, a padlock 12px wide and 13px tall, as the tracker's. */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field .fd-lock { color: var(--fd-text); }\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field .fd-lock .fd-icon { width: 15px; height: 15px; }\n/* At a value's start, its padlock's edge a pixel past the label's, as the tracker's: the 18px button pulled 2px back and up. */\n.fd-form .fd-section[data-head] > .fd-grid > .fd-field[data-lock-at=\"value\"] > .fd-lock-wrap { margin-inline-start: -2px; inset-block-start: -1.5px; }\n/* Groups with such headings, one under another: 11px from one's last part to the next one's heading. */\n.fd-form .fd-grid:has(> .fd-section[data-head]) { row-gap: 11px; }\n.fd-section-tools { display: flex; align-items: center; gap: 2px; margin-inline-start: auto; flex: none; opacity: 0; transition: opacity 0.1s ease; }\n/* In a work heading its tools sit low, their middle 8px under the title's, as the tracker's do (measured 20.22.23). */\n.fd-form .fd-section[data-head] > .fd-section-title .fd-section-tools { align-self: flex-end; margin-block-end: 1px; margin-inline-end: -2px; }\n/* Pointed at, worked in or folded, a group shows its tools; where nothing can point, always. */\n.fd-form .fd-section[data-head]:is(:hover, :focus-within, .fd-section-folded, [data-maximised]) > .fd-section-title .fd-section-tools { opacity: 1; }\n@media (hover: none) { .fd-section-tools { opacity: 1; } }\n.fd-section-tool {\n display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: 2px;\n background: none; color: var(--fd-text); cursor: pointer; font: inherit;\n}\n.fd-section-tool:hover { background: var(--fd-text-hover); }\n.fd-section-tool:active { background: var(--fd-text-pressed); }\n.fd-section-tool:focus-visible { outline: 1px solid var(--fd-focus); outline-offset: -1px; }\n/* Their icons 18px in lines one pixel wide, of the words' colour: \u2922 13px across, ^ 9px, \u270E 13px, as the tracker's (measured 20.22.23). */\n.fd-section-tool svg { width: 18px; height: 18px; stroke-width: 1.34; }\n/* In the words' colour too in a heading, whose own icon before its name is muted. */\n.fd-section-title .fd-section-tools .fd-icon { color: inherit; }\n/* Shown alone over the body: the parts round it out of sight, its own heading still there to put it back. */\n.fd-form [data-unshown] { display: none !important; }\n.fd-form .fd-grid[data-maximising] { grid-template-columns: minmax(0, 1fr) !important; }\n.fd-form .fd-grid[data-maximising] > * { grid-column: 1 / -1 !important; }\n.fd-form .fd-section[data-maximised] { min-height: 60vh; }\n\n";
8
+ /** The sheet in a document, once, in its place among Fieldia's. */
9
+ export declare function installGroupStyles(doc: Document): void;