keyboard.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. var __defProp = Object.defineProperty;
  3. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4. var __getOwnPropNames = Object.getOwnPropertyNames;
  5. var __hasOwnProp = Object.prototype.hasOwnProperty;
  6. var __export = (target, all) => {
  7. for (var name in all)
  8. __defProp(target, name, { get: all[name], enumerable: true });
  9. };
  10. var __copyProps = (to, from, except, desc) => {
  11. if (from && typeof from === "object" || typeof from === "function") {
  12. for (let key of __getOwnPropNames(from))
  13. if (!__hasOwnProp.call(to, key) && key !== except)
  14. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  15. }
  16. return to;
  17. };
  18. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  19. var keyboard_exports = {};
  20. __export(keyboard_exports, {
  21. default: () => keyboard_default
  22. });
  23. module.exports = __toCommonJS(keyboard_exports);
  24. var import_bundle = require("../../sdk/bundle");
  25. var import_tool = require("./tool");
  26. var import_snapshot = require("./snapshot");
  27. const pressKey = (0, import_tool.defineTabTool)({
  28. capability: "core",
  29. schema: {
  30. name: "browser_press_key",
  31. title: "Press a key",
  32. description: "Press a key on the keyboard",
  33. inputSchema: import_bundle.z.object({
  34. key: import_bundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
  35. }),
  36. type: "input"
  37. },
  38. handle: async (tab, params, response) => {
  39. response.setIncludeSnapshot();
  40. response.addCode(`// Press ${params.key}`);
  41. response.addCode(`await page.keyboard.press('${params.key}');`);
  42. await tab.waitForCompletion(async () => {
  43. await tab.page.keyboard.press(params.key);
  44. });
  45. }
  46. });
  47. const typeSchema = import_snapshot.elementSchema.extend({
  48. text: import_bundle.z.string().describe("Text to type into the element"),
  49. submit: import_bundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)"),
  50. slowly: import_bundle.z.boolean().optional().describe("Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.")
  51. });
  52. const type = (0, import_tool.defineTabTool)({
  53. capability: "core",
  54. schema: {
  55. name: "browser_type",
  56. title: "Type text",
  57. description: "Type text into editable element",
  58. inputSchema: typeSchema,
  59. type: "input"
  60. },
  61. handle: async (tab, params, response) => {
  62. const { locator, resolved } = await tab.refLocator(params);
  63. const secret = tab.context.lookupSecret(params.text);
  64. await tab.waitForCompletion(async () => {
  65. if (params.slowly) {
  66. response.setIncludeSnapshot();
  67. response.addCode(`await page.${resolved}.pressSequentially(${secret.code});`);
  68. await locator.pressSequentially(secret.value);
  69. } else {
  70. response.addCode(`await page.${resolved}.fill(${secret.code});`);
  71. await locator.fill(secret.value);
  72. }
  73. if (params.submit) {
  74. response.setIncludeSnapshot();
  75. response.addCode(`await page.${resolved}.press('Enter');`);
  76. await locator.press("Enter");
  77. }
  78. });
  79. }
  80. });
  81. var keyboard_default = [
  82. pressKey,
  83. type
  84. ];