{"version":3,"file":"actions/mouse.mjs","sources":["webpack://@agent-infra/browser/./src/actions/mouse.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n  Page,\n  Point,\n  MouseClickOptions,\n  MouseMoveOptions,\n} from 'puppeteer-core';\nimport { ScrollDirection, ActionResult } from '../types';\nimport type { DialogMetaInfo } from '../types';\nimport type { TabDialog } from '../tabs/dialog';\n\nexport class Mouse {\n  #vision: VisionMouse;\n\n  constructor(page: Page, dialog: TabDialog) {\n    this.#vision = new VisionMouse(page, dialog);\n  }\n\n  get vision() {\n    return this.#vision;\n  }\n\n  // Future: can add DOM mouse support here\n  // get dom() {\n  //   return this.#dom;\n  // }\n}\n\nexport class VisionMouse {\n  #page: Page;\n  #dialog: TabDialog;\n\n  constructor(page: Page, dialog: TabDialog) {\n    this.#page = page;\n    this.#dialog = dialog;\n  }\n\n  async click(\n    x: number,\n    y: number,\n    options: Omit<MouseClickOptions, 'clickCount'> = {},\n  ): Promise<ActionResult> {\n    if (this.#dialog.isOpen) {\n      return this.#buildDialogResponse('click');\n    }\n\n    await this.#page.mouse.click(x, y, {\n      count: options.count,\n      delay: options.delay,\n      button: options.button,\n    });\n\n    return { success: true };\n  }\n\n  async move(\n    x: number,\n    y: number,\n    options: MouseMoveOptions = {},\n  ): Promise<ActionResult> {\n    if (this.#dialog.isOpen) {\n      return this.#buildDialogResponse('move');\n    }\n\n    await this.#page.mouse.move(x, y, {\n      steps: options.steps,\n    });\n\n    return { success: true };\n  }\n\n  async drag(\n    start: Point,\n    end: Point,\n    options: {\n      delay?: number;\n    } = {},\n  ): Promise<ActionResult> {\n    if (this.#dialog.isOpen) {\n      return this.#buildDialogResponse('drag');\n    }\n\n    await this.#page.mouse.dragAndDrop(start, end, {\n      delay: options.delay,\n    });\n\n    return { success: true };\n  }\n\n  async scroll(\n    direction: ScrollDirection,\n    delta: number,\n  ): Promise<ActionResult> {\n    if (this.#dialog.isOpen) {\n      return this.#buildDialogResponse('scroll');\n    }\n\n    let deltaX = 0;\n    let deltaY = 0;\n\n    switch (direction) {\n      case 'up':\n        break;\n      case 'down':\n        deltaY = delta;\n        break;\n      case 'left':\n        deltaX = -delta;\n        break;\n      case 'right':\n        deltaX = delta;\n        break;\n    }\n\n    await this.#page.mouse.wheel({ deltaX, deltaY });\n\n    return { success: true };\n  }\n\n  #buildDialogResponse(type: string): ActionResult {\n    return {\n      success: false,\n      message: `Cannot perform mouse.${type}() operation because there is a dialog on the current page.`,\n      detail: this.#dialog.meta as DialogMetaInfo,\n    };\n  }\n}\n"],"names":["_vision","Mouse","page","dialog","VisionMouse","_page","_dialog","buildDialogResponse","x","y","options","start","end","direction","delta","deltaX","deltaY","type"],"mappings":";;;;AAGC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAaCA,UAAAA,WAAAA,GAAAA,IAAAA;AADK,MAAMC;IAOX,IAAI,SAAS;QACX,OAAO,6BAAI,EAACD;IACd;IANA,YAAYE,IAAU,EAAEC,MAAiB,CAAE;QAF3CH,0BAAAA,IAAAA,EAAAA,SAAAA;;mBAAAA,KAAAA;;uCAGOA,SAAU,IAAII,YAAYF,MAAMC;IACvC;AAUF;IAGEE,QAAAA,WAAAA,GAAAA,IAAAA,WACAC,UAAAA,WAAAA,GAAAA,IAAAA,WAyFAC,uBAAAA,WAAAA,GAAAA,IAAAA;AA3FK,MAAMH;IASX,MAAM,MACJI,CAAS,EACTC,CAAS,EACTC,UAAiD,CAAC,CAAC,EAC5B;QACvB,IAAI,6BAAI,EAACJ,SAAQ,MAAM,EACrB,OAAO,8BAAI,EAACC,sBAAAA,qBAAAA,IAAAA,CAAL,IAAI,EAAsB;QAGnC,MAAM,6BAAI,EAACF,OAAM,KAAK,CAAC,KAAK,CAACG,GAAGC,GAAG;YACjC,OAAOC,QAAQ,KAAK;YACpB,OAAOA,QAAQ,KAAK;YACpB,QAAQA,QAAQ,MAAM;QACxB;QAEA,OAAO;YAAE,SAAS;QAAK;IACzB;IAEA,MAAM,KACJF,CAAS,EACTC,CAAS,EACTC,UAA4B,CAAC,CAAC,EACP;QACvB,IAAI,6BAAI,EAACJ,SAAQ,MAAM,EACrB,OAAO,8BAAI,EAACC,sBAAAA,qBAAAA,IAAAA,CAAL,IAAI,EAAsB;QAGnC,MAAM,6BAAI,EAACF,OAAM,KAAK,CAAC,IAAI,CAACG,GAAGC,GAAG;YAChC,OAAOC,QAAQ,KAAK;QACtB;QAEA,OAAO;YAAE,SAAS;QAAK;IACzB;IAEA,MAAM,KACJC,KAAY,EACZC,GAAU,EACVF,UAEI,CAAC,CAAC,EACiB;QACvB,IAAI,6BAAI,EAACJ,SAAQ,MAAM,EACrB,OAAO,8BAAI,EAACC,sBAAAA,qBAAAA,IAAAA,CAAL,IAAI,EAAsB;QAGnC,MAAM,6BAAI,EAACF,OAAM,KAAK,CAAC,WAAW,CAACM,OAAOC,KAAK;YAC7C,OAAOF,QAAQ,KAAK;QACtB;QAEA,OAAO;YAAE,SAAS;QAAK;IACzB;IAEA,MAAM,OACJG,SAA0B,EAC1BC,KAAa,EACU;QACvB,IAAI,6BAAI,EAACR,SAAQ,MAAM,EACrB,OAAO,8BAAI,EAACC,sBAAAA,qBAAAA,IAAAA,CAAL,IAAI,EAAsB;QAGnC,IAAIQ,SAAS;QACb,IAAIC,SAAS;QAEb,OAAQH;YACN,KAAK;gBACH;YACF,KAAK;gBACHG,SAASF;gBACT;YACF,KAAK;gBACHC,SAAS,CAACD;gBACV;YACF,KAAK;gBACHC,SAASD;gBACT;QACJ;QAEA,MAAM,6BAAI,EAACT,OAAM,KAAK,CAAC,KAAK,CAAC;YAAEU;YAAQC;QAAO;QAE9C,OAAO;YAAE,SAAS;QAAK;IACzB;IArFA,YAAYd,IAAU,EAAEC,MAAiB,CAAE;QAuF3CI,2BAAAA,IAAAA,EAAAA;QA1FAF,0BAAAA,IAAAA,EAAAA,OAAAA;;mBAAAA,KAAAA;;QACAC,0BAAAA,IAAAA,EAAAA,SAAAA;;mBAAAA,KAAAA;;uCAGOD,OAAQH;uCACRI,SAAUH;IACjB;AA2FF;AAPEI,SAAAA,oBAAqBU,IAAY;IAC/B,OAAO;QACL,SAAS;QACT,SAAS,CAAC,qBAAqB,EAAEA,KAAK,2DAA2D,CAAC;QAClG,QAAQ,6BAAI,EAACX,SAAQ,IAAI;IAC3B;AACF"}