accented 0.0.0-20250303013509 → 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 +50 -22
- package/dist/elements/accented-dialog.js.map +1 -1
- package/dist/elements/accented-trigger.d.ts.map +1 -1
- package/dist/elements/accented-trigger.js +32 -9
- 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 +17 -5
- 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 +5 -4
- 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 +50 -22
- package/src/elements/accented-trigger.ts +33 -10
- package/src/fullscreen-listener.ts +17 -0
- package/src/scanner.ts +17 -6
- package/src/state.ts +10 -2
- package/src/types.ts +19 -6
- 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 +5 -4
- 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 +42 -8
- package/src/utils/update-elements-with-issues.ts +10 -5
- package/dist/utils/is-html-element.d.ts +0 -2
- package/dist/utils/is-html-element.d.ts.map +0 -1
- package/dist/utils/is-html-element.js +0 -7
- package/dist/utils/is-html-element.js.map +0 -1
- package/src/utils/is-html-element.ts +0 -6
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 = {
|
|
@@ -121,16 +129,20 @@ export type Issue = {
|
|
|
121
129
|
url: string;
|
|
122
130
|
impact: axe.ImpactValue;
|
|
123
131
|
};
|
|
124
|
-
export type
|
|
132
|
+
export type BaseElementWithIssues = {
|
|
125
133
|
element: HTMLElement;
|
|
134
|
+
rootNode: Node;
|
|
135
|
+
};
|
|
136
|
+
export type ElementWithIssues = BaseElementWithIssues & {
|
|
126
137
|
issues: Array<Issue>;
|
|
127
138
|
};
|
|
128
|
-
export type ExtendedElementWithIssues =
|
|
139
|
+
export type ExtendedElementWithIssues = BaseElementWithIssues & {
|
|
129
140
|
issues: Signal<ElementWithIssues['issues']>;
|
|
130
141
|
visible: Signal<boolean>;
|
|
131
142
|
trigger: AccentedTrigger;
|
|
132
143
|
position: Signal<Position>;
|
|
133
|
-
|
|
144
|
+
anchorNameValue: string;
|
|
145
|
+
scrollableAncestors: Signal<Set<Element>>;
|
|
134
146
|
id: number;
|
|
135
147
|
};
|
|
136
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,4 +1,5 @@
|
|
|
1
|
-
import isHtmlElement from './
|
|
1
|
+
import { isHtmlElement } from './dom-helpers.js';
|
|
2
|
+
import getParent from './get-parent.js';
|
|
2
3
|
// https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block
|
|
3
4
|
function isContainingBlock(element, win) {
|
|
4
5
|
const style = win.getComputedStyle(element);
|
|
@@ -10,9 +11,9 @@ function isContainingBlock(element, win) {
|
|
|
10
11
|
}
|
|
11
12
|
function getNonInitialContainingBlock(element, win) {
|
|
12
13
|
let currentElement = element;
|
|
13
|
-
while (currentElement
|
|
14
|
-
currentElement = currentElement
|
|
15
|
-
if (isContainingBlock(currentElement, win)) {
|
|
14
|
+
while (currentElement) {
|
|
15
|
+
currentElement = getParent(currentElement);
|
|
16
|
+
if (currentElement && isContainingBlock(currentElement, win)) {
|
|
16
17
|
return currentElement;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-element-position.js","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAAE,IAAY,EAAE,QAA0B;IACpG,MAAM,8BAA+B,SAAQ,gBAAgB;QAC3D,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAEzB,QAAQ,CAAmC;QAE3C,YAAY,QAA0B;YACpC,KAAK,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;gBAC5B,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAC3D,MAAM,kBAAkB,GAAG,SAAS;qBACjC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;gBAEpD,MAAM,WAAW,GAAG,kBAAkB;qBACnC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;qBACzC,IAAI,EAAE;qBACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAE/E,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAEtC,MAAM,eAAe,GAAG,kBAAkB;qBACvC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;qBAC3C,IAAI,EAAE;qBACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAE/E,wEAAwE;gBACxE,6CAA6C;gBAC7C,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBAEzC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QAEQ,OAAO,CAAC,MAAY,EAAE,OAA8B;YAC3D,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;YAC1B,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1E,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QAEQ,UAAU;YACjB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;QAED,mBAAmB,GAAG,CAAC,QAAsD,EAAE,EAAE;YAC/E,MAAM,WAAW,GAAG,QAAQ;iBACzB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClD,IAAI,EAAE;iBACN,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;iBACrC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAW,CAAC,CAAC;YAEvC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAA;QAED,kBAAkB,GAAG,CAAC,QAAsD,EAAE,EAAE;YAC9E,MAAM,WAAW,GAAG,QAAQ;iBACzB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClD,IAAI,EAAE;iBACN,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;iBACrC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAW,CAAC,CAAC;YAEvC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAA;KACF;IAED,OAAO,IAAI,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-violations.js","sourceRoot":"","sources":["../../src/utils/transform-violations.ts"],"names":[],"mappings":"AAGA,SAAS,aAAa,CAAC,CAAc,EAAE,CAAc;IACnD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,UAAwC;
|
|
1
|
+
{"version":3,"file":"transform-violations.js","sourceRoot":"","sources":["../../src/utils/transform-violations.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,2FAA2F;AAC3F,MAAM,oCAAoC,GAAG;IAC3C,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,6BAA6B;IAC7B,MAAM;IACN,oBAAoB;IACpB,6BAA6B,CAAC,oFAAoF;CACnH,CAAC;AAEF,SAAS,qBAAqB,CAAC,WAAmB,EAAE,OAAoB,EAAE,IAAY;IACpF,OAAO,oCAAoC,CAAC,QAAQ,CAAC,WAAW,CAAC;WAC5D,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,CAAc,EAAE,CAAc;IACnD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,UAAwC,EAAE,IAAY;IAChG,MAAM,kBAAkB,GAA6B,EAAE,CAAC;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAEjC,4EAA4E;YAC5E,8EAA8E;YAC9E,2CAA2C;YAC3C,mGAAmG;YACnG,yEAAyE;YACzE,sHAAsH;YACtH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAErC,IAAI,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;gBAClF,MAAM,KAAK,GAAU;oBACnB,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,KAAK,EAAE,SAAS,CAAC,IAAI;oBACrB,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,WAAW;oBACzD,GAAG,EAAE,SAAS,CAAC,OAAO;oBACtB,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI;iBACjC,CAAC;gBACF,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gBACtH,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;oBAChC,kBAAkB,CAAC,IAAI,CAAC;wBACtB,OAAO;wBACP,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;wBAC/B,MAAM,EAAE,CAAC,KAAK,CAAC;qBAChB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,kBAAkB,CAAC,oBAAoB,CAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;QACnD,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-elements-with-issues.d.ts","sourceRoot":"","sources":["../../src/utils/update-elements-with-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"update-elements-with-issues.d.ts","sourceRoot":"","sources":["../../src/utils/update-elements-with-issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAY1D,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,0BAA0B,EAAE,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,OAAO,GAAG,CAAA;CAAE,EAAE,IAAI,EAAE,MAAM,QAgE/M"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { batch, signal } from '@preact/signals-core';
|
|
2
2
|
import transformViolations from './transform-violations.js';
|
|
3
|
+
import areElementsWithIssuesEqual from './are-elements-with-issues-equal.js';
|
|
3
4
|
import areIssueSetsEqual from './are-issue-sets-equal.js';
|
|
4
5
|
import getElementPosition from './get-element-position.js';
|
|
5
6
|
import getScrollableAncestors from './get-scrollable-ancestors.js';
|
|
6
7
|
import supportsAnchorPositioning from './supports-anchor-positioning.js';
|
|
7
8
|
let count = 0;
|
|
8
9
|
export default function updateElementsWithIssues(extendedElementsWithIssues, violations, win, name) {
|
|
9
|
-
const updatedElementsWithIssues = transformViolations(violations);
|
|
10
|
+
const updatedElementsWithIssues = transformViolations(violations, name);
|
|
10
11
|
batch(() => {
|
|
11
12
|
for (const updatedElementWithIssues of updatedElementsWithIssues) {
|
|
12
|
-
const existingElementIndex = extendedElementsWithIssues.value.findIndex(extendedElementWithIssues => extendedElementWithIssues
|
|
13
|
+
const existingElementIndex = extendedElementsWithIssues.value.findIndex(extendedElementWithIssues => areElementsWithIssuesEqual(extendedElementWithIssues, updatedElementWithIssues));
|
|
13
14
|
if (existingElementIndex > -1 && extendedElementsWithIssues.value[existingElementIndex] && !areIssueSetsEqual(extendedElementsWithIssues.value[existingElementIndex].issues.value, updatedElementWithIssues.issues)) {
|
|
14
15
|
extendedElementsWithIssues.value[existingElementIndex].issues.value = updatedElementWithIssues.issues;
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
const addedElementsWithIssues = updatedElementsWithIssues.filter(updatedElementWithIssues => {
|
|
18
|
-
return !extendedElementsWithIssues.value.some(extendedElementWithIssues => extendedElementWithIssues
|
|
19
|
+
return !extendedElementsWithIssues.value.some(extendedElementWithIssues => areElementsWithIssuesEqual(extendedElementWithIssues, updatedElementWithIssues));
|
|
19
20
|
});
|
|
20
21
|
const removedElementsWithIssues = extendedElementsWithIssues.value.filter(extendedElementWithIssues => {
|
|
21
|
-
return !updatedElementsWithIssues.some(updatedElementWithIssues => updatedElementWithIssues
|
|
22
|
+
return !updatedElementsWithIssues.some(updatedElementWithIssues => areElementsWithIssuesEqual(updatedElementWithIssues, extendedElementWithIssues));
|
|
22
23
|
});
|
|
23
24
|
if (addedElementsWithIssues.length > 0 || removedElementsWithIssues.length > 0) {
|
|
24
25
|
extendedElementsWithIssues.value = [...extendedElementsWithIssues.value]
|
|
25
26
|
.filter(extendedElementWithIssues => {
|
|
26
|
-
return !removedElementsWithIssues.some(removedElementWithIssues => removedElementWithIssues
|
|
27
|
+
return !removedElementsWithIssues.some(removedElementWithIssues => areElementsWithIssuesEqual(removedElementWithIssues, extendedElementWithIssues));
|
|
27
28
|
})
|
|
28
29
|
.concat(addedElementsWithIssues
|
|
29
30
|
.filter(addedElementWithIssues => addedElementWithIssues.element.isConnected)
|
|
@@ -51,9 +52,12 @@ export default function updateElementsWithIssues(extendedElementsWithIssues, vio
|
|
|
51
52
|
return {
|
|
52
53
|
id,
|
|
53
54
|
element: addedElementWithIssues.element,
|
|
55
|
+
rootNode: addedElementWithIssues.rootNode,
|
|
54
56
|
visible: trigger.visible,
|
|
55
57
|
position: trigger.position,
|
|
56
58
|
scrollableAncestors: signal(scrollableAncestors),
|
|
59
|
+
anchorNameValue: addedElementWithIssues.element.style.getPropertyValue('anchor-name')
|
|
60
|
+
|| win.getComputedStyle(addedElementWithIssues.element).getPropertyValue('anchor-name'),
|
|
57
61
|
trigger,
|
|
58
62
|
issues
|
|
59
63
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-elements-with-issues.js","sourceRoot":"","sources":["../../src/utils/update-elements-with-issues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,mBAAmB,MAAM,2BAA2B,CAAC;AAC5D,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAG1D,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,sBAAsB,MAAM,+BAA+B,CAAC;AACnE,OAAO,yBAAyB,MAAM,kCAAkC,CAAC;AAEzE,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,0BAAoE,EAAE,UAAwC,EAAE,GAAiC,EAAE,IAAY;IAC9M,MAAM,yBAAyB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"update-elements-with-issues.js","sourceRoot":"","sources":["../../src/utils/update-elements-with-issues.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "accented",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-20250404114312",
|
|
4
4
|
"description": "Continuous accessibility testing and issue highlighting for web development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/accented.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
|
-
"src"
|
|
9
|
+
"src",
|
|
10
|
+
"NOTICE"
|
|
10
11
|
],
|
|
11
12
|
"repository": {
|
|
12
13
|
"type": "git",
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
"axe-core"
|
|
20
21
|
],
|
|
21
22
|
"author": "Pavel Pomerantsev",
|
|
22
|
-
"license": "MIT",
|
|
23
|
+
"license": "MIT AND MPL-2.0",
|
|
23
24
|
"bugs": {
|
|
24
25
|
"url": "https://github.com/pomerantsev/accented/issues"
|
|
25
26
|
},
|