Mirror of https://github.com/improsocial/impro An extensible Bluesky client for web impro.social
5

Configure Feed

Select the types of activity you want to include in your feed.

Pin lit-html and fix slow chatDetail render bug

Grace Kind (Jul 11, 2026, 7:28 PM -0500) c5617702 b503c90f

+145 -138
+6 -6
package-lock.json
··· 1 1 { 2 2 "name": "impro", 3 - "version": "0.14.119", 3 + "version": "0.17.138", 4 4 "lockfileVersion": 3, 5 5 "requires": true, 6 6 "packages": { 7 7 "": { 8 8 "name": "impro", 9 - "version": "0.14.119", 9 + "version": "0.17.138", 10 10 "license": "0BSD", 11 11 "dependencies": { 12 12 "@capacitor/app": "^7.0.0", ··· 15 15 "@capacitor/haptics": "^7.0.0", 16 16 "@capacitor/ios": "^7.0.0", 17 17 "@capacitor/status-bar": "^7.0.0", 18 - "lit-html": "^3.3.1" 18 + "lit-html": "3.3.3" 19 19 }, 20 20 "devDependencies": { 21 21 "@11ty/eleventy": "^3.1.2", ··· 6040 6040 "license": "MIT" 6041 6041 }, 6042 6042 "node_modules/lit-html": { 6043 - "version": "3.3.1", 6044 - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", 6045 - "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", 6043 + "version": "3.3.3", 6044 + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.3.tgz", 6045 + "integrity": "sha512-el8M6jK2o3RXBnrSHX3ZKrsN8zEV63pSExTO1wYJz7QndGYZ8353e2a5PPX+qHe2aGayfnchQmkAojaWAREOIA==", 6046 6046 "license": "BSD-3-Clause", 6047 6047 "dependencies": { 6048 6048 "@types/trusted-types": "^2.0.2"
+2 -2
package.json
··· 1 1 { 2 2 "name": "impro", 3 - "version": "0.17.138", 3 + "version": "0.17.139", 4 4 "type": "module", 5 5 "scripts": { 6 6 "start": "rm -rf \"${BUILD_DIR:-build}\" && NODE_ENV=development eleventy --serve", ··· 44 44 "@capacitor/haptics": "^7.0.0", 45 45 "@capacitor/ios": "^7.0.0", 46 46 "@capacitor/status-bar": "^7.0.0", 47 - "lit-html": "^3.3.1" 47 + "lit-html": "3.3.3" 48 48 } 49 49 }
+131 -130
src/js/lib/lit-html.js
··· 1 1 // node_modules/lit-html/lit-html.js 2 2 var t = globalThis; 3 - var i = t.trustedTypes; 4 - var s = i ? i.createPolicy("lit-html", { createHTML: (t4) => t4 }) : void 0; 5 - var e = "$lit$"; 6 - var h = `lit$${Math.random().toFixed(9).slice(2)}$`; 7 - var o = "?" + h; 8 - var n = `<${o}>`; 9 - var r = document; 10 - var l = () => r.createComment(""); 11 - var c = (t4) => null === t4 || "object" != typeof t4 && "function" != typeof t4; 12 - var a = Array.isArray; 13 - var u = (t4) => a(t4) || "function" == typeof t4?.[Symbol.iterator]; 14 - var d = "[ \n\f\r]"; 15 - var f = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g; 16 - var v = /-->/g; 17 - var _ = />/g; 18 - var m = RegExp(`>|${d}(?:([^\\s"'>=/]+)(${d}*=${d}*(?:[^ 3 + var i = (t4) => t4; 4 + var s = t.trustedTypes; 5 + var e = s ? s.createPolicy("lit-html", { createHTML: (t4) => t4 }) : void 0; 6 + var h = "$lit$"; 7 + var o = `lit$${Math.random().toFixed(9).slice(2)}$`; 8 + var n = "?" + o; 9 + var r = `<${n}>`; 10 + var l = document; 11 + var c = () => l.createComment(""); 12 + var a = (t4) => null === t4 || "object" != typeof t4 && "function" != typeof t4; 13 + var u = Array.isArray; 14 + var d = (t4) => u(t4) || "function" == typeof t4?.[Symbol.iterator]; 15 + var f = "[ \n\f\r]"; 16 + var v = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g; 17 + var _ = /-->/g; 18 + var m = />/g; 19 + var p = RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^ 19 20 \f\r"'\`<>=]|("|')|))|$)`, "g"); 20 - var p = /'/g; 21 - var g = /"/g; 22 - var $ = /^(?:script|style|textarea|title)$/i; 23 - var y = (t4) => (i4, ...s3) => ({ _$litType$: t4, strings: i4, values: s3 }); 24 - var x = y(1); 25 - var b = y(2); 26 - var w = y(3); 27 - var T = Symbol.for("lit-noChange"); 28 - var E = Symbol.for("lit-nothing"); 29 - var A = /* @__PURE__ */ new WeakMap(); 30 - var C = r.createTreeWalker(r, 129); 31 - function P(t4, i4) { 32 - if (!a(t4) || !t4.hasOwnProperty("raw")) throw Error("invalid template strings array"); 33 - return void 0 !== s ? s.createHTML(i4) : i4; 21 + var g = /'/g; 22 + var $ = /"/g; 23 + var y = /^(?:script|style|textarea|title)$/i; 24 + var x = (t4) => (i4, ...s3) => ({ _$litType$: t4, strings: i4, values: s3 }); 25 + var b = x(1); 26 + var w = x(2); 27 + var T = x(3); 28 + var E = Symbol.for("lit-noChange"); 29 + var A = Symbol.for("lit-nothing"); 30 + var C = /* @__PURE__ */ new WeakMap(); 31 + var P = l.createTreeWalker(l, 129); 32 + function V(t4, i4) { 33 + if (!u(t4) || !t4.hasOwnProperty("raw")) throw Error("invalid template strings array"); 34 + return void 0 !== e ? e.createHTML(i4) : i4; 34 35 } 35 - var V = (t4, i4) => { 36 - const s3 = t4.length - 1, o4 = []; 37 - let r3, l2 = 2 === i4 ? "<svg>" : 3 === i4 ? "<math>" : "", c3 = f; 36 + var N = (t4, i4) => { 37 + const s3 = t4.length - 1, e3 = []; 38 + let n4, l2 = 2 === i4 ? "<svg>" : 3 === i4 ? "<math>" : "", c3 = v; 38 39 for (let i5 = 0; i5 < s3; i5++) { 39 40 const s4 = t4[i5]; 40 - let a2, u3, d2 = -1, y2 = 0; 41 - for (; y2 < s4.length && (c3.lastIndex = y2, u3 = c3.exec(s4), null !== u3); ) y2 = c3.lastIndex, c3 === f ? "!--" === u3[1] ? c3 = v : void 0 !== u3[1] ? c3 = _ : void 0 !== u3[2] ? ($.test(u3[2]) && (r3 = RegExp("</" + u3[2], "g")), c3 = m) : void 0 !== u3[3] && (c3 = m) : c3 === m ? ">" === u3[0] ? (c3 = r3 ?? f, d2 = -1) : void 0 === u3[1] ? d2 = -2 : (d2 = c3.lastIndex - u3[2].length, a2 = u3[1], c3 = void 0 === u3[3] ? m : '"' === u3[3] ? g : p) : c3 === g || c3 === p ? c3 = m : c3 === v || c3 === _ ? c3 = f : (c3 = m, r3 = void 0); 42 - const x2 = c3 === m && t4[i5 + 1].startsWith("/>") ? " " : ""; 43 - l2 += c3 === f ? s4 + n : d2 >= 0 ? (o4.push(a2), s4.slice(0, d2) + e + s4.slice(d2) + h + x2) : s4 + h + (-2 === d2 ? i5 : x2); 41 + let a2, u2, d2 = -1, f3 = 0; 42 + for (; f3 < s4.length && (c3.lastIndex = f3, u2 = c3.exec(s4), null !== u2); ) f3 = c3.lastIndex, c3 === v ? "!--" === u2[1] ? c3 = _ : void 0 !== u2[1] ? c3 = m : void 0 !== u2[2] ? (y.test(u2[2]) && (n4 = RegExp("</" + u2[2], "g")), c3 = p) : void 0 !== u2[3] && (c3 = p) : c3 === p ? ">" === u2[0] ? (c3 = n4 ?? v, d2 = -1) : void 0 === u2[1] ? d2 = -2 : (d2 = c3.lastIndex - u2[2].length, a2 = u2[1], c3 = void 0 === u2[3] ? p : '"' === u2[3] ? $ : g) : c3 === $ || c3 === g ? c3 = p : c3 === _ || c3 === m ? c3 = v : (c3 = p, n4 = void 0); 43 + const x2 = c3 === p && t4[i5 + 1].startsWith("/>") ? " " : ""; 44 + l2 += c3 === v ? s4 + r : d2 >= 0 ? (e3.push(a2), s4.slice(0, d2) + h + s4.slice(d2) + o + x2) : s4 + o + (-2 === d2 ? i5 : x2); 44 45 } 45 - return [P(t4, l2 + (t4[s3] || "<?>") + (2 === i4 ? "</svg>" : 3 === i4 ? "</math>" : "")), o4]; 46 + return [V(t4, l2 + (t4[s3] || "<?>") + (2 === i4 ? "</svg>" : 3 === i4 ? "</math>" : "")), e3]; 46 47 }; 47 - var N = class _N { 48 - constructor({ strings: t4, _$litType$: s3 }, n4) { 49 - let r3; 48 + var S = class _S { 49 + constructor({ strings: t4, _$litType$: i4 }, e3) { 50 + let r4; 50 51 this.parts = []; 51 - let c3 = 0, a2 = 0; 52 - const u3 = t4.length - 1, d2 = this.parts, [f4, v2] = V(t4, s3); 53 - if (this.el = _N.createElement(f4, n4), C.currentNode = this.el.content, 2 === s3 || 3 === s3) { 52 + let l2 = 0, a2 = 0; 53 + const u2 = t4.length - 1, d2 = this.parts, [f3, v2] = N(t4, i4); 54 + if (this.el = _S.createElement(f3, e3), P.currentNode = this.el.content, 2 === i4 || 3 === i4) { 54 55 const t5 = this.el.content.firstChild; 55 56 t5.replaceWith(...t5.childNodes); 56 57 } 57 - for (; null !== (r3 = C.nextNode()) && d2.length < u3; ) { 58 - if (1 === r3.nodeType) { 59 - if (r3.hasAttributes()) for (const t5 of r3.getAttributeNames()) if (t5.endsWith(e)) { 60 - const i4 = v2[a2++], s4 = r3.getAttribute(t5).split(h), e3 = /([.?@])?(.*)/.exec(i4); 61 - d2.push({ type: 1, index: c3, name: e3[2], strings: s4, ctor: "." === e3[1] ? H : "?" === e3[1] ? I : "@" === e3[1] ? L : k }), r3.removeAttribute(t5); 62 - } else t5.startsWith(h) && (d2.push({ type: 6, index: c3 }), r3.removeAttribute(t5)); 63 - if ($.test(r3.tagName)) { 64 - const t5 = r3.textContent.split(h), s4 = t5.length - 1; 65 - if (s4 > 0) { 66 - r3.textContent = i ? i.emptyScript : ""; 67 - for (let i4 = 0; i4 < s4; i4++) r3.append(t5[i4], l()), C.nextNode(), d2.push({ type: 2, index: ++c3 }); 68 - r3.append(t5[s4], l()); 58 + for (; null !== (r4 = P.nextNode()) && d2.length < u2; ) { 59 + if (1 === r4.nodeType) { 60 + if (r4.hasAttributes()) for (const t5 of r4.getAttributeNames()) if (t5.endsWith(h)) { 61 + const i5 = v2[a2++], s3 = r4.getAttribute(t5).split(o), e4 = /([.?@])?(.*)/.exec(i5); 62 + d2.push({ type: 1, index: l2, name: e4[2], strings: s3, ctor: "." === e4[1] ? I : "?" === e4[1] ? L : "@" === e4[1] ? z : H }), r4.removeAttribute(t5); 63 + } else t5.startsWith(o) && (d2.push({ type: 6, index: l2 }), r4.removeAttribute(t5)); 64 + if (y.test(r4.tagName)) { 65 + const t5 = r4.textContent.split(o), i5 = t5.length - 1; 66 + if (i5 > 0) { 67 + r4.textContent = s ? s.emptyScript : ""; 68 + for (let s3 = 0; s3 < i5; s3++) r4.append(t5[s3], c()), P.nextNode(), d2.push({ type: 2, index: ++l2 }); 69 + r4.append(t5[i5], c()); 69 70 } 70 71 } 71 - } else if (8 === r3.nodeType) if (r3.data === o) d2.push({ type: 2, index: c3 }); 72 + } else if (8 === r4.nodeType) if (r4.data === n) d2.push({ type: 2, index: l2 }); 72 73 else { 73 74 let t5 = -1; 74 - for (; -1 !== (t5 = r3.data.indexOf(h, t5 + 1)); ) d2.push({ type: 7, index: c3 }), t5 += h.length - 1; 75 + for (; -1 !== (t5 = r4.data.indexOf(o, t5 + 1)); ) d2.push({ type: 7, index: l2 }), t5 += o.length - 1; 75 76 } 76 - c3++; 77 + l2++; 77 78 } 78 79 } 79 80 static createElement(t4, i4) { 80 - const s3 = r.createElement("template"); 81 + const s3 = l.createElement("template"); 81 82 return s3.innerHTML = t4, s3; 82 83 } 83 84 }; 84 - function S(t4, i4, s3 = t4, e3) { 85 - if (i4 === T) return i4; 85 + function M(t4, i4, s3 = t4, e3) { 86 + if (i4 === E) return i4; 86 87 let h3 = void 0 !== e3 ? s3._$Co?.[e3] : s3._$Cl; 87 - const o4 = c(i4) ? void 0 : i4._$litDirective$; 88 - return h3?.constructor !== o4 && (h3?._$AO?.(false), void 0 === o4 ? h3 = void 0 : (h3 = new o4(t4), h3._$AT(t4, s3, e3)), void 0 !== e3 ? (s3._$Co ??= [])[e3] = h3 : s3._$Cl = h3), void 0 !== h3 && (i4 = S(t4, h3._$AS(t4, i4.values), h3, e3)), i4; 88 + const o4 = a(i4) ? void 0 : i4._$litDirective$; 89 + return h3?.constructor !== o4 && (h3?._$AO?.(false), void 0 === o4 ? h3 = void 0 : (h3 = new o4(t4), h3._$AT(t4, s3, e3)), void 0 !== e3 ? (s3._$Co ??= [])[e3] = h3 : s3._$Cl = h3), void 0 !== h3 && (i4 = M(t4, h3._$AS(t4, i4.values), h3, e3)), i4; 89 90 } 90 - var M = class { 91 + var R = class { 91 92 constructor(t4, i4) { 92 93 this._$AV = [], this._$AN = void 0, this._$AD = t4, this._$AM = i4; 93 94 } ··· 98 99 return this._$AM._$AU; 99 100 } 100 101 u(t4) { 101 - const { el: { content: i4 }, parts: s3 } = this._$AD, e3 = (t4?.creationScope ?? r).importNode(i4, true); 102 - C.currentNode = e3; 103 - let h3 = C.nextNode(), o4 = 0, n4 = 0, l2 = s3[0]; 104 - for (; void 0 !== l2; ) { 105 - if (o4 === l2.index) { 102 + const { el: { content: i4 }, parts: s3 } = this._$AD, e3 = (t4?.creationScope ?? l).importNode(i4, true); 103 + P.currentNode = e3; 104 + let h3 = P.nextNode(), o4 = 0, n4 = 0, r4 = s3[0]; 105 + for (; void 0 !== r4; ) { 106 + if (o4 === r4.index) { 106 107 let i5; 107 - 2 === l2.type ? i5 = new R(h3, h3.nextSibling, this, t4) : 1 === l2.type ? i5 = new l2.ctor(h3, l2.name, l2.strings, this, t4) : 6 === l2.type && (i5 = new z(h3, this, t4)), this._$AV.push(i5), l2 = s3[++n4]; 108 + 2 === r4.type ? i5 = new k(h3, h3.nextSibling, this, t4) : 1 === r4.type ? i5 = new r4.ctor(h3, r4.name, r4.strings, this, t4) : 6 === r4.type && (i5 = new Z(h3, this, t4)), this._$AV.push(i5), r4 = s3[++n4]; 108 109 } 109 - o4 !== l2?.index && (h3 = C.nextNode(), o4++); 110 + o4 !== r4?.index && (h3 = P.nextNode(), o4++); 110 111 } 111 - return C.currentNode = r, e3; 112 + return P.currentNode = l, e3; 112 113 } 113 114 p(t4) { 114 115 let i4 = 0; 115 116 for (const s3 of this._$AV) void 0 !== s3 && (void 0 !== s3.strings ? (s3._$AI(t4, s3, i4), i4 += s3.strings.length - 2) : s3._$AI(t4[i4])), i4++; 116 117 } 117 118 }; 118 - var R = class _R { 119 + var k = class _k { 119 120 get _$AU() { 120 121 return this._$AM?._$AU ?? this._$Cv; 121 122 } 122 123 constructor(t4, i4, s3, e3) { 123 - this.type = 2, this._$AH = E, this._$AN = void 0, this._$AA = t4, this._$AB = i4, this._$AM = s3, this.options = e3, this._$Cv = e3?.isConnected ?? true; 124 + this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = t4, this._$AB = i4, this._$AM = s3, this.options = e3, this._$Cv = e3?.isConnected ?? true; 124 125 } 125 126 get parentNode() { 126 127 let t4 = this._$AA.parentNode; ··· 134 135 return this._$AB; 135 136 } 136 137 _$AI(t4, i4 = this) { 137 - t4 = S(this, t4, i4), c(t4) ? t4 === E || null == t4 || "" === t4 ? (this._$AH !== E && this._$AR(), this._$AH = E) : t4 !== this._$AH && t4 !== T && this._(t4) : void 0 !== t4._$litType$ ? this.$(t4) : void 0 !== t4.nodeType ? this.T(t4) : u(t4) ? this.k(t4) : this._(t4); 138 + t4 = M(this, t4, i4), a(t4) ? t4 === A || null == t4 || "" === t4 ? (this._$AH !== A && this._$AR(), this._$AH = A) : t4 !== this._$AH && t4 !== E && this._(t4) : void 0 !== t4._$litType$ ? this.$(t4) : void 0 !== t4.nodeType ? this.T(t4) : d(t4) ? this.k(t4) : this._(t4); 138 139 } 139 140 O(t4) { 140 141 return this._$AA.parentNode.insertBefore(t4, this._$AB); ··· 143 144 this._$AH !== t4 && (this._$AR(), this._$AH = this.O(t4)); 144 145 } 145 146 _(t4) { 146 - this._$AH !== E && c(this._$AH) ? this._$AA.nextSibling.data = t4 : this.T(r.createTextNode(t4)), this._$AH = t4; 147 + this._$AH !== A && a(this._$AH) ? this._$AA.nextSibling.data = t4 : this.T(l.createTextNode(t4)), this._$AH = t4; 147 148 } 148 149 $(t4) { 149 - const { values: i4, _$litType$: s3 } = t4, e3 = "number" == typeof s3 ? this._$AC(t4) : (void 0 === s3.el && (s3.el = N.createElement(P(s3.h, s3.h[0]), this.options)), s3); 150 + const { values: i4, _$litType$: s3 } = t4, e3 = "number" == typeof s3 ? this._$AC(t4) : (void 0 === s3.el && (s3.el = S.createElement(V(s3.h, s3.h[0]), this.options)), s3); 150 151 if (this._$AH?._$AD === e3) this._$AH.p(i4); 151 152 else { 152 - const t5 = new M(e3, this), s4 = t5.u(this.options); 153 + const t5 = new R(e3, this), s4 = t5.u(this.options); 153 154 t5.p(i4), this.T(s4), this._$AH = t5; 154 155 } 155 156 } 156 157 _$AC(t4) { 157 - let i4 = A.get(t4.strings); 158 - return void 0 === i4 && A.set(t4.strings, i4 = new N(t4)), i4; 158 + let i4 = C.get(t4.strings); 159 + return void 0 === i4 && C.set(t4.strings, i4 = new S(t4)), i4; 159 160 } 160 161 k(t4) { 161 - a(this._$AH) || (this._$AH = [], this._$AR()); 162 + u(this._$AH) || (this._$AH = [], this._$AR()); 162 163 const i4 = this._$AH; 163 164 let s3, e3 = 0; 164 - for (const h3 of t4) e3 === i4.length ? i4.push(s3 = new _R(this.O(l()), this.O(l()), this, this.options)) : s3 = i4[e3], s3._$AI(h3), e3++; 165 + for (const h3 of t4) e3 === i4.length ? i4.push(s3 = new _k(this.O(c()), this.O(c()), this, this.options)) : s3 = i4[e3], s3._$AI(h3), e3++; 165 166 e3 < i4.length && (this._$AR(s3 && s3._$AB.nextSibling, e3), i4.length = e3); 166 167 } 167 - _$AR(t4 = this._$AA.nextSibling, i4) { 168 - for (this._$AP?.(false, true, i4); t4 !== this._$AB; ) { 169 - const i5 = t4.nextSibling; 170 - t4.remove(), t4 = i5; 168 + _$AR(t4 = this._$AA.nextSibling, s3) { 169 + for (this._$AP?.(false, true, s3); t4 !== this._$AB; ) { 170 + const s4 = i(t4).nextSibling; 171 + i(t4).remove(), t4 = s4; 171 172 } 172 173 } 173 174 setConnected(t4) { 174 175 void 0 === this._$AM && (this._$Cv = t4, this._$AP?.(t4)); 175 176 } 176 177 }; 177 - var k = class { 178 + var H = class { 178 179 get tagName() { 179 180 return this.element.tagName; 180 181 } ··· 182 183 return this._$AM._$AU; 183 184 } 184 185 constructor(t4, i4, s3, e3, h3) { 185 - this.type = 1, this._$AH = E, this._$AN = void 0, this.element = t4, this.name = i4, this._$AM = e3, this.options = h3, s3.length > 2 || "" !== s3[0] || "" !== s3[1] ? (this._$AH = Array(s3.length - 1).fill(new String()), this.strings = s3) : this._$AH = E; 186 + this.type = 1, this._$AH = A, this._$AN = void 0, this.element = t4, this.name = i4, this._$AM = e3, this.options = h3, s3.length > 2 || "" !== s3[0] || "" !== s3[1] ? (this._$AH = Array(s3.length - 1).fill(new String()), this.strings = s3) : this._$AH = A; 186 187 } 187 188 _$AI(t4, i4 = this, s3, e3) { 188 189 const h3 = this.strings; 189 190 let o4 = false; 190 - if (void 0 === h3) t4 = S(this, t4, i4, 0), o4 = !c(t4) || t4 !== this._$AH && t4 !== T, o4 && (this._$AH = t4); 191 + if (void 0 === h3) t4 = M(this, t4, i4, 0), o4 = !a(t4) || t4 !== this._$AH && t4 !== E, o4 && (this._$AH = t4); 191 192 else { 192 193 const e4 = t4; 193 - let n4, r3; 194 - for (t4 = h3[0], n4 = 0; n4 < h3.length - 1; n4++) r3 = S(this, e4[s3 + n4], i4, n4), r3 === T && (r3 = this._$AH[n4]), o4 ||= !c(r3) || r3 !== this._$AH[n4], r3 === E ? t4 = E : t4 !== E && (t4 += (r3 ?? "") + h3[n4 + 1]), this._$AH[n4] = r3; 194 + let n4, r4; 195 + for (t4 = h3[0], n4 = 0; n4 < h3.length - 1; n4++) r4 = M(this, e4[s3 + n4], i4, n4), r4 === E && (r4 = this._$AH[n4]), o4 ||= !a(r4) || r4 !== this._$AH[n4], r4 === A ? t4 = A : t4 !== A && (t4 += (r4 ?? "") + h3[n4 + 1]), this._$AH[n4] = r4; 195 196 } 196 197 o4 && !e3 && this.j(t4); 197 198 } 198 199 j(t4) { 199 - t4 === E ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t4 ?? ""); 200 + t4 === A ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t4 ?? ""); 200 201 } 201 202 }; 202 - var H = class extends k { 203 + var I = class extends H { 203 204 constructor() { 204 205 super(...arguments), this.type = 3; 205 206 } 206 207 j(t4) { 207 - this.element[this.name] = t4 === E ? void 0 : t4; 208 + this.element[this.name] = t4 === A ? void 0 : t4; 208 209 } 209 210 }; 210 - var I = class extends k { 211 + var L = class extends H { 211 212 constructor() { 212 213 super(...arguments), this.type = 4; 213 214 } 214 215 j(t4) { 215 - this.element.toggleAttribute(this.name, !!t4 && t4 !== E); 216 + this.element.toggleAttribute(this.name, !!t4 && t4 !== A); 216 217 } 217 218 }; 218 - var L = class extends k { 219 + var z = class extends H { 219 220 constructor(t4, i4, s3, e3, h3) { 220 221 super(t4, i4, s3, e3, h3), this.type = 5; 221 222 } 222 223 _$AI(t4, i4 = this) { 223 - if ((t4 = S(this, t4, i4, 0) ?? E) === T) return; 224 - const s3 = this._$AH, e3 = t4 === E && s3 !== E || t4.capture !== s3.capture || t4.once !== s3.once || t4.passive !== s3.passive, h3 = t4 !== E && (s3 === E || e3); 224 + if ((t4 = M(this, t4, i4, 0) ?? A) === E) return; 225 + const s3 = this._$AH, e3 = t4 === A && s3 !== A || t4.capture !== s3.capture || t4.once !== s3.once || t4.passive !== s3.passive, h3 = t4 !== A && (s3 === A || e3); 225 226 e3 && this.element.removeEventListener(this.name, this, s3), h3 && this.element.addEventListener(this.name, this, t4), this._$AH = t4; 226 227 } 227 228 handleEvent(t4) { 228 229 "function" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t4) : this._$AH.handleEvent(t4); 229 230 } 230 231 }; 231 - var z = class { 232 + var Z = class { 232 233 constructor(t4, i4, s3) { 233 234 this.element = t4, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s3; 234 235 } ··· 236 237 return this._$AM._$AU; 237 238 } 238 239 _$AI(t4) { 239 - S(this, t4); 240 + M(this, t4); 240 241 } 241 242 }; 242 - var Z = { M: e, P: h, A: o, C: 1, L: V, R: M, D: u, V: S, I: R, H: k, N: I, U: L, B: H, F: z }; 243 - var j = t.litHtmlPolyfillSupport; 244 - j?.(N, R), (t.litHtmlVersions ??= []).push("3.3.1"); 245 - var B = (t4, i4, s3) => { 243 + var j = { M: h, P: o, A: n, C: 1, L: N, R, D: d, V: M, I: k, H, N: L, U: z, B: I, F: Z }; 244 + var B = t.litHtmlPolyfillSupport; 245 + B?.(S, k), (t.litHtmlVersions ??= []).push("3.3.3"); 246 + var D = (t4, i4, s3) => { 246 247 const e3 = s3?.renderBefore ?? i4; 247 248 let h3 = e3._$litPart$; 248 249 if (void 0 === h3) { 249 250 const t5 = s3?.renderBefore ?? null; 250 - e3._$litPart$ = h3 = new R(i4.insertBefore(l(), t5), t5, void 0, s3 ?? {}); 251 + e3._$litPart$ = h3 = new k(i4.insertBefore(c(), t5), t5, void 0, s3 ?? {}); 251 252 } 252 253 return h3._$AI(t4), h3; 253 254 }; ··· 273 274 }; 274 275 275 276 // node_modules/lit-html/directive-helpers.js 276 - var { I: t3 } = Z; 277 - var f2 = (o4) => void 0 === o4.strings; 278 - var u2 = {}; 279 - var m2 = (o4, t4 = u2) => o4._$AH = t4; 277 + var { I: t3 } = j; 278 + var r2 = (o4) => void 0 === o4.strings; 279 + var m2 = {}; 280 + var p2 = (o4, t4 = m2) => o4._$AH = t4; 280 281 281 282 // node_modules/lit-html/directives/keyed.js 282 283 var i3 = e2(class extends i2 { 283 284 constructor() { 284 - super(...arguments), this.key = E; 285 + super(...arguments), this.key = A; 285 286 } 286 - render(r3, t4) { 287 - return this.key = r3, t4; 287 + render(r4, t4) { 288 + return this.key = r4, t4; 288 289 } 289 - update(r3, [t4, e3]) { 290 - return t4 !== this.key && (m2(r3), this.key = t4), e3; 290 + update(r4, [t4, e3]) { 291 + return t4 !== this.key && (p2(r4), this.key = t4), e3; 291 292 } 292 293 }); 293 294 ··· 305 306 e3 = t4._$AN, e3.delete(i4), i4 = t4; 306 307 } while (0 === e3?.size); 307 308 }; 308 - var r2 = (i4) => { 309 + var r3 = (i4) => { 309 310 for (let t4; t4 = i4._$AM; i4 = t4) { 310 311 let e3 = t4._$AN; 311 312 if (void 0 === e3) t4._$AN = e3 = /* @__PURE__ */ new Set(); ··· 314 315 } 315 316 }; 316 317 function h2(i4) { 317 - void 0 !== this._$AN ? (o2(this), this._$AM = i4, r2(this)) : this._$AM = i4; 318 + void 0 !== this._$AN ? (o2(this), this._$AM = i4, r3(this)) : this._$AM = i4; 318 319 } 319 320 function n2(i4, t4 = false, e3 = 0) { 320 - const r3 = this._$AH, h3 = this._$AN; 321 - if (void 0 !== h3 && 0 !== h3.size) if (t4) if (Array.isArray(r3)) for (let i5 = e3; i5 < r3.length; i5++) s2(r3[i5], false), o2(r3[i5]); 322 - else null != r3 && (s2(r3, false), o2(r3)); 321 + const r4 = this._$AH, h3 = this._$AN; 322 + if (void 0 !== h3 && 0 !== h3.size) if (t4) if (Array.isArray(r4)) for (let i5 = e3; i5 < r4.length; i5++) s2(r4[i5], false), o2(r4[i5]); 323 + else null != r4 && (s2(r4, false), o2(r4)); 323 324 else s2(this, i4); 324 325 } 325 326 var c2 = (i4) => { 326 327 i4.type == t2.CHILD && (i4._$AP ??= n2, i4._$AQ ??= h2); 327 328 }; 328 - var f3 = class extends i2 { 329 + var f2 = class extends i2 { 329 330 constructor() { 330 331 super(...arguments), this._$AN = void 0; 331 332 } 332 333 _$AT(i4, t4, e3) { 333 - super._$AT(i4, t4, e3), r2(this), this.isConnected = i4._$AU; 334 + super._$AT(i4, t4, e3), r3(this), this.isConnected = i4._$AU; 334 335 } 335 336 _$AO(i4, t4 = true) { 336 337 i4 !== this.isConnected && (this.isConnected = i4, i4 ? this.reconnected?.() : this.disconnected?.()), t4 && (s2(this, i4), o2(this)); 337 338 } 338 339 setValue(t4) { 339 - if (f2(this._$Ct)) this._$Ct._$AI(t4, this); 340 + if (r2(this._$Ct)) this._$Ct._$AI(t4, this); 340 341 else { 341 342 const i4 = [...this._$Ct._$AH]; 342 343 i4[this._$Ci] = t4, this._$Ct._$AI(i4, this, 0); ··· 350 351 351 352 // node_modules/lit-html/directives/ref.js 352 353 var o3 = /* @__PURE__ */ new WeakMap(); 353 - var n3 = e2(class extends f3 { 354 + var n3 = e2(class extends f2 { 354 355 render(i4) { 355 - return E; 356 + return A; 356 357 } 357 358 update(i4, [s3]) { 358 359 const e3 = s3 !== this.G; 359 - return e3 && void 0 !== this.G && this.rt(void 0), (e3 || this.lt !== this.ct) && (this.G = s3, this.ht = i4.options?.host, this.rt(this.ct = i4.element)), E; 360 + return e3 && this.rt(void 0), (e3 || this.lt !== this.ct) && (this.G = s3, this.ht = i4.options?.host, this.rt(this.ct = i4.element)), A; 360 361 } 361 362 rt(t4) { 362 - if (this.isConnected || (t4 = void 0), "function" == typeof this.G) { 363 + if (void 0 !== this.G) if (this.isConnected || (t4 = void 0), "function" == typeof this.G) { 363 364 const i4 = this.ht ?? globalThis; 364 365 let s3 = o3.get(i4); 365 366 void 0 === s3 && (s3 = /* @__PURE__ */ new WeakMap(), o3.set(i4, s3)), void 0 !== s3.get(this.G) && this.G.call(this.ht, void 0), s3.set(this.G, t4), void 0 !== t4 && this.G.call(this.ht, t4); ··· 376 377 } 377 378 }); 378 379 export { 379 - x as html, 380 + b as html, 380 381 i3 as keyed, 381 382 n3 as ref, 382 - B as render 383 + D as render 383 384 }; 384 385 /*! Bundled license information: 385 386
+6
src/js/templates/avatar.template.js
··· 65 65 "labeler-avatar": isLabeler, 66 66 })} 67 67 > 68 + <!-- 69 + This single character fixes a weird bug on iOS safari 70 + where the chatDetail page would render extra slowly. 71 + I don't know why it works, but it does. 72 + Since line height is zero, it shouldn't be visible on the page. --> 73 + x 68 74 <img 69 75 src="${avatarThumbnailUrl}" 70 76 alt="${author.displayName} profile picture"