@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.149 → 2.0.0-next.150

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 (26) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +4443 -3841
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +381 -2
  4. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.css.js +94 -0
  5. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.css.js.map +1 -0
  6. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.d.ts +72 -0
  7. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.d.ts.map +1 -0
  8. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.js +396 -0
  9. package/dist/components/alert-list-details-experimental/alert-list-details-experimental.js.map +1 -0
  10. package/dist/components/table/table.css.js +43 -0
  11. package/dist/components/table/table.css.js.map +1 -1
  12. package/dist/components/table/table.d.ts +31 -1
  13. package/dist/components/table/table.d.ts.map +1 -1
  14. package/dist/components/table/table.js +124 -11
  15. package/dist/components/table/table.js.map +1 -1
  16. package/dist/types.d.ts +2 -0
  17. package/dist/types.d.ts.map +1 -1
  18. package/dist/types.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/components/alert-list-details-experimental/alert-list-details-experimental.css +70 -0
  21. package/src/components/alert-list-details-experimental/alert-list-details-experimental.stories.ts +510 -0
  22. package/src/components/alert-list-details-experimental/alert-list-details-experimental.ts +457 -0
  23. package/src/components/table/table.css +42 -0
  24. package/src/components/table/table.stories.ts +279 -0
  25. package/src/components/table/table.ts +177 -13
  26. package/src/types.ts +6 -4
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/components/table/table.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { property, state } from "lit/decorators.js";
5
5
  import { ObcTableHeaderItemType } from "../table-header-item/table-header-item.js";
6
6
  import { classMap } from "lit/directives/class-map.js";
7
7
  import "../button/button.js";
8
+ import "../../icons/icon-chevron-right-google.js";
8
9
  import { CheckboxStatus } from "../checkbox/checkbox.js";
9
10
  import { TagColor } from "../tag/tag.js";
10
11
  import "../../building-blocks/bar-horizontal/bar-horizontal.js";
@@ -54,6 +55,41 @@ let ObcTable = class extends LitElement {
54
55
  this._previousPositions = [];
55
56
  this._hasRenderedRows = false;
56
57
  }
58
+ get hasHierarchy() {
59
+ return this.data.some(
60
+ (row) => row.parentId !== void 0 || (row.level ?? 0) > 0 || row.expandable === true
61
+ );
62
+ }
63
+ sortWithinSiblings(rows, compare) {
64
+ const ids = new Set(rows.map((row) => row.id));
65
+ const childrenByParent = /* @__PURE__ */ new Map();
66
+ const roots = [];
67
+ for (const row of rows) {
68
+ const parentId = row.parentId;
69
+ if (parentId !== void 0 && parentId !== row.id && ids.has(parentId)) {
70
+ const siblings = childrenByParent.get(parentId) ?? [];
71
+ siblings.push(row);
72
+ childrenByParent.set(parentId, siblings);
73
+ } else {
74
+ roots.push(row);
75
+ }
76
+ }
77
+ const sorted = [];
78
+ const visited = /* @__PURE__ */ new Set();
79
+ const visit = (siblings) => {
80
+ for (const row of [...siblings].sort(compare)) {
81
+ if (visited.has(row.id)) {
82
+ continue;
83
+ }
84
+ visited.add(row.id);
85
+ sorted.push(row);
86
+ visit(childrenByParent.get(row.id) ?? []);
87
+ }
88
+ };
89
+ visit(roots);
90
+ visit(rows.filter((row) => !visited.has(row.id)));
91
+ return sorted;
92
+ }
57
93
  get sortedData() {
58
94
  if (this._sortByColumnIdx === void 0) {
59
95
  return this.data;
@@ -64,8 +100,7 @@ let ObcTable = class extends LitElement {
64
100
  return this.data;
65
101
  }
66
102
  const sortDirection = this._sortDirection;
67
- const sortedData = [...this.data];
68
- sortedData.sort((a, b) => {
103
+ const compare = (a, b) => {
69
104
  const aValue = a[sortByColumn.key];
70
105
  const bValue = b[sortByColumn.key];
71
106
  if (sortDirection === "asc") {
@@ -83,7 +118,12 @@ let ObcTable = class extends LitElement {
83
118
  a
84
119
  );
85
120
  }
86
- });
121
+ };
122
+ if (this.hasHierarchy) {
123
+ return this.sortWithinSiblings(this.data, compare);
124
+ }
125
+ const sortedData = [...this.data];
126
+ sortedData.sort(compare);
87
127
  return sortedData;
88
128
  }
89
129
  _handleSortClick(column) {
@@ -103,6 +143,38 @@ let ObcTable = class extends LitElement {
103
143
  new CustomEvent("row-click", { detail: { row } })
104
144
  );
105
145
  }
146
+ _handleExpandToggle(row, expanded) {
147
+ if (!row.expandable) {
148
+ return;
149
+ }
150
+ this.dispatchEvent(
151
+ new CustomEvent("expand-toggle", {
152
+ detail: { rowId: row.id, expanded }
153
+ })
154
+ );
155
+ }
156
+ _renderRowExpander(row) {
157
+ if (!this.hasHierarchy) {
158
+ return nothing;
159
+ }
160
+ const level = row.level ?? 0;
161
+ return html`<span
162
+ class="row-expander"
163
+ style="--row-level: ${level}"
164
+ aria-hidden="true"
165
+ >
166
+ ${row.expandable ? html`<span
167
+ class=${classMap({ chevron: true, expanded: row.expanded ?? false })}
168
+ @click=${(event) => {
169
+ event.preventDefault();
170
+ event.stopPropagation();
171
+ this._handleExpandToggle(row, !(row.expanded ?? false));
172
+ }}
173
+ >
174
+ <obi-chevron-right-google></obi-chevron-right-google>
175
+ </span>` : nothing}
176
+ </span>`;
177
+ }
106
178
  _focusFirstRow() {
107
179
  const firstRow = this.renderRoot.querySelector(
108
180
  'button[role="row"].grid-row'
@@ -153,6 +225,9 @@ let ObcTable = class extends LitElement {
153
225
  }
154
226
  _handleRowKeyDown(event) {
155
227
  const key = event.key;
228
+ if (this.hasHierarchy && (key === "ArrowRight" || key === "ArrowLeft") && this._handleRowExpandKey(event, key)) {
229
+ return;
230
+ }
156
231
  if (key !== "ArrowDown" && key !== "ArrowUp" && key !== "Home" && key !== "End") {
157
232
  return;
158
233
  }
@@ -195,6 +270,31 @@ let ObcTable = class extends LitElement {
195
270
  event.stopPropagation();
196
271
  }
197
272
  }
273
+ _handleRowExpandKey(event, key) {
274
+ const target = event.currentTarget;
275
+ const rowId = target?.dataset.rowId;
276
+ const row = this.sortedData.find((candidate) => candidate.id === rowId);
277
+ if (!row) return false;
278
+ const expanded = row.expanded ?? false;
279
+ if (key === "ArrowRight" && row.expandable && !expanded) {
280
+ this._handleExpandToggle(row, true);
281
+ } else if (key === "ArrowLeft" && row.expandable && expanded) {
282
+ this._handleExpandToggle(row, false);
283
+ } else if (key === "ArrowLeft") {
284
+ const parent = this.renderRoot.querySelector(
285
+ `button[role="row"].grid-row[data-row-id="${CSS.escape(
286
+ row.parentId ?? ""
287
+ )}"]`
288
+ );
289
+ if (!parent) return false;
290
+ parent.focus();
291
+ } else {
292
+ return false;
293
+ }
294
+ event.preventDefault();
295
+ event.stopPropagation();
296
+ return true;
297
+ }
198
298
  _getAllPositions() {
199
299
  const rows = Array.from(
200
300
  this.renderRoot.querySelectorAll(
@@ -313,7 +413,7 @@ let ObcTable = class extends LitElement {
313
413
  --grid-columns-rest: ${selectionColumnCount};
314
414
  --selection-column-width: var(--menu-navigation-components-table-item-touch-target-size);
315
415
  "
316
- role="table"
416
+ role=${this.hasHierarchy ? "treegrid" : "table"}
317
417
  >
318
418
  ${this.showHeader ? html`
319
419
  <div class="grid-header" role="row">
@@ -410,8 +510,15 @@ let ObcTable = class extends LitElement {
410
510
  data-row-id=${row.id}
411
511
  style="grid-row: ${rowIndex + 1}"
412
512
  part="row"
513
+ aria-level=${ifDefined(
514
+ this.hasHierarchy ? (row.level ?? 0) + 1 : void 0
515
+ )}
516
+ aria-expanded=${ifDefined(
517
+ row.expandable ? row.expanded ?? false : void 0
518
+ )}
413
519
  >
414
- ${map(effectiveColumns, (col) => {
520
+ ${map(effectiveColumns, (col, colIndex) => {
521
+ const expander = colIndex === (this.selectable ? 1 : 0) ? this._renderRowExpander(row) : nothing;
415
522
  if (this.selectable && col.key === "__selection__") {
416
523
  const checked = this._selectedRowIds.has(row.id);
417
524
  return html`<div
@@ -432,7 +539,9 @@ let ObcTable = class extends LitElement {
432
539
  }
433
540
  const value = row[col.key];
434
541
  if (value === void 0) {
435
- return html`<div class="grid-cell" role="cell"></div>`;
542
+ return html`<div class="grid-cell" role="cell">
543
+ ${expander}
544
+ </div>`;
436
545
  }
437
546
  if (col.renderCell) {
438
547
  return html`<div
@@ -440,7 +549,7 @@ let ObcTable = class extends LitElement {
440
549
  role="cell"
441
550
  part=${ifDefined(value.cssPart)}
442
551
  >
443
- ${col.renderCell(
552
+ ${expander}${col.renderCell(
444
553
  value,
445
554
  row,
446
555
  row.id
@@ -450,7 +559,8 @@ let ObcTable = class extends LitElement {
450
559
  return this._renderCell(
451
560
  value,
452
561
  row,
453
- col
562
+ col,
563
+ expander
454
564
  );
455
565
  }
456
566
  })}
@@ -568,7 +678,7 @@ let ObcTable = class extends LitElement {
568
678
  const nextSelection = status === CheckboxStatus.checked ? /* @__PURE__ */ new Set() : new Set(rowIds);
569
679
  this._applySelectionChange(nextSelection, "header");
570
680
  }
571
- _renderCell(value, row, column) {
681
+ _renderCell(value, row, column, expander = nothing) {
572
682
  if (value.type === "regular") {
573
683
  return html`<div
574
684
  class=${classMap({
@@ -584,7 +694,7 @@ let ObcTable = class extends LitElement {
584
694
  role="cell"
585
695
  part=${ifDefined(cssPart(value, "cell"))}
586
696
  >
587
- ${value.icon3 ? html`<span class="icon" part=${ifDefined(cssPart(value, "icon3"))}
697
+ ${expander}${value.icon3 ? html`<span class="icon" part=${ifDefined(cssPart(value, "icon3"))}
588
698
  >${value.icon3}</span
589
699
  >` : nothing}
590
700
  ${value.icon2 ? html`<span class="icon" part=${ifDefined(cssPart(value, "icon2"))}
@@ -605,6 +715,7 @@ let ObcTable = class extends LitElement {
605
715
  class="grid-cell button ${column.dividerRight ? "divider-right" : ""}"
606
716
  role="cell"
607
717
  >
718
+ ${expander}
608
719
  <obc-button
609
720
  variant="normal"
610
721
  fullWidth
@@ -636,6 +747,7 @@ let ObcTable = class extends LitElement {
636
747
  role="cell"
637
748
  part=${ifDefined(cssPart(value, "cell"))}
638
749
  >
750
+ ${expander}
639
751
  <obc-checkbox
640
752
  .status=${value.status ?? CheckboxStatus.unchecked}
641
753
  .disabled=${value.disabled ?? false}
@@ -676,7 +788,7 @@ let ObcTable = class extends LitElement {
676
788
  role="cell"
677
789
  part=${ifDefined(cssPart(value, "cell"))}
678
790
  >
679
- ${visibleTags.map((tag) => {
791
+ ${expander}${visibleTags.map((tag) => {
680
792
  const hasIcon = tag.hasIcon ?? tag.icon !== void 0;
681
793
  return html`<obc-tag
682
794
  .label=${tag.label}
@@ -711,6 +823,7 @@ let ObcTable = class extends LitElement {
711
823
  role="cell"
712
824
  part=${ifDefined(cssPart(value, "cell"))}
713
825
  >
826
+ ${expander}
714
827
  <obc-bar-horizontal
715
828
  .minValue=${value.minValue ?? 0}
716
829
  .maxValue=${value.maxValue ?? 100}
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../../src/components/table/table.ts"],"sourcesContent":["import {\n html,\n HTMLTemplateResult,\n LitElement,\n nothing,\n PropertyValues,\n unsafeCSS,\n} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './table.css?inline';\nimport {property, state} from 'lit/decorators.js';\nimport '../table-header-item/table-header-item.js';\nimport {ObcTableHeaderItemType} from '../table-header-item/table-header-item.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../button/button.js';\nimport {CheckboxStatus, ObcCheckboxChangeEvent} from '../checkbox/checkbox.js';\nimport {TagColor} from '../tag/tag.js';\nimport '../../building-blocks/bar-horizontal/bar-horizontal.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {map} from 'lit/directives/map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {\n ExternalScaleSide,\n FillMode,\n FrameStyle,\n InstrumentState,\n Priority,\n ScaleType,\n} from '../../building-blocks/bar-horizontal/bar-horizontal.js';\n\nexport enum ObcTableCellType {\n Regular = 'regular',\n Button = 'button',\n Checkbox = 'checkbox',\n Tag = 'tag',\n HorizontalBar = 'horizontal-bar',\n}\n\nexport interface ObcTableCellDataRegular {\n type: ObcTableCellType.Regular;\n cssPart?: string;\n neutral?: boolean; // If true, the text will be neutral color\n largeIcon?: boolean;\n noWrap?: boolean; // If true, the text will not wrap\n vertical?: boolean; // If true, the text will be displayed vertically\n align?: 'left' | 'center' | 'right';\n text?: string | HTMLTemplateResult;\n title?: string | HTMLTemplateResult;\n icon?: HTMLTemplateResult;\n icon2?: HTMLTemplateResult;\n icon3?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataButton {\n type: ObcTableCellType.Button;\n disabled?: boolean;\n cssPart?: string;\n text?: string;\n icon?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataCheckbox {\n type: ObcTableCellType.Checkbox;\n cssPart?: string;\n label?: string;\n text?: string;\n status?: CheckboxStatus;\n disabled?: boolean;\n ariaDescribedBy?: string;\n align?: 'left' | 'center' | 'right';\n}\n\nexport interface ObcTableTagData {\n id: string;\n label: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n cssPart?: string;\n}\n\nexport interface ObcTableCellDataTag {\n type: ObcTableCellType.Tag;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n label?: string;\n text?: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n tagId?: string;\n tag?: ObcTableTagData;\n tags?: ObcTableTagData[];\n wrap?: boolean;\n maxTags?: number;\n overflowLabel?: string;\n}\n\nexport interface ObcTableCellDataHorizontalBar {\n type: ObcTableCellType.HorizontalBar;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n minValue?: number;\n maxValue?: number;\n value?: number;\n setpoint?: number;\n hasBar?: boolean;\n hasScale?: boolean;\n hideLabels?: boolean;\n priority?: Priority;\n fillMode?: FillMode;\n fillMin?: number;\n fillMax?: number;\n barThickness?: number;\n scaleType?: ScaleType;\n frameStyle?: FrameStyle;\n side?: ExternalScaleSide;\n state?: InstrumentState;\n fixedAspectRatio?: boolean;\n scaleReferenceSize?: number;\n}\n\nexport type ObcTableCellData =\n | ObcTableCellDataRegular\n | ObcTableCellDataButton\n | ObcTableCellDataCheckbox\n | ObcTableCellDataTag\n | ObcTableCellDataHorizontalBar;\n\nexport interface ObcTableRow {\n selected?: boolean;\n id: string;\n [key: string]: ObcTableCellData | boolean | undefined | string;\n}\n\nexport interface ObcTableColumnUnsortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> {\n label: string;\n key: string;\n headerType?: ObcTableHeaderItemType;\n renderHeaderIcon?: () => HTMLTemplateResult;\n renderCell?: (value: T, row: S, rowId: string) => HTMLTemplateResult;\n dividerRight?: boolean;\n}\n\nexport interface ObcTableColumnSortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> extends ObcTableColumnUnsortable<T, S> {\n sortable: true;\n sortDirection?: 'asc' | 'desc';\n compareFunction: (a: T, b: T, aRow: S, bRow: S) => number;\n}\n\nexport type ObcTableColumn<\n T extends ObcTableCellData = ObcTableCellData,\n S extends ObcTableRow = ObcTableRow,\n> = ObcTableColumnUnsortable<T, S> | ObcTableColumnSortable<T, S>;\n\nexport type ObcTableCellClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n}>;\n\nexport type ObcTableCellCheckboxChangeEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n status: CheckboxStatus;\n disabled: boolean;\n}>;\n\nexport type ObcTableCellTagClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n tagId: string;\n}>;\n\nexport type ObcTableSelectionChangeEvent = CustomEvent<{\n selectedRowIds: string[];\n selectedRows: ObcTableRow[];\n source: 'row' | 'header';\n}>;\n\nexport type ObcTableRowClickEvent = CustomEvent<{\n row: ObcTableRow;\n}>;\n\nfunction cssPart(value: ObcTableCellData, subpart: string): string | undefined {\n if (value.cssPart) {\n return `${value.cssPart} ${subpart}`;\n }\n return undefined;\n}\n\n/**\n * `<obc-table>` renders tabular data with configurable columns and cell types.\n *\n * Overview\n * Use this component to display structured datasets with optional selection, sorting, and rich cell\n * rendering. It accepts `data` and `columns` and renders rows based on column configuration.\n *\n * Features/Variants\n * - Selectable rows with header “select all” checkbox via `selectable=true`.\n * - Cell rendering variants: `checkbox`, `tag`, `horizontal-bar`, and `button` cell types.\n * - Visual variants: `rowDivider`, `striped`, `narrowHeader`, and `showHeader`.\n * - Sorting support for sortable columns via column definitions.\n *\n * Usage Guidelines\n * - Controlled selection: pass `selectedRowIds` and update it on `selection-change`.\n * - Uncontrolled selection: pass `defaultSelectedRowIds` and listen to `selection-change`.\n * - Use `selectAllAriaLabel` to customize the header checkbox accessibility label.\n *\n * Slots/Content\n * - This component does not expose public slots. Provide content via `data` and `columns`.\n *\n * Events\n * - `row-click` fires when a row is clicked.\n * - `cell-button-click` fires when a button cell is clicked.\n * - `cell-checkbox-change` fires when a checkbox cell changes.\n * - `cell-tag-click` fires when a tag inside a cell is clicked.\n * - `selection-change` fires when row selection changes (source: `row` or `header`).\n *\n * Best Practices\n * - Keep column `key` values stable across renders to avoid selection or sorting resets.\n * - Prefer `selectedRowIds` for deterministic state in apps with external stores.\n * - For dense tables, combine `narrowHeader` and `rowDivider` for visual clarity.\n *\n * Example (keywords: table, data grid, grid, tabular, datatable)\n * ```ts\n * html`<obc-table\n * .data=${rows}\n * .columns=${columns}\n * selectable\n * striped\n * @selection-change=${onSelectionChange}\n * ></obc-table>`;\n * ```\n *\n * @availableWhen narrowHeader showHeader==true\n * @availableWhen selectedRowIds selectable==true\n * @availableWhen defaultSelectedRowIds selectable==true && selectedRowIds==undefined\n * @availableWhen selectAllAriaLabel selectable==true && showHeader==true\n * @fires {ObcTableRowClickEvent} row-click - Fired when a row is clicked.\n * @fires {ObcTableCellClickEvent} cell-button-click - Fired when a cell button is clicked.\n * @fires {ObcTableCellCheckboxChangeEvent} cell-checkbox-change - Fired when a cell checkbox is changed.\n * @fires {ObcTableCellTagClickEvent} cell-tag-click - Fired when a tag inside a cell is clicked.\n * @fires {ObcTableSelectionChangeEvent} selection-change - Fired when row selection changes.\n * @beta\n */\n@customElement('obc-table')\nexport class ObcTable extends LitElement {\n @property({type: Array}) data: ObcTableRow[] = [];\n @property({type: Array}) columns: ObcTableColumn[] = [];\n @property({type: Boolean}) rowDivider = false;\n @property({type: Boolean}) narrowHeader = false;\n @property({type: Boolean, attribute: false}) showHeader = true;\n @property({type: Boolean}) striped = false;\n @property({type: Boolean}) selectable = false;\n @property({type: Array}) selectedRowIds?: string[];\n @property({type: Array}) defaultSelectedRowIds?: string[];\n @property({type: String}) selectAllAriaLabel = 'Select all rows';\n\n @state()\n private _sortByColumnIdx: number | undefined = undefined;\n\n @state()\n private _sortDirection: 'asc' | 'desc' = 'asc';\n\n @state()\n private _selectedRowIds: Set<string> = new Set();\n\n private _previousPositions: {top: number; index: string}[] = [];\n\n get sortedData() {\n if (this._sortByColumnIdx === undefined) {\n return this.data;\n }\n const sortByColumn = this.columns[this._sortByColumnIdx] as\n | ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n | undefined;\n if (sortByColumn === undefined) {\n console.warn('Sort by column is undefined');\n return this.data;\n }\n const sortDirection = this._sortDirection;\n const sortedData = [...this.data];\n sortedData.sort((a, b) => {\n const aValue = a[sortByColumn.key];\n const bValue = b[sortByColumn.key];\n if (sortDirection === 'asc') {\n return sortByColumn.compareFunction(\n aValue as ObcTableCellData,\n bValue as ObcTableCellData,\n a,\n b\n );\n } else {\n return sortByColumn.compareFunction(\n bValue as ObcTableCellData,\n aValue as ObcTableCellData,\n b,\n a\n );\n }\n });\n return sortedData;\n }\n\n private _handleSortClick(\n column: ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n ) {\n if (!column.sortable) {\n return;\n }\n const newSortColumnIdx = this.columns.indexOf(column);\n if (newSortColumnIdx === this._sortByColumnIdx) {\n this._sortDirection = this._sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortByColumnIdx = newSortColumnIdx;\n this._sortDirection = 'asc';\n }\n }\n\n private _handleRowClick(row: ObcTableRow) {\n this.dispatchEvent(\n new CustomEvent('row-click', {detail: {row}}) as ObcTableRowClickEvent\n );\n }\n\n private _focusFirstRow() {\n const firstRow = this.renderRoot.querySelector<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n );\n firstRow?.focus();\n }\n\n private _focusLeftHeaderItem() {\n this._focusHeaderByIndex(0);\n }\n\n private _focusHeaderByIndex(index: number) {\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n const clampedIndex = Math.max(0, Math.min(index, headers.length - 1));\n const headerItem = headers[clampedIndex];\n const innerButton = (headerItem.shadowRoot?.querySelector('button') ??\n null) as HTMLButtonElement | null;\n (innerButton ?? headerItem).focus();\n }\n\n private _handleHeaderKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (key === 'ArrowDown') {\n this._focusFirstRow();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return;\n }\n\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n\n const currentHeaderEl = event.currentTarget as HTMLElement | null;\n const currentIndex = currentHeaderEl\n ? headers.indexOf(currentHeaderEl)\n : -1;\n if (currentIndex === -1) return;\n\n const nextIndex =\n key === 'ArrowRight'\n ? Math.min(currentIndex + 1, headers.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (nextIndex !== currentIndex) {\n this._focusHeaderByIndex(nextIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'Home' &&\n key !== 'End'\n ) {\n return;\n }\n\n const target = event.currentTarget as HTMLButtonElement | null;\n if (!target) return;\n\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const currentIndex = rows.indexOf(target);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, rows.length - 1);\n break;\n case 'ArrowUp':\n if (currentIndex === 0) {\n this._focusLeftHeaderItem();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = rows.length - 1;\n break;\n }\n\n if (nextIndex !== currentIndex) {\n rows[nextIndex]?.focus();\n event.preventDefault();\n event.stopPropagation();\n } else if (key === 'Home' || key === 'End') {\n // Even if already at boundary, prevent page scroll for Home/End\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _getAllPositions(): {\n top: number;\n height: number;\n index: string;\n element: HTMLButtonElement;\n }[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n // Calculate the zoom factor for the first row\n const firstRow = rows[0];\n if (!firstRow) {\n return [];\n }\n const firstRowRect = firstRow.getBoundingClientRect();\n const firstRowHeight = firstRowRect.height;\n const computedStyle = getComputedStyle(firstRow);\n const computedHeight = parseFloat(computedStyle.height);\n const zoomFactor = computedHeight / firstRowHeight;\n\n return rows.map((row) => {\n const rect = row.getBoundingClientRect();\n return {\n top: rect.top * zoomFactor,\n height: rect.height * zoomFactor,\n index: row.getAttribute('data-row-id') ?? '',\n element: row,\n };\n });\n }\n\n private _animateRowChanges() {\n const previousPositions = this._previousPositions;\n const currentPositions = this._getAllPositions();\n currentPositions.forEach((el) => {\n const previousPosition = previousPositions.find(\n (p) => p.index === el.index\n );\n if (!previousPosition) {\n el.element.style.transform = `translateY(-${el.height}px)`;\n el.element.style.opacity = '0';\n } else {\n el.element.style.transform = `translateY(${previousPosition.top - el.top}px)`;\n }\n el.element.style.transition = 'none';\n // Force a reflow to ensure the animation is applied\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.element.offsetHeight;\n el.element.style.transition =\n 'transform 100ms ease-in-out, opacity 100ms ease-in-out';\n el.element.style.transform = 'translateY(0px)';\n el.element.style.opacity = '1';\n });\n\n this._previousPositions = currentPositions;\n }\n\n private _hasRenderedRows = false;\n\n override willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('defaultSelectedRowIds')) {\n if (\n this.selectedRowIds === undefined &&\n this._selectedRowIds.size === 0\n ) {\n this._selectedRowIds = new Set(this.defaultSelectedRowIds ?? []);\n }\n }\n\n if (changedProperties.has('selectedRowIds')) {\n if (this.selectedRowIds !== undefined) {\n this._selectedRowIds = new Set(this.selectedRowIds);\n }\n }\n\n if (changedProperties.has('data')) {\n const availableIds = new Set(this.data.map((row) => row.id));\n this._selectedRowIds.forEach((id) => {\n if (!availableIds.has(id)) {\n this._selectedRowIds.delete(id);\n }\n });\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._updatePositions();\n } else {\n this.updateComplete.then(() => {\n this._hasRenderedRows = true;\n });\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n if (changedProperties.has('columns')) {\n this._sortByColumnIdx = this.columns.findIndex(\n (col) => 'sortDirection' in col && col.sortDirection !== undefined\n );\n if (this._sortByColumnIdx === -1) {\n this._sortByColumnIdx = undefined;\n this._sortDirection = 'asc';\n } else {\n this._sortDirection =\n (\n this.columns[this._sortByColumnIdx] as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )?.sortDirection ?? 'asc';\n }\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._animateRowChanges();\n }\n }\n }\n\n private _updatePositions() {\n const positions = this._getAllPositions();\n this._previousPositions = positions;\n }\n\n override render() {\n const effectiveColumns = this.selectable\n ? ([\n {\n label: '',\n key: '__selection__',\n } as ObcTableColumn,\n ...this.columns,\n ] as ObcTableColumn[])\n : this.columns;\n const selectionColumnCount = this.selectable\n ? Math.max(0, effectiveColumns.length - 1)\n : effectiveColumns.length;\n return html`\n <div\n class=${classMap({\n 'grid-container': true,\n 'has-selection-column': this.selectable,\n })}\n part=\"grid\"\n style=\"\n --grid-columns: ${effectiveColumns.length};\n --grid-columns-rest: ${selectionColumnCount};\n --selection-column-width: var(--menu-navigation-components-table-item-touch-target-size);\n \"\n role=\"table\"\n >\n ${this.showHeader\n ? html`\n <div class=\"grid-header\" role=\"row\">\n ${effectiveColumns.map((col) => {\n const isSelectionColumn =\n this.selectable && col.key === '__selection__';\n const isNotLast =\n effectiveColumns.indexOf(col) !==\n effectiveColumns.length - 1;\n const icon = col.renderHeaderIcon\n ? html`<span slot=\"leading-icon\"\n >${col.renderHeaderIcon()}</span\n >`\n : nothing;\n\n const columnIndex = this.columns.findIndex(\n (column) => column.key === col.key\n );\n const sorted =\n 'sortable' in col &&\n col.sortable &&\n this._sortByColumnIdx === columnIndex;\n const sortDirection = sorted ? this._sortDirection : 'none';\n const headerType =\n col.headerType ??\n (this.narrowHeader\n ? ObcTableHeaderItemType.Narrow\n : ObcTableHeaderItemType.Regular);\n if ('sortable' in col && col.sortable && !isSelectionColumn) {\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n .sortDirection=${sortDirection}\n .sortable=${true}\n type=${headerType}\n @click=${() =>\n this._handleSortClick(\n col as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )}\n @keydown=${this._handleHeaderKeyDown}\n >${icon}${col.label}</obc-table-header-item\n > `;\n } else {\n if (isSelectionColumn) {\n return html`<div\n role=\"columnheader\"\n class=${classMap({\n 'selection-header': true,\n })}\n tabindex=\"0\"\n @keydown=${this._handleHeaderKeyDown}\n >\n <obc-checkbox\n .status=${this._getSelectionStatus()}\n .disabled=${false}\n aria-label=${this.selectAllAriaLabel}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleAllSelection()}\n ></obc-checkbox>\n </div>`;\n }\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n type=${headerType}\n >${icon}${col.label}</obc-table-header-item\n >`;\n }\n })}\n </div>\n <div class=\"grid-header-divider\"></div>\n `\n : nothing}\n <div\n class=\"grid-body\"\n part=\"body\"\n style=\"grid-template-rows: repeat(${this.sortedData\n .length}, min-content)\"\n >\n ${repeat(\n this.sortedData,\n (row) => row.id,\n (row, rowIndex) => {\n const hasDivider =\n this.rowDivider && this.data.length - 1 !== rowIndex;\n const isStriped = this.striped && rowIndex % 2 === 1;\n const isRowSelected =\n (row.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(row.id));\n const previousRow =\n rowIndex > 0 ? this.sortedData[rowIndex - 1] : undefined;\n const nextRow =\n rowIndex < this.sortedData.length - 1\n ? this.sortedData[rowIndex + 1]\n : undefined;\n const hasSelectedPreviousRow =\n previousRow !== undefined &&\n ((previousRow.selected ?? false) ||\n (this.selectable &&\n this._selectedRowIds.has(previousRow.id)));\n const hasSelectedNextRow =\n nextRow !== undefined &&\n ((nextRow.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(nextRow.id)));\n return html`\n <button\n role=\"row\"\n class=${classMap({\n 'grid-row': true,\n selected: isRowSelected,\n 'selected-with-prev':\n isRowSelected && hasSelectedPreviousRow,\n 'selected-with-next': isRowSelected && hasSelectedNextRow,\n striped: isStriped,\n })}\n @click=${() => this._handleRowClick(row)}\n @keydown=${this._handleRowKeyDown}\n data-row-id=${row.id}\n style=\"grid-row: ${rowIndex + 1}\"\n part=\"row\"\n >\n ${map(effectiveColumns, (col) => {\n if (this.selectable && col.key === '__selection__') {\n const checked = this._selectedRowIds.has(row.id);\n return html`<div\n class=\"grid-cell checkbox align-center selection\"\n role=\"cell\"\n >\n <obc-checkbox\n .status=${checked\n ? CheckboxStatus.checked\n : CheckboxStatus.unchecked}\n .disabled=${false}\n aria-label=${`Select row ${row.id}`}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleRowSelection(row.id)}\n ></obc-checkbox>\n </div>`;\n }\n const value = row[col.key];\n if (value === undefined) {\n return html`<div class=\"grid-cell\" role=\"cell\"></div>`;\n }\n if (col.renderCell) {\n return html`<div\n class=\"grid-cell ${col.dividerRight\n ? 'divider-right'\n : ''}\"\n role=\"cell\"\n part=${ifDefined((value as ObcTableCellData).cssPart)}\n >\n ${col.renderCell(\n value as ObcTableCellData,\n row,\n row.id\n )}\n </div>`;\n } else {\n return this._renderCell(\n value as ObcTableCellData,\n row,\n col\n );\n }\n })}\n ${hasDivider\n ? html`<div class=\"grid-row-divider\"></div>`\n : nothing}\n </button>\n `;\n }\n )}\n ${repeat(\n effectiveColumns,\n (col) => col.key,\n (col, colIndex) =>\n col.dividerRight\n ? html`<div\n class=\"grid-column-divider\"\n style=\"grid-column: ${colIndex + 1}; grid-row: 1/${this\n .sortedData.length + 1}\"\n ></div>`\n : nothing\n )}\n </div>\n </div>\n `;\n }\n\n public getAllVisibleRows(): string[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n const bodyRect = this.renderRoot\n .querySelector('.grid-body')\n ?.getBoundingClientRect();\n if (!bodyRect) {\n return [];\n }\n const scrollTop = bodyRect.top;\n const scrollHeight = bodyRect.height;\n const scrollBottom = scrollTop + scrollHeight;\n return rows\n .filter((el) => el.checkVisibility())\n .filter(\n (el) =>\n el.getBoundingClientRect().top >= scrollTop &&\n el.getBoundingClientRect().bottom <= scrollBottom\n )\n .map((row) => row.getAttribute('data-row-id'))\n .filter((id): id is string => id !== null);\n }\n\n private _handleCellButtonClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellClickEvent = new CustomEvent('cell-button-click', {\n detail: {rowId: row.id, columnKey},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellTagClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string,\n tagId: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellTagClickEvent = new CustomEvent('cell-tag-click', {\n detail: {rowId: row.id, columnKey, tagId},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellCheckboxChange(\n event: ObcCheckboxChangeEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellCheckboxChangeEvent = new CustomEvent(\n 'cell-checkbox-change',\n {\n detail: {\n rowId: row.id,\n columnKey,\n status: event.detail.status,\n disabled: event.detail.disabled,\n },\n }\n );\n this.dispatchEvent(e);\n }\n\n private _getSelectableRowIds(): string[] {\n return this.data.map((row) => row.id);\n }\n\n private _getSelectionStatus(): CheckboxStatus {\n const rowIds = this._getSelectableRowIds();\n if (rowIds.length === 0) return CheckboxStatus.unchecked;\n const selectedCount = rowIds.filter((id) =>\n this._selectedRowIds.has(id)\n ).length;\n if (selectedCount === 0) return CheckboxStatus.unchecked;\n if (selectedCount === rowIds.length) return CheckboxStatus.checked;\n return CheckboxStatus.mixed;\n }\n\n private _emitSelectionChange(\n selectedRowIds: string[],\n source: 'row' | 'header'\n ) {\n const selectedRows = this.data.filter((row) =>\n selectedRowIds.includes(row.id)\n );\n const e: ObcTableSelectionChangeEvent = new CustomEvent(\n 'selection-change',\n {\n detail: {selectedRowIds, selectedRows, source},\n }\n );\n this.dispatchEvent(e);\n }\n\n private _applySelectionChange(\n nextSelection: Set<string>,\n source: 'row' | 'header'\n ) {\n const selectedRowIds = Array.from(nextSelection);\n this._emitSelectionChange(selectedRowIds, source);\n if (this.selectedRowIds === undefined) {\n this._selectedRowIds = nextSelection;\n this.requestUpdate();\n }\n }\n\n private _toggleRowSelection(rowId: string) {\n const nextSelection = new Set(this._selectedRowIds);\n if (nextSelection.has(rowId)) {\n nextSelection.delete(rowId);\n } else {\n nextSelection.add(rowId);\n }\n this._applySelectionChange(nextSelection, 'row');\n }\n\n private _toggleAllSelection() {\n const rowIds = this._getSelectableRowIds();\n const status = this._getSelectionStatus();\n const nextSelection =\n status === CheckboxStatus.checked ? new Set<string>() : new Set(rowIds);\n this._applySelectionChange(nextSelection, 'header');\n }\n\n private _renderCell(\n value: ObcTableCellData,\n row: ObcTableRow,\n column: ObcTableColumn<ObcTableCellData, ObcTableRow>\n ) {\n if (value.type === ObcTableCellType.Regular) {\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n regular: true,\n neutral: value.neutral ?? false,\n 'large-icon': value.largeIcon ?? false,\n 'no-wrap': value.noWrap ?? false,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n vertical: value.vertical ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${value.icon3\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon3'))}\n >${value.icon3}</span\n >`\n : nothing}\n ${value.icon2\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon2'))}\n >${value.icon2}</span\n >`\n : nothing}\n ${value.icon\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.title\n ? html`<span class=\"title\" part=${ifDefined(cssPart(value, 'title'))}\n >${value.title}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.Button) {\n return html`<div\n class=\"grid-cell button ${column.dividerRight ? 'divider-right' : ''}\"\n role=\"cell\"\n >\n <obc-button\n variant=\"normal\"\n fullWidth\n .disabled=${value.disabled ?? false}\n ?showLeadingIcon=${value.icon !== undefined}\n part=${ifDefined(cssPart(value, 'button'))}\n @click=${(event: MouseEvent) =>\n this._handleCellButtonClick(event, row, column.key)}\n >\n ${value.icon\n ? html`<span\n slot=\"leading-icon\"\n part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </obc-button>\n </div>`;\n } else if (value.type === ObcTableCellType.Checkbox) {\n const checkboxLabel = value.label ?? value.text ?? '';\n const ariaLabel =\n checkboxLabel.trim() || column.label?.trim() || 'Checkbox';\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n checkbox: true,\n [`align-${value.align ?? 'center'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n <obc-checkbox\n .status=${value.status ?? CheckboxStatus.unchecked}\n .disabled=${value.disabled ?? false}\n aria-describedby=${ifDefined(value.ariaDescribedBy)}\n aria-label=${ariaLabel}\n part=${ifDefined(cssPart(value, 'checkbox'))}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${(event: ObcCheckboxChangeEvent) =>\n this._handleCellCheckboxChange(event, row, column.key)}\n ></obc-checkbox>\n </div>`;\n } else if (value.type === ObcTableCellType.Tag) {\n const tags: ObcTableTagData[] = value.tags ??\n (value.tag ? [value.tag] : undefined) ?? [\n {\n id: value.tagId ?? 'tag',\n label: value.label ?? value.text ?? 'Label',\n color: value.color,\n hasIcon: value.hasIcon,\n icon: value.icon,\n },\n ];\n const wrap = value.wrap ?? value.tags !== undefined;\n const defaultMaxTags = value.tags ? 2 : undefined;\n const maxTags =\n (value.maxTags ?? defaultMaxTags) !== undefined\n ? Math.max(0, Math.floor(value.maxTags ?? defaultMaxTags ?? 0))\n : undefined;\n const visibleTags = maxTags !== undefined ? tags.slice(0, maxTags) : tags;\n const overflowCount =\n maxTags !== undefined ? Math.max(0, tags.length - maxTags) : 0;\n const overflowLabel =\n value.overflowLabel ?? `+${overflowCount.toString()}`;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n tags: tags.length > 1,\n wrap,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${visibleTags.map((tag) => {\n const hasIcon = tag.hasIcon ?? tag.icon !== undefined;\n return html`<obc-tag\n .label=${tag.label}\n color=${tag.color ?? TagColor.gray}\n ?hasIcon=${hasIcon}\n part=${ifDefined(\n [cssPart(value, 'tag'), tag.cssPart].filter(Boolean).join(' ') ||\n undefined\n )}\n @click=${(event: MouseEvent) =>\n this._handleCellTagClick(event, row, column.key, tag.id)}\n >\n ${hasIcon && tag.icon ? tag.icon : nothing}\n </obc-tag>`;\n })}\n ${overflowCount > 0\n ? html`<span\n class=\"tag-overflow\"\n part=${ifDefined(cssPart(value, 'tag-overflow'))}\n >${overflowLabel}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.HorizontalBar) {\n const hasBar = value.hasBar ?? true;\n const hasScale = value.hasScale ?? false;\n const showLabels = !(value.hideLabels ?? true);\n const fixedAspectRatio = value.fixedAspectRatio ?? true;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n 'horizontal-bar': true,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n <obc-bar-horizontal\n .minValue=${value.minValue ?? 0}\n .maxValue=${value.maxValue ?? 100}\n .value=${value.value}\n .setpoint=${value.setpoint}\n .hasBar=${hasBar}\n .hasScale=${hasScale}\n .showLabels=${showLabels}\n .priority=${value.priority ?? Priority.regular}\n .fillMode=${value.fillMode ?? FillMode.fill}\n .fillMin=${value.fillMin}\n .fillMax=${value.fillMax}\n .barThickness=${value.barThickness ?? 24}\n .scaleType=${value.scaleType ?? ScaleType.regular}\n .frameStyle=${value.frameStyle ?? FrameStyle.regular}\n .side=${value.side ?? ExternalScaleSide.bottom}\n .state=${value.state ?? InstrumentState.active}\n .fixedAspectRatio=${fixedAspectRatio}\n .scaleReferenceSize=${value.scaleReferenceSize ?? 384}\n part=${ifDefined(cssPart(value, 'bar'))}\n ></obc-bar-horizontal>\n </div>`;\n } else {\n return nothing;\n }\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-table': ObcTable;\n }\n}\n"],"names":["ObcTableCellType"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../../src/components/table/table.ts"],"sourcesContent":["import {\n html,\n HTMLTemplateResult,\n LitElement,\n nothing,\n PropertyValues,\n unsafeCSS,\n} from 'lit';\nimport {customElement} from '../../decorator.js';\nimport compentStyle from './table.css?inline';\nimport {property, state} from 'lit/decorators.js';\nimport '../table-header-item/table-header-item.js';\nimport {ObcTableHeaderItemType} from '../table-header-item/table-header-item.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport '../button/button.js';\nimport '../../icons/icon-chevron-right-google.js';\nimport {CheckboxStatus, ObcCheckboxChangeEvent} from '../checkbox/checkbox.js';\nimport {TagColor} from '../tag/tag.js';\nimport '../../building-blocks/bar-horizontal/bar-horizontal.js';\nimport {repeat} from 'lit/directives/repeat.js';\nimport {map} from 'lit/directives/map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {\n ExternalScaleSide,\n FillMode,\n FrameStyle,\n InstrumentState,\n Priority,\n ScaleType,\n} from '../../building-blocks/bar-horizontal/bar-horizontal.js';\n\nexport enum ObcTableCellType {\n Regular = 'regular',\n Button = 'button',\n Checkbox = 'checkbox',\n Tag = 'tag',\n HorizontalBar = 'horizontal-bar',\n}\n\nexport interface ObcTableCellDataRegular {\n type: ObcTableCellType.Regular;\n cssPart?: string;\n neutral?: boolean; // If true, the text will be neutral color\n largeIcon?: boolean;\n noWrap?: boolean; // If true, the text will not wrap\n vertical?: boolean; // If true, the text will be displayed vertically\n align?: 'left' | 'center' | 'right';\n text?: string | HTMLTemplateResult;\n title?: string | HTMLTemplateResult;\n icon?: HTMLTemplateResult;\n icon2?: HTMLTemplateResult;\n icon3?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataButton {\n type: ObcTableCellType.Button;\n disabled?: boolean;\n cssPart?: string;\n text?: string;\n icon?: HTMLTemplateResult;\n}\n\nexport interface ObcTableCellDataCheckbox {\n type: ObcTableCellType.Checkbox;\n cssPart?: string;\n label?: string;\n text?: string;\n status?: CheckboxStatus;\n disabled?: boolean;\n ariaDescribedBy?: string;\n align?: 'left' | 'center' | 'right';\n}\n\nexport interface ObcTableTagData {\n id: string;\n label: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n cssPart?: string;\n}\n\nexport interface ObcTableCellDataTag {\n type: ObcTableCellType.Tag;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n label?: string;\n text?: string;\n color?: TagColor;\n hasIcon?: boolean;\n icon?: HTMLTemplateResult;\n tagId?: string;\n tag?: ObcTableTagData;\n tags?: ObcTableTagData[];\n wrap?: boolean;\n maxTags?: number;\n overflowLabel?: string;\n}\n\nexport interface ObcTableCellDataHorizontalBar {\n type: ObcTableCellType.HorizontalBar;\n cssPart?: string;\n align?: 'left' | 'center' | 'right';\n minValue?: number;\n maxValue?: number;\n value?: number;\n setpoint?: number;\n hasBar?: boolean;\n hasScale?: boolean;\n hideLabels?: boolean;\n priority?: Priority;\n fillMode?: FillMode;\n fillMin?: number;\n fillMax?: number;\n barThickness?: number;\n scaleType?: ScaleType;\n frameStyle?: FrameStyle;\n side?: ExternalScaleSide;\n state?: InstrumentState;\n fixedAspectRatio?: boolean;\n scaleReferenceSize?: number;\n}\n\nexport type ObcTableCellData =\n | ObcTableCellDataRegular\n | ObcTableCellDataButton\n | ObcTableCellDataCheckbox\n | ObcTableCellDataTag\n | ObcTableCellDataHorizontalBar;\n\nexport interface ObcTableRow {\n selected?: boolean;\n id: string;\n parentId?: string;\n level?: number;\n expandable?: boolean;\n expanded?: boolean;\n [key: string]: ObcTableCellData | boolean | undefined | string | number;\n}\n\nexport interface ObcTableColumnUnsortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> {\n label: string;\n key: string;\n headerType?: ObcTableHeaderItemType;\n renderHeaderIcon?: () => HTMLTemplateResult;\n renderCell?: (value: T, row: S, rowId: string) => HTMLTemplateResult;\n dividerRight?: boolean;\n}\n\nexport interface ObcTableColumnSortable<\n T extends ObcTableCellData,\n S extends ObcTableRow,\n> extends ObcTableColumnUnsortable<T, S> {\n sortable: true;\n sortDirection?: 'asc' | 'desc';\n compareFunction: (a: T, b: T, aRow: S, bRow: S) => number;\n}\n\nexport type ObcTableColumn<\n T extends ObcTableCellData = ObcTableCellData,\n S extends ObcTableRow = ObcTableRow,\n> = ObcTableColumnUnsortable<T, S> | ObcTableColumnSortable<T, S>;\n\nexport type ObcTableCellClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n}>;\n\nexport type ObcTableCellCheckboxChangeEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n status: CheckboxStatus;\n disabled: boolean;\n}>;\n\nexport type ObcTableCellTagClickEvent = CustomEvent<{\n rowId: string;\n columnKey: string;\n tagId: string;\n}>;\n\nexport type ObcTableSelectionChangeEvent = CustomEvent<{\n selectedRowIds: string[];\n selectedRows: ObcTableRow[];\n source: 'row' | 'header';\n}>;\n\nexport type ObcTableRowClickEvent = CustomEvent<{\n row: ObcTableRow;\n}>;\n\nexport type ObcTableExpandToggleEvent = CustomEvent<{\n rowId: string;\n expanded: boolean;\n}>;\n\nfunction cssPart(value: ObcTableCellData, subpart: string): string | undefined {\n if (value.cssPart) {\n return `${value.cssPart} ${subpart}`;\n }\n return undefined;\n}\n\n/**\n * `<obc-table>` renders tabular data with configurable columns and cell types.\n *\n * Overview\n * Use this component to display structured datasets with optional selection, sorting, and rich cell\n * rendering. It accepts `data` and `columns` and renders rows based on column configuration.\n *\n * Features/Variants\n * - Selectable rows with header “select all” checkbox via `selectable=true`.\n * - Cell rendering variants: `checkbox`, `tag`, `horizontal-bar`, and `button` cell types.\n * - Visual variants: `rowDivider`, `striped`, `narrowHeader`, and `showHeader`.\n * - Sorting support for sortable columns via column definitions.\n * - Hierarchical rows via `parentId`, `level`, `expandable` and `expanded`.\n *\n * Usage Guidelines\n * - Controlled selection: pass `selectedRowIds` and update it on `selection-change`.\n * - Uncontrolled selection: pass `defaultSelectedRowIds` and listen to `selection-change`.\n * - Use `selectAllAriaLabel` to customize the header checkbox accessibility label.\n * - Hierarchy is controlled, and flat: pass only the rows that are currently\n * visible, each with the `parentId` of its parent row, and drop a collapsed\n * group's descendants from `data` on `expand-toggle`. The table draws the\n * indent and the chevron, keeps each sibling set sorted within its parent,\n * and owns no expansion state of its own.\n *\n * Slots/Content\n * - This component does not expose public slots. Provide content via `data` and `columns`.\n *\n * Events\n * - `row-click` fires when a row is clicked.\n * - `cell-button-click` fires when a button cell is clicked.\n * - `cell-checkbox-change` fires when a checkbox cell changes.\n * - `cell-tag-click` fires when a tag inside a cell is clicked.\n * - `selection-change` fires when row selection changes (source: `row` or `header`).\n * - `expand-toggle` fires when a group row's chevron or expand key is used.\n *\n * Accessibility\n * A table with hierarchical rows renders as a\n * [treegrid](https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/): rows carry\n * `aria-level`, and group rows `aria-expanded`. Right expands a collapsed\n * group, Left collapses an expanded one or moves to the parent row. Cell-level\n * arrow navigation, which the full pattern also specifies, is out of scope —\n * arrow keys move between rows, matching the flat table.\n *\n * Best Practices\n * - Keep column `key` values stable across renders to avoid selection or sorting resets.\n * - Prefer `selectedRowIds` for deterministic state in apps with external stores.\n * - For dense tables, combine `narrowHeader` and `rowDivider` for visual clarity.\n *\n * Example (keywords: table, data grid, grid, tabular, datatable)\n * ```ts\n * html`<obc-table\n * .data=${rows}\n * .columns=${columns}\n * selectable\n * striped\n * @selection-change=${onSelectionChange}\n * ></obc-table>`;\n * ```\n *\n * @availableWhen narrowHeader showHeader==true\n * @availableWhen selectedRowIds selectable==true\n * @availableWhen defaultSelectedRowIds selectable==true && selectedRowIds==undefined\n * @availableWhen selectAllAriaLabel selectable==true && showHeader==true\n * @fires {ObcTableRowClickEvent} row-click - Fired when a row is clicked.\n * @fires {ObcTableCellClickEvent} cell-button-click - Fired when a cell button is clicked.\n * @fires {ObcTableCellCheckboxChangeEvent} cell-checkbox-change - Fired when a cell checkbox is changed.\n * @fires {ObcTableCellTagClickEvent} cell-tag-click - Fired when a tag inside a cell is clicked.\n * @fires {ObcTableSelectionChangeEvent} selection-change - Fired when row selection changes.\n * @fires {ObcTableExpandToggleEvent} expand-toggle - Fired when a group row is expanded or collapsed.\n * @beta\n */\n@customElement('obc-table')\nexport class ObcTable extends LitElement {\n @property({type: Array}) data: ObcTableRow[] = [];\n @property({type: Array}) columns: ObcTableColumn[] = [];\n @property({type: Boolean}) rowDivider = false;\n @property({type: Boolean}) narrowHeader = false;\n @property({type: Boolean, attribute: false}) showHeader = true;\n @property({type: Boolean}) striped = false;\n @property({type: Boolean}) selectable = false;\n @property({type: Array}) selectedRowIds?: string[];\n @property({type: Array}) defaultSelectedRowIds?: string[];\n @property({type: String}) selectAllAriaLabel = 'Select all rows';\n\n @state()\n private _sortByColumnIdx: number | undefined = undefined;\n\n @state()\n private _sortDirection: 'asc' | 'desc' = 'asc';\n\n @state()\n private _selectedRowIds: Set<string> = new Set();\n\n private _previousPositions: {top: number; index: string}[] = [];\n\n private get hasHierarchy() {\n return this.data.some(\n (row) =>\n row.parentId !== undefined ||\n (row.level ?? 0) > 0 ||\n row.expandable === true\n );\n }\n\n private sortWithinSiblings(\n rows: ObcTableRow[],\n compare: (a: ObcTableRow, b: ObcTableRow) => number\n ) {\n const ids = new Set(rows.map((row) => row.id));\n const childrenByParent = new Map<string, ObcTableRow[]>();\n const roots: ObcTableRow[] = [];\n for (const row of rows) {\n const parentId = row.parentId;\n if (parentId !== undefined && parentId !== row.id && ids.has(parentId)) {\n const siblings = childrenByParent.get(parentId) ?? [];\n siblings.push(row);\n childrenByParent.set(parentId, siblings);\n } else {\n roots.push(row);\n }\n }\n\n const sorted: ObcTableRow[] = [];\n const visited = new Set<string>();\n const visit = (siblings: ObcTableRow[]) => {\n for (const row of [...siblings].sort(compare)) {\n if (visited.has(row.id)) {\n continue;\n }\n visited.add(row.id);\n sorted.push(row);\n visit(childrenByParent.get(row.id) ?? []);\n }\n };\n visit(roots);\n visit(rows.filter((row) => !visited.has(row.id)));\n return sorted;\n }\n\n get sortedData() {\n if (this._sortByColumnIdx === undefined) {\n return this.data;\n }\n const sortByColumn = this.columns[this._sortByColumnIdx] as\n | ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n | undefined;\n if (sortByColumn === undefined) {\n console.warn('Sort by column is undefined');\n return this.data;\n }\n const sortDirection = this._sortDirection;\n const compare = (a: ObcTableRow, b: ObcTableRow) => {\n const aValue = a[sortByColumn.key];\n const bValue = b[sortByColumn.key];\n if (sortDirection === 'asc') {\n return sortByColumn.compareFunction(\n aValue as ObcTableCellData,\n bValue as ObcTableCellData,\n a,\n b\n );\n } else {\n return sortByColumn.compareFunction(\n bValue as ObcTableCellData,\n aValue as ObcTableCellData,\n b,\n a\n );\n }\n };\n if (this.hasHierarchy) {\n return this.sortWithinSiblings(this.data, compare);\n }\n const sortedData = [...this.data];\n sortedData.sort(compare);\n return sortedData;\n }\n\n private _handleSortClick(\n column: ObcTableColumnSortable<ObcTableCellData, ObcTableRow>\n ) {\n if (!column.sortable) {\n return;\n }\n const newSortColumnIdx = this.columns.indexOf(column);\n if (newSortColumnIdx === this._sortByColumnIdx) {\n this._sortDirection = this._sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this._sortByColumnIdx = newSortColumnIdx;\n this._sortDirection = 'asc';\n }\n }\n\n private _handleRowClick(row: ObcTableRow) {\n this.dispatchEvent(\n new CustomEvent('row-click', {detail: {row}}) as ObcTableRowClickEvent\n );\n }\n\n private _handleExpandToggle(row: ObcTableRow, expanded: boolean) {\n if (!row.expandable) {\n return;\n }\n this.dispatchEvent(\n new CustomEvent('expand-toggle', {\n detail: {rowId: row.id, expanded},\n }) as ObcTableExpandToggleEvent\n );\n }\n\n private _renderRowExpander(row: ObcTableRow) {\n if (!this.hasHierarchy) {\n return nothing;\n }\n const level = row.level ?? 0;\n return html`<span\n class=\"row-expander\"\n style=\"--row-level: ${level}\"\n aria-hidden=\"true\"\n >\n ${row.expandable\n ? html`<span\n class=${classMap({chevron: true, expanded: row.expanded ?? false})}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this._handleExpandToggle(row, !(row.expanded ?? false));\n }}\n >\n <obi-chevron-right-google></obi-chevron-right-google>\n </span>`\n : nothing}\n </span>`;\n }\n\n private _focusFirstRow() {\n const firstRow = this.renderRoot.querySelector<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n );\n firstRow?.focus();\n }\n\n private _focusLeftHeaderItem() {\n this._focusHeaderByIndex(0);\n }\n\n private _focusHeaderByIndex(index: number) {\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n const clampedIndex = Math.max(0, Math.min(index, headers.length - 1));\n const headerItem = headers[clampedIndex];\n const innerButton = (headerItem.shadowRoot?.querySelector('button') ??\n null) as HTMLButtonElement | null;\n (innerButton ?? headerItem).focus();\n }\n\n private _handleHeaderKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (key === 'ArrowDown') {\n this._focusFirstRow();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight') {\n return;\n }\n\n const headers = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>(\n '.grid-header [role=\"columnheader\"]'\n )\n );\n if (headers.length === 0) return;\n\n const currentHeaderEl = event.currentTarget as HTMLElement | null;\n const currentIndex = currentHeaderEl\n ? headers.indexOf(currentHeaderEl)\n : -1;\n if (currentIndex === -1) return;\n\n const nextIndex =\n key === 'ArrowRight'\n ? Math.min(currentIndex + 1, headers.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (nextIndex !== currentIndex) {\n this._focusHeaderByIndex(nextIndex);\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowKeyDown(event: KeyboardEvent) {\n const key = event.key;\n if (\n this.hasHierarchy &&\n (key === 'ArrowRight' || key === 'ArrowLeft') &&\n this._handleRowExpandKey(event, key)\n ) {\n return;\n }\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'Home' &&\n key !== 'End'\n ) {\n return;\n }\n\n const target = event.currentTarget as HTMLButtonElement | null;\n if (!target) return;\n\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const currentIndex = rows.indexOf(target);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, rows.length - 1);\n break;\n case 'ArrowUp':\n if (currentIndex === 0) {\n this._focusLeftHeaderItem();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = rows.length - 1;\n break;\n }\n\n if (nextIndex !== currentIndex) {\n rows[nextIndex]?.focus();\n event.preventDefault();\n event.stopPropagation();\n } else if (key === 'Home' || key === 'End') {\n // Even if already at boundary, prevent page scroll for Home/End\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private _handleRowExpandKey(\n event: KeyboardEvent,\n key: 'ArrowRight' | 'ArrowLeft'\n ) {\n const target = event.currentTarget as HTMLButtonElement | null;\n const rowId = target?.dataset.rowId;\n const row = this.sortedData.find((candidate) => candidate.id === rowId);\n if (!row) return false;\n\n const expanded = row.expanded ?? false;\n if (key === 'ArrowRight' && row.expandable && !expanded) {\n this._handleExpandToggle(row, true);\n } else if (key === 'ArrowLeft' && row.expandable && expanded) {\n this._handleExpandToggle(row, false);\n } else if (key === 'ArrowLeft') {\n const parent = this.renderRoot.querySelector<HTMLButtonElement>(\n `button[role=\"row\"].grid-row[data-row-id=\"${CSS.escape(\n row.parentId ?? ''\n )}\"]`\n );\n if (!parent) return false;\n parent.focus();\n } else {\n return false;\n }\n\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n\n private _getAllPositions(): {\n top: number;\n height: number;\n index: string;\n element: HTMLButtonElement;\n }[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n\n const firstRow = rows[0];\n if (!firstRow) {\n return [];\n }\n const firstRowRect = firstRow.getBoundingClientRect();\n const firstRowHeight = firstRowRect.height;\n const computedStyle = getComputedStyle(firstRow);\n const computedHeight = parseFloat(computedStyle.height);\n const zoomFactor = computedHeight / firstRowHeight;\n\n return rows.map((row) => {\n const rect = row.getBoundingClientRect();\n return {\n top: rect.top * zoomFactor,\n height: rect.height * zoomFactor,\n index: row.getAttribute('data-row-id') ?? '',\n element: row,\n };\n });\n }\n\n private _animateRowChanges() {\n const previousPositions = this._previousPositions;\n const currentPositions = this._getAllPositions();\n currentPositions.forEach((el) => {\n const previousPosition = previousPositions.find(\n (p) => p.index === el.index\n );\n if (!previousPosition) {\n el.element.style.transform = `translateY(-${el.height}px)`;\n el.element.style.opacity = '0';\n } else {\n el.element.style.transform = `translateY(${previousPosition.top - el.top}px)`;\n }\n el.element.style.transition = 'none';\n // Force a reflow to ensure the animation is applied\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.element.offsetHeight;\n el.element.style.transition =\n 'transform 100ms ease-in-out, opacity 100ms ease-in-out';\n el.element.style.transform = 'translateY(0px)';\n el.element.style.opacity = '1';\n });\n\n this._previousPositions = currentPositions;\n }\n\n private _hasRenderedRows = false;\n\n override willUpdate(changedProperties: PropertyValues) {\n if (changedProperties.has('defaultSelectedRowIds')) {\n if (\n this.selectedRowIds === undefined &&\n this._selectedRowIds.size === 0\n ) {\n this._selectedRowIds = new Set(this.defaultSelectedRowIds ?? []);\n }\n }\n\n if (changedProperties.has('selectedRowIds')) {\n if (this.selectedRowIds !== undefined) {\n this._selectedRowIds = new Set(this.selectedRowIds);\n }\n }\n\n if (changedProperties.has('data')) {\n const availableIds = new Set(this.data.map((row) => row.id));\n this._selectedRowIds.forEach((id) => {\n if (!availableIds.has(id)) {\n this._selectedRowIds.delete(id);\n }\n });\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._updatePositions();\n } else {\n this.updateComplete.then(() => {\n this._hasRenderedRows = true;\n });\n }\n }\n }\n\n override updated(changedProperties: PropertyValues) {\n if (changedProperties.has('columns')) {\n this._sortByColumnIdx = this.columns.findIndex(\n (col) => 'sortDirection' in col && col.sortDirection !== undefined\n );\n if (this._sortByColumnIdx === -1) {\n this._sortByColumnIdx = undefined;\n this._sortDirection = 'asc';\n } else {\n this._sortDirection =\n (\n this.columns[this._sortByColumnIdx] as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )?.sortDirection ?? 'asc';\n }\n }\n\n if (\n changedProperties.has('data') ||\n changedProperties.has('_sortByColumnIdx') ||\n changedProperties.has('_sortDirection')\n ) {\n if (this._hasRenderedRows) {\n this._animateRowChanges();\n }\n }\n }\n\n private _updatePositions() {\n const positions = this._getAllPositions();\n this._previousPositions = positions;\n }\n\n override render() {\n const effectiveColumns = this.selectable\n ? ([\n {\n label: '',\n key: '__selection__',\n } as ObcTableColumn,\n ...this.columns,\n ] as ObcTableColumn[])\n : this.columns;\n const selectionColumnCount = this.selectable\n ? Math.max(0, effectiveColumns.length - 1)\n : effectiveColumns.length;\n return html`\n <div\n class=${classMap({\n 'grid-container': true,\n 'has-selection-column': this.selectable,\n })}\n part=\"grid\"\n style=\"\n --grid-columns: ${effectiveColumns.length};\n --grid-columns-rest: ${selectionColumnCount};\n --selection-column-width: var(--menu-navigation-components-table-item-touch-target-size);\n \"\n role=${this.hasHierarchy ? 'treegrid' : 'table'}\n >\n ${this.showHeader\n ? html`\n <div class=\"grid-header\" role=\"row\">\n ${effectiveColumns.map((col) => {\n const isSelectionColumn =\n this.selectable && col.key === '__selection__';\n const isNotLast =\n effectiveColumns.indexOf(col) !==\n effectiveColumns.length - 1;\n const icon = col.renderHeaderIcon\n ? html`<span slot=\"leading-icon\"\n >${col.renderHeaderIcon()}</span\n >`\n : nothing;\n\n const columnIndex = this.columns.findIndex(\n (column) => column.key === col.key\n );\n const sorted =\n 'sortable' in col &&\n col.sortable &&\n this._sortByColumnIdx === columnIndex;\n const sortDirection = sorted ? this._sortDirection : 'none';\n const headerType =\n col.headerType ??\n (this.narrowHeader\n ? ObcTableHeaderItemType.Narrow\n : ObcTableHeaderItemType.Regular);\n if ('sortable' in col && col.sortable && !isSelectionColumn) {\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n .sortDirection=${sortDirection}\n .sortable=${true}\n type=${headerType}\n @click=${() =>\n this._handleSortClick(\n col as ObcTableColumnSortable<\n ObcTableCellData,\n ObcTableRow\n >\n )}\n @keydown=${this._handleHeaderKeyDown}\n >${icon}${col.label}</obc-table-header-item\n > `;\n } else {\n if (isSelectionColumn) {\n return html`<div\n role=\"columnheader\"\n class=${classMap({\n 'selection-header': true,\n })}\n tabindex=\"0\"\n @keydown=${this._handleHeaderKeyDown}\n >\n <obc-checkbox\n .status=${this._getSelectionStatus()}\n .disabled=${false}\n aria-label=${this.selectAllAriaLabel}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleAllSelection()}\n ></obc-checkbox>\n </div>`;\n }\n return html`<obc-table-header-item\n role=\"columnheader\"\n class=${isSelectionColumn ? 'selection-header' : ''}\n .showDivider=${isNotLast}\n ?hasLeadingIcon=${icon !== nothing}\n type=${headerType}\n >${icon}${col.label}</obc-table-header-item\n >`;\n }\n })}\n </div>\n <div class=\"grid-header-divider\"></div>\n `\n : nothing}\n <div\n class=\"grid-body\"\n part=\"body\"\n style=\"grid-template-rows: repeat(${this.sortedData\n .length}, min-content)\"\n >\n ${repeat(\n this.sortedData,\n (row) => row.id,\n (row, rowIndex) => {\n const hasDivider =\n this.rowDivider && this.data.length - 1 !== rowIndex;\n const isStriped = this.striped && rowIndex % 2 === 1;\n const isRowSelected =\n (row.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(row.id));\n const previousRow =\n rowIndex > 0 ? this.sortedData[rowIndex - 1] : undefined;\n const nextRow =\n rowIndex < this.sortedData.length - 1\n ? this.sortedData[rowIndex + 1]\n : undefined;\n const hasSelectedPreviousRow =\n previousRow !== undefined &&\n ((previousRow.selected ?? false) ||\n (this.selectable &&\n this._selectedRowIds.has(previousRow.id)));\n const hasSelectedNextRow =\n nextRow !== undefined &&\n ((nextRow.selected ?? false) ||\n (this.selectable && this._selectedRowIds.has(nextRow.id)));\n return html`\n <button\n role=\"row\"\n class=${classMap({\n 'grid-row': true,\n selected: isRowSelected,\n 'selected-with-prev':\n isRowSelected && hasSelectedPreviousRow,\n 'selected-with-next': isRowSelected && hasSelectedNextRow,\n striped: isStriped,\n })}\n @click=${() => this._handleRowClick(row)}\n @keydown=${this._handleRowKeyDown}\n data-row-id=${row.id}\n style=\"grid-row: ${rowIndex + 1}\"\n part=\"row\"\n aria-level=${ifDefined(\n this.hasHierarchy ? (row.level ?? 0) + 1 : undefined\n )}\n aria-expanded=${ifDefined(\n row.expandable ? (row.expanded ?? false) : undefined\n )}\n >\n ${map(effectiveColumns, (col, colIndex) => {\n const expander =\n colIndex === (this.selectable ? 1 : 0)\n ? this._renderRowExpander(row)\n : nothing;\n if (this.selectable && col.key === '__selection__') {\n const checked = this._selectedRowIds.has(row.id);\n return html`<div\n class=\"grid-cell checkbox align-center selection\"\n role=\"cell\"\n >\n <obc-checkbox\n .status=${checked\n ? CheckboxStatus.checked\n : CheckboxStatus.unchecked}\n .disabled=${false}\n aria-label=${`Select row ${row.id}`}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${() => this._toggleRowSelection(row.id)}\n ></obc-checkbox>\n </div>`;\n }\n const value = row[col.key];\n if (value === undefined) {\n return html`<div class=\"grid-cell\" role=\"cell\">\n ${expander}\n </div>`;\n }\n if (col.renderCell) {\n return html`<div\n class=\"grid-cell ${col.dividerRight\n ? 'divider-right'\n : ''}\"\n role=\"cell\"\n part=${ifDefined((value as ObcTableCellData).cssPart)}\n >\n ${expander}${col.renderCell(\n value as ObcTableCellData,\n row,\n row.id\n )}\n </div>`;\n } else {\n return this._renderCell(\n value as ObcTableCellData,\n row,\n col,\n expander\n );\n }\n })}\n ${hasDivider\n ? html`<div class=\"grid-row-divider\"></div>`\n : nothing}\n </button>\n `;\n }\n )}\n ${repeat(\n effectiveColumns,\n (col) => col.key,\n (col, colIndex) =>\n col.dividerRight\n ? html`<div\n class=\"grid-column-divider\"\n style=\"grid-column: ${colIndex + 1}; grid-row: 1/${this\n .sortedData.length + 1}\"\n ></div>`\n : nothing\n )}\n </div>\n </div>\n `;\n }\n\n public getAllVisibleRows(): string[] {\n const rows = Array.from(\n this.renderRoot.querySelectorAll<HTMLButtonElement>(\n 'button[role=\"row\"].grid-row'\n )\n );\n const bodyRect = this.renderRoot\n .querySelector('.grid-body')\n ?.getBoundingClientRect();\n if (!bodyRect) {\n return [];\n }\n const scrollTop = bodyRect.top;\n const scrollHeight = bodyRect.height;\n const scrollBottom = scrollTop + scrollHeight;\n return rows\n .filter((el) => el.checkVisibility())\n .filter(\n (el) =>\n el.getBoundingClientRect().top >= scrollTop &&\n el.getBoundingClientRect().bottom <= scrollBottom\n )\n .map((row) => row.getAttribute('data-row-id'))\n .filter((id): id is string => id !== null);\n }\n\n private _handleCellButtonClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellClickEvent = new CustomEvent('cell-button-click', {\n detail: {rowId: row.id, columnKey},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellTagClick(\n event: MouseEvent,\n row: ObcTableRow,\n columnKey: string,\n tagId: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellTagClickEvent = new CustomEvent('cell-tag-click', {\n detail: {rowId: row.id, columnKey, tagId},\n });\n this.dispatchEvent(e);\n }\n\n private _handleCellCheckboxChange(\n event: ObcCheckboxChangeEvent,\n row: ObcTableRow,\n columnKey: string\n ) {\n event.preventDefault();\n event.stopPropagation();\n const e: ObcTableCellCheckboxChangeEvent = new CustomEvent(\n 'cell-checkbox-change',\n {\n detail: {\n rowId: row.id,\n columnKey,\n status: event.detail.status,\n disabled: event.detail.disabled,\n },\n }\n );\n this.dispatchEvent(e);\n }\n\n private _getSelectableRowIds(): string[] {\n return this.data.map((row) => row.id);\n }\n\n private _getSelectionStatus(): CheckboxStatus {\n const rowIds = this._getSelectableRowIds();\n if (rowIds.length === 0) return CheckboxStatus.unchecked;\n const selectedCount = rowIds.filter((id) =>\n this._selectedRowIds.has(id)\n ).length;\n if (selectedCount === 0) return CheckboxStatus.unchecked;\n if (selectedCount === rowIds.length) return CheckboxStatus.checked;\n return CheckboxStatus.mixed;\n }\n\n private _emitSelectionChange(\n selectedRowIds: string[],\n source: 'row' | 'header'\n ) {\n const selectedRows = this.data.filter((row) =>\n selectedRowIds.includes(row.id)\n );\n const e: ObcTableSelectionChangeEvent = new CustomEvent(\n 'selection-change',\n {\n detail: {selectedRowIds, selectedRows, source},\n }\n );\n this.dispatchEvent(e);\n }\n\n private _applySelectionChange(\n nextSelection: Set<string>,\n source: 'row' | 'header'\n ) {\n const selectedRowIds = Array.from(nextSelection);\n this._emitSelectionChange(selectedRowIds, source);\n if (this.selectedRowIds === undefined) {\n this._selectedRowIds = nextSelection;\n this.requestUpdate();\n }\n }\n\n private _toggleRowSelection(rowId: string) {\n const nextSelection = new Set(this._selectedRowIds);\n if (nextSelection.has(rowId)) {\n nextSelection.delete(rowId);\n } else {\n nextSelection.add(rowId);\n }\n this._applySelectionChange(nextSelection, 'row');\n }\n\n private _toggleAllSelection() {\n const rowIds = this._getSelectableRowIds();\n const status = this._getSelectionStatus();\n const nextSelection =\n status === CheckboxStatus.checked ? new Set<string>() : new Set(rowIds);\n this._applySelectionChange(nextSelection, 'header');\n }\n\n private _renderCell(\n value: ObcTableCellData,\n row: ObcTableRow,\n column: ObcTableColumn<ObcTableCellData, ObcTableRow>,\n expander: HTMLTemplateResult | typeof nothing = nothing\n ) {\n if (value.type === ObcTableCellType.Regular) {\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n regular: true,\n neutral: value.neutral ?? false,\n 'large-icon': value.largeIcon ?? false,\n 'no-wrap': value.noWrap ?? false,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n vertical: value.vertical ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}${value.icon3\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon3'))}\n >${value.icon3}</span\n >`\n : nothing}\n ${value.icon2\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon2'))}\n >${value.icon2}</span\n >`\n : nothing}\n ${value.icon\n ? html`<span class=\"icon\" part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.title\n ? html`<span class=\"title\" part=${ifDefined(cssPart(value, 'title'))}\n >${value.title}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.Button) {\n return html`<div\n class=\"grid-cell button ${column.dividerRight ? 'divider-right' : ''}\"\n role=\"cell\"\n >\n ${expander}\n <obc-button\n variant=\"normal\"\n fullWidth\n .disabled=${value.disabled ?? false}\n ?showLeadingIcon=${value.icon !== undefined}\n part=${ifDefined(cssPart(value, 'button'))}\n @click=${(event: MouseEvent) =>\n this._handleCellButtonClick(event, row, column.key)}\n >\n ${value.icon\n ? html`<span\n slot=\"leading-icon\"\n part=${ifDefined(cssPart(value, 'icon'))}\n >${value.icon}</span\n >`\n : nothing}\n ${value.text\n ? html`<span part=${ifDefined(cssPart(value, 'text'))}\n >${value.text}</span\n >`\n : nothing}\n </obc-button>\n </div>`;\n } else if (value.type === ObcTableCellType.Checkbox) {\n const checkboxLabel = value.label ?? value.text ?? '';\n const ariaLabel =\n checkboxLabel.trim() || column.label?.trim() || 'Checkbox';\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n checkbox: true,\n [`align-${value.align ?? 'center'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}\n <obc-checkbox\n .status=${value.status ?? CheckboxStatus.unchecked}\n .disabled=${value.disabled ?? false}\n aria-describedby=${ifDefined(value.ariaDescribedBy)}\n aria-label=${ariaLabel}\n part=${ifDefined(cssPart(value, 'checkbox'))}\n @click=${(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n @change=${(event: ObcCheckboxChangeEvent) =>\n this._handleCellCheckboxChange(event, row, column.key)}\n ></obc-checkbox>\n </div>`;\n } else if (value.type === ObcTableCellType.Tag) {\n const tags: ObcTableTagData[] = value.tags ??\n (value.tag ? [value.tag] : undefined) ?? [\n {\n id: value.tagId ?? 'tag',\n label: value.label ?? value.text ?? 'Label',\n color: value.color,\n hasIcon: value.hasIcon,\n icon: value.icon,\n },\n ];\n const wrap = value.wrap ?? value.tags !== undefined;\n const defaultMaxTags = value.tags ? 2 : undefined;\n const maxTags =\n (value.maxTags ?? defaultMaxTags) !== undefined\n ? Math.max(0, Math.floor(value.maxTags ?? defaultMaxTags ?? 0))\n : undefined;\n const visibleTags = maxTags !== undefined ? tags.slice(0, maxTags) : tags;\n const overflowCount =\n maxTags !== undefined ? Math.max(0, tags.length - maxTags) : 0;\n const overflowLabel =\n value.overflowLabel ?? `+${overflowCount.toString()}`;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n tags: tags.length > 1,\n wrap,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}${visibleTags.map((tag) => {\n const hasIcon = tag.hasIcon ?? tag.icon !== undefined;\n return html`<obc-tag\n .label=${tag.label}\n color=${tag.color ?? TagColor.gray}\n ?hasIcon=${hasIcon}\n part=${ifDefined(\n [cssPart(value, 'tag'), tag.cssPart].filter(Boolean).join(' ') ||\n undefined\n )}\n @click=${(event: MouseEvent) =>\n this._handleCellTagClick(event, row, column.key, tag.id)}\n >\n ${hasIcon && tag.icon ? tag.icon : nothing}\n </obc-tag>`;\n })}\n ${overflowCount > 0\n ? html`<span\n class=\"tag-overflow\"\n part=${ifDefined(cssPart(value, 'tag-overflow'))}\n >${overflowLabel}</span\n >`\n : nothing}\n </div>`;\n } else if (value.type === ObcTableCellType.HorizontalBar) {\n const hasBar = value.hasBar ?? true;\n const hasScale = value.hasScale ?? false;\n const showLabels = !(value.hideLabels ?? true);\n const fixedAspectRatio = value.fixedAspectRatio ?? true;\n return html`<div\n class=${classMap({\n 'grid-cell': true,\n 'horizontal-bar': true,\n [`align-${value.align ?? 'left'}`]: true,\n 'divider-right': column.dividerRight ?? false,\n })}\n role=\"cell\"\n part=${ifDefined(cssPart(value, 'cell'))}\n >\n ${expander}\n <obc-bar-horizontal\n .minValue=${value.minValue ?? 0}\n .maxValue=${value.maxValue ?? 100}\n .value=${value.value}\n .setpoint=${value.setpoint}\n .hasBar=${hasBar}\n .hasScale=${hasScale}\n .showLabels=${showLabels}\n .priority=${value.priority ?? Priority.regular}\n .fillMode=${value.fillMode ?? FillMode.fill}\n .fillMin=${value.fillMin}\n .fillMax=${value.fillMax}\n .barThickness=${value.barThickness ?? 24}\n .scaleType=${value.scaleType ?? ScaleType.regular}\n .frameStyle=${value.frameStyle ?? FrameStyle.regular}\n .side=${value.side ?? ExternalScaleSide.bottom}\n .state=${value.state ?? InstrumentState.active}\n .fixedAspectRatio=${fixedAspectRatio}\n .scaleReferenceSize=${value.scaleReferenceSize ?? 384}\n part=${ifDefined(cssPart(value, 'bar'))}\n ></obc-bar-horizontal>\n </div>`;\n } else {\n return nothing;\n }\n }\n\n static override styles = unsafeCSS(compentStyle);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'obc-table': ObcTable;\n }\n}\n"],"names":["ObcTableCellType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA+BO,IAAK,qCAAAA,sBAAL;AACLA,oBAAA,SAAA,IAAU;AACVA,oBAAA,QAAA,IAAS;AACTA,oBAAA,UAAA,IAAW;AACXA,oBAAA,KAAA,IAAM;AACNA,oBAAA,eAAA,IAAgB;AALN,SAAAA;AAAA,GAAA,oBAAA,CAAA,CAAA;AAwKZ,SAAS,QAAQ,OAAyB,SAAqC;AAC7E,MAAI,MAAM,SAAS;AACjB,WAAO,GAAG,MAAM,OAAO,IAAI,OAAO;AAAA,EACpC;AACA,SAAO;AACT;AA0EO,IAAM,WAAN,cAAuB,WAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AACoB,SAAA,OAAsB,CAAA;AACtB,SAAA,UAA4B,CAAA;AAC1B,SAAA,aAAa;AACb,SAAA,eAAe;AACG,SAAA,aAAa;AAC/B,SAAA,UAAU;AACV,SAAA,aAAa;AAGd,SAAA,qBAAqB;AAG/C,SAAQ,mBAAuC;AAG/C,SAAQ,iBAAiC;AAGzC,SAAQ,sCAAmC,IAAA;AAE3C,SAAQ,qBAAqD,CAAA;AAqW7D,SAAQ,mBAAmB;AAAA,EAAA;AAAA,EAnW3B,IAAY,eAAe;AACzB,WAAO,KAAK,KAAK;AAAA,MACf,CAAC,QACC,IAAI,aAAa,WAChB,IAAI,SAAS,KAAK,KACnB,IAAI,eAAe;AAAA,IAAA;AAAA,EAEzB;AAAA,EAEQ,mBACN,MACA,SACA;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7C,UAAM,uCAAuB,IAAA;AAC7B,UAAM,QAAuB,CAAA;AAC7B,eAAW,OAAO,MAAM;AACtB,YAAM,WAAW,IAAI;AACrB,UAAI,aAAa,UAAa,aAAa,IAAI,MAAM,IAAI,IAAI,QAAQ,GAAG;AACtE,cAAM,WAAW,iBAAiB,IAAI,QAAQ,KAAK,CAAA;AACnD,iBAAS,KAAK,GAAG;AACjB,yBAAiB,IAAI,UAAU,QAAQ;AAAA,MACzC,OAAO;AACL,cAAM,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAEA,UAAM,SAAwB,CAAA;AAC9B,UAAM,8BAAc,IAAA;AACpB,UAAM,QAAQ,CAAC,aAA4B;AACzC,iBAAW,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,OAAO,GAAG;AAC7C,YAAI,QAAQ,IAAI,IAAI,EAAE,GAAG;AACvB;AAAA,QACF;AACA,gBAAQ,IAAI,IAAI,EAAE;AAClB,eAAO,KAAK,GAAG;AACf,cAAM,iBAAiB,IAAI,IAAI,EAAE,KAAK,CAAA,CAAE;AAAA,MAC1C;AAAA,IACF;AACA,UAAM,KAAK;AACX,UAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;AAChD,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,aAAa;AACf,QAAI,KAAK,qBAAqB,QAAW;AACvC,aAAO,KAAK;AAAA,IACd;AACA,UAAM,eAAe,KAAK,QAAQ,KAAK,gBAAgB;AAGvD,QAAI,iBAAiB,QAAW;AAC9B,cAAQ,KAAK,6BAA6B;AAC1C,aAAO,KAAK;AAAA,IACd;AACA,UAAM,gBAAgB,KAAK;AAC3B,UAAM,UAAU,CAAC,GAAgB,MAAmB;AAClD,YAAM,SAAS,EAAE,aAAa,GAAG;AACjC,YAAM,SAAS,EAAE,aAAa,GAAG;AACjC,UAAI,kBAAkB,OAAO;AAC3B,eAAO,aAAa;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AACL,eAAO,aAAa;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AACA,QAAI,KAAK,cAAc;AACrB,aAAO,KAAK,mBAAmB,KAAK,MAAM,OAAO;AAAA,IACnD;AACA,UAAM,aAAa,CAAC,GAAG,KAAK,IAAI;AAChC,eAAW,KAAK,OAAO;AACvB,WAAO;AAAA,EACT;AAAA,EAEQ,iBACN,QACA;AACA,QAAI,CAAC,OAAO,UAAU;AACpB;AAAA,IACF;AACA,UAAM,mBAAmB,KAAK,QAAQ,QAAQ,MAAM;AACpD,QAAI,qBAAqB,KAAK,kBAAkB;AAC9C,WAAK,iBAAiB,KAAK,mBAAmB,QAAQ,SAAS;AAAA,IACjE,OAAO;AACL,WAAK,mBAAmB;AACxB,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,gBAAgB,KAAkB;AACxC,SAAK;AAAA,MACH,IAAI,YAAY,aAAa,EAAC,QAAQ,EAAC,IAAA,GAAK;AAAA,IAAA;AAAA,EAEhD;AAAA,EAEQ,oBAAoB,KAAkB,UAAmB;AAC/D,QAAI,CAAC,IAAI,YAAY;AACnB;AAAA,IACF;AACA,SAAK;AAAA,MACH,IAAI,YAAY,iBAAiB;AAAA,QAC/B,QAAQ,EAAC,OAAO,IAAI,IAAI,SAAA;AAAA,MAAQ,CACjC;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,mBAAmB,KAAkB;AAC3C,QAAI,CAAC,KAAK,cAAc;AACtB,aAAO;AAAA,IACT;AACA,UAAM,QAAQ,IAAI,SAAS;AAC3B,WAAO;AAAA;AAAA,4BAEiB,KAAK;AAAA;AAAA;AAAA,QAGzB,IAAI,aACF;AAAA,oBACU,SAAS,EAAC,SAAS,MAAM,UAAU,IAAI,YAAY,OAAM,CAAC;AAAA,qBACzD,CAAC,UAAsB;AAC9B,YAAM,eAAA;AACN,YAAM,gBAAA;AACN,WAAK,oBAAoB,KAAK,EAAE,IAAI,YAAY,MAAM;AAAA,IACxD,CAAC;AAAA;AAAA;AAAA,qBAIH,OAAO;AAAA;AAAA,EAEf;AAAA,EAEQ,iBAAiB;AACvB,UAAM,WAAW,KAAK,WAAW;AAAA,MAC/B;AAAA,IAAA;AAEF,cAAU,MAAA;AAAA,EACZ;AAAA,EAEQ,uBAAuB;AAC7B,SAAK,oBAAoB,CAAC;AAAA,EAC5B;AAAA,EAEQ,oBAAoB,OAAe;AACzC,UAAM,UAAU,MAAM;AAAA,MACpB,KAAK,WAAW;AAAA,QACd;AAAA,MAAA;AAAA,IACF;AAEF,QAAI,QAAQ,WAAW,EAAG;AAC1B,UAAM,eAAe,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,QAAQ,SAAS,CAAC,CAAC;AACpE,UAAM,aAAa,QAAQ,YAAY;AACvC,UAAM,cAAe,WAAW,YAAY,cAAc,QAAQ,KAChE;AACF,KAAC,eAAe,YAAY,MAAA;AAAA,EAC9B;AAAA,EAEQ,qBAAqB,OAAsB;AACjD,UAAM,MAAM,MAAM;AAClB,QAAI,QAAQ,aAAa;AACvB,WAAK,eAAA;AACL,YAAM,eAAA;AACN,YAAM,gBAAA;AACN;AAAA,IACF;AACA,QAAI,QAAQ,eAAe,QAAQ,cAAc;AAC/C;AAAA,IACF;AAEA,UAAM,UAAU,MAAM;AAAA,MACpB,KAAK,WAAW;AAAA,QACd;AAAA,MAAA;AAAA,IACF;AAEF,QAAI,QAAQ,WAAW,EAAG;AAE1B,UAAM,kBAAkB,MAAM;AAC9B,UAAM,eAAe,kBACjB,QAAQ,QAAQ,eAAe,IAC/B;AACJ,QAAI,iBAAiB,GAAI;AAEzB,UAAM,YACJ,QAAQ,eACJ,KAAK,IAAI,eAAe,GAAG,QAAQ,SAAS,CAAC,IAC7C,KAAK,IAAI,eAAe,GAAG,CAAC;AAElC,QAAI,cAAc,cAAc;AAC9B,WAAK,oBAAoB,SAAS;AAClC,YAAM,eAAA;AACN,YAAM,gBAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,kBAAkB,OAAsB;AAC9C,UAAM,MAAM,MAAM;AAClB,QACE,KAAK,iBACJ,QAAQ,gBAAgB,QAAQ,gBACjC,KAAK,oBAAoB,OAAO,GAAG,GACnC;AACA;AAAA,IACF;AACA,QACE,QAAQ,eACR,QAAQ,aACR,QAAQ,UACR,QAAQ,OACR;AACA;AAAA,IACF;AAEA,UAAM,SAAS,MAAM;AACrB,QAAI,CAAC,OAAQ;AAEb,UAAM,OAAO,MAAM;AAAA,MACjB,KAAK,WAAW;AAAA,QACd;AAAA,MAAA;AAAA,IACF;AAGF,UAAM,eAAe,KAAK,QAAQ,MAAM;AACxC,QAAI,iBAAiB,GAAI;AAEzB,QAAI,YAAY;AAChB,YAAQ,KAAA;AAAA,MACN,KAAK;AACH,oBAAY,KAAK,IAAI,eAAe,GAAG,KAAK,SAAS,CAAC;AACtD;AAAA,MACF,KAAK;AACH,YAAI,iBAAiB,GAAG;AACtB,eAAK,qBAAA;AACL,gBAAM,eAAA;AACN,gBAAM,gBAAA;AACN;AAAA,QACF;AACA,oBAAY,KAAK,IAAI,eAAe,GAAG,CAAC;AACxC;AAAA,MACF,KAAK;AACH,oBAAY;AACZ;AAAA,MACF,KAAK;AACH,oBAAY,KAAK,SAAS;AAC1B;AAAA,IAAA;AAGJ,QAAI,cAAc,cAAc;AAC9B,WAAK,SAAS,GAAG,MAAA;AACjB,YAAM,eAAA;AACN,YAAM,gBAAA;AAAA,IACR,WAAW,QAAQ,UAAU,QAAQ,OAAO;AAE1C,YAAM,eAAA;AACN,YAAM,gBAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,oBACN,OACA,KACA;AACA,UAAM,SAAS,MAAM;AACrB,UAAM,QAAQ,QAAQ,QAAQ;AAC9B,UAAM,MAAM,KAAK,WAAW,KAAK,CAAC,cAAc,UAAU,OAAO,KAAK;AACtE,QAAI,CAAC,IAAK,QAAO;AAEjB,UAAM,WAAW,IAAI,YAAY;AACjC,QAAI,QAAQ,gBAAgB,IAAI,cAAc,CAAC,UAAU;AACvD,WAAK,oBAAoB,KAAK,IAAI;AAAA,IACpC,WAAW,QAAQ,eAAe,IAAI,cAAc,UAAU;AAC5D,WAAK,oBAAoB,KAAK,KAAK;AAAA,IACrC,WAAW,QAAQ,aAAa;AAC9B,YAAM,SAAS,KAAK,WAAW;AAAA,QAC7B,4CAA4C,IAAI;AAAA,UAC9C,IAAI,YAAY;AAAA,QAAA,CACjB;AAAA,MAAA;AAEH,UAAI,CAAC,OAAQ,QAAO;AACpB,aAAO,MAAA;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,eAAA;AACN,UAAM,gBAAA;AACN,WAAO;AAAA,EACT;AAAA,EAEQ,mBAKJ;AACF,UAAM,OAAO,MAAM;AAAA,MACjB,KAAK,WAAW;AAAA,QACd;AAAA,MAAA;AAAA,IACF;AAGF,UAAM,WAAW,KAAK,CAAC;AACvB,QAAI,CAAC,UAAU;AACb,aAAO,CAAA;AAAA,IACT;AACA,UAAM,eAAe,SAAS,sBAAA;AAC9B,UAAM,iBAAiB,aAAa;AACpC,UAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,UAAM,iBAAiB,WAAW,cAAc,MAAM;AACtD,UAAM,aAAa,iBAAiB;AAEpC,WAAO,KAAK,IAAI,CAAC,QAAQ;AACvB,YAAM,OAAO,IAAI,sBAAA;AACjB,aAAO;AAAA,QACL,KAAK,KAAK,MAAM;AAAA,QAChB,QAAQ,KAAK,SAAS;AAAA,QACtB,OAAO,IAAI,aAAa,aAAa,KAAK;AAAA,QAC1C,SAAS;AAAA,MAAA;AAAA,IAEb,CAAC;AAAA,EACH;AAAA,EAEQ,qBAAqB;AAC3B,UAAM,oBAAoB,KAAK;AAC/B,UAAM,mBAAmB,KAAK,iBAAA;AAC9B,qBAAiB,QAAQ,CAAC,OAAO;AAC/B,YAAM,mBAAmB,kBAAkB;AAAA,QACzC,CAAC,MAAM,EAAE,UAAU,GAAG;AAAA,MAAA;AAExB,UAAI,CAAC,kBAAkB;AACrB,WAAG,QAAQ,MAAM,YAAY,eAAe,GAAG,MAAM;AACrD,WAAG,QAAQ,MAAM,UAAU;AAAA,MAC7B,OAAO;AACL,WAAG,QAAQ,MAAM,YAAY,cAAc,iBAAiB,MAAM,GAAG,GAAG;AAAA,MAC1E;AACA,SAAG,QAAQ,MAAM,aAAa;AAG9B,SAAG,QAAQ;AACX,SAAG,QAAQ,MAAM,aACf;AACF,SAAG,QAAQ,MAAM,YAAY;AAC7B,SAAG,QAAQ,MAAM,UAAU;AAAA,IAC7B,CAAC;AAED,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAIS,WAAW,mBAAmC;AACrD,QAAI,kBAAkB,IAAI,uBAAuB,GAAG;AAClD,UACE,KAAK,mBAAmB,UACxB,KAAK,gBAAgB,SAAS,GAC9B;AACA,aAAK,kBAAkB,IAAI,IAAI,KAAK,yBAAyB,CAAA,CAAE;AAAA,MACjE;AAAA,IACF;AAEA,QAAI,kBAAkB,IAAI,gBAAgB,GAAG;AAC3C,UAAI,KAAK,mBAAmB,QAAW;AACrC,aAAK,kBAAkB,IAAI,IAAI,KAAK,cAAc;AAAA,MACpD;AAAA,IACF;AAEA,QAAI,kBAAkB,IAAI,MAAM,GAAG;AACjC,YAAM,eAAe,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC3D,WAAK,gBAAgB,QAAQ,CAAC,OAAO;AACnC,YAAI,CAAC,aAAa,IAAI,EAAE,GAAG;AACzB,eAAK,gBAAgB,OAAO,EAAE;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QACE,kBAAkB,IAAI,MAAM,KAC5B,kBAAkB,IAAI,kBAAkB,KACxC,kBAAkB,IAAI,gBAAgB,GACtC;AACA,UAAI,KAAK,kBAAkB;AACzB,aAAK,iBAAA;AAAA,MACP,OAAO;AACL,aAAK,eAAe,KAAK,MAAM;AAC7B,eAAK,mBAAmB;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAES,QAAQ,mBAAmC;AAClD,QAAI,kBAAkB,IAAI,SAAS,GAAG;AACpC,WAAK,mBAAmB,KAAK,QAAQ;AAAA,QACnC,CAAC,QAAQ,mBAAmB,OAAO,IAAI,kBAAkB;AAAA,MAAA;AAE3D,UAAI,KAAK,qBAAqB,IAAI;AAChC,aAAK,mBAAmB;AACxB,aAAK,iBAAiB;AAAA,MACxB,OAAO;AACL,aAAK,iBAED,KAAK,QAAQ,KAAK,gBAAgB,GAIjC,iBAAiB;AAAA,MACxB;AAAA,IACF;AAEA,QACE,kBAAkB,IAAI,MAAM,KAC5B,kBAAkB,IAAI,kBAAkB,KACxC,kBAAkB,IAAI,gBAAgB,GACtC;AACA,UAAI,KAAK,kBAAkB;AACzB,aAAK,mBAAA;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,mBAAmB;AACzB,UAAM,YAAY,KAAK,iBAAA;AACvB,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAES,SAAS;AAChB,UAAM,mBAAmB,KAAK,aACzB;AAAA,MACC;AAAA,QACE,OAAO;AAAA,QACP,KAAK;AAAA,MAAA;AAAA,MAEP,GAAG,KAAK;AAAA,IAAA,IAEV,KAAK;AACT,UAAM,uBAAuB,KAAK,aAC9B,KAAK,IAAI,GAAG,iBAAiB,SAAS,CAAC,IACvC,iBAAiB;AACrB,WAAO;AAAA;AAAA,gBAEK,SAAS;AAAA,MACf,kBAAkB;AAAA,MAClB,wBAAwB,KAAK;AAAA,IAAA,CAC9B,CAAC;AAAA;AAAA;AAAA,4BAGkB,iBAAiB,MAAM;AAAA,iCAClB,oBAAoB;AAAA;AAAA;AAAA,eAGtC,KAAK,eAAe,aAAa,OAAO;AAAA;AAAA,UAE7C,KAAK,aACH;AAAA;AAAA,kBAEM,iBAAiB,IAAI,CAAC,QAAQ;AAC9B,YAAM,oBACJ,KAAK,cAAc,IAAI,QAAQ;AACjC,YAAM,YACJ,iBAAiB,QAAQ,GAAG,MAC5B,iBAAiB,SAAS;AAC5B,YAAM,OAAO,IAAI,mBACb;AAAA,2BACK,IAAI,kBAAkB;AAAA,2BAE3B;AAEJ,YAAM,cAAc,KAAK,QAAQ;AAAA,QAC/B,CAAC,WAAW,OAAO,QAAQ,IAAI;AAAA,MAAA;AAEjC,YAAM,SACJ,cAAc,OACd,IAAI,YACJ,KAAK,qBAAqB;AAC5B,YAAM,gBAAgB,SAAS,KAAK,iBAAiB;AACrD,YAAM,aACJ,IAAI,eACH,KAAK,eACF,uBAAuB,SACvB,uBAAuB;AAC7B,UAAI,cAAc,OAAO,IAAI,YAAY,CAAC,mBAAmB;AAC3D,eAAO;AAAA;AAAA,8BAEG,oBAAoB,qBAAqB,EAAE;AAAA,qCACpC,SAAS;AAAA,wCACN,SAAS,OAAO;AAAA,uCACjB,aAAa;AAAA,kCAClB,IAAI;AAAA,6BACT,UAAU;AAAA,+BACR,MACP,KAAK;AAAA,UACH;AAAA,QAAA,CAID;AAAA,iCACQ,KAAK,oBAAoB;AAAA,yBACjC,IAAI,GAAG,IAAI,KAAK;AAAA;AAAA,MAEvB,OAAO;AACL,YAAI,mBAAmB;AACrB,iBAAO;AAAA;AAAA,gCAEG,SAAS;AAAA,YACf,oBAAoB;AAAA,UAAA,CACrB,CAAC;AAAA;AAAA,mCAES,KAAK,oBAAoB;AAAA;AAAA;AAAA,oCAGxB,KAAK,qBAAqB;AAAA,sCACxB,KAAK;AAAA,uCACJ,KAAK,kBAAkB;AAAA,mCAC3B,CAAC,UAAsB;AAC9B,kBAAM,eAAA;AACN,kBAAM,gBAAA;AAAA,UACR,CAAC;AAAA,oCACS,MAAM,KAAK,oBAAA,CAAqB;AAAA;AAAA;AAAA,QAGhD;AACA,eAAO;AAAA;AAAA,8BAEG,oBAAoB,qBAAqB,EAAE;AAAA,qCACpC,SAAS;AAAA,wCACN,SAAS,OAAO;AAAA,6BAC3B,UAAU;AAAA,yBACd,IAAI,GAAG,IAAI,KAAK;AAAA;AAAA,MAEvB;AAAA,IACF,CAAC,CAAC;AAAA;AAAA;AAAA,gBAIN,OAAO;AAAA;AAAA;AAAA;AAAA,8CAI2B,KAAK,WACtC,MAAM;AAAA;AAAA,YAEP;AAAA,MACA,KAAK;AAAA,MACL,CAAC,QAAQ,IAAI;AAAA,MACb,CAAC,KAAK,aAAa;AACjB,cAAM,aACJ,KAAK,cAAc,KAAK,KAAK,SAAS,MAAM;AAC9C,cAAM,YAAY,KAAK,WAAW,WAAW,MAAM;AACnD,cAAM,iBACH,IAAI,YAAY,UAChB,KAAK,cAAc,KAAK,gBAAgB,IAAI,IAAI,EAAE;AACrD,cAAM,cACJ,WAAW,IAAI,KAAK,WAAW,WAAW,CAAC,IAAI;AACjD,cAAM,UACJ,WAAW,KAAK,WAAW,SAAS,IAChC,KAAK,WAAW,WAAW,CAAC,IAC5B;AACN,cAAM,yBACJ,gBAAgB,YACd,YAAY,YAAY,UACvB,KAAK,cACJ,KAAK,gBAAgB,IAAI,YAAY,EAAE;AAC7C,cAAM,qBACJ,YAAY,YACV,QAAQ,YAAY,UACnB,KAAK,cAAc,KAAK,gBAAgB,IAAI,QAAQ,EAAE;AAC3D,eAAO;AAAA;AAAA;AAAA,0BAGK,SAAS;AAAA,UACf,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,sBACE,iBAAiB;AAAA,UACnB,sBAAsB,iBAAiB;AAAA,UACvC,SAAS;AAAA,QAAA,CACV,CAAC;AAAA,2BACO,MAAM,KAAK,gBAAgB,GAAG,CAAC;AAAA,6BAC7B,KAAK,iBAAiB;AAAA,gCACnB,IAAI,EAAE;AAAA,qCACD,WAAW,CAAC;AAAA;AAAA,+BAElB;AAAA,UACX,KAAK,gBAAgB,IAAI,SAAS,KAAK,IAAI;AAAA,QAAA,CAC5C;AAAA,kCACe;AAAA,UACd,IAAI,aAAc,IAAI,YAAY,QAAS;AAAA,QAAA,CAC5C;AAAA;AAAA,oBAEC,IAAI,kBAAkB,CAAC,KAAK,aAAa;AACzC,gBAAM,WACJ,cAAc,KAAK,aAAa,IAAI,KAChC,KAAK,mBAAmB,GAAG,IAC3B;AACN,cAAI,KAAK,cAAc,IAAI,QAAQ,iBAAiB;AAClD,kBAAM,UAAU,KAAK,gBAAgB,IAAI,IAAI,EAAE;AAC/C,mBAAO;AAAA;AAAA;AAAA;AAAA;AAAA,oCAKO,UACN,eAAe,UACf,eAAe,SAAS;AAAA,sCAChB,KAAK;AAAA,uCACJ,cAAc,IAAI,EAAE,EAAE;AAAA,mCAC1B,CAAC,UAAsB;AAC9B,oBAAM,eAAA;AACN,oBAAM,gBAAA;AAAA,YACR,CAAC;AAAA,oCACS,MAAM,KAAK,oBAAoB,IAAI,EAAE,CAAC;AAAA;AAAA;AAAA,UAGtD;AACA,gBAAM,QAAQ,IAAI,IAAI,GAAG;AACzB,cAAI,UAAU,QAAW;AACvB,mBAAO;AAAA,0BACH,QAAQ;AAAA;AAAA,UAEd;AACA,cAAI,IAAI,YAAY;AAClB,mBAAO;AAAA,2CACc,IAAI,eACnB,kBACA,EAAE;AAAA;AAAA,+BAEC,UAAW,MAA2B,OAAO,CAAC;AAAA;AAAA,0BAEnD,QAAQ,GAAG,IAAI;AAAA,cACf;AAAA,cACA;AAAA,cACA,IAAI;AAAA,YAAA,CACL;AAAA;AAAA,UAEL,OAAO;AACL,mBAAO,KAAK;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF,CAAC,CAAC;AAAA,oBACA,aACE,6CACA,OAAO;AAAA;AAAA;AAAA,MAGjB;AAAA,IAAA,CACD;AAAA,YACC;AAAA,MACA;AAAA,MACA,CAAC,QAAQ,IAAI;AAAA,MACb,CAAC,KAAK,aACJ,IAAI,eACA;AAAA;AAAA,0CAEwB,WAAW,CAAC,iBAAiB,KAChD,WAAW,SAAS,CAAC;AAAA,6BAE1B;AAAA,IAAA,CACP;AAAA;AAAA;AAAA;AAAA,EAIT;AAAA,EAEO,oBAA8B;AACnC,UAAM,OAAO,MAAM;AAAA,MACjB,KAAK,WAAW;AAAA,QACd;AAAA,MAAA;AAAA,IACF;AAEF,UAAM,WAAW,KAAK,WACnB,cAAc,YAAY,GACzB,sBAAA;AACJ,QAAI,CAAC,UAAU;AACb,aAAO,CAAA;AAAA,IACT;AACA,UAAM,YAAY,SAAS;AAC3B,UAAM,eAAe,SAAS;AAC9B,UAAM,eAAe,YAAY;AACjC,WAAO,KACJ,OAAO,CAAC,OAAO,GAAG,gBAAA,CAAiB,EACnC;AAAA,MACC,CAAC,OACC,GAAG,wBAAwB,OAAO,aAClC,GAAG,sBAAA,EAAwB,UAAU;AAAA,IAAA,EAExC,IAAI,CAAC,QAAQ,IAAI,aAAa,aAAa,CAAC,EAC5C,OAAO,CAAC,OAAqB,OAAO,IAAI;AAAA,EAC7C;AAAA,EAEQ,uBACN,OACA,KACA,WACA;AACA,UAAM,eAAA;AACN,UAAM,gBAAA;AACN,UAAM,IAA4B,IAAI,YAAY,qBAAqB;AAAA,MACrE,QAAQ,EAAC,OAAO,IAAI,IAAI,UAAA;AAAA,IAAS,CAClC;AACD,SAAK,cAAc,CAAC;AAAA,EACtB;AAAA,EAEQ,oBACN,OACA,KACA,WACA,OACA;AACA,UAAM,eAAA;AACN,UAAM,gBAAA;AACN,UAAM,IAA+B,IAAI,YAAY,kBAAkB;AAAA,MACrE,QAAQ,EAAC,OAAO,IAAI,IAAI,WAAW,MAAA;AAAA,IAAK,CACzC;AACD,SAAK,cAAc,CAAC;AAAA,EACtB;AAAA,EAEQ,0BACN,OACA,KACA,WACA;AACA,UAAM,eAAA;AACN,UAAM,gBAAA;AACN,UAAM,IAAqC,IAAI;AAAA,MAC7C;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,UACN,OAAO,IAAI;AAAA,UACX;AAAA,UACA,QAAQ,MAAM,OAAO;AAAA,UACrB,UAAU,MAAM,OAAO;AAAA,QAAA;AAAA,MACzB;AAAA,IACF;AAEF,SAAK,cAAc,CAAC;AAAA,EACtB;AAAA,EAEQ,uBAAiC;AACvC,WAAO,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE;AAAA,EACtC;AAAA,EAEQ,sBAAsC;AAC5C,UAAM,SAAS,KAAK,qBAAA;AACpB,QAAI,OAAO,WAAW,EAAG,QAAO,eAAe;AAC/C,UAAM,gBAAgB,OAAO;AAAA,MAAO,CAAC,OACnC,KAAK,gBAAgB,IAAI,EAAE;AAAA,IAAA,EAC3B;AACF,QAAI,kBAAkB,EAAG,QAAO,eAAe;AAC/C,QAAI,kBAAkB,OAAO,OAAQ,QAAO,eAAe;AAC3D,WAAO,eAAe;AAAA,EACxB;AAAA,EAEQ,qBACN,gBACA,QACA;AACA,UAAM,eAAe,KAAK,KAAK;AAAA,MAAO,CAAC,QACrC,eAAe,SAAS,IAAI,EAAE;AAAA,IAAA;AAEhC,UAAM,IAAkC,IAAI;AAAA,MAC1C;AAAA,MACA;AAAA,QACE,QAAQ,EAAC,gBAAgB,cAAc,OAAA;AAAA,MAAM;AAAA,IAC/C;AAEF,SAAK,cAAc,CAAC;AAAA,EACtB;AAAA,EAEQ,sBACN,eACA,QACA;AACA,UAAM,iBAAiB,MAAM,KAAK,aAAa;AAC/C,SAAK,qBAAqB,gBAAgB,MAAM;AAChD,QAAI,KAAK,mBAAmB,QAAW;AACrC,WAAK,kBAAkB;AACvB,WAAK,cAAA;AAAA,IACP;AAAA,EACF;AAAA,EAEQ,oBAAoB,OAAe;AACzC,UAAM,gBAAgB,IAAI,IAAI,KAAK,eAAe;AAClD,QAAI,cAAc,IAAI,KAAK,GAAG;AAC5B,oBAAc,OAAO,KAAK;AAAA,IAC5B,OAAO;AACL,oBAAc,IAAI,KAAK;AAAA,IACzB;AACA,SAAK,sBAAsB,eAAe,KAAK;AAAA,EACjD;AAAA,EAEQ,sBAAsB;AAC5B,UAAM,SAAS,KAAK,qBAAA;AACpB,UAAM,SAAS,KAAK,oBAAA;AACpB,UAAM,gBACJ,WAAW,eAAe,8BAAc,IAAA,IAAgB,IAAI,IAAI,MAAM;AACxE,SAAK,sBAAsB,eAAe,QAAQ;AAAA,EACpD;AAAA,EAEQ,YACN,OACA,KACA,QACA,WAAgD,SAChD;AACA,QAAI,MAAM,SAAS,WAA0B;AAC3C,aAAO;AAAA,gBACG,SAAS;AAAA,QACf,aAAa;AAAA,QACb,SAAS;AAAA,QACT,SAAS,MAAM,WAAW;AAAA,QAC1B,cAAc,MAAM,aAAa;AAAA,QACjC,WAAW,MAAM,UAAU;AAAA,QAC3B,CAAC,SAAS,MAAM,SAAS,MAAM,EAAE,GAAG;AAAA,QACpC,iBAAiB,OAAO,gBAAgB;AAAA,QACxC,UAAU,MAAM,YAAY;AAAA,MAAA,CAC7B,CAAC;AAAA;AAAA,eAEK,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA;AAAA,UAEtC,QAAQ,GAAG,MAAM,QACf,+BAA+B,UAAU,QAAQ,OAAO,OAAO,CAAC,CAAC;AAAA,iBAC5D,MAAM,KAAK;AAAA,iBAEhB,OAAO;AAAA,UACT,MAAM,QACJ,+BAA+B,UAAU,QAAQ,OAAO,OAAO,CAAC,CAAC;AAAA,iBAC5D,MAAM,KAAK;AAAA,iBAEhB,OAAO;AAAA,UACT,MAAM,OACJ,+BAA+B,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,iBAC3D,MAAM,IAAI;AAAA,iBAEf,OAAO;AAAA,UACT,MAAM,QACJ,gCAAgC,UAAU,QAAQ,OAAO,OAAO,CAAC,CAAC;AAAA,iBAC7D,MAAM,KAAK;AAAA,iBAEhB,OAAO;AAAA,UACT,MAAM,OACJ,kBAAkB,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,iBAC9C,MAAM,IAAI;AAAA,iBAEf,OAAO;AAAA;AAAA,IAEf,WAAW,MAAM,SAAS,UAAyB;AACjD,aAAO;AAAA,kCACqB,OAAO,eAAe,kBAAkB,EAAE;AAAA;AAAA;AAAA,UAGlE,QAAQ;AAAA;AAAA;AAAA;AAAA,sBAII,MAAM,YAAY,KAAK;AAAA,6BAChB,MAAM,SAAS,MAAS;AAAA,iBACpC,UAAU,QAAQ,OAAO,QAAQ,CAAC,CAAC;AAAA,mBACjC,CAAC,UACR,KAAK,uBAAuB,OAAO,KAAK,OAAO,GAAG,CAAC;AAAA;AAAA,YAEnD,MAAM,OACJ;AAAA;AAAA,uBAES,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,mBACrC,MAAM,IAAI;AAAA,mBAEf,OAAO;AAAA,YACT,MAAM,OACJ,kBAAkB,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,mBAC9C,MAAM,IAAI;AAAA,mBAEf,OAAO;AAAA;AAAA;AAAA,IAGjB,WAAW,MAAM,SAAS,YAA2B;AACnD,YAAM,gBAAgB,MAAM,SAAS,MAAM,QAAQ;AACnD,YAAM,YACJ,cAAc,KAAA,KAAU,OAAO,OAAO,UAAU;AAClD,aAAO;AAAA,gBACG,SAAS;AAAA,QACf,aAAa;AAAA,QACb,UAAU;AAAA,QACV,CAAC,SAAS,MAAM,SAAS,QAAQ,EAAE,GAAG;AAAA,QACtC,iBAAiB,OAAO,gBAAgB;AAAA,MAAA,CACzC,CAAC;AAAA;AAAA,eAEK,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA;AAAA,UAEtC,QAAQ;AAAA;AAAA,oBAEE,MAAM,UAAU,eAAe,SAAS;AAAA,sBACtC,MAAM,YAAY,KAAK;AAAA,6BAChB,UAAU,MAAM,eAAe,CAAC;AAAA,uBACtC,SAAS;AAAA,iBACf,UAAU,QAAQ,OAAO,UAAU,CAAC,CAAC;AAAA,mBACnC,CAAC,UAAsB;AAC9B,cAAM,eAAA;AACN,cAAM,gBAAA;AAAA,MACR,CAAC;AAAA,oBACS,CAAC,UACT,KAAK,0BAA0B,OAAO,KAAK,OAAO,GAAG,CAAC;AAAA;AAAA;AAAA,IAG9D,WAAW,MAAM,SAAS,OAAsB;AAC9C,YAAM,OAA0B,MAAM,SACnC,MAAM,MAAM,CAAC,MAAM,GAAG,IAAI,WAAc;AAAA,QACvC;AAAA,UACE,IAAI,MAAM,SAAS;AAAA,UACnB,OAAO,MAAM,SAAS,MAAM,QAAQ;AAAA,UACpC,OAAO,MAAM;AAAA,UACb,SAAS,MAAM;AAAA,UACf,MAAM,MAAM;AAAA,QAAA;AAAA,MACd;AAEJ,YAAM,OAAO,MAAM,QAAQ,MAAM,SAAS;AAC1C,YAAM,iBAAiB,MAAM,OAAO,IAAI;AACxC,YAAM,WACH,MAAM,WAAW,oBAAoB,SAClC,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,WAAW,kBAAkB,CAAC,CAAC,IAC5D;AACN,YAAM,cAAc,YAAY,SAAY,KAAK,MAAM,GAAG,OAAO,IAAI;AACrE,YAAM,gBACJ,YAAY,SAAY,KAAK,IAAI,GAAG,KAAK,SAAS,OAAO,IAAI;AAC/D,YAAM,gBACJ,MAAM,iBAAiB,IAAI,cAAc,UAAU;AACrD,aAAO;AAAA,gBACG,SAAS;AAAA,QACf,aAAa;AAAA,QACb,MAAM,KAAK,SAAS;AAAA,QACpB;AAAA,QACA,CAAC,SAAS,MAAM,SAAS,MAAM,EAAE,GAAG;AAAA,QACpC,iBAAiB,OAAO,gBAAgB;AAAA,MAAA,CACzC,CAAC;AAAA;AAAA,eAEK,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA;AAAA,UAEtC,QAAQ,GAAG,YAAY,IAAI,CAAC,QAAQ;AACpC,cAAM,UAAU,IAAI,WAAW,IAAI,SAAS;AAC5C,eAAO;AAAA,qBACI,IAAI,KAAK;AAAA,oBACV,IAAI,SAAS,SAAS,IAAI;AAAA,uBACvB,OAAO;AAAA,mBACX;AAAA,UACL,CAAC,QAAQ,OAAO,KAAK,GAAG,IAAI,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAC3D;AAAA,QAAA,CACH;AAAA,qBACQ,CAAC,UACR,KAAK,oBAAoB,OAAO,KAAK,OAAO,KAAK,IAAI,EAAE,CAAC;AAAA;AAAA,cAExD,WAAW,IAAI,OAAO,IAAI,OAAO,OAAO;AAAA;AAAA,MAE9C,CAAC,CAAC;AAAA,UACA,gBAAgB,IACd;AAAA;AAAA,qBAES,UAAU,QAAQ,OAAO,cAAc,CAAC,CAAC;AAAA,iBAC7C,aAAa;AAAA,iBAElB,OAAO;AAAA;AAAA,IAEf,WAAW,MAAM,SAAS,kBAAgC;AACxD,YAAM,SAAS,MAAM,UAAU;AAC/B,YAAM,WAAW,MAAM,YAAY;AACnC,YAAM,aAAa,EAAE,MAAM,cAAc;AACzC,YAAM,mBAAmB,MAAM,oBAAoB;AACnD,aAAO;AAAA,gBACG,SAAS;AAAA,QACf,aAAa;AAAA,QACb,kBAAkB;AAAA,QAClB,CAAC,SAAS,MAAM,SAAS,MAAM,EAAE,GAAG;AAAA,QACpC,iBAAiB,OAAO,gBAAgB;AAAA,MAAA,CACzC,CAAC;AAAA;AAAA,eAEK,UAAU,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA;AAAA,UAEtC,QAAQ;AAAA;AAAA,sBAEI,MAAM,YAAY,CAAC;AAAA,sBACnB,MAAM,YAAY,GAAG;AAAA,mBACxB,MAAM,KAAK;AAAA,sBACR,MAAM,QAAQ;AAAA,oBAChB,MAAM;AAAA,sBACJ,QAAQ;AAAA,wBACN,UAAU;AAAA,sBACZ,MAAM,YAAY,SAAS,OAAO;AAAA,sBAClC,MAAM,YAAY,SAAS,IAAI;AAAA,qBAChC,MAAM,OAAO;AAAA,qBACb,MAAM,OAAO;AAAA,0BACR,MAAM,gBAAgB,EAAE;AAAA,uBAC3B,MAAM,aAAa,UAAU,OAAO;AAAA,wBACnC,MAAM,cAAc,WAAW,OAAO;AAAA,kBAC5C,MAAM,QAAQ,kBAAkB,MAAM;AAAA,mBACrC,MAAM,SAAS,gBAAgB,MAAM;AAAA,8BAC1B,gBAAgB;AAAA,gCACd,MAAM,sBAAsB,GAAG;AAAA,iBAC9C,UAAU,QAAQ,OAAO,KAAK,CAAC,CAAC;AAAA;AAAA;AAAA,IAG7C,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAGF;AA9gCa,SA6gCK,SAAS,UAAU,YAAY;AA5gCtB,gBAAA;AAAA,EAAxB,SAAS,EAAC,MAAM,MAAA,CAAM;AAAA,GADZ,SACc,WAAA,QAAA,CAAA;AACA,gBAAA;AAAA,EAAxB,SAAS,EAAC,MAAM,MAAA,CAAM;AAAA,GAFZ,SAEc,WAAA,WAAA,CAAA;AACE,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAHd,SAGgB,WAAA,cAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAJd,SAIgB,WAAA,gBAAA,CAAA;AACkB,gBAAA;AAAA,EAA5C,SAAS,EAAC,MAAM,SAAS,WAAW,OAAM;AAAA,GALhC,SAKkC,WAAA,cAAA,CAAA;AAClB,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GANd,SAMgB,WAAA,WAAA,CAAA;AACA,gBAAA;AAAA,EAA1B,SAAS,EAAC,MAAM,QAAA,CAAQ;AAAA,GAPd,SAOgB,WAAA,cAAA,CAAA;AACF,gBAAA;AAAA,EAAxB,SAAS,EAAC,MAAM,MAAA,CAAM;AAAA,GARZ,SAQc,WAAA,kBAAA,CAAA;AACA,gBAAA;AAAA,EAAxB,SAAS,EAAC,MAAM,MAAA,CAAM;AAAA,GATZ,SASc,WAAA,yBAAA,CAAA;AACC,gBAAA;AAAA,EAAzB,SAAS,EAAC,MAAM,OAAA,CAAO;AAAA,GAVb,SAUe,WAAA,sBAAA,CAAA;AAGlB,gBAAA;AAAA,EADP,MAAA;AAAM,GAZI,SAaH,WAAA,oBAAA,CAAA;AAGA,gBAAA;AAAA,EADP,MAAA;AAAM,GAfI,SAgBH,WAAA,kBAAA,CAAA;AAGA,gBAAA;AAAA,EADP,MAAA;AAAM,GAlBI,SAmBH,WAAA,mBAAA,CAAA;AAnBG,WAAN,gBAAA;AAAA,EADN,cAAc,WAAW;AAAA,GACb,QAAA;"}
package/dist/types.d.ts CHANGED
@@ -47,7 +47,9 @@ export interface Alert {
47
47
  blockedBy?: string;
48
48
  };
49
49
  noAck?: boolean;
50
+ noSilence?: boolean;
50
51
  category?: AlertCategory;
52
+ memberOf?: string[];
51
53
  }
52
54
  export declare function isActive(alert: Alert): boolean;
53
55
  export declare function isAcknowledged(alert: Alert): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,mBAAmB;IAChC,SAAS,eAAe;IACxB,WAAW,iBAAiB;IAC5B,QAAQ,cAAc;IACtB,eAAe,qBAAqB;CACrC;AAED,eAAO,MAAM,uBAAuB,aASnC,CAAC;AAEF,oBAAY,aAAa;IACvB,CAAC,MAAM;IACP,CAAC,MAAM;IACP,CAAC,MAAM;CACR;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EACR,KAAK,GACL;QACE,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;KACtB,CAAC;IACN,MAAM,EACF,IAAI,GACJ;QACE,aAAa,EAAE,IAAI,CAAC;KACrB,CAAC;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,EACJ,KAAK,GACL;QACE,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACN,OAAO,CAAC,EACJ,KAAK,GACL;QACE,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACN,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,WAEpC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,WAE1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,WAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,WAErC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,UAgBvD;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;AAEjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,UA0BzC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,aAAa,mBAAmB;IAChC,SAAS,eAAe;IACxB,WAAW,iBAAiB;IAC5B,QAAQ,cAAc;IACtB,eAAe,qBAAqB;CACrC;AAED,eAAO,MAAM,uBAAuB,aASnC,CAAC;AAEF,oBAAY,aAAa;IACvB,CAAC,MAAM;IACP,CAAC,MAAM;IACP,CAAC,MAAM;CACR;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EACR,KAAK,GACL;QACE,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,IAAI,CAAC;KACtB,CAAC;IACN,MAAM,EACF,IAAI,GACJ;QACE,aAAa,EAAE,IAAI,CAAC;KACrB,CAAC;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,EACJ,KAAK,GACL;QACE,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACN,OAAO,CAAC,EACJ,KAAK,GACL;QACE,gBAAgB,EAAE,IAAI,CAAC;QACvB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACN,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,WAEpC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,WAE1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,WAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,WAErC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,UAgBvD;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;AAEjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,UA0BzC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["export enum Direction {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\nexport enum AlertType {\n Alarm = 'alarm',\n Warning = 'warning',\n Caution = 'caution',\n LevelCritical = 'level-critical',\n LevelHigh = 'level-high',\n LevelMedium = 'level-medium',\n LevelLow = 'level-low',\n LevelDiagnostic = 'level-diagnostic',\n}\n\nexport const ALERT_SEVERITY_PRIORITY = [\n AlertType.LevelCritical,\n AlertType.Alarm,\n AlertType.LevelHigh,\n AlertType.Warning,\n AlertType.LevelMedium,\n AlertType.Caution,\n AlertType.LevelLow,\n AlertType.LevelDiagnostic,\n];\n\nexport enum AlertCategory {\n a = 'a',\n b = 'b',\n c = 'c',\n}\n\nexport interface Alert {\n id: string; // The id of the alert\n tagId: string; // The tag ID visible to the user\n source: string;\n text: string;\n note?: string; // The note of the alert, typically by the operator\n acknowledged:\n | false\n | {\n acknowledgedBy: string;\n acknowledgedAt: Date;\n };\n active:\n | true\n | {\n rectifiedTime: Date;\n };\n type: AlertType;\n time: Date;\n lastModified?: Date;\n shelved?:\n | false\n | {\n shelvedStartTime: Date;\n shelvedEndTime?: Date;\n shelvedBy?: string;\n };\n blocked?:\n | false\n | {\n blockedStartTime: Date;\n blockedEndTime?: Date;\n blockedBy?: string;\n };\n noAck?: boolean; // If true, the alarm has no ack button\n category?: AlertCategory;\n}\n\nexport function isActive(alert: Alert) {\n return alert.active === true;\n}\n\nexport function isAcknowledged(alert: Alert) {\n return alert.acknowledged !== false && alert.acknowledged !== undefined;\n}\n\nexport function isShelved(alert: Alert) {\n return alert.shelved !== false && alert.shelved !== undefined;\n}\n\nexport function isBlocked(alert: Alert) {\n return alert.blocked !== false && alert.blocked !== undefined;\n}\n\nexport function comparePriorityAlerts(a: Alert, b: Alert) {\n if (a.type !== b.type) {\n return (\n ALERT_SEVERITY_PRIORITY.indexOf(b.type) -\n ALERT_SEVERITY_PRIORITY.indexOf(a.type)\n );\n }\n\n if (isActive(a) !== isActive(b)) {\n return isActive(a) ? 1 : -1;\n }\n\n if (isAcknowledged(a) !== isAcknowledged(b)) {\n return isAcknowledged(a) ? -1 : 1;\n }\n return a.time.getTime() - b.time.getTime();\n}\n\nexport type TimeSinceFn = (time: Date) => string;\n\nexport function formatTimeSince(time: Date) {\n const now = new Date();\n const diff = now.getTime() - time.getTime();\n const diffInSeconds = diff / 1000;\n if (diffInSeconds < 60) {\n return Math.round(diffInSeconds) + 's';\n }\n const diffInMinutes = diffInSeconds / 60;\n if (diffInMinutes < 60) {\n return (\n Math.round(diffInMinutes) + 'm ' + Math.round(diffInSeconds % 60) + 's'\n );\n }\n const diffInHours = diffInMinutes / 60;\n if (diffInHours < 24) {\n return (\n Math.round(diffInHours) + 'h ' + Math.round(diffInMinutes % 60) + 'm'\n );\n }\n const diffInDays = diffInHours / 24;\n if (diffInDays < 365) {\n return Math.round(diffInDays) + 'd ' + Math.round(diffInHours % 24) + 'h';\n }\n return (\n Math.round(diffInDays / 365) + 'y ' + Math.round(diffInDays % 365) + 'd'\n );\n}\n"],"names":["Direction","AlertType","AlertCategory"],"mappings":"AAAO,IAAK,8BAAAA,eAAL;AACLA,aAAA,IAAA,IAAK;AACLA,aAAA,MAAA,IAAO;AACPA,aAAA,MAAA,IAAO;AACPA,aAAA,OAAA,IAAQ;AAJE,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AAOL,IAAK,8BAAAC,eAAL;AACLA,aAAA,OAAA,IAAQ;AACRA,aAAA,SAAA,IAAU;AACVA,aAAA,SAAA,IAAU;AACVA,aAAA,eAAA,IAAgB;AAChBA,aAAA,WAAA,IAAY;AACZA,aAAA,aAAA,IAAc;AACdA,aAAA,UAAA,IAAW;AACXA,aAAA,iBAAA,IAAkB;AARR,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AAWL,MAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AACF;AAEO,IAAK,kCAAAC,mBAAL;AACLA,iBAAA,GAAA,IAAI;AACJA,iBAAA,GAAA,IAAI;AACJA,iBAAA,GAAA,IAAI;AAHM,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AA4CL,SAAS,SAAS,OAAc;AACrC,SAAO,MAAM,WAAW;AAC1B;AAEO,SAAS,eAAe,OAAc;AAC3C,SAAO,MAAM,iBAAiB,SAAS,MAAM,iBAAiB;AAChE;AAEO,SAAS,UAAU,OAAc;AACtC,SAAO,MAAM,YAAY,SAAS,MAAM,YAAY;AACtD;AAEO,SAAS,UAAU,OAAc;AACtC,SAAO,MAAM,YAAY,SAAS,MAAM,YAAY;AACtD;AAEO,SAAS,sBAAsB,GAAU,GAAU;AACxD,MAAI,EAAE,SAAS,EAAE,MAAM;AACrB,WACE,wBAAwB,QAAQ,EAAE,IAAI,IACtC,wBAAwB,QAAQ,EAAE,IAAI;AAAA,EAE1C;AAEA,MAAI,SAAS,CAAC,MAAM,SAAS,CAAC,GAAG;AAC/B,WAAO,SAAS,CAAC,IAAI,IAAI;AAAA,EAC3B;AAEA,MAAI,eAAe,CAAC,MAAM,eAAe,CAAC,GAAG;AAC3C,WAAO,eAAe,CAAC,IAAI,KAAK;AAAA,EAClC;AACA,SAAO,EAAE,KAAK,QAAA,IAAY,EAAE,KAAK,QAAA;AACnC;AAIO,SAAS,gBAAgB,MAAY;AAC1C,QAAM,0BAAU,KAAA;AAChB,QAAM,OAAO,IAAI,QAAA,IAAY,KAAK,QAAA;AAClC,QAAM,gBAAgB,OAAO;AAC7B,MAAI,gBAAgB,IAAI;AACtB,WAAO,KAAK,MAAM,aAAa,IAAI;AAAA,EACrC;AACA,QAAM,gBAAgB,gBAAgB;AACtC,MAAI,gBAAgB,IAAI;AACtB,WACE,KAAK,MAAM,aAAa,IAAI,OAAO,KAAK,MAAM,gBAAgB,EAAE,IAAI;AAAA,EAExE;AACA,QAAM,cAAc,gBAAgB;AACpC,MAAI,cAAc,IAAI;AACpB,WACE,KAAK,MAAM,WAAW,IAAI,OAAO,KAAK,MAAM,gBAAgB,EAAE,IAAI;AAAA,EAEtE;AACA,QAAM,aAAa,cAAc;AACjC,MAAI,aAAa,KAAK;AACpB,WAAO,KAAK,MAAM,UAAU,IAAI,OAAO,KAAK,MAAM,cAAc,EAAE,IAAI;AAAA,EACxE;AACA,SACE,KAAK,MAAM,aAAa,GAAG,IAAI,OAAO,KAAK,MAAM,aAAa,GAAG,IAAI;AAEzE;"}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["export enum Direction {\n Up = 'up',\n Down = 'down',\n Left = 'left',\n Right = 'right',\n}\n\nexport enum AlertType {\n Alarm = 'alarm',\n Warning = 'warning',\n Caution = 'caution',\n LevelCritical = 'level-critical',\n LevelHigh = 'level-high',\n LevelMedium = 'level-medium',\n LevelLow = 'level-low',\n LevelDiagnostic = 'level-diagnostic',\n}\n\nexport const ALERT_SEVERITY_PRIORITY = [\n AlertType.LevelCritical,\n AlertType.Alarm,\n AlertType.LevelHigh,\n AlertType.Warning,\n AlertType.LevelMedium,\n AlertType.Caution,\n AlertType.LevelLow,\n AlertType.LevelDiagnostic,\n];\n\nexport enum AlertCategory {\n a = 'a',\n b = 'b',\n c = 'c',\n}\n\nexport interface Alert {\n id: string;\n tagId: string;\n source: string;\n text: string;\n note?: string;\n acknowledged:\n | false\n | {\n acknowledgedBy: string;\n acknowledgedAt: Date;\n };\n active:\n | true\n | {\n rectifiedTime: Date;\n };\n type: AlertType;\n time: Date;\n lastModified?: Date;\n shelved?:\n | false\n | {\n shelvedStartTime: Date;\n shelvedEndTime?: Date;\n shelvedBy?: string;\n };\n blocked?:\n | false\n | {\n blockedStartTime: Date;\n blockedEndTime?: Date;\n blockedBy?: string;\n };\n noAck?: boolean;\n noSilence?: boolean;\n category?: AlertCategory;\n memberOf?: string[];\n}\n\nexport function isActive(alert: Alert) {\n return alert.active === true;\n}\n\nexport function isAcknowledged(alert: Alert) {\n return alert.acknowledged !== false && alert.acknowledged !== undefined;\n}\n\nexport function isShelved(alert: Alert) {\n return alert.shelved !== false && alert.shelved !== undefined;\n}\n\nexport function isBlocked(alert: Alert) {\n return alert.blocked !== false && alert.blocked !== undefined;\n}\n\nexport function comparePriorityAlerts(a: Alert, b: Alert) {\n if (a.type !== b.type) {\n return (\n ALERT_SEVERITY_PRIORITY.indexOf(b.type) -\n ALERT_SEVERITY_PRIORITY.indexOf(a.type)\n );\n }\n\n if (isActive(a) !== isActive(b)) {\n return isActive(a) ? 1 : -1;\n }\n\n if (isAcknowledged(a) !== isAcknowledged(b)) {\n return isAcknowledged(a) ? -1 : 1;\n }\n return a.time.getTime() - b.time.getTime();\n}\n\nexport type TimeSinceFn = (time: Date) => string;\n\nexport function formatTimeSince(time: Date) {\n const now = new Date();\n const diff = now.getTime() - time.getTime();\n const diffInSeconds = diff / 1000;\n if (diffInSeconds < 60) {\n return Math.round(diffInSeconds) + 's';\n }\n const diffInMinutes = diffInSeconds / 60;\n if (diffInMinutes < 60) {\n return (\n Math.round(diffInMinutes) + 'm ' + Math.round(diffInSeconds % 60) + 's'\n );\n }\n const diffInHours = diffInMinutes / 60;\n if (diffInHours < 24) {\n return (\n Math.round(diffInHours) + 'h ' + Math.round(diffInMinutes % 60) + 'm'\n );\n }\n const diffInDays = diffInHours / 24;\n if (diffInDays < 365) {\n return Math.round(diffInDays) + 'd ' + Math.round(diffInHours % 24) + 'h';\n }\n return (\n Math.round(diffInDays / 365) + 'y ' + Math.round(diffInDays % 365) + 'd'\n );\n}\n"],"names":["Direction","AlertType","AlertCategory"],"mappings":"AAAO,IAAK,8BAAAA,eAAL;AACLA,aAAA,IAAA,IAAK;AACLA,aAAA,MAAA,IAAO;AACPA,aAAA,MAAA,IAAO;AACPA,aAAA,OAAA,IAAQ;AAJE,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AAOL,IAAK,8BAAAC,eAAL;AACLA,aAAA,OAAA,IAAQ;AACRA,aAAA,SAAA,IAAU;AACVA,aAAA,SAAA,IAAU;AACVA,aAAA,eAAA,IAAgB;AAChBA,aAAA,WAAA,IAAY;AACZA,aAAA,aAAA,IAAc;AACdA,aAAA,UAAA,IAAW;AACXA,aAAA,iBAAA,IAAkB;AARR,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;AAWL,MAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AACF;AAEO,IAAK,kCAAAC,mBAAL;AACLA,iBAAA,GAAA,IAAI;AACJA,iBAAA,GAAA,IAAI;AACJA,iBAAA,GAAA,IAAI;AAHM,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AA8CL,SAAS,SAAS,OAAc;AACrC,SAAO,MAAM,WAAW;AAC1B;AAEO,SAAS,eAAe,OAAc;AAC3C,SAAO,MAAM,iBAAiB,SAAS,MAAM,iBAAiB;AAChE;AAEO,SAAS,UAAU,OAAc;AACtC,SAAO,MAAM,YAAY,SAAS,MAAM,YAAY;AACtD;AAEO,SAAS,UAAU,OAAc;AACtC,SAAO,MAAM,YAAY,SAAS,MAAM,YAAY;AACtD;AAEO,SAAS,sBAAsB,GAAU,GAAU;AACxD,MAAI,EAAE,SAAS,EAAE,MAAM;AACrB,WACE,wBAAwB,QAAQ,EAAE,IAAI,IACtC,wBAAwB,QAAQ,EAAE,IAAI;AAAA,EAE1C;AAEA,MAAI,SAAS,CAAC,MAAM,SAAS,CAAC,GAAG;AAC/B,WAAO,SAAS,CAAC,IAAI,IAAI;AAAA,EAC3B;AAEA,MAAI,eAAe,CAAC,MAAM,eAAe,CAAC,GAAG;AAC3C,WAAO,eAAe,CAAC,IAAI,KAAK;AAAA,EAClC;AACA,SAAO,EAAE,KAAK,QAAA,IAAY,EAAE,KAAK,QAAA;AACnC;AAIO,SAAS,gBAAgB,MAAY;AAC1C,QAAM,0BAAU,KAAA;AAChB,QAAM,OAAO,IAAI,QAAA,IAAY,KAAK,QAAA;AAClC,QAAM,gBAAgB,OAAO;AAC7B,MAAI,gBAAgB,IAAI;AACtB,WAAO,KAAK,MAAM,aAAa,IAAI;AAAA,EACrC;AACA,QAAM,gBAAgB,gBAAgB;AACtC,MAAI,gBAAgB,IAAI;AACtB,WACE,KAAK,MAAM,aAAa,IAAI,OAAO,KAAK,MAAM,gBAAgB,EAAE,IAAI;AAAA,EAExE;AACA,QAAM,cAAc,gBAAgB;AACpC,MAAI,cAAc,IAAI;AACpB,WACE,KAAK,MAAM,WAAW,IAAI,OAAO,KAAK,MAAM,gBAAgB,EAAE,IAAI;AAAA,EAEtE;AACA,QAAM,aAAa,cAAc;AACjC,MAAI,aAAa,KAAK;AACpB,WAAO,KAAK,MAAM,UAAU,IAAI,OAAO,KAAK,MAAM,cAAc,EAAE,IAAI;AAAA,EACxE;AACA,SACE,KAAK,MAAM,aAAa,GAAG,IAAI,OAAO,KAAK,MAAM,aAAa,GAAG,IAAI;AAEzE;"}