@leavepulse/ui 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/assets/{LpTable-DxnthVz4.css → LpTable-BJjNEvgJ.css} +57 -30
  2. package/dist/assets/LpTabs-7yQjX2ih.css +18 -0
  3. package/dist/chunks/{LpAddressInput-BCqR0zmv.js → LpAddressInput-C5VIgRp0.js} +1 -1
  4. package/dist/chunks/{LpAppShell-xEBmGV78.js → LpAppShell-C4b3ySa_.js} +3 -3
  5. package/dist/chunks/{LpCodeBlock-BgWcg2mk.js → LpCodeBlock-DTU40x8P.js} +1 -1
  6. package/dist/chunks/{LpCodeDisplay-DBi1YPLp.js → LpCodeDisplay-F2hjLb0X.js} +2 -2
  7. package/dist/chunks/{LpConfirmDialog-y6k0ryWR.js → LpConfirmDialog-DrHcIxRn.js} +1 -1
  8. package/dist/chunks/{LpConfirmHost-D-X0tDym.js → LpConfirmHost-D0Cd8FA_.js} +1 -1
  9. package/dist/chunks/{LpCopyButton-BGzw95Xc.js → LpCopyButton-CiqUS4SX.js} +1 -1
  10. package/dist/chunks/{LpDataList-B56Gu6Yt.js → LpDataList-Cit9fOSp.js} +2 -2
  11. package/dist/chunks/{LpDrawer-BkWjFdV0.js → LpDrawer-BHlqi62K.js} +1 -1
  12. package/dist/chunks/{LpFileTree-BN_zybBN.js → LpFileTree-gVjF_b6r.js} +1 -1
  13. package/dist/chunks/{LpInspector-oTfkOdYd.js → LpInspector-DSL1lINx.js} +2 -2
  14. package/dist/chunks/{LpLightbox-DPgz7IsT.js → LpLightbox--EwvQGe-.js} +1 -1
  15. package/dist/chunks/{LpLogViewer-BuIzr_6h.js → LpLogViewer-DSq9e8mT.js} +1 -1
  16. package/dist/chunks/{LpMediaGallery-CTejKF2-.js → LpMediaGallery-DlYJf3DS.js} +1 -1
  17. package/dist/chunks/{LpModal-D1E7rQzw.js → LpModal-COMHrBKL.js} +1 -1
  18. package/dist/chunks/{LpModalNav-DVXAF-DG.js → LpModalNav-Cj02cfhL.js} +2 -2
  19. package/dist/chunks/{LpNotificationBell-KRgdRZs-.js → LpNotificationBell-DNGijtmW.js} +1 -1
  20. package/dist/chunks/{LpNotificationFeed-CMGYU8c-.js → LpNotificationFeed-BoovbtfL.js} +3 -3
  21. package/dist/chunks/{LpPageScrollbar-C9sTeU-2.js → LpPageScrollbar-BniFeL2U.js} +5 -1
  22. package/dist/chunks/{LpPaletteTheme-CLwO-SDf.js → LpPaletteTheme-_FwkJO2o.js} +1 -1
  23. package/dist/chunks/{LpPasswordInput-LPVI7D3v.js → LpPasswordInput-BBDz2zyU.js} +1 -1
  24. package/dist/chunks/{LpPie-CsiBXe-e.js → LpPie-CtC4XdhC.js} +1 -1
  25. package/dist/chunks/{LpPipeline-DVcoSs--.js → LpPipeline-aCALaUY8.js} +1 -1
  26. package/dist/chunks/{LpRelativeTime-CN5bWD73.js → LpRelativeTime-9MHlbq6F.js} +1 -1
  27. package/dist/chunks/{LpScrollArea-CqvwfZs2.js → LpScrollArea-B_1KZOSS.js} +11 -1
  28. package/dist/chunks/{LpSecretField-BwrZ4TfT.js → LpSecretField-C9vwMFQ6.js} +4 -4
  29. package/dist/chunks/{LpSidebar-BIhusppV.js → LpSidebar-DPri9uyz.js} +4 -4
  30. package/dist/chunks/{LpSidebarNav-CFcI7--7.js → LpSidebarNav-CV1rU6La.js} +34 -20
  31. package/dist/chunks/{LpThemeStudio-BPPctXgd.js → LpThemeStudio-yiEdFJQL.js} +1 -1
  32. package/dist/chunks/{LpThemeSwitcher-B3c44xFH.js → LpThemeSwitcher-DKkCFaFk.js} +1 -1
  33. package/dist/chunks/{LpToaster-Cdx1tnHB.js → LpToaster-C7hHkGOA.js} +1 -1
  34. package/dist/chunks/LpTooltip-Bt1ZFViJ.js +333 -0
  35. package/dist/chunks/{LpTruncate-C_C8eiIE.js → LpTruncate-DEHWL1OA.js} +2 -2
  36. package/dist/chunks/{LpUptimeBar-Dt6SY_-m.js → LpUptimeBar-CXgzU5ym.js} +1 -1
  37. package/dist/chunks/{LpWorkspaceSwitcher-DCIiOQt_.js → LpWorkspaceSwitcher-CrUVSI7x.js} +1 -1
  38. package/dist/chunks/{RevealToggle-BsYxY6Oz.js → RevealToggle-D9Vs88kM.js} +1 -1
  39. package/dist/components/LpAddressInput.vue.js +1 -1
  40. package/dist/components/LpAppShell.vue.js +1 -1
  41. package/dist/components/LpCodeBlock.vue.js +1 -1
  42. package/dist/components/LpCodeDisplay.vue.js +1 -1
  43. package/dist/components/LpCommandPalette.vue.js +1 -1
  44. package/dist/components/LpConfirmDialog.vue.js +1 -1
  45. package/dist/components/LpConfirmHost.vue.js +1 -1
  46. package/dist/components/LpCopyButton.vue.js +1 -1
  47. package/dist/components/LpDataList.vue.js +1 -1
  48. package/dist/components/LpDock.vue.js +1 -1
  49. package/dist/components/LpDrawer.vue.js +1 -1
  50. package/dist/components/LpFileTree.vue.js +1 -1
  51. package/dist/components/LpInspector.vue.js +1 -1
  52. package/dist/components/LpLightbox.vue.js +1 -1
  53. package/dist/components/LpLogViewer.vue.js +1 -1
  54. package/dist/components/LpMediaGallery.vue.js +1 -1
  55. package/dist/components/LpModal.vue.js +1 -1
  56. package/dist/components/LpModalNav.vue.js +1 -1
  57. package/dist/components/LpNotificationBell.vue.js +1 -1
  58. package/dist/components/LpNotificationFeed.vue.js +1 -1
  59. package/dist/components/LpPageScrollbar.vue.js +1 -1
  60. package/dist/components/LpPaletteTheme.vue.js +1 -1
  61. package/dist/components/LpPasswordInput.vue.js +1 -1
  62. package/dist/components/LpPie.vue.js +1 -1
  63. package/dist/components/LpPipeline.vue.js +1 -1
  64. package/dist/components/LpRelativeTime.vue.js +1 -1
  65. package/dist/components/LpScrollArea.vue.js +1 -1
  66. package/dist/components/LpSecretField.vue.js +1 -1
  67. package/dist/components/LpShortcutsDialog.vue.js +1 -1
  68. package/dist/components/LpSidebar.vue.js +1 -1
  69. package/dist/components/LpSidebarNav.vue.js +1 -1
  70. package/dist/components/LpTable.vue.js +38 -12
  71. package/dist/components/LpTabs.vue.js +11 -6
  72. package/dist/components/LpThemeStudio.vue.js +1 -1
  73. package/dist/components/LpThemeSwitcher.vue.js +1 -1
  74. package/dist/components/LpToaster.vue.js +1 -1
  75. package/dist/components/LpTooltip.vue.d.ts +3 -3
  76. package/dist/components/LpTooltip.vue.js +1 -1
  77. package/dist/components/LpTruncate.vue.js +1 -1
  78. package/dist/components/LpUptimeBar.vue.js +1 -1
  79. package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
  80. package/dist/components/RevealToggle.vue.js +1 -1
  81. package/dist/components/tableFeatures.d.ts +1 -0
  82. package/dist/components/tableFeatures.js +25 -0
  83. package/dist/composables/useShift.js +28 -11
  84. package/dist/index.js +34 -34
  85. package/package.json +1 -1
  86. package/src/components/LpPageScrollbar.vue +14 -1
  87. package/src/components/LpScrollArea.vue +18 -1
  88. package/src/components/LpSidebar.vue +1 -1
  89. package/src/components/LpSidebarNav.vue +18 -8
  90. package/src/components/LpTable.vue +76 -4
  91. package/src/components/LpTabs.vue +14 -5
  92. package/src/components/LpTooltip.vue +153 -14
  93. package/src/components/tableFeatures.ts +36 -0
  94. package/src/composables/useShift.ts +45 -15
  95. package/dist/assets/LpTabs-D7EyG21l.css +0 -18
  96. package/dist/chunks/LpTooltip-BKde8Xjv.js +0 -230
@@ -6,28 +6,28 @@
6
6
  * outside and only the dots between facts are seen. A cell whose slot drew
7
7
  * nothing (a v-if that failed, an empty value) is left out, dot and all.
8
8
  */
9
- .lp-line[data-v-a346ca36] {
9
+ .lp-line[data-v-a366adee] {
10
10
  --lp-line-sep: 1rem;
11
11
  }
12
- .lp-line-row[data-v-a346ca36] {
12
+ .lp-line-row[data-v-a366adee] {
13
13
  margin-left: calc(-1 * var(--lp-line-sep));
14
14
  }
15
15
 
16
16
  /* The dot lives in the field's own left padding, so whatever the cell draws,
17
17
  a word or a block of two lines, starts after it and never in the clipped
18
18
  strip. */
19
- .lp-line-field[data-v-a346ca36] {
19
+ .lp-line-field[data-v-a366adee] {
20
20
  position: relative;
21
21
  padding-left: var(--lp-line-sep);
22
22
  }
23
- .lp-line-field[data-v-a346ca36]::before {
23
+ .lp-line-field[data-v-a366adee]::before {
24
24
  content: "·" / "";
25
25
  position: absolute;
26
26
  left: 0;
27
27
  width: var(--lp-line-sep);
28
28
  text-align: center;
29
29
  }
30
- .lp-line-field[data-v-a346ca36]:has(> .lp-line-value:empty) {
30
+ .lp-line-field[data-v-a366adee]:has(> .lp-line-value:empty) {
31
31
  display: none;
32
32
  }
33
33
 
@@ -43,17 +43,41 @@
43
43
  * fade before closing the gap and the whole list lurches at the end instead of
44
44
  * gliding.
45
45
  */
46
- .lp-row-enter-active[data-v-a346ca36],
47
- .lp-row-leave-active[data-v-a346ca36] {
46
+ .lp-row-enter-active[data-v-a366adee],
47
+ .lp-row-leave-active[data-v-a366adee] {
48
48
  transition:
49
49
  opacity var(--duration-fast) var(--ease-emphasized),
50
50
  transform var(--duration-fast) var(--ease-emphasized);
51
51
  }
52
- .lp-row-move[data-v-a346ca36] {
52
+ .lp-row-move[data-v-a366adee] {
53
53
  transition: transform var(--duration-medium) var(--ease-emphasized);
54
54
  }
55
- .lp-row-enter-from[data-v-a346ca36],
56
- .lp-row-leave-to[data-v-a346ca36] {
55
+
56
+ /*
57
+ * A change too big to animate row by row (see ROW_MOTION_LIMIT): the rows
58
+ * land at once and the body comes up from half-faded as one. `lp-row-still`
59
+ * is the move class then, and has no transition on purpose: TransitionGroup
60
+ * checks the move class for one before it measures the rows, and skips the
61
+ * measuring when there is none.
62
+ */
63
+ [data-lp-settle="a"][data-v-a366adee] {
64
+ animation: lp-rows-settle-a-a366adee var(--duration-fast) var(--ease-emphasized);
65
+ }
66
+ [data-lp-settle="b"][data-v-a366adee] {
67
+ animation: lp-rows-settle-b-a366adee var(--duration-fast) var(--ease-emphasized);
68
+ }
69
+ @keyframes lp-rows-settle-a-a366adee {
70
+ from {
71
+ opacity: 0.4;
72
+ }
73
+ }
74
+ @keyframes lp-rows-settle-b-a366adee {
75
+ from {
76
+ opacity: 0.4;
77
+ }
78
+ }
79
+ .lp-row-enter-from[data-v-a366adee],
80
+ .lp-row-leave-to[data-v-a366adee] {
57
81
  opacity: 0;
58
82
  transform: translateX(-0.5rem);
59
83
  }
@@ -67,7 +91,7 @@
67
91
  * drops out of the table layout entirely. Nothing sits below this row to be
68
92
  * dragged around, so simply not animating its exit costs nothing.
69
93
  */
70
- .lp-row-empty.lp-row-leave-active[data-v-a346ca36] {
94
+ .lp-row-empty.lp-row-leave-active[data-v-a366adee] {
71
95
  display: none;
72
96
  }
73
97
 
@@ -86,7 +110,7 @@
86
110
  * once anything is selected. An earlier version collapsed the column to nothing
87
111
  * and floated the hover box over the first cell, where it sat on the text.
88
112
  */
89
- .lp-tick[data-v-a346ca36] {
113
+ .lp-tick[data-v-a366adee] {
90
114
  display: flex;
91
115
  align-items: center;
92
116
  max-width: 0;
@@ -98,17 +122,17 @@
98
122
  padding var(--duration-medium) var(--ease-emphasized),
99
123
  opacity var(--duration-fast) ease;
100
124
  }
101
- .lp-tick-open[data-v-a346ca36] {
125
+ .lp-tick-open[data-v-a366adee] {
102
126
  max-width: 3.25rem;
103
127
  padding-inline: 1rem;
104
128
  opacity: 1;
105
129
  }
106
- .lp-tick-hidden[data-v-a346ca36],
107
- .lp-tick-cue[data-v-a346ca36] {
130
+ .lp-tick-hidden[data-v-a366adee],
131
+ .lp-tick-cue[data-v-a366adee] {
108
132
  opacity: 0;
109
133
  }
110
- tr:hover .lp-tick-cue[data-v-a346ca36],
111
- .lp-tick-cue[data-v-a346ca36]:focus-within {
134
+ tr:hover .lp-tick-cue[data-v-a366adee],
135
+ .lp-tick-cue[data-v-a366adee]:focus-within {
112
136
  opacity: 1;
113
137
  }
114
138
 
@@ -116,15 +140,15 @@ tr:hover .lp-tick-cue[data-v-a346ca36],
116
140
  turned down the rows change without animating rather than not changing. */
117
141
  /* Only where there is a hover to reveal it; a finger long-presses instead. */
118
142
  @media (hover: none) {
119
- tr:hover .lp-tick-cue[data-v-a346ca36] {
143
+ tr:hover .lp-tick-cue[data-v-a366adee] {
120
144
  opacity: 0;
121
145
  }
122
146
 
123
147
  /* Nor is there anything for the column's width to hold until then: on a
124
148
  touch screen it stays closed until a long press starts selecting, and
125
149
  eases open like the rest of the column. */
126
- .lp-tick-hidden[data-v-a346ca36],
127
- .lp-tick-cue[data-v-a346ca36] {
150
+ .lp-tick-hidden[data-v-a366adee],
151
+ .lp-tick-cue[data-v-a366adee] {
128
152
  max-width: 0;
129
153
  padding-inline: 0;
130
154
  }
@@ -134,7 +158,7 @@ tr:hover .lp-tick-cue[data-v-a346ca36] {
134
158
  * A list line's tick opens from nothing, as the table's column does, so lines
135
159
  * do not carry an empty gap until selection starts.
136
160
  */
137
- .lp-tick-line[data-v-a346ca36] {
161
+ .lp-tick-line[data-v-a366adee] {
138
162
  max-width: 2rem;
139
163
  opacity: 1;
140
164
  }
@@ -144,28 +168,31 @@ tr:hover .lp-tick-cue[data-v-a346ca36] {
144
168
  * open; a cue shows it only while
145
169
  * the card is pointed at or holds focus, the same rule as a row's.
146
170
  */
147
- .lp-tick-card[data-v-a346ca36] {
171
+ .lp-tick-card[data-v-a366adee] {
148
172
  max-width: none;
149
173
  padding-inline: 0;
150
174
  opacity: 1;
151
175
  }
152
- .lp-tick[data-cue][data-v-a346ca36] {
176
+ .lp-tick[data-cue][data-v-a366adee] {
153
177
  opacity: 0;
154
178
  }
155
- .lp-item:hover .lp-tick[data-cue][data-v-a346ca36],
156
- .lp-tick[data-cue][data-v-a346ca36]:focus-within {
179
+ .lp-item:hover .lp-tick[data-cue][data-v-a366adee],
180
+ .lp-tick[data-cue][data-v-a366adee]:focus-within {
157
181
  opacity: 1;
158
182
  }
159
183
  @media (hover: none) {
160
- .lp-item:hover .lp-tick[data-cue][data-v-a346ca36] {
184
+ .lp-item:hover .lp-tick[data-cue][data-v-a366adee] {
161
185
  opacity: 0;
162
186
  }
163
187
  }
164
188
  @media (prefers-reduced-motion: reduce) {
165
- .lp-row-enter-active[data-v-a346ca36],
166
- .lp-row-leave-active[data-v-a346ca36],
167
- .lp-row-move[data-v-a346ca36],
168
- .lp-tick[data-v-a346ca36] {
189
+ .lp-row-enter-active[data-v-a366adee],
190
+ .lp-row-leave-active[data-v-a366adee],
191
+ .lp-row-move[data-v-a366adee],
192
+ .lp-tick[data-v-a366adee] {
169
193
  transition: none;
170
194
  }
195
+ [data-lp-settle][data-v-a366adee] {
196
+ animation: none;
197
+ }
171
198
  }
@@ -0,0 +1,18 @@
1
+
2
+ .lp-tab-badge-enter-active[data-v-60b1eda3],
3
+ .lp-tab-badge-leave-active[data-v-60b1eda3] {
4
+ transition:
5
+ opacity var(--duration-fast) var(--ease-emphasized),
6
+ transform var(--duration-fast) var(--ease-emphasized);
7
+ }
8
+ .lp-tab-badge-enter-from[data-v-60b1eda3],
9
+ .lp-tab-badge-leave-to[data-v-60b1eda3] {
10
+ opacity: 0;
11
+ transform: scale(0.6);
12
+ }
13
+ @media (prefers-reduced-motion: reduce) {
14
+ .lp-tab-badge-enter-active[data-v-60b1eda3],
15
+ .lp-tab-badge-leave-active[data-v-60b1eda3] {
16
+ transition: none;
17
+ }
18
+ }
@@ -8,7 +8,7 @@ import { _ as _sfc_main$4 } from "./LpButton-BvVoF-PO.js";
8
8
  import { _ as _sfc_main$2 } from "./LpFormField-jbM7K1Hg.js";
9
9
  import { _ as _sfc_main$5 } from "./LpIcon-CxHFPwKt.js";
10
10
  import { _ as _sfc_main$6 } from "./LpInput-DGMpxrcg.js";
11
- import { _ as _sfc_main$8 } from "./LpModal-D1E7rQzw.js";
11
+ import { _ as _sfc_main$8 } from "./LpModal-COMHrBKL.js";
12
12
  import { _ as _sfc_main$7 } from "./LpSelect-Dffg5r4I.js";
13
13
  import { useOwnField, mergeDescribedBy } from "../composables/useField.js";
14
14
  import { useLabels } from "../composables/useLpConfig.js";
@@ -11,10 +11,10 @@ import { _ as _sfc_main$9 } from "./LpBottomNav-9AqvZlRW.js";
11
11
  import { _ as _sfc_main$2 } from "./LpContextSwitcher-COw6GHPW.js";
12
12
  import { _ as _sfc_main$3 } from "./LpButton-BvVoF-PO.js";
13
13
  import { _ as _sfc_main$4 } from "./LpIcon-CxHFPwKt.js";
14
- import { _ as _sfc_main$8 } from "./LpPageScrollbar-C9sTeU-2.js";
15
- import { _ as _sfc_main$7 } from "./LpScrollArea-CqvwfZs2.js";
14
+ import { _ as _sfc_main$8 } from "./LpPageScrollbar-BniFeL2U.js";
15
+ import { _ as _sfc_main$7 } from "./LpScrollArea-B_1KZOSS.js";
16
16
  import { _ as _sfc_main$5 } from "./LpShift-DAgS_d2x.js";
17
- import { _ as _sfc_main$1 } from "./LpSidebar-BIhusppV.js";
17
+ import { _ as _sfc_main$1 } from "./LpSidebar-DPri9uyz.js";
18
18
  import { mergeClass, useMergedAttrs } from "../composables/useMergedClass.js";
19
19
  import { nodeWindow, isHTMLElement } from "../composables/realm.js";
20
20
  const _hoisted_1 = ["href"];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, reactive, watch, ref, openBlock, createElementBlock, mergeProps, unref, toDisplayString, createCommentVNode, createElementVNode, createVNode, createBlock, normalizeStyle, normalizeClass, Fragment, renderList, h } from "vue";
2
2
  import { tokenizeLines } from "../components/codeHighlight.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
- import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
4
+ import { _ as _sfc_main$2 } from "./LpCopyButton-CiqUS4SX.js";
5
5
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
6
6
  import { useMergedAttrs } from "../composables/useMergedClass.js";
7
7
  const _hoisted_1 = {
@@ -3,11 +3,11 @@ import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useNow } from "../composables/useNow.js";
5
5
  import { _ as _sfc_main$6 } from "./LpCheckbox-C9VnPIQf.js";
6
- import { _ as _sfc_main$3 } from "./LpCopyButton-BGzw95Xc.js";
6
+ import { _ as _sfc_main$3 } from "./LpCopyButton-CiqUS4SX.js";
7
7
  import { _ as _sfc_main$5 } from "./LpCountdown-DVl7vXI1.js";
8
8
  import { _ as _sfc_main$4 } from "./LpIcon-CxHFPwKt.js";
9
9
  import { _ as _sfc_main$1 } from "./LpRollingText-B54Pje7P.js";
10
- import { _ as _sfc_main$2 } from "./RevealToggle-BsYxY6Oz.js";
10
+ import { _ as _sfc_main$2 } from "./RevealToggle-D9Vs88kM.js";
11
11
  import { groupCode } from "../components/fieldText.js";
12
12
  import { toEpoch, formatTime, ceilToSecond, msToNextSecond } from "../components/timeSpan.js";
13
13
  const _hoisted_1 = { class: "flex flex-wrap items-center gap-x-2 gap-y-1" };
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, openBlock, createBlock, createSl
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { _ as _sfc_main$2 } from "./LpButton-BvVoF-PO.js";
4
4
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
5
- import { _ as _sfc_main$1 } from "./LpModal-D1E7rQzw.js";
5
+ import { _ as _sfc_main$1 } from "./LpModal-COMHrBKL.js";
6
6
  const _hoisted_1 = { class: "inline-flex items-center gap-2.5" };
7
7
  const _hoisted_2 = {
8
8
  key: 0,
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, ref, watch, openBlock, createBlock, createCommentVNode } from "vue";
2
2
  import { confirmQueue, settleConfirm } from "../components/confirm.js";
3
- import { _ as _sfc_main$1 } from "./LpConfirmDialog-y6k0ryWR.js";
3
+ import { _ as _sfc_main$1 } from "./LpConfirmDialog-DrHcIxRn.js";
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  __name: "LpConfirmHost",
6
6
  props: {
@@ -3,7 +3,7 @@ import { COPY_LABELS, useClipboard } from "../composables/useClipboard.js";
3
3
  import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { _ as _sfc_main$2 } from "./LpButton-BvVoF-PO.js";
5
5
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
6
- import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
6
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bt1ZFViJ.js";
7
7
  const _hoisted_1 = { key: 0 };
8
8
  const _hoisted_2 = {
9
9
  class: "sr-only",
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, useSlots, computed, openBlock, createElementBlock, mergeProps, unref, createVNode, TransitionGroup, normalizeClass, withCtx, Fragment, renderList, createElementVNode, renderSlot, createTextVNode, toDisplayString, createBlock, createCommentVNode } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
- import { _ as _sfc_main$4 } from "./LpCopyButton-BGzw95Xc.js";
4
+ import { _ as _sfc_main$4 } from "./LpCopyButton-CiqUS4SX.js";
5
5
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
6
6
  import { _ as _sfc_main$3 } from "./LpRollingText-B54Pje7P.js";
7
- import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
7
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bt1ZFViJ.js";
8
8
  const _hoisted_1 = { class: "flex min-w-0 items-center gap-1 text-muted [overflow-wrap:anywhere]" };
9
9
  const _hoisted_2 = ["aria-label"];
10
10
  const _hoisted_3 = { class: "min-w-0 flex-1 [overflow-wrap:anywhere]" };
@@ -8,7 +8,7 @@ import { useModelOverlayHistory } from "../composables/useOverlayHistory.js";
8
8
  import { useLabels } from "../composables/useLpConfig.js";
9
9
  import { usePersisted } from "../composables/usePersisted.js";
10
10
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
11
- import { _ as _sfc_main$2 } from "./LpScrollArea-CqvwfZs2.js";
11
+ import { _ as _sfc_main$2 } from "./LpScrollArea-B_1KZOSS.js";
12
12
  import { useModalLayer, anyModalOpen } from "../components/modalDepth.js";
13
13
  import { startPointerDrag } from "../composables/pointerDrag.js";
14
14
  import { createDragSession, TOUCH_SLOP, shouldDismiss, rubberBand } from "../composables/gesture.js";
@@ -7,7 +7,7 @@ import { _ as _sfc_main$4 } from "./LpBreadcrumbs-Zv1fn9e_.js";
7
7
  import { _ as _sfc_main$2 } from "./LpEmptyState-DLOm07KH.js";
8
8
  import { _ as _sfc_main$6 } from "./LpFileTreeNode-CC48DbT5.js";
9
9
  import { _ as _sfc_main$3 } from "./LpInput-DGMpxrcg.js";
10
- import { _ as _sfc_main$5 } from "./LpScrollArea-CqvwfZs2.js";
10
+ import { _ as _sfc_main$5 } from "./LpScrollArea-B_1KZOSS.js";
11
11
  import { _ as _sfc_main$1 } from "./LpSkeleton-leTl53V9.js";
12
12
  import { usePersisted } from "../composables/usePersisted.js";
13
13
  import { useMergedAttrs } from "../composables/useMergedClass.js";
@@ -5,11 +5,11 @@ import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { useMergedAttrs } from "../composables/useMergedClass.js";
6
6
  import { usePersisted } from "../composables/usePersisted.js";
7
7
  import { clamp } from "../composables/clamp.js";
8
- import { _ as _sfc_main$4 } from "./LpDataList-B56Gu6Yt.js";
8
+ import { _ as _sfc_main$4 } from "./LpDataList-Cit9fOSp.js";
9
9
  import { _ as _sfc_main$3 } from "./LpDisclosure-D4JZ-o8K.js";
10
10
  import "@iconify/vue";
11
11
  import "./icons-C8ccRCKw.js";
12
- import { _ as _sfc_main$2 } from "./LpScrollArea-CqvwfZs2.js";
12
+ import { _ as _sfc_main$2 } from "./LpScrollArea-B_1KZOSS.js";
13
13
  import { _ as _sfc_main$1 } from "./IconCloseButton-C_V7qngw.js";
14
14
  const _hoisted_1 = ["aria-label"];
15
15
  const _hoisted_2 = ["aria-label", "aria-valuenow", "aria-valuemin", "aria-valuemax"];
@@ -8,7 +8,7 @@ import { _ as _sfc_main$5 } from "./LpScrollStrip-D4tsOfAQ.js";
8
8
  import { createDragSession, slopFor } from "../composables/gesture.js";
9
9
  import { clickLink } from "../components/exportData.js";
10
10
  import { isVideoItem, fileNameOf } from "../components/lightbox.js";
11
- import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
11
+ import { _ as _sfc_main$2 } from "./LpCopyButton-CiqUS4SX.js";
12
12
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
13
13
  import { _ as _sfc_main$4 } from "./LpLoader-Bf1yZwaU.js";
14
14
  import { _ as _sfc_main$3 } from "./LpVideoPlayer-FMuxTAU8.js";
@@ -10,7 +10,7 @@ import { _ as _sfc_main$4 } from "./LpEmptyState-DLOm07KH.js";
10
10
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
11
11
  import { _ as _sfc_main$5 } from "./LpLoader-Bf1yZwaU.js";
12
12
  import { _ as _sfc_main$1 } from "./LpInput-DGMpxrcg.js";
13
- import { _ as _sfc_main$3 } from "./LpScrollArea-CqvwfZs2.js";
13
+ import { _ as _sfc_main$3 } from "./LpScrollArea-B_1KZOSS.js";
14
14
  import { useMergedAttrs } from "../composables/useMergedClass.js";
15
15
  import { useLabels } from "../composables/useLpConfig.js";
16
16
  import { useResizeObserver } from "../composables/useResizeObserver.js";
@@ -4,7 +4,7 @@ import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { _ as _sfc_main$1 } from "./LpContextMenu-DEFirphS.js";
6
6
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
7
- import { _ as _sfc_main$4 } from "./LpLightbox-DPgz7IsT.js";
7
+ import { _ as _sfc_main$4 } from "./LpLightbox--EwvQGe-.js";
8
8
  import { _ as _sfc_main$2 } from "./VideoThumb-BfDkIXqE.js";
9
9
  const _hoisted_1 = { key: 0 };
10
10
  const _hoisted_2 = ["aria-label"];
@@ -9,7 +9,7 @@ import { useShift } from "../composables/useShift.js";
9
9
  import { useModalLayer, MODAL_MAX_HEIGHT } from "../components/modalDepth.js";
10
10
  import { CLOSE_ICON } from "../components/dropdown.js";
11
11
  import { _ as _sfc_main$1 } from "./LpIcon-CxHFPwKt.js";
12
- import { _ as _sfc_main$2 } from "./LpScrollArea-CqvwfZs2.js";
12
+ import { _ as _sfc_main$2 } from "./LpScrollArea-B_1KZOSS.js";
13
13
  import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
14
14
  const _hoisted_1 = {
15
15
  key: 0,
@@ -4,8 +4,8 @@ import { useLabels } from "../composables/useLpConfig.js";
4
4
  import { _ as _sfc_main$2 } from "./LpButton-BvVoF-PO.js";
5
5
  import { _ as _sfc_main$3 } from "./LpIcon-CxHFPwKt.js";
6
6
  import { MODAL_MAX_HEIGHT } from "../components/modalDepth.js";
7
- import { _ as _sfc_main$1 } from "./LpModal-D1E7rQzw.js";
8
- import { _ as _sfc_main$4 } from "./LpSidebar-BIhusppV.js";
7
+ import { _ as _sfc_main$1 } from "./LpModal-COMHrBKL.js";
8
+ import { _ as _sfc_main$4 } from "./LpSidebar-DPri9uyz.js";
9
9
  const _hoisted_1 = { class: "flex items-center gap-2" };
10
10
  const _sfc_main = /* @__PURE__ */ defineComponent({
11
11
  __name: "LpModalNav",
@@ -4,7 +4,7 @@ import { _ as _sfc_main$6 } from "./LpBadge-Bh5roBr_.js";
4
4
  import { _ as _sfc_main$4 } from "./LpButton-BvVoF-PO.js";
5
5
  import { _ as _sfc_main$3 } from "./LpContextMenu-DEFirphS.js";
6
6
  import { _ as _sfc_main$5 } from "./LpIcon-CxHFPwKt.js";
7
- import { _ as _sfc_main$2 } from "./LpNotificationFeed-CMGYU8c-.js";
7
+ import { _ as _sfc_main$2 } from "./LpNotificationFeed-BoovbtfL.js";
8
8
  import { _ as _sfc_main$1 } from "./LpPopover-w2rr4x7n.js";
9
9
  import { _ as _sfc_main$7 } from "./LpRollingText-B54Pje7P.js";
10
10
  import { NOTIFICATION_LABELS } from "../components/notifications.js";
@@ -7,12 +7,12 @@ import { _ as _sfc_main$a } from "./LpButton-BvVoF-PO.js";
7
7
  import { _ as _sfc_main$7 } from "./LpContextMenu-DEFirphS.js";
8
8
  import { _ as _sfc_main$5 } from "./LpEmptyState-DLOm07KH.js";
9
9
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
10
- import { _ as _sfc_main$9 } from "./LpRelativeTime-CN5bWD73.js";
11
- import { _ as _sfc_main$6 } from "./LpScrollArea-CqvwfZs2.js";
10
+ import { _ as _sfc_main$9 } from "./LpRelativeTime-9MHlbq6F.js";
11
+ import { _ as _sfc_main$6 } from "./LpScrollArea-B_1KZOSS.js";
12
12
  import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
13
13
  import { _ as _sfc_main$4 } from "./LpSkeleton-leTl53V9.js";
14
14
  import LpTabs from "../components/LpTabs.vue.js";
15
- import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
15
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bt1ZFViJ.js";
16
16
  import { NOTIFICATION_LABELS, groupByDay, untilMidnight } from "../components/notifications.js";
17
17
  import { toneLook } from "../components/tone.js";
18
18
  const _hoisted_1 = ["aria-label"];
@@ -47,6 +47,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
47
47
  function measureSoon() {
48
48
  if (!frame && doc) frame = nodeWindow(doc).requestAnimationFrame(measure);
49
49
  }
50
+ function measureLaidOut() {
51
+ if (frame && doc) nodeWindow(doc).cancelAnimationFrame(frame);
52
+ measure();
53
+ }
50
54
  function onScroll() {
51
55
  measureSoon();
52
56
  scrolling.value = true;
@@ -108,7 +112,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
108
112
  const win = nodeWindow(doc);
109
113
  win.addEventListener("scroll", onScroll, { passive: true });
110
114
  win.addEventListener("resize", measureSoon);
111
- sizes = new win.ResizeObserver(measureSoon);
115
+ sizes = new win.ResizeObserver(measureLaidOut);
112
116
  sizes.observe(doc.body);
113
117
  if (host) sizes.observe(host);
114
118
  measure();
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, ref, computed, openBlock, createElementBlock, createElementVNode, createVNode, withCtx, createTextVNode, toDisplayString, unref } from "vue";
2
2
  import { useLabels } from "../composables/useLpConfig.js";
3
3
  import { suppressPaletteDiscovery } from "../composables/usePaletteCommands.js";
4
- import { _ as _sfc_main$4 } from "./LpThemeStudio-BPPctXgd.js";
4
+ import { _ as _sfc_main$4 } from "./LpThemeStudio-yiEdFJQL.js";
5
5
  import { _ as _sfc_main$2 } from "./LpThemeProvider-XK6ZeWAE.js";
6
6
  import { _ as _sfc_main$1 } from "./LpButton-BvVoF-PO.js";
7
7
  import { _ as _sfc_main$3 } from "./LpInput-DGMpxrcg.js";
@@ -3,7 +3,7 @@ import { suppressPaletteDiscovery } from "../composables/usePaletteCommands.js";
3
3
  import { useFieldControl } from "../composables/useField.js";
4
4
  import { useLabels } from "../composables/useLpConfig.js";
5
5
  import { _ as _sfc_main$1 } from "./LpInput-DGMpxrcg.js";
6
- import { _ as _sfc_main$2 } from "./RevealToggle-BsYxY6Oz.js";
6
+ import { _ as _sfc_main$2 } from "./RevealToggle-D9Vs88kM.js";
7
7
  const __default__ = { inheritAttrs: false };
8
8
  const _sfc_main = /* @__PURE__ */ defineComponent({
9
9
  ...__default__,
@@ -14,7 +14,7 @@ import { _ as _sfc_main$7 } from "./LpRollingText-B54Pje7P.js";
14
14
  import { _ as _sfc_main$8 } from "./LpShift-DAgS_d2x.js";
15
15
  import { _ as _sfc_main$2 } from "./LpSkeleton-leTl53V9.js";
16
16
  import { _ as _sfc_main$1 } from "./LpSwap-M7nFeW3C.js";
17
- import { _ as _sfc_main$5 } from "./LpTooltip-BKde8Xjv.js";
17
+ import { _ as _sfc_main$5 } from "./LpTooltip-Bt1ZFViJ.js";
18
18
  import { useMergedAttrs } from "../composables/useMergedClass.js";
19
19
  import { useLabels } from "../composables/useLpConfig.js";
20
20
  import { isElement } from "../composables/realm.js";
@@ -10,7 +10,7 @@ import { _ as _sfc_main$5 } from "./LpIcon-CxHFPwKt.js";
10
10
  import { _ as _sfc_main$4 } from "./LpRollingText-B54Pje7P.js";
11
11
  import { _ as _sfc_main$3 } from "./LpShift-DAgS_d2x.js";
12
12
  import { _ as _sfc_main$1 } from "./LpStepMark-CPGVj1XG.js";
13
- import { _ as _sfc_main$7 } from "./LpTooltip-BKde8Xjv.js";
13
+ import { _ as _sfc_main$7 } from "./LpTooltip-Bt1ZFViJ.js";
14
14
  import { _ as _sfc_main$2 } from "./StepConnector-37OgEOXA.js";
15
15
  import { stepKey, duplicateStepKeys, connectorFilled, currentStepIndex, stepElapsed, childProgress } from "../components/pipeline.js";
16
16
  import { DEFAULT_UNIT_LABELS, toEpoch, formatElapsed } from "../components/timeSpan.js";
@@ -3,7 +3,7 @@ import { useLocale } from "../composables/useLocale.js";
3
3
  import { useMergedAttrs } from "../composables/useMergedClass.js";
4
4
  import { useNow } from "../composables/useNow.js";
5
5
  import { _ as _sfc_main$2 } from "./LpRollingText-B54Pje7P.js";
6
- import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
6
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bt1ZFViJ.js";
7
7
  import { formatRelativeTime } from "../components/relativeTime.js";
8
8
  import { toEpoch } from "../components/timeSpan.js";
9
9
  const _hoisted_1 = ["datetime"];
@@ -52,7 +52,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
52
52
  }
53
53
  let edgeResize;
54
54
  let edgeMutation;
55
+ let edgeFrame = 0;
56
+ let edgeWindow;
55
57
  function stopEdgeWatch() {
58
+ if (edgeFrame) edgeWindow?.cancelAnimationFrame(edgeFrame);
59
+ edgeFrame = 0;
56
60
  edgeResize?.disconnect();
57
61
  edgeMutation?.disconnect();
58
62
  edgeResize = void 0;
@@ -74,6 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
74
78
  edgeResize.observe(el);
75
79
  for (const child of Array.from(el.children)) edgeResize.observe(child);
76
80
  }
81
+ edgeWindow = win;
77
82
  if (win.MutationObserver) {
78
83
  edgeMutation = new win.MutationObserver(() => {
79
84
  if (edgeResize) {
@@ -81,7 +86,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
81
86
  edgeResize.observe(el);
82
87
  for (const child of Array.from(el.children)) edgeResize.observe(child);
83
88
  }
84
- remeasure();
89
+ if (!edgeFrame) {
90
+ edgeFrame = win.requestAnimationFrame(() => {
91
+ edgeFrame = 0;
92
+ remeasure();
93
+ });
94
+ }
85
95
  });
86
96
  edgeMutation.observe(el, { childList: true, subtree: true });
87
97
  }
@@ -8,12 +8,12 @@ import { useFieldControl } from "../composables/useField.js";
8
8
  import { mergeClass } from "../composables/useMergedClass.js";
9
9
  import { _ as _sfc_main$5 } from "./FieldWrapper-CVTPnpoG.js";
10
10
  import { _ as _sfc_main$3 } from "./LpButton-BvVoF-PO.js";
11
- import { _ as _sfc_main$2 } from "./LpCopyButton-BGzw95Xc.js";
11
+ import { _ as _sfc_main$2 } from "./LpCopyButton-CiqUS4SX.js";
12
12
  import { _ as _sfc_main$4 } from "./LpIcon-CxHFPwKt.js";
13
- import { _ as _sfc_main$1 } from "./LpPasswordInput-LPVI7D3v.js";
13
+ import { _ as _sfc_main$1 } from "./LpPasswordInput-BBDz2zyU.js";
14
14
  import { _ as _sfc_main$6 } from "./LpShift-DAgS_d2x.js";
15
- import { _ as _sfc_main$8 } from "./LpTooltip-BKde8Xjv.js";
16
- import { _ as _sfc_main$7 } from "./RevealToggle-BsYxY6Oz.js";
15
+ import { _ as _sfc_main$8 } from "./LpTooltip-Bt1ZFViJ.js";
16
+ import { _ as _sfc_main$7 } from "./RevealToggle-D9Vs88kM.js";
17
17
  const _hoisted_1 = ["id", "aria-label"];
18
18
  const _hoisted_2 = {
19
19
  key: "empty",
@@ -4,11 +4,11 @@ import { useHotkeys, parseCombo } from "../composables/useHotkeys.js";
4
4
  import { startPointerDrag } from "../composables/pointerDrag.js";
5
5
  import { usePersisted } from "../composables/usePersisted.js";
6
6
  import { useLabels } from "../composables/useLpConfig.js";
7
- import { _ as _sfc_main$5 } from "./LpDrawer-BkWjFdV0.js";
7
+ import { _ as _sfc_main$5 } from "./LpDrawer-BHlqi62K.js";
8
8
  import { _ as _sfc_main$2 } from "./LpIcon-CxHFPwKt.js";
9
9
  import { _ as _sfc_main$3 } from "./LpInput-DGMpxrcg.js";
10
- import { _ as _sfc_main$1 } from "./LpTooltip-BKde8Xjv.js";
11
- import { _ as _sfc_main$4 } from "./LpSidebarNav-CFcI7--7.js";
10
+ import { _ as _sfc_main$1 } from "./LpTooltip-Bt1ZFViJ.js";
11
+ import { _ as _sfc_main$4 } from "./LpSidebarNav-CV1rU6La.js";
12
12
  const _hoisted_1 = ["data-compact", "aria-label"];
13
13
  const _hoisted_2 = {
14
14
  key: 0,
@@ -55,7 +55,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
55
55
  search: {},
56
56
  loading: { type: Boolean },
57
57
  skeletonRows: { default: 6 },
58
- skeletonHeader: { type: Boolean, default: true },
58
+ skeletonHeader: { type: Boolean, default: false },
59
59
  responsive: { type: Boolean, default: false },
60
60
  open: { type: Boolean },
61
61
  mobileBreakpoint: { default: "md" },