@esportsplus/template 0.19.7 → 0.20.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.
Potentially problematic release.
This version of @esportsplus/template might be problematic. Click here for more details.
- package/build/attributes.js +1 -1
- package/build/{event.d.ts → event/index.d.ts} +1 -1
- package/build/{event.js → event/index.js} +21 -26
- package/build/event/onconnect.d.ts +2 -0
- package/build/event/onconnect.js +15 -0
- package/build/event/ontick.d.ts +5 -0
- package/build/event/ontick.js +44 -0
- package/package.json +1 -1
- package/src/{event.ts → event/index.ts} +26 -33
- package/src/event/onconnect.ts +21 -0
- package/src/event/ontick.ts +62 -0
package/build/attributes.js
CHANGED
|
@@ -4,7 +4,7 @@ import { STATE_HYDRATING, STATE_NONE, STATE_WAITING } from './constants.js';
|
|
|
4
4
|
import { className, removeAttribute, setAttribute } from './utilities/element.js';
|
|
5
5
|
import { raf } from './utilities/queue.js';
|
|
6
6
|
import q from '@esportsplus/queue';
|
|
7
|
-
import event from './event.js';
|
|
7
|
+
import event from './event/index.js';
|
|
8
8
|
const STORE = Symbol();
|
|
9
9
|
let delimiters = {
|
|
10
10
|
class: ' ',
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { root } from '@esportsplus/reactivity';
|
|
2
2
|
import { defineProperty } from '@esportsplus/utilities';
|
|
3
|
-
import { addEventListener } from '
|
|
4
|
-
import { parentElement } from '
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
3
|
+
import { addEventListener } from '../utilities/element.js';
|
|
4
|
+
import { parentElement } from '../utilities/node.js';
|
|
5
|
+
import { ondisconnect } from '../slot/cleanup.js';
|
|
6
|
+
import onconnect from './onconnect.js';
|
|
7
|
+
import ontick from './ontick.js';
|
|
7
8
|
let capture = new Set(['onblur', 'onfocus', 'onscroll']), controllers = new Map(), keys = {}, passive = new Set([
|
|
8
9
|
'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel',
|
|
9
10
|
'onscroll',
|
|
@@ -57,27 +58,21 @@ function register(element, event) {
|
|
|
57
58
|
return key;
|
|
58
59
|
}
|
|
59
60
|
export default (element, event, listener) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
else if (event === 'onrender') {
|
|
79
|
-
root(() => listener(element));
|
|
80
|
-
return;
|
|
61
|
+
switch (event) {
|
|
62
|
+
case 'onconnect':
|
|
63
|
+
onconnect(element, listener);
|
|
64
|
+
return;
|
|
65
|
+
case 'ondisconnect':
|
|
66
|
+
ondisconnect(element, () => listener(element));
|
|
67
|
+
return;
|
|
68
|
+
case 'ontick':
|
|
69
|
+
ontick(element, listener);
|
|
70
|
+
return;
|
|
71
|
+
case 'onrender':
|
|
72
|
+
root(() => listener(element));
|
|
73
|
+
return;
|
|
74
|
+
default:
|
|
75
|
+
element[keys[event] || register(element, event)] = listener;
|
|
76
|
+
return;
|
|
81
77
|
}
|
|
82
|
-
element[keys[event] || register(element, event)] = listener;
|
|
83
78
|
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { root } from '@esportsplus/reactivity';
|
|
2
|
+
import { add, remove } from './ontick.js';
|
|
3
|
+
export default (element, listener) => {
|
|
4
|
+
let fn = () => {
|
|
5
|
+
retry--;
|
|
6
|
+
if (element.isConnected) {
|
|
7
|
+
retry = 0;
|
|
8
|
+
root(() => listener(element));
|
|
9
|
+
}
|
|
10
|
+
if (retry) {
|
|
11
|
+
remove(fn);
|
|
12
|
+
}
|
|
13
|
+
}, retry = 60;
|
|
14
|
+
add(fn);
|
|
15
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { STATE_HYDRATING, STATE_NONE } from '../constants.js';
|
|
2
|
+
import { raf } from '../utilities/queue.js';
|
|
3
|
+
let tasks = Object.assign(new Set(), { running: false });
|
|
4
|
+
function tick() {
|
|
5
|
+
if (tasks.size === 0) {
|
|
6
|
+
tasks.running = false;
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
for (let task of tasks) {
|
|
10
|
+
task();
|
|
11
|
+
}
|
|
12
|
+
raf.add(tick);
|
|
13
|
+
}
|
|
14
|
+
const add = (task) => {
|
|
15
|
+
tasks.add(task);
|
|
16
|
+
if (!tasks.running) {
|
|
17
|
+
tasks.running = true;
|
|
18
|
+
raf.add(tick);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const remove = (task) => {
|
|
22
|
+
tasks.delete(task);
|
|
23
|
+
};
|
|
24
|
+
export default (element, listener) => {
|
|
25
|
+
let dispose = () => {
|
|
26
|
+
remove(fn);
|
|
27
|
+
}, fn = () => {
|
|
28
|
+
if (state === STATE_HYDRATING) {
|
|
29
|
+
if (element.isConnected) {
|
|
30
|
+
state = STATE_NONE;
|
|
31
|
+
}
|
|
32
|
+
else if (retry--) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (!element.isConnected) {
|
|
37
|
+
remove(fn);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
listener(dispose, element);
|
|
41
|
+
}, retry = 60, state = STATE_HYDRATING;
|
|
42
|
+
add(fn);
|
|
43
|
+
};
|
|
44
|
+
export { add, remove };
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { root } from '@esportsplus/reactivity';
|
|
2
2
|
import { defineProperty } from '@esportsplus/utilities';
|
|
3
|
-
import { Element } from '
|
|
4
|
-
import { addEventListener } from '
|
|
5
|
-
import { parentElement } from '
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
3
|
+
import { Element } from '~/types';
|
|
4
|
+
import { addEventListener } from '~/utilities/element';
|
|
5
|
+
import { parentElement } from '~/utilities/node';
|
|
6
|
+
import { ondisconnect } from '~/slot/cleanup';
|
|
7
|
+
import onconnect from './onconnect';
|
|
8
|
+
import ontick from './ontick';
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
let capture = new Set<`on${string}`>(['onblur', 'onfocus', 'onscroll']),
|
|
@@ -87,33 +88,25 @@ function register(element: Element, event: `on${string}`) {
|
|
|
87
88
|
|
|
88
89
|
|
|
89
90
|
export default (element: Element, event: `on${string}`, listener: Function): void => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
91
|
+
switch (event) {
|
|
92
|
+
case 'onconnect':
|
|
93
|
+
onconnect(element, listener);
|
|
94
|
+
return;
|
|
95
|
+
|
|
96
|
+
case 'ondisconnect':
|
|
97
|
+
ondisconnect(element, () => listener(element));
|
|
98
|
+
return;
|
|
99
|
+
|
|
100
|
+
case 'ontick':
|
|
101
|
+
ontick(element, listener);
|
|
102
|
+
return;
|
|
103
|
+
|
|
104
|
+
case 'onrender':
|
|
105
|
+
root(() => listener(element));
|
|
106
|
+
return;
|
|
107
|
+
|
|
108
|
+
default:
|
|
109
|
+
element[ keys[event] || register(element, event) ] = listener;
|
|
110
|
+
return;
|
|
108
111
|
}
|
|
109
|
-
else if (event === 'ondisconnect') {
|
|
110
|
-
ondisconnect(element, () => listener(element));
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
else if (event === 'onrender') {
|
|
114
|
-
root(() => listener(element));
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
element[ keys[event] || register(element, event) ] = listener;
|
|
119
112
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { root } from '@esportsplus/reactivity';
|
|
2
|
+
import { add, remove } from './ontick';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export default (element: Element, listener: Function) => {
|
|
6
|
+
let fn = () => {
|
|
7
|
+
retry--;
|
|
8
|
+
|
|
9
|
+
if (element.isConnected) {
|
|
10
|
+
retry = 0;
|
|
11
|
+
root(() => listener(element));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (retry) {
|
|
15
|
+
remove(fn);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
retry = 60;
|
|
19
|
+
|
|
20
|
+
add(fn);
|
|
21
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { STATE_HYDRATING, STATE_NONE } from '~/constants';
|
|
2
|
+
import { raf } from '~/utilities/queue';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
let tasks = Object.assign(new Set<VoidFunction>(), { running: false });
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
function tick() {
|
|
9
|
+
if (tasks.size === 0) {
|
|
10
|
+
tasks.running = false;
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
for (let task of tasks) {
|
|
15
|
+
task();
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
raf.add(tick);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const add = (task: VoidFunction) => {
|
|
23
|
+
tasks.add(task);
|
|
24
|
+
|
|
25
|
+
if (!tasks.running) {
|
|
26
|
+
tasks.running = true;
|
|
27
|
+
raf.add(tick);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const remove = (task: VoidFunction) => {
|
|
32
|
+
tasks.delete(task);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
export default (element: Element, listener: Function) => {
|
|
37
|
+
let dispose = () => {
|
|
38
|
+
remove(fn);
|
|
39
|
+
},
|
|
40
|
+
fn = () => {
|
|
41
|
+
if (state === STATE_HYDRATING) {
|
|
42
|
+
if (element.isConnected) {
|
|
43
|
+
state = STATE_NONE;
|
|
44
|
+
}
|
|
45
|
+
else if (retry--) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (!element.isConnected) {
|
|
51
|
+
remove(fn);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
listener(dispose, element);
|
|
56
|
+
},
|
|
57
|
+
retry = 60,
|
|
58
|
+
state = STATE_HYDRATING;
|
|
59
|
+
|
|
60
|
+
add(fn);
|
|
61
|
+
};
|
|
62
|
+
export { add, remove };
|