@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.
Files changed (132) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/h.d.ts +14 -13
  3. package/dist/h.js +15 -13
  4. package/dist/index.d.ts +2 -28
  5. package/dist/index.js +2 -28
  6. package/dist/jsx.d.ts +2 -3
  7. package/dist/native.d.ts +10 -2
  8. package/dist/native.js +18 -2
  9. package/dist/node/attribute/predicate/has-name.d.ts +1 -1
  10. package/dist/node/attribute/predicate/has-name.js +2 -3
  11. package/dist/node/attribute.d.ts +9 -13
  12. package/dist/node/attribute.js +3 -10
  13. package/dist/node/comment.d.ts +7 -11
  14. package/dist/node/comment.js +2 -9
  15. package/dist/node/document.d.ts +11 -14
  16. package/dist/node/document.js +8 -23
  17. package/dist/node/element/augment.d.ts +1 -1
  18. package/dist/node/element/augment.js +1 -1
  19. package/dist/node/element/predicate/has-attribute.d.ts +1 -1
  20. package/dist/node/element/predicate/has-display-size.d.ts +1 -1
  21. package/dist/node/element/predicate/has-id.d.ts +1 -1
  22. package/dist/node/element/predicate/has-input-type.d.ts +1 -1
  23. package/dist/node/element/predicate/has-name.d.ts +1 -1
  24. package/dist/node/element/predicate/has-namespace.d.ts +1 -1
  25. package/dist/node/element/predicate/has-tab-index.d.ts +1 -1
  26. package/dist/node/element/predicate/has-unique-id.d.ts +3 -2
  27. package/dist/node/element/predicate/has-unique-id.js +21 -20
  28. package/dist/node/element/predicate/index.d.ts +19 -0
  29. package/dist/node/element/predicate/index.js +19 -0
  30. package/dist/node/element/predicate/is-actually-disabled.d.ts +4 -2
  31. package/dist/node/element/predicate/is-actually-disabled.js +37 -38
  32. package/dist/node/element/predicate/is-browsing-context-container.d.ts +1 -1
  33. package/dist/node/element/predicate/is-content.d.ts +4 -2
  34. package/dist/node/element/predicate/is-content.js +2 -4
  35. package/dist/node/element/predicate/is-document-element.d.ts +3 -2
  36. package/dist/node/element/predicate/is-document-element.js +2 -3
  37. package/dist/node/element/predicate/is-draggable.d.ts +1 -1
  38. package/dist/node/element/predicate/is-editing-host.d.ts +1 -1
  39. package/dist/node/element/predicate/is-fallback.d.ts +5 -2
  40. package/dist/node/element/predicate/is-fallback.js +5 -6
  41. package/dist/node/element/predicate/is-replaced.d.ts +1 -1
  42. package/dist/node/element/predicate/is-scoped-to.d.ts +3 -2
  43. package/dist/node/element/predicate/is-scoped-to.js +5 -5
  44. package/dist/node/element/predicate/is-suggested-focusable.d.ts +1 -1
  45. package/dist/node/element/predicate/is-suggested-focusable.js +3 -3
  46. package/dist/node/fragment.d.ts +6 -9
  47. package/dist/node/fragment.js +5 -20
  48. package/dist/node/index.d.ts +56 -0
  49. package/dist/node/index.js +74 -0
  50. package/dist/{node.d.ts → node/node.d.ts} +40 -160
  51. package/dist/{node.js → node/node.js} +57 -92
  52. package/dist/node/predicate/has-box.d.ts +1 -2
  53. package/dist/node/predicate/has-child.d.ts +2 -2
  54. package/dist/node/predicate/has-child.js +2 -3
  55. package/dist/node/predicate/has-descendant.d.ts +2 -2
  56. package/dist/node/predicate/has-descendant.js +2 -3
  57. package/dist/node/predicate/has-inclusive-descendant.d.ts +2 -2
  58. package/dist/node/predicate/has-inclusive-descendant.js +2 -3
  59. package/dist/node/predicate/has-text-content.d.ts +2 -2
  60. package/dist/node/predicate/has-text-content.js +2 -3
  61. package/dist/node/predicate/index.d.ts +7 -0
  62. package/dist/node/predicate/index.js +7 -0
  63. package/dist/node/predicate/is-root.d.ts +1 -1
  64. package/dist/node/query/descendants.d.ts +10 -10
  65. package/dist/node/query/descendants.js +6 -6
  66. package/dist/node/query/element-id-map.d.ts +3 -3
  67. package/dist/node/query/index.d.ts +3 -3
  68. package/dist/node/shadow.d.ts +11 -14
  69. package/dist/node/shadow.js +9 -24
  70. package/dist/node/{element.d.ts → slotable/element.d.ts} +28 -27
  71. package/dist/node/{element.js → slotable/element.js} +40 -51
  72. package/dist/node/slotable/index.d.ts +12 -0
  73. package/dist/node/slotable/index.js +15 -0
  74. package/dist/node/slotable/slot.d.ts +21 -0
  75. package/dist/node/slotable/slot.js +23 -0
  76. package/dist/node/slotable/slotable.d.ts +31 -0
  77. package/dist/node/slotable/slotable.js +16 -0
  78. package/dist/node/{text.d.ts → slotable/text.d.ts} +8 -11
  79. package/dist/node/{text.js → slotable/text.js} +13 -10
  80. package/dist/node/traversal/get-nodes-between.d.ts +2 -2
  81. package/dist/node/traversal/get-nodes-between.js +30 -29
  82. package/dist/node/traversal/index.d.ts +2 -0
  83. package/dist/node/traversal/index.js +2 -0
  84. package/dist/node/traversal/lowest-common-ancestor.d.ts +2 -2
  85. package/dist/node/traversal/lowest-common-ancestor.js +2 -3
  86. package/dist/node/type.d.ts +6 -10
  87. package/dist/node/type.js +2 -9
  88. package/dist/style/declaration.d.ts +2 -2
  89. package/dist/style/index.d.ts +5 -0
  90. package/dist/style/index.js +5 -0
  91. package/dist/style/rule/condition.d.ts +1 -1
  92. package/dist/style/rule/font-face.d.ts +3 -3
  93. package/dist/style/rule/font-face.js +2 -2
  94. package/dist/style/rule/grouping.d.ts +4 -3
  95. package/dist/style/rule/grouping.js +2 -2
  96. package/dist/style/rule/import.d.ts +3 -3
  97. package/dist/style/rule/import.js +2 -4
  98. package/dist/style/rule/index.d.ts +65 -0
  99. package/dist/style/rule/index.js +83 -0
  100. package/dist/style/rule/keyframe.d.ts +3 -3
  101. package/dist/style/rule/keyframe.js +2 -2
  102. package/dist/style/rule/keyframes.d.ts +2 -2
  103. package/dist/style/rule/keyframes.js +2 -3
  104. package/dist/style/rule/layer.d.ts +5 -4
  105. package/dist/style/rule/layer.js +4 -4
  106. package/dist/style/rule/media.d.ts +2 -2
  107. package/dist/style/rule/media.js +2 -3
  108. package/dist/style/rule/namespace.d.ts +3 -3
  109. package/dist/style/rule/namespace.js +2 -2
  110. package/dist/style/rule/page.d.ts +3 -3
  111. package/dist/style/rule/page.js +2 -2
  112. package/dist/style/rule/rule.d.ts +42 -0
  113. package/dist/style/rule/rule.js +64 -0
  114. package/dist/style/rule/style.d.ts +3 -3
  115. package/dist/style/rule/style.js +2 -2
  116. package/dist/style/rule/supports.d.ts +2 -2
  117. package/dist/style/rule/supports.js +2 -3
  118. package/dist/style/sheet.d.ts +1 -1
  119. package/dist/style/sheet.js +2 -2
  120. package/package.json +29 -30
  121. package/dist/node/element/predicate.d.ts +0 -19
  122. package/dist/node/element/predicate.js +0 -19
  123. package/dist/node/predicate.d.ts +0 -7
  124. package/dist/node/predicate.js +0 -7
  125. package/dist/node/slot.d.ts +0 -29
  126. package/dist/node/slot.js +0 -41
  127. package/dist/node/slotable.d.ts +0 -29
  128. package/dist/node/slotable.js +0 -40
  129. package/dist/node/traversal.d.ts +0 -2
  130. package/dist/node/traversal.js +0 -2
  131. package/dist/style/rule.d.ts +0 -60
  132. package/dist/style/rule.js +0 -109
@@ -1,19 +0,0 @@
1
- export * from "./predicate/has-attribute.js";
2
- export * from "./predicate/has-display-size.js";
3
- export * from "./predicate/has-id.js";
4
- export * from "./predicate/has-input-type.js";
5
- export * from "./predicate/has-name.js";
6
- export * from "./predicate/has-namespace.js";
7
- export * from "./predicate/has-tab-index.js";
8
- export * from "./predicate/has-unique-id.js";
9
- export * from "./predicate/is-actually-disabled.js";
10
- export * from "./predicate/is-browsing-context-container.js";
11
- export * from "./predicate/is-content.js";
12
- export * from "./predicate/is-document-element.js";
13
- export * from "./predicate/is-draggable.js";
14
- export * from "./predicate/is-editing-host.js";
15
- export * from "./predicate/is-fallback.js";
16
- export * from "./predicate/is-replaced.js";
17
- export * from "./predicate/is-scoped-to.js";
18
- export * from "./predicate/is-suggested-focusable.js";
19
- //# sourceMappingURL=predicate.js.map
@@ -1,7 +0,0 @@
1
- export * from "./predicate/has-box.js";
2
- export * from "./predicate/has-child.js";
3
- export * from "./predicate/has-descendant.js";
4
- export * from "./predicate/has-inclusive-descendant.js";
5
- export * from "./predicate/has-text-content.js";
6
- export * from "./predicate/is-root.js";
7
- //# sourceMappingURL=predicate.d.ts.map
@@ -1,7 +0,0 @@
1
- export * from "./predicate/has-box.js";
2
- export * from "./predicate/has-child.js";
3
- export * from "./predicate/has-descendant.js";
4
- export * from "./predicate/has-inclusive-descendant.js";
5
- export * from "./predicate/has-text-content.js";
6
- export * from "./predicate/is-root.js";
7
- //# sourceMappingURL=predicate.js.map
@@ -1,29 +0,0 @@
1
- import { Element } from "./element.js";
2
- import { Slotable } from "./slotable.js";
3
- /**
4
- * @public
5
- */
6
- export interface Slot extends Element {
7
- /**
8
- * Get the slotables assigned to this slot.
9
- *
10
- * {@link https://html.spec.whatwg.org/#dom-slot-assignednodes}
11
- */
12
- assignedNodes(): Iterable<Slotable>;
13
- }
14
- /**
15
- * @public
16
- */
17
- export declare namespace Slot {
18
- function isSlot(element: Element): boolean;
19
- function isSlot(value: unknown): value is Slot;
20
- /**
21
- * {@link https://dom.spec.whatwg.org/#slot-name}
22
- */
23
- function name(slot: Slot): string;
24
- /**
25
- * {@link https://dom.spec.whatwg.org/#find-slotables}
26
- */
27
- function findSlotables(slot: Slot): Iterable<Slotable>;
28
- }
29
- //# sourceMappingURL=slot.d.ts.map
package/dist/node/slot.js DELETED
@@ -1,41 +0,0 @@
1
- import { Element } from "./element.js";
2
- import { Shadow } from "./shadow.js";
3
- import { Slotable } from "./slotable.js";
4
- /**
5
- * @public
6
- */
7
- export var Slot;
8
- (function (Slot) {
9
- function isSlot(value) {
10
- return Element.isElement(value) && value.name === "slot";
11
- }
12
- Slot.isSlot = isSlot;
13
- /**
14
- * {@link https://dom.spec.whatwg.org/#slot-name}
15
- */
16
- function name(slot) {
17
- return slot
18
- .attribute("name")
19
- .map((name) => name.value)
20
- .getOr("");
21
- }
22
- Slot.name = name;
23
- /**
24
- * {@link https://dom.spec.whatwg.org/#find-slotables}
25
- */
26
- function* findSlotables(slot) {
27
- const root = slot.root();
28
- if (Shadow.isShadow(root)) {
29
- for (const host of root.host) {
30
- for (const child of host.children()) {
31
- if (Slotable.isSlotable(child) &&
32
- child.assignedSlot().includes(slot)) {
33
- yield child;
34
- }
35
- }
36
- }
37
- }
38
- }
39
- Slot.findSlotables = findSlotables;
40
- })(Slot || (Slot = {}));
41
- //# sourceMappingURL=slot.js.map
@@ -1,29 +0,0 @@
1
- import type { Option } from "@siteimprove/alfa-option";
2
- import type { Node } from "../node.js";
3
- import { Slot } from "./slot.js";
4
- /**
5
- * @public
6
- */
7
- export interface Slotable extends Node {
8
- /**
9
- * Get the slot that this slotable is assigned to.
10
- *
11
- * {@link https://dom.spec.whatwg.org/#dom-slotable-assignedslot}
12
- */
13
- assignedSlot(): Option<Slot>;
14
- }
15
- /**
16
- * @public
17
- */
18
- export declare namespace Slotable {
19
- function isSlotable(value: unknown): value is Slotable;
20
- /**
21
- * {@link https://dom.spec.whatwg.org/#slotable-name}
22
- */
23
- function name(slotable: Slotable): string;
24
- /**
25
- * {@link https://dom.spec.whatwg.org/#find-a-slot}
26
- */
27
- function findSlot(slotable: Slotable): Option<Slot>;
28
- }
29
- //# sourceMappingURL=slotable.d.ts.map
@@ -1,40 +0,0 @@
1
- import { Element } from "./element.js";
2
- import { Slot } from "./slot.js";
3
- import { Text } from "./text.js";
4
- /**
5
- * @public
6
- */
7
- export var Slotable;
8
- (function (Slotable) {
9
- function isSlotable(value) {
10
- return Element.isElement(value) || Text.isText(value);
11
- }
12
- Slotable.isSlotable = isSlotable;
13
- /**
14
- * {@link https://dom.spec.whatwg.org/#slotable-name}
15
- */
16
- function name(slotable) {
17
- return Element.isElement(slotable)
18
- ? slotable
19
- .attribute("slot")
20
- .map((slot) => slot.value)
21
- .getOr("")
22
- : "";
23
- }
24
- Slotable.name = name;
25
- /**
26
- * {@link https://dom.spec.whatwg.org/#find-a-slot}
27
- */
28
- function findSlot(slotable) {
29
- const name = Slotable.name(slotable);
30
- return slotable
31
- .parent()
32
- .filter(Element.isElement)
33
- .flatMap((parent) => parent.shadow.flatMap((shadow) => shadow
34
- .descendants()
35
- .filter(Slot.isSlot)
36
- .find((slot) => Slot.name(slot) === name)));
37
- }
38
- Slotable.findSlot = findSlot;
39
- })(Slotable || (Slotable = {}));
40
- //# sourceMappingURL=slotable.js.map
@@ -1,2 +0,0 @@
1
- export * from "./traversal/get-nodes-between.js";
2
- //# sourceMappingURL=traversal.d.ts.map
@@ -1,2 +0,0 @@
1
- export * from "./traversal/get-nodes-between.js";
2
- //# sourceMappingURL=traversal.js.map
@@ -1,60 +0,0 @@
1
- import type { Equatable } from "@siteimprove/alfa-equatable";
2
- import { Iterable } from "@siteimprove/alfa-iterable";
3
- import type { Serializable } from "@siteimprove/alfa-json";
4
- import { Option } from "@siteimprove/alfa-option";
5
- import type { Trampoline } from "@siteimprove/alfa-trampoline";
6
- import type * as json from "@siteimprove/alfa-json";
7
- import type { Sheet } from "./sheet.js";
8
- import { FontFaceRule, ImportRule, KeyframeRule, KeyframesRule, Layer, MediaRule, NamespaceRule, PageRule, StyleRule, SupportsRule } from "../index.js";
9
- /**
10
- * @public
11
- */
12
- export declare abstract class Rule<T extends string = string> implements Equatable, Serializable {
13
- protected _owner: Option<Sheet>;
14
- protected _parent: Option<Rule>;
15
- private readonly _type;
16
- protected constructor(type: T);
17
- get type(): T;
18
- get owner(): Option<Sheet>;
19
- get parent(): Option<Rule>;
20
- children(): Iterable<Rule>;
21
- descendants(): Iterable<Rule>;
22
- ancestors(): Iterable<Rule>;
23
- inclusiveAncestors(): Iterable<Rule>;
24
- equals(value: unknown): value is this;
25
- toJSON(): Rule.JSON<T>;
26
- /**
27
- * @internal
28
- */
29
- _attachOwner(owner: Sheet): boolean;
30
- /**
31
- * @internal
32
- */
33
- _attachParent(parent: Rule): boolean;
34
- }
35
- /**
36
- * @public
37
- */
38
- export declare namespace Rule {
39
- interface JSON<T extends string = string> {
40
- [key: string]: json.JSON;
41
- type: T;
42
- }
43
- function from(json: FontFaceRule.JSON): FontFaceRule;
44
- function from(json: ImportRule.JSON): ImportRule;
45
- function from(json: KeyframeRule.JSON): KeyframeRule;
46
- function from(json: KeyframesRule.JSON): KeyframesRule;
47
- function from(json: Layer.BlockRule.JSON): Layer.BlockRule;
48
- function from(json: Layer.StatementRule.JSON): Layer.StatementRule;
49
- function from(json: MediaRule.JSON): MediaRule;
50
- function from(json: NamespaceRule.JSON): NamespaceRule;
51
- function from(json: PageRule.JSON): PageRule;
52
- function from(json: StyleRule.JSON): StyleRule;
53
- function from(json: SupportsRule.JSON): SupportsRule;
54
- function from(json: JSON): Rule;
55
- /**
56
- * @internal
57
- */
58
- function fromRule(json: JSON): Trampoline<Rule>;
59
- }
60
- //# sourceMappingURL=rule.d.ts.map
@@ -1,109 +0,0 @@
1
- import { Iterable } from "@siteimprove/alfa-iterable";
2
- import { None, Option } from "@siteimprove/alfa-option";
3
- import { FontFaceRule, ImportRule, KeyframeRule, KeyframesRule, Layer, MediaRule, NamespaceRule, PageRule, StyleRule, SupportsRule, } from "../index.js";
4
- /**
5
- * @public
6
- */
7
- export class Rule {
8
- _owner = None;
9
- _parent = None;
10
- _type;
11
- constructor(type) {
12
- this._type = type;
13
- }
14
- get type() {
15
- return this._type;
16
- }
17
- get owner() {
18
- return this._owner;
19
- }
20
- get parent() {
21
- return this._parent;
22
- }
23
- *children() { }
24
- *descendants() {
25
- for (const child of this.children()) {
26
- yield child;
27
- yield* child.descendants();
28
- }
29
- }
30
- *ancestors() {
31
- for (const parent of this._parent) {
32
- yield parent;
33
- yield* parent.ancestors();
34
- }
35
- }
36
- *inclusiveAncestors() {
37
- yield this;
38
- yield* this.ancestors();
39
- }
40
- equals(value) {
41
- return value === this;
42
- }
43
- toJSON() {
44
- return { type: this._type };
45
- }
46
- /**
47
- * @internal
48
- */
49
- _attachOwner(owner) {
50
- if (this._owner.isSome()) {
51
- return false;
52
- }
53
- this._owner = Option.of(owner);
54
- // Recursively attach the owner to all children.
55
- return Iterable.every(this.children(), (rule) => rule._attachOwner(owner));
56
- }
57
- /**
58
- * @internal
59
- */
60
- _attachParent(parent) {
61
- if (this._parent.isSome()) {
62
- return false;
63
- }
64
- this._parent = Option.of(parent);
65
- return true;
66
- }
67
- }
68
- /**
69
- * @public
70
- */
71
- (function (Rule) {
72
- function from(json) {
73
- return fromRule(json).run();
74
- }
75
- Rule.from = from;
76
- /**
77
- * @internal
78
- */
79
- function fromRule(json) {
80
- switch (json.type) {
81
- case "font-face":
82
- return FontFaceRule.fromFontFaceRule(json);
83
- case "import":
84
- return ImportRule.fromImportRule(json);
85
- case "keyframe":
86
- return KeyframeRule.fromKeyframeRule(json);
87
- case "keyframes":
88
- return KeyframesRule.fromKeyframesRule(json);
89
- case "layer-block":
90
- return Layer.BlockRule.fromLayerBlockRule(json);
91
- case "layer-statement":
92
- return Layer.StatementRule.fromLayerStatementRule(json);
93
- case "media":
94
- return MediaRule.fromMediaRule(json);
95
- case "namespace":
96
- return NamespaceRule.fromNamespaceRule(json);
97
- case "page":
98
- return PageRule.fromPageRule(json);
99
- case "style":
100
- return StyleRule.fromStyleRule(json);
101
- case "supports":
102
- return SupportsRule.fromSupportsRule(json);
103
- default:
104
- throw new Error(`Unexpected rule of type: ${json.type}`);
105
- }
106
- }
107
- Rule.fromRule = fromRule;
108
- })(Rule || (Rule = {}));
109
- //# sourceMappingURL=rule.js.map