{"version":3,"file":"notification.mjs","names":[],"sources":["../../src/main/notification/index.ts"],"sourcesContent":["/**\n * Main process handlers for notification module\n * Usage in Electron main process:\n *\n * import { Notification } from 'electron';\n * import { RpcServer } from 'electron-json-rpc/main';\n * import { registerNotificationModule } from 'electron-main-bridge/main';\n *\n * const rpc = new RpcServer();\n * const notification = new Notification({ title: 'Hello', body: 'World' });\n * registerNotificationModule(rpc, notification);\n * rpc.listen();\n */\n\nimport type { Notification } from \"electron\";\nimport type { RpcServer } from \"electron-json-rpc/main\";\n\nlet notificationInstance: Notification | null = null;\nlet rpcInstance: RpcServer | null = null;\n\nconst RPC_METHOD_PREFIX = \"notification\";\n\nfunction setupNotificationEvents(notification: Notification): void {\n  notification.on(\"show\", () => {\n    rpcInstance?.publish(\"notification.show\");\n  });\n  notification.on(\"click\", () => {\n    rpcInstance?.publish(\"notification.click\");\n  });\n  notification.on(\"close\", () => {\n    rpcInstance?.publish(\"notification.close\");\n  });\n  notification.on(\"reply\", (_event, reply) => {\n    rpcInstance?.publish(\"notification.reply\", reply);\n  });\n  notification.on(\"action\", (_event, index) => {\n    rpcInstance?.publish(\"notification.action\", index);\n  });\n  notification.on(\"failed\", (_event, error) => {\n    rpcInstance?.publish(\"notification.failed\", error);\n  });\n}\n\n// Handler functions\nasync function showHandler(): Promise<void> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  notificationInstance.show();\n}\n\nasync function closeHandler(): Promise<void> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  notificationInstance.close();\n}\n\nasync function getTitleHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.title;\n}\n\nasync function getSubtitleHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.subtitle;\n}\n\nasync function getBodyHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.body;\n}\n\nasync function getSilentHandler(): Promise<boolean | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.silent;\n}\n\nasync function getReplyPlaceholderHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.replyPlaceholder;\n}\n\nasync function getSoundHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.sound;\n}\n\nasync function getCloseButtonTextHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.closeButtonText;\n}\n\nasync function getHasReplyHandler(): Promise<boolean | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return notificationInstance.hasReply;\n}\n\nasync function getUrgencyHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return (notificationInstance as any).urgency;\n}\n\nasync function getTimeoutTypeHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return (notificationInstance as any).timeoutType;\n}\n\nasync function getActionsHandler() {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return (notificationInstance as any).actions;\n}\n\nasync function getToastXmlHandler(): Promise<string | undefined> {\n  if (!notificationInstance) throw new Error(\"Notification instance not provided\");\n  return (notificationInstance as any).toastXml;\n}\n\n/**\n * Register notification module RPC handlers\n * @param rpc - RPC server instance\n * @param notification - Notification instance to manage\n */\nexport function registerNotificationModule(rpc: RpcServer, notification: Notification): void {\n  rpcInstance = rpc;\n  notificationInstance = notification;\n  setupNotificationEvents(notification);\n\n  rpc.register(`${RPC_METHOD_PREFIX}.show`, showHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.close`, closeHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getTitle`, getTitleHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getSubtitle`, getSubtitleHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getBody`, getBodyHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getSilent`, getSilentHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getReplyPlaceholder`, getReplyPlaceholderHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getSound`, getSoundHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getCloseButtonText`, getCloseButtonTextHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getHasReply`, getHasReplyHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getUrgency`, getUrgencyHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getTimeoutType`, getTimeoutTypeHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getActions`, getActionsHandler);\n  rpc.register(`${RPC_METHOD_PREFIX}.getToastXml`, getToastXmlHandler);\n}\n\n// Re-export handlers for testing\nexport {\n  showHandler,\n  closeHandler,\n  getTitleHandler,\n  getSubtitleHandler,\n  getBodyHandler,\n  getSilentHandler,\n  getReplyPlaceholderHandler,\n  getSoundHandler,\n  getCloseButtonTextHandler,\n  getHasReplyHandler,\n  getUrgencyHandler,\n  getTimeoutTypeHandler,\n  getActionsHandler,\n  getToastXmlHandler,\n};\n"],"mappings":"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"}