@fluid-topics/ft-filterable-table 0.0.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ ## Install
2
+
3
+ ```shell
4
+ npm install @fluid-topics/ft-filterable-table
5
+ yarn add @fluid-topics/ft-filterable-table
6
+ ```
7
+
8
+ ## Usage
9
+
10
+ ### Lit
11
+
12
+ ```typescript
13
+ import { html } from "lit"
14
+ import "@fluid-topics/ft-filterable-table"
15
+ import {
16
+ ColumnConfiguration,
17
+ RowClickEvent
18
+ } from "@fluid-topics/ft-filterable-table"
19
+
20
+ interface Model {
21
+ ...
22
+ }
23
+
24
+ function render() {
25
+ const data: Array<Model> = [ ... ]
26
+ const columns: Array<ColumnConfiguration<Model>> = [ ... ]
27
+ const sort: Sort = {
28
+ column: 0,
29
+ order: "asc"
30
+ }
31
+ return html`
32
+ <ft-filterable-table
33
+ .data=${ data }
34
+ .columns=${ columns }
35
+ .sort=${ sort }
36
+ @row-click=${ (e: RowClickEvent<Model>) => console.log("Clicked on row: " + e.detail.title) }
37
+ />
38
+ `
39
+ }
40
+ ```
41
+
42
+ ### Vanilla JS
43
+
44
+ ```html
45
+ <!DOCTYPE html>
46
+ <html>
47
+ <head>
48
+ <title>Ft Filterable Table Demo</title>
49
+ <script src="./build/ft-filterable-table.min.js"></script>
50
+ <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet">
51
+ </head>
52
+ <body>
53
+ <ft-filterable-table id="table"></ft-filterable-table>
54
+ <script>
55
+ const data = [...]
56
+ const columns = [...]
57
+ const sort = {
58
+ column: 0,
59
+ order: "asc"
60
+ }
61
+ let table = document.getElementById("table")
62
+ table.init(data, columns, sort)
63
+ table.addEventListener("row-click", e => console.log("Clicked on row: " + e.detail.title))
64
+ </script>
65
+ </body>
66
+ </html>
67
+
68
+ ```
@@ -0,0 +1,59 @@
1
+ import { PropertyValues, TemplateResult } from "lit";
2
+ import { ElementDefinitionsMap, FtLitElement } from "@fluid-topics/ft-wc-utils";
3
+ export declare type Getter<T> = (o: T) => any;
4
+ export interface ColumnConfiguration<T> {
5
+ title: string | TemplateResult;
6
+ getter: string | Getter<T>;
7
+ render?: (value: any, index: number) => string | TemplateResult;
8
+ sortable?: boolean;
9
+ comparator?: (a: any, b: any) => number;
10
+ filter?: "text" | "select" | "date" | "none";
11
+ stringify?: (value: any, index: number) => string;
12
+ }
13
+ export interface Sort {
14
+ column: number;
15
+ order: "asc" | "desc";
16
+ }
17
+ interface Filter {
18
+ value?: string;
19
+ rangeStart?: Date;
20
+ rangeEnd?: Date;
21
+ }
22
+ export declare class RowClickEvent<T> extends CustomEvent<T> {
23
+ constructor(data: T);
24
+ }
25
+ export interface FtFilterableTableProperties<T extends Record<string, any>> {
26
+ data: Array<T>;
27
+ columns: Array<ColumnConfiguration<T>>;
28
+ sort?: Sort;
29
+ }
30
+ export interface FtFilterableTableCssVariables {
31
+ "--ft-filterable-table-header-background": string;
32
+ "--ft-filterable-table-odd-row-background": string;
33
+ "--ft-filterable-table-even-row-background": string;
34
+ "--ft-filterable-table-row-hover-background": string;
35
+ }
36
+ export declare class FtFilterableTable<T extends Record<string, any>> extends FtLitElement implements FtFilterableTableProperties<T> {
37
+ static elementDefinitions: ElementDefinitionsMap;
38
+ data: Array<T>;
39
+ columns: Array<ColumnConfiguration<T>>;
40
+ sort?: Sort;
41
+ currentSort?: Sort;
42
+ filters: Array<Filter>;
43
+ selectData: Array<Array<string>>;
44
+ protected getStyles(): import("lit").CSSResult;
45
+ init(data: Array<T>, columns: Array<ColumnConfiguration<T>>, sort?: Sort): void;
46
+ protected getTemplate(): TemplateResult<1>;
47
+ private filterData;
48
+ private sortData;
49
+ protected update(props: PropertyValues): void;
50
+ private updateSelectData;
51
+ private renderHeader;
52
+ private renderColumnSort;
53
+ private renderColumnFilter;
54
+ private renderCell;
55
+ private getValue;
56
+ private getValueAsString;
57
+ }
58
+ export {};
59
+ //# sourceMappingURL=ft-filterable-table.d.ts.map
@@ -0,0 +1,338 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, html } from "lit";
8
+ import { property, state } from "lit/decorators.js";
9
+ import { repeat } from "lit/directives/repeat.js";
10
+ import { unsafeHTML } from "lit/directives/unsafe-html.js";
11
+ import { customElement, FtLitElement } from "@fluid-topics/ft-wc-utils";
12
+ import { FtSelect, FtSelectOption } from "@fluid-topics/ft-select";
13
+ import { FtTextField } from "@fluid-topics/ft-text-field";
14
+ import { FtButton } from "@fluid-topics/ft-button";
15
+ export class RowClickEvent extends CustomEvent {
16
+ constructor(data) {
17
+ super("row-click", { detail: data });
18
+ }
19
+ }
20
+ const DEFAULT_RENDER = (v) => html `${v}`;
21
+ const DEFAULT_COMPARATOR = (a, b) => a - b;
22
+ const DEFAULT_STRINGIFY = (v) => "" + v;
23
+ let FtFilterableTable = class FtFilterableTable extends FtLitElement {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.data = [];
27
+ this.columns = [];
28
+ this.filters = [];
29
+ this.selectData = [];
30
+ }
31
+ //language=css
32
+ getStyles() {
33
+ return css `
34
+ :host {
35
+ display: block;
36
+ }
37
+
38
+ .table {
39
+ display: grid;
40
+ }
41
+
42
+ .header, .row {
43
+ display: contents;
44
+ }
45
+
46
+ .header-cell {
47
+ display: flex;
48
+ flex-direction: column;
49
+ background: var(--ft-filterable-table-header-background, whitesmoke);
50
+ color: var(--ft-color-on-surface-high, rgba(0, 0, 0, 0.87));
51
+ padding: .5rem 1rem;
52
+ font-family: var(--ft-title-font, Ubuntu), system-ui, sans-serif;
53
+
54
+ --mdc-icon-size: 20px;
55
+ --mdc-icon-button-size: 30px;
56
+ }
57
+
58
+ .header-cell:first-of-type {
59
+ border-radius: .5rem 0 0 0;
60
+ }
61
+
62
+ .header-cell:last-of-type {
63
+ border-radius: 0 .5rem 0 0;
64
+ }
65
+
66
+ .column-title-container {
67
+ display: flex;
68
+ align-items: center;
69
+ }
70
+
71
+ .column-title-container ft-button {
72
+ --ft-color-surface: var(--ft-filterable-table-header-background, whitesmoke);
73
+ --ft-color-primary: var(--ft-color-on-surface-high, rgba(0, 0, 0, 0.87));
74
+ }
75
+
76
+ .column-title {
77
+ white-space: nowrap;
78
+ text-transform: uppercase;
79
+ margin-right: .5rem;
80
+ }
81
+
82
+ .column-filter {
83
+ flex-grow: 1;
84
+ flex-shrink: 0;
85
+ }
86
+
87
+ .column-filter:not(:empty) {
88
+ padding-top: .5rem;
89
+ }
90
+
91
+ .column-filter ft-text-field,
92
+ .column-filter ft-select {
93
+ width: 150px;
94
+ min-width: 100%;
95
+
96
+ --mdc-text-field-fill-color: var(--ft-filterable-table-header-background, whitesmoke);
97
+ --mdc-select-fill-color: var(--ft-filterable-table-header-background, whitesmoke);
98
+ }
99
+
100
+ .cell {
101
+ padding: 1rem;
102
+ border-left: 1px solid var(--ft-filterable-table-header-background, whitesmoke);
103
+ border-bottom: 1px solid var(--ft-filterable-table-header-background, whitesmoke);
104
+ overflow-x: auto;
105
+ display: flex;
106
+ align-items: center;
107
+ font-family: var(--ft-content-font, 'Open Sans'), system-ui, sans-serif;
108
+ }
109
+
110
+ /* Even is 2n+1 and odd is 2n because of the header */
111
+ .row:nth-child(2n) > .cell {
112
+ background: var(--ft-filterable-table-odd-row-background, white);
113
+ }
114
+
115
+ .row:nth-child(2n + 1) > .cell {
116
+ background: var(--ft-filterable-table-even-row-background, #fdfdfd);
117
+ }
118
+
119
+ .row:hover > .cell {
120
+ background: var(--ft-filterable-table-row-hover-background, #fafafa);
121
+ }
122
+
123
+ .cell:last-of-type {
124
+ border-right: 1px solid var(--ft-filterable-table-header-background, whitesmoke);
125
+ }
126
+
127
+ .row:last-of-type .cell:first-of-type {
128
+ border-radius: 0 0 0 .5rem;
129
+ }
130
+
131
+ .row:last-of-type .cell:last-of-type {
132
+ border-radius: 0 0 .5rem 0;
133
+ }
134
+
135
+ .hidden {
136
+ visibility: hidden;
137
+ }
138
+ `;
139
+ }
140
+ init(data, columns, sort) {
141
+ this.data = data;
142
+ this.columns = columns;
143
+ this.sort = sort;
144
+ }
145
+ getTemplate() {
146
+ let data = this.sortData(this.filterData());
147
+ return html `
148
+ <style>
149
+ .table {
150
+ grid-template-columns: repeat(${this.columns.length}, minmax(min-content, auto));
151
+ }
152
+ </style>
153
+ <div class="table">
154
+ <div class="header">
155
+ ${repeat(this.columns, (_, index) => "header-cell-" + index, (column, index) => this.renderHeader(column, index))}
156
+ </div>
157
+ ${repeat(data, (_, rowIndex) => "row-" + rowIndex, (row, rowIndex) => html `
158
+ <div class="row"
159
+ @click=${() => this.dispatchEvent(new RowClickEvent(row))}>
160
+ ${repeat(this.columns, (_, columnIndex) => "cell-" + rowIndex + " " + columnIndex, (column) => this.renderCell(column, row, rowIndex))}
161
+ </div>
162
+ `)}
163
+ </div>
164
+ `;
165
+ }
166
+ filterData() {
167
+ let data = [...this.data];
168
+ this.filters.forEach((filter, columnIndex) => {
169
+ var _a;
170
+ const column = this.columns[columnIndex];
171
+ if (filter) {
172
+ switch ((_a = column.filter) !== null && _a !== void 0 ? _a : "text") {
173
+ case "text":
174
+ if (filter.value) {
175
+ data = data.filter((row) => this.getValueAsString(column, row, columnIndex).toLowerCase().includes(filter.value.toLowerCase()));
176
+ }
177
+ break;
178
+ case "select":
179
+ if (filter.value) {
180
+ data = data.filter((row) => this.getValueAsString(column, row, columnIndex) === filter.value);
181
+ }
182
+ break;
183
+ }
184
+ }
185
+ });
186
+ return data;
187
+ }
188
+ sortData(data) {
189
+ var _a;
190
+ if (this.currentSort) {
191
+ const column = this.columns[this.currentSort.column];
192
+ const ascComparator = (_a = column.comparator) !== null && _a !== void 0 ? _a : DEFAULT_COMPARATOR;
193
+ const comparator = this.currentSort.order === "asc" ? ascComparator : ((a, b) => -ascComparator(a, b));
194
+ return data.sort((a, b) => comparator(this.getValue(column, a), this.getValue(column, b)));
195
+ }
196
+ return data;
197
+ }
198
+ update(props) {
199
+ super.update(props);
200
+ if (props.has("sort")) {
201
+ this.currentSort = this.sort;
202
+ }
203
+ if (props.has("data") || props.has("columns")) {
204
+ this.updateSelectData();
205
+ }
206
+ }
207
+ updateSelectData() {
208
+ this.selectData = [];
209
+ const data = this.data;
210
+ const columns = this.columns;
211
+ for (let index in columns) {
212
+ const column = columns[index];
213
+ if (column.filter === "select") {
214
+ this.selectData[index] = [...new Set(data.map((r, i) => this.getValueAsString(column, r, i)))]
215
+ .sort((a, b) => a.localeCompare(b));
216
+ }
217
+ }
218
+ this.requestUpdate();
219
+ }
220
+ renderHeader(column, index) {
221
+ return html `
222
+ <div class="header-cell">
223
+ <div class="column-title-container">
224
+ <span class="column-title">${column.title}</span>
225
+ ${this.renderColumnSort(column, index)}
226
+ </div>
227
+ <div class="column-filter">
228
+ ${this.renderColumnFilter(column, index)}
229
+ </div>
230
+ </div>
231
+ `;
232
+ }
233
+ renderColumnSort(column, index) {
234
+ var _a;
235
+ const isSorted = this.currentSort && this.currentSort.column === index;
236
+ const sortIcon = isSorted ? (this.currentSort.order === "asc" ? "expand_more" : "expand_less") : "unfold_more";
237
+ const sort = () => {
238
+ var _a;
239
+ if (isSorted) {
240
+ if (((_a = this.currentSort) === null || _a === void 0 ? void 0 : _a.order) === "asc") {
241
+ this.currentSort = {
242
+ column: index,
243
+ order: "desc"
244
+ };
245
+ }
246
+ else {
247
+ this.currentSort = undefined;
248
+ }
249
+ }
250
+ else {
251
+ this.currentSort = {
252
+ column: index,
253
+ order: "asc"
254
+ };
255
+ }
256
+ };
257
+ return html `
258
+ <ft-button
259
+ round
260
+ dense
261
+ class="${((_a = column.sortable) !== null && _a !== void 0 ? _a : true) ? "" : "hidden"}"
262
+ icon="${sortIcon}"
263
+ label="Sort ${column.title}"
264
+ @click=${sort}
265
+ ></ft-button>
266
+ `;
267
+ }
268
+ renderColumnFilter(column, index) {
269
+ var _a, _b;
270
+ const onChange = (e) => {
271
+ this.filters[index] = { value: e.detail };
272
+ this.requestUpdate();
273
+ };
274
+ switch ((_a = column.filter) !== null && _a !== void 0 ? _a : "text") {
275
+ case "text":
276
+ return html `
277
+ <ft-text-field
278
+ label="Search ${column.title}"
279
+ @live-change="${onChange}"
280
+ ></ft-text-field>
281
+ `;
282
+ case "select":
283
+ const values = (_b = this.selectData[index]) !== null && _b !== void 0 ? _b : [];
284
+ return values.length ? html `
285
+ <ft-select label="Filter ${column.title}" @change=${onChange}>
286
+ <ft-select-option></ft-select-option>
287
+ ${values.map(v => html `
288
+ <ft-select-option value="${v}" label="${v}"></ft-select-option>
289
+ `)}
290
+ </ft-select>
291
+ ` : null;
292
+ case "date":
293
+ break;
294
+ }
295
+ return null;
296
+ }
297
+ renderCell(column, row, rowIndex) {
298
+ var _a;
299
+ const renderer = (_a = column.render) !== null && _a !== void 0 ? _a : DEFAULT_RENDER;
300
+ const render = (value) => {
301
+ const rendered = renderer(value, rowIndex);
302
+ return typeof rendered === "string" ? unsafeHTML(rendered) : rendered;
303
+ };
304
+ return html `
305
+ <div class="cell">${render(this.getValue(column, row))}</div>
306
+ `;
307
+ }
308
+ getValue(column, row) {
309
+ return typeof column.getter === "string" ? row[column.getter] : column.getter(row);
310
+ }
311
+ getValueAsString(column, row, index) {
312
+ const value = this.getValue(column, row);
313
+ return typeof column.stringify === "function" ? column.stringify(value, index) : DEFAULT_STRINGIFY(value);
314
+ }
315
+ };
316
+ FtFilterableTable.elementDefinitions = {
317
+ "ft-button": FtButton,
318
+ "ft-select": FtSelect,
319
+ "ft-select-option": FtSelectOption,
320
+ "ft-text-field": FtTextField,
321
+ };
322
+ __decorate([
323
+ property({ attribute: false })
324
+ ], FtFilterableTable.prototype, "data", void 0);
325
+ __decorate([
326
+ property({ attribute: false })
327
+ ], FtFilterableTable.prototype, "columns", void 0);
328
+ __decorate([
329
+ property({ attribute: false })
330
+ ], FtFilterableTable.prototype, "sort", void 0);
331
+ __decorate([
332
+ state()
333
+ ], FtFilterableTable.prototype, "currentSort", void 0);
334
+ FtFilterableTable = __decorate([
335
+ customElement("ft-filterable-table")
336
+ ], FtFilterableTable);
337
+ export { FtFilterableTable };
338
+ //# sourceMappingURL=ft-filterable-table.js.map
@@ -0,0 +1,346 @@
1
+ !function(t){
2
+ /**
3
+ * @license
4
+ * Copyright 2019 Google LLC
5
+ * SPDX-License-Identifier: BSD-3-Clause
6
+ */
7
+ const e=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),r=new Map;class o{constructor(t,e){if(this._$cssResult$=!0,e!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){let t=r.get(this.cssText);return e&&void 0===t&&(r.set(this.cssText,t=new CSSStyleSheet),t.replaceSync(this.cssText)),t}toString(){return this.cssText}}const n=(t,...e)=>{const r=1===t.length?t[0]:e.reduce(((e,i,r)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[r+1]),t[0]);return new o(r,i)},a=(t,i)=>{e?t.adoptedStyleSheets=i.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):i.forEach((e=>{const i=document.createElement("style"),r=window.litNonce;void 0!==r&&i.setAttribute("nonce",r),i.textContent=e.cssText,t.appendChild(i)}))},s=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new o("string"==typeof t?t:t+"",i))(e)})(t):t
8
+ /**
9
+ * @license
10
+ * Copyright 2017 Google LLC
11
+ * SPDX-License-Identifier: BSD-3-Clause
12
+ */;var l;const c=window.trustedTypes,p=c?c.emptyScript:"",d=window.reactiveElementPolyfillSupport,f={toAttribute(t,e){switch(e){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},u=(t,e)=>e!==t&&(e==e||t==t),h={attribute:!0,type:String,converter:f,reflect:!1,hasChanged:u};class v extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var e;null!==(e=this.l)&&void 0!==e||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const r=this._$Eh(i,e);void 0!==r&&(this._$Eu.set(r,i),t.push(r))})),t}static createProperty(t,e=h){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,r=this.getPropertyDescriptor(t,i,e);void 0!==r&&Object.defineProperty(this.prototype,t,r)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(r){const o=this[t];this[e]=r,this.requestUpdate(t,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||h}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),this.elementProperties=new Map(t.elementProperties),this._$Eu=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(s(t))}else void 0!==t&&e.push(s(t));return e}static _$Eh(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}o(){var t;this._$Ep=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Em(),this.requestUpdate(),null===(t=this.constructor.l)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$Eg)&&void 0!==e?e:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$Eg)||void 0===e||e.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Et.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const e=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return a(e,this.constructor.elementStyles),e}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$ES(t,e,i=h){var r,o;const n=this.constructor._$Eh(t,i);if(void 0!==n&&!0===i.reflect){const a=(null!==(o=null===(r=i.converter)||void 0===r?void 0:r.toAttribute)&&void 0!==o?o:f.toAttribute)(e,i.type);this._$Ei=t,null==a?this.removeAttribute(n):this.setAttribute(n,a),this._$Ei=null}}_$AK(t,e){var i,r,o;const n=this.constructor,a=n._$Eu.get(t);if(void 0!==a&&this._$Ei!==a){const t=n.getPropertyOptions(a),s=t.converter,l=null!==(o=null!==(r=null===(i=s)||void 0===i?void 0:i.fromAttribute)&&void 0!==r?r:"function"==typeof s?s:null)&&void 0!==o?o:f.fromAttribute;this._$Ei=a,this[a]=l(e,t.type),this._$Ei=null}}requestUpdate(t,e,i){let r=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||u)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,i))):r=!1),!this.isUpdatePending&&r&&(this._$Ep=this._$EC())}async _$EC(){this.isUpdatePending=!0;try{await this._$Ep}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Et&&(this._$Et.forEach(((t,e)=>this[e]=t)),this._$Et=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$Eg)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Ep}shouldUpdate(t){return!0}update(t){void 0!==this._$E_&&(this._$E_.forEach(((t,e)=>this._$ES(e,this[e],t))),this._$E_=void 0),this._$EU()}updated(t){}firstUpdated(t){}}
13
+ /**
14
+ * @license
15
+ * Copyright 2017 Google LLC
16
+ * SPDX-License-Identifier: BSD-3-Clause
17
+ */
18
+ var y;v.finalized=!0,v.elementProperties=new Map,v.elementStyles=[],v.shadowRootOptions={mode:"open"},null==d||d({ReactiveElement:v}),(null!==(l=globalThis.reactiveElementVersions)&&void 0!==l?l:globalThis.reactiveElementVersions=[]).push("1.2.2");const m=globalThis.trustedTypes,b=m?m.createPolicy("lit-html",{createHTML:t=>t}):void 0,g=`lit$${(Math.random()+"").slice(9)}$`,x="?"+g,w=`<${x}>`,k=document,$=(t="")=>k.createComment(t),S=t=>null===t||"object"!=typeof t&&"function"!=typeof t,z=Array.isArray,O=t=>{var e;return z(t)||"function"==typeof(null===(e=t)||void 0===e?void 0:e[Symbol.iterator])},A=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,T=/-->/g,j=/>/g,C=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,E=/'/g,_=/"/g,M=/^(?:script|style|textarea|title)$/i,R=(t=>(e,...i)=>({_$litType$:t,strings:e,values:i}))(1),F=Symbol.for("lit-noChange"),B=Symbol.for("lit-nothing"),D=new WeakMap,I=k.createTreeWalker(k,129,null,!1),U=(t,e)=>{const i=t.length-1,r=[];let o,n=2===e?"<svg>":"",a=A;for(let e=0;e<i;e++){const i=t[e];let s,l,c=-1,p=0;for(;p<i.length&&(a.lastIndex=p,l=a.exec(i),null!==l);)p=a.lastIndex,a===A?"!--"===l[1]?a=T:void 0!==l[1]?a=j:void 0!==l[2]?(M.test(l[2])&&(o=RegExp("</"+l[2],"g")),a=C):void 0!==l[3]&&(a=C):a===C?">"===l[0]?(a=null!=o?o:A,c=-1):void 0===l[1]?c=-2:(c=a.lastIndex-l[2].length,s=l[1],a=void 0===l[3]?C:'"'===l[3]?_:E):a===_||a===E?a=C:a===T||a===j?a=A:(a=C,o=void 0);const d=a===C&&t[e+1].startsWith("/>")?" ":"";n+=a===A?i+w:c>=0?(r.push(s),i.slice(0,c)+"$lit$"+i.slice(c)+g+d):i+g+(-2===c?(r.push(void 0),e):d)}const s=n+(t[i]||"<?>")+(2===e?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==b?b.createHTML(s):s,r]};class H{constructor({strings:t,_$litType$:e},i){let r;this.parts=[];let o=0,n=0;const a=t.length-1,s=this.parts,[l,c]=U(t,e);if(this.el=H.createElement(l,i),I.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(r=I.nextNode())&&s.length<a;){if(1===r.nodeType){if(r.hasAttributes()){const t=[];for(const e of r.getAttributeNames())if(e.endsWith("$lit$")||e.startsWith(g)){const i=c[n++];if(t.push(e),void 0!==i){const t=r.getAttribute(i.toLowerCase()+"$lit$").split(g),e=/([.?@])?(.*)/.exec(i);s.push({type:1,index:o,name:e[2],strings:t,ctor:"."===e[1]?q:"?"===e[1]?W:"@"===e[1]?K:V})}else s.push({type:6,index:o})}for(const e of t)r.removeAttribute(e)}if(M.test(r.tagName)){const t=r.textContent.split(g),e=t.length-1;if(e>0){r.textContent=m?m.emptyScript:"";for(let i=0;i<e;i++)r.append(t[i],$()),I.nextNode(),s.push({type:2,index:++o});r.append(t[e],$())}}}else if(8===r.nodeType)if(r.data===x)s.push({type:2,index:o});else{let t=-1;for(;-1!==(t=r.data.indexOf(g,t+1));)s.push({type:7,index:o}),t+=g.length-1}o++}}static createElement(t,e){const i=k.createElement("template");return i.innerHTML=t,i}}function N(t,e,i=t,r){var o,n,a,s;if(e===F)return e;let l=void 0!==r?null===(o=i._$Cl)||void 0===o?void 0:o[r]:i._$Cu;const c=S(e)?void 0:e._$litDirective$;return(null==l?void 0:l.constructor)!==c&&(null===(n=null==l?void 0:l._$AO)||void 0===n||n.call(l,!1),void 0===c?l=void 0:(l=new c(t),l._$AT(t,i,r)),void 0!==r?(null!==(a=(s=i)._$Cl)&&void 0!==a?a:s._$Cl=[])[r]=l:i._$Cu=l),void 0!==l&&(e=N(t,l._$AS(t,e.values),l,r)),e}class L{constructor(t,e){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var e;const{el:{content:i},parts:r}=this._$AD,o=(null!==(e=null==t?void 0:t.creationScope)&&void 0!==e?e:k).importNode(i,!0);I.currentNode=o;let n=I.nextNode(),a=0,s=0,l=r[0];for(;void 0!==l;){if(a===l.index){let e;2===l.type?e=new P(n,n.nextSibling,this,t):1===l.type?e=new l.ctor(n,l.name,l.strings,this,t):6===l.type&&(e=new Z(n,this,t)),this.v.push(e),l=r[++s]}a!==(null==l?void 0:l.index)&&(n=I.nextNode(),a++)}return o}m(t){let e=0;for(const i of this.v)void 0!==i&&(void 0!==i.strings?(i._$AI(t,i,e),e+=i.strings.length-2):i._$AI(t[e])),e++}}class P{constructor(t,e,i,r){var o;this.type=2,this._$AH=B,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=i,this.options=r,this._$Cg=null===(o=null==r?void 0:r.isConnected)||void 0===o||o}get _$AU(){var t,e;return null!==(e=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==e?e:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===t.nodeType&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=N(this,t,e),S(t)?t===B||null==t||""===t?(this._$AH!==B&&this._$AR(),this._$AH=B):t!==this._$AH&&t!==F&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):O(t)?this.A(t):this.$(t)}M(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==B&&S(this._$AH)?this._$AA.nextSibling.data=t:this.S(k.createTextNode(t)),this._$AH=t}T(t){var e;const{values:i,_$litType$:r}=t,o="number"==typeof r?this._$AC(t):(void 0===r.el&&(r.el=H.createElement(r.h,this.options)),r);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===o)this._$AH.m(i);else{const t=new L(o,this),e=t.p(this.options);t.m(i),this.S(e),this._$AH=t}}_$AC(t){let e=D.get(t.strings);return void 0===e&&D.set(t.strings,e=new H(t)),e}A(t){z(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,r=0;for(const o of t)r===e.length?e.push(i=new P(this.M($()),this.M($()),this,this.options)):i=e[r],i._$AI(o),r++;r<e.length&&(this._$AR(i&&i._$AB.nextSibling,r),e.length=r)}_$AR(t=this._$AA.nextSibling,e){var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,e);t&&t!==this._$AB;){const e=t.nextSibling;t.remove(),t=e}}setConnected(t){var e;void 0===this._$AM&&(this._$Cg=t,null===(e=this._$AP)||void 0===e||e.call(this,t))}}class V{constructor(t,e,i,r,o){this.type=1,this._$AH=B,this._$AN=void 0,this.element=t,this.name=e,this._$AM=r,this.options=o,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=B}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,r){const o=this.strings;let n=!1;if(void 0===o)t=N(this,t,e,0),n=!S(t)||t!==this._$AH&&t!==F,n&&(this._$AH=t);else{const r=t;let a,s;for(t=o[0],a=0;a<o.length-1;a++)s=N(this,r[i+a],e,a),s===F&&(s=this._$AH[a]),n||(n=!S(s)||s!==this._$AH[a]),s===B?t=B:t!==B&&(t+=(null!=s?s:"")+o[a+1]),this._$AH[a]=s}n&&!r&&this.k(t)}k(t){t===B?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class q extends V{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===B?void 0:t}}const G=m?m.emptyScript:"";class W extends V{constructor(){super(...arguments),this.type=4}k(t){t&&t!==B?this.element.setAttribute(this.name,G):this.element.removeAttribute(this.name)}}class K extends V{constructor(t,e,i,r,o){super(t,e,i,r,o),this.type=5}_$AI(t,e=this){var i;if((t=null!==(i=N(this,t,e,0))&&void 0!==i?i:B)===F)return;const r=this._$AH,o=t===B&&r!==B||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,n=t!==B&&(r===B||o);o&&this.element.removeEventListener(this.name,this,r),n&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(e=this.options)||void 0===e?void 0:e.host)&&void 0!==i?i:this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,e,i){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(t){N(this,t)}}const J={P:"$lit$",V:g,L:x,I:1,N:U,R:L,D:O,j:N,H:P,O:V,F:W,B:K,W:q,Z},X=window.litHtmlPolyfillSupport;
19
+ /**
20
+ * @license
21
+ * Copyright 2017 Google LLC
22
+ * SPDX-License-Identifier: BSD-3-Clause
23
+ */
24
+ var Y,Q;null==X||X(H,P),(null!==(y=globalThis.litHtmlVersions)&&void 0!==y?y:globalThis.litHtmlVersions=[]).push("2.1.3");class tt extends v{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=((t,e,i)=>{var r,o;const n=null!==(r=null==i?void 0:i.renderBefore)&&void 0!==r?r:e;let a=n._$litPart$;if(void 0===a){const t=null!==(o=null==i?void 0:i.renderBefore)&&void 0!==o?o:null;n._$litPart$=a=new P(e.insertBefore($(),t),t,void 0,null!=i?i:{})}return a._$AI(t),a})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Dt)||void 0===t||t.setConnected(!1)}render(){return F}}tt.finalized=!0,tt._$litElement$=!0,null===(Y=globalThis.litElementHydrateSupport)||void 0===Y||Y.call(globalThis,{LitElement:tt});const et=globalThis.litElementPolyfillSupport;null==et||et({LitElement:tt}),(null!==(Q=globalThis.litElementVersions)&&void 0!==Q?Q:globalThis.litElementVersions=[]).push("3.1.2");
25
+ /**
26
+ * @license
27
+ * Copyright 2017 Google LLC
28
+ * SPDX-License-Identifier: BSD-3-Clause
29
+ */
30
+ const it=t=>e=>"function"==typeof e?((t,e)=>(window.customElements.define(t,e),e))(t,e):((t,e)=>{const{kind:i,elements:r}=e;return{kind:i,elements:r,finisher(e){window.customElements.define(t,e)}}})(t,e)
31
+ /**
32
+ * @license
33
+ * Copyright 2017 Google LLC
34
+ * SPDX-License-Identifier: BSD-3-Clause
35
+ */,rt=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(i){i.createProperty(e.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};function ot(t){return(e,i)=>void 0!==i?((t,e,i)=>{e.constructor.createProperty(i,t)})(t,e,i):rt(t,e)
36
+ /**
37
+ * @license
38
+ * Copyright 2017 Google LLC
39
+ * SPDX-License-Identifier: BSD-3-Clause
40
+ */}function nt(t){return ot({...t,state:!0})}
41
+ /**
42
+ * @license
43
+ * Copyright 2017 Google LLC
44
+ * SPDX-License-Identifier: BSD-3-Clause
45
+ */const at=({finisher:t,descriptor:e})=>(i,r)=>{var o;if(void 0===r){const r=null!==(o=i.originalKey)&&void 0!==o?o:i.key,n=null!=e?{kind:"method",placement:"prototype",key:r,descriptor:e(i.key)}:{...i,key:r};return null!=t&&(n.finisher=function(e){t(e,r)}),n}{const o=i.constructor;void 0!==e&&Object.defineProperty(i,r,e(r)),null==t||t(o,r)}}
46
+ /**
47
+ * @license
48
+ * Copyright 2017 Google LLC
49
+ * SPDX-License-Identifier: BSD-3-Clause
50
+ */;function st(t,e){return at({descriptor:i=>{const r={get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(e){const e="symbol"==typeof i?Symbol():"__"+i;r.get=function(){var i,r;return void 0===this[e]&&(this[e]=null!==(r=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==r?r:null),this[e]}}return r}})}
51
+ /**
52
+ * @license
53
+ * Copyright 2021 Google LLC
54
+ * SPDX-License-Identifier: BSD-3-Clause
55
+ */var lt;const ct=null!=(null===(lt=window.HTMLSlotElement)||void 0===lt?void 0:lt.prototype.assignedElements)?(t,e)=>t.assignedElements(e):(t,e)=>t.assignedNodes(e).filter((t=>t.nodeType===Node.ELEMENT_NODE));
56
+ /**
57
+ * @license
58
+ * Copyright 2017 Google LLC
59
+ * SPDX-License-Identifier: BSD-3-Clause
60
+ */
61
+ const pt=1,dt=2,ft=t=>(...e)=>({_$litDirective$:t,values:e});class ut{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}
62
+ /**
63
+ * @license
64
+ * Copyright 2020 Google LLC
65
+ * SPDX-License-Identifier: BSD-3-Clause
66
+ */const{H:ht}=J,vt=()=>document.createComment(""),yt=(t,e,i)=>{var r;const o=t._$AA.parentNode,n=void 0===e?t._$AB:e._$AA;if(void 0===i){const e=o.insertBefore(vt(),n),r=o.insertBefore(vt(),n);i=new ht(e,r,t,t.options)}else{const e=i._$AB.nextSibling,a=i._$AM,s=a!==t;if(s){let e;null===(r=i._$AQ)||void 0===r||r.call(i,t),i._$AM=t,void 0!==i._$AP&&(e=t._$AU)!==a._$AU&&i._$AP(e)}if(e!==n||s){let t=i._$AA;for(;t!==e;){const e=t.nextSibling;o.insertBefore(t,n),t=e}}}return i},mt=(t,e,i=t)=>(t._$AI(e,i),t),bt={},gt=t=>{var e;null===(e=t._$AP)||void 0===e||e.call(t,!1,!0);let i=t._$AA;const r=t._$AB.nextSibling;for(;i!==r;){const t=i.nextSibling;i.remove(),i=t}},xt=(t,e,i)=>{const r=new Map;for(let o=e;o<=i;o++)r.set(t[o],o);return r},wt=ft(class extends ut{constructor(t){if(super(t),t.type!==dt)throw Error("repeat() can only be used in text expressions")}dt(t,e,i){let r;void 0===i?i=e:void 0!==e&&(r=e);const o=[],n=[];let a=0;for(const e of t)o[a]=r?r(e,a):a,n[a]=i(e,a),a++;return{values:n,keys:o}}render(t,e,i){return this.dt(t,e,i).values}update(t,[e,i,r]){var o;const n=(t=>t._$AH)(t),{values:a,keys:s}=this.dt(e,i,r);if(!Array.isArray(n))return this.at=s,a;const l=null!==(o=this.at)&&void 0!==o?o:this.at=[],c=[];let p,d,f=0,u=n.length-1,h=0,v=a.length-1;for(;f<=u&&h<=v;)if(null===n[f])f++;else if(null===n[u])u--;else if(l[f]===s[h])c[h]=mt(n[f],a[h]),f++,h++;else if(l[u]===s[v])c[v]=mt(n[u],a[v]),u--,v--;else if(l[f]===s[v])c[v]=mt(n[f],a[v]),yt(t,c[v+1],n[f]),f++,v--;else if(l[u]===s[h])c[h]=mt(n[u],a[h]),yt(t,n[f],n[u]),u--,h++;else if(void 0===p&&(p=xt(s,h,v),d=xt(l,f,u)),p.has(l[f]))if(p.has(l[u])){const e=d.get(s[h]),i=void 0!==e?n[e]:null;if(null===i){const e=yt(t,n[f]);mt(e,a[h]),c[h]=e}else c[h]=mt(i,a[h]),yt(t,n[f],i),n[e]=null;h++}else gt(n[u]),u--;else gt(n[f]),f++;for(;h<=v;){const e=yt(t,c[v+1]);mt(e,a[h]),c[h++]=e}for(;f<=u;){const t=n[f++];null!==t&&gt(t)}return this.at=s,((t,e=bt)=>{t._$AH=e})(t,c),F}});
67
+ /**
68
+ * @license
69
+ * Copyright 2017 Google LLC
70
+ * SPDX-License-Identifier: BSD-3-Clause
71
+ */
72
+ /**
73
+ * @license
74
+ * Copyright 2017 Google LLC
75
+ * SPDX-License-Identifier: BSD-3-Clause
76
+ */
77
+ class kt extends ut{constructor(t){if(super(t),this.it=B,t.type!==dt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===B||null==t)return this.vt=void 0,this.it=t;if(t===F)return t;if("string"!=typeof t)throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this.vt;this.it=t;const e=[t];return e.raw=e,this.vt={_$litType$:this.constructor.resultType,strings:e,values:[]}}}kt.directiveName="unsafeHTML",kt.resultType=1;const $t=ft(kt);(function(){function t(t){var e=0;return function(){return e<t.length?{done:!1,value:t[e++]}:{done:!0}}}function e(e){var i="undefined"!=typeof Symbol&&Symbol.iterator&&e[Symbol.iterator];return i?i.call(e):{next:t(e)}}function i(t){if(!(t instanceof Array)){t=e(t);for(var i,r=[];!(i=t.next()).done;)r.push(i.value);t=r}return t}var r="function"==typeof Object.create?Object.create:function(t){function e(){}return e.prototype=t,new e};var o,n=function(t){t=["object"==typeof globalThis&&globalThis,t,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var e=0;e<t.length;++e){var i=t[e];if(i&&i.Math==Math)return i}throw Error("Cannot find global object")}(this),a=function(){if("undefined"!=typeof Reflect&&Reflect.construct){if(function(){function t(){}return Reflect.construct(t,[],(function(){})),new t instanceof t}())return Reflect.construct;var t=Reflect.construct;return function(e,i,r){return e=t(e,i),r&&Reflect.setPrototypeOf(e,r.prototype),e}}return function(t,e,i){return void 0===i&&(i=t),i=r(i.prototype||Object.prototype),Function.prototype.apply.call(t,i,e)||i}}();if("function"==typeof Object.setPrototypeOf)o=Object.setPrototypeOf;else{var s;t:{var l={};try{l.__proto__={a:!0},s=l.a;break t}catch(t){}s=!1}o=s?function(t,e){if(t.__proto__=e,t.__proto__!==e)throw new TypeError(t+" is not extensible");return t}:null}var c=o;if(!ShadowRoot.prototype.createElement){var p,d=window.HTMLElement,f=window.customElements.define,u=window.customElements.get,h=window.customElements,v=new WeakMap,y=new WeakMap,m=new WeakMap,b=new WeakMap;window.CustomElementRegistry=function(){this.l=new Map,this.o=new Map,this.i=new Map,this.h=new Map},window.CustomElementRegistry.prototype.define=function(t,i){if(t=t.toLowerCase(),void 0!==this.j(t))throw new DOMException("Failed to execute 'define' on 'CustomElementRegistry': the name \""+t+'" has already been used with this registry');if(void 0!==this.o.get(i))throw new DOMException("Failed to execute 'define' on 'CustomElementRegistry': this constructor has already been used with this registry");var r=i.prototype.attributeChangedCallback,o=new Set(i.observedAttributes||[]);if(x(i,o,r),r={g:i,connectedCallback:i.prototype.connectedCallback,disconnectedCallback:i.prototype.disconnectedCallback,adoptedCallback:i.prototype.adoptedCallback,attributeChangedCallback:r,formAssociated:i.formAssociated,formAssociatedCallback:i.prototype.formAssociatedCallback,formDisabledCallback:i.prototype.formDisabledCallback,formResetCallback:i.prototype.formResetCallback,formStateRestoreCallback:i.prototype.formStateRestoreCallback,observedAttributes:o},this.l.set(t,r),this.o.set(i,r),(o=u.call(h,t))||(o=g(t),f.call(h,t,o)),this===window.customElements&&(m.set(i,r),r.s=o),o=this.h.get(t)){this.h.delete(t);for(var n=(o=e(o)).next();!n.done;n=o.next())n=n.value,y.delete(n),k(n,r,!0)}return void 0!==(r=this.i.get(t))&&(r.resolve(i),this.i.delete(t)),i},window.CustomElementRegistry.prototype.upgrade=function(){S.push(this),h.upgrade.apply(h,arguments),S.pop()},window.CustomElementRegistry.prototype.get=function(t){var e;return null==(e=this.l.get(t))?void 0:e.g},window.CustomElementRegistry.prototype.j=function(t){return this.l.get(t)},window.CustomElementRegistry.prototype.whenDefined=function(t){var e=this.j(t);if(void 0!==e)return Promise.resolve(e.g);var i=this.i.get(t);return void 0===i&&((i={}).promise=new Promise((function(t){return i.resolve=t})),this.i.set(t,i)),i.promise},window.CustomElementRegistry.prototype.m=function(t,e,i){var r=this.h.get(e);r||this.h.set(e,r=new Set),i?r.add(t):r.delete(t)},window.HTMLElement=function(){var t=p;if(t)return p=void 0,t;var e=m.get(this.constructor);if(!e)throw new TypeError("Illegal constructor (custom element class must be registered with global customElements registry to be newable)");return t=Reflect.construct(d,[],e.s),Object.setPrototypeOf(t,this.constructor.prototype),v.set(t,e),t},window.HTMLElement.prototype=d.prototype;var g=function(t){function e(){var e=Reflect.construct(d,[],this.constructor);Object.setPrototypeOf(e,HTMLElement.prototype);t:{var i=e.getRootNode();if(!(i===document||i instanceof ShadowRoot)){if((i=S[S.length-1])instanceof CustomElementRegistry){var r=i;break t}(i=i.getRootNode())===document||i instanceof ShadowRoot||(i=(null==(r=b.get(i))?void 0:r.getRootNode())||document)}r=i.customElements}return(i=(r=r||window.customElements).j(t))?k(e,i):y.set(e,r),e}return n.Object.defineProperty(e,"formAssociated",{configurable:!0,enumerable:!0,get:function(){return!0}}),e.prototype.connectedCallback=function(){var e=v.get(this);e?e.connectedCallback&&e.connectedCallback.apply(this,arguments):y.get(this).m(this,t,!0)},e.prototype.disconnectedCallback=function(){var e=v.get(this);e?e.disconnectedCallback&&e.disconnectedCallback.apply(this,arguments):y.get(this).m(this,t,!1)},e.prototype.adoptedCallback=function(){var t,e;null==(t=v.get(this))||null==(e=t.adoptedCallback)||e.apply(this,arguments)},e.prototype.formAssociatedCallback=function(){var t,e=v.get(this);e&&e.formAssociated&&(null==e||null==(t=e.formAssociatedCallback)||t.apply(this,arguments))},e.prototype.formDisabledCallback=function(){var t,e=v.get(this);null!=e&&e.formAssociated&&(null==e||null==(t=e.formDisabledCallback)||t.apply(this,arguments))},e.prototype.formResetCallback=function(){var t,e=v.get(this);null!=e&&e.formAssociated&&(null==e||null==(t=e.formResetCallback)||t.apply(this,arguments))},e.prototype.formStateRestoreCallback=function(){var t,e=v.get(this);null!=e&&e.formAssociated&&(null==e||null==(t=e.formStateRestoreCallback)||t.apply(this,arguments))},e},x=function(t,e,i){if(0!==e.size&&void 0!==i){var r=t.prototype.setAttribute;r&&(t.prototype.setAttribute=function(t,o){if(t=t.toLowerCase(),e.has(t)){var n=this.getAttribute(t);r.call(this,t,o),i.call(this,t,n,o)}else r.call(this,t,o)});var o=t.prototype.removeAttribute;o&&(t.prototype.removeAttribute=function(t){if(t=t.toLowerCase(),e.has(t)){var r=this.getAttribute(t);o.call(this,t),i.call(this,t,r,null)}else o.call(this,t)})}},w=function(t){var e=Object.getPrototypeOf(t);if(e!==window.HTMLElement)return e===d?Object.setPrototypeOf(t,window.HTMLElement):w(e)},k=function(t,e,i){i=void 0!==i&&i,Object.setPrototypeOf(t,e.g.prototype),v.set(t,e),p=t;try{new e.g}catch(t){w(e.g),new e.g}e.observedAttributes.forEach((function(i){t.hasAttribute(i)&&e.attributeChangedCallback.call(t,i,null,t.getAttribute(i))})),i&&e.connectedCallback&&t.isConnected&&e.connectedCallback.call(t)},$=Element.prototype.attachShadow;Element.prototype.attachShadow=function(t){var e=$.apply(this,arguments);return t.customElements&&(e.customElements=t.customElements),e};var S=[document],z=function(t,e,i){var r=(i?Object.getPrototypeOf(i):t.prototype)[e];t.prototype[e]=function(){S.push(this);var t=r.apply(i||this,arguments);return void 0!==t&&b.set(t,this),S.pop(),t}};z(ShadowRoot,"createElement",document),z(ShadowRoot,"importNode",document),z(Element,"insertAdjacentHTML");var O=function(t){var e=Object.getOwnPropertyDescriptor(t.prototype,"innerHTML");Object.defineProperty(t.prototype,"innerHTML",Object.assign({},e,{set:function(t){S.push(this),e.set.call(this,t),S.pop()}}))};if(O(Element),O(ShadowRoot),Object.defineProperty(window,"customElements",{value:new CustomElementRegistry,configurable:!0,writable:!0}),window.ElementInternals&&window.ElementInternals.prototype.setFormValue){var A=new WeakMap,T=HTMLElement.prototype.attachInternals;HTMLElement.prototype.attachInternals=function(t){for(var e=[],r=0;r<arguments.length;++r)e[r]=arguments[r];return e=T.call.apply(T,[this].concat(i(e))),A.set(e,this),e},["setFormValue","setValidity","checkValidity","reportValidity"].forEach((function(t){var e=window.ElementInternals.prototype,r=e[t];e[t]=function(t){for(var e=[],o=0;o<arguments.length;++o)e[o]=arguments[o];if(o=A.get(this),!0!==v.get(o).formAssociated)throw new DOMException("Failed to execute "+r+" on 'ElementInternals': The target element is not a form-associated custom element.");null==r||r.call.apply(r,[this].concat(i(e)))}}));var j=function(t){var e=a(Array,[].concat(i(t)),this.constructor);return e.h=t,e},C=j,E=Array;if(C.prototype=r(E.prototype),C.prototype.constructor=C,c)c(C,E);else for(var _ in E)if("prototype"!=_)if(Object.defineProperties){var M=Object.getOwnPropertyDescriptor(E,_);M&&Object.defineProperty(C,_,M)}else C[_]=E[_];C.u=E.prototype,n.Object.defineProperty(j.prototype,"value",{configurable:!0,enumerable:!0,get:function(){var t;return(null==(t=this.h.find((function(t){return!0===t.checked})))?void 0:t.value)||""}});var R=function(t){var e=this,i=new Map;t.forEach((function(t,r){var o=t.getAttribute("name"),n=i.get(o)||[];e[+r]=t,n.push(t),i.set(o,n)})),this.length=t.length,i.forEach((function(t,i){t&&(e[i]=1===t.length?t[0]:new j(t))}))};R.prototype.namedItem=function(t){return this[t]};var F=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"elements");Object.defineProperty(HTMLFormElement.prototype,"elements",{get:function(){for(var t=F.get.call(this,[]),i=[],r=(t=e(t)).next();!r.done;r=t.next()){r=r.value;var o=v.get(r);o&&!0!==o.formAssociated||i.push(r)}return new R(i)}})}}}).call(self);try{window.customElements.define("custom-element",null)}catch(t){const e=window.customElements.define;window.customElements.define=(t,i,r)=>{try{e.bind(window.customElements)(t,i,r)}catch(e){console.warn(t,i,r,e)}}}class St{constructor(t=0){this.timeout=t,this.callbacks=[]}run(t,e){this.callbacks=[t],this.debounce(e)}queue(t,e){this.callbacks.push(t),this.debounce(e)}cancel(){null!=this._debounce&&window.clearTimeout(this._debounce)}debounce(t){this.cancel(),this._debounce=window.setTimeout((()=>this.runCallbacks()),null!=t?t:this.timeout)}runCallbacks(){for(let t of this.callbacks)t();this.callbacks=[]}}const zt=t=>e=>{window.customElements.get(t)||window.customElements.define(t,e)}
78
+ /**
79
+ * @license
80
+ * Copyright 2021 Google LLC
81
+ * SPDX-License-Identifier: BSD-3-Clause
82
+ */;class Ot extends(function(t){return class extends t{createRenderRoot(){const t=this.constructor,{registry:e,elementDefinitions:i,shadowRootOptions:r}=t;i&&!e&&(t.registry=new CustomElementRegistry,Object.entries(i).forEach((([e,i])=>t.registry.define(e,i))));const o=this.renderOptions.creationScope=this.attachShadow({...r,customElements:t.registry});return a(o,this.constructor.elementStyles),o}}}(tt)){constructor(){super(),this.constructorName=this.constructor.name,this.proto=this.constructor.prototype}getStyles(){return[]}getTemplate(){return null}render(){let t=this.getStyles();return Array.isArray(t)||(t=[t]),R`${t.map((t=>R`<style>${t}</style>`))} ${this.getTemplate()}`}adoptedCallback(){Object.getPrototypeOf(this)!==this.constructorName&&Object.setPrototypeOf(this,this.proto)}updated(t){super.updated(t),setTimeout((()=>this.contentAvailableCallback(t)),0)}contentAvailableCallback(t){}}var At,Tt,jt;const Ct=navigator.vendor&&!!navigator.vendor.match(/apple/i)||"[object SafariRemoteNotification]"===(null!==(jt=null===(Tt=null===(At=window.safari)||void 0===At?void 0:At.pushNotification)||void 0===Tt?void 0:Tt.toString())&&void 0!==jt?jt:""),Et=ft(class extends ut{constructor(t){var e;if(super(t),t.type!==pt||"class"!==t.name||(null===(e=t.strings)||void 0===e?void 0:e.length)>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return" "+Object.keys(t).filter((e=>t[e])).join(" ")+" "}update(t,[e]){var i,r;if(void 0===this.st){this.st=new Set,void 0!==t.strings&&(this.et=new Set(t.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in e)e[t]&&!(null===(i=this.et)||void 0===i?void 0:i.has(t))&&this.st.add(t);return this.render(e)}const o=t.element.classList;this.st.forEach((t=>{t in e||(o.remove(t),this.st.delete(t))}));for(const t in e){const i=!!e[t];i===this.st.has(t)||(null===(r=this.et)||void 0===r?void 0:r.has(t))||(i?(o.add(t),this.st.add(t)):(o.remove(t),this.st.delete(t)))}return F}}),_t=t=>({_$litStatic$:t}),Mt=new Map,Rt=(t=>(e,...i)=>{var r;const o=i.length;let n,a;const s=[],l=[];let c,p=0,d=!1;for(;p<o;){for(c=e[p];p<o&&void 0!==(a=i[p],n=null===(r=a)||void 0===r?void 0:r._$litStatic$);)c+=n+e[++p],d=!0;l.push(a),s.push(c),p++}if(p===o&&s.push(e[o]),d){const t=s.join("$$lit$$");void 0===(e=Mt.get(t))&&(s.raw=s,Mt.set(t,e=s)),i=l}return t(e,...i)})(R);
83
+ /**
84
+ * @license
85
+ * Copyright 2018 Google LLC
86
+ * SPDX-License-Identifier: BSD-3-Clause
87
+ */var Ft,Bt=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};!function(t){t.title="title",t.title_dense="title-dense",t.subtitle1="subtitle1",t.subtitle2="subtitle2",t.body1="body1",t.body2="body2",t.caption="caption",t.breadcrumb="breadcrumb",t.overline="overline",t.button="button"}(Ft||(Ft={}));const Dt=n`
88
+ .ft-typography--title {
89
+ font-family: var(--ft-typography-title-font-family, var(--ft-typography-font-family, var(--ft-title-font, Ubuntu))), system-ui, sans-serif;
90
+ font-size: var(--ft-typography-title-font-size, var(--ft-typography-font-size, 20px));
91
+ font-weight: var(--ft-typography-title-font-weight, var(--ft-typography-font-weight, normal));
92
+ letter-spacing: var(--ft-typography-title-letter-spacing, var(--ft-typography-letter-spacing, 0.15px));
93
+ line-height: var(--ft-typography-title-line-height, var(--ft-typography-line-height, 24px));
94
+ text-transform: var(--ft-typography-title-text-transform, var(--ft-typography-text-transform, inherit));
95
+ }
96
+ `,It=n`
97
+ .ft-typography--title-dense {
98
+ font-family: var(--ft-typography-title-dense-font-family, var(--ft-typography-font-family, var(--ft-title-font, Ubuntu))), system-ui, sans-serif;
99
+ font-size: var(--ft-typography-title-dense-font-size, var(--ft-typography-font-size, 14px));
100
+ font-weight: var(--ft-typography-title-dense-font-weight, var(--ft-typography-font-weight, normal));
101
+ letter-spacing: var(--ft-typography-title-dense-letter-spacing, var(--ft-typography-letter-spacing, 0.105px));
102
+ line-height: var(--ft-typography-title-dense-line-height, var(--ft-typography-line-height, 24px));
103
+ text-transform: var(--ft-typography-title-dense-text-transform, var(--ft-typography-text-transform, inherit));
104
+ }
105
+ `,Ut=n`
106
+ .ft-typography--subtitle1 {
107
+ font-family: var(--ft-typography-subtitle1-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
108
+ font-size: var(--ft-typography-subtitle1-font-size, var(--ft-typography-font-size, 16px));
109
+ font-weight: var(--ft-typography-subtitle1-font-weight, var(--ft-typography-font-weight, 600));
110
+ letter-spacing: var(--ft-typography-subtitle1-letter-spacing, var(--ft-typography-letter-spacing, 0.144px));
111
+ line-height: var(--ft-typography-subtitle1-line-height, var(--ft-typography-line-height, 24px));
112
+ text-transform: var(--ft-typography-subtitle1-text-transform, var(--ft-typography-text-transform, inherit));
113
+ }
114
+ `,Ht=n`
115
+ .ft-typography--subtitle2 {
116
+ font-family: var(--ft-typography-subtitle2-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
117
+ font-size: var(--ft-typography-subtitle2-font-size, var(--ft-typography-font-size, 14px));
118
+ font-weight: var(--ft-typography-subtitle2-font-weight, var(--ft-typography-font-weight, normal));
119
+ letter-spacing: var(--ft-typography-subtitle2-letter-spacing, var(--ft-typography-letter-spacing, 0.098px));
120
+ line-height: var(--ft-typography-subtitle2-line-height, var(--ft-typography-line-height, 24px));
121
+ text-transform: var(--ft-typography-subtitle2-text-transform, var(--ft-typography-text-transform, inherit));
122
+ }
123
+
124
+ `,Nt=n`
125
+ .ft-typography--body1 {
126
+ font-family: var(--ft-typography-body1-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
127
+ font-size: var(--ft-typography-body1-font-size, var(--ft-typography-font-size, 16px));
128
+ font-weight: var(--ft-typography-body1-font-weight, var(--ft-typography-font-weight, normal));
129
+ letter-spacing: var(--ft-typography-body1-letter-spacing, var(--ft-typography-letter-spacing, 0.496px));
130
+ line-height: var(--ft-typography-body1-line-height, var(--ft-typography-line-height, 24px));
131
+ text-transform: var(--ft-typography-body1-text-transform, var(--ft-typography-text-transform, inherit));
132
+ }
133
+ `,Lt=n`
134
+ .ft-typography--body2 {
135
+ font-family: var(--ft-typography-body2-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
136
+ font-size: var(--ft-typography-body2-font-size, var(--ft-typography-font-size, 14px));
137
+ font-weight: var(--ft-typography-body2-font-weight, var(--ft-typography-font-weight, normal));
138
+ letter-spacing: var(--ft-typography-body2-letter-spacing, var(--ft-typography-letter-spacing, 0.252px));
139
+ line-height: var(--ft-typography-body2-line-height, var(--ft-typography-line-height, 20px));
140
+ text-transform: var(--ft-typography-body2-text-transform, var(--ft-typography-text-transform, inherit));
141
+ }
142
+ `,Pt=n`
143
+ .ft-typography--caption {
144
+ font-family: var(--ft-typography-caption-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
145
+ font-size: var(--ft-typography-caption-font-size, var(--ft-typography-font-size, 12px));
146
+ font-weight: var(--ft-typography-caption-font-weight, var(--ft-typography-font-weight, normal));
147
+ letter-spacing: var(--ft-typography-caption-letter-spacing, var(--ft-typography-letter-spacing, 0.396px));
148
+ line-height: var(--ft-typography-caption-line-height, var(--ft-typography-line-height, 16px));
149
+ text-transform: var(--ft-typography-caption-text-transform, var(--ft-typography-text-transform, inherit));
150
+ }
151
+ `,Vt=n`
152
+ .ft-typography--breadcrumb {
153
+ font-family: var(--ft-typography-breadcrumb-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
154
+ font-size: var(--ft-typography-breadcrumb-font-size, var(--ft-typography-font-size, 10px));
155
+ font-weight: var(--ft-typography-breadcrumb-font-weight, var(--ft-typography-font-weight, normal));
156
+ letter-spacing: var(--ft-typography-breadcrumb-letter-spacing, var(--ft-typography-letter-spacing, 0.33px));
157
+ line-height: var(--ft-typography-breadcrumb-line-height, var(--ft-typography-line-height, 16px));
158
+ text-transform: var(--ft-typography-breadcrumb-text-transform, var(--ft-typography-text-transform, inherit));
159
+ }
160
+ `,qt=n`
161
+ .ft-typography--overline {
162
+ font-family: var(--ft-typography-overline-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
163
+ font-size: var(--ft-typography-overline-font-size, var(--ft-typography-font-size, 10px));
164
+ font-weight: var(--ft-typography-overline-font-weight, var(--ft-typography-font-weight, normal));
165
+ letter-spacing: var(--ft-typography-overline-letter-spacing, var(--ft-typography-letter-spacing, 1.5px));
166
+ line-height: var(--ft-typography-overline-line-height, var(--ft-typography-line-height, 16px));
167
+ text-transform: var(--ft-typography-overline-text-transform, var(--ft-typography-text-transform, uppercase));
168
+ }
169
+ `,Gt=n`
170
+ .ft-typography--button {
171
+ font-family: var(--ft-typography-button-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
172
+ font-size: var(--ft-typography-button-font-size, var(--ft-typography-font-size, 14px));
173
+ font-weight: var(--ft-typography-button-font-weight, var(--ft-typography-font-weight, 600));
174
+ letter-spacing: var(--ft-typography-button-letter-spacing, var(--ft-typography-letter-spacing, 1.246px));
175
+ line-height: var(--ft-typography-button-line-height, var(--ft-typography-line-height, 16px));
176
+ text-transform: var(--ft-typography-button-text-transform, var(--ft-typography-text-transform, uppercase));
177
+ }
178
+ `;let Wt=class extends Ot{constructor(){super(...arguments),this.variant=Ft.body1}getStyles(){return[Dt,It,Ut,Ht,Nt,Lt,Pt,Vt,qt,Gt]}getTemplate(){return this.element?Rt`
179
+ <${_t(this.element)}
180
+ class="ft-typography ft-typography--${this.variant}">
181
+ <slot></slot>
182
+ </${_t(this.element)}>
183
+ `:Rt`
184
+ <slot class="ft-typography ft-typography--${this.variant}"></slot>
185
+ `}};Bt([ot()],Wt.prototype,"element",void 0),Bt([ot()],Wt.prototype,"variant",void 0),Wt=Bt([zt("ft-typography")],Wt);var Kt=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let Zt=class extends Ot{constructor(){super(...arguments),this.text="",this.raised=!1,this.outlined=!1,this.disabled=!1}getStyles(){return[Pt,n`.ft-input-label{position:absolute;inset:0;display:flex}.ft-input-label{border-color:var(--ft-input-label-border-color,var(--ft-color-outline,rgba(0,0,0,.14)))}.ft-input-label:after,.ft-input-label:before{content:"";display:flex;border-bottom-width:1px;border-bottom-style:solid;border-color:inherit}.ft-input-label:before{width:var(--ft-input-label-horizontal-spacing,12px);flex-shrink:0}.ft-input-label:after{flex-grow:1;flex-shrink:1}.ft-input-label--text{display:flex;flex-shrink:1;position:relative;border-bottom-width:1px;border-bottom-style:solid;border-color:inherit;padding:0 4px;color:var(--ft-input-label-text-color,var(--ft-color-on-surface-medium,rgba(0,0,0,.6)));transition:font-size 250ms,line-height 250ms,color 250ms;--ft-typography-font-size:var(--ft-input-label-font-size, 14px);--ft-typography-line-height:var(--ft-input-label-font-size, 14px)}.ft-input-label--disabled .ft-input-label--text{color:var(--ft-input-label-text-color,var(--ft-color-on-surface-disabled,rgba(0,0,0,.38)))}.ft-input-label--hidden-text{opacity:0}.ft-input-label--floating-text{position:absolute;top:calc(50% - var(--ft-typography-line-height)/ 2);transition:top 250ms;width:calc(100% - 8px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:var(--ft-input-label-vertical-spacing,4px) 0;margin:calc(var(--ft-input-label-vertical-spacing,4px) * -1) 0}.ft-input-label--raised .ft-input-label--text{--ft-typography-font-size:var(--ft-input-label-raised-font-size, 11px);--ft-typography-line-height:var(--ft-input-label-raised-font-size, 11px)}.ft-input-label--raised .ft-input-label--floating-text{top:var(--ft-input-label-vertical-spacing,4px)}.ft-input-label--outlined .ft-input-label--text,.ft-input-label--outlined:after,.ft-input-label--outlined:before{border-top-width:1px;border-top-style:solid}.ft-input-label--outlined:before{border-left-width:1px;border-left-style:solid;border-radius:var(--ft-border-radius-S,4px) 0 0 var(--ft-border-radius-S,4px)}.ft-input-label--outlined:after{border-right-width:1px;border-right-style:solid;border-radius:0 var(--ft-border-radius-S,4px) var(--ft-border-radius-S,4px) 0}.ft-input-label--outlined.ft-input-label--raised .ft-input-label--floating-text{top:calc(var(--ft-typography-line-height)/ -2)}.ft-input-label--outlined.ft-input-label--raised .ft-input-label--text{border-top:none}`]}getTemplate(){const t={"ft-input-label":!0,"ft-input-label--raised":this.raised,"ft-input-label--outlined":this.outlined,"ft-input-label--disabled":this.disabled};return R`<div class="${Et(t)}">${this.text?R`<div class="ft-input-label--text ft-typography--caption"><span class="ft-input-label--floating-text">${this.text}</span> <span class="ft-input-label--hidden-text" aria-hidden="true">${this.text}</span></div>`:null}</div>`}};Zt.elementDefinitions={},Kt([ot({type:String})],Zt.prototype,"text",void 0),Kt([ot({type:Boolean})],Zt.prototype,"raised",void 0),Kt([ot({type:Boolean})],Zt.prototype,"outlined",void 0),Kt([ot({type:Boolean})],Zt.prototype,"disabled",void 0),Zt=Kt([zt("ft-input-label")],Zt);
186
+ /*! *****************************************************************************
187
+ Copyright (c) Microsoft Corporation.
188
+
189
+ Permission to use, copy, modify, and/or distribute this software for any
190
+ purpose with or without fee is hereby granted.
191
+
192
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
193
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
194
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
195
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
196
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
197
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
198
+ PERFORMANCE OF THIS SOFTWARE.
199
+ ***************************************************************************** */
200
+ var Jt=function(t,e){return Jt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},Jt(t,e)};var Xt=function(){return Xt=Object.assign||function(t){for(var e,i=1,r=arguments.length;i<r;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},Xt.apply(this,arguments)};function Yt(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a}function Qt(t){var e="function"==typeof Symbol&&Symbol.iterator,i=e&&t[e],r=0;if(i)return i.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}
201
+ /**
202
+ * @license
203
+ * Copyright 2018 Google Inc.
204
+ *
205
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
206
+ * of this software and associated documentation files (the "Software"), to deal
207
+ * in the Software without restriction, including without limitation the rights
208
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
209
+ * copies of the Software, and to permit persons to whom the Software is
210
+ * furnished to do so, subject to the following conditions:
211
+ *
212
+ * The above copyright notice and this permission notice shall be included in
213
+ * all copies or substantial portions of the Software.
214
+ *
215
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
216
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
217
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
218
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
219
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
220
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
221
+ * THE SOFTWARE.
222
+ */
223
+ /**
224
+ * @license
225
+ * Copyright 2018 Google LLC
226
+ * SPDX-License-Identifier: Apache-2.0
227
+ */
228
+ const te=()=>{},ee={get passive(){return!1}};document.addEventListener("x",te,ee),document.removeEventListener("x",te);
229
+ /**
230
+ * @license
231
+ * Copyright 2018 Google LLC
232
+ * SPDX-License-Identifier: Apache-2.0
233
+ */
234
+ class ie extends tt{click(){if(this.mdcRoot)return this.mdcRoot.focus(),void this.mdcRoot.click();super.click()}createFoundation(){void 0!==this.mdcFoundation&&this.mdcFoundation.destroy(),this.mdcFoundationClass&&(this.mdcFoundation=new this.mdcFoundationClass(this.createAdapter()),this.mdcFoundation.init())}firstUpdated(){this.createFoundation()}}
235
+ /**
236
+ * @license
237
+ * Copyright 2016 Google Inc.
238
+ *
239
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
240
+ * of this software and associated documentation files (the "Software"), to deal
241
+ * in the Software without restriction, including without limitation the rights
242
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
243
+ * copies of the Software, and to permit persons to whom the Software is
244
+ * furnished to do so, subject to the following conditions:
245
+ *
246
+ * The above copyright notice and this permission notice shall be included in
247
+ * all copies or substantial portions of the Software.
248
+ *
249
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
250
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
251
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
252
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
253
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
254
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
255
+ * THE SOFTWARE.
256
+ */var re=function(){function t(t){void 0===t&&(t={}),this.adapter=t}return Object.defineProperty(t,"cssClasses",{get:function(){return{}},enumerable:!1,configurable:!0}),Object.defineProperty(t,"strings",{get:function(){return{}},enumerable:!1,configurable:!0}),Object.defineProperty(t,"numbers",{get:function(){return{}},enumerable:!1,configurable:!0}),Object.defineProperty(t,"defaultAdapter",{get:function(){return{}},enumerable:!1,configurable:!0}),t.prototype.init=function(){},t.prototype.destroy=function(){},t}(),oe={BG_FOCUSED:"mdc-ripple-upgraded--background-focused",FG_ACTIVATION:"mdc-ripple-upgraded--foreground-activation",FG_DEACTIVATION:"mdc-ripple-upgraded--foreground-deactivation",ROOT:"mdc-ripple-upgraded",UNBOUNDED:"mdc-ripple-upgraded--unbounded"},ne={VAR_FG_SCALE:"--mdc-ripple-fg-scale",VAR_FG_SIZE:"--mdc-ripple-fg-size",VAR_FG_TRANSLATE_END:"--mdc-ripple-fg-translate-end",VAR_FG_TRANSLATE_START:"--mdc-ripple-fg-translate-start",VAR_LEFT:"--mdc-ripple-left",VAR_TOP:"--mdc-ripple-top"},ae={DEACTIVATION_TIMEOUT_MS:225,FG_DEACTIVATION_MS:150,INITIAL_ORIGIN_SCALE:.6,PADDING:10,TAP_DELAY_MS:300};
257
+ /**
258
+ * @license
259
+ * Copyright 2016 Google Inc.
260
+ *
261
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
262
+ * of this software and associated documentation files (the "Software"), to deal
263
+ * in the Software without restriction, including without limitation the rights
264
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
265
+ * copies of the Software, and to permit persons to whom the Software is
266
+ * furnished to do so, subject to the following conditions:
267
+ *
268
+ * The above copyright notice and this permission notice shall be included in
269
+ * all copies or substantial portions of the Software.
270
+ *
271
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
272
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
273
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
274
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
275
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
276
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
277
+ * THE SOFTWARE.
278
+ */
279
+ /**
280
+ * @license
281
+ * Copyright 2016 Google Inc.
282
+ *
283
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
284
+ * of this software and associated documentation files (the "Software"), to deal
285
+ * in the Software without restriction, including without limitation the rights
286
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
287
+ * copies of the Software, and to permit persons to whom the Software is
288
+ * furnished to do so, subject to the following conditions:
289
+ *
290
+ * The above copyright notice and this permission notice shall be included in
291
+ * all copies or substantial portions of the Software.
292
+ *
293
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
294
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
295
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
296
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
297
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
298
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
299
+ * THE SOFTWARE.
300
+ */
301
+ var se=["touchstart","pointerdown","mousedown","keydown"],le=["touchend","pointerup","mouseup","contextmenu"],ce=[],pe=function(t){function e(i){var r=t.call(this,Xt(Xt({},e.defaultAdapter),i))||this;return r.activationAnimationHasEnded=!1,r.activationTimer=0,r.fgDeactivationRemovalTimer=0,r.fgScale="0",r.frame={width:0,height:0},r.initialSize=0,r.layoutFrame=0,r.maxRadius=0,r.unboundedCoords={left:0,top:0},r.activationState=r.defaultActivationState(),r.activationTimerCallback=function(){r.activationAnimationHasEnded=!0,r.runDeactivationUXLogicIfReady()},r.activateHandler=function(t){r.activateImpl(t)},r.deactivateHandler=function(){r.deactivateImpl()},r.focusHandler=function(){r.handleFocus()},r.blurHandler=function(){r.handleBlur()},r.resizeHandler=function(){r.layout()},r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function i(){this.constructor=t}Jt(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}(e,t),Object.defineProperty(e,"cssClasses",{get:function(){return oe},enumerable:!1,configurable:!0}),Object.defineProperty(e,"strings",{get:function(){return ne},enumerable:!1,configurable:!0}),Object.defineProperty(e,"numbers",{get:function(){return ae},enumerable:!1,configurable:!0}),Object.defineProperty(e,"defaultAdapter",{get:function(){return{addClass:function(){},browserSupportsCssVars:function(){return!0},computeBoundingRect:function(){return{top:0,right:0,bottom:0,left:0,width:0,height:0}},containsEventTarget:function(){return!0},deregisterDocumentInteractionHandler:function(){},deregisterInteractionHandler:function(){},deregisterResizeHandler:function(){},getWindowPageOffset:function(){return{x:0,y:0}},isSurfaceActive:function(){return!0},isSurfaceDisabled:function(){return!0},isUnbounded:function(){return!0},registerDocumentInteractionHandler:function(){},registerInteractionHandler:function(){},registerResizeHandler:function(){},removeClass:function(){},updateCssVariable:function(){}}},enumerable:!1,configurable:!0}),e.prototype.init=function(){var t=this,i=this.supportsPressRipple();if(this.registerRootHandlers(i),i){var r=e.cssClasses,o=r.ROOT,n=r.UNBOUNDED;requestAnimationFrame((function(){t.adapter.addClass(o),t.adapter.isUnbounded()&&(t.adapter.addClass(n),t.layoutInternal())}))}},e.prototype.destroy=function(){var t=this;if(this.supportsPressRipple()){this.activationTimer&&(clearTimeout(this.activationTimer),this.activationTimer=0,this.adapter.removeClass(e.cssClasses.FG_ACTIVATION)),this.fgDeactivationRemovalTimer&&(clearTimeout(this.fgDeactivationRemovalTimer),this.fgDeactivationRemovalTimer=0,this.adapter.removeClass(e.cssClasses.FG_DEACTIVATION));var i=e.cssClasses,r=i.ROOT,o=i.UNBOUNDED;requestAnimationFrame((function(){t.adapter.removeClass(r),t.adapter.removeClass(o),t.removeCssVars()}))}this.deregisterRootHandlers(),this.deregisterDeactivationHandlers()},e.prototype.activate=function(t){this.activateImpl(t)},e.prototype.deactivate=function(){this.deactivateImpl()},e.prototype.layout=function(){var t=this;this.layoutFrame&&cancelAnimationFrame(this.layoutFrame),this.layoutFrame=requestAnimationFrame((function(){t.layoutInternal(),t.layoutFrame=0}))},e.prototype.setUnbounded=function(t){var i=e.cssClasses.UNBOUNDED;t?this.adapter.addClass(i):this.adapter.removeClass(i)},e.prototype.handleFocus=function(){var t=this;requestAnimationFrame((function(){return t.adapter.addClass(e.cssClasses.BG_FOCUSED)}))},e.prototype.handleBlur=function(){var t=this;requestAnimationFrame((function(){return t.adapter.removeClass(e.cssClasses.BG_FOCUSED)}))},e.prototype.supportsPressRipple=function(){return this.adapter.browserSupportsCssVars()},e.prototype.defaultActivationState=function(){return{activationEvent:void 0,hasDeactivationUXRun:!1,isActivated:!1,isProgrammatic:!1,wasActivatedByPointer:!1,wasElementMadeActive:!1}},e.prototype.registerRootHandlers=function(t){var e,i;if(t){try{for(var r=Qt(se),o=r.next();!o.done;o=r.next()){var n=o.value;this.adapter.registerInteractionHandler(n,this.activateHandler)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(e)throw e.error}}this.adapter.isUnbounded()&&this.adapter.registerResizeHandler(this.resizeHandler)}this.adapter.registerInteractionHandler("focus",this.focusHandler),this.adapter.registerInteractionHandler("blur",this.blurHandler)},e.prototype.registerDeactivationHandlers=function(t){var e,i;if("keydown"===t.type)this.adapter.registerInteractionHandler("keyup",this.deactivateHandler);else try{for(var r=Qt(le),o=r.next();!o.done;o=r.next()){var n=o.value;this.adapter.registerDocumentInteractionHandler(n,this.deactivateHandler)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(i=r.return)&&i.call(r)}finally{if(e)throw e.error}}},e.prototype.deregisterRootHandlers=function(){var t,e;try{for(var i=Qt(se),r=i.next();!r.done;r=i.next()){var o=r.value;this.adapter.deregisterInteractionHandler(o,this.activateHandler)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}this.adapter.deregisterInteractionHandler("focus",this.focusHandler),this.adapter.deregisterInteractionHandler("blur",this.blurHandler),this.adapter.isUnbounded()&&this.adapter.deregisterResizeHandler(this.resizeHandler)},e.prototype.deregisterDeactivationHandlers=function(){var t,e;this.adapter.deregisterInteractionHandler("keyup",this.deactivateHandler);try{for(var i=Qt(le),r=i.next();!r.done;r=i.next()){var o=r.value;this.adapter.deregisterDocumentInteractionHandler(o,this.deactivateHandler)}}catch(e){t={error:e}}finally{try{r&&!r.done&&(e=i.return)&&e.call(i)}finally{if(t)throw t.error}}},e.prototype.removeCssVars=function(){var t=this,i=e.strings;Object.keys(i).forEach((function(e){0===e.indexOf("VAR_")&&t.adapter.updateCssVariable(i[e],null)}))},e.prototype.activateImpl=function(t){var e=this;if(!this.adapter.isSurfaceDisabled()){var i=this.activationState;if(!i.isActivated){var r=this.previousActivationEvent;if(!(r&&void 0!==t&&r.type!==t.type))i.isActivated=!0,i.isProgrammatic=void 0===t,i.activationEvent=t,i.wasActivatedByPointer=!i.isProgrammatic&&(void 0!==t&&("mousedown"===t.type||"touchstart"===t.type||"pointerdown"===t.type)),void 0!==t&&ce.length>0&&ce.some((function(t){return e.adapter.containsEventTarget(t)}))?this.resetActivationState():(void 0!==t&&(ce.push(t.target),this.registerDeactivationHandlers(t)),i.wasElementMadeActive=this.checkElementMadeActive(t),i.wasElementMadeActive&&this.animateActivation(),requestAnimationFrame((function(){ce=[],i.wasElementMadeActive||void 0===t||" "!==t.key&&32!==t.keyCode||(i.wasElementMadeActive=e.checkElementMadeActive(t),i.wasElementMadeActive&&e.animateActivation()),i.wasElementMadeActive||(e.activationState=e.defaultActivationState())})))}}},e.prototype.checkElementMadeActive=function(t){return void 0===t||"keydown"!==t.type||this.adapter.isSurfaceActive()},e.prototype.animateActivation=function(){var t=this,i=e.strings,r=i.VAR_FG_TRANSLATE_START,o=i.VAR_FG_TRANSLATE_END,n=e.cssClasses,a=n.FG_DEACTIVATION,s=n.FG_ACTIVATION,l=e.numbers.DEACTIVATION_TIMEOUT_MS;this.layoutInternal();var c="",p="";if(!this.adapter.isUnbounded()){var d=this.getFgTranslationCoordinates(),f=d.startPoint,u=d.endPoint;c=f.x+"px, "+f.y+"px",p=u.x+"px, "+u.y+"px"}this.adapter.updateCssVariable(r,c),this.adapter.updateCssVariable(o,p),clearTimeout(this.activationTimer),clearTimeout(this.fgDeactivationRemovalTimer),this.rmBoundedActivationClasses(),this.adapter.removeClass(a),this.adapter.computeBoundingRect(),this.adapter.addClass(s),this.activationTimer=setTimeout((function(){t.activationTimerCallback()}),l)},e.prototype.getFgTranslationCoordinates=function(){var t,e=this.activationState,i=e.activationEvent;return t=e.wasActivatedByPointer?function(t,e,i){if(!t)return{x:0,y:0};var r,o,n=e.x,a=e.y,s=n+i.left,l=a+i.top;if("touchstart"===t.type){var c=t;r=c.changedTouches[0].pageX-s,o=c.changedTouches[0].pageY-l}else{var p=t;r=p.pageX-s,o=p.pageY-l}return{x:r,y:o}}(i,this.adapter.getWindowPageOffset(),this.adapter.computeBoundingRect()):{x:this.frame.width/2,y:this.frame.height/2},{startPoint:t={x:t.x-this.initialSize/2,y:t.y-this.initialSize/2},endPoint:{x:this.frame.width/2-this.initialSize/2,y:this.frame.height/2-this.initialSize/2}}},e.prototype.runDeactivationUXLogicIfReady=function(){var t=this,i=e.cssClasses.FG_DEACTIVATION,r=this.activationState,o=r.hasDeactivationUXRun,n=r.isActivated;(o||!n)&&this.activationAnimationHasEnded&&(this.rmBoundedActivationClasses(),this.adapter.addClass(i),this.fgDeactivationRemovalTimer=setTimeout((function(){t.adapter.removeClass(i)}),ae.FG_DEACTIVATION_MS))},e.prototype.rmBoundedActivationClasses=function(){var t=e.cssClasses.FG_ACTIVATION;this.adapter.removeClass(t),this.activationAnimationHasEnded=!1,this.adapter.computeBoundingRect()},e.prototype.resetActivationState=function(){var t=this;this.previousActivationEvent=this.activationState.activationEvent,this.activationState=this.defaultActivationState(),setTimeout((function(){return t.previousActivationEvent=void 0}),e.numbers.TAP_DELAY_MS)},e.prototype.deactivateImpl=function(){var t=this,e=this.activationState;if(e.isActivated){var i=Xt({},e);e.isProgrammatic?(requestAnimationFrame((function(){t.animateDeactivation(i)})),this.resetActivationState()):(this.deregisterDeactivationHandlers(),requestAnimationFrame((function(){t.activationState.hasDeactivationUXRun=!0,t.animateDeactivation(i),t.resetActivationState()})))}},e.prototype.animateDeactivation=function(t){var e=t.wasActivatedByPointer,i=t.wasElementMadeActive;(e||i)&&this.runDeactivationUXLogicIfReady()},e.prototype.layoutInternal=function(){var t=this;this.frame=this.adapter.computeBoundingRect();var i=Math.max(this.frame.height,this.frame.width);this.maxRadius=this.adapter.isUnbounded()?i:Math.sqrt(Math.pow(t.frame.width,2)+Math.pow(t.frame.height,2))+e.numbers.PADDING;var r=Math.floor(i*e.numbers.INITIAL_ORIGIN_SCALE);this.adapter.isUnbounded()&&r%2!=0?this.initialSize=r-1:this.initialSize=r,this.fgScale=""+this.maxRadius/this.initialSize,this.updateLayoutCssVars()},e.prototype.updateLayoutCssVars=function(){var t=e.strings,i=t.VAR_FG_SIZE,r=t.VAR_LEFT,o=t.VAR_TOP,n=t.VAR_FG_SCALE;this.adapter.updateCssVariable(i,this.initialSize+"px"),this.adapter.updateCssVariable(n,this.fgScale),this.adapter.isUnbounded()&&(this.unboundedCoords={left:Math.round(this.frame.width/2-this.initialSize/2),top:Math.round(this.frame.height/2-this.initialSize/2)},this.adapter.updateCssVariable(r,this.unboundedCoords.left+"px"),this.adapter.updateCssVariable(o,this.unboundedCoords.top+"px"))},e}(re),de=pe;
302
+ /**
303
+ * @license
304
+ * Copyright 2018 Google LLC
305
+ * SPDX-License-Identifier: BSD-3-Clause
306
+ */
307
+ const fe=ft(class extends ut{constructor(t){var e;if(super(t),t.type!==pt||"style"!==t.name||(null===(e=t.strings)||void 0===e?void 0:e.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((e,i)=>{const r=t[i];return null==r?e:e+`${i=i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`}),"")}update(t,[e]){const{style:i}=t.element;if(void 0===this.ct){this.ct=new Set;for(const t in e)this.ct.add(t);return this.render(e)}this.ct.forEach((t=>{null==e[t]&&(this.ct.delete(t),t.includes("-")?i.removeProperty(t):i[t]="")}));for(const t in e){const r=e[t];null!=r&&(this.ct.add(t),t.includes("-")?i.setProperty(t,r):i[t]=r)}return F}});
308
+ /**
309
+ * @license
310
+ * Copyright 2018 Google LLC
311
+ * SPDX-License-Identifier: Apache-2.0
312
+ */class ue extends ie{constructor(){super(...arguments),this.primary=!1,this.accent=!1,this.unbounded=!1,this.disabled=!1,this.activated=!1,this.selected=!1,this.internalUseStateLayerCustomProperties=!1,this.hovering=!1,this.bgFocused=!1,this.fgActivation=!1,this.fgDeactivation=!1,this.fgScale="",this.fgSize="",this.translateStart="",this.translateEnd="",this.leftPos="",this.topPos="",this.mdcFoundationClass=de}get isActive(){return t=this.parentElement||this,e=":active",(t.matches||t.webkitMatchesSelector||t.msMatchesSelector).call(t,e);var t,e}createAdapter(){return{browserSupportsCssVars:()=>!0,isUnbounded:()=>this.unbounded,isSurfaceActive:()=>this.isActive,isSurfaceDisabled:()=>this.disabled,addClass:t=>{switch(t){case"mdc-ripple-upgraded--background-focused":this.bgFocused=!0;break;case"mdc-ripple-upgraded--foreground-activation":this.fgActivation=!0;break;case"mdc-ripple-upgraded--foreground-deactivation":this.fgDeactivation=!0}},removeClass:t=>{switch(t){case"mdc-ripple-upgraded--background-focused":this.bgFocused=!1;break;case"mdc-ripple-upgraded--foreground-activation":this.fgActivation=!1;break;case"mdc-ripple-upgraded--foreground-deactivation":this.fgDeactivation=!1}},containsEventTarget:()=>!0,registerInteractionHandler:()=>{},deregisterInteractionHandler:()=>{},registerDocumentInteractionHandler:()=>{},deregisterDocumentInteractionHandler:()=>{},registerResizeHandler:()=>{},deregisterResizeHandler:()=>{},updateCssVariable:(t,e)=>{switch(t){case"--mdc-ripple-fg-scale":this.fgScale=e;break;case"--mdc-ripple-fg-size":this.fgSize=e;break;case"--mdc-ripple-fg-translate-end":this.translateEnd=e;break;case"--mdc-ripple-fg-translate-start":this.translateStart=e;break;case"--mdc-ripple-left":this.leftPos=e;break;case"--mdc-ripple-top":this.topPos=e}},computeBoundingRect:()=>(this.parentElement||this).getBoundingClientRect(),getWindowPageOffset:()=>({x:window.pageXOffset,y:window.pageYOffset})}}startPress(t){this.waitForFoundation((()=>{this.mdcFoundation.activate(t)}))}endPress(){this.waitForFoundation((()=>{this.mdcFoundation.deactivate()}))}startFocus(){this.waitForFoundation((()=>{this.mdcFoundation.handleFocus()}))}endFocus(){this.waitForFoundation((()=>{this.mdcFoundation.handleBlur()}))}startHover(){this.hovering=!0}endHover(){this.hovering=!1}waitForFoundation(t){this.mdcFoundation?t():this.updateComplete.then(t)}update(t){t.has("disabled")&&this.disabled&&this.endHover(),super.update(t)}render(){const t=this.activated&&(this.primary||!this.accent),e=this.selected&&(this.primary||!this.accent),i={"mdc-ripple-surface--accent":this.accent,"mdc-ripple-surface--primary--activated":t,"mdc-ripple-surface--accent--activated":this.accent&&this.activated,"mdc-ripple-surface--primary--selected":e,"mdc-ripple-surface--accent--selected":this.accent&&this.selected,"mdc-ripple-surface--disabled":this.disabled,"mdc-ripple-surface--hover":this.hovering,"mdc-ripple-surface--primary":this.primary,"mdc-ripple-surface--selected":this.selected,"mdc-ripple-upgraded--background-focused":this.bgFocused,"mdc-ripple-upgraded--foreground-activation":this.fgActivation,"mdc-ripple-upgraded--foreground-deactivation":this.fgDeactivation,"mdc-ripple-upgraded--unbounded":this.unbounded,"mdc-ripple-surface--internal-use-state-layer-custom-properties":this.internalUseStateLayerCustomProperties};return R`<div class="mdc-ripple-surface mdc-ripple-upgraded ${Et(i)}" style="${fe({"--mdc-ripple-fg-scale":this.fgScale,"--mdc-ripple-fg-size":this.fgSize,"--mdc-ripple-fg-translate-end":this.translateEnd,"--mdc-ripple-fg-translate-start":this.translateStart,"--mdc-ripple-left":this.leftPos,"--mdc-ripple-top":this.topPos})}"></div>`}}Yt([st(".mdc-ripple-surface")],ue.prototype,"mdcRoot",void 0),Yt([ot({type:Boolean})],ue.prototype,"primary",void 0),Yt([ot({type:Boolean})],ue.prototype,"accent",void 0),Yt([ot({type:Boolean})],ue.prototype,"unbounded",void 0),Yt([ot({type:Boolean})],ue.prototype,"disabled",void 0),Yt([ot({type:Boolean})],ue.prototype,"activated",void 0),Yt([ot({type:Boolean})],ue.prototype,"selected",void 0),Yt([ot({type:Boolean})],ue.prototype,"internalUseStateLayerCustomProperties",void 0),Yt([nt()],ue.prototype,"hovering",void 0),Yt([nt()],ue.prototype,"bgFocused",void 0),Yt([nt()],ue.prototype,"fgActivation",void 0),Yt([nt()],ue.prototype,"fgDeactivation",void 0),Yt([nt()],ue.prototype,"fgScale",void 0),Yt([nt()],ue.prototype,"fgSize",void 0),Yt([nt()],ue.prototype,"translateStart",void 0),Yt([nt()],ue.prototype,"translateEnd",void 0),Yt([nt()],ue.prototype,"leftPos",void 0),Yt([nt()],ue.prototype,"topPos",void 0);
313
+ /**
314
+ * @license
315
+ * Copyright 2021 Google LLC
316
+ * SPDX-LIcense-Identifier: Apache-2.0
317
+ */
318
+ const he=n`.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity;position:relative;outline:0;overflow:hidden}.mdc-ripple-surface::after,.mdc-ripple-surface::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.mdc-ripple-surface::before{transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.mdc-ripple-surface::after,.mdc-ripple-surface::before{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-upgraded--unbounded::after,.mdc-ripple-upgraded--unbounded::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.mdc-ripple-surface::after,.mdc-ripple-surface::before{background-color:#000;background-color:var(--mdc-ripple-color,#000)}.mdc-ripple-surface.mdc-ripple-surface--hover::before,.mdc-ripple-surface:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity,.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity,.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity,.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(.4,0,.2,1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity,0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity,0)}to{opacity:0}}:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;display:block}:host .mdc-ripple-surface{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;will-change:unset}.mdc-ripple-surface--primary::after,.mdc-ripple-surface--primary::before{background-color:#6200ee;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#6200ee))}.mdc-ripple-surface--primary.mdc-ripple-surface--hover::before,.mdc-ripple-surface--primary:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity,.04)}.mdc-ripple-surface--primary.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--primary:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity,.12)}.mdc-ripple-surface--primary:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--primary:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity,.12)}.mdc-ripple-surface--primary.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface--primary--activated::before{opacity:.12;opacity:var(--mdc-ripple-activated-opacity,.12)}.mdc-ripple-surface--primary--activated::after,.mdc-ripple-surface--primary--activated::before{background-color:#6200ee;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#6200ee))}.mdc-ripple-surface--primary--activated.mdc-ripple-surface--hover::before,.mdc-ripple-surface--primary--activated:hover::before{opacity:.16;opacity:var(--mdc-ripple-hover-opacity,.16)}.mdc-ripple-surface--primary--activated.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--primary--activated:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.24;opacity:var(--mdc-ripple-focus-opacity,.24)}.mdc-ripple-surface--primary--activated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--primary--activated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24;opacity:var(--mdc-ripple-press-opacity,.24)}.mdc-ripple-surface--primary--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.24)}.mdc-ripple-surface--primary--selected::before{opacity:.08;opacity:var(--mdc-ripple-selected-opacity,.08)}.mdc-ripple-surface--primary--selected::after,.mdc-ripple-surface--primary--selected::before{background-color:#6200ee;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#6200ee))}.mdc-ripple-surface--primary--selected.mdc-ripple-surface--hover::before,.mdc-ripple-surface--primary--selected:hover::before{opacity:.12;opacity:var(--mdc-ripple-hover-opacity,.12)}.mdc-ripple-surface--primary--selected.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--primary--selected:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.2;opacity:var(--mdc-ripple-focus-opacity,.2)}.mdc-ripple-surface--primary--selected:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--primary--selected:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.2;opacity:var(--mdc-ripple-press-opacity,.2)}.mdc-ripple-surface--primary--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.2)}.mdc-ripple-surface--accent::after,.mdc-ripple-surface--accent::before{background-color:#018786;background-color:var(--mdc-ripple-color,var(--mdc-theme-secondary,#018786))}.mdc-ripple-surface--accent.mdc-ripple-surface--hover::before,.mdc-ripple-surface--accent:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity,.04)}.mdc-ripple-surface--accent.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--accent:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity,.12)}.mdc-ripple-surface--accent:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--accent:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity,.12)}.mdc-ripple-surface--accent.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface--accent--activated::before{opacity:.12;opacity:var(--mdc-ripple-activated-opacity,.12)}.mdc-ripple-surface--accent--activated::after,.mdc-ripple-surface--accent--activated::before{background-color:#018786;background-color:var(--mdc-ripple-color,var(--mdc-theme-secondary,#018786))}.mdc-ripple-surface--accent--activated.mdc-ripple-surface--hover::before,.mdc-ripple-surface--accent--activated:hover::before{opacity:.16;opacity:var(--mdc-ripple-hover-opacity,.16)}.mdc-ripple-surface--accent--activated.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--accent--activated:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.24;opacity:var(--mdc-ripple-focus-opacity,.24)}.mdc-ripple-surface--accent--activated:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--accent--activated:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.24;opacity:var(--mdc-ripple-press-opacity,.24)}.mdc-ripple-surface--accent--activated.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.24)}.mdc-ripple-surface--accent--selected::before{opacity:.08;opacity:var(--mdc-ripple-selected-opacity,.08)}.mdc-ripple-surface--accent--selected::after,.mdc-ripple-surface--accent--selected::before{background-color:#018786;background-color:var(--mdc-ripple-color,var(--mdc-theme-secondary,#018786))}.mdc-ripple-surface--accent--selected.mdc-ripple-surface--hover::before,.mdc-ripple-surface--accent--selected:hover::before{opacity:.12;opacity:var(--mdc-ripple-hover-opacity,.12)}.mdc-ripple-surface--accent--selected.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--accent--selected:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.2;opacity:var(--mdc-ripple-focus-opacity,.2)}.mdc-ripple-surface--accent--selected:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--accent--selected:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.2;opacity:var(--mdc-ripple-press-opacity,.2)}.mdc-ripple-surface--accent--selected.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.2)}.mdc-ripple-surface--disabled{opacity:0}.mdc-ripple-surface--internal-use-state-layer-custom-properties::after,.mdc-ripple-surface--internal-use-state-layer-custom-properties::before{background-color:#000;background-color:var(--mdc-ripple-hover-state-layer-color,#000)}.mdc-ripple-surface--internal-use-state-layer-custom-properties.mdc-ripple-surface--hover::before,.mdc-ripple-surface--internal-use-state-layer-custom-properties:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-state-layer-opacity,.04)}.mdc-ripple-surface--internal-use-state-layer-custom-properties.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface--internal-use-state-layer-custom-properties:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-state-layer-opacity,.12)}.mdc-ripple-surface--internal-use-state-layer-custom-properties:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface--internal-use-state-layer-custom-properties:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-pressed-state-layer-opacity,.12)}.mdc-ripple-surface--internal-use-state-layer-custom-properties.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-pressed-state-layer-opacity, 0.12)}`
319
+ /**
320
+ * @license
321
+ * Copyright 2018 Google LLC
322
+ * SPDX-License-Identifier: Apache-2.0
323
+ */;let ve=class extends ue{};ve.styles=[he],ve=Yt([it("mwc-ripple")],ve);
324
+ /**
325
+ * @license
326
+ * Copyright 2020 Google LLC
327
+ * SPDX-License-Identifier: Apache-2.0
328
+ */
329
+ class ye{constructor(t){this.startPress=e=>{t().then((t=>{t&&t.startPress(e)}))},this.endPress=()=>{t().then((t=>{t&&t.endPress()}))},this.startFocus=()=>{t().then((t=>{t&&t.startFocus()}))},this.endFocus=()=>{t().then((t=>{t&&t.endFocus()}))},this.startHover=()=>{t().then((t=>{t&&t.startHover()}))},this.endHover=()=>{t().then((t=>{t&&t.endHover()}))}}}var me=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let be=class extends Ot{constructor(){super(...arguments),this.primary=!1,this.secondary=!1,this.unbounded=!1,this.activated=!1,this.selected=!1,this.disabled=!1}getStyles(){return n`:host{display:contents;--mdc-ripple-color:var(--ft-ripple-color, var(--ft-color-content, #000));--mdc-ripple-press-opacity:var(--ft-opacity-color-content-on-surface-pressed, 0.1);--mdc-ripple-hover-opacity:var(--ft-opacity-color-content-on-surface-hover, 0.04);--mdc-ripple-focus-opacity:var(--ft-opacity-color-content-on-surface-focused, 0.12);--mdc-ripple-selected-opacity:var(--ft-opacity-color-content-on-surface-selected, 0.08);--mdc-ripple-activated-opacity:var(--ft-opacity-color-content-on-surface-dragged, 0.08)}mwc-ripple.ft-ripple--secondary{--mdc-ripple-color:var(--ft-ripple-color, var(--ft-color-secondary, #FFCC80))}mwc-ripple.ft-ripple--primary{--mdc-ripple-color:var(--ft-ripple-color, var(--ft-color-primary, #2196F3))}`}getTemplate(){return R`<mwc-ripple class="${this.primary?"ft-ripple--primary":this.secondary?"ft-ripple--secondary":""}" ?unbounded="${this.unbounded}" ?activated="${this.activated}" ?selected="${this.selected}" ?disabled="${this.disabled}"></mwc-ripple>`}updated(t){super.updated(t),t.has("disabled")&&this.disabled&&this.endRipple()}endRipple(){var t,e,i;null===(t=this.rippleHandlers)||void 0===t||t.endHover(),null===(e=this.rippleHandlers)||void 0===e||e.endFocus(),null===(i=this.rippleHandlers)||void 0===i||i.endPress()}connectedCallback(){var t;super.connectedCallback();const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.host.parentNode;if(e){const t=new ye((async()=>this.mwcRipple)),i=e=>i=>{window.addEventListener(e,t.endPress,{once:!0}),t.startPress(i)},r=i("mouseup"),o=i("touchend"),n=t=>{["Enter"," "].includes(t.key)&&i("keyup")()};e.addEventListener("mouseenter",t.startHover),e.addEventListener("mouseleave",t.endHover),e.addEventListener("mousedown",r),e.addEventListener("touchstart",o),e.addEventListener("keydown",n),e.addEventListener("focus",t.startFocus),e.addEventListener("blur",t.endFocus),this.onDisconnect=()=>{e.removeEventListener("mouseenter",t.startHover),e.removeEventListener("mouseleave",t.endHover),e.removeEventListener("mousedown",r),e.removeEventListener("touchstart",o),e.removeEventListener("keydown",n),e.removeEventListener("focus",t.startFocus),e.removeEventListener("blur",t.endFocus)},this.rippleHandlers=t}}disconnectedCallback(){super.disconnectedCallback(),this.onDisconnect&&this.onDisconnect(),this.endRipple()}};be.elementDefinitions={"mwc-ripple":ve},me([ot({type:Boolean})],be.prototype,"primary",void 0),me([ot({type:Boolean})],be.prototype,"secondary",void 0),me([ot({type:Boolean})],be.prototype,"unbounded",void 0),me([ot({type:Boolean})],be.prototype,"activated",void 0),me([ot({type:Boolean})],be.prototype,"selected",void 0),me([ot({type:Boolean})],be.prototype,"disabled",void 0),me([st("mwc-ripple")],be.prototype,"mwcRipple",void 0),be=me([zt("ft-ripple")],be);
330
+ /**
331
+ * @license
332
+ * Copyright 2021 Google LLC
333
+ * SPDX-LIcense-Identifier: Apache-2.0
334
+ */
335
+ const ge=n`:host{font-family:var(--mdc-icon-font, "Material Icons");font-weight:400;font-style:normal;font-size:var(--mdc-icon-size,24px);line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}`
336
+ /**
337
+ * @license
338
+ * Copyright 2018 Google LLC
339
+ * SPDX-License-Identifier: Apache-2.0
340
+ */;let xe=class extends tt{render(){return R`<span><slot></slot></span>`}};xe.styles=[ge],xe=Yt([it("mwc-icon")],xe);var we=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let ke=class extends Ot{constructor(){super(...arguments),this.label="",this.value=null,this.selected=!1}getTemplate(){return R``}updated(t){super.updated(t),this.dispatchEvent(new CustomEvent("option-change",{detail:this,bubbles:!0}))}};ke.elementDefinitions={},we([ot({type:String})],ke.prototype,"label",void 0),we([ot({type:Object,converter:t=>t})],ke.prototype,"value",void 0),we([ot({type:Boolean,reflect:!0})],ke.prototype,"selected",void 0),ke=we([zt("ft-select-option")],ke);let $e=class extends Ot{constructor(){super(...arguments),this.label="",this.helper="",this.outlined=!1,this.disabled=!1,this.options=[],this.optionsDisplayed=!1,this.focusOptions=!1,this.hideOptions=()=>this.optionsDisplayed=!1}getStyles(){return[Lt,Pt,n`:focus{outline:0}.ft-select{display:flex;flex-direction:column;align-items:stretch}.ft-select--main-panel{position:relative;display:flex;height:calc(4 * var(--ft-select-vertical-spacing,4px) + var(--ft-select-label-size,11px) + var(--ft-select-selected-option-size,14px))}.ft-select--input-panel{flex-grow:1;position:relative;display:flex;align-items:center;overflow:hidden;padding-left:16px;padding-right:8px;gap:8px}.ft-select--input-panel,.ft-select--option{color:var(--ft-color-on-surface,rgba(0,0,0,.87));--ft-opacity-color-content-on-surface-hover:0.08;--ft-opacity-color-content-on-surface-dragged:0.04}.ft-select--disabled .ft-select--input-panel,.ft-select--disabled .ft-select--option{color:var(--ft-color-on-surface-disabled,rgba(0,0,0,.38))}.ft-select:not(.ft-select--disabled) .ft-select--input-panel{cursor:pointer}ft-input-label{--ft-input-label-font-size:var(--ft-select-selected-option-size, 14px);--ft-input-label-raised-font-size:var(--ft-select-label-size, 11px);--ft-input-label-vertical-spacing:var(--ft-select-vertical-spacing, 4px)}.ft-select:not(.ft-select--disabled):focus-within ft-input-label{--ft-input-label-border-color:var(--ft-color-primary, #2196F3);--ft-input-label-text-color:var(--ft-color-primary, #2196F3)}.ft-select--selected-option{display:block;flex-grow:1;flex-shrink:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;--ft-typography-font-size:var(--ft-select-selected-option-size, 14px);--ft-typography-line-height:var(--ft-select-selected-option-size, 14px)}mwc-icon{flex-shrink:0}slot{display:none}.ft-select--filled .ft-select--input-panel{border-radius:var(--ft-border-radius-S,4px) var(--ft-border-radius-S,4px) 0 0}.ft-select--filled:not(.ft-select--no-label) .ft-select--selected-option{align-self:stretch;padding-top:calc(var(--ft-select-label-size,11px) + 2 * var(--ft-select-vertical-spacing,4px))}.ft-select--outlined .ft-select--input-panel{border-radius:var(--ft-border-radius-S,4px)}.ft-select--options{display:none;position:absolute;top:100%;left:0;right:0;background:var(--ft-color-surface,#fff);z-index:var(--ft-select-options-z-index,1);box-shadow:var(--ft-elevation-02,0 4px 10px 0 rgba(0,0,0,.06),0 2px 5px 0 rgba(0,0,0,.14),0 0 1px 0 rgba(0,0,0,.06))}.ft-select--options-displayed .ft-select--options{display:block}.ft-select--option{position:relative;padding:4px 16px;min-height:32px;display:flex;align-items:center}.ft-select--helper-text{padding:0 12px 0 16px;color:var(--ft-select-helper-color,var(--ft-color-on-surface-medium,rgba(0,0,0,.6)))}`]}getTemplate(){var t,e,i,r,o;let n=!this.disabled&&this.optionsDisplayed&&this.hasOptions,a=this.disabled||!this.hasOptions;const s={"ft-select":!0,"ft-select--filled":!this.outlined,"ft-select--outlined":this.outlined,"ft-select--disabled":a,"ft-select--options-displayed":n,"ft-select--has-value":null!=(null===(t=this.selectedOption)||void 0===t?void 0:t.value),"ft-select--no-label":!this.label};return R`<div class="${Et(s)}" @click="${t=>t.stopPropagation()}" part="container"><div class="ft-select--main-panel" part="main-panel"><ft-input-label text="${this.label}" part="label" ?disabled="${a}" ?outlined="${this.outlined}" ?raised="${null!=(null===(e=this.selectedOption)||void 0===e?void 0:e.value)||n}"></ft-input-label><div class="ft-select--input-panel" part="selected-value" tabindex="${a?"-1":"0"}" @click="${()=>this.optionsDisplayed=!this.optionsDisplayed}" @keydown="${this.onMainPanelKeyDown}" aria-label="${this.label}" aria-haspopup="listbox" aria-expanded="${n}">${this.outlined?null:R`<ft-ripple ?disabled="${a}" activated></ft-ripple>`}<ft-typography variant="body1" class="ft-select--selected-option">${null!=(null===(i=this.selectedOption)||void 0===i?void 0:i.value)&&null!==(o=null===(r=this.selectedOption)||void 0===r?void 0:r.label)&&void 0!==o?o:""}</ft-typography><mwc-icon>${n?"expand_less":"expand_more"}</mwc-icon></div><div class="ft-select--options" part="options" @keydown="${this.onOptionsKeyDown}" innerrole="listbox">${wt(this.options,(t=>t.value),(t=>this.renderOption(t)))}</div></div>${this.helper?R`<ft-typography class="ft-select--helper-text" variant="caption">${this.helper}</ft-typography>`:void 0}</div><slot @slotchange="${this.updateOptionsFromSlot}" @option-change="${this.updateOptionsFromSlot}"></slot>`}renderOption(t){let e=this.selectedOption===t;return R`<div class="${Et({"ft-select--option":!0,"ft-select--option-selected":e,"ft-typography--body2":!0})}" part="option" tabindex="0" @keydown="${e=>this.onOptionKeyDown(e,t)}" @click="${()=>this.selectOption(t)}"><ft-ripple ?primary="${e}" ?activated="${e}"></ft-ripple>${t.label}</div>`}updated(t){var e;super.updated(t),t.has("options")&&(this.selectedOption=this.options.filter((t=>t.selected))[0]),t.has("selectedOption")&&(this.optionsDisplayed=!1,this.dispatchEvent(new CustomEvent("change",{detail:null===(e=this.selectedOption)||void 0===e?void 0:e.value})))}contentAvailableCallback(t){var e,i;t.has("focusOptions")&&this.focusOptions&&(null===(i=null!==(e=this.selectedOptionElement)&&void 0!==e?e:this.firstOption)||void 0===i||i.focus(),this.focusOptions=!1)}get hasOptions(){return this.options.length>0}updateOptionsFromSlot(t){var e;t.stopPropagation();let i=null===(e=this.optionsSlot)||void 0===e?void 0:e.assignedElements().map((t=>t));i&&i.length>0&&(this.options=i)}onMainPanelKeyDown(t){switch(t.key){case" ":t.preventDefault(),t.stopPropagation();case"Enter":this.optionsDisplayed=!this.optionsDisplayed,this.focusOptions=!0;break;case"ArrowUp":case"ArrowDown":t.preventDefault(),t.stopPropagation(),this.optionsDisplayed=!0,this.focusOptions=!0}}onOptionsKeyDown(t){var e,i,r,o,n;let a;switch(t.key){case"Escape":this.optionsDisplayed=!1,null===(e=this.mainPanel)||void 0===e||e.focus();break;case"Tab":this.optionsDisplayed=!1;break;case"ArrowUp":t.preventDefault(),t.stopPropagation(),a=null!==(r=null===(i=this.focusedOption)||void 0===i?void 0:i.previousElementSibling)&&void 0!==r?r:this.lastOption;break;case"ArrowDown":t.preventDefault(),t.stopPropagation(),a=null!==(n=null===(o=this.focusedOption)||void 0===o?void 0:o.nextElementSibling)&&void 0!==n?n:this.firstOption}null==a||a.focus()}onOptionKeyDown(t,e){var i;"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),t.stopPropagation(),this.selectOption(e),this.optionsDisplayed=!1,null===(i=this.mainPanel)||void 0===i||i.focus())}selectOption(t){this.selectedOption=t;for(let e of this.options)e.selected=e===t}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.hideOptions)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.hideOptions)}};$e.elementDefinitions={"ft-input-label":Zt,"ft-typography":Wt,"ft-ripple":be,"mwc-icon":xe},we([ot({type:String})],$e.prototype,"label",void 0),we([ot({type:String})],$e.prototype,"helper",void 0),we([ot({type:Boolean})],$e.prototype,"outlined",void 0),we([ot({type:Boolean})],$e.prototype,"disabled",void 0),we([ot({type:Array})],$e.prototype,"options",void 0),we([nt()],$e.prototype,"selectedOption",void 0),we([nt()],$e.prototype,"optionsDisplayed",void 0),we([nt()],$e.prototype,"focusOptions",void 0),we([st(".ft-select--input-panel")],$e.prototype,"mainPanel",void 0),we([st(".ft-select--option:first-child")],$e.prototype,"firstOption",void 0),we([st(".ft-select--option:focus")],$e.prototype,"focusedOption",void 0),we([st(".ft-select--option.ft-select--option-selected")],$e.prototype,"selectedOptionElement",void 0),we([st(".ft-select--option:last-child")],$e.prototype,"lastOption",void 0),we([st("slot")],$e.prototype,"optionsSlot",void 0),$e=we([zt("ft-select")],$e);var Se=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let ze=class extends Ot{constructor(){super(...arguments),this.label="",this.value="",this.helper="",this.outlined=!1,this.disabled=!1,this.focused=!1}getStyles(){return[Pt,n`:focus{outline:0}.ft-text-field{display:flex;flex-direction:column;align-items:stretch}ft-input-label{--ft-input-label-font-size:var(--ft-text-field-font-size, 14px);--ft-input-label-raised-font-size:var(--ft-text-field-label-size, 11px);--ft-input-label-vertical-spacing:var(--ft-text-field-vertical-spacing, 4px);--ft-input-label-horizontal-spacing:calc(var(--ft-text-field-horizontal-spacing, 16px) - 4px)}.ft-text-field--main-panel{position:relative;display:flex;height:calc(4 * var(--ft-text-field-vertical-spacing,4px) + var(--ft-text-field-label-size,11px) + var(--ft-text-field-font-size,14px))}.ft-text-field--input-panel{flex-grow:1;position:relative;display:flex;align-items:center;overflow:hidden;gap:8px}.ft-text-field--input{display:block;flex-grow:1;flex-shrink:1;min-width:0;--ft-typography-font-size:var(--ft-text-field-font-size, 14px);--ft-typography-line-height:var(--ft-text-field-font-size, 14px);color:var(--ft-color-on-surface,rgba(0,0,0,.87));--ft-opacity-color-content-on-surface-hover:0.08;--ft-opacity-color-content-on-surface-dragged:0.04;padding:0 var(--ft-text-field-horizontal-spacing,16px);border:none;background:0 0}.ft-text-field--disabled .ft-text-field--input{color:var(--ft-color-on-surface-disabled,rgba(0,0,0,.38))}.ft-text-field:not(.ft-text-field--disabled) .ft-text-field--input-panel{cursor:pointer}.ft-text-field:not(.ft-text-field--disabled):focus-within ft-text-field-label{--ft-text-field-label-border-color:var(--ft-color-primary, #2196F3);--ft-text-field-label-text-color:var(--ft-color-primary, #2196F3)}.ft-text-field--filled .ft-text-field--input-panel{border-radius:var(--ft-border-radius-S,4px) var(--ft-border-radius-S,4px) 0 0}.ft-text-field--filled:not(.ft-text-field--no-label) .ft-text-field--input{align-self:stretch;padding-bottom:var(--ft-text-field-vertical-spacing,4px);padding-top:calc(var(--ft-text-field-label-size,11px) + 2 * var(--ft-text-field-vertical-spacing,4px))}.ft-text-field--outlined .ft-text-field--input-panel{border-radius:var(--ft-border-radius-S,4px)}.ft-text-field--helper-text{padding:0 12px 0 var(--ft-text-field-horizontal-spacing,16px);color:var(--ft-text-field-helper-color,var(--ft-color-on-surface-medium,rgba(0,0,0,.6)))}`]}getTemplate(){const t={"ft-text-field":!0,"ft-text-field--filled":!this.outlined,"ft-text-field--outlined":this.outlined,"ft-text-field--disabled":this.disabled,"ft-text-field--has-value":!!this.value,"ft-text-field--no-label":!this.label};return R`<div class="${Et(t)}"><div class="ft-text-field--main-panel"><ft-input-label text="${this.label}" ?disabled="${this.disabled}" ?outlined="${this.outlined}" ?raised="${this.focused||""!=this.value}"></ft-input-label><div class="ft-text-field--input-panel" aria-label="${this.label}">${this.outlined?null:R`<ft-ripple ?disabled="${this.disabled}" activated></ft-ripple>`} <input type="text" class="ft-typography--caption ft-text-field--input" ?disabled="${this.disabled}" .value="${this.value}" @change="${this.updateValueFromInputField}" @keyup="${this.liveUpdateValueFromInputField}" @focus="${()=>this.focused=!0}" @focusout="${()=>this.focused=!1}"></div></div>${this.helper?R`<ft-typography class="ft-text-field--helper-text" variant="caption">${this.helper}</ft-typography>`:void 0}</div>`}updated(t){super.updated(t),t.has("value")&&this.dispatchEvent(new CustomEvent("live-change",{detail:this.value}))}updateValueFromInputField(){this.dispatchEvent(new CustomEvent("change",{detail:this.value}))}liveUpdateValueFromInputField(){var t;this.value=(null===(t=this.input)||void 0===t?void 0:t.value)||""}};ze.elementDefinitions={"ft-input-label":Zt,"ft-ripple":be,"ft-typography":Wt},Se([ot({type:String})],ze.prototype,"label",void 0),Se([ot({reflect:!0})],ze.prototype,"value",void 0),Se([ot({type:String})],ze.prototype,"helper",void 0),Se([ot({type:Boolean})],ze.prototype,"outlined",void 0),Se([ot({type:Boolean})],ze.prototype,"disabled",void 0),Se([st("input")],ze.prototype,"input",void 0),Se([nt()],ze.prototype,"focused",void 0),ze=Se([zt("ft-text-field")],ze);var Oe=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let Ae=class extends Ot{constructor(){super(...arguments),this.text="",this.manual=!1,this.inline=!1,this.delay=500,this.position="bottom",this.visible=!1,this.hideDebounce=new St,this.revealDebouncer=new St}getStyles(){return n`.ft-tooltip--container{display:block;position:relative}.ft-tooltip--inline{display:inline-block;max-width:100%}.ft-tooltip{position:absolute;box-sizing:border-box;overflow:hidden;width:max-content;max-width:150px;text-align:center;padding:var(--ft-tooltip-distance,4px);z-index:var(--ft-tooltip-z-index,1)}.ft-tooltip--content{padding:4px 8px;border-radius:var(--ft-border-radius-S,4px);background-color:var(--ft-tooltip-background-color,#666);color:var(--ft-tooltip-color,#fff);top:-500px;left:-500px;position:relative;word-break:break-word}`}getTemplate(){return R`<div part="container" class="ft-tooltip--container ${this.inline?"ft-tooltip--inline":""}" @mouseenter="${this.onHover}" @mouseleave="${this.onOut}" @focusin="${this.onHover}" @focusout="${this.onOut}" @touchstart="${this.onTouch}"><div part="tooltip" class="ft-tooltip ft-tooltip--${this.position}" ?hidden="${!this.visible}"><div part="tooltip-content" class="ft-tooltip--content"><ft-typography variant="caption">${this.text}</ft-typography></div></div><slot></slot></div>`}update(t){t.has("visible")&&!this.visible&&this.resetTooltipContent(),super.update(t)}contentAvailableCallback(t){t.has("visible")&&this.visible&&this.positionTooltip()}show(t){this.visible=!0,null!=t&&this.hideDebounce.run((()=>this.hide()),t)}hide(){this.visible=!1}toggle(){this.visible=!this.visible}get slottedElement(){var t;return(null!==(t=this.slotNodes)&&void 0!==t?t:[]).filter((t=>t.nodeType==Node.ELEMENT_NODE))[0]}resetTooltipContent(){if(this.tooltip&&this.tooltipContent){const t=this.tooltipContent.style;switch(t.transition="none",this.position){case"top":t.top=this.tooltip.clientHeight+"px",t.left="0";break;case"bottom":t.top=-this.tooltip.clientHeight+"px",t.left="0";break;case"left":t.top="0",t.left=this.tooltip.clientWidth+"px";break;case"right":t.top="0",t.left=-this.tooltip.clientWidth+"px"}}}positionTooltip(){this.resetTooltipContent();const t=this.slottedElement;if(this.tooltip&&t){const e=t.getBoundingClientRect(),i=(e.height-this.tooltip.clientHeight)/2,r=(e.width-this.tooltip.clientWidth)/2,o=this.tooltip.style;switch(this.position){case"top":o.top=-this.tooltip.clientHeight+"px",o.left=r+"px";break;case"bottom":o.top=e.height+"px",o.left=r+"px";break;case"left":o.top=i+"px",o.left=-this.tooltip.clientWidth+"px";break;case"right":o.top=i+"px",o.left=e.width+"px"}o.maxWidth=Math.max(e.width,150)+"px"}this.revealDebouncer.run((()=>{this.tooltipContent&&(this.tooltipContent.style.transition="top var(--ft-transition-duration, 250ms), left var(--ft-transition-duration, 250ms)",this.tooltipContent.style.top="0",this.tooltipContent.style.left="0")}),this.manual?0:this.delay)}onTouch(){this.manual||(this.show(),setTimeout((()=>window.addEventListener("touchstart",(t=>{t.composedPath().includes(this.container)||this.onOut()}),{once:!0})),100))}onHover(){this.manual||this.show()}onOut(){this.manual||(this.revealDebouncer.cancel(),this.hide())}};Ae.elementDefinitions={"ft-typography":Wt},Oe([ot()],Ae.prototype,"text",void 0),Oe([ot({type:Boolean})],Ae.prototype,"manual",void 0),Oe([ot({type:Boolean})],Ae.prototype,"inline",void 0),Oe([ot({type:Number})],Ae.prototype,"delay",void 0),Oe([ot()],Ae.prototype,"position",void 0),Oe([
341
+ /**
342
+ * @license
343
+ * Copyright 2017 Google LLC
344
+ * SPDX-License-Identifier: BSD-3-Clause
345
+ */
346
+ function(t,e,i){let r,o=t;return"object"==typeof t?(o=t.slot,r=t):r={flatten:e},i?function(t){const{slot:e,selector:i}=null!=t?t:{};return at({descriptor:r=>({get(){var r;const o="slot"+(e?`[name=${e}]`:":not([name])"),n=null===(r=this.renderRoot)||void 0===r?void 0:r.querySelector(o),a=null!=n?ct(n,t):[];return i?a.filter((t=>t.matches(i))):a},enumerable:!0,configurable:!0})})}({slot:o,flatten:e,selector:i}):at({descriptor:t=>({get(){var t,e;const i="slot"+(o?`[name=${o}]`:":not([name])"),n=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(i);return null!==(e=null==n?void 0:n.assignedNodes(r))&&void 0!==e?e:[]},enumerable:!0,configurable:!0})})}("",!0)],Ae.prototype,"slotNodes",void 0),Oe([st(".ft-tooltip--container")],Ae.prototype,"container",void 0),Oe([st("slot")],Ae.prototype,"target",void 0),Oe([st(".ft-tooltip")],Ae.prototype,"tooltip",void 0),Oe([st(".ft-tooltip--content")],Ae.prototype,"tooltipContent",void 0),Oe([nt()],Ae.prototype,"visible",void 0),Ae=Oe([zt("ft-tooltip")],Ae);var Te=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let je=class extends Ot{getStyles(){return n`:host{line-height:0}.ft-loader{display:inline-block;position:relative;width:var(--ft-loader-size,80px);height:var(--ft-loader-size,80px)}.ft-loader div{position:absolute;top:37.5%;width:25%;height:25%;border-radius:50%;background:var(--ft-loader-color,var(--ft-color-primary,#2196f3));animation-timing-function:cubic-bezier(0,1,1,0)}.ft-loader div:nth-child(1){left:2.5%;animation:appear .6s infinite}.ft-loader div:nth-child(2){left:2.5%;animation:move .6s infinite}.ft-loader div:nth-child(3){left:37.5%;animation:move .6s infinite}.ft-loader div:nth-child(4){left:72.5%;animation:disappear .6s infinite}@keyframes appear{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes disappear{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes move{0%{transform:translate(0,0)}100%{transform:translate(calc(.35 * var(--ft-loader-size,80px)),0)}}`}getTemplate(){return R`<div class="ft-loader"><div></div><div></div><div></div><div></div></div>`}};je=Te([zt("ft-loader")],je);var Ce=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let Ee=class extends Ot{constructor(){super(...arguments),this.primary=!1,this.outlined=!1,this.disabled=!1,this.dense=!1,this.round=!1,this.label="",this.icon=void 0,this.trailingIcon=!1,this.loading=!1,this.tooltipPosition="bottom",this.onclick=t=>{this.isDisabled()&&(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation())}}getStyles(){return n`:host{display:inline-block;max-width:100%}button{box-shadow:0 0 0 transparent;border:0 solid transparent;text-shadow:0 0 0 transparent}button:hover{box-shadow:0 0 0 transparent;border:0 solid transparent;text-shadow:0 0 0 transparent}button:active{outline:0;border:none}button:focus{outline:0}.ft-button{position:relative;display:flex;justify-content:center;align-items:center;width:100%;overflow:hidden;box-sizing:border-box;border:none;--ft-button-internal-font-size:var(--ft-typography-button-font-size, 14px);--ft-button-internal-line-height:var(--ft-typography-button-line-height, calc(var(--ft-button-internal-font-size) + 2px));--ft-button-internal-color:var(--ft-button-color, var(--ft-color-primary, #2196F3));--mdc-icon-size:var(--ft-button-icon-size, 24px);--ft-button-internal-vertical-padding:6px;--ft-button-internal-horizontal-padding:8px;--ft-ripple-color:var(--ft-button-ripple-color, var(--ft-button-internal-color));--ft-button-internal-content-height:max(var(--ft-button-internal-line-height), var(--mdc-icon-size));border-radius:var(--ft-button-border-radius,var(--ft-border-radius-L,12px));padding:var(--ft-button-internal-vertical-padding) var(--ft-button-internal-horizontal-padding);background-color:var(--ft-button-background-color,var(--ft-color-surface,#fff));color:var(--ft-button-internal-color);-webkit-mask-image:radial-gradient(white,#000)}.ft-button:not([disabled]):hover{cursor:pointer}.ft-button--dense{--ft-button-internal-vertical-padding:2px;--ft-button-internal-horizontal-padding:4px;border-radius:var(--ft-button-border-radius,var(--ft-border-radius-M,8px))}.ft-button--round{border-radius:calc(var(--ft-button-internal-content-height)/ 2 + var(--ft-button-internal-vertical-padding))}.ft-button[disabled]{filter:grayscale(1);opacity:var(--ft-color-opacity-disabled,.38)}.ft-button.ft-button--primary{background-color:var(--ft-button-background-color,var(--ft-color-primary,#2196f3));--ft-button-internal-color:var(--ft-button-color, var(--ft-color-on-primary, #FFFFFF))}.ft-button.ft-button--outlined{border:1px solid var(--ft-button-internal-color);padding:calc(var(--ft-button-internal-vertical-padding) - 1px) calc(var(--ft-button-internal-horizontal-padding) - 1px)}.ft-button:focus{outline:0}.ft-button--label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:block;margin:0 var(--ft-button-internal-horizontal-padding);--ft-typography-button-line-height:var(--ft-button-internal-content-height)}.ft-button--safari-fix .ft-button--label{margin-right:0}.ft-button--safari-fix .ft-button--label:after{content:"\\0000a0";display:inline-block;width:0}.ft-button--label[hidden]{display:none}mwc-icon{flex-shrink:0;width:var(--mdc-icon-size)}.ft-button--label[hidden]+mwc-icon{margin:0 calc(var(--ft-button-internal-horizontal-padding) * -1);padding:0 var(--ft-button-internal-vertical-padding)}.ft-button:not(.ft-button--trailing-icon) ft-loader,.ft-button:not(.ft-button--trailing-icon) mwc-icon{order:-1}ft-loader{--ft-loader-size:var(--ft-button-icon-size, 24px);--ft-loader-color:var(--ft-button-internal-color)}`}getTemplate(){const t={"ft-button":!0,"ft-button--primary":this.primary,"ft-button--outlined":this.outlined,"ft-button--dense":this.dense,"ft-button--round":this.round,"ft-button--trailing-icon":this.trailingIcon,"ft-button--loading":this.trailingIcon,"ft-button--safari-fix":Ct};return this.addTooltip(R`<button class="${Et(t)}" aria-label="${this.getLabel()}" ?disabled="${this.isDisabled()}"><ft-ripple ?disabled="${this.isDisabled()}"></ft-ripple><ft-typography variant="button" class="ft-button--label" ?hidden="${!this.hasTextContent()}"><slot @slotchange="${this.onSlotchange}"></slot></ft-typography>${this.resolveIcon()}</button>`)}addTooltip(t){return this.hasTextContent()||0===this.getLabel().trim().length?t:R`<ft-tooltip text="${this.getLabel()}" position="${this.tooltipPosition}">${t}</ft-tooltip>`}resolveIcon(){return this.loading?R`<ft-loader></ft-loader>`:this.icon?R`<mwc-icon>${this.icon}</mwc-icon>`:B}focus(){var t;null===(t=this.button)||void 0===t||t.focus()}getLabel(){return this.label||this.textContent}get textContent(){var t,e;return null!==(e=null===(t=this.slottedContent)||void 0===t?void 0:t.assignedNodes().map((t=>t.textContent)).join("").trim())&&void 0!==e?e:""}hasTextContent(){return this.textContent.length>0}onSlotchange(){this.requestUpdate()}isDisabled(){return this.disabled||this.loading}};Ee.elementDefinitions={"ft-ripple":be,"ft-tooltip":Ae,"ft-typography":Wt,"mwc-icon":xe,"ft-loader":je},Ce([ot({type:Boolean})],Ee.prototype,"primary",void 0),Ce([ot({type:Boolean})],Ee.prototype,"outlined",void 0),Ce([ot({type:Boolean})],Ee.prototype,"disabled",void 0),Ce([ot({type:Boolean})],Ee.prototype,"dense",void 0),Ce([ot({type:Boolean})],Ee.prototype,"round",void 0),Ce([ot({type:String})],Ee.prototype,"label",void 0),Ce([ot({type:String})],Ee.prototype,"icon",void 0),Ce([ot({type:Boolean})],Ee.prototype,"trailingIcon",void 0),Ce([ot({type:Boolean})],Ee.prototype,"loading",void 0),Ce([ot({type:String})],Ee.prototype,"tooltipPosition",void 0),Ce([st(".ft-button")],Ee.prototype,"button",void 0),Ce([st(".ft-button--label slot")],Ee.prototype,"slottedContent",void 0),Ee=Ce([zt("ft-button")],Ee);var _e=function(t,e,i,r){for(var o,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r,s=t.length-1;s>=0;s--)(o=t[s])&&(a=(n<3?o(a):n>3?o(e,i,a):o(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};class Me extends CustomEvent{constructor(t){super("row-click",{detail:t})}}const Re=t=>R`${t}`,Fe=(t,e)=>t-e;t.FtFilterableTable=class extends Ot{constructor(){super(...arguments),this.data=[],this.columns=[],this.filters=[],this.selectData=[]}getStyles(){return n`:host{display:block}.table{display:grid}.header,.row{display:contents}.header-cell{display:flex;flex-direction:column;background:var(--ft-filterable-table-header-background,#f5f5f5);color:var(--ft-color-on-surface-high,rgba(0,0,0,.87));padding:.5rem 1rem;font-family:var(--ft-title-font,Ubuntu),system-ui,sans-serif;--mdc-icon-size:20px;--mdc-icon-button-size:30px}.header-cell:first-of-type{border-radius:.5rem 0 0 0}.header-cell:last-of-type{border-radius:0 .5rem 0 0}.column-title-container{display:flex;align-items:center}.column-title-container ft-button{--ft-color-surface:var(--ft-filterable-table-header-background, whitesmoke);--ft-color-primary:var(--ft-color-on-surface-high, rgba(0, 0, 0, 0.87))}.column-title{white-space:nowrap;text-transform:uppercase;margin-right:.5rem}.column-filter{flex-grow:1;flex-shrink:0}.column-filter:not(:empty){padding-top:.5rem}.column-filter ft-select,.column-filter ft-text-field{width:150px;min-width:100%;--mdc-text-field-fill-color:var(--ft-filterable-table-header-background, whitesmoke);--mdc-select-fill-color:var(--ft-filterable-table-header-background, whitesmoke)}.cell{padding:1rem;border-left:1px solid var(--ft-filterable-table-header-background,#f5f5f5);border-bottom:1px solid var(--ft-filterable-table-header-background,#f5f5f5);overflow-x:auto;display:flex;align-items:center;font-family:var(--ft-content-font, 'Open Sans'),system-ui,sans-serif}.row:nth-child(2n)>.cell{background:var(--ft-filterable-table-odd-row-background,#fff)}.row:nth-child(2n+1)>.cell{background:var(--ft-filterable-table-even-row-background,#fdfdfd)}.row:hover>.cell{background:var(--ft-filterable-table-row-hover-background,#fafafa)}.cell:last-of-type{border-right:1px solid var(--ft-filterable-table-header-background,#f5f5f5)}.row:last-of-type .cell:first-of-type{border-radius:0 0 0 .5rem}.row:last-of-type .cell:last-of-type{border-radius:0 0 .5rem 0}.hidden{visibility:hidden}`}init(t,e,i){this.data=t,this.columns=e,this.sort=i}getTemplate(){let t=this.sortData(this.filterData());return R`<style>.table{grid-template-columns:repeat(${this.columns.length},minmax(min-content,auto))}</style><div class="table"><div class="header">${wt(this.columns,((t,e)=>"header-cell-"+e),((t,e)=>this.renderHeader(t,e)))}</div>${wt(t,((t,e)=>"row-"+e),((t,e)=>R`<div class="row" @click="${()=>this.dispatchEvent(new Me(t))}">${wt(this.columns,((t,i)=>"cell-"+e+" "+i),(i=>this.renderCell(i,t,e)))}</div>`))}</div>`}filterData(){let t=[...this.data];return this.filters.forEach(((e,i)=>{var r;const o=this.columns[i];if(e)switch(null!==(r=o.filter)&&void 0!==r?r:"text"){case"text":e.value&&(t=t.filter((t=>this.getValueAsString(o,t,i).toLowerCase().includes(e.value.toLowerCase()))));break;case"select":e.value&&(t=t.filter((t=>this.getValueAsString(o,t,i)===e.value)))}})),t}sortData(t){var e;if(this.currentSort){const i=this.columns[this.currentSort.column],r=null!==(e=i.comparator)&&void 0!==e?e:Fe,o="asc"===this.currentSort.order?r:(t,e)=>-r(t,e);return t.sort(((t,e)=>o(this.getValue(i,t),this.getValue(i,e))))}return t}update(t){super.update(t),t.has("sort")&&(this.currentSort=this.sort),(t.has("data")||t.has("columns"))&&this.updateSelectData()}updateSelectData(){this.selectData=[];const t=this.data,e=this.columns;for(let i in e){const r=e[i];"select"===r.filter&&(this.selectData[i]=[...new Set(t.map(((t,e)=>this.getValueAsString(r,t,e))))].sort(((t,e)=>t.localeCompare(e))))}this.requestUpdate()}renderHeader(t,e){return R`<div class="header-cell"><div class="column-title-container"><span class="column-title">${t.title}</span> ${this.renderColumnSort(t,e)}</div><div class="column-filter">${this.renderColumnFilter(t,e)}</div></div>`}renderColumnSort(t,e){var i;const r=this.currentSort&&this.currentSort.column===e,o=r?"asc"===this.currentSort.order?"expand_more":"expand_less":"unfold_more";return R`<ft-button round dense class="${null===(i=t.sortable)||void 0===i||i?"":"hidden"}" icon="${o}" label="Sort ${t.title}" @click="${()=>{var t;r?"asc"===(null===(t=this.currentSort)||void 0===t?void 0:t.order)?this.currentSort={column:e,order:"desc"}:this.currentSort=void 0:this.currentSort={column:e,order:"asc"}}}"></ft-button>`}renderColumnFilter(t,e){var i,r;const o=t=>{this.filters[e]={value:t.detail},this.requestUpdate()};switch(null!==(i=t.filter)&&void 0!==i?i:"text"){case"text":return R`<ft-text-field label="Search ${t.title}" @live-change="${o}"></ft-text-field>`;case"select":const i=null!==(r=this.selectData[e])&&void 0!==r?r:[];return i.length?R`<ft-select label="Filter ${t.title}" @change="${o}"><ft-select-option></ft-select-option>${i.map((t=>R`<ft-select-option value="${t}" label="${t}"></ft-select-option>`))}</ft-select>`:null}return null}renderCell(t,e,i){var r;const o=null!==(r=t.render)&&void 0!==r?r:Re;return R`<div class="cell">${(t=>{const e=o(t,i);return"string"==typeof e?$t(e):e})(this.getValue(t,e))}</div>`}getValue(t,e){return"string"==typeof t.getter?e[t.getter]:t.getter(e)}getValueAsString(t,e,i){const r=this.getValue(t,e);return"function"==typeof t.stringify?t.stringify(r,i):(t=>""+t)(r)}},t.FtFilterableTable.elementDefinitions={"ft-button":Ee,"ft-select":$e,"ft-select-option":ke,"ft-text-field":ze},_e([ot({attribute:!1})],t.FtFilterableTable.prototype,"data",void 0),_e([ot({attribute:!1})],t.FtFilterableTable.prototype,"columns",void 0),_e([ot({attribute:!1})],t.FtFilterableTable.prototype,"sort",void 0),_e([nt()],t.FtFilterableTable.prototype,"currentSort",void 0),t.FtFilterableTable=_e([zt("ft-filterable-table")],t.FtFilterableTable),t.RowClickEvent=Me,Object.defineProperty(t,"t",{value:!0})}({});
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@fluid-topics/ft-filterable-table",
3
+ "version": "0.0.88",
4
+ "description": "A dynamic table with filters",
5
+ "keywords": [
6
+ "Lit"
7
+ ],
8
+ "author": "Fluid Topics <devtopics@antidot.net>",
9
+ "license": "ISC",
10
+ "main": "build/ft-filterable-table.js",
11
+ "web": "build/ft-filterable-table.min.js",
12
+ "typings": "build/ft-filterable-table",
13
+ "files": [
14
+ "build/*.ts",
15
+ "build/*.js"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
+ },
21
+ "scripts": {
22
+ "test": "echo \"Error: run tests from root\" && exit 1"
23
+ },
24
+ "dependencies": {
25
+ "@fluid-topics/ft-button": "^0.0.88",
26
+ "@fluid-topics/ft-select": "^0.0.88",
27
+ "@fluid-topics/ft-text-field": "^0.0.88",
28
+ "@fluid-topics/ft-wc-utils": "^0.0.88",
29
+ "lit": "^2.0.2"
30
+ },
31
+ "gitHead": "220e53dba55dfa1de1560abbc30067555f72198c"
32
+ }