accented 0.0.0-20250424114613 → 0.0.0-20250701143712
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.
- package/README.md +44 -193
- package/dist/accented.d.ts +7 -7
- package/dist/accented.d.ts.map +1 -1
- package/dist/accented.js +30 -27
- package/dist/accented.js.map +1 -1
- package/dist/common/tokens.d.ts +2 -0
- package/dist/common/tokens.d.ts.map +1 -0
- package/dist/common/tokens.js +2 -0
- package/dist/common/tokens.js.map +1 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/dom-updater.d.ts +1 -1
- package/dist/dom-updater.d.ts.map +1 -1
- package/dist/dom-updater.js +14 -13
- package/dist/dom-updater.js.map +1 -1
- package/dist/elements/accented-dialog.d.ts +2 -3
- package/dist/elements/accented-dialog.d.ts.map +1 -1
- package/dist/elements/accented-dialog.js +14 -8
- package/dist/elements/accented-dialog.js.map +1 -1
- package/dist/elements/accented-trigger.d.ts +3 -4
- package/dist/elements/accented-trigger.d.ts.map +1 -1
- package/dist/elements/accented-trigger.js +10 -10
- package/dist/elements/accented-trigger.js.map +1 -1
- package/dist/fullscreen-listener.d.ts +1 -1
- package/dist/fullscreen-listener.d.ts.map +1 -1
- package/dist/fullscreen-listener.js +3 -4
- package/dist/fullscreen-listener.js.map +1 -1
- package/dist/intersection-observer.d.ts +1 -1
- package/dist/intersection-observer.d.ts.map +1 -1
- package/dist/intersection-observer.js +12 -6
- package/dist/intersection-observer.js.map +1 -1
- package/dist/log-and-rethrow.d.ts +1 -1
- package/dist/log-and-rethrow.d.ts.map +1 -1
- package/dist/log-and-rethrow.js +2 -3
- package/dist/log-and-rethrow.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -2
- package/dist/logger.js.map +1 -1
- package/dist/register-elements.d.ts +1 -1
- package/dist/register-elements.d.ts.map +1 -1
- package/dist/register-elements.js +6 -7
- package/dist/register-elements.js.map +1 -1
- package/dist/resize-listener.d.ts +1 -1
- package/dist/resize-listener.d.ts.map +1 -1
- package/dist/resize-listener.js +3 -4
- package/dist/resize-listener.js.map +1 -1
- package/dist/scanner.d.ts +2 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +36 -36
- package/dist/scanner.js.map +1 -1
- package/dist/scroll-listeners.d.ts +1 -1
- package/dist/scroll-listeners.d.ts.map +1 -1
- package/dist/scroll-listeners.js +3 -4
- package/dist/scroll-listeners.js.map +1 -1
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -5
- package/dist/state.js.map +1 -1
- package/dist/task-queue.d.ts +2 -2
- package/dist/task-queue.d.ts.map +1 -1
- package/dist/task-queue.js +1 -1
- package/dist/task-queue.js.map +1 -1
- package/dist/types.d.ts +102 -46
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/are-elements-with-issues-equal.d.ts +2 -2
- package/dist/utils/are-elements-with-issues-equal.d.ts.map +1 -1
- package/dist/utils/are-elements-with-issues-equal.js +3 -3
- package/dist/utils/are-elements-with-issues-equal.js.map +1 -1
- package/dist/utils/are-issue-sets-equal.d.ts +2 -2
- package/dist/utils/are-issue-sets-equal.d.ts.map +1 -1
- package/dist/utils/are-issue-sets-equal.js +3 -3
- package/dist/utils/are-issue-sets-equal.js.map +1 -1
- package/dist/utils/containing-blocks.d.ts.map +1 -1
- package/dist/utils/containing-blocks.js +1 -1
- package/dist/utils/containing-blocks.js.map +1 -1
- package/dist/utils/contains.d.ts +1 -1
- package/dist/utils/contains.d.ts.map +1 -1
- package/dist/utils/contains.js +1 -1
- package/dist/utils/contains.js.map +1 -1
- package/dist/utils/deduplicate-nodes.js +0 -1
- package/dist/utils/deduplicate-nodes.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +1 -1
- package/dist/utils/deep-merge.d.ts.map +1 -1
- package/dist/utils/deep-merge.js +8 -5
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/utils/dom-helpers.d.ts.map +1 -1
- package/dist/utils/dom-helpers.js +4 -2
- package/dist/utils/dom-helpers.js.map +1 -1
- package/dist/utils/ensure-non-empty.d.ts +1 -1
- package/dist/utils/ensure-non-empty.d.ts.map +1 -1
- package/dist/utils/ensure-non-empty.js +2 -2
- package/dist/utils/ensure-non-empty.js.map +1 -1
- package/dist/utils/get-element-html.d.ts +1 -1
- package/dist/utils/get-element-html.d.ts.map +1 -1
- package/dist/utils/get-element-html.js +4 -2
- package/dist/utils/get-element-html.js.map +1 -1
- package/dist/utils/get-element-position.d.ts +2 -2
- package/dist/utils/get-element-position.d.ts.map +1 -1
- package/dist/utils/get-element-position.js +21 -25
- package/dist/utils/get-element-position.js.map +1 -1
- package/dist/utils/get-parent.d.ts +1 -1
- package/dist/utils/get-parent.d.ts.map +1 -1
- package/dist/utils/get-parent.js +1 -1
- package/dist/utils/get-parent.js.map +1 -1
- package/dist/utils/get-scan-context.d.ts +2 -2
- package/dist/utils/get-scan-context.d.ts.map +1 -1
- package/dist/utils/get-scan-context.js +9 -9
- package/dist/utils/get-scan-context.js.map +1 -1
- package/dist/utils/get-scrollable-ancestors.d.ts +1 -1
- package/dist/utils/get-scrollable-ancestors.d.ts.map +1 -1
- package/dist/utils/get-scrollable-ancestors.js +5 -5
- package/dist/utils/get-scrollable-ancestors.js.map +1 -1
- package/dist/utils/is-node-in-scan-context.d.ts +2 -2
- package/dist/utils/is-node-in-scan-context.d.ts.map +1 -1
- package/dist/utils/is-node-in-scan-context.js +5 -5
- package/dist/utils/is-node-in-scan-context.js.map +1 -1
- package/dist/utils/is-non-empty.d.ts +2 -0
- package/dist/utils/is-non-empty.d.ts.map +1 -0
- package/dist/utils/is-non-empty.js +4 -0
- package/dist/utils/is-non-empty.js.map +1 -0
- package/dist/utils/normalize-context.d.ts +2 -2
- package/dist/utils/normalize-context.d.ts.map +1 -1
- package/dist/utils/normalize-context.js +10 -8
- package/dist/utils/normalize-context.js.map +1 -1
- package/dist/utils/recalculate-positions.d.ts +1 -1
- package/dist/utils/recalculate-positions.d.ts.map +1 -1
- package/dist/utils/recalculate-positions.js +5 -5
- package/dist/utils/recalculate-positions.js.map +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.d.ts +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.d.ts.map +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.js +4 -4
- package/dist/utils/recalculate-scrollable-ancestors.js.map +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts.map +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.js +19 -22
- package/dist/utils/shadow-dom-aware-mutation-observer.js.map +1 -1
- package/dist/utils/supports-anchor-positioning.d.ts +1 -1
- package/dist/utils/supports-anchor-positioning.d.ts.map +1 -1
- package/dist/utils/supports-anchor-positioning.js +1 -1
- package/dist/utils/supports-anchor-positioning.js.map +1 -1
- package/dist/utils/transform-violations.d.ts +2 -2
- package/dist/utils/transform-violations.d.ts.map +1 -1
- package/dist/utils/transform-violations.js +9 -9
- package/dist/utils/transform-violations.js.map +1 -1
- package/dist/utils/update-elements-with-issues.d.ts +3 -3
- package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
- package/dist/utils/update-elements-with-issues.js +34 -29
- package/dist/utils/update-elements-with-issues.js.map +1 -1
- package/dist/validate-options.d.ts +2 -2
- package/dist/validate-options.d.ts.map +1 -1
- package/dist/validate-options.js +24 -23
- package/dist/validate-options.js.map +1 -1
- package/package.json +7 -4
- package/src/accented.test.ts +2 -2
- package/src/accented.ts +39 -32
- package/src/common/tokens.ts +1 -0
- package/src/constants.ts +1 -1
- package/src/dom-updater.ts +26 -19
- package/src/elements/accented-dialog.ts +69 -43
- package/src/elements/accented-trigger.ts +54 -43
- package/src/fullscreen-listener.ts +15 -11
- package/src/intersection-observer.ts +27 -16
- package/src/log-and-rethrow.ts +2 -3
- package/src/logger.ts +8 -6
- package/src/register-elements.ts +7 -7
- package/src/resize-listener.ts +15 -11
- package/src/scanner.ts +66 -50
- package/src/scroll-listeners.ts +27 -19
- package/src/state.ts +24 -21
- package/src/task-queue.test.ts +5 -4
- package/src/task-queue.ts +2 -2
- package/src/types.ts +151 -95
- package/src/utils/are-elements-with-issues-equal.ts +7 -5
- package/src/utils/are-issue-sets-equal.test.ts +10 -6
- package/src/utils/are-issue-sets-equal.ts +8 -6
- package/src/utils/containing-blocks.ts +6 -3
- package/src/utils/contains.test.ts +2 -2
- package/src/utils/contains.ts +1 -1
- package/src/utils/deduplicate-nodes.ts +1 -1
- package/src/utils/deep-merge.test.ts +8 -1
- package/src/utils/deep-merge.ts +14 -8
- package/src/utils/dom-helpers.ts +6 -2
- package/src/utils/ensure-non-empty.ts +2 -2
- package/src/utils/get-element-html.ts +4 -2
- package/src/utils/get-element-position.ts +37 -24
- package/src/utils/get-parent.ts +1 -1
- package/src/utils/get-scan-context.test.ts +14 -8
- package/src/utils/get-scan-context.ts +12 -15
- package/src/utils/get-scrollable-ancestors.ts +8 -5
- package/src/utils/is-node-in-scan-context.test.ts +3 -3
- package/src/utils/is-node-in-scan-context.ts +6 -6
- package/src/utils/is-non-empty.ts +3 -0
- package/src/utils/normalize-context.test.ts +9 -9
- package/src/utils/normalize-context.ts +17 -10
- package/src/utils/recalculate-positions.ts +5 -5
- package/src/utils/recalculate-scrollable-ancestors.ts +4 -4
- package/src/utils/shadow-dom-aware-mutation-observer.ts +21 -24
- package/src/utils/supports-anchor-positioning.ts +3 -3
- package/src/utils/transform-violations.test.ts +22 -20
- package/src/utils/transform-violations.ts +14 -10
- package/src/utils/update-elements-with-issues.test.ts +49 -49
- package/src/utils/update-elements-with-issues.ts +96 -71
- package/src/validate-options.ts +91 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-non-empty.js","sourceRoot":"","sources":["../../src/utils/ensure-non-empty.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"ensure-non-empty.js","sourceRoot":"","sources":["../../src/utils/ensure-non-empty.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAI,GAAQ;IACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAkB,CAAC;AAC5B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function getElementHtml(element: Element): string;
|
|
2
2
|
//# sourceMappingURL=get-element-html.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-element-html.d.ts","sourceRoot":"","sources":["../../src/utils/get-element-html.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"get-element-html.d.ts","sourceRoot":"","sources":["../../src/utils/get-element-html.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,UAc9C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function getElementHtml(element) {
|
|
2
2
|
const outerHtml = element.outerHTML;
|
|
3
3
|
const innerHtml = element.innerHTML;
|
|
4
4
|
if (!innerHtml) {
|
|
@@ -9,6 +9,8 @@ export default function getElementHtml(element) {
|
|
|
9
9
|
// This shouldn't be happening, but if it does, we can just return the outer HTML.
|
|
10
10
|
return outerHtml;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
const openingTag = outerHtml.slice(0, index);
|
|
13
|
+
const closingTag = outerHtml.slice(index + innerHtml.length);
|
|
14
|
+
return `${openingTag}…${closingTag}`;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=get-element-html.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-element-html.js","sourceRoot":"","sources":["../../src/utils/get-element-html.ts"],"names":[],"mappings":"AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"get-element-html.js","sourceRoot":"","sources":["../../src/utils/get-element-html.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,kFAAkF;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Position } from '../types';
|
|
1
|
+
import type { Position } from '../types.ts';
|
|
2
2
|
/**
|
|
3
3
|
* https://github.com/pomerantsev/accented/issues/116
|
|
4
4
|
*
|
|
@@ -7,5 +7,5 @@ import type { Position } from '../types';
|
|
|
7
7
|
* * The element itself, or one of the element's ancestors has a scale or rotate transform.
|
|
8
8
|
* * The browser doesn't support anchor positioning.
|
|
9
9
|
*/
|
|
10
|
-
export
|
|
10
|
+
export declare function getElementPosition(element: Element, win: Window): Position;
|
|
11
11
|
//# sourceMappingURL=get-element-position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-element-position.d.ts","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"get-element-position.d.ts","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8C5C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAkC1E"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { isHtmlElement } from './dom-helpers.js';
|
|
2
|
-
import getParent from './get-parent.js';
|
|
3
1
|
import { createsContainingBlock } from './containing-blocks.js';
|
|
2
|
+
import { isHtmlElement } from './dom-helpers.js';
|
|
3
|
+
import { getParent } from './get-parent.js';
|
|
4
4
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block
|
|
5
5
|
function isContainingBlock(element, win) {
|
|
6
6
|
const style = win.getComputedStyle(element);
|
|
7
|
-
const { transform, perspective, contain, contentVisibility, containerType, filter, backdropFilter, willChange } = style;
|
|
7
|
+
const { transform, perspective, contain, contentVisibility, containerType, filter, backdropFilter, willChange, } = style;
|
|
8
8
|
const containItems = contain.split(' ');
|
|
9
9
|
const willChangeItems = willChange.split(/\s*,\s*/);
|
|
10
|
-
return transform !== 'none'
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
return (transform !== 'none' ||
|
|
11
|
+
perspective !== 'none' ||
|
|
12
|
+
containItems.some((item) => ['layout', 'paint', 'strict', 'content'].includes(item)) ||
|
|
13
|
+
contentVisibility === 'auto' ||
|
|
14
|
+
(createsContainingBlock('containerType') && containerType !== 'normal') ||
|
|
15
|
+
(createsContainingBlock('filter') && filter !== 'none') ||
|
|
16
|
+
(createsContainingBlock('backdropFilter') && backdropFilter !== 'none') ||
|
|
17
|
+
willChangeItems.some((item) => ['transform', 'perspective', 'contain', 'filter', 'backdrop-filter'].includes(item)));
|
|
18
18
|
}
|
|
19
19
|
function getNonInitialContainingBlock(element, win) {
|
|
20
20
|
let currentElement = element;
|
|
@@ -34,7 +34,7 @@ function getNonInitialContainingBlock(element, win) {
|
|
|
34
34
|
* * The element itself, or one of the element's ancestors has a scale or rotate transform.
|
|
35
35
|
* * The browser doesn't support anchor positioning.
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
37
|
+
export function getElementPosition(element, win) {
|
|
38
38
|
const nonInitialContainingBlock = getNonInitialContainingBlock(element, win);
|
|
39
39
|
// If an element has a containing block as an ancestor,
|
|
40
40
|
// and that containing block is not the <html> element (the initial containing block),
|
|
@@ -56,19 +56,15 @@ export default function getElementPosition(element, win) {
|
|
|
56
56
|
}
|
|
57
57
|
return { top, left, width, height };
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
return element.getBoundingClientRect();
|
|
59
|
+
const elementRect = element.getBoundingClientRect();
|
|
60
|
+
const nonInitialContainingBlockRect = nonInitialContainingBlock.getBoundingClientRect();
|
|
61
|
+
return {
|
|
62
|
+
top: elementRect.top - nonInitialContainingBlockRect.top,
|
|
63
|
+
height: elementRect.height,
|
|
64
|
+
left: elementRect.left - nonInitialContainingBlockRect.left,
|
|
65
|
+
width: elementRect.width,
|
|
66
|
+
};
|
|
72
67
|
}
|
|
68
|
+
return element.getBoundingClientRect();
|
|
73
69
|
}
|
|
74
70
|
//# sourceMappingURL=get-element-position.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-element-position.js","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"get-element-position.js","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function getParent(element: Element): Element | null;
|
|
2
2
|
//# sourceMappingURL=get-parent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parent.d.ts","sourceRoot":"","sources":["../../src/utils/get-parent.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"get-parent.d.ts","sourceRoot":"","sources":["../../src/utils/get-parent.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAW1D"}
|
package/dist/utils/get-parent.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-parent.js","sourceRoot":"","sources":["../../src/utils/get-parent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,
|
|
1
|
+
{"version":3,"file":"get-parent.js","sourceRoot":"","sources":["../../src/utils/get-parent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Context, ScanContext } from '../types';
|
|
2
|
-
export
|
|
1
|
+
import type { Context, ScanContext } from '../types.ts';
|
|
2
|
+
export declare function getScanContext(nodes: Array<Node>, context: Context): ScanContext;
|
|
3
3
|
//# sourceMappingURL=get-scan-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"get-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMxD,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CA6BhF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import contains from './contains.js';
|
|
1
|
+
import { contains } from './contains.js';
|
|
2
2
|
import { deduplicateNodes } from './deduplicate-nodes.js';
|
|
3
|
-
import isNodeInScanContext from './is-node-in-scan-context.js';
|
|
4
|
-
import normalizeContext from './normalize-context.js';
|
|
5
|
-
export
|
|
3
|
+
import { isNodeInScanContext } from './is-node-in-scan-context.js';
|
|
4
|
+
import { normalizeContext } from './normalize-context.js';
|
|
5
|
+
export function getScanContext(nodes, context) {
|
|
6
6
|
const { include: contextInclude, exclude: contextExclude } = normalizeContext(context);
|
|
7
7
|
// Filter only nodes that are included by context (see isNodeInContext above).
|
|
8
|
-
const nodesInContext = nodes.filter(node => isNodeInScanContext(node, {
|
|
8
|
+
const nodesInContext = nodes.filter((node) => isNodeInScanContext(node, {
|
|
9
9
|
include: contextInclude,
|
|
10
|
-
exclude: contextExclude
|
|
10
|
+
exclude: contextExclude,
|
|
11
11
|
}));
|
|
12
12
|
const include = [];
|
|
13
13
|
const exclude = [];
|
|
@@ -15,14 +15,14 @@ export default function getScanContext(nodes, context) {
|
|
|
15
15
|
include.push(...nodesInContext);
|
|
16
16
|
// Now add any included and excluded context nodes that are contained by any of the original nodes.
|
|
17
17
|
for (const node of nodes) {
|
|
18
|
-
const includeDescendants = contextInclude.filter(item => contains(node, item));
|
|
18
|
+
const includeDescendants = contextInclude.filter((item) => contains(node, item));
|
|
19
19
|
include.push(...includeDescendants);
|
|
20
|
-
const excludeDescendants = contextExclude.filter(item => contains(node, item));
|
|
20
|
+
const excludeDescendants = contextExclude.filter((item) => contains(node, item));
|
|
21
21
|
exclude.push(...excludeDescendants);
|
|
22
22
|
}
|
|
23
23
|
return {
|
|
24
24
|
include: deduplicateNodes(include),
|
|
25
|
-
exclude: deduplicateNodes(exclude)
|
|
25
|
+
exclude: deduplicateNodes(exclude),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
//# sourceMappingURL=get-scan-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-scan-context.js","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"get-scan-context.js","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,UAAU,cAAc,CAAC,KAAkB,EAAE,OAAgB;IACjE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvF,8EAA8E;IAC9E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3C,mBAAmB,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,cAAc;KACxB,CAAC,CACH,CAAC;IAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAEhC,mGAAmG;IACnG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function getScrollableAncestors(element: Element, win: Window): Set<Element>;
|
|
2
2
|
//# sourceMappingURL=get-scrollable-ancestors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-scrollable-ancestors.d.ts","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"get-scrollable-ancestors.d.ts","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAIA,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAiBnE"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import getParent from './get-parent.js';
|
|
1
|
+
import { getParent } from './get-parent.js';
|
|
2
2
|
const scrollableOverflowValues = new Set(['auto', 'scroll', 'hidden']);
|
|
3
|
-
export
|
|
3
|
+
export function getScrollableAncestors(element, win) {
|
|
4
4
|
let currentElement = element;
|
|
5
|
-
|
|
5
|
+
const scrollableAncestors = new Set();
|
|
6
6
|
while (true) {
|
|
7
7
|
currentElement = getParent(currentElement);
|
|
8
8
|
if (!currentElement) {
|
|
9
9
|
break;
|
|
10
10
|
}
|
|
11
11
|
const computedStyle = win.getComputedStyle(currentElement);
|
|
12
|
-
if (scrollableOverflowValues.has(computedStyle.overflowX) ||
|
|
12
|
+
if (scrollableOverflowValues.has(computedStyle.overflowX) ||
|
|
13
|
+
scrollableOverflowValues.has(computedStyle.overflowY)) {
|
|
13
14
|
scrollableAncestors.add(currentElement);
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
return scrollableAncestors;
|
|
17
18
|
}
|
|
18
|
-
;
|
|
19
19
|
//# sourceMappingURL=get-scrollable-ancestors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,GAAW;IAClE,IAAI,cAAc,GAAmB,OAAO,CAAC;IAC7C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAW,CAAC;IAC/C,OAAO,IAAI,EAAE,CAAC;QACZ,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM;QACR,CAAC;QACD,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC3D,IACE,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;YACrD,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,EACrD,CAAC;YACD,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { ScanContext } from '../types';
|
|
2
|
-
export
|
|
1
|
+
import type { ScanContext } from '../types.ts';
|
|
2
|
+
export declare function isNodeInScanContext(node: Node, { include, exclude }: ScanContext): boolean;
|
|
3
3
|
//# sourceMappingURL=is-node-in-scan-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-node-in-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"is-node-in-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAY1F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Adapted from https://github.com/dequelabs/axe-core/blob/fd6239bfc97ebc904044f93f68d7e49137f744ad/lib/core/utils/is-node-in-context.js */
|
|
2
|
-
import contains from './contains.js';
|
|
3
|
-
import ensureNonEmpty from './ensure-non-empty.js';
|
|
2
|
+
import { contains } from './contains.js';
|
|
3
|
+
import { ensureNonEmpty } from './ensure-non-empty.js';
|
|
4
4
|
function getDeepest(nodes) {
|
|
5
5
|
let deepest = nodes[0];
|
|
6
6
|
for (const node of nodes.slice(1)) {
|
|
@@ -10,12 +10,12 @@ function getDeepest(nodes) {
|
|
|
10
10
|
}
|
|
11
11
|
return deepest;
|
|
12
12
|
}
|
|
13
|
-
export
|
|
14
|
-
const filteredInclude = include.filter(includeNode => contains(includeNode, node));
|
|
13
|
+
export function isNodeInScanContext(node, { include, exclude }) {
|
|
14
|
+
const filteredInclude = include.filter((includeNode) => contains(includeNode, node));
|
|
15
15
|
if (filteredInclude.length === 0) {
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
|
-
const filteredExclude = exclude.filter(excludeNode => contains(excludeNode, node));
|
|
18
|
+
const filteredExclude = exclude.filter((excludeNode) => contains(excludeNode, node));
|
|
19
19
|
if (filteredExclude.length === 0) {
|
|
20
20
|
return true;
|
|
21
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-node-in-scan-context.js","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAG3I,OAAO,QAAQ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"is-node-in-scan-context.js","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAG3I,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,SAAS,UAAU,CAAC,KAAwB;IAC1C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAe;IAC/E,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACrF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-non-empty.d.ts","sourceRoot":"","sources":["../../src/utils/is-non-empty.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAE1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-non-empty.js","sourceRoot":"","sources":["../../src/utils/is-non-empty.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAI,GAAQ;IACpC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Context, ScanContext } from '../types';
|
|
2
|
-
export
|
|
1
|
+
import type { Context, ScanContext } from '../types.ts';
|
|
2
|
+
export declare function normalizeContext(context: Context): ScanContext;
|
|
3
3
|
//# sourceMappingURL=normalize-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-context.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"normalize-context.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAe,WAAW,EAAY,MAAM,aAAa,CAAC;AA8C/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAkB9D"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { isNode, isNodeList } from './dom-helpers.js';
|
|
2
1
|
import { deduplicateNodes } from './deduplicate-nodes.js';
|
|
2
|
+
import { isNode, isNodeList } from './dom-helpers.js';
|
|
3
|
+
import { isNonEmpty } from './is-non-empty.js';
|
|
3
4
|
function recursiveSelectAll(selectors, root) {
|
|
4
5
|
const nodesOnCurrentLevel = root.querySelectorAll(selectors[0]);
|
|
5
6
|
if (selectors.length === 1) {
|
|
6
7
|
return Array.from(nodesOnCurrentLevel);
|
|
7
8
|
}
|
|
8
9
|
const restSelectors = selectors.slice(1);
|
|
10
|
+
if (!isNonEmpty(restSelectors)) {
|
|
11
|
+
throw new Error('Error: the restSelectors array must not be empty.');
|
|
12
|
+
}
|
|
9
13
|
const selected = [];
|
|
10
14
|
for (const node of nodesOnCurrentLevel) {
|
|
11
15
|
if (node.shadowRoot) {
|
|
@@ -18,24 +22,22 @@ function selectorToNodes(selector) {
|
|
|
18
22
|
if (typeof selector === 'string') {
|
|
19
23
|
return recursiveSelectAll([selector], document);
|
|
20
24
|
}
|
|
21
|
-
|
|
25
|
+
if (isNode(selector)) {
|
|
22
26
|
return [selector];
|
|
23
27
|
}
|
|
24
|
-
|
|
25
|
-
return recursiveSelectAll(selector.fromShadowDom, document);
|
|
26
|
-
}
|
|
28
|
+
return recursiveSelectAll(selector.fromShadowDom, document);
|
|
27
29
|
}
|
|
28
30
|
function contextPropToNodes(contextProp) {
|
|
29
31
|
let nodes = [];
|
|
30
32
|
if (typeof contextProp === 'object' && (Array.isArray(contextProp) || isNodeList(contextProp))) {
|
|
31
|
-
nodes = Array.from(contextProp).
|
|
33
|
+
nodes = Array.from(contextProp).flatMap((item) => selectorToNodes(item));
|
|
32
34
|
}
|
|
33
35
|
else {
|
|
34
36
|
nodes = selectorToNodes(contextProp);
|
|
35
37
|
}
|
|
36
38
|
return deduplicateNodes(nodes);
|
|
37
39
|
}
|
|
38
|
-
export
|
|
40
|
+
export function normalizeContext(context) {
|
|
39
41
|
let contextInclude = [];
|
|
40
42
|
let contextExclude = [];
|
|
41
43
|
if (typeof context === 'object' && ('include' in context || 'exclude' in context)) {
|
|
@@ -51,7 +53,7 @@ export default function normalizeContext(context) {
|
|
|
51
53
|
}
|
|
52
54
|
return {
|
|
53
55
|
include: contextInclude,
|
|
54
|
-
exclude: contextExclude
|
|
56
|
+
exclude: contextExclude,
|
|
55
57
|
};
|
|
56
58
|
}
|
|
57
59
|
//# sourceMappingURL=normalize-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-context.js","sourceRoot":"","sources":["../../src/utils/normalize-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"normalize-context.js","sourceRoot":"","sources":["../../src/utils/normalize-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function recalculatePositions(): void;
|
|
2
2
|
//# sourceMappingURL=recalculate-positions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recalculate-positions.d.ts","sourceRoot":"","sources":["../../src/utils/recalculate-positions.ts"],"names":[],"mappings":"AAOA,
|
|
1
|
+
{"version":3,"file":"recalculate-positions.d.ts","sourceRoot":"","sources":["../../src/utils/recalculate-positions.ts"],"names":[],"mappings":"AAOA,wBAAgB,oBAAoB,SAmBnC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { batch } from '@preact/signals-core';
|
|
2
|
+
import { logAndRethrow } from '../log-and-rethrow.js';
|
|
2
3
|
import { extendedElementsWithIssues } from '../state.js';
|
|
3
|
-
import getElementPosition from './get-element-position.js';
|
|
4
|
-
import logAndRethrow from '../log-and-rethrow.js';
|
|
4
|
+
import { getElementPosition } from './get-element-position.js';
|
|
5
5
|
let frameRequested = false;
|
|
6
|
-
export
|
|
6
|
+
export function recalculatePositions() {
|
|
7
7
|
if (frameRequested) {
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
@@ -12,11 +12,11 @@ export default function recalculatePositions() {
|
|
|
12
12
|
try {
|
|
13
13
|
frameRequested = false;
|
|
14
14
|
batch(() => {
|
|
15
|
-
|
|
15
|
+
for (const { element, position, visible } of extendedElementsWithIssues.value) {
|
|
16
16
|
if (visible.value && element.isConnected) {
|
|
17
17
|
position.value = getElementPosition(element, window);
|
|
18
18
|
}
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recalculate-positions.js","sourceRoot":"","sources":["../../src/utils/recalculate-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"recalculate-positions.js","sourceRoot":"","sources":["../../src/utils/recalculate-positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,UAAU,oBAAoB;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC;YACH,cAAc,GAAG,KAAK,CAAC;YACvB,KAAK,CAAC,GAAG,EAAE;gBACT,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,0BAA0B,CAAC,KAAK,EAAE,CAAC;oBAC9E,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;wBACzC,QAAQ,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function recalculateScrollableAncestors(): void;
|
|
2
2
|
//# sourceMappingURL=recalculate-scrollable-ancestors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recalculate-scrollable-ancestors.d.ts","sourceRoot":"","sources":["../../src/utils/recalculate-scrollable-ancestors.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"recalculate-scrollable-ancestors.d.ts","sourceRoot":"","sources":["../../src/utils/recalculate-scrollable-ancestors.ts"],"names":[],"mappings":"AAIA,wBAAgB,8BAA8B,SAQ7C"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { batch } from '@preact/signals-core';
|
|
2
2
|
import { extendedElementsWithIssues } from '../state.js';
|
|
3
|
-
import getScrollableAncestors from './get-scrollable-ancestors.js';
|
|
4
|
-
export
|
|
3
|
+
import { getScrollableAncestors } from './get-scrollable-ancestors.js';
|
|
4
|
+
export function recalculateScrollableAncestors() {
|
|
5
5
|
batch(() => {
|
|
6
|
-
|
|
6
|
+
for (const { element, scrollableAncestors } of extendedElementsWithIssues.value) {
|
|
7
7
|
if (element.isConnected) {
|
|
8
8
|
scrollableAncestors.value = getScrollableAncestors(element, window);
|
|
9
9
|
}
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=recalculate-scrollable-ancestors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recalculate-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/recalculate-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,sBAAsB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"recalculate-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/recalculate-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,UAAU,8BAA8B;IAC5C,KAAK,CAAC,GAAG,EAAE;QACT,KAAK,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,0BAA0B,CAAC,KAAK,EAAE,CAAC;YAChF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,mBAAmB,CAAC,KAAK,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function createShadowDOMAwareMutationObserver(name: string, callback: MutationCallback): {
|
|
2
2
|
"__#4@#shadowRoots": Set<unknown>;
|
|
3
3
|
"__#4@#options": MutationObserverInit | undefined;
|
|
4
4
|
observe(target: Node, options?: MutationObserverInit): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-dom-aware-mutation-observer.d.ts","sourceRoot":"","sources":["../../src/utils/shadow-dom-aware-mutation-observer.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"shadow-dom-aware-mutation-observer.d.ts","sourceRoot":"","sources":["../../src/utils/shadow-dom-aware-mutation-observer.ts"],"names":[],"mappings":"AAGA,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;;qBAI/E,oBAAoB,GAAG,SAAS;oBA2BjB,IAAI,YAAY,oBAAoB,GAAG,IAAI;kBAQ7C,IAAI;iCAKJ,UAAU,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,gBAAgB,CAAC;gCAcvD,UAAU,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,gBAAgB,CAAC;;EAa/E"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
import { isElement, isDocument, isDocumentFragment } from './dom-helpers.js';
|
|
2
1
|
import { getAccentedElementNames } from '../constants.js';
|
|
3
|
-
|
|
2
|
+
import { isDocument, isDocumentFragment, isElement } from './dom-helpers.js';
|
|
3
|
+
export function createShadowDOMAwareMutationObserver(name, callback) {
|
|
4
4
|
class ShadowDOMAwareMutationObserver extends MutationObserver {
|
|
5
5
|
#shadowRoots = new Set();
|
|
6
6
|
#options;
|
|
7
7
|
constructor(callback) {
|
|
8
8
|
super((mutations, observer) => {
|
|
9
9
|
const accentedElementNames = getAccentedElementNames(name);
|
|
10
|
-
const childListMutations = mutations
|
|
11
|
-
.filter(mutation => mutation.type === 'childList');
|
|
10
|
+
const childListMutations = mutations.filter((mutation) => mutation.type === 'childList');
|
|
12
11
|
const newElements = childListMutations
|
|
13
|
-
.
|
|
14
|
-
.
|
|
15
|
-
.filter(node =>
|
|
16
|
-
.filter(node => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
12
|
+
.flatMap((mutation) => [...mutation.addedNodes])
|
|
13
|
+
.filter((node) => isElement(node))
|
|
14
|
+
.filter((node) => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
17
15
|
this.#observeShadowRoots(newElements);
|
|
18
16
|
const removedElements = childListMutations
|
|
19
|
-
.
|
|
20
|
-
.
|
|
21
|
-
.filter(node =>
|
|
22
|
-
.filter(node => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
17
|
+
.flatMap((mutation) => [...mutation.removedNodes])
|
|
18
|
+
.filter((node) => isElement(node))
|
|
19
|
+
.filter((node) => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
23
20
|
// Mutation observer has no "unobserve" method, so we're simply deleting
|
|
24
21
|
// the elements from the set of shadow roots.
|
|
25
22
|
this.#deleteShadowRoots(removedElements);
|
|
@@ -39,21 +36,21 @@ export default function createShadowDOMAwareMutationObserver(name, callback) {
|
|
|
39
36
|
}
|
|
40
37
|
#observeShadowRoots = (elements) => {
|
|
41
38
|
const shadowRoots = elements
|
|
42
|
-
.
|
|
43
|
-
.
|
|
44
|
-
.
|
|
45
|
-
.map(element => element.shadowRoot);
|
|
39
|
+
.flatMap((element) => [...element.querySelectorAll('*')])
|
|
40
|
+
.filter((element) => element.shadowRoot)
|
|
41
|
+
.map((element) => element.shadowRoot);
|
|
46
42
|
for (const shadowRoot of shadowRoots) {
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
if (shadowRoot) {
|
|
44
|
+
this.#shadowRoots.add(shadowRoot);
|
|
45
|
+
this.observe(shadowRoot, this.#options);
|
|
46
|
+
}
|
|
49
47
|
}
|
|
50
48
|
};
|
|
51
49
|
#deleteShadowRoots = (elements) => {
|
|
52
50
|
const shadowRoots = elements
|
|
53
|
-
.
|
|
54
|
-
.
|
|
55
|
-
.
|
|
56
|
-
.map(element => element.shadowRoot);
|
|
51
|
+
.flatMap((element) => [...element.querySelectorAll('*')])
|
|
52
|
+
.filter((element) => element.shadowRoot)
|
|
53
|
+
.map((element) => element.shadowRoot);
|
|
57
54
|
for (const shadowRoot of shadowRoots) {
|
|
58
55
|
this.#shadowRoots.delete(shadowRoot);
|
|
59
56
|
}
|