{"version":3,"file":"shell.mjs","names":[],"sources":["../../src/main/shell/index.ts"],"sourcesContent":["/**\n * Main process handlers for shell module\n */\n\nimport { shell } from \"electron\";\nimport type { RpcServer } from \"electron-json-rpc/main\";\nimport type {\n  OpenExternalOptions,\n  ShortcutDetails,\n  ShortcutLinkOperation,\n} from \"@shared/shell.types.js\";\n\nconst RPC_METHOD_PREFIX = \"shell\";\n\n/**\n * Open external URL in default browser\n */\nasync function openExternalHandler(...params: unknown[]): Promise<void> {\n  const [url, options] = params as [string, OpenExternalOptions?];\n  await shell.openExternal(url, options);\n}\n\n/**\n * Open path with default application\n */\nasync function openPathHandler(...params: unknown[]): Promise<string> {\n  const [path] = params as [string];\n  return await shell.openPath(path);\n}\n\n/**\n * Show item in folder\n */\nasync function showItemInFolderHandler(...params: unknown[]): Promise<void> {\n  const [path] = params as [string];\n  shell.showItemInFolder(path);\n}\n\n/**\n * Play system beep\n */\nasync function beepHandler(): Promise<void> {\n  shell.beep();\n}\n\n/**\n * Move item to trash\n */\nasync function trashItemHandler(...params: unknown[]): Promise<void> {\n  const [path] = params as [string];\n  await shell.trashItem(path);\n}\n\n/**\n * Create or update shortcut link (Windows)\n */\nasync function writeShortcutLinkHandler(...params: unknown[]): Promise<boolean> {\n  const [shortcutPath, operation, options] = params as [\n    string,\n    ShortcutLinkOperation?,\n    ShortcutDetails?,\n  ];\n  return shell.writeShortcutLink(shortcutPath, operation ?? \"create\", options as any);\n}\n\n/**\n * Read shortcut link (Windows)\n */\nasync function readShortcutLinkHandler(...params: unknown[]): Promise<ShortcutDetails> {\n  const [shortcutPath] = params as [string];\n  return shell.readShortcutLink(shortcutPath) as ShortcutDetails;\n}\n\n/**\n * Register all shell module RPC handlers\n */\nexport function registerShellModule(rpc: RpcServer): void {\n  rpc.register(`${RPC_METHOD_PREFIX}.openExternal`, openExternalHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.openPath`, openPathHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.showItemInFolder`, showItemInFolderHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.beep`, beepHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.trashItem`, trashItemHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.writeShortcutLink`, writeShortcutLinkHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.readShortcutLink`, readShortcutLinkHandler);\n}\n\n// Re-export handlers for testing\nexport {\n  openExternalHandler,\n  openPathHandler,\n  showItemInFolderHandler,\n  beepHandler,\n  trashItemHandler,\n  writeShortcutLinkHandler,\n  readShortcutLinkHandler,\n};\n"],"mappings":";;;;;;AAYA,MAAM,oBAAoB;;;;AAK1B,eAAe,oBAAoB,GAAG,QAAkC;CACtE,MAAM,CAAC,KAAK,WAAW;AACvB,OAAM,MAAM,aAAa,KAAK,QAAQ;;;;;AAMxC,eAAe,gBAAgB,GAAG,QAAoC;CACpE,MAAM,CAAC,QAAQ;AACf,QAAO,MAAM,MAAM,SAAS,KAAK;;;;;AAMnC,eAAe,wBAAwB,GAAG,QAAkC;CAC1E,MAAM,CAAC,QAAQ;AACf,OAAM,iBAAiB,KAAK;;;;;AAM9B,eAAe,cAA6B;AAC1C,OAAM,MAAM;;;;;AAMd,eAAe,iBAAiB,GAAG,QAAkC;CACnE,MAAM,CAAC,QAAQ;AACf,OAAM,MAAM,UAAU,KAAK;;;;;AAM7B,eAAe,yBAAyB,GAAG,QAAqC;CAC9E,MAAM,CAAC,cAAc,WAAW,WAAW;AAK3C,QAAO,MAAM,kBAAkB,cAAc,aAAa,UAAU,QAAe;;;;;AAMrF,eAAe,wBAAwB,GAAG,QAA6C;CACrF,MAAM,CAAC,gBAAgB;AACvB,QAAO,MAAM,iBAAiB,aAAa;;;;;AAM7C,SAAgB,oBAAoB,KAAsB;AACxD,KAAI,SAAS,GAAG,kBAAkB,gBAAgB,oBAAoB;AACtE,KAAI,SAAS,GAAG,kBAAkB,YAAY,gBAAgB;AAC9D,KAAI,SAAS,GAAG,kBAAkB,oBAAoB,wBAAwB;AAC9E,KAAI,SAAS,GAAG,kBAAkB,QAAQ,YAAY;AACtD,KAAI,SAAS,GAAG,kBAAkB,aAAa,iBAAiB;AAChE,KAAI,SAAS,GAAG,kBAAkB,qBAAqB,yBAAyB;AAChF,KAAI,SAAS,GAAG,kBAAkB,oBAAoB,wBAAwB"}