pseudo-dom 0.6.0 → 0.8.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 (131) hide show
  1. package/README.md +686 -241
  2. package/browser/pseudo-dom.js +3576 -735
  3. package/browser/pseudo-dom.min.js +1 -1
  4. package/dist/classes/PseudoEventListener.d.ts +96 -96
  5. package/dist/classes/PseudoEventListener.js +151 -151
  6. package/dist/classes/PseudoHTMLDocument.d.ts +17 -43
  7. package/dist/classes/PseudoHTMLDocument.js +24 -94
  8. package/dist/classes/PseudoHTMLDocument.min.js +1 -1
  9. package/dist/classes/PseudoNodeList.d.ts +34 -34
  10. package/dist/classes/PseudoNodeList.js +71 -71
  11. package/dist/factories/createEvent.d.ts +28 -28
  12. package/dist/factories/createEvent.js +56 -56
  13. package/dist/factories/cssSelectAdapter.d.ts +23 -0
  14. package/dist/factories/cssSelectAdapter.js +87 -0
  15. package/dist/factories/cssSelectAdapter.min.js +1 -0
  16. package/dist/factories/eventDefaults.d.ts +31 -31
  17. package/dist/factories/eventDefaults.js +105 -105
  18. package/dist/factories/generateDocument.d.ts +11 -11
  19. package/dist/factories/generateDocument.js +65 -65
  20. package/dist/factories/generateNodeList.d.ts +9 -9
  21. package/dist/factories/generateNodeList.js +13 -13
  22. package/dist/factories/query.d.ts +33 -0
  23. package/dist/factories/query.js +66 -0
  24. package/dist/factories/query.min.js +1 -0
  25. package/dist/functions/activeElement.d.ts +14 -14
  26. package/dist/functions/activeElement.js +33 -33
  27. package/dist/functions/getElementById.d.ts +13 -0
  28. package/dist/functions/getElementById.js +33 -0
  29. package/dist/functions/getElementById.min.js +1 -0
  30. package/dist/functions/getParentNodes.d.ts +11 -11
  31. package/dist/functions/getParentNodes.js +22 -22
  32. package/dist/functions/getParentNodesFromAttribute.d.ts +14 -14
  33. package/dist/functions/getParentNodesFromAttribute.js +29 -29
  34. package/dist/functions/modifierState.d.ts +29 -29
  35. package/dist/functions/modifierState.js +41 -41
  36. package/dist/interfaces/PseudoAnimation.d.ts +3 -3
  37. package/dist/interfaces/PseudoAnimation.js +5 -5
  38. package/dist/interfaces/PseudoAttr.d.ts +11 -11
  39. package/dist/interfaces/PseudoAttr.js +5 -5
  40. package/dist/interfaces/PseudoDOMTokenList.d.ts +16 -16
  41. package/dist/interfaces/PseudoDOMTokenList.js +5 -5
  42. package/dist/interfaces/PseudoDocument.d.ts +32 -0
  43. package/dist/interfaces/PseudoDocument.js +5 -5
  44. package/dist/interfaces/PseudoDocumentFragment.d.ts +7 -0
  45. package/dist/interfaces/PseudoDocumentFragment.js +5 -5
  46. package/dist/interfaces/PseudoElement.d.ts +702 -689
  47. package/dist/interfaces/PseudoElement.js +5 -5
  48. package/dist/interfaces/PseudoEvent.d.ts +79 -79
  49. package/dist/interfaces/PseudoEvent.js +10 -10
  50. package/dist/interfaces/PseudoEventTarget.d.ts +46 -46
  51. package/dist/interfaces/PseudoEventTarget.js +5 -5
  52. package/dist/interfaces/PseudoHTMLCollection.d.ts +23 -23
  53. package/dist/interfaces/PseudoHTMLCollection.js +5 -5
  54. package/dist/interfaces/PseudoHTMLElement.d.ts +22 -22
  55. package/dist/interfaces/PseudoHTMLElement.js +5 -5
  56. package/dist/interfaces/PseudoHTMLSlotElement.d.ts +3 -3
  57. package/dist/interfaces/PseudoHTMLSlotElement.js +5 -5
  58. package/dist/interfaces/PseudoNamedNodeMap.d.ts +11 -11
  59. package/dist/interfaces/PseudoNamedNodeMap.js +5 -5
  60. package/dist/interfaces/PseudoNode.d.ts +179 -179
  61. package/dist/interfaces/PseudoNode.js +5 -5
  62. package/dist/interfaces/PseudoShadowRoot.d.ts +3 -3
  63. package/dist/interfaces/PseudoShadowRoot.js +5 -5
  64. package/dist/main.d.ts +63 -63
  65. package/dist/main.js +155 -155
  66. package/dist/services/AnimationService.d.ts +4 -4
  67. package/dist/services/AnimationService.js +16 -16
  68. package/dist/services/AttrService.d.ts +37 -37
  69. package/dist/services/AttrService.js +81 -81
  70. package/dist/services/CommentService.d.ts +1 -1
  71. package/dist/services/CommentService.js +13 -13
  72. package/dist/services/CustomEventService.d.ts +37 -37
  73. package/dist/services/CustomEventService.js +35 -35
  74. package/dist/services/DOMTokenListService.d.ts +33 -33
  75. package/dist/services/DOMTokenListService.js +117 -117
  76. package/dist/services/DocumentFragmentService.d.ts +8 -0
  77. package/dist/services/DocumentFragmentService.js +18 -0
  78. package/dist/services/DocumentFragmentService.min.js +1 -1
  79. package/dist/services/DocumentService.d.ts +35 -1
  80. package/dist/services/DocumentService.js +72 -0
  81. package/dist/services/DocumentService.min.js +1 -1
  82. package/dist/services/ElementService.d.ts +191 -178
  83. package/dist/services/ElementService.js +426 -406
  84. package/dist/services/ElementService.min.js +1 -1
  85. package/dist/services/EventService.d.ts +120 -120
  86. package/dist/services/EventService.js +250 -250
  87. package/dist/services/EventTargetService.d.ts +84 -84
  88. package/dist/services/EventTargetService.js +232 -232
  89. package/dist/services/FocusEventService.d.ts +32 -32
  90. package/dist/services/FocusEventService.js +35 -35
  91. package/dist/services/HTMLCollectionService.d.ts +54 -49
  92. package/dist/services/HTMLCollectionService.js +92 -75
  93. package/dist/services/HTMLCollectionService.min.js +1 -1
  94. package/dist/services/HTMLElementService.d.ts +57 -57
  95. package/dist/services/HTMLElementService.js +163 -163
  96. package/dist/services/HTMLSlotElementService.d.ts +4 -4
  97. package/dist/services/HTMLSlotElementService.js +9 -9
  98. package/dist/services/InputEventService.d.ts +41 -41
  99. package/dist/services/InputEventService.js +47 -47
  100. package/dist/services/KeyboardEventService.d.ts +70 -70
  101. package/dist/services/KeyboardEventService.js +86 -86
  102. package/dist/services/MouseEventService.d.ts +80 -80
  103. package/dist/services/MouseEventService.js +108 -108
  104. package/dist/services/NamedNodeMapService.d.ts +23 -23
  105. package/dist/services/NamedNodeMapService.js +77 -77
  106. package/dist/services/NodeService.d.ts +297 -271
  107. package/dist/services/NodeService.js +721 -679
  108. package/dist/services/NodeService.min.js +1 -1
  109. package/dist/services/PointerEventService.d.ts +51 -51
  110. package/dist/services/PointerEventService.js +67 -67
  111. package/dist/services/ShadowRootService.d.ts +4 -4
  112. package/dist/services/ShadowRootService.js +9 -9
  113. package/dist/services/TextService.d.ts +1 -1
  114. package/dist/services/TextService.js +13 -13
  115. package/dist/services/UIEventService.d.ts +43 -43
  116. package/dist/services/UIEventService.js +42 -42
  117. package/dist/simulate.d.ts +32 -32
  118. package/dist/simulate.js +115 -115
  119. package/package.json +4 -3
  120. package/dist/classes.d.ts +0 -20
  121. package/dist/classes.js +0 -31
  122. package/dist/classes.min.js +0 -1
  123. package/dist/factories/generateNode.d.ts +0 -32
  124. package/dist/factories/generateNode.js +0 -85
  125. package/dist/factories/generateNode.min.js +0 -1
  126. package/dist/factories.d.ts +0 -11
  127. package/dist/factories.js +0 -27
  128. package/dist/factories.min.js +0 -1
  129. package/dist/functions.d.ts +0 -5
  130. package/dist/functions.js +0 -23
  131. package/dist/functions.min.js +0 -1
@@ -0,0 +1,87 @@
1
+ 'use strict'
2
+
3
+ require('core-js/modules/esnext.iterator.constructor.js')
4
+ require('core-js/modules/esnext.iterator.filter.js')
5
+ require('core-js/modules/esnext.iterator.for-each.js')
6
+ require('core-js/modules/esnext.iterator.some.js')
7
+ Object.defineProperty(exports, '__esModule', {
8
+ value: true
9
+ })
10
+ exports.cssSelectAdapter = void 0
11
+ /**
12
+ * @file The css-select Adapter which lets it query pseudo-dom's own tree, instead of the domutils-based tree it
13
+ * defaults to.
14
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
15
+ * @version 1.0.0
16
+ */
17
+ const NodeService_1 = require('../services/NodeService')
18
+ /**
19
+ * Walk up from a node (not including it) to find the nearest element, in the given direction.
20
+ * @param {*} node The node to start from
21
+ * @param {'nextSibling'|'previousSibling'} direction Which sibling reference to follow
22
+ * @returns {*|null}
23
+ */
24
+ const nearestElementSibling = (node, direction) => {
25
+ let current = node ? node[direction] : null
26
+ while (current && current.nodeType !== NodeService_1.NodeService.ELEMENT_NODE) {
27
+ current = current[direction]
28
+ }
29
+ return current || null
30
+ }
31
+ /**
32
+ * Maps pseudo-dom's own Node / Element API onto the Adapter interface css-select needs to query a tree which is not
33
+ * domutils' own (css-select's own Adapter<Node, ElementNode> type). Every method here is one pseudo-dom already has
34
+ * under a different name; nothing here reimplements DOM behaviour.
35
+ * @memberOf module:factories
36
+ * @type {Object}
37
+ */
38
+ exports.cssSelectAdapter = {
39
+ isTag: node => !!node && node.nodeType === NodeService_1.NodeService.ELEMENT_NODE,
40
+ existsOne: (test, elems) => elems.some(elem => exports.cssSelectAdapter.isTag(elem) && (test(elem) || exports.cssSelectAdapter.existsOne(test, exports.cssSelectAdapter.getChildren(elem)))),
41
+ // pseudo-dom's className / classList are kept in sync with each other, but not with a literal 'class' attribute
42
+ // (there is no such special-cased attribute here, unlike a real DOM) - so the 'class' css-select needs for class
43
+ // selectors is read from className instead.
44
+ getAttributeValue: (elem, name) => {
45
+ const value = name === 'class' ? elem.className : elem.getAttribute(name)
46
+ return value === null || value === undefined ? undefined : value
47
+ },
48
+ getChildren: node => Array.from(node.childNodes),
49
+ getName: elem => elem.tagName,
50
+ getParent: node => node.parentNode,
51
+ // Unlike jQuery's siblings(), this is expected to include the node itself
52
+ getSiblings: node => node.parentNode ? Array.from(node.parentNode.childNodes) : [node],
53
+ prevElementSibling: node => nearestElementSibling(node, 'previousSibling'),
54
+ getText: node => node.textContent || '',
55
+ hasAttrib: (elem, name) => elem.hasAttribute(name),
56
+ removeSubsets: nodes => nodes.filter((node, index) => !nodes.some((other, otherIndex) => otherIndex !== index && typeof other.contains === 'function' && other !== node && other.contains(node))),
57
+ findAll: (test, nodes) => {
58
+ const found = []
59
+ const visit = list => list.forEach(node => {
60
+ if (!exports.cssSelectAdapter.isTag(node)) {
61
+ return
62
+ }
63
+ if (test(node)) {
64
+ found.push(node)
65
+ }
66
+ visit(exports.cssSelectAdapter.getChildren(node))
67
+ })
68
+ visit(nodes)
69
+ return found
70
+ },
71
+ findOne: (test, nodes) => {
72
+ for (const node of nodes) {
73
+ if (!exports.cssSelectAdapter.isTag(node)) {
74
+ continue
75
+ }
76
+ if (test(node)) {
77
+ return node
78
+ }
79
+ const inChildren = exports.cssSelectAdapter.findOne(test, exports.cssSelectAdapter.getChildren(node))
80
+ if (inChildren) {
81
+ return inChildren
82
+ }
83
+ }
84
+ return null
85
+ }
86
+ }
87
+ exports.default = exports.cssSelectAdapter
@@ -0,0 +1 @@
1
+ "use strict";require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.filter.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/esnext.iterator.some.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.cssSelectAdapter=void 0;const NodeService_1=require("../services/NodeService"),nearestElementSibling=(e,t)=>{let r=e?e[t]:null;for(;r&&r.nodeType!==NodeService_1.NodeService.ELEMENT_NODE;)r=r[t];return r||null};exports.cssSelectAdapter={isTag:e=>!!e&&e.nodeType===NodeService_1.NodeService.ELEMENT_NODE,existsOne:(e,t)=>t.some(t=>exports.cssSelectAdapter.isTag(t)&&(e(t)||exports.cssSelectAdapter.existsOne(e,exports.cssSelectAdapter.getChildren(t)))),getAttributeValue:(e,t)=>{const r="class"===t?e.className:e.getAttribute(t);return null==r?void 0:r},getChildren:e=>Array.from(e.childNodes),getName:e=>e.tagName,getParent:e=>e.parentNode,getSiblings:e=>e.parentNode?Array.from(e.parentNode.childNodes):[e],prevElementSibling:e=>nearestElementSibling(e,"previousSibling"),getText:e=>e.textContent||"",hasAttrib:(e,t)=>e.hasAttribute(t),removeSubsets:e=>e.filter((t,r)=>!e.some((e,s)=>s!==r&&"function"==typeof e.contains&&e!==t&&e.contains(t))),findAll:(e,t)=>{const r=[],s=t=>t.forEach(t=>{exports.cssSelectAdapter.isTag(t)&&(e(t)&&r.push(t),s(exports.cssSelectAdapter.getChildren(t)))});return s(t),r},findOne:(e,t)=>{for(const r of t){if(!exports.cssSelectAdapter.isTag(r))continue;if(e(r))return r;const t=exports.cssSelectAdapter.findOne(e,exports.cssSelectAdapter.getChildren(r));if(t)return t}return null}},exports.default=exports.cssSelectAdapter;
@@ -1,31 +1,31 @@
1
- /**
2
- * @file The standard event types of the browser, and how the browser creates them.
3
- * @author Joshua Heagle <joshuaheagle@gmail.com>
4
- * @version 1.0.0
5
- */
6
- /**
7
- * How the browser creates an event of a standard type: whether it bubbles, whether it can be cancelled, whether it
8
- * crosses the boundary of a shadow tree, and which kind of event object it is.
9
- * @typedef {Object} EventDefinition
10
- * @property {boolean} bubbles - After the target, the event goes back up through the ancestors (the capture phase, going down, always happens)
11
- * @property {boolean} cancelable - preventDefault() can stop the default action
12
- * @property {boolean} composed - The event crosses the boundary of a shadow tree
13
- * @property {string} interface - The kind of event object: Event, UIEvent, MouseEvent, PointerEvent, KeyboardEvent, FocusEvent, InputEvent or CustomEvent
14
- */
15
- export type EventDefinition = {
16
- bubbles: boolean;
17
- cancelable: boolean;
18
- composed: boolean;
19
- interface: 'Event' | 'UIEvent' | 'MouseEvent' | 'PointerEvent' | 'KeyboardEvent' | 'FocusEvent' | 'InputEvent' | 'CustomEvent';
20
- };
21
- /**
22
- * The events which the browser itself creates (for a user action, or for something like element.click()) have these
23
- * options. A script which creates an event with the constructor gets none of them (everything is false) unless it asks
24
- * for them, which is why createEvent only uses this table when it is told the browser is creating the event.
25
- * The values follow the UI Events, HTML, Pointer Events, Clipboard, Drag and Drop, Touch and CSS specifications.
26
- * @type {Object.<string, EventDefinition>}
27
- */
28
- export declare const eventDefaults: {
29
- [type: string]: EventDefinition;
30
- };
31
- export default eventDefaults;
1
+ /**
2
+ * @file The standard event types of the browser, and how the browser creates them.
3
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
4
+ * @version 1.0.0
5
+ */
6
+ /**
7
+ * How the browser creates an event of a standard type: whether it bubbles, whether it can be cancelled, whether it
8
+ * crosses the boundary of a shadow tree, and which kind of event object it is.
9
+ * @typedef {Object} EventDefinition
10
+ * @property {boolean} bubbles - After the target, the event goes back up through the ancestors (the capture phase, going down, always happens)
11
+ * @property {boolean} cancelable - preventDefault() can stop the default action
12
+ * @property {boolean} composed - The event crosses the boundary of a shadow tree
13
+ * @property {string} interface - The kind of event object: Event, UIEvent, MouseEvent, PointerEvent, KeyboardEvent, FocusEvent, InputEvent or CustomEvent
14
+ */
15
+ export type EventDefinition = {
16
+ bubbles: boolean;
17
+ cancelable: boolean;
18
+ composed: boolean;
19
+ interface: 'Event' | 'UIEvent' | 'MouseEvent' | 'PointerEvent' | 'KeyboardEvent' | 'FocusEvent' | 'InputEvent' | 'CustomEvent';
20
+ };
21
+ /**
22
+ * The events which the browser itself creates (for a user action, or for something like element.click()) have these
23
+ * options. A script which creates an event with the constructor gets none of them (everything is false) unless it asks
24
+ * for them, which is why createEvent only uses this table when it is told the browser is creating the event.
25
+ * The values follow the UI Events, HTML, Pointer Events, Clipboard, Drag and Drop, Touch and CSS specifications.
26
+ * @type {Object.<string, EventDefinition>}
27
+ */
28
+ export declare const eventDefaults: {
29
+ [type: string]: EventDefinition;
30
+ };
31
+ export default eventDefaults;
@@ -1,105 +1,105 @@
1
- 'use strict'
2
-
3
- /**
4
- * @file The standard event types of the browser, and how the browser creates them.
5
- * @author Joshua Heagle <joshuaheagle@gmail.com>
6
- * @version 1.0.0
7
- */
8
- Object.defineProperty(exports, '__esModule', {
9
- value: true
10
- })
11
- exports.eventDefaults = void 0
12
- const define = (bubbles, cancelable, composed, eventInterface = 'Event') => ({
13
- bubbles,
14
- cancelable,
15
- composed,
16
- interface: eventInterface
17
- })
18
- /**
19
- * The events which the browser itself creates (for a user action, or for something like element.click()) have these
20
- * options. A script which creates an event with the constructor gets none of them (everything is false) unless it asks
21
- * for them, which is why createEvent only uses this table when it is told the browser is creating the event.
22
- * The values follow the UI Events, HTML, Pointer Events, Clipboard, Drag and Drop, Touch and CSS specifications.
23
- * @type {Object.<string, EventDefinition>}
24
- */
25
- exports.eventDefaults = {
26
- // Mouse (UI Events)
27
- click: define(true, true, true, 'MouseEvent'),
28
- auxclick: define(true, true, true, 'MouseEvent'),
29
- dblclick: define(true, true, true, 'MouseEvent'),
30
- contextmenu: define(true, true, true, 'MouseEvent'),
31
- mousedown: define(true, true, true, 'MouseEvent'),
32
- mouseup: define(true, true, true, 'MouseEvent'),
33
- mousemove: define(true, true, true, 'MouseEvent'),
34
- mouseover: define(true, true, true, 'MouseEvent'),
35
- mouseout: define(true, true, true, 'MouseEvent'),
36
- mouseenter: define(false, false, true, 'MouseEvent'),
37
- mouseleave: define(false, false, true, 'MouseEvent'),
38
- wheel: define(true, true, true, 'MouseEvent'),
39
- // Pointer (Pointer Events)
40
- pointerdown: define(true, true, true, 'PointerEvent'),
41
- pointerup: define(true, true, true, 'PointerEvent'),
42
- pointermove: define(true, true, true, 'PointerEvent'),
43
- pointerover: define(true, true, true, 'PointerEvent'),
44
- pointerout: define(true, true, true, 'PointerEvent'),
45
- pointerenter: define(false, false, true, 'PointerEvent'),
46
- pointerleave: define(false, false, true, 'PointerEvent'),
47
- pointercancel: define(true, false, true, 'PointerEvent'),
48
- gotpointercapture: define(true, false, true, 'PointerEvent'),
49
- lostpointercapture: define(true, false, true, 'PointerEvent'),
50
- // Keyboard (UI Events)
51
- keydown: define(true, true, true, 'KeyboardEvent'),
52
- keypress: define(true, true, true, 'KeyboardEvent'),
53
- keyup: define(true, true, true, 'KeyboardEvent'),
54
- // Focus (UI Events): focus and blur do not bubble, focusin and focusout do
55
- focus: define(false, false, true, 'FocusEvent'),
56
- blur: define(false, false, true, 'FocusEvent'),
57
- focusin: define(true, false, true, 'FocusEvent'),
58
- focusout: define(true, false, true, 'FocusEvent'),
59
- // Forms (HTML, Input Events)
60
- beforeinput: define(true, true, true, 'InputEvent'),
61
- input: define(true, false, true, 'InputEvent'),
62
- change: define(true, false, false),
63
- select: define(true, false, false),
64
- submit: define(true, true, false),
65
- reset: define(true, true, false),
66
- invalid: define(false, true, false),
67
- toggle: define(false, false, false),
68
- // Loading and the page (HTML)
69
- load: define(false, false, false),
70
- error: define(false, false, false),
71
- abort: define(false, false, false),
72
- scroll: define(false, false, false),
73
- scrollend: define(false, false, false),
74
- resize: define(false, false, false),
75
- DOMContentLoaded: define(true, false, false),
76
- readystatechange: define(false, false, false),
77
- visibilitychange: define(true, false, false),
78
- // Clipboard
79
- copy: define(true, true, true),
80
- cut: define(true, true, true),
81
- paste: define(true, true, true),
82
- // Drag and drop
83
- drag: define(true, true, true, 'MouseEvent'),
84
- dragstart: define(true, true, true, 'MouseEvent'),
85
- dragend: define(true, false, true, 'MouseEvent'),
86
- dragenter: define(true, true, true, 'MouseEvent'),
87
- dragover: define(true, true, true, 'MouseEvent'),
88
- dragleave: define(true, false, true, 'MouseEvent'),
89
- drop: define(true, true, true, 'MouseEvent'),
90
- // Touch
91
- touchstart: define(true, true, true, 'UIEvent'),
92
- touchmove: define(true, true, true, 'UIEvent'),
93
- touchend: define(true, true, true, 'UIEvent'),
94
- touchcancel: define(true, false, true, 'UIEvent'),
95
- // Animations and transitions (CSS)
96
- animationstart: define(true, false, false),
97
- animationiteration: define(true, false, false),
98
- animationend: define(true, false, false),
99
- animationcancel: define(true, false, false),
100
- transitionrun: define(true, false, false),
101
- transitionstart: define(true, false, false),
102
- transitionend: define(true, false, false),
103
- transitioncancel: define(true, false, false)
104
- }
105
- exports.default = exports.eventDefaults
1
+ 'use strict'
2
+
3
+ /**
4
+ * @file The standard event types of the browser, and how the browser creates them.
5
+ * @author Joshua Heagle <joshuaheagle@gmail.com>
6
+ * @version 1.0.0
7
+ */
8
+ Object.defineProperty(exports, '__esModule', {
9
+ value: true
10
+ })
11
+ exports.eventDefaults = void 0
12
+ const define = (bubbles, cancelable, composed, eventInterface = 'Event') => ({
13
+ bubbles,
14
+ cancelable,
15
+ composed,
16
+ interface: eventInterface
17
+ })
18
+ /**
19
+ * The events which the browser itself creates (for a user action, or for something like element.click()) have these
20
+ * options. A script which creates an event with the constructor gets none of them (everything is false) unless it asks
21
+ * for them, which is why createEvent only uses this table when it is told the browser is creating the event.
22
+ * The values follow the UI Events, HTML, Pointer Events, Clipboard, Drag and Drop, Touch and CSS specifications.
23
+ * @type {Object.<string, EventDefinition>}
24
+ */
25
+ exports.eventDefaults = {
26
+ // Mouse (UI Events)
27
+ click: define(true, true, true, 'MouseEvent'),
28
+ auxclick: define(true, true, true, 'MouseEvent'),
29
+ dblclick: define(true, true, true, 'MouseEvent'),
30
+ contextmenu: define(true, true, true, 'MouseEvent'),
31
+ mousedown: define(true, true, true, 'MouseEvent'),
32
+ mouseup: define(true, true, true, 'MouseEvent'),
33
+ mousemove: define(true, true, true, 'MouseEvent'),
34
+ mouseover: define(true, true, true, 'MouseEvent'),
35
+ mouseout: define(true, true, true, 'MouseEvent'),
36
+ mouseenter: define(false, false, true, 'MouseEvent'),
37
+ mouseleave: define(false, false, true, 'MouseEvent'),
38
+ wheel: define(true, true, true, 'MouseEvent'),
39
+ // Pointer (Pointer Events)
40
+ pointerdown: define(true, true, true, 'PointerEvent'),
41
+ pointerup: define(true, true, true, 'PointerEvent'),
42
+ pointermove: define(true, true, true, 'PointerEvent'),
43
+ pointerover: define(true, true, true, 'PointerEvent'),
44
+ pointerout: define(true, true, true, 'PointerEvent'),
45
+ pointerenter: define(false, false, true, 'PointerEvent'),
46
+ pointerleave: define(false, false, true, 'PointerEvent'),
47
+ pointercancel: define(true, false, true, 'PointerEvent'),
48
+ gotpointercapture: define(true, false, true, 'PointerEvent'),
49
+ lostpointercapture: define(true, false, true, 'PointerEvent'),
50
+ // Keyboard (UI Events)
51
+ keydown: define(true, true, true, 'KeyboardEvent'),
52
+ keypress: define(true, true, true, 'KeyboardEvent'),
53
+ keyup: define(true, true, true, 'KeyboardEvent'),
54
+ // Focus (UI Events): focus and blur do not bubble, focusin and focusout do
55
+ focus: define(false, false, true, 'FocusEvent'),
56
+ blur: define(false, false, true, 'FocusEvent'),
57
+ focusin: define(true, false, true, 'FocusEvent'),
58
+ focusout: define(true, false, true, 'FocusEvent'),
59
+ // Forms (HTML, Input Events)
60
+ beforeinput: define(true, true, true, 'InputEvent'),
61
+ input: define(true, false, true, 'InputEvent'),
62
+ change: define(true, false, false),
63
+ select: define(true, false, false),
64
+ submit: define(true, true, false),
65
+ reset: define(true, true, false),
66
+ invalid: define(false, true, false),
67
+ toggle: define(false, false, false),
68
+ // Loading and the page (HTML)
69
+ load: define(false, false, false),
70
+ error: define(false, false, false),
71
+ abort: define(false, false, false),
72
+ scroll: define(false, false, false),
73
+ scrollend: define(false, false, false),
74
+ resize: define(false, false, false),
75
+ DOMContentLoaded: define(true, false, false),
76
+ readystatechange: define(false, false, false),
77
+ visibilitychange: define(true, false, false),
78
+ // Clipboard
79
+ copy: define(true, true, true),
80
+ cut: define(true, true, true),
81
+ paste: define(true, true, true),
82
+ // Drag and drop
83
+ drag: define(true, true, true, 'MouseEvent'),
84
+ dragstart: define(true, true, true, 'MouseEvent'),
85
+ dragend: define(true, false, true, 'MouseEvent'),
86
+ dragenter: define(true, true, true, 'MouseEvent'),
87
+ dragover: define(true, true, true, 'MouseEvent'),
88
+ dragleave: define(true, false, true, 'MouseEvent'),
89
+ drop: define(true, true, true, 'MouseEvent'),
90
+ // Touch
91
+ touchstart: define(true, true, true, 'UIEvent'),
92
+ touchmove: define(true, true, true, 'UIEvent'),
93
+ touchend: define(true, true, true, 'UIEvent'),
94
+ touchcancel: define(true, false, true, 'UIEvent'),
95
+ // Animations and transitions (CSS)
96
+ animationstart: define(true, false, false),
97
+ animationiteration: define(true, false, false),
98
+ animationend: define(true, false, false),
99
+ animationcancel: define(true, false, false),
100
+ transitionrun: define(true, false, false),
101
+ transitionstart: define(true, false, false),
102
+ transitionend: define(true, false, false),
103
+ transitioncancel: define(true, false, false)
104
+ }
105
+ exports.default = exports.eventDefaults
@@ -1,11 +1,11 @@
1
- import PseudoEventTarget from '../services/EventTargetService';
2
- /**
3
- * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
4
- * context.
5
- * @function generateDocument
6
- * @param {Object} root
7
- * @param {Object} context
8
- * @returns {Window|PseudoEventTarget}
9
- */
10
- declare const generateDocument: (root: Window | any, context?: object) => Window | PseudoEventTarget;
11
- export default generateDocument;
1
+ import PseudoEventTarget from '../services/EventTargetService';
2
+ /**
3
+ * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
4
+ * context.
5
+ * @function generateDocument
6
+ * @param {Object} root
7
+ * @param {Object} context
8
+ * @returns {Window|PseudoEventTarget}
9
+ */
10
+ declare const generateDocument: (root: Window | any, context?: object) => Window | PseudoEventTarget;
11
+ export default generateDocument;
@@ -1,65 +1,65 @@
1
- 'use strict'
2
-
3
- const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
- return mod && mod.__esModule
5
- ? mod
6
- : {
7
- default: mod
8
- }
9
- }
10
- Object.defineProperty(exports, '__esModule', {
11
- value: true
12
- })
13
- const EventTargetService_1 = __importDefault(require('../services/EventTargetService'))
14
- const NodeService_1 = require('../services/NodeService')
15
- const ElementService_1 = require('../services/ElementService')
16
- const HTMLElementService_1 = require('../services/HTMLElementService')
17
- const PseudoHTMLDocument_1 = __importDefault(require('../classes/PseudoHTMLDocument'))
18
- /**
19
- * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
20
- * context.
21
- * @function generateDocument
22
- * @param {Object} root
23
- * @param {Object} context
24
- * @returns {Window|PseudoEventTarget}
25
- */
26
- const generateDocument = (root, context = {}) => {
27
- /**
28
- *
29
- * @type {Window|PseudoEventTarget}
30
- */
31
- const newWindow = typeof root.document === 'undefined' ? root : new EventTargetService_1.default()
32
- /**
33
- * @type {Node|PseudoNode}
34
- */
35
- const Node = root.Node || new NodeService_1.NodeService()
36
- if (typeof newWindow.Node === 'undefined') {
37
- newWindow.Node = Node
38
- }
39
- /**
40
- *
41
- * @type {Element|PseudoElement}
42
- */
43
- const Element = root.Element || new ElementService_1.ElementService()
44
- if (typeof newWindow.Element === 'undefined') {
45
- newWindow.Element = Element
46
- }
47
- /**
48
- * Create an instance of HTMLElement if not available
49
- * @type {HTMLElement|PseudoHTMLElement}
50
- */
51
- const HTMLElement = root.HTMLElement || new HTMLElementService_1.HTMLElementService()
52
- if (typeof newWindow.HTMLElement === 'undefined') {
53
- newWindow.HTMLElement = HTMLElement
54
- }
55
- /**
56
- * Define document when not available
57
- * @type {Document|PseudoHTMLDocument}
58
- */
59
- const document = root.document || new PseudoHTMLDocument_1.default()
60
- if (typeof newWindow.document === 'undefined') {
61
- newWindow.document = document
62
- }
63
- return context ? Object.assign(context, newWindow) : Object.assign(root, newWindow)
64
- }
65
- exports.default = generateDocument
1
+ 'use strict'
2
+
3
+ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule
5
+ ? mod
6
+ : {
7
+ default: mod
8
+ }
9
+ }
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ })
13
+ const EventTargetService_1 = __importDefault(require('../services/EventTargetService'))
14
+ const NodeService_1 = require('../services/NodeService')
15
+ const ElementService_1 = require('../services/ElementService')
16
+ const HTMLElementService_1 = require('../services/HTMLElementService')
17
+ const PseudoHTMLDocument_1 = __importDefault(require('../classes/PseudoHTMLDocument'))
18
+ /**
19
+ * Construct the Pseudo Dom to provide access to Dom objects which are otherwise not available outside the browser
20
+ * context.
21
+ * @function generateDocument
22
+ * @param {Object} root
23
+ * @param {Object} context
24
+ * @returns {Window|PseudoEventTarget}
25
+ */
26
+ const generateDocument = (root, context = {}) => {
27
+ /**
28
+ *
29
+ * @type {Window|PseudoEventTarget}
30
+ */
31
+ const newWindow = typeof root.document === 'undefined' ? root : new EventTargetService_1.default()
32
+ /**
33
+ * @type {Node|PseudoNode}
34
+ */
35
+ const Node = root.Node || new NodeService_1.NodeService()
36
+ if (typeof newWindow.Node === 'undefined') {
37
+ newWindow.Node = Node
38
+ }
39
+ /**
40
+ *
41
+ * @type {Element|PseudoElement}
42
+ */
43
+ const Element = root.Element || new ElementService_1.ElementService()
44
+ if (typeof newWindow.Element === 'undefined') {
45
+ newWindow.Element = Element
46
+ }
47
+ /**
48
+ * Create an instance of HTMLElement if not available
49
+ * @type {HTMLElement|PseudoHTMLElement}
50
+ */
51
+ const HTMLElement = root.HTMLElement || new HTMLElementService_1.HTMLElementService()
52
+ if (typeof newWindow.HTMLElement === 'undefined') {
53
+ newWindow.HTMLElement = HTMLElement
54
+ }
55
+ /**
56
+ * Define document when not available
57
+ * @type {Document|PseudoHTMLDocument}
58
+ */
59
+ const document = root.document || new PseudoHTMLDocument_1.default()
60
+ if (typeof newWindow.document === 'undefined') {
61
+ newWindow.document = document
62
+ }
63
+ return context ? Object.assign(context, newWindow) : Object.assign(root, newWindow)
64
+ }
65
+ exports.default = generateDocument
@@ -1,9 +1,9 @@
1
- import { PseudoNodeList } from '../classes/PseudoNodeList';
2
- import { TreeLinker } from 'collect-your-stuff/dist/collections/linked-tree-list/TreeLinker';
3
- /**
4
- * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
5
- * @param {TreeLinker|null} [innerList=null]
6
- * @returns {PseudoNodeList}
7
- */
8
- declare const generateNodeList: (innerList?: TreeLinker | null) => PseudoNodeList;
9
- export default generateNodeList;
1
+ import { PseudoNodeList } from '../classes/PseudoNodeList';
2
+ import { TreeLinker } from 'collect-your-stuff/dist/collections/linked-tree-list/TreeLinker';
3
+ /**
4
+ * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
5
+ * @param {TreeLinker|null} [innerList=null]
6
+ * @returns {PseudoNodeList}
7
+ */
8
+ declare const generateNodeList: (innerList?: TreeLinker | null) => PseudoNodeList;
9
+ export default generateNodeList;
@@ -1,13 +1,13 @@
1
- 'use strict'
2
-
3
- Object.defineProperty(exports, '__esModule', {
4
- value: true
5
- })
6
- const PseudoNodeList_1 = require('../classes/PseudoNodeList')
7
- /**
8
- * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
9
- * @param {TreeLinker|null} [innerList=null]
10
- * @returns {PseudoNodeList}
11
- */
12
- const generateNodeList = (innerList = null) => new PseudoNodeList_1.PseudoNodeList().initialize(innerList)
13
- exports.default = generateNodeList
1
+ 'use strict'
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true
5
+ })
6
+ const PseudoNodeList_1 = require('../classes/PseudoNodeList')
7
+ /**
8
+ * Create a PseudoNodeList, optionally starting from an existing chain of linkers.
9
+ * @param {TreeLinker|null} [innerList=null]
10
+ * @returns {PseudoNodeList}
11
+ */
12
+ const generateNodeList = (innerList = null) => new PseudoNodeList_1.PseudoNodeList().initialize(innerList)
13
+ exports.default = generateNodeList
@@ -0,0 +1,33 @@
1
+ /**
2
+ * All of the elements below (not including) scope which match the selector, in tree order.
3
+ * @memberOf module:factories
4
+ * @param {string} selector A CSS selector
5
+ * @param {*} scope The node to search below
6
+ * @returns {Array<*>}
7
+ */
8
+ export declare const querySelectorAll: (selector: string, scope: any) => Array<any>;
9
+ /**
10
+ * The first element below (not including) scope which matches the selector, in tree order, or null when there is none.
11
+ * @memberOf module:factories
12
+ * @param {string} selector A CSS selector
13
+ * @param {*} scope The node to search below
14
+ * @returns {*|null}
15
+ */
16
+ export declare const querySelector: (selector: string, scope: any) => any | null;
17
+ /**
18
+ * Whether an element itself (not its descendants) matches the selector.
19
+ * @memberOf module:factories
20
+ * @param {*} element The element to test
21
+ * @param {string} selector A CSS selector
22
+ * @returns {boolean}
23
+ */
24
+ export declare const matches: (element: any, selector: string) => boolean;
25
+ /**
26
+ * The nearest ancestor of an element (starting with the element itself) which matches the selector, or null when
27
+ * none of them do.
28
+ * @memberOf module:factories
29
+ * @param {*} element The element to start from
30
+ * @param {string} selector A CSS selector
31
+ * @returns {*|null}
32
+ */
33
+ export declare const closest: (element: any, selector: string) => any | null;