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,119 @@
1
+ import { Locator, ActionOptions, WaitOptions, ElementInfo, ElementState, BoundingBox } from "../types";
2
+ import { Logger, WaitUtils } from "../utils";
3
+ /**
4
+ * Locator resolver function type
5
+ * Platform-specific implementations will provide this
6
+ */
7
+ export type LocatorResolver<T> = (locator: Locator | string) => Promise<T>;
8
+ /**
9
+ * Element checker function type
10
+ */
11
+ export type ElementChecker<T> = {
12
+ isVisible: (element: T) => Promise<boolean>;
13
+ isEnabled: (element: T) => Promise<boolean>;
14
+ isSelected: (element: T) => Promise<boolean>;
15
+ getText: (element: T) => Promise<string>;
16
+ getAttribute: (element: T, name: string) => Promise<string | null>;
17
+ getBoundingBox: (element: T) => Promise<BoundingBox | null>;
18
+ };
19
+ /**
20
+ * Common element actions that can be used across platforms.
21
+ * This class provides reusable logic for element interactions.
22
+ */
23
+ export declare class ElementActions<TElement> {
24
+ protected logger: Logger;
25
+ protected waitUtils: WaitUtils;
26
+ protected resolver: LocatorResolver<TElement>;
27
+ protected checker: ElementChecker<TElement>;
28
+ protected defaultTimeout: number;
29
+ constructor(resolver: LocatorResolver<TElement>, checker: ElementChecker<TElement>, logger?: Logger, defaultTimeout?: number);
30
+ /**
31
+ * Parse locator from string or Locator object
32
+ */
33
+ parseLocator(locator: Locator | string): Locator;
34
+ /**
35
+ * Get locator description for logging
36
+ */
37
+ getLocatorDescription(locator: Locator | string): string;
38
+ /**
39
+ * Find element with wait
40
+ */
41
+ findElement(locator: Locator | string, options?: WaitOptions): Promise<TElement>;
42
+ /**
43
+ * Wait for element to be visible
44
+ */
45
+ waitForVisible(locator: Locator | string, options?: WaitOptions): Promise<TElement>;
46
+ /**
47
+ * Wait for element to be enabled
48
+ */
49
+ waitForEnabled(locator: Locator | string, options?: WaitOptions): Promise<TElement>;
50
+ /**
51
+ * Wait for element to be clickable (visible and enabled)
52
+ */
53
+ waitForClickable(locator: Locator | string, options?: WaitOptions): Promise<TElement>;
54
+ /**
55
+ * Wait for element to not be visible
56
+ */
57
+ waitForNotVisible(locator: Locator | string, options?: WaitOptions): Promise<void>;
58
+ /**
59
+ * Wait for element to have specific text
60
+ */
61
+ waitForText(locator: Locator | string, expectedText: string, options?: WaitOptions): Promise<TElement>;
62
+ /**
63
+ * Wait for element to contain text
64
+ */
65
+ waitForTextContains(locator: Locator | string, expectedText: string, options?: WaitOptions): Promise<TElement>;
66
+ /**
67
+ * Wait for element attribute value
68
+ */
69
+ waitForAttribute(locator: Locator | string, attribute: string, expectedValue: string, options?: WaitOptions): Promise<TElement>;
70
+ /**
71
+ * Get element state
72
+ */
73
+ getElementState(locator: Locator | string): Promise<ElementState>;
74
+ /**
75
+ * Get element info
76
+ */
77
+ getElementInfo(locator: Locator | string): Promise<Partial<ElementInfo>>;
78
+ /**
79
+ * Check if element exists
80
+ */
81
+ exists(locator: Locator | string, timeout?: number): Promise<boolean>;
82
+ /**
83
+ * Check if element is visible
84
+ */
85
+ isVisible(locator: Locator | string): Promise<boolean>;
86
+ /**
87
+ * Check if element is enabled
88
+ */
89
+ isEnabled(locator: Locator | string): Promise<boolean>;
90
+ /**
91
+ * Check if element is selected/checked
92
+ */
93
+ isSelected(locator: Locator | string): Promise<boolean>;
94
+ /**
95
+ * Get element text
96
+ */
97
+ getText(locator: Locator | string, options?: ActionOptions): Promise<string>;
98
+ /**
99
+ * Get element attribute
100
+ */
101
+ getAttribute(locator: Locator | string, attribute: string): Promise<string | null>;
102
+ /**
103
+ * Get element bounding box
104
+ */
105
+ getBoundingBox(locator: Locator | string): Promise<BoundingBox | null>;
106
+ /**
107
+ * Prepare element for action (find, wait for visibility/enabled)
108
+ */
109
+ prepareElement(locator: Locator | string, options?: ActionOptions): Promise<TElement>;
110
+ /**
111
+ * Set default timeout
112
+ */
113
+ setDefaultTimeout(timeout: number): void;
114
+ /**
115
+ * Get default timeout
116
+ */
117
+ getDefaultTimeout(): number;
118
+ }
119
+ //# sourceMappingURL=element.actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.actions.d.ts","sourceRoot":"","sources":["../../src/core/element.actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElementActions = void 0;
4
+ const utils_1 = require("../utils");
5
+ /**
6
+ * Default action options
7
+ */
8
+ const DEFAULT_ACTION_OPTIONS = {
9
+ timeout: 30000,
10
+ force: false,
11
+ waitForVisible: true,
12
+ waitForEnabled: true,
13
+ delay: 0,
14
+ };
15
+ /**
16
+ * Common element actions that can be used across platforms.
17
+ * This class provides reusable logic for element interactions.
18
+ */
19
+ class ElementActions {
20
+ logger;
21
+ waitUtils;
22
+ resolver;
23
+ checker;
24
+ defaultTimeout;
25
+ constructor(resolver, checker, logger, defaultTimeout = 30000) {
26
+ this.resolver = resolver;
27
+ this.checker = checker;
28
+ this.logger = logger || utils_1.Logger.getInstance();
29
+ this.waitUtils = new utils_1.WaitUtils(this.logger);
30
+ this.defaultTimeout = defaultTimeout;
31
+ }
32
+ /**
33
+ * Parse locator from string or Locator object
34
+ */
35
+ parseLocator(locator) {
36
+ if (typeof locator === "string") {
37
+ // Auto-detect locator type
38
+ if (locator.startsWith("//") || locator.startsWith("(//")) {
39
+ return { strategy: "xpath", value: locator };
40
+ }
41
+ if (locator.startsWith("#")) {
42
+ return { strategy: "id", value: locator.substring(1) };
43
+ }
44
+ if (locator.startsWith(".")) {
45
+ return { strategy: "class", value: locator.substring(1) };
46
+ }
47
+ if (locator.startsWith("~")) {
48
+ return { strategy: "accessibility", value: locator.substring(1) };
49
+ }
50
+ if (locator.startsWith("text=")) {
51
+ return { strategy: "text", value: locator.substring(5) };
52
+ }
53
+ if (locator.startsWith("[name=")) {
54
+ const match = locator.match(/\[name=["']?([^"'\]]+)["']?\]/);
55
+ if (match) {
56
+ return { strategy: "name", value: match[1] };
57
+ }
58
+ }
59
+ // Default to CSS selector
60
+ return { strategy: "css", value: locator };
61
+ }
62
+ return locator;
63
+ }
64
+ /**
65
+ * Get locator description for logging
66
+ */
67
+ getLocatorDescription(locator) {
68
+ const parsed = this.parseLocator(locator);
69
+ return parsed.description || `${parsed.strategy}=${parsed.value}`;
70
+ }
71
+ /**
72
+ * Find element with wait
73
+ */
74
+ async findElement(locator, options = {}) {
75
+ const timeout = options.timeout ?? this.defaultTimeout;
76
+ const description = this.getLocatorDescription(locator);
77
+ this.logger.debug(`Finding element: ${description}`);
78
+ try {
79
+ const element = await this.waitUtils.waitFor(async () => {
80
+ try {
81
+ return await this.resolver(locator);
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }, {
87
+ timeout,
88
+ interval: 100,
89
+ message: `Element not found: ${description}`,
90
+ });
91
+ if (!element) {
92
+ throw new utils_1.ElementNotFoundError(description, timeout);
93
+ }
94
+ return element;
95
+ }
96
+ catch (error) {
97
+ if (error instanceof utils_1.ElementNotFoundError) {
98
+ throw error;
99
+ }
100
+ throw new utils_1.ElementNotFoundError(description, timeout, {
101
+ originalError: error.message,
102
+ });
103
+ }
104
+ }
105
+ /**
106
+ * Wait for element to be visible
107
+ */
108
+ async waitForVisible(locator, options = {}) {
109
+ const timeout = options.timeout ?? this.defaultTimeout;
110
+ const description = this.getLocatorDescription(locator);
111
+ this.logger.debug(`Waiting for element to be visible: ${description}`);
112
+ const element = await this.findElement(locator, options);
113
+ await this.waitUtils.waitFor(async () => this.checker.isVisible(element), {
114
+ timeout,
115
+ interval: 100,
116
+ message: `Element not visible: ${description}`,
117
+ });
118
+ return element;
119
+ }
120
+ /**
121
+ * Wait for element to be enabled
122
+ */
123
+ async waitForEnabled(locator, options = {}) {
124
+ const timeout = options.timeout ?? this.defaultTimeout;
125
+ const description = this.getLocatorDescription(locator);
126
+ this.logger.debug(`Waiting for element to be enabled: ${description}`);
127
+ const element = await this.findElement(locator, options);
128
+ await this.waitUtils.waitFor(async () => this.checker.isEnabled(element), {
129
+ timeout,
130
+ interval: 100,
131
+ message: `Element not enabled: ${description}`,
132
+ });
133
+ return element;
134
+ }
135
+ /**
136
+ * Wait for element to be clickable (visible and enabled)
137
+ */
138
+ async waitForClickable(locator, options = {}) {
139
+ const timeout = options.timeout ?? this.defaultTimeout;
140
+ const description = this.getLocatorDescription(locator);
141
+ this.logger.debug(`Waiting for element to be clickable: ${description}`);
142
+ const element = await this.findElement(locator, options);
143
+ await this.waitUtils.waitFor(async () => {
144
+ const visible = await this.checker.isVisible(element);
145
+ const enabled = await this.checker.isEnabled(element);
146
+ return visible && enabled;
147
+ }, {
148
+ timeout,
149
+ interval: 100,
150
+ message: `Element not clickable: ${description}`,
151
+ });
152
+ return element;
153
+ }
154
+ /**
155
+ * Wait for element to not be visible
156
+ */
157
+ async waitForNotVisible(locator, options = {}) {
158
+ const timeout = options.timeout ?? this.defaultTimeout;
159
+ const description = this.getLocatorDescription(locator);
160
+ this.logger.debug(`Waiting for element to not be visible: ${description}`);
161
+ await this.waitUtils.waitFor(async () => {
162
+ try {
163
+ const element = await this.resolver(locator);
164
+ return !(await this.checker.isVisible(element));
165
+ }
166
+ catch {
167
+ return true; // Element not found = not visible
168
+ }
169
+ }, {
170
+ timeout,
171
+ interval: 100,
172
+ message: `Element still visible: ${description}`,
173
+ });
174
+ }
175
+ /**
176
+ * Wait for element to have specific text
177
+ */
178
+ async waitForText(locator, expectedText, options = {}) {
179
+ const timeout = options.timeout ?? this.defaultTimeout;
180
+ const description = this.getLocatorDescription(locator);
181
+ this.logger.debug(`Waiting for element text: ${description} = "${expectedText}"`);
182
+ const element = await this.findElement(locator, options);
183
+ await this.waitUtils.waitFor(async () => {
184
+ const text = await this.checker.getText(element);
185
+ return text === expectedText;
186
+ }, {
187
+ timeout,
188
+ interval: 100,
189
+ message: `Element text did not match. Expected: "${expectedText}"`,
190
+ });
191
+ return element;
192
+ }
193
+ /**
194
+ * Wait for element to contain text
195
+ */
196
+ async waitForTextContains(locator, expectedText, options = {}) {
197
+ const timeout = options.timeout ?? this.defaultTimeout;
198
+ const description = this.getLocatorDescription(locator);
199
+ this.logger.debug(`Waiting for element to contain text: ${description} contains "${expectedText}"`);
200
+ const element = await this.findElement(locator, options);
201
+ await this.waitUtils.waitFor(async () => {
202
+ const text = await this.checker.getText(element);
203
+ return text.includes(expectedText);
204
+ }, {
205
+ timeout,
206
+ interval: 100,
207
+ message: `Element text did not contain: "${expectedText}"`,
208
+ });
209
+ return element;
210
+ }
211
+ /**
212
+ * Wait for element attribute value
213
+ */
214
+ async waitForAttribute(locator, attribute, expectedValue, options = {}) {
215
+ const timeout = options.timeout ?? this.defaultTimeout;
216
+ const description = this.getLocatorDescription(locator);
217
+ this.logger.debug(`Waiting for attribute: ${description}[${attribute}] = "${expectedValue}"`);
218
+ const element = await this.findElement(locator, options);
219
+ await this.waitUtils.waitFor(async () => {
220
+ const value = await this.checker.getAttribute(element, attribute);
221
+ return value === expectedValue;
222
+ }, {
223
+ timeout,
224
+ interval: 100,
225
+ message: `Attribute ${attribute} did not match. Expected: "${expectedValue}"`,
226
+ });
227
+ return element;
228
+ }
229
+ /**
230
+ * Get element state
231
+ */
232
+ async getElementState(locator) {
233
+ const element = await this.findElement(locator);
234
+ const [isVisible, isEnabled, isSelected] = await Promise.all([
235
+ this.checker.isVisible(element),
236
+ this.checker.isEnabled(element),
237
+ this.checker.isSelected(element).catch(() => false),
238
+ ]);
239
+ return {
240
+ isVisible,
241
+ isEnabled,
242
+ isSelected,
243
+ isFocused: false, // Platform-specific
244
+ isEditable: isEnabled, // Simplified
245
+ };
246
+ }
247
+ /**
248
+ * Get element info
249
+ */
250
+ async getElementInfo(locator) {
251
+ const element = await this.findElement(locator);
252
+ const [text, boundingBox, state] = await Promise.all([
253
+ this.checker.getText(element),
254
+ this.checker.getBoundingBox(element),
255
+ this.getElementState(locator),
256
+ ]);
257
+ return {
258
+ text,
259
+ boundingBox,
260
+ state,
261
+ attributes: {}, // Platform-specific
262
+ };
263
+ }
264
+ /**
265
+ * Check if element exists
266
+ */
267
+ async exists(locator, timeout = 1000) {
268
+ try {
269
+ await this.findElement(locator, { timeout });
270
+ return true;
271
+ }
272
+ catch {
273
+ return false;
274
+ }
275
+ }
276
+ /**
277
+ * Check if element is visible
278
+ */
279
+ async isVisible(locator) {
280
+ try {
281
+ const element = await this.resolver(locator);
282
+ return await this.checker.isVisible(element);
283
+ }
284
+ catch {
285
+ return false;
286
+ }
287
+ }
288
+ /**
289
+ * Check if element is enabled
290
+ */
291
+ async isEnabled(locator) {
292
+ try {
293
+ const element = await this.resolver(locator);
294
+ return await this.checker.isEnabled(element);
295
+ }
296
+ catch {
297
+ return false;
298
+ }
299
+ }
300
+ /**
301
+ * Check if element is selected/checked
302
+ */
303
+ async isSelected(locator) {
304
+ try {
305
+ const element = await this.resolver(locator);
306
+ return await this.checker.isSelected(element);
307
+ }
308
+ catch {
309
+ return false;
310
+ }
311
+ }
312
+ /**
313
+ * Get element text
314
+ */
315
+ async getText(locator, options = {}) {
316
+ const element = await this.prepareElement(locator, options);
317
+ return await this.checker.getText(element);
318
+ }
319
+ /**
320
+ * Get element attribute
321
+ */
322
+ async getAttribute(locator, attribute) {
323
+ const element = await this.findElement(locator);
324
+ return await this.checker.getAttribute(element, attribute);
325
+ }
326
+ /**
327
+ * Get element bounding box
328
+ */
329
+ async getBoundingBox(locator) {
330
+ const element = await this.findElement(locator);
331
+ return await this.checker.getBoundingBox(element);
332
+ }
333
+ /**
334
+ * Prepare element for action (find, wait for visibility/enabled)
335
+ */
336
+ async prepareElement(locator, options = {}) {
337
+ const opts = { ...DEFAULT_ACTION_OPTIONS, ...options };
338
+ const description = this.getLocatorDescription(locator);
339
+ // Add delay if specified
340
+ if (opts.delay > 0) {
341
+ await this.waitUtils.sleep(opts.delay);
342
+ }
343
+ // Find element
344
+ const element = await this.findElement(locator, { timeout: opts.timeout });
345
+ // Skip visibility/enabled checks if force is true
346
+ if (opts.force) {
347
+ return element;
348
+ }
349
+ // Wait for visibility
350
+ if (opts.waitForVisible) {
351
+ const visible = await this.checker.isVisible(element);
352
+ if (!visible) {
353
+ throw new utils_1.ElementNotInteractableError(description, "interaction", "Element is not visible");
354
+ }
355
+ }
356
+ // Wait for enabled
357
+ if (opts.waitForEnabled) {
358
+ const enabled = await this.checker.isEnabled(element);
359
+ if (!enabled) {
360
+ throw new utils_1.ElementNotInteractableError(description, "interaction", "Element is not enabled");
361
+ }
362
+ }
363
+ return element;
364
+ }
365
+ /**
366
+ * Set default timeout
367
+ */
368
+ setDefaultTimeout(timeout) {
369
+ this.defaultTimeout = timeout;
370
+ }
371
+ /**
372
+ * Get default timeout
373
+ */
374
+ getDefaultTimeout() {
375
+ return this.defaultTimeout;
376
+ }
377
+ }
378
+ exports.ElementActions = ElementActions;
379
+ //# sourceMappingURL=element.actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.actions.js","sourceRoot":"","sources":["../../src/core/element.actions.ts"],"names":[],"mappings":";;;AAQA,oCAKkB;AAElB;;GAEG;AACH,MAAM,sBAAsB,GAA4B;IACtD,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,KAAK,EAAE,CAAC;CACT,CAAC;AAoBF;;;GAGG;AACH,MAAa,cAAc;IACf,MAAM,CAAS;IACf,SAAS,CAAY;IACrB,QAAQ,CAA4B;IACpC,OAAO,CAA2B;IAClC,cAAc,CAAS;IAEjC,YACE,QAAmC,EACnC,OAAiC,EACjC,MAAe,EACf,iBAAyB,KAAK;QAE9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,cAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,iBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,OAAyB;QAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,2BAA2B;YAC3B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC7D,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,0BAA0B;YAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,OAAyB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1C,KAAK,IAAI,EAAE;gBACT,IAAI,CAAC;oBACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,EACD;gBACE,OAAO;gBACP,QAAQ,EAAE,GAAG;gBACb,OAAO,EAAE,sBAAsB,WAAW,EAAE;aAC7C,CACF,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,4BAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,4BAAoB,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,4BAAoB,CAAC,WAAW,EAAE,OAAO,EAAE;gBACnD,aAAa,EAAG,KAAe,CAAC,OAAO;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACxE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,wBAAwB,WAAW,EAAE;SAC/C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACxE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,wBAAwB,WAAW,EAAE;SAC/C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAyB,EACzB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,OAAO,IAAI,OAAO,CAAC;QAC5B,CAAC,EACD;YACE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,0BAA0B,WAAW,EAAE;SACjD,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAC5B,OAAyB,EACzB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;QAE3E,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC7C,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC,CAAC,kCAAkC;YACjD,CAAC;QACH,CAAC,EACD;YACE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,0BAA0B,WAAW,EAAE;SACjD,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,OAAyB,EACzB,YAAoB,EACpB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6BAA6B,WAAW,OAAO,YAAY,GAAG,CAC/D,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,KAAK,YAAY,CAAC;QAC/B,CAAC,EACD;YACE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,0CAA0C,YAAY,GAAG;SACnE,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,mBAAmB,CAC9B,OAAyB,EACzB,YAAoB,EACpB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,wCAAwC,WAAW,cAAc,YAAY,GAAG,CACjF,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC,EACD;YACE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,kCAAkC,YAAY,GAAG;SAC3D,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,OAAyB,EACzB,SAAiB,EACjB,aAAqB,EACrB,UAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0BAA0B,WAAW,IAAI,SAAS,QAAQ,aAAa,GAAG,CAC3E,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,KAAK,IAAI,EAAE;YACT,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAClE,OAAO,KAAK,KAAK,aAAa,CAAC;QACjC,CAAC,EACD;YACE,OAAO;YACP,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,aAAa,SAAS,8BAA8B,aAAa,GAAG;SAC9E,CACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAC1B,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;SACpD,CAAC,CAAC;QAEH,OAAO;YACL,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS,EAAE,KAAK,EAAE,oBAAoB;YACtC,UAAU,EAAE,SAAS,EAAE,aAAa;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,OAAO;YACL,IAAI;YACJ,WAAW;YACX,KAAK;YACL,UAAU,EAAE,EAAE,EAAE,oBAAoB;SACrC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CACjB,OAAyB,EACzB,UAAkB,IAAI;QAEtB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,OAAyB;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,OAAyB;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAClB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CACvB,OAAyB,EACzB,SAAiB;QAEjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CACzB,OAAyB,EACzB,UAAyB,EAAE;QAE3B,MAAM,IAAI,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,OAAO,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,yBAAyB;QACzB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAED,eAAe;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3E,kDAAkD;QAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,mCAA2B,CACnC,WAAW,EACX,aAAa,EACb,wBAAwB,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,mCAA2B,CACnC,WAAW,EACX,aAAa,EACb,wBAAwB,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,OAAe;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAjfD,wCAifC"}