accented 0.0.0-20250223121749 → 0.0.0-20250404114312
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/NOTICE +14 -0
- package/README.md +7 -3
- package/dist/accented.d.ts +2 -2
- package/dist/accented.d.ts.map +1 -1
- package/dist/accented.js +5 -2
- package/dist/accented.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/dom-updater.d.ts.map +1 -1
- package/dist/dom-updater.js +38 -23
- package/dist/dom-updater.js.map +1 -1
- package/dist/elements/accented-dialog.d.ts.map +1 -1
- package/dist/elements/accented-dialog.js +60 -22
- package/dist/elements/accented-dialog.js.map +1 -1
- package/dist/elements/accented-trigger.d.ts +2 -0
- package/dist/elements/accented-trigger.d.ts.map +1 -1
- package/dist/elements/accented-trigger.js +64 -12
- package/dist/elements/accented-trigger.js.map +1 -1
- package/dist/fullscreen-listener.d.ts +2 -0
- package/dist/fullscreen-listener.d.ts.map +1 -0
- package/dist/fullscreen-listener.js +18 -0
- package/dist/fullscreen-listener.js.map +1 -0
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +15 -6
- package/dist/scanner.js.map +1 -1
- package/dist/state.d.ts +2 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +3 -0
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +21 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/are-elements-with-issues-equal.d.ts +3 -0
- package/dist/utils/are-elements-with-issues-equal.d.ts.map +1 -0
- package/dist/utils/are-elements-with-issues-equal.js +5 -0
- package/dist/utils/are-elements-with-issues-equal.js.map +1 -0
- package/dist/utils/dom-helpers.d.ts +6 -0
- package/dist/utils/dom-helpers.d.ts.map +1 -0
- package/dist/utils/dom-helpers.js +19 -0
- package/dist/utils/dom-helpers.js.map +1 -0
- package/dist/utils/get-element-position.d.ts.map +1 -1
- package/dist/utils/get-element-position.js +53 -16
- package/dist/utils/get-element-position.js.map +1 -1
- package/dist/utils/get-parent.d.ts +2 -0
- package/dist/utils/get-parent.d.ts.map +1 -0
- package/dist/utils/get-parent.js +12 -0
- package/dist/utils/get-parent.js.map +1 -0
- 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 +6 -2
- package/dist/utils/get-scrollable-ancestors.js.map +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts +10 -0
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts.map +1 -0
- package/dist/utils/shadow-dom-aware-mutation-observer.js +64 -0
- package/dist/utils/shadow-dom-aware-mutation-observer.js.map +1 -0
- package/dist/utils/transform-violations.d.ts +1 -1
- package/dist/utils/transform-violations.d.ts.map +1 -1
- package/dist/utils/transform-violations.js +18 -5
- package/dist/utils/transform-violations.js.map +1 -1
- package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
- package/dist/utils/update-elements-with-issues.js +9 -5
- package/dist/utils/update-elements-with-issues.js.map +1 -1
- package/package.json +4 -3
- package/src/accented.ts +5 -2
- package/src/constants.ts +1 -0
- package/src/dom-updater.ts +38 -22
- package/src/elements/accented-dialog.ts +60 -22
- package/src/elements/accented-trigger.ts +70 -12
- package/src/fullscreen-listener.ts +17 -0
- package/src/scanner.ts +17 -6
- package/src/state.ts +10 -2
- package/src/types.ts +23 -9
- package/src/utils/are-elements-with-issues-equal.ts +9 -0
- package/src/utils/dom-helpers.ts +22 -0
- package/src/utils/get-element-position.ts +54 -15
- package/src/utils/get-parent.ts +14 -0
- package/src/utils/get-scrollable-ancestors.ts +10 -5
- package/src/utils/shadow-dom-aware-mutation-observer.ts +78 -0
- package/src/utils/transform-violations.test.ts +10 -8
- package/src/utils/transform-violations.ts +20 -6
- package/src/utils/update-elements-with-issues.test.ts +46 -11
- package/src/utils/update-elements-with-issues.ts +10 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented-trigger.js","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,yBAAyB,MAAM,yCAAyC,CAAC;AAChF,OAAO,aAAa,MAAM,uBAAuB,CAAC;AASlD,
|
|
1
|
+
{"version":3,"file":"accented-trigger.js","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreen-listener.d.ts","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,mBAAmB,eAa1C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import logAndRethrow from './log-and-rethrow.js';
|
|
2
|
+
import recalculatePositions from './utils/recalculate-positions.js';
|
|
3
|
+
export default function setupResizeListener() {
|
|
4
|
+
const abortController = new AbortController();
|
|
5
|
+
window.addEventListener('fullscreenchange', () => {
|
|
6
|
+
try {
|
|
7
|
+
recalculatePositions();
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
logAndRethrow(error);
|
|
11
|
+
}
|
|
12
|
+
}, { signal: abortController.signal });
|
|
13
|
+
return () => {
|
|
14
|
+
abortController.abort();
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
;
|
|
18
|
+
//# sourceMappingURL=fullscreen-listener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreen-listener.js","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AAEpE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/C,IAAI,CAAC;YACH,oBAAoB,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvC,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC;AAAA,CAAC"}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAS1E,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,cAyInJ"}
|
package/dist/scanner.js
CHANGED
|
@@ -5,8 +5,9 @@ import updateElementsWithIssues from './utils/update-elements-with-issues.js';
|
|
|
5
5
|
import recalculatePositions from './utils/recalculate-positions.js';
|
|
6
6
|
import recalculateScrollableAncestors from './utils/recalculate-scrollable-ancestors.js';
|
|
7
7
|
import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
|
|
8
|
-
import { issuesUrl } from './constants.js';
|
|
8
|
+
import { getAccentedElementNames, issuesUrl } from './constants.js';
|
|
9
9
|
import logAndRethrow from './log-and-rethrow.js';
|
|
10
|
+
import createShadowDOMAwareMutationObserver from './utils/shadow-dom-aware-mutation-observer.js';
|
|
10
11
|
export default function createScanner(name, axeContext, axeOptions, throttle, callback) {
|
|
11
12
|
const axeRunningWindowProp = `__${name}_axe_running__`;
|
|
12
13
|
const win = window;
|
|
@@ -18,7 +19,7 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
|
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
21
|
try {
|
|
21
|
-
performance.mark('
|
|
22
|
+
performance.mark('scan-start');
|
|
22
23
|
win[axeRunningWindowProp] = true;
|
|
23
24
|
let result;
|
|
24
25
|
try {
|
|
@@ -44,14 +45,22 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
|
|
|
44
45
|
result = { violations: [] };
|
|
45
46
|
}
|
|
46
47
|
win[axeRunningWindowProp] = false;
|
|
47
|
-
const
|
|
48
|
+
const scanMeasure = performance.measure('scan', 'scan-start');
|
|
49
|
+
const scanDuration = Math.round(scanMeasure.duration);
|
|
48
50
|
if (!enabled.value) {
|
|
49
51
|
return;
|
|
50
52
|
}
|
|
53
|
+
performance.mark('dom-update-start');
|
|
51
54
|
updateElementsWithIssues(extendedElementsWithIssues, result.violations, window, name);
|
|
55
|
+
const domUpdateMeasure = performance.measure('dom-update', 'dom-update-start');
|
|
56
|
+
const domUpdateDuration = Math.round(domUpdateMeasure.duration);
|
|
52
57
|
callback({
|
|
53
58
|
elementsWithIssues: elementsWithIssues.value,
|
|
54
|
-
|
|
59
|
+
performance: {
|
|
60
|
+
totalBlockingTime: scanDuration + domUpdateDuration,
|
|
61
|
+
scan: scanDuration,
|
|
62
|
+
domUpdate: domUpdateDuration
|
|
63
|
+
}
|
|
55
64
|
});
|
|
56
65
|
}
|
|
57
66
|
catch (error) {
|
|
@@ -63,8 +72,8 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
|
|
|
63
72
|
// limit to what's in axeContext,
|
|
64
73
|
// if that's an element or array of elements (not a selector).
|
|
65
74
|
taskQueue.add(document);
|
|
66
|
-
const accentedElementNames =
|
|
67
|
-
const mutationObserver =
|
|
75
|
+
const accentedElementNames = getAccentedElementNames(name);
|
|
76
|
+
const mutationObserver = createShadowDOMAwareMutationObserver(name, mutationList => {
|
|
68
77
|
try {
|
|
69
78
|
// We're not interested in mutations that are caused exclusively by the custom elements
|
|
70
79
|
// introduced by Accented.
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,wBAAwB,MAAM,wCAAwC,CAAC;AAC9E,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,8BAA8B,MAAM,6CAA6C,CAAC;AACzF,OAAO,yBAAyB,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/state.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ import type { ElementWithIssues, ExtendedElementWithIssues } from './types';
|
|
|
2
2
|
export declare const enabled: import("@preact/signals-core").Signal<boolean>;
|
|
3
3
|
export declare const extendedElementsWithIssues: import("@preact/signals-core").Signal<ExtendedElementWithIssues[]>;
|
|
4
4
|
export declare const elementsWithIssues: import("@preact/signals-core").ReadonlySignal<ElementWithIssues[]>;
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const rootNodes: import("@preact/signals-core").ReadonlySignal<Set<Node>>;
|
|
6
|
+
export declare const scrollableAncestors: import("@preact/signals-core").ReadonlySignal<Set<Element>>;
|
|
6
7
|
//# sourceMappingURL=state.d.ts.map
|
package/dist/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE5E,eAAO,MAAM,OAAO,gDAAgB,CAAC;AAErC,eAAO,MAAM,0BAA0B,oEAA+C,CAAC;AAEvF,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAE5E,eAAO,MAAM,OAAO,gDAAgB,CAAC;AAErC,eAAO,MAAM,0BAA0B,oEAA+C,CAAC;AAEvF,eAAO,MAAM,kBAAkB,oEAI3B,CAAC;AAEL,eAAO,MAAM,SAAS,0DAKrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,6DAU/B,CAAC"}
|
package/dist/state.js
CHANGED
|
@@ -3,8 +3,11 @@ export const enabled = signal(false);
|
|
|
3
3
|
export const extendedElementsWithIssues = signal([]);
|
|
4
4
|
export const elementsWithIssues = computed(() => extendedElementsWithIssues.value.map(extendedElementWithIssues => ({
|
|
5
5
|
element: extendedElementWithIssues.element,
|
|
6
|
+
rootNode: extendedElementWithIssues.rootNode,
|
|
6
7
|
issues: extendedElementWithIssues.issues.value
|
|
7
8
|
})));
|
|
9
|
+
export const rootNodes = computed(() => new Set((enabled.value ? [document] : [])
|
|
10
|
+
.concat(...(extendedElementsWithIssues.value.map(extendedElementWithIssues => extendedElementWithIssues.rootNode)))));
|
|
8
11
|
export const scrollableAncestors = computed(() => extendedElementsWithIssues.value.reduce((scrollableAncestors, extendedElementWithIssues) => {
|
|
9
12
|
for (const scrollableAncestor of extendedElementWithIssues.scrollableAncestors.value) {
|
|
10
13
|
scrollableAncestors.add(scrollableAncestor);
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAmC,EAAE,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAA2B,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC5I,OAAO,EAAE,yBAAyB,CAAC,OAAO;IAC1C,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC,KAAK;CAC/C,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAmC,EAAE,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAA2B,GAAG,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC5I,OAAO,EAAE,yBAAyB,CAAC,OAAO;IAC1C,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;IAC5C,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC,KAAK;CAC/C,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAY,GAAG,EAAE,CAChD,IAAI,GAAG,CACL,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtH,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAe,GAAG,EAAE,CAC7D,0BAA0B,CAAC,KAAK,CAAC,MAAM,CACrC,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,EAAE;IACjD,KAAK,MAAM,kBAAkB,IAAI,yBAAyB,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACrF,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC,EACD,IAAI,GAAG,EAAW,CACnB,CACF,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -34,9 +34,17 @@ type CallbackParams = {
|
|
|
34
34
|
* */
|
|
35
35
|
elementsWithIssues: Array<ElementWithIssues>;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* * `performance`: runtime performance of the last scan. An object:
|
|
38
|
+
* * `totalBlockingTime`: how long the main thread was blocked by Accented during the last scan, in milliseconds.
|
|
39
|
+
* It’s further divided into the `scan` and `domUpdate` phases.
|
|
40
|
+
* * `scan`: how long the `scan` phase took, in milliseconds.
|
|
41
|
+
* * `domUpdate`: how long the `domUpdate` phase took, in milliseconds.
|
|
38
42
|
* */
|
|
39
|
-
|
|
43
|
+
performance: {
|
|
44
|
+
totalBlockingTime: number;
|
|
45
|
+
scan: number;
|
|
46
|
+
domUpdate: number;
|
|
47
|
+
};
|
|
40
48
|
};
|
|
41
49
|
export type Callback = (params: CallbackParams) => void;
|
|
42
50
|
export type AccentedOptions = {
|
|
@@ -109,9 +117,10 @@ export type AccentedOptions = {
|
|
|
109
117
|
*/
|
|
110
118
|
export type DisableAccented = () => void;
|
|
111
119
|
export type Position = {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
left: number;
|
|
121
|
+
top: number;
|
|
122
|
+
width: number;
|
|
123
|
+
height: number;
|
|
115
124
|
};
|
|
116
125
|
export type Issue = {
|
|
117
126
|
id: string;
|
|
@@ -120,16 +129,20 @@ export type Issue = {
|
|
|
120
129
|
url: string;
|
|
121
130
|
impact: axe.ImpactValue;
|
|
122
131
|
};
|
|
123
|
-
export type
|
|
132
|
+
export type BaseElementWithIssues = {
|
|
124
133
|
element: HTMLElement;
|
|
134
|
+
rootNode: Node;
|
|
135
|
+
};
|
|
136
|
+
export type ElementWithIssues = BaseElementWithIssues & {
|
|
125
137
|
issues: Array<Issue>;
|
|
126
138
|
};
|
|
127
|
-
export type ExtendedElementWithIssues =
|
|
139
|
+
export type ExtendedElementWithIssues = BaseElementWithIssues & {
|
|
128
140
|
issues: Signal<ElementWithIssues['issues']>;
|
|
129
141
|
visible: Signal<boolean>;
|
|
130
142
|
trigger: AccentedTrigger;
|
|
131
143
|
position: Signal<Position>;
|
|
132
|
-
|
|
144
|
+
anchorNameValue: string;
|
|
145
|
+
scrollableAncestors: Signal<Set<Element>>;
|
|
133
146
|
id: number;
|
|
134
147
|
};
|
|
135
148
|
export {};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,QAAQ,GAAG;IACrB;;;;SAIK;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;SAMK;IACL,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB;;;;SAIK;IACL,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC;AAE5C,eAAO,MAAM,iBAAiB,+BAAgC,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhF,KAAK,cAAc,GAAG;IACpB;;SAEK;IACL,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE7C
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,QAAQ,GAAG;IACrB;;;;SAIK;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;SAMK;IACL,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB;;;;SAIK;IACL,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC;AAE5C,eAAO,MAAM,iBAAiB,+BAAgC,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhF,KAAK,cAAc,GAAG;IACpB;;SAEK;IACL,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE7C;;;;;;SAMK;IACL,WAAW,EAAE;QACX,iBAAiB,EAAE,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG;IAE5B;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;SAEK;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;SAEK;IACL,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;SAIK;IACL,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC,WAAW,CAAA;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAA;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAE;IACrD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;CACrB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,GAAG;IAC9D,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,EAAE,EAAE,MAAM,CAAA;CACX,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"are-elements-with-issues-equal.d.ts","sourceRoot":"","sources":["../../src/utils/are-elements-with-issues-equal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,kBAAkB,EAAE,qBAAqB,EACzC,kBAAkB,EAAE,qBAAqB,WAI1C"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export default function areElementsWithIssuesEqual(elementWithIssues1, elementWithIssues2) {
|
|
2
|
+
return elementWithIssues1.element === elementWithIssues2.element
|
|
3
|
+
&& elementWithIssues1.rootNode === elementWithIssues2.rootNode;
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=are-elements-with-issues-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"are-elements-with-issues-equal.js","sourceRoot":"","sources":["../../src/utils/are-elements-with-issues-equal.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,kBAAyC,EACzC,kBAAyC;IAEzC,OAAO,kBAAkB,CAAC,OAAO,KAAK,kBAAkB,CAAC,OAAO;WAC3D,kBAAkB,CAAC,QAAQ,KAAK,kBAAkB,CAAC,QAAQ,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isElement(node: Node): node is Element;
|
|
2
|
+
export declare function isDocument(node: Node): node is Document;
|
|
3
|
+
export declare function isDocumentFragment(node: Node): node is DocumentFragment;
|
|
4
|
+
export declare function isShadowRoot(documentFragment: DocumentFragment): documentFragment is ShadowRoot;
|
|
5
|
+
export declare function isHtmlElement(element: Element): element is HTMLElement;
|
|
6
|
+
//# sourceMappingURL=dom-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/dom-helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,CAErD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,QAAQ,CAEvD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAEvE;AAED,wBAAgB,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,gBAAgB,IAAI,UAAU,CAE/F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,WAAW,CAKtE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function isElement(node) {
|
|
2
|
+
return typeof Node !== 'undefined' && node.nodeType === Node.ELEMENT_NODE;
|
|
3
|
+
}
|
|
4
|
+
export function isDocument(node) {
|
|
5
|
+
return typeof Node !== 'undefined' && node.nodeType === Node.DOCUMENT_NODE;
|
|
6
|
+
}
|
|
7
|
+
export function isDocumentFragment(node) {
|
|
8
|
+
return typeof Node !== 'undefined' && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
|
|
9
|
+
}
|
|
10
|
+
export function isShadowRoot(documentFragment) {
|
|
11
|
+
return 'host' in documentFragment;
|
|
12
|
+
}
|
|
13
|
+
export function isHtmlElement(element) {
|
|
14
|
+
// We can't use instanceof because it may not work across contexts
|
|
15
|
+
// (such as when an element is moved from an iframe).
|
|
16
|
+
// This heuristic seems to be the most robust and fastest that I could think of.
|
|
17
|
+
return element.constructor.name.startsWith('HTML');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=dom-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-helpers.js","sourceRoot":"","sources":["../../src/utils/dom-helpers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAU;IAC3C,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,sBAAsB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,gBAAkC;IAC7D,OAAO,MAAM,IAAI,gBAAgB,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,kEAAkE;IAClE,qDAAqD;IACrD,gFAAgF;IAChF,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -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,UAAU,CAAC;
|
|
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,UAAU,CAAC;AAyBzC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAkClF"}
|
|
@@ -1,22 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { isHtmlElement } from './dom-helpers.js';
|
|
2
|
+
import getParent from './get-parent.js';
|
|
3
|
+
// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block
|
|
4
|
+
function isContainingBlock(element, win) {
|
|
5
|
+
const style = win.getComputedStyle(element);
|
|
6
|
+
const { transform, perspective } = style;
|
|
7
|
+
// TODO: https://github.com/pomerantsev/accented/issues/119
|
|
8
|
+
// Support other types of containing blocks
|
|
9
|
+
return transform !== 'none'
|
|
10
|
+
|| perspective !== 'none';
|
|
11
|
+
}
|
|
12
|
+
function getNonInitialContainingBlock(element, win) {
|
|
13
|
+
let currentElement = element;
|
|
14
|
+
while (currentElement) {
|
|
15
|
+
currentElement = getParent(currentElement);
|
|
16
|
+
if (currentElement && isContainingBlock(currentElement, win)) {
|
|
17
|
+
return currentElement;
|
|
18
|
+
}
|
|
10
19
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
export default function getElementPosition(element, win) {
|
|
23
|
+
const nonInitialContainingBlock = getNonInitialContainingBlock(element, win);
|
|
24
|
+
// If an element has an ancestor whose transform is not 'none',
|
|
25
|
+
// fixed positioning works differently.
|
|
26
|
+
// https://achrafkassioui.com/blog/position-fixed-and-CSS-transforms/
|
|
27
|
+
if (nonInitialContainingBlock) {
|
|
28
|
+
if (isHtmlElement(element)) {
|
|
29
|
+
const width = element.offsetWidth;
|
|
30
|
+
const height = element.offsetHeight;
|
|
31
|
+
let left = element.offsetLeft;
|
|
32
|
+
let top = element.offsetTop;
|
|
33
|
+
let currentElement = element.offsetParent;
|
|
34
|
+
// Non-initial containing block may not be an offset parent, we have to account for that as well.
|
|
35
|
+
while (currentElement && currentElement !== nonInitialContainingBlock) {
|
|
36
|
+
left += currentElement.offsetLeft;
|
|
37
|
+
top += currentElement.offsetTop;
|
|
38
|
+
currentElement = currentElement.offsetParent;
|
|
39
|
+
}
|
|
40
|
+
return { top, left, width, height };
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// TODO: https://github.com/pomerantsev/accented/issues/116
|
|
44
|
+
// This is half-baked. It works incorrectly with scaled / rotated elements with issues.
|
|
45
|
+
const elementRect = element.getBoundingClientRect();
|
|
46
|
+
const nonInitialContainingBlockRect = nonInitialContainingBlock.getBoundingClientRect();
|
|
47
|
+
return {
|
|
48
|
+
top: elementRect.top - nonInitialContainingBlockRect.top,
|
|
49
|
+
height: elementRect.height,
|
|
50
|
+
left: elementRect.left - nonInitialContainingBlockRect.left,
|
|
51
|
+
width: elementRect.width
|
|
52
|
+
};
|
|
53
|
+
}
|
|
17
54
|
}
|
|
18
55
|
else {
|
|
19
|
-
|
|
56
|
+
return element.getBoundingClientRect();
|
|
20
57
|
}
|
|
21
58
|
}
|
|
22
59
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"get-element-position.js","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAExC,iHAAiH;AACjH,SAAS,iBAAiB,CAAC,OAAgB,EAAE,GAAW;IACtD,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACzC,2DAA2D;IAC3D,2CAA2C;IAC3C,OAAO,SAAS,KAAK,MAAM;WACtB,WAAW,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAgB,EAAE,GAAW;IACjE,IAAI,cAAc,GAAmB,OAAO,CAAC;IAC7C,OAAO,cAAc,EAAE,CAAC;QACtB,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,cAAc,IAAI,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAgB,EAAE,GAAW;IACtE,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7E,+DAA+D;IAC/D,uCAAuC;IACvC,qEAAqE;IACrE,IAAI,yBAAyB,EAAE,CAAC;QAC9B,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACpC,IAAI,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC;YAC9B,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YAC5B,IAAI,cAAc,GAAG,OAAO,CAAC,YAAkC,CAAC;YAChE,iGAAiG;YACjG,OAAO,cAAc,IAAI,cAAc,KAAK,yBAAyB,EAAE,CAAC;gBACtE,IAAI,IAAI,cAAc,CAAC,UAAU,CAAC;gBAClC,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC;gBAChC,cAAc,GAAG,cAAc,CAAC,YAAkC,CAAC;YACrE,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,uFAAuF;YACvF,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpD,MAAM,6BAA6B,GAAG,yBAAyB,CAAC,qBAAqB,EAAE,CAAC;YACxF,OAAO;gBACL,GAAG,EAAE,WAAW,CAAC,GAAG,GAAG,6BAA6B,CAAC,GAAG;gBACxD,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,6BAA6B,CAAC,IAAI;gBAC3D,KAAK,EAAE,WAAW,CAAC,KAAK;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-parent.d.ts","sourceRoot":"","sources":["../../src/utils/get-parent.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,SAAS,CAAE,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAWnE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isDocumentFragment, isShadowRoot } from './dom-helpers.js';
|
|
2
|
+
export default function getParent(element) {
|
|
3
|
+
if (element.parentElement) {
|
|
4
|
+
return element.parentElement;
|
|
5
|
+
}
|
|
6
|
+
const rootNode = element.getRootNode();
|
|
7
|
+
if (isDocumentFragment(rootNode) && isShadowRoot(rootNode)) {
|
|
8
|
+
return rootNode.host;
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=get-parent.js.map
|
|
@@ -0,0 +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,CAAC,OAAO,UAAU,SAAS,CAAE,OAAgB;IACjD,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,2 +1,2 @@
|
|
|
1
|
-
export default function getScrollableAncestors(element:
|
|
1
|
+
export default 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":"
|
|
1
|
+
{"version":3,"file":"get-scrollable-ancestors.d.ts","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAc5E"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import getParent from './get-parent.js';
|
|
1
2
|
const scrollableOverflowValues = new Set(['auto', 'scroll', 'hidden']);
|
|
2
3
|
export default function getScrollableAncestors(element, win) {
|
|
3
4
|
let currentElement = element;
|
|
4
5
|
let scrollableAncestors = new Set();
|
|
5
|
-
while (
|
|
6
|
-
currentElement = currentElement
|
|
6
|
+
while (true) {
|
|
7
|
+
currentElement = getParent(currentElement);
|
|
8
|
+
if (!currentElement) {
|
|
9
|
+
break;
|
|
10
|
+
}
|
|
7
11
|
const computedStyle = win.getComputedStyle(currentElement);
|
|
8
12
|
if (scrollableOverflowValues.has(computedStyle.overflowX) || scrollableOverflowValues.has(computedStyle.overflowY)) {
|
|
9
13
|
scrollableAncestors.add(currentElement);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAE,
|
|
1
|
+
{"version":3,"file":"get-scrollable-ancestors.js","sourceRoot":"","sources":["../../src/utils/get-scrollable-ancestors.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,iBAAiB,CAAC;AAExC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvE,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAE,OAAgB,EAAE,GAAW;IAC3E,IAAI,cAAc,GAAmB,OAAO,CAAC;IAC7C,IAAI,mBAAmB,GAAG,IAAI,GAAG,EAAW,CAAC;IAC7C,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,IAAI,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YACnH,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default function createShadowDOMAwareMutationObserver(name: string, callback: MutationCallback): {
|
|
2
|
+
"__#4@#shadowRoots": Set<unknown>;
|
|
3
|
+
"__#4@#options": MutationObserverInit | undefined;
|
|
4
|
+
observe(target: Node, options?: MutationObserverInit): void;
|
|
5
|
+
disconnect(): void;
|
|
6
|
+
"__#4@#observeShadowRoots": (elements: Array<Element | Document | DocumentFragment>) => void;
|
|
7
|
+
"__#4@#deleteShadowRoots": (elements: Array<Element | Document | DocumentFragment>) => void;
|
|
8
|
+
takeRecords(): MutationRecord[];
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=shadow-dom-aware-mutation-observer.d.ts.map
|
|
@@ -0,0 +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,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB;;qBAIxF,oBAAoB,GAAG,SAAS;oBA8BjB,IAAI,YAAY,oBAAoB,GAAG,IAAI;kBAQ7C,IAAI;2CAKM,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,gBAAgB,CAAC;0CAa7C,KAAK,CAAC,OAAO,GAAG,QAAQ,GAAG,gBAAgB,CAAC;;EAc/E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { isElement, isDocument, isDocumentFragment } from './dom-helpers.js';
|
|
2
|
+
import { getAccentedElementNames } from '../constants.js';
|
|
3
|
+
export default function createShadowDOMAwareMutationObserver(name, callback) {
|
|
4
|
+
class ShadowDOMAwareMutationObserver extends MutationObserver {
|
|
5
|
+
#shadowRoots = new Set();
|
|
6
|
+
#options;
|
|
7
|
+
constructor(callback) {
|
|
8
|
+
super((mutations, observer) => {
|
|
9
|
+
const accentedElementNames = getAccentedElementNames(name);
|
|
10
|
+
const childListMutations = mutations
|
|
11
|
+
.filter(mutation => mutation.type === 'childList');
|
|
12
|
+
const newElements = childListMutations
|
|
13
|
+
.map(mutation => [...mutation.addedNodes])
|
|
14
|
+
.flat()
|
|
15
|
+
.filter(node => isElement(node))
|
|
16
|
+
.filter(node => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
17
|
+
this.#observeShadowRoots(newElements);
|
|
18
|
+
const removedElements = childListMutations
|
|
19
|
+
.map(mutation => [...mutation.removedNodes])
|
|
20
|
+
.flat()
|
|
21
|
+
.filter(node => isElement(node))
|
|
22
|
+
.filter(node => !accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
23
|
+
// Mutation observer has no "unobserve" method, so we're simply deleting
|
|
24
|
+
// the elements from the set of shadow roots.
|
|
25
|
+
this.#deleteShadowRoots(removedElements);
|
|
26
|
+
callback(mutations, observer);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
observe(target, options) {
|
|
30
|
+
this.#options ??= options;
|
|
31
|
+
if (isElement(target) || isDocument(target) || isDocumentFragment(target)) {
|
|
32
|
+
this.#observeShadowRoots([target]);
|
|
33
|
+
}
|
|
34
|
+
super.observe(target, options);
|
|
35
|
+
}
|
|
36
|
+
disconnect() {
|
|
37
|
+
this.#shadowRoots.clear();
|
|
38
|
+
super.disconnect();
|
|
39
|
+
}
|
|
40
|
+
#observeShadowRoots = (elements) => {
|
|
41
|
+
const shadowRoots = elements
|
|
42
|
+
.map(element => [...element.querySelectorAll('*')])
|
|
43
|
+
.flat()
|
|
44
|
+
.filter(element => element.shadowRoot)
|
|
45
|
+
.map(element => element.shadowRoot);
|
|
46
|
+
for (const shadowRoot of shadowRoots) {
|
|
47
|
+
this.#shadowRoots.add(shadowRoot);
|
|
48
|
+
this.observe(shadowRoot, this.#options);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
#deleteShadowRoots = (elements) => {
|
|
52
|
+
const shadowRoots = elements
|
|
53
|
+
.map(element => [...element.querySelectorAll('*')])
|
|
54
|
+
.flat()
|
|
55
|
+
.filter(element => element.shadowRoot)
|
|
56
|
+
.map(element => element.shadowRoot);
|
|
57
|
+
for (const shadowRoot of shadowRoots) {
|
|
58
|
+
this.#shadowRoots.delete(shadowRoot);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return new ShadowDOMAwareMutationObserver(callback);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=shadow-dom-aware-mutation-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-dom-aware-mutation-observer.js","sourceRoot":"","sources":["../../src/utils/shadow-dom-aware-mutation-observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { AxeResults } from 'axe-core';
|
|
2
2
|
import type { ElementWithIssues } from '../types';
|
|
3
|
-
export default function transformViolations(violations: typeof AxeResults.violations): ElementWithIssues[];
|
|
3
|
+
export default function transformViolations(violations: typeof AxeResults.violations, name: string): ElementWithIssues[];
|
|
4
4
|
//# sourceMappingURL=transform-violations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-violations.d.ts","sourceRoot":"","sources":["../../src/utils/transform-violations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAS,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"transform-violations.d.ts","sourceRoot":"","sources":["../../src/utils/transform-violations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAS,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAwBzD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,UAAU,EAAE,OAAO,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,uBA4CjG"}
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
// This is a list of axe-core violations (their ids) that may be flagged by axe-core
|
|
2
|
+
// as false positives if an Accented trigger is a descendant of the element with the issue.
|
|
3
|
+
const violationsAffectedByAccentedTriggers = [
|
|
4
|
+
'aria-hidden-focus',
|
|
5
|
+
'aria-text',
|
|
6
|
+
'definition-list',
|
|
7
|
+
'label-content-name-mismatch',
|
|
8
|
+
'list',
|
|
9
|
+
'nested-interactive',
|
|
10
|
+
'scrollable-region-focusable' // The Accented trigger might make the content grow such that scrolling is required.
|
|
11
|
+
];
|
|
12
|
+
function maybeCausedByAccented(violationId, element, name) {
|
|
13
|
+
return violationsAffectedByAccentedTriggers.includes(violationId)
|
|
14
|
+
&& Boolean(element.querySelector(`${name}-trigger`));
|
|
15
|
+
}
|
|
1
16
|
function impactCompare(a, b) {
|
|
2
17
|
const impactOrder = [null, 'minor', 'moderate', 'serious', 'critical'];
|
|
3
18
|
return impactOrder.indexOf(a) - impactOrder.indexOf(b);
|
|
4
19
|
}
|
|
5
|
-
export default function transformViolations(violations) {
|
|
20
|
+
export default function transformViolations(violations, name) {
|
|
6
21
|
const elementsWithIssues = [];
|
|
7
22
|
for (const violation of violations) {
|
|
8
23
|
for (const node of violation.nodes) {
|
|
@@ -14,10 +29,7 @@ export default function transformViolations(violations) {
|
|
|
14
29
|
// in the case that such issues are for some reason reported by axe-core.
|
|
15
30
|
// A consumer of Accented can instead scan the iframed document by calling Accented initialization from that document.
|
|
16
31
|
const isInIframe = target.length > 1;
|
|
17
|
-
|
|
18
|
-
// Until then, we don’t want such elements to be added to the set.
|
|
19
|
-
const isInShadowDOM = Array.isArray(target[0]);
|
|
20
|
-
if (element && !isInIframe && !isInShadowDOM) {
|
|
32
|
+
if (element && !isInIframe && !maybeCausedByAccented(violation.id, element, name)) {
|
|
21
33
|
const issue = {
|
|
22
34
|
id: violation.id,
|
|
23
35
|
title: violation.help,
|
|
@@ -29,6 +41,7 @@ export default function transformViolations(violations) {
|
|
|
29
41
|
if (existingElementIndex === -1) {
|
|
30
42
|
elementsWithIssues.push({
|
|
31
43
|
element,
|
|
44
|
+
rootNode: element.getRootNode(),
|
|
32
45
|
issues: [issue]
|
|
33
46
|
});
|
|
34
47
|
}
|