@flemo/core 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +125 -94
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -1408,7 +1408,7 @@ var F = /* @__PURE__ */ new Map(), I = {
1408
1408
  }, R = (e) => e && typeof e.delay == "number" && e.delay > 0 ? e.delay : 0, je = (e, t) => {
1409
1409
  let n = I[t];
1410
1410
  return n === "self" ? null : n === "initial" ? e.initial : e.variants[n].value;
1411
- }, z = (e, t) => {
1411
+ }, Me = (e, t) => {
1412
1412
  let n = je(e, t);
1413
1413
  if (n === null) return null;
1414
1414
  let r = e.variants[t], i = L(r.options), a = R(r.options);
@@ -1419,7 +1419,7 @@ var F = /* @__PURE__ */ new Map(), I = {
1419
1419
  delay: a,
1420
1420
  ease: r.options?.ease
1421
1421
  };
1422
- }, Me = Ae, Ne = (e) => e.replace(/[^a-zA-Z0-9_-]/g, "_"), Pe = (e) => typeof e == "object" && !!e && !Array.isArray(e), Fe = new Set(/* @__PURE__ */ "opacity.scale.scaleX.scaleY.scaleZ.aspectRatio.columnCount.columns.flex.flexGrow.flexShrink.fontWeight.gridArea.gridColumn.gridColumnEnd.gridColumnStart.gridRow.gridRowEnd.gridRowStart.lineHeight.lineClamp.order.orphans.tabSize.widows.zIndex.zoom.fillOpacity.floodOpacity.stopOpacity.strokeOpacity.strokeDasharray.strokeDashoffset.strokeMiterlimit.strokeWidth".split(".")), Ie = (e, t) => t.startsWith("--") || Fe.has(t) ? `${e}` : t === "rotate" || t === "rotateX" || t === "rotateY" || t === "rotateZ" ? `${e}deg` : `${e}px`, Le = (e, t) => typeof t == "number" ? Ie(t, e) : typeof t == "string" ? t : "", Re = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), ze = new Set([
1422
+ }, Ne = Ae, Pe = (e) => e.replace(/[^a-zA-Z0-9_-]/g, "_"), Fe = (e) => typeof e == "object" && !!e && !Array.isArray(e), Ie = new Set(/* @__PURE__ */ "opacity.scale.scaleX.scaleY.scaleZ.aspectRatio.columnCount.columns.flex.flexGrow.flexShrink.fontWeight.gridArea.gridColumn.gridColumnEnd.gridColumnStart.gridRow.gridRowEnd.gridRowStart.lineHeight.lineClamp.order.orphans.tabSize.widows.zIndex.zoom.fillOpacity.floodOpacity.stopOpacity.strokeOpacity.strokeDasharray.strokeDashoffset.strokeMiterlimit.strokeWidth".split(".")), Le = (e, t) => t.startsWith("--") || Ie.has(t) ? `${e}` : t === "rotate" || t === "rotateX" || t === "rotateY" || t === "rotateZ" ? `${e}deg` : `${e}px`, Re = (e, t) => typeof t == "number" ? Le(t, e) : typeof t == "string" ? t : "", ze = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), Be = new Set([
1423
1423
  "x",
1424
1424
  "y",
1425
1425
  "z",
@@ -1430,7 +1430,7 @@ var F = /* @__PURE__ */ new Map(), I = {
1430
1430
  "rotateX",
1431
1431
  "rotateY",
1432
1432
  "rotateZ"
1433
- ]), Be = /^-?0(\.0+)?(px|%|em|rem|vh|vw|vmin|vmax)?$/, Ve = /^-?0(\.0+)?(deg|rad|grad|turn)?$/, He = /^1(\.0+)?$/, Ue = (e, t) => e === "scale" || e === "scaleX" || e === "scaleY" ? t === 1 ? !0 : typeof t == "string" ? He.test(t.trim()) : !1 : e === "rotate" || e === "rotateX" || e === "rotateY" || e === "rotateZ" ? t === 0 ? !0 : typeof t == "string" ? Ve.test(t.trim()) : !1 : t === 0 ? !0 : typeof t == "string" ? Be.test(t.trim()) : !1, We = (e, t) => {
1433
+ ]), Ve = /^-?0(\.0+)?(px|%|em|rem|vh|vw|vmin|vmax)?$/, He = /^-?0(\.0+)?(deg|rad|grad|turn)?$/, Ue = /^1(\.0+)?$/, We = (e, t) => e === "scale" || e === "scaleX" || e === "scaleY" ? t === 1 ? !0 : typeof t == "string" ? Ue.test(t.trim()) : !1 : e === "rotate" || e === "rotateX" || e === "rotateY" || e === "rotateZ" ? t === 0 ? !0 : typeof t == "string" ? He.test(t.trim()) : !1 : t === 0 ? !0 : typeof t == "string" ? Ve.test(t.trim()) : !1, Ge = (e, t) => {
1434
1434
  switch (e) {
1435
1435
  case "x": return `translate3d(${t}, 0, 0)`;
1436
1436
  case "y": return `translate3d(0, ${t}, 0)`;
@@ -1444,16 +1444,16 @@ var F = /* @__PURE__ */ new Map(), I = {
1444
1444
  case "rotateY": return `rotateY(${t})`;
1445
1445
  default: return "";
1446
1446
  }
1447
- }, Ge = (e) => {
1447
+ }, Ke = (e) => {
1448
1448
  let t = /* @__PURE__ */ new Map(), n = !1, r = /* @__PURE__ */ new Set(), i = (e) => {
1449
- if (!Pe(e)) return;
1449
+ if (!Fe(e)) return;
1450
1450
  let n = [];
1451
1451
  for (let r of Object.keys(e)) {
1452
- let i = e[r], a = Le(r, i);
1453
- if (a !== "") if (ze.has(r)) n.push(`${r}:${a}`);
1452
+ let i = e[r], a = Re(r, i);
1453
+ if (a !== "") if (Be.has(r)) n.push(`${r}:${a}`);
1454
1454
  else {
1455
- let e = t.get(Re(r)) ?? /* @__PURE__ */ new Set();
1456
- e.add(a), t.set(Re(r), e);
1455
+ let e = t.get(ze(r)) ?? /* @__PURE__ */ new Set();
1456
+ e.add(a), t.set(ze(r), e);
1457
1457
  }
1458
1458
  }
1459
1459
  r.add(n.sort().join("|"));
@@ -1463,13 +1463,13 @@ var F = /* @__PURE__ */ new Map(), I = {
1463
1463
  n = r.size > 1;
1464
1464
  let a = Array.from(t.entries()).filter(([, e]) => e.size > 1).map(([e]) => e);
1465
1465
  return n && a.push("transform"), a;
1466
- }, B = (e) => {
1467
- if (!Pe(e)) return [];
1466
+ }, z = (e) => {
1467
+ if (!Fe(e)) return [];
1468
1468
  let t = [], n = !0, r = [];
1469
1469
  for (let i of Object.keys(e)) {
1470
- let a = e[i], o = Le(i, a);
1471
- o !== "" && (ze.has(i) ? (t.push(We(i, o)), Ue(i, a) || (n = !1)) : r.push({
1472
- property: Re(i),
1470
+ let a = e[i], o = Re(i, a);
1471
+ o !== "" && (Be.has(i) ? (t.push(Ge(i, o)), We(i, a) || (n = !1)) : r.push({
1472
+ property: ze(i),
1473
1473
  value: o
1474
1474
  }));
1475
1475
  }
@@ -1477,7 +1477,7 @@ var F = /* @__PURE__ */ new Map(), I = {
1477
1477
  property: "transform",
1478
1478
  value: n ? "none" : t.join(" ")
1479
1479
  }), r;
1480
- }, V = (e) => e.map((e) => ` ${e.property}: ${e.value};`).join("\n"), H = (e) => Array.isArray(e) ? e.length === 4 && e.every((e) => typeof e == "number") ? `cubic-bezier(${e.join(", ")})` : "linear" : typeof e == "string" ? {
1480
+ }, B = (e) => e.map((e) => ` ${e.property}: ${e.value};`).join("\n"), V = (e) => Array.isArray(e) ? e.length === 4 && e.every((e) => typeof e == "number") ? `cubic-bezier(${e.join(", ")})` : "linear" : typeof e == "string" ? {
1481
1481
  linear: "linear",
1482
1482
  easeIn: "ease-in",
1483
1483
  easeOut: "ease-out",
@@ -1487,29 +1487,29 @@ var F = /* @__PURE__ */ new Map(), I = {
1487
1487
  backIn: "cubic-bezier(0.31, 0.01, 0.66, -0.59)",
1488
1488
  backOut: "cubic-bezier(0.33, 1.53, 0.69, 0.99)",
1489
1489
  anticipate: "cubic-bezier(0.36, 0, 0.66, -0.56)"
1490
- }[e] ?? "ease" : "ease", Ke = (e, t) => {
1490
+ }[e] ?? "ease" : "ease", qe = (e, t) => {
1491
1491
  let [n, r] = t.split("-");
1492
1492
  return `[data-flemo-screen][data-flemo-transition="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
1493
- }, qe = (e, t) => {
1493
+ }, Je = (e, t) => {
1494
1494
  let [n, r] = t.split("-");
1495
1495
  return `[data-flemo-decorator][data-flemo-decorator-name="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
1496
- }, Je = (e, t) => {
1496
+ }, Ye = (e, t) => {
1497
1497
  let [n, r] = t.split("-");
1498
1498
  return `[data-flemo-bar][data-flemo-bar-transition="${e}"][data-flemo-bar-status="${n}"][data-flemo-bar-active="${r}"][data-flemo-bar-riding="true"]`;
1499
- }, Ye = (e, t) => {
1499
+ }, Xe = (e, t) => {
1500
1500
  let [n, r] = t.split("-");
1501
1501
  return `[data-flemo-part-name="${e}"][data-flemo-status="${n}"][data-flemo-active="${r}"]`;
1502
- }, Xe = (e, t, n) => `flemo-${e}-${Ne(t)}-${n}`, Ze = (e, t, n, r, i, a) => {
1503
- let o = B(r), s = B(i.value), c = L(i.options), l = R(i.options), u = H(i.options?.ease), d = a(t, n), f = e === "screen" ? `${d},\n${Je(t, n)}` : d;
1502
+ }, Ze = (e, t, n) => `flemo-${e}-${Pe(t)}-${n}`, H = (e, t, n, r, i, a) => {
1503
+ let o = z(r), s = z(i.value), c = L(i.options), l = R(i.options), u = V(i.options?.ease), d = a(t, n), f = e === "screen" ? `${d},\n${Ye(t, n)}` : d;
1504
1504
  if (s.length === 0 && o.length === 0) return "";
1505
- if (c <= 0 && l <= 0) return s.length === 0 ? "" : `${f} {\n${V(s)}\n animation: none;\n}`;
1506
- let p = Xe(e, t, n), m = [
1505
+ if (c <= 0 && l <= 0) return s.length === 0 ? "" : `${f} {\n${B(s)}\n animation: none;\n}`;
1506
+ let p = Ze(e, t, n), m = [
1507
1507
  `@keyframes ${p} {`,
1508
1508
  " from {",
1509
- V(o).replace(/^/gm, " "),
1509
+ B(o).replace(/^/gm, " "),
1510
1510
  " }",
1511
1511
  " to {",
1512
- V(s).replace(/^/gm, " "),
1512
+ B(s).replace(/^/gm, " "),
1513
1513
  " }",
1514
1514
  "}"
1515
1515
  ].join("\n"), h = [
@@ -1519,15 +1519,15 @@ var F = /* @__PURE__ */ new Map(), I = {
1519
1519
  l > 0 ? `${l}s` : null,
1520
1520
  "both"
1521
1521
  ].filter(Boolean).join(" "), g = new Map(o.map((e) => [e.property, e.value])), _ = new Map(s.map((e) => [e.property, e.value])), v = Array.from(new Set([...g.keys(), ..._.keys()])).filter((e) => g.get(e) !== _.get(e)), y = v.length > 0 ? ` will-change: ${v.join(", ")};\n` : "", b = n.split("-")[0];
1522
- return `${m}\n${`${f} {\n animation: ${h};\n${y}${b === "PUSHING" || b === "REPLACING" ? " contain: layout;\n pointer-events: none;\n" : ""}}`}${e === "screen" && n.endsWith("-false") && Qe(r) && s.length > 0 ? `\n${d}[data-flemo-anim-hold="park"] {\n animation: none;\n${V(s)}\n}` : ""}${e === "screen" && n.endsWith("-true") && (n.startsWith("PUSHING") || n.startsWith("REPLACING")) && Qe(r) && s.length > 0 ? `\n${d}[data-flemo-anim-hold="park-under"] {\n animation: none;\n${V(s)}\n}` : ""}`;
1522
+ return `${m}\n${`${f} {\n animation: ${h};\n${y}${b === "PUSHING" || b === "REPLACING" ? " contain: layout;\n pointer-events: none;\n" : ""}}`}${e === "screen" && n.endsWith("-false") && Qe(r) && s.length > 0 ? `\n${d}[data-flemo-anim-hold="park"] {\n animation: none;\n${B(s)}\n}` : ""}${e === "screen" && n.endsWith("-true") && (n.startsWith("PUSHING") || n.startsWith("REPLACING")) && Qe(r) && s.length > 0 ? `\n${d}[data-flemo-anim-hold="park-under"] {\n animation: none;\n${B(s)}\n}` : ""}`;
1523
1523
  }, Qe = (e) => {
1524
1524
  if (!e) return !1;
1525
1525
  if (e.opacity === 0) return !0;
1526
1526
  let t = (e) => typeof e == "string" && e.trim().endsWith("%") && Math.abs(parseFloat(e)) >= 100;
1527
1527
  return t(e.x) || t(e.y);
1528
1528
  }, $e = (e, t, n, r) => {
1529
- let i = B(r.value);
1530
- return i.length === 0 ? "" : `${e(t, n)} {\n${V(i)}\n}`;
1529
+ let i = z(r.value);
1530
+ return i.length === 0 ? "" : `${e(t, n)} {\n${B(i)}\n}`;
1531
1531
  }, et = (e, t, n = []) => {
1532
1532
  let r = [];
1533
1533
  for (let t of e) {
@@ -1535,35 +1535,35 @@ var F = /* @__PURE__ */ new Map(), I = {
1535
1535
  for (let n of Ae) {
1536
1536
  let i = t.variants[n], a = I[n];
1537
1537
  if (a === "self") {
1538
- r.push($e(Ke, e, n, i));
1538
+ r.push($e(qe, e, n, i));
1539
1539
  continue;
1540
1540
  }
1541
1541
  let o = a === "initial" ? t.initial : t.variants[a].value;
1542
- r.push(Ze("screen", e, n, o, i, Ke));
1542
+ r.push(H("screen", e, n, o, i, qe));
1543
1543
  }
1544
1544
  }
1545
1545
  for (let e of t) {
1546
1546
  let t = e.name;
1547
- for (let n of Me) {
1547
+ for (let n of Ne) {
1548
1548
  let i = e.variants[n], a = I[n];
1549
1549
  if (a === "self") {
1550
- r.push($e(qe, t, n, i));
1550
+ r.push($e(Je, t, n, i));
1551
1551
  continue;
1552
1552
  }
1553
1553
  let o = a === "initial" ? e.initial : e.variants[a].value;
1554
- r.push(Ze("decorator", t, n, o, i, qe));
1554
+ r.push(H("decorator", t, n, o, i, Je));
1555
1555
  }
1556
1556
  }
1557
1557
  for (let e of n) {
1558
1558
  let t = e.name;
1559
- for (let n of Me) {
1559
+ for (let n of Ne) {
1560
1560
  let i = e.variants[n], a = I[n];
1561
1561
  if (a === "self") {
1562
- r.push($e(Ye, t, n, i));
1562
+ r.push($e(Xe, t, n, i));
1563
1563
  continue;
1564
1564
  }
1565
1565
  let o = a === "initial" ? e.initial : e.variants[a].value;
1566
- r.push(Ze("part", t, n, o, i, Ye));
1566
+ r.push(H("part", t, n, o, i, Xe));
1567
1567
  }
1568
1568
  }
1569
1569
  return [...r.filter((e) => e.length > 0), tt].join("\n\n");
@@ -1581,7 +1581,7 @@ var F = /* @__PURE__ */ new Map(), I = {
1581
1581
  if (n === "self") return !1;
1582
1582
  let r = e.variants[t], i = L(r.options), a = R(r.options);
1583
1583
  if (i <= 0 && a <= 0) return !1;
1584
- let o = B(n === "initial" ? e.initial : e.variants[n].value), s = B(r.value);
1584
+ let o = z(n === "initial" ? e.initial : e.variants[n].value), s = z(r.value);
1585
1585
  return o.length > 0 || s.length > 0;
1586
1586
  }, rt = "data-flemo";
1587
1587
  function it() {
@@ -1636,9 +1636,9 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1636
1636
  e.style.removeProperty("transform"), e.style.removeProperty("opacity");
1637
1637
  }, K = (e, t, n = {}) => {
1638
1638
  if (!ft(e)) return Promise.resolve();
1639
- let r = e, i = B(t);
1639
+ let r = e, i = z(t);
1640
1640
  if (i.length === 0) return Promise.resolve();
1641
- let a = typeof n.duration == "number" ? n.duration : 0, o = typeof n.delay == "number" && n.delay > 0 ? n.delay : 0, s = H(n.ease);
1641
+ let a = typeof n.duration == "number" ? n.duration : 0, o = typeof n.delay == "number" && n.delay > 0 ? n.delay : 0, s = V(n.ease);
1642
1642
  if (a <= 0 && o <= 0) {
1643
1643
  r.style.transition = "none";
1644
1644
  for (let e of i) r.style.setProperty(e.property, e.value), W(r, e.property);
@@ -1824,7 +1824,7 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1824
1824
  };
1825
1825
  }, J = /-?\d*\.?\d+/g, kt = (e, t) => {
1826
1826
  let n = e.match(J) ?? [], r = t.match(J) ?? [];
1827
- if (n.length !== r.length || e.replace(J, "\0") !== t.replace(J, "\0")) return null;
1827
+ if (n.length !== r.length || e.replace(J, " ") !== t.replace(J, " ")) return null;
1828
1828
  let i = n.map(Number), a = r.map(Number);
1829
1829
  return (t) => {
1830
1830
  let n = 0;
@@ -1833,7 +1833,7 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1833
1833
  return `${Math.round(r * 1e3) / 1e3}`;
1834
1834
  });
1835
1835
  };
1836
- }, At = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), jt = (e) => typeof e == "object" && !!e && !Array.isArray(e), Mt = (e) => jt(e) ? Object.keys(e) : [], Nt = (e, t) => jt(e) ? e[t] : void 0, Pt = (e) => Ft(e, null) !== null, Ft = (e, t) => {
1836
+ }, At = (e) => e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`), jt = (e) => typeof e == "object" && !!e && !Array.isArray(e), Mt = (e) => jt(e) ? Object.keys(e) : [], Nt = (e, t) => jt(e) ? e[t] : void 0, Pt = (e, t) => {
1837
1837
  let n = new Set([...Mt(e.from), ...Mt(e.to)]), r = [], i = null, a = [], o = [];
1838
1838
  for (let s of n) {
1839
1839
  let n = Nt(e.from, s), c = Nt(e.to, s);
@@ -1890,14 +1890,14 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1890
1890
  strings: a,
1891
1891
  constants: o
1892
1892
  };
1893
- }, It = 1, Lt = (e, t, n, r) => {
1893
+ }, Ft = 1, It = (e, t, n, r) => {
1894
1894
  let i = 0, a = 0, o = !1, s = [], c = !0;
1895
1895
  for (let l of Tt) {
1896
1896
  let u = e.find((e) => e.prop === l);
1897
1897
  if (!u) continue;
1898
1898
  let d = u.from.value + (u.to.value - u.from.value) * t;
1899
1899
  if (u.from.unit === "%" && (d *= u.percentBase), l === "x" || l === "y") {
1900
- let e = l === "x" ? r.x : r.y, t = (e === null || Math.abs(d - e) * n >= It) && n > 0 ? Math.round(d * n) / n : Math.round(d * 1e3) / 1e3;
1900
+ let e = l === "x" ? r.x : r.y, t = (e === null || Math.abs(d - e) * n >= Ft) && n > 0 ? Math.round(d * n) / n : Math.round(d * 1e3) / 1e3;
1901
1901
  l === "x" ? (r.x = d, i = t) : (r.y = d, a = t), o = !0, t !== 0 && (c = !1);
1902
1902
  continue;
1903
1903
  }
@@ -1905,26 +1905,44 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1905
1905
  d !== f && (c = !1), l === "z" ? s.push(`translateZ(${d}px)`) : l === "scale" ? s.push(`scale(${d})`) : l === "scaleX" ? s.push(`scaleX(${d})`) : l === "scaleY" ? s.push(`scaleY(${d})`) : l === "rotate" || l === "rotateZ" ? s.push(`rotate(${d}deg)`) : l === "rotateX" ? s.push(`rotateX(${d}deg)`) : l === "rotateY" && s.push(`rotateY(${d}deg)`);
1906
1906
  }
1907
1907
  return !o && s.length === 0 ? "" : c ? "none" : [...o ? [`translate3d(${i}px, ${a}px, 0)`] : [], ...s].join(" ");
1908
- }, Rt = () => ({
1908
+ }, Lt = (e) => e.replace(/-([a-z])/g, (e, t) => t.toUpperCase()), Rt = (e) => {
1909
+ let t = {};
1910
+ for (let n of z(e)) t[Lt(n.property)] = n.value;
1911
+ return t;
1912
+ }, zt = (e, t) => {
1913
+ if (typeof e.animate != "function") return null;
1914
+ try {
1915
+ let n = e.animate([Rt(t.from), Rt(t.to)], {
1916
+ duration: Math.max(0, t.duration * 1e3),
1917
+ delay: Math.max(0, t.delay * 1e3),
1918
+ easing: V(t.ease),
1919
+ fill: "both"
1920
+ });
1921
+ return n.pause(), n.currentTime = 0, n;
1922
+ } catch {
1923
+ return null;
1924
+ }
1925
+ }, Bt = () => ({
1909
1926
  request: (e) => requestAnimationFrame(e),
1910
1927
  cancel: (e) => cancelAnimationFrame(e),
1911
1928
  devicePixelRatio: () => typeof window < "u" && window.devicePixelRatio || 1
1912
- }), Y = ((e = Rt()) => {
1929
+ }), Y = ((e = Bt()) => {
1913
1930
  let t = /* @__PURE__ */ new Map(), n = {
1914
1931
  join: (n, r) => {
1915
- let i = Ft(r.motion, r.element);
1916
- if (!i) return null;
1917
- let s = t.get(n);
1918
- s || (s = {
1932
+ let i = Pt(r.motion, r.element), s = i ? null : zt(r.element, r.motion);
1933
+ if (!i && !s) return null;
1934
+ let c = t.get(n);
1935
+ c || (c = {
1919
1936
  tracks: [],
1920
1937
  started: !1,
1921
1938
  startTime: null,
1922
1939
  lastTime: null,
1923
1940
  frameHandle: null
1924
- }, t.set(n, s));
1925
- let c = {
1941
+ }, t.set(n, c));
1942
+ let l = {
1926
1943
  ...r,
1927
1944
  parsed: i,
1945
+ scrub: s,
1928
1946
  completed: !1,
1929
1947
  detached: !1,
1930
1948
  snapMemory: {
@@ -1932,18 +1950,25 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1932
1950
  y: null
1933
1951
  }
1934
1952
  };
1935
- s.tracks.push(c), c.element.style.animation = "none", W(c.element, "animation"), i.transforms.length > 0 && W(c.element, "transform"), i.opacity && W(c.element, "opacity");
1936
- for (let e of i.strings) W(c.element, e.property);
1937
- for (let e of i.constants) W(c.element, e.property);
1938
- return a(c, 0), r.role === "active" && !s.started && (s.started = !0, q.beginRun(), o(n, s)), () => {
1939
- c.detached = !0, G(c.element);
1953
+ if (c.tracks.push(l), l.element.style.animation = "none", W(l.element, "animation"), i) {
1954
+ i.transforms.length > 0 && W(l.element, "transform"), i.opacity && W(l.element, "opacity");
1955
+ for (let e of i.strings) W(l.element, e.property);
1956
+ for (let e of i.constants) W(l.element, e.property);
1957
+ a(l, 0);
1958
+ }
1959
+ return r.role === "active" && !c.started && (c.started = !0, q.beginRun(), o(n, c)), () => {
1960
+ l.detached = !0, l.scrub?.cancel(), G(l.element);
1940
1961
  let r = t.get(n);
1941
- r && (r.tracks = r.tracks.filter((e) => e !== c), r.tracks.length === 0 && (r.frameHandle !== null && e.cancel(r.frameHandle), t.delete(n)));
1962
+ r && (r.tracks = r.tracks.filter((e) => e !== l), r.tracks.length === 0 && (r.frameHandle !== null && e.cancel(r.frameHandle), t.delete(n)));
1942
1963
  };
1943
1964
  },
1944
1965
  dispose: (n) => {
1945
1966
  let r = t.get(n);
1946
- r && (r.frameHandle !== null && e.cancel(r.frameHandle), t.delete(n));
1967
+ if (r) {
1968
+ r.frameHandle !== null && e.cancel(r.frameHandle);
1969
+ for (let e of r.tracks) e.scrub?.cancel();
1970
+ t.delete(n);
1971
+ }
1947
1972
  }
1948
1973
  }, r = /* @__PURE__ */ new WeakMap(), i = (e) => {
1949
1974
  let t = r.get(e);
@@ -1951,9 +1976,9 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1951
1976
  };
1952
1977
  function a(t, n) {
1953
1978
  let { element: r, parsed: i } = t;
1954
- if (r.isConnected) {
1979
+ if (!(!i || !r.isConnected)) {
1955
1980
  if (i.transforms.length > 0) {
1956
- let a = Lt(i.transforms, n, e.devicePixelRatio(), t.snapMemory);
1981
+ let a = It(i.transforms, n, e.devicePixelRatio(), t.snapMemory);
1957
1982
  a !== "" && (r.style.transform = a);
1958
1983
  }
1959
1984
  if (i.opacity) {
@@ -1974,8 +1999,14 @@ var ft = (e) => typeof HTMLElement < "u" && e instanceof HTMLElement, U = /* @__
1974
1999
  let c = !0;
1975
2000
  for (let e of r.tracks) {
1976
2001
  if (e.completed || e.detached) continue;
1977
- let t = e.motion.duration * 1e3, n = e.motion.delay * 1e3, o = t <= 0 ? 1 : Math.min(1, Math.max(0, (s - r.startTime - n) / t));
1978
- a(e, i(e)(o)), o >= 1 ? (e.completed = !0, e.onComplete?.()) : c = !1;
2002
+ let t = e.motion.duration * 1e3, n = e.motion.delay * 1e3, o = s - r.startTime;
2003
+ if (e.scrub) {
2004
+ let r = n + t;
2005
+ e.scrub.currentTime = Math.min(Math.max(0, o), r), o >= r ? (e.completed = !0, e.onComplete?.()) : c = !1;
2006
+ continue;
2007
+ }
2008
+ let l = t <= 0 ? 1 : Math.min(1, Math.max(0, (o - n) / t));
2009
+ a(e, i(e)(l)), l >= 1 ? (e.completed = !0, e.onComplete?.()) : c = !1;
1979
2010
  }
1980
2011
  if (c) {
1981
2012
  q.endRun(), t.delete(e);
@@ -1994,15 +2025,15 @@ Y.onFrameGap = (e) => {
1994
2025
  //#endregion
1995
2026
  //#region src/core/engine/types.ts
1996
2027
  var X = "data-flemo-skip-animation", Z = () => {};
1997
- function zt(e) {
2028
+ function Vt(e) {
1998
2029
  return { driveScreenLifecycle: (t) => {
1999
2030
  let { getElements: n, transitionName: r, prevTransitionName: i, status: a, isActive: s, animHoldReleased: c } = t, l = a === "PUSHING" || a === "POPPING" || a === "REPLACING", u = (t, i, a) => {
2000
2031
  let s = e.getTransitionTaskId();
2001
2032
  if (!s || o.pendingTaskIds.some((e) => e !== s) || !q.playerAllowed()) return null;
2002
2033
  let { scope: c, decorator: l, bars: u } = n();
2003
2034
  if (!c) return null;
2004
- let d = M(r), f = z(d, t);
2005
- if (!f || !Pt(f)) return null;
2035
+ let d = M(r), f = Me(d, t);
2036
+ if (!f) return null;
2006
2037
  let p = [], m = Y.join(s, {
2007
2038
  element: c,
2008
2039
  motion: f,
@@ -2021,8 +2052,8 @@ function zt(e) {
2021
2052
  t && p.push(t);
2022
2053
  }
2023
2054
  if (l && d.decoratorName) {
2024
- let e = P.get(d.decoratorName), n = e ? z(e, t) : null;
2025
- if (n && Pt(n)) {
2055
+ let e = P.get(d.decoratorName), n = e ? Me(e, t) : null;
2056
+ if (n) {
2026
2057
  let e = Y.join(s, {
2027
2058
  element: l,
2028
2059
  motion: n,
@@ -2061,7 +2092,7 @@ function zt(e) {
2061
2092
  t && o.resolveTask(t);
2062
2093
  }, p = M(r), m = `${a}-true`, h = d.getAttribute(X) === "true";
2063
2094
  if (!(!h && nt(p, m))) return queueMicrotask(f), Z;
2064
- let g = z(p, m), _ = !h && !!g && Pt(g), v = Xe("screen", r, m), y = (e) => {
2095
+ let g = Me(p, m), _ = !h && !!g, v = Ze("screen", r, m), y = (e) => {
2065
2096
  e.target === d && e.animationName === v && (d.removeEventListener("animationend", y), f());
2066
2097
  };
2067
2098
  d.addEventListener("animationend", y);
@@ -2073,8 +2104,8 @@ function zt(e) {
2073
2104
  }
2074
2105
  //#endregion
2075
2106
  //#region src/utils/findScrollable.ts
2076
- function Bt(e, t) {
2077
- let { direction: n = "x", markerSelector: r = "[data-swipe-at-edge]", depthLimit: i = 24, verifyByScroll: a = !1 } = t ?? {}, o = Vt(e);
2107
+ function Ht(e, t) {
2108
+ let { direction: n = "x", markerSelector: r = "[data-swipe-at-edge]", depthLimit: i = 24, verifyByScroll: a = !1 } = t ?? {}, o = Ut(e);
2078
2109
  if (!o) return {
2079
2110
  element: null,
2080
2111
  hasMarker: !1
@@ -2097,7 +2128,7 @@ function Bt(e, t) {
2097
2128
  hasMarker: !1
2098
2129
  };
2099
2130
  }
2100
- function Vt(e) {
2131
+ function Ut(e) {
2101
2132
  if (!e) return null;
2102
2133
  let t = e, n = typeof t.composedPath == "function" ? t.composedPath() : void 0;
2103
2134
  if (n && n.length) {
@@ -2115,8 +2146,8 @@ function $(e, t) {
2115
2146
  }
2116
2147
  //#endregion
2117
2148
  //#region src/core/engine/createSwipeController.ts
2118
- var Ht = "data-flemo-skip-animation";
2119
- function Ut(e) {
2149
+ var Wt = "data-flemo-skip-animation";
2150
+ function Gt(e) {
2120
2151
  let t = null, n = null, r = {
2121
2152
  current: [],
2122
2153
  prev: []
@@ -2178,7 +2209,7 @@ function Ut(e) {
2178
2209
  current: i,
2179
2210
  prev: s
2180
2211
  };
2181
- let c = Ge(e.getTransition()).join(", ");
2212
+ let c = Ke(e.getTransition()).join(", ");
2182
2213
  for (let e of i) e.style.willChange = c;
2183
2214
  for (let e of s) e.style.willChange = c;
2184
2215
  }, b = () => {
@@ -2279,7 +2310,7 @@ function Ut(e) {
2279
2310
  }), S("end", e, 0);
2280
2311
  }
2281
2312
  })) {
2282
- c?.setAttribute(Ht, "true"), l?.setAttribute(Ht, "true");
2313
+ c?.setAttribute(Wt, "true"), l?.setAttribute(Wt, "true");
2283
2314
  for (let e of r.current) e.style.removeProperty("will-change");
2284
2315
  for (let e of r.prev) G(e), e.style.removeProperty("will-change");
2285
2316
  r = {
@@ -2295,10 +2326,10 @@ function Ut(e) {
2295
2326
  };
2296
2327
  return {
2297
2328
  pointerDown: (t) => {
2298
- e.isReadyForDrag() && (f = Bt(t.target, {
2329
+ e.isReadyForDrag() && (f = Ht(t.target, {
2299
2330
  direction: "x",
2300
2331
  verifyByScroll: !0
2301
- }), p = Bt(t.target, {
2332
+ }), p = Ht(t.target, {
2302
2333
  direction: "y",
2303
2334
  verifyByScroll: !0
2304
2335
  }), m = t.clientX, h = t.clientY, (!f.element && !p.element || f.element || p.element) && (a = !0));
@@ -2327,7 +2358,7 @@ function Ut(e) {
2327
2358
  }
2328
2359
  //#endregion
2329
2360
  //#region src/screen/computeBarRiding.ts
2330
- function Wt(e) {
2361
+ function Kt(e) {
2331
2362
  return !(e.status === "PUSHING" || e.status === "POPPING" || e.status === "REPLACING") || !e.isTopOrTopPrev ? {
2332
2363
  app: !1,
2333
2364
  nav: !1
@@ -2338,24 +2369,24 @@ function Wt(e) {
2338
2369
  }
2339
2370
  //#endregion
2340
2371
  //#region src/screen/animStartAnchor.ts
2341
- function Gt(e) {
2372
+ function qt(e) {
2342
2373
  return !(e.status === "PUSHING" || e.status === "POPPING" || e.status === "REPLACING") || !e.isTopOrTopPrev ? null : `${e.status}:${e.transitionName}`;
2343
2374
  }
2344
- var Kt = 300, qt = 20;
2345
- function Jt(e) {
2346
- return Array.from(e.querySelectorAll("img")).filter((e) => e.complete && typeof e.decode == "function").slice(0, qt);
2375
+ var Jt = 300, Yt = 20;
2376
+ function Xt(e) {
2377
+ return Array.from(e.querySelectorAll("img")).filter((e) => e.complete && typeof e.decode == "function").slice(0, Yt);
2347
2378
  }
2348
- function Yt(e) {
2349
- if (!(!e || typeof e.querySelectorAll != "function")) for (let t of Jt(e)) t.decode().catch(() => {});
2379
+ function Zt(e) {
2380
+ if (!(!e || typeof e.querySelectorAll != "function")) for (let t of Xt(e)) t.decode().catch(() => {});
2350
2381
  }
2351
- function Xt(e, t = {}) {
2382
+ function Qt(e, t = {}) {
2352
2383
  let n = !1, r = 0, i = [], a = () => {
2353
2384
  let r = t.scope;
2354
2385
  if (!r || typeof r.querySelectorAll != "function") {
2355
2386
  e();
2356
2387
  return;
2357
2388
  }
2358
- let i = Jt(r);
2389
+ let i = Xt(r);
2359
2390
  if (i.length === 0) {
2360
2391
  e();
2361
2392
  return;
@@ -2381,7 +2412,7 @@ function Xt(e, t = {}) {
2381
2412
  }
2382
2413
  //#endregion
2383
2414
  //#region src/screen/observeBarHeight.ts
2384
- function Zt(e, t) {
2415
+ function $t(e, t) {
2385
2416
  e.offsetHeight > 0 && t(e.offsetHeight);
2386
2417
  let n = new ResizeObserver(([e]) => {
2387
2418
  e.contentRect.height > 0 && t(e.contentRect.height);
@@ -2392,14 +2423,14 @@ function Zt(e, t) {
2392
2423
  }
2393
2424
  //#endregion
2394
2425
  //#region src/screen/observeViewportScrollHeight.ts
2395
- var Qt = 0;
2396
- function $t(e) {
2426
+ var en = 0;
2427
+ function tn(e) {
2397
2428
  let t = 0, n = () => {
2398
2429
  cancelAnimationFrame(t), t = requestAnimationFrame(() => {
2399
2430
  let t = document.documentElement.scrollHeight - (window.visualViewport?.height || 0);
2400
2431
  t = t < 0 ? 0 : t;
2401
- let n = t - Qt;
2402
- n = n < 0 ? 0 : n, Qt ||= t, e(t, n);
2432
+ let n = t - en;
2433
+ n = n < 0 ? 0 : n, en ||= t, e(t, n);
2403
2434
  });
2404
2435
  };
2405
2436
  return window.visualViewport?.addEventListener("resize", n), window.visualViewport?.addEventListener("scroll", n), () => {
@@ -2408,7 +2439,7 @@ function $t(e) {
2408
2439
  }
2409
2440
  //#endregion
2410
2441
  //#region src/utils/isOpaqueColor.ts
2411
- function en(e) {
2442
+ function nn(e) {
2412
2443
  let t = e.trim().toLowerCase();
2413
2444
  if (t === "transparent" || t === "") return !1;
2414
2445
  if (t.match(/^rgb\(\s*\d+[\s,]+\d+[\s,]+\d+\s*\)$/)) return !0;
@@ -2419,7 +2450,7 @@ function en(e) {
2419
2450
  }
2420
2451
  //#endregion
2421
2452
  //#region src/utils/buildRoutePath.ts
2422
- function tn(e, n) {
2453
+ function rn(e, n) {
2423
2454
  let i = n ?? {}, a = t(e)(Object.fromEntries(Object.entries(i).map(([e, t]) => [e, String(t)]))), o = (typeof e == "string" ? r(e) : e).tokens.filter((e) => e.type === "param").map((e) => e.name), s = Object.fromEntries(Object.entries(i).filter(([e]) => !o.includes(e))), c = new URLSearchParams(s).toString();
2424
2455
  return {
2425
2456
  pathname: `${a}${c ? `?${c}` : ""}`,
@@ -2427,4 +2458,4 @@ function tn(e, n) {
2427
2458
  };
2428
2459
  }
2429
2460
  //#endregion
2430
- export { Kt as ANIM_HOLD_RELEASE_BACKSTOP_MS, X as SKIP_ANIMATION_ATTR, o as TaskManger, Gt as animHoldKey, K as animateInline, Xe as animationName, se as appendParamsQuery, it as applyTransitionStyles, tn as buildRoutePath, $ as canProgrammaticallyScroll, G as clearInlineAnimation, Ge as collectAnimatedProperties, et as compileTransitionStyles, Wt as computeBarRiding, _e as computeScreenFreeze, y as consumeSelfInducedPop, h as createBrowserHistoryDriver, Te as createDecorator, s as createHistoryStore, b as createHistorySync, ne as createMemoryHistoryDriver, re as createNavigateStore, ae as createNavigationController, Oe as createPartTransition, Ee as createRawDecorator, ke as createRawPartTransition, ve as createRawTransition, he as createRouterScope, ge as createScreenSelector, fe as createScreenStore, g as createSelfPopGuard, ce as createStepController, Ut as createSwipeController, A as createTransition, zt as createTransitionEngine, ue as createTransitionStore, be as cupertino, P as decoratorMap, Yt as eagerlyDecodeImages, H as easingToCss, ee as ensureScopeHistorySync, f as ensureWindowHistoryState, dt as enteringInitialStyle, Bt as findScrollable, c as getMatchedPathPattern, l as getParams, en as isOpaqueColor, d as isServer, Se as layout, v as markSelfInducedPop, de as matchesPathname, Ce as material, we as none, Zt as observeBarHeight, $t as observeViewportScrollHeight, Q as overflowsAxis, De as overlay, F as partTransitionMap, oe as readStepParams, ut as registerTransitionDefinitions, te as releaseScopeHistorySync, M as resolveTransition, Xt as scheduleAnimHoldRelease, u as seedInitialHistory, p as seedRouterEntry, le as subscribeStepParamsRestore, B as targetToDecls, j as transitionMap, nt as variantHasAnimation };
2461
+ export { Jt as ANIM_HOLD_RELEASE_BACKSTOP_MS, X as SKIP_ANIMATION_ATTR, o as TaskManger, qt as animHoldKey, K as animateInline, Ze as animationName, se as appendParamsQuery, it as applyTransitionStyles, rn as buildRoutePath, $ as canProgrammaticallyScroll, G as clearInlineAnimation, Ke as collectAnimatedProperties, et as compileTransitionStyles, Kt as computeBarRiding, _e as computeScreenFreeze, y as consumeSelfInducedPop, h as createBrowserHistoryDriver, Te as createDecorator, s as createHistoryStore, b as createHistorySync, ne as createMemoryHistoryDriver, re as createNavigateStore, ae as createNavigationController, Oe as createPartTransition, Ee as createRawDecorator, ke as createRawPartTransition, ve as createRawTransition, he as createRouterScope, ge as createScreenSelector, fe as createScreenStore, g as createSelfPopGuard, ce as createStepController, Gt as createSwipeController, A as createTransition, Vt as createTransitionEngine, ue as createTransitionStore, be as cupertino, P as decoratorMap, Zt as eagerlyDecodeImages, V as easingToCss, ee as ensureScopeHistorySync, f as ensureWindowHistoryState, dt as enteringInitialStyle, Ht as findScrollable, c as getMatchedPathPattern, l as getParams, nn as isOpaqueColor, d as isServer, Se as layout, v as markSelfInducedPop, de as matchesPathname, Ce as material, we as none, $t as observeBarHeight, tn as observeViewportScrollHeight, Q as overflowsAxis, De as overlay, F as partTransitionMap, oe as readStepParams, ut as registerTransitionDefinitions, te as releaseScopeHistorySync, M as resolveTransition, Qt as scheduleAnimHoldRelease, u as seedInitialHistory, p as seedRouterEntry, le as subscribeStepParamsRestore, z as targetToDecls, j as transitionMap, nt as variantHasAnimation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/core",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Framework-agnostic primitives for flemo: history, navigation, transitions, task manager.",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",