{"version":3,"file":"app.mjs","names":[],"sources":["../../src/renderer/app/index.ts"],"sourcesContent":["/**\n * Renderer process API for app module\n * Usage in renderer process:\n *\n * import * as app from 'electron-main-bridge/renderer/app';\n * const version = await app.getVersion();\n */\n\nimport type {\n  AboutPanelOptions,\n  AppPathName,\n  FocusOptions,\n  GetFileIconOptions,\n  GPUFeatureStatus,\n  LoginItemSettings,\n  LoginItemSettingsOptions,\n  ProcessMetric,\n  SerializedNativeImage,\n  SetLoginItemSettingsOptions,\n} from \"@shared/app.types.js\";\n\n// ============================================================================\n// App Information\n// ============================================================================\n\nexport async function getName(): Promise<string> {\n  return (await window.rpc.call(\"app.getName\")) as string;\n}\n\nexport async function setName(name: string): Promise<void> {\n  await window.rpc.call(\"app.setName\", name);\n}\n\nexport async function getVersion(): Promise<string> {\n  return (await window.rpc.call(\"app.getVersion\")) as string;\n}\n\nexport async function getAppPath(): Promise<string> {\n  return (await window.rpc.call(\"app.getAppPath\")) as string;\n}\n\nexport async function getLocale(): Promise<string> {\n  return (await window.rpc.call(\"app.getLocale\")) as string;\n}\n\nexport async function getSystemLocale(): Promise<string> {\n  return (await window.rpc.call(\"app.getSystemLocale\")) as string;\n}\n\nexport async function getPreferredSystemLanguages(): Promise<string[]> {\n  return (await window.rpc.call(\"app.getPreferredSystemLanguages\")) as string[];\n}\n\nexport async function getLocaleCountryCode(): Promise<string> {\n  return (await window.rpc.call(\"app.getLocaleCountryCode\")) as string;\n}\n\nexport async function isReady(): Promise<boolean> {\n  return (await window.rpc.call(\"app.isReady\")) as boolean;\n}\n\n// ============================================================================\n// Path Management\n// ============================================================================\n\nexport async function getPath(name: AppPathName): Promise<string> {\n  return (await window.rpc.call(\"app.getPath\", name)) as string;\n}\n\nexport async function setPath(name: AppPathName, path: string): Promise<void> {\n  await window.rpc.call(\"app.setPath\", name, path);\n}\n\nexport async function setAppLogsPath(path?: string): Promise<void> {\n  await window.rpc.call(\"app.setAppLogsPath\", path);\n}\n\n// ============================================================================\n// App Control\n// ============================================================================\n\nexport async function quit(): Promise<void> {\n  await window.rpc.call(\"app.quit\");\n}\n\nexport async function exit(exitCode?: number): Promise<void> {\n  await window.rpc.call(\"app.exit\", exitCode);\n}\n\nexport async function relaunch(\n  options?: import(\"@shared/app.types.js\").RelaunchOptions,\n): Promise<void> {\n  await window.rpc.call(\"app.relaunch\", options);\n}\n\nexport async function focus(options?: FocusOptions): Promise<void> {\n  await window.rpc.call(\"app.focus\", options);\n}\n\nexport async function hide(): Promise<void> {\n  await window.rpc.call(\"app.hide\");\n}\n\nexport async function show(): Promise<void> {\n  await window.rpc.call(\"app.show\");\n}\n\n// ============================================================================\n// Recent Documents\n// ============================================================================\n\nexport async function addRecentDocument(path: string): Promise<void> {\n  await window.rpc.call(\"app.addRecentDocument\", path);\n}\n\nexport async function clearRecentDocuments(): Promise<void> {\n  await window.rpc.call(\"app.clearRecentDocuments\");\n}\n\nexport async function getRecentDocuments(): Promise<string[]> {\n  return (await window.rpc.call(\"app.getRecentDocuments\")) as string[];\n}\n\n// ============================================================================\n// Protocol Handling\n// ============================================================================\n\nexport async function setAsDefaultProtocolClient(\n  protocol: string,\n  path?: string,\n  args?: string[],\n): Promise<boolean> {\n  return (await window.rpc.call(\"app.setAsDefaultProtocolClient\", protocol, path, args)) as boolean;\n}\n\nexport async function removeAsDefaultProtocolClient(\n  protocol: string,\n  path?: string,\n  args?: string[],\n): Promise<boolean> {\n  return (await window.rpc.call(\n    \"app.removeAsDefaultProtocolClient\",\n    protocol,\n    path,\n    args,\n  )) as boolean;\n}\n\nexport async function isDefaultProtocolClient(\n  protocol: string,\n  path?: string,\n  args?: string[],\n): Promise<boolean> {\n  return (await window.rpc.call(\"app.isDefaultProtocolClient\", protocol, path, args)) as boolean;\n}\n\n// ============================================================================\n// Single Instance Lock\n// ============================================================================\n\nexport async function requestSingleInstanceLock(additionalData?: unknown): Promise<boolean> {\n  return (await window.rpc.call(\"app.requestSingleInstanceLock\", additionalData)) as boolean;\n}\n\nexport async function hasSingleInstanceLock(): Promise<boolean> {\n  return (await window.rpc.call(\"app.hasSingleInstanceLock\")) as boolean;\n}\n\nexport async function releaseSingleInstanceLock(): Promise<void> {\n  await window.rpc.call(\"app.releaseSingleInstanceLock\");\n}\n\n// ============================================================================\n// Badge Notification\n// ============================================================================\n\nexport async function setBadgeCount(count: number): Promise<void> {\n  await window.rpc.call(\"app.setBadgeCount\", count);\n}\n\nexport async function getBadgeCount(): Promise<number> {\n  return (await window.rpc.call(\"app.getBadgeCount\")) as number;\n}\n\n// ============================================================================\n// Login Item\n// ============================================================================\n\nexport async function getLoginItemSettings(\n  options?: LoginItemSettingsOptions,\n): Promise<LoginItemSettings> {\n  return (await window.rpc.call(\"app.getLoginItemSettings\", options)) as LoginItemSettings;\n}\n\nexport async function setLoginItemSettings(settings: SetLoginItemSettingsOptions): Promise<void> {\n  await window.rpc.call(\"app.setLoginItemSettings\", settings);\n}\n\n// ============================================================================\n// Accessibility\n// ============================================================================\n\nexport async function isAccessibilitySupportEnabled(): Promise<boolean> {\n  return (await window.rpc.call(\"app.isAccessibilitySupportEnabled\")) as boolean;\n}\n\nexport async function setAccessibilitySupportEnabled(enabled: boolean): Promise<void> {\n  await window.rpc.call(\"app.setAccessibilitySupportEnabled\", enabled);\n}\n\n// ============================================================================\n// About Panel\n// ============================================================================\n\nexport async function showAboutPanel(): Promise<void> {\n  await window.rpc.call(\"app.showAboutPanel\");\n}\n\nexport async function setAboutPanelOptions(options: AboutPanelOptions): Promise<void> {\n  await window.rpc.call(\"app.setAboutPanelOptions\", options);\n}\n\n// ============================================================================\n// GPU\n// ============================================================================\n\nexport async function getGPUFeatureStatus(): Promise<GPUFeatureStatus> {\n  return (await window.rpc.call(\"app.getGPUFeatureStatus\")) as GPUFeatureStatus;\n}\n\nexport async function getGPUInfo(infoType: \"complete\" | \"basic\"): Promise<unknown> {\n  return await window.rpc.call(\"app.getGPUInfo\", infoType);\n}\n\n// ============================================================================\n// Process Metrics\n// ============================================================================\n\nexport async function getAppMetrics(): Promise<ProcessMetric[]> {\n  return (await window.rpc.call(\"app.getAppMetrics\")) as ProcessMetric[];\n}\n\n// ============================================================================\n// Emoji Panel\n// ============================================================================\n\nexport async function isEmojiPanelSupported(): Promise<boolean> {\n  return (await window.rpc.call(\"app.isEmojiPanelSupported\")) as boolean;\n}\n\nexport async function showEmojiPanel(): Promise<void> {\n  await window.rpc.call(\"app.showEmojiPanel\");\n}\n\n// ============================================================================\n// File Icon\n// ============================================================================\n\nexport async function getFileIcon(\n  path: string,\n  options?: GetFileIconOptions,\n): Promise<SerializedNativeImage> {\n  return (await window.rpc.call(\"app.getFileIcon\", path, options)) as SerializedNativeImage;\n}\n\n// ============================================================================\n// Event Subscription\n// ============================================================================\n\nexport interface AppEventCallbacks {\n  \"window-all-closed\": () => void;\n  quit: (data: { exitCode: number }) => void;\n  \"browser-window-created\": (data: { id: number; title: string }) => void;\n  \"browser-window-focus\": (data: { id: number; title: string }) => void;\n  \"browser-window-blur\": (data: { id: number; title: string }) => void;\n  \"web-contents-created\": (data: { id: number }) => void;\n  \"open-file\": (data: { path: string }) => void;\n  \"open-url\": (data: { url: string }) => void;\n  \"second-instance\": (data: { argv: string[]; workingDirectory: string }) => void;\n  \"accessibility-support-changed\": (data: { enabled: boolean }) => void;\n}\n\n/**\n * Subscribe to app events\n * @param event - The event name to subscribe to\n * @param callback - The callback function when the event fires\n * @returns A function to unsubscribe\n */\nexport function on<K extends keyof AppEventCallbacks>(\n  event: K,\n  callback: AppEventCallbacks[K],\n): () => void {\n  return window.rpc.on(`app.${event}`, callback as (...args: unknown[]) => void);\n}\n\n/**\n * Subscribe to app event once (auto-unsubscribe after first event)\n * @param event - The event name to subscribe to\n * @param callback - The callback function when the event fires\n */\nexport function once<K extends keyof AppEventCallbacks>(\n  event: K,\n  callback: AppEventCallbacks[K],\n): void {\n  window.rpc.once(`app.${event}`, callback as (...args: unknown[]) => void);\n}\n\n/**\n * Unsubscribe from app events\n * @param event - The event name to unsubscribe from\n * @param callback - Optional callback to remove (removes all if not provided)\n */\nexport function off<K extends keyof AppEventCallbacks>(\n  event: K,\n  callback?: AppEventCallbacks[K],\n): void {\n  window.rpc.off(`app.${event}`, callback as ((...args: unknown[]) => void) | undefined);\n}\n"],"mappings":"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"}