@leavepulse/ui 0.40.1 → 0.42.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.
- package/dist/assets/{LpCommandPalette-DDGFwOom.css → LpCommandPalette-Esv0a-gS.css} +21 -21
- package/dist/assets/{LpShortcutsDialog-Cap_ALQM.css → LpShortcutsDialog-C6YoQ8_M.css} +7 -7
- package/dist/chunks/{LpAddressInput-H5NdhK6c.js → LpAddressInput-CMjaPQVw.js} +1 -1
- package/dist/chunks/{LpAppShell-BfqSA1ba.js → LpAppShell-Bcv6EhqU.js} +1 -1
- package/dist/chunks/{LpConfirmDialog-BBRnMkV4.js → LpConfirmDialog-BNAvOR24.js} +2 -2
- package/dist/chunks/{LpDrawer-B8vBnCWF.js → LpDrawer-DgaS2s2i.js} +6 -4
- package/dist/chunks/{LpModal-EyEdRuqF.js → LpModal-8bja5bWS.js} +5 -3
- package/dist/chunks/{LpModalNav-BrDtP7b_.js → LpModalNav-w9kfwHqO.js} +3 -3
- package/dist/chunks/{LpSidebar-DZ20iBxY.js → LpSidebar-DlTn5nXc.js} +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.d.ts +2 -1
- package/dist/components/LpCommandPalette.vue.js +140 -76
- package/dist/components/LpConfirmDialog.vue.d.ts +2 -1
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpDrawer.vue.d.ts +4 -2
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpModal.vue.d.ts +2 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.d.ts +2 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.d.ts +8 -11
- package/dist/components/LpShortcutsDialog.vue.js +14 -9
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/composables/useGlass.d.ts +9 -0
- package/dist/composables/useGlass.js +13 -0
- package/dist/composables/useHotkeys.d.ts +43 -2
- package/dist/composables/useHotkeys.js +89 -16
- package/dist/index.d.ts +3 -3
- package/dist/index.js +13 -8
- package/package.json +1 -1
- package/src/components/LpCommandPalette.vue +114 -36
- package/src/components/LpConfirmDialog.vue +2 -2
- package/src/components/LpDrawer.vue +9 -5
- package/src/components/LpModal.vue +8 -4
- package/src/components/LpModalNav.vue +2 -1
- package/src/components/LpShortcutsDialog.vue +32 -23
- package/src/composables/useGlass.ts +25 -0
- package/src/composables/useHotkeys.ts +146 -24
- package/src/index.ts +9 -3
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import { defineComponent, openBlock, createBlock, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString, unref } from "vue";
|
|
2
|
-
import { _ as _sfc_main$1 } from "../chunks/LpModal-
|
|
3
|
-
import { appleModifierLabel } from "../composables/useHotkeys.js";
|
|
1
|
+
import { defineComponent, computed, openBlock, createBlock, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString, unref } from "vue";
|
|
2
|
+
import { _ as _sfc_main$1 } from "../chunks/LpModal-8bja5bWS.js";
|
|
3
|
+
import { mergeShortcutGroups, activeShortcuts, appleModifierLabel } from "../composables/useHotkeys.js";
|
|
4
4
|
import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
|
|
5
|
-
import '../assets/LpShortcutsDialog-
|
|
5
|
+
import '../assets/LpShortcutsDialog-C6YoQ8_M.css';const _hoisted_1 = { class: "shortcut-groups" };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
7
|
__name: "LpShortcutsDialog",
|
|
8
8
|
props: {
|
|
9
9
|
open: { type: Boolean, default: false },
|
|
10
|
-
groups: {},
|
|
10
|
+
groups: { default: () => [] },
|
|
11
|
+
live: { type: Boolean, default: false },
|
|
11
12
|
title: { default: "Keyboard shortcuts" },
|
|
12
13
|
description: {},
|
|
13
|
-
glass: { type: Boolean }
|
|
14
|
+
glass: { type: Boolean, default: void 0 }
|
|
14
15
|
},
|
|
15
16
|
emits: ["update:open"],
|
|
16
17
|
setup(__props, { emit: __emit }) {
|
|
17
18
|
const props = __props;
|
|
19
|
+
function keysOf(combo) {
|
|
20
|
+
return combo.split(/\+(?!$)/);
|
|
21
|
+
}
|
|
22
|
+
const shown = computed(() => props.live ? mergeShortcutGroups(props.groups, activeShortcuts.value) : props.groups);
|
|
18
23
|
const emit = __emit;
|
|
19
24
|
return (_ctx, _cache) => {
|
|
20
25
|
return openBlock(), createBlock(_sfc_main$1, {
|
|
@@ -27,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
27
32
|
}, {
|
|
28
33
|
default: withCtx(() => [
|
|
29
34
|
createElementVNode("div", _hoisted_1, [
|
|
30
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
35
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(shown.value, (group) => {
|
|
31
36
|
return openBlock(), createElementBlock("section", {
|
|
32
37
|
key: group.title,
|
|
33
38
|
class: "shortcut-group"
|
|
@@ -41,7 +46,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
41
46
|
}, [
|
|
42
47
|
createElementVNode("dt", null, toDisplayString(entry.label), 1),
|
|
43
48
|
createElementVNode("dd", null, [
|
|
44
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(entry.combo
|
|
49
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(keysOf(entry.combo), (key, index) => {
|
|
45
50
|
return openBlock(), createElementBlock("kbd", {
|
|
46
51
|
key: `${key}-${index}`
|
|
47
52
|
}, toDisplayString(unref(appleModifierLabel)(key.trim())), 1);
|
|
@@ -59,7 +64,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
64
|
};
|
|
60
65
|
}
|
|
61
66
|
});
|
|
62
|
-
const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
67
|
+
const LpShortcutsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-8af3bafc"]]);
|
|
63
68
|
export {
|
|
64
69
|
LpShortcutsDialog as default
|
|
65
70
|
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComputedRef, MaybeRefOrGetter } from 'vue';
|
|
2
|
+
/** Make `glass` the default for every overlay below the calling component. */
|
|
3
|
+
export declare function provideGlass(enabled?: MaybeRefOrGetter<boolean>): void;
|
|
4
|
+
/**
|
|
5
|
+
* The glass flag an overlay renders with: its own prop when set, otherwise the
|
|
6
|
+
* nearest `provideGlass`, otherwise off. The prop must default to `undefined`,
|
|
7
|
+
* not `false`, or an unset prop could not be told apart from an explicit off.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useGlass(own: () => boolean | undefined): ComputedRef<boolean>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { inject, computed, toValue, provide } from "vue";
|
|
2
|
+
const GLASS = /* @__PURE__ */ Symbol("lp-glass");
|
|
3
|
+
function provideGlass(enabled = true) {
|
|
4
|
+
provide(GLASS, enabled);
|
|
5
|
+
}
|
|
6
|
+
function useGlass(own) {
|
|
7
|
+
const inherited = inject(GLASS, false);
|
|
8
|
+
return computed(() => own() ?? toValue(inherited));
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
provideGlass,
|
|
12
|
+
useGlass
|
|
13
|
+
};
|
|
@@ -16,13 +16,40 @@ export interface HotkeyBinding {
|
|
|
16
16
|
* something there — Escape, and the palette the user reaches from anywhere.
|
|
17
17
|
*/
|
|
18
18
|
allowInInput?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* How the key reference lists this binding while it is mounted. Bindings
|
|
21
|
+
* without it still work, they just stay out of `activeShortcuts`.
|
|
22
|
+
*/
|
|
23
|
+
help?: HotkeyHelp;
|
|
19
24
|
/**
|
|
20
25
|
* Returning `false` declines the key: the event keeps its default and the
|
|
21
26
|
* search moves on. This is what lets a binding defer to a layer that owns the
|
|
22
27
|
* key better than it does — Escape belongs to whichever overlay is on top,
|
|
23
|
-
* and swallowing it here would close all of them.
|
|
28
|
+
* and swallowing it here would close all of them. The event is passed for
|
|
29
|
+
* the checks only it can answer: where the focus is, whether an inner
|
|
30
|
+
* control already took the key.
|
|
31
|
+
*/
|
|
32
|
+
handler: (event: KeyboardEvent) => void | boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface HotkeyHelp {
|
|
35
|
+
/** Section of the reference the entry goes under. */
|
|
36
|
+
group: string;
|
|
37
|
+
label: string;
|
|
38
|
+
/**
|
|
39
|
+
* Written the way it reads, "+"-separated. Defaults to one built from the
|
|
40
|
+
* binding; set it where the binding is not the whole story, such as the
|
|
41
|
+
* second key of a chord ("G+D") or a key that needs Shift to type ("?").
|
|
24
42
|
*/
|
|
25
|
-
|
|
43
|
+
combo?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ShortcutEntry {
|
|
46
|
+
/** Rendered one <kbd> per "+"-separated key, so write it the way it reads. */
|
|
47
|
+
combo: string;
|
|
48
|
+
label: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ShortcutGroup {
|
|
51
|
+
title: string;
|
|
52
|
+
entries: ShortcutEntry[];
|
|
26
53
|
}
|
|
27
54
|
/**
|
|
28
55
|
* Whether this machine prints ⌘ where the rest print Ctrl. Read once: the
|
|
@@ -43,6 +70,8 @@ export declare function appleModifierLabel(key: string): string;
|
|
|
43
70
|
* formality.
|
|
44
71
|
*/
|
|
45
72
|
export interface UseHotkeysOptions {
|
|
73
|
+
enabled?: MaybeRefOrGetter<boolean>;
|
|
74
|
+
priority?: MaybeRefOrGetter<number>;
|
|
46
75
|
/**
|
|
47
76
|
* Only act while the focus is inside this element.
|
|
48
77
|
*
|
|
@@ -58,3 +87,15 @@ export interface UseHotkeysOptions {
|
|
|
58
87
|
scope?: MaybeRefOrGetter<HTMLElement | null | undefined>;
|
|
59
88
|
}
|
|
60
89
|
export declare function useHotkeys(bindings: MaybeRefOrGetter<HotkeyBinding[]>, options?: UseHotkeysOptions): void;
|
|
90
|
+
/**
|
|
91
|
+
* The shortcuts that work right now, grouped for `LpShortcutsDialog`: every
|
|
92
|
+
* binding with `help` from every mounted `useHotkeys`. A screen that binds its
|
|
93
|
+
* own keys adds its section while it is open, so the reference never lists a
|
|
94
|
+
* key that does nothing here or misses one that does.
|
|
95
|
+
*/
|
|
96
|
+
export declare const activeShortcuts: import('vue').ComputedRef<ShortcutGroup[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Groups merged by title, entries kept once per combo: what a reference shows
|
|
99
|
+
* when it lists both its own entries and the live ones.
|
|
100
|
+
*/
|
|
101
|
+
export declare function mergeShortcutGroups(...lists: ShortcutGroup[][]): ShortcutGroup[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { shallowReactive, computed, toValue, onMounted, onBeforeUnmount } from "vue";
|
|
2
2
|
const isAppleKeyboard = typeof navigator !== "undefined" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || "");
|
|
3
3
|
function appleModifierLabel(key) {
|
|
4
4
|
if (!isAppleKeyboard) return key;
|
|
@@ -31,30 +31,103 @@ function matches(event, binding) {
|
|
|
31
31
|
if (event.altKey !== Boolean(binding.alt)) return false;
|
|
32
32
|
return event.key.toLowerCase() === binding.key.toLowerCase() || binding.code !== void 0 && event.code === binding.code;
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
const mounted = shallowReactive(/* @__PURE__ */ new Set());
|
|
35
|
+
let mountOrder = 0;
|
|
36
|
+
let listening = false;
|
|
37
|
+
function inScope(target, scope) {
|
|
38
|
+
const el = toValue(scope);
|
|
39
|
+
if (!el) return true;
|
|
40
|
+
const node = target instanceof Node ? target : null;
|
|
41
|
+
return !!node && (el === node || el.contains(node));
|
|
42
|
+
}
|
|
43
|
+
function onKeydown(event) {
|
|
44
|
+
if (event.isComposing) return;
|
|
45
|
+
const inTextEntry = isTextEntry(event.target);
|
|
46
|
+
const entries = [...mounted].sort(
|
|
47
|
+
(a, b) => Number(toValue(b.priority) || 0) - Number(toValue(a.priority) || 0) || b.order - a.order
|
|
48
|
+
);
|
|
49
|
+
for (const entry of entries) {
|
|
50
|
+
if (toValue(entry.enabled) === false || !inScope(event.target, entry.scope)) continue;
|
|
51
|
+
for (const binding of entry.read()) {
|
|
46
52
|
if (inTextEntry && !binding.allowInInput) continue;
|
|
47
53
|
if (!matches(event, binding)) continue;
|
|
48
|
-
if (binding.handler() === false) continue;
|
|
54
|
+
if (binding.handler(event) === false) continue;
|
|
49
55
|
event.preventDefault();
|
|
50
56
|
return;
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
}
|
|
60
|
+
function useHotkeys(bindings, options = {}) {
|
|
61
|
+
const entry = {
|
|
62
|
+
read: () => toValue(bindings),
|
|
63
|
+
scope: options.scope,
|
|
64
|
+
enabled: options.enabled,
|
|
65
|
+
priority: options.priority,
|
|
66
|
+
order: ++mountOrder
|
|
67
|
+
};
|
|
68
|
+
onMounted(() => {
|
|
69
|
+
mounted.add(entry);
|
|
70
|
+
if (!listening) {
|
|
71
|
+
window.addEventListener("keydown", onKeydown);
|
|
72
|
+
listening = true;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
onBeforeUnmount(() => {
|
|
76
|
+
mounted.delete(entry);
|
|
77
|
+
if (!mounted.size && listening) {
|
|
78
|
+
window.removeEventListener("keydown", onKeydown);
|
|
79
|
+
listening = false;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const KEY_NAMES = {
|
|
84
|
+
escape: "Esc",
|
|
85
|
+
enter: "Enter",
|
|
86
|
+
backspace: "Backspace",
|
|
87
|
+
delete: "Delete",
|
|
88
|
+
tab: "Tab",
|
|
89
|
+
" ": "Space",
|
|
90
|
+
arrowup: "↑",
|
|
91
|
+
arrowdown: "↓",
|
|
92
|
+
arrowleft: "←",
|
|
93
|
+
arrowright: "→"
|
|
94
|
+
};
|
|
95
|
+
function comboOf(binding) {
|
|
96
|
+
const key = binding.key.toLowerCase();
|
|
97
|
+
const name = KEY_NAMES[key] ?? (key.length === 1 || /^f\d+$/.test(key) ? key.toUpperCase() : binding.key);
|
|
98
|
+
return [binding.ctrl && "Ctrl", binding.alt && "Alt", binding.shift && "Shift", name].filter(Boolean).join("+");
|
|
99
|
+
}
|
|
100
|
+
const activeShortcuts = computed(() => {
|
|
101
|
+
const groups = /* @__PURE__ */ new Map();
|
|
102
|
+
for (const entry of mounted) {
|
|
103
|
+
if (toValue(entry.enabled) === false) continue;
|
|
104
|
+
for (const binding of entry.read()) {
|
|
105
|
+
if (!binding.help) continue;
|
|
106
|
+
const combo = binding.help.combo ?? comboOf(binding);
|
|
107
|
+
const entries = groups.get(binding.help.group) ?? [];
|
|
108
|
+
if (!entries.some((e) => e.combo === combo)) entries.push({ combo, label: binding.help.label });
|
|
109
|
+
groups.set(binding.help.group, entries);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return [...groups].map(([title, entries]) => ({ title, entries }));
|
|
113
|
+
});
|
|
114
|
+
function mergeShortcutGroups(...lists) {
|
|
115
|
+
const groups = /* @__PURE__ */ new Map();
|
|
116
|
+
for (const list of lists) {
|
|
117
|
+
for (const group of list) {
|
|
118
|
+
const entries = groups.get(group.title) ?? [];
|
|
119
|
+
for (const entry of group.entries) {
|
|
120
|
+
if (!entries.some((e) => e.combo === entry.combo)) entries.push(entry);
|
|
121
|
+
}
|
|
122
|
+
groups.set(group.title, entries);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return [...groups].map(([title, entries]) => ({ title, entries }));
|
|
55
126
|
}
|
|
56
127
|
export {
|
|
128
|
+
activeShortcuts,
|
|
57
129
|
appleModifierLabel,
|
|
58
130
|
isAppleKeyboard,
|
|
131
|
+
mergeShortcutGroups,
|
|
59
132
|
useHotkeys
|
|
60
133
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -91,7 +91,6 @@ export { default as LpServiceNode } from './components/LpServiceNode.vue';
|
|
|
91
91
|
export type { ServiceNodeData } from './components/LpServiceNode.vue';
|
|
92
92
|
export { default as LpShift } from './components/LpShift.vue';
|
|
93
93
|
export { default as LpShortcutsDialog } from './components/LpShortcutsDialog.vue';
|
|
94
|
-
export type { ShortcutEntry, ShortcutGroup } from './components/LpShortcutsDialog.vue';
|
|
95
94
|
export { default as LpSidebar } from './components/LpSidebar.vue';
|
|
96
95
|
export type { SidebarItem, SidebarSection } from './components/LpSidebar.vue';
|
|
97
96
|
export { default as LpSkeleton } from './components/LpSkeleton.vue';
|
|
@@ -135,8 +134,9 @@ export { parseConfig, serializeConfig, UI_CONFIG_VERSION } from './theme/config'
|
|
|
135
134
|
export type { UiConfig } from './theme/config';
|
|
136
135
|
export { useClipboard } from './composables/useClipboard';
|
|
137
136
|
export type { CopyOptions, UseClipboard } from './composables/useClipboard';
|
|
138
|
-
export { useHotkeys, isAppleKeyboard, appleModifierLabel } from './composables/useHotkeys';
|
|
139
|
-
export type { HotkeyBinding } from './composables/useHotkeys';
|
|
137
|
+
export { useHotkeys, isAppleKeyboard, appleModifierLabel, activeShortcuts, mergeShortcutGroups, } from './composables/useHotkeys';
|
|
138
|
+
export type { HotkeyBinding, HotkeyHelp, ShortcutEntry, ShortcutGroup } from './composables/useHotkeys';
|
|
139
|
+
export { provideGlass, useGlass } from './composables/useGlass';
|
|
140
140
|
export { useMergedClass, useMergedAttrs, mergeClass } from './composables/useMergedClass';
|
|
141
141
|
export { useInputFilter } from './composables/useInputFilter';
|
|
142
142
|
export type { UseInputFilterOptions } from './composables/useInputFilter';
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { _ } from "./chunks/LayoutCanvas-Dd20boUG.js";
|
|
2
|
-
import { _ as _2 } from "./chunks/LpAddressInput-
|
|
2
|
+
import { _ as _2 } from "./chunks/LpAddressInput-CMjaPQVw.js";
|
|
3
3
|
import { _ as _3 } from "./chunks/LpMapPicker-ul4oYno6.js";
|
|
4
4
|
import { OSM_TILES, createNominatimProvider, emptyAddress, formatAddress, project, tileUrl, unproject } from "./components/address.js";
|
|
5
5
|
import { _ as _4 } from "./chunks/LpActionBar-BlvtGB2P.js";
|
|
6
6
|
import { _ as _5 } from "./chunks/LpAlert-BAYHDSS1.js";
|
|
7
|
-
import { _ as _6 } from "./chunks/LpAppShell-
|
|
7
|
+
import { _ as _6 } from "./chunks/LpAppShell-Bcv6EhqU.js";
|
|
8
8
|
import { _ as _7 } from "./chunks/LpAutocomplete-DExlIZe_.js";
|
|
9
9
|
import { _ as _8 } from "./chunks/LpAvatar-B3-xAOH3.js";
|
|
10
10
|
import { _ as _9 } from "./chunks/LpBadge-Fe0D1bYx.js";
|
|
@@ -19,12 +19,12 @@ import { _ as _15 } from "./chunks/LpCodeBlock-Bo0B4TFR.js";
|
|
|
19
19
|
import { _ as _16 } from "./chunks/LpColorPicker-BlXea7LM.js";
|
|
20
20
|
import { DEFAULT_SWATCHES, clampHsv, formatColor, hsvToHsl, hsvToRgb, isLight, normalizeHue, opaqueCss, parseColor, parseHex, rgbToHex, rgbToHsv } from "./components/color.js";
|
|
21
21
|
import { default as default3 } from "./components/LpCommandPalette.vue.js";
|
|
22
|
-
import { _ as _17 } from "./chunks/LpConfirmDialog-
|
|
22
|
+
import { _ as _17 } from "./chunks/LpConfirmDialog-BNAvOR24.js";
|
|
23
23
|
import { _ as _18 } from "./chunks/LpContextMenu-CwW1QXe_.js";
|
|
24
24
|
import { _ as _19 } from "./chunks/LpDatePicker-CwOToxGq.js";
|
|
25
25
|
import { _ as _20 } from "./chunks/LpDisclosure-ChQYmjlR.js";
|
|
26
26
|
import { _ as _21 } from "./chunks/LpDivider-CUX46KR0.js";
|
|
27
|
-
import { _ as _22 } from "./chunks/LpDrawer-
|
|
27
|
+
import { _ as _22 } from "./chunks/LpDrawer-DgaS2s2i.js";
|
|
28
28
|
import { _ as _23 } from "./chunks/LpDropdownMenu-DJpoqRCb.js";
|
|
29
29
|
import { default as default4 } from "./components/LpDropzone.vue.js";
|
|
30
30
|
import { _ as _24 } from "./chunks/LpEmptyState-Dsdqz1Wj.js";
|
|
@@ -40,8 +40,8 @@ import { fileNameOf } from "./components/lightbox.js";
|
|
|
40
40
|
import { _ as _31 } from "./chunks/LpLink-DCND-zyu.js";
|
|
41
41
|
import { _ as _32 } from "./chunks/LpLogViewer-CaRy5MeS.js";
|
|
42
42
|
import { _ as _33 } from "./chunks/LpMediaGallery-Cid7PGYx.js";
|
|
43
|
-
import { _ as _34 } from "./chunks/LpModal-
|
|
44
|
-
import { _ as _35 } from "./chunks/LpModalNav-
|
|
43
|
+
import { _ as _34 } from "./chunks/LpModal-8bja5bWS.js";
|
|
44
|
+
import { _ as _35 } from "./chunks/LpModalNav-w9kfwHqO.js";
|
|
45
45
|
import { _ as _36 } from "./chunks/LpNotificationBell-DyGGsMAM.js";
|
|
46
46
|
import { _ as _37 } from "./chunks/LpNumberField-CWuX08iX.js";
|
|
47
47
|
import { _ as _38 } from "./chunks/LpTimeField-K6nAGboX.js";
|
|
@@ -64,7 +64,7 @@ import { _ as _53 } from "./chunks/LpSelect-ANIVtrpM.js";
|
|
|
64
64
|
import { _ as _54 } from "./chunks/LpServiceNode-D8uJ8sGk.js";
|
|
65
65
|
import { _ as _55 } from "./chunks/LpShift-DXNsauQZ.js";
|
|
66
66
|
import { default as default6 } from "./components/LpShortcutsDialog.vue.js";
|
|
67
|
-
import { _ as _56 } from "./chunks/LpSidebar-
|
|
67
|
+
import { _ as _56 } from "./chunks/LpSidebar-DlTn5nXc.js";
|
|
68
68
|
import { _ as _57 } from "./chunks/LpSkeleton-CTI-vBgW.js";
|
|
69
69
|
import { _ as _58 } from "./chunks/LpSlider-BwNIBkAK.js";
|
|
70
70
|
import { _ as _59 } from "./chunks/LpSparkline-C6xQ2dwv.js";
|
|
@@ -87,7 +87,8 @@ import { addLeaf, addTab, countBlocks, countLeaves, makeLayout, moveLeaf, remove
|
|
|
87
87
|
import { blockTitle, defineBlocks } from "./layout/registry.js";
|
|
88
88
|
import { useLayout } from "./layout/useLayout.js";
|
|
89
89
|
import { useClipboard } from "./composables/useClipboard.js";
|
|
90
|
-
import { appleModifierLabel, isAppleKeyboard, useHotkeys } from "./composables/useHotkeys.js";
|
|
90
|
+
import { activeShortcuts, appleModifierLabel, isAppleKeyboard, mergeShortcutGroups, useHotkeys } from "./composables/useHotkeys.js";
|
|
91
|
+
import { provideGlass, useGlass } from "./composables/useGlass.js";
|
|
91
92
|
import { mergeClass, useMergedAttrs, useMergedClass } from "./composables/useMergedClass.js";
|
|
92
93
|
import { useInputFilter } from "./composables/useInputFilter.js";
|
|
93
94
|
import { easeOut, easeTravel, easingToken, prefersReducedMotion } from "./composables/easing.js";
|
|
@@ -215,6 +216,7 @@ export {
|
|
|
215
216
|
OSM_TILES,
|
|
216
217
|
T as THEME_COOKIE,
|
|
217
218
|
UI_CONFIG_VERSION,
|
|
219
|
+
activeShortcuts,
|
|
218
220
|
addLeaf,
|
|
219
221
|
addTab,
|
|
220
222
|
b as amber,
|
|
@@ -261,6 +263,7 @@ export {
|
|
|
261
263
|
makeLayout,
|
|
262
264
|
matchCountryByValue,
|
|
263
265
|
mergeClass,
|
|
266
|
+
mergeShortcutGroups,
|
|
264
267
|
moveLeaf,
|
|
265
268
|
niceScale,
|
|
266
269
|
n as nord,
|
|
@@ -273,6 +276,7 @@ export {
|
|
|
273
276
|
prefersReducedMotion,
|
|
274
277
|
presets,
|
|
275
278
|
project,
|
|
279
|
+
provideGlass,
|
|
276
280
|
removeBlock,
|
|
277
281
|
removeLeaf,
|
|
278
282
|
reorderTab,
|
|
@@ -296,6 +300,7 @@ export {
|
|
|
296
300
|
useAsyncTask,
|
|
297
301
|
useClipboard,
|
|
298
302
|
useFormDraft,
|
|
303
|
+
useGlass,
|
|
299
304
|
useHotkeys,
|
|
300
305
|
useInputFilter,
|
|
301
306
|
useLayout,
|