ziko 0.66.0 → 0.67.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/dist/ziko.cjs +57 -2
- package/dist/ziko.js +57 -2
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +57 -2
- package/package.json +2 -2
- package/src/events/custom-events-registry/click-away.js +0 -1
- package/src/exp-events/controller/index.js +41 -0
- package/src/exp-events/custom-events-registry/click-away.js +39 -0
- package/src/exp-events/custom-events-registry/index.js +3 -0
- package/src/exp-events/custom-events-registry/swipe.js +76 -0
- package/src/exp-events/custom-events-registry/view.js +74 -0
- package/src/exp-events/details-setter/index.js +4 -0
- package/src/exp-events/details-setter/key.js +14 -0
- package/src/exp-events/details-setter/mouse.js +35 -0
- package/src/exp-events/details-setter/pointer.js +35 -0
- package/src/exp-events/details-setter/touch.js +37 -0
- package/src/exp-events/index.js +1 -0
- package/src/ui/constructors/UIElement.js +19 -1
- package/src/ui/{__methods__ → constructors/mixins}/dom.js +1 -1
- package/src/ui/{__methods__ → constructors/mixins}/events.js +3 -3
- package/src/ui/{__methods__ → constructors/mixins}/style.js +1 -1
- package/src/ui/{__methods__ → constructors/mixins}/utils/index.js +3 -3
- package/README.dep.md +0 -137
- package/src/--reactivity-deprecated/events/Input.js +0 -62
- package/src/--reactivity-deprecated/events/ZikoEvent.js +0 -92
- package/src/--reactivity-deprecated/events/__note__ +0 -1
- package/src/--reactivity-deprecated/events/custom-event.js +0 -57
- package/src/--reactivity-deprecated/events/hash.js +0 -47
- package/src/--reactivity-deprecated/events/index.js +0 -12
- package/src/--reactivity-deprecated/events/media.js +0 -1
- package/src/--reactivity-deprecated/events/mouse.js +0 -233
- package/src/--reactivity-deprecated/events/swipe.js +0 -149
- package/src/--reactivity-deprecated/events/touch.js +0 -0
- package/src/--reactivity-deprecated/hooks/Contexte/index.js +0 -1
- package/src/--reactivity-deprecated/hooks/Contexte/useSuccesifKeys.js +0 -14
- package/src/--reactivity-deprecated/hooks/UI/index.js +0 -6
- package/src/--reactivity-deprecated/hooks/UI/useCssLink.js +0 -0
- package/src/--reactivity-deprecated/hooks/UI/useLinearGradient.js +0 -0
- package/src/--reactivity-deprecated/hooks/UI/useMediaQuery.js +0 -43
- package/src/--reactivity-deprecated/hooks/UI/useRadialGradient.js +0 -0
- package/src/--reactivity-deprecated/hooks/UI/useRoot.js +0 -39
- package/src/--reactivity-deprecated/hooks/UI/useStyle.js +0 -79
- package/src/--reactivity-deprecated/hooks/UI/useTheme.js +0 -62
- package/src/--reactivity-deprecated/hooks/head/_useCssText.js +0 -21
- package/src/--reactivity-deprecated/hooks/head/index.js +0 -5
- package/src/--reactivity-deprecated/hooks/head/useFavIcon.js +0 -38
- package/src/--reactivity-deprecated/hooks/head/useHead.js +0 -28
- package/src/--reactivity-deprecated/hooks/head/useMeta.js +0 -52
- package/src/--reactivity-deprecated/hooks/head/useTitle.js +0 -30
- package/src/--reactivity-deprecated/hooks/index.js +0 -8
- package/src/--reactivity-deprecated/hooks/todo.md +0 -26
- package/src/--reactivity-deprecated/idea +0 -1
- package/src/--reactivity-deprecated/index.js +0 -3
- package/src/--reactivity-deprecated/observer/attributes.js +0 -28
- package/src/--reactivity-deprecated/observer/children.js +0 -37
- package/src/--reactivity-deprecated/observer/index.js +0 -6
- package/src/--reactivity-deprecated/observer/intersection.js +0 -44
- package/src/--reactivity-deprecated/observer/mutation.js +0 -113
- package/src/--reactivity-deprecated/observer/resize.js +0 -47
- package/src/--reactivity-deprecated/observer/screen.js +0 -45
- package/src/--reactivity-deprecated/observer/screen.js.txt +0 -84
- package/src/--reactivity-deprecated/observer/screen.txt +0 -13
- package/src/--use-deprecated/index.js +0 -11
- package/src/--use-deprecated/use-channel.js.txt +0 -61
- package/src/--use-deprecated/use-event-emmiter.js.txt +0 -64
- package/src/--use-deprecated/use-favicon.js +0 -0
- package/src/--use-deprecated/use-link.js +0 -0
- package/src/--use-deprecated/use-meta.js +0 -0
- package/src/--use-deprecated/use-root.js +0 -77
- package/src/--use-deprecated/use-storage.js.txt +0 -73
- package/src/--use-deprecated/use-thread.js +0 -44
- package/src/--use-deprecated/use-title.js +0 -0
- package/src/ui/constructors/_m.js.txt +0 -96
- package/src/ui/constructors/style/index.js +0 -506
- /package/src/ui/{__methods__ → constructors/mixins}/attrs.js +0 -0
- /package/src/ui/{__methods__ → constructors/mixins}/index.js +0 -0
- /package/src/ui/{__methods__ → constructors/mixins}/indexing.js +0 -0
- /package/src/ui/{__methods__ → constructors/mixins}/lifecycle.js +0 -0
package/dist/ziko.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date :
|
|
5
|
+
Date : Mon Feb 16 2026 11:34:52 GMT+0000 (UTC)
|
|
6
6
|
Git-Repo : https://github.com/zakarialaoui10/ziko.js
|
|
7
7
|
Git-Wiki : https://github.com/zakarialaoui10/ziko.js/wiki
|
|
8
8
|
Released under MIT License
|
|
@@ -2935,7 +2935,6 @@ class ClickAwayEvent extends Event {
|
|
|
2935
2935
|
}
|
|
2936
2936
|
|
|
2937
2937
|
function register_click_away_event(element) {
|
|
2938
|
-
console.log(element);
|
|
2939
2938
|
function handler(e) {
|
|
2940
2939
|
if (!element.contains(e.target)) {
|
|
2941
2940
|
const clickAwayEvent = new ClickAwayEvent(e, element);
|
|
@@ -3335,9 +3334,56 @@ var StyleMethods = /*#__PURE__*/Object.freeze({
|
|
|
3335
3334
|
style: style$1
|
|
3336
3335
|
});
|
|
3337
3336
|
|
|
3337
|
+
class EventController {
|
|
3338
|
+
constructor(target, category){
|
|
3339
|
+
this.cache = {
|
|
3340
|
+
category,
|
|
3341
|
+
target,
|
|
3342
|
+
listeners : {},
|
|
3343
|
+
currentEvent : null
|
|
3344
|
+
};
|
|
3345
|
+
}
|
|
3346
|
+
get element(){
|
|
3347
|
+
return this.cache.target.element;
|
|
3348
|
+
}
|
|
3349
|
+
get currentEvent(){
|
|
3350
|
+
return this.cache.currentEvent;
|
|
3351
|
+
}
|
|
3352
|
+
addListener(event, callback){
|
|
3353
|
+
this.cache.listeners[event] = {
|
|
3354
|
+
paused : false,
|
|
3355
|
+
callback : ()=>{
|
|
3356
|
+
if(!this.cache.listeners[event].paused) {
|
|
3357
|
+
this.cache.currentEvent = event;
|
|
3358
|
+
callback.call(this, this);
|
|
3359
|
+
}
|
|
3360
|
+
},
|
|
3361
|
+
};
|
|
3362
|
+
this.element.addEventListener(event, this.cache.listeners[event].callback);
|
|
3363
|
+
return this;
|
|
3364
|
+
}
|
|
3365
|
+
removeListener(event){
|
|
3366
|
+
this.element.removeEventListener(event, this.cache.listeners[event].callback);
|
|
3367
|
+
return this;
|
|
3368
|
+
}
|
|
3369
|
+
pause(event){
|
|
3370
|
+
this.cache.listeners[event].paused = true;
|
|
3371
|
+
return this;
|
|
3372
|
+
}
|
|
3373
|
+
resume(event){
|
|
3374
|
+
this.cache.listeners[event].paused = false;
|
|
3375
|
+
return this;
|
|
3376
|
+
}
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3338
3379
|
let UIElement$1 = class UIElement extends UIElementCore{
|
|
3339
3380
|
constructor({element, name ='', type='html', render = __Ziko__.__Config__.default.render}={}){
|
|
3340
3381
|
super();
|
|
3382
|
+
this.exp = {
|
|
3383
|
+
events : {
|
|
3384
|
+
|
|
3385
|
+
}
|
|
3386
|
+
};
|
|
3341
3387
|
register_to_class(
|
|
3342
3388
|
this,
|
|
3343
3389
|
LifecycleMethods,
|
|
@@ -3350,6 +3396,15 @@ let UIElement$1 = class UIElement extends UIElementCore{
|
|
|
3350
3396
|
|
|
3351
3397
|
if(element)this.init(element, name, type, render);
|
|
3352
3398
|
}
|
|
3399
|
+
_on(event, callback, {details_setter, category = 'global'} = {}){
|
|
3400
|
+
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
3401
|
+
const EVENT = this.exp.events[category];
|
|
3402
|
+
EVENT.addListener(event, callback);
|
|
3403
|
+
if(details_setter) details_setter.call(EVENT);
|
|
3404
|
+
}
|
|
3405
|
+
_off(event, category = 'global'){
|
|
3406
|
+
this.exp.events[category].removeListener(event);
|
|
3407
|
+
}
|
|
3353
3408
|
get element(){
|
|
3354
3409
|
return this.cache.element;
|
|
3355
3410
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziko",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.67.0",
|
|
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",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"@vitest/coverage-v8": "^4.0.18",
|
|
91
91
|
"cross-env": "^10.1.0",
|
|
92
92
|
"eslint": "^10.0.0",
|
|
93
|
-
"jsdom": "^
|
|
93
|
+
"jsdom": "^26.0.0",
|
|
94
94
|
"rollup": "^4.57.1",
|
|
95
95
|
"vitest": "^4.0.18"
|
|
96
96
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export class EventController {
|
|
2
|
+
constructor(target, category){
|
|
3
|
+
this.cache = {
|
|
4
|
+
category,
|
|
5
|
+
target,
|
|
6
|
+
listeners : {},
|
|
7
|
+
currentEvent : null
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
get element(){
|
|
11
|
+
return this.cache.target.element;
|
|
12
|
+
}
|
|
13
|
+
get currentEvent(){
|
|
14
|
+
return this.cache.currentEvent;
|
|
15
|
+
}
|
|
16
|
+
addListener(event, callback){
|
|
17
|
+
this.cache.listeners[event] = {
|
|
18
|
+
paused : false,
|
|
19
|
+
callback : ()=>{
|
|
20
|
+
if(!this.cache.listeners[event].paused) {
|
|
21
|
+
this.cache.currentEvent = event
|
|
22
|
+
callback.call(this, this)
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
this.element.addEventListener(event, this.cache.listeners[event].callback);
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
removeListener(event){
|
|
30
|
+
this.element.removeEventListener(event, this.cache.listeners[event].callback);
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
pause(event){
|
|
34
|
+
this.cache.listeners[event].paused = true;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
resume(event){
|
|
38
|
+
this.cache.listeners[event].paused = false;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
class ClickAwayEvent extends Event {
|
|
2
|
+
constructor(originalEvent, targetElement) {
|
|
3
|
+
super("clickaway", { bubbles: true, cancelable: true });
|
|
4
|
+
this.originalEvent = originalEvent;
|
|
5
|
+
this.targetElement = targetElement;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function register_click_away_event(element) {
|
|
10
|
+
// console.log(element)
|
|
11
|
+
function handler(e) {
|
|
12
|
+
if (!element.contains(e.target)) {
|
|
13
|
+
const clickAwayEvent = new ClickAwayEvent(e, element);
|
|
14
|
+
element.dispatchEvent(clickAwayEvent);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
globalThis?.document?.addEventListener("click", handler);
|
|
19
|
+
|
|
20
|
+
return () => globalThis?.document?.removeEventListener("click", handler);
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export{
|
|
25
|
+
ClickAwayEvent,
|
|
26
|
+
register_click_away_event
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// // Example usage
|
|
30
|
+
// const box = document.querySelector("#my-box");
|
|
31
|
+
|
|
32
|
+
// const stop = listenClickAway(box);
|
|
33
|
+
|
|
34
|
+
// box.addEventListener("clickaway", (e) => {
|
|
35
|
+
// console.log("Clicked outside box!", e);
|
|
36
|
+
// });
|
|
37
|
+
|
|
38
|
+
// // later, you can stop listening:
|
|
39
|
+
// // stop();
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
class SwipeEvent extends CustomEvent {
|
|
2
|
+
constructor(type, detail) {
|
|
3
|
+
super(type, {
|
|
4
|
+
detail,
|
|
5
|
+
bubbles: true,
|
|
6
|
+
cancelable: true
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
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
|
+
|
|
22
|
+
function onPointerDown(e) {
|
|
23
|
+
startX = e.clientX;
|
|
24
|
+
startY = e.clientY;
|
|
25
|
+
startTime = performance.now();
|
|
26
|
+
isPointerDown = true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function onPointerUp(e) {
|
|
30
|
+
if (!isPointerDown) return;
|
|
31
|
+
isPointerDown = false;
|
|
32
|
+
|
|
33
|
+
const distX = e.clientX - startX;
|
|
34
|
+
const distY = e.clientY - startY;
|
|
35
|
+
const elapsed = performance.now() - startTime;
|
|
36
|
+
|
|
37
|
+
let direction = null;
|
|
38
|
+
let eventName = null;
|
|
39
|
+
|
|
40
|
+
if (elapsed <= allowedTime) {
|
|
41
|
+
if (Math.abs(distX) >= threshold && Math.abs(distY) <= restraint) {
|
|
42
|
+
direction = distX < 0 ? "left" : "right";
|
|
43
|
+
eventName = "swipe" + direction;
|
|
44
|
+
}
|
|
45
|
+
else if (Math.abs(distY) >= threshold && Math.abs(distX) <= restraint) {
|
|
46
|
+
direction = distY < 0 ? "up" : "down";
|
|
47
|
+
eventName = "swipe" + direction;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Emit event
|
|
52
|
+
if (eventName) {
|
|
53
|
+
element.dispatchEvent(
|
|
54
|
+
new SwipeEvent(eventName, {
|
|
55
|
+
direction,
|
|
56
|
+
distX,
|
|
57
|
+
distY,
|
|
58
|
+
originalEvent: e
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
element.addEventListener("pointerdown", onPointerDown, { passive: true });
|
|
65
|
+
element.addEventListener("pointerup", onPointerUp, { passive: true });
|
|
66
|
+
|
|
67
|
+
return () => {
|
|
68
|
+
element.removeEventListener("pointerdown", onPointerDown);
|
|
69
|
+
element.removeEventListener("pointerup", onPointerUp);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export {
|
|
74
|
+
SwipeEvent,
|
|
75
|
+
register_swipe_event
|
|
76
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
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
|
+
) {
|
|
18
|
+
let intersectionObserver, resizeObserver;
|
|
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";
|
|
40
|
+
element.dispatchEvent(new ViewEvent(type, entry));
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const throttledIntersections = throttleEnterExit > 0
|
|
45
|
+
? throttle(intersectionCallback, throttleEnterExit)
|
|
46
|
+
: intersectionCallback;
|
|
47
|
+
|
|
48
|
+
if (intersection) {
|
|
49
|
+
intersectionObserver = new IntersectionObserver(throttledIntersections, { threshold });
|
|
50
|
+
intersectionObserver.observe(element);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (resize) {
|
|
54
|
+
resizeObserver = new ResizeObserver(throttledResize);
|
|
55
|
+
resizeObserver.observe(element);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// ---- UNREGISTER ----
|
|
59
|
+
return () => {
|
|
60
|
+
if (intersectionObserver) {
|
|
61
|
+
intersectionObserver.unobserve(element);
|
|
62
|
+
intersectionObserver.disconnect();
|
|
63
|
+
}
|
|
64
|
+
if (resizeObserver) {
|
|
65
|
+
resizeObserver.unobserve(element);
|
|
66
|
+
resizeObserver.disconnect();
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
ViewEvent,
|
|
73
|
+
register_view_event
|
|
74
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function key_details_setter(){
|
|
2
|
+
switch(this.currentEvent){
|
|
3
|
+
case "keydown" : {
|
|
4
|
+
this.kd = this.event.key
|
|
5
|
+
}; break;
|
|
6
|
+
case "keypress" : {
|
|
7
|
+
this.kp = this.event.key
|
|
8
|
+
}; break;
|
|
9
|
+
case "keyup" : {
|
|
10
|
+
this.ku = this.event.key
|
|
11
|
+
}; break;
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function mouse_details_setter() {
|
|
2
|
+
const rect = this.targetElement.getBoundingClientRect();
|
|
3
|
+
const e = this.event;
|
|
4
|
+
let x = (e.clientX - rect.left) | 0;
|
|
5
|
+
let y = (e.clientY - rect.top) | 0;
|
|
6
|
+
|
|
7
|
+
if(this.cache.useNormalisedCoordinates){
|
|
8
|
+
const w = this.targetElement.clientWidth;
|
|
9
|
+
const h = this.targetElement.clientHeight;
|
|
10
|
+
x = +((x / w) * 2 - 1).toFixed(8);
|
|
11
|
+
y = +((y / h) * -2 + 1).toFixed(8);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
switch (this.currentEvent) {
|
|
15
|
+
|
|
16
|
+
case "mousedown":
|
|
17
|
+
this.dx = x;
|
|
18
|
+
this.dy = y;
|
|
19
|
+
this.isDown = true;
|
|
20
|
+
break;
|
|
21
|
+
|
|
22
|
+
case "mousemove":
|
|
23
|
+
this.mx = x;
|
|
24
|
+
this.my = y;
|
|
25
|
+
this.isMoving = true;
|
|
26
|
+
break;
|
|
27
|
+
|
|
28
|
+
case "mouserup":
|
|
29
|
+
this.ux = x;
|
|
30
|
+
this.uy = y;
|
|
31
|
+
this.isDown = false;
|
|
32
|
+
this.isMoving = false;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function ptr_details_setter() {
|
|
2
|
+
const rect = this.targetElement.getBoundingClientRect();
|
|
3
|
+
const e = this.event;
|
|
4
|
+
let x = (e.clientX - rect.left) | 0;
|
|
5
|
+
let y = (e.clientY - rect.top) | 0;
|
|
6
|
+
|
|
7
|
+
if(this.cache.useNormalisedCoordinates){
|
|
8
|
+
const w = this.targetElement.clientWidth;
|
|
9
|
+
const h = this.targetElement.clientHeight;
|
|
10
|
+
x = +((x / w) * 2 - 1).toFixed(8);
|
|
11
|
+
y = +((y / h) * -2 + 1).toFixed(8);
|
|
12
|
+
}
|
|
13
|
+
switch (this.currentEvent) {
|
|
14
|
+
|
|
15
|
+
case "pointerdown":
|
|
16
|
+
this.dx = x;
|
|
17
|
+
this.dy = y;
|
|
18
|
+
this.isDown = true;
|
|
19
|
+
break;
|
|
20
|
+
|
|
21
|
+
case "pointermove":
|
|
22
|
+
this.mx = x;
|
|
23
|
+
this.my = y;
|
|
24
|
+
this.isMoving = true;
|
|
25
|
+
break;
|
|
26
|
+
|
|
27
|
+
case "pointerup":
|
|
28
|
+
this.ux = x;
|
|
29
|
+
this.uy = y;
|
|
30
|
+
this.isDown = false;
|
|
31
|
+
this.isMoving = false;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function touch_details_setter() {
|
|
2
|
+
const e = this.event;
|
|
3
|
+
const touch = e.touches?.[0] || e.changedTouches?.[0];
|
|
4
|
+
|
|
5
|
+
if (!touch) return; // should never happen but safe
|
|
6
|
+
|
|
7
|
+
const rect = this.targetElement.getBoundingClientRect();
|
|
8
|
+
let x = touch.clientX - rect.left;
|
|
9
|
+
let y = touch.clientY - rect.top;
|
|
10
|
+
|
|
11
|
+
if(this.cache.useNormalisedCoordinates){
|
|
12
|
+
const w = this.targetElement.clientWidth;
|
|
13
|
+
const h = this.targetElement.clientHeight;
|
|
14
|
+
x = +((x / w) * 2 - 1).toFixed(8);
|
|
15
|
+
y = +((y / h) * -2 + 1).toFixed(8);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
switch (this.currentEvent) {
|
|
19
|
+
case "touchstart":
|
|
20
|
+
this.dx = x;
|
|
21
|
+
this.dy = y;
|
|
22
|
+
this.isDown = true;
|
|
23
|
+
break;
|
|
24
|
+
|
|
25
|
+
case "touchmove":
|
|
26
|
+
this.mx = x;
|
|
27
|
+
this.my = y;
|
|
28
|
+
this.isMoving = true;
|
|
29
|
+
break;
|
|
30
|
+
|
|
31
|
+
case "touchend":
|
|
32
|
+
this.ux = x;
|
|
33
|
+
this.uy = y;
|
|
34
|
+
this.isDown = false;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './controller/index.js'
|
|
@@ -7,10 +7,19 @@ import {
|
|
|
7
7
|
IndexingMethods,
|
|
8
8
|
EventsMethodes,
|
|
9
9
|
StyleMethods
|
|
10
|
-
} from "
|
|
10
|
+
} from "./mixins/index.js";
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
EventController
|
|
14
|
+
} from '../../exp-events/index.js'
|
|
11
15
|
class UIElement extends UIElementCore{
|
|
12
16
|
constructor({element, name ='', type='html', render = __Ziko__.__Config__.default.render}={}){
|
|
13
17
|
super()
|
|
18
|
+
this.exp = {
|
|
19
|
+
events : {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
}
|
|
14
23
|
register_to_class(
|
|
15
24
|
this,
|
|
16
25
|
LifecycleMethods,
|
|
@@ -23,6 +32,15 @@ class UIElement extends UIElementCore{
|
|
|
23
32
|
|
|
24
33
|
if(element)this.init(element, name, type, render)
|
|
25
34
|
}
|
|
35
|
+
_on(event, callback, {details_setter, category = 'global'} = {}){
|
|
36
|
+
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
37
|
+
const EVENT = this.exp.events[category]
|
|
38
|
+
EVENT.addListener(event, callback);
|
|
39
|
+
if(details_setter) details_setter.call(EVENT);
|
|
40
|
+
}
|
|
41
|
+
_off(event, category = 'global'){
|
|
42
|
+
this.exp.events[category].removeListener(event)
|
|
43
|
+
}
|
|
26
44
|
get element(){
|
|
27
45
|
return this.cache.element;
|
|
28
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventsMap } from "
|
|
1
|
+
import { EventsMap } from "../../../events/events-map/index.js";
|
|
2
2
|
import {
|
|
3
3
|
bind_pointer_event,
|
|
4
4
|
bind_mouse_event,
|
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
bind_wheel_event,
|
|
11
11
|
bind_view_event,
|
|
12
12
|
bind_swipe_event
|
|
13
|
-
} from "
|
|
13
|
+
} from "../../../events/binders/index.js";
|
|
14
14
|
|
|
15
|
-
import { bind_custom_event } from "
|
|
15
|
+
import { bind_custom_event } from "../../../events/binders/custom-event.js";
|
|
16
16
|
|
|
17
17
|
const binderMap = {
|
|
18
18
|
ptr: bind_pointer_event,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { isStateGetter } from "
|
|
1
|
+
import { isStateGetter } from "../../../../hooks/use-state.js";
|
|
2
2
|
import {
|
|
3
3
|
is_camelcase,
|
|
4
4
|
camel2hyphencase
|
|
5
|
-
} from '
|
|
6
|
-
import { text } from "
|
|
5
|
+
} from '../../../../data/string/index.js'
|
|
6
|
+
import { text } from "../../../text/index.js";
|
|
7
7
|
export async function __addItem__(adder, pusher, ...ele) {
|
|
8
8
|
if (this.cache.isFrozzen) {
|
|
9
9
|
console.warn("You can't append new item to frozzen element");
|