Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
quarto-dev
GitHub Repository: quarto-dev/quarto-cli
Path: blob/main/src/resources/formats/html/bslib/components/dist/web-components.js
12924 views
1
/*! bslib 0.5.1.9000 | (c) 2012-2023 RStudio, PBC. | License: MIT + file LICENSE */
2
"use strict";
3
(() => {
4
var __defProp = Object.defineProperty;
5
var __defProps = Object.defineProperties;
6
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
var __hasOwnProp = Object.prototype.hasOwnProperty;
10
var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
var __spreadValues = (a3, b2) => {
13
for (var prop in b2 || (b2 = {}))
14
if (__hasOwnProp.call(b2, prop))
15
__defNormalProp(a3, prop, b2[prop]);
16
if (__getOwnPropSymbols)
17
for (var prop of __getOwnPropSymbols(b2)) {
18
if (__propIsEnum.call(b2, prop))
19
__defNormalProp(a3, prop, b2[prop]);
20
}
21
return a3;
22
};
23
var __spreadProps = (a3, b2) => __defProps(a3, __getOwnPropDescs(b2));
24
var __decorateClass = (decorators, target, key, kind) => {
25
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
26
for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)
27
if (decorator = decorators[i4])
28
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
29
if (kind && result)
30
__defProp(target, key, result);
31
return result;
32
};
33
var __async = (__this, __arguments, generator) => {
34
return new Promise((resolve, reject) => {
35
var fulfilled = (value) => {
36
try {
37
step(generator.next(value));
38
} catch (e6) {
39
reject(e6);
40
}
41
};
42
var rejected = (value) => {
43
try {
44
step(generator.throw(value));
45
} catch (e6) {
46
reject(e6);
47
}
48
};
49
var step = (x2) => x2.done ? resolve(x2.value) : Promise.resolve(x2.value).then(fulfilled, rejected);
50
step((generator = generator.apply(__this, __arguments)).next());
51
});
52
};
53
54
// node_modules/@lit/reactive-element/decorators/property.js
55
var i = (i4, e6) => "method" === e6.kind && e6.descriptor && !("value" in e6.descriptor) ? __spreadProps(__spreadValues({}, e6), { finisher(n7) {
56
n7.createProperty(e6.key, i4);
57
} }) : { kind: "field", key: Symbol(), placement: "own", descriptor: {}, originalKey: e6.key, initializer() {
58
"function" == typeof e6.initializer && (this[e6.key] = e6.initializer.call(this));
59
}, finisher(n7) {
60
n7.createProperty(e6.key, i4);
61
} };
62
var e = (i4, e6, n7) => {
63
e6.constructor.createProperty(n7, i4);
64
};
65
function n(n7) {
66
return (t3, o6) => void 0 !== o6 ? e(n7, t3, o6) : i(n7, t3);
67
}
68
69
// node_modules/@lit/reactive-element/decorators/query-assigned-elements.js
70
var n2;
71
var e2 = null != (null === (n2 = window.HTMLSlotElement) || void 0 === n2 ? void 0 : n2.prototype.assignedElements) ? (o6, n7) => o6.assignedElements(n7) : (o6, n7) => o6.assignedNodes(n7).filter((o7) => o7.nodeType === Node.ELEMENT_NODE);
72
73
// node_modules/@lit/reactive-element/css-tag.js
74
var t = window;
75
var e3 = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype;
76
var s = Symbol();
77
var n3 = /* @__PURE__ */ new WeakMap();
78
var o2 = class {
79
constructor(t3, e6, n7) {
80
if (this._$cssResult$ = true, n7 !== s)
81
throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
82
this.cssText = t3, this.t = e6;
83
}
84
get styleSheet() {
85
let t3 = this.o;
86
const s5 = this.t;
87
if (e3 && void 0 === t3) {
88
const e6 = void 0 !== s5 && 1 === s5.length;
89
e6 && (t3 = n3.get(s5)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e6 && n3.set(s5, t3));
90
}
91
return t3;
92
}
93
toString() {
94
return this.cssText;
95
}
96
};
97
var r = (t3) => new o2("string" == typeof t3 ? t3 : t3 + "", void 0, s);
98
var i2 = (t3, ...e6) => {
99
const n7 = 1 === t3.length ? t3[0] : e6.reduce((e7, s5, n8) => e7 + ((t4) => {
100
if (true === t4._$cssResult$)
101
return t4.cssText;
102
if ("number" == typeof t4)
103
return t4;
104
throw Error("Value passed to 'css' function must be a 'css' function result: " + t4 + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
105
})(s5) + t3[n8 + 1], t3[0]);
106
return new o2(n7, t3, s);
107
};
108
var S = (s5, n7) => {
109
e3 ? s5.adoptedStyleSheets = n7.map((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet) : n7.forEach((e6) => {
110
const n8 = document.createElement("style"), o6 = t.litNonce;
111
void 0 !== o6 && n8.setAttribute("nonce", o6), n8.textContent = e6.cssText, s5.appendChild(n8);
112
});
113
};
114
var c = e3 ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {
115
let e6 = "";
116
for (const s5 of t4.cssRules)
117
e6 += s5.cssText;
118
return r(e6);
119
})(t3) : t3;
120
121
// node_modules/@lit/reactive-element/reactive-element.js
122
var s2;
123
var e4 = window;
124
var r2 = e4.trustedTypes;
125
var h = r2 ? r2.emptyScript : "";
126
var o3 = e4.reactiveElementPolyfillSupport;
127
var n4 = { toAttribute(t3, i4) {
128
switch (i4) {
129
case Boolean:
130
t3 = t3 ? h : null;
131
break;
132
case Object:
133
case Array:
134
t3 = null == t3 ? t3 : JSON.stringify(t3);
135
}
136
return t3;
137
}, fromAttribute(t3, i4) {
138
let s5 = t3;
139
switch (i4) {
140
case Boolean:
141
s5 = null !== t3;
142
break;
143
case Number:
144
s5 = null === t3 ? null : Number(t3);
145
break;
146
case Object:
147
case Array:
148
try {
149
s5 = JSON.parse(t3);
150
} catch (t4) {
151
s5 = null;
152
}
153
}
154
return s5;
155
} };
156
var a = (t3, i4) => i4 !== t3 && (i4 == i4 || t3 == t3);
157
var l2 = { attribute: true, type: String, converter: n4, reflect: false, hasChanged: a };
158
var d = "finalized";
159
var u = class extends HTMLElement {
160
constructor() {
161
super(), this._$Ei = /* @__PURE__ */ new Map(), this.isUpdatePending = false, this.hasUpdated = false, this._$El = null, this.u();
162
}
163
static addInitializer(t3) {
164
var i4;
165
this.finalize(), (null !== (i4 = this.h) && void 0 !== i4 ? i4 : this.h = []).push(t3);
166
}
167
static get observedAttributes() {
168
this.finalize();
169
const t3 = [];
170
return this.elementProperties.forEach((i4, s5) => {
171
const e6 = this._$Ep(s5, i4);
172
void 0 !== e6 && (this._$Ev.set(e6, s5), t3.push(e6));
173
}), t3;
174
}
175
static createProperty(t3, i4 = l2) {
176
if (i4.state && (i4.attribute = false), this.finalize(), this.elementProperties.set(t3, i4), !i4.noAccessor && !this.prototype.hasOwnProperty(t3)) {
177
const s5 = "symbol" == typeof t3 ? Symbol() : "__" + t3, e6 = this.getPropertyDescriptor(t3, s5, i4);
178
void 0 !== e6 && Object.defineProperty(this.prototype, t3, e6);
179
}
180
}
181
static getPropertyDescriptor(t3, i4, s5) {
182
return { get() {
183
return this[i4];
184
}, set(e6) {
185
const r4 = this[t3];
186
this[i4] = e6, this.requestUpdate(t3, r4, s5);
187
}, configurable: true, enumerable: true };
188
}
189
static getPropertyOptions(t3) {
190
return this.elementProperties.get(t3) || l2;
191
}
192
static finalize() {
193
if (this.hasOwnProperty(d))
194
return false;
195
this[d] = true;
196
const t3 = Object.getPrototypeOf(this);
197
if (t3.finalize(), void 0 !== t3.h && (this.h = [...t3.h]), this.elementProperties = new Map(t3.elementProperties), this._$Ev = /* @__PURE__ */ new Map(), this.hasOwnProperty("properties")) {
198
const t4 = this.properties, i4 = [...Object.getOwnPropertyNames(t4), ...Object.getOwnPropertySymbols(t4)];
199
for (const s5 of i4)
200
this.createProperty(s5, t4[s5]);
201
}
202
return this.elementStyles = this.finalizeStyles(this.styles), true;
203
}
204
static finalizeStyles(i4) {
205
const s5 = [];
206
if (Array.isArray(i4)) {
207
const e6 = new Set(i4.flat(1 / 0).reverse());
208
for (const i5 of e6)
209
s5.unshift(c(i5));
210
} else
211
void 0 !== i4 && s5.push(c(i4));
212
return s5;
213
}
214
static _$Ep(t3, i4) {
215
const s5 = i4.attribute;
216
return false === s5 ? void 0 : "string" == typeof s5 ? s5 : "string" == typeof t3 ? t3.toLowerCase() : void 0;
217
}
218
u() {
219
var t3;
220
this._$E_ = new Promise((t4) => this.enableUpdating = t4), this._$AL = /* @__PURE__ */ new Map(), this._$Eg(), this.requestUpdate(), null === (t3 = this.constructor.h) || void 0 === t3 || t3.forEach((t4) => t4(this));
221
}
222
addController(t3) {
223
var i4, s5;
224
(null !== (i4 = this._$ES) && void 0 !== i4 ? i4 : this._$ES = []).push(t3), void 0 !== this.renderRoot && this.isConnected && (null === (s5 = t3.hostConnected) || void 0 === s5 || s5.call(t3));
225
}
226
removeController(t3) {
227
var i4;
228
null === (i4 = this._$ES) || void 0 === i4 || i4.splice(this._$ES.indexOf(t3) >>> 0, 1);
229
}
230
_$Eg() {
231
this.constructor.elementProperties.forEach((t3, i4) => {
232
this.hasOwnProperty(i4) && (this._$Ei.set(i4, this[i4]), delete this[i4]);
233
});
234
}
235
createRenderRoot() {
236
var t3;
237
const s5 = null !== (t3 = this.shadowRoot) && void 0 !== t3 ? t3 : this.attachShadow(this.constructor.shadowRootOptions);
238
return S(s5, this.constructor.elementStyles), s5;
239
}
240
connectedCallback() {
241
var t3;
242
void 0 === this.renderRoot && (this.renderRoot = this.createRenderRoot()), this.enableUpdating(true), null === (t3 = this._$ES) || void 0 === t3 || t3.forEach((t4) => {
243
var i4;
244
return null === (i4 = t4.hostConnected) || void 0 === i4 ? void 0 : i4.call(t4);
245
});
246
}
247
enableUpdating(t3) {
248
}
249
disconnectedCallback() {
250
var t3;
251
null === (t3 = this._$ES) || void 0 === t3 || t3.forEach((t4) => {
252
var i4;
253
return null === (i4 = t4.hostDisconnected) || void 0 === i4 ? void 0 : i4.call(t4);
254
});
255
}
256
attributeChangedCallback(t3, i4, s5) {
257
this._$AK(t3, s5);
258
}
259
_$EO(t3, i4, s5 = l2) {
260
var e6;
261
const r4 = this.constructor._$Ep(t3, s5);
262
if (void 0 !== r4 && true === s5.reflect) {
263
const h3 = (void 0 !== (null === (e6 = s5.converter) || void 0 === e6 ? void 0 : e6.toAttribute) ? s5.converter : n4).toAttribute(i4, s5.type);
264
this._$El = t3, null == h3 ? this.removeAttribute(r4) : this.setAttribute(r4, h3), this._$El = null;
265
}
266
}
267
_$AK(t3, i4) {
268
var s5;
269
const e6 = this.constructor, r4 = e6._$Ev.get(t3);
270
if (void 0 !== r4 && this._$El !== r4) {
271
const t4 = e6.getPropertyOptions(r4), h3 = "function" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== (null === (s5 = t4.converter) || void 0 === s5 ? void 0 : s5.fromAttribute) ? t4.converter : n4;
272
this._$El = r4, this[r4] = h3.fromAttribute(i4, t4.type), this._$El = null;
273
}
274
}
275
requestUpdate(t3, i4, s5) {
276
let e6 = true;
277
void 0 !== t3 && (((s5 = s5 || this.constructor.getPropertyOptions(t3)).hasChanged || a)(this[t3], i4) ? (this._$AL.has(t3) || this._$AL.set(t3, i4), true === s5.reflect && this._$El !== t3 && (void 0 === this._$EC && (this._$EC = /* @__PURE__ */ new Map()), this._$EC.set(t3, s5))) : e6 = false), !this.isUpdatePending && e6 && (this._$E_ = this._$Ej());
278
}
279
_$Ej() {
280
return __async(this, null, function* () {
281
this.isUpdatePending = true;
282
try {
283
yield this._$E_;
284
} catch (t4) {
285
Promise.reject(t4);
286
}
287
const t3 = this.scheduleUpdate();
288
return null != t3 && (yield t3), !this.isUpdatePending;
289
});
290
}
291
scheduleUpdate() {
292
return this.performUpdate();
293
}
294
performUpdate() {
295
var t3;
296
if (!this.isUpdatePending)
297
return;
298
this.hasUpdated, this._$Ei && (this._$Ei.forEach((t4, i5) => this[i5] = t4), this._$Ei = void 0);
299
let i4 = false;
300
const s5 = this._$AL;
301
try {
302
i4 = this.shouldUpdate(s5), i4 ? (this.willUpdate(s5), null === (t3 = this._$ES) || void 0 === t3 || t3.forEach((t4) => {
303
var i5;
304
return null === (i5 = t4.hostUpdate) || void 0 === i5 ? void 0 : i5.call(t4);
305
}), this.update(s5)) : this._$Ek();
306
} catch (t4) {
307
throw i4 = false, this._$Ek(), t4;
308
}
309
i4 && this._$AE(s5);
310
}
311
willUpdate(t3) {
312
}
313
_$AE(t3) {
314
var i4;
315
null === (i4 = this._$ES) || void 0 === i4 || i4.forEach((t4) => {
316
var i5;
317
return null === (i5 = t4.hostUpdated) || void 0 === i5 ? void 0 : i5.call(t4);
318
}), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);
319
}
320
_$Ek() {
321
this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;
322
}
323
get updateComplete() {
324
return this.getUpdateComplete();
325
}
326
getUpdateComplete() {
327
return this._$E_;
328
}
329
shouldUpdate(t3) {
330
return true;
331
}
332
update(t3) {
333
void 0 !== this._$EC && (this._$EC.forEach((t4, i4) => this._$EO(i4, this[i4], t4)), this._$EC = void 0), this._$Ek();
334
}
335
updated(t3) {
336
}
337
firstUpdated(t3) {
338
}
339
};
340
u[d] = true, u.elementProperties = /* @__PURE__ */ new Map(), u.elementStyles = [], u.shadowRootOptions = { mode: "open" }, null == o3 || o3({ ReactiveElement: u }), (null !== (s2 = e4.reactiveElementVersions) && void 0 !== s2 ? s2 : e4.reactiveElementVersions = []).push("1.6.2");
341
342
// node_modules/lit-html/lit-html.js
343
var t2;
344
var i3 = window;
345
var s3 = i3.trustedTypes;
346
var e5 = s3 ? s3.createPolicy("lit-html", { createHTML: (t3) => t3 }) : void 0;
347
var o4 = "$lit$";
348
var n5 = `lit$${(Math.random() + "").slice(9)}$`;
349
var l3 = "?" + n5;
350
var h2 = `<${l3}>`;
351
var r3 = document;
352
var u2 = () => r3.createComment("");
353
var d2 = (t3) => null === t3 || "object" != typeof t3 && "function" != typeof t3;
354
var c2 = Array.isArray;
355
var v = (t3) => c2(t3) || "function" == typeof (null == t3 ? void 0 : t3[Symbol.iterator]);
356
var a2 = "[ \n\f\r]";
357
var f = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g;
358
var _ = /-->/g;
359
var m = />/g;
360
var p = RegExp(`>|${a2}(?:([^\\s"'>=/]+)(${a2}*=${a2}*(?:[^
361
\f\r"'\`<>=]|("|')|))|$)`, "g");
362
var g = /'/g;
363
var $2 = /"/g;
364
var y = /^(?:script|style|textarea|title)$/i;
365
var w = (t3) => (i4, ...s5) => ({ _$litType$: t3, strings: i4, values: s5 });
366
var x = w(1);
367
var b = w(2);
368
var T = Symbol.for("lit-noChange");
369
var A = Symbol.for("lit-nothing");
370
var E = /* @__PURE__ */ new WeakMap();
371
var C = r3.createTreeWalker(r3, 129, null, false);
372
function P(t3, i4) {
373
if (!Array.isArray(t3) || !t3.hasOwnProperty("raw"))
374
throw Error("invalid template strings array");
375
return void 0 !== e5 ? e5.createHTML(i4) : i4;
376
}
377
var V = (t3, i4) => {
378
const s5 = t3.length - 1, e6 = [];
379
let l5, r4 = 2 === i4 ? "<svg>" : "", u3 = f;
380
for (let i5 = 0; i5 < s5; i5++) {
381
const s6 = t3[i5];
382
let d3, c3, v2 = -1, a3 = 0;
383
for (; a3 < s6.length && (u3.lastIndex = a3, c3 = u3.exec(s6), null !== c3); )
384
a3 = u3.lastIndex, u3 === f ? "!--" === c3[1] ? u3 = _ : void 0 !== c3[1] ? u3 = m : void 0 !== c3[2] ? (y.test(c3[2]) && (l5 = RegExp("</" + c3[2], "g")), u3 = p) : void 0 !== c3[3] && (u3 = p) : u3 === p ? ">" === c3[0] ? (u3 = null != l5 ? l5 : f, v2 = -1) : void 0 === c3[1] ? v2 = -2 : (v2 = u3.lastIndex - c3[2].length, d3 = c3[1], u3 = void 0 === c3[3] ? p : '"' === c3[3] ? $2 : g) : u3 === $2 || u3 === g ? u3 = p : u3 === _ || u3 === m ? u3 = f : (u3 = p, l5 = void 0);
385
const w2 = u3 === p && t3[i5 + 1].startsWith("/>") ? " " : "";
386
r4 += u3 === f ? s6 + h2 : v2 >= 0 ? (e6.push(d3), s6.slice(0, v2) + o4 + s6.slice(v2) + n5 + w2) : s6 + n5 + (-2 === v2 ? (e6.push(void 0), i5) : w2);
387
}
388
return [P(t3, r4 + (t3[s5] || "<?>") + (2 === i4 ? "</svg>" : "")), e6];
389
};
390
var N = class {
391
constructor({ strings: t3, _$litType$: i4 }, e6) {
392
let h3;
393
this.parts = [];
394
let r4 = 0, d3 = 0;
395
const c3 = t3.length - 1, v2 = this.parts, [a3, f2] = V(t3, i4);
396
if (this.el = N.createElement(a3, e6), C.currentNode = this.el.content, 2 === i4) {
397
const t4 = this.el.content, i5 = t4.firstChild;
398
i5.remove(), t4.append(...i5.childNodes);
399
}
400
for (; null !== (h3 = C.nextNode()) && v2.length < c3; ) {
401
if (1 === h3.nodeType) {
402
if (h3.hasAttributes()) {
403
const t4 = [];
404
for (const i5 of h3.getAttributeNames())
405
if (i5.endsWith(o4) || i5.startsWith(n5)) {
406
const s5 = f2[d3++];
407
if (t4.push(i5), void 0 !== s5) {
408
const t5 = h3.getAttribute(s5.toLowerCase() + o4).split(n5), i6 = /([.?@])?(.*)/.exec(s5);
409
v2.push({ type: 1, index: r4, name: i6[2], strings: t5, ctor: "." === i6[1] ? H : "?" === i6[1] ? L : "@" === i6[1] ? z : k });
410
} else
411
v2.push({ type: 6, index: r4 });
412
}
413
for (const i5 of t4)
414
h3.removeAttribute(i5);
415
}
416
if (y.test(h3.tagName)) {
417
const t4 = h3.textContent.split(n5), i5 = t4.length - 1;
418
if (i5 > 0) {
419
h3.textContent = s3 ? s3.emptyScript : "";
420
for (let s5 = 0; s5 < i5; s5++)
421
h3.append(t4[s5], u2()), C.nextNode(), v2.push({ type: 2, index: ++r4 });
422
h3.append(t4[i5], u2());
423
}
424
}
425
} else if (8 === h3.nodeType)
426
if (h3.data === l3)
427
v2.push({ type: 2, index: r4 });
428
else {
429
let t4 = -1;
430
for (; -1 !== (t4 = h3.data.indexOf(n5, t4 + 1)); )
431
v2.push({ type: 7, index: r4 }), t4 += n5.length - 1;
432
}
433
r4++;
434
}
435
}
436
static createElement(t3, i4) {
437
const s5 = r3.createElement("template");
438
return s5.innerHTML = t3, s5;
439
}
440
};
441
function S2(t3, i4, s5 = t3, e6) {
442
var o6, n7, l5, h3;
443
if (i4 === T)
444
return i4;
445
let r4 = void 0 !== e6 ? null === (o6 = s5._$Co) || void 0 === o6 ? void 0 : o6[e6] : s5._$Cl;
446
const u3 = d2(i4) ? void 0 : i4._$litDirective$;
447
return (null == r4 ? void 0 : r4.constructor) !== u3 && (null === (n7 = null == r4 ? void 0 : r4._$AO) || void 0 === n7 || n7.call(r4, false), void 0 === u3 ? r4 = void 0 : (r4 = new u3(t3), r4._$AT(t3, s5, e6)), void 0 !== e6 ? (null !== (l5 = (h3 = s5)._$Co) && void 0 !== l5 ? l5 : h3._$Co = [])[e6] = r4 : s5._$Cl = r4), void 0 !== r4 && (i4 = S2(t3, r4._$AS(t3, i4.values), r4, e6)), i4;
448
}
449
var M = class {
450
constructor(t3, i4) {
451
this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;
452
}
453
get parentNode() {
454
return this._$AM.parentNode;
455
}
456
get _$AU() {
457
return this._$AM._$AU;
458
}
459
u(t3) {
460
var i4;
461
const { el: { content: s5 }, parts: e6 } = this._$AD, o6 = (null !== (i4 = null == t3 ? void 0 : t3.creationScope) && void 0 !== i4 ? i4 : r3).importNode(s5, true);
462
C.currentNode = o6;
463
let n7 = C.nextNode(), l5 = 0, h3 = 0, u3 = e6[0];
464
for (; void 0 !== u3; ) {
465
if (l5 === u3.index) {
466
let i5;
467
2 === u3.type ? i5 = new R(n7, n7.nextSibling, this, t3) : 1 === u3.type ? i5 = new u3.ctor(n7, u3.name, u3.strings, this, t3) : 6 === u3.type && (i5 = new Z(n7, this, t3)), this._$AV.push(i5), u3 = e6[++h3];
468
}
469
l5 !== (null == u3 ? void 0 : u3.index) && (n7 = C.nextNode(), l5++);
470
}
471
return C.currentNode = r3, o6;
472
}
473
v(t3) {
474
let i4 = 0;
475
for (const s5 of this._$AV)
476
void 0 !== s5 && (void 0 !== s5.strings ? (s5._$AI(t3, s5, i4), i4 += s5.strings.length - 2) : s5._$AI(t3[i4])), i4++;
477
}
478
};
479
var R = class {
480
constructor(t3, i4, s5, e6) {
481
var o6;
482
this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s5, this.options = e6, this._$Cp = null === (o6 = null == e6 ? void 0 : e6.isConnected) || void 0 === o6 || o6;
483
}
484
get _$AU() {
485
var t3, i4;
486
return null !== (i4 = null === (t3 = this._$AM) || void 0 === t3 ? void 0 : t3._$AU) && void 0 !== i4 ? i4 : this._$Cp;
487
}
488
get parentNode() {
489
let t3 = this._$AA.parentNode;
490
const i4 = this._$AM;
491
return void 0 !== i4 && 11 === (null == t3 ? void 0 : t3.nodeType) && (t3 = i4.parentNode), t3;
492
}
493
get startNode() {
494
return this._$AA;
495
}
496
get endNode() {
497
return this._$AB;
498
}
499
_$AI(t3, i4 = this) {
500
t3 = S2(this, t3, i4), d2(t3) ? t3 === A || null == t3 || "" === t3 ? (this._$AH !== A && this._$AR(), this._$AH = A) : t3 !== this._$AH && t3 !== T && this._(t3) : void 0 !== t3._$litType$ ? this.g(t3) : void 0 !== t3.nodeType ? this.$(t3) : v(t3) ? this.T(t3) : this._(t3);
501
}
502
k(t3) {
503
return this._$AA.parentNode.insertBefore(t3, this._$AB);
504
}
505
$(t3) {
506
this._$AH !== t3 && (this._$AR(), this._$AH = this.k(t3));
507
}
508
_(t3) {
509
this._$AH !== A && d2(this._$AH) ? this._$AA.nextSibling.data = t3 : this.$(r3.createTextNode(t3)), this._$AH = t3;
510
}
511
g(t3) {
512
var i4;
513
const { values: s5, _$litType$: e6 } = t3, o6 = "number" == typeof e6 ? this._$AC(t3) : (void 0 === e6.el && (e6.el = N.createElement(P(e6.h, e6.h[0]), this.options)), e6);
514
if ((null === (i4 = this._$AH) || void 0 === i4 ? void 0 : i4._$AD) === o6)
515
this._$AH.v(s5);
516
else {
517
const t4 = new M(o6, this), i5 = t4.u(this.options);
518
t4.v(s5), this.$(i5), this._$AH = t4;
519
}
520
}
521
_$AC(t3) {
522
let i4 = E.get(t3.strings);
523
return void 0 === i4 && E.set(t3.strings, i4 = new N(t3)), i4;
524
}
525
T(t3) {
526
c2(this._$AH) || (this._$AH = [], this._$AR());
527
const i4 = this._$AH;
528
let s5, e6 = 0;
529
for (const o6 of t3)
530
e6 === i4.length ? i4.push(s5 = new R(this.k(u2()), this.k(u2()), this, this.options)) : s5 = i4[e6], s5._$AI(o6), e6++;
531
e6 < i4.length && (this._$AR(s5 && s5._$AB.nextSibling, e6), i4.length = e6);
532
}
533
_$AR(t3 = this._$AA.nextSibling, i4) {
534
var s5;
535
for (null === (s5 = this._$AP) || void 0 === s5 || s5.call(this, false, true, i4); t3 && t3 !== this._$AB; ) {
536
const i5 = t3.nextSibling;
537
t3.remove(), t3 = i5;
538
}
539
}
540
setConnected(t3) {
541
var i4;
542
void 0 === this._$AM && (this._$Cp = t3, null === (i4 = this._$AP) || void 0 === i4 || i4.call(this, t3));
543
}
544
};
545
var k = class {
546
constructor(t3, i4, s5, e6, o6) {
547
this.type = 1, this._$AH = A, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e6, this.options = o6, s5.length > 2 || "" !== s5[0] || "" !== s5[1] ? (this._$AH = Array(s5.length - 1).fill(new String()), this.strings = s5) : this._$AH = A;
548
}
549
get tagName() {
550
return this.element.tagName;
551
}
552
get _$AU() {
553
return this._$AM._$AU;
554
}
555
_$AI(t3, i4 = this, s5, e6) {
556
const o6 = this.strings;
557
let n7 = false;
558
if (void 0 === o6)
559
t3 = S2(this, t3, i4, 0), n7 = !d2(t3) || t3 !== this._$AH && t3 !== T, n7 && (this._$AH = t3);
560
else {
561
const e7 = t3;
562
let l5, h3;
563
for (t3 = o6[0], l5 = 0; l5 < o6.length - 1; l5++)
564
h3 = S2(this, e7[s5 + l5], i4, l5), h3 === T && (h3 = this._$AH[l5]), n7 || (n7 = !d2(h3) || h3 !== this._$AH[l5]), h3 === A ? t3 = A : t3 !== A && (t3 += (null != h3 ? h3 : "") + o6[l5 + 1]), this._$AH[l5] = h3;
565
}
566
n7 && !e6 && this.j(t3);
567
}
568
j(t3) {
569
t3 === A ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, null != t3 ? t3 : "");
570
}
571
};
572
var H = class extends k {
573
constructor() {
574
super(...arguments), this.type = 3;
575
}
576
j(t3) {
577
this.element[this.name] = t3 === A ? void 0 : t3;
578
}
579
};
580
var I = s3 ? s3.emptyScript : "";
581
var L = class extends k {
582
constructor() {
583
super(...arguments), this.type = 4;
584
}
585
j(t3) {
586
t3 && t3 !== A ? this.element.setAttribute(this.name, I) : this.element.removeAttribute(this.name);
587
}
588
};
589
var z = class extends k {
590
constructor(t3, i4, s5, e6, o6) {
591
super(t3, i4, s5, e6, o6), this.type = 5;
592
}
593
_$AI(t3, i4 = this) {
594
var s5;
595
if ((t3 = null !== (s5 = S2(this, t3, i4, 0)) && void 0 !== s5 ? s5 : A) === T)
596
return;
597
const e6 = this._$AH, o6 = t3 === A && e6 !== A || t3.capture !== e6.capture || t3.once !== e6.once || t3.passive !== e6.passive, n7 = t3 !== A && (e6 === A || o6);
598
o6 && this.element.removeEventListener(this.name, this, e6), n7 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;
599
}
600
handleEvent(t3) {
601
var i4, s5;
602
"function" == typeof this._$AH ? this._$AH.call(null !== (s5 = null === (i4 = this.options) || void 0 === i4 ? void 0 : i4.host) && void 0 !== s5 ? s5 : this.element, t3) : this._$AH.handleEvent(t3);
603
}
604
};
605
var Z = class {
606
constructor(t3, i4, s5) {
607
this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s5;
608
}
609
get _$AU() {
610
return this._$AM._$AU;
611
}
612
_$AI(t3) {
613
S2(this, t3);
614
}
615
};
616
var B = i3.litHtmlPolyfillSupport;
617
null == B || B(N, R), (null !== (t2 = i3.litHtmlVersions) && void 0 !== t2 ? t2 : i3.litHtmlVersions = []).push("2.7.5");
618
var D = (t3, i4, s5) => {
619
var e6, o6;
620
const n7 = null !== (e6 = null == s5 ? void 0 : s5.renderBefore) && void 0 !== e6 ? e6 : i4;
621
let l5 = n7._$litPart$;
622
if (void 0 === l5) {
623
const t4 = null !== (o6 = null == s5 ? void 0 : s5.renderBefore) && void 0 !== o6 ? o6 : null;
624
n7._$litPart$ = l5 = new R(i4.insertBefore(u2(), t4), t4, void 0, null != s5 ? s5 : {});
625
}
626
return l5._$AI(t3), l5;
627
};
628
629
// node_modules/lit-element/lit-element.js
630
var l4;
631
var o5;
632
var s4 = class extends u {
633
constructor() {
634
super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
635
}
636
createRenderRoot() {
637
var t3, e6;
638
const i4 = super.createRenderRoot();
639
return null !== (t3 = (e6 = this.renderOptions).renderBefore) && void 0 !== t3 || (e6.renderBefore = i4.firstChild), i4;
640
}
641
update(t3) {
642
const i4 = this.render();
643
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this._$Do = D(i4, this.renderRoot, this.renderOptions);
644
}
645
connectedCallback() {
646
var t3;
647
super.connectedCallback(), null === (t3 = this._$Do) || void 0 === t3 || t3.setConnected(true);
648
}
649
disconnectedCallback() {
650
var t3;
651
super.disconnectedCallback(), null === (t3 = this._$Do) || void 0 === t3 || t3.setConnected(false);
652
}
653
render() {
654
return T;
655
}
656
};
657
s4.finalized = true, s4._$litElement$ = true, null === (l4 = globalThis.litElementHydrateSupport) || void 0 === l4 || l4.call(globalThis, { LitElement: s4 });
658
var n6 = globalThis.litElementPolyfillSupport;
659
null == n6 || n6({ LitElement: s4 });
660
(null !== (o5 = globalThis.litElementVersions) && void 0 !== o5 ? o5 : globalThis.litElementVersions = []).push("3.3.2");
661
662
// srcts/src/components/webcomponents/_bslibElement.ts
663
var BslibElement = class extends s4 {
664
connectedCallback() {
665
this.maybeCarryFill();
666
super.connectedCallback();
667
}
668
render() {
669
return x`<slot></slot>`;
670
}
671
maybeCarryFill() {
672
if (this.isFillCarrier) {
673
this.classList.add("html-fill-container");
674
this.classList.add("html-fill-item");
675
} else {
676
this.classList.remove("html-fill-container");
677
this.classList.remove("html-fill-item");
678
}
679
}
680
get isFillCarrier() {
681
if (!this.parentElement) {
682
return false;
683
}
684
const inContainer = this.parentElement.classList.contains(
685
"html-fill-container"
686
);
687
const hasFillItem = Array.from(this.children).some(
688
(x2) => x2.classList.contains("html-fill-item")
689
);
690
return inContainer && hasFillItem;
691
}
692
};
693
BslibElement.isShinyInput = false;
694
BslibElement.styles = i2`
695
:host {
696
display: contents;
697
}
698
`;
699
700
// srcts/src/components/_utilsTooltip.ts
701
function getOrCreateTriggerEl(el) {
702
const tip = el.querySelector(":scope > [data-bs-toggle='tooltip']");
703
if (tip)
704
return tip;
705
const pop = el.querySelector(":scope > [data-bs-toggle='popover']");
706
if (pop)
707
return pop;
708
if (el.children.length > 1) {
709
const ref = el.children[el.children.length - 1];
710
return ref;
711
}
712
if (el.childNodes.length > 1) {
713
const ref = document.createElement("span");
714
ref.append(el.childNodes[el.childNodes.length - 1]);
715
el.appendChild(ref);
716
return ref;
717
}
718
return el;
719
}
720
function setContentCarefully(x2) {
721
var _a;
722
const { instance, trigger, content, type } = x2;
723
const { tip } = instance;
724
const tipIsVisible = tip && tip.offsetParent !== null;
725
if (!tipIsVisible) {
726
instance.setContent(content);
727
return;
728
}
729
for (const [selector, html] of Object.entries(content)) {
730
let target = tip.querySelector(selector);
731
if (!target && selector === ".popover-header") {
732
const header = document.createElement("div");
733
header.classList.add("popover-header");
734
(_a = tip.querySelector(".popover-body")) == null ? void 0 : _a.before(header);
735
target = header;
736
}
737
if (!target) {
738
console.warn(`Could not find ${selector} in ${type} content`);
739
continue;
740
}
741
if (target instanceof HTMLElement) {
742
target.replaceChildren(html);
743
} else {
744
target.innerHTML = html;
745
}
746
}
747
instance.update();
748
trigger.addEventListener(
749
`hidden.bs.${type}`,
750
() => instance.setContent(content),
751
{ once: true }
752
);
753
}
754
function createWrapperElement(html, display) {
755
const wrapper = document.createElement("div");
756
wrapper.style.display = display;
757
if (html instanceof DocumentFragment) {
758
wrapper.append(html);
759
} else {
760
wrapper.innerHTML = html;
761
}
762
return wrapper;
763
}
764
765
// srcts/src/components/_shinyResizeObserver.ts
766
var ShinyResizeObserver = class {
767
/**
768
* Watch containers for size changes and ensure that Shiny outputs and
769
* htmlwidgets within resize appropriately.
770
*
771
* @details
772
* The ShinyResizeObserver is used to watch the containers, such as Sidebars
773
* and Cards for size changes, in particular when the sidebar state is toggled
774
* or the card body is expanded full screen. It performs two primary tasks:
775
*
776
* 1. Dispatches a `resize` event on the window object. This is necessary to
777
* ensure that Shiny outputs resize appropriately. In general, the window
778
* resizing is throttled and the output update occurs when the transition
779
* is complete.
780
* 2. If an output with a resize method on the output binding is detected, we
781
* directly call the `.onResize()` method of the binding. This ensures that
782
* htmlwidgets transition smoothly. In static mode, htmlwidgets does this
783
* already.
784
*
785
* @note
786
* This resize observer also handles race conditions in some complex
787
* fill-based layouts with multiple outputs (e.g., plotly), where shiny
788
* initializes with the correct sizing, but in-between the 1st and last
789
* renderValue(), the size of the output containers can change, meaning every
790
* output but the 1st gets initialized with the wrong size during their
791
* renderValue(). Then, after the render phase, shiny won't know to trigger a
792
* resize since all the widgets will return to their original size (and thus,
793
* Shiny thinks there isn't any resizing to do). The resize observer works
794
* around this by ensuring that the output is resized whenever its container
795
* size changes.
796
* @constructor
797
*/
798
constructor() {
799
this.resizeObserverEntries = [];
800
this.resizeObserver = new ResizeObserver((entries) => {
801
const resizeEvent = new Event("resize");
802
window.dispatchEvent(resizeEvent);
803
if (!window.Shiny)
804
return;
805
const resized = [];
806
for (const entry of entries) {
807
if (!(entry.target instanceof HTMLElement))
808
continue;
809
if (!entry.target.querySelector(".shiny-bound-output"))
810
continue;
811
entry.target.querySelectorAll(".shiny-bound-output").forEach((el) => {
812
if (resized.includes(el))
813
return;
814
const { binding, onResize } = $(el).data("shinyOutputBinding");
815
if (!binding || !binding.resize)
816
return;
817
const owner = el.shinyResizeObserver;
818
if (owner && owner !== this)
819
return;
820
if (!owner)
821
el.shinyResizeObserver = this;
822
onResize(el);
823
resized.push(el);
824
if (!el.classList.contains("shiny-plot-output"))
825
return;
826
const img = el.querySelector(
827
'img:not([width="100%"])'
828
);
829
if (img)
830
img.setAttribute("width", "100%");
831
});
832
}
833
});
834
}
835
/**
836
* Observe an element for size changes.
837
* @param {HTMLElement} el - The element to observe.
838
*/
839
observe(el) {
840
this.resizeObserver.observe(el);
841
this.resizeObserverEntries.push(el);
842
}
843
/**
844
* Stop observing an element for size changes.
845
* @param {HTMLElement} el - The element to stop observing.
846
*/
847
unobserve(el) {
848
const idxEl = this.resizeObserverEntries.indexOf(el);
849
if (idxEl < 0)
850
return;
851
this.resizeObserver.unobserve(el);
852
this.resizeObserverEntries.splice(idxEl, 1);
853
}
854
/**
855
* This method checks that we're not continuing to watch elements that no
856
* longer exist in the DOM. If any are found, we stop observing them and
857
* remove them from our array of observed elements.
858
*
859
* @private
860
* @static
861
*/
862
flush() {
863
this.resizeObserverEntries.forEach((el) => {
864
if (!document.body.contains(el))
865
this.unobserve(el);
866
});
867
}
868
};
869
870
// srcts/src/components/webcomponents/tooltip.ts
871
var bsTooltip = window.bootstrap ? window.bootstrap.Tooltip : class {
872
};
873
var _BslibTooltip = class extends BslibElement {
874
///////////////////////////////////////////////////////////////
875
// Methods
876
///////////////////////////////////////////////////////////////
877
constructor() {
878
super();
879
this.placement = "auto";
880
this.bsOptions = "{}";
881
// Visibility state management
882
this.visible = false;
883
// This is a placeholder function that will be overwritten by the Shiny input
884
// binding. When the input value changes, it invokes this function to notify
885
// Shiny that it has changed.
886
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
887
this.onChangeCallback = (x2) => {
888
};
889
this._onShown = this._onShown.bind(this);
890
this._onInsert = this._onInsert.bind(this);
891
this._onHidden = this._onHidden.bind(this);
892
}
893
get options() {
894
const opts = JSON.parse(this.bsOptions);
895
return __spreadValues({
896
title: this.content,
897
placement: this.placement,
898
// Bootstrap defaults to false, but we have our own HTML escaping
899
html: true,
900
sanitize: false
901
}, opts);
902
}
903
get content() {
904
return this.children[0];
905
}
906
// The element that triggers the tooltip to be shown
907
get triggerElement() {
908
return getOrCreateTriggerEl(this);
909
}
910
// Is the trigger element visible?
911
get visibleTrigger() {
912
const el = this.triggerElement;
913
return el && el.offsetParent !== null;
914
}
915
connectedCallback() {
916
super.connectedCallback();
917
const template = this.querySelector("template");
918
this.prepend(createWrapperElement(template.content, "none"));
919
template.remove();
920
const trigger = this.triggerElement;
921
trigger.setAttribute("data-bs-toggle", "tooltip");
922
trigger.setAttribute("tabindex", "0");
923
this.bsTooltip = new bsTooltip(trigger, this.options);
924
trigger.addEventListener("shown.bs.tooltip", this._onShown);
925
trigger.addEventListener("hidden.bs.tooltip", this._onHidden);
926
trigger.addEventListener("inserted.bs.tooltip", this._onInsert);
927
this.visibilityObserver = this._createVisibilityObserver();
928
}
929
disconnectedCallback() {
930
const trigger = this.triggerElement;
931
trigger.removeEventListener("shown.bs.tooltip", this._onShown);
932
trigger.removeEventListener("hidden.bs.tooltip", this._onHidden);
933
trigger.removeEventListener("inserted.bs.tooltip", this._onInsert);
934
this.visibilityObserver.disconnect();
935
this.bsTooltip.dispose();
936
super.disconnectedCallback();
937
}
938
getValue() {
939
return this.visible;
940
}
941
_onShown() {
942
this.visible = true;
943
this.onChangeCallback(true);
944
this.visibilityObserver.observe(this.triggerElement);
945
}
946
_onHidden() {
947
this.visible = false;
948
this.onChangeCallback(true);
949
this._restoreContent();
950
this.visibilityObserver.unobserve(this.triggerElement);
951
_BslibTooltip.shinyResizeObserver.flush();
952
}
953
_onInsert() {
954
var _a;
955
const { tip } = this.bsTooltip;
956
if (!tip) {
957
throw new Error(
958
"Failed to find the tooltip's DOM element. Please report this bug."
959
);
960
}
961
_BslibTooltip.shinyResizeObserver.observe(tip);
962
const content = (_a = tip.querySelector(".tooltip-inner")) == null ? void 0 : _a.firstChild;
963
if (content instanceof HTMLElement) {
964
content.style.display = "contents";
965
}
966
this.bsTooltipEl = tip;
967
}
968
// Since this.content is an HTMLElement, when it's shown bootstrap.Popover()
969
// will move the DOM element from this web container to the tooltip's
970
// container (which, by default, is the body, but can also be customized). So,
971
// when the popover is hidden, we're responsible for moving it back to this
972
// element.
973
_restoreContent() {
974
var _a;
975
const el = this.bsTooltipEl;
976
if (!el)
977
return;
978
const content = (_a = el.querySelector(".tooltip-inner")) == null ? void 0 : _a.firstChild;
979
if (content instanceof HTMLElement) {
980
content.style.display = "none";
981
this.prepend(content);
982
}
983
this.bsTooltipEl = void 0;
984
}
985
receiveMessage(el, data) {
986
const method = data.method;
987
if (method === "toggle") {
988
this._toggle(data.value);
989
} else if (method === "update") {
990
this._updateTitle(data.title);
991
} else {
992
throw new Error(`Unknown method ${method}`);
993
}
994
}
995
_toggle(x2) {
996
if (x2 === "toggle" || x2 === void 0) {
997
x2 = this.visible ? "hide" : "show";
998
}
999
if (x2 === "hide") {
1000
this.bsTooltip.hide();
1001
}
1002
if (x2 === "show") {
1003
this._show();
1004
}
1005
}
1006
// No-op if the tooltip is already visible or if the trigger element is not visible
1007
// (in either case the tooltip likely won't be positioned correctly)
1008
_show() {
1009
if (!this.visible && this.visibleTrigger) {
1010
this.bsTooltip.show();
1011
}
1012
}
1013
_updateTitle(title) {
1014
if (!title)
1015
return;
1016
Shiny.renderDependencies(title.deps);
1017
setContentCarefully({
1018
instance: this.bsTooltip,
1019
trigger: this.triggerElement,
1020
// eslint-disable-next-line @typescript-eslint/naming-convention
1021
content: { ".tooltip-inner": title.html },
1022
type: "tooltip"
1023
});
1024
}
1025
// While the tooltip is shown, watches for changes in the _trigger_
1026
// visibility. If the trigger element becomes no longer visible, then we hide
1027
// the tooltip (Bootstrap doesn't do this automatically when showing
1028
// programmatically)
1029
_createVisibilityObserver() {
1030
const handler = (entries) => {
1031
if (!this.visible)
1032
return;
1033
entries.forEach((entry) => {
1034
if (!entry.isIntersecting)
1035
this.bsTooltip.hide();
1036
});
1037
};
1038
return new IntersectionObserver(handler);
1039
}
1040
};
1041
var BslibTooltip = _BslibTooltip;
1042
BslibTooltip.tagName = "bslib-tooltip";
1043
BslibTooltip.shinyResizeObserver = new ShinyResizeObserver();
1044
// Shiny-specific stuff
1045
BslibTooltip.isShinyInput = true;
1046
__decorateClass([
1047
n({ type: String })
1048
], BslibTooltip.prototype, "placement", 2);
1049
__decorateClass([
1050
n({ type: String })
1051
], BslibTooltip.prototype, "bsOptions", 2);
1052
1053
// srcts/src/components/webcomponents/popover.ts
1054
var bsPopover = window.bootstrap ? window.bootstrap.Popover : class {
1055
};
1056
var _BslibPopover = class extends BslibElement {
1057
///////////////////////////////////////////////////////////////
1058
// Methods
1059
///////////////////////////////////////////////////////////////
1060
constructor() {
1061
super();
1062
this.placement = "auto";
1063
this.bsOptions = "{}";
1064
///////////////////////////////////////////////////////////////
1065
// Visibility state management
1066
///////////////////////////////////////////////////////////////
1067
this.visible = false;
1068
// This is a placeholder function that will be overwritten by the Shiny input
1069
// binding. When the input value changes, it invokes this function to notify
1070
// Shiny that it has changed.
1071
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
1072
this.onChangeCallback = (x2) => {
1073
};
1074
this._onShown = this._onShown.bind(this);
1075
this._onInsert = this._onInsert.bind(this);
1076
this._onHidden = this._onHidden.bind(this);
1077
this._handleTabKey = this._handleTabKey.bind(this);
1078
this._handleEscapeKey = this._handleEscapeKey.bind(this);
1079
this._closeButton = this._closeButton.bind(this);
1080
}
1081
get options() {
1082
const opts = JSON.parse(this.bsOptions);
1083
return __spreadValues({
1084
content: this.content,
1085
title: hasHeader(this.header) ? this.header : "",
1086
placement: this.placement,
1087
// Bootstrap defaults to false, but we have our own HTML escaping
1088
html: true,
1089
sanitize: false,
1090
trigger: this.isHyperLink ? "focus hover" : "click"
1091
}, opts);
1092
}
1093
get content() {
1094
return this.contentContainer.children[0];
1095
}
1096
get header() {
1097
return this.contentContainer.children[1];
1098
}
1099
get contentContainer() {
1100
return this.children[0];
1101
}
1102
// The element that triggers the popover to be shown
1103
get triggerElement() {
1104
return getOrCreateTriggerEl(this);
1105
}
1106
// Is the trigger element visible?
1107
get visibleTrigger() {
1108
const el = this.triggerElement;
1109
return el && el.offsetParent !== null;
1110
}
1111
// By default (when trigger is "click"), treat the trigger element like a
1112
// button (even if it's not a <button> element). Meaning mostly that we'll
1113
// manage aria-pressed and Enter/Space keydown events.
1114
// https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/button_role
1115
get isButtonLike() {
1116
return this.options.trigger === "click" && this.triggerElement.tagName !== "BUTTON";
1117
}
1118
// If the visibility of the popover is _not_ triggered via focus (i.e., it's
1119
// triggered by clicking a button), then we make the popover focusable (so that
1120
// the user can tab to it).
1121
get focusablePopover() {
1122
return !this.options.trigger.includes("focus");
1123
}
1124
get isHyperLink() {
1125
const trigger = this.triggerElement;
1126
return trigger.tagName === "A" && trigger.hasAttribute("href") && trigger.getAttribute("href") !== "#" && trigger.getAttribute("href") !== "" && trigger.getAttribute("href") !== "javascript:void(0)";
1127
}
1128
connectedCallback() {
1129
super.connectedCallback();
1130
const template = this.querySelector("template");
1131
this.prepend(createWrapperElement(template.content, "none"));
1132
template.remove();
1133
if (this.content) {
1134
D(this._closeButton(this.header), this.content);
1135
}
1136
const trigger = this.triggerElement;
1137
trigger.setAttribute("data-bs-toggle", "popover");
1138
if (this.isButtonLike) {
1139
trigger.setAttribute("role", "button");
1140
trigger.setAttribute("tabindex", "0");
1141
trigger.setAttribute("aria-pressed", "false");
1142
if (this.triggerElement.tagName !== "A") {
1143
trigger.onkeydown = (e6) => {
1144
if (e6.key === "Enter" || e6.key === " ") {
1145
this._toggle();
1146
}
1147
};
1148
}
1149
trigger.style.cursor = "pointer";
1150
}
1151
this.bsPopover = new bsPopover(trigger, this.options);
1152
trigger.addEventListener("shown.bs.popover", this._onShown);
1153
trigger.addEventListener("hidden.bs.popover", this._onHidden);
1154
trigger.addEventListener("inserted.bs.popover", this._onInsert);
1155
this.visibilityObserver = this._createVisibilityObserver();
1156
}
1157
disconnectedCallback() {
1158
const trigger = this.triggerElement;
1159
trigger.removeEventListener("shown.bs.popover", this._onShown);
1160
trigger.removeEventListener("hidden.bs.popover", this._onHidden);
1161
trigger.removeEventListener("inserted.bs.popover", this._onInsert);
1162
this.visibilityObserver.disconnect();
1163
this.bsPopover.dispose();
1164
super.disconnectedCallback();
1165
}
1166
getValue() {
1167
return this.visible;
1168
}
1169
_onShown() {
1170
this.visible = true;
1171
this.onChangeCallback(true);
1172
this.visibilityObserver.observe(this.triggerElement);
1173
if (this.focusablePopover) {
1174
document.addEventListener("keydown", this._handleTabKey);
1175
document.addEventListener("keydown", this._handleEscapeKey);
1176
}
1177
if (this.isButtonLike) {
1178
this.triggerElement.setAttribute("aria-pressed", "true");
1179
}
1180
}
1181
_onHidden() {
1182
this.visible = false;
1183
this.onChangeCallback(true);
1184
this._restoreContent();
1185
this.visibilityObserver.unobserve(this.triggerElement);
1186
_BslibPopover.shinyResizeObserver.flush();
1187
if (this.focusablePopover) {
1188
document.removeEventListener("keydown", this._handleTabKey);
1189
document.removeEventListener("keydown", this._handleEscapeKey);
1190
}
1191
if (this.isButtonLike) {
1192
this.triggerElement.setAttribute("aria-pressed", "false");
1193
}
1194
}
1195
_onInsert() {
1196
const { tip } = this.bsPopover;
1197
if (!tip) {
1198
throw new Error(
1199
"Failed to find the popover's DOM element. Please report this bug."
1200
);
1201
}
1202
_BslibPopover.shinyResizeObserver.observe(tip);
1203
if (this.focusablePopover) {
1204
tip.setAttribute("tabindex", "0");
1205
}
1206
this.bsPopoverEl = tip;
1207
}
1208
// 1. Tab on an active trigger focuses the popover.
1209
// 2. Shift+Tab on active popover focuses the trigger.
1210
_handleTabKey(e6) {
1211
if (e6.key !== "Tab")
1212
return;
1213
const { tip } = this.bsPopover;
1214
if (!tip)
1215
return;
1216
const stopEvent = () => {
1217
e6.preventDefault();
1218
e6.stopImmediatePropagation();
1219
};
1220
const active = document.activeElement;
1221
if (active === this.triggerElement && !e6.shiftKey) {
1222
stopEvent();
1223
tip.focus();
1224
}
1225
if (active === tip && e6.shiftKey) {
1226
stopEvent();
1227
this.triggerElement.focus();
1228
}
1229
}
1230
// Allow ESC to close the popover when:
1231
// - the trigger is the active element
1232
// - the activeElement is inside the popover
1233
_handleEscapeKey(e6) {
1234
if (e6.key !== "Escape")
1235
return;
1236
const { tip } = this.bsPopover;
1237
if (!tip)
1238
return;
1239
const active = document.activeElement;
1240
if (active === this.triggerElement || tip.contains(active)) {
1241
e6.preventDefault();
1242
e6.stopImmediatePropagation();
1243
this._hide();
1244
this.triggerElement.focus();
1245
}
1246
}
1247
// Since this.content is an HTMLElement, when it's shown bootstrap.Popover()
1248
// will move the DOM element from this web container to the popover's
1249
// container (which, by default, is the body, but can also be customized). So,
1250
// when the popover is hidden, we're responsible for moving it back to this
1251
// element.
1252
_restoreContent() {
1253
const el = this.bsPopoverEl;
1254
if (!el)
1255
return;
1256
const body = el.querySelector(".popover-body");
1257
if (body)
1258
this.contentContainer.append(body == null ? void 0 : body.firstChild);
1259
const header = el.querySelector(".popover-header");
1260
if (header)
1261
this.contentContainer.append(header == null ? void 0 : header.firstChild);
1262
this.bsPopoverEl = void 0;
1263
}
1264
receiveMessage(el, data) {
1265
const method = data.method;
1266
if (method === "toggle") {
1267
this._toggle(data.value);
1268
} else if (method === "update") {
1269
this._updatePopover(data);
1270
} else {
1271
throw new Error(`Unknown method ${method}`);
1272
}
1273
}
1274
_toggle(x2) {
1275
if (x2 === "toggle" || x2 === void 0) {
1276
x2 = this.visible ? "hide" : "show";
1277
}
1278
if (x2 === "hide") {
1279
this._hide();
1280
}
1281
if (x2 === "show") {
1282
this._show();
1283
}
1284
}
1285
_hide() {
1286
this.bsPopover.hide();
1287
}
1288
// No-op if the popover is already visible or if the trigger element is not visible
1289
// (in either case the tooltip likely won't be positioned correctly)
1290
_show() {
1291
if (!this.visible && this.visibleTrigger) {
1292
this.bsPopover.show();
1293
}
1294
}
1295
_updatePopover(data) {
1296
const { content, header } = data;
1297
const deps = [];
1298
if (content)
1299
deps.push(...content.deps);
1300
if (header)
1301
deps.push(...header.deps);
1302
Shiny.renderDependencies(deps);
1303
const getOrCreateElement = (x2, fallback, selector) => {
1304
var _a;
1305
if (x2)
1306
return createWrapperElement(x2.html, "contents");
1307
if (fallback)
1308
return fallback;
1309
return (_a = this.bsPopover.tip) == null ? void 0 : _a.querySelector(selector);
1310
};
1311
const newHeader = getOrCreateElement(
1312
header,
1313
this.header,
1314
".popover-header"
1315
);
1316
const newContent = getOrCreateElement(
1317
content,
1318
this.content,
1319
".popover-body"
1320
);
1321
D(this._closeButton(newHeader), newContent);
1322
setContentCarefully({
1323
instance: this.bsPopover,
1324
trigger: this.triggerElement,
1325
content: {
1326
// eslint-disable-next-line @typescript-eslint/naming-convention
1327
".popover-header": hasHeader(newHeader) ? newHeader : "",
1328
// eslint-disable-next-line @typescript-eslint/naming-convention
1329
".popover-body": newContent
1330
},
1331
type: "popover"
1332
});
1333
}
1334
_closeButton(header) {
1335
if (!this.focusablePopover) {
1336
return A;
1337
}
1338
const onclick = () => {
1339
this._hide();
1340
if (this.focusablePopover)
1341
this.triggerElement.focus();
1342
};
1343
const top = hasHeader(header) ? "0.6rem" : "0.25rem";
1344
return x`<button
1345
type="button"
1346
aria-label="Close"
1347
class="btn-close"
1348
@click=${onclick}
1349
style="position:absolute; top:${top}; right:0.25rem; width:0.55rem; height:0.55rem; background-size:0.55rem;"
1350
></button>`;
1351
}
1352
// While the popover is shown, watches for changes in the _trigger_
1353
// visibility. If the trigger element becomes no longer visible, then we hide
1354
// the popover (Bootstrap doesn't do this automatically when showing
1355
// programmatically)
1356
_createVisibilityObserver() {
1357
const handler = (entries) => {
1358
if (!this.visible)
1359
return;
1360
entries.forEach((entry) => {
1361
if (!entry.isIntersecting)
1362
this._hide();
1363
});
1364
};
1365
return new IntersectionObserver(handler);
1366
}
1367
};
1368
var BslibPopover = _BslibPopover;
1369
BslibPopover.tagName = "bslib-popover";
1370
BslibPopover.shinyResizeObserver = new ShinyResizeObserver();
1371
///////////////////////////////////////////////////////////////
1372
// Shiny-specific stuff
1373
///////////////////////////////////////////////////////////////
1374
BslibPopover.isShinyInput = true;
1375
__decorateClass([
1376
n({ type: String })
1377
], BslibPopover.prototype, "placement", 2);
1378
__decorateClass([
1379
n({ type: String })
1380
], BslibPopover.prototype, "bsOptions", 2);
1381
function hasHeader(header) {
1382
return !!header && header.childNodes.length > 0;
1383
}
1384
1385
// srcts/src/components/webcomponents/inputDarkMode.ts
1386
var BslibInputDarkMode = class extends s4 {
1387
constructor() {
1388
super(...arguments);
1389
this.attribute = "data-shinytheme";
1390
// eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
1391
this.onChangeCallback = (x2) => {
1392
};
1393
}
1394
// onValueChange = makeValueChangeEmitter(this, this.id);
1395
connectedCallback() {
1396
super.connectedCallback();
1397
this.attribute = this.getAttribute("attribute") || this.attribute;
1398
if (typeof this.mode === "undefined") {
1399
this.mode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
1400
}
1401
this.reflectPreference();
1402
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", ({ matches: isDark }) => {
1403
this.mode = isDark ? "dark" : "light";
1404
this.reflectPreference();
1405
});
1406
this._observeDocumentThemeAttribute();
1407
}
1408
disconnectedCallback() {
1409
this.observer.disconnect();
1410
super.disconnectedCallback();
1411
}
1412
_observeDocumentThemeAttribute() {
1413
this.observer = new MutationObserver((mutations) => {
1414
mutations.forEach((mutation) => {
1415
if (mutation.target !== document.documentElement)
1416
return;
1417
if (mutation.attributeName !== this.attribute)
1418
return;
1419
const newValue = document.documentElement.getAttribute(this.attribute);
1420
if (!newValue || newValue === this.mode)
1421
return;
1422
this.mode = newValue;
1423
});
1424
});
1425
const config = {
1426
attributes: true,
1427
childList: false,
1428
subtree: false
1429
};
1430
this.observer.observe(document.documentElement, config);
1431
}
1432
getValue() {
1433
return this.mode;
1434
}
1435
render() {
1436
const other = this.mode === "light" ? "dark" : "light";
1437
const label = `Switch from ${this.mode} to ${other} mode`;
1438
return x`
1439
<button
1440
title="${label}"
1441
aria-label="${label}"
1442
aria-live="polite"
1443
data-theme="${this.mode}"
1444
@click="${this.onClick}"
1445
>
1446
<svg class="sun-and-moon" aria-hidden="true" viewBox="0 0 24 24">
1447
<mask class="moon" id="moon-mask">
1448
<rect x="0" y="0" width="100%" height="100%" fill="white" />
1449
<circle cx="25" cy="10" r="6" fill="black" />
1450
</mask>
1451
<circle
1452
class="sun"
1453
cx="12"
1454
cy="12"
1455
r="6"
1456
mask="url(#moon-mask)"
1457
fill="currentColor"
1458
/>
1459
<g class="sun-beams" stroke="currentColor">
1460
<line x1="12" y1="1" x2="12" y2="3" />
1461
<line x1="12" y1="21" x2="12" y2="23" />
1462
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
1463
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
1464
<line x1="1" y1="12" x2="3" y2="12" />
1465
<line x1="21" y1="12" x2="23" y2="12" />
1466
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
1467
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
1468
</g>
1469
</svg>
1470
</button>
1471
`;
1472
}
1473
onClick(e6) {
1474
e6.stopPropagation();
1475
this.mode = this.mode === "light" ? "dark" : "light";
1476
}
1477
updated(changedProperties) {
1478
if (changedProperties.has("mode")) {
1479
this.reflectPreference();
1480
this.onChangeCallback(true);
1481
}
1482
}
1483
reflectPreference() {
1484
document.documentElement.setAttribute(this.attribute, this.mode);
1485
window.dispatchEvent(new Event("resize"));
1486
}
1487
};
1488
BslibInputDarkMode.isShinyInput = true;
1489
BslibInputDarkMode.tagName = "bslib-input-dark-mode";
1490
BslibInputDarkMode.shinyCustomMessageHandlers = {
1491
// eslint-disable-next-line @typescript-eslint/naming-convention
1492
"bslib.toggle-dark-mode": ({
1493
method,
1494
value
1495
}) => {
1496
if (method !== "toggle")
1497
return;
1498
if (typeof value === "undefined" || value === null) {
1499
const current = document.documentElement.dataset.bsTheme || "light";
1500
value = current === "light" ? "dark" : "light";
1501
}
1502
document.documentElement.dataset.bsTheme = value;
1503
}
1504
};
1505
BslibInputDarkMode.styles = [
1506
// CSS Variables
1507
i2`
1508
:host {
1509
/* open-props.style via shinycomponent */
1510
--text-1: var(--text-1-light, var(--gray-8, #343a40));
1511
--text-2: var(--text-2-light, var(--gray-7, #495057));
1512
--size-xxs: var(--size-1, 0.25rem);
1513
--ease-in-out-1: cubic-bezier(0.1, 0, 0.9, 1);
1514
--ease-in-out-2: cubic-bezier(0.3, 0, 0.7, 1);
1515
--ease-out-1: cubic-bezier(0, 0, 0.75, 1);
1516
--ease-out-3: cubic-bezier(0, 0, 0.3, 1);
1517
--ease-out-4: cubic-bezier(0, 0, 0.1, 1);
1518
1519
/* shinycomponent */
1520
--speed-fast: 0.15s;
1521
--speed-normal: 0.3s;
1522
1523
/* Size of the icon, uses em units so it scales to font-size */
1524
--size: 1.3em;
1525
1526
/* Because we are (most likely) bigger than one em we will need to move
1527
the button up or down to keep it looking right inline */
1528
--vertical-correction: calc((var(--size) - 1em) / 2);
1529
}
1530
`,
1531
i2`
1532
.sun-and-moon > :is(.moon, .sun, .sun-beams) {
1533
transform-origin: center center;
1534
}
1535
1536
.sun-and-moon > .sun {
1537
fill: none;
1538
stroke: var(--text-1);
1539
stroke-width: var(--stroke-w);
1540
}
1541
1542
button:is(:hover, :focus-visible)
1543
> :is(.sun-and-moon > :is(.moon, .sun)) {
1544
fill: var(--text-2);
1545
}
1546
1547
.sun-and-moon > .sun-beams {
1548
stroke: var(--text-1);
1549
stroke-width: var(--stroke-w);
1550
}
1551
1552
button:is(:hover, :focus-visible) :is(.sun-and-moon > .sun-beams) {
1553
background-color: var(--text-2);
1554
}
1555
1556
[data-theme="dark"] .sun-and-moon > .sun {
1557
fill: var(--text-1);
1558
stroke: none;
1559
stroke-width: 0;
1560
transform: scale(1.6);
1561
}
1562
1563
[data-theme="dark"] .sun-and-moon > .sun-beams {
1564
opacity: 0;
1565
}
1566
1567
[data-theme="dark"] .sun-and-moon > .moon > circle {
1568
transform: translateX(-10px);
1569
}
1570
1571
@supports (cx: 1) {
1572
[data-theme="dark"] .sun-and-moon > .moon > circle {
1573
transform: translateX(0);
1574
cx: 15;
1575
}
1576
}
1577
`,
1578
// Transitions
1579
i2`
1580
.sun-and-moon > .sun {
1581
transition: transform var(--speed-fast) var(--ease-in-out-2)
1582
var(--speed-fast),
1583
fill var(--speed-fast) var(--ease-in-out-2) var(--speed-fast),
1584
stroke-width var(--speed-normal) var(--ease-in-out-2);
1585
}
1586
1587
.sun-and-moon > .sun-beams {
1588
transition: transform var(--speed-fast) var(--ease-out-3),
1589
opacity var(--speed-fast) var(--ease-out-4);
1590
transition-delay: var(--speed-normal);
1591
}
1592
1593
.sun-and-moon .moon > circle {
1594
transition: transform var(--speed-fast) var(--ease-in-out-2),
1595
fill var(--speed-fast) var(--ease-in-out-2);
1596
transition-delay: 0s;
1597
}
1598
1599
@supports (cx: 1) {
1600
.sun-and-moon .moon > circle {
1601
transition: cx var(--speed-normal) var(--ease-in-out-2);
1602
}
1603
1604
[data-theme="dark"] .sun-and-moon .moon > circle {
1605
transition: cx var(--speed-fast) var(--ease-in-out-2);
1606
transition-delay: var(--speed-fast);
1607
}
1608
}
1609
1610
[data-theme="dark"] .sun-and-moon > .sun {
1611
transition-delay: 0s;
1612
transition-duration: var(--speed-normal);
1613
transition-timing-function: var(--ease-in-out-2);
1614
}
1615
1616
[data-theme="dark"] .sun-and-moon > .sun-beams {
1617
transform: scale(0.3);
1618
transition: transform var(--speed-normal) var(--ease-in-out-2),
1619
opacity var(--speed-fast) var(--ease-out-1);
1620
transition-delay: 0s;
1621
}
1622
`,
1623
i2`
1624
:host {
1625
display: inline-block;
1626
1627
/* We control the stroke size manually here. We don't want it getting so
1628
small its not visible but also not so big it looks cartoonish */
1629
--stroke-w: clamp(1px, 0.1em, 6px);
1630
}
1631
1632
button {
1633
/* This is needed to let the svg use the em sizes */
1634
font-size: inherit;
1635
1636
/* Make sure the button is fully centered */
1637
display: grid;
1638
place-content: center;
1639
1640
/* A little bit of padding to make it easier to press */
1641
padding: var(--size-xxs);
1642
background: none;
1643
border: none;
1644
aspect-ratio: 1;
1645
border-radius: 50%;
1646
cursor: pointer;
1647
touch-action: manipulation;
1648
-webkit-tap-highlight-color: transparent;
1649
outline-offset: var(--size-xxs);
1650
1651
/* Move down to adjust for being larger than 1em */
1652
transform: translateY(var(--vertical-correction));
1653
margin-block-end: var(--vertical-correction);
1654
}
1655
1656
/*
1657
button:is(:hover, :focus-visible) {
1658
background: var(--surface-4);
1659
}
1660
*/
1661
1662
button > svg {
1663
height: var(--size);
1664
width: var(--size);
1665
stroke-linecap: round;
1666
overflow: visible;
1667
}
1668
1669
svg line,
1670
svg circle {
1671
vector-effect: non-scaling-stroke;
1672
}
1673
`
1674
];
1675
__decorateClass([
1676
n({ type: String, reflect: true })
1677
], BslibInputDarkMode.prototype, "mode", 2);
1678
1679
// srcts/src/components/webcomponents/_makeInputBinding.ts
1680
function makeInputBinding(tagName, { type = null } = {}) {
1681
if (!window.Shiny) {
1682
return;
1683
}
1684
class NewCustomBinding extends Shiny["InputBinding"] {
1685
constructor() {
1686
super();
1687
}
1688
find(scope) {
1689
return $(scope).find(tagName);
1690
}
1691
getValue(el) {
1692
if ("getValue" in el) {
1693
return el.getValue();
1694
} else {
1695
return el.value;
1696
}
1697
}
1698
// eslint-disable-next-line @typescript-eslint/no-unused-vars
1699
getType(el) {
1700
return type;
1701
}
1702
subscribe(el, callback) {
1703
el.onChangeCallback = callback;
1704
}
1705
unsubscribe(el) {
1706
el.onChangeCallback = (x2) => {
1707
};
1708
}
1709
receiveMessage(el, data) {
1710
el.receiveMessage(el, data);
1711
}
1712
}
1713
Shiny.inputBindings.register(new NewCustomBinding(), `${tagName}-Binding`);
1714
}
1715
1716
// srcts/src/components/_shinyAddCustomMessageHandlers.ts
1717
function shinyAddCustomMessageHandlers(handlers) {
1718
if (!window.Shiny) {
1719
return;
1720
}
1721
for (const [name, handler] of Object.entries(handlers)) {
1722
Shiny.addCustomMessageHandler(name, handler);
1723
}
1724
}
1725
1726
// srcts/src/components/webcomponents/index.ts
1727
[BslibTooltip, BslibPopover, BslibInputDarkMode].forEach((cls) => {
1728
customElements.define(cls.tagName, cls);
1729
if (window.Shiny) {
1730
if (cls.isShinyInput)
1731
makeInputBinding(cls.tagName);
1732
if ("shinyCustomMessageHandlers" in cls) {
1733
shinyAddCustomMessageHandlers(cls["shinyCustomMessageHandlers"]);
1734
}
1735
}
1736
});
1737
})();
1738
/*! Bundled license information:
1739
1740
@lit/reactive-element/decorators/custom-element.js:
1741
(**
1742
* @license
1743
* Copyright 2017 Google LLC
1744
* SPDX-License-Identifier: BSD-3-Clause
1745
*)
1746
1747
@lit/reactive-element/decorators/property.js:
1748
(**
1749
* @license
1750
* Copyright 2017 Google LLC
1751
* SPDX-License-Identifier: BSD-3-Clause
1752
*)
1753
1754
@lit/reactive-element/decorators/state.js:
1755
(**
1756
* @license
1757
* Copyright 2017 Google LLC
1758
* SPDX-License-Identifier: BSD-3-Clause
1759
*)
1760
1761
@lit/reactive-element/decorators/base.js:
1762
(**
1763
* @license
1764
* Copyright 2017 Google LLC
1765
* SPDX-License-Identifier: BSD-3-Clause
1766
*)
1767
1768
@lit/reactive-element/decorators/event-options.js:
1769
(**
1770
* @license
1771
* Copyright 2017 Google LLC
1772
* SPDX-License-Identifier: BSD-3-Clause
1773
*)
1774
1775
@lit/reactive-element/decorators/query.js:
1776
(**
1777
* @license
1778
* Copyright 2017 Google LLC
1779
* SPDX-License-Identifier: BSD-3-Clause
1780
*)
1781
1782
@lit/reactive-element/decorators/query-all.js:
1783
(**
1784
* @license
1785
* Copyright 2017 Google LLC
1786
* SPDX-License-Identifier: BSD-3-Clause
1787
*)
1788
1789
@lit/reactive-element/decorators/query-async.js:
1790
(**
1791
* @license
1792
* Copyright 2017 Google LLC
1793
* SPDX-License-Identifier: BSD-3-Clause
1794
*)
1795
1796
@lit/reactive-element/decorators/query-assigned-elements.js:
1797
(**
1798
* @license
1799
* Copyright 2021 Google LLC
1800
* SPDX-License-Identifier: BSD-3-Clause
1801
*)
1802
1803
@lit/reactive-element/decorators/query-assigned-nodes.js:
1804
(**
1805
* @license
1806
* Copyright 2017 Google LLC
1807
* SPDX-License-Identifier: BSD-3-Clause
1808
*)
1809
1810
@lit/reactive-element/css-tag.js:
1811
(**
1812
* @license
1813
* Copyright 2019 Google LLC
1814
* SPDX-License-Identifier: BSD-3-Clause
1815
*)
1816
1817
@lit/reactive-element/reactive-element.js:
1818
(**
1819
* @license
1820
* Copyright 2017 Google LLC
1821
* SPDX-License-Identifier: BSD-3-Clause
1822
*)
1823
1824
lit-html/lit-html.js:
1825
(**
1826
* @license
1827
* Copyright 2017 Google LLC
1828
* SPDX-License-Identifier: BSD-3-Clause
1829
*)
1830
1831
lit-element/lit-element.js:
1832
(**
1833
* @license
1834
* Copyright 2017 Google LLC
1835
* SPDX-License-Identifier: BSD-3-Clause
1836
*)
1837
1838
lit-html/is-server.js:
1839
(**
1840
* @license
1841
* Copyright 2022 Google LLC
1842
* SPDX-License-Identifier: BSD-3-Clause
1843
*)
1844
*/
1845
1846
1847