@sakuzu/maplibre-gl-draw-ui 1.2.1 → 1.3.1

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.
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import { GlobeControl, NavigationControl, ScaleControl } from "maplibre-gl";
12
12
  *
13
13
  * `refresh` reads it again without an event, for a value that core changes without one.
14
14
  */
15
- function follow(draw, events, read) {
15
+ function follow$1(draw, events, read) {
16
16
  const updates = /* @__PURE__ */ new Set();
17
17
  const subscribe = createSubscriber((update) => {
18
18
  updates.add(update);
@@ -313,7 +313,7 @@ function Mouse_pointer_2($$anchor, $$props) {
313
313
  //#endregion
314
314
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Actions.svelte
315
315
  var root$78 = $.from_html(`<div class="lead svelte-1sb9m4s"><!></div>`);
316
- var root_1$46 = $.from_html(`<div class="group svelte-1sb9m4s"><!> <!></div>`);
316
+ var root_1$45 = $.from_html(`<div class="group svelte-1sb9m4s"><!> <!></div>`);
317
317
  var root_2$30 = $.from_html(`<div class="actions svelte-1sb9m4s" data-role="actions"><!> <!></div>`);
318
318
  function Actions$1($$anchor, $$props) {
319
319
  var div = root_2$30();
@@ -330,7 +330,7 @@ function Actions$1($$anchor, $$props) {
330
330
  });
331
331
  var node_2 = $.sibling(node, 2);
332
332
  var consequent_1 = ($$anchor) => {
333
- var div_2 = root_1$46();
333
+ var div_2 = root_1$45();
334
334
  var node_3 = $.child(div_2);
335
335
  $.snippet(node_3, () => $$props.secondary ?? $.noop);
336
336
  var node_4 = $.sibling(node_3, 2);
@@ -1502,15 +1502,15 @@ function placeTip(node, anchor, bounds) {
1502
1502
  //#endregion
1503
1503
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Tooltip.svelte
1504
1504
  var root$71 = $.from_html(`<span class="kbd svelte-balpgw"><span class="t svelte-balpgw"> </span></span>`);
1505
- var root_1$45 = $.from_html(`<span class="t svelte-balpgw"> </span><!>`, 1);
1505
+ var root_1$44 = $.from_html(`<span class="t svelte-balpgw"> </span><!>`, 1);
1506
1506
  var root_2$29 = $.from_html(`<span class="tip inline svelte-balpgw" data-h="button-sm" aria-hidden="true"><!></span>`);
1507
- var root_3$19 = $.from_html(`<span class="pair svelte-balpgw"><span class="seat svelte-balpgw"><!></span> <!></span>`);
1507
+ var root_3$20 = $.from_html(`<span class="pair svelte-balpgw"><span class="seat svelte-balpgw"><!></span> <!></span>`);
1508
1508
  var root_4$13 = $.from_html(`<span class="tip svelte-balpgw" data-h="button-sm" aria-hidden="true"><!></span>`);
1509
- var root_5$9 = $.from_html(`<span class="seat svelte-balpgw"><!> <!></span>`);
1509
+ var root_5$10 = $.from_html(`<span class="seat svelte-balpgw"><!> <!></span>`);
1510
1510
  function Tooltip($$anchor, $$props) {
1511
1511
  $.push($$props, true);
1512
1512
  const face = ($$anchor) => {
1513
- var fragment = root_1$45();
1513
+ var fragment = root_1$44();
1514
1514
  var span = $.first_child(fragment);
1515
1515
  var text_1 = $.only_child(span, true);
1516
1516
  var node_1 = $.sibling(span);
@@ -1595,7 +1595,7 @@ function Tooltip($$anchor, $$props) {
1595
1595
  var fragment_1 = $.comment();
1596
1596
  var node_2 = $.first_child(fragment_1);
1597
1597
  var consequent_2 = ($$anchor) => {
1598
- var span_3 = root_3$19();
1598
+ var span_3 = root_3$20();
1599
1599
  var span_4 = $.child(span_3);
1600
1600
  var node_3 = $.child(span_4);
1601
1601
  $.snippet(node_3, () => $$props.children);
@@ -1616,7 +1616,7 @@ function Tooltip($$anchor, $$props) {
1616
1616
  $.append($$anchor, span_3);
1617
1617
  };
1618
1618
  var alternate = ($$anchor) => {
1619
- var span_6 = root_5$9();
1619
+ var span_6 = root_5$10();
1620
1620
  var node_6 = $.child(span_6);
1621
1621
  $.snippet(node_6, () => $$props.children);
1622
1622
  var node_7 = $.sibling(node_6, 2);
@@ -1676,11 +1676,12 @@ var rest_excludes$10 = /* @__PURE__ */ new Set([
1676
1676
  "aria-label",
1677
1677
  "children"
1678
1678
  ]);
1679
- var root$70 = $.from_html(`<span class="kbd t svelte-5ccjdv"> </span>`);
1680
- var root_1$44 = $.from_html(`<!><span><!></span><!><!>`, 1);
1681
- var root_2$28 = $.from_html(`<span class="unread svelte-5ccjdv" aria-hidden="true"><!></span>`);
1682
- var root_3$18 = $.from_html(`<a><!><!></a>`);
1683
- var root_4$12 = $.from_html(`<button><!><!></button>`);
1679
+ var root$70 = $.from_html(`<span><!></span>`);
1680
+ var root_1$43 = $.from_html(`<span class="kbd t svelte-5ccjdv"> </span>`);
1681
+ var root_2$28 = $.from_html(`<!><span><!></span><!><!>`, 1);
1682
+ var root_3$19 = $.from_html(`<span class="unread svelte-5ccjdv" aria-hidden="true"><!></span>`);
1683
+ var root_4$12 = $.from_html(`<a><!><!></a>`);
1684
+ var root_5$9 = $.from_html(`<button><!><!></button>`);
1684
1685
  function Button($$anchor, $$props) {
1685
1686
  $.push($$props, true);
1686
1687
  const inner = ($$anchor) => {
@@ -1693,48 +1694,56 @@ function Button($$anchor, $$props) {
1693
1694
  $.append($$anchor, fragment_1);
1694
1695
  };
1695
1696
  var alternate = ($$anchor) => {
1696
- var fragment_2 = root_1$44();
1697
+ var fragment_2 = root_2$28();
1697
1698
  var node_2 = $.first_child(fragment_2);
1698
1699
  var consequent_1 = ($$anchor) => {
1699
- Icon($$anchor, { get name() {
1700
+ var span = root$70();
1701
+ let classes;
1702
+ Icon($.child(span), { get name() {
1700
1703
  return $$props.leading;
1701
1704
  } });
1705
+ $.reset(span);
1706
+ $.template_effect(() => classes = $.set_class(span, 1, "mark svelte-5ccjdv", null, classes, { mono: mono() }));
1707
+ $.append($$anchor, span);
1702
1708
  };
1703
1709
  var consequent_2 = ($$anchor) => {
1704
- var fragment_4 = $.comment();
1705
- var node_3 = $.first_child(fragment_4);
1706
- $.snippet(node_3, () => $$props.mark);
1707
- $.append($$anchor, fragment_4);
1710
+ var span_1 = root$70();
1711
+ let classes_1;
1712
+ var node_4 = $.child(span_1);
1713
+ $.snippet(node_4, () => $$props.mark);
1714
+ $.reset(span_1);
1715
+ $.template_effect(() => classes_1 = $.set_class(span_1, 1, "mark svelte-5ccjdv", null, classes_1, { mono: mono() }));
1716
+ $.append($$anchor, span_1);
1708
1717
  };
1709
1718
  $.if(node_2, ($$render) => {
1710
1719
  if ($$props.leading) $$render(consequent_1);
1711
1720
  else if ($$props.mark) $$render(consequent_2, 1);
1712
1721
  });
1713
- var span = $.sibling(node_2);
1714
- let classes;
1715
- var node_4 = $.child(span);
1716
- $.snippet(node_4, () => $$props.children);
1717
- $.reset(span);
1718
- var node_5 = $.sibling(span);
1722
+ var span_2 = $.sibling(node_2);
1723
+ let classes_2;
1724
+ var node_5 = $.child(span_2);
1725
+ $.snippet(node_5, () => $$props.children);
1726
+ $.reset(span_2);
1727
+ var node_6 = $.sibling(span_2);
1719
1728
  var consequent_3 = ($$anchor) => {
1720
- var span_1 = root$70();
1721
- var text = $.only_child(span_1, true);
1729
+ var span_3 = root_1$43();
1730
+ var text = $.only_child(span_3, true);
1722
1731
  $.template_effect(() => $.set_text(text, $$props.kbd));
1723
- $.append($$anchor, span_1);
1732
+ $.append($$anchor, span_3);
1724
1733
  };
1725
- $.if(node_5, ($$render) => {
1734
+ $.if(node_6, ($$render) => {
1726
1735
  if ($$props.kbd) $$render(consequent_3);
1727
1736
  });
1728
- var node_6 = $.sibling(node_5);
1737
+ var node_7 = $.sibling(node_6);
1729
1738
  var consequent_4 = ($$anchor) => {
1730
1739
  Icon($$anchor, { get name() {
1731
1740
  return $$props.trailing;
1732
1741
  } });
1733
1742
  };
1734
- $.if(node_6, ($$render) => {
1743
+ $.if(node_7, ($$render) => {
1735
1744
  if ($$props.trailing) $$render(consequent_4);
1736
1745
  });
1737
- $.template_effect(() => classes = $.set_class(span, 1, "t svelte-5ccjdv", null, classes, {
1746
+ $.template_effect(() => classes_2 = $.set_class(span_2, 1, "t svelte-5ccjdv", null, classes_2, {
1738
1747
  clamp: clamp(),
1739
1748
  mono: mono()
1740
1749
  }));
@@ -1747,11 +1756,11 @@ function Button($$anchor, $$props) {
1747
1756
  $.append($$anchor, fragment);
1748
1757
  };
1749
1758
  const unread = ($$anchor) => {
1750
- var fragment_6 = $.comment();
1751
- var node_7 = $.first_child(fragment_6);
1759
+ var fragment_4 = $.comment();
1760
+ var node_8 = $.first_child(fragment_4);
1752
1761
  var consequent_5 = ($$anchor) => {
1753
- var span_2 = root_2$28();
1754
- Counter($.child(span_2), {
1762
+ var span_4 = root_3$19();
1763
+ Counter($.child(span_4), {
1755
1764
  children: ($$anchor, $$slotProps) => {
1756
1765
  $.next();
1757
1766
  var text_1 = $.text();
@@ -1760,19 +1769,19 @@ function Button($$anchor, $$props) {
1760
1769
  },
1761
1770
  $$slots: { default: true }
1762
1771
  });
1763
- $.reset(span_2);
1764
- $.append($$anchor, span_2);
1772
+ $.reset(span_4);
1773
+ $.append($$anchor, span_4);
1765
1774
  };
1766
- $.if(node_7, ($$render) => {
1775
+ $.if(node_8, ($$render) => {
1767
1776
  if ($.get(badged)) $$render(consequent_5);
1768
1777
  });
1769
- $.append($$anchor, fragment_6);
1778
+ $.append($$anchor, fragment_4);
1770
1779
  };
1771
1780
  const control = ($$anchor) => {
1772
- var fragment_8 = $.comment();
1773
- var node_9 = $.first_child(fragment_8);
1781
+ var fragment_6 = $.comment();
1782
+ var node_10 = $.first_child(fragment_6);
1774
1783
  var consequent_6 = ($$anchor) => {
1775
- var a = root_3$18();
1784
+ var a = root_4$12();
1776
1785
  $.attribute_effect(a, () => ({
1777
1786
  class: `btn ${variant() ?? ""}`,
1778
1787
  "data-tone": $$props.tone,
@@ -1789,19 +1798,20 @@ function Button($$anchor, $$props) {
1789
1798
  block: block(),
1790
1799
  spread: $.get(spread),
1791
1800
  busy: busy(),
1792
- on: on(),
1801
+ on: $$props.on,
1802
+ reach: $.get(reach),
1793
1803
  badged: $.get(badged)
1794
1804
  }
1795
1805
  }), void 0, void 0, void 0, "svelte-5ccjdv");
1796
- var node_10 = $.child(a);
1797
- inner(node_10);
1798
- var node_11 = $.sibling(node_10);
1799
- unread(node_11);
1806
+ var node_11 = $.child(a);
1807
+ inner(node_11);
1808
+ var node_12 = $.sibling(node_11);
1809
+ unread(node_12);
1800
1810
  $.reset(a);
1801
1811
  $.append($$anchor, a);
1802
1812
  };
1803
1813
  var alternate_1 = ($$anchor) => {
1804
- var button = root_4$12();
1814
+ var button = root_5$9();
1805
1815
  $.attribute_effect(button, () => ({
1806
1816
  class: `btn ${variant() ?? ""}`,
1807
1817
  "data-tone": $$props.tone,
@@ -1817,62 +1827,179 @@ function Button($$anchor, $$props) {
1817
1827
  block: block(),
1818
1828
  spread: $.get(spread),
1819
1829
  busy: busy(),
1820
- on: on(),
1830
+ on: $$props.on,
1831
+ reach: $.get(reach),
1821
1832
  badged: $.get(badged)
1822
1833
  }
1823
1834
  }), void 0, void 0, void 0, "svelte-5ccjdv");
1824
- var node_12 = $.child(button);
1825
- inner(node_12);
1826
- var node_13 = $.sibling(node_12);
1827
- unread(node_13);
1835
+ var node_13 = $.child(button);
1836
+ inner(node_13);
1837
+ var node_14 = $.sibling(node_13);
1838
+ unread(node_14);
1828
1839
  $.reset(button);
1829
1840
  $.append($$anchor, button);
1830
1841
  };
1831
- $.if(node_9, ($$render) => {
1842
+ $.if(node_10, ($$render) => {
1832
1843
  if ($$props.href) $$render(consequent_6);
1833
1844
  else $$render(alternate_1, -1);
1834
1845
  });
1835
- $.append($$anchor, fragment_8);
1846
+ $.append($$anchor, fragment_6);
1836
1847
  };
1837
- let variant = $.prop($$props, "variant", 3, "outline"), icon = $.prop($$props, "icon", 3, false), block = $.prop($$props, "block", 3, false), busy = $.prop($$props, "busy", 3, false), disabled = $.prop($$props, "disabled", 3, false), on = $.prop($$props, "on", 3, false), clamp = $.prop($$props, "clamp", 3, false), mono = $.prop($$props, "mono", 3, false), type = $.prop($$props, "type", 3, "button"), rest = $.rest_props($$props, rest_excludes$10);
1848
+ let variant = $.prop($$props, "variant", 3, "outline"), icon = $.prop($$props, "icon", 3, false), block = $.prop($$props, "block", 3, false), busy = $.prop($$props, "busy", 3, false), disabled = $.prop($$props, "disabled", 3, false), clamp = $.prop($$props, "clamp", 3, false), mono = $.prop($$props, "mono", 3, false), type = $.prop($$props, "type", 3, "button"), rest = $.rest_props($$props, rest_excludes$10);
1838
1849
  const badged = $.derived(() => $$props.badge !== void 0 && $$props.badge > 0);
1839
1850
  const tipText = $.derived(() => $$props.tip === false ? void 0 : $$props.tip ?? (icon() ? $$props["aria-label"] : void 0));
1840
1851
  const keep = $.derived(() => rest["data-keep"] !== void 0);
1841
1852
  const spread = $.derived(() => block() && !!$$props.trailing);
1842
- var fragment_9 = $.comment();
1843
- var node_14 = $.first_child(fragment_9);
1853
+ const reach = $.derived(() => variant() === "ghost" && $$props.on === void 0 && rest["aria-pressed"] === void 0 && rest["aria-current"] === void 0);
1854
+ var fragment_7 = $.comment();
1855
+ var node_15 = $.first_child(fragment_7);
1844
1856
  var consequent_7 = ($$anchor) => {
1845
- Tooltip($$anchor, {
1846
- get text() {
1847
- return $.get(tipText);
1848
- },
1849
- get shortcut() {
1850
- return $$props.shortcut;
1851
- },
1852
- role: "box",
1853
- get keep() {
1854
- return $.get(keep);
1855
- },
1856
- children: ($$anchor, $$slotProps) => {
1857
- control($$anchor);
1858
- },
1859
- $$slots: { default: true }
1860
- });
1857
+ {
1858
+ let $0 = $.derived(() => $.get(reach) ? "icon-button" : "box");
1859
+ Tooltip($$anchor, {
1860
+ get text() {
1861
+ return $.get(tipText);
1862
+ },
1863
+ get shortcut() {
1864
+ return $$props.shortcut;
1865
+ },
1866
+ get role() {
1867
+ return $.get($0);
1868
+ },
1869
+ get keep() {
1870
+ return $.get(keep);
1871
+ },
1872
+ children: ($$anchor, $$slotProps) => {
1873
+ control($$anchor);
1874
+ },
1875
+ $$slots: { default: true }
1876
+ });
1877
+ }
1861
1878
  };
1862
1879
  var alternate_2 = ($$anchor) => {
1863
1880
  control($$anchor);
1864
1881
  };
1865
- $.if(node_14, ($$render) => {
1882
+ $.if(node_15, ($$render) => {
1866
1883
  if ($.get(tipText)) $$render(consequent_7);
1867
1884
  else $$render(alternate_2, -1);
1868
1885
  });
1869
- $.append($$anchor, fragment_9);
1886
+ $.append($$anchor, fragment_7);
1870
1887
  $.pop();
1871
1888
  }
1872
1889
  //#endregion
1890
+ //#region ../node_modules/@sakuzu/kata/dist/svelte/lib/place.js
1891
+ var MIN_HEIGHT = 120;
1892
+ /** The distance from the trigger (gap-xs) and the least distance from the window's edge (gap-md) */
1893
+ function distances(context) {
1894
+ return {
1895
+ gap: tokenPx("--kata-gap-xs", context),
1896
+ edge: tokenPx("--kata-gap-md", context)
1897
+ };
1898
+ }
1899
+ /** The height of the surface's content, measured without its limit; its scroll stays */
1900
+ function naturalHeight(surface) {
1901
+ const keep = surface.style.maxHeight;
1902
+ const scroll = surface.scrollTop;
1903
+ surface.style.maxHeight = "";
1904
+ const natural = surface.scrollHeight;
1905
+ surface.style.maxHeight = keep;
1906
+ surface.scrollTop = scroll;
1907
+ return natural;
1908
+ }
1909
+ /**
1910
+ * Below the trigger (or above it), lined up with its start or its end edge. edge is the rectangle
1911
+ * it opens from (a bar's, for a trigger inside a bar), the trigger's by default; width is the width
1912
+ * the surface takes, its own by default.
1913
+ */
1914
+ function placeBelow(surface, trigger, options) {
1915
+ const { gap, edge: inset } = distances(surface);
1916
+ const from = options.edge ?? trigger;
1917
+ const vw = window.innerWidth;
1918
+ const vh = window.innerHeight;
1919
+ const width = options.width ?? surface.offsetWidth;
1920
+ const natural = naturalHeight(surface);
1921
+ const below = vh - from.bottom - gap - inset;
1922
+ const above = from.top - gap - inset;
1923
+ const up = options.up ? !(above < Math.min(natural, MIN_HEIGHT) && below > above) : below < Math.min(natural, MIN_HEIGHT) && above > below;
1924
+ const maxHeight = Math.max(MIN_HEIGHT, up ? above : below);
1925
+ const shown = Math.min(natural, maxHeight);
1926
+ const top = up ? from.top - gap - shown : from.bottom + gap;
1927
+ let left = options.align === "end" ? trigger.right - width : trigger.left;
1928
+ left = Math.max(inset, Math.min(left, vw - width - inset));
1929
+ return {
1930
+ top: Math.round(top),
1931
+ left: Math.round(left),
1932
+ maxHeight: Math.round(maxHeight)
1933
+ };
1934
+ }
1935
+ /**
1936
+ * Beside a vertical bar: gap-xs from its left edge, or from its right edge when there is no room on
1937
+ * the left, lined up with the top of the trigger and kept inside the window
1938
+ */
1939
+ function placeBeside(surface, trigger, bar) {
1940
+ const { gap, edge: inset } = distances(surface);
1941
+ const vw = window.innerWidth;
1942
+ const vh = window.innerHeight;
1943
+ const width = surface.offsetWidth;
1944
+ const maxHeight = Math.max(MIN_HEIGHT, vh - 2 * inset);
1945
+ const shown = Math.min(naturalHeight(surface), maxHeight);
1946
+ const top = Math.max(inset, Math.min(trigger.top, vh - shown - inset));
1947
+ let left = bar.left - gap - width;
1948
+ if (left < inset) left = Math.min(bar.right + gap, vw - width - inset);
1949
+ return {
1950
+ top: Math.round(top),
1951
+ left: Math.round(left),
1952
+ maxHeight: Math.round(maxHeight)
1953
+ };
1954
+ }
1955
+ /**
1956
+ * A submenu next to its row: on the right, on the left when there is no room, and inside the window
1957
+ * below
1958
+ */
1959
+ function placeNext(surface, row) {
1960
+ const { edge: inset } = distances(surface);
1961
+ const w = surface.offsetWidth;
1962
+ const h = surface.offsetHeight;
1963
+ let left = row.right;
1964
+ if (left + w > window.innerWidth - inset) left = Math.max(inset, row.left - w);
1965
+ let top = row.top;
1966
+ if (top + h > window.innerHeight - inset) top = Math.max(inset, window.innerHeight - inset - h);
1967
+ return {
1968
+ top,
1969
+ left
1970
+ };
1971
+ }
1972
+ /**
1973
+ * Places the surface again whenever its trigger moves, the page or a container scrolls (not the
1974
+ * surface itself, whose content scrolls), or the window is resized. Returns the function that
1975
+ * stops following.
1976
+ */
1977
+ function follow(trigger, surface, place) {
1978
+ let last = trigger.getBoundingClientRect();
1979
+ let frame = requestAnimationFrame(function watch() {
1980
+ const r = trigger.getBoundingClientRect();
1981
+ if (r.top !== last.top || r.left !== last.left || r.width !== last.width || r.height !== last.height) {
1982
+ last = r;
1983
+ place();
1984
+ }
1985
+ frame = requestAnimationFrame(watch);
1986
+ });
1987
+ const onScroll = (e) => {
1988
+ if (e.target instanceof Node && surface.contains(e.target)) return;
1989
+ place();
1990
+ };
1991
+ window.addEventListener("scroll", onScroll, true);
1992
+ window.addEventListener("resize", place);
1993
+ return () => {
1994
+ cancelAnimationFrame(frame);
1995
+ window.removeEventListener("scroll", onScroll, true);
1996
+ window.removeEventListener("resize", place);
1997
+ };
1998
+ }
1999
+ //#endregion
1873
2000
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Dropdown.svelte
1874
2001
  var root$69 = $.from_html(`<div><!></div>`);
1875
- var root_1$43 = $.from_html(`<span><!></span> <!>`, 1);
2002
+ var root_1$42 = $.from_html(`<span><!></span> <!>`, 1);
1876
2003
  function Dropdown($$anchor, $$props) {
1877
2004
  $.push($$props, true);
1878
2005
  let align = $.prop($$props, "align", 3, "end"), preferUp = $.prop($$props, "up", 3, false), openInitially = $.prop($$props, "openInitially", 3, false), menu = $.prop($$props, "menu", 3, false), bare = $.prop($$props, "bare", 3, false), block = $.prop($$props, "block", 3, false), role = $.prop($$props, "role", 3, "anchor");
@@ -1912,47 +2039,16 @@ function Dropdown($$anchor, $$props) {
1912
2039
  }));
1913
2040
  let focusFirst = false;
1914
2041
  let returnFocusEl = null;
1915
- const GAP = 4;
1916
- const EDGE = 8;
1917
- const MIN_HEIGHT = 120;
1918
2042
  function place() {
1919
2043
  if (!$.get(anchor) || !$.get(panelEl)) return;
1920
- const r = $.get(anchor).getBoundingClientRect();
2044
+ const r = role() === "icon-button" ? hitRect($.get(anchor), role()) : $.get(anchor).getBoundingClientRect();
1921
2045
  const bar = $.get(anchor).closest("[role=\"toolbar\"], [data-role=\"toolbar\"]");
1922
2046
  const edge = bar ? bar.getBoundingClientRect() : r;
1923
- const vw = window.innerWidth;
1924
- const vh = window.innerHeight;
1925
- const width = $.get(panelEl).offsetWidth;
1926
- const keep = $.get(panelEl).style.maxHeight;
1927
- $.get(panelEl).style.maxHeight = "";
1928
- const natural = $.get(panelEl).scrollHeight;
1929
- $.get(panelEl).style.maxHeight = keep;
1930
- if (bar?.getAttribute("aria-orientation") === "vertical") {
1931
- const maxHeight = Math.max(MIN_HEIGHT, vh - 16);
1932
- const shown = Math.min(natural, maxHeight);
1933
- const top = Math.max(EDGE, Math.min(r.top, vh - shown - EDGE));
1934
- let left = edge.left - GAP - width;
1935
- if (left < EDGE) left = Math.min(edge.right + GAP, vw - width - EDGE);
1936
- $.set(pos, {
1937
- top: Math.round(top),
1938
- left: Math.round(left),
1939
- maxHeight: Math.round(maxHeight)
1940
- }, true);
1941
- return;
1942
- }
1943
- const below = vh - edge.bottom - GAP - EDGE;
1944
- const above = edge.top - GAP - EDGE;
1945
- const up = preferUp() ? !(above < Math.min(natural, MIN_HEIGHT) && below > above) : below < Math.min(natural, MIN_HEIGHT) && above > below;
1946
- const maxHeight = Math.max(MIN_HEIGHT, up ? above : below);
1947
- const shown = Math.min(natural, maxHeight);
1948
- const top = up ? edge.top - GAP - shown : edge.bottom + GAP;
1949
- let left = align() === "end" ? r.right - width : r.left;
1950
- left = Math.max(EDGE, Math.min(left, vw - width - EDGE));
1951
- $.set(pos, {
1952
- top: Math.round(top),
1953
- left: Math.round(left),
1954
- maxHeight: Math.round(maxHeight)
1955
- }, true);
2047
+ $.set(pos, bar?.getAttribute("aria-orientation") === "vertical" ? placeBeside($.get(panelEl), r, edge) : placeBelow($.get(panelEl), r, {
2048
+ align: align(),
2049
+ up: preferUp(),
2050
+ edge
2051
+ }), true);
1956
2052
  }
1957
2053
  function toggle() {
1958
2054
  $.set(open, !$.get(open));
@@ -1974,7 +2070,7 @@ function Dropdown($$anchor, $$props) {
1974
2070
  }
1975
2071
  }
1976
2072
  $.user_effect(() => {
1977
- if (!$.get(open) || !$.get(panelEl)) return;
2073
+ if (!$.get(open) || !$.get(panelEl) || !$.get(anchor)) return;
1978
2074
  const el = $.get(panelEl);
1979
2075
  if (canPopover && !isShown(el)) try {
1980
2076
  el.showPopover();
@@ -1988,6 +2084,7 @@ function Dropdown($$anchor, $$props) {
1988
2084
  await tick();
1989
2085
  focusItemAt(0);
1990
2086
  })();
2087
+ return follow($.get(anchor), el, place);
1991
2088
  });
1992
2089
  function menuItems() {
1993
2090
  if (!$.get(panelEl)) return [];
@@ -2033,11 +2130,9 @@ function Dropdown($$anchor, $$props) {
2033
2130
  if (menu()) closeAndReturnFocus();
2034
2131
  else $.set(open, false);
2035
2132
  }
2036
- var fragment = root_1$43();
2133
+ var fragment = root_1$42();
2037
2134
  $.event("keydown", $.window, onKeyDown, true);
2038
2135
  $.event("pointerdown", $.window, onPointerDown, true);
2039
- $.event("resize", $.window, () => $.get(open) && place());
2040
- $.event("scroll", $.window, () => $.get(open) && place());
2041
2136
  var span = $.first_child(fragment);
2042
2137
  let classes;
2043
2138
  var node = $.child(span);
@@ -2058,6 +2153,7 @@ function Dropdown($$anchor, $$props) {
2058
2153
  menu: !bare(),
2059
2154
  placed: $.get(placed)
2060
2155
  });
2156
+ $.set_attribute(div, "data-outline", bare() ? void 0 : "");
2061
2157
  $.set_attribute(div, "popover", canPopover ? "manual" : void 0);
2062
2158
  $.set_attribute(div, "role", menu() ? "menu" : void 0);
2063
2159
  $.set_attribute(div, "aria-orientation", menu() ? "vertical" : void 0);
@@ -2199,7 +2295,7 @@ function createNarrow(remLimit) {
2199
2295
  }
2200
2296
  //#endregion
2201
2297
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Menu.svelte
2202
- var root$68 = $.from_html(`<div class="menu svelte-jzoay2" data-role="menu"><!></div>`);
2298
+ var root$68 = $.from_html(`<div class="menu svelte-jzoay2" data-role="menu" data-outline=""><!></div>`);
2203
2299
  function Menu($$anchor, $$props) {
2204
2300
  var div = root$68();
2205
2301
  var node = $.child(div);
@@ -2245,15 +2341,15 @@ var rest_excludes$9 = /* @__PURE__ */ new Set([
2245
2341
  "children"
2246
2342
  ]);
2247
2343
  var root$65 = $.from_html(`<span class="chk svelte-ibgq9r"><!></span>`);
2248
- var root_1$42 = $.from_html(`<span class="kbd t svelte-ibgq9r"> </span>`);
2344
+ var root_1$41 = $.from_html(`<span class="kbd t svelte-ibgq9r"> </span>`);
2249
2345
  var root_2$27 = $.from_html(`<span class="sub svelte-ibgq9r"><!></span>`);
2250
- var root_3$17 = $.from_html(`<!> <span class="grow t svelte-ibgq9r"><!></span> <!> <!>`, 1);
2346
+ var root_3$18 = $.from_html(`<!> <span class="grow t svelte-ibgq9r"><!></span> <!> <!>`, 1);
2251
2347
  var root_4$11 = $.from_html(`<a><!></a>`);
2252
2348
  var root_5$8 = $.from_html(`<button><!></button>`);
2253
2349
  function MenuItem($$anchor, $$props) {
2254
2350
  $.push($$props, true);
2255
2351
  const inner = ($$anchor) => {
2256
- var fragment = root_3$17();
2352
+ var fragment = root_3$18();
2257
2353
  var node = $.first_child(fragment);
2258
2354
  var consequent = ($$anchor) => {
2259
2355
  Icon($$anchor, { get name() {
@@ -2282,7 +2378,7 @@ function MenuItem($$anchor, $$props) {
2282
2378
  $.reset(span_1);
2283
2379
  var node_3 = $.sibling(span_1, 2);
2284
2380
  var consequent_3 = ($$anchor) => {
2285
- var span_2 = root_1$42();
2381
+ var span_2 = root_1$41();
2286
2382
  var text = $.only_child(span_2, true);
2287
2383
  $.template_effect(() => $.set_text(text, $$props.kbd));
2288
2384
  $.append($$anchor, span_2);
@@ -2364,7 +2460,7 @@ function MenuItem($$anchor, $$props) {
2364
2460
  //#endregion
2365
2461
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/MenuList.svelte
2366
2462
  var root$64 = $.from_html(`<!> <!>`, 1);
2367
- var root_1$41 = $.from_html(`<div class="sub svelte-1taxidq"><!></div>`);
2463
+ var root_1$40 = $.from_html(`<div class="sub svelte-1taxidq"><!></div>`);
2368
2464
  var root_2$26 = $.from_html(`<div class="level svelte-1taxidq"><!></div> <!>`, 1);
2369
2465
  function MenuList_1($$anchor, $$props) {
2370
2466
  $.push($$props, true);
@@ -2509,8 +2605,9 @@ function MenuList_1($$anchor, $$props) {
2509
2605
  }));
2510
2606
  let listEl = $.state(void 0);
2511
2607
  let subEl = $.state(void 0);
2512
- const EDGE = 8;
2608
+ let subRow = $.state(void 0);
2513
2609
  function place(row) {
2610
+ $.set(subRow, row, true);
2514
2611
  const r = row.getBoundingClientRect();
2515
2612
  $.set(subPos, {
2516
2613
  top: r.top,
@@ -2518,18 +2615,17 @@ function MenuList_1($$anchor, $$props) {
2518
2615
  }, true);
2519
2616
  tick().then(() => {
2520
2617
  if (!$.get(subEl)) return;
2521
- const w = $.get(subEl).offsetWidth;
2522
- const h = $.get(subEl).offsetHeight;
2523
- let left = r.right;
2524
- if (left + w > window.innerWidth - EDGE) left = Math.max(EDGE, r.left - w);
2525
- let top = r.top;
2526
- if (top + h > window.innerHeight - EDGE) top = Math.max(EDGE, window.innerHeight - EDGE - h);
2527
- $.set(subPos, {
2528
- top,
2529
- left
2530
- }, true);
2618
+ $.set(subPos, placeNext($.get(subEl), r), true);
2531
2619
  });
2532
2620
  }
2621
+ $.user_effect(() => {
2622
+ const el = $.get(subEl);
2623
+ const row = $.get(subRow);
2624
+ if (!el || !row) return;
2625
+ return follow(row, el, () => {
2626
+ $.set(subPos, placeNext(el, row.getBoundingClientRect()), true);
2627
+ });
2628
+ });
2533
2629
  function openAt(index, row, focus = false) {
2534
2630
  if ($.get(inPlace)) $.set(inPlaceSub, index, true);
2535
2631
  else {
@@ -2630,7 +2726,7 @@ function MenuList_1($$anchor, $$props) {
2630
2726
  $.bind_this(div, ($$value) => $.set(listEl, $$value), () => $.get(listEl));
2631
2727
  var node_6 = $.sibling(div, 2);
2632
2728
  var consequent_5 = ($$anchor) => {
2633
- var div_1 = root_1$41();
2729
+ var div_1 = root_1$40();
2634
2730
  let styles;
2635
2731
  Menu($.child(div_1), {
2636
2732
  children: ($$anchor, $$slotProps) => {
@@ -2686,11 +2782,11 @@ function Block($$anchor, $$props) {
2686
2782
  //#endregion
2687
2783
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/InlineEdit.svelte
2688
2784
  var root$62 = $.from_html(`<textarea class="svelte-w5dys8"></textarea>`);
2689
- var root_1$40 = $.from_html(`<input type="text" class="svelte-w5dys8"/>`);
2785
+ var root_1$39 = $.from_html(`<input type="text" class="svelte-w5dys8"/>`);
2690
2786
  var root_2$25 = $.from_html(`<span data-role="box"><!></span>`);
2691
- var root_3$16 = $.from_html(`<span data-role="box"><span class="t clamp svelte-w5dys8"> </span></span>`);
2692
- var root_4$10 = $.from_html(`<button type="button" data-role="box"><span class="t clamp svelte-w5dys8"> </span> <span class="pen svelte-w5dys8"><!></span></button>`);
2693
- var root_5$7 = $.from_html(`<button class="add svelte-w5dys8" type="button" data-role="box" data-h="button"><!><span class="t svelte-w5dys8"> </span></button>`);
2787
+ var root_3$17 = $.from_html(`<span data-role="box" data-edge-pass=""><span class="t clamp svelte-w5dys8" data-ink=""> </span></span>`);
2788
+ var root_4$10 = $.from_html(`<button type="button" data-role="box" data-edge-pass=""><span class="t clamp svelte-w5dys8" data-ink=""> </span> <span class="pen svelte-w5dys8"><!></span></button>`);
2789
+ var root_5$7 = $.from_html(`<button class="add svelte-w5dys8" type="button" data-role="box" data-edge-pass=""><span class="line svelte-w5dys8" data-edge-pass=""><span class="mark svelte-w5dys8"><!></span><span class="t svelte-w5dys8" data-ink=""> </span></span></button>`);
2694
2790
  function InlineEdit($$anchor, $$props) {
2695
2791
  $.push($$props, true);
2696
2792
  let value = $.prop($$props, "value", 15, ""), editable = $.prop($$props, "editable", 3, true), title = $.prop($$props, "title", 3, false), multiline = $.prop($$props, "multiline", 3, false), editing = $.prop($$props, "editing", 15, false);
@@ -2765,7 +2861,7 @@ function InlineEdit($$anchor, $$props) {
2765
2861
  $.append($$anchor, textarea);
2766
2862
  };
2767
2863
  var alternate = ($$anchor) => {
2768
- var input = root_1$40();
2864
+ var input = root_1$39();
2769
2865
  $.remove_input_defaults(input);
2770
2866
  $.bind_this(input, ($$value) => $.set(inputEl, $$value), () => $.get(inputEl));
2771
2867
  $.template_effect(() => $.set_attribute(input, "aria-label", $.get(a11yLabel)));
@@ -2792,7 +2888,7 @@ function InlineEdit($$anchor, $$props) {
2792
2888
  var fragment_1 = $.comment();
2793
2889
  var node_2 = $.first_child(fragment_1);
2794
2890
  var consequent_2 = ($$anchor) => {
2795
- var span_1 = root_3$16();
2891
+ var span_1 = root_3$17();
2796
2892
  let classes_1;
2797
2893
  var span_2 = $.child(span_1);
2798
2894
  var text = $.only_child(span_2, true);
@@ -2802,7 +2898,6 @@ function InlineEdit($$anchor, $$props) {
2802
2898
  title: title(),
2803
2899
  multi: multiline()
2804
2900
  });
2805
- $.set_attribute(span_1, "data-h", multiline() ? void 0 : "button");
2806
2901
  $.set_text(text, value());
2807
2902
  });
2808
2903
  $.append($$anchor, span_1);
@@ -2827,7 +2922,6 @@ function InlineEdit($$anchor, $$props) {
2827
2922
  multi: multiline()
2828
2923
  });
2829
2924
  $.set_attribute(button, "aria-label", $.get(a11yLabel));
2830
- $.set_attribute(button, "data-h", multiline() ? void 0 : "button");
2831
2925
  $.set_text(text_1, value());
2832
2926
  });
2833
2927
  $.delegated("click", button, start);
@@ -2835,10 +2929,13 @@ function InlineEdit($$anchor, $$props) {
2835
2929
  };
2836
2930
  var alternate_1 = ($$anchor) => {
2837
2931
  var button_1 = root_5$7();
2838
- var node_4 = $.child(button_1);
2839
- Icon(node_4, { name: "plus" });
2840
- var span_5 = $.sibling(node_4);
2841
- var text_2 = $.only_child(span_5, true);
2932
+ var span_5 = $.child(button_1);
2933
+ var span_6 = $.child(span_5);
2934
+ Icon($.child(span_6), { name: "plus" });
2935
+ $.reset(span_6);
2936
+ var span_7 = $.sibling(span_6);
2937
+ var text_2 = $.only_child(span_7, true);
2938
+ $.reset(span_5);
2842
2939
  $.reset(button_1);
2843
2940
  $.template_effect(() => {
2844
2941
  $.set_attribute(button_1, "aria-label", $.get(a11yLabel));
@@ -2860,11 +2957,11 @@ $.delegate(["keydown", "click"]);
2860
2957
  //#endregion
2861
2958
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Pair.svelte
2862
2959
  var root$61 = $.from_html(`<label class="k svelte-kxn48z"> </label>`);
2863
- var root_1$39 = $.from_html(`<a class="k link svelte-kxn48z"> </a>`);
2960
+ var root_1$38 = $.from_html(`<a class="k link svelte-kxn48z"> </a>`);
2864
2961
  var root_2$24 = $.from_html(`<span class="k svelte-kxn48z"> </span>`);
2865
- var root_3$15 = $.from_html(`<span><!></span>`);
2962
+ var root_3$16 = $.from_html(`<span><!></span>`);
2866
2963
  var root_4$9 = $.from_html(`<div class="row svelte-kxn48z"><!></div>`);
2867
- var root_5$6 = $.from_html(`<span class="note svelte-kxn48z"> </span>`);
2964
+ var root_5$6 = $.from_html(`<span class="note svelte-kxn48z" data-ink=""> </span>`);
2868
2965
  var root_6$5 = $.from_html(`<div data-role="pair"><!> <!> <!></div>`);
2869
2966
  function Pair($$anchor, $$props) {
2870
2967
  $.push($$props, true);
@@ -2882,6 +2979,7 @@ function Pair($$anchor, $$props) {
2882
2979
  const tiny = createNarrow(24);
2883
2980
  $.user_effect(tiny.start);
2884
2981
  const h = $.derived(() => top() || tiny.current || read() ? void 0 : "button");
2982
+ const side = $.derived(() => !$$props.note && !tiny.current);
2885
2983
  var div = root_6$5();
2886
2984
  let classes;
2887
2985
  var node = $.child(div);
@@ -2897,7 +2995,7 @@ function Pair($$anchor, $$props) {
2897
2995
  $.append($$anchor, label_1);
2898
2996
  };
2899
2997
  var consequent_1 = ($$anchor) => {
2900
- var a = root_1$39();
2998
+ var a = root_1$38();
2901
2999
  let styles_1;
2902
3000
  var text_1 = $.only_child(a, true);
2903
3001
  $.template_effect(() => {
@@ -2924,7 +3022,7 @@ function Pair($$anchor, $$props) {
2924
3022
  });
2925
3023
  var node_1 = $.sibling(node, 2);
2926
3024
  var consequent_2 = ($$anchor) => {
2927
- var span_1 = root_3$15();
3025
+ var span_1 = root_3$16();
2928
3026
  let classes_1;
2929
3027
  var node_2 = $.child(span_1);
2930
3028
  $.snippet(node_2, () => $$props.children);
@@ -2966,6 +3064,7 @@ function Pair($$anchor, $$props) {
2966
3064
  noted: !!$$props.note
2967
3065
  });
2968
3066
  $.set_attribute(div, "data-h", $$props.note ? void 0 : $.get(h));
3067
+ $.set_attribute(div, "data-edge-pass", $.get(side) ? "" : void 0);
2969
3068
  });
2970
3069
  $.append($$anchor, div);
2971
3070
  $.pop();
@@ -3022,41 +3121,49 @@ function Kv($$anchor, $$props) {
3022
3121
  }
3023
3122
  //#endregion
3024
3123
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/LinkAction.svelte
3025
- var root$59 = $.from_html(`<!><span class="t svelte-3d5dxp"><!></span><!>`, 1);
3026
- var root_1$38 = $.from_html(`<a class="link svelte-3d5dxp" data-role="box"><!></a>`);
3027
- var root_2$23 = $.from_html(`<button type="button" class="link svelte-3d5dxp" data-role="box"><!></button>`);
3124
+ var root$59 = $.from_html(`<span class="mark svelte-3d5dxp"><!></span>`);
3125
+ var root_1$37 = $.from_html(`<span class="line svelte-3d5dxp" data-edge-pass=""><!><span class="t svelte-3d5dxp" data-ink=""><!></span><!></span>`);
3126
+ var root_2$23 = $.from_html(`<a class="link svelte-3d5dxp" data-role="box" data-edge-pass=""><!></a>`);
3127
+ var root_3$15 = $.from_html(`<button type="button" class="link svelte-3d5dxp" data-role="box" data-edge-pass=""><!></button>`);
3028
3128
  function LinkAction($$anchor, $$props) {
3029
3129
  const inner = ($$anchor) => {
3030
- var fragment = root$59();
3031
- var node = $.first_child(fragment);
3130
+ var span = root_1$37();
3131
+ var node = $.child(span);
3032
3132
  var consequent = ($$anchor) => {
3033
- Icon($$anchor, { get name() {
3133
+ var span_1 = root$59();
3134
+ Icon($.child(span_1), { get name() {
3034
3135
  return $$props.icon;
3035
3136
  } });
3137
+ $.reset(span_1);
3138
+ $.append($$anchor, span_1);
3036
3139
  };
3037
3140
  $.if(node, ($$render) => {
3038
3141
  if ($$props.icon) $$render(consequent);
3039
3142
  });
3040
- var span = $.sibling(node);
3041
- var node_1 = $.child(span);
3042
- $.snippet(node_1, () => $$props.children);
3043
- $.reset(span);
3044
- var node_2 = $.sibling(span);
3143
+ var span_2 = $.sibling(node);
3144
+ var node_2 = $.child(span_2);
3145
+ $.snippet(node_2, () => $$props.children);
3146
+ $.reset(span_2);
3147
+ var node_3 = $.sibling(span_2);
3045
3148
  var consequent_1 = ($$anchor) => {
3046
- Icon($$anchor, { name: "arrow-up-right" });
3149
+ var span_3 = root$59();
3150
+ Icon($.child(span_3), { name: "arrow-up-right" });
3151
+ $.reset(span_3);
3152
+ $.append($$anchor, span_3);
3047
3153
  };
3048
- $.if(node_2, ($$render) => {
3154
+ $.if(node_3, ($$render) => {
3049
3155
  if (external()) $$render(consequent_1);
3050
3156
  });
3051
- $.append($$anchor, fragment);
3157
+ $.reset(span);
3158
+ $.append($$anchor, span);
3052
3159
  };
3053
3160
  let disabled = $.prop($$props, "disabled", 3, false), external = $.prop($$props, "external", 3, false);
3054
- var fragment_3 = $.comment();
3055
- var node_3 = $.first_child(fragment_3);
3161
+ var fragment = $.comment();
3162
+ var node_5 = $.first_child(fragment);
3056
3163
  var consequent_2 = ($$anchor) => {
3057
- var a = root_1$38();
3058
- var node_4 = $.child(a);
3059
- inner(node_4);
3164
+ var a = root_2$23();
3165
+ var node_6 = $.child(a);
3166
+ inner(node_6);
3060
3167
  $.reset(a);
3061
3168
  $.template_effect(() => {
3062
3169
  $.set_attribute(a, "href", $$props.href);
@@ -3069,9 +3176,9 @@ function LinkAction($$anchor, $$props) {
3069
3176
  $.append($$anchor, a);
3070
3177
  };
3071
3178
  var alternate = ($$anchor) => {
3072
- var button = root_2$23();
3073
- var node_5 = $.child(button);
3074
- inner(node_5);
3179
+ var button = root_3$15();
3180
+ var node_7 = $.child(button);
3181
+ inner(node_7);
3075
3182
  $.reset(button);
3076
3183
  $.template_effect(() => button.disabled = disabled());
3077
3184
  $.delegated("click", button, function(...$$args) {
@@ -3079,11 +3186,11 @@ function LinkAction($$anchor, $$props) {
3079
3186
  });
3080
3187
  $.append($$anchor, button);
3081
3188
  };
3082
- $.if(node_3, ($$render) => {
3189
+ $.if(node_5, ($$render) => {
3083
3190
  if ($$props.href) $$render(consequent_2);
3084
3191
  else $$render(alternate, -1);
3085
3192
  });
3086
- $.append($$anchor, fragment_3);
3193
+ $.append($$anchor, fragment);
3087
3194
  }
3088
3195
  $.delegate(["click"]);
3089
3196
  //#endregion
@@ -3153,21 +3260,66 @@ var clampTip = (node) => {
3153
3260
  };
3154
3261
  //#endregion
3155
3262
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Text.svelte
3263
+ var root$58 = $.from_html(`<div data-edge-pass=""><!> <span><!></span></div>`);
3156
3264
  function Text($$anchor, $$props) {
3157
3265
  $.push($$props, true);
3266
+ const text = ($$anchor) => {
3267
+ var fragment = $.comment();
3268
+ var node_1 = $.first_child(fragment);
3269
+ $.element(node_1, () => $.get(tag), false, ($$element, $$anchor) => {
3270
+ $.action($$element, ($$node, $$action_arg) => clampTipIf?.($$node, $$action_arg), clamp);
3271
+ $.attribute_effect($$element, () => ({
3272
+ class: `kata-text ${role() ?? ""}`,
3273
+ "data-role": $.get(dataRole),
3274
+ "data-ink": true,
3275
+ id: $$props.id,
3276
+ for: $.get(tag) === "label" ? $$props.for : void 0,
3277
+ href: $.get(tag) === "a" ? $$props.href : void 0,
3278
+ [$.CLASS]: {
3279
+ clamp: clamp(),
3280
+ clamp2: $$props.lines === 2,
3281
+ wrap: wrap(),
3282
+ muted: muted(),
3283
+ mono: mono(),
3284
+ tabular: tabular()
3285
+ }
3286
+ }), void 0, void 0, void 0, "svelte-1hyv1j2");
3287
+ var fragment_1 = $.comment();
3288
+ var node_2 = $.first_child(fragment_1);
3289
+ $.snippet(node_2, () => $$props.children);
3290
+ $.append($$anchor, fragment_1);
3291
+ });
3292
+ $.append($$anchor, fragment);
3293
+ };
3158
3294
  let role = $.prop($$props, "role", 3, "body"), clamp = $.prop($$props, "clamp", 3, false), wrap = $.prop($$props, "wrap", 3, false), muted = $.prop($$props, "muted", 3, false), mono = $.prop($$props, "mono", 3, false), tabular = $.prop($$props, "tabular", 3, false);
3159
- /** The type role (default body) */
3160
- /** Another element than the role's own: h1 (title, h1), h2 (h2), p (body, prose) or span */
3161
- /** One line with an ellipsis; the full text shows on hover when it is clipped */
3162
- /** Two lines with an ellipsis */
3163
- /** Keep line breaks and wrap long words (text that people wrote) */
3164
- /** The muted text color */
3165
- /** The monospace font, at the role's size */
3166
- /** Figures of equal width, for columns of numbers and times */
3167
- /** The labelled control, with as="label" */
3168
- /** The target, with as="a" */
3169
3295
  const tag = $.derived(() => $$props.as ?? (role() === "h1" || role() === "title" ? "h1" : role() === "h2" ? "h2" : role() === "prose" || role() === "body" ? "p" : "span"));
3170
3296
  const dataRole = $.derived(() => role() === "body" || role() === "prose" ? "p" : role());
3297
+ let ended = $.state(void 0);
3298
+ let seat = $.state(void 0);
3299
+ let under = $.state(false);
3300
+ $.user_effect(() => {
3301
+ const row = $.get(ended);
3302
+ const s = $.get(seat);
3303
+ if (!row || !s || typeof ResizeObserver === "undefined") return;
3304
+ let frame = 0;
3305
+ const read = () => {
3306
+ const text = row.firstElementChild;
3307
+ if (!text) return;
3308
+ const next = s.getBoundingClientRect().top >= text.getBoundingClientRect().bottom;
3309
+ cancelAnimationFrame(frame);
3310
+ frame = requestAnimationFrame(() => {
3311
+ frame = 0;
3312
+ if (untrack(() => $.get(under)) !== next) $.set(under, next);
3313
+ });
3314
+ };
3315
+ const ro = new ResizeObserver(read);
3316
+ ro.observe(row);
3317
+ ro.observe(s);
3318
+ return () => {
3319
+ ro.disconnect();
3320
+ cancelAnimationFrame(frame);
3321
+ };
3322
+ });
3171
3323
  const clampTipIf = (node, on) => {
3172
3324
  let inner = on ? clampTip(node) : void 0;
3173
3325
  return {
@@ -3183,31 +3335,35 @@ function Text($$anchor, $$props) {
3183
3335
  }
3184
3336
  };
3185
3337
  };
3186
- var fragment = $.comment();
3187
- var node_1 = $.first_child(fragment);
3188
- $.element(node_1, () => $.get(tag), false, ($$element, $$anchor) => {
3189
- $.action($$element, ($$node, $$action_arg) => clampTipIf?.($$node, $$action_arg), clamp);
3190
- $.attribute_effect($$element, () => ({
3191
- class: `kata-text ${role() ?? ""}`,
3192
- "data-role": $.get(dataRole),
3193
- id: $$props.id,
3194
- for: $.get(tag) === "label" ? $$props.for : void 0,
3195
- href: $.get(tag) === "a" ? $$props.href : void 0,
3196
- [$.CLASS]: {
3197
- clamp: clamp(),
3198
- clamp2: $$props.lines === 2,
3199
- wrap: wrap(),
3200
- muted: muted(),
3201
- mono: mono(),
3202
- tabular: tabular()
3203
- }
3204
- }), void 0, void 0, void 0, "svelte-1hyv1j2");
3205
- var fragment_1 = $.comment();
3206
- var node_2 = $.first_child(fragment_1);
3207
- $.snippet(node_2, () => $$props.children);
3208
- $.append($$anchor, fragment_1);
3338
+ var fragment_2 = $.comment();
3339
+ var node_3 = $.first_child(fragment_2);
3340
+ var consequent = ($$anchor) => {
3341
+ var div = root$58();
3342
+ let classes;
3343
+ var node_4 = $.child(div);
3344
+ text(node_4);
3345
+ var span = $.sibling(node_4, 2);
3346
+ var node_5 = $.child(span);
3347
+ $.snippet(node_5, () => $$props.end);
3348
+ $.reset(span);
3349
+ $.bind_this(span, ($$value) => $.set(seat, $$value), () => $.get(seat));
3350
+ $.reset(div);
3351
+ $.bind_this(div, ($$value) => $.set(ended, $$value), () => $.get(ended));
3352
+ $.template_effect(() => {
3353
+ classes = $.set_class(div, 1, "ended svelte-1hyv1j2", null, classes, { one: clamp() });
3354
+ $.set_class(span, 1, `end end-${role() ?? ""}`, "svelte-1hyv1j2");
3355
+ $.set_attribute(span, "data-under", $.get(under) || void 0);
3356
+ });
3357
+ $.append($$anchor, div);
3358
+ };
3359
+ var alternate = ($$anchor) => {
3360
+ text($$anchor);
3361
+ };
3362
+ $.if(node_3, ($$render) => {
3363
+ if ($$props.end) $$render(consequent);
3364
+ else $$render(alternate, -1);
3209
3365
  });
3210
- $.append($$anchor, fragment);
3366
+ $.append($$anchor, fragment_2);
3211
3367
  $.pop();
3212
3368
  }
3213
3369
  //#endregion
@@ -3234,8 +3390,8 @@ var rest_excludes$8 = /* @__PURE__ */ new Set([
3234
3390
  "onkeydown",
3235
3391
  "onblur"
3236
3392
  ]);
3237
- var root$58 = $.from_html(`<option></option>`);
3238
- var root_1$37 = $.from_html(`<datalist></datalist>`);
3393
+ var root$57 = $.from_html(`<option></option>`);
3394
+ var root_1$36 = $.from_html(`<datalist></datalist>`);
3239
3395
  var root_2$22 = $.from_html(`<span class="unit svelte-1y5ju7y"> </span>`);
3240
3396
  var root_3$14 = $.from_html(`<label data-role="box" data-h="button"><input/> <!> <!></label>`);
3241
3397
  function TextInput($$anchor, $$props) {
@@ -3270,9 +3426,9 @@ function TextInput($$anchor, $$props) {
3270
3426
  }), void 0, void 0, void 0, "svelte-1y5ju7y", true);
3271
3427
  var node = $.sibling(input, 2);
3272
3428
  var consequent = ($$anchor) => {
3273
- var datalist = root_1$37();
3429
+ var datalist = root_1$36();
3274
3430
  $.each(datalist, 20, () => $$props.suggestions ?? [], (s) => s, ($$anchor, s) => {
3275
- var option = root$58();
3431
+ var option = root$57();
3276
3432
  var option_value = {};
3277
3433
  $.template_effect(() => {
3278
3434
  if (option_value !== (option_value = s)) option.value = (option.__value = option_value) ?? "";
@@ -3307,8 +3463,8 @@ function TextInput($$anchor, $$props) {
3307
3463
  }
3308
3464
  //#endregion
3309
3465
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/AttributeList.svelte
3310
- var root$57 = $.from_html(`<span class="lock svelte-167hfxz" role="img"><!></span>`);
3311
- var root_1$36 = $.from_html(`<div class="row svelte-167hfxz"><span class="k svelte-167hfxz"><!></span> <span class="v svelte-167hfxz"><!></span> <span class="end svelte-167hfxz"><!></span></div>`);
3466
+ var root$56 = $.from_html(`<span class="lock svelte-167hfxz" role="img"><!></span>`);
3467
+ var root_1$35 = $.from_html(`<div class="row svelte-167hfxz"><span class="k svelte-167hfxz"><!></span> <span class="v svelte-167hfxz"><!></span> <span class="end svelte-167hfxz"><!></span></div>`);
3312
3468
  var root_2$21 = $.from_html(`<div class="row draft svelte-167hfxz"><span class="k svelte-167hfxz"><!></span> <span class="v svelte-167hfxz"><!></span> <span class="end svelte-167hfxz"><!></span></div>`);
3313
3469
  var root_3$13 = $.from_html(`<!> <!>`, 1);
3314
3470
  var root_4$8 = $.from_html(`<div class="attributes svelte-167hfxz"><!> <!></div>`);
@@ -3422,7 +3578,7 @@ function AttributeList($$anchor, $$props) {
3422
3578
  $.each(node_3, 17, () => $.get(shown), (a) => `${a.index}:${$.get(rev)}`, ($$anchor, a) => {
3423
3579
  const fixed = $.derived(() => locked().includes($.get(a).key));
3424
3580
  const editable = $.derived(() => !$.get(fixed) && !!$$props.onchange);
3425
- var div_1 = root_1$36();
3581
+ var div_1 = root_1$35();
3426
3582
  var span = $.child(div_1);
3427
3583
  var node_4 = $.child(span);
3428
3584
  {
@@ -3475,7 +3631,7 @@ function AttributeList($$anchor, $$props) {
3475
3631
  var span_2 = $.sibling(span_1, 2);
3476
3632
  var node_6 = $.child(span_2);
3477
3633
  var consequent_3 = ($$anchor) => {
3478
- var span_3 = root$57();
3634
+ var span_3 = root$56();
3479
3635
  Icon($.child(span_3), {
3480
3636
  name: "lock",
3481
3637
  tone: "muted"
@@ -3614,12 +3770,16 @@ function AttributeList($$anchor, $$props) {
3614
3770
  $.delegate(["focusout"]);
3615
3771
  //#endregion
3616
3772
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Banner.svelte
3617
- var root$56 = $.from_html(`<div class="act svelte-1m4ykuh"><!></div>`);
3618
- var root_1$35 = $.from_html(`<div data-inset="" data-role="banner"><div class="line svelte-1m4ykuh"><span class="mark svelte-1m4ykuh"><!></span> <div class="text svelte-1m4ykuh"><!></div></div> <!></div>`);
3773
+ var root$55 = $.from_html(`<div class="text svelte-1m4ykuh"><!></div>`);
3774
+ var root_1$34 = $.from_html(`<div class="text svelte-1m4ykuh" data-ink=""><!></div>`);
3775
+ var root_2$20 = $.from_html(`<div class="act svelte-1m4ykuh"><!></div>`);
3776
+ var root_3$12 = $.from_html(`<div data-inset="" data-edge-pass="" data-role="banner"><div class="line svelte-1m4ykuh" data-edge-pass=""><span class="mark svelte-1m4ykuh"><!></span> <!></div> <!></div>`);
3619
3777
  function Banner($$anchor, $$props) {
3620
3778
  let floating = $.prop($$props, "floating", 3, false);
3621
3779
  /** The panel surface, for a notice over the stage */
3622
3780
  /** The accessible name of the notice, when it is referred to by name */
3781
+ /** The text, one line that may wrap */
3782
+ /** Several lines instead of the text (a Stack of Texts) */
3623
3783
  /** An action at the right end */
3624
3784
  const MARK = {
3625
3785
  info: "info",
@@ -3627,7 +3787,7 @@ function Banner($$anchor, $$props) {
3627
3787
  error: "circle-alert",
3628
3788
  ok: "circle-check"
3629
3789
  };
3630
- var div = root_1$35();
3790
+ var div = root_3$12();
3631
3791
  let classes;
3632
3792
  var div_1 = $.child(div);
3633
3793
  var span = $.child(div_1);
@@ -3635,21 +3795,36 @@ function Banner($$anchor, $$props) {
3635
3795
  return MARK[$$props.tone];
3636
3796
  } });
3637
3797
  $.reset(span);
3638
- var div_2 = $.sibling(span, 2);
3639
- var node_1 = $.child(div_2);
3640
- $.snippet(node_1, () => $$props.children);
3641
- $.reset(div_2);
3642
- $.reset(div_1);
3643
- var node_2 = $.sibling(div_1, 2);
3798
+ var node_1 = $.sibling(span, 2);
3644
3799
  var consequent = ($$anchor) => {
3645
- var div_3 = root$56();
3800
+ var div_2 = root$55();
3801
+ var node_2 = $.child(div_2);
3802
+ $.snippet(node_2, () => $$props.body);
3803
+ $.reset(div_2);
3804
+ $.append($$anchor, div_2);
3805
+ };
3806
+ var alternate = ($$anchor) => {
3807
+ var div_3 = root_1$34();
3646
3808
  var node_3 = $.child(div_3);
3647
- $.snippet(node_3, () => $$props.act);
3809
+ $.snippet(node_3, () => $$props.children ?? $.noop);
3648
3810
  $.reset(div_3);
3649
3811
  $.append($$anchor, div_3);
3650
3812
  };
3651
- $.if(node_2, ($$render) => {
3652
- if ($$props.act) $$render(consequent);
3813
+ $.if(node_1, ($$render) => {
3814
+ if ($$props.body) $$render(consequent);
3815
+ else $$render(alternate, -1);
3816
+ });
3817
+ $.reset(div_1);
3818
+ var node_4 = $.sibling(div_1, 2);
3819
+ var consequent_1 = ($$anchor) => {
3820
+ var div_4 = root_2$20();
3821
+ var node_5 = $.child(div_4);
3822
+ $.snippet(node_5, () => $$props.act);
3823
+ $.reset(div_4);
3824
+ $.append($$anchor, div_4);
3825
+ };
3826
+ $.if(node_4, ($$render) => {
3827
+ if ($$props.act) $$render(consequent_1);
3653
3828
  });
3654
3829
  $.reset(div);
3655
3830
  $.template_effect(() => {
@@ -3661,10 +3836,10 @@ function Banner($$anchor, $$props) {
3661
3836
  }
3662
3837
  //#endregion
3663
3838
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Stack.svelte
3664
- var root$55 = $.from_html(`<div class="stack svelte-11uhtvr" data-role="stack"><!></div>`);
3839
+ var root$54 = $.from_html(`<div class="stack svelte-11uhtvr" data-role="stack"><!></div>`);
3665
3840
  function Stack($$anchor, $$props) {
3666
3841
  let align = $.prop($$props, "align", 3, "stretch");
3667
- var div = root$55();
3842
+ var div = root$54();
3668
3843
  var node = $.child(div);
3669
3844
  $.snippet(node, () => $$props.children);
3670
3845
  $.reset(div);
@@ -3676,11 +3851,11 @@ function Stack($$anchor, $$props) {
3676
3851
  }
3677
3852
  //#endregion
3678
3853
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Bubble.svelte
3679
- var root$54 = $.from_html(`<div class="foot svelte-woe9qp" data-inset=""><!></div>`);
3680
- var root_1$34 = $.from_html(`<div data-role="popover"><div><!></div> <!></div>`);
3854
+ var root$53 = $.from_html(`<div class="foot svelte-woe9qp" data-inset=""><!></div>`);
3855
+ var root_1$33 = $.from_html(`<div data-role="popover" data-outline=""><div><!></div> <!></div>`);
3681
3856
  function Bubble($$anchor, $$props) {
3682
3857
  let gap = $.prop($$props, "gap", 3, "sm"), flush = $.prop($$props, "flush", 3, false);
3683
- var div = root_1$34();
3858
+ var div = root_1$33();
3684
3859
  let classes;
3685
3860
  var div_1 = $.child(div);
3686
3861
  let classes_1;
@@ -3703,7 +3878,7 @@ function Bubble($$anchor, $$props) {
3703
3878
  $.reset(div_1);
3704
3879
  var node_2 = $.sibling(div_1, 2);
3705
3880
  var consequent = ($$anchor) => {
3706
- var div_2 = root$54();
3881
+ var div_2 = root$53();
3707
3882
  var node_3 = $.child(div_2);
3708
3883
  $.snippet(node_3, () => $$props.foot);
3709
3884
  $.reset(div_2);
@@ -3722,8 +3897,8 @@ function Bubble($$anchor, $$props) {
3722
3897
  }
3723
3898
  //#endregion
3724
3899
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/ColorGrid.svelte
3725
- var root$53 = $.from_html(`<button type="button" role="radio"></button>`);
3726
- var root_1$33 = $.from_html(`<div class="grid svelte-qflf14" data-role="grid" role="radiogroup"></div>`);
3900
+ var root$52 = $.from_html(`<button type="button" role="radio"></button>`);
3901
+ var root_1$32 = $.from_html(`<div class="grid svelte-qflf14" data-role="grid" role="radiogroup"></div>`);
3727
3902
  function ColorGrid($$anchor, $$props) {
3728
3903
  $.push($$props, true);
3729
3904
  let columns = $.prop($$props, "columns", 3, 9);
@@ -3733,10 +3908,10 @@ function ColorGrid($$anchor, $$props) {
3733
3908
  function on(hex) {
3734
3909
  return $$props.value !== void 0 && hex.toLowerCase() === $$props.value.toLowerCase();
3735
3910
  }
3736
- var div = root_1$33();
3911
+ var div = root_1$32();
3737
3912
  let styles;
3738
3913
  $.each(div, 21, () => $$props.colors, (c) => c.hex, ($$anchor, c) => {
3739
- var button = root$53();
3914
+ var button = root$52();
3740
3915
  let classes;
3741
3916
  let styles_1;
3742
3917
  $.template_effect(($0, $1) => {
@@ -3759,8 +3934,8 @@ function ColorGrid($$anchor, $$props) {
3759
3934
  $.delegate(["click"]);
3760
3935
  //#endregion
3761
3936
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/NumberInput.svelte
3762
- var root$52 = $.from_html(`<span class="unit svelte-1abgrv8"> </span>`);
3763
- var root_1$32 = $.from_html(`<label data-role="box" data-h="button"><input type="number" class="svelte-1abgrv8"/> <!></label>`);
3937
+ var root$51 = $.from_html(`<span class="unit svelte-1abgrv8"> </span>`);
3938
+ var root_1$31 = $.from_html(`<label data-role="box" data-h="button"><input type="number" class="svelte-1abgrv8"/> <!></label>`);
3764
3939
  function NumberInput($$anchor, $$props) {
3765
3940
  $.push($$props, true);
3766
3941
  let value = $.prop($$props, "value", 15, null), disabled = $.prop($$props, "disabled", 3, false), readonly = $.prop($$props, "readonly", 3, false), error = $.prop($$props, "error", 3, false);
@@ -3777,14 +3952,14 @@ function NumberInput($$anchor, $$props) {
3777
3952
  /** Every key stroke (the raw value is e.currentTarget.value) */
3778
3953
  /** The value is committed */
3779
3954
  const chars = $.derived(() => $$props.digits === void 0 ? void 0 : Math.max($$props.digits, $$props.placeholder?.length ?? 0));
3780
- var label = root_1$32();
3955
+ var label = root_1$31();
3781
3956
  let classes;
3782
3957
  let styles;
3783
3958
  var input = $.child(label);
3784
3959
  $.remove_input_defaults(input);
3785
3960
  var node = $.sibling(input, 2);
3786
3961
  var consequent = ($$anchor) => {
3787
- var span = root$52();
3962
+ var span = root$51();
3788
3963
  var text = $.only_child(span, true);
3789
3964
  $.template_effect(() => $.set_text(text, $$props.unit));
3790
3965
  $.append($$anchor, span);
@@ -3826,10 +4001,10 @@ function NumberInput($$anchor, $$props) {
3826
4001
  $.delegate(["input", "change"]);
3827
4002
  //#endregion
3828
4003
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Row.svelte
3829
- var root$51 = $.from_html(`<div data-role="row-inline" data-edge-pass=""><!></div>`);
4004
+ var root$50 = $.from_html(`<div data-role="row-inline" data-edge-pass=""><!></div>`);
3830
4005
  function Row($$anchor, $$props) {
3831
4006
  let gap = $.prop($$props, "gap", 3, "sm"), between = $.prop($$props, "between", 3, false), wrap = $.prop($$props, "wrap", 3, false), align = $.prop($$props, "align", 3, "center"), justify = $.prop($$props, "justify", 3, "start");
3832
- var div = root$51();
4007
+ var div = root$50();
3833
4008
  let classes;
3834
4009
  var node = $.child(div);
3835
4010
  $.snippet(node, () => $$props.children);
@@ -3847,12 +4022,12 @@ function Row($$anchor, $$props) {
3847
4022
  }
3848
4023
  //#endregion
3849
4024
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Select.svelte
3850
- var root$50 = $.from_html(`<span class="v svelte-gho7xv"> </span>`);
3851
- var root_1$31 = $.from_html(`<span class="v ph svelte-gho7xv" data-kata-placeholder=""> </span>`);
3852
- var root_2$20 = $.from_html(`<span class="text svelte-gho7xv"><span class="t svelte-gho7xv"> </span> <span class="t desc svelte-gho7xv"> </span></span>`);
3853
- var root_3$12 = $.from_html(`<span class="t label svelte-gho7xv"> </span>`);
4025
+ var root$49 = $.from_html(`<span class="v svelte-gho7xv"> </span>`);
4026
+ var root_1$30 = $.from_html(`<span class="v ph svelte-gho7xv" data-kata-placeholder=""> </span>`);
4027
+ var root_2$19 = $.from_html(`<span class="text svelte-gho7xv"><span class="t svelte-gho7xv"> </span> <span class="t desc svelte-gho7xv"> </span></span>`);
4028
+ var root_3$11 = $.from_html(`<span class="t label svelte-gho7xv"> </span>`);
3854
4029
  var root_4$7 = $.from_html(`<button type="button" role="option" tabindex="-1" data-role="list-item" data-h="list-item"><span class="chk svelte-gho7xv"><!></span> <!></button>`);
3855
- var root_5$5 = $.from_html(`<div role="listbox" tabindex="-1"></div>`);
4030
+ var root_5$5 = $.from_html(`<div data-outline="" role="listbox" tabindex="-1"></div>`);
3856
4031
  var root_6$4 = $.from_html(`<button type="button" data-role="box" data-h="button" aria-haspopup="listbox"><!> <!></button> <!>`, 1);
3857
4032
  function Select($$anchor, $$props) {
3858
4033
  const listId = $.props_id();
@@ -3869,29 +4044,17 @@ function Select($$anchor, $$props) {
3869
4044
  width: 0,
3870
4045
  maxHeight: 0
3871
4046
  }));
3872
- const GAP = 4;
3873
- const EDGE = 8;
3874
- const MIN_HEIGHT = 120;
3875
4047
  const canPopover = typeof HTMLElement !== "undefined" && typeof HTMLElement.prototype.showPopover === "function";
3876
4048
  function place() {
3877
4049
  if (!$.get(triggerEl) || !$.get(listEl)) return;
3878
4050
  const r = $.get(triggerEl).getBoundingClientRect();
3879
- const keep = $.get(listEl).style.maxHeight;
3880
- $.get(listEl).style.maxHeight = "";
3881
- const natural = $.get(listEl).scrollHeight;
3882
- $.get(listEl).style.maxHeight = keep;
3883
- const below = window.innerHeight - r.bottom - GAP - EDGE;
3884
- const above = r.top - GAP - EDGE;
3885
- const up = below < Math.min(natural, MIN_HEIGHT) && above > below;
3886
- const maxHeight = Math.max(MIN_HEIGHT, up ? above : below);
3887
- const shown = Math.min(natural, maxHeight);
3888
- const width = $.get(listEl).offsetWidth;
3889
- const left = Math.max(EDGE, Math.min(r.left, window.innerWidth - Math.max(width, r.width) - EDGE));
4051
+ const width = Math.max($.get(listEl).offsetWidth, r.width);
3890
4052
  $.set(pos, {
3891
- top: Math.round(up ? r.top - GAP - shown : r.bottom + GAP),
3892
- left: Math.round(left),
3893
- width: Math.round(r.width),
3894
- maxHeight: Math.round(maxHeight)
4053
+ ...placeBelow($.get(listEl), r, {
4054
+ align: "start",
4055
+ width
4056
+ }),
4057
+ width: Math.round(r.width)
3895
4058
  }, true);
3896
4059
  }
3897
4060
  function items() {
@@ -3917,7 +4080,7 @@ function Select($$anchor, $$props) {
3917
4080
  close(true);
3918
4081
  }
3919
4082
  $.user_effect(() => {
3920
- if (!$.get(open) || !$.get(listEl)) return;
4083
+ if (!$.get(open) || !$.get(listEl) || !$.get(triggerEl)) return;
3921
4084
  const el = $.get(listEl);
3922
4085
  if (canPopover && !el.matches(":popover-open")) el.showPopover();
3923
4086
  (async () => {
@@ -3928,6 +4091,7 @@ function Select($$anchor, $$props) {
3928
4091
  const i = $$props.options.findIndex((o) => o.value === value());
3929
4092
  focusAt(Math.max(0, i));
3930
4093
  })();
4094
+ return follow($.get(triggerEl), el, place);
3931
4095
  });
3932
4096
  function onTriggerKey(e) {
3933
4097
  if (e.key === "ArrowDown" || e.key === "ArrowUp") {
@@ -3964,19 +4128,17 @@ function Select($$anchor, $$props) {
3964
4128
  }
3965
4129
  var fragment = root_6$4();
3966
4130
  $.event("pointerdown", $.window, onPointerDown, true);
3967
- $.event("resize", $.window, () => $.get(open) && place());
3968
- $.event("scroll", $.window, () => $.get(open) && place());
3969
4131
  var button = $.first_child(fragment);
3970
4132
  let classes;
3971
4133
  var node = $.child(button);
3972
4134
  var consequent = ($$anchor) => {
3973
- var span = root$50();
4135
+ var span = root$49();
3974
4136
  var text = $.only_child(span, true);
3975
4137
  $.template_effect(() => $.set_text(text, $.get(current).label));
3976
4138
  $.append($$anchor, span);
3977
4139
  };
3978
4140
  var alternate = ($$anchor) => {
3979
- var span_1 = root_1$31();
4141
+ var span_1 = root_1$30();
3980
4142
  var text_1 = $.only_child(span_1, true);
3981
4143
  $.template_effect(() => $.set_text(text_1, placeholder()));
3982
4144
  $.append($$anchor, span_1);
@@ -4007,7 +4169,7 @@ function Select($$anchor, $$props) {
4007
4169
  $.reset(span_2);
4008
4170
  var node_4 = $.sibling(span_2, 2);
4009
4171
  var consequent_2 = ($$anchor) => {
4010
- var span_3 = root_2$20();
4172
+ var span_3 = root_2$19();
4011
4173
  var span_4 = $.child(span_3);
4012
4174
  var text_2 = $.only_child(span_4, true);
4013
4175
  var span_5 = $.sibling(span_4, 2);
@@ -4020,7 +4182,7 @@ function Select($$anchor, $$props) {
4020
4182
  $.append($$anchor, span_3);
4021
4183
  };
4022
4184
  var alternate_1 = ($$anchor) => {
4023
- var span_6 = root_3$12();
4185
+ var span_6 = root_3$11();
4024
4186
  var text_4 = $.only_child(span_6, true);
4025
4187
  $.template_effect(() => $.set_text(text_4, $.get(opt).label));
4026
4188
  $.append($$anchor, span_6);
@@ -4076,10 +4238,10 @@ function Select($$anchor, $$props) {
4076
4238
  $.delegate(["click", "keydown"]);
4077
4239
  //#endregion
4078
4240
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/ColorPicker.svelte
4079
- var root$49 = $.from_html(`<!> <!>`, 1);
4080
- var root_1$30 = $.from_html(`<div class="hue svelte-1kcz9da" role="slider" tabindex="0"><span class="knob svelte-1kcz9da"></span></div> <!>`, 1);
4081
- var root_2$19 = $.from_html(`<!> <!> <!>`, 1);
4082
- var root_3$11 = $.from_html(`<!> <div class="fmt svelte-1kcz9da"><!></div>`, 1);
4241
+ var root$48 = $.from_html(`<!> <!>`, 1);
4242
+ var root_1$29 = $.from_html(`<div class="hue svelte-1kcz9da" role="slider" tabindex="0"><span class="knob svelte-1kcz9da"></span></div> <!>`, 1);
4243
+ var root_2$18 = $.from_html(`<!> <!> <!>`, 1);
4244
+ var root_3$10 = $.from_html(`<!> <div class="fmt svelte-1kcz9da"><!></div>`, 1);
4083
4245
  var root_4$6 = $.from_html(`<!> <!> <div class="sv svelte-1kcz9da" role="slider" tabindex="0"><span class="knob svelte-1kcz9da"></span></div> <!> <!>`, 1);
4084
4246
  var root_5$4 = $.from_html(`<div data-inset=""><!></div>`);
4085
4247
  function ColorPicker($$anchor, $$props) {
@@ -4093,7 +4255,7 @@ function ColorPicker($$anchor, $$props) {
4093
4255
  Row(node, {
4094
4256
  between: true,
4095
4257
  children: ($$anchor, $$slotProps) => {
4096
- var fragment_2 = root$49();
4258
+ var fragment_2 = root$48();
4097
4259
  var node_1 = $.first_child(fragment_2);
4098
4260
  Text(node_1, {
4099
4261
  role: "h2",
@@ -4155,7 +4317,7 @@ function ColorPicker($$anchor, $$props) {
4155
4317
  Row(node_4, {
4156
4318
  gap: "sm",
4157
4319
  children: ($$anchor, $$slotProps) => {
4158
- var fragment_5 = root_1$30();
4320
+ var fragment_5 = root_1$29();
4159
4321
  var div_1 = $.first_child(fragment_5);
4160
4322
  $.set_attribute(div_1, "aria-valuemin", 0);
4161
4323
  $.set_attribute(div_1, "aria-valuemax", 360);
@@ -4199,7 +4361,7 @@ function ColorPicker($$anchor, $$props) {
4199
4361
  gap: "sm",
4200
4362
  wrap: true,
4201
4363
  children: ($$anchor, $$slotProps) => {
4202
- var fragment_7 = root_3$11();
4364
+ var fragment_7 = root_3$10();
4203
4365
  var node_7 = $.first_child(fragment_7);
4204
4366
  var consequent = ($$anchor) => {
4205
4367
  var fragment_8 = $.comment();
@@ -4227,7 +4389,7 @@ function ColorPicker($$anchor, $$props) {
4227
4389
  $.append($$anchor, fragment_8);
4228
4390
  };
4229
4391
  var consequent_1 = ($$anchor) => {
4230
- var fragment_10 = root_2$19();
4392
+ var fragment_10 = root_2$18();
4231
4393
  var node_9 = $.first_child(fragment_10);
4232
4394
  {
4233
4395
  let $0 = $.derived(() => getMessages().hue);
@@ -4650,10 +4812,10 @@ $.delegate([
4650
4812
  ]);
4651
4813
  //#endregion
4652
4814
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Divider.svelte
4653
- var root$48 = $.from_html(`<div data-role="rule" role="separator"></div>`);
4815
+ var root$47 = $.from_html(`<div data-role="rule" role="separator"></div>`);
4654
4816
  function Divider($$anchor, $$props) {
4655
4817
  let inset = $.prop($$props, "inset", 3, false), gap = $.prop($$props, "gap", 3, false);
4656
- var div = root$48();
4818
+ var div = root$47();
4657
4819
  let classes;
4658
4820
  $.template_effect(() => classes = $.set_class(div, 1, "rule svelte-1dtzu5u", null, classes, {
4659
4821
  inset: inset(),
@@ -4663,10 +4825,10 @@ function Divider($$anchor, $$props) {
4663
4825
  }
4664
4826
  //#endregion
4665
4827
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/List.svelte
4666
- var root$47 = $.from_html(`<div class="list svelte-mp0y27" data-role="list"><!></div>`);
4828
+ var root$46 = $.from_html(`<div class="list svelte-mp0y27" data-role="list"><!></div>`);
4667
4829
  function List($$anchor, $$props) {
4668
4830
  let role = $.prop($$props, "role", 3, "list");
4669
- var div = root$47();
4831
+ var div = root$46();
4670
4832
  Stack($.child(div), {
4671
4833
  gap: 0,
4672
4834
  children: ($$anchor, $$slotProps) => {
@@ -4696,27 +4858,30 @@ var rest_excludes$7 = /* @__PURE__ */ new Set([
4696
4858
  "sel",
4697
4859
  "rule",
4698
4860
  "plain",
4861
+ "disabled",
4699
4862
  "href",
4700
4863
  "onclick",
4701
4864
  "onkeydown",
4702
4865
  "children"
4703
4866
  ]);
4704
- var root$46 = $.from_html(`<a><!></a>`);
4705
- var root_1$29 = $.from_html(`<div><!></div>`);
4867
+ var root$45 = $.from_html(`<a><!></a>`);
4868
+ var root_1$28 = $.from_html(`<div><!></div>`);
4706
4869
  function ListItem($$anchor, $$props) {
4707
4870
  $.push($$props, true);
4708
- let tail = $.prop($$props, "tail", 3, false), sel = $.prop($$props, "sel", 3, false), rule = $.prop($$props, "rule", 3, false), plain = $.prop($$props, "plain", 3, false), rest = $.rest_props($$props, rest_excludes$7);
4871
+ let tail = $.prop($$props, "tail", 3, false), sel = $.prop($$props, "sel", 3, false), rule = $.prop($$props, "rule", 3, false), plain = $.prop($$props, "plain", 3, false), disabled = $.prop($$props, "disabled", 3, false), rest = $.rest_props($$props, rest_excludes$7);
4709
4872
  /** The columns of the item's grid (grid-template-columns) */
4710
4873
  /** The item ends with an icon button: pad-sm at the right */
4711
4874
  /** Selected: the raise surface and a blue line of two at the left */
4712
4875
  /** A line under the item (not under the last one) */
4713
4876
  /** An item that is not pressed: no hover surface */
4877
+ /** A pressable item (onclick) that cannot be pressed now: dimmed and out of the tab order */
4714
4878
  /** Renders a link */
4715
4879
  /** Makes the item pressable (Enter and Space press it too) */
4716
4880
  const clickable = $.derived(() => !plain() && !!($$props.onclick || $$props.href));
4881
+ const off = $.derived(() => disabled() && !plain() && !$$props.href && !!$$props.onclick);
4717
4882
  function onKeyDown(e) {
4718
4883
  $$props.onkeydown?.(e);
4719
- if (e.defaultPrevented) return;
4884
+ if (e.defaultPrevented || $.get(off)) return;
4720
4885
  if (e.key !== "Enter" && e.key !== " ") return;
4721
4886
  if (e.target.closest("input, textarea, select, [contenteditable]")) return;
4722
4887
  e.preventDefault();
@@ -4725,7 +4890,7 @@ function ListItem($$anchor, $$props) {
4725
4890
  var fragment = $.comment();
4726
4891
  var node = $.first_child(fragment);
4727
4892
  var consequent = ($$anchor) => {
4728
- var a = root$46();
4893
+ var a = root$45();
4729
4894
  $.attribute_effect(a, () => ({
4730
4895
  class: "row",
4731
4896
  "data-role": "list-item",
@@ -4749,7 +4914,7 @@ function ListItem($$anchor, $$props) {
4749
4914
  $.append($$anchor, a);
4750
4915
  };
4751
4916
  var alternate = ($$anchor) => {
4752
- var div = root_1$29();
4917
+ var div = root_1$28();
4753
4918
  $.attribute_effect(div, () => ({
4754
4919
  class: "row",
4755
4920
  "data-role": "list-item",
@@ -4757,16 +4922,18 @@ function ListItem($$anchor, $$props) {
4757
4922
  "data-rule": rule() ? "" : void 0,
4758
4923
  ...$.get(clickable) ? {
4759
4924
  role: "button",
4760
- tabindex: 0
4925
+ tabindex: $.get(off) ? void 0 : 0
4761
4926
  } : {},
4762
- onclick: $$props.onclick,
4927
+ "aria-disabled": $.get(off) ? "true" : void 0,
4928
+ onclick: $.get(off) ? void 0 : $$props.onclick,
4763
4929
  onkeydown: $.get(clickable) ? onKeyDown : $$props.onkeydown,
4764
4930
  ...rest,
4765
4931
  [$.CLASS]: {
4766
4932
  sel: sel(),
4767
4933
  rule: rule(),
4768
4934
  plain: plain(),
4769
- tail: tail()
4935
+ tail: tail(),
4936
+ disabled: $.get(off)
4770
4937
  },
4771
4938
  [$.STYLE]: { "grid-template-columns": $$props.columns }
4772
4939
  }), void 0, void 0, void 0, "svelte-rzjg5m");
@@ -4784,13 +4951,13 @@ function ListItem($$anchor, $$props) {
4784
4951
  }
4785
4952
  //#endregion
4786
4953
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Spinner.svelte
4787
- var root$45 = $.from_html(`<span class="t svelte-1w5g2m2"> </span>`);
4788
- var root_1$28 = $.from_html(`<span class="seat svelte-1w5g2m2" data-role="spinner" data-edge-pass="" role="status"><span class="dots svelte-1w5g2m2" aria-hidden="true"><i class="svelte-1w5g2m2"></i><i class="svelte-1w5g2m2"></i><i class="svelte-1w5g2m2"></i></span><!></span>`);
4954
+ var root$44 = $.from_html(`<span class="t svelte-1w5g2m2" data-ink=""> </span>`);
4955
+ var root_1$27 = $.from_html(`<span class="seat svelte-1w5g2m2" data-role="spinner" data-edge-pass="" role="status"><span class="dots svelte-1w5g2m2" aria-hidden="true"><i class="svelte-1w5g2m2"></i><i class="svelte-1w5g2m2"></i><i class="svelte-1w5g2m2"></i></span><!></span>`);
4789
4956
  function Spinner($$anchor, $$props) {
4790
- var span = root_1$28();
4957
+ var span = root_1$27();
4791
4958
  var node = $.sibling($.child(span));
4792
4959
  var consequent = ($$anchor) => {
4793
- var span_1 = root$45();
4960
+ var span_1 = root$44();
4794
4961
  var text = $.only_child(span_1, true);
4795
4962
  $.template_effect(() => $.set_text(text, $$props.label));
4796
4963
  $.append($$anchor, span_1);
@@ -4803,17 +4970,17 @@ function Spinner($$anchor, $$props) {
4803
4970
  }
4804
4971
  //#endregion
4805
4972
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/State.svelte
4806
- var root$44 = $.from_html(`<p data-role="p"> </p>`);
4807
- var root_1$27 = $.from_html(`<span class="note svelte-1i551ei" data-role="caption"> </span>`);
4808
- var root_2$18 = $.from_html(`<!> <!> <!>`, 1);
4809
- var root_3$10 = $.from_html(`<div class="state svelte-1i551ei" data-role="state" data-pass=""><!></div>`);
4973
+ var root$43 = $.from_html(`<p data-role="p" data-ink=""> </p>`);
4974
+ var root_1$26 = $.from_html(`<span class="note svelte-1i551ei" data-role="caption" data-ink=""> </span>`);
4975
+ var root_2$17 = $.from_html(`<!> <!> <!>`, 1);
4976
+ var root_3$9 = $.from_html(`<div class="state svelte-1i551ei" data-role="state"><!></div>`);
4810
4977
  function State($$anchor, $$props) {
4811
4978
  let loading = $.prop($$props, "loading", 3, false);
4812
- var div = root_3$10();
4979
+ var div = root_3$9();
4813
4980
  Stack($.child(div), {
4814
4981
  gap: "sm",
4815
4982
  children: ($$anchor, $$slotProps) => {
4816
- var fragment = root_2$18();
4983
+ var fragment = root_2$17();
4817
4984
  var node_1 = $.first_child(fragment);
4818
4985
  var consequent = ($$anchor) => {
4819
4986
  Spinner($$anchor, { get label() {
@@ -4821,7 +4988,7 @@ function State($$anchor, $$props) {
4821
4988
  } });
4822
4989
  };
4823
4990
  var alternate = ($$anchor) => {
4824
- var p = root$44();
4991
+ var p = root$43();
4825
4992
  let classes;
4826
4993
  var text_1 = $.only_child(p, true);
4827
4994
  $.template_effect(() => {
@@ -4836,7 +5003,7 @@ function State($$anchor, $$props) {
4836
5003
  });
4837
5004
  var node_2 = $.sibling(node_1, 2);
4838
5005
  var consequent_1 = ($$anchor) => {
4839
- var span = root_1$27();
5006
+ var span = root_1$26();
4840
5007
  var text_2 = $.only_child(span, true);
4841
5008
  $.template_effect(() => $.set_text(text_2, $$props.note));
4842
5009
  $.append($$anchor, span);
@@ -4862,8 +5029,8 @@ function State($$anchor, $$props) {
4862
5029
  }
4863
5030
  //#endregion
4864
5031
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Footer.svelte
4865
- var root_1$26 = $.from_html(`<div class="lead svelte-i118rm"><!></div>`);
4866
- var root_2$17 = $.from_html(`<div data-role="footer" data-h="footer"><!> <div class="actions svelte-i118rm"><!> <!> <!></div></div>`);
5032
+ var root_1$25 = $.from_html(`<div class="lead svelte-i118rm"><!></div>`);
5033
+ var root_2$16 = $.from_html(`<div data-role="footer" data-h="footer"><!> <div class="actions svelte-i118rm"><!> <!> <!></div></div>`);
4867
5034
  function Footer($$anchor, $$props) {
4868
5035
  $.push($$props, true);
4869
5036
  /** A status or an action on the left */
@@ -4916,11 +5083,11 @@ function Footer($$anchor, $$props) {
4916
5083
  cancelAnimationFrame(frame);
4917
5084
  };
4918
5085
  });
4919
- var div = root_2$17();
5086
+ var div = root_2$16();
4920
5087
  let classes;
4921
5088
  var node = $.child(div);
4922
5089
  var consequent = ($$anchor) => {
4923
- var div_1 = root_1$26();
5090
+ var div_1 = root_1$25();
4924
5091
  var node_1 = $.child(div_1);
4925
5092
  $.snippet(node_1, () => $$props.lead);
4926
5093
  $.reset(div_1);
@@ -4948,18 +5115,18 @@ function Footer($$anchor, $$props) {
4948
5115
  }
4949
5116
  //#endregion
4950
5117
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Toolbar.svelte
4951
- var root$43 = $.from_html(`<h2 class="title svelte-1qxcpfk"> </h2>`);
4952
- var root_1$25 = $.from_html(`<div class="end svelte-1qxcpfk"><!></div>`);
4953
- var root_2$16 = $.from_html(`<div data-role="toolbar"><!> <!> <!> <!></div>`);
5118
+ var root$42 = $.from_html(`<h2 class="title svelte-1qxcpfk"> </h2>`);
5119
+ var root_1$24 = $.from_html(`<div class="end svelte-1qxcpfk"><!></div>`);
5120
+ var root_2$15 = $.from_html(`<div data-role="toolbar"><!> <!> <!> <!></div>`);
4954
5121
  function Toolbar$1($$anchor, $$props) {
4955
5122
  let rule = $.prop($$props, "rule", 3, false), tail = $.prop($$props, "tail", 3, false), two = $.prop($$props, "two", 3, false);
4956
- var div = root_2$16();
5123
+ var div = root_2$15();
4957
5124
  let classes;
4958
5125
  var node = $.child(div);
4959
5126
  $.snippet(node, () => $$props.start ?? $.noop);
4960
5127
  var node_1 = $.sibling(node, 2);
4961
5128
  var consequent = ($$anchor) => {
4962
- var h2 = root$43();
5129
+ var h2 = root$42();
4963
5130
  var text = $.only_child(h2, true);
4964
5131
  $.template_effect(() => {
4965
5132
  $.set_attribute(h2, "id", $$props.titleId);
@@ -4974,7 +5141,7 @@ function Toolbar$1($$anchor, $$props) {
4974
5141
  $.snippet(node_2, () => $$props.children ?? $.noop);
4975
5142
  var node_3 = $.sibling(node_2, 2);
4976
5143
  var consequent_1 = ($$anchor) => {
4977
- var div_1 = root_1$25();
5144
+ var div_1 = root_1$24();
4978
5145
  var node_4 = $.child(div_1);
4979
5146
  $.snippet(node_4, () => $$props.end);
4980
5147
  $.reset(div_1);
@@ -4991,16 +5158,18 @@ function Toolbar$1($$anchor, $$props) {
4991
5158
  two: two()
4992
5159
  });
4993
5160
  $.set_attribute(div, "data-h", two() ? void 0 : "toolbar");
5161
+ $.set_attribute(div, "data-inset", two() ? "" : void 0);
5162
+ $.set_attribute(div, "data-edge-pass", two() ? "" : void 0);
4994
5163
  });
4995
5164
  $.append($$anchor, div);
4996
5165
  }
4997
5166
  //#endregion
4998
5167
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Modal.svelte
4999
- var root$42 = $.from_html(`<div class="sub svelte-1nboboq"><!></div>`);
5000
- var root_1$24 = $.from_html(`<!> <!>`, 1);
5001
- var root_2$15 = $.from_html(`<!> <!> <div><!></div> <!>`, 1);
5002
- var root_3$9 = $.from_html(`<div data-role="modal" data-inline=""><!></div>`);
5003
- var root_4$5 = $.from_html(`<dialog data-role="modal" aria-modal="true"><!></dialog>`);
5168
+ var root$41 = $.from_html(`<div class="sub svelte-1nboboq"><!></div>`);
5169
+ var root_1$23 = $.from_html(`<!> <!>`, 1);
5170
+ var root_2$14 = $.from_html(`<!> <!> <div><!></div> <!>`, 1);
5171
+ var root_3$8 = $.from_html(`<div data-role="modal" data-outline="" data-inline=""><!></div>`);
5172
+ var root_4$5 = $.from_html(`<dialog data-role="modal" data-outline="" aria-modal="true"><!></dialog>`);
5004
5173
  function Modal($$anchor, $$props) {
5005
5174
  const titleId = $.props_id();
5006
5175
  $.push($$props, true);
@@ -5084,7 +5253,7 @@ function Modal($$anchor, $$props) {
5084
5253
  $.append($$anchor, fragment_9);
5085
5254
  };
5086
5255
  const surface = ($$anchor) => {
5087
- var fragment_12 = root_2$15();
5256
+ var fragment_12 = root_2$14();
5088
5257
  var node_3 = $.first_child(fragment_12);
5089
5258
  var consequent_4 = ($$anchor) => {
5090
5259
  {
@@ -5143,7 +5312,7 @@ function Modal($$anchor, $$props) {
5143
5312
  });
5144
5313
  var node_4 = $.sibling(node_3, 2);
5145
5314
  var consequent_6 = ($$anchor) => {
5146
- var div = root$42();
5315
+ var div = root$41();
5147
5316
  var node_5 = $.child(div);
5148
5317
  $.snippet(node_5, () => $$props.sub);
5149
5318
  $.reset(div);
@@ -5165,7 +5334,7 @@ function Modal($$anchor, $$props) {
5165
5334
  Stack($$anchor, {
5166
5335
  gap: "md",
5167
5336
  children: ($$anchor, $$slotProps) => {
5168
- var fragment_18 = root_1$24();
5337
+ var fragment_18 = root_1$23();
5169
5338
  var node_8 = $.first_child(fragment_18);
5170
5339
  $.snippet(node_8, () => $$props.children);
5171
5340
  var node_9 = $.sibling(node_8, 2);
@@ -5257,7 +5426,7 @@ function Modal($$anchor, $$props) {
5257
5426
  var fragment_21 = $.comment();
5258
5427
  var node_11 = $.first_child(fragment_21);
5259
5428
  var consequent_10 = ($$anchor) => {
5260
- var div_2 = root_3$9();
5429
+ var div_2 = root_3$8();
5261
5430
  let classes_1;
5262
5431
  var node_12 = $.child(div_2);
5263
5432
  surface(node_12);
@@ -5380,10 +5549,10 @@ function Popover($$anchor, $$props) {
5380
5549
  }
5381
5550
  //#endregion
5382
5551
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Drawbar.svelte
5383
- var root$41 = $.from_html(`<div class="group svelte-14qxuyk"></div>`);
5384
- var root_1$23 = $.from_html(`<!> <!> <!>`, 1);
5385
- var root_2$14 = $.from_html(`<div class="group svelte-14qxuyk"><!></div>`);
5386
- var root_3$8 = $.from_html(`<div data-role="drawbar" role="toolbar"><!> <!></div>`);
5552
+ var root$40 = $.from_html(`<div class="group svelte-14qxuyk"></div>`);
5553
+ var root_1$22 = $.from_html(`<!> <!> <!>`, 1);
5554
+ var root_2$13 = $.from_html(`<div class="group svelte-14qxuyk"><!></div>`);
5555
+ var root_3$7 = $.from_html(`<div data-role="drawbar" data-outline="" role="toolbar"><!> <!></div>`);
5387
5556
  function Drawbar($$anchor, $$props) {
5388
5557
  $.push($$props, true);
5389
5558
  let toggles = $.prop($$props, "toggles", 19, () => []), bottom = $.prop($$props, "bottom", 3, "md"), column = $.prop($$props, "column", 3, false);
@@ -5472,12 +5641,12 @@ function Drawbar($$anchor, $$props) {
5472
5641
  const hiddenTools = $.derived(() => $.get(hidden).flatMap((h) => h.kind === "tool" ? [h.tool] : []));
5473
5642
  const hiddenToggles = $.derived(() => $.get(hidden).flatMap((h) => h.kind === "toggle" ? [h.toggle] : []));
5474
5643
  const key = (item) => `${item.kind}:${item.kind === "tool" ? item.tool.id : item.toggle.id}`;
5475
- var div = root_3$8();
5644
+ var div = root_3$7();
5476
5645
  let classes;
5477
5646
  let styles;
5478
5647
  var node = $.child(div);
5479
5648
  $.each(node, 17, () => $.get(shown), $.index, ($$anchor, group) => {
5480
- var div_1 = root$41();
5649
+ var div_1 = root$40();
5481
5650
  $.each(div_1, 21, () => $.get(group), (item) => key(item), ($$anchor, item) => {
5482
5651
  var fragment = $.comment();
5483
5652
  var node_1 = $.first_child(fragment);
@@ -5623,7 +5792,7 @@ function Drawbar($$anchor, $$props) {
5623
5792
  });
5624
5793
  var node_3 = $.sibling(node, 2);
5625
5794
  var consequent_3 = ($$anchor) => {
5626
- var div_2 = root_2$14();
5795
+ var div_2 = root_2$13();
5627
5796
  var node_4 = $.child(div_2);
5628
5797
  {
5629
5798
  const trigger = ($$anchor, toggle = $.noop, open = $.noop) => {
@@ -5650,7 +5819,7 @@ function Drawbar($$anchor, $$props) {
5650
5819
  }
5651
5820
  };
5652
5821
  const panel = ($$anchor, close = $.noop) => {
5653
- var fragment_11 = root_1$23();
5822
+ var fragment_11 = root_1$22();
5654
5823
  var node_5 = $.first_child(fragment_11);
5655
5824
  $.each(node_5, 17, () => $.get(hiddenTools), (t) => t.id, ($$anchor, t) => {
5656
5825
  {
@@ -5747,7 +5916,7 @@ function Drawbar($$anchor, $$props) {
5747
5916
  }
5748
5917
  //#endregion
5749
5918
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Fab.svelte
5750
- var root$40 = $.from_html(`<button class="fab svelte-1a4435e" type="button" data-role="fab" data-h="button"><!></button>`);
5919
+ var root$39 = $.from_html(`<button class="fab svelte-1a4435e" type="button" data-role="fab" data-h="button"><!></button>`);
5751
5920
  function Fab($$anchor, $$props) {
5752
5921
  let disabled = $.prop($$props, "disabled", 3, false), right = $.prop($$props, "right", 3, "md"), bottom = $.prop($$props, "bottom", 3, "md");
5753
5922
  /** The name of the action */
@@ -5758,7 +5927,7 @@ function Fab($$anchor, $$props) {
5758
5927
  }
5759
5928
  const r = $.derived(() => $$props.left === void 0 ? at(right()) : void 0);
5760
5929
  const b = $.derived(() => $$props.top === void 0 ? at(bottom()) : void 0);
5761
- var button = root$40();
5930
+ var button = root$39();
5762
5931
  let styles;
5763
5932
  Icon($.child(button), { get name() {
5764
5933
  return $$props.icon;
@@ -5782,11 +5951,11 @@ function Fab($$anchor, $$props) {
5782
5951
  $.delegate(["click"]);
5783
5952
  //#endregion
5784
5953
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/InspectorRow.svelte
5785
- var root$39 = $.from_html(`<span class="end svelte-hg5qfm"><!></span>`);
5786
- var root_1$22 = $.from_html(`<div><!></div>`);
5954
+ var root$38 = $.from_html(`<span class="end svelte-hg5qfm"><!></span>`);
5955
+ var root_1$21 = $.from_html(`<div><!></div>`);
5787
5956
  function InspectorRow($$anchor, $$props) {
5788
5957
  let align = $.prop($$props, "align", 3, "start"), small = $.prop($$props, "small", 3, false), top = $.prop($$props, "top", 3, false);
5789
- var div = root_1$22();
5958
+ var div = root_1$21();
5790
5959
  let classes;
5791
5960
  Pair($.child(div), {
5792
5961
  get label() {
@@ -5805,7 +5974,7 @@ function InspectorRow($$anchor, $$props) {
5805
5974
  var fragment = $.comment();
5806
5975
  var node_1 = $.first_child(fragment);
5807
5976
  var consequent = ($$anchor) => {
5808
- var span = root$39();
5977
+ var span = root$38();
5809
5978
  var node_2 = $.child(span);
5810
5979
  $.snippet(node_2, () => $$props.children);
5811
5980
  $.reset(span);
@@ -5831,10 +6000,10 @@ function InspectorRow($$anchor, $$props) {
5831
6000
  }
5832
6001
  //#endregion
5833
6002
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/NativeSelect.svelte
5834
- var root$38 = $.from_html(`<option disabled="" data-kata-placeholder="" class="svelte-1iprfoy"> </option>`);
5835
- var root_1$21 = $.from_html(`<option class="svelte-1iprfoy"> </option>`);
5836
- var root_2$13 = $.from_html(`<optgroup></optgroup>`);
5837
- var root_3$7 = $.from_html(`<label data-role="box" data-h="button"><span aria-hidden="true"> </span> <select class="svelte-1iprfoy"><!><!><!></select> <!></label>`);
6003
+ var root$37 = $.from_html(`<option disabled="" selected="" data-kata-placeholder="" class="svelte-1iprfoy"> </option>`);
6004
+ var root_1$20 = $.from_html(`<option class="svelte-1iprfoy"> </option>`);
6005
+ var root_2$12 = $.from_html(`<optgroup></optgroup>`);
6006
+ var root_3$6 = $.from_html(`<label data-role="box" data-h="button"><span aria-hidden="true"> </span> <select class="svelte-1iprfoy"><!><!><!></select> <!></label>`);
5838
6007
  function NativeSelect($$anchor, $$props) {
5839
6008
  $.push($$props, true);
5840
6009
  let options = $.prop($$props, "options", 19, () => []), value = $.prop($$props, "value", 15), disabled = $.prop($$props, "disabled", 3, false), error = $.prop($$props, "error", 3, false);
@@ -5846,7 +6015,7 @@ function NativeSelect($$anchor, $$props) {
5846
6015
  const chosen = $.derived(() => $.get(all).find((o) => o.value === value()));
5847
6016
  const shown = $.derived(() => $.get(chosen)?.label ?? $$props.placeholder ?? $.get(all).find((o) => !o.disabled)?.label ?? "");
5848
6017
  const empty = $.derived(() => !$.get(chosen) && $$props.placeholder !== void 0);
5849
- var label = root_3$7();
6018
+ var label = root_3$6();
5850
6019
  let classes;
5851
6020
  var span = $.child(label);
5852
6021
  let classes_1;
@@ -5854,7 +6023,7 @@ function NativeSelect($$anchor, $$props) {
5854
6023
  var select = $.sibling(span, 2);
5855
6024
  var node = $.child(select);
5856
6025
  var consequent = ($$anchor) => {
5857
- var option = root$38();
6026
+ var option = root$37();
5858
6027
  var text_1 = $.only_child(option, true);
5859
6028
  option.value = option.__value = "";
5860
6029
  $.template_effect(() => $.set_text(text_1, $$props.placeholder));
@@ -5865,9 +6034,9 @@ function NativeSelect($$anchor, $$props) {
5865
6034
  });
5866
6035
  var node_1 = $.sibling(node);
5867
6036
  $.each(node_1, 17, () => $$props.groups ?? [], (group) => group.label, ($$anchor, group) => {
5868
- var optgroup = root_2$13();
6037
+ var optgroup = root_2$12();
5869
6038
  $.each(optgroup, 21, () => $.get(group).options, (opt) => opt.value, ($$anchor, opt) => {
5870
- var option_1 = root_1$21();
6039
+ var option_1 = root_1$20();
5871
6040
  var text_2 = $.only_child(option_1, true);
5872
6041
  var option_1_value = {};
5873
6042
  $.template_effect(() => {
@@ -5882,7 +6051,7 @@ function NativeSelect($$anchor, $$props) {
5882
6051
  });
5883
6052
  var node_2 = $.sibling(node_1);
5884
6053
  $.each(node_2, 17, options, (opt) => opt.value, ($$anchor, opt) => {
5885
- var option_2 = root_1$21();
6054
+ var option_2 = root_1$20();
5886
6055
  var text_3 = $.only_child(option_2, true);
5887
6056
  var option_2_value = {};
5888
6057
  $.template_effect(() => {
@@ -5918,13 +6087,13 @@ function NativeSelect($$anchor, $$props) {
5918
6087
  $.delegate(["change"]);
5919
6088
  //#endregion
5920
6089
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/ReadValue.svelte
5921
- var root$37 = $.from_html(`<span data-role="value"> </span>`);
6090
+ var root$36 = $.from_html(`<span data-role="value" data-ink=""> </span>`);
5922
6091
  function ReadValue($$anchor, $$props) {
5923
6092
  let mono = $.prop($$props, "mono", 3, false), muted = $.prop($$props, "muted", 3, false), clamp = $.prop($$props, "clamp", 3, false);
5924
6093
  var fragment = $.comment();
5925
6094
  var node = $.first_child(fragment);
5926
6095
  var consequent = ($$anchor) => {
5927
- var span = root$37();
6096
+ var span = root$36();
5928
6097
  let classes;
5929
6098
  var text = $.only_child(span, true);
5930
6099
  $.action(span, ($$node) => clampTip?.($$node));
@@ -5938,7 +6107,7 @@ function ReadValue($$anchor, $$props) {
5938
6107
  $.append($$anchor, span);
5939
6108
  };
5940
6109
  var alternate = ($$anchor) => {
5941
- var span_1 = root$37();
6110
+ var span_1 = root$36();
5942
6111
  let classes_1;
5943
6112
  var text_1 = $.only_child(span_1, true);
5944
6113
  $.template_effect(() => {
@@ -5958,15 +6127,15 @@ function ReadValue($$anchor, $$props) {
5958
6127
  }
5959
6128
  //#endregion
5960
6129
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Segmented.svelte
5961
- var root$36 = $.from_html(`<span class="t svelte-1dnswrb"> </span>`);
5962
- var root_1$20 = $.from_html(`<button type="button" data-role="box" data-h="button"><!><!></button>`);
5963
- var root_2$12 = $.from_html(`<div class="seg svelte-1dnswrb" data-role="box" role="group"></div>`);
6130
+ var root$35 = $.from_html(`<span class="t svelte-1dnswrb"> </span>`);
6131
+ var root_1$19 = $.from_html(`<button type="button" data-role="box" data-h="button"><!><!></button>`);
6132
+ var root_2$11 = $.from_html(`<div class="seg svelte-1dnswrb" data-role="box" role="group"></div>`);
5964
6133
  function Segmented($$anchor, $$props) {
5965
6134
  $.push($$props, true);
5966
6135
  let value = $.prop($$props, "value", 15);
5967
- var div = root_2$12();
6136
+ var div = root_2$11();
5968
6137
  $.each(div, 21, () => $$props.options, (opt) => opt.value, ($$anchor, opt) => {
5969
- var button = root_1$20();
6138
+ var button = root_1$19();
5970
6139
  let classes;
5971
6140
  var node = $.child(button);
5972
6141
  var consequent = ($$anchor) => {
@@ -5979,7 +6148,7 @@ function Segmented($$anchor, $$props) {
5979
6148
  });
5980
6149
  var node_1 = $.sibling(node);
5981
6150
  var consequent_1 = ($$anchor) => {
5982
- var span = root$36();
6151
+ var span = root$35();
5983
6152
  var text = $.only_child(span, true);
5984
6153
  $.template_effect(() => $.set_text(text, $.get(opt).label));
5985
6154
  $.append($$anchor, span);
@@ -6011,7 +6180,7 @@ function Segmented($$anchor, $$props) {
6011
6180
  $.delegate(["click"]);
6012
6181
  //#endregion
6013
6182
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Slider.svelte
6014
- var root$35 = $.from_html(`<div data-role="switch" data-h="button-sm"><input type="range" class="svelte-1bgstw"/> <span class="val svelte-1bgstw"> </span></div>`);
6183
+ var root$34 = $.from_html(`<div data-role="switch" data-h="button-sm"><input type="range" class="svelte-1bgstw"/> <span class="val svelte-1bgstw"> </span></div>`);
6015
6184
  function Slider($$anchor, $$props) {
6016
6185
  $.push($$props, true);
6017
6186
  let min = $.prop($$props, "min", 3, 0), max = $.prop($$props, "max", 3, 100), step = $.prop($$props, "step", 3, 1), disabled = $.prop($$props, "disabled", 3, false);
@@ -6019,7 +6188,7 @@ function Slider($$anchor, $$props) {
6019
6188
  /** Every change while dragging */
6020
6189
  /** The value when it is let go or changed with a key */
6021
6190
  const pct = $.derived(() => max() > min() ? ($$props.value - min()) / (max() - min()) * 100 : 0);
6022
- var div = root$35();
6191
+ var div = root$34();
6023
6192
  let classes;
6024
6193
  var input = $.child(div);
6025
6194
  $.remove_input_defaults(input);
@@ -6047,14 +6216,14 @@ function Slider($$anchor, $$props) {
6047
6216
  $.delegate(["input", "change"]);
6048
6217
  //#endregion
6049
6218
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Swatch.svelte
6050
- var root$34 = $.from_html(`<span data-role="mark" class="swatch svelte-13cusr7" data-shape="icon" aria-hidden="true"><span class="halo svelte-13cusr7"><!></span> <span class="ink svelte-13cusr7"><!></span></span>`);
6051
- var root_1$19 = $.from_html(`<span data-role="mark" aria-hidden="true"></span>`);
6219
+ var root$33 = $.from_html(`<span data-role="mark" class="swatch svelte-13cusr7" data-shape="icon" aria-hidden="true"><span class="halo svelte-13cusr7"><!></span> <span class="ink svelte-13cusr7"><!></span></span>`);
6220
+ var root_1$18 = $.from_html(`<span data-role="mark" aria-hidden="true"></span>`);
6052
6221
  function Swatch($$anchor, $$props) {
6053
6222
  let shape = $.prop($$props, "shape", 3, "box"), fill = $.prop($$props, "fill", 3, false);
6054
6223
  var fragment = $.comment();
6055
6224
  var node = $.first_child(fragment);
6056
6225
  var consequent = ($$anchor) => {
6057
- var span = root$34();
6226
+ var span = root$33();
6058
6227
  let styles;
6059
6228
  var span_1 = $.child(span);
6060
6229
  Icon($.child(span_1), { get name() {
@@ -6075,7 +6244,7 @@ function Swatch($$anchor, $$props) {
6075
6244
  $.append($$anchor, span);
6076
6245
  };
6077
6246
  var alternate = ($$anchor) => {
6078
- var span_3 = root_1$19();
6247
+ var span_3 = root_1$18();
6079
6248
  let classes;
6080
6249
  let styles_2;
6081
6250
  $.template_effect(() => {
@@ -6093,17 +6262,17 @@ function Swatch($$anchor, $$props) {
6093
6262
  }
6094
6263
  //#endregion
6095
6264
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Toggle.svelte
6096
- var root$33 = $.from_html(`<span class="line grow svelte-bzo86b"><span class="t svelte-bzo86b"> </span></span>`);
6097
- var root_1$18 = $.from_html(`<span class="line svelte-bzo86b"><span class="t svelte-bzo86b"> </span></span>`);
6098
- var root_2$11 = $.from_html(`<label data-role="switch" data-control=""><!> <span class="seat svelte-bzo86b"><input type="checkbox" role="switch" class="toggle svelte-bzo86b"/></span> <!></label>`);
6265
+ var root$32 = $.from_html(`<span class="line grow svelte-bzo86b"><span class="t svelte-bzo86b"> </span></span>`);
6266
+ var root_1$17 = $.from_html(`<span class="line svelte-bzo86b"><span class="t svelte-bzo86b"> </span></span>`);
6267
+ var root_2$10 = $.from_html(`<label data-role="switch" data-control=""><!> <span class="seat svelte-bzo86b"><input type="checkbox" role="switch" class="toggle svelte-bzo86b"/></span> <!></label>`);
6099
6268
  function Toggle($$anchor, $$props) {
6100
6269
  $.push($$props, true);
6101
6270
  let checked = $.prop($$props, "checked", 15, false), disabled = $.prop($$props, "disabled", 3, false), between = $.prop($$props, "between", 3, false), indent = $.prop($$props, "indent", 3, false);
6102
- var label_1 = root_2$11();
6271
+ var label_1 = root_2$10();
6103
6272
  let classes;
6104
6273
  var node = $.child(label_1);
6105
6274
  var consequent = ($$anchor) => {
6106
- var span = root$33();
6275
+ var span = root$32();
6107
6276
  var span_1 = $.child(span);
6108
6277
  var text = $.only_child(span_1, true);
6109
6278
  $.reset(span);
@@ -6119,7 +6288,7 @@ function Toggle($$anchor, $$props) {
6119
6288
  $.reset(span_2);
6120
6289
  var node_1 = $.sibling(span_2, 2);
6121
6290
  var consequent_1 = ($$anchor) => {
6122
- var span_3 = root_1$18();
6291
+ var span_3 = root_1$17();
6123
6292
  var span_4 = $.child(span_3);
6124
6293
  var text_1 = $.only_child(span_4, true);
6125
6294
  $.reset(span_3);
@@ -6148,7 +6317,7 @@ function Toggle($$anchor, $$props) {
6148
6317
  $.delegate(["change"]);
6149
6318
  //#endregion
6150
6319
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/FieldList.svelte
6151
- var root$32 = $.from_html(`<!> <!>`, 1);
6320
+ var root$31 = $.from_html(`<!> <!>`, 1);
6152
6321
  function FieldList($$anchor, $$props) {
6153
6322
  const uid = $.props_id();
6154
6323
  $.push($$props, true);
@@ -6174,7 +6343,7 @@ function FieldList($$anchor, $$props) {
6174
6343
  Stack($$anchor, {
6175
6344
  gap: "sm",
6176
6345
  children: ($$anchor, $$slotProps) => {
6177
- var fragment_1 = root$32();
6346
+ var fragment_1 = root$31();
6178
6347
  var node = $.first_child(fragment_1);
6179
6348
  $.each(node, 19, () => $$props.fields, (f) => f.key, ($$anchor, f, i) => {
6180
6349
  const id = $.derived(() => `${uid}-${$.get(i)}`);
@@ -6534,7 +6703,7 @@ function FieldList($$anchor, $$props) {
6534
6703
  }
6535
6704
  //#endregion
6536
6705
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Floating.svelte
6537
- var root$31 = $.from_html(`<div data-role="floating"><!></div>`);
6706
+ var root$30 = $.from_html(`<div data-role="floating" data-outline=""><!></div>`);
6538
6707
  function Floating($$anchor, $$props) {
6539
6708
  $.push($$props, true);
6540
6709
  const STEPS = /* @__PURE__ */ new Set([
@@ -6558,7 +6727,7 @@ function Floating($$anchor, $$props) {
6558
6727
  if (steps.length === 0) return void 0;
6559
6728
  return `calc(100% - ${steps.map((v) => `var(--kata-gap-${v})`).join(" - ")})`;
6560
6729
  });
6561
- var div = root$31();
6730
+ var div = root$30();
6562
6731
  let classes;
6563
6732
  let styles;
6564
6733
  var node = $.child(div);
@@ -6584,8 +6753,8 @@ function Floating($$anchor, $$props) {
6584
6753
  }
6585
6754
  //#endregion
6586
6755
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Panel.svelte
6587
- var root$30 = $.from_html(`<div class="handle svelte-1paomu5" role="slider" tabindex="0" aria-orientation="vertical"></div>`);
6588
- var root_1$17 = $.from_html(`<section data-role="panel"><!> <!> <div class="scroll svelte-1paomu5"><!></div> <!></section>`);
6756
+ var root$29 = $.from_html(`<div class="handle svelte-1paomu5" role="slider" tabindex="0" aria-orientation="vertical"></div>`);
6757
+ var root_1$16 = $.from_html(`<section data-role="panel" data-outline=""><!> <!> <div class="scroll svelte-1paomu5"><!></div> <!></section>`);
6589
6758
  function Panel($$anchor, $$props) {
6590
6759
  $.push($$props, true);
6591
6760
  let side = $.prop($$props, "side", 3, "panel"), fit = $.prop($$props, "fit", 3, false), resizable = $.prop($$props, "resizable", 3, false);
@@ -6633,11 +6802,11 @@ function Panel($$anchor, $$props) {
6633
6802
  else return;
6634
6803
  e.preventDefault();
6635
6804
  }
6636
- var section = root_1$17();
6805
+ var section = root_1$16();
6637
6806
  let classes;
6638
6807
  var node = $.child(section);
6639
6808
  var consequent = ($$anchor) => {
6640
- var div = root$30();
6809
+ var div = root$29();
6641
6810
  $.set_attribute(div, "aria-valuemin", 0);
6642
6811
  $.template_effect(() => {
6643
6812
  $.set_attribute(div, "aria-label", $$props.resizeLabel);
@@ -6684,9 +6853,9 @@ $.delegate([
6684
6853
  ]);
6685
6854
  //#endregion
6686
6855
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Tabs.svelte
6687
- var root_1$16 = $.from_html(`<a><span class="t svelte-dvdfj"> </span></a>`);
6688
- var root_2$10 = $.from_html(`<button type="button"><span class="t svelte-dvdfj"> </span></button>`);
6689
- var root_3$6 = $.from_html(`<button type="button" aria-haspopup="menu"><span class="t svelte-dvdfj"> </span><!></button>`);
6856
+ var root_1$15 = $.from_html(`<a><span class="t svelte-dvdfj"> </span></a>`);
6857
+ var root_2$9 = $.from_html(`<button type="button"><span class="t svelte-dvdfj"> </span></button>`);
6858
+ var root_3$5 = $.from_html(`<button type="button" aria-haspopup="menu"><span class="t svelte-dvdfj"> </span><!></button>`);
6690
6859
  var root_4$4 = $.from_html(`<span class="tab svelte-dvdfj"><span class="t svelte-dvdfj"> </span></span>`);
6691
6860
  var root_5$3 = $.from_html(`<span class="tab more cur svelte-dvdfj"><span class="t svelte-dvdfj"> </span><!></span>`);
6692
6861
  var root_6$3 = $.from_html(`<nav data-role="tabs"><!> <!> <span class="measure svelte-dvdfj" aria-hidden="true" data-kata-skip=""><!> <span class="tab more svelte-dvdfj"><span class="t svelte-dvdfj"> </span><!></span> <!></span></nav>`);
@@ -6696,7 +6865,7 @@ function Tabs($$anchor, $$props) {
6696
6865
  var fragment = $.comment();
6697
6866
  var node = $.first_child(fragment);
6698
6867
  var consequent = ($$anchor) => {
6699
- var a_1 = root_1$16();
6868
+ var a_1 = root_1$15();
6700
6869
  let classes;
6701
6870
  var span = $.child(a_1);
6702
6871
  var text = $.only_child(span, true);
@@ -6714,7 +6883,7 @@ function Tabs($$anchor, $$props) {
6714
6883
  $.append($$anchor, a_1);
6715
6884
  };
6716
6885
  var alternate = ($$anchor) => {
6717
- var button = root_2$10();
6886
+ var button = root_2$9();
6718
6887
  let classes_1;
6719
6888
  var span_1 = $.child(button);
6720
6889
  var text_1 = $.only_child(span_1, true);
@@ -6810,7 +6979,7 @@ function Tabs($$anchor, $$props) {
6810
6979
  var consequent_1 = ($$anchor) => {
6811
6980
  {
6812
6981
  const trigger = ($$anchor, toggle = $.noop, open = $.noop) => {
6813
- var button_1 = root_3$6();
6982
+ var button_1 = root_3$5();
6814
6983
  let classes_3;
6815
6984
  var span_2 = $.child(button_1);
6816
6985
  var text_2 = $.only_child(span_2, true);
@@ -6911,13 +7080,13 @@ function Tabs($$anchor, $$props) {
6911
7080
  $.delegate(["keydown", "click"]);
6912
7081
  //#endregion
6913
7082
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/InspectorFrame.svelte
6914
- var root$29 = $.from_html(`<!> <!>`, 1);
6915
- var root_1$15 = $.from_html(`<span class="name svelte-h87gf9"><!></span>`);
6916
- var root_2$9 = $.from_html(`<!> <!> <!>`, 1);
7083
+ var root$28 = $.from_html(`<!> <!>`, 1);
7084
+ var root_1$14 = $.from_html(`<span class="name svelte-h87gf9"><!></span>`);
7085
+ var root_2$8 = $.from_html(`<!> <!> <!>`, 1);
6917
7086
  function InspectorFrame($$anchor, $$props) {
6918
7087
  $.push($$props, true);
6919
7088
  const headEnd = ($$anchor) => {
6920
- var fragment = root$29();
7089
+ var fragment = root$28();
6921
7090
  var node = $.first_child(fragment);
6922
7091
  $.snippet(node, () => $$props.head ?? $.noop);
6923
7092
  var node_1 = $.sibling(node, 2);
@@ -6960,7 +7129,7 @@ function InspectorFrame($$anchor, $$props) {
6960
7129
  var fragment_5 = $.comment();
6961
7130
  var node_3 = $.first_child(fragment_5);
6962
7131
  var consequent_2 = ($$anchor) => {
6963
- var span = root_1$15();
7132
+ var span = root_1$14();
6964
7133
  var node_4 = $.child(span);
6965
7134
  {
6966
7135
  let $0 = $.derived(() => $.get(name) ? getMessages().rename : $.get(action));
@@ -7018,7 +7187,7 @@ function InspectorFrame($$anchor, $$props) {
7018
7187
  }
7019
7188
  {
7020
7189
  const head = ($$anchor) => {
7021
- var fragment_9 = root_2$9();
7190
+ var fragment_9 = root_2$8();
7022
7191
  var node_5 = $.first_child(fragment_9);
7023
7192
  {
7024
7193
  let $0 = $.derived(() => !$.get(editable) && !$$props.subtitle ? $$props.title : void 0);
@@ -7050,11 +7219,11 @@ function InspectorFrame($$anchor, $$props) {
7050
7219
  var fragment_10 = $.comment();
7051
7220
  var node_6 = $.first_child(fragment_10);
7052
7221
  var consequent_3 = ($$anchor) => {
7053
- var span_1 = root_1$15();
7222
+ var span_1 = root_1$14();
7054
7223
  Stack($.child(span_1), {
7055
7224
  gap: "2xs",
7056
7225
  children: ($$anchor, $$slotProps) => {
7057
- var fragment_11 = root$29();
7226
+ var fragment_11 = root$28();
7058
7227
  var node_8 = $.first_child(fragment_11);
7059
7228
  nameOf(node_8);
7060
7229
  Text($.sibling(node_8, 2), {
@@ -7146,18 +7315,18 @@ function InspectorFrame($$anchor, $$props) {
7146
7315
  }
7147
7316
  //#endregion
7148
7317
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/SectionHeader.svelte
7149
- var root$28 = $.from_html(`<div class="side svelte-clvfo5"><!></div>`);
7150
- var root_1$14 = $.from_html(`<div data-role="section-header"><div class="head svelte-clvfo5" data-role="section-head"><span class="label svelte-clvfo5"> </span> <!></div> <div class="body svelte-clvfo5"><!></div></div>`);
7318
+ var root$27 = $.from_html(`<div class="side svelte-clvfo5"><!></div>`);
7319
+ var root_1$13 = $.from_html(`<div data-role="section-header"><div class="head svelte-clvfo5" data-role="section-head"><span class="label svelte-clvfo5"> </span> <!></div> <div class="body svelte-clvfo5"><!></div></div>`);
7151
7320
  function SectionHeader($$anchor, $$props) {
7152
7321
  let flush = $.prop($$props, "flush", 3, false), rule = $.prop($$props, "rule", 3, false), gap = $.prop($$props, "gap", 3, "sm");
7153
- var div = root_1$14();
7322
+ var div = root_1$13();
7154
7323
  let classes;
7155
7324
  var div_1 = $.child(div);
7156
7325
  var span = $.child(div_1);
7157
7326
  var text = $.only_child(span, true);
7158
7327
  var node = $.sibling(span, 2);
7159
7328
  var consequent = ($$anchor) => {
7160
- var div_2 = root$28();
7329
+ var div_2 = root$27();
7161
7330
  var node_1 = $.child(div_2);
7162
7331
  $.snippet(node_1, () => $$props.actions);
7163
7332
  $.reset(div_2);
@@ -7208,15 +7377,15 @@ function SectionHeader($$anchor, $$props) {
7208
7377
  }
7209
7378
  //#endregion
7210
7379
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/InspectorSection.svelte
7211
- var root$27 = $.from_html(`<span class="v svelte-5urx7z"> </span>`);
7212
- var root_1$13 = $.from_html(`<!> <!> <!>`, 1);
7380
+ var root$26 = $.from_html(`<span class="v svelte-5urx7z"> </span>`);
7381
+ var root_1$12 = $.from_html(`<!> <!> <!>`, 1);
7213
7382
  function InspectorSection($$anchor, $$props) {
7214
7383
  $.push($$props, true);
7215
7384
  const actions = ($$anchor) => {
7216
- var fragment = root_1$13();
7385
+ var fragment = root_1$12();
7217
7386
  var node = $.first_child(fragment);
7218
7387
  var consequent = ($$anchor) => {
7219
- var span = root$27();
7388
+ var span = root$26();
7220
7389
  var text = $.only_child(span, true);
7221
7390
  $.template_effect(() => $.set_text(text, $$props.value));
7222
7391
  $.append($$anchor, span);
@@ -7300,10 +7469,10 @@ function InspectorSection($$anchor, $$props) {
7300
7469
  }
7301
7470
  //#endregion
7302
7471
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Kbd.svelte
7303
- var root$26 = $.from_html(`<kbd data-role="mark"><span class="key svelte-1oh8oxw"><!></span></kbd>`);
7472
+ var root$25 = $.from_html(`<kbd data-role="mark"><span class="key svelte-1oh8oxw"><!></span></kbd>`);
7304
7473
  function Kbd($$anchor, $$props) {
7305
7474
  let bare = $.prop($$props, "bare", 3, false);
7306
- var kbd = root$26();
7475
+ var kbd = root$25();
7307
7476
  let classes;
7308
7477
  var span = $.child(kbd);
7309
7478
  var node = $.child(span);
@@ -9349,10 +9518,10 @@ function sortable(node, params) {
9349
9518
  }
9350
9519
  //#endregion
9351
9520
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Markbox.svelte
9352
- var root$25 = $.from_html(`<span data-role="markbox" data-h="icon"><!></span>`);
9521
+ var root$24 = $.from_html(`<span data-role="markbox" data-h="icon"><!></span>`);
9353
9522
  function Markbox($$anchor, $$props) {
9354
9523
  let glyph = $.prop($$props, "glyph", 3, false);
9355
- var span = root$25();
9524
+ var span = root$24();
9356
9525
  let classes;
9357
9526
  var node = $.child(span);
9358
9527
  $.snippet(node, () => $$props.children);
@@ -9362,7 +9531,7 @@ function Markbox($$anchor, $$props) {
9362
9531
  }
9363
9532
  //#endregion
9364
9533
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Tree.svelte
9365
- var root$24 = $.from_html(`<div class="tree svelte-ruthwf" role="tree" data-role="list"><!></div>`);
9534
+ var root$23 = $.from_html(`<div class="tree svelte-ruthwf" role="tree" data-role="list"><!></div>`);
9366
9535
  function Tree($$anchor, $$props) {
9367
9536
  $.push($$props, true);
9368
9537
  let flat = $.prop($$props, "flat", 3, false);
@@ -9370,7 +9539,7 @@ function Tree($$anchor, $$props) {
9370
9539
  /** No row opens: no room for the chevron */
9371
9540
  /** The least height of every row */
9372
9541
  setContext("kata-tree-flat", () => flat());
9373
- var div = root$24();
9542
+ var div = root$23();
9374
9543
  Stack($.child(div), {
9375
9544
  gap: 0,
9376
9545
  children: ($$anchor, $$slotProps) => {
@@ -9409,10 +9578,10 @@ var rest_excludes$6 = /* @__PURE__ */ new Set([
9409
9578
  "children",
9410
9579
  "end"
9411
9580
  ]);
9412
- var root$23 = $.from_html(`<span data-grip="" aria-hidden="true"><!></span>`);
9413
- var root_1$12 = $.from_html(`<button class="chev svelte-19ffqlj" type="button" data-h="icon-button"><!></button>`);
9414
- var root_2$8 = $.from_html(`<span class="seat svelte-19ffqlj" aria-hidden="true"></span>`);
9415
- var root_3$5 = $.from_html(`<span class="keep-seat svelte-19ffqlj" aria-hidden="true"></span>`);
9581
+ var root$22 = $.from_html(`<span data-grip="" aria-hidden="true"><!></span>`);
9582
+ var root_1$11 = $.from_html(`<button class="chev svelte-19ffqlj" type="button" data-h="icon-button"><!></button>`);
9583
+ var root_2$7 = $.from_html(`<span class="seat svelte-19ffqlj" aria-hidden="true"></span>`);
9584
+ var root_3$4 = $.from_html(`<span class="keep-seat svelte-19ffqlj" aria-hidden="true"></span>`);
9416
9585
  var root_4$3 = $.from_html(`<!> <span><!></span>`, 1);
9417
9586
  var root_5$2 = $.from_html(`<!> <!> <span class="main svelte-19ffqlj"><!></span> <!>`, 1);
9418
9587
  var root_6$2 = $.from_html(`<div><!></div>`);
@@ -9542,7 +9711,7 @@ function TreeRow($$anchor, $$props) {
9542
9711
  var fragment = root_5$2();
9543
9712
  var node_1 = $.first_child(fragment);
9544
9713
  var consequent = ($$anchor) => {
9545
- var span = root$23();
9714
+ var span = root$22();
9546
9715
  let classes;
9547
9716
  Icon($.child(span), { name: "grip-vertical" });
9548
9717
  $.reset(span);
@@ -9558,7 +9727,7 @@ function TreeRow($$anchor, $$props) {
9558
9727
  });
9559
9728
  var node_3 = $.sibling(node_1, 2);
9560
9729
  var consequent_1 = ($$anchor) => {
9561
- var button = root_1$12();
9730
+ var button = root_1$11();
9562
9731
  var node_4 = $.child(button);
9563
9732
  {
9564
9733
  let $0 = $.derived(() => expanded() ? "chevron-down" : "chevron-right");
@@ -9578,7 +9747,7 @@ function TreeRow($$anchor, $$props) {
9578
9747
  $.append($$anchor, button);
9579
9748
  };
9580
9749
  var consequent_2 = ($$anchor) => {
9581
- var span_1 = root_2$8();
9750
+ var span_1 = root_2$7();
9582
9751
  $.append($$anchor, span_1);
9583
9752
  };
9584
9753
  $.if(node_3, ($$render) => {
@@ -9594,7 +9763,7 @@ function TreeRow($$anchor, $$props) {
9594
9763
  var fragment_1 = root_4$3();
9595
9764
  var node_7 = $.first_child(fragment_1);
9596
9765
  var consequent_3 = ($$anchor) => {
9597
- var span_3 = root_3$5();
9766
+ var span_3 = root_3$4();
9598
9767
  let styles;
9599
9768
  $.template_effect(() => styles = $.set_style(span_3, "", styles, { width: `${$.get(keepW) ?? ""}px` }));
9600
9769
  $.append($$anchor, span_3);
@@ -9666,10 +9835,10 @@ var mark = ($$anchor, node = $.noop) => {
9666
9835
  $.append($$anchor, fragment_3);
9667
9836
  };
9668
9837
  var trees = 0;
9669
- var root_1$11 = $.from_html(`<span class="rename svelte-1go7yvy"><!></span>`);
9670
- var root_2$7 = $.from_html(`<!> <!>`, 1);
9671
- var root_3$4 = $.from_html(`<!> <!> <!> <!>`, 1);
9672
- var root_4$2 = $.from_html(`<div class="subrows svelte-1go7yvy" data-subrows=""><!></div>`);
9838
+ var root_1$10 = $.from_html(`<span class="rename svelte-1go7yvy"><!></span>`);
9839
+ var root_2$6 = $.from_html(`<!> <!>`, 1);
9840
+ var root_3$3 = $.from_html(`<!> <!> <!> <!>`, 1);
9841
+ var root_4$2 = $.from_html(`<div data-subrows=""><!></div>`);
9673
9842
  var root_5$1 = $.from_html(`<div class="zone svelte-1go7yvy" role="group"></div>`);
9674
9843
  var root_6$1 = $.from_html(`<div class="item svelte-1go7yvy" role="none" data-sortable-item=""><!> <!> <!></div>`);
9675
9844
  var root_7$1 = $.from_html(`<div class="zone svelte-1go7yvy" role="none"></div>`);
@@ -9680,7 +9849,7 @@ function LayerTree($$anchor, $$props) {
9680
9849
  var fragment = $.comment();
9681
9850
  var node_1 = $.first_child(fragment);
9682
9851
  var consequent = ($$anchor) => {
9683
- var span = root_1$11();
9852
+ var span = root_1$10();
9684
9853
  var node_2 = $.child(span);
9685
9854
  var bind_get = () => true;
9686
9855
  var bind_set = (v) => !v && endRename(node().id);
@@ -9739,7 +9908,7 @@ function LayerTree($$anchor, $$props) {
9739
9908
  $.append($$anchor, fragment_9);
9740
9909
  };
9741
9910
  var alternate_2 = ($$anchor) => {
9742
- var fragment_10 = root_2$7();
9911
+ var fragment_10 = root_2$6();
9743
9912
  var node_7 = $.first_child(fragment_10);
9744
9913
  mark(node_7, node);
9745
9914
  var node_8 = $.sibling(node_7, 2);
@@ -9753,7 +9922,7 @@ function LayerTree($$anchor, $$props) {
9753
9922
  $.append($$anchor, fragment_8);
9754
9923
  };
9755
9924
  const tools = ($$anchor, node = $.noop) => {
9756
- var fragment_11 = root_3$4();
9925
+ var fragment_11 = root_3$3();
9757
9926
  var node_9 = $.first_child(fragment_11);
9758
9927
  var consequent_4 = ($$anchor) => {
9759
9928
  var fragment_12 = $.comment();
@@ -9889,11 +10058,15 @@ function LayerTree($$anchor, $$props) {
9889
10058
  var node_16 = $.sibling(node_15, 2);
9890
10059
  var consequent_9 = ($$anchor) => {
9891
10060
  var div_1 = root_4$2();
10061
+ let classes;
9892
10062
  let styles;
9893
10063
  var node_17 = $.child(div_1);
9894
10064
  $.snippet(node_17, () => $$props.subrows, node);
9895
10065
  $.reset(div_1);
9896
- $.template_effect(() => styles = $.set_style(div_1, "", styles, { "--kata-tree-depth": depth() }));
10066
+ $.template_effect(() => {
10067
+ classes = $.set_class(div_1, 1, "subrows svelte-1go7yvy", null, classes, { marked: !!node().icon && !$$props.row });
10068
+ styles = $.set_style(div_1, "", styles, { "--kata-tree-depth": depth() });
10069
+ });
9897
10070
  $.append($$anchor, div_1);
9898
10071
  };
9899
10072
  $.if(node_16, ($$render) => {
@@ -10207,7 +10380,7 @@ function LayerTree($$anchor, $$props) {
10207
10380
  }
10208
10381
  //#endregion
10209
10382
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Sheet.svelte
10210
- var root$22 = $.from_html(`<aside data-role="panel"><button class="handle svelte-1l2tcmc" type="button"></button> <!> <div><!></div> <!></aside>`);
10383
+ var root$21 = $.from_html(`<aside data-role="panel" data-outline=""><button class="handle svelte-1l2tcmc" type="button"></button> <!> <div><!></div> <!></aside>`);
10211
10384
  function Sheet($$anchor, $$props) {
10212
10385
  $.push($$props, true);
10213
10386
  let stage = $.prop($$props, "stage", 15, "half"), stages = $.prop($$props, "stages", 19, () => [
@@ -10304,7 +10477,7 @@ function Sheet($$anchor, $$props) {
10304
10477
  else go(stages()[Math.max(0, $.get(index) - 1)]);
10305
10478
  }
10306
10479
  }
10307
- var aside = root$22();
10480
+ var aside = root$21();
10308
10481
  let classes;
10309
10482
  let styles;
10310
10483
  var button = $.child(aside);
@@ -10350,14 +10523,14 @@ $.delegate([
10350
10523
  ]);
10351
10524
  //#endregion
10352
10525
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Progress.svelte
10353
- var root$21 = $.from_html(`<div data-role="progress" role="progressbar"><div class="fill svelte-nr5ef2"></div></div>`);
10526
+ var root$20 = $.from_html(`<div data-role="progress" role="progressbar"><div class="fill svelte-nr5ef2"></div></div>`);
10354
10527
  function Progress($$anchor, $$props) {
10355
10528
  let max = $.prop($$props, "max", 3, 100);
10356
10529
  /** The amount done; without it the bar is indeterminate */
10357
10530
  /** The accessible name of the bar */
10358
10531
  const indet = $.derived(() => $$props.value === void 0);
10359
10532
  const pct = $.derived(() => $.get(indet) || max() <= 0 ? 0 : Math.max(0, Math.min(100, ($$props.value ?? 0) / max() * 100)));
10360
- var div = root$21();
10533
+ var div = root$20();
10361
10534
  let classes;
10362
10535
  $.set_attribute(div, "aria-valuemin", 0);
10363
10536
  var div_1 = $.child(div);
@@ -10374,8 +10547,8 @@ function Progress($$anchor, $$props) {
10374
10547
  }
10375
10548
  //#endregion
10376
10549
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/ProcessDialog.svelte
10377
- var root$20 = $.from_html(`<div aria-live="polite"><!></div> <!>`, 1);
10378
- var root_1$10 = $.from_html(`<!> <!> <!>`, 1);
10550
+ var root$19 = $.from_html(`<div class="live svelte-16ppcuu" aria-live="polite"><!></div> <!>`, 1);
10551
+ var root_1$9 = $.from_html(`<!> <!> <!>`, 1);
10379
10552
  function ProcessDialog($$anchor, $$props) {
10380
10553
  $.push($$props, true);
10381
10554
  const cancelAction = ($$anchor) => {
@@ -10445,7 +10618,7 @@ function ProcessDialog($$anchor, $$props) {
10445
10618
  Stack($$anchor, {
10446
10619
  gap: "sm",
10447
10620
  children: ($$anchor, $$slotProps) => {
10448
- var fragment_7 = root$20();
10621
+ var fragment_7 = root$19();
10449
10622
  var div = $.first_child(fragment_7);
10450
10623
  var node_1 = $.child(div);
10451
10624
  {
@@ -10473,7 +10646,7 @@ function ProcessDialog($$anchor, $$props) {
10473
10646
  });
10474
10647
  };
10475
10648
  var alternate = ($$anchor) => {
10476
- var fragment_8 = root_1$10();
10649
+ var fragment_8 = root_1$9();
10477
10650
  var node_3 = $.first_child(fragment_8);
10478
10651
  var consequent_1 = ($$anchor) => {
10479
10652
  Banner($$anchor, {
@@ -10534,79 +10707,8 @@ function ProcessDialog($$anchor, $$props) {
10534
10707
  $.pop();
10535
10708
  }
10536
10709
  //#endregion
10537
- //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Section.svelte
10538
- var root$19 = $.from_html(`<span class="status svelte-mk24w4"> </span>`);
10539
- var root_1$9 = $.from_html(`<p class="note svelte-mk24w4" data-role="caption"> </p>`);
10540
- var root_2$6 = $.from_html(`<div class="head svelte-mk24w4" data-role="row-inline"><h2 class="title svelte-mk24w4"> </h2> <!></div> <!>`, 1);
10541
- var root_3$3 = $.from_html(`<!> <div class="body svelte-mk24w4" data-pass=""><!></div>`, 1);
10542
- var root_4$1 = $.from_html(`<section data-role="section"><!></section>`);
10543
- function Section($$anchor, $$props) {
10544
- let gap = $.prop($$props, "gap", 3, "lg"), flush = $.prop($$props, "flush", 3, false);
10545
- var section = root_4$1();
10546
- let classes;
10547
- Stack($.child(section), {
10548
- gap: "lg",
10549
- children: ($$anchor, $$slotProps) => {
10550
- var fragment = root_3$3();
10551
- var node_1 = $.first_child(fragment);
10552
- Stack(node_1, {
10553
- gap: "xs",
10554
- children: ($$anchor, $$slotProps) => {
10555
- var fragment_1 = root_2$6();
10556
- var div = $.first_child(fragment_1);
10557
- var h2 = $.child(div);
10558
- var text = $.only_child(h2, true);
10559
- var node_2 = $.sibling(h2, 2);
10560
- var consequent = ($$anchor) => {
10561
- var span = root$19();
10562
- var text_1 = $.only_child(span, true);
10563
- $.template_effect(() => $.set_text(text_1, $$props.status));
10564
- $.append($$anchor, span);
10565
- };
10566
- $.if(node_2, ($$render) => {
10567
- if ($$props.status) $$render(consequent);
10568
- });
10569
- $.reset(div);
10570
- var node_3 = $.sibling(div, 2);
10571
- var consequent_1 = ($$anchor) => {
10572
- var p = root_1$9();
10573
- var text_2 = $.only_child(p, true);
10574
- $.template_effect(() => $.set_text(text_2, $$props.note));
10575
- $.append($$anchor, p);
10576
- };
10577
- $.if(node_3, ($$render) => {
10578
- if ($$props.note) $$render(consequent_1);
10579
- });
10580
- $.template_effect(() => $.set_text(text, $$props.title));
10581
- $.append($$anchor, fragment_1);
10582
- },
10583
- $$slots: { default: true }
10584
- });
10585
- var div_1 = $.sibling(node_1, 2);
10586
- Stack($.child(div_1), {
10587
- get gap() {
10588
- return gap();
10589
- },
10590
- children: ($$anchor, $$slotProps) => {
10591
- var fragment_2 = $.comment();
10592
- var node_5 = $.first_child(fragment_2);
10593
- $.snippet(node_5, () => $$props.children);
10594
- $.append($$anchor, fragment_2);
10595
- },
10596
- $$slots: { default: true }
10597
- });
10598
- $.reset(div_1);
10599
- $.append($$anchor, fragment);
10600
- },
10601
- $$slots: { default: true }
10602
- });
10603
- $.reset(section);
10604
- $.template_effect(() => classes = $.set_class(section, 1, "kata-section svelte-mk24w4", null, classes, { flush: flush() }));
10605
- $.append($$anchor, section);
10606
- }
10607
- //#endregion
10608
10710
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Stat.svelte
10609
- var root$18 = $.from_html(`<div class="stat svelte-1hxotol" data-role="stat" data-pass=""><span class="v svelte-1hxotol"> </span> <span class="k svelte-1hxotol"><!><span class="t svelte-1hxotol"> </span></span></div>`);
10711
+ var root$18 = $.from_html(`<div class="stat svelte-1hxotol" data-role="stat"><span class="v svelte-1hxotol"> </span> <span class="k svelte-1hxotol"><!><span class="t svelte-1hxotol"> </span></span></div>`);
10610
10712
  function Stat($$anchor, $$props) {
10611
10713
  var div = root$18();
10612
10714
  var span = $.child(div);
@@ -10633,7 +10735,7 @@ function Stat($$anchor, $$props) {
10633
10735
  }
10634
10736
  //#endregion
10635
10737
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Stats.svelte
10636
- var root$17 = $.from_html(`<div class="stats svelte-k8jq30" data-role="stat"><!></div>`);
10738
+ var root$17 = $.from_html(`<div class="stats svelte-k8jq30" data-role="stat" data-edge-pass=""><!></div>`);
10637
10739
  function Stats($$anchor, $$props) {
10638
10740
  var div = root$17();
10639
10741
  var node = $.child(div);
@@ -11026,6 +11128,7 @@ function ShortcutsModal($$anchor, $$props) {
11026
11128
  get onclose() {
11027
11129
  return $$props.onclose;
11028
11130
  },
11131
+ flush: true,
11029
11132
  get open() {
11030
11133
  return open();
11031
11134
  },
@@ -11049,8 +11152,8 @@ function ShortcutsModal($$anchor, $$props) {
11049
11152
  var $$array = $.derived(() => $.to_array($.get($$item), 2));
11050
11153
  let group = () => $.get($$array)[0];
11051
11154
  let list = () => $.get($$array)[1];
11052
- Section($$anchor, {
11053
- get title() {
11155
+ SectionHeader($$anchor, {
11156
+ get label() {
11054
11157
  return group();
11055
11158
  },
11056
11159
  flush: true,
@@ -11072,7 +11175,7 @@ function ShortcutsModal($$anchor, $$props) {
11072
11175
  }
11073
11176
  //#endregion
11074
11177
  //#region ../node_modules/@sakuzu/kata/dist/svelte/components/Veil.svelte
11075
- var root$14 = $.from_html(`<div class="veil svelte-1chlxvr" data-role="veil"><!></div>`);
11178
+ var root$14 = $.from_html(`<div class="veil svelte-1chlxvr" data-role="veil" data-outline=""><!></div>`);
11076
11179
  function Veil($$anchor, $$props) {
11077
11180
  let busy = $.prop($$props, "busy", 3, false);
11078
11181
  var div = root$14();
@@ -11087,7 +11190,7 @@ function Veil($$anchor, $$props) {
11087
11190
  var root_1$7 = $.from_html(`<div class="top svelte-8jke9d" data-region="top"><!></div>`);
11088
11191
  var root_2$5 = $.from_html(`<div class="side left svelte-8jke9d" data-region="left"><!></div>`);
11089
11192
  var root_3$2 = $.from_html(`<div class="surface svelte-8jke9d"><!></div>`);
11090
- var root_4 = $.from_html(`<div class="bottom svelte-8jke9d" data-region="bottom"><!></div>`);
11193
+ var root_4$1 = $.from_html(`<div class="bottom svelte-8jke9d" data-region="bottom"><!></div>`);
11091
11194
  var root_5 = $.from_html(`<div class="fab-column svelte-8jke9d" data-region="bottom"><!></div>`);
11092
11195
  var root_6 = $.from_html(`<!> <div class="fab-seat svelte-8jke9d"><!></div>`, 1);
11093
11196
  var root_7 = $.from_html(`<div class="top-float svelte-8jke9d" data-region="top"><!></div>`);
@@ -11172,7 +11275,7 @@ function Shell($$anchor, $$props) {
11172
11275
  const sheetOf = (side) => side === "left" ? $$props.leftSheet : $$props.rightSheet;
11173
11276
  const stagesOf = (side) => sheetOf(side)?.stages ?? ALL_STAGES;
11174
11277
  const closableOf = (side) => sheetOf(side)?.closable ?? true;
11175
- const sheets = $.derived(() => $.get(mode) === "sheet" ? [...["left", "right"].filter((side) => !closableOf(side) && !!region(side) && !shown(side)), ...$.get(order)] : []);
11278
+ const sheets = $.derived(() => $.get(mode) === "sheet" ? [...["left", "right"].filter((side) => !closableOf(side) && !!region(side) && !shown(side) && !$.get(dockSheeted)), ...$.get(order)] : []);
11176
11279
  /** The height a sheet shows: its stage while open, its lowest height while it rests */
11177
11280
  function sheetStage(side) {
11178
11281
  if (!shown(side)) return stagesOf(side)[0];
@@ -11418,7 +11521,7 @@ function Shell($$anchor, $$props) {
11418
11521
  });
11419
11522
  var node_7 = $.sibling(node_5, 2);
11420
11523
  var consequent_3 = ($$anchor) => {
11421
- var div_7 = root_4();
11524
+ var div_7 = root_4$1();
11422
11525
  var node_8 = $.child(div_7);
11423
11526
  $.snippet(node_8, () => $$props.bottom, () => ({ column: false }));
11424
11527
  $.reset(div_7);
@@ -12286,9 +12389,10 @@ function toolbarShortcuts(draw, specs, messages, deletable) {
12286
12389
  }
12287
12390
  //#endregion
12288
12391
  //#region src/components/Actions.svelte
12289
- var root_1$6 = $.from_html(`<div class="item svelte-9feu2r"><div class="row svelte-9feu2r"><div class="control svelte-9feu2r"><!></div> <!></div> <!></div>`);
12290
- var root_2$4 = $.from_html(`<div class="card svelte-9feu2r"><!></div>`);
12291
- var root_3$1 = $.from_html(`<div data-role="actions"><!></div>`);
12392
+ var root_1$6 = $.from_html(`<!> <!>`, 1);
12393
+ var root_2$4 = $.from_html(`<span> </span>`);
12394
+ var root_3$1 = $.from_html(`<div class="card svelte-9feu2r"><!></div>`);
12395
+ var root_4 = $.from_html(`<div data-role="actions"><!></div>`);
12292
12396
  function Actions($$anchor, $$props) {
12293
12397
  $.push($$props, true);
12294
12398
  const head = ($$anchor) => {
@@ -12308,7 +12412,30 @@ function Actions($$anchor, $$props) {
12308
12412
  $$slots: { default: true }
12309
12413
  });
12310
12414
  };
12415
+ const toggle = ($$anchor, spec = $.noop) => {
12416
+ var bind_get = () => read(spec(), "checked");
12417
+ var bind_set = () => runAction($$props.actions, spec());
12418
+ {
12419
+ let $0 = $.derived(() => read(spec(), "disabled"));
12420
+ Toggle($$anchor, {
12421
+ between: true,
12422
+ get label() {
12423
+ return spec().label;
12424
+ },
12425
+ get disabled() {
12426
+ return $.get($0);
12427
+ },
12428
+ get checked() {
12429
+ return bind_get();
12430
+ },
12431
+ set checked($$value) {
12432
+ bind_set($$value);
12433
+ }
12434
+ });
12435
+ }
12436
+ };
12311
12437
  let keys = $.prop($$props, "keys", 3, true), narrow = $.prop($$props, "narrow", 3, false), startOpen = $.prop($$props, "startOpen", 3, true), beside = $.prop($$props, "beside", 3, false), reopen = $.prop($$props, "reopen", 3, false);
12438
+ const COLUMNS = "minmax(0, 1fr) auto";
12312
12439
  const RESERVE = "--mgd-ui-actions-reserve";
12313
12440
  const list = $.derived(() => $$props.actions.list.get());
12314
12441
  const version = $.derived(() => $$props.actions.version.get());
@@ -12433,7 +12560,7 @@ function Actions($$anchor, $$props) {
12433
12560
  root.style.removeProperty(RESERVE);
12434
12561
  };
12435
12562
  });
12436
- var div = root_3$1();
12563
+ var div = root_4();
12437
12564
  $.event("resize", $.window, place);
12438
12565
  var node = $.child(div);
12439
12566
  {
@@ -12447,10 +12574,10 @@ function Actions($$anchor, $$props) {
12447
12574
  return $.get($1);
12448
12575
  },
12449
12576
  children: ($$anchor, $$slotProps) => {
12450
- var fragment_2 = $.comment();
12451
- var node_1 = $.first_child(fragment_2);
12452
- var consequent_3 = ($$anchor) => {
12453
- var div_1 = root_2$4();
12577
+ var fragment_3 = $.comment();
12578
+ var node_1 = $.first_child(fragment_3);
12579
+ var consequent_5 = ($$anchor) => {
12580
+ var div_1 = root_3$1();
12454
12581
  let styles;
12455
12582
  SectionHeader($.child(div_1), {
12456
12583
  get label() {
@@ -12459,100 +12586,168 @@ function Actions($$anchor, $$props) {
12459
12586
  get actions() {
12460
12587
  return head;
12461
12588
  },
12589
+ flush: true,
12462
12590
  children: ($$anchor, $$slotProps) => {
12463
- var fragment_3 = $.comment();
12464
- var node_3 = $.first_child(fragment_3);
12465
- $.each(node_3, 17, () => $.get(list), (spec) => spec.id, ($$anchor, spec) => {
12466
- const key = $.derived(() => kbd($.get(spec)));
12467
- var div_2 = root_1$6();
12468
- var div_3 = $.child(div_2);
12469
- var div_4 = $.child(div_3);
12470
- var node_4 = $.child(div_4);
12471
- var consequent = ($$anchor) => {
12472
- var bind_get = () => read($.get(spec), "checked");
12473
- var bind_set = () => runAction($$props.actions, $.get(spec));
12474
- {
12475
- let $0 = $.derived(() => read($.get(spec), "disabled"));
12476
- Toggle($$anchor, {
12477
- between: true,
12478
- get label() {
12479
- return $.get(spec).label;
12480
- },
12481
- get disabled() {
12482
- return $.get($0);
12483
- },
12484
- get checked() {
12485
- return bind_get();
12486
- },
12487
- set checked($$value) {
12488
- bind_set($$value);
12591
+ List($$anchor, {
12592
+ children: ($$anchor, $$slotProps) => {
12593
+ var fragment_5 = $.comment();
12594
+ var node_3 = $.first_child(fragment_5);
12595
+ $.each(node_3, 17, () => $.get(list), (spec) => spec.id, ($$anchor, spec) => {
12596
+ const key = $.derived(() => kbd($.get(spec)));
12597
+ var fragment_6 = $.comment();
12598
+ var node_4 = $.first_child(fragment_6);
12599
+ var consequent_2 = ($$anchor) => {
12600
+ ListItem($$anchor, {
12601
+ columns: COLUMNS,
12602
+ plain: true,
12603
+ get "data-action"() {
12604
+ return $.get(spec).id;
12605
+ },
12606
+ children: ($$anchor, $$slotProps) => {
12607
+ var fragment_8 = root_1$6();
12608
+ var node_5 = $.first_child(fragment_8);
12609
+ var consequent = ($$anchor) => {
12610
+ Stack($$anchor, {
12611
+ gap: "sm",
12612
+ children: ($$anchor, $$slotProps) => {
12613
+ var fragment_10 = root_1$6();
12614
+ var node_6 = $.first_child(fragment_10);
12615
+ toggle(node_6, () => $.get(spec));
12616
+ Text($.sibling(node_6, 2), {
12617
+ role: "caption",
12618
+ muted: true,
12619
+ clamp: true,
12620
+ children: ($$anchor, $$slotProps) => {
12621
+ $.next();
12622
+ var text = $.text();
12623
+ $.template_effect(() => $.set_text(text, $.get(spec).hint));
12624
+ $.append($$anchor, text);
12625
+ },
12626
+ $$slots: { default: true }
12627
+ });
12628
+ $.append($$anchor, fragment_10);
12629
+ },
12630
+ $$slots: { default: true }
12631
+ });
12632
+ };
12633
+ var alternate = ($$anchor) => {
12634
+ toggle($$anchor, () => $.get(spec));
12635
+ };
12636
+ $.if(node_5, ($$render) => {
12637
+ if ($.get(spec).hint) $$render(consequent);
12638
+ else $$render(alternate, -1);
12639
+ });
12640
+ var node_8 = $.sibling(node_5, 2);
12641
+ var consequent_1 = ($$anchor) => {
12642
+ Kbd($$anchor, {
12643
+ bare: true,
12644
+ children: ($$anchor, $$slotProps) => {
12645
+ $.next();
12646
+ var text_1 = $.text();
12647
+ $.template_effect(() => $.set_text(text_1, $.get(key)));
12648
+ $.append($$anchor, text_1);
12649
+ },
12650
+ $$slots: { default: true }
12651
+ });
12652
+ };
12653
+ $.if(node_8, ($$render) => {
12654
+ if ($.get(key)) $$render(consequent_1);
12655
+ });
12656
+ $.append($$anchor, fragment_8);
12657
+ },
12658
+ $$slots: { default: true }
12659
+ });
12660
+ };
12661
+ var alternate_2 = ($$anchor) => {
12662
+ {
12663
+ let $0 = $.derived(() => read($.get(spec), "disabled"));
12664
+ ListItem($$anchor, {
12665
+ columns: COLUMNS,
12666
+ get disabled() {
12667
+ return $.get($0);
12668
+ },
12669
+ onclick: () => runAction($$props.actions, $.get(spec)),
12670
+ get "data-action"() {
12671
+ return $.get(spec).id;
12672
+ },
12673
+ children: ($$anchor, $$slotProps) => {
12674
+ var fragment_16 = root_1$6();
12675
+ var node_9 = $.first_child(fragment_16);
12676
+ var consequent_3 = ($$anchor) => {
12677
+ Stack($$anchor, {
12678
+ gap: "sm",
12679
+ children: ($$anchor, $$slotProps) => {
12680
+ var fragment_18 = root_1$6();
12681
+ var node_10 = $.first_child(fragment_18);
12682
+ Text(node_10, {
12683
+ clamp: true,
12684
+ children: ($$anchor, $$slotProps) => {
12685
+ $.next();
12686
+ var text_2 = $.text();
12687
+ $.template_effect(() => $.set_text(text_2, $.get(spec).label));
12688
+ $.append($$anchor, text_2);
12689
+ },
12690
+ $$slots: { default: true }
12691
+ });
12692
+ Text($.sibling(node_10, 2), {
12693
+ role: "caption",
12694
+ muted: true,
12695
+ clamp: true,
12696
+ children: ($$anchor, $$slotProps) => {
12697
+ $.next();
12698
+ var text_3 = $.text();
12699
+ $.template_effect(() => $.set_text(text_3, $.get(spec).hint));
12700
+ $.append($$anchor, text_3);
12701
+ },
12702
+ $$slots: { default: true }
12703
+ });
12704
+ $.append($$anchor, fragment_18);
12705
+ },
12706
+ $$slots: { default: true }
12707
+ });
12708
+ };
12709
+ var alternate_1 = ($$anchor) => {
12710
+ var span = root_2$4();
12711
+ var text_4 = $.only_child(span, true);
12712
+ $.template_effect(() => $.set_text(text_4, $.get(spec).label));
12713
+ $.append($$anchor, span);
12714
+ };
12715
+ $.if(node_9, ($$render) => {
12716
+ if ($.get(spec).hint) $$render(consequent_3);
12717
+ else $$render(alternate_1, -1);
12718
+ });
12719
+ var node_12 = $.sibling(node_9, 2);
12720
+ var consequent_4 = ($$anchor) => {
12721
+ Kbd($$anchor, {
12722
+ bare: true,
12723
+ children: ($$anchor, $$slotProps) => {
12724
+ $.next();
12725
+ var text_5 = $.text();
12726
+ $.template_effect(() => $.set_text(text_5, $.get(key)));
12727
+ $.append($$anchor, text_5);
12728
+ },
12729
+ $$slots: { default: true }
12730
+ });
12731
+ };
12732
+ $.if(node_12, ($$render) => {
12733
+ if ($.get(key)) $$render(consequent_4);
12734
+ });
12735
+ $.append($$anchor, fragment_16);
12736
+ },
12737
+ $$slots: { default: true }
12738
+ });
12489
12739
  }
12740
+ };
12741
+ $.if(node_4, ($$render) => {
12742
+ if ($.get(spec).kind === "toggle") $$render(consequent_2);
12743
+ else $$render(alternate_2, -1);
12490
12744
  });
12491
- }
12492
- };
12493
- var alternate = ($$anchor) => {
12494
- {
12495
- let $0 = $.derived(() => read($.get(spec), "disabled"));
12496
- Button($$anchor, {
12497
- block: true,
12498
- get disabled() {
12499
- return $.get($0);
12500
- },
12501
- onclick: () => runAction($$props.actions, $.get(spec)),
12502
- children: ($$anchor, $$slotProps) => {
12503
- $.next();
12504
- var text = $.text();
12505
- $.template_effect(() => $.set_text(text, $.get(spec).label));
12506
- $.append($$anchor, text);
12507
- },
12508
- $$slots: { default: true }
12509
- });
12510
- }
12511
- };
12512
- $.if(node_4, ($$render) => {
12513
- if ($.get(spec).kind === "toggle") $$render(consequent);
12514
- else $$render(alternate, -1);
12515
- });
12516
- $.reset(div_4);
12517
- var node_5 = $.sibling(div_4, 2);
12518
- var consequent_1 = ($$anchor) => {
12519
- Kbd($$anchor, {
12520
- bare: true,
12521
- children: ($$anchor, $$slotProps) => {
12522
- $.next();
12523
- var text_1 = $.text();
12524
- $.template_effect(() => $.set_text(text_1, $.get(key)));
12525
- $.append($$anchor, text_1);
12526
- },
12527
- $$slots: { default: true }
12745
+ $.append($$anchor, fragment_6);
12528
12746
  });
12529
- };
12530
- $.if(node_5, ($$render) => {
12531
- if ($.get(key)) $$render(consequent_1);
12532
- });
12533
- $.reset(div_3);
12534
- var node_6 = $.sibling(div_3, 2);
12535
- var consequent_2 = ($$anchor) => {
12536
- Text($$anchor, {
12537
- role: "caption",
12538
- muted: true,
12539
- children: ($$anchor, $$slotProps) => {
12540
- $.next();
12541
- var text_2 = $.text();
12542
- $.template_effect(() => $.set_text(text_2, $.get(spec).hint));
12543
- $.append($$anchor, text_2);
12544
- },
12545
- $$slots: { default: true }
12546
- });
12547
- };
12548
- $.if(node_6, ($$render) => {
12549
- if ($.get(spec).hint) $$render(consequent_2);
12550
- });
12551
- $.reset(div_2);
12552
- $.template_effect(() => $.set_attribute(div_2, "data-action", $.get(spec).id));
12553
- $.append($$anchor, div_2);
12747
+ $.append($$anchor, fragment_5);
12748
+ },
12749
+ $$slots: { default: true }
12554
12750
  });
12555
- $.append($$anchor, fragment_3);
12556
12751
  },
12557
12752
  $$slots: { default: true }
12558
12753
  });
@@ -12560,7 +12755,7 @@ function Actions($$anchor, $$props) {
12560
12755
  $.template_effect(() => styles = $.set_style(div_1, "", styles, { "max-height": $.get(room) === null ? void 0 : `calc(${$.get(room)}px - var(--kata-gap-md) * ${reopen() ? 3 : 2} - var(--kata-border-width) * 2)` }));
12561
12756
  $.append($$anchor, div_1);
12562
12757
  };
12563
- var alternate_1 = ($$anchor) => {
12758
+ var alternate_3 = ($$anchor) => {
12564
12759
  Button($$anchor, {
12565
12760
  variant: "ghost",
12566
12761
  "aria-expanded": "false",
@@ -12569,18 +12764,18 @@ function Actions($$anchor, $$props) {
12569
12764
  },
12570
12765
  children: ($$anchor, $$slotProps) => {
12571
12766
  $.next();
12572
- var text_3 = $.text();
12573
- $.template_effect(() => $.set_text(text_3, $$props.title));
12574
- $.append($$anchor, text_3);
12767
+ var text_6 = $.text();
12768
+ $.template_effect(() => $.set_text(text_6, $$props.title));
12769
+ $.append($$anchor, text_6);
12575
12770
  },
12576
12771
  $$slots: { default: true }
12577
12772
  });
12578
12773
  };
12579
12774
  $.if(node_1, ($$render) => {
12580
- if ($.get(open)) $$render(consequent_3);
12581
- else $$render(alternate_1, -1);
12775
+ if ($.get(open)) $$render(consequent_5);
12776
+ else $$render(alternate_3, -1);
12582
12777
  });
12583
- $.append($$anchor, fragment_2);
12778
+ $.append($$anchor, fragment_3);
12584
12779
  },
12585
12780
  $$slots: { default: true }
12586
12781
  });
@@ -14986,7 +15181,7 @@ function Inspector($$anchor, $$props) {
14986
15181
  /** The sections the application added */
14987
15182
  /** Called by the close button; clears the selection when left out */
14988
15183
  /** Whether it is in a sheet, whose width the panel takes */
14989
- const view = $.derived(() => follow($$props.draw, INSPECTOR_EVENTS, () => readView($$props.draw)));
15184
+ const view = $.derived(() => follow$1($$props.draw, INSPECTOR_EVENTS, () => readView($$props.draw)));
14990
15185
  const v = $.derived(() => $.get(view).get());
14991
15186
  const m = $.derived(() => $$props.messages.get());
14992
15187
  let tab = $.state(void 0);
@@ -15786,7 +15981,7 @@ function LayerPanel($$anchor, $$props) {
15786
15981
  let features = $.prop($$props, "features", 3, true), datasets = $.prop($$props, "datasets", 3, true), add = $.prop($$props, "add", 3, true), reorder = $.prop($$props, "reorder", 3, true), basemaps = $.prop($$props, "basemaps", 3, null), basemapOpen = $.prop($$props, "basemapOpen", 3, false);
15787
15982
  const m = $.derived(() => $$props.messages.get());
15788
15983
  const FEATURE_LIMIT = 1e3;
15789
- const tree = $.derived(() => follow($$props.draw, [
15984
+ const tree = $.derived(() => follow$1($$props.draw, [
15790
15985
  "document.changed",
15791
15986
  "hidden.changed",
15792
15987
  "options.changed",
@@ -15798,7 +15993,7 @@ function LayerPanel($$anchor, $$props) {
15798
15993
  limit: features() === true ? FEATURE_LIMIT : features() === false ? 0 : features(),
15799
15994
  datasets: datasets()
15800
15995
  })));
15801
- const datasetList = $.derived(() => follow($$props.draw, ["dataset.added", "dataset.removed"], () => datasets() ? $$props.draw.datasets.list() : []));
15996
+ const datasetList = $.derived(() => follow$1($$props.draw, ["dataset.added", "dataset.removed"], () => datasets() ? $$props.draw.datasets.list() : []));
15802
15997
  $.user_effect(() => {
15803
15998
  const refresh = $.get(tree).refresh;
15804
15999
  const offs = $.get(datasetList).get().map((dataset) => dataset.on("changed", ({ reason }) => {
@@ -15808,7 +16003,7 @@ function LayerPanel($$anchor, $$props) {
15808
16003
  for (const off of offs) off();
15809
16004
  };
15810
16005
  });
15811
- const selection = $.derived(() => follow($$props.draw, ["selection.changed"], () => $$props.draw.selection.get()));
16006
+ const selection = $.derived(() => follow$1($$props.draw, ["selection.changed"], () => $$props.draw.selection.get()));
15812
16007
  const nodes = $.derived(() => $.get(tree).get());
15813
16008
  const index = $.derived(() => indexNodes($.get(nodes)));
15814
16009
  const selected = $.derived(() => selectedIds($.get(selection).get()));
@@ -16155,13 +16350,13 @@ var root_1$2 = $.from_html(`<div class="legend svelte-pswzrf" data-role="legend"
16155
16350
  function Legend($$anchor, $$props) {
16156
16351
  $.push($$props, true);
16157
16352
  const m = $.derived(() => $$props.messages.get());
16158
- const legend = $.derived(() => follow($$props.draw, [
16353
+ const legend = $.derived(() => follow$1($$props.draw, [
16159
16354
  "document.changed",
16160
16355
  "dataset.added",
16161
16356
  "dataset.removed",
16162
16357
  "dataset.reordered"
16163
16358
  ], () => legendBlocks($$props.draw, $$props.messages.get())));
16164
- const datasetList = $.derived(() => follow($$props.draw, ["dataset.added", "dataset.removed"], () => $$props.draw.datasets.list()));
16359
+ const datasetList = $.derived(() => follow$1($$props.draw, ["dataset.added", "dataset.removed"], () => $$props.draw.datasets.list()));
16165
16360
  $.user_effect(() => {
16166
16361
  const refresh = $.get(legend).refresh;
16167
16362
  const offs = $.get(datasetList).get().map((dataset) => dataset.on("changed", ({ reason }) => {
@@ -16429,7 +16624,7 @@ function SnappingSettings($$anchor, $$props) {
16429
16624
  word: "snapGuide"
16430
16625
  }
16431
16626
  ];
16432
- const options = $.derived(() => follow($$props.draw, ["options.changed"], () => $$props.draw.options.get()));
16627
+ const options = $.derived(() => follow$1($$props.draw, ["options.changed"], () => $$props.draw.options.get()));
16433
16628
  const now = $.derived(() => $.get(options).get());
16434
16629
  const snapping = $.derived(() => $.get(now).snapping ?? {});
16435
16630
  const enabled = $.derived(() => $.get(snapping).enabled !== false);
@@ -16634,10 +16829,10 @@ function Toolbar($$anchor, $$props) {
16634
16829
  /** Whether the delete button shows */
16635
16830
  /** Whether the magnet of snapping shows */
16636
16831
  /** Whether the tooltips show the keys (when the keyboard shortcuts are on) */
16637
- const mode = $.derived(() => follow($$props.draw, ["mode.changed"], () => $$props.draw.getMode()));
16638
- const selected = $.derived(() => follow($$props.draw, ["selection.changed"], () => $$props.draw.selection.get().ids.length));
16639
- const readOnly = $.derived(() => follow($$props.draw, ["readOnly.changed"], () => $$props.draw.isReadOnly()));
16640
- const snapOn = $.derived(() => follow($$props.draw, ["options.changed"], () => $$props.draw.options.get().snapping?.enabled !== false));
16832
+ const mode = $.derived(() => follow$1($$props.draw, ["mode.changed"], () => $$props.draw.getMode()));
16833
+ const selected = $.derived(() => follow$1($$props.draw, ["selection.changed"], () => $$props.draw.selection.get().ids.length));
16834
+ const readOnly = $.derived(() => follow$1($$props.draw, ["readOnly.changed"], () => $$props.draw.isReadOnly()));
16835
+ const snapOn = $.derived(() => follow$1($$props.draw, ["options.changed"], () => $$props.draw.options.get().snapping?.enabled !== false));
16641
16836
  let settings = $.state(void 0);
16642
16837
  const m = $.derived(() => $$props.messages.get());
16643
16838
  const specs = $.derived(() => $$props.tools.get().map((entry) => toSpec(entry, $.get(m))));
@@ -16826,7 +17021,7 @@ function DrawUI($$anchor, $$props) {
16826
17021
  };
16827
17022
  let shortcuts = $.prop($$props, "shortcuts", 3, true), sideMode = $.prop($$props, "side", 3, "floating"), themeToggle = $.prop($$props, "themeToggle", 3, true), actionsOpen = $.prop($$props, "actionsOpen", 3, true);
16828
17023
  const inspectorSettings = $.derived(() => $$props.inspector.get());
16829
- const selected = $.derived(() => follow($$props.draw, ["selection.changed"], () => $$props.draw.selection.get().ids.length > 0));
17024
+ const selected = $.derived(() => follow$1($$props.draw, ["selection.changed"], () => $$props.draw.selection.get().ids.length > 0));
16830
17025
  const choosable = $.derived(() => !!$$props.basemaps && $$props.basemaps.list.length >= 2);
16831
17026
  let basemapOpen = $.state(false);
16832
17027
  function openBasemaps() {
@@ -16867,10 +17062,11 @@ function DrawUI($$anchor, $$props) {
16867
17062
  bottom: 0,
16868
17063
  left: 0
16869
17064
  };
17065
+ const narrow = $.get(layout)?.width === "narrow";
16870
17066
  $.get(bar);
16871
17067
  if (!$$props.oninset) return;
16872
17068
  const report = $$props.oninset;
16873
- tick().then(() => report(now));
17069
+ tick().then(() => report(now, narrow));
16874
17070
  });
16875
17071
  const SUN_ICON = Sun;
16876
17072
  const MOON_ICON = Moon;
@@ -17064,42 +17260,97 @@ function DrawUI($$anchor, $$props) {
17064
17260
  }
17065
17261
  //#endregion
17066
17262
  //#region src/controls.ts
17263
+ /** The class of maplibre-gl's compact attribution, and the one it has while it is open */
17264
+ var COMPACT = "maplibregl-compact";
17265
+ var COMPACT_SHOW = "maplibregl-compact-show";
17067
17266
  /**
17068
17267
  * Adds maplibre-gl's controls to a map: all four with `true` or `undefined`, none with `false`,
17069
17268
  * those not set to false with an object.
17070
17269
  *
17071
17270
  * maplibre-gl puts a control added to a bottom corner above those already there, so the controls
17072
- * of the bottom right are added from the bottom: the zoom, the compass, then the globe.
17271
+ * of the bottom right are added from the bottom: the zoom, the compass, then the globe. The globe
17272
+ * and the compass come back the same way, above the zoom.
17273
+ *
17274
+ * While the map is narrow (`setNarrow`), the globe and the compass are removed, and the
17275
+ * attribution is folded to its (i) button: maplibre-gl builds its compact attribution open (until
17276
+ * the first drag), when it first fills, when the map's width brings the compact form back, and
17277
+ * when a page adds it again; each time, its open class is removed, as maplibre-gl's own fold on a
17278
+ * drag does. The (i) button opens it still. With `false`, nothing is added and the attribution is
17279
+ * left alone.
17073
17280
  */
17074
17281
  function mapControls(map, option) {
17075
17282
  const want = option === false ? null : option === true || option === void 0 ? {} : option;
17076
17283
  const added = [];
17284
+ let wideOnly = [];
17285
+ let narrow = false;
17286
+ let destroyed = false;
17077
17287
  const add = (control, position) => {
17078
17288
  map.addControl(control, position);
17079
17289
  added.push(control);
17290
+ return control;
17291
+ };
17292
+ const remove = (control) => {
17293
+ const at = added.indexOf(control);
17294
+ if (at >= 0) added.splice(at, 1);
17295
+ try {
17296
+ map.removeControl(control);
17297
+ } catch {}
17298
+ };
17299
+ const addWideOnly = () => {
17300
+ if (!want) return;
17301
+ if (want.compass !== false) wideOnly.push(add(new NavigationControl({
17302
+ showZoom: false,
17303
+ showCompass: true,
17304
+ visualizePitch: true
17305
+ }), "bottom-right"));
17306
+ if (want.globe !== false) wideOnly.push(add(new GlobeControl(), "bottom-right"));
17080
17307
  };
17081
17308
  if (want) {
17082
17309
  if (want.zoom !== false) add(new NavigationControl({
17083
17310
  showZoom: true,
17084
17311
  showCompass: false
17085
17312
  }), "bottom-right");
17086
- if (want.compass !== false) add(new NavigationControl({
17087
- showZoom: false,
17088
- showCompass: true,
17089
- visualizePitch: true
17090
- }), "bottom-right");
17091
- if (want.globe !== false) add(new GlobeControl(), "bottom-right");
17313
+ addWideOnly();
17092
17314
  if (want.scale !== false) add(new ScaleControl(), "bottom-left");
17093
17315
  }
17094
- let destroyed = false;
17095
- return { destroy() {
17096
- if (destroyed) return;
17097
- destroyed = true;
17098
- for (const control of added) try {
17099
- map.removeControl(control);
17100
- } catch {}
17101
- added.length = 0;
17102
- } };
17316
+ const container = map.getContainer();
17317
+ const watched = container.querySelector(":scope > .maplibregl-control-container") ?? container;
17318
+ const isAttribution = (node) => node instanceof Element && node.matches(".maplibregl-ctrl-attrib");
17319
+ const fold = (el) => {
17320
+ if (narrow) el.classList.remove(COMPACT_SHOW);
17321
+ };
17322
+ /** maplibre-gl built it open: it was added, or it has just become compact */
17323
+ const watcher = want && typeof MutationObserver !== "undefined" ? new MutationObserver((records) => {
17324
+ if (!narrow) return;
17325
+ for (const record of records) if (record.type === "childList") {
17326
+ for (const node of record.addedNodes) if (isAttribution(node)) fold(node);
17327
+ } else if (isAttribution(record.target) && record.target.classList.contains(COMPACT) && !(record.oldValue ?? "").split(/\s+/).includes(COMPACT)) fold(record.target);
17328
+ }) : null;
17329
+ watcher?.observe(watched, {
17330
+ subtree: true,
17331
+ childList: true,
17332
+ attributes: true,
17333
+ attributeFilter: ["class"],
17334
+ attributeOldValue: true
17335
+ });
17336
+ return {
17337
+ setNarrow(next) {
17338
+ if (destroyed || !want || next === narrow) return;
17339
+ narrow = next;
17340
+ if (narrow) {
17341
+ for (const control of wideOnly) remove(control);
17342
+ wideOnly = [];
17343
+ for (const el of watched.querySelectorAll(".maplibregl-ctrl-attrib")) fold(el);
17344
+ } else addWideOnly();
17345
+ },
17346
+ destroy() {
17347
+ if (destroyed) return;
17348
+ destroyed = true;
17349
+ watcher?.disconnect();
17350
+ for (const control of [...added]) remove(control);
17351
+ wideOnly = [];
17352
+ }
17353
+ };
17103
17354
  }
17104
17355
  /** The attribute on the map's container while the interface lifts its bottom corners */
17105
17356
  var LIFT_ATTRIBUTE = "data-mgd-ui-lift";
@@ -17126,7 +17377,8 @@ var upDown = (a, b) => a.top < b.bottom && b.top < a.bottom;
17126
17377
  * while the right region covers the stage (the inset's right) and they are under it up and
17127
17378
  * down: by the inset and gap-md
17128
17379
  * - --mgd-ui-lift-left also lifts the bottom left corner above the attribution's box while that
17129
- * box reaches the corner across
17380
+ * box reaches the corner across, but on a narrow map: there the attribution is folded to its
17381
+ * (i) button (mapControls), and the band the button opens is not lifted for
17130
17382
  *
17131
17383
  * The boxes are measured where maplibre-gl places them, without what this moved. The attribution
17132
17384
  * and the right region are followed with a ResizeObserver, as the toolbar and the corners are:
@@ -17144,6 +17396,7 @@ function cornerLift(container, root) {
17144
17396
  bottom: 0,
17145
17397
  left: 0
17146
17398
  };
17399
+ let narrow = false;
17147
17400
  let now = {
17148
17401
  left: 0,
17149
17402
  right: 0,
@@ -17217,7 +17470,7 @@ function cornerLift(container, root) {
17217
17470
  }
17218
17471
  }
17219
17472
  let liftLeft = reachesBar(left) ? band : 0;
17220
- const attrib = attribution()?.getBoundingClientRect();
17473
+ const attrib = narrow ? void 0 : attribution()?.getBoundingClientRect();
17221
17474
  if (left && attrib && attrib.width > 0 && attrib.height > 0) {
17222
17475
  const a = moved(attrib, 0, now.right - liftRight);
17223
17476
  const l = moved(left, 0, -liftLeft);
@@ -17263,9 +17516,10 @@ function cornerLift(container, root) {
17263
17516
  for (const el of observed) observer.observe(el);
17264
17517
  }
17265
17518
  return {
17266
- update(next) {
17519
+ update(next, nextNarrow) {
17267
17520
  if (destroyed) return;
17268
17521
  if (next) inset = { ...next };
17522
+ if (nextNarrow !== void 0) narrow = nextNarrow;
17269
17523
  follow();
17270
17524
  apply();
17271
17525
  },
@@ -17335,6 +17589,87 @@ function mapPadding(map) {
17335
17589
  };
17336
17590
  }
17337
17591
  //#endregion
17592
+ //#region src/reveal.ts
17593
+ /**
17594
+ * How far to pan the map so that a box shows in the visible region: null when the box is entirely
17595
+ * inside the region, else the distance from the centre of the region to the centre of the box,
17596
+ * which the centre of the view moves by. The zoom is never changed, so a box larger than the
17597
+ * region is centred in it.
17598
+ *
17599
+ * @param bbox - The box of the selection on the map's container
17600
+ * @param visible - The visible region of the map's container
17601
+ */
17602
+ function reveal(bbox, visible) {
17603
+ if (bbox.left >= visible.left && bbox.right <= visible.right && bbox.top >= visible.top && bbox.bottom <= visible.bottom) return null;
17604
+ return {
17605
+ x: (bbox.left + bbox.right) / 2 - (visible.left + visible.right) / 2,
17606
+ y: (bbox.top + bbox.bottom) / 2 - (visible.top + visible.bottom) / 2
17607
+ };
17608
+ }
17609
+ /**
17610
+ * The visible region of the map's container: less the inset of the shell at each edge (the left
17611
+ * and the right regions, the sheets at the bottom), and above the toolbar's band and the
17612
+ * attribution's box, each taken from its top to the bottom of the map
17613
+ *
17614
+ * @param container - The map's container
17615
+ * @param root - The root element of the interface
17616
+ * @param inset - The inset the shell reported last
17617
+ */
17618
+ function visibleRegion(container, root, inset) {
17619
+ const box = container.getBoundingClientRect();
17620
+ let bottom = box.height - inset.bottom;
17621
+ const bands = [root.querySelector("[data-region=\"bottom\"] [data-role=\"drawbar\"]"), container.querySelector(":scope > .maplibregl-control-container .maplibregl-ctrl-attrib")];
17622
+ for (const el of bands) {
17623
+ const r = el?.getBoundingClientRect();
17624
+ if (r && r.width > 0 && r.height > 0) bottom = Math.min(bottom, r.top - box.top);
17625
+ }
17626
+ return {
17627
+ left: inset.left,
17628
+ top: inset.top,
17629
+ right: box.width - inset.right,
17630
+ bottom
17631
+ };
17632
+ }
17633
+ /** Calls `visit` with each position of a geometry */
17634
+ function eachPosition(geometry, visit) {
17635
+ if (geometry.geometries) {
17636
+ for (const part of geometry.geometries) eachPosition(part, visit);
17637
+ return;
17638
+ }
17639
+ const walk = (value) => {
17640
+ if (!Array.isArray(value)) return;
17641
+ if (typeof value[0] === "number" && typeof value[1] === "number") {
17642
+ visit(value[0], value[1]);
17643
+ return;
17644
+ }
17645
+ for (const item of value) walk(item);
17646
+ };
17647
+ walk(geometry.coordinates);
17648
+ }
17649
+ /**
17650
+ * The box of geometries on the map's container, from the points `project` gives for their
17651
+ * positions; null for none
17652
+ */
17653
+ function screenBox(geometries, project) {
17654
+ let box = null;
17655
+ for (const geometry of geometries) eachPosition(geometry, (lng, lat) => {
17656
+ const p = project([lng, lat]);
17657
+ if (!Number.isFinite(p.x) || !Number.isFinite(p.y)) return;
17658
+ box = box ? {
17659
+ left: Math.min(box.left, p.x),
17660
+ top: Math.min(box.top, p.y),
17661
+ right: Math.max(box.right, p.x),
17662
+ bottom: Math.max(box.bottom, p.y)
17663
+ } : {
17664
+ left: p.x,
17665
+ top: p.y,
17666
+ right: p.x,
17667
+ bottom: p.y
17668
+ };
17669
+ });
17670
+ return box;
17671
+ }
17672
+ //#endregion
17338
17673
  //#region src/theme.ts
17339
17674
  /** The query of the system's preference that `auto` follows */
17340
17675
  var LIGHT_QUERY = "(prefers-color-scheme: light)";
@@ -17468,12 +17803,15 @@ function toolsHandle(tools, messages, actions) {
17468
17803
  * inspector on the right while something is selected. The map's padding follows the interface:
17469
17804
  * the room the left panel takes (beside the map or floating over it) at the left and the sheets
17470
17805
  * at the bottom, so that `fitBounds` and `easeTo` keep clear of them; `destroy()` gives the map
17471
- * its padding back. The last section of the layer panel is the basemap, whose row opens the
17806
+ * its padding back. When the selection of drawn features changes, the map pans once (the zoom
17807
+ * stays) so that it shows clear of the panels, the sheets, the toolbar and the attribution,
17808
+ * unless it shows there already. The last section of the layer panel is the basemap, whose row opens the
17472
17809
  * basemaps of `options.basemaps` to choose from on the right, in the place of the inspector, when
17473
17810
  * there are two or more. A button at the top right switches between the
17474
17811
  * light and the dark look, and maplibre-gl's own controls go to the bottom corners of the map (the
17475
17812
  * globe, the compass and the zoom at the right, the scale at the left), which move out of the way
17476
- * of the toolbar, the right panel and the attribution; `destroy()` removes them. The actions of
17813
+ * of the toolbar, the right panel and the attribution; a narrow map (below 48rem) shows no globe
17814
+ * and no compass, and its attribution folded to its (i) button; `destroy()` removes them. The actions of
17477
17815
  * the application (`options.actions`, `ui.actions`) are rows of a card at the bottom left, above
17478
17816
  * the scale and the attribution, each with its key.
17479
17817
  *
@@ -17514,6 +17852,7 @@ function createDrawUI(draw, options = {}) {
17514
17852
  const controls = mapControls(map, options.mapControls);
17515
17853
  const lift = cornerLift(map.getContainer(), root);
17516
17854
  const padding = options.padding === false ? null : mapPadding(map);
17855
+ const revealing = selectionReveal(draw, root);
17517
17856
  const view = mount(DrawUI, {
17518
17857
  target: root,
17519
17858
  props: {
@@ -17525,9 +17864,11 @@ function createDrawUI(draw, options = {}) {
17525
17864
  shortcuts: options.shortcuts !== false,
17526
17865
  inspector,
17527
17866
  sections,
17528
- oninset: (inset) => {
17867
+ oninset: (inset, narrow) => {
17529
17868
  padding?.update(inset);
17530
- lift.update(inset);
17869
+ controls.setNarrow(narrow);
17870
+ lift.update(inset, narrow);
17871
+ revealing.inset(inset);
17531
17872
  },
17532
17873
  side: options.side,
17533
17874
  light,
@@ -17623,6 +17964,7 @@ function createDrawUI(draw, options = {}) {
17623
17964
  controlContainer?.removeAttribute("data-color-mode");
17624
17965
  basemaps.destroy();
17625
17966
  padding?.destroy();
17967
+ revealing.destroy();
17626
17968
  lift.destroy();
17627
17969
  controls.destroy();
17628
17970
  unmount(view);
@@ -17631,6 +17973,84 @@ function createDrawUI(draw, options = {}) {
17631
17973
  };
17632
17974
  }
17633
17975
  /**
17976
+ * Reveals the selection of drawn features each time it changes (reveal.ts), once the shell's
17977
+ * insets have settled for it: the right region opens with a selection, and the shell measures it
17978
+ * in a ResizeObserver delivery and reports the inset in the next frame. So the selection is
17979
+ * revealed in the task after the next inset, or, when none comes within two frames (the regions
17980
+ * did not change), in the task after those. The map pans with `easeTo`, the centre only.
17981
+ *
17982
+ * Every call to the map is guarded: once the map is removed, or its container leaves the page,
17983
+ * nothing is done.
17984
+ */
17985
+ function selectionReveal(draw, root) {
17986
+ const map = draw.getMap();
17987
+ let inset = {
17988
+ top: 0,
17989
+ right: 0,
17990
+ bottom: 0,
17991
+ left: 0
17992
+ };
17993
+ let pending = false;
17994
+ let destroyed = false;
17995
+ let frame = 0;
17996
+ let timer;
17997
+ const cancel = () => {
17998
+ if (frame) cancelAnimationFrame(frame);
17999
+ frame = 0;
18000
+ if (timer !== void 0) clearTimeout(timer);
18001
+ timer = void 0;
18002
+ };
18003
+ /** Reveals in the next task */
18004
+ const soon = () => {
18005
+ cancel();
18006
+ timer = setTimeout(run, 0);
18007
+ };
18008
+ function run() {
18009
+ cancel();
18010
+ if (destroyed || !pending) return;
18011
+ pending = false;
18012
+ try {
18013
+ const container = map.getContainer();
18014
+ if (!container.isConnected) return;
18015
+ const selection = draw.selection.get();
18016
+ if (selection.type !== "feature") return;
18017
+ const box = screenBox(selection.ids.flatMap((id) => {
18018
+ const feature = draw.features.get(id);
18019
+ return feature ? [feature.geometry] : [];
18020
+ }), (lngLat) => map.project(lngLat));
18021
+ if (!box) return;
18022
+ const by = reveal(box, visibleRegion(container, root, inset));
18023
+ if (!by) return;
18024
+ const centre = map.project(map.getCenter());
18025
+ map.easeTo({ center: map.unproject([centre.x + by.x, centre.y + by.y]) });
18026
+ } catch {}
18027
+ }
18028
+ const off = draw.on("selection.changed", ({ selection }) => {
18029
+ cancel();
18030
+ pending = selection.type === "feature" && selection.ids.length > 0;
18031
+ if (!pending) return;
18032
+ frame = requestAnimationFrame(() => {
18033
+ frame = requestAnimationFrame(() => {
18034
+ frame = 0;
18035
+ soon();
18036
+ });
18037
+ });
18038
+ });
18039
+ return {
18040
+ inset(next) {
18041
+ if (destroyed) return;
18042
+ inset = { ...next };
18043
+ if (pending) soon();
18044
+ },
18045
+ destroy() {
18046
+ if (destroyed) return;
18047
+ destroyed = true;
18048
+ cancel();
18049
+ off();
18050
+ }
18051
+ };
18052
+ }
18053
+ /**
17634
18054
  * Puts the toolbar alone in an element: the tools, the delete button and the magnet that opens
17635
18055
  * the snapping settings, without the keyboard shortcuts. The bar floats at the bottom centre of `target`, which must be
17636
18056
  * positioned (the map's container, or a positioned box over the map).
@@ -17705,12 +18125,14 @@ function leftSettings(options) {
17705
18125
  }
17706
18126
  /**
17707
18127
  * Puts a component alone in an element, in a root element of the interface; `cleanup` runs once
17708
- * when it is removed
18128
+ * when it is removed. The root paints the panel's surface and declares it (data-surface), as
18129
+ * kata's Panel does around these components in the left region
17709
18130
  */
17710
18131
  function mountAlone({ target, locale, theme: themeOption }, component, props, role, cleanup) {
17711
18132
  const themeName = checkTheme(themeOption);
17712
18133
  const messages = new Box(resolveMessages(locale));
17713
18134
  const root = createRoot(target, false);
18135
+ root.dataset.surface = "";
17714
18136
  const theme = themeControl(root, themeName);
17715
18137
  applyLocale(root, messages, locale ?? "en");
17716
18138
  const view = mount(component, {