donobu 2.13.1 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/apis/SpecialFlowsApi.js +6 -6
  2. package/dist/apis/SpecialFlowsApi.js.map +1 -1
  3. package/dist/assets/generated/parameter-schemas.json +246 -145
  4. package/dist/assets/generated/version +1 -1
  5. package/dist/esm/apis/SpecialFlowsApi.js +6 -6
  6. package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
  7. package/dist/esm/assets/generated/parameter-schemas.json +246 -145
  8. package/dist/esm/assets/generated/version +1 -1
  9. package/dist/esm/managers/DonobuFlow.d.ts +3 -3
  10. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  11. package/dist/esm/managers/DonobuFlow.js +7 -4
  12. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  13. package/dist/esm/managers/DonobuFlowsManager.d.ts +1 -1
  14. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  15. package/dist/esm/managers/DonobuFlowsManager.js +8 -8
  16. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  17. package/dist/esm/managers/InteractionVisualizer.d.ts +35 -0
  18. package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -0
  19. package/dist/esm/managers/InteractionVisualizer.js +235 -0
  20. package/dist/esm/managers/InteractionVisualizer.js.map +1 -0
  21. package/dist/esm/managers/ToolTipper.d.ts +14 -17
  22. package/dist/esm/managers/ToolTipper.d.ts.map +1 -1
  23. package/dist/esm/managers/ToolTipper.js +170 -141
  24. package/dist/esm/managers/ToolTipper.js.map +1 -1
  25. package/dist/esm/models/CreateDonobuFlow.d.ts +2 -2
  26. package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
  27. package/dist/esm/models/FlowMetadata.d.ts +2 -2
  28. package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
  29. package/dist/esm/models/ToolCallContext.d.ts +2 -2
  30. package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
  31. package/dist/esm/persistence/DonobuSqliteDb.d.ts.map +1 -1
  32. package/dist/esm/persistence/DonobuSqliteDb.js +35 -0
  33. package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
  34. package/dist/esm/playwrightTestExtensions.d.ts.map +1 -1
  35. package/dist/esm/playwrightTestExtensions.js +29 -12
  36. package/dist/esm/playwrightTestExtensions.js.map +1 -1
  37. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.d.ts.map +1 -1
  38. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  39. package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  40. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  41. package/dist/esm/tools/ReplayableInteraction.js +6 -2
  42. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  43. package/dist/managers/DonobuFlow.d.ts +3 -3
  44. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  45. package/dist/managers/DonobuFlow.js +7 -4
  46. package/dist/managers/DonobuFlow.js.map +1 -1
  47. package/dist/managers/DonobuFlowsManager.d.ts +1 -1
  48. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  49. package/dist/managers/DonobuFlowsManager.js +8 -8
  50. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  51. package/dist/managers/InteractionVisualizer.d.ts +35 -0
  52. package/dist/managers/InteractionVisualizer.d.ts.map +1 -0
  53. package/dist/managers/InteractionVisualizer.js +235 -0
  54. package/dist/managers/InteractionVisualizer.js.map +1 -0
  55. package/dist/managers/ToolTipper.d.ts +14 -17
  56. package/dist/managers/ToolTipper.d.ts.map +1 -1
  57. package/dist/managers/ToolTipper.js +170 -141
  58. package/dist/managers/ToolTipper.js.map +1 -1
  59. package/dist/models/CreateDonobuFlow.d.ts +2 -2
  60. package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
  61. package/dist/models/FlowMetadata.d.ts +2 -2
  62. package/dist/models/FlowMetadata.d.ts.map +1 -1
  63. package/dist/models/ToolCallContext.d.ts +2 -2
  64. package/dist/models/ToolCallContext.d.ts.map +1 -1
  65. package/dist/persistence/DonobuSqliteDb.d.ts.map +1 -1
  66. package/dist/persistence/DonobuSqliteDb.js +35 -0
  67. package/dist/persistence/DonobuSqliteDb.js.map +1 -1
  68. package/dist/playwrightTestExtensions.d.ts.map +1 -1
  69. package/dist/playwrightTestExtensions.js +29 -12
  70. package/dist/playwrightTestExtensions.js.map +1 -1
  71. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.d.ts.map +1 -1
  72. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
  73. package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
  74. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  75. package/dist/tools/ReplayableInteraction.js +6 -2
  76. package/dist/tools/ReplayableInteraction.js.map +1 -1
  77. package/package.json +1 -1
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InteractionVisualizer = void 0;
4
+ const Logger_1 = require("../utils/Logger");
5
+ const main_1 = require("../main");
6
+ /**
7
+ * Class for visualizing interactions in a webpage with a virtual mouse and messages.
8
+ */
9
+ class InteractionVisualizer {
10
+ constructor(defaultDurationMillis) {
11
+ this.defaultDurationMillis = defaultDurationMillis;
12
+ this.currentMousePosition = { x: 0, y: 0 };
13
+ this.isMouseVisible = false;
14
+ }
15
+ /**
16
+ * Show the given message text visually adjacent to the given element for the given duration.
17
+ * Moves the virtual mouse to the element with a smooth animation.
18
+ * Blocks execution for the duration.
19
+ */
20
+ async pointAt(page, element, message, durationMillis = this.defaultDurationMillis) {
21
+ if (!message.trim() || !durationMillis || durationMillis <= 0) {
22
+ return;
23
+ }
24
+ try {
25
+ // Get element position for mouse movement
26
+ const boundingBox = await element.boundingBox();
27
+ if (!boundingBox) {
28
+ Logger_1.appLogger.error('Failed to get element bounding box');
29
+ return;
30
+ }
31
+ // Calculate target position (center of the element)
32
+ const targetX = boundingBox.x + boundingBox.width / 2;
33
+ const targetY = boundingBox.y + boundingBox.height / 2;
34
+ // Start mouse movement and message display in parallel
35
+ const mouseMovementPromise = this.moveVirtualMouse(page, targetX, targetY, durationMillis / 2);
36
+ // Display the message for the element
37
+ await this.displayMessageNearElement(element, message);
38
+ // Create a promise for the message duration
39
+ const messageDurationPromise = page.waitForTimeout(durationMillis);
40
+ // Wait for both mouse movement and message duration to complete
41
+ await Promise.all([mouseMovementPromise, messageDurationPromise]);
42
+ // Remove only the message after the duration (keep the mouse)
43
+ await element.evaluate((_, [messageContainerId]) => {
44
+ const container = document.getElementById(messageContainerId);
45
+ if (container) {
46
+ const shadow = container.shadowRoot;
47
+ if (shadow) {
48
+ // Remove only message elements but keep the mouse
49
+ const messages = Array.from(shadow.querySelectorAll('.donobu-message'));
50
+ messages.forEach((msg) => msg.remove());
51
+ }
52
+ }
53
+ }, [InteractionVisualizer.MESSAGE_CONTAINER_ID]);
54
+ }
55
+ catch (e) {
56
+ if (main_1.PlaywrightUtils.isPageClosedError(e)) {
57
+ throw e;
58
+ }
59
+ else {
60
+ Logger_1.appLogger.error(`Failed to display message at element`, e);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Moves the virtual mouse to the target position with a smooth animation.
66
+ */
67
+ async moveVirtualMouse(page, targetX, targetY, durationMillis) {
68
+ await page.evaluate(([containerId, mouseId, startX, startY, endX, endY, duration]) => {
69
+ return new Promise((resolve) => {
70
+ // 1) Find or create the container
71
+ let container = document.getElementById(containerId);
72
+ if (!container) {
73
+ container = document.createElement('div');
74
+ container.id = containerId;
75
+ container.style.position = 'absolute';
76
+ container.style.top = '0';
77
+ container.style.left = '0';
78
+ container.style.width = '100%';
79
+ container.style.height = '100%';
80
+ container.style.pointerEvents = 'none';
81
+ document.body.appendChild(container);
82
+ const shadowRoot = container.attachShadow({ mode: 'open' });
83
+ // Insert style
84
+ const styleEl = document.createElement('style');
85
+ styleEl.textContent = `
86
+ :host { all: initial; }
87
+ .donobu-message {
88
+ z-index: 2147483647;
89
+ background-color: black;
90
+ color: white;
91
+ padding: 8px;
92
+ border-radius: 5px;
93
+ font-size: 12px;
94
+ font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;
95
+ display: block;
96
+ max-width: 300px;
97
+ white-space: pre-wrap;
98
+ box-shadow: 2px 2px 10px rgba(0,0,0,0.2);
99
+ position: absolute;
100
+ }
101
+ .virtual-mouse {
102
+ width: 20px;
103
+ height: 20px;
104
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='M0,0 L12,10 L7,11 L10,18 L8,19 L5,12 L0,16 Z' fill='%23ffffff' stroke='%23000000' stroke-width='1'/%3E%3C/svg%3E");
105
+ background-repeat: no-repeat;
106
+ background-size: contain;
107
+ position: absolute;
108
+ z-index: 2147483646;
109
+ transition-property: left, top;
110
+ transition-timing-function: ease-in-out;
111
+ filter: drop-shadow(1px 1px 1px rgba(0,0,0,0.5));
112
+ }
113
+ `;
114
+ shadowRoot.appendChild(styleEl);
115
+ }
116
+ const shadow = container.shadowRoot;
117
+ if (!shadow) {
118
+ resolve();
119
+ return;
120
+ }
121
+ // Find or create mouse
122
+ let mouse = shadow.getElementById(mouseId);
123
+ if (!mouse) {
124
+ mouse = document.createElement('div');
125
+ mouse.id = mouseId;
126
+ mouse.className = 'virtual-mouse';
127
+ // Initial position if first time
128
+ mouse.style.left = `${startX}px`;
129
+ mouse.style.top = `${startY}px`;
130
+ mouse.style.transitionDuration = '0s'; // No animation initially
131
+ shadow.appendChild(mouse);
132
+ // Force reflow to ensure initial position is applied before animation
133
+ void mouse.offsetWidth;
134
+ }
135
+ // Animate the mouse
136
+ mouse.style.transitionDuration = `${duration}ms`;
137
+ mouse.style.left = `${endX - 10}px`; // Offset by half the cursor size
138
+ mouse.style.top = `${endY - 5}px`; // Offset to position pointer tip at target
139
+ // Resolve when transition completes or timeout as fallback
140
+ const transitionEndHandler = () => {
141
+ mouse?.removeEventListener('transitionend', transitionEndHandler);
142
+ resolve();
143
+ };
144
+ mouse.addEventListener('transitionend', transitionEndHandler);
145
+ // Fallback in case transitionend doesn't fire
146
+ setTimeout(resolve, duration + 50);
147
+ });
148
+ }, [
149
+ InteractionVisualizer.MESSAGE_CONTAINER_ID,
150
+ InteractionVisualizer.VIRTUAL_MOUSE_ID,
151
+ this.currentMousePosition.x,
152
+ this.currentMousePosition.y,
153
+ targetX,
154
+ targetY,
155
+ durationMillis,
156
+ ]);
157
+ // Update current mouse position
158
+ this.currentMousePosition = { x: targetX, y: targetY };
159
+ this.isMouseVisible = true;
160
+ }
161
+ /**
162
+ * Creates a message adjacent to the element, inside a shadow root to avoid CSS collisions.
163
+ */
164
+ async displayMessageNearElement(element, message) {
165
+ await element.evaluate((targetElement, [messageContainerId, message]) => {
166
+ // 1) Find container (should already exist from moveVirtualMouse)
167
+ const container = document.getElementById(messageContainerId);
168
+ if (!container || !container.shadowRoot) {
169
+ return;
170
+ }
171
+ const shadow = container.shadowRoot;
172
+ // 2) Insert message
173
+ const messageElement = document.createElement('div');
174
+ messageElement.className = 'donobu-message';
175
+ messageElement.textContent = message;
176
+ // Temporarily place off-screen to measure size
177
+ messageElement.style.left = '-9999px';
178
+ messageElement.style.top = '-9999px';
179
+ shadow.appendChild(messageElement);
180
+ // 3) Compute final position
181
+ const rect = targetElement.getBoundingClientRect();
182
+ let x = rect.left + window.scrollX;
183
+ let y = rect.bottom + window.scrollY + 10;
184
+ messageElement.style.left = `${x}px`;
185
+ messageElement.style.top = `${y}px`;
186
+ // Adjust if it goes off-screen to the right
187
+ const msgRect = messageElement.getBoundingClientRect();
188
+ const overflowRight = msgRect.right - window.innerWidth;
189
+ if (overflowRight > 0) {
190
+ messageElement.style.left = `${x - overflowRight - 10}px`;
191
+ }
192
+ // Adjust if it goes off-screen to the left
193
+ if (msgRect.left < 0) {
194
+ messageElement.style.left = `${window.scrollX + 10}px`;
195
+ }
196
+ }, [InteractionVisualizer.MESSAGE_CONTAINER_ID, message]);
197
+ }
198
+ /**
199
+ * Hide the virtual mouse.
200
+ */
201
+ async hideVirtualMouse(page) {
202
+ if (!this.isMouseVisible) {
203
+ return;
204
+ }
205
+ await page.evaluate(([containerId, mouseId]) => {
206
+ const container = document.getElementById(containerId);
207
+ if (container && container.shadowRoot) {
208
+ const mouse = container.shadowRoot.getElementById(mouseId);
209
+ if (mouse) {
210
+ mouse.remove();
211
+ }
212
+ }
213
+ }, [
214
+ InteractionVisualizer.MESSAGE_CONTAINER_ID,
215
+ InteractionVisualizer.VIRTUAL_MOUSE_ID,
216
+ ]);
217
+ this.isMouseVisible = false;
218
+ }
219
+ /**
220
+ * Clean up all messages and the virtual mouse.
221
+ */
222
+ async cleanUp(page) {
223
+ await page.evaluate(([containerId]) => {
224
+ const container = document.getElementById(containerId);
225
+ if (container) {
226
+ container.remove();
227
+ }
228
+ }, [InteractionVisualizer.MESSAGE_CONTAINER_ID]);
229
+ this.isMouseVisible = false;
230
+ }
231
+ }
232
+ exports.InteractionVisualizer = InteractionVisualizer;
233
+ InteractionVisualizer.MESSAGE_CONTAINER_ID = 'donobu-message-shadow-container';
234
+ InteractionVisualizer.VIRTUAL_MOUSE_ID = 'virtual-mouse';
235
+ //# sourceMappingURL=InteractionVisualizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractionVisualizer.js","sourceRoot":"","sources":["../../../src/managers/InteractionVisualizer.ts"],"names":[],"mappings":";;;AACA,4CAA4C;AAC5C,kCAA0C;AAE1C;;GAEG;AACH,MAAa,qBAAqB;IAOhC,YAAmC,qBAA6B;QAA7B,0BAAqB,GAArB,qBAAqB,CAAQ;QAHxD,yBAAoB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,mBAAc,GAAG,KAAK,CAAC;IAEoC,CAAC;IAEpE;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAClB,IAAU,EACV,OAAgB,EAChB,OAAe,EACf,iBAAyB,IAAI,CAAC,qBAAqB;QAEnD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,kBAAS,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,oDAAoD;YACpD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAEvD,uDAAuD;YACvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAChD,IAAI,EACJ,OAAO,EACP,OAAO,EACP,cAAc,GAAG,CAAC,CACnB,CAAC;YAEF,sCAAsC;YACtC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEvD,4CAA4C;YAC5C,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YAEnE,gEAAgE;YAChE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,CAAC;YAElE,8DAA8D;YAC9D,MAAM,OAAO,CAAC,QAAQ,CACpB,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;oBACpC,IAAI,MAAM,EAAE,CAAC;wBACX,kDAAkD;wBAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAC3C,CAAC;wBACF,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC,EACD,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,sBAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,kBAAS,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,IAAU,EACV,OAAe,EACf,OAAe,EACf,cAAsB;QAEtB,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC/D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,kCAAkC;gBAClC,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAqB,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC1C,SAAS,CAAC,EAAE,GAAG,WAAqB,CAAC;oBACrC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;oBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;oBAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;oBAC3B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;oBAC/B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBAChC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;oBACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAErC,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAE5D,eAAe;oBACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBAChD,OAAO,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA4BrB,CAAC;oBACF,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,uBAAuB;gBACvB,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,OAAiB,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACtC,KAAK,CAAC,EAAE,GAAG,OAAiB,CAAC;oBAC7B,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;oBAClC,iCAAiC;oBACjC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC;oBACjC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;oBAChC,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,yBAAyB;oBAChE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE1B,sEAAsE;oBACtE,KAAK,KAAK,CAAC,WAAW,CAAC;gBACzB,CAAC;gBAED,oBAAoB;gBACpB,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,QAAQ,IAAI,CAAC;gBACjD,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAI,IAAe,GAAG,EAAE,IAAI,CAAC,CAAC,iCAAiC;gBAClF,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAI,IAAe,GAAG,CAAC,IAAI,CAAC,CAAC,2CAA2C;gBAE1F,2DAA2D;gBAC3D,MAAM,oBAAoB,GAAG,GAAG,EAAE;oBAChC,KAAK,EAAE,mBAAmB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;oBAClE,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBAEF,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;gBAE9D,8CAA8C;gBAC9C,UAAU,CAAC,OAAO,EAAG,QAAmB,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,EACD;YACE,qBAAqB,CAAC,oBAAoB;YAC1C,qBAAqB,CAAC,gBAAgB;YACtC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3B,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3B,OAAO;YACP,OAAO;YACP,cAAc;SACf,CACF,CAAC;QAEF,gCAAgC;QAChC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CACrC,OAAgB,EAChB,OAAe;QAEf,MAAM,OAAO,CAAC,QAAQ,CACpB,CAAC,aAAa,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,EAAE;YAC/C,iEAAiE;YACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;YAEpC,oBAAoB;YACpB,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC5C,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC;YAErC,+CAA+C;YAC/C,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;YACtC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;YAErC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAEnC,4BAA4B;YAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YAE1C,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;YAEpC,4CAA4C;YAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;YACxD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,aAAa,GAAG,EAAE,IAAI,CAAC;YAC5D,CAAC;YACD,2CAA2C;YAC3C,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC;YACzD,CAAC;QACH,CAAC,EACD,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CACtD,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,IAAU;QACtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE;YACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC,EACD;YACE,qBAAqB,CAAC,oBAAoB;YAC1C,qBAAqB,CAAC,gBAAgB;SACvC,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAAC,IAAU;QAC7B,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE;YAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,EACD,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAC7C,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;;AAhSH,sDAiSC;AAhSyB,0CAAoB,GAC1C,iCAAiC,AADS,CACR;AACZ,sCAAgB,GAAG,eAAe,AAAlB,CAAmB"}
@@ -1,35 +1,32 @@
1
1
  import { Page, Locator } from 'playwright';
2
2
  export declare class ToolTipper {
3
- readonly defaultDuration: number;
4
- constructor(defaultDuration: number);
5
- /**
6
- * Show the given tooltip text in the top-left corner of the page for the given duration.
7
- * If duration <= 0 or toolTip is empty, does nothing. Blocks execution for the duration.
8
- */
9
- blipToolTip(page: Page, toolTip: string, duration?: number): Promise<void>;
3
+ readonly defaultDurationMillis: number;
4
+ private static readonly TOOL_TIP_CONTAINER_ID;
5
+ private static readonly VIRTUAL_MOUSE_ID;
6
+ private currentMousePosition;
7
+ private isMouseVisible;
8
+ constructor(defaultDurationMillis: number);
10
9
  /**
11
10
  * Show the given tooltip text visually adjacent to the given element for the given duration.
11
+ * Moves the virtual mouse to the element with a smooth animation.
12
12
  * Blocks execution for the duration.
13
13
  */
14
- blipToolTipAtElement(page: Page, element: Locator, toolTip: string, duration?: number): Promise<void>;
14
+ blipToolTip(page: Page, element: Locator, toolTip: string, durationMillis?: number): Promise<void>;
15
15
  /**
16
- * Creates a tooltip in the top-left corner, inside a shadow root to avoid CSS collisions.
17
- * Returns the tooltip's unique ID.
16
+ * Moves the virtual mouse to the target position with a smooth animation.
18
17
  */
19
- private displayToolTip;
18
+ private moveVirtualMouse;
20
19
  /**
21
20
  * Creates a tooltip adjacent to the element, inside a shadow root to avoid CSS collisions.
22
- * Returns the tooltip's unique ID.
23
21
  */
24
22
  private displayToolTipForElement;
25
23
  /**
26
- * Removes the tooltip with the given ID from the shadow root (top-level).
24
+ * Hide the virtual mouse.
27
25
  */
28
- private static removeElementById;
26
+ hideVirtualMouse(page: Page): Promise<void>;
29
27
  /**
30
- * Same as removeElementById but uses the element's frame context
31
- * in case the tooltip was created via that element's evaluate call.
28
+ * Clean up all tooltips and the virtual mouse.
32
29
  */
33
- private static useElementToRemoveElementById;
30
+ cleanUp(page: Page): Promise<void>;
34
31
  }
35
32
  //# sourceMappingURL=ToolTipper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolTipper.d.ts","sourceRoot":"","sources":["../../../src/managers/ToolTipper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI3C,qBAAa,UAAU;aAEH,eAAe,EAAE,MAAM;gBAAvB,eAAe,EAAE,MAAM;IAGzC;;;OAGG;IACU,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA6B,GACtC,OAAO,CAAC,IAAI,CAAC;IAahB;;;OAGG;IACU,oBAAoB,CAC/B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA6B,GACtC,OAAO,CAAC,IAAI,CAAC;IAahB;;;OAGG;YACW,cAAc;IA8D5B;;;OAGG;YACW,wBAAwB;IAiFtC;;OAEG;mBACkB,iBAAiB;IAYtC;;;OAGG;mBACkB,6BAA6B;CAWnD"}
1
+ {"version":3,"file":"ToolTipper.d.ts","sourceRoot":"","sources":["../../../src/managers/ToolTipper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI3C,qBAAa,UAAU;aAMc,qBAAqB,EAAE,MAAM;IALhE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAA+B;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAC3D,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,cAAc,CAAS;gBAEI,qBAAqB,EAAE,MAAM;IAEhE;;;;OAIG;IACU,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,MAAmC,GAClD,OAAO,CAAC,IAAI,CAAC;IA0DhB;;OAEG;YACW,gBAAgB;IAiH9B;;OAEG;YACW,wBAAwB;IAgDtC;;OAEG;IACU,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD;;OAEG;IACU,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAahD"}