@leavepulse/ui 0.14.4 → 0.14.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.
- package/dist/chunks/{LpAppShell-C22642JK.js → LpAppShell-DBTsNQaM.js} +2 -2
- package/dist/chunks/{LpConfirmDialog-CnHtHWHm.js → LpConfirmDialog-KLtTtCiT.js} +1 -1
- package/dist/chunks/{LpDrawer-CBNVhkg0.js → LpDrawer-Ce6g9ZMr.js} +1 -1
- package/dist/chunks/{LpLogViewer-CDBjhXl6.js → LpLogViewer-hC0OKkeE.js} +16 -3
- package/dist/chunks/{LpModal-D17Bocq7.js → LpModal-CWoOExzT.js} +1 -1
- package/dist/chunks/{LpNotificationBell-Bm51SkgV.js → LpNotificationBell-BDy0tQwr.js} +1 -1
- package/dist/chunks/{LpScrollArea-CcHul_XS.js → LpScrollArea-K1x-azgY.js} +22 -22
- package/dist/chunks/{LpSidebar-CTUdtX7W.js → LpSidebar-BPQabjae.js} +2 -2
- package/dist/chunks/{LpSidebarNav-BRwovIc8.js → LpSidebarNav-CpF7rZxx.js} +1 -1
- package/dist/chunks/{LpTable-PHE6UKor.js → LpTable-CJ4Zt1UH.js} +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +1 -1
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpScrollArea.vue.d.ts +2 -2
- package/dist/components/LpScrollArea.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpTable.vue.js +1 -1
- package/dist/index.js +9 -9
- package/package.json +1 -1
- package/src/components/LpLogViewer.vue +24 -5
- package/src/components/LpScrollArea.vue +20 -15
|
@@ -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-
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpSidebar-
|
|
4
|
+
import { _ as _sfc_main$4 } from "./LpScrollArea-K1x-azgY.js";
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpSidebar-BPQabjae.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-
|
|
3
|
+
import { _ as _sfc_main$1 } from "./LpModal-CWoOExzT.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-
|
|
6
|
+
import { _ as _sfc_main$2 } from "./LpScrollArea-K1x-azgY.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"];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent, computed, ref, watch, nextTick, onMounted, openBlock, createElementBlock, createVNode, normalizeStyle, withCtx, createElementVNode, toDisplayString, createCommentVNode, Fragment, createBlock, resolveDynamicComponent, TransitionGroup, mergeProps, renderList, normalizeClass, createTextVNode, Transition } from "vue";
|
|
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-
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.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,
|
|
@@ -322,9 +322,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
322
322
|
}
|
|
323
323
|
);
|
|
324
324
|
const showJump = computed(() => props.tail && !pinned.value && props.lines.length > 0);
|
|
325
|
-
|
|
325
|
+
let viewportResize = null;
|
|
326
|
+
function measureViewport() {
|
|
326
327
|
const el = viewport();
|
|
327
328
|
if (el) viewportHeight.value = el.clientHeight;
|
|
329
|
+
}
|
|
330
|
+
onMounted(() => {
|
|
331
|
+
measureViewport();
|
|
332
|
+
const el = viewport();
|
|
333
|
+
if (el && typeof ResizeObserver !== "undefined") {
|
|
334
|
+
viewportResize = new ResizeObserver(measureViewport);
|
|
335
|
+
viewportResize.observe(el);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
onBeforeUnmount(() => {
|
|
339
|
+
viewportResize?.disconnect();
|
|
340
|
+
viewportResize = null;
|
|
328
341
|
});
|
|
329
342
|
const transitionProps = {
|
|
330
343
|
tag: "ol",
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, useSlots, openBlock, createBlock, unref, wit
|
|
|
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-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpScrollArea-K1x-azgY.js";
|
|
6
6
|
const _hoisted_1 = {
|
|
7
7
|
key: 0,
|
|
8
8
|
class: "flex shrink-0 items-start justify-between gap-4 p-5 pb-3"
|
|
@@ -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-
|
|
8
|
+
import { _ as _sfc_main$3 } from "./LpScrollArea-K1x-azgY.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 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent, ref, computed, openBlock, createBlock, unref, withCtx, createVNode, normalizeClass, createElementVNode, renderSlot
|
|
2
|
-
import { ScrollAreaRoot,
|
|
1
|
+
import { defineComponent, ref, computed, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, createElementVNode, renderSlot } from "vue";
|
|
2
|
+
import { ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport } from "reka-ui";
|
|
3
3
|
const barFade = "data-[state=visible]:animate-[fade-in_180ms_ease] data-[state=hidden]:animate-[fade-out_240ms_ease]";
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
__name: "LpScrollArea",
|
|
@@ -22,40 +22,40 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
22
22
|
"scroll-hide-delay": 500
|
|
23
23
|
}, {
|
|
24
24
|
default: withCtx(() => [
|
|
25
|
-
createVNode(unref(ScrollAreaViewport), {
|
|
26
|
-
ref_key: "viewportRef",
|
|
27
|
-
ref: viewportRef,
|
|
28
|
-
class: normalizeClass(["size-full min-w-0 [&>div]:!block [&>div]:!min-w-0", __props.fade ? "[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]" : ""]),
|
|
29
|
-
onScrollPassive: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("scroll", $event))
|
|
30
|
-
}, {
|
|
31
|
-
default: withCtx(() => [
|
|
32
|
-
createElementVNode("div", {
|
|
33
|
-
class: normalizeClass(__props.contentClass)
|
|
34
|
-
}, [
|
|
35
|
-
renderSlot(_ctx.$slots, "default")
|
|
36
|
-
], 2)
|
|
37
|
-
]),
|
|
38
|
-
_: 3
|
|
39
|
-
}, 8, ["class"]),
|
|
40
25
|
createVNode(unref(ScrollAreaScrollbar), {
|
|
41
26
|
orientation: "vertical",
|
|
42
|
-
class: normalizeClass(["group flex w-
|
|
27
|
+
class: normalizeClass(["group flex w-3.5 touch-none select-none justify-end py-px pl-2.5 pr-px", barFade]),
|
|
43
28
|
style: normalizeStyle(__props.barInsetTop ? { marginTop: __props.barInsetTop } : void 0)
|
|
44
29
|
}, {
|
|
45
30
|
default: withCtx(() => [
|
|
46
|
-
createVNode(unref(ScrollAreaThumb), { class: "
|
|
31
|
+
createVNode(unref(ScrollAreaThumb), { class: "w-1 rounded-l-pill bg-brand/40 transition-[width,background-color] duration-[var(--duration-fast)] group-hover:w-1.5 group-hover:bg-brand" })
|
|
47
32
|
]),
|
|
48
33
|
_: 1
|
|
49
34
|
}, 8, ["style"]),
|
|
50
35
|
createVNode(unref(ScrollAreaScrollbar), {
|
|
51
36
|
orientation: "horizontal",
|
|
52
|
-
class: normalizeClass(["group flex h-
|
|
37
|
+
class: normalizeClass(["group flex h-3.5 flex-col touch-none select-none justify-end px-px pb-px pt-2.5", barFade])
|
|
53
38
|
}, {
|
|
54
39
|
default: withCtx(() => [
|
|
55
|
-
createVNode(unref(ScrollAreaThumb), { class: "
|
|
40
|
+
createVNode(unref(ScrollAreaThumb), { class: "h-1 rounded-t-pill bg-brand/40 transition-[height,background-color] duration-[var(--duration-fast)] group-hover:h-1.5 group-hover:bg-brand" })
|
|
56
41
|
]),
|
|
57
42
|
_: 1
|
|
58
|
-
})
|
|
43
|
+
}),
|
|
44
|
+
createVNode(unref(ScrollAreaViewport), {
|
|
45
|
+
ref_key: "viewportRef",
|
|
46
|
+
ref: viewportRef,
|
|
47
|
+
class: normalizeClass(["size-full min-w-0 [&>div]:!block [&>div]:!min-w-0", __props.fade ? "[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]" : ""]),
|
|
48
|
+
onScrollPassive: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("scroll", $event))
|
|
49
|
+
}, {
|
|
50
|
+
default: withCtx(() => [
|
|
51
|
+
createElementVNode("div", {
|
|
52
|
+
class: normalizeClass(__props.contentClass)
|
|
53
|
+
}, [
|
|
54
|
+
renderSlot(_ctx.$slots, "default")
|
|
55
|
+
], 2)
|
|
56
|
+
]),
|
|
57
|
+
_: 3
|
|
58
|
+
}, 8, ["class"])
|
|
59
59
|
]),
|
|
60
60
|
_: 3
|
|
61
61
|
});
|
|
@@ -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-
|
|
3
|
-
import { _ as _sfc_main$1 } from "./LpSidebarNav-
|
|
2
|
+
import { _ as _sfc_main$2 } from "./LpDrawer-Ce6g9ZMr.js";
|
|
3
|
+
import { _ as _sfc_main$1 } from "./LpSidebarNav-CpF7rZxx.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-
|
|
7
|
+
import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.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-
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpScrollArea-K1x-azgY.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,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-
|
|
4
|
+
import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-K1x-azgY.js";
|
|
5
5
|
import '../assets/LpCommandPalette-D315B47-.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 = {
|
|
@@ -3,9 +3,9 @@ type __VLS_Props = {
|
|
|
3
3
|
contentClass?: string;
|
|
4
4
|
barInsetTop?: string;
|
|
5
5
|
};
|
|
6
|
-
declare var
|
|
6
|
+
declare var __VLS_40: {};
|
|
7
7
|
type __VLS_Slots = {} & {
|
|
8
|
-
default?: (props: typeof
|
|
8
|
+
default?: (props: typeof __VLS_40) => any;
|
|
9
9
|
};
|
|
10
10
|
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
11
11
|
viewportEl: import('vue').ComputedRef<HTMLElement | null>;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _ } from "./chunks/LayoutCanvas-Dd20boUG.js";
|
|
2
2
|
import { _ as _2 } from "./chunks/LpAlert-BAYHDSS1.js";
|
|
3
|
-
import { _ as _3 } from "./chunks/LpAppShell-
|
|
3
|
+
import { _ as _3 } from "./chunks/LpAppShell-DBTsNQaM.js";
|
|
4
4
|
import { _ as _4 } from "./chunks/LpAutocomplete-B9uoCs4t.js";
|
|
5
5
|
import { _ as _5 } from "./chunks/LpAvatar-B1Ez0ZAx.js";
|
|
6
6
|
import { _ as _6 } from "./chunks/LpBadge-CXzBPnwO.js";
|
|
@@ -11,12 +11,12 @@ import { _ as _10 } from "./chunks/LpCard-1yvWT9fx.js";
|
|
|
11
11
|
import { _ as _11 } from "./chunks/LpCheckbox-BO0zuuPh.js";
|
|
12
12
|
import { _ as _12 } from "./chunks/LpCodeBlock-CSiOSPs8.js";
|
|
13
13
|
import { default as default2 } from "./components/LpCommandPalette.vue.js";
|
|
14
|
-
import { _ as _13 } from "./chunks/LpConfirmDialog-
|
|
14
|
+
import { _ as _13 } from "./chunks/LpConfirmDialog-KLtTtCiT.js";
|
|
15
15
|
import { _ as _14 } from "./chunks/LpContextMenu-D0mzXqA7.js";
|
|
16
16
|
import { _ as _15 } from "./chunks/LpDatePicker-dY2q4dr4.js";
|
|
17
17
|
import { _ as _16 } from "./chunks/LpDisclosure-DP6yfgfM.js";
|
|
18
18
|
import { _ as _17 } from "./chunks/LpDivider-CUX46KR0.js";
|
|
19
|
-
import { _ as _18 } from "./chunks/LpDrawer-
|
|
19
|
+
import { _ as _18 } from "./chunks/LpDrawer-Ce6g9ZMr.js";
|
|
20
20
|
import { _ as _19 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
|
|
21
21
|
import { _ as _20 } from "./chunks/LpEmptyState-CrfyRJUG.js";
|
|
22
22
|
import { _ as _21 } from "./chunks/LpFormField-Bn-ZwC6z.js";
|
|
@@ -24,9 +24,9 @@ import { _ as _22 } from "./chunks/LpIcon-CCnX5_2j.js";
|
|
|
24
24
|
import { _ as _23 } from "./chunks/LpInfraNode-C_PHcthC.js";
|
|
25
25
|
import { _ as _24 } from "./chunks/LpInput-BauZRyzm.js";
|
|
26
26
|
import { _ as _25 } from "./chunks/LpLink-DHwOEp4e.js";
|
|
27
|
-
import { _ as _26 } from "./chunks/LpLogViewer-
|
|
28
|
-
import { _ as _27 } from "./chunks/LpModal-
|
|
29
|
-
import { _ as _28 } from "./chunks/LpNotificationBell-
|
|
27
|
+
import { _ as _26 } from "./chunks/LpLogViewer-hC0OKkeE.js";
|
|
28
|
+
import { _ as _27 } from "./chunks/LpModal-CWoOExzT.js";
|
|
29
|
+
import { _ as _28 } from "./chunks/LpNotificationBell-BDy0tQwr.js";
|
|
30
30
|
import { _ as _29 } from "./chunks/LpNumberField-C5ar-OwE.js";
|
|
31
31
|
import { _ as _30 } from "./chunks/LpOtpInput-DqaT0Z75.js";
|
|
32
32
|
import { _ as _31 } from "./chunks/LpPagination-CeGuNe_q.js";
|
|
@@ -37,17 +37,17 @@ import { _ as _34 } from "./chunks/LpPopover-8268UmlC.js";
|
|
|
37
37
|
import { _ as _35 } from "./chunks/LpProgress-BhI0IbjC.js";
|
|
38
38
|
import { _ as _36 } from "./chunks/LpRadio-CL-pI0_O.js";
|
|
39
39
|
import { _ as _37 } from "./chunks/LpRadioGroup-B4yDTmi6.js";
|
|
40
|
-
import { _ as _38 } from "./chunks/LpScrollArea-
|
|
40
|
+
import { _ as _38 } from "./chunks/LpScrollArea-K1x-azgY.js";
|
|
41
41
|
import { _ as _39 } from "./chunks/LpSegmented-BmpanyAo.js";
|
|
42
42
|
import { _ as _40 } from "./chunks/LpSelect-DznhPEWX.js";
|
|
43
43
|
import { _ as _41 } from "./chunks/LpServiceNode-Dc-Ut5RS.js";
|
|
44
|
-
import { _ as _42 } from "./chunks/LpSidebar-
|
|
44
|
+
import { _ as _42 } from "./chunks/LpSidebar-BPQabjae.js";
|
|
45
45
|
import { _ as _43 } from "./chunks/LpSkeleton-eSFIo4kD.js";
|
|
46
46
|
import { _ as _44 } from "./chunks/LpSlider-B1SF3pRV.js";
|
|
47
47
|
import { _ as _45 } from "./chunks/LpStat-CdbEFOvn.js";
|
|
48
48
|
import { _ as _46 } from "./chunks/LpStepper-5dFTrW21.js";
|
|
49
49
|
import { _ as _47 } from "./chunks/LpSwitch-v6fnccSM.js";
|
|
50
|
-
import { _ as _48 } from "./chunks/LpTable-
|
|
50
|
+
import { _ as _48 } from "./chunks/LpTable-CJ4Zt1UH.js";
|
|
51
51
|
import { _ as _49 } from "./chunks/LpTableOfContents-CjvxPMpU.js";
|
|
52
52
|
import { _ as _50 } from "./chunks/LpTabs-D7aTVPOb.js";
|
|
53
53
|
import { _ as _51 } from "./chunks/LpTextarea-CRAkhemZ.js";
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* viewport element and re-emits the native scroll event — exactly what tailing
|
|
8
8
|
* needs.
|
|
9
9
|
*/
|
|
10
|
-
import { computed, nextTick, onMounted, ref, TransitionGroup, watch } from "vue"
|
|
10
|
+
import { computed, nextTick, onBeforeUnmount, onMounted, ref, TransitionGroup, watch } from "vue"
|
|
11
11
|
import LpContextMenu, { type ContextMenuItemDef } from "./LpContextMenu.vue"
|
|
12
12
|
import LpIcon from "./LpIcon.vue"
|
|
13
13
|
import LpScrollArea from "./LpScrollArea.vue"
|
|
@@ -505,12 +505,31 @@ watch(
|
|
|
505
505
|
|
|
506
506
|
const showJump = computed(() => props.tail && !pinned.value && props.lines.length > 0)
|
|
507
507
|
|
|
508
|
-
//
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
|
|
508
|
+
// Track the viewport height for the whole lifetime, not just at mount. Reading
|
|
509
|
+
// it once was a deadlock when the viewer mounted inside a container that had no
|
|
510
|
+
// height yet (a drawer mid open-animation, a hidden tab): the virtual window
|
|
511
|
+
// collapsed to a single row, so there was nothing to scroll, and `onScroll` —
|
|
512
|
+
// the only other place that refreshed the height — could never fire to correct
|
|
513
|
+
// it. The list looked stuck and wouldn't scroll at all.
|
|
514
|
+
let viewportResize: ResizeObserver | null = null
|
|
515
|
+
|
|
516
|
+
function measureViewport() {
|
|
512
517
|
const el = viewport()
|
|
513
518
|
if (el) viewportHeight.value = el.clientHeight
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
onMounted(() => {
|
|
522
|
+
measureViewport()
|
|
523
|
+
const el = viewport()
|
|
524
|
+
if (el && typeof ResizeObserver !== "undefined") {
|
|
525
|
+
viewportResize = new ResizeObserver(measureViewport)
|
|
526
|
+
viewportResize.observe(el)
|
|
527
|
+
}
|
|
528
|
+
})
|
|
529
|
+
|
|
530
|
+
onBeforeUnmount(() => {
|
|
531
|
+
viewportResize?.disconnect()
|
|
532
|
+
viewportResize = null
|
|
514
533
|
})
|
|
515
534
|
|
|
516
535
|
// FLIP / enter / leave classes for the full-render TransitionGroup, bound via
|
|
@@ -47,36 +47,41 @@ const barFade =
|
|
|
47
47
|
|
|
48
48
|
<template>
|
|
49
49
|
<ScrollAreaRoot class="relative overflow-hidden" type="hover" :scroll-hide-delay="500">
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
>
|
|
56
|
-
<div :class="contentClass">
|
|
57
|
-
<slot />
|
|
58
|
-
</div>
|
|
59
|
-
</ScrollAreaViewport>
|
|
60
|
-
|
|
50
|
+
<!-- The bar itself is a pointer target far wider than it looks: the visible
|
|
51
|
+
rail is the thumb, sized below, while the track pads it out to a
|
|
52
|
+
grabbable strip. A 4px-wide hit area is near-impossible to catch with a
|
|
53
|
+
mouse. Padding (not width) carries the extra room so the thumb stays
|
|
54
|
+
flush against the wall. -->
|
|
61
55
|
<ScrollAreaScrollbar
|
|
62
56
|
orientation="vertical"
|
|
63
|
-
class="group flex w-
|
|
57
|
+
class="group flex w-3.5 touch-none select-none justify-end py-px pl-2.5 pr-px"
|
|
64
58
|
:class="barFade"
|
|
65
59
|
:style="barInsetTop ? { marginTop: barInsetTop } : undefined"
|
|
66
60
|
>
|
|
67
61
|
<ScrollAreaThumb
|
|
68
|
-
class="
|
|
62
|
+
class="w-1 rounded-l-pill bg-brand/40 transition-[width,background-color] duration-[var(--duration-fast)] group-hover:w-1.5 group-hover:bg-brand"
|
|
69
63
|
/>
|
|
70
64
|
</ScrollAreaScrollbar>
|
|
71
65
|
|
|
72
66
|
<ScrollAreaScrollbar
|
|
73
67
|
orientation="horizontal"
|
|
74
|
-
class="group flex h-
|
|
68
|
+
class="group flex h-3.5 flex-col touch-none select-none justify-end px-px pb-px pt-2.5"
|
|
75
69
|
:class="barFade"
|
|
76
70
|
>
|
|
77
71
|
<ScrollAreaThumb
|
|
78
|
-
class="
|
|
72
|
+
class="h-1 rounded-t-pill bg-brand/40 transition-[height,background-color] duration-[var(--duration-fast)] group-hover:h-1.5 group-hover:bg-brand"
|
|
79
73
|
/>
|
|
80
74
|
</ScrollAreaScrollbar>
|
|
75
|
+
|
|
76
|
+
<ScrollAreaViewport
|
|
77
|
+
ref="viewportRef"
|
|
78
|
+
class="size-full min-w-0 [&>div]:!block [&>div]:!min-w-0"
|
|
79
|
+
:class="fade ? '[mask-image:linear-gradient(to_bottom,transparent_0,black_14px,black_calc(100%-14px),transparent_100%)]' : ''"
|
|
80
|
+
@scroll.passive="$emit('scroll', $event)"
|
|
81
|
+
>
|
|
82
|
+
<div :class="contentClass">
|
|
83
|
+
<slot />
|
|
84
|
+
</div>
|
|
85
|
+
</ScrollAreaViewport>
|
|
81
86
|
</ScrollAreaRoot>
|
|
82
87
|
</template>
|