@siteimprove/alfa-dom 0.112.0 → 0.113.0
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/CHANGELOG.md +24 -0
- package/dist/h.d.ts +14 -13
- package/dist/h.js +15 -13
- package/dist/index.d.ts +2 -28
- package/dist/index.js +2 -28
- package/dist/jsx.d.ts +2 -3
- package/dist/native.d.ts +10 -2
- package/dist/native.js +18 -2
- package/dist/node/attribute/predicate/has-name.d.ts +1 -1
- package/dist/node/attribute/predicate/has-name.js +2 -3
- package/dist/node/attribute.d.ts +9 -13
- package/dist/node/attribute.js +3 -10
- package/dist/node/comment.d.ts +7 -11
- package/dist/node/comment.js +2 -9
- package/dist/node/document.d.ts +11 -14
- package/dist/node/document.js +8 -23
- package/dist/node/element/augment.d.ts +1 -1
- package/dist/node/element/augment.js +1 -1
- package/dist/node/element/predicate/has-attribute.d.ts +1 -1
- package/dist/node/element/predicate/has-display-size.d.ts +1 -1
- package/dist/node/element/predicate/has-id.d.ts +1 -1
- package/dist/node/element/predicate/has-input-type.d.ts +1 -1
- package/dist/node/element/predicate/has-name.d.ts +1 -1
- package/dist/node/element/predicate/has-namespace.d.ts +1 -1
- package/dist/node/element/predicate/has-tab-index.d.ts +1 -1
- package/dist/node/element/predicate/has-unique-id.d.ts +3 -2
- package/dist/node/element/predicate/has-unique-id.js +21 -20
- package/dist/node/element/predicate/index.d.ts +19 -0
- package/dist/node/element/predicate/index.js +19 -0
- package/dist/node/element/predicate/is-actually-disabled.d.ts +4 -2
- package/dist/node/element/predicate/is-actually-disabled.js +37 -38
- package/dist/node/element/predicate/is-browsing-context-container.d.ts +1 -1
- package/dist/node/element/predicate/is-content.d.ts +4 -2
- package/dist/node/element/predicate/is-content.js +2 -4
- package/dist/node/element/predicate/is-document-element.d.ts +3 -2
- package/dist/node/element/predicate/is-document-element.js +2 -3
- package/dist/node/element/predicate/is-draggable.d.ts +1 -1
- package/dist/node/element/predicate/is-editing-host.d.ts +1 -1
- package/dist/node/element/predicate/is-fallback.d.ts +5 -2
- package/dist/node/element/predicate/is-fallback.js +5 -6
- package/dist/node/element/predicate/is-replaced.d.ts +1 -1
- package/dist/node/element/predicate/is-scoped-to.d.ts +3 -2
- package/dist/node/element/predicate/is-scoped-to.js +5 -5
- package/dist/node/element/predicate/is-suggested-focusable.d.ts +1 -1
- package/dist/node/element/predicate/is-suggested-focusable.js +3 -3
- package/dist/node/fragment.d.ts +6 -9
- package/dist/node/fragment.js +5 -20
- package/dist/node/index.d.ts +56 -0
- package/dist/node/index.js +74 -0
- package/dist/{node.d.ts → node/node.d.ts} +40 -160
- package/dist/{node.js → node/node.js} +57 -92
- package/dist/node/predicate/has-box.d.ts +1 -2
- package/dist/node/predicate/has-child.d.ts +2 -2
- package/dist/node/predicate/has-child.js +2 -3
- package/dist/node/predicate/has-descendant.d.ts +2 -2
- package/dist/node/predicate/has-descendant.js +2 -3
- package/dist/node/predicate/has-inclusive-descendant.d.ts +2 -2
- package/dist/node/predicate/has-inclusive-descendant.js +2 -3
- package/dist/node/predicate/has-text-content.d.ts +2 -2
- package/dist/node/predicate/has-text-content.js +2 -3
- package/dist/node/predicate/index.d.ts +7 -0
- package/dist/node/predicate/index.js +7 -0
- package/dist/node/predicate/is-root.d.ts +1 -1
- package/dist/node/query/descendants.d.ts +10 -10
- package/dist/node/query/descendants.js +6 -6
- package/dist/node/query/element-id-map.d.ts +3 -3
- package/dist/node/query/index.d.ts +3 -3
- package/dist/node/shadow.d.ts +11 -14
- package/dist/node/shadow.js +9 -24
- package/dist/node/{element.d.ts → slotable/element.d.ts} +28 -27
- package/dist/node/{element.js → slotable/element.js} +40 -51
- package/dist/node/slotable/index.d.ts +12 -0
- package/dist/node/slotable/index.js +15 -0
- package/dist/node/slotable/slot.d.ts +21 -0
- package/dist/node/slotable/slot.js +23 -0
- package/dist/node/slotable/slotable.d.ts +31 -0
- package/dist/node/slotable/slotable.js +16 -0
- package/dist/node/{text.d.ts → slotable/text.d.ts} +8 -11
- package/dist/node/{text.js → slotable/text.js} +13 -10
- package/dist/node/traversal/get-nodes-between.d.ts +2 -2
- package/dist/node/traversal/get-nodes-between.js +30 -29
- package/dist/node/traversal/index.d.ts +2 -0
- package/dist/node/traversal/index.js +2 -0
- package/dist/node/traversal/lowest-common-ancestor.d.ts +2 -2
- package/dist/node/traversal/lowest-common-ancestor.js +2 -3
- package/dist/node/type.d.ts +6 -10
- package/dist/node/type.js +2 -9
- package/dist/style/declaration.d.ts +2 -2
- package/dist/style/index.d.ts +5 -0
- package/dist/style/index.js +5 -0
- package/dist/style/rule/condition.d.ts +1 -1
- package/dist/style/rule/font-face.d.ts +3 -3
- package/dist/style/rule/font-face.js +2 -2
- package/dist/style/rule/grouping.d.ts +4 -3
- package/dist/style/rule/grouping.js +2 -2
- package/dist/style/rule/import.d.ts +3 -3
- package/dist/style/rule/import.js +2 -4
- package/dist/style/rule/index.d.ts +65 -0
- package/dist/style/rule/index.js +83 -0
- package/dist/style/rule/keyframe.d.ts +3 -3
- package/dist/style/rule/keyframe.js +2 -2
- package/dist/style/rule/keyframes.d.ts +2 -2
- package/dist/style/rule/keyframes.js +2 -3
- package/dist/style/rule/layer.d.ts +5 -4
- package/dist/style/rule/layer.js +4 -4
- package/dist/style/rule/media.d.ts +2 -2
- package/dist/style/rule/media.js +2 -3
- package/dist/style/rule/namespace.d.ts +3 -3
- package/dist/style/rule/namespace.js +2 -2
- package/dist/style/rule/page.d.ts +3 -3
- package/dist/style/rule/page.js +2 -2
- package/dist/style/rule/rule.d.ts +42 -0
- package/dist/style/rule/rule.js +64 -0
- package/dist/style/rule/style.d.ts +3 -3
- package/dist/style/rule/style.js +2 -2
- package/dist/style/rule/supports.d.ts +2 -2
- package/dist/style/rule/supports.js +2 -3
- package/dist/style/sheet.d.ts +1 -1
- package/dist/style/sheet.js +2 -2
- package/package.json +29 -30
- package/dist/node/element/predicate.d.ts +0 -19
- package/dist/node/element/predicate.js +0 -19
- package/dist/node/predicate.d.ts +0 -7
- package/dist/node/predicate.js +0 -7
- package/dist/node/slot.d.ts +0 -29
- package/dist/node/slot.js +0 -41
- package/dist/node/slotable.d.ts +0 -29
- package/dist/node/slotable.js +0 -40
- package/dist/node/traversal.d.ts +0 -2
- package/dist/node/traversal.js +0 -2
- package/dist/style/rule.d.ts +0 -60
- package/dist/style/rule.js +0 -109
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
-
import {
|
|
2
|
+
import type { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Element } from "../../slotable/element.js";
|
|
3
4
|
/**
|
|
4
5
|
* @public
|
|
5
6
|
*/
|
|
6
|
-
export declare
|
|
7
|
+
export declare function hasUniqueId(isElement: Refinement<unknown, Element>): Predicate<Element>;
|
|
7
8
|
//# sourceMappingURL=has-unique-id.d.ts.map
|
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
import { Cache } from "@siteimprove/alfa-cache";
|
|
2
2
|
import { Iterable } from "@siteimprove/alfa-iterable";
|
|
3
3
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
4
|
-
import { Element } from "../../element.js";
|
|
5
4
|
import { hasId } from "./has-id.js";
|
|
6
5
|
const { and } = Predicate;
|
|
7
|
-
const uniques = Cache.empty();
|
|
8
6
|
/**
|
|
9
7
|
* @public
|
|
10
8
|
*/
|
|
11
|
-
export
|
|
12
|
-
.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
counts.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
9
|
+
export function hasUniqueId(isElement) {
|
|
10
|
+
const uniques = Cache.empty();
|
|
11
|
+
return and(hasId(), (element) => uniques
|
|
12
|
+
.get(element.root(), () => {
|
|
13
|
+
const counts = new Map();
|
|
14
|
+
for (const node of element.root().descendants()) {
|
|
15
|
+
if (isElement(node) && node.id.isSome()) {
|
|
16
|
+
const id = node.id.get();
|
|
17
|
+
const count = counts.get(id);
|
|
18
|
+
if (count === undefined) {
|
|
19
|
+
counts.set(id, 1);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
counts.set(id, 1 + count);
|
|
23
|
+
}
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
return new Set(Iterable.map(Iterable.filter(counts, ([, count]) => count === 1), ([id]) => id));
|
|
27
|
+
})
|
|
28
|
+
// The initial hasId in the conjunction guarantee that there is one.
|
|
29
|
+
// Still defaulting to an impossible one.
|
|
30
|
+
.has(element.id.getOr("impossible id due to spaces")));
|
|
31
|
+
}
|
|
31
32
|
//# sourceMappingURL=has-unique-id.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./has-attribute.js";
|
|
2
|
+
export * from "./has-display-size.js";
|
|
3
|
+
export * from "./has-id.js";
|
|
4
|
+
export * from "./has-input-type.js";
|
|
5
|
+
export * from "./has-name.js";
|
|
6
|
+
export * from "./has-namespace.js";
|
|
7
|
+
export * from "./has-tab-index.js";
|
|
8
|
+
export * from "./has-unique-id.js";
|
|
9
|
+
export * from "./is-actually-disabled.js";
|
|
10
|
+
export * from "./is-browsing-context-container.js";
|
|
11
|
+
export * from "./is-content.js";
|
|
12
|
+
export * from "./is-document-element.js";
|
|
13
|
+
export * from "./is-draggable.js";
|
|
14
|
+
export * from "./is-editing-host.js";
|
|
15
|
+
export * from "./is-fallback.js";
|
|
16
|
+
export * from "./is-replaced.js";
|
|
17
|
+
export * from "./is-scoped-to.js";
|
|
18
|
+
export * from "./is-suggested-focusable.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./has-attribute.js";
|
|
2
|
+
export * from "./has-display-size.js";
|
|
3
|
+
export * from "./has-id.js";
|
|
4
|
+
export * from "./has-input-type.js";
|
|
5
|
+
export * from "./has-name.js";
|
|
6
|
+
export * from "./has-namespace.js";
|
|
7
|
+
export * from "./has-tab-index.js";
|
|
8
|
+
export * from "./has-unique-id.js";
|
|
9
|
+
export * from "./is-actually-disabled.js";
|
|
10
|
+
export * from "./is-browsing-context-container.js";
|
|
11
|
+
export * from "./is-content.js";
|
|
12
|
+
export * from "./is-document-element.js";
|
|
13
|
+
export * from "./is-draggable.js";
|
|
14
|
+
export * from "./is-editing-host.js";
|
|
15
|
+
export * from "./is-fallback.js";
|
|
16
|
+
export * from "./is-replaced.js";
|
|
17
|
+
export * from "./is-scoped-to.js";
|
|
18
|
+
export * from "./is-suggested-focusable.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
+
import type { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Element } from "../../slotable/element.js";
|
|
2
4
|
/**
|
|
3
5
|
* {@link https://html.spec.whatwg.org/multipage#concept-element-disabled}
|
|
4
6
|
*
|
|
5
7
|
* @public
|
|
6
8
|
*/
|
|
7
|
-
export declare function isActuallyDisabled(
|
|
9
|
+
export declare function isActuallyDisabled(isElement: Refinement<unknown, Element>): Predicate<Element>;
|
|
8
10
|
//# sourceMappingURL=is-actually-disabled.d.ts.map
|
|
@@ -1,47 +1,46 @@
|
|
|
1
1
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
-
import {
|
|
2
|
+
import { hasName } from "./has-name.js";
|
|
3
3
|
const { equals } = Predicate;
|
|
4
4
|
/**
|
|
5
5
|
* {@link https://html.spec.whatwg.org/multipage#concept-element-disabled}
|
|
6
6
|
*
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
export function isActuallyDisabled(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
9
|
+
export function isActuallyDisabled(isElement) {
|
|
10
|
+
return function isActuallyDisabled(element) {
|
|
11
|
+
switch (element.name) {
|
|
12
|
+
// https://html.spec.whatwg.org/multipage#concept-fe-disabled
|
|
13
|
+
case "button":
|
|
14
|
+
case "input":
|
|
15
|
+
case "select":
|
|
16
|
+
case "textarea":
|
|
17
|
+
// https://html.spec.whatwg.org/#attr-optgroup-disabled
|
|
18
|
+
case "optgroup":
|
|
19
|
+
return element.attribute("disabled").isSome();
|
|
20
|
+
// https://html.spec.whatwg.org/multipage#concept-fieldset-disabled
|
|
21
|
+
case "fieldset":
|
|
22
|
+
if (element.attribute("disabled").isSome()) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
return element
|
|
26
|
+
.ancestors()
|
|
27
|
+
.filter(isElement)
|
|
28
|
+
.find(hasName("fieldset"))
|
|
29
|
+
.reject(isActuallyDisabled)
|
|
30
|
+
.flatMap((fieldset) => fieldset.descendants().filter(isElement).find(hasName("legend")))
|
|
31
|
+
.some((legend) => legend.descendants().some(equals(element)));
|
|
32
|
+
// https://html.spec.whatwg.org/multipage#concept-option-disabled
|
|
33
|
+
case "option":
|
|
34
|
+
if (element.attribute("disabled").isSome()) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return element
|
|
38
|
+
.inclusiveAncestors()
|
|
39
|
+
.filter(isElement)
|
|
40
|
+
.find(hasName("optgroup"))
|
|
41
|
+
.some(isActuallyDisabled);
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
46
45
|
}
|
|
47
46
|
//# sourceMappingURL=is-actually-disabled.js.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
-
import {
|
|
2
|
+
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Element } from "../../slotable/element.js";
|
|
4
|
+
import type { BaseNode } from "../../node.js";
|
|
3
5
|
/**
|
|
4
6
|
* A node is actual content (not just a container) if it has no children,
|
|
5
7
|
* or if it is a replaced element (assumed to be replaced by actual content).
|
|
6
8
|
*
|
|
7
9
|
* @public
|
|
8
10
|
*/
|
|
9
|
-
export declare function isContent(options?:
|
|
11
|
+
export declare function isContent(isElement: Refinement<unknown, Element>, defaultTraversal: BaseNode.Traversal): (options?: BaseNode.Traversal) => Predicate<BaseNode>;
|
|
10
12
|
//# sourceMappingURL=is-content.d.ts.map
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
2
|
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
-
import { Element } from "../../element.js";
|
|
4
|
-
import { Node } from "../../../node.js";
|
|
5
3
|
import { isReplaced } from "./is-replaced.js";
|
|
6
4
|
const { or } = Predicate;
|
|
7
5
|
const { and } = Refinement;
|
|
@@ -11,7 +9,7 @@ const { and } = Refinement;
|
|
|
11
9
|
*
|
|
12
10
|
* @public
|
|
13
11
|
*/
|
|
14
|
-
export function isContent(
|
|
15
|
-
return or((node) => node.children(options).isEmpty(), and(
|
|
12
|
+
export function isContent(isElement, defaultTraversal) {
|
|
13
|
+
return (options = defaultTraversal) => or((node) => node.children(options).isEmpty(), and(isElement, isReplaced));
|
|
16
14
|
}
|
|
17
15
|
//# sourceMappingURL=is-content.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
2
|
+
import type { Element } from "../../slotable/element.js";
|
|
2
3
|
/**
|
|
3
4
|
* @public
|
|
4
5
|
*/
|
|
5
|
-
export declare function isDocumentElement(
|
|
6
|
+
export declare function isDocumentElement(isElement: Refinement<unknown, Element>): Refinement<unknown, Element<"html">>;
|
|
6
7
|
//# sourceMappingURL=is-document-element.d.ts.map
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
2
|
-
import { Element } from "../../element.js";
|
|
3
2
|
import { Namespace } from "../../../namespace.js";
|
|
4
3
|
import { hasName } from "./has-name.js";
|
|
5
4
|
import { hasNamespace } from "./has-namespace.js";
|
|
@@ -7,7 +6,7 @@ const { and, test } = Refinement;
|
|
|
7
6
|
/**
|
|
8
7
|
* @public
|
|
9
8
|
*/
|
|
10
|
-
export function isDocumentElement(
|
|
11
|
-
return test(and(
|
|
9
|
+
export function isDocumentElement(isElement) {
|
|
10
|
+
return (value) => test(and(isElement, and(hasName("html"), hasNamespace(Namespace.HTML))), value);
|
|
12
11
|
}
|
|
13
12
|
//# sourceMappingURL=is-document-element.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
+
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Element } from "../../slotable/element.js";
|
|
4
|
+
import type { BaseNode } from "../../node.js";
|
|
2
5
|
/**
|
|
3
6
|
* Children of <iframe>, <audio>, <video> elements act as fallback content in
|
|
4
7
|
* legacy user agents.
|
|
@@ -11,5 +14,5 @@ import type { Node } from "../../../node.js";
|
|
|
11
14
|
*
|
|
12
15
|
* @public
|
|
13
16
|
*/
|
|
14
|
-
export declare function isFallback(
|
|
17
|
+
export declare function isFallback(isElement: Refinement<unknown, Element>): Predicate<BaseNode>;
|
|
15
18
|
//# sourceMappingURL=is-fallback.d.ts.map
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
2
|
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
-
import { Element } from "../../element.js";
|
|
4
3
|
import { hasName } from "./has-name.js";
|
|
5
|
-
const { not, or
|
|
4
|
+
const { not, or } = Predicate;
|
|
6
5
|
const { and } = Refinement;
|
|
7
6
|
/**
|
|
8
7
|
* Children of <iframe>, <audio>, <video> elements act as fallback content in
|
|
@@ -16,13 +15,13 @@ const { and } = Refinement;
|
|
|
16
15
|
*
|
|
17
16
|
* @public
|
|
18
17
|
*/
|
|
19
|
-
export function isFallback(
|
|
20
|
-
return
|
|
18
|
+
export function isFallback(isElement) {
|
|
19
|
+
return or(hasParentName(isElement, "iframe"), and(hasParentName(isElement, "audio", "video"), not(and(isElement, hasName("track", "source")))));
|
|
21
20
|
}
|
|
22
|
-
function hasParentName(name, ...names) {
|
|
21
|
+
function hasParentName(isElement, name, ...names) {
|
|
23
22
|
return (node) => node
|
|
24
23
|
.parent()
|
|
25
|
-
.filter(
|
|
24
|
+
.filter(isElement)
|
|
26
25
|
.some(hasName(name, ...names));
|
|
27
26
|
}
|
|
28
27
|
//# sourceMappingURL=is-fallback.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Predicate } from "@siteimprove/alfa-predicate";
|
|
2
|
-
import {
|
|
2
|
+
import type { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Element } from "../../slotable/element.js";
|
|
3
4
|
/**
|
|
4
5
|
* @public
|
|
5
6
|
*/
|
|
6
|
-
export declare function isScopedTo(name: string, ...rest: Array<string>)
|
|
7
|
+
export declare function isScopedTo(isElement: Refinement<unknown, Element>): (name: string, ...rest: Array<string>) => Predicate<Element>;
|
|
7
8
|
//# sourceMappingURL=is-scoped-to.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hasName } from "./has-name.js";
|
|
2
2
|
/**
|
|
3
3
|
* @public
|
|
4
4
|
*/
|
|
5
|
-
export function isScopedTo(
|
|
6
|
-
return (element) => element
|
|
5
|
+
export function isScopedTo(isElement) {
|
|
6
|
+
return (name, ...rest) => (element) => element
|
|
7
7
|
.ancestors()
|
|
8
|
-
.filter(
|
|
9
|
-
.some(
|
|
8
|
+
.filter(isElement)
|
|
9
|
+
.some(hasName(name, ...rest));
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=is-scoped-to.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isBrowsingContextContainer } from "./is-browsing-context-container.js";
|
|
2
|
+
import { isEditingHost } from "./is-editing-host.js";
|
|
2
3
|
/**
|
|
3
4
|
* {@link https://html.spec.whatwg.org/multipage/#tabindex-value}
|
|
4
5
|
*
|
|
@@ -34,7 +35,6 @@ export function isSuggestedFocusable(element) {
|
|
|
34
35
|
// The type is ensured by the switch on the name.
|
|
35
36
|
return element.isSummaryForItsParentDetails();
|
|
36
37
|
}
|
|
37
|
-
return
|
|
38
|
-
Element.isBrowsingContextContainer(element));
|
|
38
|
+
return isEditingHost(element) || isBrowsingContextContainer(element);
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=is-suggested-focusable.js.map
|
package/dist/node/fragment.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { Device } from "@siteimprove/alfa-device";
|
|
2
|
-
import { Trampoline } from "@siteimprove/alfa-trampoline";
|
|
3
2
|
import { Iterable } from "@siteimprove/alfa-iterable";
|
|
4
|
-
import {
|
|
3
|
+
import { Trampoline } from "@siteimprove/alfa-trampoline";
|
|
4
|
+
import { BaseNode } from "./node.js";
|
|
5
|
+
import type { Node } from "./index.js";
|
|
5
6
|
/**
|
|
6
7
|
* @public
|
|
7
8
|
*/
|
|
8
|
-
export declare class Fragment extends
|
|
9
|
+
export declare class Fragment extends BaseNode<"fragment"> {
|
|
9
10
|
static of(children: Iterable<Node>, externalId?: string, internalId?: string, extraData?: any): Fragment;
|
|
10
11
|
static empty(): Fragment;
|
|
11
12
|
protected constructor(children: Array<Node>, externalId?: string, internalId?: string, extraData?: any);
|
|
@@ -23,16 +24,12 @@ export declare class Fragment extends Node<"fragment"> {
|
|
|
23
24
|
* @public
|
|
24
25
|
*/
|
|
25
26
|
export declare namespace Fragment {
|
|
26
|
-
interface JSON extends
|
|
27
|
+
interface JSON extends BaseNode.JSON<"fragment"> {
|
|
27
28
|
}
|
|
28
29
|
function isFragment(value: unknown): value is Fragment;
|
|
29
30
|
/**
|
|
30
31
|
* @internal
|
|
31
32
|
*/
|
|
32
|
-
function fromFragment(json: JSON, device?: Device): Trampoline<Fragment>;
|
|
33
|
-
/**
|
|
34
|
-
* @internal
|
|
35
|
-
*/
|
|
36
|
-
function cloneFragment(options: Node.ElementReplacementOptions, device?: Device): (fragment: Fragment) => Trampoline<Fragment>;
|
|
33
|
+
function fromFragment(json: JSON, fromNode: (json: Node.JSON, device?: Device) => Trampoline<Node>, device?: Device): Trampoline<Fragment>;
|
|
37
34
|
}
|
|
38
35
|
//# sourceMappingURL=fragment.d.ts.map
|
package/dist/node/fragment.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
import { Iterable } from "@siteimprove/alfa-iterable";
|
|
1
2
|
import { String } from "@siteimprove/alfa-string";
|
|
2
3
|
import { Trampoline } from "@siteimprove/alfa-trampoline";
|
|
3
|
-
import {
|
|
4
|
-
import { Node } from "../node.js";
|
|
5
|
-
import { Element } from "./element.js";
|
|
4
|
+
import { BaseNode } from "./node.js";
|
|
6
5
|
/**
|
|
7
6
|
* @public
|
|
8
7
|
*/
|
|
9
|
-
export class Fragment extends
|
|
8
|
+
export class Fragment extends BaseNode {
|
|
10
9
|
static of(children, externalId, internalId, extraData) {
|
|
11
10
|
return new Fragment(Array.from(children), externalId, internalId, extraData);
|
|
12
11
|
}
|
|
@@ -46,23 +45,9 @@ export class Fragment extends Node {
|
|
|
46
45
|
/**
|
|
47
46
|
* @internal
|
|
48
47
|
*/
|
|
49
|
-
function fromFragment(json, device) {
|
|
50
|
-
return Trampoline.traverse(json.children ?? [], (child) =>
|
|
48
|
+
function fromFragment(json, fromNode, device) {
|
|
49
|
+
return Trampoline.traverse(json.children ?? [], (child) => fromNode(child, device)).map((children) => Fragment.of(children));
|
|
51
50
|
}
|
|
52
51
|
Fragment.fromFragment = fromFragment;
|
|
53
|
-
/**
|
|
54
|
-
* @internal
|
|
55
|
-
*/
|
|
56
|
-
function cloneFragment(options, device) {
|
|
57
|
-
return (fragment) => Trampoline.traverse(fragment.children(), (child) => {
|
|
58
|
-
if (Element.isElement(child) && options.predicate(child)) {
|
|
59
|
-
return Trampoline.done(Array.from(options.newElements));
|
|
60
|
-
}
|
|
61
|
-
return Node.cloneNode(child, options, device).map((node) => [node]);
|
|
62
|
-
}).map((children) => {
|
|
63
|
-
return Fragment.of(Iterable.flatten(children), fragment.externalId);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
Fragment.cloneFragment = cloneFragment;
|
|
67
52
|
})(Fragment || (Fragment = {}));
|
|
68
53
|
//# sourceMappingURL=fragment.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Device } from "@siteimprove/alfa-device";
|
|
2
|
+
import { Refinement } from "@siteimprove/alfa-refinement";
|
|
3
|
+
import type { Trampoline } from "@siteimprove/alfa-trampoline";
|
|
4
|
+
import { BaseNode as BaseNode } from "./node.js";
|
|
5
|
+
import { Attribute } from "./attribute.js";
|
|
6
|
+
import { Comment } from "./comment.js";
|
|
7
|
+
import { Document } from "./document.js";
|
|
8
|
+
import { Shadow } from "./shadow.js";
|
|
9
|
+
import { Element, Text } from "./slotable/index.js";
|
|
10
|
+
import { Fragment } from "./fragment.js";
|
|
11
|
+
import { Type } from "./type.js";
|
|
12
|
+
import * as predicate from "./predicate/index.js";
|
|
13
|
+
export * from "./attribute.js";
|
|
14
|
+
export * from "./comment.js";
|
|
15
|
+
export * from "./document.js";
|
|
16
|
+
export * from "./shadow.js";
|
|
17
|
+
export * from "./slotable/index.js";
|
|
18
|
+
import "./element/augment.js";
|
|
19
|
+
export * from "./fragment.js";
|
|
20
|
+
export * from "./type.js";
|
|
21
|
+
/** @public */
|
|
22
|
+
export type Node = Attribute | Comment | Document | Element | Fragment | Shadow | Type | Text;
|
|
23
|
+
/**
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export declare namespace Node {
|
|
27
|
+
type JSON = Attribute.JSON | Comment.JSON | Document.JSON | Element.JSON | Fragment.JSON | Shadow.JSON | Type.JSON | Text.JSON;
|
|
28
|
+
const isNode: Refinement<unknown, Node>;
|
|
29
|
+
type SerializationOptions = BaseNode.SerializationOptions;
|
|
30
|
+
export import Traversal = BaseNode.Traversal;
|
|
31
|
+
const flatTree: Traversal;
|
|
32
|
+
const fullTree: Traversal;
|
|
33
|
+
const composedNested: Traversal;
|
|
34
|
+
function from(json: Element.JSON, device?: Device): Element;
|
|
35
|
+
function from(json: Attribute.JSON, device?: Device): Attribute;
|
|
36
|
+
function from(json: Text.JSON, device?: Device): Text;
|
|
37
|
+
function from(json: Comment.JSON, device?: Device): Comment;
|
|
38
|
+
function from(json: Document.JSON, device?: Device): Document;
|
|
39
|
+
function from(json: Type.JSON, device?: Device): Document;
|
|
40
|
+
function from(json: Fragment.JSON, device?: Device): Fragment;
|
|
41
|
+
function from(json: JSON, device?: Device): Node;
|
|
42
|
+
/**
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
function fromNode(json: JSON, device?: Device): Trampoline<Node>;
|
|
46
|
+
const getNodesBetween: (node1: Node, node2: Node, includeOptions?: {
|
|
47
|
+
includeFirst: boolean;
|
|
48
|
+
includeSecond: boolean;
|
|
49
|
+
}) => import("@siteimprove/alfa-sequence").Sequence<Node>;
|
|
50
|
+
const hasBox: typeof predicate.hasBox, isRoot: typeof predicate.isRoot;
|
|
51
|
+
const hasChild: (predicate: import("@siteimprove/alfa-predicate").Predicate<Node>, options?: Node.Traversal) => import("@siteimprove/alfa-predicate").Predicate<Node>;
|
|
52
|
+
const hasDescendant: (predicate: import("@siteimprove/alfa-predicate").Predicate<Node>, options?: Node.Traversal) => import("@siteimprove/alfa-predicate").Predicate<Node>;
|
|
53
|
+
const hasInclusiveDescendant: (predicate: import("@siteimprove/alfa-predicate").Predicate<Node>, options?: Node.Traversal) => import("@siteimprove/alfa-predicate").Predicate<Node>;
|
|
54
|
+
const hasTextContent: (predicate?: import("@siteimprove/alfa-predicate").Predicate<string>, options?: Node.Traversal) => import("@siteimprove/alfa-predicate").Predicate<Node>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|