ziko 0.50.1 → 0.50.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/dist/ziko.cjs +772 -898
- package/dist/ziko.js +377 -207
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +374 -208
- package/package.json +1 -1
- package/src/data/api/fetchdom.js +27 -11
- package/src/events/binders/custom-event.js +1 -1
- package/src/events/binders/index.js +34 -6
- package/src/events/custom-events-registry/index.js +3 -1
- package/src/events/custom-events-registry/swipe.js +41 -23
- package/src/events/custom-events-registry/view.js +50 -19
- package/src/events/events-map/index.js +13 -5
- package/src/events/utils.js +31 -0
- package/src/events/ziko-event.js +59 -117
- package/src/ui/__methods__/dom.js +0 -20
- package/src/ui/__methods__/events.js +8 -4
- package/src/ui/__methods__/index.js +3 -0
- package/src/ui/__methods__/lifecycle.js +54 -0
- package/src/ui/constructors/UIElement.js +4 -30
- package/src/ui/{constructors/UIElement-lite.js → mini/UIElement.js} +1 -1
- package/src/ui/suspense/index.js +1 -2
- package/types/data/api/index.d.ts +15 -0
- package/types/data/index.d.ts +1 -0
- package/types/data/string/checkers.d.ts +51 -0
- package/types/data/string/converters.d.ts +101 -0
- package/types/data/string/index.d.ts +2 -0
- package/types/index.d.ts +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziko",
|
|
3
|
-
"version": "0.50.
|
|
3
|
+
"version": "0.50.2",
|
|
4
4
|
"description": "A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"front-end",
|
package/src/data/api/fetchdom.js
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
import { preload } from "./preload"
|
|
1
|
+
import { preload } from "./preload";
|
|
2
2
|
|
|
3
|
-
async function fetchdom(url='https://github.com/zakarialaoui10'){
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
async function fetchdom(url='https://github.com/zakarialaoui10') {
|
|
4
|
+
try {
|
|
5
|
+
const response = await fetch(url);
|
|
6
|
+
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
|
7
|
+
const html = await response.text();
|
|
8
|
+
const dom = new DOMParser().parseFromString(html, 'text/html');
|
|
9
|
+
return dom.documentElement;
|
|
10
|
+
} catch (err) {
|
|
11
|
+
console.error('Failed to fetch DOM:', err);
|
|
12
|
+
throw err;
|
|
13
|
+
}
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
|
|
16
|
+
function fetchdomSync(url='https://github.com/zakarialaoui10') {
|
|
17
|
+
try {
|
|
18
|
+
const data = preload(url);
|
|
19
|
+
const dom = new DOMParser().parseFromString(data, 'text/html');
|
|
20
|
+
return dom.documentElement;
|
|
21
|
+
} catch (err) {
|
|
22
|
+
console.error('Failed to fetch DOM synchronously:', err);
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
13
25
|
}
|
|
14
|
-
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
fetchdom,
|
|
29
|
+
fetchdomSync
|
|
30
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ZikoEvent } from "../ziko-event.js";
|
|
2
2
|
class ZikoCustomEvent extends ZikoEvent{
|
|
3
3
|
constructor(target, events, customizer){
|
|
4
|
-
super(target, events, details_setter, customizer)
|
|
4
|
+
super('custom', target, events, details_setter, customizer)
|
|
5
5
|
}
|
|
6
6
|
_register_events(events){
|
|
7
7
|
super._register_events(events, null, null, false);
|
|
@@ -4,11 +4,16 @@ import {
|
|
|
4
4
|
ptr_details_setter,
|
|
5
5
|
key_details_setter
|
|
6
6
|
} from '../details-setter/index.js'
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
register_click_away_event,
|
|
9
|
+
register_view_event,
|
|
10
|
+
register_swipe_event
|
|
11
|
+
} from "../custom-events-registry/index.js";
|
|
8
12
|
|
|
9
13
|
export const bind_click_event = (target, customizer) => {
|
|
10
14
|
register_click_away_event(target.element)
|
|
11
15
|
return new ZikoEvent(
|
|
16
|
+
'click',
|
|
12
17
|
target,
|
|
13
18
|
EventsMap.Click,
|
|
14
19
|
null,
|
|
@@ -16,57 +21,80 @@ export const bind_click_event = (target, customizer) => {
|
|
|
16
21
|
);
|
|
17
22
|
}
|
|
18
23
|
export const bind_clipboard_event = (target, customizer) => new ZikoEvent(
|
|
24
|
+
'clipboard',
|
|
19
25
|
target,
|
|
20
26
|
EventsMap.Clipboard,
|
|
21
27
|
null,
|
|
22
28
|
customizer
|
|
23
29
|
);
|
|
24
30
|
export const bind_drag_event = (target, customizer) => new ZikoEvent(
|
|
31
|
+
'drag',
|
|
25
32
|
target,
|
|
26
33
|
EventsMap.Drag,
|
|
27
34
|
null,
|
|
28
35
|
customizer
|
|
29
36
|
);
|
|
30
37
|
export const bind_focus_event = (target, customizer) => new ZikoEvent(
|
|
38
|
+
'focus',
|
|
31
39
|
target,
|
|
32
40
|
EventsMap.Focus,
|
|
33
41
|
null,
|
|
34
42
|
customizer
|
|
35
43
|
);
|
|
36
44
|
export const bind_key_event = (target, customizer) => new ZikoEvent(
|
|
45
|
+
'key',
|
|
37
46
|
target,
|
|
38
47
|
EventsMap.Key,
|
|
39
48
|
key_details_setter,
|
|
40
49
|
customizer
|
|
41
50
|
);
|
|
42
51
|
export const bind_mouse_event = (target, customizer) => new ZikoEvent(
|
|
52
|
+
'mouse',
|
|
43
53
|
target,
|
|
44
54
|
EventsMap.Mouse,
|
|
45
55
|
null,
|
|
46
56
|
customizer
|
|
47
57
|
);
|
|
48
58
|
export const bind_pointer_event = (target, customizer) => new ZikoEvent(
|
|
59
|
+
'ptr',
|
|
49
60
|
target,
|
|
50
61
|
EventsMap.Ptr,
|
|
51
62
|
ptr_details_setter,
|
|
52
63
|
customizer
|
|
53
64
|
);
|
|
54
65
|
export const bind_touch_event = (target, customizer) => new ZikoEvent(
|
|
66
|
+
'touch',
|
|
55
67
|
target,
|
|
56
68
|
EventsMap.Touch,
|
|
57
69
|
null,
|
|
58
70
|
customizer
|
|
59
71
|
);
|
|
60
72
|
export const bind_wheel_event = (target, customizer) => new ZikoEvent(
|
|
73
|
+
'wheel',
|
|
61
74
|
target,
|
|
62
75
|
EventsMap.Wheel,
|
|
63
76
|
null,
|
|
64
77
|
customizer
|
|
65
78
|
);
|
|
66
79
|
|
|
80
|
+
export const bind_view_event = (target, customizer) => {
|
|
81
|
+
register_view_event(target.element)
|
|
82
|
+
return new ZikoEvent(
|
|
83
|
+
'view',
|
|
84
|
+
target,
|
|
85
|
+
EventsMap.View,
|
|
86
|
+
null,
|
|
87
|
+
customizer
|
|
88
|
+
)
|
|
89
|
+
}
|
|
67
90
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
91
|
+
export const bind_swipe_event = (target, customizer) => {
|
|
92
|
+
register_swipe_event(target.element)
|
|
93
|
+
return new ZikoEvent(
|
|
94
|
+
'swipe',
|
|
95
|
+
target,
|
|
96
|
+
EventsMap.Swipe,
|
|
97
|
+
null,
|
|
98
|
+
customizer
|
|
99
|
+
)
|
|
100
|
+
}
|
|
@@ -1,58 +1,76 @@
|
|
|
1
|
-
class SwipeEvent extends
|
|
2
|
-
constructor(type,
|
|
3
|
-
super(type, {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
class SwipeEvent extends CustomEvent {
|
|
2
|
+
constructor(type, detail) {
|
|
3
|
+
super(type, {
|
|
4
|
+
detail,
|
|
5
|
+
bubbles: true,
|
|
6
|
+
cancelable: true
|
|
7
|
+
});
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
function register_swipe_event(
|
|
12
|
-
|
|
11
|
+
function register_swipe_event(
|
|
12
|
+
element,
|
|
13
|
+
threshold = 50,
|
|
14
|
+
restraint = 100,
|
|
15
|
+
allowedTime = 500
|
|
16
|
+
) {
|
|
17
|
+
let startX = 0,
|
|
18
|
+
startY = 0,
|
|
19
|
+
startTime = 0,
|
|
20
|
+
isPointerDown = false;
|
|
21
|
+
|
|
13
22
|
function onPointerDown(e) {
|
|
14
23
|
startX = e.clientX;
|
|
15
24
|
startY = e.clientY;
|
|
16
|
-
startTime =
|
|
25
|
+
startTime = performance.now();
|
|
17
26
|
isPointerDown = true;
|
|
18
27
|
}
|
|
28
|
+
|
|
19
29
|
function onPointerUp(e) {
|
|
20
30
|
if (!isPointerDown) return;
|
|
21
31
|
isPointerDown = false;
|
|
22
32
|
|
|
23
33
|
const distX = e.clientX - startX;
|
|
24
34
|
const distY = e.clientY - startY;
|
|
25
|
-
const
|
|
35
|
+
const elapsed = performance.now() - startTime;
|
|
36
|
+
|
|
26
37
|
let direction = null;
|
|
27
38
|
let eventName = null;
|
|
28
39
|
|
|
29
|
-
if (
|
|
40
|
+
if (elapsed <= allowedTime) {
|
|
30
41
|
if (Math.abs(distX) >= threshold && Math.abs(distY) <= restraint) {
|
|
31
42
|
direction = distX < 0 ? "left" : "right";
|
|
32
43
|
eventName = "swipe" + direction;
|
|
33
|
-
}
|
|
44
|
+
}
|
|
45
|
+
else if (Math.abs(distY) >= threshold && Math.abs(distX) <= restraint) {
|
|
34
46
|
direction = distY < 0 ? "up" : "down";
|
|
35
47
|
eventName = "swipe" + direction;
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
50
|
|
|
39
|
-
|
|
51
|
+
// Emit event
|
|
52
|
+
if (eventName) {
|
|
40
53
|
element.dispatchEvent(
|
|
41
|
-
new SwipeEvent(eventName,
|
|
54
|
+
new SwipeEvent(eventName, {
|
|
55
|
+
direction,
|
|
56
|
+
distX,
|
|
57
|
+
distY,
|
|
58
|
+
originalEvent: e
|
|
59
|
+
})
|
|
42
60
|
);
|
|
43
61
|
}
|
|
44
62
|
}
|
|
45
63
|
|
|
46
|
-
element.addEventListener("pointerdown", onPointerDown,
|
|
47
|
-
element.addEventListener("pointerup", onPointerUp,
|
|
64
|
+
element.addEventListener("pointerdown", onPointerDown, { passive: true });
|
|
65
|
+
element.addEventListener("pointerup", onPointerUp, { passive: true });
|
|
48
66
|
|
|
49
67
|
return () => {
|
|
50
|
-
element.removeEventListener("pointerdown", onPointerDown
|
|
51
|
-
element.removeEventListener("pointerup", onPointerUp
|
|
68
|
+
element.removeEventListener("pointerdown", onPointerDown);
|
|
69
|
+
element.removeEventListener("pointerup", onPointerUp);
|
|
52
70
|
};
|
|
53
71
|
}
|
|
54
72
|
|
|
55
|
-
export{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
73
|
+
export {
|
|
74
|
+
SwipeEvent,
|
|
75
|
+
register_swipe_event
|
|
76
|
+
};
|
|
@@ -1,30 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { throttle } from "../../time/decorators/index.js";
|
|
2
|
+
class ViewEvent extends CustomEvent {
|
|
3
|
+
constructor(type, detail, { bubbles = true, cancelable = true } = {}) {
|
|
4
|
+
super(type, { detail, bubbles, cancelable });
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
function register_view_event(
|
|
8
|
+
function register_view_event(
|
|
9
|
+
element,
|
|
10
|
+
{
|
|
11
|
+
intersection = true,
|
|
12
|
+
resize = true,
|
|
13
|
+
threshold = 0,
|
|
14
|
+
throttleResize = 100,
|
|
15
|
+
throttleEnterExit = 0
|
|
16
|
+
} = {}
|
|
17
|
+
) {
|
|
9
18
|
let intersectionObserver, resizeObserver;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
19
|
+
const resizeCallback = entries => {
|
|
20
|
+
for (let entry of entries) {
|
|
21
|
+
const { width, height } = entry.contentRect;
|
|
22
|
+
|
|
23
|
+
element.dispatchEvent(
|
|
24
|
+
new ViewEvent("resizeview", {
|
|
25
|
+
width,
|
|
26
|
+
height,
|
|
27
|
+
entry
|
|
28
|
+
})
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const throttledResize = throttleResize > 0
|
|
34
|
+
? throttle(resizeCallback, throttleResize)
|
|
35
|
+
: resizeCallback;
|
|
36
|
+
|
|
37
|
+
const intersectionCallback = entries => {
|
|
38
|
+
for (let entry of entries) {
|
|
39
|
+
const type = entry.isIntersecting ? "enterview" : "exitview";
|
|
14
40
|
element.dispatchEvent(new ViewEvent(type, entry));
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const throttledIntersections = throttleEnterExit > 0
|
|
45
|
+
? throttle(intersectionCallback, throttleEnterExit)
|
|
46
|
+
: intersectionCallback;
|
|
47
|
+
|
|
48
|
+
if (intersection) {
|
|
49
|
+
intersectionObserver = new IntersectionObserver(throttledIntersections, { threshold });
|
|
17
50
|
intersectionObserver.observe(element);
|
|
18
51
|
}
|
|
52
|
+
|
|
19
53
|
if (resize) {
|
|
20
|
-
resizeObserver = new ResizeObserver(
|
|
21
|
-
for (let entry of entries) {
|
|
22
|
-
const { width, height } = entry.contentRect;
|
|
23
|
-
element.dispatchEvent(new ViewEvent("resizeView", { width, height, entry }));
|
|
24
|
-
}
|
|
25
|
-
});
|
|
54
|
+
resizeObserver = new ResizeObserver(throttledResize);
|
|
26
55
|
resizeObserver.observe(element);
|
|
27
56
|
}
|
|
57
|
+
|
|
58
|
+
// ---- UNREGISTER ----
|
|
28
59
|
return () => {
|
|
29
60
|
if (intersectionObserver) {
|
|
30
61
|
intersectionObserver.unobserve(element);
|
|
@@ -37,7 +68,7 @@ function register_view_event(element, { intersection = true, resize = true, thre
|
|
|
37
68
|
};
|
|
38
69
|
}
|
|
39
70
|
|
|
40
|
-
export{
|
|
71
|
+
export {
|
|
41
72
|
ViewEvent,
|
|
42
73
|
register_view_event
|
|
43
|
-
}
|
|
74
|
+
};
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
const EventsMap = {
|
|
2
|
-
'Custom' : [
|
|
3
|
-
'emit',
|
|
4
|
-
'on'
|
|
5
|
-
],
|
|
6
2
|
'Click' : [
|
|
7
3
|
'Click',
|
|
8
4
|
'DblClick',
|
|
@@ -48,13 +44,25 @@ const EventsMap = {
|
|
|
48
44
|
],
|
|
49
45
|
'Wheel': [
|
|
50
46
|
'Wheel'
|
|
51
|
-
]
|
|
47
|
+
],
|
|
52
48
|
// 'Media':[
|
|
53
49
|
|
|
54
50
|
// ],
|
|
55
51
|
// 'Hash':[
|
|
56
52
|
// "HashChange"
|
|
57
53
|
// ]
|
|
54
|
+
|
|
55
|
+
'View':[
|
|
56
|
+
'EnterView',
|
|
57
|
+
'ExitView',
|
|
58
|
+
'ResizeView'
|
|
59
|
+
],
|
|
60
|
+
'Swipe':[
|
|
61
|
+
'SwipeLeft',
|
|
62
|
+
'SwipeUp',
|
|
63
|
+
'SwipeRight',
|
|
64
|
+
'SwipeDown'
|
|
65
|
+
]
|
|
58
66
|
}
|
|
59
67
|
|
|
60
68
|
export {
|
package/src/events/utils.js
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
export function event_controller(e, event_name, details_setter, customizer) {
|
|
2
|
+
this.cache.currentEvent = event_name;
|
|
3
|
+
this.cache.event = e;
|
|
4
|
+
|
|
5
|
+
details_setter?.call(this);
|
|
6
|
+
if (customizer?.hasOwnProperty('prototype')) customizer?.call(this);
|
|
7
|
+
else customizer?.call(null, this);
|
|
8
|
+
|
|
9
|
+
if (this.cache.preventDefault[event_name]) e.preventDefault();
|
|
10
|
+
if (this.cache.stopPropagation[event_name]) e.stopPropagation();
|
|
11
|
+
if (this.cache.stopImmediatePropagation[event_name]) e.stopImmediatePropagation();
|
|
12
|
+
|
|
13
|
+
// Call the single callback if it exists
|
|
14
|
+
this.cache.callbacks[event_name]?.(this);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function toggle_event_listener(method, ...events) {
|
|
18
|
+
const keys = events.length === 0
|
|
19
|
+
? Object.keys(this.cache.paused)
|
|
20
|
+
: events;
|
|
21
|
+
keys.forEach(key => {
|
|
22
|
+
if (!this.cache.paused.hasOwnProperty(key)) return;
|
|
23
|
+
this.targetElement?.[method](
|
|
24
|
+
key,
|
|
25
|
+
this.cache.__controllers__[key],
|
|
26
|
+
this.cache.options[key]
|
|
27
|
+
);
|
|
28
|
+
this.cache.paused[key] = method === 'removeEventListener';
|
|
29
|
+
});
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
1
32
|
const getEvent=(event = "")=>{
|
|
2
33
|
if(event.startsWith("Ptr"))return `pointer${event.split("Ptr")[1].toLowerCase()}`;
|
|
3
34
|
return event.toLowerCase()
|
package/src/events/ziko-event.js
CHANGED
|
@@ -1,48 +1,54 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
getEvent,
|
|
3
|
+
event_controller,
|
|
4
|
+
toggle_event_listener
|
|
5
|
+
} from './utils.js'
|
|
2
6
|
class ZikoEvent {
|
|
3
|
-
constructor(target = null, Events = [], details_setter, customizer){
|
|
7
|
+
constructor(signature, target = null, Events = [], details_setter, customizer){
|
|
4
8
|
this.target = target;
|
|
5
9
|
this.cache = {
|
|
10
|
+
signature,
|
|
6
11
|
currentEvent : null,
|
|
7
12
|
event: null,
|
|
8
13
|
options : {},
|
|
9
14
|
preventDefault : {},
|
|
10
15
|
stopPropagation : {},
|
|
11
16
|
stopImmediatePropagation : {},
|
|
12
|
-
event_flow : {},
|
|
13
17
|
paused : {},
|
|
14
|
-
stream : {
|
|
15
|
-
enabled : {},
|
|
16
|
-
clear : {},
|
|
17
|
-
history : {}
|
|
18
|
-
},
|
|
19
18
|
callbacks : {},
|
|
20
19
|
__controllers__:{}
|
|
21
20
|
}
|
|
22
|
-
if(Events)this._register_events(Events, details_setter, customizer);
|
|
23
|
-
}
|
|
24
|
-
_register_events(Events, details_setter, customizer, REGISTER_METHODES = true){
|
|
25
|
-
const events = Events?.map(n=>getEvent(n))
|
|
26
|
-
events?.forEach((event,i)=>{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
if (Events) this._register_events(Events, details_setter, customizer);
|
|
22
|
+
}
|
|
23
|
+
_register_events(Events, details_setter, customizer, REGISTER_METHODES = true) {
|
|
24
|
+
const events = Events?.map(n => getEvent(n));
|
|
25
|
+
events?.forEach((event, i) => {
|
|
26
|
+
this.cache.preventDefault[event] = false;
|
|
27
|
+
this.cache.options[event] = {};
|
|
28
|
+
this.cache.paused[event] = false;
|
|
29
|
+
this.cache.__controllers__[event] = (e) =>
|
|
30
|
+
event_controller.call(this, e, event, details_setter, customizer);
|
|
31
|
+
if (REGISTER_METHODES) {
|
|
32
|
+
this[`on${Events[i]}`] = (callback) =>
|
|
33
|
+
this.__onEvent(event, this.cache.options[event], {}, callback);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
__onEvent(event, options, dispose, callback) {
|
|
39
|
+
if (!callback) return this;
|
|
40
|
+
this.cache.callbacks[event] = callback;
|
|
41
|
+
this.__handle(event, this.cache.__controllers__[event], options, dispose);
|
|
36
42
|
return this;
|
|
37
43
|
}
|
|
38
44
|
get targetElement(){
|
|
39
45
|
return this.target?.element;
|
|
40
46
|
}
|
|
41
47
|
get isParent(){
|
|
42
|
-
return this.target?.element === this.event
|
|
48
|
+
return this.target?.element === this.event?.srcElement;
|
|
43
49
|
}
|
|
44
50
|
get item(){
|
|
45
|
-
return this.target.find(n=>n.element == this.event?.srcElement)?.[0];
|
|
51
|
+
return this.target.find(n => n.element == this.event?.srcElement)?.[0];
|
|
46
52
|
}
|
|
47
53
|
get currentEvent(){
|
|
48
54
|
return this.cache.currentEvent;
|
|
@@ -50,117 +56,53 @@ class ZikoEvent {
|
|
|
50
56
|
get event(){
|
|
51
57
|
return this.cache.event;
|
|
52
58
|
}
|
|
59
|
+
get detail(){
|
|
60
|
+
return this.cache.event.detail
|
|
61
|
+
}
|
|
53
62
|
setTarget(UI){
|
|
54
|
-
this.target=UI;
|
|
63
|
+
this.target = UI;
|
|
55
64
|
return this;
|
|
56
65
|
}
|
|
57
|
-
__handle(event, handler, options
|
|
66
|
+
__handle(event, handler, options){
|
|
58
67
|
this.targetElement?.addEventListener(event, handler, options);
|
|
59
68
|
return this;
|
|
60
69
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if(this.cache.
|
|
65
|
-
|
|
66
|
-
// this.cache.callbacks.map(n=>e=>n.call(this,e));
|
|
67
|
-
this.cache.callbacks[event].map(n=>e=>n.call(this,e))
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else this.cache.callbacks[event] = callbacks.map(n=>e=>n.call(this,e));
|
|
74
|
-
this.__handle(event, this.cache.__controllers__[event],options, dispose)
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
#override(methode, overrides, defaultValue){
|
|
78
|
-
if(defaultValue === "default") Object.assign(this.cache[methode], {...this.cache[methode], ...overrides});
|
|
79
|
-
const all = defaultValue === "default"
|
|
80
|
-
? this.cache[methode]
|
|
81
|
-
: Object.fromEntries(Object.keys(this.cache.preventDefault).map(n=>[n,defaultValue]))
|
|
82
|
-
Object.assign(this.cache[methode], {...all,...overrides});
|
|
83
|
-
return this
|
|
84
|
-
}
|
|
85
|
-
preventDefault(overrides = {}, defaultValue = "default"){
|
|
86
|
-
this.#override("preventDefault", overrides, defaultValue);
|
|
87
|
-
// const all=Object.fromEntries(Object.keys(this.cache.preventDefault).map(n=>[n,defaultValue]))
|
|
88
|
-
// Object.assign(this.cache.preventDefault, {...all,...overrides});
|
|
70
|
+
#override(method, ...events) {
|
|
71
|
+
const keys = events.length === 0 ? Object.keys(this.cache[method]) : events
|
|
72
|
+
keys.forEach(e => {
|
|
73
|
+
if (this.cache[method].hasOwnProperty(e)) this.cache[method][e] = true;
|
|
74
|
+
});
|
|
89
75
|
return this;
|
|
90
76
|
}
|
|
91
|
-
|
|
92
|
-
this.#override(
|
|
93
|
-
return this;
|
|
77
|
+
preventDefault(...events) {
|
|
78
|
+
return this.#override('preventDefault', ...events);
|
|
94
79
|
}
|
|
95
|
-
|
|
96
|
-
this.#override(
|
|
97
|
-
|
|
80
|
+
stopPropagation(...events) {
|
|
81
|
+
return this.#override('stopPropagation', ...events);
|
|
82
|
+
}
|
|
83
|
+
stopImmediatePropagation(...events) {
|
|
84
|
+
return this.#override('stopImmediatePropagation', ...events);
|
|
98
85
|
}
|
|
99
86
|
setEventOptions(event, options){
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this.
|
|
87
|
+
const evt = getEvent(event);
|
|
88
|
+
this.pause();
|
|
89
|
+
Object.assign(this.cache.options[evt], options);
|
|
90
|
+
this.resume();
|
|
103
91
|
return this;
|
|
104
92
|
}
|
|
105
|
-
pause(
|
|
106
|
-
|
|
107
|
-
? this.cache.stream.enabled
|
|
108
|
-
: Object.entries(Object.keys(this.cache.stream.enabled).map(n=>[n,defaultValue]));
|
|
109
|
-
overrides={...all,...overrides};
|
|
110
|
-
for(let key in overrides){
|
|
111
|
-
if(overrides[key]){
|
|
112
|
-
this.targetElement?.removeEventListener(key, this.cache.__controllers__[key], this.cache.options[key]);
|
|
113
|
-
this.cache.paused[key]=true;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return this;
|
|
93
|
+
pause(...events) {
|
|
94
|
+
return toggle_event_listener.call(this, 'removeEventListener', ...events)
|
|
117
95
|
}
|
|
118
|
-
resume(
|
|
119
|
-
|
|
120
|
-
? this.cache.stream.enabled
|
|
121
|
-
: Object.entries(Object.keys(this.cache.stream.enabled).map(n=>[n,defaultValue]));
|
|
122
|
-
overrides={...all,...overrides};
|
|
123
|
-
for(let key in overrides){
|
|
124
|
-
if(overrides[key]){
|
|
125
|
-
this.targetElement?.addEventListener(key,this.cache.__controllers__[key], this.cache.options[key]);
|
|
126
|
-
this.cache.paused[key]=false;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return this;
|
|
130
|
-
}
|
|
131
|
-
stream(overrides = {}, defaultValue = "default"){
|
|
132
|
-
this.cache.stream.t0=Date.now();
|
|
133
|
-
const all=Object.fromEntries(Object.keys(this.cache.stream.enabled).map(n=>[n,defaultValue]))
|
|
134
|
-
overrides={...all,...overrides}
|
|
135
|
-
Object.assign(this.cache.stream.enabled,overrides);
|
|
136
|
-
return this;
|
|
137
|
-
}
|
|
138
|
-
clear(){
|
|
139
|
-
return this;
|
|
96
|
+
resume(...events) {
|
|
97
|
+
return toggle_event_listener.call(this, 'addEventListener', ...events);
|
|
140
98
|
}
|
|
141
|
-
dispose(
|
|
142
|
-
this.pause(
|
|
143
|
-
|
|
99
|
+
dispose(){
|
|
100
|
+
this.pause();
|
|
101
|
+
this.target.events[this.cache.signature] = null
|
|
144
102
|
return this;
|
|
145
103
|
}
|
|
146
104
|
}
|
|
147
|
-
|
|
148
|
-
function event_controller(e, event_name, details_setter, customizer, push_object){
|
|
149
|
-
this.cache.currentEvent = event_name;
|
|
150
|
-
this.cache.event = e;
|
|
151
|
-
details_setter?.call(this);
|
|
152
|
-
customizer?.hasOwnProperty("prototype") ? customizer?.call(this) : customizer?.call(null, this);
|
|
153
|
-
// if(customizer?.hasOwnProperty("prototype")) customizer?.call(this)
|
|
154
|
-
// else customizer?.call(null, this)
|
|
155
|
-
if(this.cache.preventDefault[event_name]) e.preventDefault();
|
|
156
|
-
if(this.cache.stopPropagation[event_name]) e.stopPropagation();
|
|
157
|
-
if(this.cache.stopImmediatePropagation[event_name]) e.stopImmediatePropagation();
|
|
158
|
-
|
|
159
|
-
if(this.cache.stream.enabled[event_name]&&push_object)this.cache.stream.history[event_name].push(push_object);
|
|
160
|
-
this.cache.callbacks[event_name]?.map(n=>n(this));
|
|
161
|
-
}
|
|
162
|
-
|
|
163
105
|
export {
|
|
164
106
|
ZikoEvent,
|
|
165
107
|
getEvent
|
|
166
|
-
}
|
|
108
|
+
}
|