accented 0.0.0-20250424114613 → 0.0.0-20250701143712
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -193
- package/dist/accented.d.ts +7 -7
- package/dist/accented.d.ts.map +1 -1
- package/dist/accented.js +30 -27
- package/dist/accented.js.map +1 -1
- package/dist/common/tokens.d.ts +2 -0
- package/dist/common/tokens.d.ts.map +1 -0
- package/dist/common/tokens.js +2 -0
- package/dist/common/tokens.js.map +1 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/dom-updater.d.ts +1 -1
- package/dist/dom-updater.d.ts.map +1 -1
- package/dist/dom-updater.js +14 -13
- package/dist/dom-updater.js.map +1 -1
- package/dist/elements/accented-dialog.d.ts +2 -3
- package/dist/elements/accented-dialog.d.ts.map +1 -1
- package/dist/elements/accented-dialog.js +14 -8
- package/dist/elements/accented-dialog.js.map +1 -1
- package/dist/elements/accented-trigger.d.ts +3 -4
- package/dist/elements/accented-trigger.d.ts.map +1 -1
- package/dist/elements/accented-trigger.js +10 -10
- package/dist/elements/accented-trigger.js.map +1 -1
- package/dist/fullscreen-listener.d.ts +1 -1
- package/dist/fullscreen-listener.d.ts.map +1 -1
- package/dist/fullscreen-listener.js +3 -4
- package/dist/fullscreen-listener.js.map +1 -1
- package/dist/intersection-observer.d.ts +1 -1
- package/dist/intersection-observer.d.ts.map +1 -1
- package/dist/intersection-observer.js +12 -6
- package/dist/intersection-observer.js.map +1 -1
- package/dist/log-and-rethrow.d.ts +1 -1
- package/dist/log-and-rethrow.d.ts.map +1 -1
- package/dist/log-and-rethrow.js +2 -3
- package/dist/log-and-rethrow.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -2
- package/dist/logger.js.map +1 -1
- package/dist/register-elements.d.ts +1 -1
- package/dist/register-elements.d.ts.map +1 -1
- package/dist/register-elements.js +6 -7
- package/dist/register-elements.js.map +1 -1
- package/dist/resize-listener.d.ts +1 -1
- package/dist/resize-listener.d.ts.map +1 -1
- package/dist/resize-listener.js +3 -4
- package/dist/resize-listener.js.map +1 -1
- package/dist/scanner.d.ts +2 -2
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +36 -36
- package/dist/scanner.js.map +1 -1
- package/dist/scroll-listeners.d.ts +1 -1
- package/dist/scroll-listeners.d.ts.map +1 -1
- package/dist/scroll-listeners.js +3 -4
- package/dist/scroll-listeners.js.map +1 -1
- package/dist/state.d.ts +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -5
- package/dist/state.js.map +1 -1
- package/dist/task-queue.d.ts +2 -2
- package/dist/task-queue.d.ts.map +1 -1
- package/dist/task-queue.js +1 -1
- package/dist/task-queue.js.map +1 -1
- package/dist/types.d.ts +102 -46
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/are-elements-with-issues-equal.d.ts +2 -2
- package/dist/utils/are-elements-with-issues-equal.d.ts.map +1 -1
- package/dist/utils/are-elements-with-issues-equal.js +3 -3
- package/dist/utils/are-elements-with-issues-equal.js.map +1 -1
- package/dist/utils/are-issue-sets-equal.d.ts +2 -2
- package/dist/utils/are-issue-sets-equal.d.ts.map +1 -1
- package/dist/utils/are-issue-sets-equal.js +3 -3
- package/dist/utils/are-issue-sets-equal.js.map +1 -1
- package/dist/utils/containing-blocks.d.ts.map +1 -1
- package/dist/utils/containing-blocks.js +1 -1
- package/dist/utils/containing-blocks.js.map +1 -1
- package/dist/utils/contains.d.ts +1 -1
- package/dist/utils/contains.d.ts.map +1 -1
- package/dist/utils/contains.js +1 -1
- package/dist/utils/contains.js.map +1 -1
- package/dist/utils/deduplicate-nodes.js +0 -1
- package/dist/utils/deduplicate-nodes.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +1 -1
- package/dist/utils/deep-merge.d.ts.map +1 -1
- package/dist/utils/deep-merge.js +8 -5
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/utils/dom-helpers.d.ts.map +1 -1
- package/dist/utils/dom-helpers.js +4 -2
- package/dist/utils/dom-helpers.js.map +1 -1
- package/dist/utils/ensure-non-empty.d.ts +1 -1
- package/dist/utils/ensure-non-empty.d.ts.map +1 -1
- package/dist/utils/ensure-non-empty.js +2 -2
- package/dist/utils/ensure-non-empty.js.map +1 -1
- package/dist/utils/get-element-html.d.ts +1 -1
- package/dist/utils/get-element-html.d.ts.map +1 -1
- package/dist/utils/get-element-html.js +4 -2
- package/dist/utils/get-element-html.js.map +1 -1
- package/dist/utils/get-element-position.d.ts +2 -2
- package/dist/utils/get-element-position.d.ts.map +1 -1
- package/dist/utils/get-element-position.js +21 -25
- package/dist/utils/get-element-position.js.map +1 -1
- package/dist/utils/get-parent.d.ts +1 -1
- package/dist/utils/get-parent.d.ts.map +1 -1
- package/dist/utils/get-parent.js +1 -1
- package/dist/utils/get-parent.js.map +1 -1
- package/dist/utils/get-scan-context.d.ts +2 -2
- package/dist/utils/get-scan-context.d.ts.map +1 -1
- package/dist/utils/get-scan-context.js +9 -9
- package/dist/utils/get-scan-context.js.map +1 -1
- package/dist/utils/get-scrollable-ancestors.d.ts +1 -1
- package/dist/utils/get-scrollable-ancestors.d.ts.map +1 -1
- package/dist/utils/get-scrollable-ancestors.js +5 -5
- package/dist/utils/get-scrollable-ancestors.js.map +1 -1
- package/dist/utils/is-node-in-scan-context.d.ts +2 -2
- package/dist/utils/is-node-in-scan-context.d.ts.map +1 -1
- package/dist/utils/is-node-in-scan-context.js +5 -5
- package/dist/utils/is-node-in-scan-context.js.map +1 -1
- package/dist/utils/is-non-empty.d.ts +2 -0
- package/dist/utils/is-non-empty.d.ts.map +1 -0
- package/dist/utils/is-non-empty.js +4 -0
- package/dist/utils/is-non-empty.js.map +1 -0
- package/dist/utils/normalize-context.d.ts +2 -2
- package/dist/utils/normalize-context.d.ts.map +1 -1
- package/dist/utils/normalize-context.js +10 -8
- package/dist/utils/normalize-context.js.map +1 -1
- package/dist/utils/recalculate-positions.d.ts +1 -1
- package/dist/utils/recalculate-positions.d.ts.map +1 -1
- package/dist/utils/recalculate-positions.js +5 -5
- package/dist/utils/recalculate-positions.js.map +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.d.ts +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.d.ts.map +1 -1
- package/dist/utils/recalculate-scrollable-ancestors.js +4 -4
- package/dist/utils/recalculate-scrollable-ancestors.js.map +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.d.ts.map +1 -1
- package/dist/utils/shadow-dom-aware-mutation-observer.js +19 -22
- package/dist/utils/shadow-dom-aware-mutation-observer.js.map +1 -1
- package/dist/utils/supports-anchor-positioning.d.ts +1 -1
- package/dist/utils/supports-anchor-positioning.d.ts.map +1 -1
- package/dist/utils/supports-anchor-positioning.js +1 -1
- package/dist/utils/supports-anchor-positioning.js.map +1 -1
- package/dist/utils/transform-violations.d.ts +2 -2
- package/dist/utils/transform-violations.d.ts.map +1 -1
- package/dist/utils/transform-violations.js +9 -9
- package/dist/utils/transform-violations.js.map +1 -1
- package/dist/utils/update-elements-with-issues.d.ts +3 -3
- package/dist/utils/update-elements-with-issues.d.ts.map +1 -1
- package/dist/utils/update-elements-with-issues.js +34 -29
- package/dist/utils/update-elements-with-issues.js.map +1 -1
- package/dist/validate-options.d.ts +2 -2
- package/dist/validate-options.d.ts.map +1 -1
- package/dist/validate-options.js +24 -23
- package/dist/validate-options.js.map +1 -1
- package/package.json +7 -4
- package/src/accented.test.ts +2 -2
- package/src/accented.ts +39 -32
- package/src/common/tokens.ts +1 -0
- package/src/constants.ts +1 -1
- package/src/dom-updater.ts +26 -19
- package/src/elements/accented-dialog.ts +69 -43
- package/src/elements/accented-trigger.ts +54 -43
- package/src/fullscreen-listener.ts +15 -11
- package/src/intersection-observer.ts +27 -16
- package/src/log-and-rethrow.ts +2 -3
- package/src/logger.ts +8 -6
- package/src/register-elements.ts +7 -7
- package/src/resize-listener.ts +15 -11
- package/src/scanner.ts +66 -50
- package/src/scroll-listeners.ts +27 -19
- package/src/state.ts +24 -21
- package/src/task-queue.test.ts +5 -4
- package/src/task-queue.ts +2 -2
- package/src/types.ts +151 -95
- package/src/utils/are-elements-with-issues-equal.ts +7 -5
- package/src/utils/are-issue-sets-equal.test.ts +10 -6
- package/src/utils/are-issue-sets-equal.ts +8 -6
- package/src/utils/containing-blocks.ts +6 -3
- package/src/utils/contains.test.ts +2 -2
- package/src/utils/contains.ts +1 -1
- package/src/utils/deduplicate-nodes.ts +1 -1
- package/src/utils/deep-merge.test.ts +8 -1
- package/src/utils/deep-merge.ts +14 -8
- package/src/utils/dom-helpers.ts +6 -2
- package/src/utils/ensure-non-empty.ts +2 -2
- package/src/utils/get-element-html.ts +4 -2
- package/src/utils/get-element-position.ts +37 -24
- package/src/utils/get-parent.ts +1 -1
- package/src/utils/get-scan-context.test.ts +14 -8
- package/src/utils/get-scan-context.ts +12 -15
- package/src/utils/get-scrollable-ancestors.ts +8 -5
- package/src/utils/is-node-in-scan-context.test.ts +3 -3
- package/src/utils/is-node-in-scan-context.ts +6 -6
- package/src/utils/is-non-empty.ts +3 -0
- package/src/utils/normalize-context.test.ts +9 -9
- package/src/utils/normalize-context.ts +17 -10
- package/src/utils/recalculate-positions.ts +5 -5
- package/src/utils/recalculate-scrollable-ancestors.ts +4 -4
- package/src/utils/shadow-dom-aware-mutation-observer.ts +21 -24
- package/src/utils/supports-anchor-positioning.ts +3 -3
- package/src/utils/transform-violations.test.ts +22 -20
- package/src/utils/transform-violations.ts +14 -10
- package/src/utils/update-elements-with-issues.test.ts +49 -49
- package/src/utils/update-elements-with-issues.ts +96 -71
- package/src/validate-options.ts +91 -38
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import getElementHtml from '../utils/get-element-html.js';
|
|
2
1
|
import { accentedUrl } from '../constants.js';
|
|
3
|
-
import logAndRethrow from '../log-and-rethrow.js';
|
|
2
|
+
import { logAndRethrow } from '../log-and-rethrow.js';
|
|
3
|
+
import { getElementHtml } from '../utils/get-element-html.js';
|
|
4
|
+
import { isNonEmpty } from '../utils/is-non-empty.js';
|
|
4
5
|
// We want Accented to not throw an error in Node, and use static imports,
|
|
5
6
|
// so we can't export `class extends HTMLElement` because HTMLElement is not available in Node.
|
|
6
|
-
export
|
|
7
|
+
export const getAccentedDialog = () => {
|
|
7
8
|
const dialogTemplate = document.createElement('template');
|
|
8
9
|
dialogTemplate.innerHTML = `
|
|
9
10
|
<dialog dir="ltr" lang="en" aria-labelledby="title">
|
|
@@ -232,8 +233,8 @@ export default () => {
|
|
|
232
233
|
element;
|
|
233
234
|
open = false;
|
|
234
235
|
constructor() {
|
|
236
|
+
super();
|
|
235
237
|
try {
|
|
236
|
-
super();
|
|
237
238
|
this.attachShadow({ mode: 'open' });
|
|
238
239
|
const content = dialogTemplate.content.cloneNode(true);
|
|
239
240
|
if (this.shadowRoot) {
|
|
@@ -289,15 +290,18 @@ export default () => {
|
|
|
289
290
|
const impact = issueContent.querySelector('.impact');
|
|
290
291
|
const description = issueContent.querySelector('.description');
|
|
291
292
|
if (title && impact && description) {
|
|
292
|
-
title.textContent = issue.title
|
|
293
|
+
title.textContent = `${issue.title} (${issue.id})`;
|
|
293
294
|
title.href = issue.url;
|
|
294
|
-
impact.textContent =
|
|
295
|
+
impact.textContent = `User impact: ${issue.impact}`;
|
|
295
296
|
impact.setAttribute('data-impact', String(issue.impact));
|
|
296
297
|
const descriptionItems = issue.description.split(/\n\s*/);
|
|
297
298
|
const descriptionContent = descriptionTemplate.content.cloneNode(true);
|
|
298
299
|
const descriptionTitle = descriptionContent.querySelector('span');
|
|
299
300
|
const descriptionList = descriptionContent.querySelector('ul');
|
|
300
|
-
if (descriptionTitle &&
|
|
301
|
+
if (descriptionTitle &&
|
|
302
|
+
descriptionList &&
|
|
303
|
+
isNonEmpty(descriptionItems) &&
|
|
304
|
+
descriptionItems.length > 1) {
|
|
301
305
|
descriptionTitle.textContent = descriptionItems[0];
|
|
302
306
|
for (const descriptionItem of descriptionItems.slice(1)) {
|
|
303
307
|
const li = document.createElement('li');
|
|
@@ -353,7 +357,9 @@ export default () => {
|
|
|
353
357
|
}
|
|
354
358
|
#onDialogClick(event) {
|
|
355
359
|
const dialog = event.currentTarget;
|
|
356
|
-
if (!dialog ||
|
|
360
|
+
if (!dialog ||
|
|
361
|
+
typeof dialog.getBoundingClientRect !== 'function' ||
|
|
362
|
+
typeof dialog.close !== 'function') {
|
|
357
363
|
return;
|
|
358
364
|
}
|
|
359
365
|
const rect = dialog.getBoundingClientRect();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented-dialog.js","sourceRoot":"","sources":["../../src/elements/accented-dialog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accented-dialog.js","sourceRoot":"","sources":["../../src/elements/accented-dialog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAStD,0EAA0E;AAC1E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1D,cAAc,CAAC,SAAS,GAAG;;;;;;;;;;;;;qBAaR,WAAW;;;;;;GAM7B,CAAC;IAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACzD,aAAa,CAAC,SAAS,GAAG;;;;;;GAMzB,CAAC;IAEF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/D,mBAAmB,CAAC,SAAS,GAAG;;;GAG/B,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;IACvC,UAAU,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0LtB,CAAC,CAAC;IAEH,OAAO,KAAM,SAAQ,WAAW;QAC9B,gBAAgB,CAA8B;QAE9C,MAAM,CAAmC;QAEzC,OAAO,CAAsB;QAE7B,IAAI,GAAG,KAAK,CAAC;QAEb;YACE,KAAK,EAAE,CAAC;YACR,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACpC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,iBAAiB;YACf,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;oBAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAClD,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC9C,WAAW,EAAE,gBAAgB,CAC3B,OAAO,EACP,GAAG,EAAE;wBACH,IAAI,CAAC;4BACH,MAAM,EAAE,KAAK,EAAE,CAAC;wBAClB,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,aAAa,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CACzC,CAAC;oBAEF,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,CAAC,KAAK,EAAE,EAAE;wBACR,IAAI,CAAC;4BACH,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBAC7B,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,aAAa,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CACzC,CAAC;oBAEF,MAAM,EAAE,gBAAgB,CACtB,SAAS,EACT,CAAC,KAAK,EAAE,EAAE;wBACR,IAAI,CAAC;4BACH,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gCAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;4BAC1B,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,aAAa,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CACzC,CAAC;oBAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBACjC,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;wBACvD,IAAI,UAAU,EAAE,CAAC;4BACf,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;4BAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gCAC3B,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;gCACtE,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gCAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gCACrD,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gCAC/D,IAAI,KAAK,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;oCACnC,KAAK,CAAC,WAAW,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,GAAG,CAAC;oCACnD,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;oCAEvB,MAAM,CAAC,WAAW,GAAG,gBAAgB,KAAK,CAAC,MAAM,EAAE,CAAC;oCACpD,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oCAEzD,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oCAC1D,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;oCAClF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oCAClE,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oCAC/D,IACE,gBAAgB;wCAChB,eAAe;wCACf,UAAU,CAAC,gBAAgB,CAAC;wCAC5B,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;wCACD,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;wCACnD,KAAK,MAAM,eAAe,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;4CACxD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;4CACxC,EAAE,CAAC,WAAW,GAAG,eAAe,CAAC;4CACjC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wCAClC,CAAC;wCACD,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;oCAC9C,CAAC;gCACH,CAAC;gCACD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;4BACvC,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACjB,MAAM,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;wBACvE,IAAI,oBAAoB,EAAE,CAAC;4BACzB,oBAAoB,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAClE,CAAC;oBACH,CAAC;oBAED,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;wBACH,IAAI,CAAC;4BACH,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;4BAClB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBACzC,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,aAAa,CAAC,KAAK,CAAC,CAAC;wBACvB,CAAC;oBACH,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CACzC,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,oBAAoB;YAClB,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,SAAS;YACP,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACvD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,cAAc,CAAC,KAAiB;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,aAAkC,CAAC;YACxD,IACE,CAAC,MAAM;gBACP,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;gBAClD,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAClC,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC5C,MAAM,cAAc,GAClB,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI;gBAC1B,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK;gBAC3B,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG;gBACzB,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { AccentedDialog } from './accented-dialog';
|
|
2
|
-
import type { Position } from '../types';
|
|
3
1
|
import type { Signal } from '@preact/signals-core';
|
|
2
|
+
import type { Position } from '../types.ts';
|
|
3
|
+
import type { AccentedDialog } from './accented-dialog.ts';
|
|
4
4
|
export interface AccentedTrigger extends HTMLElement {
|
|
5
5
|
element: Element | undefined;
|
|
6
6
|
dialog: AccentedDialog | undefined;
|
|
7
7
|
position: Signal<Position> | undefined;
|
|
8
8
|
visible: Signal<boolean> | undefined;
|
|
9
9
|
}
|
|
10
|
-
declare const
|
|
10
|
+
export declare const getAccentedTrigger: (name: string) => {
|
|
11
11
|
new (): {
|
|
12
12
|
"__#2@#abortController": AbortController | undefined;
|
|
13
13
|
"__#2@#dialogCloseAbortController": AbortController | undefined;
|
|
@@ -361,5 +361,4 @@ declare const _default: (name: string) => {
|
|
|
361
361
|
focus(options?: FocusOptions): void;
|
|
362
362
|
};
|
|
363
363
|
};
|
|
364
|
-
export default _default;
|
|
365
364
|
//# sourceMappingURL=accented-trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented-trigger.d.ts","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accented-trigger.d.ts","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACtC;AAID,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM;;iCAwEzB,eAAe,GAAG,SAAS;4CAEhB,eAAe,GAAG,SAAS;yCAE9B,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;2CAEtB,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;yCAE1B,gBAAgB,GAAG,SAAS;iBAE7C,OAAO,GAAG,SAAS;gBAEpB,cAAc,GAAG,SAAS;kBAExB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;iBAE7B,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJvC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { effect } from '@preact/signals-core';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
2
|
+
import { logAndRethrow } from '../log-and-rethrow.js';
|
|
3
|
+
import { supportsAnchorPositioning } from '../utils/supports-anchor-positioning.js';
|
|
4
4
|
// We want Accented to not throw an error in Node, and use static imports,
|
|
5
5
|
// so we can't export `class extends HTMLElement` because HTMLElement is not available in Node.
|
|
6
|
-
export
|
|
6
|
+
export const getAccentedTrigger = (name) => {
|
|
7
7
|
const template = document.createElement('template');
|
|
8
8
|
// I initially tried creating a CSSStyelSheet object with styles instead of having a <style> element in the template,
|
|
9
9
|
// but that led to a hard-to-catch layout bug in Safari in CI that caused a test to fail.
|
|
@@ -21,8 +21,6 @@ export default (name) => {
|
|
|
21
21
|
inset-block-start: anchor(self-start) !important;
|
|
22
22
|
inset-block-end: anchor(self-end) !important;
|
|
23
23
|
|
|
24
|
-
position-visibility: anchors-visible !important;
|
|
25
|
-
|
|
26
24
|
/* Revert potential effects of white-space: pre; set on a trigger's ancestor. */
|
|
27
25
|
white-space: normal !important;
|
|
28
26
|
|
|
@@ -32,6 +30,8 @@ export default (name) => {
|
|
|
32
30
|
#trigger {
|
|
33
31
|
pointer-events: auto;
|
|
34
32
|
|
|
33
|
+
user-select: none;
|
|
34
|
+
|
|
35
35
|
margin-inline-start: auto;
|
|
36
36
|
margin-inline-end: 4px;
|
|
37
37
|
margin-block-start: 4px;
|
|
@@ -83,8 +83,8 @@ export default (name) => {
|
|
|
83
83
|
position;
|
|
84
84
|
visible;
|
|
85
85
|
constructor() {
|
|
86
|
+
super();
|
|
86
87
|
try {
|
|
87
|
-
super();
|
|
88
88
|
this.attachShadow({ mode: 'open' });
|
|
89
89
|
const content = template.content.cloneNode(true);
|
|
90
90
|
if (this.shadowRoot) {
|
|
@@ -114,7 +114,7 @@ export default (name) => {
|
|
|
114
114
|
});
|
|
115
115
|
if (this.element) {
|
|
116
116
|
this.#elementMutationObserver.observe(this.element, {
|
|
117
|
-
attributes: true
|
|
117
|
+
attributes: true,
|
|
118
118
|
});
|
|
119
119
|
}
|
|
120
120
|
this.#abortController = new AbortController();
|
|
@@ -159,10 +159,10 @@ export default (name) => {
|
|
|
159
159
|
this.style.setProperty('height', `${position.height}px`, 'important');
|
|
160
160
|
}
|
|
161
161
|
});
|
|
162
|
-
this.#disposeOfVisibilityEffect = effect(() => {
|
|
163
|
-
this.style.setProperty('visibility', this.visible?.value ? 'visible' : 'hidden', 'important');
|
|
164
|
-
});
|
|
165
162
|
}
|
|
163
|
+
this.#disposeOfVisibilityEffect = effect(() => {
|
|
164
|
+
this.style.setProperty('visibility', this.visible?.value ? 'visible' : 'hidden', 'important');
|
|
165
|
+
});
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accented-trigger.js","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accented-trigger.js","sourceRoot":"","sources":["../../src/elements/accented-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function setupResizeListener(): () => void;
|
|
2
2
|
//# sourceMappingURL=fullscreen-listener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen-listener.d.ts","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"fullscreen-listener.d.ts","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,eAiBlC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import logAndRethrow from './log-and-rethrow.js';
|
|
2
|
-
import recalculatePositions from './utils/recalculate-positions.js';
|
|
3
|
-
export
|
|
1
|
+
import { logAndRethrow } from './log-and-rethrow.js';
|
|
2
|
+
import { recalculatePositions } from './utils/recalculate-positions.js';
|
|
3
|
+
export function setupResizeListener() {
|
|
4
4
|
const abortController = new AbortController();
|
|
5
5
|
window.addEventListener('fullscreenchange', () => {
|
|
6
6
|
try {
|
|
@@ -14,5 +14,4 @@ export default function setupResizeListener() {
|
|
|
14
14
|
abortController.abort();
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
;
|
|
18
17
|
//# sourceMappingURL=fullscreen-listener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen-listener.js","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"fullscreen-listener.js","sourceRoot":"","sources":["../src/fullscreen-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,UAAU,mBAAmB;IACjC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CACrB,kBAAkB,EAClB,GAAG,EAAE;QACH,IAAI,CAAC;YACH,oBAAoB,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CACnC,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection-observer.d.ts","sourceRoot":"","sources":["../src/intersection-observer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intersection-observer.d.ts","sourceRoot":"","sources":["../src/intersection-observer.ts"],"names":[],"mappings":"AAKA,wBAAgB,yBAAyB;;;EAiCxC"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
import logAndRethrow from './log-and-rethrow.js';
|
|
1
|
+
import { logAndRethrow } from './log-and-rethrow.js';
|
|
2
2
|
import { extendedElementsWithIssues } from './state.js';
|
|
3
|
-
import getElementPosition from './utils/get-element-position.js';
|
|
4
|
-
|
|
3
|
+
import { getElementPosition } from './utils/get-element-position.js';
|
|
4
|
+
import { supportsAnchorPositioning } from './utils/supports-anchor-positioning.js';
|
|
5
|
+
export function setupIntersectionObserver() {
|
|
5
6
|
const intersectionObserver = new IntersectionObserver((entries) => {
|
|
6
7
|
try {
|
|
7
8
|
for (const entry of entries) {
|
|
8
|
-
const extendedElementWithIssues = extendedElementsWithIssues.value.find(el => el.element === entry.target);
|
|
9
|
+
const extendedElementWithIssues = extendedElementsWithIssues.value.find((el) => el.element === entry.target);
|
|
9
10
|
if (extendedElementWithIssues) {
|
|
11
|
+
// We initially treated setting visibility in the intersection observer
|
|
12
|
+
// as a fallback option for browsers that don't support `position-visibility`,
|
|
13
|
+
// but then we realized that this `position-visibility` actually works
|
|
14
|
+
// in an unexpected way when the container has `overflow: visible`.
|
|
15
|
+
// So now we always set visibility in the intersection observer.
|
|
10
16
|
extendedElementWithIssues.visible.value = entry.isIntersecting;
|
|
11
|
-
if (entry.isIntersecting) {
|
|
17
|
+
if (entry.isIntersecting && !supportsAnchorPositioning(window)) {
|
|
12
18
|
extendedElementWithIssues.position.value = getElementPosition(entry.target, window);
|
|
13
19
|
}
|
|
14
20
|
}
|
|
@@ -22,7 +28,7 @@ export default function setupIntersectionObserver() {
|
|
|
22
28
|
intersectionObserver,
|
|
23
29
|
disconnect: () => {
|
|
24
30
|
intersectionObserver.disconnect();
|
|
25
|
-
}
|
|
31
|
+
},
|
|
26
32
|
};
|
|
27
33
|
}
|
|
28
34
|
//# sourceMappingURL=intersection-observer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersection-observer.js","sourceRoot":"","sources":["../src/intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"intersection-observer.js","sourceRoot":"","sources":["../src/intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,MAAM,UAAU,yBAAyB;IACvC,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CACnD,CAAC,OAAO,EAAE,EAAE;QACV,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CACrE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,CACpC,CAAC;gBACF,IAAI,yBAAyB,EAAE,CAAC;oBAC9B,uEAAuE;oBACvE,8EAA8E;oBAC9E,sEAAsE;oBACtE,mEAAmE;oBACnE,gEAAgE;oBAChE,yBAAyB,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC;oBAC/D,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC/D,yBAAyB,CAAC,QAAQ,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,EAAE,SAAS,EAAE,CAAC,EAAE,CACjB,CAAC;IAEF,OAAO;QACL,oBAAoB;QACpB,UAAU,EAAE,GAAG,EAAE;YACf,oBAAoB,CAAC,UAAU,EAAE,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function logAndRethrow(error: unknown): void;
|
|
2
2
|
//# sourceMappingURL=log-and-rethrow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-and-rethrow.d.ts","sourceRoot":"","sources":["../src/log-and-rethrow.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"log-and-rethrow.d.ts","sourceRoot":"","sources":["../src/log-and-rethrow.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,QAK3C"}
|
package/dist/log-and-rethrow.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { issuesUrl } from './constants.js';
|
|
2
|
-
export
|
|
3
|
-
console.error(`Accented threw an error (see below). Try updating your browser to the latest version.
|
|
4
|
-
`If you’re still seeing the error, file an issue at ${issuesUrl}.`);
|
|
2
|
+
export function logAndRethrow(error) {
|
|
3
|
+
console.error(`Accented threw an error (see below). Try updating your browser to the latest version. If you’re still seeing the error, file an issue at ${issuesUrl}.`);
|
|
5
4
|
throw error;
|
|
6
5
|
}
|
|
7
6
|
//# sourceMappingURL=log-and-rethrow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-and-rethrow.js","sourceRoot":"","sources":["../src/log-and-rethrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,
|
|
1
|
+
{"version":3,"file":"log-and-rethrow.js","sourceRoot":"","sources":["../src/log-and-rethrow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CAAC,KAAK,CACX,4IAA4I,SAAS,GAAG,CACzJ,CAAC;IACF,MAAM,KAAK,CAAC;AACd,CAAC"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function createLogger(): () => void;
|
|
2
2
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AASA,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AASA,wBAAgB,YAAY,eA0B3B"}
|
package/dist/logger.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { effect } from '@preact/signals-core';
|
|
2
|
-
import { elementsWithIssues, enabled } from './state.js';
|
|
3
2
|
import { accentedUrl } from './constants.js';
|
|
3
|
+
import { elementsWithIssues, enabled } from './state.js';
|
|
4
4
|
function filterPropsForOutput(elements) {
|
|
5
5
|
return elements.map(({ element, issues }) => ({ element, issues }));
|
|
6
6
|
}
|
|
7
|
-
export
|
|
7
|
+
export function createLogger() {
|
|
8
8
|
let firstRun = true;
|
|
9
9
|
return effect(() => {
|
|
10
10
|
if (!enabled.value) {
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGzD,SAAS,oBAAoB,CAAC,QAAkC;IAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC;IAEpB,OAAO,MAAM,CAAC,GAAG,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC;QACrD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAChD,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EACxC,CAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,GAAG,UAAU,uBAAuB,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,YAAY,WAAW,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,WAAW,MAAM,EAC9J,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAC/C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,WAAW,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function registerElements(name: string): void;
|
|
2
2
|
//# sourceMappingURL=register-elements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-elements.d.ts","sourceRoot":"","sources":["../src/register-elements.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"register-elements.d.ts","sourceRoot":"","sources":["../src/register-elements.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAiBnD"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
export
|
|
1
|
+
import { getAccentedDialog } from './elements/accented-dialog.js';
|
|
2
|
+
import { getAccentedTrigger } from './elements/accented-trigger.js';
|
|
3
|
+
export function registerElements(name) {
|
|
4
4
|
const elements = [
|
|
5
5
|
{
|
|
6
6
|
elementName: `${name}-trigger`,
|
|
7
|
-
Component: getAccentedTrigger(name)
|
|
7
|
+
Component: getAccentedTrigger(name),
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
elementName: `${name}-dialog`,
|
|
11
|
-
Component: getAccentedDialog()
|
|
12
|
-
}
|
|
11
|
+
Component: getAccentedDialog(),
|
|
12
|
+
},
|
|
13
13
|
];
|
|
14
14
|
for (const { elementName, Component } of elements) {
|
|
15
15
|
if (!customElements.get(elementName)) {
|
|
@@ -17,5 +17,4 @@ export default function registerElements(name) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
;
|
|
21
20
|
//# sourceMappingURL=register-elements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-elements.js","sourceRoot":"","sources":["../src/register-elements.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"register-elements.js","sourceRoot":"","sources":["../src/register-elements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG;QACf;YACE,WAAW,EAAE,GAAG,IAAI,UAAU;YAC9B,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC;SACpC;QACD;YACE,WAAW,EAAE,GAAG,IAAI,SAAS;YAC7B,SAAS,EAAE,iBAAiB,EAAE;SAC/B;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare function setupResizeListener(): () => void;
|
|
2
2
|
//# sourceMappingURL=resize-listener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-listener.d.ts","sourceRoot":"","sources":["../src/resize-listener.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"resize-listener.d.ts","sourceRoot":"","sources":["../src/resize-listener.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,eAiBlC"}
|
package/dist/resize-listener.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import logAndRethrow from './log-and-rethrow.js';
|
|
2
|
-
import recalculatePositions from './utils/recalculate-positions.js';
|
|
3
|
-
export
|
|
1
|
+
import { logAndRethrow } from './log-and-rethrow.js';
|
|
2
|
+
import { recalculatePositions } from './utils/recalculate-positions.js';
|
|
3
|
+
export function setupResizeListener() {
|
|
4
4
|
const abortController = new AbortController();
|
|
5
5
|
window.addEventListener('resize', () => {
|
|
6
6
|
try {
|
|
@@ -14,5 +14,4 @@ export default function setupResizeListener() {
|
|
|
14
14
|
abortController.abort();
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
;
|
|
18
17
|
//# sourceMappingURL=resize-listener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-listener.js","sourceRoot":"","sources":["../src/resize-listener.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"resize-listener.js","sourceRoot":"","sources":["../src/resize-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,UAAU,mBAAmB;IACjC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EACR,GAAG,EAAE;QACH,IAAI,CAAC;YACH,oBAAoB,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CACnC,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/scanner.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { AxeOptions,
|
|
2
|
-
export
|
|
1
|
+
import type { AxeOptions, Callback, Context, Throttle } from './types.ts';
|
|
2
|
+
export declare function createScanner(name: string, context: Context, axeOptions: AxeOptions, throttle: Required<Throttle>, callback: Callback): () => void;
|
|
3
3
|
//# sourceMappingURL=scanner.d.ts.map
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ1E,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC5B,QAAQ,EAAE,QAAQ,cAyJnB"}
|
package/dist/scanner.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import axe from 'axe-core';
|
|
2
|
-
import TaskQueue from './task-queue.js';
|
|
3
|
-
import { elementsWithIssues, enabled, extendedElementsWithIssues } from './state.js';
|
|
4
|
-
import updateElementsWithIssues from './utils/update-elements-with-issues.js';
|
|
5
|
-
import recalculatePositions from './utils/recalculate-positions.js';
|
|
6
|
-
import recalculateScrollableAncestors from './utils/recalculate-scrollable-ancestors.js';
|
|
7
|
-
import supportsAnchorPositioning from './utils/supports-anchor-positioning.js';
|
|
8
2
|
import { getAccentedElementNames, issuesUrl } from './constants.js';
|
|
9
|
-
import logAndRethrow from './log-and-rethrow.js';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
3
|
+
import { logAndRethrow } from './log-and-rethrow.js';
|
|
4
|
+
import { elementsWithIssues, enabled, extendedElementsWithIssues } from './state.js';
|
|
5
|
+
import { TaskQueue } from './task-queue.js';
|
|
6
|
+
import { getScanContext } from './utils/get-scan-context.js';
|
|
7
|
+
import { recalculatePositions } from './utils/recalculate-positions.js';
|
|
8
|
+
import { recalculateScrollableAncestors } from './utils/recalculate-scrollable-ancestors.js';
|
|
9
|
+
import { createShadowDOMAwareMutationObserver } from './utils/shadow-dom-aware-mutation-observer.js';
|
|
10
|
+
import { supportsAnchorPositioning } from './utils/supports-anchor-positioning.js';
|
|
11
|
+
import { updateElementsWithIssues } from './utils/update-elements-with-issues.js';
|
|
12
|
+
export function createScanner(name, context, axeOptions, throttle, callback) {
|
|
13
13
|
const axeRunningWindowProp = `__${name}_axe_running__`;
|
|
14
14
|
const win = window;
|
|
15
15
|
const taskQueue = new TaskQueue(async (nodes) => {
|
|
@@ -27,27 +27,26 @@ export default function createScanner(name, context, axeOptions, throttle, callb
|
|
|
27
27
|
try {
|
|
28
28
|
result = await axe.run(scanContext, {
|
|
29
29
|
elementRef: true,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Although axe-core can perform iframe scanning, I haven't succeeded in it,
|
|
32
|
+
* and the docs suggest that the axe-core script should be explicitly included
|
|
33
|
+
* in each of the iframed documents anyway.
|
|
34
|
+
* It seems preferable to disallow iframe scanning and not report issues in elements within iframes
|
|
35
|
+
* in the case that such issues are for some reason reported by axe-core.
|
|
36
|
+
* A consumer of Accented can instead scan the iframed document by calling Accented initialization from that document.
|
|
37
|
+
*/
|
|
36
38
|
iframes: false,
|
|
37
39
|
resultTypes: ['violations'],
|
|
38
|
-
...axeOptions
|
|
40
|
+
...axeOptions,
|
|
39
41
|
});
|
|
40
42
|
}
|
|
41
43
|
catch (error) {
|
|
42
|
-
console.error(
|
|
43
|
-
'Check the `axeOptions` property that you’re passing to Accented. ' +
|
|
44
|
-
`If you still think it’s a bug in Accented, file an issue at ${issuesUrl}.\n`, error);
|
|
45
|
-
result = { violations: [] };
|
|
44
|
+
console.error(`Accented: axe-core (the accessibility testing engine) threw an error. Check the \`axeOptions\` property that you’re passing to Accented. If you still think it’s a bug in Accented, file an issue at ${issuesUrl}.\n`, error);
|
|
46
45
|
}
|
|
47
46
|
win[axeRunningWindowProp] = false;
|
|
48
47
|
const scanMeasure = performance.measure('scan', 'scan-start');
|
|
49
48
|
const scanDuration = Math.round(scanMeasure.duration);
|
|
50
|
-
if (!enabled.value) {
|
|
49
|
+
if (!enabled.value || !result) {
|
|
51
50
|
return;
|
|
52
51
|
}
|
|
53
52
|
performance.mark('dom-update-start');
|
|
@@ -56,21 +55,21 @@ export default function createScanner(name, context, axeOptions, throttle, callb
|
|
|
56
55
|
scanContext,
|
|
57
56
|
violations: result.violations,
|
|
58
57
|
win: window,
|
|
59
|
-
name
|
|
58
|
+
name,
|
|
60
59
|
});
|
|
61
60
|
const domUpdateMeasure = performance.measure('dom-update', 'dom-update-start');
|
|
62
61
|
const domUpdateDuration = Math.round(domUpdateMeasure.duration);
|
|
63
62
|
callback({
|
|
63
|
+
// Assuming that the {include, exclude} shape of the context object will be used less often
|
|
64
|
+
// than other variants, we'll output just the `include` array in case nothing is excluded
|
|
65
|
+
// in the scan.
|
|
66
|
+
scanContext: scanContext.exclude.length > 0 ? scanContext : scanContext.include,
|
|
64
67
|
elementsWithIssues: elementsWithIssues.value,
|
|
65
68
|
performance: {
|
|
66
69
|
totalBlockingTime: scanDuration + domUpdateDuration,
|
|
67
70
|
scan: scanDuration,
|
|
68
71
|
domUpdate: domUpdateDuration,
|
|
69
|
-
|
|
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
|
|
73
|
-
}
|
|
72
|
+
},
|
|
74
73
|
});
|
|
75
74
|
}
|
|
76
75
|
catch (error) {
|
|
@@ -80,14 +79,14 @@ export default function createScanner(name, context, axeOptions, throttle, callb
|
|
|
80
79
|
}, throttle);
|
|
81
80
|
taskQueue.add(document);
|
|
82
81
|
const accentedElementNames = getAccentedElementNames(name);
|
|
83
|
-
const mutationObserver = createShadowDOMAwareMutationObserver(name, mutationList => {
|
|
82
|
+
const mutationObserver = createShadowDOMAwareMutationObserver(name, (mutationList) => {
|
|
84
83
|
try {
|
|
85
84
|
// We're not interested in mutations that are caused exclusively by the custom elements
|
|
86
85
|
// introduced by Accented.
|
|
87
|
-
const listWithoutAccentedElements = mutationList.filter(mutationRecord => {
|
|
86
|
+
const listWithoutAccentedElements = mutationList.filter((mutationRecord) => {
|
|
88
87
|
const onlyAccentedElementsAddedOrRemoved = mutationRecord.type === 'childList' &&
|
|
89
|
-
[...mutationRecord.addedNodes].every(node => accentedElementNames.includes(node.nodeName.toLowerCase())) &&
|
|
90
|
-
[...mutationRecord.removedNodes].every(node => accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
88
|
+
[...mutationRecord.addedNodes].every((node) => accentedElementNames.includes(node.nodeName.toLowerCase())) &&
|
|
89
|
+
[...mutationRecord.removedNodes].every((node) => accentedElementNames.includes(node.nodeName.toLowerCase()));
|
|
91
90
|
const accentedElementChanged = mutationRecord.type === 'attributes' &&
|
|
92
91
|
accentedElementNames.includes(mutationRecord.target.nodeName.toLowerCase());
|
|
93
92
|
return !(onlyAccentedElementsAddedOrRemoved || accentedElementChanged);
|
|
@@ -106,15 +105,16 @@ export default function createScanner(name, context, axeOptions, throttle, callb
|
|
|
106
105
|
// we may miss other mutations on those same elements caused by Accented,
|
|
107
106
|
// leading to extra runs of the mutation observer.
|
|
108
107
|
const elementsWithAccentedAttributeChanges = listWithoutAccentedElements.reduce((nodes, mutationRecord) => {
|
|
109
|
-
if (mutationRecord.type === 'attributes' &&
|
|
108
|
+
if (mutationRecord.type === 'attributes' &&
|
|
109
|
+
mutationRecord.attributeName === `data-${name}`) {
|
|
110
110
|
nodes.add(mutationRecord.target);
|
|
111
111
|
}
|
|
112
112
|
return nodes;
|
|
113
113
|
}, new Set());
|
|
114
|
-
const filteredMutationList = listWithoutAccentedElements.filter(mutationRecord => {
|
|
114
|
+
const filteredMutationList = listWithoutAccentedElements.filter((mutationRecord) => {
|
|
115
115
|
return !elementsWithAccentedAttributeChanges.has(mutationRecord.target);
|
|
116
116
|
});
|
|
117
|
-
const nodes = filteredMutationList.map(mutationRecord => mutationRecord.target);
|
|
117
|
+
const nodes = filteredMutationList.map((mutationRecord) => mutationRecord.target);
|
|
118
118
|
taskQueue.addMultiple(nodes);
|
|
119
119
|
}
|
|
120
120
|
catch (error) {
|
|
@@ -125,7 +125,7 @@ export default function createScanner(name, context, axeOptions, throttle, callb
|
|
|
125
125
|
subtree: true,
|
|
126
126
|
childList: true,
|
|
127
127
|
attributes: true,
|
|
128
|
-
characterData: true
|
|
128
|
+
characterData: true,
|
|
129
129
|
});
|
|
130
130
|
return () => {
|
|
131
131
|
mutationObserver.disconnect();
|