@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.
@@ -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,3 +1,3 @@
1
- import { Element } from './types.js';
1
+ import { Element } from '../types.js';
2
2
  declare const _default: (element: Element, event: `on${string}`, listener: Function) => void;
3
3
  export default _default;
@@ -1,9 +1,10 @@
1
1
  import { root } from '@esportsplus/reactivity';
2
2
  import { defineProperty } from '@esportsplus/utilities';
3
- import { addEventListener } from './utilities/element.js';
4
- import { parentElement } from './utilities/node.js';
5
- import { raf } from './utilities/queue.js';
6
- import { ondisconnect } from './slot/cleanup.js';
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
- if (event === 'onconnect') {
61
- let retry = 60, task = () => {
62
- retry--;
63
- if (element.isConnected) {
64
- retry = 0;
65
- root(() => listener(element));
66
- }
67
- if (retry) {
68
- raf.add(task);
69
- }
70
- };
71
- raf.add(task);
72
- return;
73
- }
74
- else if (event === 'ondisconnect') {
75
- ondisconnect(element, () => listener(element));
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,2 @@
1
+ declare const _default: (element: Element, listener: Function) => void;
2
+ export default _default;
@@ -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,5 @@
1
+ declare const add: (task: VoidFunction) => void;
2
+ declare const remove: (task: VoidFunction) => void;
3
+ declare const _default: (element: Element, listener: Function) => void;
4
+ export default _default;
5
+ export { add, remove };
@@ -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
@@ -14,7 +14,7 @@
14
14
  "private": false,
15
15
  "type": "module",
16
16
  "types": "./build/index.d.ts",
17
- "version": "0.19.7",
17
+ "version": "0.20.0",
18
18
  "scripts": {
19
19
  "build": "tsc && tsc-alias",
20
20
  "-": "-"
@@ -1,10 +1,11 @@
1
1
  import { root } from '@esportsplus/reactivity';
2
2
  import { defineProperty } from '@esportsplus/utilities';
3
- import { Element } from './types';
4
- import { addEventListener } from './utilities/element';
5
- import { parentElement } from './utilities/node';
6
- import { raf } from './utilities/queue';
7
- import { ondisconnect } from './slot/cleanup';
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
- if (event === 'onconnect') {
91
- let retry = 60,
92
- task = () => {
93
- retry--;
94
-
95
- if (element.isConnected) {
96
- retry = 0;
97
- root(() => listener(element));
98
- }
99
-
100
- if (retry) {
101
- raf.add(task);
102
- }
103
- };
104
-
105
- raf.add(task);
106
-
107
- return;
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 };