pseudo-dom 0.3.0 → 0.4.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/README.md +774 -0
- package/browser/pseudo-dom.js +1266 -260
- package/browser/pseudo-dom.min.js +1 -1
- package/dist/factories/createEvent.d.ts +28 -0
- package/dist/factories/createEvent.js +56 -0
- package/dist/factories/createEvent.min.js +1 -0
- package/dist/factories/eventDefaults.d.ts +31 -0
- package/dist/factories/eventDefaults.js +105 -0
- package/dist/factories/eventDefaults.min.js +1 -0
- package/dist/factories.d.ts +6 -0
- package/dist/factories.js +5 -1
- package/dist/factories.min.js +1 -1
- package/dist/functions/activeElement.d.ts +14 -0
- package/dist/functions/activeElement.js +33 -0
- package/dist/functions/activeElement.min.js +1 -0
- package/dist/functions/modifierState.d.ts +29 -0
- package/dist/functions/modifierState.js +41 -0
- package/dist/functions/modifierState.min.js +1 -0
- package/dist/main.d.ts +32 -1
- package/dist/main.js +66 -1
- package/dist/main.min.js +1 -1
- package/dist/services/CustomEventService.d.ts +37 -0
- package/dist/services/CustomEventService.js +35 -0
- package/dist/services/CustomEventService.min.js +1 -0
- package/dist/services/ElementService.js +13 -13
- package/dist/services/ElementService.min.js +1 -1
- package/dist/services/EventService.d.ts +2 -0
- package/dist/services/EventService.js +7 -1
- package/dist/services/EventService.min.js +1 -1
- package/dist/services/FocusEventService.d.ts +32 -0
- package/dist/services/FocusEventService.js +35 -0
- package/dist/services/FocusEventService.min.js +1 -0
- package/dist/services/HTMLElementService.d.ts +20 -0
- package/dist/services/HTMLElementService.js +95 -0
- package/dist/services/HTMLElementService.min.js +1 -1
- package/dist/services/InputEventService.d.ts +41 -0
- package/dist/services/InputEventService.js +47 -0
- package/dist/services/InputEventService.min.js +1 -0
- package/dist/services/KeyboardEventService.d.ts +70 -0
- package/dist/services/KeyboardEventService.js +86 -0
- package/dist/services/KeyboardEventService.min.js +1 -0
- package/dist/services/MouseEventService.d.ts +80 -0
- package/dist/services/MouseEventService.js +108 -0
- package/dist/services/MouseEventService.min.js +1 -0
- package/dist/services/PointerEventService.d.ts +51 -0
- package/dist/services/PointerEventService.js +67 -0
- package/dist/services/PointerEventService.min.js +1 -0
- package/dist/services/UIEventService.d.ts +43 -0
- package/dist/services/UIEventService.js +42 -0
- package/dist/services/UIEventService.min.js +1 -0
- package/dist/simulate.d.ts +32 -0
- package/dist/simulate.js +115 -0
- package/dist/simulate.min.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +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;
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.eventDefaults=void 0;const define=(e,n,t,i="Event")=>({bubbles:e,cancelable:n,composed:t,interface:i});exports.eventDefaults={click:define(!0,!0,!0,"MouseEvent"),auxclick:define(!0,!0,!0,"MouseEvent"),dblclick:define(!0,!0,!0,"MouseEvent"),contextmenu:define(!0,!0,!0,"MouseEvent"),mousedown:define(!0,!0,!0,"MouseEvent"),mouseup:define(!0,!0,!0,"MouseEvent"),mousemove:define(!0,!0,!0,"MouseEvent"),mouseover:define(!0,!0,!0,"MouseEvent"),mouseout:define(!0,!0,!0,"MouseEvent"),mouseenter:define(!1,!1,!0,"MouseEvent"),mouseleave:define(!1,!1,!0,"MouseEvent"),wheel:define(!0,!0,!0,"MouseEvent"),pointerdown:define(!0,!0,!0,"PointerEvent"),pointerup:define(!0,!0,!0,"PointerEvent"),pointermove:define(!0,!0,!0,"PointerEvent"),pointerover:define(!0,!0,!0,"PointerEvent"),pointerout:define(!0,!0,!0,"PointerEvent"),pointerenter:define(!1,!1,!0,"PointerEvent"),pointerleave:define(!1,!1,!0,"PointerEvent"),pointercancel:define(!0,!1,!0,"PointerEvent"),gotpointercapture:define(!0,!1,!0,"PointerEvent"),lostpointercapture:define(!0,!1,!0,"PointerEvent"),keydown:define(!0,!0,!0,"KeyboardEvent"),keypress:define(!0,!0,!0,"KeyboardEvent"),keyup:define(!0,!0,!0,"KeyboardEvent"),focus:define(!1,!1,!0,"FocusEvent"),blur:define(!1,!1,!0,"FocusEvent"),focusin:define(!0,!1,!0,"FocusEvent"),focusout:define(!0,!1,!0,"FocusEvent"),beforeinput:define(!0,!0,!0,"InputEvent"),input:define(!0,!1,!0,"InputEvent"),change:define(!0,!1,!1),select:define(!0,!1,!1),submit:define(!0,!0,!1),reset:define(!0,!0,!1),invalid:define(!1,!0,!1),toggle:define(!1,!1,!1),load:define(!1,!1,!1),error:define(!1,!1,!1),abort:define(!1,!1,!1),scroll:define(!1,!1,!1),scrollend:define(!1,!1,!1),resize:define(!1,!1,!1),DOMContentLoaded:define(!0,!1,!1),readystatechange:define(!1,!1,!1),visibilitychange:define(!0,!1,!1),copy:define(!0,!0,!0),cut:define(!0,!0,!0),paste:define(!0,!0,!0),drag:define(!0,!0,!0,"MouseEvent"),dragstart:define(!0,!0,!0,"MouseEvent"),dragend:define(!0,!1,!0,"MouseEvent"),dragenter:define(!0,!0,!0,"MouseEvent"),dragover:define(!0,!0,!0,"MouseEvent"),dragleave:define(!0,!1,!0,"MouseEvent"),drop:define(!0,!0,!0,"MouseEvent"),touchstart:define(!0,!0,!0,"UIEvent"),touchmove:define(!0,!0,!0,"UIEvent"),touchend:define(!0,!0,!0,"UIEvent"),touchcancel:define(!0,!1,!0,"UIEvent"),animationstart:define(!0,!1,!1),animationiteration:define(!0,!1,!1),animationend:define(!0,!1,!1),animationcancel:define(!0,!1,!1),transitionrun:define(!0,!1,!1),transitionstart:define(!0,!1,!1),transitionend:define(!0,!1,!1),transitioncancel:define(!0,!1,!1)},exports.default=exports.eventDefaults;
|
package/dist/factories.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
2
|
generateNode: () => typeof import("./factories/generateNode").NodeFactory;
|
|
3
3
|
nodeListFactory: (innerList?: import("collect-your-stuff/dist/collections/linked-tree-list/TreeLinker").TreeLinker | null) => import("./classes/PseudoNodeList").PseudoNodeList;
|
|
4
|
+
createEvent: (type: string, init?: {
|
|
5
|
+
[option: string]: any;
|
|
6
|
+
}, { browser, trusted }?: import("./factories/createEvent").CreateEventOptions) => import("./main").PseudoEvent;
|
|
7
|
+
eventDefaults: {
|
|
8
|
+
[type: string]: import("./factories/eventDefaults").EventDefinition;
|
|
9
|
+
};
|
|
4
10
|
};
|
|
5
11
|
export default _default;
|
package/dist/factories.js
CHANGED
|
@@ -17,7 +17,11 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
17
17
|
*/
|
|
18
18
|
const generateNode_1 = __importDefault(require('./factories/generateNode'))
|
|
19
19
|
const generateNodeList_1 = __importDefault(require('./factories/generateNodeList'))
|
|
20
|
+
const createEvent_1 = __importDefault(require('./factories/createEvent'))
|
|
21
|
+
const eventDefaults_1 = __importDefault(require('./factories/eventDefaults'))
|
|
20
22
|
exports.default = {
|
|
21
23
|
generateNode: generateNode_1.default,
|
|
22
|
-
nodeListFactory: generateNodeList_1.default
|
|
24
|
+
nodeListFactory: generateNodeList_1.default,
|
|
25
|
+
createEvent: createEvent_1.default,
|
|
26
|
+
eventDefaults: eventDefaults_1.default
|
|
23
27
|
}
|
package/dist/factories.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const generateNode_1=__importDefault(require("./factories/generateNode")),generateNodeList_1=__importDefault(require("./factories/generateNodeList"));exports.default={generateNode:generateNode_1.default,nodeListFactory:generateNodeList_1.default};
|
|
1
|
+
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const generateNode_1=__importDefault(require("./factories/generateNode")),generateNodeList_1=__importDefault(require("./factories/generateNodeList")),createEvent_1=__importDefault(require("./factories/createEvent")),eventDefaults_1=__importDefault(require("./factories/eventDefaults"));exports.default={generateNode:generateNode_1.default,nodeListFactory:generateNodeList_1.default,createEvent:createEvent_1.default,eventDefaults:eventDefaults_1.default};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find the element which has the focus in a tree.
|
|
3
|
+
* @function getActiveElement
|
|
4
|
+
* @param {Object} root The root node of the tree
|
|
5
|
+
* @returns {Object|null}
|
|
6
|
+
*/
|
|
7
|
+
export declare const getActiveElement: (root: object) => any | null;
|
|
8
|
+
/**
|
|
9
|
+
* Remember the element which has the focus in a tree.
|
|
10
|
+
* @function setActiveElement
|
|
11
|
+
* @param {Object} root The root node of the tree
|
|
12
|
+
* @param {Object|null} element The element which now has the focus, or null when nothing has it
|
|
13
|
+
*/
|
|
14
|
+
export declare const setActiveElement: (root: object, element: any | null) => void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
require('core-js/modules/esnext.weak-map.delete-all.js')
|
|
4
|
+
Object.defineProperty(exports, '__esModule', {
|
|
5
|
+
value: true
|
|
6
|
+
})
|
|
7
|
+
exports.setActiveElement = exports.getActiveElement = void 0
|
|
8
|
+
/**
|
|
9
|
+
* The element which has the focus, kept for each tree (the root node of the tree it is in), like document.activeElement.
|
|
10
|
+
*/
|
|
11
|
+
const focused = new WeakMap()
|
|
12
|
+
/**
|
|
13
|
+
* Find the element which has the focus in a tree.
|
|
14
|
+
* @function getActiveElement
|
|
15
|
+
* @param {Object} root The root node of the tree
|
|
16
|
+
* @returns {Object|null}
|
|
17
|
+
*/
|
|
18
|
+
const getActiveElement = root => focused.get(root) || null
|
|
19
|
+
exports.getActiveElement = getActiveElement
|
|
20
|
+
/**
|
|
21
|
+
* Remember the element which has the focus in a tree.
|
|
22
|
+
* @function setActiveElement
|
|
23
|
+
* @param {Object} root The root node of the tree
|
|
24
|
+
* @param {Object|null} element The element which now has the focus, or null when nothing has it
|
|
25
|
+
*/
|
|
26
|
+
const setActiveElement = (root, element) => {
|
|
27
|
+
if (element === null) {
|
|
28
|
+
focused.delete(root)
|
|
29
|
+
} else {
|
|
30
|
+
focused.set(root, element)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.setActiveElement = setActiveElement
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";require("core-js/modules/esnext.weak-map.delete-all.js"),Object.defineProperty(exports,"__esModule",{value:!0}),exports.setActiveElement=exports.getActiveElement=void 0;const focused=new WeakMap,getActiveElement=e=>focused.get(e)||null;exports.getActiveElement=getActiveElement;const setActiveElement=(e,t)=>{null===t?focused.delete(e):focused.set(e,t)};exports.setActiveElement=setActiveElement;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The modifier keys which were held down when a mouse or keyboard event happened.
|
|
3
|
+
* @typedef {Object} ModifierKeys
|
|
4
|
+
* @property {boolean} ctrlKey
|
|
5
|
+
* @property {boolean} shiftKey
|
|
6
|
+
* @property {boolean} altKey
|
|
7
|
+
* @property {boolean} metaKey
|
|
8
|
+
*/
|
|
9
|
+
export type ModifierKeys = {
|
|
10
|
+
ctrlKey: boolean;
|
|
11
|
+
shiftKey: boolean;
|
|
12
|
+
altKey: boolean;
|
|
13
|
+
metaKey: boolean;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Pick the modifier keys out of the init object of an event.
|
|
17
|
+
* @function modifierKeys
|
|
18
|
+
* @param {Object} [init={}] The init of an event
|
|
19
|
+
* @returns {ModifierKeys}
|
|
20
|
+
*/
|
|
21
|
+
export declare const modifierKeys: (init?: any) => ModifierKeys;
|
|
22
|
+
/**
|
|
23
|
+
* Answer getModifierState for a set of held modifier keys.
|
|
24
|
+
* @function modifierState
|
|
25
|
+
* @param {ModifierKeys} keys The modifier keys which were held down
|
|
26
|
+
* @param {string} key The name of the modifier (Control, Shift, Alt or Meta)
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
export declare const modifierState: (keys: ModifierKeys, key: string) => boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.modifierState = exports.modifierKeys = void 0
|
|
7
|
+
/**
|
|
8
|
+
* Pick the modifier keys out of the init object of an event.
|
|
9
|
+
* @function modifierKeys
|
|
10
|
+
* @param {Object} [init={}] The init of an event
|
|
11
|
+
* @returns {ModifierKeys}
|
|
12
|
+
*/
|
|
13
|
+
const modifierKeys = (init = {}) => ({
|
|
14
|
+
ctrlKey: !!init.ctrlKey,
|
|
15
|
+
shiftKey: !!init.shiftKey,
|
|
16
|
+
altKey: !!init.altKey,
|
|
17
|
+
metaKey: !!init.metaKey
|
|
18
|
+
})
|
|
19
|
+
exports.modifierKeys = modifierKeys
|
|
20
|
+
/**
|
|
21
|
+
* Answer getModifierState for a set of held modifier keys.
|
|
22
|
+
* @function modifierState
|
|
23
|
+
* @param {ModifierKeys} keys The modifier keys which were held down
|
|
24
|
+
* @param {string} key The name of the modifier (Control, Shift, Alt or Meta)
|
|
25
|
+
* @returns {boolean}
|
|
26
|
+
*/
|
|
27
|
+
const modifierState = (keys, key) => {
|
|
28
|
+
switch (key) {
|
|
29
|
+
case 'Control':
|
|
30
|
+
return keys.ctrlKey
|
|
31
|
+
case 'Shift':
|
|
32
|
+
return keys.shiftKey
|
|
33
|
+
case 'Alt':
|
|
34
|
+
return keys.altKey
|
|
35
|
+
case 'Meta':
|
|
36
|
+
return keys.metaKey
|
|
37
|
+
default:
|
|
38
|
+
return false
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.modifierState = modifierState
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.modifierState=exports.modifierKeys=void 0;const modifierKeys=(e={})=>({ctrlKey:!!e.ctrlKey,shiftKey:!!e.shiftKey,altKey:!!e.altKey,metaKey:!!e.metaKey});exports.modifierKeys=modifierKeys;const modifierState=(e,t)=>{switch(t){case"Control":return e.ctrlKey;case"Shift":return e.shiftKey;case"Alt":return e.altKey;case"Meta":return e.metaKey;default:return!1}};exports.modifierState=modifierState;
|
package/dist/main.d.ts
CHANGED
|
@@ -10,6 +10,16 @@ import { ElementService as PseudoElement } from './services/ElementService';
|
|
|
10
10
|
import { HTMLElementService as PseudoHTMLElement } from './services/HTMLElementService';
|
|
11
11
|
import PseudoHTMLDocument from './classes/PseudoHTMLDocument';
|
|
12
12
|
import generateDocument from './factories/generateDocument';
|
|
13
|
+
import createEvent from './factories/createEvent';
|
|
14
|
+
import eventDefaults from './factories/eventDefaults';
|
|
15
|
+
import { UIEventService as PseudoUIEvent } from './services/UIEventService';
|
|
16
|
+
import { MouseEventService as PseudoMouseEvent } from './services/MouseEventService';
|
|
17
|
+
import { PointerEventService as PseudoPointerEvent } from './services/PointerEventService';
|
|
18
|
+
import { KeyboardEventService as PseudoKeyboardEvent } from './services/KeyboardEventService';
|
|
19
|
+
import { FocusEventService as PseudoFocusEvent } from './services/FocusEventService';
|
|
20
|
+
import { InputEventService as PseudoInputEvent } from './services/InputEventService';
|
|
21
|
+
import { CustomEventService as PseudoCustomEvent } from './services/CustomEventService';
|
|
22
|
+
import simulate from './simulate';
|
|
13
23
|
/**
|
|
14
24
|
* All methods exported from this module are encapsulated within pseudoDom.
|
|
15
25
|
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
@@ -18,12 +28,33 @@ import generateDocument from './factories/generateDocument';
|
|
|
18
28
|
*/
|
|
19
29
|
declare const pseudoDom: {
|
|
20
30
|
generateDocument: (root: Window | any, context?: object) => Window | PseudoEventTarget;
|
|
31
|
+
createEvent: (type: string, init?: {
|
|
32
|
+
[option: string]: any;
|
|
33
|
+
}, { browser, trusted }?: import("./factories/createEvent").CreateEventOptions) => PseudoEvent;
|
|
34
|
+
eventDefaults: {
|
|
35
|
+
[type: string]: import("./factories/eventDefaults").EventDefinition;
|
|
36
|
+
};
|
|
37
|
+
simulate: {
|
|
38
|
+
click: (element: any, init?: {
|
|
39
|
+
[option: string]: any;
|
|
40
|
+
}) => boolean;
|
|
41
|
+
keyPress: (element: any, key: string, init?: {
|
|
42
|
+
[option: string]: any;
|
|
43
|
+
}) => boolean;
|
|
44
|
+
};
|
|
21
45
|
PseudoEvent: typeof PseudoEvent;
|
|
46
|
+
PseudoUIEvent: typeof PseudoUIEvent;
|
|
47
|
+
PseudoMouseEvent: typeof PseudoMouseEvent;
|
|
48
|
+
PseudoPointerEvent: typeof PseudoPointerEvent;
|
|
49
|
+
PseudoKeyboardEvent: typeof PseudoKeyboardEvent;
|
|
50
|
+
PseudoFocusEvent: typeof PseudoFocusEvent;
|
|
51
|
+
PseudoInputEvent: typeof PseudoInputEvent;
|
|
52
|
+
PseudoCustomEvent: typeof PseudoCustomEvent;
|
|
22
53
|
PseudoEventTarget: typeof PseudoEventTarget;
|
|
23
54
|
PseudoNode: typeof PseudoNode;
|
|
24
55
|
PseudoElement: typeof PseudoElement;
|
|
25
56
|
PseudoHTMLElement: typeof PseudoHTMLElement;
|
|
26
57
|
PseudoHTMLDocument: typeof PseudoHTMLDocument;
|
|
27
58
|
};
|
|
28
|
-
export { generateDocument, PseudoEvent, PseudoEventTarget, PseudoNode, PseudoElement, PseudoHTMLElement, PseudoHTMLDocument };
|
|
59
|
+
export { generateDocument, createEvent, eventDefaults, simulate, PseudoEvent, PseudoUIEvent, PseudoMouseEvent, PseudoPointerEvent, PseudoKeyboardEvent, PseudoFocusEvent, PseudoInputEvent, PseudoCustomEvent, PseudoEventTarget, PseudoNode, PseudoElement, PseudoHTMLElement, PseudoHTMLDocument };
|
|
29
60
|
export default pseudoDom;
|
package/dist/main.js
CHANGED
|
@@ -15,7 +15,7 @@ const __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
|
15
15
|
Object.defineProperty(exports, '__esModule', {
|
|
16
16
|
value: true
|
|
17
17
|
})
|
|
18
|
-
exports.PseudoHTMLDocument = exports.PseudoHTMLElement = exports.PseudoElement = exports.PseudoNode = exports.PseudoEventTarget = exports.PseudoEvent = exports.generateDocument = void 0
|
|
18
|
+
exports.PseudoHTMLDocument = exports.PseudoHTMLElement = exports.PseudoElement = exports.PseudoNode = exports.PseudoEventTarget = exports.PseudoCustomEvent = exports.PseudoInputEvent = exports.PseudoFocusEvent = exports.PseudoKeyboardEvent = exports.PseudoPointerEvent = exports.PseudoMouseEvent = exports.PseudoUIEvent = exports.PseudoEvent = exports.simulate = exports.eventDefaults = exports.createEvent = exports.generateDocument = void 0
|
|
19
19
|
const EventService_1 = require('./services/EventService')
|
|
20
20
|
Object.defineProperty(exports, 'PseudoEvent', {
|
|
21
21
|
enumerable: true,
|
|
@@ -50,6 +50,61 @@ const PseudoHTMLDocument_1 = __importDefault(require('./classes/PseudoHTMLDocume
|
|
|
50
50
|
exports.PseudoHTMLDocument = PseudoHTMLDocument_1.default
|
|
51
51
|
const generateDocument_1 = __importDefault(require('./factories/generateDocument'))
|
|
52
52
|
exports.generateDocument = generateDocument_1.default
|
|
53
|
+
const createEvent_1 = __importDefault(require('./factories/createEvent'))
|
|
54
|
+
exports.createEvent = createEvent_1.default
|
|
55
|
+
const eventDefaults_1 = __importDefault(require('./factories/eventDefaults'))
|
|
56
|
+
exports.eventDefaults = eventDefaults_1.default
|
|
57
|
+
const UIEventService_1 = require('./services/UIEventService')
|
|
58
|
+
Object.defineProperty(exports, 'PseudoUIEvent', {
|
|
59
|
+
enumerable: true,
|
|
60
|
+
get: function () {
|
|
61
|
+
return UIEventService_1.UIEventService
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
const MouseEventService_1 = require('./services/MouseEventService')
|
|
65
|
+
Object.defineProperty(exports, 'PseudoMouseEvent', {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function () {
|
|
68
|
+
return MouseEventService_1.MouseEventService
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
const PointerEventService_1 = require('./services/PointerEventService')
|
|
72
|
+
Object.defineProperty(exports, 'PseudoPointerEvent', {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return PointerEventService_1.PointerEventService
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
const KeyboardEventService_1 = require('./services/KeyboardEventService')
|
|
79
|
+
Object.defineProperty(exports, 'PseudoKeyboardEvent', {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function () {
|
|
82
|
+
return KeyboardEventService_1.KeyboardEventService
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
const FocusEventService_1 = require('./services/FocusEventService')
|
|
86
|
+
Object.defineProperty(exports, 'PseudoFocusEvent', {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function () {
|
|
89
|
+
return FocusEventService_1.FocusEventService
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
const InputEventService_1 = require('./services/InputEventService')
|
|
93
|
+
Object.defineProperty(exports, 'PseudoInputEvent', {
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: function () {
|
|
96
|
+
return InputEventService_1.InputEventService
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
const CustomEventService_1 = require('./services/CustomEventService')
|
|
100
|
+
Object.defineProperty(exports, 'PseudoCustomEvent', {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function () {
|
|
103
|
+
return CustomEventService_1.CustomEventService
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
const simulate_1 = __importDefault(require('./simulate'))
|
|
107
|
+
exports.simulate = simulate_1.default
|
|
53
108
|
/**
|
|
54
109
|
* All methods exported from this module are encapsulated within pseudoDom.
|
|
55
110
|
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
@@ -58,7 +113,17 @@ exports.generateDocument = generateDocument_1.default
|
|
|
58
113
|
*/
|
|
59
114
|
const pseudoDom = {
|
|
60
115
|
generateDocument: generateDocument_1.default,
|
|
116
|
+
createEvent: createEvent_1.default,
|
|
117
|
+
eventDefaults: eventDefaults_1.default,
|
|
118
|
+
simulate: simulate_1.default,
|
|
61
119
|
PseudoEvent: EventService_1.EventService,
|
|
120
|
+
PseudoUIEvent: UIEventService_1.UIEventService,
|
|
121
|
+
PseudoMouseEvent: MouseEventService_1.MouseEventService,
|
|
122
|
+
PseudoPointerEvent: PointerEventService_1.PointerEventService,
|
|
123
|
+
PseudoKeyboardEvent: KeyboardEventService_1.KeyboardEventService,
|
|
124
|
+
PseudoFocusEvent: FocusEventService_1.FocusEventService,
|
|
125
|
+
PseudoInputEvent: InputEventService_1.InputEventService,
|
|
126
|
+
PseudoCustomEvent: CustomEventService_1.CustomEventService,
|
|
62
127
|
PseudoEventTarget: EventTargetService_1.default,
|
|
63
128
|
PseudoNode: NodeService_1.NodeService,
|
|
64
129
|
PseudoElement: ElementService_1.ElementService,
|
package/dist/main.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PseudoHTMLDocument=exports.PseudoHTMLElement=exports.PseudoElement=exports.PseudoNode=exports.PseudoEventTarget=exports.PseudoEvent=exports.generateDocument=void 0;const EventService_1=require("./services/EventService");Object.defineProperty(exports,"PseudoEvent",{enumerable:!0,get:function(){return EventService_1.EventService}});const EventTargetService_1=__importDefault(require("./services/EventTargetService"));exports.PseudoEventTarget=EventTargetService_1.default;const NodeService_1=require("./services/NodeService");Object.defineProperty(exports,"PseudoNode",{enumerable:!0,get:function(){return NodeService_1.NodeService}});const ElementService_1=require("./services/ElementService");Object.defineProperty(exports,"PseudoElement",{enumerable:!0,get:function(){return ElementService_1.ElementService}});const HTMLElementService_1=require("./services/HTMLElementService");Object.defineProperty(exports,"PseudoHTMLElement",{enumerable:!0,get:function(){return HTMLElementService_1.HTMLElementService}});const PseudoHTMLDocument_1=__importDefault(require("./classes/PseudoHTMLDocument"));exports.PseudoHTMLDocument=PseudoHTMLDocument_1.default;const generateDocument_1=__importDefault(require("./factories/generateDocument"));exports.generateDocument=generateDocument_1.default;const pseudoDom={generateDocument:generateDocument_1.default,PseudoEvent:EventService_1.EventService,PseudoEventTarget:EventTargetService_1.default,PseudoNode:NodeService_1.NodeService,PseudoElement:ElementService_1.ElementService,PseudoHTMLElement:HTMLElementService_1.HTMLElementService,PseudoHTMLDocument:PseudoHTMLDocument_1.default};exports.default=pseudoDom,"undefined"!=typeof window&&(window.pseudoDom=pseudoDom);
|
|
1
|
+
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.PseudoHTMLDocument=exports.PseudoHTMLElement=exports.PseudoElement=exports.PseudoNode=exports.PseudoEventTarget=exports.PseudoCustomEvent=exports.PseudoInputEvent=exports.PseudoFocusEvent=exports.PseudoKeyboardEvent=exports.PseudoPointerEvent=exports.PseudoMouseEvent=exports.PseudoUIEvent=exports.PseudoEvent=exports.simulate=exports.eventDefaults=exports.createEvent=exports.generateDocument=void 0;const EventService_1=require("./services/EventService");Object.defineProperty(exports,"PseudoEvent",{enumerable:!0,get:function(){return EventService_1.EventService}});const EventTargetService_1=__importDefault(require("./services/EventTargetService"));exports.PseudoEventTarget=EventTargetService_1.default;const NodeService_1=require("./services/NodeService");Object.defineProperty(exports,"PseudoNode",{enumerable:!0,get:function(){return NodeService_1.NodeService}});const ElementService_1=require("./services/ElementService");Object.defineProperty(exports,"PseudoElement",{enumerable:!0,get:function(){return ElementService_1.ElementService}});const HTMLElementService_1=require("./services/HTMLElementService");Object.defineProperty(exports,"PseudoHTMLElement",{enumerable:!0,get:function(){return HTMLElementService_1.HTMLElementService}});const PseudoHTMLDocument_1=__importDefault(require("./classes/PseudoHTMLDocument"));exports.PseudoHTMLDocument=PseudoHTMLDocument_1.default;const generateDocument_1=__importDefault(require("./factories/generateDocument"));exports.generateDocument=generateDocument_1.default;const createEvent_1=__importDefault(require("./factories/createEvent"));exports.createEvent=createEvent_1.default;const eventDefaults_1=__importDefault(require("./factories/eventDefaults"));exports.eventDefaults=eventDefaults_1.default;const UIEventService_1=require("./services/UIEventService");Object.defineProperty(exports,"PseudoUIEvent",{enumerable:!0,get:function(){return UIEventService_1.UIEventService}});const MouseEventService_1=require("./services/MouseEventService");Object.defineProperty(exports,"PseudoMouseEvent",{enumerable:!0,get:function(){return MouseEventService_1.MouseEventService}});const PointerEventService_1=require("./services/PointerEventService");Object.defineProperty(exports,"PseudoPointerEvent",{enumerable:!0,get:function(){return PointerEventService_1.PointerEventService}});const KeyboardEventService_1=require("./services/KeyboardEventService");Object.defineProperty(exports,"PseudoKeyboardEvent",{enumerable:!0,get:function(){return KeyboardEventService_1.KeyboardEventService}});const FocusEventService_1=require("./services/FocusEventService");Object.defineProperty(exports,"PseudoFocusEvent",{enumerable:!0,get:function(){return FocusEventService_1.FocusEventService}});const InputEventService_1=require("./services/InputEventService");Object.defineProperty(exports,"PseudoInputEvent",{enumerable:!0,get:function(){return InputEventService_1.InputEventService}});const CustomEventService_1=require("./services/CustomEventService");Object.defineProperty(exports,"PseudoCustomEvent",{enumerable:!0,get:function(){return CustomEventService_1.CustomEventService}});const simulate_1=__importDefault(require("./simulate"));exports.simulate=simulate_1.default;const pseudoDom={generateDocument:generateDocument_1.default,createEvent:createEvent_1.default,eventDefaults:eventDefaults_1.default,simulate:simulate_1.default,PseudoEvent:EventService_1.EventService,PseudoUIEvent:UIEventService_1.UIEventService,PseudoMouseEvent:MouseEventService_1.MouseEventService,PseudoPointerEvent:PointerEventService_1.PointerEventService,PseudoKeyboardEvent:KeyboardEventService_1.KeyboardEventService,PseudoFocusEvent:FocusEventService_1.FocusEventService,PseudoInputEvent:InputEventService_1.InputEventService,PseudoCustomEvent:CustomEventService_1.CustomEventService,PseudoEventTarget:EventTargetService_1.default,PseudoNode:NodeService_1.NodeService,PseudoElement:ElementService_1.ElementService,PseudoHTMLElement:HTMLElementService_1.HTMLElementService,PseudoHTMLDocument:PseudoHTMLDocument_1.default};exports.default=pseudoDom,"undefined"!=typeof window&&(window.pseudoDom=pseudoDom);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Substitute for the DOM CustomEvent Class.
|
|
3
|
+
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import { EventService } from './EventService';
|
|
7
|
+
/**
|
|
8
|
+
* The options for creating a custom event.
|
|
9
|
+
* @typedef {Object} CustomEventInit
|
|
10
|
+
* @property {boolean} [bubbles=false]
|
|
11
|
+
* @property {boolean} [cancelable=false]
|
|
12
|
+
* @property {boolean} [composed=false]
|
|
13
|
+
* @property {*} [detail=null] Whatever data the event should carry
|
|
14
|
+
*/
|
|
15
|
+
export type CustomEventInit = {
|
|
16
|
+
bubbles?: boolean;
|
|
17
|
+
cancelable?: boolean;
|
|
18
|
+
composed?: boolean;
|
|
19
|
+
detail?: any;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Simulate the behaviour of the CustomEvent Class when there is no DOM available: an event which carries data.
|
|
23
|
+
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
24
|
+
* @class
|
|
25
|
+
* @augments EventService
|
|
26
|
+
* @property {*} detail
|
|
27
|
+
*/
|
|
28
|
+
export declare class CustomEventService extends EventService {
|
|
29
|
+
private readonly eventDetail;
|
|
30
|
+
/**
|
|
31
|
+
* @param {string} [typeArg=''] The type of the event
|
|
32
|
+
* @param {CustomEventInit} [init={}] The options for the event
|
|
33
|
+
* @constructor
|
|
34
|
+
*/
|
|
35
|
+
constructor(typeArg?: string, init?: CustomEventInit);
|
|
36
|
+
get detail(): any;
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true
|
|
5
|
+
})
|
|
6
|
+
exports.CustomEventService = void 0
|
|
7
|
+
/**
|
|
8
|
+
* @file Substitute for the DOM CustomEvent Class.
|
|
9
|
+
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
const EventService_1 = require('./EventService')
|
|
13
|
+
/**
|
|
14
|
+
* Simulate the behaviour of the CustomEvent Class when there is no DOM available: an event which carries data.
|
|
15
|
+
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
16
|
+
* @class
|
|
17
|
+
* @augments EventService
|
|
18
|
+
* @property {*} detail
|
|
19
|
+
*/
|
|
20
|
+
class CustomEventService extends EventService_1.EventService {
|
|
21
|
+
/**
|
|
22
|
+
* @param {string} [typeArg=''] The type of the event
|
|
23
|
+
* @param {CustomEventInit} [init={}] The options for the event
|
|
24
|
+
* @constructor
|
|
25
|
+
*/
|
|
26
|
+
constructor (typeArg = '', init = {}) {
|
|
27
|
+
super(typeArg, init)
|
|
28
|
+
this.eventDetail = typeof init.detail === 'undefined' ? null : init.detail
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
get detail () {
|
|
32
|
+
return this.eventDetail
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.CustomEventService = CustomEventService
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomEventService=void 0;const EventService_1=require("./EventService");class CustomEventService extends EventService_1.EventService{constructor(e="",t={}){super(e,t),this.eventDetail=void 0===t.detail?null:t.detail}get detail(){return this.eventDetail}}exports.CustomEventService=CustomEventService;
|
|
@@ -16,7 +16,7 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
16
16
|
value: true
|
|
17
17
|
})
|
|
18
18
|
exports.ElementService = void 0
|
|
19
|
-
const
|
|
19
|
+
const createEvent_1 = __importDefault(require('../factories/createEvent'))
|
|
20
20
|
const NodeService_1 = require('./NodeService')
|
|
21
21
|
const AttrService_1 = require('./AttrService')
|
|
22
22
|
const DOMTokenListService_1 = require('./DOMTokenListService')
|
|
@@ -125,20 +125,20 @@ class ElementService extends NodeService_1.NodeService {
|
|
|
125
125
|
switch (this.tagName) {
|
|
126
126
|
case 'button':
|
|
127
127
|
case 'input':
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
128
|
+
// Clicking a submit button submits the form it is in: the form gets a submit event, which can be cancelled
|
|
129
|
+
callback = event => {
|
|
130
|
+
const type = String(this.getAttribute('type') || this.type || '').toLowerCase()
|
|
131
|
+
const submits = this.tagName === 'button' ? type !== 'button' && type !== 'reset' : /^(submit|image)$/.test(type)
|
|
132
|
+
const forms = (0, getParentNodesFromAttribute_1.default)('tagName', 'form', this)
|
|
133
|
+
if (submits && forms.length && !this.hasAttribute('disabled')) {
|
|
134
|
+
forms[forms.length - 1].dispatchEvent((0, createEvent_1.default)('submit', {}, {
|
|
135
|
+
browser: true,
|
|
136
|
+
trusted: event.isTrusted
|
|
137
|
+
}))
|
|
138
138
|
}
|
|
139
|
-
super.setDefaultEvent('click', callback)
|
|
140
|
-
this.defaultEventApplied = true
|
|
141
139
|
}
|
|
140
|
+
super.setDefaultEvent('click', callback)
|
|
141
|
+
this.defaultEventApplied = true
|
|
142
142
|
}
|
|
143
143
|
return callback
|
|
144
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.iterator.some.js");var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ElementService=void 0;const
|
|
1
|
+
"use strict";require("core-js/modules/esnext.iterator.constructor.js"),require("core-js/modules/esnext.iterator.find.js"),require("core-js/modules/esnext.iterator.for-each.js"),require("core-js/modules/esnext.iterator.map.js"),require("core-js/modules/esnext.iterator.some.js");var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ElementService=void 0;const createEvent_1=__importDefault(require("../factories/createEvent")),NodeService_1=require("./NodeService"),AttrService_1=require("./AttrService"),DOMTokenListService_1=require("./DOMTokenListService"),NamedNodeMapService_1=require("./NamedNodeMapService"),getParentNodesFromAttribute_1=__importDefault(require("../functions/getParentNodesFromAttribute"));class ElementService extends NodeService_1.NodeService{constructor({tagName:e="",attributes:t=[],parent:r=null,children:i=[]}={}){super(),this.defaultEventApplied=!1,this.tokenList=new DOMTokenListService_1.DOMTokenListService,this.tag=e,this.attributeList=t.concat([{name:"className",value:""},{name:"id",value:""},{name:"innerHTML",value:""}]),this.propertyAttributes=this.attributeList.map(({name:e})=>e),this.attributeList.forEach(({name:e,value:t})=>{this[e]=t}),i.forEach(e=>{if(!e||"number"!=typeof e.nodeType)throw new TypeError("The children of an element must be nodes.");this.appendChild(e)}),r&&r.appendChild(this)}get tagName(){return this.tag}get nodeType(){return NodeService_1.NodeService.ELEMENT_NODE}get attributes(){return new NamedNodeMapService_1.NamedNodeMapService(this.attributeList.map(({name:e,value:t})=>new AttrService_1.AttrService(e,String(t),this)))}get classList(){return this.tokenList}get className(){return this.tokenList.value}set className(e){this.tokenList.value=e}applyDefaultEvent(){let e=e=>{};if(this.defaultEventApplied)return e;switch(this.tagName){case"button":case"input":e=e=>{const t=String(this.getAttribute("type")||this.type||"").toLowerCase(),r="button"===this.tagName?"button"!==t&&"reset"!==t:/^(submit|image)$/.test(t),i=(0,getParentNodesFromAttribute_1.default)("tagName","form",this);r&&i.length&&!this.hasAttribute("disabled")&&i[i.length-1].dispatchEvent((0,createEvent_1.default)("submit",{},{browser:!0,trusted:e.isTrusted}))},super.setDefaultEvent("click",e),this.defaultEventApplied=!0}return e}childInserted(e){"function"==typeof e.applyDefaultEvent&&e.applyDefaultEvent()}hasAttribute(e){return this.attributeList.some(({name:t})=>t===e)}setAttribute(e,t){const r=this.attributeList.find(({name:t})=>t===e);r?r.value=t:this.attributeList.push({name:e,value:t}),this.propertyAttributes.indexOf(e)>=0&&(this[e]=t)}getAttribute(e){const t=this.attributeList.find(({name:t})=>t===e);return t?t.value:null}removeAttribute(e){const t=this.attributeList.findIndex(({name:t})=>t===e);t>=0&&this.attributeList.splice(t,1)}}exports.ElementService=ElementService;
|
|
@@ -15,6 +15,8 @@ export type EventInner = {
|
|
|
15
15
|
target: PseudoEventTarget;
|
|
16
16
|
immediatePropagationStopped: boolean;
|
|
17
17
|
propagationStopped: boolean;
|
|
18
|
+
/** True for an event which the browser created for a user action, an event which a script created is not trusted. */
|
|
19
|
+
trusted: boolean;
|
|
18
20
|
/** True while the event is being dispatched. */
|
|
19
21
|
dispatching: boolean;
|
|
20
22
|
/** True while a passive listener is running, in which preventDefault does nothing. */
|
|
@@ -65,7 +65,7 @@ class EventService {
|
|
|
65
65
|
target: null,
|
|
66
66
|
timeStamp: Math.floor(Date.now() / 1000),
|
|
67
67
|
type: '',
|
|
68
|
-
isTrusted:
|
|
68
|
+
isTrusted: false,
|
|
69
69
|
dispatching: false,
|
|
70
70
|
inPassiveListener: false,
|
|
71
71
|
path: []
|
|
@@ -149,6 +149,12 @@ class EventService {
|
|
|
149
149
|
get propagationStopped () {
|
|
150
150
|
return self.properties.propagationStopped
|
|
151
151
|
},
|
|
152
|
+
get trusted () {
|
|
153
|
+
return self.properties.isTrusted
|
|
154
|
+
},
|
|
155
|
+
set trusted (trusted) {
|
|
156
|
+
self.properties.isTrusted = trusted
|
|
157
|
+
},
|
|
152
158
|
get dispatching () {
|
|
153
159
|
return self.properties.dispatching
|
|
154
160
|
},
|