1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.waitForElementToBeRemoved = waitForElementToBeRemoved;
|
7 | var _waitFor = require("./wait-for");
|
8 | const isRemoved = result => !result || Array.isArray(result) && !result.length;
|
9 |
|
10 |
|
11 |
|
12 | function initialCheck(elements) {
|
13 | if (isRemoved(elements)) {
|
14 | throw new Error('The element(s) given to waitForElementToBeRemoved are already removed. waitForElementToBeRemoved requires that the element(s) exist(s) before waiting for removal.');
|
15 | }
|
16 | }
|
17 | async function waitForElementToBeRemoved(callback, options) {
|
18 |
|
19 | const timeoutError = new Error('Timed out in waitForElementToBeRemoved.');
|
20 | if (typeof callback !== 'function') {
|
21 | initialCheck(callback);
|
22 | const elements = Array.isArray(callback) ? callback : [callback];
|
23 | const getRemainingElements = elements.map(element => {
|
24 | let parent = element.parentElement;
|
25 | if (parent === null) return () => null;
|
26 | while (parent.parentElement) parent = parent.parentElement;
|
27 | return () => parent.contains(element) ? element : null;
|
28 | });
|
29 | callback = () => getRemainingElements.map(c => c()).filter(Boolean);
|
30 | }
|
31 | initialCheck(callback());
|
32 | return (0, _waitFor.waitFor)(() => {
|
33 | let result;
|
34 | try {
|
35 | result = callback();
|
36 | } catch (error) {
|
37 | if (error.name === 'TestingLibraryElementError') {
|
38 | return undefined;
|
39 | }
|
40 | throw error;
|
41 | }
|
42 | if (!isRemoved(result)) {
|
43 | throw timeoutError;
|
44 | }
|
45 | return undefined;
|
46 | }, options);
|
47 | }
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
\ | No newline at end of file |