react-os-shell 4.21.1 → 4.31.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/{Browser-2GQLOOS7.js → Browser-63NYU74S.js} +6 -6
- package/dist/{Browser-2GQLOOS7.js.map → Browser-63NYU74S.js.map} +1 -1
- package/dist/{Calculator-QCAJ6ITI.js → Calculator-XERXEV35.js} +5 -5
- package/dist/{Calculator-QCAJ6ITI.js.map → Calculator-XERXEV35.js.map} +1 -1
- package/dist/ConfirmDialog-EEH4CWSW.js +3 -0
- package/dist/{ConfirmDialog-WAM5OKAV.js.map → ConfirmDialog-EEH4CWSW.js.map} +1 -1
- package/dist/{CurrencyConverter-PCYC6RL5.js → CurrencyConverter-OSZISLHT.js} +5 -5
- package/dist/{CurrencyConverter-PCYC6RL5.js.map → CurrencyConverter-OSZISLHT.js.map} +1 -1
- package/dist/{Documents-MOQNF6HE.js → Documents-YP4GBBRF.js} +6 -6
- package/dist/{Documents-MOQNF6HE.js.map → Documents-YP4GBBRF.js.map} +1 -1
- package/dist/{Files-YBH6XKXE.js → Files-6JWIE3VH.js} +7 -7
- package/dist/{Files-YBH6XKXE.js.map → Files-6JWIE3VH.js.map} +1 -1
- package/dist/{Notepad-E3L6AOGU.js → Notepad-EHO56UNK.js} +6 -6
- package/dist/{Notepad-E3L6AOGU.js.map → Notepad-EHO56UNK.js.map} +1 -1
- package/dist/{PomodoroTimer-YABFEPEV.js → PomodoroTimer-5ZSIG7SQ.js} +5 -5
- package/dist/{PomodoroTimer-YABFEPEV.js.map → PomodoroTimer-5ZSIG7SQ.js.map} +1 -1
- package/dist/{Preview-SNPHS4PS.js → Preview-67IPCMSN.js} +6 -6
- package/dist/{Preview-SNPHS4PS.js.map → Preview-67IPCMSN.js.map} +1 -1
- package/dist/{Spreadsheet-JXQCWZES.js → Spreadsheet-HVXBAFR7.js} +6 -6
- package/dist/{Spreadsheet-JXQCWZES.js.map → Spreadsheet-HVXBAFR7.js.map} +1 -1
- package/dist/{Stock-IPLLRUOC.js → Stock-4BORXILI.js} +5 -5
- package/dist/{Stock-IPLLRUOC.js.map → Stock-4BORXILI.js.map} +1 -1
- package/dist/{Weather-SI5QN7X2.js → Weather-ZPPSEUIY.js} +5 -5
- package/dist/{Weather-SI5QN7X2.js.map → Weather-ZPPSEUIY.js.map} +1 -1
- package/dist/{WorldClock-WYDSMUWX.js → WorldClock-LBKYWDWE.js} +5 -5
- package/dist/{WorldClock-WYDSMUWX.js.map → WorldClock-LBKYWDWE.js.map} +1 -1
- package/dist/apps/index.js +16 -16
- package/dist/{chunk-XBV7NUZK.js → chunk-7NIFBQUX.js} +343 -74
- package/dist/chunk-7NIFBQUX.js.map +1 -0
- package/dist/{chunk-XRBJARD7.js → chunk-BT3EQNH3.js} +4 -4
- package/dist/{chunk-XRBJARD7.js.map → chunk-BT3EQNH3.js.map} +1 -1
- package/dist/{chunk-IGPSRRL7.js → chunk-GUWAKATU.js} +10 -7
- package/dist/chunk-GUWAKATU.js.map +1 -0
- package/dist/{chunk-HYAW6KIL.js → chunk-HNH7FOYB.js} +16 -4
- package/dist/chunk-HNH7FOYB.js.map +1 -0
- package/dist/{chunk-L2O6B5KT.js → chunk-OXLLRKBC.js} +24 -4
- package/dist/chunk-OXLLRKBC.js.map +1 -0
- package/dist/chunk-SGS3IQEL.js +7 -0
- package/dist/{chunk-CM2NWGYZ.js.map → chunk-SGS3IQEL.js.map} +1 -1
- package/dist/{chunk-Q3AOIJ7B.js → chunk-X6DOWIY2.js} +3 -3
- package/dist/{chunk-Q3AOIJ7B.js.map → chunk-X6DOWIY2.js.map} +1 -1
- package/dist/{index-Czn1re5M.d.ts → index-CdxMm6Dk.d.ts} +175 -35
- package/dist/index.d.ts +53 -29
- package/dist/index.js +54 -146
- package/dist/index.js.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +4 -4
- package/package.json +1 -1
- package/dist/ConfirmDialog-WAM5OKAV.js +0 -3
- package/dist/chunk-CM2NWGYZ.js +0 -7
- package/dist/chunk-HYAW6KIL.js.map +0 -1
- package/dist/chunk-IGPSRRL7.js.map +0 -1
- package/dist/chunk-L2O6B5KT.js.map +0 -1
- package/dist/chunk-XBV7NUZK.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -5,33 +5,33 @@ export { ImageAnnotator_default as ImageAnnotator } from './chunk-X5PZYTAK.js';
|
|
|
5
5
|
import { publishDesktopFolders, requestFilesTrashView, FolderGlyph, requestFilesDesktopFolderView, FileIconTile } from './chunk-OQ7GRU7G.js';
|
|
6
6
|
import './chunk-4SQU5YV6.js';
|
|
7
7
|
import { setPdfPreview } from './chunk-BV6SQ46N.js';
|
|
8
|
-
import { CMD_K, CMD_DOT, CMD_A, ALT_SHIFT_N, ALT_SHIFT_E, CMD_ENTER, CMD_S, ALT_SHIFT_D, CMD_Z, CMD_SHIFT_Z, formatDate, useTheme, resolveTheme, useClickOutside, ListLoadError, ListFooter, firstEnabledIndex, Button_default, FormField, Input_default, applyThemePrefs, lastEnabledIndex, nextEnabledIndex, matchTypeahead } from './chunk-
|
|
9
|
-
export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, CountBadge, DashboardTemplate, DataTable, DataTablePage, DateRangePicker, DescriptionList, Divider, DonutChart, Drawer, ENTER, EmailTemplate, EmptyState, ErrorPage, FilePicker, FormField, FormLayoutPage, GalleryTemplate, Grid, HelpCenter, INPUT_BASE, INPUT_SIZES, Inline, Input_default as Input, InputNumber_default as InputNumber, Kanban, Label, ListFooter, ListLoadError, LoadingSpinner, MAX_FRACTION_DIGITS, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NumericKeypad, PageHeader, Pagination, Paragraph, Radio_default as Radio, Result, SHIFT, SearchableSelect, Segmented, Select_default as Select, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, Skeleton, Sparkline, Stack, StatCard, Statistic, StatusBadge, StatusBadgeProvider, Switch, Tabs, Text, Textarea_default as Textarea, TileButton_default as TileButton, Title, Tooltip, TopNav, appendKey, applyThemePrefs, backspace, formatDate, inputClasses, isMac, isSeverityTone, mediaFileName, resolveTheme, severityOf, toISODate, useClickOutside, useTheme } from './chunk-
|
|
10
|
-
export { Breadcrumbs } from './chunk-
|
|
8
|
+
import { CMD_K, CMD_DOT, CMD_A, ALT_SHIFT_N, ALT_SHIFT_E, CMD_ENTER, CMD_S, ALT_SHIFT_D, CMD_Z, CMD_SHIFT_Z, formatDate, useTheme, GlobalSearch, resolveTheme, useClickOutside, ListLoadError, ListFooter, firstEnabledIndex, Button_default, FormField, Input_default, applyThemePrefs, lastEnabledIndex, nextEnabledIndex, matchTypeahead } from './chunk-7NIFBQUX.js';
|
|
9
|
+
export { ALT, ALT_SHIFT_D, ALT_SHIFT_E, ALT_SHIFT_N, Accordion, AuthScreen, Avatar, AvatarGroup, Banner, BarChart, Button_default as Button, CMD_A, CMD_DOT, CMD_ENTER, CMD_K, CMD_S, Card, ChatTemplate, Checkbox_default as Checkbox, CheckoutTemplate, ColoredBadge, ContainerFillChart, CountBadge, DashboardTemplate, DataTable, DataTablePage, DatePicker_default as DatePicker, DateRangePicker, DescriptionList, Divider, DonutChart, Drawer, ENTER, EmailTemplate, EmptyState, ErrorPage, FilePicker, FormField, FormLayoutPage, GalleryTemplate, GlobalSearch, Grid, HelpCenter, INPUT_BASE, INPUT_SIZES, IconButton_default as IconButton, Inline, Input_default as Input, InputNumber_default as InputNumber, Kanban, Label, ListFooter, ListLoadError, LoadingSpinner, MAX_FRACTION_DIGITS, MOD, Markdown, MediaUploadField, MediaUploadGrid, MetricBar, MilestoneTimeline, NativeSelect, NumericKeypad, PageHeader, Pagination, Paragraph, Radio_default as Radio, Result, SHIFT, SearchableSelect, Segmented, Select_default as Select, SidebarActionButton, SidebarGroupLabel, SidebarNavItem, Skeleton, Sparkline, Stack, StatCard, Statistic, StatusBadge, StatusBadgeProvider, Switch_default as Switch, Tabs, Text, Textarea_default as Textarea, TileButton_default as TileButton, Title, Tooltip, TopNav, appendKey, applyThemePrefs, backspace, formatDate, inputClasses, isMac, isSeverityTone, mediaFileName, resolveTheme, severityOf, toISODate, useClickOutside, useTheme } from './chunk-7NIFBQUX.js';
|
|
10
|
+
export { Breadcrumbs } from './chunk-HNH7FOYB.js';
|
|
11
11
|
import { withSpareRow, EditableGrid } from './chunk-DC6BYGZ6.js';
|
|
12
12
|
export { EditableGrid } from './chunk-DC6BYGZ6.js';
|
|
13
13
|
import { SidebarLayout } from './chunk-YG45DAUT.js';
|
|
14
14
|
export { SidebarLayout } from './chunk-YG45DAUT.js';
|
|
15
15
|
import { toast_default } from './chunk-4AKVHY4B.js';
|
|
16
16
|
export { toast_default as toast } from './chunk-4AKVHY4B.js';
|
|
17
|
-
import { APP_VERSION, VERSION } from './chunk-
|
|
18
|
-
export { VERSION } from './chunk-
|
|
17
|
+
import { APP_VERSION, VERSION } from './chunk-SGS3IQEL.js';
|
|
18
|
+
export { VERSION } from './chunk-SGS3IQEL.js';
|
|
19
19
|
import { playNotification, playStartup, soundsEnabled, getSoundConfig, SOUND_PACK_KEYS, SOUND_PACKS, SOUND_TYPES, SOUND_TYPE_LABELS, setSoundForType, previewSound, setAllSounds, playLogout } from './chunk-D7PYW2QS.js';
|
|
20
20
|
import { useAuth } from './chunk-EWDYCO65.js';
|
|
21
21
|
export { setShellAuthBridge } from './chunk-EWDYCO65.js';
|
|
22
|
-
import { cancelWindowFront, requestWindowFront, useWindowManager, WINDOW_REGISTRY, isPageEntry, Modal, setPerfCollecting, drainPerfEvents, markMenuOpen, SIDEBAR_STRIP_W, forgetMaximizedWindowBoxes, ModalActions, useModalActive, client_default, LoadingSpinner, isShellApiClientConfigured, useUndo, CancelButton, setWindowPosition } from './chunk-
|
|
23
|
-
export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, UndoProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, beginWindowGesture, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, markMenuOpen, requestWindowFront, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useIsActiveWindow, useModalActive, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-
|
|
22
|
+
import { cancelWindowFront, requestWindowFront, useWindowManager, WINDOW_REGISTRY, isPageEntry, Modal, setPerfCollecting, drainPerfEvents, markMenuOpen, SIDEBAR_STRIP_W, forgetMaximizedWindowBoxes, ModalActions, useModalActive, client_default, LoadingSpinner, isShellApiClientConfigured, useUndo, useEnclosingModalId, CancelButton, setWindowPosition } from './chunk-GUWAKATU.js';
|
|
23
|
+
export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, UndoProvider, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowTitle, beginWindowGesture, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isEntityEntry, isPageEntry, markMenuOpen, requestWindowFront, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, toggleExposeMode, useEnclosingModalId, useIsActiveWindow, useModalActive, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-GUWAKATU.js';
|
|
24
24
|
import { PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, useShellPrefs, useIsMobile } from './chunk-C22EFSND.js';
|
|
25
25
|
export { PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, ShellPrefsProvider, useIsMobile, useLocalStoragePrefs, useShellPrefs } from './chunk-C22EFSND.js';
|
|
26
|
-
import { registerModalEscapeInterceptor } from './chunk-
|
|
27
|
-
export { ConfirmProvider, Dialog, confirm, confirmDestructive, prompt, registerModalEscapeInterceptor, useConfirm, useFocusTrap, useScrollLock } from './chunk-
|
|
26
|
+
import { registerModalEscapeInterceptor } from './chunk-OXLLRKBC.js';
|
|
27
|
+
export { ConfirmProvider, Dialog, confirm, confirmDestructive, prompt, registerModalEscapeInterceptor, useConfirm, useFocusTrap, useScrollLock } from './chunk-OXLLRKBC.js';
|
|
28
28
|
import { startMenuCategories, navVisible, navSections, isSection, navIcons, isReachable, sectionIcons, useShellAuth, visibleChildren } from './chunk-WNLPTLT6.js';
|
|
29
29
|
export { ShellAuthProvider, setShellNavIcons, useShellAuth } from './chunk-WNLPTLT6.js';
|
|
30
|
-
import {
|
|
30
|
+
import { GLASS_INPUT_BG, glassStyle } from './chunk-3CUSBZWG.js';
|
|
31
31
|
export { GLASS_DIVIDER, GLASS_INPUT_BG, glassStyle } from './chunk-3CUSBZWG.js';
|
|
32
|
-
import { createContext, lazy, useSyncExternalStore, useState,
|
|
33
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
32
|
+
import { createContext, lazy, useSyncExternalStore, useState, useEffect, useRef, useCallback, useLayoutEffect, useMemo, useContext, isValidElement, cloneElement, Suspense, useId } from 'react';
|
|
34
33
|
import { Dialog, DialogBackdrop, DialogPanel } from '@headlessui/react';
|
|
34
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
35
35
|
import { createPortal } from 'react-dom';
|
|
36
36
|
import { useQueryClient, useQuery, useMutation, useInfiniteQuery } from '@tanstack/react-query';
|
|
37
37
|
import 'react-router-dom';
|
|
@@ -75,138 +75,6 @@ function createWindowTarget(windowKey) {
|
|
|
75
75
|
function useWindowTarget(target) {
|
|
76
76
|
return useSyncExternalStore(target.subscribe, target.get, target.get);
|
|
77
77
|
}
|
|
78
|
-
var DEFAULT_MAGNIFIER = "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z";
|
|
79
|
-
function GlobalSearch({ providers, typeIcons, placeholder = "Search..." } = {}) {
|
|
80
|
-
const [open, setOpen] = useState(false);
|
|
81
|
-
const [query, setQuery] = useState("");
|
|
82
|
-
const [results, setResults] = useState([]);
|
|
83
|
-
const [loading, setLoading] = useState(false);
|
|
84
|
-
const [activeIdx, setActiveIdx] = useState(0);
|
|
85
|
-
const inputRef = useRef(null);
|
|
86
|
-
const { openEntity } = useWindowManager();
|
|
87
|
-
const debounceRef = useRef();
|
|
88
|
-
useEffect(() => {
|
|
89
|
-
const handler = (e) => {
|
|
90
|
-
if ((e.ctrlKey || e.metaKey) && e.key === "k") {
|
|
91
|
-
e.preventDefault();
|
|
92
|
-
setOpen((prev) => !prev);
|
|
93
|
-
}
|
|
94
|
-
if (e.key === "Escape" && open) {
|
|
95
|
-
setOpen(false);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
window.addEventListener("keydown", handler);
|
|
99
|
-
return () => window.removeEventListener("keydown", handler);
|
|
100
|
-
}, [open]);
|
|
101
|
-
useEffect(() => {
|
|
102
|
-
if (open) {
|
|
103
|
-
setTimeout(() => inputRef.current?.focus(), 50);
|
|
104
|
-
} else {
|
|
105
|
-
setQuery("");
|
|
106
|
-
setResults([]);
|
|
107
|
-
}
|
|
108
|
-
}, [open]);
|
|
109
|
-
useEffect(() => {
|
|
110
|
-
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
111
|
-
if (query.length < 2) {
|
|
112
|
-
setResults([]);
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
if (!providers || providers.length === 0) {
|
|
116
|
-
setResults([]);
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
debounceRef.current = setTimeout(async () => {
|
|
120
|
-
setLoading(true);
|
|
121
|
-
try {
|
|
122
|
-
const responses = await Promise.all(providers.map((p) => p(query).catch(() => [])));
|
|
123
|
-
setResults(responses.flat());
|
|
124
|
-
setActiveIdx(0);
|
|
125
|
-
} catch {
|
|
126
|
-
setResults([]);
|
|
127
|
-
}
|
|
128
|
-
setLoading(false);
|
|
129
|
-
}, 250);
|
|
130
|
-
return () => {
|
|
131
|
-
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
132
|
-
};
|
|
133
|
-
}, [query, providers]);
|
|
134
|
-
const handleSelect = useCallback((result) => {
|
|
135
|
-
setOpen(false);
|
|
136
|
-
openEntity(result.entity_type, result.entity_id, null, result.label);
|
|
137
|
-
}, [openEntity]);
|
|
138
|
-
const handleKeyDown = (e) => {
|
|
139
|
-
if (e.key === "ArrowDown") {
|
|
140
|
-
e.preventDefault();
|
|
141
|
-
setActiveIdx((i) => Math.min(i + 1, results.length - 1));
|
|
142
|
-
} else if (e.key === "ArrowUp") {
|
|
143
|
-
e.preventDefault();
|
|
144
|
-
setActiveIdx((i) => Math.max(i - 1, 0));
|
|
145
|
-
} else if (e.key === "Enter" && results[activeIdx]) {
|
|
146
|
-
handleSelect(results[activeIdx]);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
if (!open) return null;
|
|
150
|
-
return /* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-[200] flex items-start justify-center pt-[15vh]", onClick: () => setOpen(false), children: [
|
|
151
|
-
/* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-sm" }),
|
|
152
|
-
/* @__PURE__ */ jsxs("div", { className: "relative z-10 w-full max-w-xl rounded-2xl overflow-hidden", onClick: (e) => e.stopPropagation(), style: glassStyle(), children: [
|
|
153
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-4 py-3 border-b border-gray-200", children: [
|
|
154
|
-
/* @__PURE__ */ jsx("svg", { className: "h-5 w-5 text-gray-400 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: DEFAULT_MAGNIFIER }) }),
|
|
155
|
-
/* @__PURE__ */ jsx(
|
|
156
|
-
"input",
|
|
157
|
-
{
|
|
158
|
-
ref: inputRef,
|
|
159
|
-
type: "text",
|
|
160
|
-
value: query,
|
|
161
|
-
onChange: (e) => setQuery(e.target.value),
|
|
162
|
-
onKeyDown: handleKeyDown,
|
|
163
|
-
placeholder,
|
|
164
|
-
className: "flex-1 text-sm bg-transparent border-0 outline-none placeholder-gray-400"
|
|
165
|
-
}
|
|
166
|
-
),
|
|
167
|
-
/* @__PURE__ */ jsx("kbd", { className: "hidden sm:inline-flex items-center rounded border border-gray-300 px-1.5 py-0.5 text-[10px] font-medium text-gray-400", children: "ESC" })
|
|
168
|
-
] }),
|
|
169
|
-
/* @__PURE__ */ jsxs("div", { className: "max-h-[50vh] overflow-y-auto", children: [
|
|
170
|
-
loading && /* @__PURE__ */ jsx("div", { className: "px-4 py-6 text-center text-sm text-gray-400", children: "Searching..." }),
|
|
171
|
-
!loading && query.length >= 2 && results.length === 0 && /* @__PURE__ */ jsx("div", { className: "px-4 py-6 text-center text-sm text-gray-400", children: "No results found." }),
|
|
172
|
-
!loading && results.length > 0 && /* @__PURE__ */ jsx("ul", { className: "py-2", children: results.map((r, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
173
|
-
"button",
|
|
174
|
-
{
|
|
175
|
-
className: `flex items-center gap-3 w-full px-4 py-2.5 text-left transition-colors ${i === activeIdx ? "bg-blue-50" : "hover:bg-gray-50"}`,
|
|
176
|
-
onClick: () => handleSelect(r),
|
|
177
|
-
onMouseEnter: () => setActiveIdx(i),
|
|
178
|
-
children: [
|
|
179
|
-
/* @__PURE__ */ jsx("svg", { className: "h-4 w-4 text-gray-400 shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: typeIcons?.[r.type] || DEFAULT_MAGNIFIER }) }),
|
|
180
|
-
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
181
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-gray-900 truncate", children: r.label }),
|
|
182
|
-
r.sub && /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-400 truncate", children: r.sub })
|
|
183
|
-
] }),
|
|
184
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 rounded-full bg-gray-100 px-2 py-0.5 text-[10px] font-medium text-gray-500", children: r.type })
|
|
185
|
-
]
|
|
186
|
-
}
|
|
187
|
-
) }, `${r.type}-${r.label}-${i}`)) }),
|
|
188
|
-
!loading && query.length < 2 && /* @__PURE__ */ jsx("div", { className: "px-4 py-6 text-center text-sm text-gray-400", children: "Type at least 2 characters to search..." })
|
|
189
|
-
] }),
|
|
190
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2 border-t border-gray-100 bg-gray-50 text-[11px] text-gray-400", children: [
|
|
191
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
192
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
193
|
-
/* @__PURE__ */ jsx("kbd", { className: "rounded border border-gray-300 px-1 py-0.5 font-medium", children: "\u2191" }),
|
|
194
|
-
/* @__PURE__ */ jsx("kbd", { className: "rounded border border-gray-300 px-1 py-0.5 font-medium", children: "\u2193" }),
|
|
195
|
-
" navigate"
|
|
196
|
-
] }),
|
|
197
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
198
|
-
/* @__PURE__ */ jsx("kbd", { className: "rounded border border-gray-300 px-1 py-0.5 font-medium", children: "Enter" }),
|
|
199
|
-
" open"
|
|
200
|
-
] })
|
|
201
|
-
] }),
|
|
202
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
203
|
-
/* @__PURE__ */ jsx("kbd", { className: "rounded border border-gray-300 px-1 py-0.5 font-medium", children: "Esc" }),
|
|
204
|
-
" close"
|
|
205
|
-
] })
|
|
206
|
-
] })
|
|
207
|
-
] })
|
|
208
|
-
] });
|
|
209
|
-
}
|
|
210
78
|
var sections = [
|
|
211
79
|
{
|
|
212
80
|
title: "Global",
|
|
@@ -3946,7 +3814,13 @@ function Layout({
|
|
|
3946
3814
|
onReportBug: host.onReportBug
|
|
3947
3815
|
}
|
|
3948
3816
|
),
|
|
3949
|
-
/* @__PURE__ */ jsx(
|
|
3817
|
+
/* @__PURE__ */ jsx(
|
|
3818
|
+
GlobalSearch,
|
|
3819
|
+
{
|
|
3820
|
+
...search,
|
|
3821
|
+
onSelect: (result) => openEntity(result.entity_type, result.entity_id, null, result.label)
|
|
3822
|
+
}
|
|
3823
|
+
),
|
|
3950
3824
|
/* @__PURE__ */ jsx(ShortcutHelp, {})
|
|
3951
3825
|
] });
|
|
3952
3826
|
}
|
|
@@ -6995,6 +6869,40 @@ function useEditHotkey(callback) {
|
|
|
6995
6869
|
}, [callback, isActive]);
|
|
6996
6870
|
}
|
|
6997
6871
|
|
|
6998
|
-
|
|
6872
|
+
// src/shell/modalEventScope.ts
|
|
6873
|
+
function isEventForModal(detail, modalId) {
|
|
6874
|
+
const from = detail?.modalId;
|
|
6875
|
+
if (typeof from !== "string" || from === "") return true;
|
|
6876
|
+
if (!modalId) return true;
|
|
6877
|
+
return from === modalId;
|
|
6878
|
+
}
|
|
6879
|
+
|
|
6880
|
+
// src/hooks/useModalSave.ts
|
|
6881
|
+
function useModalSave(callback) {
|
|
6882
|
+
const modalId = useEnclosingModalId();
|
|
6883
|
+
useEffect(() => {
|
|
6884
|
+
if (!callback) return;
|
|
6885
|
+
const handler = (e) => {
|
|
6886
|
+
if (!isEventForModal(e.detail, modalId)) return;
|
|
6887
|
+
callback();
|
|
6888
|
+
};
|
|
6889
|
+
document.addEventListener("modal-save", handler);
|
|
6890
|
+
return () => document.removeEventListener("modal-save", handler);
|
|
6891
|
+
}, [callback, modalId]);
|
|
6892
|
+
}
|
|
6893
|
+
function useModalDuplicate(callback) {
|
|
6894
|
+
const modalId = useEnclosingModalId();
|
|
6895
|
+
useEffect(() => {
|
|
6896
|
+
if (!callback) return;
|
|
6897
|
+
const handler = (e) => {
|
|
6898
|
+
if (!isEventForModal(e.detail, modalId)) return;
|
|
6899
|
+
callback();
|
|
6900
|
+
};
|
|
6901
|
+
document.addEventListener("modal-duplicate", handler);
|
|
6902
|
+
return () => document.removeEventListener("modal-duplicate", handler);
|
|
6903
|
+
}, [callback, modalId]);
|
|
6904
|
+
}
|
|
6905
|
+
|
|
6906
|
+
export { BLOCKED_PCT_CPU, BehaviorPanel, BulkImportGrid, ChangePasswordForm, Customization, DEV_BANNER_TEXT, Desktop, DesktopHostProvider, DevIndicator, EntityList, FilterBar, LOG_CAP, Layout, MIN_EVENT_SAMPLES, MIN_GROUP_SAMPLES, NotificationBell, PdfActionButton, PerfStats, ResizableTable, SMOOTH_FPS, ServerStatusIndicator, ShellEntityFetcherProvider, ShortcutHelp, SoundsPanel, StartMenu, SystemPreferences, UndoControls, WidgetManager, appendRecord as appendPerfRecord, applyDevTitle, classifyActivity, classify as classifyPerf, createWindowRegistry, createWindowTarget, describeMachine, describePerfReport, findDuplicateKeys, isDevEnv, isInteracting, mergeBulkItems, toCsv as perfLogToCsv, perfReportFile, readEnvironment as readPerfEnvironment, requestAsyncEnvironment, summariseFrames, summariseLog as summarisePerfLog, useColumnConfig, useDesktopHost, useEditHotkey, useFilters, useInfiniteScroll, useModalDuplicate, useModalSave, useNewHotkey, useShellEntityFetcher, useSort, useTableNav, useWindowTarget };
|
|
6999
6907
|
//# sourceMappingURL=index.js.map
|
|
7000
6908
|
//# sourceMappingURL=index.js.map
|