accented 0.0.0-20250303013509 → 0.0.0-20250424114613

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/NOTICE +14 -0
  2. package/README.md +10 -4
  3. package/dist/accented.d.ts +2 -2
  4. package/dist/accented.d.ts.map +1 -1
  5. package/dist/accented.js +10 -5
  6. package/dist/accented.js.map +1 -1
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +1 -0
  10. package/dist/constants.js.map +1 -1
  11. package/dist/dom-updater.d.ts.map +1 -1
  12. package/dist/dom-updater.js +66 -25
  13. package/dist/dom-updater.js.map +1 -1
  14. package/dist/elements/accented-dialog.d.ts +11 -7
  15. package/dist/elements/accented-dialog.d.ts.map +1 -1
  16. package/dist/elements/accented-dialog.js +85 -86
  17. package/dist/elements/accented-dialog.js.map +1 -1
  18. package/dist/elements/accented-trigger.d.ts +9 -5
  19. package/dist/elements/accented-trigger.d.ts.map +1 -1
  20. package/dist/elements/accented-trigger.js +35 -11
  21. package/dist/elements/accented-trigger.js.map +1 -1
  22. package/dist/fullscreen-listener.d.ts +2 -0
  23. package/dist/fullscreen-listener.d.ts.map +1 -0
  24. package/dist/fullscreen-listener.js +18 -0
  25. package/dist/fullscreen-listener.js.map +1 -0
  26. package/dist/logger.d.ts.map +1 -1
  27. package/dist/logger.js +4 -1
  28. package/dist/logger.js.map +1 -1
  29. package/dist/scanner.d.ts +2 -2
  30. package/dist/scanner.d.ts.map +1 -1
  31. package/dist/scanner.js +33 -19
  32. package/dist/scanner.js.map +1 -1
  33. package/dist/state.d.ts +2 -1
  34. package/dist/state.d.ts.map +1 -1
  35. package/dist/state.js +3 -0
  36. package/dist/state.js.map +1 -1
  37. package/dist/task-queue.d.ts +2 -2
  38. package/dist/task-queue.d.ts.map +1 -1
  39. package/dist/task-queue.js +2 -1
  40. package/dist/task-queue.js.map +1 -1
  41. package/dist/types.d.ts +42 -8
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/types.js.map +1 -1
  44. package/dist/utils/are-elements-with-issues-equal.d.ts +3 -0
  45. package/dist/utils/are-elements-with-issues-equal.d.ts.map +1 -0
  46. package/dist/utils/are-elements-with-issues-equal.js +5 -0
  47. package/dist/utils/are-elements-with-issues-equal.js.map +1 -0
  48. package/dist/utils/containing-blocks.d.ts +3 -0
  49. package/dist/utils/containing-blocks.d.ts.map +1 -0
  50. package/dist/utils/containing-blocks.js +46 -0
  51. package/dist/utils/containing-blocks.js.map +1 -0
  52. package/dist/utils/contains.d.ts +2 -0
  53. package/dist/utils/contains.d.ts.map +1 -0
  54. package/dist/utils/contains.js +19 -0
  55. package/dist/utils/contains.js.map +1 -0
  56. package/dist/utils/deduplicate-nodes.d.ts +2 -0
  57. package/dist/utils/deduplicate-nodes.d.ts.map +1 -0
  58. package/dist/utils/deduplicate-nodes.js +5 -0
  59. package/dist/utils/deduplicate-nodes.js.map +1 -0
  60. package/dist/utils/dom-helpers.d.ts +9 -0
  61. package/dist/utils/dom-helpers.d.ts.map +1 -0
  62. package/dist/utils/dom-helpers.js +32 -0
  63. package/dist/utils/dom-helpers.js.map +1 -0
  64. package/dist/utils/ensure-non-empty.d.ts +2 -0
  65. package/dist/utils/ensure-non-empty.d.ts.map +1 -0
  66. package/dist/utils/ensure-non-empty.js +7 -0
  67. package/dist/utils/ensure-non-empty.js.map +1 -0
  68. package/dist/utils/get-element-position.d.ts +8 -0
  69. package/dist/utils/get-element-position.d.ts.map +1 -1
  70. package/dist/utils/get-element-position.js +27 -11
  71. package/dist/utils/get-element-position.js.map +1 -1
  72. package/dist/utils/get-parent.d.ts +2 -0
  73. package/dist/utils/get-parent.d.ts.map +1 -0
  74. package/dist/utils/get-parent.js +12 -0
  75. package/dist/utils/get-parent.js.map +1 -0
  76. package/dist/utils/get-scan-context.d.ts +3 -0
  77. package/dist/utils/get-scan-context.d.ts.map +1 -0
  78. package/dist/utils/get-scan-context.js +28 -0
  79. package/dist/utils/get-scan-context.js.map +1 -0
  80. package/dist/utils/get-scrollable-ancestors.d.ts +1 -1
  81. package/dist/utils/get-scrollable-ancestors.d.ts.map +1 -1
  82. package/dist/utils/get-scrollable-ancestors.js +6 -2
  83. package/dist/utils/get-scrollable-ancestors.js.map +1 -1
  84. package/dist/utils/is-node-in-scan-context.d.ts +3 -0
  85. package/dist/utils/is-node-in-scan-context.d.ts.map +1 -0
  86. package/dist/utils/is-node-in-scan-context.js +26 -0
  87. package/dist/utils/is-node-in-scan-context.js.map +1 -0
  88. package/dist/utils/normalize-context.d.ts +3 -0
  89. package/dist/utils/normalize-context.d.ts.map +1 -0
  90. package/dist/utils/normalize-context.js +57 -0
  91. package/dist/utils/normalize-context.js.map +1 -0
  92. package/dist/utils/shadow-dom-aware-mutation-observer.d.ts +10 -0
  93. package/dist/utils/shadow-dom-aware-mutation-observer.d.ts.map +1 -0
  94. package/dist/utils/shadow-dom-aware-mutation-observer.js +64 -0
  95. package/dist/utils/shadow-dom-aware-mutation-observer.js.map +1 -0
  96. package/dist/utils/transform-violations.d.ts +1 -1
  97. package/dist/utils/transform-violations.d.ts.map +1 -1
  98. package/dist/utils/transform-violations.js +18 -5
  99. package/dist/utils/transform-violations.js.map +1 -1
  100. package/dist/utils/update-elements-with-issues.d.ts +10 -4
  101. package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
  102. package/dist/utils/update-elements-with-issues.js +33 -6
  103. package/dist/utils/update-elements-with-issues.js.map +1 -1
  104. package/dist/validate-options.d.ts.map +1 -1
  105. package/dist/validate-options.js +86 -0
  106. package/dist/validate-options.js.map +1 -1
  107. package/package.json +8 -3
  108. package/src/accented.ts +10 -5
  109. package/src/constants.ts +1 -0
  110. package/src/dom-updater.ts +70 -24
  111. package/src/elements/accented-dialog.ts +88 -90
  112. package/src/elements/accented-trigger.ts +36 -12
  113. package/src/fullscreen-listener.ts +17 -0
  114. package/src/logger.ts +9 -1
  115. package/src/scanner.ts +37 -20
  116. package/src/state.ts +10 -2
  117. package/src/task-queue.ts +6 -4
  118. package/src/types.ts +55 -9
  119. package/src/utils/are-elements-with-issues-equal.ts +9 -0
  120. package/src/utils/containing-blocks.ts +57 -0
  121. package/src/utils/contains.test.ts +55 -0
  122. package/src/utils/contains.ts +19 -0
  123. package/src/utils/deduplicate-nodes.ts +3 -0
  124. package/src/utils/dom-helpers.ts +38 -0
  125. package/src/utils/ensure-non-empty.ts +6 -0
  126. package/src/utils/get-element-position.ts +28 -11
  127. package/src/utils/get-parent.ts +14 -0
  128. package/src/utils/get-scan-context.test.ts +79 -0
  129. package/src/utils/get-scan-context.ts +39 -0
  130. package/src/utils/get-scrollable-ancestors.ts +10 -5
  131. package/src/utils/is-node-in-scan-context.test.ts +70 -0
  132. package/src/utils/is-node-in-scan-context.ts +29 -0
  133. package/src/utils/normalize-context.test.ts +105 -0
  134. package/src/utils/normalize-context.ts +58 -0
  135. package/src/utils/shadow-dom-aware-mutation-observer.ts +78 -0
  136. package/src/utils/transform-violations.test.ts +10 -8
  137. package/src/utils/transform-violations.ts +20 -6
  138. package/src/utils/update-elements-with-issues.test.ts +102 -15
  139. package/src/utils/update-elements-with-issues.ts +51 -7
  140. package/src/validate-options.ts +88 -1
  141. package/dist/utils/is-html-element.d.ts +0 -2
  142. package/dist/utils/is-html-element.d.ts.map +0 -1
  143. package/dist/utils/is-html-element.js +0 -7
  144. package/dist/utils/is-html-element.js.map +0 -1
  145. package/src/utils/is-html-element.ts +0 -6
package/NOTICE ADDED
@@ -0,0 +1,14 @@
1
+ NOTICE
2
+
3
+ This project, Accented, is licensed under the MIT License.
4
+
5
+ However, it depends on axe-core, which is licensed under the Mozilla Public License 2.0 (MPL-2.0). The source code for axe-core is available at:
6
+
7
+ https://github.com/dequelabs/axe-core
8
+
9
+ According to the MPL-2.0 requirements:
10
+ - Any modifications made to axe-core within this project will remain under the MPL-2.0 license.
11
+ - The original license and notices for axe-core are preserved.
12
+ - The full MPL-2.0 license can be found at: https://www.mozilla.org/MPL/2.0/
13
+
14
+ No changes have been made to axe-core within this project, beyond its use as a dependency.
package/README.md CHANGED
@@ -37,7 +37,7 @@ The following types are exported for TypeScript consumers:
37
37
 
38
38
  ### Options
39
39
 
40
- #### `axeContext`
40
+ #### `context`
41
41
 
42
42
  **Type:** see [documentation](https://www.deque.com/axe/core-documentation/api-documentation/#context-parameter).
43
43
 
@@ -95,15 +95,21 @@ A function that Accented will call after every scan.
95
95
  It accepts a single `params` object with the following properties:
96
96
 
97
97
  * `elementsWithIssues`: the most up-to-date array of all elements with accessibility issues.
98
- * `scanDuration`: how long the last scan took, in milliseconds (may be useful for performance tracking).
98
+ * `performance`: runtime performance of the last scan. An object:
99
+ * `totalBlockingTime`: how long the main thread was blocked by Accented during the last scan, in milliseconds.
100
+ It’s further divided into the `scan` and `domUpdate` phases.
101
+ * `scan`: how long the `scan` phase took, in milliseconds.
102
+ * `domUpdate`: how long the `domUpdate` phase took, in milliseconds.
103
+ * `scanContext`: nodes that got scanned. Either an array of nodes,
104
+ or an object with `include` and `exclude` properties (if any nodes were excluded).
99
105
 
100
106
  **Example:**
101
107
 
102
108
  ```
103
109
  accented({
104
- callback: ({ elementsWithIssues, scanDuration }) => {
110
+ callback: ({ elementsWithIssues, performance }) => {
105
111
  console.log('Elements with issues:', elementsWithIssues);
106
- console.log('Scan duration:', scanDuration);
112
+ console.log('Total blocking time:', performance.totalBlockingTime);
107
113
  }
108
114
  });
109
115
  ```
@@ -19,9 +19,9 @@ export type { AccentedOptions, DisableAccented };
19
19
  * wait: 500,
20
20
  * leading: false
21
21
  * },
22
- * callback: ({ elementsWithIssues, scanDuration }) => {
22
+ * callback: ({ elementsWithIssues, performance }) => {
23
23
  * console.log('Elements with issues:', elementsWithIssues);
24
- * console.log('Scan duration:', scanDuration);
24
+ * console.log('Total blocking time:', performance.totalBlockingTime);
25
25
  * }
26
26
  * });
27
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"accented.d.ts","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAKhE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,eAAe,CA4E/E"}
1
+ {"version":3,"file":"accented.d.ts","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAMhE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,eAAe,CA+E/E"}
package/dist/accented.js CHANGED
@@ -4,12 +4,14 @@ import createLogger from './logger.js';
4
4
  import createScanner from './scanner.js';
5
5
  import setupScrollListeners from './scroll-listeners.js';
6
6
  import setupResizeListener from './resize-listener.js';
7
+ import setupFullscreenListener from './fullscreen-listener.js';
7
8
  import setupIntersectionObserver from './intersection-observer.js';
8
9
  import { enabled, extendedElementsWithIssues } from './state.js';
9
10
  import deepMerge from './utils/deep-merge.js';
10
11
  import validateOptions from './validate-options.js';
11
12
  import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
12
13
  import logAndRethrow from './log-and-rethrow.js';
14
+ import { initializeContainingBlockSupportSet } from './utils/containing-blocks.js';
13
15
  /**
14
16
  * Enables highlighting of elements with accessibility issues.
15
17
  *
@@ -29,9 +31,9 @@ import logAndRethrow from './log-and-rethrow.js';
29
31
  * wait: 500,
30
32
  * leading: false
31
33
  * },
32
- * callback: ({ elementsWithIssues, scanDuration }) => {
34
+ * callback: ({ elementsWithIssues, performance }) => {
33
35
  * console.log('Elements with issues:', elementsWithIssues);
34
- * console.log('Scan duration:', scanDuration);
36
+ * console.log('Total blocking time:', performance.totalBlockingTime);
35
37
  * }
36
38
  * });
37
39
  */
@@ -56,14 +58,14 @@ export default function accented(options = {}) {
56
58
  // * update examples in the accented() function JSDoc;
57
59
  // * update examples in the Readme.
58
60
  const defaultOptions = {
59
- axeContext: document,
61
+ context: document,
60
62
  axeOptions: {},
61
63
  name: 'accented',
62
64
  output: defaultOutput,
63
65
  throttle: defaultThrottle,
64
66
  callback: () => { }
65
67
  };
66
- const { axeContext, axeOptions, name, output, throttle, callback } = deepMerge(defaultOptions, options);
68
+ const { context, axeOptions, name, output, throttle, callback } = deepMerge(defaultOptions, options);
67
69
  if (enabled.value) {
68
70
  // Add link to the recipes section of the docs (#56).
69
71
  console.warn('You are trying to run the Accented library more than once. ' +
@@ -71,13 +73,15 @@ export default function accented(options = {}) {
71
73
  console.trace();
72
74
  }
73
75
  enabled.value = true;
76
+ initializeContainingBlockSupportSet();
74
77
  registerElements(name);
75
78
  const { disconnect: cleanupIntersectionObserver, intersectionObserver } = supportsAnchorPositioning(window) ? {} : setupIntersectionObserver();
76
- const cleanupScanner = createScanner(name, axeContext, axeOptions, throttle, callback);
79
+ const cleanupScanner = createScanner(name, context, axeOptions, throttle, callback);
77
80
  const cleanupDomUpdater = createDomUpdater(name, intersectionObserver);
78
81
  const cleanupLogger = output.console ? createLogger() : () => { };
79
82
  const cleanupScrollListeners = supportsAnchorPositioning(window) ? () => { } : setupScrollListeners();
80
83
  const cleanupResizeListener = supportsAnchorPositioning(window) ? () => { } : setupResizeListener();
84
+ const cleanupFullscreenListener = supportsAnchorPositioning(window) ? () => { } : setupFullscreenListener();
81
85
  return () => {
82
86
  try {
83
87
  enabled.value = false;
@@ -87,6 +91,7 @@ export default function accented(options = {}) {
87
91
  cleanupLogger();
88
92
  cleanupScrollListeners();
89
93
  cleanupResizeListener();
94
+ cleanupFullscreenListener();
90
95
  if (cleanupIntersectionObserver) {
91
96
  cleanupIntersectionObserver();
92
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accented.js","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accented.js","sourceRoot":"","sources":["../src/accented.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export declare const accentedUrl = "https://www.npmjs.com/package/accented";
2
2
  export declare const issuesUrl = "https://github.com/pomerantsev/accented/issues";
3
+ export declare const getAccentedElementNames: (name: string) => string[];
3
4
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,2CAA2C,CAAC;AACpE,eAAO,MAAM,SAAS,mDAAmD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,2CAA2C,CAAC;AACpE,eAAO,MAAM,SAAS,mDAAmD,CAAC;AAC1E,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,aAA0C,CAAC"}
package/dist/constants.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export const accentedUrl = 'https://www.npmjs.com/package/accented';
2
2
  export const issuesUrl = 'https://github.com/pomerantsev/accented/issues';
3
+ export const getAccentedElementNames = (name) => [`${name}-trigger`, `${name}-dialog`];
3
4
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,wCAAwC,CAAC;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,gDAAgD,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,wCAAwC,CAAC;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,gDAAgD,CAAC;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom-updater.d.ts","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,cA0GjG"}
1
+ {"version":3,"file":"dom-updater.d.ts","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,cA6HjG"}
@@ -1,6 +1,29 @@
1
1
  import { effect } from '@preact/signals-core';
2
- import { extendedElementsWithIssues } from './state.js';
2
+ import { extendedElementsWithIssues, rootNodes } from './state.js';
3
+ import areElementsWithIssuesEqual from './utils/are-elements-with-issues-equal.js';
3
4
  import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
5
+ import { isDocument, isDocumentFragment, isShadowRoot } from './utils/dom-helpers.js';
6
+ import getParent from './utils/get-parent.js';
7
+ const shouldInsertTriggerInsideElement = (element) => {
8
+ /**
9
+ * No parent means that the element is a root node,
10
+ * which cannot have siblings.
11
+ */
12
+ const noParent = !getParent(element);
13
+ /**
14
+ * Table cells get a special treatment because if a sibling to a TH or TD is inserted,
15
+ * it alters the table layout, no matter how that sibling is positioned.
16
+ * We don't want tables to look broken, so we're inserting the trigger inside the table cell.
17
+ */
18
+ const isTableCell = element.nodeName === 'TH' || element.nodeName === 'TD';
19
+ /**
20
+ * We want to put the trigger inside the <summary> element,
21
+ * because otherwise it will be hidden by the browser when the <details> element is collapsed
22
+ * (since none of the siblings of <summary> are visible then).
23
+ */
24
+ const isSummary = element.nodeName === 'SUMMARY';
25
+ return noParent || isTableCell || isSummary;
26
+ };
4
27
  export default function createDomUpdater(name, intersectionObserver) {
5
28
  const attrName = `data-${name}`;
6
29
  function getAnchorNames(anchorNameValue) {
@@ -9,8 +32,8 @@ export default function createDomUpdater(name, intersectionObserver) {
9
32
  .map(anchorName => anchorName.trim())
10
33
  .filter(anchorName => anchorName.startsWith('--'));
11
34
  }
12
- function setAnchorName(element, id) {
13
- const anchorNameValue = element.style.getPropertyValue('anchor-name') || window.getComputedStyle(element).getPropertyValue('anchor-name');
35
+ function setAnchorName(elementWithIssues) {
36
+ const { element, id, anchorNameValue } = elementWithIssues;
14
37
  const anchorNames = getAnchorNames(anchorNameValue);
15
38
  if (anchorNames.length > 0) {
16
39
  element.style.setProperty('anchor-name', `${anchorNameValue}, --${name}-anchor-${id}`);
@@ -19,28 +42,30 @@ export default function createDomUpdater(name, intersectionObserver) {
19
42
  element.style.setProperty('anchor-name', `--${name}-anchor-${id}`);
20
43
  }
21
44
  }
22
- function removeAnchorName(element, id) {
23
- const anchorNameValue = element.style.getPropertyValue('anchor-name');
45
+ function removeAnchorName(elementWithIssues) {
46
+ const { element, anchorNameValue } = elementWithIssues;
24
47
  const anchorNames = getAnchorNames(anchorNameValue);
25
- const index = anchorNames.indexOf(`--${name}-anchor-${id}`);
26
- if (anchorNames.length === 1 && index === 0) {
27
- element.style.removeProperty('anchor-name');
48
+ if (anchorNames.length > 0) {
49
+ element.style.setProperty('anchor-name', anchorNames.join(', '));
28
50
  }
29
- else if (anchorNames.length > 1 && index > -1) {
30
- element.style.setProperty('anchor-name', anchorNames.filter((_, i) => i !== index).join(', '));
51
+ else {
52
+ element.style.removeProperty('anchor-name');
31
53
  }
32
54
  }
33
55
  function setIssues(extendedElementsWithIssues) {
34
56
  for (const elementWithIssues of extendedElementsWithIssues) {
57
+ if (elementWithIssues.skipRender) {
58
+ continue;
59
+ }
35
60
  elementWithIssues.element.setAttribute(attrName, elementWithIssues.id.toString());
36
61
  if (supportsAnchorPositioning(window)) {
37
- setAnchorName(elementWithIssues.element, elementWithIssues.id);
62
+ setAnchorName(elementWithIssues);
38
63
  }
39
- if (elementWithIssues.element.parentElement) {
40
- elementWithIssues.element.insertAdjacentElement('afterend', elementWithIssues.trigger);
64
+ if (shouldInsertTriggerInsideElement(elementWithIssues.element)) {
65
+ elementWithIssues.element.insertAdjacentElement('beforeend', elementWithIssues.trigger);
41
66
  }
42
67
  else {
43
- elementWithIssues.element.insertAdjacentElement('beforeend', elementWithIssues.trigger);
68
+ elementWithIssues.element.insertAdjacentElement('afterend', elementWithIssues.trigger);
44
69
  }
45
70
  if (intersectionObserver) {
46
71
  intersectionObserver.observe(elementWithIssues.element);
@@ -49,9 +74,12 @@ export default function createDomUpdater(name, intersectionObserver) {
49
74
  }
50
75
  function removeIssues(extendedElementsWithIssues) {
51
76
  for (const elementWithIssues of extendedElementsWithIssues) {
77
+ if (elementWithIssues.skipRender) {
78
+ continue;
79
+ }
52
80
  elementWithIssues.element.removeAttribute(attrName);
53
81
  if (supportsAnchorPositioning(window)) {
54
- removeAnchorName(elementWithIssues.element, elementWithIssues.id);
82
+ removeAnchorName(elementWithIssues);
55
83
  }
56
84
  elementWithIssues.trigger.remove();
57
85
  if (intersectionObserver) {
@@ -63,8 +91,10 @@ export default function createDomUpdater(name, intersectionObserver) {
63
91
  stylesheet.replaceSync(`
64
92
  @layer ${name} {
65
93
  :root {
66
- --${name}-primary-color: red;
67
- --${name}-secondary-color: white;
94
+ /* Ensure that the primary / secondary color combination meets WCAG 1.4.3 Contrast (Minimum) */
95
+ /* OKLCH stuff: https://oklch.com/ */
96
+ --${name}-primary-color: oklch(0.5 0.3 0);
97
+ --${name}-secondary-color: oklch(0.98 0 0);
68
98
  --${name}-outline-width: 2px;
69
99
  --${name}-outline-style: solid;
70
100
  }
@@ -78,25 +108,36 @@ export default function createDomUpdater(name, intersectionObserver) {
78
108
  }
79
109
  `);
80
110
  let previousExtendedElementsWithIssues = [];
81
- document.adoptedStyleSheets.push(stylesheet);
82
- const removeStylesheet = () => {
83
- if (document.adoptedStyleSheets.includes(stylesheet)) {
84
- document.adoptedStyleSheets.splice(document.adoptedStyleSheets.indexOf(stylesheet), 1);
111
+ let previousRootNodes = new Set();
112
+ const disposeOfStyleSheetsEffect = effect(() => {
113
+ const newRootNodes = rootNodes.value;
114
+ const addedRootNodes = [...newRootNodes].filter(rootNode => !previousRootNodes.has(rootNode));
115
+ const removedRootNodes = [...previousRootNodes].filter(rootNode => !newRootNodes.has(rootNode));
116
+ for (const rootNode of addedRootNodes) {
117
+ if (isDocument(rootNode) || (isDocumentFragment(rootNode) && isShadowRoot(rootNode))) {
118
+ rootNode.adoptedStyleSheets.push(stylesheet);
119
+ }
85
120
  }
86
- };
121
+ for (const rootNode of removedRootNodes) {
122
+ if (isDocument(rootNode) || (isDocumentFragment(rootNode) && isShadowRoot(rootNode))) {
123
+ rootNode.adoptedStyleSheets.splice(rootNode.adoptedStyleSheets.indexOf(stylesheet), 1);
124
+ }
125
+ }
126
+ previousRootNodes = newRootNodes;
127
+ });
87
128
  const disposeOfElementsEffect = effect(() => {
88
129
  const added = extendedElementsWithIssues.value.filter(elementWithIssues => {
89
- return !previousExtendedElementsWithIssues.some(previousElementWithIssues => previousElementWithIssues.element === elementWithIssues.element);
130
+ return !previousExtendedElementsWithIssues.some(previousElementWithIssues => areElementsWithIssuesEqual(previousElementWithIssues, elementWithIssues));
90
131
  });
91
132
  const removed = previousExtendedElementsWithIssues.filter(previousElementWithIssues => {
92
- return !extendedElementsWithIssues.value.some(elementWithIssues => elementWithIssues.element === previousElementWithIssues.element);
133
+ return !extendedElementsWithIssues.value.some(elementWithIssues => areElementsWithIssuesEqual(elementWithIssues, previousElementWithIssues));
93
134
  });
94
135
  removeIssues(removed);
95
136
  setIssues(added);
96
137
  previousExtendedElementsWithIssues = [...extendedElementsWithIssues.value];
97
138
  });
98
139
  return () => {
99
- removeStylesheet();
140
+ disposeOfStyleSheetsEffect();
100
141
  disposeOfElementsEffect();
101
142
  };
102
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dom-updater.js","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom-updater.js","sourceRoot":"","sources":["../src/dom-updater.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,14 @@ export interface AccentedDialog extends HTMLElement {
4
4
  issues: Signal<Array<Issue>> | undefined;
5
5
  element: Element | undefined;
6
6
  showModal: () => void;
7
+ open: boolean;
7
8
  }
8
9
  declare const _default: () => {
9
10
  new (): {
10
- "__#1@#disposeOfEffect": (() => void) | undefined;
11
11
  "__#1@#abortController": AbortController | undefined;
12
12
  issues: Signal<Array<Issue>> | undefined;
13
13
  element: Element | undefined;
14
- "__#1@#elementMutationObserver": MutationObserver | undefined;
14
+ open: boolean;
15
15
  connectedCallback(): void;
16
16
  disconnectedCallback(): void;
17
17
  showModal(): void;
@@ -40,13 +40,14 @@ declare const _default: () => {
40
40
  click(): void;
41
41
  hidePopover(): void;
42
42
  showPopover(): void;
43
- togglePopover(force?: boolean): boolean;
43
+ togglePopover(options?: boolean): boolean;
44
44
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
45
45
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
46
46
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
47
47
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
48
48
  readonly attributes: NamedNodeMap;
49
- readonly classList: DOMTokenList;
49
+ get classList(): DOMTokenList;
50
+ set classList(value: string);
50
51
  className: string;
51
52
  readonly clientHeight: number;
52
53
  readonly clientLeft: number;
@@ -61,7 +62,8 @@ declare const _default: () => {
61
62
  onfullscreenerror: ((this: Element, ev: Event) => any) | null;
62
63
  outerHTML: string;
63
64
  readonly ownerDocument: Document;
64
- readonly part: DOMTokenList;
65
+ get part(): DOMTokenList;
66
+ set part(value: string);
65
67
  readonly prefix: string | null;
66
68
  readonly scrollHeight: number;
67
69
  scrollLeft: number;
@@ -138,7 +140,7 @@ declare const _default: () => {
138
140
  readonly previousSibling: ChildNode | null;
139
141
  textContent: string | null;
140
142
  appendChild<T extends Node>(node: T): T;
141
- cloneNode(deep?: boolean): Node;
143
+ cloneNode(subtree?: boolean): Node;
142
144
  compareDocumentPosition(other: Node): number;
143
145
  contains(other: Node | null): boolean;
144
146
  getRootNode(options?: GetRootNodeOptions): Node;
@@ -200,6 +202,7 @@ declare const _default: () => {
200
202
  ariaPosInSet: string | null;
201
203
  ariaPressed: string | null;
202
204
  ariaReadOnly: string | null;
205
+ ariaRelevant: string | null;
203
206
  ariaRequired: string | null;
204
207
  ariaRoleDescription: string | null;
205
208
  ariaRowCount: string | null;
@@ -241,7 +244,8 @@ declare const _default: () => {
241
244
  replaceChildren(...nodes: (Node | string)[]): void;
242
245
  readonly assignedSlot: HTMLSlotElement | null;
243
246
  readonly attributeStyleMap: StylePropertyMap;
244
- readonly style: CSSStyleDeclaration;
247
+ get style(): CSSStyleDeclaration;
248
+ set style(cssText: string);
245
249
  contentEditable: string;
246
250
  enterKeyHint: string;
247
251
  inputMode: string;
@@ -1 +1 @@
1
- {"version":3,"file":"accented-dialog.d.ts","sourceRoot":"","sources":["../../src/elements/accented-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAMnD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;;;iCA4MqB,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;iCAExB,eAAe,GAAG,SAAS;gBAErC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;iBAE/B,OAAO,GAAG,SAAS;yCAEF,gBAAgB,GAAG,SAAS;;;;qCA0JhC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA1WpC,wBA0XE"}
1
+ {"version":3,"file":"accented-dialog.d.ts","sourceRoot":"","sources":["../../src/elements/accented-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAKnD,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;CACf;;;iCAwOqB,eAAe,GAAG,SAAS;gBAErC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;iBAE/B,OAAO,GAAG,SAAS;cAEtB,OAAO;;;;qCA8HS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxWpC,wBAwXE"}