@fluid-topics/ft-tooltip 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,19 @@
1
+ A simple tooltip component
2
+
3
+ ## Install
4
+
5
+ ```shell
6
+ npm install @fluid-topics/ft-tooltip
7
+ yarn add @fluid-topics/ft-tooltip
8
+ ```
9
+
10
+ ## Usage
11
+
12
+ ```typescript
13
+ import { html } from "lit"
14
+ import "@fluid-topics/ft-tooltip"
15
+
16
+ function render() {
17
+ return html` <ft-tooltip text="info!"><span>my text tooltiped</span></ft-tooltip> `
18
+ }
19
+ ```
@@ -0,0 +1,46 @@
1
+ import { PropertyValues } from "lit";
2
+ import { ElementDefinitionsMap, FtLitElement } from "@fluid-topics/ft-wc-utils";
3
+ export interface FtTooltipProperties {
4
+ text: string;
5
+ inline: boolean;
6
+ manual: boolean;
7
+ delay: number;
8
+ position: Position;
9
+ }
10
+ export interface FtTooltipCssVariables {
11
+ "--ft-tooltip-distance"?: string;
12
+ "--ft-tooltip-background-color"?: string;
13
+ "--ft-tooltip-color"?: string;
14
+ "--ft-tooltip-z-index"?: string;
15
+ }
16
+ export declare type Position = "top" | "bottom" | "left" | "right";
17
+ export declare class FtTooltip extends FtLitElement implements FtTooltipProperties {
18
+ static elementDefinitions: ElementDefinitionsMap;
19
+ protected getStyles(): import("lit").CSSResult;
20
+ text: string;
21
+ manual: boolean;
22
+ inline: boolean;
23
+ delay: number;
24
+ position: Position;
25
+ private slotNodes?;
26
+ private container?;
27
+ private target?;
28
+ private tooltip?;
29
+ private tooltipContent?;
30
+ private visible;
31
+ protected getTemplate(): import("lit-html").TemplateResult<1>;
32
+ protected update(props: PropertyValues): void;
33
+ protected contentAvailableCallback(props: PropertyValues): void;
34
+ private hideDebounce;
35
+ show(duration?: number): void;
36
+ hide(): void;
37
+ toggle(): void;
38
+ private get slottedElement();
39
+ private resetTooltipContent;
40
+ private revealDebouncer;
41
+ private positionTooltip;
42
+ private onTouch;
43
+ private onHover;
44
+ private onOut;
45
+ }
46
+ //# sourceMappingURL=ft-tooltip.d.ts.map
@@ -0,0 +1,227 @@
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, query, queryAssignedNodes, state } from "lit/decorators.js";
9
+ import { customElement, Debouncer, FtLitElement } from "@fluid-topics/ft-wc-utils";
10
+ import { FtTypography } from "@fluid-topics/ft-typography";
11
+ let FtTooltip = class FtTooltip extends FtLitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.text = "";
15
+ this.manual = false;
16
+ this.inline = false;
17
+ this.delay = 500;
18
+ this.position = "bottom";
19
+ this.visible = false;
20
+ this.hideDebounce = new Debouncer();
21
+ this.revealDebouncer = new Debouncer();
22
+ }
23
+ // language=CSS
24
+ getStyles() {
25
+ return css `
26
+ .ft-tooltip--container {
27
+ display: block;
28
+ position: relative;
29
+ }
30
+
31
+ .ft-tooltip--inline {
32
+ display: inline-block;
33
+ max-width: 100%;
34
+ }
35
+
36
+ .ft-tooltip {
37
+ position: absolute;
38
+ box-sizing: border-box;
39
+ overflow: hidden;
40
+ width: max-content;
41
+ max-width: 150px;
42
+ text-align: center;
43
+ padding: var(--ft-tooltip-distance, 4px);
44
+ z-index: var(--ft-tooltip-z-index, 1);
45
+ }
46
+
47
+ .ft-tooltip--content {
48
+ padding: 4px 8px;
49
+ border-radius: var(--ft-border-radius-S, 4px);
50
+ background-color: var(--ft-tooltip-background-color, #666666);
51
+ color: var(--ft-tooltip-color, #FFFFFF);
52
+ top: -500px;
53
+ left: -500px;
54
+ position: relative;
55
+ word-break: break-word;
56
+ }
57
+ `;
58
+ }
59
+ getTemplate() {
60
+ return html `
61
+ <div part="container"
62
+ class="ft-tooltip--container ${this.inline ? "ft-tooltip--inline" : ""}"
63
+ @mouseenter=${this.onHover}
64
+ @mouseleave=${this.onOut}
65
+ @focusin=${this.onHover}
66
+ @focusout=${this.onOut}
67
+ @touchstart=${this.onTouch}>
68
+ <div part="tooltip" class="ft-tooltip ft-tooltip--${this.position}" ?hidden=${!this.visible}>
69
+ <div part="tooltip-content" class="ft-tooltip--content">
70
+ <ft-typography variant="caption">${this.text}</ft-typography>
71
+ </div>
72
+ </div>
73
+ <slot></slot>
74
+ </div>
75
+ `;
76
+ }
77
+ update(props) {
78
+ if (props.has("visible") && !this.visible) {
79
+ this.resetTooltipContent();
80
+ }
81
+ super.update(props);
82
+ }
83
+ contentAvailableCallback(props) {
84
+ if (props.has("visible") && this.visible) {
85
+ this.positionTooltip();
86
+ }
87
+ }
88
+ show(duration) {
89
+ this.visible = true;
90
+ if (duration != null) {
91
+ this.hideDebounce.run(() => this.hide(), duration);
92
+ }
93
+ }
94
+ hide() {
95
+ this.visible = false;
96
+ }
97
+ toggle() {
98
+ this.visible = !this.visible;
99
+ }
100
+ get slottedElement() {
101
+ var _a;
102
+ return ((_a = this.slotNodes) !== null && _a !== void 0 ? _a : []).filter(node => node.nodeType == Node.ELEMENT_NODE)[0];
103
+ }
104
+ resetTooltipContent() {
105
+ if (this.tooltip && this.tooltipContent) {
106
+ const style = this.tooltipContent.style;
107
+ style.transition = "none";
108
+ switch (this.position) {
109
+ case "top":
110
+ style.top = this.tooltip.clientHeight + "px";
111
+ style.left = "0";
112
+ break;
113
+ case "bottom":
114
+ style.top = (-this.tooltip.clientHeight) + "px";
115
+ style.left = "0";
116
+ break;
117
+ case "left":
118
+ style.top = "0";
119
+ style.left = this.tooltip.clientWidth + "px";
120
+ break;
121
+ case "right":
122
+ style.top = "0";
123
+ style.left = (-this.tooltip.clientWidth) + "px";
124
+ break;
125
+ }
126
+ }
127
+ }
128
+ positionTooltip() {
129
+ this.resetTooltipContent();
130
+ const target = this.slottedElement;
131
+ if (this.tooltip && target) {
132
+ const box = target.getBoundingClientRect();
133
+ const verticalCenter = (box.height - this.tooltip.clientHeight) / 2;
134
+ const horizontalCenter = (box.width - this.tooltip.clientWidth) / 2;
135
+ const style = this.tooltip.style;
136
+ switch (this.position) {
137
+ case "top":
138
+ style.top = (-this.tooltip.clientHeight) + "px";
139
+ style.left = horizontalCenter + "px";
140
+ break;
141
+ case "bottom":
142
+ style.top = box.height + "px";
143
+ style.left = horizontalCenter + "px";
144
+ break;
145
+ case "left":
146
+ style.top = verticalCenter + "px";
147
+ style.left = (-this.tooltip.clientWidth) + "px";
148
+ break;
149
+ case "right":
150
+ style.top = verticalCenter + "px";
151
+ style.left = box.width + "px";
152
+ break;
153
+ }
154
+ style.maxWidth = Math.max(box.width, 150) + "px";
155
+ }
156
+ this.revealDebouncer.run(() => {
157
+ if (this.tooltipContent) {
158
+ this.tooltipContent.style.transition = "top var(--ft-transition-duration, 250ms), " +
159
+ "left var(--ft-transition-duration, 250ms)";
160
+ this.tooltipContent.style.top = "0";
161
+ this.tooltipContent.style.left = "0";
162
+ }
163
+ }, this.manual ? 0 : this.delay);
164
+ }
165
+ onTouch() {
166
+ if (!this.manual) {
167
+ this.show();
168
+ setTimeout(() => window.addEventListener("touchstart", (e) => {
169
+ if (!e.composedPath().includes(this.container)) {
170
+ this.onOut();
171
+ }
172
+ }, { once: true }), 100);
173
+ }
174
+ }
175
+ onHover() {
176
+ if (!this.manual) {
177
+ this.show();
178
+ }
179
+ }
180
+ onOut() {
181
+ if (!this.manual) {
182
+ this.revealDebouncer.cancel();
183
+ this.hide();
184
+ }
185
+ }
186
+ };
187
+ FtTooltip.elementDefinitions = {
188
+ "ft-typography": FtTypography,
189
+ };
190
+ __decorate([
191
+ property()
192
+ ], FtTooltip.prototype, "text", void 0);
193
+ __decorate([
194
+ property({ type: Boolean })
195
+ ], FtTooltip.prototype, "manual", void 0);
196
+ __decorate([
197
+ property({ type: Boolean })
198
+ ], FtTooltip.prototype, "inline", void 0);
199
+ __decorate([
200
+ property({ type: Number })
201
+ ], FtTooltip.prototype, "delay", void 0);
202
+ __decorate([
203
+ property()
204
+ ], FtTooltip.prototype, "position", void 0);
205
+ __decorate([
206
+ queryAssignedNodes("", true)
207
+ ], FtTooltip.prototype, "slotNodes", void 0);
208
+ __decorate([
209
+ query(".ft-tooltip--container")
210
+ ], FtTooltip.prototype, "container", void 0);
211
+ __decorate([
212
+ query("slot")
213
+ ], FtTooltip.prototype, "target", void 0);
214
+ __decorate([
215
+ query(".ft-tooltip")
216
+ ], FtTooltip.prototype, "tooltip", void 0);
217
+ __decorate([
218
+ query(".ft-tooltip--content")
219
+ ], FtTooltip.prototype, "tooltipContent", void 0);
220
+ __decorate([
221
+ state()
222
+ ], FtTooltip.prototype, "visible", void 0);
223
+ FtTooltip = __decorate([
224
+ customElement("ft-tooltip")
225
+ ], FtTooltip);
226
+ export { FtTooltip };
227
+ //# sourceMappingURL=ft-tooltip.js.map
@@ -0,0 +1,177 @@
1
+ !function(t){
2
+ /**
3
+ * @license
4
+ * Copyright 2019 Google LLC
5
+ * SPDX-License-Identifier: BSD-3-Clause
6
+ */
7
+ const i=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,e=Symbol(),n=new Map;class o{constructor(t,i){if(this._$cssResult$=!0,i!==e)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t}get styleSheet(){let t=n.get(this.cssText);return i&&void 0===t&&(n.set(this.cssText,t=new CSSStyleSheet),t.replaceSync(this.cssText)),t}toString(){return this.cssText}}const r=(t,...i)=>{const n=1===t.length?t[0]:i.reduce(((i,e,n)=>i+(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.")})(e)+t[n+1]),t[0]);return new o(n,e)},s=(t,e)=>{i?t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):e.forEach((i=>{const e=document.createElement("style"),n=window.litNonce;void 0!==n&&e.setAttribute("nonce",n),e.textContent=i.cssText,t.appendChild(e)}))},a=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let i="";for(const e of t.cssRules)i+=e.cssText;return(t=>new o("string"==typeof t?t:t+"",e))(i)})(t):t
8
+ /**
9
+ * @license
10
+ * Copyright 2017 Google LLC
11
+ * SPDX-License-Identifier: BSD-3-Clause
12
+ */;var h;const l=window.trustedTypes,f=l?l.emptyScript:"",p=window.reactiveElementPolyfillSupport,c={toAttribute(t,i){switch(i){case Boolean:t=t?f:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let e=t;switch(i){case Boolean:e=null!==t;break;case Number:e=null===t?null:Number(t);break;case Object:case Array:try{e=JSON.parse(t)}catch(t){e=null}}return e}},u=(t,i)=>i!==t&&(i==i||t==t),v={attribute:!0,type:String,converter:c,reflect:!1,hasChanged:u};class y extends HTMLElement{constructor(){super(),this._$Et=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Ei=null,this.o()}static addInitializer(t){var i;null!==(i=this.l)&&void 0!==i||(this.l=[]),this.l.push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,e)=>{const n=this._$Eh(e,i);void 0!==n&&(this._$Eu.set(n,e),t.push(n))})),t}static createProperty(t,i=v){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const e="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,e,i);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,i,e){return{get(){return this[i]},set(n){const o=this[t];this[i]=n,this.requestUpdate(t,o,e)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||v}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,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const e of i)this.createProperty(e,t[e])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const i=[];if(Array.isArray(t)){const e=new Set(t.flat(1/0).reverse());for(const t of e)i.unshift(a(t))}else void 0!==t&&i.push(a(t));return i}static _$Eh(t,i){const e=i.attribute;return!1===e?void 0:"string"==typeof e?e:"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 i,e;(null!==(i=this._$Eg)&&void 0!==i?i:this._$Eg=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(e=t.hostConnected)||void 0===e||e.call(t))}removeController(t){var i;null===(i=this._$Eg)||void 0===i||i.splice(this._$Eg.indexOf(t)>>>0,1)}_$Em(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Et.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const i=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return s(i,this.constructor.elementStyles),i}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 i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,e){this._$AK(t,e)}_$ES(t,i,e=v){var n,o;const r=this.constructor._$Eh(t,e);if(void 0!==r&&!0===e.reflect){const s=(null!==(o=null===(n=e.converter)||void 0===n?void 0:n.toAttribute)&&void 0!==o?o:c.toAttribute)(i,e.type);this._$Ei=t,null==s?this.removeAttribute(r):this.setAttribute(r,s),this._$Ei=null}}_$AK(t,i){var e,n,o;const r=this.constructor,s=r._$Eu.get(t);if(void 0!==s&&this._$Ei!==s){const t=r.getPropertyOptions(s),a=t.converter,h=null!==(o=null!==(n=null===(e=a)||void 0===e?void 0:e.fromAttribute)&&void 0!==n?n:"function"==typeof a?a:null)&&void 0!==o?o:c.fromAttribute;this._$Ei=s,this[s]=h(i,t.type),this._$Ei=null}}requestUpdate(t,i,e){let n=!0;void 0!==t&&(((e=e||this.constructor.getPropertyOptions(t)).hasChanged||u)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===e.reflect&&this._$Ei!==t&&(void 0===this._$E_&&(this._$E_=new Map),this._$E_.set(t,e))):n=!1),!this.isUpdatePending&&n&&(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,i)=>this[i]=t)),this._$Et=void 0);let i=!1;const e=this._$AL;try{i=this.shouldUpdate(e),i?(this.willUpdate(e),null===(t=this._$Eg)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(e)):this._$EU()}catch(t){throw i=!1,this._$EU(),t}i&&this._$AE(e)}willUpdate(t){}_$AE(t){var i;null===(i=this._$Eg)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.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,i)=>this._$ES(i,this[i],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 d;y.finalized=!0,y.elementProperties=new Map,y.elementStyles=[],y.shadowRootOptions={mode:"open"},null==p||p({ReactiveElement:y}),(null!==(h=globalThis.reactiveElementVersions)&&void 0!==h?h:globalThis.reactiveElementVersions=[]).push("1.2.2");const g=globalThis.trustedTypes,b=g?g.createPolicy("lit-html",{createHTML:t=>t}):void 0,m=`lit$${(Math.random()+"").slice(9)}$`,w="?"+m,x=`<${w}>`,S=document,$=(t="")=>S.createComment(t),O=t=>null===t||"object"!=typeof t&&"function"!=typeof t,k=Array.isArray,E=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,j=/-->/g,C=/>/g,z=/>|[ \n \r](?:([^\s"'>=/]+)([ \n \r]*=[ \n \r]*(?:[^ \n \r"'`<>=]|("|')|))|$)/g,T=/'/g,M=/"/g,A=/^(?:script|style|textarea|title)$/i,R=(t=>(i,...e)=>({_$litType$:t,strings:i,values:e}))(1),_=Symbol.for("lit-noChange"),U=Symbol.for("lit-nothing"),N=new WeakMap,L=S.createTreeWalker(S,129,null,!1),H=(t,i)=>{const e=t.length-1,n=[];let o,r=2===i?"<svg>":"",s=E;for(let i=0;i<e;i++){const e=t[i];let a,h,l=-1,f=0;for(;f<e.length&&(s.lastIndex=f,h=s.exec(e),null!==h);)f=s.lastIndex,s===E?"!--"===h[1]?s=j:void 0!==h[1]?s=C:void 0!==h[2]?(A.test(h[2])&&(o=RegExp("</"+h[2],"g")),s=z):void 0!==h[3]&&(s=z):s===z?">"===h[0]?(s=null!=o?o:E,l=-1):void 0===h[1]?l=-2:(l=s.lastIndex-h[2].length,a=h[1],s=void 0===h[3]?z:'"'===h[3]?M:T):s===M||s===T?s=z:s===j||s===C?s=E:(s=z,o=void 0);const p=s===z&&t[i+1].startsWith("/>")?" ":"";r+=s===E?e+x:l>=0?(n.push(a),e.slice(0,l)+"$lit$"+e.slice(l)+m+p):e+m+(-2===l?(n.push(void 0),i):p)}const a=r+(t[e]||"<?>")+(2===i?"</svg>":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==b?b.createHTML(a):a,n]};class D{constructor({strings:t,_$litType$:i},e){let n;this.parts=[];let o=0,r=0;const s=t.length-1,a=this.parts,[h,l]=H(t,i);if(this.el=D.createElement(h,e),L.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(n=L.nextNode())&&a.length<s;){if(1===n.nodeType){if(n.hasAttributes()){const t=[];for(const i of n.getAttributeNames())if(i.endsWith("$lit$")||i.startsWith(m)){const e=l[r++];if(t.push(i),void 0!==e){const t=n.getAttribute(e.toLowerCase()+"$lit$").split(m),i=/([.?@])?(.*)/.exec(e);a.push({type:1,index:o,name:i[2],strings:t,ctor:"."===i[1]?V:"?"===i[1]?q:"@"===i[1]?J:W})}else a.push({type:6,index:o})}for(const i of t)n.removeAttribute(i)}if(A.test(n.tagName)){const t=n.textContent.split(m),i=t.length-1;if(i>0){n.textContent=g?g.emptyScript:"";for(let e=0;e<i;e++)n.append(t[e],$()),L.nextNode(),a.push({type:2,index:++o});n.append(t[i],$())}}}else if(8===n.nodeType)if(n.data===w)a.push({type:2,index:o});else{let t=-1;for(;-1!==(t=n.data.indexOf(m,t+1));)a.push({type:7,index:o}),t+=m.length-1}o++}}static createElement(t,i){const e=S.createElement("template");return e.innerHTML=t,e}}function F(t,i,e=t,n){var o,r,s,a;if(i===_)return i;let h=void 0!==n?null===(o=e._$Cl)||void 0===o?void 0:o[n]:e._$Cu;const l=O(i)?void 0:i._$litDirective$;return(null==h?void 0:h.constructor)!==l&&(null===(r=null==h?void 0:h._$AO)||void 0===r||r.call(h,!1),void 0===l?h=void 0:(h=new l(t),h._$AT(t,e,n)),void 0!==n?(null!==(s=(a=e)._$Cl)&&void 0!==s?s:a._$Cl=[])[n]=h:e._$Cu=h),void 0!==h&&(i=F(t,h._$AS(t,i.values),h,n)),i}class I{constructor(t,i){this.v=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(t){var i;const{el:{content:e},parts:n}=this._$AD,o=(null!==(i=null==t?void 0:t.creationScope)&&void 0!==i?i:S).importNode(e,!0);L.currentNode=o;let r=L.nextNode(),s=0,a=0,h=n[0];for(;void 0!==h;){if(s===h.index){let i;2===h.type?i=new P(r,r.nextSibling,this,t):1===h.type?i=new h.ctor(r,h.name,h.strings,this,t):6===h.type&&(i=new K(r,this,t)),this.v.push(i),h=n[++a]}s!==(null==h?void 0:h.index)&&(r=L.nextNode(),s++)}return o}m(t){let i=0;for(const e of this.v)void 0!==e&&(void 0!==e.strings?(e._$AI(t,e,i),i+=e.strings.length-2):e._$AI(t[i])),i++}}class P{constructor(t,i,e,n){var o;this.type=2,this._$AH=U,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=e,this.options=n,this._$Cg=null===(o=null==n?void 0:n.isConnected)||void 0===o||o}get _$AU(){var t,i;return null!==(i=null===(t=this._$AM)||void 0===t?void 0:t._$AU)&&void 0!==i?i:this._$Cg}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=F(this,t,i),O(t)?t===U||null==t||""===t?(this._$AH!==U&&this._$AR(),this._$AH=U):t!==this._$AH&&t!==_&&this.$(t):void 0!==t._$litType$?this.T(t):void 0!==t.nodeType?this.S(t):(t=>{var i;return k(t)||"function"==typeof(null===(i=t)||void 0===i?void 0:i[Symbol.iterator])})(t)?this.A(t):this.$(t)}M(t,i=this._$AB){return this._$AA.parentNode.insertBefore(t,i)}S(t){this._$AH!==t&&(this._$AR(),this._$AH=this.M(t))}$(t){this._$AH!==U&&O(this._$AH)?this._$AA.nextSibling.data=t:this.S(S.createTextNode(t)),this._$AH=t}T(t){var i;const{values:e,_$litType$:n}=t,o="number"==typeof n?this._$AC(t):(void 0===n.el&&(n.el=D.createElement(n.h,this.options)),n);if((null===(i=this._$AH)||void 0===i?void 0:i._$AD)===o)this._$AH.m(e);else{const t=new I(o,this),i=t.p(this.options);t.m(e),this.S(i),this._$AH=t}}_$AC(t){let i=N.get(t.strings);return void 0===i&&N.set(t.strings,i=new D(t)),i}A(t){k(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let e,n=0;for(const o of t)n===i.length?i.push(e=new P(this.M($()),this.M($()),this,this.options)):e=i[n],e._$AI(o),n++;n<i.length&&(this._$AR(e&&e._$AB.nextSibling,n),i.length=n)}_$AR(t=this._$AA.nextSibling,i){var e;for(null===(e=this._$AP)||void 0===e||e.call(this,!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){var i;void 0===this._$AM&&(this._$Cg=t,null===(i=this._$AP)||void 0===i||i.call(this,t))}}class W{constructor(t,i,e,n,o){this.type=1,this._$AH=U,this._$AN=void 0,this.element=t,this.name=i,this._$AM=n,this.options=o,e.length>2||""!==e[0]||""!==e[1]?(this._$AH=Array(e.length-1).fill(new String),this.strings=e):this._$AH=U}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,e,n){const o=this.strings;let r=!1;if(void 0===o)t=F(this,t,i,0),r=!O(t)||t!==this._$AH&&t!==_,r&&(this._$AH=t);else{const n=t;let s,a;for(t=o[0],s=0;s<o.length-1;s++)a=F(this,n[e+s],i,s),a===_&&(a=this._$AH[s]),r||(r=!O(a)||a!==this._$AH[s]),a===U?t=U:t!==U&&(t+=(null!=a?a:"")+o[s+1]),this._$AH[s]=a}r&&!n&&this.k(t)}k(t){t===U?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=t?t:"")}}class V extends W{constructor(){super(...arguments),this.type=3}k(t){this.element[this.name]=t===U?void 0:t}}const B=g?g.emptyScript:"";class q extends W{constructor(){super(...arguments),this.type=4}k(t){t&&t!==U?this.element.setAttribute(this.name,B):this.element.removeAttribute(this.name)}}class J extends W{constructor(t,i,e,n,o){super(t,i,e,n,o),this.type=5}_$AI(t,i=this){var e;if((t=null!==(e=F(this,t,i,0))&&void 0!==e?e:U)===_)return;const n=this._$AH,o=t===U&&n!==U||t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive,r=t!==U&&(n===U||o);o&&this.element.removeEventListener(this.name,this,n),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var i,e;"function"==typeof this._$AH?this._$AH.call(null!==(e=null===(i=this.options)||void 0===i?void 0:i.host)&&void 0!==e?e:this.element,t):this._$AH.handleEvent(t)}}class K{constructor(t,i,e){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=e}get _$AU(){return this._$AM._$AU}_$AI(t){F(this,t)}}const Z=window.litHtmlPolyfillSupport;
19
+ /**
20
+ * @license
21
+ * Copyright 2017 Google LLC
22
+ * SPDX-License-Identifier: BSD-3-Clause
23
+ */
24
+ var G,Q;null==Z||Z(D,P),(null!==(d=globalThis.litHtmlVersions)&&void 0!==d?d:globalThis.litHtmlVersions=[]).push("2.1.3");class X extends y{constructor(){super(...arguments),this.renderOptions={host:this},this._$Dt=void 0}createRenderRoot(){var t,i;const e=super.createRenderRoot();return null!==(t=(i=this.renderOptions).renderBefore)&&void 0!==t||(i.renderBefore=e.firstChild),e}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Dt=((t,i,e)=>{var n,o;const r=null!==(n=null==e?void 0:e.renderBefore)&&void 0!==n?n:i;let s=r._$litPart$;if(void 0===s){const t=null!==(o=null==e?void 0:e.renderBefore)&&void 0!==o?o:null;r._$litPart$=s=new P(i.insertBefore($(),t),t,void 0,null!=e?e:{})}return s._$AI(t),s})(i,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 _}}X.finalized=!0,X._$litElement$=!0,null===(G=globalThis.litElementHydrateSupport)||void 0===G||G.call(globalThis,{LitElement:X});const Y=globalThis.litElementPolyfillSupport;null==Y||Y({LitElement:X}),(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 tt=(t,i)=>"method"===i.kind&&i.descriptor&&!("value"in i.descriptor)?{...i,finisher(e){e.createProperty(i.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:i.key,initializer(){"function"==typeof i.initializer&&(this[i.key]=i.initializer.call(this))},finisher(e){e.createProperty(i.key,t)}};function it(t){return(i,e)=>void 0!==e?((t,i,e)=>{i.constructor.createProperty(e,t)})(t,i,e):tt(t,i)
31
+ /**
32
+ * @license
33
+ * Copyright 2017 Google LLC
34
+ * SPDX-License-Identifier: BSD-3-Clause
35
+ */}
36
+ /**
37
+ * @license
38
+ * Copyright 2017 Google LLC
39
+ * SPDX-License-Identifier: BSD-3-Clause
40
+ */
41
+ const et=({finisher:t,descriptor:i})=>(e,n)=>{var o;if(void 0===n){const n=null!==(o=e.originalKey)&&void 0!==o?o:e.key,r=null!=i?{kind:"method",placement:"prototype",key:n,descriptor:i(e.key)}:{...e,key:n};return null!=t&&(r.finisher=function(i){t(i,n)}),r}{const o=e.constructor;void 0!==i&&Object.defineProperty(e,n,i(n)),null==t||t(o,n)}}
42
+ /**
43
+ * @license
44
+ * Copyright 2017 Google LLC
45
+ * SPDX-License-Identifier: BSD-3-Clause
46
+ */;function nt(t,i){return et({descriptor:e=>{const n={get(){var i,e;return null!==(e=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==e?e:null},enumerable:!0,configurable:!0};if(i){const i="symbol"==typeof e?Symbol():"__"+e;n.get=function(){var e,n;return void 0===this[i]&&(this[i]=null!==(n=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==n?n:null),this[i]}}return n}})}
47
+ /**
48
+ * @license
49
+ * Copyright 2021 Google LLC
50
+ * SPDX-License-Identifier: BSD-3-Clause
51
+ */var ot;const rt=null!=(null===(ot=window.HTMLSlotElement)||void 0===ot?void 0:ot.prototype.assignedElements)?(t,i)=>t.assignedElements(i):(t,i)=>t.assignedNodes(i).filter((t=>t.nodeType===Node.ELEMENT_NODE));(function(){function t(t){var i=0;return function(){return i<t.length?{done:!1,value:t[i++]}:{done:!0}}}function i(i){var e="undefined"!=typeof Symbol&&Symbol.iterator&&i[Symbol.iterator];return e?e.call(i):{next:t(i)}}function e(t){if(!(t instanceof Array)){t=i(t);for(var e,n=[];!(e=t.next()).done;)n.push(e.value);t=n}return t}var n="function"==typeof Object.create?Object.create:function(t){function i(){}return i.prototype=t,new i};var o,r=function(t){t=["object"==typeof globalThis&&globalThis,t,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var i=0;i<t.length;++i){var e=t[i];if(e&&e.Math==Math)return e}throw Error("Cannot find global object")}(this),s=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(i,e,n){return i=t(i,e),n&&Reflect.setPrototypeOf(i,n.prototype),i}}return function(t,i,e){return void 0===e&&(e=t),e=n(e.prototype||Object.prototype),Function.prototype.apply.call(t,e,i)||e}}();if("function"==typeof Object.setPrototypeOf)o=Object.setPrototypeOf;else{var a;t:{var h={};try{h.__proto__={a:!0},a=h.a;break t}catch(t){}a=!1}o=a?function(t,i){if(t.__proto__=i,t.__proto__!==i)throw new TypeError(t+" is not extensible");return t}:null}var l=o;if(!ShadowRoot.prototype.createElement){var f,p=window.HTMLElement,c=window.customElements.define,u=window.customElements.get,v=window.customElements,y=new WeakMap,d=new WeakMap,g=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,e){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(e))throw new DOMException("Failed to execute 'define' on 'CustomElementRegistry': this constructor has already been used with this registry");var n=e.prototype.attributeChangedCallback,o=new Set(e.observedAttributes||[]);if(w(e,o,n),n={g:e,connectedCallback:e.prototype.connectedCallback,disconnectedCallback:e.prototype.disconnectedCallback,adoptedCallback:e.prototype.adoptedCallback,attributeChangedCallback:n,formAssociated:e.formAssociated,formAssociatedCallback:e.prototype.formAssociatedCallback,formDisabledCallback:e.prototype.formDisabledCallback,formResetCallback:e.prototype.formResetCallback,formStateRestoreCallback:e.prototype.formStateRestoreCallback,observedAttributes:o},this.l.set(t,n),this.o.set(e,n),(o=u.call(v,t))||(o=m(t),c.call(v,t,o)),this===window.customElements&&(g.set(e,n),n.s=o),o=this.h.get(t)){this.h.delete(t);for(var r=(o=i(o)).next();!r.done;r=o.next())r=r.value,d.delete(r),S(r,n,!0)}return void 0!==(n=this.i.get(t))&&(n.resolve(e),this.i.delete(t)),e},window.CustomElementRegistry.prototype.upgrade=function(){O.push(this),v.upgrade.apply(v,arguments),O.pop()},window.CustomElementRegistry.prototype.get=function(t){var i;return null==(i=this.l.get(t))?void 0:i.g},window.CustomElementRegistry.prototype.j=function(t){return this.l.get(t)},window.CustomElementRegistry.prototype.whenDefined=function(t){var i=this.j(t);if(void 0!==i)return Promise.resolve(i.g);var e=this.i.get(t);return void 0===e&&((e={}).promise=new Promise((function(t){return e.resolve=t})),this.i.set(t,e)),e.promise},window.CustomElementRegistry.prototype.m=function(t,i,e){var n=this.h.get(i);n||this.h.set(i,n=new Set),e?n.add(t):n.delete(t)},window.HTMLElement=function(){var t=f;if(t)return f=void 0,t;var i=g.get(this.constructor);if(!i)throw new TypeError("Illegal constructor (custom element class must be registered with global customElements registry to be newable)");return t=Reflect.construct(p,[],i.s),Object.setPrototypeOf(t,this.constructor.prototype),y.set(t,i),t},window.HTMLElement.prototype=p.prototype;var m=function(t){function i(){var i=Reflect.construct(p,[],this.constructor);Object.setPrototypeOf(i,HTMLElement.prototype);t:{var e=i.getRootNode();if(!(e===document||e instanceof ShadowRoot)){if((e=O[O.length-1])instanceof CustomElementRegistry){var n=e;break t}(e=e.getRootNode())===document||e instanceof ShadowRoot||(e=(null==(n=b.get(e))?void 0:n.getRootNode())||document)}n=e.customElements}return(e=(n=n||window.customElements).j(t))?S(i,e):d.set(i,n),i}return r.Object.defineProperty(i,"formAssociated",{configurable:!0,enumerable:!0,get:function(){return!0}}),i.prototype.connectedCallback=function(){var i=y.get(this);i?i.connectedCallback&&i.connectedCallback.apply(this,arguments):d.get(this).m(this,t,!0)},i.prototype.disconnectedCallback=function(){var i=y.get(this);i?i.disconnectedCallback&&i.disconnectedCallback.apply(this,arguments):d.get(this).m(this,t,!1)},i.prototype.adoptedCallback=function(){var t,i;null==(t=y.get(this))||null==(i=t.adoptedCallback)||i.apply(this,arguments)},i.prototype.formAssociatedCallback=function(){var t,i=y.get(this);i&&i.formAssociated&&(null==i||null==(t=i.formAssociatedCallback)||t.apply(this,arguments))},i.prototype.formDisabledCallback=function(){var t,i=y.get(this);null!=i&&i.formAssociated&&(null==i||null==(t=i.formDisabledCallback)||t.apply(this,arguments))},i.prototype.formResetCallback=function(){var t,i=y.get(this);null!=i&&i.formAssociated&&(null==i||null==(t=i.formResetCallback)||t.apply(this,arguments))},i.prototype.formStateRestoreCallback=function(){var t,i=y.get(this);null!=i&&i.formAssociated&&(null==i||null==(t=i.formStateRestoreCallback)||t.apply(this,arguments))},i},w=function(t,i,e){if(0!==i.size&&void 0!==e){var n=t.prototype.setAttribute;n&&(t.prototype.setAttribute=function(t,o){if(t=t.toLowerCase(),i.has(t)){var r=this.getAttribute(t);n.call(this,t,o),e.call(this,t,r,o)}else n.call(this,t,o)});var o=t.prototype.removeAttribute;o&&(t.prototype.removeAttribute=function(t){if(t=t.toLowerCase(),i.has(t)){var n=this.getAttribute(t);o.call(this,t),e.call(this,t,n,null)}else o.call(this,t)})}},x=function(t){var i=Object.getPrototypeOf(t);if(i!==window.HTMLElement)return i===p?Object.setPrototypeOf(t,window.HTMLElement):x(i)},S=function(t,i,e){e=void 0!==e&&e,Object.setPrototypeOf(t,i.g.prototype),y.set(t,i),f=t;try{new i.g}catch(t){x(i.g),new i.g}i.observedAttributes.forEach((function(e){t.hasAttribute(e)&&i.attributeChangedCallback.call(t,e,null,t.getAttribute(e))})),e&&i.connectedCallback&&t.isConnected&&i.connectedCallback.call(t)},$=Element.prototype.attachShadow;Element.prototype.attachShadow=function(t){var i=$.apply(this,arguments);return t.customElements&&(i.customElements=t.customElements),i};var O=[document],k=function(t,i,e){var n=(e?Object.getPrototypeOf(e):t.prototype)[i];t.prototype[i]=function(){O.push(this);var t=n.apply(e||this,arguments);return void 0!==t&&b.set(t,this),O.pop(),t}};k(ShadowRoot,"createElement",document),k(ShadowRoot,"importNode",document),k(Element,"insertAdjacentHTML");var E=function(t){var i=Object.getOwnPropertyDescriptor(t.prototype,"innerHTML");Object.defineProperty(t.prototype,"innerHTML",Object.assign({},i,{set:function(t){O.push(this),i.set.call(this,t),O.pop()}}))};if(E(Element),E(ShadowRoot),Object.defineProperty(window,"customElements",{value:new CustomElementRegistry,configurable:!0,writable:!0}),window.ElementInternals&&window.ElementInternals.prototype.setFormValue){var j=new WeakMap,C=HTMLElement.prototype.attachInternals;HTMLElement.prototype.attachInternals=function(t){for(var i=[],n=0;n<arguments.length;++n)i[n]=arguments[n];return i=C.call.apply(C,[this].concat(e(i))),j.set(i,this),i},["setFormValue","setValidity","checkValidity","reportValidity"].forEach((function(t){var i=window.ElementInternals.prototype,n=i[t];i[t]=function(t){for(var i=[],o=0;o<arguments.length;++o)i[o]=arguments[o];if(o=j.get(this),!0!==y.get(o).formAssociated)throw new DOMException("Failed to execute "+n+" on 'ElementInternals': The target element is not a form-associated custom element.");null==n||n.call.apply(n,[this].concat(e(i)))}}));var z=function(t){var i=s(Array,[].concat(e(t)),this.constructor);return i.h=t,i},T=z,M=Array;if(T.prototype=n(M.prototype),T.prototype.constructor=T,l)l(T,M);else for(var A in M)if("prototype"!=A)if(Object.defineProperties){var R=Object.getOwnPropertyDescriptor(M,A);R&&Object.defineProperty(T,A,R)}else T[A]=M[A];T.u=M.prototype,r.Object.defineProperty(z.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 _=function(t){var i=this,e=new Map;t.forEach((function(t,n){var o=t.getAttribute("name"),r=e.get(o)||[];i[+n]=t,r.push(t),e.set(o,r)})),this.length=t.length,e.forEach((function(t,e){t&&(i[e]=1===t.length?t[0]:new z(t))}))};_.prototype.namedItem=function(t){return this[t]};var U=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"elements");Object.defineProperty(HTMLFormElement.prototype,"elements",{get:function(){for(var t=U.get.call(this,[]),e=[],n=(t=i(t)).next();!n.done;n=t.next()){n=n.value;var o=y.get(n);o&&!0!==o.formAssociated||e.push(n)}return new _(e)}})}}}).call(self);try{window.customElements.define("custom-element",null)}catch(ft){const t=window.customElements.define;window.customElements.define=(i,e,n)=>{try{t.bind(window.customElements)(i,e,n)}catch(t){console.warn(i,e,n,t)}}}class st{constructor(t=0){this.timeout=t,this.callbacks=[]}run(t,i){this.callbacks=[t],this.debounce(i)}queue(t,i){this.callbacks.push(t),this.debounce(i)}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 at=t=>i=>{window.customElements.get(t)||window.customElements.define(t,i)}
52
+ /**
53
+ * @license
54
+ * Copyright 2021 Google LLC
55
+ * SPDX-License-Identifier: BSD-3-Clause
56
+ */;class ht extends(function(t){return class extends t{createRenderRoot(){const t=this.constructor,{registry:i,elementDefinitions:e,shadowRootOptions:n}=t;e&&!i&&(t.registry=new CustomElementRegistry,Object.entries(e).forEach((([i,e])=>t.registry.define(i,e))));const o=this.renderOptions.creationScope=this.attachShadow({...n,customElements:t.registry});return s(o,this.constructor.elementStyles),o}}}(X)){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){}}
57
+ /**
58
+ * @license
59
+ * Copyright 2017 Google LLC
60
+ * SPDX-License-Identifier: BSD-3-Clause
61
+ */const lt=2;
62
+ /**
63
+ * @license
64
+ * Copyright 2017 Google LLC
65
+ * SPDX-License-Identifier: BSD-3-Clause
66
+ */
67
+ class ft extends class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,i,e){this._$Ct=t,this._$AM=i,this._$Ci=e}_$AS(t,i){return this.update(t,i)}update(t,i){return this.render(...i)}}{constructor(t){if(super(t),this.it=U,t.type!==lt)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===U||null==t)return this.vt=void 0,this.it=t;if(t===_)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 i=[t];return i.raw=i,this.vt={_$litType$:this.constructor.resultType,strings:i,values:[]}}}var pt,ct;ft.directiveName="unsafeHTML",ft.resultType=1,navigator.vendor&&navigator.vendor.match(/apple/i)||(null===(ct=null===(pt=window.safari)||void 0===pt?void 0:pt.pushNotification)||void 0===ct||ct.toString());
68
+ /**
69
+ * @license
70
+ * Copyright 2020 Google LLC
71
+ * SPDX-License-Identifier: BSD-3-Clause
72
+ */
73
+ const ut=t=>({_$litStatic$:t}),vt=new Map,yt=(t=>(i,...e)=>{var n;const o=e.length;let r,s;const a=[],h=[];let l,f=0,p=!1;for(;f<o;){for(l=i[f];f<o&&void 0!==(s=e[f],r=null===(n=s)||void 0===n?void 0:n._$litStatic$);)l+=r+i[++f],p=!0;h.push(s),a.push(l),f++}if(f===o&&a.push(i[o]),p){const t=a.join("$$lit$$");void 0===(i=vt.get(t))&&(a.raw=a,vt.set(t,i=a)),e=h}return t(i,...e)})(R);var dt,gt=function(t,i,e,n){for(var o,r=arguments.length,s=r<3?i:null===n?n=Object.getOwnPropertyDescriptor(i,e):n,a=t.length-1;a>=0;a--)(o=t[a])&&(s=(r<3?o(s):r>3?o(i,e,s):o(i,e))||s);return r>3&&s&&Object.defineProperty(i,e,s),s};!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"}(dt||(dt={}));const bt=r`
74
+ .ft-typography--title {
75
+ font-family: var(--ft-typography-title-font-family, var(--ft-typography-font-family, var(--ft-title-font, Ubuntu))), system-ui, sans-serif;
76
+ font-size: var(--ft-typography-title-font-size, var(--ft-typography-font-size, 20px));
77
+ font-weight: var(--ft-typography-title-font-weight, var(--ft-typography-font-weight, normal));
78
+ letter-spacing: var(--ft-typography-title-letter-spacing, var(--ft-typography-letter-spacing, 0.15px));
79
+ line-height: var(--ft-typography-title-line-height, var(--ft-typography-line-height, 24px));
80
+ text-transform: var(--ft-typography-title-text-transform, var(--ft-typography-text-transform, inherit));
81
+ }
82
+ `,mt=r`
83
+ .ft-typography--title-dense {
84
+ font-family: var(--ft-typography-title-dense-font-family, var(--ft-typography-font-family, var(--ft-title-font, Ubuntu))), system-ui, sans-serif;
85
+ font-size: var(--ft-typography-title-dense-font-size, var(--ft-typography-font-size, 14px));
86
+ font-weight: var(--ft-typography-title-dense-font-weight, var(--ft-typography-font-weight, normal));
87
+ letter-spacing: var(--ft-typography-title-dense-letter-spacing, var(--ft-typography-letter-spacing, 0.105px));
88
+ line-height: var(--ft-typography-title-dense-line-height, var(--ft-typography-line-height, 24px));
89
+ text-transform: var(--ft-typography-title-dense-text-transform, var(--ft-typography-text-transform, inherit));
90
+ }
91
+ `,wt=r`
92
+ .ft-typography--subtitle1 {
93
+ font-family: var(--ft-typography-subtitle1-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
94
+ font-size: var(--ft-typography-subtitle1-font-size, var(--ft-typography-font-size, 16px));
95
+ font-weight: var(--ft-typography-subtitle1-font-weight, var(--ft-typography-font-weight, 600));
96
+ letter-spacing: var(--ft-typography-subtitle1-letter-spacing, var(--ft-typography-letter-spacing, 0.144px));
97
+ line-height: var(--ft-typography-subtitle1-line-height, var(--ft-typography-line-height, 24px));
98
+ text-transform: var(--ft-typography-subtitle1-text-transform, var(--ft-typography-text-transform, inherit));
99
+ }
100
+ `,xt=r`
101
+ .ft-typography--subtitle2 {
102
+ font-family: var(--ft-typography-subtitle2-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
103
+ font-size: var(--ft-typography-subtitle2-font-size, var(--ft-typography-font-size, 14px));
104
+ font-weight: var(--ft-typography-subtitle2-font-weight, var(--ft-typography-font-weight, normal));
105
+ letter-spacing: var(--ft-typography-subtitle2-letter-spacing, var(--ft-typography-letter-spacing, 0.098px));
106
+ line-height: var(--ft-typography-subtitle2-line-height, var(--ft-typography-line-height, 24px));
107
+ text-transform: var(--ft-typography-subtitle2-text-transform, var(--ft-typography-text-transform, inherit));
108
+ }
109
+
110
+ `,St=r`
111
+ .ft-typography--body1 {
112
+ font-family: var(--ft-typography-body1-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
113
+ font-size: var(--ft-typography-body1-font-size, var(--ft-typography-font-size, 16px));
114
+ font-weight: var(--ft-typography-body1-font-weight, var(--ft-typography-font-weight, normal));
115
+ letter-spacing: var(--ft-typography-body1-letter-spacing, var(--ft-typography-letter-spacing, 0.496px));
116
+ line-height: var(--ft-typography-body1-line-height, var(--ft-typography-line-height, 24px));
117
+ text-transform: var(--ft-typography-body1-text-transform, var(--ft-typography-text-transform, inherit));
118
+ }
119
+ `,$t=r`
120
+ .ft-typography--body2 {
121
+ font-family: var(--ft-typography-body2-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
122
+ font-size: var(--ft-typography-body2-font-size, var(--ft-typography-font-size, 14px));
123
+ font-weight: var(--ft-typography-body2-font-weight, var(--ft-typography-font-weight, normal));
124
+ letter-spacing: var(--ft-typography-body2-letter-spacing, var(--ft-typography-letter-spacing, 0.252px));
125
+ line-height: var(--ft-typography-body2-line-height, var(--ft-typography-line-height, 20px));
126
+ text-transform: var(--ft-typography-body2-text-transform, var(--ft-typography-text-transform, inherit));
127
+ }
128
+ `,Ot=r`
129
+ .ft-typography--caption {
130
+ font-family: var(--ft-typography-caption-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
131
+ font-size: var(--ft-typography-caption-font-size, var(--ft-typography-font-size, 12px));
132
+ font-weight: var(--ft-typography-caption-font-weight, var(--ft-typography-font-weight, normal));
133
+ letter-spacing: var(--ft-typography-caption-letter-spacing, var(--ft-typography-letter-spacing, 0.396px));
134
+ line-height: var(--ft-typography-caption-line-height, var(--ft-typography-line-height, 16px));
135
+ text-transform: var(--ft-typography-caption-text-transform, var(--ft-typography-text-transform, inherit));
136
+ }
137
+ `,kt=r`
138
+ .ft-typography--breadcrumb {
139
+ font-family: var(--ft-typography-breadcrumb-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
140
+ font-size: var(--ft-typography-breadcrumb-font-size, var(--ft-typography-font-size, 10px));
141
+ font-weight: var(--ft-typography-breadcrumb-font-weight, var(--ft-typography-font-weight, normal));
142
+ letter-spacing: var(--ft-typography-breadcrumb-letter-spacing, var(--ft-typography-letter-spacing, 0.33px));
143
+ line-height: var(--ft-typography-breadcrumb-line-height, var(--ft-typography-line-height, 16px));
144
+ text-transform: var(--ft-typography-breadcrumb-text-transform, var(--ft-typography-text-transform, inherit));
145
+ }
146
+ `,Et=r`
147
+ .ft-typography--overline {
148
+ font-family: var(--ft-typography-overline-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
149
+ font-size: var(--ft-typography-overline-font-size, var(--ft-typography-font-size, 10px));
150
+ font-weight: var(--ft-typography-overline-font-weight, var(--ft-typography-font-weight, normal));
151
+ letter-spacing: var(--ft-typography-overline-letter-spacing, var(--ft-typography-letter-spacing, 1.5px));
152
+ line-height: var(--ft-typography-overline-line-height, var(--ft-typography-line-height, 16px));
153
+ text-transform: var(--ft-typography-overline-text-transform, var(--ft-typography-text-transform, uppercase));
154
+ }
155
+ `,jt=r`
156
+ .ft-typography--button {
157
+ font-family: var(--ft-typography-button-font-family, var(--ft-typography-font-family, var(--ft-content-font, 'Open Sans'))), system-ui, sans-serif;
158
+ font-size: var(--ft-typography-button-font-size, var(--ft-typography-font-size, 14px));
159
+ font-weight: var(--ft-typography-button-font-weight, var(--ft-typography-font-weight, 600));
160
+ letter-spacing: var(--ft-typography-button-letter-spacing, var(--ft-typography-letter-spacing, 1.246px));
161
+ line-height: var(--ft-typography-button-line-height, var(--ft-typography-line-height, 16px));
162
+ text-transform: var(--ft-typography-button-text-transform, var(--ft-typography-text-transform, uppercase));
163
+ }
164
+ `;let Ct=class extends ht{constructor(){super(...arguments),this.variant=dt.body1}getStyles(){return[bt,mt,wt,xt,St,$t,Ot,kt,Et,jt]}getTemplate(){return this.element?yt`
165
+ <${ut(this.element)}
166
+ class="ft-typography ft-typography--${this.variant}">
167
+ <slot></slot>
168
+ </${ut(this.element)}>
169
+ `:yt`
170
+ <slot class="ft-typography ft-typography--${this.variant}"></slot>
171
+ `}};gt([it()],Ct.prototype,"element",void 0),gt([it()],Ct.prototype,"variant",void 0),Ct=gt([at("ft-typography")],Ct);var zt=function(t,i,e,n){for(var o,r=arguments.length,s=r<3?i:null===n?n=Object.getOwnPropertyDescriptor(i,e):n,a=t.length-1;a>=0;a--)(o=t[a])&&(s=(r<3?o(s):r>3?o(i,e,s):o(i,e))||s);return r>3&&s&&Object.defineProperty(i,e,s),s};t.FtTooltip=class extends ht{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 r`.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 i=t.getBoundingClientRect(),e=(i.height-this.tooltip.clientHeight)/2,n=(i.width-this.tooltip.clientWidth)/2,o=this.tooltip.style;switch(this.position){case"top":o.top=-this.tooltip.clientHeight+"px",o.left=n+"px";break;case"bottom":o.top=i.height+"px",o.left=n+"px";break;case"left":o.top=e+"px",o.left=-this.tooltip.clientWidth+"px";break;case"right":o.top=e+"px",o.left=i.width+"px"}o.maxWidth=Math.max(i.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())}},t.FtTooltip.elementDefinitions={"ft-typography":Ct},zt([it()],t.FtTooltip.prototype,"text",void 0),zt([it({type:Boolean})],t.FtTooltip.prototype,"manual",void 0),zt([it({type:Boolean})],t.FtTooltip.prototype,"inline",void 0),zt([it({type:Number})],t.FtTooltip.prototype,"delay",void 0),zt([it()],t.FtTooltip.prototype,"position",void 0),zt([
172
+ /**
173
+ * @license
174
+ * Copyright 2017 Google LLC
175
+ * SPDX-License-Identifier: BSD-3-Clause
176
+ */
177
+ function(t,i,e){let n,o=t;return"object"==typeof t?(o=t.slot,n=t):n={flatten:i},e?function(t){const{slot:i,selector:e}=null!=t?t:{};return et({descriptor:n=>({get(){var n;const o="slot"+(i?`[name=${i}]`:":not([name])"),r=null===(n=this.renderRoot)||void 0===n?void 0:n.querySelector(o),s=null!=r?rt(r,t):[];return e?s.filter((t=>t.matches(e))):s},enumerable:!0,configurable:!0})})}({slot:o,flatten:i,selector:e}):et({descriptor:t=>({get(){var t,i;const e="slot"+(o?`[name=${o}]`:":not([name])"),r=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(e);return null!==(i=null==r?void 0:r.assignedNodes(n))&&void 0!==i?i:[]},enumerable:!0,configurable:!0})})}("",!0)],t.FtTooltip.prototype,"slotNodes",void 0),zt([nt(".ft-tooltip--container")],t.FtTooltip.prototype,"container",void 0),zt([nt("slot")],t.FtTooltip.prototype,"target",void 0),zt([nt(".ft-tooltip")],t.FtTooltip.prototype,"tooltip",void 0),zt([nt(".ft-tooltip--content")],t.FtTooltip.prototype,"tooltipContent",void 0),zt([function(t){return it({...t,state:!0})}()],t.FtTooltip.prototype,"visible",void 0),t.FtTooltip=zt([at("ft-tooltip")],t.FtTooltip),Object.defineProperty(t,"t",{value:!0})}({});
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@fluid-topics/ft-tooltip",
3
+ "version": "0.0.88",
4
+ "description": "A simple tooltip component",
5
+ "keywords": [
6
+ "Lit"
7
+ ],
8
+ "author": "Fluid Topics <devtopics@antidot.net>",
9
+ "license": "ISC",
10
+ "main": "build/ft-tooltip.js",
11
+ "web": "build/ft-tooltip.min.js",
12
+ "typings": "build/ft-tooltip",
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
+ "dependencies": {
22
+ "@fluid-topics/ft-typography": "^0.0.88",
23
+ "@fluid-topics/ft-wc-utils": "^0.0.88",
24
+ "lit": "^2.0.2"
25
+ },
26
+ "gitHead": "220e53dba55dfa1de1560abbc30067555f72198c"
27
+ }