@leavepulse/ui 0.20.5 → 0.20.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/chunks/{LpAddressInput-CK6y3xZm.js → LpAddressInput-l2Znlwgc.js} +1 -1
  2. package/dist/chunks/{LpAppShell-JWrWjNdC.js → LpAppShell-D9KnS0j_.js} +2 -2
  3. package/dist/chunks/{LpConfirmDialog-ClefCHIT.js → LpConfirmDialog-gtsGL1kb.js} +1 -1
  4. package/dist/chunks/{LpDrawer-Dr1USsND.js → LpDrawer-CYVF8abJ.js} +1 -1
  5. package/dist/chunks/{LpFileTree-DcoePIZq.js → LpFileTree-BGNzXknB.js} +1 -1
  6. package/dist/chunks/{LpLogViewer-BDPbnCOU.js → LpLogViewer-DQod8kXW.js} +1 -1
  7. package/dist/chunks/{LpModal-BQvb6ekk.js → LpModal-BLOKvrJM.js} +1 -1
  8. package/dist/chunks/{LpNotificationBell-DDzQY0YA.js → LpNotificationBell-D1gdEtuI.js} +1 -1
  9. package/dist/chunks/{LpScrollArea-ZnycmmEI.js → LpScrollArea-CXy8dkTN.js} +29 -9
  10. package/dist/chunks/{LpSidebar-CC5759Mh.js → LpSidebar-BaqVlOmo.js} +2 -2
  11. package/dist/chunks/{LpSidebarNav-C0LjLp0O.js → LpSidebarNav-S1QPTGcg.js} +1 -1
  12. package/dist/chunks/{LpTable-CWS2V4JO.js → LpTable-pZmjnEti.js} +1 -1
  13. package/dist/components/LpAddressInput.vue.js +1 -1
  14. package/dist/components/LpAppShell.vue.js +1 -1
  15. package/dist/components/LpCommandPalette.vue.js +1 -1
  16. package/dist/components/LpConfirmDialog.vue.js +1 -1
  17. package/dist/components/LpDrawer.vue.js +1 -1
  18. package/dist/components/LpFileTree.vue.js +1 -1
  19. package/dist/components/LpLogViewer.vue.js +1 -1
  20. package/dist/components/LpModal.vue.js +1 -1
  21. package/dist/components/LpNotificationBell.vue.js +1 -1
  22. package/dist/components/LpScrollArea.vue.js +1 -1
  23. package/dist/components/LpSidebar.vue.js +1 -1
  24. package/dist/components/LpSidebarNav.vue.js +1 -1
  25. package/dist/components/LpTable.vue.js +1 -1
  26. package/dist/index.js +11 -11
  27. package/package.json +1 -1
  28. package/src/components/LpScrollArea.vue +37 -10
@@ -6,7 +6,7 @@ import { _ as _sfc_main$3 } from "./LpButton-5VXXCjwF.js";
6
6
  import { _ as _sfc_main$1 } from "./LpFormField-Bn-ZwC6z.js";
7
7
  import { _ as _sfc_main$4 } from "./LpIcon-CCnX5_2j.js";
8
8
  import { _ as _sfc_main$5 } from "./LpInput-BauZRyzm.js";
9
- import { _ as _sfc_main$7 } from "./LpModal-BQvb6ekk.js";
9
+ import { _ as _sfc_main$7 } from "./LpModal-BLOKvrJM.js";
10
10
  import { _ as _sfc_main$6 } from "./LpSelect-D5mU4cZO.js";
11
11
  const _hoisted_1 = { class: "flex flex-col gap-3" };
12
12
  const _hoisted_2 = { class: "flex items-stretch gap-2" };
@@ -1,8 +1,8 @@
1
1
  import { defineComponent, computed, watch, openBlock, createElementBlock, createVNode, createSlots, withCtx, renderSlot, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, toDisplayString, createCommentVNode, createBlock } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
3
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$4 } from "./LpScrollArea-ZnycmmEI.js";
5
- import { _ as _sfc_main$1 } from "./LpSidebar-CC5759Mh.js";
4
+ import { _ as _sfc_main$4 } from "./LpScrollArea-CXy8dkTN.js";
5
+ import { _ as _sfc_main$1 } from "./LpSidebar-BaqVlOmo.js";
6
6
  const _hoisted_1 = { class: "flex h-dvh overflow-hidden bg-surface text-ink" };
7
7
  const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
8
8
  const _hoisted_3 = { class: "flex h-16 shrink-0 items-center gap-3 border-b border-line bg-surface px-4 md:px-6" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createBlock, withCtx, renderSlot, createVNode, createTextVNode, toDisplayString } from "vue";
2
2
  import { _ as _sfc_main$2 } from "./LpButton-5VXXCjwF.js";
3
- import { _ as _sfc_main$1 } from "./LpModal-BQvb6ekk.js";
3
+ import { _ as _sfc_main$1 } from "./LpModal-BLOKvrJM.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpConfirmDialog",
6
6
  props: {
@@ -3,7 +3,7 @@ import { usePointerSwipe } from "@vueuse/core";
3
3
  import { DrawerRoot, DrawerPortal, DrawerOverlay, DrawerContent, DrawerHandle, DrawerTitle, DrawerDescription, DrawerClose } from "vaul-vue";
4
4
  import { CLOSE_ICON } from "../components/dropdown.js";
5
5
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
6
- import { _ as _sfc_main$2 } from "./LpScrollArea-ZnycmmEI.js";
6
+ import { _ as _sfc_main$2 } from "./LpScrollArea-CXy8dkTN.js";
7
7
  const _hoisted_1 = { class: "text-base font-semibold text-ink" };
8
8
  const _hoisted_2 = { class: "flex flex-col gap-1" };
9
9
  const _hoisted_3 = ["data-vaul-no-drag"];
@@ -2,7 +2,7 @@ import { defineComponent, ref, watch, computed, openBlock, createElementBlock, F
2
2
  import { formatSize, sortNodes, computeStats, subtreeIds, ancestorIds } from "../components/fileTree.js";
3
3
  import { _ as _sfc_main$1 } from "./LpEmptyState-CrfyRJUG.js";
4
4
  import { _ as _sfc_main$3 } from "./LpFileTreeNode-DFg4PhOK.js";
5
- import { _ as _sfc_main$2 } from "./LpScrollArea-ZnycmmEI.js";
5
+ import { _ as _sfc_main$2 } from "./LpScrollArea-CXy8dkTN.js";
6
6
  const _hoisted_1 = {
7
7
  key: 0,
8
8
  class: "flex h-full w-full min-w-0 flex-col gap-1 overflow-hidden"
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, ref, watch, nextTick, onMounted, onBeforeUnmount, openBlock, createElementBlock, createVNode, normalizeStyle, withCtx, createElementVNode, toDisplayString, createCommentVNode, Fragment, createBlock, resolveDynamicComponent, TransitionGroup, mergeProps, renderList, normalizeClass, createTextVNode, Transition } from "vue";
2
2
  import { _ as _sfc_main$3 } from "./LpContextMenu-D0mzXqA7.js";
3
3
  import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$1 } from "./LpScrollArea-ZnycmmEI.js";
4
+ import { _ as _sfc_main$1 } from "./LpScrollArea-CXy8dkTN.js";
5
5
  const _hoisted_1 = { class: "relative overflow-hidden rounded-card border border-line bg-surface font-mono text-xs leading-relaxed" };
6
6
  const _hoisted_2 = {
7
7
  key: 0,
@@ -2,7 +2,7 @@ import { defineComponent, computed, useSlots, ref, watch, onBeforeUnmount, openB
2
2
  import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose } from "reka-ui";
3
3
  import { CLOSE_ICON } from "../components/dropdown.js";
4
4
  import { _ as _sfc_main$1 } from "./LpIcon-CCnX5_2j.js";
5
- import { _ as _sfc_main$2 } from "./LpScrollArea-ZnycmmEI.js";
5
+ import { _ as _sfc_main$2 } from "./LpScrollArea-CXy8dkTN.js";
6
6
  const _hoisted_1 = { class: "fixed inset-0 z-(--z-modal) flex items-center justify-center pointer-events-none" };
7
7
  const _hoisted_2 = {
8
8
  key: 0,
@@ -5,7 +5,7 @@ import { _ as _sfc_main$4 } from "./LpContextMenu-D0mzXqA7.js";
5
5
  import { _ as _sfc_main$2 } from "./LpEmptyState-CrfyRJUG.js";
6
6
  import { _ as _sfc_main$5 } from "./LpIcon-CCnX5_2j.js";
7
7
  import { _ as _sfc_main$1 } from "./LpPopover-8268UmlC.js";
8
- import { _ as _sfc_main$3 } from "./LpScrollArea-ZnycmmEI.js";
8
+ import { _ as _sfc_main$3 } from "./LpScrollArea-CXy8dkTN.js";
9
9
  const _hoisted_1 = { class: "flex items-center justify-between gap-2 px-3 py-2.5" };
10
10
  const _hoisted_2 = { class: "text-sm font-semibold" };
11
11
  const _hoisted_3 = {
@@ -35,21 +35,41 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  if (props.fade) measureEdges(event.target);
36
36
  emit("scroll", event);
37
37
  }
38
- let edgeObserver;
38
+ let edgeResize;
39
+ let edgeMutation;
40
+ function stopEdgeWatch() {
41
+ edgeResize?.disconnect();
42
+ edgeMutation?.disconnect();
43
+ edgeResize = void 0;
44
+ edgeMutation = void 0;
45
+ }
39
46
  watch(
40
47
  [viewportEl, () => props.fade],
41
48
  ([el, enabled]) => {
42
- edgeObserver?.disconnect();
43
- edgeObserver = void 0;
44
- if (!el || !enabled || typeof ResizeObserver === "undefined") return;
45
- measureEdges(el);
46
- edgeObserver = new ResizeObserver(() => measureEdges(el));
47
- edgeObserver.observe(el);
48
- for (const child of Array.from(el.children)) edgeObserver.observe(child);
49
+ stopEdgeWatch();
50
+ if (!el || !enabled) return;
51
+ const remeasure = () => measureEdges(el);
52
+ remeasure();
53
+ if (typeof ResizeObserver !== "undefined") {
54
+ edgeResize = new ResizeObserver(remeasure);
55
+ edgeResize.observe(el);
56
+ for (const child of Array.from(el.children)) edgeResize.observe(child);
57
+ }
58
+ if (typeof MutationObserver !== "undefined") {
59
+ edgeMutation = new MutationObserver(() => {
60
+ if (edgeResize) {
61
+ edgeResize.disconnect();
62
+ edgeResize.observe(el);
63
+ for (const child of Array.from(el.children)) edgeResize.observe(child);
64
+ }
65
+ remeasure();
66
+ });
67
+ edgeMutation.observe(el, { childList: true, subtree: true });
68
+ }
49
69
  },
50
70
  { immediate: true, flush: "post" }
51
71
  );
52
- onBeforeUnmount(() => edgeObserver?.disconnect());
72
+ onBeforeUnmount(stopEdgeWatch);
53
73
  function onThumbPointerDown() {
54
74
  dragging.value = true;
55
75
  const stop = () => {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, useId, openBlock, createElementBlock, Fragment, createElementVNode, mergeProps, normalizeClass, renderSlot, createCommentVNode, createVNode, createSlots, withCtx, normalizeProps, guardReactiveProps, createBlock } from "vue";
2
- import { _ as _sfc_main$2 } from "./LpDrawer-Dr1USsND.js";
3
- import { _ as _sfc_main$1 } from "./LpSidebarNav-C0LjLp0O.js";
2
+ import { _ as _sfc_main$2 } from "./LpDrawer-CYVF8abJ.js";
3
+ import { _ as _sfc_main$1 } from "./LpSidebarNav-S1QPTGcg.js";
4
4
  const _hoisted_1 = {
5
5
  key: 1,
6
6
  class: "mt-2 flex shrink-0 flex-col gap-2"
@@ -4,7 +4,7 @@ import { usePillTransition } from "../composables/usePillTransition.js";
4
4
  import { _ as _sfc_main$4 } from "./LpBadge-CXzBPnwO.js";
5
5
  import { _ as _sfc_main$2 } from "./LpContextMenu-D0mzXqA7.js";
6
6
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
7
- import { _ as _sfc_main$1 } from "./LpScrollArea-ZnycmmEI.js";
7
+ import { _ as _sfc_main$1 } from "./LpScrollArea-CXy8dkTN.js";
8
8
  const _hoisted_1 = {
9
9
  key: 0,
10
10
  class: "flex min-h-0 flex-1 flex-col gap-4"
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, onBeforeUnmount, openBlock, crea
2
2
  import { _ as _sfc_main$2 } from "./LpCheckbox-BO0zuuPh.js";
3
3
  import { _ as _sfc_main$4 } from "./LpContextMenu-D0mzXqA7.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-CCnX5_2j.js";
5
- import { _ as _sfc_main$1 } from "./LpScrollArea-ZnycmmEI.js";
5
+ import { _ as _sfc_main$1 } from "./LpScrollArea-CXy8dkTN.js";
6
6
  const _hoisted_1 = { class: "w-full border-collapse text-sm" };
7
7
  const _hoisted_2 = { class: "border-b border-line bg-surface-soft" };
8
8
  const _hoisted_3 = {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAddressInput-CK6y3xZm.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAddressInput-l2Znlwgc.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpAppShell-JWrWjNdC.js";
1
+ import { _ as _sfc_main } from "../chunks/LpAppShell-D9KnS0j_.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, computed, watch, nextTick, onMounted, onBeforeUnmount, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, createTextVNode, createElementVNode, withDirectives, withKeys, vModelText, createElementBlock, toDisplayString, createCommentVNode, Fragment, renderList, normalizeClass } from "vue";
2
2
  import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription } from "reka-ui";
3
3
  import { _ as _sfc_main$1 } from "../chunks/LpIcon-CCnX5_2j.js";
4
- import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-ZnycmmEI.js";
4
+ import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-CXy8dkTN.js";
5
5
  import '../assets/LpCommandPalette-Cp6Y-j7g.css';const _hoisted_1 = { class: "flex shrink-0 items-center gap-2.5 border-b border-line px-4" };
6
6
  const _hoisted_2 = ["placeholder", "onKeydown"];
7
7
  const _hoisted_3 = {
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpConfirmDialog-ClefCHIT.js";
1
+ import { _ as _sfc_main } from "../chunks/LpConfirmDialog-gtsGL1kb.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpDrawer-Dr1USsND.js";
1
+ import { _ as _sfc_main } from "../chunks/LpDrawer-CYVF8abJ.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpFileTree-DcoePIZq.js";
1
+ import { _ as _sfc_main } from "../chunks/LpFileTree-BGNzXknB.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpLogViewer-BDPbnCOU.js";
1
+ import { _ as _sfc_main } from "../chunks/LpLogViewer-DQod8kXW.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpModal-BQvb6ekk.js";
1
+ import { _ as _sfc_main } from "../chunks/LpModal-BLOKvrJM.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpNotificationBell-DDzQY0YA.js";
1
+ import { _ as _sfc_main } from "../chunks/LpNotificationBell-D1gdEtuI.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpScrollArea-ZnycmmEI.js";
1
+ import { _ as _sfc_main } from "../chunks/LpScrollArea-CXy8dkTN.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebar-CC5759Mh.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebar-BaqVlOmo.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpSidebarNav-C0LjLp0O.js";
1
+ import { _ as _sfc_main } from "../chunks/LpSidebarNav-S1QPTGcg.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "../chunks/LpTable-CWS2V4JO.js";
1
+ import { _ as _sfc_main } from "../chunks/LpTable-pZmjnEti.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { _ } from "./chunks/LayoutCanvas-Dd20boUG.js";
2
- import { _ as _2 } from "./chunks/LpAddressInput-CK6y3xZm.js";
2
+ import { _ as _2 } from "./chunks/LpAddressInput-l2Znlwgc.js";
3
3
  import { _ as _3 } from "./chunks/LpMapPicker-DFKrd1Ne.js";
4
4
  import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
5
5
  import { _ as _4 } from "./chunks/LpAlert-BAYHDSS1.js";
6
- import { _ as _5 } from "./chunks/LpAppShell-JWrWjNdC.js";
6
+ import { _ as _5 } from "./chunks/LpAppShell-D9KnS0j_.js";
7
7
  import { _ as _6 } from "./chunks/LpAutocomplete-DIgXmtCA.js";
8
8
  import { _ as _7 } from "./chunks/LpAvatar-B1Ez0ZAx.js";
9
9
  import { _ as _8 } from "./chunks/LpBadge-CXzBPnwO.js";
@@ -14,15 +14,15 @@ import { _ as _12 } from "./chunks/LpCard-BmrTvWOe.js";
14
14
  import { _ as _13 } from "./chunks/LpCheckbox-BO0zuuPh.js";
15
15
  import { _ as _14 } from "./chunks/LpCodeBlock-CSiOSPs8.js";
16
16
  import { default as default2 } from "./components/LpCommandPalette.vue.js";
17
- import { _ as _15 } from "./chunks/LpConfirmDialog-ClefCHIT.js";
17
+ import { _ as _15 } from "./chunks/LpConfirmDialog-gtsGL1kb.js";
18
18
  import { _ as _16 } from "./chunks/LpContextMenu-D0mzXqA7.js";
19
19
  import { _ as _17 } from "./chunks/LpDatePicker-dY2q4dr4.js";
20
20
  import { _ as _18 } from "./chunks/LpDisclosure-DP6yfgfM.js";
21
21
  import { _ as _19 } from "./chunks/LpDivider-CUX46KR0.js";
22
- import { _ as _20 } from "./chunks/LpDrawer-Dr1USsND.js";
22
+ import { _ as _20 } from "./chunks/LpDrawer-CYVF8abJ.js";
23
23
  import { _ as _21 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
24
24
  import { _ as _22 } from "./chunks/LpEmptyState-CrfyRJUG.js";
25
- import { _ as _23 } from "./chunks/LpFileTree-DcoePIZq.js";
25
+ import { _ as _23 } from "./chunks/LpFileTree-BGNzXknB.js";
26
26
  import { ancestorIds, checkStateOf, checkedCount, computeStats, fileIcon, formatModified, formatSize, sortNodes, subtreeIds, subtreeSize } from "./components/fileTree.js";
27
27
  import { _ as _24 } from "./chunks/LpFormField-Bn-ZwC6z.js";
28
28
  import { _ as _25 } from "./chunks/LpIcon-CCnX5_2j.js";
@@ -31,9 +31,9 @@ import { _ as _27 } from "./chunks/LpInput-BauZRyzm.js";
31
31
  import { _ as _28 } from "./chunks/LpLightbox-CzhFe9wZ.js";
32
32
  import { fileNameOf } from "./components/lightbox.js";
33
33
  import { _ as _29 } from "./chunks/LpLink-DHwOEp4e.js";
34
- import { _ as _30 } from "./chunks/LpLogViewer-BDPbnCOU.js";
35
- import { _ as _31 } from "./chunks/LpModal-BQvb6ekk.js";
36
- import { _ as _32 } from "./chunks/LpNotificationBell-DDzQY0YA.js";
34
+ import { _ as _30 } from "./chunks/LpLogViewer-DQod8kXW.js";
35
+ import { _ as _31 } from "./chunks/LpModal-BLOKvrJM.js";
36
+ import { _ as _32 } from "./chunks/LpNotificationBell-D1gdEtuI.js";
37
37
  import { _ as _33 } from "./chunks/LpNumberField-C5ar-OwE.js";
38
38
  import { _ as _34 } from "./chunks/LpOtpInput-DqaT0Z75.js";
39
39
  import { _ as _35 } from "./chunks/LpPagination-CeGuNe_q.js";
@@ -44,17 +44,17 @@ import { _ as _38 } from "./chunks/LpPopover-8268UmlC.js";
44
44
  import { _ as _39 } from "./chunks/LpProgress-BhI0IbjC.js";
45
45
  import { _ as _40 } from "./chunks/LpRadio-CL-pI0_O.js";
46
46
  import { _ as _41 } from "./chunks/LpRadioGroup-B4yDTmi6.js";
47
- import { _ as _42 } from "./chunks/LpScrollArea-ZnycmmEI.js";
47
+ import { _ as _42 } from "./chunks/LpScrollArea-CXy8dkTN.js";
48
48
  import { _ as _43 } from "./chunks/LpSegmented-BmpanyAo.js";
49
49
  import { _ as _44 } from "./chunks/LpSelect-D5mU4cZO.js";
50
50
  import { _ as _45 } from "./chunks/LpServiceNode-Dc-Ut5RS.js";
51
- import { _ as _46 } from "./chunks/LpSidebar-CC5759Mh.js";
51
+ import { _ as _46 } from "./chunks/LpSidebar-BaqVlOmo.js";
52
52
  import { _ as _47 } from "./chunks/LpSkeleton-eSFIo4kD.js";
53
53
  import { _ as _48 } from "./chunks/LpSlider-B1SF3pRV.js";
54
54
  import { _ as _49 } from "./chunks/LpStat-CdbEFOvn.js";
55
55
  import { _ as _50 } from "./chunks/LpStepper-5dFTrW21.js";
56
56
  import { _ as _51 } from "./chunks/LpSwitch-v6fnccSM.js";
57
- import { _ as _52 } from "./chunks/LpTable-CWS2V4JO.js";
57
+ import { _ as _52 } from "./chunks/LpTable-pZmjnEti.js";
58
58
  import { _ as _53 } from "./chunks/LpTableOfContents-CjvxPMpU.js";
59
59
  import { _ as _54 } from "./chunks/LpTabs-D7aTVPOb.js";
60
60
  import { _ as _55 } from "./chunks/LpTextarea-CRAkhemZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leavepulse/ui",
3
- "version": "0.20.5",
3
+ "version": "0.20.6",
4
4
  "type": "module",
5
5
  "description": "LeavePulse token-driven Vue component kit.",
6
6
  "repository": {
@@ -101,24 +101,51 @@ function onViewportScroll(event: Event) {
101
101
  // that fills in, a panel that resizes, or content short enough to need no fade
102
102
  // at all never fire a scroll event. Watched only when `fade` is on, since
103
103
  // nothing else here depends on the measurements.
104
- let edgeObserver: ResizeObserver | undefined
104
+ let edgeResize: ResizeObserver | undefined
105
+ let edgeMutation: MutationObserver | undefined
106
+
107
+ function stopEdgeWatch() {
108
+ edgeResize?.disconnect()
109
+ edgeMutation?.disconnect()
110
+ edgeResize = undefined
111
+ edgeMutation = undefined
112
+ }
105
113
 
106
114
  watch(
107
115
  [viewportEl, () => props.fade],
108
116
  ([el, enabled]) => {
109
- edgeObserver?.disconnect()
110
- edgeObserver = undefined
111
- if (!el || !enabled || typeof ResizeObserver === "undefined") return
112
- measureEdges(el)
113
- edgeObserver = new ResizeObserver(() => measureEdges(el))
114
- edgeObserver.observe(el)
115
- // The content box grows independently of the viewport's own size.
116
- for (const child of Array.from(el.children)) edgeObserver.observe(child)
117
+ stopEdgeWatch()
118
+ if (!el || !enabled) return
119
+
120
+ const remeasure = () => measureEdges(el)
121
+ remeasure()
122
+
123
+ if (typeof ResizeObserver !== "undefined") {
124
+ edgeResize = new ResizeObserver(remeasure)
125
+ edgeResize.observe(el)
126
+ // Watching the children too, since a grid that reflows into more rows
127
+ // grows the content box without the viewport's own size moving.
128
+ for (const child of Array.from(el.children)) edgeResize.observe(child)
129
+ }
130
+ // Rows arriving after the first paint are the common case — a list waiting
131
+ // on a query renders empty, and observing only the boxes that existed then
132
+ // left the fade off until something else happened to trigger a measure.
133
+ if (typeof MutationObserver !== "undefined") {
134
+ edgeMutation = new MutationObserver(() => {
135
+ if (edgeResize) {
136
+ edgeResize.disconnect()
137
+ edgeResize.observe(el)
138
+ for (const child of Array.from(el.children)) edgeResize.observe(child)
139
+ }
140
+ remeasure()
141
+ })
142
+ edgeMutation.observe(el, { childList: true, subtree: true })
143
+ }
117
144
  },
118
145
  { immediate: true, flush: "post" },
119
146
  )
120
147
 
121
- onBeforeUnmount(() => edgeObserver?.disconnect())
148
+ onBeforeUnmount(stopEdgeWatch)
122
149
 
123
150
  function onThumbPointerDown() {
124
151
  dragging.value = true