@ixfx/components 0.0.2

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 (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/charts/frequency-histogram-plot.d.ts +33 -0
  4. package/dist/charts/frequency-histogram-plot.d.ts.map +1 -0
  5. package/dist/charts/frequency-histogram-plot.js +54 -0
  6. package/dist/charts/frequency-histogram-plot.js.map +1 -0
  7. package/dist/charts/histogram-vis.d.ts +57 -0
  8. package/dist/charts/histogram-vis.d.ts.map +1 -0
  9. package/dist/charts/histogram-vis.js +222 -0
  10. package/dist/charts/histogram-vis.js.map +1 -0
  11. package/dist/charts/plot.d.ts +128 -0
  12. package/dist/charts/plot.d.ts.map +1 -0
  13. package/dist/charts/plot.js +456 -0
  14. package/dist/charts/plot.js.map +1 -0
  15. package/dist/crumb-nav.d.ts +41 -0
  16. package/dist/crumb-nav.d.ts.map +1 -0
  17. package/dist/crumb-nav.js +198 -0
  18. package/dist/crumb-nav.js.map +1 -0
  19. package/dist/crumb-navigation.d.ts +30 -0
  20. package/dist/crumb-navigation.d.ts.map +1 -0
  21. package/dist/crumb-navigation.js +307 -0
  22. package/dist/crumb-navigation.js.map +1 -0
  23. package/dist/data-display.d.ts +15 -0
  24. package/dist/data-display.d.ts.map +1 -0
  25. package/dist/data-display.js +110 -0
  26. package/dist/data-display.js.map +1 -0
  27. package/dist/dial.d.ts +89 -0
  28. package/dist/dial.d.ts.map +1 -0
  29. package/dist/dial.js +506 -0
  30. package/dist/dial.js.map +1 -0
  31. package/dist/index.d.ts +11 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +13 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/my-element.d.ts +14 -0
  36. package/dist/my-element.d.ts.map +1 -0
  37. package/dist/my-element.js +44 -0
  38. package/dist/my-element.js.map +1 -0
  39. package/dist/selecthorizontal.d.ts +12 -0
  40. package/dist/selecthorizontal.d.ts.map +1 -0
  41. package/dist/selecthorizontal.js +46 -0
  42. package/dist/selecthorizontal.js.map +1 -0
  43. package/dist/split-layout/split-layout.d.ts +35 -0
  44. package/dist/split-layout/split-layout.d.ts.map +1 -0
  45. package/dist/split-layout/split-layout.js +220 -0
  46. package/dist/split-layout/split-layout.js.map +1 -0
  47. package/dist/svg-edit-label.d.ts +2 -0
  48. package/dist/svg-edit-label.d.ts.map +1 -0
  49. package/dist/svg-edit-label.js +110 -0
  50. package/dist/svg-edit-label.js.map +1 -0
  51. package/dist/tabs/tab-layout-item.d.ts +10 -0
  52. package/dist/tabs/tab-layout-item.d.ts.map +1 -0
  53. package/dist/tabs/tab-layout-item.js +20 -0
  54. package/dist/tabs/tab-layout-item.js.map +1 -0
  55. package/dist/tabs/tab-layout.d.ts +10 -0
  56. package/dist/tabs/tab-layout.d.ts.map +1 -0
  57. package/dist/tabs/tab-layout.js +25 -0
  58. package/dist/tabs/tab-layout.js.map +1 -0
  59. package/dist/tabs/tab-list-item.d.ts +18 -0
  60. package/dist/tabs/tab-list-item.d.ts.map +1 -0
  61. package/dist/tabs/tab-list-item.js +63 -0
  62. package/dist/tabs/tab-list-item.js.map +1 -0
  63. package/dist/tabs/tab-list.d.ts +21 -0
  64. package/dist/tabs/tab-list.d.ts.map +1 -0
  65. package/dist/tabs/tab-list.js +148 -0
  66. package/dist/tabs/tab-list.js.map +1 -0
  67. package/dist/tabs/tab-panel.d.ts +11 -0
  68. package/dist/tabs/tab-panel.d.ts.map +1 -0
  69. package/dist/tabs/tab-panel.js +30 -0
  70. package/dist/tabs/tab-panel.js.map +1 -0
  71. package/dist/tabs/tab-panels.d.ts +30 -0
  72. package/dist/tabs/tab-panels.d.ts.map +1 -0
  73. package/dist/tabs/tab-panels.js +80 -0
  74. package/dist/tabs/tab-panels.js.map +1 -0
  75. package/dist/util/circle-arc.d.ts +34 -0
  76. package/dist/util/circle-arc.d.ts.map +1 -0
  77. package/dist/util/circle-arc.js +77 -0
  78. package/dist/util/circle-arc.js.map +1 -0
  79. package/dist/util/compare.d.ts +53 -0
  80. package/dist/util/compare.d.ts.map +1 -0
  81. package/dist/util/compare.js +91 -0
  82. package/dist/util/compare.js.map +1 -0
  83. package/dist/util/content-editable.d.ts +2 -0
  84. package/dist/util/content-editable.d.ts.map +1 -0
  85. package/dist/util/content-editable.js +13 -0
  86. package/dist/util/content-editable.js.map +1 -0
  87. package/dist/util/drag-controller.d.ts +13 -0
  88. package/dist/util/drag-controller.d.ts.map +1 -0
  89. package/dist/util/drag-controller.js +21 -0
  90. package/dist/util/drag-controller.js.map +1 -0
  91. package/dist/util/key-value.d.ts +5 -0
  92. package/dist/util/key-value.d.ts.map +1 -0
  93. package/dist/util/key-value.js +30 -0
  94. package/dist/util/key-value.js.map +1 -0
  95. package/dist/util/primitive-types.d.ts +6 -0
  96. package/dist/util/primitive-types.d.ts.map +1 -0
  97. package/dist/util/primitive-types.js +2 -0
  98. package/dist/util/primitive-types.js.map +1 -0
  99. package/dist/util/svg-editable-text.d.ts +22 -0
  100. package/dist/util/svg-editable-text.d.ts.map +1 -0
  101. package/dist/util/svg-editable-text.js +121 -0
  102. package/dist/util/svg-editable-text.js.map +1 -0
  103. package/dist/util/time.d.ts +2 -0
  104. package/dist/util/time.d.ts.map +1 -0
  105. package/dist/util/time.js +2 -0
  106. package/dist/util/time.js.map +1 -0
  107. package/package.json +48 -0
@@ -0,0 +1,456 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, html, LitElement } from "lit";
8
+ import { customElement } from "lit/decorators/custom-element.js";
9
+ import { property } from "lit/decorators/property.js";
10
+ import { createRef, ref } from "lit/directives/ref.js";
11
+ import { CanvasHelper } from "@ixfx/visual";
12
+ import * as Numbers from '@ixfx/numbers';
13
+ //import type { Colourish } from "ixfx/visual.js";
14
+ import { getCssVariable } from '@ixfx/dom';
15
+ import { Drawing, Colour } from "@ixfx/visual";
16
+ import { Pathed } from "@ixfx/core";
17
+ /**
18
+ * Attributes
19
+ * * streaming: true/false (default: true)
20
+ * * max-length: number (default: 500). How many data points per series to store
21
+ * * data-width: when streaming, how much horizontal width per point
22
+ * * fixed-max/fixed-min: global input scaling (default: NaN, ie. disabled)
23
+ *
24
+ * * line-width: stroke width of drawing line (default:2)
25
+ *
26
+ * * render: 'dot' or 'line' (default: 'dot')
27
+ * * hide-legend: If added, legend is not shown
28
+ * * manual-draw: If added, automatic drawning is disabled
29
+ *
30
+ * Styling variables
31
+ * * --legend-fg: legend foreground text
32
+ */
33
+ let PlotElement = class PlotElement extends LitElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.streaming = true;
37
+ this.hideLegend = false;
38
+ this.maxLength = 500;
39
+ this.dataWidth = 5;
40
+ this.fixedMax = Number.NaN;
41
+ this.fixedMin = Number.NaN;
42
+ this.lineWidth = 2;
43
+ this.renderStyle = `dot`;
44
+ this.manualDraw = false;
45
+ this.padding = 5;
46
+ this.paused = false;
47
+ this.#series = new Map();
48
+ this.#legendColour = ``;
49
+ this.#hue = 0;
50
+ this.canvasEl = createRef();
51
+ this.seriesRanges = new Map();
52
+ this.#swatchSize = 10;
53
+ }
54
+ #series;
55
+ #canvas;
56
+ #drawing;
57
+ #legendColour;
58
+ #hue;
59
+ get series() {
60
+ return [...this.#series.values()];
61
+ }
62
+ get seriesCount() {
63
+ return this.#series.size;
64
+ }
65
+ /**
66
+ * Returns a `PlotElement` instance based on a query
67
+ * ```js
68
+ * PlotElement.fromQuery(`#someplot`); // PlotElement
69
+ * ```
70
+ *
71
+ * Throws an error if query does not match.
72
+ * @param query
73
+ * @returns
74
+ */
75
+ static fromQuery(query) {
76
+ const el = document.querySelector(query);
77
+ if (!el)
78
+ throw new Error(`Query does not match an element`);
79
+ if (el.nodeName === 'PLOT-ELEMENT')
80
+ return el;
81
+ throw new Error(`Elment is not a PlotElement ('${el.nodeName}')`);
82
+ }
83
+ /**
84
+ * Delete a series.
85
+ * Returns _true_ if there was a series to delete
86
+ * @param name
87
+ * @returns
88
+ */
89
+ deleteSeries(name) {
90
+ name = name.toLowerCase();
91
+ const s = this.#series.get(name);
92
+ if (!s)
93
+ return false;
94
+ this.#series.delete(name);
95
+ return true;
96
+ }
97
+ /**
98
+ * Keeps the series, but deletes its data
99
+ * @param name
100
+ * @returns
101
+ */
102
+ clearSeries(name) {
103
+ name = name.toLowerCase();
104
+ const s = this.#series.get(name);
105
+ if (!s)
106
+ return false;
107
+ this.#series.clear();
108
+ return true;
109
+ }
110
+ /**
111
+ * Delete all data & series
112
+ */
113
+ clear() {
114
+ this.#series.clear();
115
+ }
116
+ /**
117
+ * Keeps all series, but deletes their data
118
+ */
119
+ clearData() {
120
+ for (const s of this.#series.values()) {
121
+ s.clear();
122
+ }
123
+ }
124
+ render() {
125
+ return html `<canvas ${ref(this.canvasEl)}></canvas>`;
126
+ }
127
+ #setupCanvas() {
128
+ if (this.#canvas !== undefined)
129
+ return this.#canvas;
130
+ const canvas = this.canvasEl.value; // this.shadowRoot?.querySelector(`canvas`);
131
+ if (!canvas)
132
+ throw new Error(`canvas element not found`);
133
+ const c = new CanvasHelper(canvas);
134
+ this.#canvas = c;
135
+ this.#drawing = Drawing.makeHelper(c.ctx);
136
+ return c;
137
+ }
138
+ connectedCallback() {
139
+ super.connectedCallback();
140
+ }
141
+ firstUpdated(_changedProperties) {
142
+ // const canvas = this.canvasEl.value!;
143
+ const ro = new ResizeObserver((event) => {
144
+ const c = this.#setupCanvas();
145
+ if (!c)
146
+ return;
147
+ const entry = event[0];
148
+ c.setLogicalSize(entry.contentRect);
149
+ });
150
+ ro.observe(this);
151
+ this.updateColours();
152
+ }
153
+ updateColours() {
154
+ this.#legendColour = getCssVariable(`legend-fg`, `black`);
155
+ }
156
+ plot(value, seriesName = ``, skipDrawing = false) {
157
+ if (typeof value !== 'number')
158
+ throw new Error(`Can only add numbers. Got: ${typeof value}`);
159
+ let s = this.#series.get(seriesName.toLowerCase());
160
+ if (s === undefined) {
161
+ s = new PlotSeries(seriesName, this.colourGenerator(seriesName), this);
162
+ this.#series.set(seriesName.toLowerCase(), s);
163
+ }
164
+ s.push(value);
165
+ if (!this.manualDraw && !skipDrawing)
166
+ this.draw();
167
+ return s;
168
+ }
169
+ /**
170
+ * Draw a set of key-value pairs as a batch.
171
+ * @param value
172
+ */
173
+ plotObject(value) {
174
+ for (const p of Pathed.getPathsAndData(value, true)) {
175
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
176
+ this.plot(p.value, p.path, true);
177
+ }
178
+ this.draw();
179
+ }
180
+ colourGenerator(_series) {
181
+ const c = Colour.HslSpace.scalar(this.#hue, 0.9, 0.4);
182
+ this.#hue = Numbers.wrap(this.#hue + 0.1);
183
+ return c;
184
+ }
185
+ draw() {
186
+ if (this.paused)
187
+ return;
188
+ const c = this.#canvas;
189
+ const d = this.#drawing;
190
+ const padding = this.padding;
191
+ if (!d || !c)
192
+ return;
193
+ c.clear();
194
+ const ctx = d.ctx;
195
+ const axisYwidth = this.computeAxisYWidth(c);
196
+ const remainingWidth = c.width - axisYwidth;
197
+ // Legend across bottom
198
+ const clLegend = this.computeLegend(c, remainingWidth, padding);
199
+ const plotHeight = c.height - clLegend.bounds.height - padding;
200
+ const cy = { width: axisYwidth, height: plotHeight };
201
+ const cp = this.computePlot(c, plotHeight, cy.width, padding);
202
+ const cl = { ...clLegend.bounds, x: cy.width, y: cp.y + cp.height + padding };
203
+ let globalScaler;
204
+ if (!Number.isNaN(this.fixedMax) && !Number.isNaN(this.fixedMin)) {
205
+ globalScaler = Numbers.scaler(this.fixedMin, this.fixedMax);
206
+ }
207
+ // Draw legend
208
+ if (!this.hideLegend) {
209
+ ctx.save();
210
+ ctx.translate(cl.x + padding, cl.y + padding);
211
+ this.drawLegend(cl, d);
212
+ ctx.restore();
213
+ }
214
+ ctx.save();
215
+ ctx.translate(cp.x + padding, cp.y + padding);
216
+ //ctx.fillStyle = `whitesmoke`;
217
+ //ctx.fillRect(0, 0, cp.width, cp.height);
218
+ // Draw data
219
+ for (const series of this.#series.values()) {
220
+ const seriesScale = this.seriesRanges.get(series.name);
221
+ const data = seriesScale === undefined ? (globalScaler === undefined ?
222
+ series.getScaled() :
223
+ series.getScaledBy(globalScaler)) :
224
+ series.getScaledBy(Numbers.scaler(seriesScale[0], seriesScale[1]));
225
+ const colour = Colour.toCssColour(series.colour);
226
+ switch (this.renderStyle) {
227
+ case `line`: {
228
+ this.drawLineSeries(data, cp, d, colour);
229
+ break;
230
+ }
231
+ default: {
232
+ this.drawDotSeries(data, cp, d, colour);
233
+ }
234
+ }
235
+ }
236
+ ctx.restore();
237
+ }
238
+ drawLegend(cl, d) {
239
+ const textColour = this.#legendColour;
240
+ const padding = this.padding;
241
+ let x = 0;
242
+ let y = padding;
243
+ const swatchSize = 10;
244
+ const ctx = d.ctx;
245
+ for (const series of this.#series.values()) {
246
+ ctx.fillStyle = Colour.toCssColour(series.colour);
247
+ ctx.fillRect(x, y, swatchSize, swatchSize);
248
+ ctx.fillStyle = textColour;
249
+ x += swatchSize + padding;
250
+ const m = ctx.measureText(series.name);
251
+ ctx.textBaseline = `middle`;
252
+ ctx.fillText(series.name, x, y + swatchSize / 2);
253
+ x += m.width + padding;
254
+ if (x >= cl.width) {
255
+ y += 10 + padding;
256
+ x = 0;
257
+ }
258
+ }
259
+ }
260
+ drawLineSeries(data, cp, d, colour) {
261
+ const pointWidth = this.streaming ? this.dataWidth : (cp.width / data.length);
262
+ let x = 0;
263
+ if (this.streaming)
264
+ x = cp.width - (pointWidth * data.length);
265
+ const pos = data.map(d => {
266
+ x += pointWidth;
267
+ return {
268
+ x: x,
269
+ y: (1 - d) * cp.height,
270
+ radius: pointWidth
271
+ };
272
+ });
273
+ // Ignore points off the screen
274
+ const trimmed = pos.filter(p => {
275
+ if (p.x < 0)
276
+ return false;
277
+ return true;
278
+ });
279
+ d.connectedPoints(trimmed, {
280
+ strokeStyle: colour,
281
+ lineWidth: this.lineWidth
282
+ });
283
+ }
284
+ drawDotSeries(data, cp, d, colour) {
285
+ const pointWidth = this.streaming ? this.dataWidth : cp.width / data.length;
286
+ let x = 0;
287
+ if (this.streaming)
288
+ x = cp.width - (pointWidth * data.length);
289
+ const pos = data.map(d => {
290
+ x += pointWidth;
291
+ return {
292
+ x,
293
+ y: (1 - d) * cp.height,
294
+ radius: pointWidth
295
+ };
296
+ });
297
+ // Ignore points off the screen
298
+ const trimmed = pos.filter(p => {
299
+ if (p.x < 0)
300
+ return false;
301
+ return true;
302
+ });
303
+ d.dot(trimmed, { filled: true, fillStyle: colour });
304
+ }
305
+ computePlot(c, plotHeight, axisYwidth, padding) {
306
+ return {
307
+ x: axisYwidth,
308
+ y: 0,
309
+ width: c.width - axisYwidth - padding,
310
+ height: plotHeight - padding - padding
311
+ };
312
+ }
313
+ computeAxisYWidth(_c) {
314
+ return 0;
315
+ }
316
+ #swatchSize;
317
+ computeLegend(c, maxWidth, padding) {
318
+ if (this.hideLegend) {
319
+ return {
320
+ bounds: { width: 0, height: 0 },
321
+ parts: []
322
+ };
323
+ }
324
+ const ctx = c.ctx;
325
+ const series = [...this.#series.values()];
326
+ let largestH = 0;
327
+ const sizes = series.map(s => {
328
+ let width = this.#swatchSize + padding;
329
+ const m = ctx.measureText(s.name);
330
+ width += m.width;
331
+ const height = m.emHeightAscent + m.emHeightDescent;
332
+ largestH = Math.max(height, largestH);
333
+ return {
334
+ width,
335
+ height
336
+ };
337
+ });
338
+ const parts = [];
339
+ let x = padding;
340
+ let y = padding;
341
+ let usedWidthMax = 0;
342
+ for (const s of sizes) {
343
+ parts.push({
344
+ x, y, ...s
345
+ });
346
+ x += s.width;
347
+ usedWidthMax = Math.max(x, usedWidthMax);
348
+ if (x >= maxWidth) {
349
+ x = padding;
350
+ y += largestH + padding;
351
+ }
352
+ }
353
+ const bounds = { width: usedWidthMax, height: y + largestH + padding };
354
+ return {
355
+ bounds, parts
356
+ };
357
+ }
358
+ getSeries(name) {
359
+ return this.#series.get(name);
360
+ }
361
+ static { this.styles = css `
362
+ :host {
363
+ width: 100%;
364
+ height: 100%;
365
+ display: block;
366
+ }
367
+ `; }
368
+ };
369
+ __decorate([
370
+ property({ attribute: `streaming`, type: Boolean })
371
+ ], PlotElement.prototype, "streaming", void 0);
372
+ __decorate([
373
+ property({ attribute: `hide-legend`, type: Boolean })
374
+ ], PlotElement.prototype, "hideLegend", void 0);
375
+ __decorate([
376
+ property({ attribute: `max-length`, type: Number })
377
+ ], PlotElement.prototype, "maxLength", void 0);
378
+ __decorate([
379
+ property({ attribute: `data-width`, type: Number })
380
+ ], PlotElement.prototype, "dataWidth", void 0);
381
+ __decorate([
382
+ property({ attribute: `fixed-max`, type: Number })
383
+ ], PlotElement.prototype, "fixedMax", void 0);
384
+ __decorate([
385
+ property({ attribute: `fixed-min`, type: Number })
386
+ ], PlotElement.prototype, "fixedMin", void 0);
387
+ __decorate([
388
+ property({ attribute: `line-width`, type: Number })
389
+ ], PlotElement.prototype, "lineWidth", void 0);
390
+ __decorate([
391
+ property({ attribute: `render`, type: String })
392
+ ], PlotElement.prototype, "renderStyle", void 0);
393
+ __decorate([
394
+ property({ attribute: `manual-draw`, type: Boolean })
395
+ ], PlotElement.prototype, "manualDraw", void 0);
396
+ PlotElement = __decorate([
397
+ customElement(`plot-element`)
398
+ ], PlotElement);
399
+ export { PlotElement };
400
+ export class PlotSeries {
401
+ constructor(name, colour, plot) {
402
+ this.name = name;
403
+ this.colour = colour;
404
+ this.plot = plot;
405
+ this.data = [];
406
+ this.minSeen = Number.MAX_SAFE_INTEGER;
407
+ this.maxSeen = Number.MIN_SAFE_INTEGER;
408
+ }
409
+ clear() {
410
+ this.data = [];
411
+ this.resetScale();
412
+ }
413
+ /**
414
+ * Returns a copy of the data scaled by the current
415
+ * range of the data
416
+ * @returns
417
+ */
418
+ getScaled() {
419
+ //const r = this.maxSeen - this.minSeen;
420
+ let min = this.minSeen;
421
+ let max = this.maxSeen;
422
+ if (Number.isNaN(min))
423
+ min = 0;
424
+ if (Number.isNaN(max))
425
+ max = 1;
426
+ const s = Numbers.scaler(min, max);
427
+ return this.getScaledBy(s);
428
+ }
429
+ getScaledBy(scaler) {
430
+ return this.data.map(v => {
431
+ if (typeof v !== `number`)
432
+ throw new Error(`Data should just be numbers. Got: ${typeof v}`);
433
+ if (Number.isNaN(v))
434
+ throw new Error(`data contains NaN`);
435
+ const scaled = scaler(v);
436
+ if (Number.isNaN(scaled))
437
+ throw new Error(`NaN. v: ${v} scaled: ${scaled}`);
438
+ return Numbers.clamp(scaled);
439
+ });
440
+ }
441
+ push(value) {
442
+ if (typeof value !== 'number')
443
+ throw new Error(`Can only add numbers. Got: ${typeof value}`);
444
+ this.data.push(value);
445
+ if (this.data.length > this.plot.maxLength && this.plot.streaming) {
446
+ this.data = this.data.slice(1);
447
+ }
448
+ this.minSeen = Math.min(this.minSeen, value);
449
+ this.maxSeen = Math.max(this.maxSeen, value);
450
+ }
451
+ resetScale() {
452
+ this.minSeen = Number.MAX_SAFE_INTEGER;
453
+ this.maxSeen = Number.MIN_SAFE_INTEGER;
454
+ }
455
+ }
456
+ //# sourceMappingURL=plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plot.js","sourceRoot":"","sources":["../../src/charts/plot.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAY,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,kDAAkD;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC;;;;;;;;;;;;;;;GAeG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAEL,cAAS,GAAG,IAAI,CAAC;QAGjB,eAAU,GAAG,KAAK,CAAC;QAGnB,cAAS,GAAG,GAAG,CAAC;QAGhB,cAAS,GAAG,CAAC,CAAC;QAGd,aAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;QAGtB,aAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;QAGtB,cAAS,GAAG,CAAC,CAAC;QAGd,gBAAW,GAAG,KAAK,CAAA;QAGnB,eAAU,GAAG,KAAK,CAAC;QACnB,YAAO,GAAG,CAAC,CAAC;QAEZ,WAAM,GAAG,KAAK,CAAC;QACf,YAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;QAIxC,kBAAa,GAAG,EAAE,CAAC;QACnB,SAAI,GAAG,CAAC,CAAC;QAET,aAAQ,GAA2B,SAAS,EAAE,CAAC;QAC/C,iBAAY,GAAG,IAAI,GAAG,EAAwC,CAAC;QAoR/D,gBAAW,GAAG,EAAE,CAAC;IAwDnB,CAAC;IApVC,OAAO,CAAiC;IACxC,OAAO,CAA2B;IAClC,QAAQ,CAAoC;IAE5C,aAAa,CAAM;IACnB,IAAI,CAAK;IAKT,IAAI,MAAM;QACR,OAAO,CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAkB,CAAC;IACtD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC5D,IAAI,EAAE,CAAC,QAAQ,KAAK,cAAc;YAAE,OAAO,EAAiB,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,iCAAkC,EAAE,CAAC,QAAS,IAAI,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAY;QACvB,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,IAAY;QACtB,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,WAAY,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE,YAAY,CAAA;IACxD,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAA,4CAA4C;QAChF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAE5B,CAAC;IAES,YAAY,CAAC,kBAAkC;QACvD,uCAAuC;QACvC,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,MAAM,KAAK,GAAG,KAAK,CAAE,CAAC,CAAE,CAAC;YACzB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,KAAa,EAAE,UAAU,GAAG,EAAE,EAAE,WAAW,GAAG,KAAK;QACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA+B,OAAO,KAAM,EAAE,CAAC,CAAC;QAE/F,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,CAAC,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,KAAa;QACtB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACpD,iEAAiE;YACjE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO;QACrB,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAElB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC;QAE5C,uBAAuB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;QAC/D,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACrD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,OAAO,EAAE,CAAA;QAE7E,IAAI,YAAiD,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAED,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACvB,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC;QAED,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QAC9C,+BAA+B;QAC/B,0CAA0C;QAE1C,YAAY;QACZ,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;gBACpE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;gBACpB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAE,CAAC,CAAE,EAAE,WAAW,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;oBACzC,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QACD,GAAG,CAAC,OAAO,EAAE,CAAC;IAEhB,CAAC;IAED,UAAU,CAAC,EAAkB,EAAE,CAAwB;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,OAAO,CAAC;QAChB,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAElB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3C,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC;YAC3B,CAAC,IAAI,UAAU,GAAG,OAAO,CAAC;YAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;YAEjD,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;gBAClB,CAAC,GAAG,CAAC,CAAC;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAc,EAAE,EAAQ,EAAE,CAAwB,EAAE,MAAc;QAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,IAAI,UAAU,CAAC;YAChB,OAAO;gBACL,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM;gBACtB,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC,CAAC,CAAA;QACF,+BAA+B;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAA;QACF,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE;YACzB,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,IAAc,EAAE,EAAQ,EAAE,CAAwB,EAAE,MAAc;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,IAAI,UAAU,CAAC;YAChB,OAAO;gBACL,CAAC;gBACD,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM;gBACtB,MAAM,EAAE,UAAU;aACnB,CAAA;QACH,CAAC,CAAC,CAAA;QACF,+BAA+B;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAA;QACF,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,WAAW,CAAC,CAAe,EAAE,UAAkB,EAAE,UAAkB,EAAE,OAAe;QAClF,OAAO;YACL,CAAC,EAAE,UAAU;YACb,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,UAAU,GAAG,OAAO;YACrC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO;SACvC,CAAA;IACH,CAAC;IAED,iBAAiB,CAAC,EAAgB;QAChC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,WAAW,CAAM;IAEjB,aAAa,CAAC,CAAe,EAAE,QAAgB,EAAE,OAAe;QAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;gBACL,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC/B,KAAK,EAAE,EAAE;aACV,CAAA;QACH,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QAElB,MAAM,MAAM,GAAG,CAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAE,CAAC;QAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YACvC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;YACjB,MAAM,MAAM,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,eAAe,CAAC;YACpD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO;gBACL,KAAK;gBACL,MAAM;aACP,CAAA;QACH,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,OAAO,CAAC;QAChB,IAAI,CAAC,GAAG,OAAO,CAAC;QAChB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC;gBACT,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;aACX,CAAC,CAAA;YACF,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACb,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAClB,CAAC,GAAG,OAAO,CAAC;gBACZ,CAAC,IAAI,QAAQ,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAA;QACtE,OAAO;YACL,MAAM,EAAE,KAAK;SACd,CAAA;IACH,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;aAEM,WAAM,GAAG,GAAG,CAAA;;;;;;GAMlB,AANY,CAMZ;;AA/WD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CACnC;AAGjB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CACnC;AAGnB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACpC;AAGhB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACtC;AAGd;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAC7B;AAGtB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAC7B;AAGtB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CACtC;AAGd;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDAC7B;AAGnB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CACnC;AA1BR,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAkXvB;;AAGD,MAAM,OAAO,UAAU;IAKrB,YAAmB,IAAY,EAAS,MAAiB,EAAU,IAAiB;QAAjE,SAAI,GAAJ,IAAI,CAAQ;QAAS,WAAM,GAAN,MAAM,CAAW;QAAU,SAAI,GAAJ,IAAI,CAAa;QAJpF,SAAI,GAAa,EAAE,CAAC;QACpB,YAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAClC,YAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEqD,CAAC;IAExF,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,wCAAwC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC,CAAC;QAE/B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,MAA6B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAsC,OAAO,CAAE,EAAE,CAAC,CAAC;YAC9F,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,WAAY,CAAE,YAAa,MAAO,EAAE,CAAC,CAAC;YAChF,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA+B,OAAO,KAAM,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ import { LitElement, type PropertyValues } from "lit";
2
+ export type CrumbNavigation2Part = {
3
+ label: string;
4
+ key: string;
5
+ icon?: string;
6
+ showLabel?: boolean;
7
+ showIcon?: boolean;
8
+ ensureVisible?: boolean;
9
+ };
10
+ export type RequestPopup = (segment: CrumbNavigation2Part) => AsyncGenerator<CrumbNavigation2Part | CrumbNavigation2Part[]>;
11
+ /**
12
+ * Events
13
+ * * 'change': yields newly selected node and previous
14
+ *
15
+ * CSS variables
16
+ * * --text-highlight: red; // highlight on mouse hover
17
+ * * --separator: silver; // text colour of separator character
18
+ * * --padding-s: 0.12ch; // padding between items
19
+ */
20
+ export declare class CrumbNavElement extends LitElement {
21
+ segments: CrumbNavigation2Part[];
22
+ editing: boolean;
23
+ editPath: string;
24
+ onNavPopup: RequestPopup | undefined;
25
+ constructor();
26
+ protected updated(_changedProperties: PropertyValues): void;
27
+ setSegmentsWithPath(path: string, separator?: string): void;
28
+ private renderSegment;
29
+ onCaretClick(event: MouseEvent): Promise<void>;
30
+ onLabelClick(event: MouseEvent): void;
31
+ protected render(): import("lit-html").TemplateResult<1>;
32
+ onInputKeyUp(event: KeyboardEvent): void;
33
+ onInputBlur(): void;
34
+ static styles: import("lit").CSSResult;
35
+ }
36
+ declare global {
37
+ interface HTMLElementTagNameMap {
38
+ "ixfx-crumb-nav": CrumbNavElement;
39
+ }
40
+ }
41
+ //# sourceMappingURL=crumb-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crumb-nav.d.ts","sourceRoot":"","sources":["../src/crumb-nav.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIjE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,cAAc,CAAC,oBAAoB,GAAG,oBAAoB,EAAE,CAAC,CAAA;AAC3H;;;;;;;;GAQG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAE7C,QAAQ,EAAE,oBAAoB,EAAE,CAAK;IAGrC,OAAO,UAAS;IAGhB,QAAQ,SAAK;IAEb,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;;IAmBrC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;IAOpD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM;IAexD,OAAO,CAAC,aAAa;IAWf,YAAY,CAAC,KAAK,EAAE,UAAU;IAcpC,YAAY,CAAC,KAAK,EAAE,UAAU;IAW9B,SAAS,CAAC,MAAM;IAShB,YAAY,CAAC,KAAK,EAAE,aAAa;IAajC,WAAW;IAIX,MAAM,CAAC,MAAM,0BAmEd;CACA;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,eAAe,CAAC;KACnC;CACF"}