UNPKG

@oslokommune/punkt-elements

Version:

Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo

58 lines (57 loc) 1.91 kB
import { u as e } from "./element-cZ85T_aa.js"; import { n as t, r as n, t as r } from "./directive-3THFsVew.js"; import { a as i, n as a, o, r as s, t as c } from "./directive-helpers-Dkv2gKgs.js"; //#region ../../node_modules/lit-html/directives/repeat.js var l = (e, t, n) => { let r = /* @__PURE__ */ new Map(); for (let i = t; i <= n; i++) r.set(e[i], i); return r; }, u = r(class extends t { constructor(e) { if (super(e), e.type !== n.CHILD) throw Error("repeat() can only be used in text expressions"); } dt(e, t, n) { let r; n === void 0 ? n = t : t !== void 0 && (r = t); let i = [], a = [], o = 0; for (let t of e) i[o] = r ? r(t, o) : o, a[o] = n(t, o), o++; return { values: a, keys: i }; } render(e, t, n) { return this.dt(e, t, n).values; } update(t, [n, r, u]) { let d = c(t), { values: f, keys: p } = this.dt(n, r, u); if (!Array.isArray(d)) return this.ut = p, f; let m = this.ut ??= [], h = [], g, _, v = 0, y = d.length - 1, b = 0, x = f.length - 1; for (; v <= y && b <= x;) if (d[v] === null) v++; else if (d[y] === null) y--; else if (m[v] === p[b]) h[b] = i(d[v], f[b]), v++, b++; else if (m[y] === p[x]) h[x] = i(d[y], f[x]), y--, x--; else if (m[v] === p[x]) h[x] = i(d[v], f[x]), o(t, h[x + 1], d[v]), v++, x--; else if (m[y] === p[b]) h[b] = i(d[y], f[b]), o(t, d[v], d[y]), y--, b++; else if (g === void 0 && (g = l(p, b, x), _ = l(m, v, y)), g.has(m[v])) if (g.has(m[y])) { let e = _.get(p[b]), n = e === void 0 ? null : d[e]; if (n === null) { let e = o(t, d[v]); i(e, f[b]), h[b] = e; } else h[b] = i(n, f[b]), o(t, d[v], n), d[e] = null; b++; } else a(d[y]), y--; else a(d[v]), v++; for (; b <= x;) { let e = o(t, h[x + 1]); i(e, f[b]), h[b++] = e; } for (; v <= y;) { let e = d[v++]; e !== null && a(e); } return this.ut = p, s(t, h), e; } }); //#endregion export { u as t };