playwright-automation-core 1.0.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 (115) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -0
  3. package/dist/api/api.assertions.d.ts +196 -0
  4. package/dist/api/api.assertions.d.ts.map +1 -0
  5. package/dist/api/api.assertions.js +462 -0
  6. package/dist/api/api.assertions.js.map +1 -0
  7. package/dist/api/api.builder.d.ts +134 -0
  8. package/dist/api/api.builder.d.ts.map +1 -0
  9. package/dist/api/api.builder.js +273 -0
  10. package/dist/api/api.builder.js.map +1 -0
  11. package/dist/api/api.client.d.ts +157 -0
  12. package/dist/api/api.client.d.ts.map +1 -0
  13. package/dist/api/api.client.js +493 -0
  14. package/dist/api/api.client.js.map +1 -0
  15. package/dist/api/index.d.ts +8 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +17 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/core/base.driver.d.ts +130 -0
  20. package/dist/core/base.driver.d.ts.map +1 -0
  21. package/dist/core/base.driver.js +264 -0
  22. package/dist/core/base.driver.js.map +1 -0
  23. package/dist/core/driver.factory.d.ts +120 -0
  24. package/dist/core/driver.factory.d.ts.map +1 -0
  25. package/dist/core/driver.factory.js +222 -0
  26. package/dist/core/driver.factory.js.map +1 -0
  27. package/dist/core/element.actions.d.ts +119 -0
  28. package/dist/core/element.actions.d.ts.map +1 -0
  29. package/dist/core/element.actions.js +379 -0
  30. package/dist/core/element.actions.js.map +1 -0
  31. package/dist/core/hook.manager.d.ts +186 -0
  32. package/dist/core/hook.manager.d.ts.map +1 -0
  33. package/dist/core/hook.manager.js +297 -0
  34. package/dist/core/hook.manager.js.map +1 -0
  35. package/dist/core/index.d.ts +8 -0
  36. package/dist/core/index.d.ts.map +1 -0
  37. package/dist/core/index.js +22 -0
  38. package/dist/core/index.js.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +128 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/mobile/index.d.ts +7 -0
  44. package/dist/mobile/index.d.ts.map +1 -0
  45. package/dist/mobile/index.js +14 -0
  46. package/dist/mobile/index.js.map +1 -0
  47. package/dist/mobile/mobile.assertions.d.ts +146 -0
  48. package/dist/mobile/mobile.assertions.d.ts.map +1 -0
  49. package/dist/mobile/mobile.assertions.js +333 -0
  50. package/dist/mobile/mobile.assertions.js.map +1 -0
  51. package/dist/mobile/mobile.driver.d.ts +297 -0
  52. package/dist/mobile/mobile.driver.d.ts.map +1 -0
  53. package/dist/mobile/mobile.driver.js +808 -0
  54. package/dist/mobile/mobile.driver.js.map +1 -0
  55. package/dist/types/common.types.d.ts +200 -0
  56. package/dist/types/common.types.d.ts.map +1 -0
  57. package/dist/types/common.types.js +3 -0
  58. package/dist/types/common.types.js.map +1 -0
  59. package/dist/types/config.types.d.ts +192 -0
  60. package/dist/types/config.types.d.ts.map +1 -0
  61. package/dist/types/config.types.js +3 -0
  62. package/dist/types/config.types.js.map +1 -0
  63. package/dist/types/driver.types.d.ts +500 -0
  64. package/dist/types/driver.types.d.ts.map +1 -0
  65. package/dist/types/driver.types.js +3 -0
  66. package/dist/types/driver.types.js.map +1 -0
  67. package/dist/types/enums.d.ts +53 -0
  68. package/dist/types/enums.d.ts.map +1 -0
  69. package/dist/types/enums.js +62 -0
  70. package/dist/types/enums.js.map +1 -0
  71. package/dist/types/index.d.ts +8 -0
  72. package/dist/types/index.d.ts.map +1 -0
  73. package/dist/types/index.js +15 -0
  74. package/dist/types/index.js.map +1 -0
  75. package/dist/utils/config.manager.d.ts +144 -0
  76. package/dist/utils/config.manager.d.ts.map +1 -0
  77. package/dist/utils/config.manager.js +473 -0
  78. package/dist/utils/config.manager.js.map +1 -0
  79. package/dist/utils/errors.d.ts +149 -0
  80. package/dist/utils/errors.d.ts.map +1 -0
  81. package/dist/utils/errors.js +290 -0
  82. package/dist/utils/errors.js.map +1 -0
  83. package/dist/utils/helpers.d.ts +124 -0
  84. package/dist/utils/helpers.d.ts.map +1 -0
  85. package/dist/utils/helpers.js +421 -0
  86. package/dist/utils/helpers.js.map +1 -0
  87. package/dist/utils/index.d.ts +9 -0
  88. package/dist/utils/index.d.ts.map +1 -0
  89. package/dist/utils/index.js +78 -0
  90. package/dist/utils/index.js.map +1 -0
  91. package/dist/utils/logger.d.ts +145 -0
  92. package/dist/utils/logger.d.ts.map +1 -0
  93. package/dist/utils/logger.js +235 -0
  94. package/dist/utils/logger.js.map +1 -0
  95. package/dist/utils/wait.utils.d.ts +95 -0
  96. package/dist/utils/wait.utils.d.ts.map +1 -0
  97. package/dist/utils/wait.utils.js +306 -0
  98. package/dist/utils/wait.utils.js.map +1 -0
  99. package/dist/web/index.d.ts +8 -0
  100. package/dist/web/index.d.ts.map +1 -0
  101. package/dist/web/index.js +16 -0
  102. package/dist/web/index.js.map +1 -0
  103. package/dist/web/web.assertions.d.ts +164 -0
  104. package/dist/web/web.assertions.d.ts.map +1 -0
  105. package/dist/web/web.assertions.js +427 -0
  106. package/dist/web/web.assertions.js.map +1 -0
  107. package/dist/web/web.driver.d.ts +174 -0
  108. package/dist/web/web.driver.d.ts.map +1 -0
  109. package/dist/web/web.driver.js +571 -0
  110. package/dist/web/web.driver.js.map +1 -0
  111. package/dist/web/web.page.d.ts +286 -0
  112. package/dist/web/web.page.d.ts.map +1 -0
  113. package/dist/web/web.page.js +570 -0
  114. package/dist/web/web.page.js.map +1 -0
  115. package/package.json +115 -0
@@ -0,0 +1,570 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebPage = void 0;
4
+ const element_actions_1 = require("../core/element.actions");
5
+ const hook_manager_1 = require("../core/hook.manager");
6
+ const types_1 = require("../types");
7
+ const utils_1 = require("../utils");
8
+ /**
9
+ * WebPage class providing high-level element interactions for Playwright.
10
+ */
11
+ class WebPage {
12
+ page;
13
+ logger;
14
+ hooks;
15
+ defaultTimeout;
16
+ elementActions;
17
+ /**
18
+ * Create a new WebPage instance
19
+ */
20
+ constructor(page, logger, defaultTimeout = 30000) {
21
+ this.page = page;
22
+ this.logger = logger || utils_1.Logger.getInstance();
23
+ this.hooks = (0, hook_manager_1.getHookManager)();
24
+ this.defaultTimeout = defaultTimeout;
25
+ // Set up element actions with Playwright-specific resolver and checker
26
+ const resolver = this.resolveLocator.bind(this);
27
+ const checker = {
28
+ isVisible: async (el) => await el.isVisible(),
29
+ isEnabled: async (el) => await el.isEnabled(),
30
+ isSelected: async (el) => {
31
+ const tagName = await el.evaluate((e) => e.tagName.toLowerCase());
32
+ if (tagName === "input") {
33
+ const type = await el.getAttribute("type");
34
+ if (type === "checkbox" || type === "radio") {
35
+ return await el.isChecked();
36
+ }
37
+ }
38
+ return false;
39
+ },
40
+ getText: async (el) => (await el.textContent()) || "",
41
+ getAttribute: async (el, name) => await el.getAttribute(name),
42
+ getBoundingBox: async (el) => await el.boundingBox(),
43
+ };
44
+ this.elementActions = new element_actions_1.ElementActions(resolver, checker, this.logger, defaultTimeout);
45
+ }
46
+ /**
47
+ * Resolve locator string to Playwright Locator
48
+ */
49
+ async resolveLocator(locator) {
50
+ const parsed = this.elementActions.parseLocator(locator);
51
+ switch (parsed.strategy) {
52
+ case "css":
53
+ return this.page.locator(parsed.value);
54
+ case "xpath":
55
+ return this.page.locator(`xpath=${parsed.value}`);
56
+ case "id":
57
+ return this.page.locator(`#${parsed.value}`);
58
+ case "class":
59
+ return this.page.locator(`.${parsed.value}`);
60
+ case "name":
61
+ return this.page.locator(`[name="${parsed.value}"]`);
62
+ case "text":
63
+ return this.page.locator(`text=${parsed.value}`);
64
+ case "accessibility":
65
+ return this.page
66
+ .getByRole("button", { name: parsed.value })
67
+ .or(this.page.getByLabel(parsed.value))
68
+ .or(this.page.getByText(parsed.value));
69
+ default:
70
+ return this.page.locator(parsed.value);
71
+ }
72
+ }
73
+ /**
74
+ * Get underlying Playwright page
75
+ */
76
+ getPage() {
77
+ return this.page;
78
+ }
79
+ /**
80
+ * Get Playwright locator from string or Locator object
81
+ */
82
+ async getLocator(locator) {
83
+ return await this.resolveLocator(locator);
84
+ }
85
+ // ============ Element Finding ============
86
+ /**
87
+ * Find element
88
+ */
89
+ async findElement(locator, options) {
90
+ return await this.elementActions.findElement(locator, options);
91
+ }
92
+ /**
93
+ * Find all elements matching locator
94
+ */
95
+ async findElements(locator) {
96
+ const playwrightLocator = await this.resolveLocator(locator);
97
+ const count = await playwrightLocator.count();
98
+ const elements = [];
99
+ for (let i = 0; i < count; i++) {
100
+ elements.push(playwrightLocator.nth(i));
101
+ }
102
+ return elements;
103
+ }
104
+ /**
105
+ * Get element count
106
+ */
107
+ async getElementCount(locator) {
108
+ const playwrightLocator = await this.resolveLocator(locator);
109
+ return await playwrightLocator.count();
110
+ }
111
+ /**
112
+ * Check if element exists
113
+ */
114
+ async exists(locator, timeout) {
115
+ return await this.elementActions.exists(locator, timeout);
116
+ }
117
+ /**
118
+ * Check if element is visible
119
+ */
120
+ async isVisible(locator) {
121
+ return await this.elementActions.isVisible(locator);
122
+ }
123
+ /**
124
+ * Check if element is enabled
125
+ */
126
+ async isEnabled(locator) {
127
+ return await this.elementActions.isEnabled(locator);
128
+ }
129
+ /**
130
+ * Check if checkbox/radio is checked
131
+ */
132
+ async isChecked(locator) {
133
+ const element = await this.resolveLocator(locator);
134
+ return await element.isChecked();
135
+ }
136
+ // ============ Wait Methods ============
137
+ /**
138
+ * Wait for element to be visible
139
+ */
140
+ async waitForVisible(locator, options) {
141
+ return await this.elementActions.waitForVisible(locator, options);
142
+ }
143
+ /**
144
+ * Wait for element to be hidden
145
+ */
146
+ async waitForHidden(locator, options) {
147
+ return await this.elementActions.waitForNotVisible(locator, options);
148
+ }
149
+ /**
150
+ * Wait for element to be enabled
151
+ */
152
+ async waitForEnabled(locator, options) {
153
+ return await this.elementActions.waitForEnabled(locator, options);
154
+ }
155
+ /**
156
+ * Wait for element to be clickable
157
+ */
158
+ async waitForClickable(locator, options) {
159
+ return await this.elementActions.waitForClickable(locator, options);
160
+ }
161
+ /**
162
+ * Wait for text content
163
+ */
164
+ async waitForText(locator, text, options) {
165
+ return await this.elementActions.waitForText(locator, text, options);
166
+ }
167
+ /**
168
+ * Wait for text to contain
169
+ */
170
+ async waitForTextContains(locator, text, options) {
171
+ return await this.elementActions.waitForTextContains(locator, text, options);
172
+ }
173
+ // ============ Click Actions ============
174
+ /**
175
+ * Click on element
176
+ */
177
+ async click(locator, options = {}) {
178
+ const description = this.elementActions.getLocatorDescription(locator);
179
+ // Execute before click hooks
180
+ await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_CLICK, {
181
+ platform: types_1.Platform.WEB,
182
+ data: { locator: description, options },
183
+ });
184
+ this.logger.elementAction("click", description);
185
+ const element = await this.elementActions.prepareElement(locator, options);
186
+ await element.click({
187
+ button: options.button,
188
+ clickCount: options.clickCount,
189
+ position: options.position,
190
+ modifiers: options.modifiers,
191
+ force: options.force,
192
+ timeout: options.timeout ?? this.defaultTimeout,
193
+ });
194
+ // Execute after click hooks
195
+ await this.hooks.execute(hook_manager_1.HookEvent.AFTER_CLICK, {
196
+ platform: types_1.Platform.WEB,
197
+ data: { locator: description, success: true },
198
+ });
199
+ }
200
+ /**
201
+ * Double click on element
202
+ */
203
+ async doubleClick(locator, options = {}) {
204
+ const description = this.elementActions.getLocatorDescription(locator);
205
+ this.logger.elementAction("doubleClick", description);
206
+ const element = await this.elementActions.prepareElement(locator, options);
207
+ await element.dblclick({
208
+ position: options.position,
209
+ modifiers: options.modifiers,
210
+ force: options.force,
211
+ timeout: options.timeout ?? this.defaultTimeout,
212
+ });
213
+ }
214
+ /**
215
+ * Right click on element
216
+ */
217
+ async rightClick(locator, options = {}) {
218
+ const description = this.elementActions.getLocatorDescription(locator);
219
+ this.logger.elementAction("rightClick", description);
220
+ const element = await this.elementActions.prepareElement(locator, options);
221
+ await element.click({
222
+ button: "right",
223
+ position: options.position,
224
+ modifiers: options.modifiers,
225
+ force: options.force,
226
+ timeout: options.timeout ?? this.defaultTimeout,
227
+ });
228
+ }
229
+ // ============ Input Actions ============
230
+ /**
231
+ * Type text into element
232
+ */
233
+ async type(locator, text, options = {}) {
234
+ const description = this.elementActions.getLocatorDescription(locator);
235
+ // Execute before type hooks
236
+ await this.hooks.execute(hook_manager_1.HookEvent.BEFORE_TYPE, {
237
+ platform: types_1.Platform.WEB,
238
+ data: { locator: description, textLength: text.length },
239
+ });
240
+ this.logger.elementAction("type", description);
241
+ const element = await this.elementActions.prepareElement(locator, options);
242
+ // Clear if requested
243
+ if (options.clear) {
244
+ await element.clear();
245
+ }
246
+ await element.pressSequentially(text, {
247
+ delay: options.typeDelay,
248
+ timeout: options.timeout ?? this.defaultTimeout,
249
+ });
250
+ // Execute after type hooks
251
+ await this.hooks.execute(hook_manager_1.HookEvent.AFTER_TYPE, {
252
+ platform: types_1.Platform.WEB,
253
+ data: { locator: description, success: true },
254
+ });
255
+ }
256
+ /**
257
+ * Fill element with text (faster than type, clears first)
258
+ */
259
+ async fill(locator, text, options = {}) {
260
+ const description = this.elementActions.getLocatorDescription(locator);
261
+ this.logger.elementAction("fill", description);
262
+ const element = await this.elementActions.prepareElement(locator, options);
263
+ await element.fill(text, {
264
+ force: options.force,
265
+ timeout: options.timeout ?? this.defaultTimeout,
266
+ });
267
+ }
268
+ /**
269
+ * Clear element text
270
+ */
271
+ async clear(locator, options = {}) {
272
+ const description = this.elementActions.getLocatorDescription(locator);
273
+ this.logger.elementAction("clear", description);
274
+ const element = await this.elementActions.prepareElement(locator, options);
275
+ await element.clear();
276
+ }
277
+ /**
278
+ * Press keyboard key
279
+ */
280
+ async pressKey(key, options) {
281
+ this.logger.debug(`Pressing key: ${key}`);
282
+ await this.page.keyboard.press(key, options);
283
+ }
284
+ /**
285
+ * Press key on element
286
+ */
287
+ async press(locator, key, options = {}) {
288
+ const description = this.elementActions.getLocatorDescription(locator);
289
+ this.logger.elementAction(`press ${key}`, description);
290
+ const element = await this.elementActions.prepareElement(locator, options);
291
+ await element.press(key);
292
+ }
293
+ // ============ Selection Actions ============
294
+ /**
295
+ * Select option from dropdown
296
+ */
297
+ async select(locator, option, options = {}) {
298
+ const description = this.elementActions.getLocatorDescription(locator);
299
+ this.logger.elementAction("select", description);
300
+ const element = await this.elementActions.prepareElement(locator, options);
301
+ const selectOptions = Array.isArray(option) ? option : [option];
302
+ const values = selectOptions.map((opt) => {
303
+ if (opt.value !== undefined)
304
+ return { value: opt.value };
305
+ if (opt.label !== undefined)
306
+ return { label: opt.label };
307
+ if (opt.index !== undefined)
308
+ return { index: opt.index };
309
+ return {};
310
+ });
311
+ await element.selectOption(values);
312
+ }
313
+ /**
314
+ * Check checkbox
315
+ */
316
+ async check(locator, options = {}) {
317
+ const description = this.elementActions.getLocatorDescription(locator);
318
+ this.logger.elementAction("check", description);
319
+ const element = await this.elementActions.prepareElement(locator, options);
320
+ await element.check({ force: options.force });
321
+ }
322
+ /**
323
+ * Uncheck checkbox
324
+ */
325
+ async uncheck(locator, options = {}) {
326
+ const description = this.elementActions.getLocatorDescription(locator);
327
+ this.logger.elementAction("uncheck", description);
328
+ const element = await this.elementActions.prepareElement(locator, options);
329
+ await element.uncheck({ force: options.force });
330
+ }
331
+ /**
332
+ * Set checkbox state
333
+ */
334
+ async setChecked(locator, checked, options = {}) {
335
+ const description = this.elementActions.getLocatorDescription(locator);
336
+ this.logger.elementAction(`setChecked ${checked}`, description);
337
+ const element = await this.elementActions.prepareElement(locator, options);
338
+ await element.setChecked(checked, { force: options.force });
339
+ }
340
+ // ============ Hover and Focus ============
341
+ /**
342
+ * Hover over element
343
+ */
344
+ async hover(locator, options = {}) {
345
+ const description = this.elementActions.getLocatorDescription(locator);
346
+ this.logger.elementAction("hover", description);
347
+ const element = await this.elementActions.prepareElement(locator, options);
348
+ await element.hover({
349
+ force: options.force,
350
+ timeout: options.timeout ?? this.defaultTimeout,
351
+ });
352
+ }
353
+ /**
354
+ * Focus on element
355
+ */
356
+ async focus(locator, options = {}) {
357
+ const description = this.elementActions.getLocatorDescription(locator);
358
+ this.logger.elementAction("focus", description);
359
+ const element = await this.elementActions.prepareElement(locator, options);
360
+ await element.focus();
361
+ }
362
+ /**
363
+ * Blur element (remove focus)
364
+ */
365
+ async blur(locator, options = {}) {
366
+ const description = this.elementActions.getLocatorDescription(locator);
367
+ this.logger.elementAction("blur", description);
368
+ const element = await this.elementActions.prepareElement(locator, options);
369
+ await element.blur();
370
+ }
371
+ // ============ Scroll Actions ============
372
+ /**
373
+ * Scroll element into view
374
+ */
375
+ async scrollIntoView(locator, options = {}) {
376
+ const description = this.elementActions.getLocatorDescription(locator);
377
+ this.logger.elementAction("scrollIntoView", description);
378
+ const element = await this.elementActions.prepareElement(locator, options);
379
+ await element.scrollIntoViewIfNeeded();
380
+ }
381
+ /**
382
+ * Scroll page by amount
383
+ */
384
+ async scrollBy(x, y) {
385
+ this.logger.debug(`Scrolling by: x=${x}, y=${y}`);
386
+ await this.page.evaluate(({ scrollX, scrollY }) => {
387
+ window.scrollBy(scrollX, scrollY);
388
+ }, { scrollX: x, scrollY: y });
389
+ }
390
+ /**
391
+ * Scroll page to position
392
+ */
393
+ async scrollTo(x, y) {
394
+ this.logger.debug(`Scrolling to: x=${x}, y=${y}`);
395
+ await this.page.evaluate(({ scrollX, scrollY }) => {
396
+ window.scrollTo(scrollX, scrollY);
397
+ }, { scrollX: x, scrollY: y });
398
+ }
399
+ // ============ Drag and Drop ============
400
+ /**
401
+ * Drag element to target
402
+ */
403
+ async dragAndDrop(source, target, options = {}) {
404
+ const sourceDesc = this.elementActions.getLocatorDescription(source);
405
+ const targetDesc = this.elementActions.getLocatorDescription(target);
406
+ this.logger.elementAction("dragAndDrop", `${sourceDesc} -> ${targetDesc}`);
407
+ const sourceElement = await this.resolveLocator(source);
408
+ const targetElement = await this.resolveLocator(target);
409
+ await sourceElement.dragTo(targetElement, {
410
+ sourcePosition: options.sourcePosition,
411
+ targetPosition: options.targetPosition,
412
+ });
413
+ }
414
+ // ============ File Upload ============
415
+ /**
416
+ * Upload file(s) to input
417
+ */
418
+ async uploadFile(locator, files, options = {}) {
419
+ const description = this.elementActions.getLocatorDescription(locator);
420
+ this.logger.elementAction("uploadFile", description);
421
+ const element = await this.elementActions.prepareElement(locator, options);
422
+ await element.setInputFiles(files);
423
+ }
424
+ /**
425
+ * Handle file chooser dialog
426
+ */
427
+ async handleFileChooser(files) {
428
+ const [fileChooser] = await Promise.all([
429
+ this.page.waitForEvent("filechooser"),
430
+ ]);
431
+ await fileChooser.setFiles(files);
432
+ this.logger.debug("Handled file chooser", { files });
433
+ }
434
+ // ============ Element Information ============
435
+ /**
436
+ * Get element text
437
+ */
438
+ async getText(locator, options) {
439
+ return await this.elementActions.getText(locator, options);
440
+ }
441
+ /**
442
+ * Get element inner text
443
+ */
444
+ async getInnerText(locator) {
445
+ const element = await this.resolveLocator(locator);
446
+ return await element.innerText();
447
+ }
448
+ /**
449
+ * Get element inner HTML
450
+ */
451
+ async getInnerHTML(locator) {
452
+ const element = await this.resolveLocator(locator);
453
+ return await element.innerHTML();
454
+ }
455
+ /**
456
+ * Get element attribute
457
+ */
458
+ async getAttribute(locator, name) {
459
+ return await this.elementActions.getAttribute(locator, name);
460
+ }
461
+ /**
462
+ * Get element input value
463
+ */
464
+ async getValue(locator) {
465
+ const element = await this.resolveLocator(locator);
466
+ return await element.inputValue();
467
+ }
468
+ /**
469
+ * Get element bounding box
470
+ */
471
+ async getBoundingBox(locator) {
472
+ return await this.elementActions.getBoundingBox(locator);
473
+ }
474
+ /**
475
+ * Get element state
476
+ */
477
+ async getElementState(locator) {
478
+ return await this.elementActions.getElementState(locator);
479
+ }
480
+ /**
481
+ * Get all element attributes
482
+ */
483
+ async getAllAttributes(locator) {
484
+ const element = await this.resolveLocator(locator);
485
+ return await element.evaluate((el) => {
486
+ const attrs = {};
487
+ for (let i = 0; i < el.attributes.length; i++) {
488
+ const attr = el.attributes[i];
489
+ attrs[attr.name] = attr.value;
490
+ }
491
+ return attrs;
492
+ });
493
+ }
494
+ // ============ Frame Handling ============
495
+ /**
496
+ * Get frame locator
497
+ */
498
+ getFrame(selector) {
499
+ return this.page.frameLocator(selector);
500
+ }
501
+ /**
502
+ * Execute action within frame
503
+ */
504
+ async inFrame(selector, action) {
505
+ const frame = this.getFrame(selector);
506
+ return await action(frame);
507
+ }
508
+ // ============ Dialog Handling ============
509
+ /**
510
+ * Set up dialog handler
511
+ */
512
+ onDialog(handler) {
513
+ this.page.on("dialog", async (dialog) => {
514
+ await handler({
515
+ type: dialog.type(),
516
+ message: dialog.message(),
517
+ accept: () => dialog.accept(),
518
+ dismiss: () => dialog.dismiss(),
519
+ defaultValue: dialog.defaultValue(),
520
+ });
521
+ });
522
+ }
523
+ /**
524
+ * Accept next dialog
525
+ */
526
+ async acceptDialog(promptText) {
527
+ this.page.once("dialog", async (dialog) => {
528
+ await dialog.accept(promptText);
529
+ });
530
+ }
531
+ /**
532
+ * Dismiss next dialog
533
+ */
534
+ async dismissDialog() {
535
+ this.page.once("dialog", async (dialog) => {
536
+ await dialog.dismiss();
537
+ });
538
+ }
539
+ // ============ Utility Methods ============
540
+ /**
541
+ * Set default timeout
542
+ */
543
+ setDefaultTimeout(timeout) {
544
+ this.defaultTimeout = timeout;
545
+ this.elementActions.setDefaultTimeout(timeout);
546
+ this.page.setDefaultTimeout(timeout);
547
+ }
548
+ /**
549
+ * Take element screenshot
550
+ */
551
+ async screenshotElement(locator) {
552
+ const element = await this.resolveLocator(locator);
553
+ return await element.screenshot();
554
+ }
555
+ /**
556
+ * Highlight element (for debugging)
557
+ */
558
+ async highlight(locator, duration = 2000) {
559
+ const element = await this.resolveLocator(locator);
560
+ await element.evaluate((el, dur) => {
561
+ const originalStyle = el.getAttribute("style") || "";
562
+ el.setAttribute("style", `${originalStyle}; border: 3px solid red !important; background-color: yellow !important;`);
563
+ setTimeout(() => {
564
+ el.setAttribute("style", originalStyle);
565
+ }, dur);
566
+ }, duration);
567
+ }
568
+ }
569
+ exports.WebPage = WebPage;
570
+ //# sourceMappingURL=web.page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.page.js","sourceRoot":"","sources":["../../src/web/web.page.ts"],"names":[],"mappings":";;;AAYA,6DAIiC;AACjC,uDAA8E;AAC9E,oCAAoC;AACpC,oCAAkC;AA6ClC;;GAEG;AACH,MAAa,OAAO;IACV,IAAI,CAAO;IACX,MAAM,CAAS;IACf,KAAK,CAAc;IACnB,cAAc,CAAS;IACvB,cAAc,CAAoC;IAE1D;;OAEG;IACH,YAAY,IAAU,EAAE,MAAe,EAAE,iBAAyB,KAAK;QACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,cAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAA,6BAAc,GAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,uEAAuE;QACvE,MAAM,QAAQ,GACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAsC;YACjD,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE;YAC7C,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE;YAC7C,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;gBAClE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC3C,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5C,OAAO,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;YACrD,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;YAC7D,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;SACrD,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CACtC,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,MAAM,EACX,cAAc,CACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAC1B,OAAyB;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEzD,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/C,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;YACvD,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACnD,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,IAAI;qBACb,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;qBAC3C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACtC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C;gBACE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,OAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,4CAA4C;IAE5C;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CACvB,OAAyB;QAEzB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,OAAyB;QACpD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CACjB,OAAyB,EACzB,OAAgB;QAEhB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC9C,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC9C,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED,yCAAyC;IAEzC;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CACxB,OAAyB,EACzB,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAyB,EACzB,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,IAAY,EACZ,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAC9B,OAAyB,EACzB,IAAY,EACZ,OAAqB;QAErB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAClD,OAAO,EACP,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC;IAED,0CAA0C;IAE1C;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,UAAwB,EAAE;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEvE,6BAA6B;QAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAS,CAAC,YAAY,EAAE;YAC/C,QAAQ,EAAE,gBAAQ,CAAC,GAAG;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAS,CAAC,WAAW,EAAE;YAC9C,QAAQ,EAAE,gBAAQ,CAAC,GAAG;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,UAAwB,EAAE;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,QAAQ,CAAC;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,OAAyB,EACzB,UAAwB,EAAE;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;IACL,CAAC;IAED,0CAA0C;IAE1C;;OAEG;IACI,KAAK,CAAC,IAAI,CACf,OAAyB,EACzB,IAAY,EACZ,UAAuB,EAAE;QAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEvE,4BAA4B;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAS,CAAC,WAAW,EAAE;YAC9C,QAAQ,EAAE,gBAAQ,CAAC,GAAG;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE;SACxD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3E,qBAAqB;QACrB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAED,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;YACpC,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;QAEH,2BAA2B;QAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAS,CAAC,UAAU,EAAE;YAC7C,QAAQ,EAAE,gBAAQ,CAAC,GAAG;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CACf,OAAyB,EACzB,IAAY,EACZ,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;YACvB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CACnB,GAAW,EACX,OAA4B;QAE5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,GAAW,EACX,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,8CAA8C;IAE9C;;OAEG;IACI,KAAK,CAAC,MAAM,CACjB,OAAyB,EACzB,MAAqC,EACrC,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GACV,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACzD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAClB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,OAAyB,EACzB,OAAgB,EAChB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,4CAA4C;IAE5C;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,CAAC;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;SAChD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CACf,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,2CAA2C;IAE3C;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,sBAAsB,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,CAAS,EAAE,CAAS;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CACtB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACvB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,CAAS,EAAE,CAAS;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CACtB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACvB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,0CAA0C;IAE1C;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,MAAwB,EACxB,MAAwB,EACxB,UAA2B,EAAE;QAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,UAAU,OAAO,UAAU,EAAE,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE;YACxC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IAExC;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,OAAyB,EACzB,KAAwB,EACxB,UAAyB,EAAE;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,KAAwB;QACrD,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;SACtC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gDAAgD;IAEhD;;OAEG;IACI,KAAK,CAAC,OAAO,CAClB,OAAyB,EACzB,OAAuB;QAEvB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,OAAyB;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,OAAyB;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CACvB,OAAyB,EACzB,IAAY;QAEZ,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,OAAyB;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAC1B,OAAyB;QAEzB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE;YACnC,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAE3C;;OAEG;IACI,QAAQ,CAAC,QAAgB;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAClB,QAAgB,EAChB,MAA2C;QAE3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,4CAA4C;IAE5C;;OAEG;IACI,QAAQ,CACb,OAMmB;QAEnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,OAAO,CAAC;gBACZ,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;gBACzB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,UAAmB;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAE5C;;OAEG;IACI,iBAAiB,CAAC,OAAe;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,OAAyB;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CACpB,OAAyB,EACzB,WAAmB,IAAI;QAEvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrD,EAAE,CAAC,YAAY,CACb,OAAO,EACP,GAAG,aAAa,0EAA0E,CAC3F,CAAC;YACF,UAAU,CAAC,GAAG,EAAE;gBACd,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC1C,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;CACF;AA1xBD,0BA0xBC"}