UNPKG

@oslokommune/punkt-elements

Version:

Komponentbiblioteket til Punkt, et designsystem laget av Oslo Origo

62 lines (61 loc) 2.07 kB
import { T as $ } from "./element-CgEWt74-.js"; import { e as A, i as M, t as b } from "./directive-oAbCiebi.js"; import { p as j, v as h, r as v, M as x, m as C } from "./directive-helpers-r-kOS_Mf.js"; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ const w = (s, c, a) => { const p = /* @__PURE__ */ new Map(); for (let e = c; e <= a; e++) p.set(s[e], e); return p; }, I = A(class extends M { constructor(s) { if (super(s), s.type !== b.CHILD) throw Error("repeat() can only be used in text expressions"); } dt(s, c, a) { let p; a === void 0 ? a = c : c !== void 0 && (p = c); const e = [], i = []; let l = 0; for (const u of s) e[l] = p ? p(u, l) : l, i[l] = a(u, l), l++; return { values: i, keys: e }; } render(s, c, a) { return this.dt(s, c, a).values; } update(s, [c, a, p]) { const e = j(s), { values: i, keys: l } = this.dt(c, a, p); if (!Array.isArray(e)) return this.ut = l, i; const u = this.ut ?? (this.ut = []), f = []; let m, g, t = 0, o = e.length - 1, r = 0, n = i.length - 1; for (; t <= o && r <= n; ) if (e[t] === null) t++; else if (e[o] === null) o--; else if (u[t] === l[r]) f[r] = h(e[t], i[r]), t++, r++; else if (u[o] === l[n]) f[n] = h(e[o], i[n]), o--, n--; else if (u[t] === l[n]) f[n] = h(e[t], i[n]), v(s, f[n + 1], e[t]), t++, n--; else if (u[o] === l[r]) f[r] = h(e[o], i[r]), v(s, e[t], e[o]), o--, r++; else if (m === void 0 && (m = w(l, r, n), g = w(u, t, o)), m.has(u[t])) if (m.has(u[o])) { const d = g.get(l[r]), y = d !== void 0 ? e[d] : null; if (y === null) { const k = v(s, e[t]); h(k, i[r]), f[r] = k; } else f[r] = h(y, i[r]), v(s, e[t], y), e[d] = null; r++; } else x(e[o]), o--; else x(e[t]), t++; for (; r <= n; ) { const d = v(s, f[n + 1]); h(d, i[r]), f[r++] = d; } for (; t <= o; ) { const d = e[t++]; d !== null && x(d); } return this.ut = l, C(s, f), $; } }); export { I as c };