easy 19.0.7 → 20.0.2
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 +18 -136
- package/example.js +535 -609
- package/lib/constants.js +1 -13
- package/lib/document.js +3 -5
- package/lib/element/button.js +3 -1
- package/lib/element/checkbox.js +6 -5
- package/lib/element/input.js +151 -0
- package/lib/element/link.js +3 -1
- package/lib/element/select.js +6 -41
- package/lib/element/textarea.js +151 -0
- package/lib/element.js +8 -26
- package/lib/example/view/div.js +184 -0
- package/lib/example/view.js +3 -66
- package/lib/index.js +5 -9
- package/lib/mixins/element.js +27 -4
- package/lib/mixins/event.js +19 -8
- package/lib/mixins/focus.js +45 -0
- package/lib/mixins/input.js +21 -13
- package/lib/mixins/mouse.js +1 -1
- package/lib/mixins/resize.js +2 -34
- package/lib/mixins/scroll.js +5 -5
- package/lib/mixins/selection.js +46 -2
- package/lib/mixins/textElement.js +20 -0
- package/lib/textElement.js +4 -5
- package/lib/utilities/string.js +2 -3
- package/lib/window.js +20 -11
- package/package.json +1 -1
- package/src/constants.js +0 -3
- package/src/document.js +2 -4
- package/src/element/button.js +3 -0
- package/src/element/checkbox.js +5 -5
- package/src/element/input.js +14 -0
- package/src/element/link.js +3 -0
- package/src/element/select.js +5 -13
- package/src/element/textarea.js +14 -0
- package/src/element.js +7 -17
- package/src/example/view/div.js +40 -0
- package/src/example/view.js +4 -66
- package/src/index.js +4 -8
- package/src/mixins/element.js +6 -6
- package/src/mixins/event.js +25 -10
- package/src/mixins/focus.js +33 -0
- package/src/mixins/input.js +15 -9
- package/src/mixins/mouse.js +1 -5
- package/src/mixins/resize.js +1 -58
- package/src/mixins/scroll.js +3 -3
- package/src/mixins/selection.js +35 -2
- package/src/mixins/textElement.js +12 -0
- package/src/textElement.js +3 -5
- package/src/utilities/string.js +1 -3
- package/src/window.js +19 -6
- package/lib/example/view/checkbox.js +0 -97
- package/lib/inputElement/input.js +0 -99
- package/lib/inputElement/textarea.js +0 -99
- package/lib/inputElement.js +0 -214
- package/lib/mixins/change.js +0 -24
- package/lib/mixins/window.js +0 -17
- package/src/example/view/checkbox.js +0 -10
- package/src/inputElement/input.js +0 -7
- package/src/inputElement/textarea.js +0 -7
- package/src/inputElement.js +0 -34
- package/src/mixins/change.js +0 -14
- package/src/mixins/window.js +0 -8
package/src/document.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import keyMixins from "./mixins/key";
|
|
4
|
-
import clickMixins from "./mixins/click";
|
|
5
4
|
import eventMixins from "./mixins/event";
|
|
6
5
|
import mouseMixins from "./mixins/mouse";
|
|
6
|
+
import clickMixins from "./mixins/click";
|
|
7
7
|
import selectionMixins from "./mixins/selection";
|
|
8
|
-
import customEventMixins from "./mixins/customEvent";
|
|
9
8
|
|
|
10
9
|
import { UNDEFINED } from "./constants";
|
|
11
10
|
|
|
@@ -26,8 +25,7 @@ class Document {
|
|
|
26
25
|
export default (typeof document === UNDEFINED) ? undefined : new Document(); ///
|
|
27
26
|
|
|
28
27
|
Object.assign(Document.prototype, keyMixins);
|
|
29
|
-
Object.assign(Document.prototype, clickMixins);
|
|
30
28
|
Object.assign(Document.prototype, eventMixins);
|
|
31
29
|
Object.assign(Document.prototype, mouseMixins);
|
|
30
|
+
Object.assign(Document.prototype, clickMixins);
|
|
32
31
|
Object.assign(Document.prototype, selectionMixins);
|
|
33
|
-
Object.assign(Document.prototype, customEventMixins);
|
package/src/element/button.js
CHANGED
package/src/element/checkbox.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Element from "../element";
|
|
4
|
-
import
|
|
4
|
+
import inputMixins from "../mixins/input";
|
|
5
|
+
import focusMixins from "../mixins/focus";
|
|
5
6
|
|
|
6
|
-
class Checkbox extends Element {
|
|
7
|
+
export default class Checkbox extends Element {
|
|
7
8
|
isChecked() { return this.domElement.checked; }
|
|
8
9
|
|
|
9
10
|
check(checked = true) { this.domElement.checked = checked; }
|
|
@@ -15,6 +16,5 @@ class Checkbox extends Element {
|
|
|
15
16
|
};
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
Object.assign(Checkbox.prototype,
|
|
19
|
-
|
|
20
|
-
export default Checkbox;
|
|
19
|
+
Object.assign(Checkbox.prototype, inputMixins);
|
|
20
|
+
Object.assign(Checkbox.prototype, focusMixins);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
import inputMixins from "../mixins/input";
|
|
5
|
+
import focusMixins from "../mixins/focus";
|
|
6
|
+
import selectionMixins from "../mixins/selection";
|
|
7
|
+
|
|
8
|
+
export default class Input extends Element {
|
|
9
|
+
static tagName = "input";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
Object.assign(Input.prototype, inputMixins);
|
|
13
|
+
Object.assign(Input.prototype, focusMixins);
|
|
14
|
+
Object.assign(Input.prototype, selectionMixins);
|
package/src/element/link.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Element from "../element";
|
|
4
|
+
import focusMixins from "../mixins/focus";
|
|
4
5
|
|
|
5
6
|
export default class Link extends Element {
|
|
6
7
|
getHRef() { return this.getAttribute("href"); }
|
|
@@ -9,3 +10,5 @@ export default class Link extends Element {
|
|
|
9
10
|
|
|
10
11
|
static tagName = "a";
|
|
11
12
|
}
|
|
13
|
+
|
|
14
|
+
Object.assign(Link.prototype, focusMixins);
|
package/src/element/select.js
CHANGED
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Element from "../element";
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
class Select extends Element {
|
|
7
|
-
onResize(resizeHandler, element) {} ///
|
|
8
|
-
|
|
9
|
-
offResize(resizeHandler, element) {} ///
|
|
10
|
-
|
|
11
|
-
getValue() { return this.domElement.value; }
|
|
12
|
-
|
|
13
|
-
setValue(value) { this.domElement.value = value; }
|
|
4
|
+
import inputMixins from "../mixins/input";
|
|
5
|
+
import focusMixins from "../mixins/focus";
|
|
14
6
|
|
|
7
|
+
export default class Select extends Element {
|
|
15
8
|
static tagName = "select";
|
|
16
9
|
}
|
|
17
10
|
|
|
18
|
-
Object.assign(Select.prototype,
|
|
19
|
-
|
|
20
|
-
export default Select;
|
|
11
|
+
Object.assign(Select.prototype, inputMixins);
|
|
12
|
+
Object.assign(Select.prototype, focusMixins);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Element from "../element";
|
|
4
|
+
import inputMixins from "../mixins/input";
|
|
5
|
+
import focusMixins from "../mixins/focus";
|
|
6
|
+
import selectionMixins from "../mixins/selection";
|
|
7
|
+
|
|
8
|
+
export default class Textarea extends Element {
|
|
9
|
+
static tagName = "textarea";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
Object.assign(Textarea.prototype, inputMixins);
|
|
13
|
+
Object.assign(Textarea.prototype, focusMixins);
|
|
14
|
+
Object.assign(Textarea.prototype, selectionMixins);
|
package/src/element.js
CHANGED
|
@@ -4,12 +4,13 @@ import Offset from "./offset";
|
|
|
4
4
|
import Bounds from "./bounds";
|
|
5
5
|
import jsxMixins from "./mixins/jsx";
|
|
6
6
|
import keyMixins from "./mixins/key";
|
|
7
|
-
import clickMixins from "./mixins/click";
|
|
8
7
|
import stateMixins from "./mixins/state";
|
|
9
8
|
import eventMixins from "./mixins/event";
|
|
10
9
|
import mouseMixins from "./mixins/mouse";
|
|
11
|
-
import
|
|
10
|
+
import clickMixins from "./mixins/click";
|
|
11
|
+
import focusMixins from "./mixins/focus";
|
|
12
12
|
import scrollMixins from "./mixins/scroll";
|
|
13
|
+
import resizeMixins from "./mixins/resize";
|
|
13
14
|
import elementMixins from "./mixins/element";
|
|
14
15
|
import customEventMixins from "./mixins/customEvent";
|
|
15
16
|
|
|
@@ -29,7 +30,7 @@ import { NONE,
|
|
|
29
30
|
DEFAULT_PROPERTIES,
|
|
30
31
|
IGNORED_PROPERTIES } from "./constants";
|
|
31
32
|
|
|
32
|
-
class Element {
|
|
33
|
+
export default class Element {
|
|
33
34
|
constructor(selector) {
|
|
34
35
|
if (selector) {
|
|
35
36
|
this.domElement = document.querySelector(selector);
|
|
@@ -294,16 +295,6 @@ class Element {
|
|
|
294
295
|
});
|
|
295
296
|
}
|
|
296
297
|
|
|
297
|
-
blur() { this.domElement.blur(); }
|
|
298
|
-
|
|
299
|
-
focus() { this.domElement.focus(); }
|
|
300
|
-
|
|
301
|
-
hasFocus() {
|
|
302
|
-
const focus = (document.activeElement === this.domElement); ///
|
|
303
|
-
|
|
304
|
-
return focus;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
298
|
static fromClass(Class, properties, ...remainingArguments) {
|
|
308
299
|
const { tagName } = Class,
|
|
309
300
|
element = elementFromTagName(Class, tagName, ...remainingArguments),
|
|
@@ -333,17 +324,16 @@ class Element {
|
|
|
333
324
|
|
|
334
325
|
Object.assign(Element.prototype, jsxMixins);
|
|
335
326
|
Object.assign(Element.prototype, keyMixins);
|
|
327
|
+
Object.assign(Element.prototype, mouseMixins);
|
|
336
328
|
Object.assign(Element.prototype, clickMixins);
|
|
337
329
|
Object.assign(Element.prototype, stateMixins);
|
|
338
330
|
Object.assign(Element.prototype, eventMixins);
|
|
339
|
-
Object.assign(Element.prototype,
|
|
340
|
-
Object.assign(Element.prototype, resizeMixins);
|
|
331
|
+
Object.assign(Element.prototype, focusMixins);
|
|
341
332
|
Object.assign(Element.prototype, scrollMixins);
|
|
333
|
+
Object.assign(Element.prototype, resizeMixins);
|
|
342
334
|
Object.assign(Element.prototype, elementMixins);
|
|
343
335
|
Object.assign(Element.prototype, customEventMixins);
|
|
344
336
|
|
|
345
|
-
export default Element;
|
|
346
|
-
|
|
347
337
|
function elementFromTagName(Class, tagName, ...remainingArguments) {
|
|
348
338
|
const selector = null,
|
|
349
339
|
element = new (Function.prototype.bind.call(Class, null, selector, ...remainingArguments));
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Element } from "../../index"; ///
|
|
4
|
+
|
|
5
|
+
export default class Div extends Element {
|
|
6
|
+
mouseMoveHandler = (event, element) => {
|
|
7
|
+
const { pageX, pageY } = event;
|
|
8
|
+
|
|
9
|
+
console.log(pageX, pageY)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
resizeHandler = (event, element) => {
|
|
13
|
+
const width = this.getWidth(),
|
|
14
|
+
height = this.getHeight();
|
|
15
|
+
|
|
16
|
+
console.log(width, height)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
didMount() {
|
|
20
|
+
this.onResize(this.resizeHandler, this);
|
|
21
|
+
this.onMouseMove(this.mouseMoveHandler, this);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
willUnmount() {
|
|
25
|
+
this.offMouseMove(this.mouseMoveHandler, this);
|
|
26
|
+
this.offResize(this.resizeHandler, this);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
childElements() {
|
|
30
|
+
return (
|
|
31
|
+
|
|
32
|
+
<p>
|
|
33
|
+
A paragraph contained in a div with resize and mouse move handlers.
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static tagName = "div";
|
|
40
|
+
}
|
package/src/example/view.js
CHANGED
|
@@ -1,41 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { Element } from "../index"; ///
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
const { LEFT_MOUSE_BUTTON } = mouseButtons;
|
|
5
|
+
import Div from "./view/div";
|
|
8
6
|
|
|
9
7
|
export default class View extends Element {
|
|
10
8
|
childElements() {
|
|
11
|
-
return (
|
|
12
|
-
|
|
13
|
-
<Checkbox onChange={(event, element) => {
|
|
14
|
-
console.log("Changed")
|
|
15
|
-
}}
|
|
16
|
-
checked
|
|
17
|
-
/>,
|
|
18
|
-
<Textarea onChange={(event, element) => {
|
|
19
|
-
console.log("change")
|
|
20
|
-
}}
|
|
21
|
-
onScroll={function(event, element) { ///
|
|
22
|
-
const scrollTop = this.getScrollTop(),
|
|
23
|
-
scrollLeft = this.getScrollLeft();
|
|
24
|
-
|
|
25
|
-
console.log(scrollTop, scrollLeft)
|
|
26
|
-
}}
|
|
27
|
-
/>,
|
|
28
|
-
<Button onClick={(event, element) => {
|
|
29
|
-
const { button } = event;
|
|
9
|
+
return (
|
|
30
10
|
|
|
31
|
-
console.log(button === LEFT_MOUSE_BUTTON)
|
|
32
|
-
}}
|
|
33
|
-
>
|
|
34
|
-
Submit
|
|
35
|
-
</Button>,
|
|
36
11
|
<Div/>
|
|
37
12
|
|
|
38
|
-
|
|
13
|
+
);
|
|
39
14
|
}
|
|
40
15
|
|
|
41
16
|
static tagName = "div";
|
|
@@ -44,40 +19,3 @@ export default class View extends Element {
|
|
|
44
19
|
className: "view"
|
|
45
20
|
};
|
|
46
21
|
}
|
|
47
|
-
|
|
48
|
-
class Div extends Element {
|
|
49
|
-
mouseMoveHandler = (event, element) => {
|
|
50
|
-
const { pageX, pageY } = event;
|
|
51
|
-
|
|
52
|
-
console.log(pageX, pageY)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
resizeHandler = (event, element) => {
|
|
56
|
-
const width = this.getWidth(),
|
|
57
|
-
height = this.getHeight();
|
|
58
|
-
|
|
59
|
-
console.log(width, height)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
didMount() {
|
|
63
|
-
this.onResize(this.resizeHandler, this);
|
|
64
|
-
this.onMouseMove(this.mouseMoveHandler, this);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
willUnmount() {
|
|
68
|
-
this.offMouseMove(this.mouseMoveHandler, this);
|
|
69
|
-
this.offResize(this.resizeHandler, this);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
childElements() {
|
|
73
|
-
return (
|
|
74
|
-
|
|
75
|
-
<p>
|
|
76
|
-
A paragraph contained in a div with resize and mouse move handlers.
|
|
77
|
-
</p>
|
|
78
|
-
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static tagName = "div";
|
|
83
|
-
}
|
package/src/index.js
CHANGED
|
@@ -3,21 +3,17 @@
|
|
|
3
3
|
export { default as React } from "./react";
|
|
4
4
|
export { default as Bounds } from "./bounds";
|
|
5
5
|
export { default as Offset } from "./offset";
|
|
6
|
-
|
|
6
|
+
export { default as Element } from "./element";
|
|
7
|
+
export { default as TextElement } from "./textElement";
|
|
7
8
|
export { default as Body } from "./element/body";
|
|
8
9
|
export { default as Link } from "./element/link";
|
|
9
|
-
export { default as Input } from "./
|
|
10
|
+
export { default as Input } from "./element/input";
|
|
10
11
|
export { default as Button } from "./element/button";
|
|
11
12
|
export { default as Select } from "./element/select";
|
|
12
|
-
export { default as Element } from "./element";
|
|
13
13
|
export { default as Checkbox } from "./element/checkbox";
|
|
14
|
-
export { default as Textarea } from "./
|
|
15
|
-
export { default as TextElement } from "./textElement";
|
|
16
|
-
export { default as InputElement } from "./inputElement";
|
|
17
|
-
|
|
14
|
+
export { default as Textarea } from "./element/textarea";
|
|
18
15
|
export { default as window } from "./window";
|
|
19
16
|
export { default as document } from "./document";
|
|
20
17
|
export { default as eventTypes } from "./eventTypes";
|
|
21
18
|
export { default as mouseButtons } from "./mouseButtons";
|
|
22
|
-
|
|
23
19
|
export { default as elementUtilities } from "./utilities/element";
|
package/src/mixins/element.js
CHANGED
|
@@ -4,7 +4,7 @@ import { first } from "../utilities/array";
|
|
|
4
4
|
import { WILDCARD } from "../constants";
|
|
5
5
|
import { domNodeMatchesSelector, elementsFromDOMElements, filterDOMNodesBySelector, ascendantDOMNodesFromDOMNode, descendantDOMNodesFromDOMNode } from "../utilities/dom";
|
|
6
6
|
|
|
7
|
-
function getParentElement(selector = WILDCARD) {
|
|
7
|
+
export function getParentElement(selector = WILDCARD) {
|
|
8
8
|
let parentElement = null;
|
|
9
9
|
|
|
10
10
|
const parentDOMElement = this.domElement.parentElement; ///
|
|
@@ -24,7 +24,7 @@ function getParentElement(selector = WILDCARD) {
|
|
|
24
24
|
return parentElement;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function getChildElements(selector = WILDCARD) {
|
|
27
|
+
export function getChildElements(selector = WILDCARD) {
|
|
28
28
|
const childDOMNodes = this.domElement.childNodes, ///
|
|
29
29
|
childDOMElements = filterDOMNodesBySelector(childDOMNodes, selector),
|
|
30
30
|
childElements = elementsFromDOMElements(childDOMElements);
|
|
@@ -32,7 +32,7 @@ function getChildElements(selector = WILDCARD) {
|
|
|
32
32
|
return childElements;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function getAscendantElements(selector = WILDCARD, maximumHeight = Infinity) {
|
|
35
|
+
export function getAscendantElements(selector = WILDCARD, maximumHeight = Infinity) {
|
|
36
36
|
const height = maximumHeight, ///
|
|
37
37
|
domNode = this.domElement, ///
|
|
38
38
|
ascendantDOMNodes = ascendantDOMNodesFromDOMNode(domNode, height),
|
|
@@ -42,7 +42,7 @@ function getAscendantElements(selector = WILDCARD, maximumHeight = Infinity) {
|
|
|
42
42
|
return ascendantElements;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
function getDescendantElements(selector = WILDCARD, maximumDepth = Infinity) {
|
|
45
|
+
export function getDescendantElements(selector = WILDCARD, maximumDepth = Infinity) {
|
|
46
46
|
const depth = maximumDepth, ///
|
|
47
47
|
domNode = this.domElement, ///
|
|
48
48
|
descendantDOMNodes = descendantDOMNodesFromDOMNode(domNode, depth),
|
|
@@ -52,7 +52,7 @@ function getDescendantElements(selector = WILDCARD, maximumDepth = Infinity) {
|
|
|
52
52
|
return descendantElements;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
function getNextSiblingElement(selector = WILDCARD) {
|
|
55
|
+
export function getNextSiblingElement(selector = WILDCARD) {
|
|
56
56
|
let nextSiblingElement = null;
|
|
57
57
|
|
|
58
58
|
const nextSiblingDOMNode = this.domElement.nextSibling; ///
|
|
@@ -64,7 +64,7 @@ function getNextSiblingElement(selector = WILDCARD) {
|
|
|
64
64
|
return nextSiblingElement;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
function getPreviousSiblingElement(selector = WILDCARD) {
|
|
67
|
+
export function getPreviousSiblingElement(selector = WILDCARD) {
|
|
68
68
|
let previousSiblingElement = null;
|
|
69
69
|
|
|
70
70
|
const previousSiblingDOMNode = this.domElement.previousSibling; ///
|
package/src/mixins/event.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import { SPACE } from "../constants";
|
|
4
4
|
import { RESIZE_EVENT_TYPE } from "../eventTypes";
|
|
5
|
-
import { removeResizeObject } from "../mixins/resize";
|
|
6
5
|
|
|
7
6
|
function onEvent(eventTypes, handler, element = this) {
|
|
8
7
|
eventTypes = eventTypes.split(SPACE); ///
|
|
@@ -13,13 +12,25 @@ function onEvent(eventTypes, handler, element = this) {
|
|
|
13
12
|
resizeEventListenersLength = resizeEventListeners.length;
|
|
14
13
|
|
|
15
14
|
if (resizeEventListenersLength === 0) {
|
|
16
|
-
this.
|
|
15
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
16
|
+
const resizeEventListeners = this.findEventListeners(RESIZE_EVENT_TYPE);
|
|
17
|
+
|
|
18
|
+
resizeEventListeners.forEach((resizeEventListener) => {
|
|
19
|
+
const event = null;
|
|
20
|
+
|
|
21
|
+
resizeEventListener(event);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
this.resizeObserver.observe(this.domElement)
|
|
17
26
|
}
|
|
18
|
-
}
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
this.addEventListener(eventType, handler, element);
|
|
29
|
+
} else {
|
|
30
|
+
const eventListener = this.addEventListener(eventType, handler, element);
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
this.domElement.addEventListener(eventType, eventListener);
|
|
33
|
+
}
|
|
23
34
|
});
|
|
24
35
|
}
|
|
25
36
|
|
|
@@ -27,17 +38,21 @@ function offEvent(eventTypes, handler, element = this) {
|
|
|
27
38
|
eventTypes = eventTypes.split(SPACE); ///
|
|
28
39
|
|
|
29
40
|
eventTypes.forEach((eventType) => {
|
|
30
|
-
const eventListener = this.removeEventListener(eventType, handler, element);
|
|
31
|
-
|
|
32
|
-
this.domElement.removeEventListener(eventType, eventListener);
|
|
33
|
-
|
|
34
41
|
if (eventType === RESIZE_EVENT_TYPE) {
|
|
42
|
+
this.removeEventListener(eventType, handler, element);
|
|
43
|
+
|
|
35
44
|
const resizeEventListeners = this.findEventListeners(RESIZE_EVENT_TYPE),
|
|
36
45
|
resizeEventListenersLength = resizeEventListeners.length;
|
|
37
46
|
|
|
38
47
|
if (resizeEventListenersLength === 0) {
|
|
39
|
-
this.
|
|
48
|
+
this.resizeObserver.unobserve(this.domElement);
|
|
49
|
+
|
|
50
|
+
delete this.resizeObserver;
|
|
40
51
|
}
|
|
52
|
+
} else {
|
|
53
|
+
const eventListener = this.removeEventListener(eventType, handler, element);
|
|
54
|
+
|
|
55
|
+
this.domElement.removeEventListener(eventType, eventListener);
|
|
41
56
|
}
|
|
42
57
|
});
|
|
43
58
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { BLUR_EVENT_TYPE, FOCUS_EVENT_TYPE } from "../eventTypes";
|
|
4
|
+
|
|
5
|
+
function onBlur(blurHandler, element) { this.onEvent(BLUR_EVENT_TYPE, blurHandler, element); }
|
|
6
|
+
|
|
7
|
+
function offBlur(blurHandler, element) { this.offEvent(BLUR_EVENT_TYPE, blurHandler, element); }
|
|
8
|
+
|
|
9
|
+
function onFocus(focusHandler, element) { this.onEvent(FOCUS_EVENT_TYPE, focusHandler, element); }
|
|
10
|
+
|
|
11
|
+
function offFocus(focusHandler, element) { this.offEvent(FOCUS_EVENT_TYPE, focusHandler, element); }
|
|
12
|
+
|
|
13
|
+
function blur() { this.domElement.blur(); }
|
|
14
|
+
|
|
15
|
+
function focus() { this.domElement.focus(); }
|
|
16
|
+
|
|
17
|
+
function hasFocus() {
|
|
18
|
+
const focus = (document.activeElement === this.domElement); ///
|
|
19
|
+
|
|
20
|
+
return focus;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const focusMixins = {
|
|
24
|
+
onBlur,
|
|
25
|
+
offBlur,
|
|
26
|
+
onFocus,
|
|
27
|
+
offFocus,
|
|
28
|
+
blur,
|
|
29
|
+
focus,
|
|
30
|
+
hasFocus
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export default focusMixins;
|
package/src/mixins/input.js
CHANGED
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { CHANGE_EVENT_TYPE } from "../eventTypes";
|
|
4
4
|
|
|
5
|
-
function
|
|
5
|
+
function onChange(changeHandler, element) { this.onEvent(CHANGE_EVENT_TYPE, changeHandler, element); }
|
|
6
6
|
|
|
7
|
-
function
|
|
7
|
+
function offChange(changeHandler, element) { this.offEvent(CHANGE_EVENT_TYPE, changeHandler, element); }
|
|
8
8
|
|
|
9
|
-
function
|
|
9
|
+
function getValue() { return this.domElement.value; }
|
|
10
10
|
|
|
11
|
-
function
|
|
11
|
+
function setValue(value) { this.domElement.value = value; }
|
|
12
|
+
|
|
13
|
+
function isReadOnly() { return this.domElement.readOnly; }
|
|
14
|
+
|
|
15
|
+
function setReadOnly(readOnly) { this.domElement.readOnly = readOnly; }
|
|
12
16
|
|
|
13
17
|
const inputMixins = {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
onChange,
|
|
19
|
+
offChange,
|
|
20
|
+
getValue,
|
|
21
|
+
setValue,
|
|
22
|
+
isReadOnly,
|
|
23
|
+
setReadOnly
|
|
18
24
|
};
|
|
19
25
|
|
|
20
26
|
export default inputMixins;
|
package/src/mixins/mouse.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { MOUSEUP_EVENT_TYPE,
|
|
4
|
-
MOUSEOUT_EVENT_TYPE,
|
|
5
|
-
MOUSEDOWN_EVENT_TYPE,
|
|
6
|
-
MOUSEOVER_EVENT_TYPE,
|
|
7
|
-
MOUSEMOVE_EVENT_TYPE } from "../eventTypes";
|
|
3
|
+
import { MOUSEUP_EVENT_TYPE, MOUSEOUT_EVENT_TYPE, MOUSEDOWN_EVENT_TYPE, MOUSEOVER_EVENT_TYPE, MOUSEMOVE_EVENT_TYPE } from "../eventTypes";
|
|
8
4
|
|
|
9
5
|
function onMouseUp(mouseUpHandler, element) { this.onEvent(MOUSEUP_EVENT_TYPE, mouseUpHandler, element); }
|
|
10
6
|
|
package/src/mixins/resize.js
CHANGED
|
@@ -1,71 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { RESIZE_EVENT_TYPE } from "../eventTypes";
|
|
4
|
-
import { OBJECT, TEXT_HTML, ABOUT_BLANK } from "../constants";
|
|
5
4
|
|
|
6
5
|
export function onResize(resizeHandler, element) { this.onEvent(RESIZE_EVENT_TYPE, resizeHandler, element); }
|
|
7
6
|
|
|
8
7
|
export function offResize(resizeHandler, element) { this.offEvent(RESIZE_EVENT_TYPE, resizeHandler, element); }
|
|
9
8
|
|
|
10
|
-
function addResizeObject() {
|
|
11
|
-
const resizeObject = document.createElement(OBJECT),
|
|
12
|
-
type = TEXT_HTML, ///
|
|
13
|
-
data = ABOUT_BLANK, ///
|
|
14
|
-
style = `display: block;
|
|
15
|
-
position: absolute;
|
|
16
|
-
top: 0;
|
|
17
|
-
left: 0;
|
|
18
|
-
height: 100%;
|
|
19
|
-
width: 100%;
|
|
20
|
-
overflow: hidden;
|
|
21
|
-
pointer-events: none;
|
|
22
|
-
z-index: -1;`;
|
|
23
|
-
|
|
24
|
-
Object.assign(resizeObject, {
|
|
25
|
-
type,
|
|
26
|
-
data
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
resizeObject.setAttribute("style", style);
|
|
30
|
-
|
|
31
|
-
this.__resizeObject__ = resizeObject; ///
|
|
32
|
-
|
|
33
|
-
resizeObject.onload = () => {
|
|
34
|
-
resizeObjectLoadHandler(this);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
this.domElement.appendChild(resizeObject);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function removeResizeObject() {
|
|
41
|
-
const resizeObject = this.__resizeObject__, ///
|
|
42
|
-
objectWindow = resizeObject.contentDocument.defaultView; ///
|
|
43
|
-
|
|
44
|
-
objectWindow.removeEventListener(RESIZE_EVENT_TYPE, resizeEventListener);
|
|
45
|
-
|
|
46
|
-
this.domElement.removeChild(resizeObject);
|
|
47
|
-
|
|
48
|
-
delete this.__resizeObject__;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
9
|
const resizeMixins = {
|
|
52
10
|
onResize,
|
|
53
|
-
offResize
|
|
54
|
-
addResizeObject,
|
|
55
|
-
removeResizeObject
|
|
11
|
+
offResize
|
|
56
12
|
};
|
|
57
13
|
|
|
58
14
|
export default resizeMixins;
|
|
59
|
-
|
|
60
|
-
function resizeObjectLoadHandler(element) {
|
|
61
|
-
const resizeObject = element.__resizeObject__,
|
|
62
|
-
resizeObjectWindow = resizeObject.contentDocument.defaultView; ///
|
|
63
|
-
|
|
64
|
-
resizeObjectWindow.addEventListener(RESIZE_EVENT_TYPE, (event) => {
|
|
65
|
-
const resizeEventListeners = element.findEventListeners(RESIZE_EVENT_TYPE);
|
|
66
|
-
|
|
67
|
-
resizeEventListeners.forEach((resizeEventListener) => {
|
|
68
|
-
resizeEventListener(event);
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
}
|
package/src/mixins/scroll.js
CHANGED
|
@@ -6,12 +6,12 @@ function onScroll(scrollHandler, element) { this.onEvent(SCROLL_EVENT_TYPE, scro
|
|
|
6
6
|
|
|
7
7
|
function offScroll(scrollHandler, element) { this.offEvent(SCROLL_EVENT_TYPE, scrollHandler, element); }
|
|
8
8
|
|
|
9
|
+
function scrollTo(scrollTop, scrollLeft) { this.domElement.scrollTo(scrollTop, scrollLeft); }
|
|
10
|
+
|
|
9
11
|
function getScrollTop() { return this.domElement.scrollTop; }
|
|
10
12
|
|
|
11
13
|
function getScrollLeft() { return this.domElement.scrollLeft; }
|
|
12
14
|
|
|
13
|
-
function scrollTo(scrollTop, scrollLeft) { this.domElement.scrollTo(scrollTop, scrollLeft); }
|
|
14
|
-
|
|
15
15
|
function setScrollTop(scrollTop) { this.domElement.scrollTop = scrollTop; }
|
|
16
16
|
|
|
17
17
|
function setScrollLeft(scrollLeft) { this.domElement.scrollLeft = scrollLeft; }
|
|
@@ -19,9 +19,9 @@ function setScrollLeft(scrollLeft) { this.domElement.scrollLeft = scrollLeft; }
|
|
|
19
19
|
const scrollMixins = {
|
|
20
20
|
onScroll,
|
|
21
21
|
offScroll,
|
|
22
|
+
scrollTo,
|
|
22
23
|
getScrollTop,
|
|
23
24
|
getScrollLeft,
|
|
24
|
-
scrollTo,
|
|
25
25
|
setScrollTop,
|
|
26
26
|
setScrollLeft
|
|
27
27
|
};
|