accented 0.0.0-20250404114312 → 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 (99) hide show
  1. package/README.md +3 -1
  2. package/dist/accented.d.ts.map +1 -1
  3. package/dist/accented.js +5 -3
  4. package/dist/accented.js.map +1 -1
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/dom-updater.d.ts.map +1 -1
  7. package/dist/dom-updater.js +29 -3
  8. package/dist/dom-updater.js.map +1 -1
  9. package/dist/elements/accented-dialog.d.ts +11 -7
  10. package/dist/elements/accented-dialog.d.ts.map +1 -1
  11. package/dist/elements/accented-dialog.js +35 -64
  12. package/dist/elements/accented-dialog.js.map +1 -1
  13. package/dist/elements/accented-trigger.d.ts +9 -5
  14. package/dist/elements/accented-trigger.d.ts.map +1 -1
  15. package/dist/elements/accented-trigger.js +6 -5
  16. package/dist/elements/accented-trigger.js.map +1 -1
  17. package/dist/logger.d.ts.map +1 -1
  18. package/dist/logger.js +4 -1
  19. package/dist/logger.js.map +1 -1
  20. package/dist/scanner.d.ts +2 -2
  21. package/dist/scanner.d.ts.map +1 -1
  22. package/dist/scanner.js +19 -14
  23. package/dist/scanner.js.map +1 -1
  24. package/dist/task-queue.d.ts +2 -2
  25. package/dist/task-queue.d.ts.map +1 -1
  26. package/dist/task-queue.js +2 -1
  27. package/dist/task-queue.js.map +1 -1
  28. package/dist/types.d.ts +25 -3
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js.map +1 -1
  31. package/dist/utils/containing-blocks.d.ts +3 -0
  32. package/dist/utils/containing-blocks.d.ts.map +1 -0
  33. package/dist/utils/containing-blocks.js +46 -0
  34. package/dist/utils/containing-blocks.js.map +1 -0
  35. package/dist/utils/contains.d.ts +2 -0
  36. package/dist/utils/contains.d.ts.map +1 -0
  37. package/dist/utils/contains.js +19 -0
  38. package/dist/utils/contains.js.map +1 -0
  39. package/dist/utils/deduplicate-nodes.d.ts +2 -0
  40. package/dist/utils/deduplicate-nodes.d.ts.map +1 -0
  41. package/dist/utils/deduplicate-nodes.js +5 -0
  42. package/dist/utils/deduplicate-nodes.js.map +1 -0
  43. package/dist/utils/dom-helpers.d.ts +3 -0
  44. package/dist/utils/dom-helpers.d.ts.map +1 -1
  45. package/dist/utils/dom-helpers.js +13 -0
  46. package/dist/utils/dom-helpers.js.map +1 -1
  47. package/dist/utils/ensure-non-empty.d.ts +2 -0
  48. package/dist/utils/ensure-non-empty.d.ts.map +1 -0
  49. package/dist/utils/ensure-non-empty.js +7 -0
  50. package/dist/utils/ensure-non-empty.js.map +1 -0
  51. package/dist/utils/get-element-position.d.ts +8 -0
  52. package/dist/utils/get-element-position.d.ts.map +1 -1
  53. package/dist/utils/get-element-position.js +22 -7
  54. package/dist/utils/get-element-position.js.map +1 -1
  55. package/dist/utils/get-scan-context.d.ts +3 -0
  56. package/dist/utils/get-scan-context.d.ts.map +1 -0
  57. package/dist/utils/get-scan-context.js +28 -0
  58. package/dist/utils/get-scan-context.js.map +1 -0
  59. package/dist/utils/is-node-in-scan-context.d.ts +3 -0
  60. package/dist/utils/is-node-in-scan-context.d.ts.map +1 -0
  61. package/dist/utils/is-node-in-scan-context.js +26 -0
  62. package/dist/utils/is-node-in-scan-context.js.map +1 -0
  63. package/dist/utils/normalize-context.d.ts +3 -0
  64. package/dist/utils/normalize-context.d.ts.map +1 -0
  65. package/dist/utils/normalize-context.js +57 -0
  66. package/dist/utils/normalize-context.js.map +1 -0
  67. package/dist/utils/shadow-dom-aware-mutation-observer.d.ts.map +1 -1
  68. package/dist/utils/update-elements-with-issues.d.ts +10 -4
  69. package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
  70. package/dist/utils/update-elements-with-issues.js +25 -2
  71. package/dist/utils/update-elements-with-issues.js.map +1 -1
  72. package/dist/validate-options.d.ts.map +1 -1
  73. package/dist/validate-options.js +86 -0
  74. package/dist/validate-options.js.map +1 -1
  75. package/package.json +7 -3
  76. package/src/accented.ts +5 -3
  77. package/src/dom-updater.ts +33 -3
  78. package/src/elements/accented-dialog.ts +38 -68
  79. package/src/elements/accented-trigger.ts +6 -5
  80. package/src/logger.ts +9 -1
  81. package/src/scanner.ts +21 -15
  82. package/src/task-queue.ts +6 -4
  83. package/src/types.ts +38 -5
  84. package/src/utils/containing-blocks.ts +57 -0
  85. package/src/utils/contains.test.ts +55 -0
  86. package/src/utils/contains.ts +19 -0
  87. package/src/utils/deduplicate-nodes.ts +3 -0
  88. package/src/utils/dom-helpers.ts +16 -0
  89. package/src/utils/ensure-non-empty.ts +6 -0
  90. package/src/utils/get-element-position.ts +23 -7
  91. package/src/utils/get-scan-context.test.ts +79 -0
  92. package/src/utils/get-scan-context.ts +39 -0
  93. package/src/utils/is-node-in-scan-context.test.ts +70 -0
  94. package/src/utils/is-node-in-scan-context.ts +29 -0
  95. package/src/utils/normalize-context.test.ts +105 -0
  96. package/src/utils/normalize-context.ts +58 -0
  97. package/src/utils/update-elements-with-issues.test.ts +61 -8
  98. package/src/utils/update-elements-with-issues.ts +42 -3
  99. package/src/validate-options.ts +88 -1
package/dist/scanner.js CHANGED
@@ -8,10 +8,11 @@ import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
8
8
  import { getAccentedElementNames, issuesUrl } from './constants.js';
9
9
  import logAndRethrow from './log-and-rethrow.js';
10
10
  import createShadowDOMAwareMutationObserver from './utils/shadow-dom-aware-mutation-observer.js';
11
- export default function createScanner(name, axeContext, axeOptions, throttle, callback) {
11
+ import getScanContext from './utils/get-scan-context.js';
12
+ export default function createScanner(name, context, axeOptions, throttle, callback) {
12
13
  const axeRunningWindowProp = `__${name}_axe_running__`;
13
14
  const win = window;
14
- const taskQueue = new TaskQueue(async () => {
15
+ const taskQueue = new TaskQueue(async (nodes) => {
15
16
  // We may see errors coming from axe-core when Accented is toggled off and on in qiuck succession,
16
17
  // which I've seen happen with hot reloading of a React application.
17
18
  // This window property serves as a circuit breaker for that particular case.
@@ -21,11 +22,10 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
21
22
  try {
22
23
  performance.mark('scan-start');
23
24
  win[axeRunningWindowProp] = true;
25
+ const scanContext = getScanContext(nodes, context);
24
26
  let result;
25
27
  try {
26
- // TODO (https://github.com/pomerantsev/accented/issues/102):
27
- // only run Axe on what's changed, not on the whole axeContext
28
- result = await axe.run(axeContext, {
28
+ result = await axe.run(scanContext, {
29
29
  elementRef: true,
30
30
  // Although axe-core can perform iframe scanning, I haven't succeeded in it,
31
31
  // and the docs suggest that the axe-core script should be explicitly included
@@ -51,7 +51,13 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
51
51
  return;
52
52
  }
53
53
  performance.mark('dom-update-start');
54
- updateElementsWithIssues(extendedElementsWithIssues, result.violations, window, name);
54
+ updateElementsWithIssues({
55
+ extendedElementsWithIssues,
56
+ scanContext,
57
+ violations: result.violations,
58
+ win: window,
59
+ name
60
+ });
55
61
  const domUpdateMeasure = performance.measure('dom-update', 'dom-update-start');
56
62
  const domUpdateDuration = Math.round(domUpdateMeasure.duration);
57
63
  callback({
@@ -59,7 +65,11 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
59
65
  performance: {
60
66
  totalBlockingTime: scanDuration + domUpdateDuration,
61
67
  scan: scanDuration,
62
- domUpdate: domUpdateDuration
68
+ domUpdate: domUpdateDuration,
69
+ // Assuming that the {include, exclude} shape of the context object will be used less often
70
+ // than other variants, we'll output just the `include` array in case nothing is excluded
71
+ // in the scan.
72
+ scanContext: scanContext.exclude.length > 0 ? scanContext : scanContext.include
63
73
  }
64
74
  });
65
75
  }
@@ -68,9 +78,6 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
68
78
  logAndRethrow(error);
69
79
  }
70
80
  }, throttle);
71
- // TODO (https://github.com/pomerantsev/accented/issues/102):
72
- // limit to what's in axeContext,
73
- // if that's an element or array of elements (not a selector).
74
81
  taskQueue.add(document);
75
82
  const accentedElementNames = getAccentedElementNames(name);
76
83
  const mutationObserver = createShadowDOMAwareMutationObserver(name, mutationList => {
@@ -107,15 +114,13 @@ export default function createScanner(name, axeContext, axeOptions, throttle, ca
107
114
  const filteredMutationList = listWithoutAccentedElements.filter(mutationRecord => {
108
115
  return !elementsWithAccentedAttributeChanges.has(mutationRecord.target);
109
116
  });
110
- taskQueue.addMultiple(filteredMutationList.map(mutationRecord => mutationRecord.target));
117
+ const nodes = filteredMutationList.map(mutationRecord => mutationRecord.target);
118
+ taskQueue.addMultiple(nodes);
111
119
  }
112
120
  catch (error) {
113
121
  logAndRethrow(error);
114
122
  }
115
123
  });
116
- // TODO (https://github.com/pomerantsev/accented/issues/102):
117
- // possibly limit the observer to what's in axeContext,
118
- // if that's an element or array of elements (not a selector).
119
124
  mutationObserver.observe(document, {
120
125
  subtree: true,
121
126
  childList: true,
@@ -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,uBAAuB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,oCAAoC,MAAM,+CAA+C,CAAC;AAEjG,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,IAAY,EAAE,UAAsB,EAAE,UAAsB,EAAE,QAA4B,EAAE,QAAkB;IAClJ,MAAM,oBAAoB,GAAG,KAAK,IAAI,gBAAgB,CAAC;IACvD,MAAM,GAAG,GAAwB,MAAM,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAO,KAAK,IAAI,EAAE;QAC/C,kGAAkG;QAClG,oEAAoE;QACpE,6EAA6E;QAC7E,IAAI,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YAEH,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE/B,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;YAEjC,IAAI,MAAM,CAAC;YAEX,IAAI,CAAC;gBACH,6DAA6D;gBAC7D,8DAA8D;gBAC9D,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;oBACjC,UAAU,EAAE,IAAI;oBAChB,4EAA4E;oBAC5E,8EAA8E;oBAC9E,2CAA2C;oBAC3C,mGAAmG;oBACnG,yEAAyE;oBACzE,sHAAsH;oBACtH,OAAO,EAAE,KAAK;oBACd,WAAW,EAAE,CAAC,YAAY,CAAC;oBAC3B,GAAG,UAAU;iBACd,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,wEAAwE;oBACtE,mEAAmE;oBACnE,+DAA+D,SAAS,KAAK,EAC/E,KAAK,CACN,CAAC;gBACF,MAAM,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YAC9B,CAAC;YACD,GAAG,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;YAElC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAErC,wBAAwB,CAAC,0BAA0B,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAEtF,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;YAC/E,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAEhE,QAAQ,CAAC;gBACP,kBAAkB,EAAE,kBAAkB,CAAC,KAAK;gBAC5C,WAAW,EAAE;oBACX,iBAAiB,EAAE,YAAY,GAAG,iBAAiB;oBACnD,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,iBAAiB;iBAC7B;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;YAClC,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,6DAA6D;IAC7D,iCAAiC;IACjC,8DAA8D;IAC9D,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,oCAAoC,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE;QACjF,IAAI,CAAC;YACH,uFAAuF;YACvF,0BAA0B;YAC1B,MAAM,2BAA2B,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;gBACvE,MAAM,kCAAkC,GAAG,cAAc,CAAC,IAAI,KAAK,WAAW;oBAC5E,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;oBACxG,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7G,MAAM,sBAAsB,GAAG,cAAc,CAAC,IAAI,KAAK,YAAY;oBACjE,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9E,OAAO,CAAC,CAAC,kCAAkC,IAAI,sBAAsB,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,IAAI,2BAA2B,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnF,iGAAiG;gBACjG,oBAAoB,EAAE,CAAC;gBAEvB,gEAAgE;gBAChE,0EAA0E;gBAC1E,gFAAgF;gBAChF,uHAAuH;gBACvH,8BAA8B,EAAE,CAAC;YACnC,CAAC;YAED,sFAAsF;YACtF,2EAA2E;YAC3E,yEAAyE;YACzE,kDAAkD;YAClD,MAAM,oCAAoC,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;gBACxG,IAAI,cAAc,CAAC,IAAI,KAAK,YAAY,IAAI,cAAc,CAAC,aAAa,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;oBAC5F,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,EAAE,IAAI,GAAG,EAAQ,CAAC,CAAC;YAEpB,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;gBAC/E,OAAO,CAAC,oCAAoC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,uDAAuD;IACvD,8DAA8D;IAC9D,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE;QACjC,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE;QACV,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { Throttle } from './types';
2
- type TaskCallback = () => void;
2
+ type TaskCallback<T> = (items: Array<T>) => void;
3
3
  export default class TaskQueue<T> {
4
4
  #private;
5
- constructor(asyncCallback: TaskCallback, throttle: Required<Throttle>);
5
+ constructor(asyncCallback: TaskCallback<T>, throttle: Required<Throttle>);
6
6
  addMultiple(items: Array<T>): void;
7
7
  add(item: T): void;
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"task-queue.d.ts","sourceRoot":"","sources":["../src/task-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,KAAK,YAAY,GAAG,MAAM,IAAI,CAAC;AAE/B,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,CAAC;;gBAOlB,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAmCrE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAS3B,GAAG,CAAC,IAAI,EAAE,CAAC;CAGZ"}
1
+ {"version":3,"file":"task-queue.d.ts","sourceRoot":"","sources":["../src/task-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,CAAC;;gBAOlB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAqCxE,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAS3B,GAAG,CAAC,IAAI,EAAE,CAAC;CAGZ"}
@@ -22,9 +22,10 @@ export default class TaskQueue {
22
22
  this.#inRunLoop = false;
23
23
  return;
24
24
  }
25
+ const items = Array.from(this.#items);
25
26
  this.#items.clear();
26
27
  if (this.#asyncCallback) {
27
- await this.#asyncCallback();
28
+ await this.#asyncCallback(items);
28
29
  }
29
30
  await new Promise((resolve) => setTimeout(resolve, this.#throttle.wait));
30
31
  await this.#run();
@@ -1 +1 @@
1
- {"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../src/task-queue.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,SAAS,CAAW;IACpB,cAAc,GAAwB,IAAI,CAAC;IAE3C,MAAM,GAAG,IAAI,GAAG,EAAK,CAAC;IACtB,UAAU,GAAG,KAAK,CAAC;IAEnB,YAAY,aAA2B,EAAE,QAA4B;QACnE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAO;QACT,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../src/task-queue.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,SAAS,CAAW;IACpB,cAAc,GAA2B,IAAI,CAAC;IAE9C,MAAM,GAAG,IAAI,GAAG,EAAK,CAAC;IACtB,UAAU,GAAG,KAAK,CAAC;IAEnB,YAAY,aAA8B,EAAE,QAA4B;QACtE,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAO;QACT,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,CAAC;CACF"}
package/dist/types.d.ts CHANGED
@@ -25,7 +25,21 @@ export type Output = {
25
25
  * */
26
26
  console?: boolean;
27
27
  };
28
- export type AxeContext = axe.ElementContext;
28
+ /**
29
+ * Model context type based on axe.ElementContext,
30
+ * excluding frame selectors (since we don't support scanning iframes).
31
+ */
32
+ export type Selector = Exclude<axe.Selector, axe.LabelledFramesSelector>;
33
+ export type SelectorList = Array<Selector> | NodeList;
34
+ export type ContextProp = Selector | SelectorList;
35
+ export type ContextObject = {
36
+ include: ContextProp;
37
+ exclude?: ContextProp;
38
+ } | {
39
+ exclude: ContextProp;
40
+ include?: ContextProp;
41
+ };
42
+ export type Context = ContextProp | ContextObject;
29
43
  export declare const allowedAxeOptions: readonly ["rules", "runOnly"];
30
44
  export type AxeOptions = Pick<axe.RunOptions, typeof allowedAxeOptions[number]>;
31
45
  type CallbackParams = {
@@ -39,11 +53,14 @@ type CallbackParams = {
39
53
  * It’s further divided into the `scan` and `domUpdate` phases.
40
54
  * * `scan`: how long the `scan` phase took, in milliseconds.
41
55
  * * `domUpdate`: how long the `domUpdate` phase took, in milliseconds.
56
+ * * `scanContext`: nodes that got scanned. Either an array of nodes,
57
+ * or an object with `include` and `exclude` properties (if any nodes were excluded).
42
58
  * */
43
59
  performance: {
44
60
  totalBlockingTime: number;
45
61
  scan: number;
46
62
  domUpdate: number;
63
+ scanContext: ScanContext | Array<Node>;
47
64
  };
48
65
  };
49
66
  export type Callback = (params: CallbackParams) => void;
@@ -64,7 +81,7 @@ export type AccentedOptions = {
64
81
  *
65
82
  * Default: `document`.
66
83
  */
67
- axeContext?: AxeContext;
84
+ context?: Context;
68
85
  /**
69
86
  * The `options` parameter for `axe.run()`.
70
87
  *
@@ -130,7 +147,7 @@ export type Issue = {
130
147
  impact: axe.ImpactValue;
131
148
  };
132
149
  export type BaseElementWithIssues = {
133
- element: HTMLElement;
150
+ element: HTMLElement | SVGElement;
134
151
  rootNode: Node;
135
152
  };
136
153
  export type ElementWithIssues = BaseElementWithIssues & {
@@ -141,9 +158,14 @@ export type ExtendedElementWithIssues = BaseElementWithIssues & {
141
158
  visible: Signal<boolean>;
142
159
  trigger: AccentedTrigger;
143
160
  position: Signal<Position>;
161
+ skipRender: boolean;
144
162
  anchorNameValue: string;
145
163
  scrollableAncestors: Signal<Set<Element>>;
146
164
  id: number;
147
165
  };
166
+ export type ScanContext = {
167
+ include: Array<Node>;
168
+ exclude: Array<Node>;
169
+ };
148
170
  export {};
149
171
  //# sourceMappingURL=types.d.ts.map
@@ -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;;;;;;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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiCA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyDA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,CAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function createsContainingBlock(prop: keyof CSSStyleDeclaration): boolean;
2
+ export declare function initializeContainingBlockSupportSet(): void;
3
+ //# sourceMappingURL=containing-blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containing-blocks.d.ts","sourceRoot":"","sources":["../../src/utils/containing-blocks.ts"],"names":[],"mappings":"AAoCA,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,mBAAmB,WAErE;AAED,wBAAgB,mCAAmC,SAgBlD"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Tests whether a particular combination of CSS property and value on an element
3
+ * makes that element a containing block.
4
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block
5
+ *
6
+ * The function is meant to be run with properties that behave inconsistently across browsers.
7
+ *
8
+ * It's only meant to be used during initialization.
9
+ */
10
+ function testContainingBlockCreation(prop, value) {
11
+ const container = document.createElement('div');
12
+ container.style[prop] = value;
13
+ container.style.position = 'fixed';
14
+ container.style.insetInlineStart = '10px';
15
+ container.style.insetBlockStart = '10px';
16
+ const element = document.createElement('div');
17
+ element.style.position = 'fixed';
18
+ element.style.insetInlineStart = '0';
19
+ element.style.insetBlockStart = '0';
20
+ container.appendChild(element);
21
+ document.body.appendChild(container);
22
+ const containerRect = container.getBoundingClientRect();
23
+ const elementRect = element.getBoundingClientRect();
24
+ container.remove();
25
+ return containerRect.top === elementRect.top && containerRect.left === elementRect.left;
26
+ }
27
+ // This is the set we'll use to store the properties that _may_ create containing blocks
28
+ // (the behavior of the ones that we'll be checking is inconsistent across browsers
29
+ // at the time of writing this comment).
30
+ const propsAffectingContainingBlocks = new Set();
31
+ export function createsContainingBlock(prop) {
32
+ return propsAffectingContainingBlocks.has(prop);
33
+ }
34
+ export function initializeContainingBlockSupportSet() {
35
+ const propsToTest = [
36
+ { prop: 'filter', value: 'blur(1px)' },
37
+ { prop: 'backdropFilter', value: 'blur(1px)' },
38
+ { prop: 'containerType', value: 'size' }
39
+ ];
40
+ for (const { prop, value } of propsToTest) {
41
+ if (testContainingBlockCreation(prop, value)) {
42
+ propsAffectingContainingBlocks.add(prop);
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=containing-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containing-blocks.js","sourceRoot":"","sources":["../../src/utils/containing-blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,SAAS,2BAA2B,CAAsC,IAAO,EAAE,KAA6B;IAC9G,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACnC,SAAS,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;IAC1C,SAAS,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC;IAEzC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;IAEpC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;IACxD,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAEpD,SAAS,CAAC,MAAM,EAAE,CAAC;IAEnB,OAAO,aAAa,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC;AAC1F,CAAC;AAED,wFAAwF;AACxF,mFAAmF;AACnF,wCAAwC;AACxC,MAAM,8BAA8B,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE5E,MAAM,UAAU,sBAAsB,CAAC,IAA+B;IACpE,OAAO,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mCAAmC;IAKjD,MAAM,WAAW,GAAqE;QACpF,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE;QACtC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE;QAC9C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE;KACzC,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;QAC1C,IAAI,2BAA2B,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7C,8BAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function contains(ancestor: Node, descendant: Node): boolean;
2
+ //# sourceMappingURL=contains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.d.ts","sourceRoot":"","sources":["../../src/utils/contains.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAgB1E"}
@@ -0,0 +1,19 @@
1
+ import { isDocumentFragment, isShadowRoot } from './dom-helpers.js';
2
+ export default function contains(ancestor, descendant) {
3
+ if (ancestor.contains(descendant)) {
4
+ return true;
5
+ }
6
+ let rootNode = descendant.getRootNode();
7
+ while (rootNode) {
8
+ if (!(isDocumentFragment(rootNode) && isShadowRoot(rootNode))) {
9
+ return false;
10
+ }
11
+ const host = rootNode.host;
12
+ if (ancestor.contains(host)) {
13
+ return true;
14
+ }
15
+ rootNode = host.getRootNode();
16
+ }
17
+ return false;
18
+ }
19
+ //# sourceMappingURL=contains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.js","sourceRoot":"","sources":["../../src/utils/contains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,QAAc,EAAE,UAAgB;IAC/D,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function deduplicateNodes(nodes: Array<Node>): Array<Node>;
2
+ //# sourceMappingURL=deduplicate-nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deduplicate-nodes.d.ts","sourceRoot":"","sources":["../../src/utils/deduplicate-nodes.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAEhE"}
@@ -0,0 +1,5 @@
1
+ export function deduplicateNodes(nodes) {
2
+ return [...new Set(nodes)];
3
+ ;
4
+ }
5
+ //# sourceMappingURL=deduplicate-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deduplicate-nodes.js","sourceRoot":"","sources":["../../src/utils/deduplicate-nodes.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAAA,CAAC;AAC9B,CAAC"}
@@ -1,6 +1,9 @@
1
+ export declare function isNode(obj: object): obj is Node;
2
+ export declare function isNodeList(obj: object): obj is NodeList;
1
3
  export declare function isElement(node: Node): node is Element;
2
4
  export declare function isDocument(node: Node): node is Document;
3
5
  export declare function isDocumentFragment(node: Node): node is DocumentFragment;
4
6
  export declare function isShadowRoot(documentFragment: DocumentFragment): documentFragment is ShadowRoot;
5
7
  export declare function isHtmlElement(element: Element): element is HTMLElement;
8
+ export declare function isSvgElement(element: Element): element is SVGElement;
6
9
  //# sourceMappingURL=dom-helpers.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"dom-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/dom-helpers.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,IAAI,CAG/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,QAAQ,CAEvD;AAED,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;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,UAAU,CAKpE"}
@@ -1,3 +1,10 @@
1
+ export function isNode(obj) {
2
+ return 'nodeType' in obj && typeof obj.nodeType === 'number' &&
3
+ 'nodeName' in obj && typeof obj.nodeName === 'string';
4
+ }
5
+ export function isNodeList(obj) {
6
+ return Object.prototype.toString.call(obj) === '[object NodeList]';
7
+ }
1
8
  export function isElement(node) {
2
9
  return typeof Node !== 'undefined' && node.nodeType === Node.ELEMENT_NODE;
3
10
  }
@@ -16,4 +23,10 @@ export function isHtmlElement(element) {
16
23
  // This heuristic seems to be the most robust and fastest that I could think of.
17
24
  return element.constructor.name.startsWith('HTML');
18
25
  }
26
+ export function isSvgElement(element) {
27
+ // We can't use instanceof because it may not work across contexts
28
+ // (such as when an element is moved from an iframe).
29
+ // This heuristic seems to be the most robust and fastest that I could think of.
30
+ return element.constructor.name.startsWith('SVG');
31
+ }
19
32
  //# sourceMappingURL=dom-helpers.js.map
@@ -1 +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
+ {"version":3,"file":"dom-helpers.js","sourceRoot":"","sources":["../../src/utils/dom-helpers.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,OAAO,UAAU,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAC1D,UAAU,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC;AACrE,CAAC;AAED,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;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,kEAAkE;IAClE,qDAAqD;IACrD,gFAAgF;IAChF,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export default function ensureNonEmpty<T>(arr: T[]): [T, ...T[]];
2
+ //# sourceMappingURL=ensure-non-empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-non-empty.d.ts","sourceRoot":"","sources":["../../src/utils/ensure-non-empty.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAK/D"}
@@ -0,0 +1,7 @@
1
+ export default function ensureNonEmpty(arr) {
2
+ if (arr.length === 0) {
3
+ throw new Error("Array must not be empty");
4
+ }
5
+ return arr;
6
+ }
7
+ //# sourceMappingURL=ensure-non-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-non-empty.js","sourceRoot":"","sources":["../../src/utils/ensure-non-empty.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAI,GAAQ;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAkB,CAAC;AAC5B,CAAC"}
@@ -1,3 +1,11 @@
1
1
  import type { Position } from '../types';
2
+ /**
3
+ * https://github.com/pomerantsev/accented/issues/116
4
+ *
5
+ * This calculation leads to incorrectly positioned Accented triggers when all of the following are true:
6
+ * * The element is an SVG element.
7
+ * * The element itself, or one of the element's ancestors has a scale or rotate transform.
8
+ * * The browser doesn't support anchor positioning.
9
+ */
2
10
  export default function getElementPosition(element: Element, win: Window): Position;
3
11
  //# sourceMappingURL=get-element-position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-element-position.d.ts","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAyBzC,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAkClF"}
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;AAiCzC;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,CAkClF"}
@@ -1,13 +1,20 @@
1
1
  import { isHtmlElement } from './dom-helpers.js';
2
2
  import getParent from './get-parent.js';
3
+ import { createsContainingBlock } from './containing-blocks.js';
3
4
  // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#identifying_the_containing_block
4
5
  function isContainingBlock(element, win) {
5
6
  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
7
+ const { transform, perspective, contain, contentVisibility, containerType, filter, backdropFilter, willChange } = style;
8
+ const containItems = contain.split(' ');
9
+ const willChangeItems = willChange.split(/\s*,\s*/);
9
10
  return transform !== 'none'
10
- || perspective !== 'none';
11
+ || perspective !== 'none'
12
+ || containItems.some((item) => ['layout', 'paint', 'strict', 'content'].includes(item))
13
+ || contentVisibility === 'auto'
14
+ || (createsContainingBlock('containerType') && containerType !== 'normal')
15
+ || (createsContainingBlock('filter') && filter !== 'none')
16
+ || (createsContainingBlock('backdropFilter') && backdropFilter !== 'none')
17
+ || willChangeItems.some((item) => ['transform', 'perspective', 'contain', 'filter', 'backdrop-filter'].includes(item));
11
18
  }
12
19
  function getNonInitialContainingBlock(element, win) {
13
20
  let currentElement = element;
@@ -19,10 +26,20 @@ function getNonInitialContainingBlock(element, win) {
19
26
  }
20
27
  return null;
21
28
  }
29
+ /**
30
+ * https://github.com/pomerantsev/accented/issues/116
31
+ *
32
+ * This calculation leads to incorrectly positioned Accented triggers when all of the following are true:
33
+ * * The element is an SVG element.
34
+ * * The element itself, or one of the element's ancestors has a scale or rotate transform.
35
+ * * The browser doesn't support anchor positioning.
36
+ */
22
37
  export default function getElementPosition(element, win) {
23
38
  const nonInitialContainingBlock = getNonInitialContainingBlock(element, win);
24
- // If an element has an ancestor whose transform is not 'none',
39
+ // If an element has a containing block as an ancestor,
40
+ // and that containing block is not the <html> element (the initial containing block),
25
41
  // fixed positioning works differently.
42
+ // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_display/Containing_block#effects_of_the_containing_block
26
43
  // https://achrafkassioui.com/blog/position-fixed-and-CSS-transforms/
27
44
  if (nonInitialContainingBlock) {
28
45
  if (isHtmlElement(element)) {
@@ -40,8 +57,6 @@ export default function getElementPosition(element, win) {
40
57
  return { top, left, width, height };
41
58
  }
42
59
  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
60
  const elementRect = element.getBoundingClientRect();
46
61
  const nonInitialContainingBlockRect = nonInitialContainingBlock.getBoundingClientRect();
47
62
  return {
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"get-element-position.js","sourceRoot":"","sources":["../../src/utils/get-element-position.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Context, ScanContext } from '../types';
2
+ export default function getScanContext(nodes: Array<Node>, context: Context): ScanContext;
3
+ //# sourceMappingURL=get-scan-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMrD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CAgCxF"}
@@ -0,0 +1,28 @@
1
+ import contains from './contains.js';
2
+ import { deduplicateNodes } from './deduplicate-nodes.js';
3
+ import isNodeInScanContext from './is-node-in-scan-context.js';
4
+ import normalizeContext from './normalize-context.js';
5
+ export default function getScanContext(nodes, context) {
6
+ const { include: contextInclude, exclude: contextExclude } = normalizeContext(context);
7
+ // Filter only nodes that are included by context (see isNodeInContext above).
8
+ const nodesInContext = nodes.filter(node => isNodeInScanContext(node, {
9
+ include: contextInclude,
10
+ exclude: contextExclude
11
+ }));
12
+ const include = [];
13
+ const exclude = [];
14
+ // Adds all nodesInContext to the include array.
15
+ include.push(...nodesInContext);
16
+ // Now add any included and excluded context nodes that are contained by any of the original nodes.
17
+ for (const node of nodes) {
18
+ const includeDescendants = contextInclude.filter(item => contains(node, item));
19
+ include.push(...includeDescendants);
20
+ const excludeDescendants = contextExclude.filter(item => contains(node, item));
21
+ exclude.push(...excludeDescendants);
22
+ }
23
+ return {
24
+ include: deduplicateNodes(include),
25
+ exclude: deduplicateNodes(exclude)
26
+ };
27
+ }
28
+ //# sourceMappingURL=get-scan-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-scan-context.js","sourceRoot":"","sources":["../../src/utils/get-scan-context.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAkB,EAAE,OAAgB;IACzE,MAAM,EACJ,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,cAAc,EACxB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE9B,8EAA8E;IAC9E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACzC,mBAAmB,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,cAAc;KACxB,CAAC,CACH,CAAC;IAEF,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAEhC,mGAAmG;IACnG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ScanContext } from '../types';
2
+ export default function isNodeInScanContext(node: Node, { include, exclude }: ScanContext): boolean;
3
+ //# sourceMappingURL=is-node-in-scan-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-node-in-scan-context.d.ts","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAc5C,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAYlG"}
@@ -0,0 +1,26 @@
1
+ /* Adapted from https://github.com/dequelabs/axe-core/blob/fd6239bfc97ebc904044f93f68d7e49137f744ad/lib/core/utils/is-node-in-context.js */
2
+ import contains from './contains.js';
3
+ import ensureNonEmpty from './ensure-non-empty.js';
4
+ function getDeepest(nodes) {
5
+ let deepest = nodes[0];
6
+ for (const node of nodes.slice(1)) {
7
+ if (!contains(node, deepest)) {
8
+ deepest = node;
9
+ }
10
+ }
11
+ return deepest;
12
+ }
13
+ export default function isNodeInScanContext(node, { include, exclude }) {
14
+ const filteredInclude = include.filter(includeNode => contains(includeNode, node));
15
+ if (filteredInclude.length === 0) {
16
+ return false;
17
+ }
18
+ const filteredExclude = exclude.filter(excludeNode => contains(excludeNode, node));
19
+ if (filteredExclude.length === 0) {
20
+ return true;
21
+ }
22
+ const deepestInclude = getDeepest(ensureNonEmpty(filteredInclude));
23
+ const deepestExclude = getDeepest(ensureNonEmpty(filteredExclude));
24
+ return contains(deepestExclude, deepestInclude);
25
+ }
26
+ //# sourceMappingURL=is-node-in-scan-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-node-in-scan-context.js","sourceRoot":"","sources":["../../src/utils/is-node-in-scan-context.ts"],"names":[],"mappings":"AAAA,2IAA2I;AAG3I,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,cAAc,MAAM,uBAAuB,CAAC;AAEnD,SAAS,UAAU,CAAC,KAAwB;IAC1C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,IAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAe;IACvF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IACnE,OAAO,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Context, ScanContext } from '../types';
2
+ export default function normalizeContext(context: Context): ScanContext;
3
+ //# sourceMappingURL=normalize-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-context.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAyB,WAAW,EAAE,MAAM,UAAU,CAAC;AAuC5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAkBtE"}