{"version":3,"file":"screen.mjs","names":[],"sources":["../../src/renderer/screen/index.ts"],"sourcesContent":["/**\n * Renderer process API for screen module\n * Usage in renderer process:\n *\n * import * as screen from 'electron-main-bridge/renderer/screen';\n *\n * const primaryDisplay = await screen.getPrimaryDisplay();\n * const { width, height } = primaryDisplay.workAreaSize;\n * const cursorPos = await screen.getCursorScreenPoint();\n */\n\nimport type {\n  Display,\n  DisplayMetric,\n  Point,\n  Rectangle,\n  ScreenEventCallbacks,\n} from \"@shared/screen.types.js\";\n\n/**\n * Get the current absolute position of the mouse pointer\n */\nexport async function getCursorScreenPoint(): Promise<Point> {\n  return (await window.rpc.call(\"screen.getCursorScreenPoint\")) as Point;\n}\n\n/**\n * Get the primary display\n */\nexport async function getPrimaryDisplay(): Promise<Display> {\n  return (await window.rpc.call(\"screen.getPrimaryDisplay\")) as Display;\n}\n\n/**\n * Get an array of displays that are currently available\n */\nexport async function getAllDisplays(): Promise<Display[]> {\n  return (await window.rpc.call(\"screen.getAllDisplays\")) as Display[];\n}\n\n/**\n * Get the display nearest to the specified point\n */\nexport async function getDisplayNearestPoint(point: Point): Promise<Display> {\n  return (await window.rpc.call(\"screen.getDisplayNearestPoint\", point)) as Display;\n}\n\n/**\n * Get the display that most closely intersects the provided bounds\n */\nexport async function getDisplayMatching(rect: Rectangle): Promise<Display> {\n  return (await window.rpc.call(\"screen.getDisplayMatching\", rect)) as Display;\n}\n\n/**\n * Convert a screen physical point to a screen DIP point (Windows/Linux)\n * Not currently supported on Wayland - returns the point passed in with no changes\n */\nexport async function screenToDipPoint(point: Point): Promise<Point> {\n  return (await window.rpc.call(\"screen.screenToDipPoint\", point)) as Point;\n}\n\n/**\n * Convert a screen DIP point to a screen physical point (Windows/Linux)\n * Not currently supported on Wayland\n */\nexport async function dipToScreenPoint(point: Point): Promise<Point> {\n  return (await window.rpc.call(\"screen.dipToScreenPoint\", point)) as Point;\n}\n\n/**\n * Convert a screen physical rect to a screen DIP rect (Windows)\n * @param windowId - The BrowserWindow id (or null for nearest display to rect)\n * @param rect - The physical rect to convert\n */\nexport async function screenToDipRect(\n  windowId: number | null,\n  rect: Rectangle,\n): Promise<Rectangle> {\n  return (await window.rpc.call(\"screen.screenToDipRect\", windowId, rect)) as Rectangle;\n}\n\n/**\n * Convert a screen DIP rect to a screen physical rect (Windows)\n * @param windowId - The BrowserWindow id (or null for nearest display to rect)\n * @param rect - The DIP rect to convert\n */\nexport async function dipToScreenRect(\n  windowId: number | null,\n  rect: Rectangle,\n): Promise<Rectangle> {\n  return (await window.rpc.call(\"screen.dipToScreenRect\", windowId, rect)) as Rectangle;\n}\n\n/**\n * Event callbacks for screen module\n */\nexport interface ScreenEventCallbacksExtended extends ScreenEventCallbacks {\n  \"display-added\": (display: Display) => void;\n  \"display-removed\": (display: Display) => void;\n  \"display-metrics-changed\": (data: { display: Display; changedMetrics: DisplayMetric[] }) => void;\n}\n\n/**\n * Register a callback for a screen event\n * @returns A function that removes the listener\n */\nexport function on<K extends keyof ScreenEventCallbacksExtended>(\n  event: K,\n  callback: ScreenEventCallbacksExtended[K],\n): () => void {\n  return window.rpc.on(`screen.${event}`, callback as (...args: unknown[]) => void);\n}\n\n/**\n * Register a one-time callback for a screen event\n */\nexport function once<K extends keyof ScreenEventCallbacksExtended>(\n  event: K,\n  callback: ScreenEventCallbacksExtended[K],\n): void {\n  window.rpc.once(`screen.${event}`, callback as (...args: unknown[]) => void);\n}\n\n/**\n * Remove a callback for a screen event\n */\nexport function off<K extends keyof ScreenEventCallbacksExtended>(\n  event: K,\n  callback?: ScreenEventCallbacksExtended[K],\n): void {\n  window.rpc.off(`screen.${event}`, callback as ((...args: unknown[]) => void) | undefined);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBA,eAAsB,uBAAuC;AAC3D,QAAQ,MAAM,OAAO,IAAI,KAAK,8BAA8B;;;;;AAM9D,eAAsB,oBAAsC;AAC1D,QAAQ,MAAM,OAAO,IAAI,KAAK,2BAA2B;;;;;AAM3D,eAAsB,iBAAqC;AACzD,QAAQ,MAAM,OAAO,IAAI,KAAK,wBAAwB;;;;;AAMxD,eAAsB,uBAAuB,OAAgC;AAC3E,QAAQ,MAAM,OAAO,IAAI,KAAK,iCAAiC,MAAM;;;;;AAMvE,eAAsB,mBAAmB,MAAmC;AAC1E,QAAQ,MAAM,OAAO,IAAI,KAAK,6BAA6B,KAAK;;;;;;AAOlE,eAAsB,iBAAiB,OAA8B;AACnE,QAAQ,MAAM,OAAO,IAAI,KAAK,2BAA2B,MAAM;;;;;;AAOjE,eAAsB,iBAAiB,OAA8B;AACnE,QAAQ,MAAM,OAAO,IAAI,KAAK,2BAA2B,MAAM;;;;;;;AAQjE,eAAsB,gBACpB,UACA,MACoB;AACpB,QAAQ,MAAM,OAAO,IAAI,KAAK,0BAA0B,UAAU,KAAK;;;;;;;AAQzE,eAAsB,gBACpB,UACA,MACoB;AACpB,QAAQ,MAAM,OAAO,IAAI,KAAK,0BAA0B,UAAU,KAAK;;;;;;AAgBzE,SAAgB,GACd,OACA,UACY;AACZ,QAAO,OAAO,IAAI,GAAG,UAAU,SAAS,SAAyC;;;;;AAMnF,SAAgB,KACd,OACA,UACM;AACN,QAAO,IAAI,KAAK,UAAU,SAAS,SAAyC;;;;;AAM9E,SAAgB,IACd,OACA,UACM;AACN,QAAO,IAAI,IAAI,UAAU,SAAS,SAAuD"}