ziko 0.66.0 → 0.68.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 +315 -789
- package/dist/ziko.js +315 -789
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +315 -775
- package/package.json +2 -2
- package/src/events/controller/index.js +57 -0
- package/src/events/custom-events-registry/click-away.js +1 -1
- package/src/events/index.js +1 -3
- package/src/events-dep/custom-events-registry/click-away.js +38 -0
- package/src/events-dep/custom-events-registry/index.js +3 -0
- package/src/events-dep/custom-events-registry/swipe.js +76 -0
- package/src/events-dep/custom-events-registry/view.js +74 -0
- package/src/events-dep/details-setter/index.js +4 -0
- package/src/events-dep/details-setter/key.js +14 -0
- package/src/events-dep/details-setter/mouse.js +35 -0
- package/src/events-dep/details-setter/pointer.js +35 -0
- package/src/events-dep/details-setter/touch.js +37 -0
- package/src/events-dep/index.js +3 -0
- package/src/ui/constructors/UIElement.js +32 -4
- package/src/ui/{__methods__ → constructors/mixins}/attrs.js +19 -5
- package/src/ui/constructors/mixins/dom.js +108 -0
- package/src/ui/constructors/mixins/events/click.js +22 -0
- package/src/ui/constructors/mixins/events/index.js +3 -0
- package/src/ui/constructors/mixins/events/key.js +24 -0
- package/src/ui/constructors/mixins/events/ptr.js +44 -0
- package/src/ui/constructors/mixins/events/utils/index.js +15 -0
- package/src/ui/{__methods__ → constructors/mixins}/index.js +4 -2
- package/src/ui/{__methods__ → constructors/mixins}/style.js +1 -1
- 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/__methods__/dom.js +0 -56
- package/src/ui/__methods__/events.js +0 -57
- package/src/ui/__methods__/utils/index.js +0 -64
- package/src/ui/constructors/_m.js.txt +0 -96
- package/src/ui/constructors/style/index.js +0 -506
- /package/src/{events → events-dep}/binders/coordinates-based-event.js +0 -0
- /package/src/{events → events-dep}/binders/custom-event.js +0 -0
- /package/src/{events → events-dep}/binders/index.js +0 -0
- /package/src/{events → events-dep}/customizers/normalise-coordinates.js +0 -0
- /package/src/{events → events-dep}/events-map/index.js +0 -0
- /package/src/{events → events-dep}/types/__Shared__.d.ts +0 -0
- /package/src/{events → events-dep}/types/clipboard.d.ts +0 -0
- /package/src/{events → events-dep}/types/focus.d.ts +0 -0
- /package/src/{events → events-dep}/types/pointer.d.ts +0 -0
- /package/src/{events → events-dep}/utils.js +0 -0
- /package/src/{events → events-dep}/ziko-event.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.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/*
|
|
3
3
|
Project: ziko.js
|
|
4
4
|
Author: Zakaria Elalaoui
|
|
5
|
-
Date :
|
|
5
|
+
Date : Fri Feb 20 2026 11:36:37 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
|
|
@@ -2394,89 +2394,14 @@ const isStateGetter = (arg) => {
|
|
|
2394
2394
|
return typeof arg === 'function' && arg?.()?.isStateGetter?.();
|
|
2395
2395
|
};
|
|
2396
2396
|
|
|
2397
|
-
const camel2hyphencase
|
|
2397
|
+
const camel2hyphencase = (text = '') => text.replace(/[A-Z]/g, match => '-' + match.toLowerCase());
|
|
2398
2398
|
|
|
2399
|
-
const is_camelcase
|
|
2399
|
+
const is_camelcase = (text = '') =>{
|
|
2400
2400
|
if (text.length === 0) return false;
|
|
2401
2401
|
const camelCasePattern = /^[a-z][a-zA-Z0-9]*$/;
|
|
2402
2402
|
return camelCasePattern.test(text);
|
|
2403
2403
|
};
|
|
2404
2404
|
|
|
2405
|
-
class ZikoUIText extends UINode {
|
|
2406
|
-
constructor(...value) {
|
|
2407
|
-
super("span", "text", false, ...value);
|
|
2408
|
-
this.element = globalThis?.document?.createTextNode(...value);
|
|
2409
|
-
}
|
|
2410
|
-
isText(){
|
|
2411
|
-
return true
|
|
2412
|
-
}
|
|
2413
|
-
}
|
|
2414
|
-
const text = (...str) => new ZikoUIText(...str);
|
|
2415
|
-
|
|
2416
|
-
async function __addItem__(adder, pusher, ...ele) {
|
|
2417
|
-
if (this.cache.isFrozzen) {
|
|
2418
|
-
console.warn("You can't append new item to frozzen element");
|
|
2419
|
-
return this;
|
|
2420
|
-
}
|
|
2421
|
-
for (let i = 0; i < ele.length; i++) {
|
|
2422
|
-
if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
|
|
2423
|
-
// Fix Items Latter
|
|
2424
|
-
if (ele[i] instanceof Function) {
|
|
2425
|
-
const getter = ele[i]();
|
|
2426
|
-
if (getter.isStateGetter) {
|
|
2427
|
-
ele[i] = text(getter.value);
|
|
2428
|
-
getter._subscribe(
|
|
2429
|
-
(newValue) => (ele[i].element.textContent = newValue),
|
|
2430
|
-
ele[i]
|
|
2431
|
-
);
|
|
2432
|
-
// this.element.appendChild(textNode);
|
|
2433
|
-
}
|
|
2434
|
-
}
|
|
2435
|
-
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
2436
|
-
if (ele[i]?.isUINode) {
|
|
2437
|
-
ele[i].cache.parent = this;
|
|
2438
|
-
this.element?.[adder](ele[i].element);
|
|
2439
|
-
ele[i].target = this.element;
|
|
2440
|
-
this.items[pusher](ele[i]);
|
|
2441
|
-
}
|
|
2442
|
-
else if(ele[i] instanceof Promise){
|
|
2443
|
-
const UIEle = await ele[i];
|
|
2444
|
-
UIEle.cache.parent = this;
|
|
2445
|
-
this.element?.[adder](UIEle.element);
|
|
2446
|
-
UIEle.target = this.element;
|
|
2447
|
-
this.items[pusher](UIEle);
|
|
2448
|
-
}
|
|
2449
|
-
else if (ele[i] instanceof Object) {
|
|
2450
|
-
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
2451
|
-
if (ele[i]?.attr) {
|
|
2452
|
-
Object.entries(ele[i].attr).forEach((n) =>
|
|
2453
|
-
this.setAttr("" + n[0], n[1]),
|
|
2454
|
-
);
|
|
2455
|
-
}
|
|
2456
|
-
}
|
|
2457
|
-
}
|
|
2458
|
-
this.maintain();
|
|
2459
|
-
return this;
|
|
2460
|
-
}
|
|
2461
|
-
function _set_attrs_(name, value){
|
|
2462
|
-
if(globalThis.SVGAElement && this.element instanceof globalThis.SVGAElement) name = is_camelcase$1(name) ? camel2hyphencase$1(name) : name;
|
|
2463
|
-
if(this?.attr[name] && this?.attr[name]===value) return;
|
|
2464
|
-
if(isStateGetter(value)){
|
|
2465
|
-
const getter = value();
|
|
2466
|
-
getter._subscribe(
|
|
2467
|
-
(newValue) => this.element?.setAttribute(name, newValue),
|
|
2468
|
-
this
|
|
2469
|
-
);
|
|
2470
|
-
}
|
|
2471
|
-
else this.element?.setAttribute(name, value);
|
|
2472
|
-
Object.assign(this.cache.attributes, {[name]:value});
|
|
2473
|
-
}
|
|
2474
|
-
|
|
2475
|
-
// import {
|
|
2476
|
-
// is_camelcase,
|
|
2477
|
-
// camel2hyphencase
|
|
2478
|
-
// } from '../../data/string/index.js'
|
|
2479
|
-
|
|
2480
2405
|
function setAttr(name, value) {
|
|
2481
2406
|
if(name instanceof Object){
|
|
2482
2407
|
const [names,values]=[Object.keys(name),Object.values(name)];
|
|
@@ -2502,16 +2427,49 @@ function getAttr(name){
|
|
|
2502
2427
|
function setContentEditable(bool = true) {
|
|
2503
2428
|
this.setAttr("contenteditable", bool);
|
|
2504
2429
|
return this;
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2432
|
+
|
|
2433
|
+
function _set_attrs_(name, value){
|
|
2434
|
+
if(globalThis.SVGAElement && this.element instanceof globalThis.SVGAElement) name = is_camelcase(name) ? camel2hyphencase(name) : name;
|
|
2435
|
+
if(this?.attr[name] && this?.attr[name]===value) return;
|
|
2436
|
+
if(isStateGetter(value)){
|
|
2437
|
+
const getter = value();
|
|
2438
|
+
getter._subscribe(
|
|
2439
|
+
(newValue) => this.element?.setAttribute(name, newValue),
|
|
2440
|
+
this
|
|
2441
|
+
);
|
|
2442
|
+
}
|
|
2443
|
+
else this.element?.setAttribute(name, value);
|
|
2444
|
+
Object.assign(this.cache.attributes, {[name]:value});
|
|
2505
2445
|
}
|
|
2506
2446
|
|
|
2507
2447
|
var AttrsMethods = /*#__PURE__*/Object.freeze({
|
|
2508
2448
|
__proto__: null,
|
|
2449
|
+
_set_attrs_: _set_attrs_,
|
|
2509
2450
|
getAttr: getAttr,
|
|
2510
2451
|
removeAttr: removeAttr,
|
|
2511
2452
|
setAttr: setAttr,
|
|
2512
2453
|
setContentEditable: setContentEditable
|
|
2513
2454
|
});
|
|
2514
2455
|
|
|
2456
|
+
class ZikoUIText extends UINode {
|
|
2457
|
+
constructor(...value) {
|
|
2458
|
+
super("span", "text", false, ...value);
|
|
2459
|
+
this.element = globalThis?.document?.createTextNode(...value);
|
|
2460
|
+
}
|
|
2461
|
+
isText(){
|
|
2462
|
+
return true
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
const text = (...str) => new ZikoUIText(...str);
|
|
2466
|
+
|
|
2467
|
+
// import { isStateGetter } from "../../../hooks/use-state.js";
|
|
2468
|
+
// import {
|
|
2469
|
+
// is_camelcase,
|
|
2470
|
+
// camel2hyphencase
|
|
2471
|
+
// } from '../../../data/string/index.js';
|
|
2472
|
+
|
|
2515
2473
|
function append(...ele) {
|
|
2516
2474
|
__addItem__.call(this, "append", "push", ...ele);
|
|
2517
2475
|
return this;
|
|
@@ -2563,714 +2521,68 @@ function before(ui){
|
|
|
2563
2521
|
if(ui?.isUIElement) ui=ui.element;
|
|
2564
2522
|
this.element?.before(ui);
|
|
2565
2523
|
return this;
|
|
2566
|
-
}
|
|
2567
|
-
|
|
2568
|
-
var DomMethods = /*#__PURE__*/Object.freeze({
|
|
2569
|
-
__proto__: null,
|
|
2570
|
-
after: after,
|
|
2571
|
-
append: append,
|
|
2572
|
-
before: before,
|
|
2573
|
-
clear: clear,
|
|
2574
|
-
insertAt: insertAt,
|
|
2575
|
-
prepend: prepend,
|
|
2576
|
-
remove: remove,
|
|
2577
|
-
replaceElementWith: replaceElementWith
|
|
2578
|
-
});
|
|
2579
|
-
|
|
2580
|
-
const EventsMap = {
|
|
2581
|
-
'Click' : [
|
|
2582
|
-
'Click',
|
|
2583
|
-
'DblClick',
|
|
2584
|
-
'ClickAway'
|
|
2585
|
-
],
|
|
2586
|
-
'Ptr' : [
|
|
2587
|
-
'PtrMove',
|
|
2588
|
-
'PtrDown',
|
|
2589
|
-
'PtrUp',
|
|
2590
|
-
'PtrLeave',
|
|
2591
|
-
'PtrEnter',
|
|
2592
|
-
'PtrOut',
|
|
2593
|
-
'PtrCancel'
|
|
2594
|
-
],
|
|
2595
|
-
'Mouse' : [
|
|
2596
|
-
'MouseMove',
|
|
2597
|
-
'MouseDown',
|
|
2598
|
-
'MouseUp',
|
|
2599
|
-
'MouseEnter',
|
|
2600
|
-
'MouseLeave',
|
|
2601
|
-
'MouseOut'
|
|
2602
|
-
],
|
|
2603
|
-
// 'Touch' : [],
|
|
2604
|
-
'Key' : [
|
|
2605
|
-
'KeyDown',
|
|
2606
|
-
'KeyPress',
|
|
2607
|
-
'KeyUp'
|
|
2608
|
-
],
|
|
2609
|
-
'Clipboard':[
|
|
2610
|
-
'Copy',
|
|
2611
|
-
'Cut',
|
|
2612
|
-
'Paste'
|
|
2613
|
-
],
|
|
2614
|
-
'Focus':[
|
|
2615
|
-
'focus',
|
|
2616
|
-
'blur'
|
|
2617
|
-
],
|
|
2618
|
-
'Drag':[
|
|
2619
|
-
"Drag",
|
|
2620
|
-
"DragStart",
|
|
2621
|
-
"DragEnd",
|
|
2622
|
-
"Drop"
|
|
2623
|
-
],
|
|
2624
|
-
'Wheel': [
|
|
2625
|
-
'Wheel'
|
|
2626
|
-
],
|
|
2627
|
-
// 'Media':[
|
|
2628
|
-
|
|
2629
|
-
// ],
|
|
2630
|
-
// 'Hash':[
|
|
2631
|
-
// "HashChange"
|
|
2632
|
-
// ]
|
|
2633
|
-
|
|
2634
|
-
'View':[
|
|
2635
|
-
'EnterView',
|
|
2636
|
-
'ExitView',
|
|
2637
|
-
'ResizeView'
|
|
2638
|
-
],
|
|
2639
|
-
'Swipe':[
|
|
2640
|
-
'SwipeLeft',
|
|
2641
|
-
'SwipeUp',
|
|
2642
|
-
'SwipeRight',
|
|
2643
|
-
'SwipeDown'
|
|
2644
|
-
]
|
|
2645
|
-
};
|
|
2646
|
-
|
|
2647
|
-
function event_controller(e, event_name, details_setter, customizer) {
|
|
2648
|
-
this.cache.currentEvent = event_name;
|
|
2649
|
-
this.cache.event = e;
|
|
2650
|
-
|
|
2651
|
-
details_setter?.call(this);
|
|
2652
|
-
if (customizer?.hasOwnProperty('prototype')) customizer?.call(this);
|
|
2653
|
-
else customizer?.call(null, this);
|
|
2654
|
-
|
|
2655
|
-
if (this.cache.preventDefault[event_name]) e.preventDefault();
|
|
2656
|
-
if (this.cache.stopPropagation[event_name]) e.stopPropagation();
|
|
2657
|
-
if (this.cache.stopImmediatePropagation[event_name]) e.stopImmediatePropagation();
|
|
2658
|
-
|
|
2659
|
-
// Call the single callback if it exists
|
|
2660
|
-
this.cache.callbacks[event_name]?.(this);
|
|
2661
|
-
}
|
|
2662
|
-
|
|
2663
|
-
function toggle_event_listener(method, ...events) {
|
|
2664
|
-
const keys = events.length === 0
|
|
2665
|
-
? Object.keys(this.cache.paused)
|
|
2666
|
-
: events;
|
|
2667
|
-
keys.forEach(key => {
|
|
2668
|
-
if (!this.cache.paused.hasOwnProperty(key)) return;
|
|
2669
|
-
this.targetElement?.[method](
|
|
2670
|
-
key,
|
|
2671
|
-
this.cache.__controllers__[key],
|
|
2672
|
-
this.cache.options[key]
|
|
2673
|
-
);
|
|
2674
|
-
this.cache.paused[key] = method === 'removeEventListener';
|
|
2675
|
-
});
|
|
2676
|
-
return this;
|
|
2677
2524
|
}
|
|
2678
|
-
const getEvent=(event = "")=>{
|
|
2679
|
-
if(event.startsWith("Ptr"))return `pointer${event.split("Ptr")[1].toLowerCase()}`;
|
|
2680
|
-
return event.toLowerCase()
|
|
2681
|
-
};
|
|
2682
|
-
|
|
2683
|
-
class ZikoEvent {
|
|
2684
|
-
constructor(signature, target = null, Events = [], details_setter, customizer){
|
|
2685
|
-
this.target = target;
|
|
2686
|
-
this.cache = {
|
|
2687
|
-
signature,
|
|
2688
|
-
currentEvent : null,
|
|
2689
|
-
event: null,
|
|
2690
|
-
options : {},
|
|
2691
|
-
preventDefault : {},
|
|
2692
|
-
stopPropagation : {},
|
|
2693
|
-
stopImmediatePropagation : {},
|
|
2694
|
-
paused : {},
|
|
2695
|
-
callbacks : {},
|
|
2696
|
-
__controllers__:{}
|
|
2697
|
-
};
|
|
2698
|
-
if (Events) this._register_events(Events, details_setter, customizer);
|
|
2699
|
-
}
|
|
2700
|
-
_register_events(Events, details_setter, customizer, REGISTER_METHODES = true) {
|
|
2701
|
-
const events = Events?.map(n => getEvent(n));
|
|
2702
|
-
events?.forEach((event, i) => {
|
|
2703
|
-
this.cache.preventDefault[event] = false;
|
|
2704
|
-
this.cache.options[event] = {};
|
|
2705
|
-
this.cache.paused[event] = false;
|
|
2706
|
-
this.cache.__controllers__[event] = (e) =>
|
|
2707
|
-
event_controller.call(this, e, event, details_setter, customizer);
|
|
2708
|
-
if (REGISTER_METHODES) {
|
|
2709
|
-
this[`on${Events[i]}`] = (callback) =>
|
|
2710
|
-
this.__onEvent(event, this.cache.options[event], {}, callback);
|
|
2711
|
-
}
|
|
2712
|
-
});
|
|
2713
|
-
return this;
|
|
2714
|
-
}
|
|
2715
|
-
__onEvent(event, options, dispose, callback) {
|
|
2716
|
-
if (!callback) return this;
|
|
2717
|
-
this.cache.callbacks[event] = callback;
|
|
2718
|
-
this.__handle(event, this.cache.__controllers__[event], options, dispose);
|
|
2719
|
-
return this;
|
|
2720
|
-
}
|
|
2721
|
-
get targetElement(){
|
|
2722
|
-
return this.target?.element;
|
|
2723
|
-
}
|
|
2724
|
-
get isParent(){
|
|
2725
|
-
return this.target?.element === this.event?.srcElement;
|
|
2726
|
-
}
|
|
2727
|
-
get item(){
|
|
2728
|
-
return this.target.find(n => n.element == this.event?.srcElement)?.[0];
|
|
2729
|
-
}
|
|
2730
|
-
get currentEvent(){
|
|
2731
|
-
return this.cache.currentEvent;
|
|
2732
|
-
}
|
|
2733
|
-
get event(){
|
|
2734
|
-
return this.cache.event;
|
|
2735
|
-
}
|
|
2736
|
-
get detail(){
|
|
2737
|
-
return this.cache.event.detail
|
|
2738
|
-
}
|
|
2739
|
-
setTarget(UI){
|
|
2740
|
-
this.target = UI;
|
|
2741
|
-
return this;
|
|
2742
|
-
}
|
|
2743
|
-
__handle(event, handler, options){
|
|
2744
|
-
this.targetElement?.addEventListener(event, handler, options);
|
|
2745
|
-
return this;
|
|
2746
|
-
}
|
|
2747
|
-
#override(method, ...events) {
|
|
2748
|
-
const keys = events.length === 0 ? Object.keys(this.cache[method]) : events;
|
|
2749
|
-
keys.forEach(e => {
|
|
2750
|
-
if (this.cache[method].hasOwnProperty(e)) this.cache[method][e] = true;
|
|
2751
|
-
});
|
|
2752
|
-
return this;
|
|
2753
|
-
}
|
|
2754
|
-
preventDefault(...events) {
|
|
2755
|
-
return this.#override('preventDefault', ...events);
|
|
2756
|
-
}
|
|
2757
|
-
stopPropagation(...events) {
|
|
2758
|
-
return this.#override('stopPropagation', ...events);
|
|
2759
|
-
}
|
|
2760
|
-
stopImmediatePropagation(...events) {
|
|
2761
|
-
return this.#override('stopImmediatePropagation', ...events);
|
|
2762
|
-
}
|
|
2763
|
-
setEventOptions(event, options){
|
|
2764
|
-
const evt = getEvent(event);
|
|
2765
|
-
this.pause();
|
|
2766
|
-
Object.assign(this.cache.options[evt], options);
|
|
2767
|
-
this.resume();
|
|
2768
|
-
return this;
|
|
2769
|
-
}
|
|
2770
|
-
pause(...events) {
|
|
2771
|
-
return toggle_event_listener.call(this, 'removeEventListener', ...events)
|
|
2772
|
-
}
|
|
2773
|
-
resume(...events) {
|
|
2774
|
-
return toggle_event_listener.call(this, 'addEventListener', ...events);
|
|
2775
|
-
}
|
|
2776
|
-
dispose(){
|
|
2777
|
-
this.pause();
|
|
2778
|
-
this.target.events[this.cache.signature] = null;
|
|
2779
|
-
return this;
|
|
2780
|
-
}
|
|
2781
|
-
}
|
|
2782
|
-
|
|
2783
|
-
function key_details_setter(){
|
|
2784
|
-
switch(this.currentEvent){
|
|
2785
|
-
case "keydown" : {
|
|
2786
|
-
this.kd = this.event.key;
|
|
2787
|
-
} break;
|
|
2788
|
-
case "keypress" : {
|
|
2789
|
-
this.kp = this.event.key;
|
|
2790
|
-
} break;
|
|
2791
|
-
case "keyup" : {
|
|
2792
|
-
this.ku = this.event.key;
|
|
2793
|
-
} break;
|
|
2794
|
-
|
|
2795
|
-
}
|
|
2796
|
-
}
|
|
2797
|
-
|
|
2798
|
-
function ptr_details_setter() {
|
|
2799
|
-
const rect = this.targetElement.getBoundingClientRect();
|
|
2800
|
-
const e = this.event;
|
|
2801
|
-
let x = (e.clientX - rect.left) | 0;
|
|
2802
|
-
let y = (e.clientY - rect.top) | 0;
|
|
2803
|
-
|
|
2804
|
-
if(this.cache.useNormalisedCoordinates){
|
|
2805
|
-
const w = this.targetElement.clientWidth;
|
|
2806
|
-
const h = this.targetElement.clientHeight;
|
|
2807
|
-
x = +((x / w) * 2 - 1).toFixed(8);
|
|
2808
|
-
y = +((y / h) * -2 + 1).toFixed(8);
|
|
2809
|
-
}
|
|
2810
|
-
switch (this.currentEvent) {
|
|
2811
|
-
|
|
2812
|
-
case "pointerdown":
|
|
2813
|
-
this.dx = x;
|
|
2814
|
-
this.dy = y;
|
|
2815
|
-
this.isDown = true;
|
|
2816
|
-
break;
|
|
2817
|
-
|
|
2818
|
-
case "pointermove":
|
|
2819
|
-
this.mx = x;
|
|
2820
|
-
this.my = y;
|
|
2821
|
-
this.isMoving = true;
|
|
2822
|
-
break;
|
|
2823
|
-
|
|
2824
|
-
case "pointerup":
|
|
2825
|
-
this.ux = x;
|
|
2826
|
-
this.uy = y;
|
|
2827
|
-
this.isDown = false;
|
|
2828
|
-
this.isMoving = false;
|
|
2829
|
-
break;
|
|
2830
|
-
}
|
|
2831
|
-
}
|
|
2832
|
-
|
|
2833
|
-
function mouse_details_setter() {
|
|
2834
|
-
const rect = this.targetElement.getBoundingClientRect();
|
|
2835
|
-
const e = this.event;
|
|
2836
|
-
let x = (e.clientX - rect.left) | 0;
|
|
2837
|
-
let y = (e.clientY - rect.top) | 0;
|
|
2838
|
-
|
|
2839
|
-
if(this.cache.useNormalisedCoordinates){
|
|
2840
|
-
const w = this.targetElement.clientWidth;
|
|
2841
|
-
const h = this.targetElement.clientHeight;
|
|
2842
|
-
x = +((x / w) * 2 - 1).toFixed(8);
|
|
2843
|
-
y = +((y / h) * -2 + 1).toFixed(8);
|
|
2844
|
-
}
|
|
2845
|
-
|
|
2846
|
-
switch (this.currentEvent) {
|
|
2847
2525
|
|
|
2848
|
-
case "mousedown":
|
|
2849
|
-
this.dx = x;
|
|
2850
|
-
this.dy = y;
|
|
2851
|
-
this.isDown = true;
|
|
2852
|
-
break;
|
|
2853
|
-
|
|
2854
|
-
case "mousemove":
|
|
2855
|
-
this.mx = x;
|
|
2856
|
-
this.my = y;
|
|
2857
|
-
this.isMoving = true;
|
|
2858
|
-
break;
|
|
2859
|
-
|
|
2860
|
-
case "mouserup":
|
|
2861
|
-
this.ux = x;
|
|
2862
|
-
this.uy = y;
|
|
2863
|
-
this.isDown = false;
|
|
2864
|
-
this.isMoving = false;
|
|
2865
|
-
break;
|
|
2866
|
-
}
|
|
2867
|
-
}
|
|
2868
|
-
|
|
2869
|
-
function touch_details_setter() {
|
|
2870
|
-
const e = this.event;
|
|
2871
|
-
const touch = e.touches?.[0] || e.changedTouches?.[0];
|
|
2872
|
-
|
|
2873
|
-
if (!touch) return; // should never happen but safe
|
|
2874
|
-
|
|
2875
|
-
const rect = this.targetElement.getBoundingClientRect();
|
|
2876
|
-
let x = touch.clientX - rect.left;
|
|
2877
|
-
let y = touch.clientY - rect.top;
|
|
2878
|
-
|
|
2879
|
-
if(this.cache.useNormalisedCoordinates){
|
|
2880
|
-
const w = this.targetElement.clientWidth;
|
|
2881
|
-
const h = this.targetElement.clientHeight;
|
|
2882
|
-
x = +((x / w) * 2 - 1).toFixed(8);
|
|
2883
|
-
y = +((y / h) * -2 + 1).toFixed(8);
|
|
2884
|
-
}
|
|
2885
2526
|
|
|
2886
|
-
switch (this.currentEvent) {
|
|
2887
|
-
case "touchstart":
|
|
2888
|
-
this.dx = x;
|
|
2889
|
-
this.dy = y;
|
|
2890
|
-
this.isDown = true;
|
|
2891
|
-
break;
|
|
2892
2527
|
|
|
2893
|
-
case "touchmove":
|
|
2894
|
-
this.mx = x;
|
|
2895
|
-
this.my = y;
|
|
2896
|
-
this.isMoving = true;
|
|
2897
|
-
break;
|
|
2898
2528
|
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
break;
|
|
2904
|
-
}
|
|
2905
|
-
}
|
|
2906
|
-
|
|
2907
|
-
class CoordinatesBasedEvent extends ZikoEvent{
|
|
2908
|
-
constructor(signature, target = null, Events = [], details_setter, customizer){
|
|
2909
|
-
super(signature, target, Events, details_setter, customizer);
|
|
2910
|
-
Object.assign(this.cache,{
|
|
2911
|
-
useNormalisedCoordinates : false
|
|
2912
|
-
});
|
|
2913
|
-
this.isDown = false;
|
|
2914
|
-
this.isMoving = false;
|
|
2915
|
-
this.dx = 0;
|
|
2916
|
-
this.dy = 0;
|
|
2917
|
-
this.mx = 0;
|
|
2918
|
-
this.my = 0;
|
|
2919
|
-
this.ux = 0;
|
|
2920
|
-
this.uy = 0;
|
|
2921
|
-
}
|
|
2922
|
-
get isDragging(){
|
|
2923
|
-
return this.isDown && this.isMoving
|
|
2924
|
-
}
|
|
2925
|
-
useNormalisedCoordinates(enable = true){
|
|
2926
|
-
this.cache.useNormalisedCoordinates = enable;
|
|
2927
|
-
return this;
|
|
2928
|
-
}
|
|
2929
|
-
}
|
|
2930
|
-
|
|
2931
|
-
class ClickAwayEvent extends Event {
|
|
2932
|
-
constructor(originalEvent, targetElement) {
|
|
2933
|
-
super("clickaway", { bubbles: true, cancelable: true });
|
|
2934
|
-
this.originalEvent = originalEvent;
|
|
2935
|
-
this.targetElement = targetElement;
|
|
2936
|
-
}
|
|
2937
|
-
}
|
|
2938
|
-
|
|
2939
|
-
function register_click_away_event(element) {
|
|
2940
|
-
console.log(element);
|
|
2941
|
-
function handler(e) {
|
|
2942
|
-
if (!element.contains(e.target)) {
|
|
2943
|
-
const clickAwayEvent = new ClickAwayEvent(e, element);
|
|
2944
|
-
element.dispatchEvent(clickAwayEvent);
|
|
2945
|
-
}
|
|
2529
|
+
async function __addItem__(adder, pusher, ...ele) {
|
|
2530
|
+
if (this.cache.isFrozzen) {
|
|
2531
|
+
console.warn("You can't append new item to frozzen element");
|
|
2532
|
+
return this;
|
|
2946
2533
|
}
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
// console.log("Clicked outside box!", e);
|
|
2961
|
-
// });
|
|
2962
|
-
|
|
2963
|
-
// // later, you can stop listening:
|
|
2964
|
-
// // stop();
|
|
2965
|
-
|
|
2966
|
-
const debounce=(fn,delay=1000)=>{
|
|
2967
|
-
let id;
|
|
2968
|
-
return (...args) => id ? clearTimeout(id) : setTimeout(()=>fn(...args),delay);
|
|
2969
|
-
};
|
|
2970
|
-
const throttle=(fn,delay)=>{
|
|
2971
|
-
let lastTime=0;
|
|
2972
|
-
return (...args) => {
|
|
2973
|
-
const now = new Date().getTime();
|
|
2974
|
-
if(now-lastTime < delay) return;
|
|
2975
|
-
lastTime = now;
|
|
2976
|
-
fn(...args);
|
|
2977
|
-
}
|
|
2978
|
-
};
|
|
2979
|
-
|
|
2980
|
-
class ViewEvent extends CustomEvent {
|
|
2981
|
-
constructor(type, detail, { bubbles = true, cancelable = true } = {}) {
|
|
2982
|
-
super(type, { detail, bubbles, cancelable });
|
|
2983
|
-
}
|
|
2984
|
-
}
|
|
2985
|
-
|
|
2986
|
-
function register_view_event(
|
|
2987
|
-
element,
|
|
2988
|
-
{
|
|
2989
|
-
intersection = true,
|
|
2990
|
-
resize = true,
|
|
2991
|
-
threshold = 0,
|
|
2992
|
-
throttleResize = 100,
|
|
2993
|
-
throttleEnterExit = 0
|
|
2994
|
-
} = {}
|
|
2995
|
-
) {
|
|
2996
|
-
let intersectionObserver, resizeObserver;
|
|
2997
|
-
const resizeCallback = entries => {
|
|
2998
|
-
for (let entry of entries) {
|
|
2999
|
-
const { width, height } = entry.contentRect;
|
|
3000
|
-
|
|
3001
|
-
element.dispatchEvent(
|
|
3002
|
-
new ViewEvent("resizeview", {
|
|
3003
|
-
width,
|
|
3004
|
-
height,
|
|
3005
|
-
entry
|
|
3006
|
-
})
|
|
3007
|
-
);
|
|
3008
|
-
}
|
|
3009
|
-
};
|
|
3010
|
-
|
|
3011
|
-
const throttledResize = throttleResize > 0
|
|
3012
|
-
? throttle(resizeCallback, throttleResize)
|
|
3013
|
-
: resizeCallback;
|
|
3014
|
-
|
|
3015
|
-
const intersectionCallback = entries => {
|
|
3016
|
-
for (let entry of entries) {
|
|
3017
|
-
const type = entry.isIntersecting ? "enterview" : "exitview";
|
|
3018
|
-
element.dispatchEvent(new ViewEvent(type, entry));
|
|
3019
|
-
}
|
|
3020
|
-
};
|
|
3021
|
-
|
|
3022
|
-
const throttledIntersections = throttleEnterExit > 0
|
|
3023
|
-
? throttle(intersectionCallback, throttleEnterExit)
|
|
3024
|
-
: intersectionCallback;
|
|
3025
|
-
|
|
3026
|
-
if (intersection) {
|
|
3027
|
-
intersectionObserver = new IntersectionObserver(throttledIntersections, { threshold });
|
|
3028
|
-
intersectionObserver.observe(element);
|
|
2534
|
+
for (let i = 0; i < ele.length; i++) {
|
|
2535
|
+
if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
|
|
2536
|
+
// Fix Items Latter
|
|
2537
|
+
if (ele[i] instanceof Function) {
|
|
2538
|
+
const getter = ele[i]();
|
|
2539
|
+
if (getter.isStateGetter) {
|
|
2540
|
+
ele[i] = text(getter.value);
|
|
2541
|
+
getter._subscribe(
|
|
2542
|
+
(newValue) => (ele[i].element.textContent = newValue),
|
|
2543
|
+
ele[i]
|
|
2544
|
+
);
|
|
2545
|
+
// this.element.appendChild(textNode);
|
|
2546
|
+
}
|
|
3029
2547
|
}
|
|
3030
|
-
|
|
3031
|
-
if (
|
|
3032
|
-
|
|
3033
|
-
|
|
2548
|
+
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
2549
|
+
if (ele[i]?.isUINode) {
|
|
2550
|
+
ele[i].cache.parent = this;
|
|
2551
|
+
this.element?.[adder](ele[i].element);
|
|
2552
|
+
ele[i].target = this.element;
|
|
2553
|
+
this.items[pusher](ele[i]);
|
|
2554
|
+
}
|
|
2555
|
+
else if(ele[i] instanceof Promise){
|
|
2556
|
+
const UIEle = await ele[i];
|
|
2557
|
+
UIEle.cache.parent = this;
|
|
2558
|
+
this.element?.[adder](UIEle.element);
|
|
2559
|
+
UIEle.target = this.element;
|
|
2560
|
+
this.items[pusher](UIEle);
|
|
3034
2561
|
}
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
}
|
|
3042
|
-
if (resizeObserver) {
|
|
3043
|
-
resizeObserver.unobserve(element);
|
|
3044
|
-
resizeObserver.disconnect();
|
|
3045
|
-
}
|
|
3046
|
-
};
|
|
3047
|
-
}
|
|
3048
|
-
|
|
3049
|
-
class SwipeEvent extends CustomEvent {
|
|
3050
|
-
constructor(type, detail) {
|
|
3051
|
-
super(type, {
|
|
3052
|
-
detail,
|
|
3053
|
-
bubbles: true,
|
|
3054
|
-
cancelable: true
|
|
3055
|
-
});
|
|
3056
|
-
}
|
|
3057
|
-
}
|
|
3058
|
-
|
|
3059
|
-
function register_swipe_event(
|
|
3060
|
-
element,
|
|
3061
|
-
threshold = 50,
|
|
3062
|
-
restraint = 100,
|
|
3063
|
-
allowedTime = 500
|
|
3064
|
-
) {
|
|
3065
|
-
let startX = 0,
|
|
3066
|
-
startY = 0,
|
|
3067
|
-
startTime = 0,
|
|
3068
|
-
isPointerDown = false;
|
|
3069
|
-
|
|
3070
|
-
function onPointerDown(e) {
|
|
3071
|
-
startX = e.clientX;
|
|
3072
|
-
startY = e.clientY;
|
|
3073
|
-
startTime = performance.now();
|
|
3074
|
-
isPointerDown = true;
|
|
3075
|
-
}
|
|
3076
|
-
|
|
3077
|
-
function onPointerUp(e) {
|
|
3078
|
-
if (!isPointerDown) return;
|
|
3079
|
-
isPointerDown = false;
|
|
3080
|
-
|
|
3081
|
-
const distX = e.clientX - startX;
|
|
3082
|
-
const distY = e.clientY - startY;
|
|
3083
|
-
const elapsed = performance.now() - startTime;
|
|
3084
|
-
|
|
3085
|
-
let direction = null;
|
|
3086
|
-
let eventName = null;
|
|
3087
|
-
|
|
3088
|
-
if (elapsed <= allowedTime) {
|
|
3089
|
-
if (Math.abs(distX) >= threshold && Math.abs(distY) <= restraint) {
|
|
3090
|
-
direction = distX < 0 ? "left" : "right";
|
|
3091
|
-
eventName = "swipe" + direction;
|
|
3092
|
-
}
|
|
3093
|
-
else if (Math.abs(distY) >= threshold && Math.abs(distX) <= restraint) {
|
|
3094
|
-
direction = distY < 0 ? "up" : "down";
|
|
3095
|
-
eventName = "swipe" + direction;
|
|
2562
|
+
else if (ele[i] instanceof Object) {
|
|
2563
|
+
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
2564
|
+
if (ele[i]?.attr) {
|
|
2565
|
+
Object.entries(ele[i].attr).forEach((n) =>
|
|
2566
|
+
this.setAttr("" + n[0], n[1]),
|
|
2567
|
+
);
|
|
3096
2568
|
}
|
|
3097
2569
|
}
|
|
3098
|
-
|
|
3099
|
-
// Emit event
|
|
3100
|
-
if (eventName) {
|
|
3101
|
-
element.dispatchEvent(
|
|
3102
|
-
new SwipeEvent(eventName, {
|
|
3103
|
-
direction,
|
|
3104
|
-
distX,
|
|
3105
|
-
distY,
|
|
3106
|
-
originalEvent: e
|
|
3107
|
-
})
|
|
3108
|
-
);
|
|
3109
|
-
}
|
|
3110
2570
|
}
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
element.addEventListener("pointerup", onPointerUp, { passive: true });
|
|
3114
|
-
|
|
3115
|
-
return () => {
|
|
3116
|
-
element.removeEventListener("pointerdown", onPointerDown);
|
|
3117
|
-
element.removeEventListener("pointerup", onPointerUp);
|
|
3118
|
-
};
|
|
2571
|
+
this.maintain();
|
|
2572
|
+
return this;
|
|
3119
2573
|
}
|
|
3120
2574
|
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
'clipboard',
|
|
3133
|
-
target,
|
|
3134
|
-
EventsMap.Clipboard,
|
|
3135
|
-
null,
|
|
3136
|
-
customizer
|
|
3137
|
-
);
|
|
3138
|
-
const bind_drag_event = (target, customizer) => new ZikoEvent(
|
|
3139
|
-
'drag',
|
|
3140
|
-
target,
|
|
3141
|
-
EventsMap.Drag,
|
|
3142
|
-
null,
|
|
3143
|
-
customizer
|
|
3144
|
-
);
|
|
3145
|
-
const bind_focus_event = (target, customizer) => new ZikoEvent(
|
|
3146
|
-
'focus',
|
|
3147
|
-
target,
|
|
3148
|
-
EventsMap.Focus,
|
|
3149
|
-
null,
|
|
3150
|
-
customizer
|
|
3151
|
-
);
|
|
3152
|
-
const bind_key_event = (target, customizer) => new ZikoEvent(
|
|
3153
|
-
'key',
|
|
3154
|
-
target,
|
|
3155
|
-
EventsMap.Key,
|
|
3156
|
-
key_details_setter,
|
|
3157
|
-
customizer
|
|
3158
|
-
);
|
|
3159
|
-
const bind_mouse_event = (target, customizer) => new CoordinatesBasedEvent(
|
|
3160
|
-
'mouse',
|
|
3161
|
-
target,
|
|
3162
|
-
EventsMap.Mouse,
|
|
3163
|
-
mouse_details_setter,
|
|
3164
|
-
customizer
|
|
3165
|
-
);
|
|
3166
|
-
const bind_pointer_event = (target, customizer) => new CoordinatesBasedEvent(
|
|
3167
|
-
'ptr',
|
|
3168
|
-
target,
|
|
3169
|
-
EventsMap.Ptr,
|
|
3170
|
-
ptr_details_setter,
|
|
3171
|
-
customizer
|
|
3172
|
-
);
|
|
3173
|
-
const bind_touch_event = (target, customizer) => new CoordinatesBasedEvent(
|
|
3174
|
-
'touch',
|
|
3175
|
-
target,
|
|
3176
|
-
EventsMap.Touch,
|
|
3177
|
-
touch_details_setter,
|
|
3178
|
-
customizer
|
|
3179
|
-
);
|
|
3180
|
-
const bind_wheel_event = (target, customizer) => new ZikoEvent(
|
|
3181
|
-
'wheel',
|
|
3182
|
-
target,
|
|
3183
|
-
EventsMap.Wheel,
|
|
3184
|
-
null,
|
|
3185
|
-
customizer
|
|
3186
|
-
);
|
|
3187
|
-
|
|
3188
|
-
const bind_view_event = (target, customizer) => {
|
|
3189
|
-
register_view_event(target.element);
|
|
3190
|
-
return new ZikoEvent(
|
|
3191
|
-
'view',
|
|
3192
|
-
target,
|
|
3193
|
-
EventsMap.View,
|
|
3194
|
-
null,
|
|
3195
|
-
customizer
|
|
3196
|
-
)
|
|
3197
|
-
};
|
|
3198
|
-
|
|
3199
|
-
const bind_swipe_event = (target, customizer) => {
|
|
3200
|
-
register_swipe_event(target.element);
|
|
3201
|
-
return new ZikoEvent(
|
|
3202
|
-
'swipe',
|
|
3203
|
-
target,
|
|
3204
|
-
EventsMap.Swipe,
|
|
3205
|
-
null,
|
|
3206
|
-
customizer
|
|
3207
|
-
)
|
|
3208
|
-
};
|
|
3209
|
-
|
|
3210
|
-
class ZikoCustomEvent extends ZikoEvent{
|
|
3211
|
-
constructor(target, events, customizer){
|
|
3212
|
-
super('custom', target, events, details_setter, customizer);
|
|
3213
|
-
}
|
|
3214
|
-
_register_events(events){
|
|
3215
|
-
super._register_events(events, null, null, false);
|
|
3216
|
-
return this;
|
|
3217
|
-
}
|
|
3218
|
-
emit(event_name, detail = {}){
|
|
3219
|
-
const event = new CustomEvent(event_name, {
|
|
3220
|
-
detail,
|
|
3221
|
-
bubbles: true,
|
|
3222
|
-
cancelable: true
|
|
3223
|
-
});
|
|
3224
|
-
this.targetElement.dispatchEvent(event);
|
|
3225
|
-
return this;
|
|
3226
|
-
}
|
|
3227
|
-
on(event_name, ...callbacks){
|
|
3228
|
-
if(!this.cache.options.hasOwnProperty(event_name)) this._register_events([event_name]);
|
|
3229
|
-
this.__onEvent(event_name, this.cache.options[event_name], {}, ...callbacks);
|
|
3230
|
-
return this;
|
|
3231
|
-
}
|
|
3232
|
-
}
|
|
3233
|
-
function details_setter(){
|
|
3234
|
-
|
|
3235
|
-
}
|
|
3236
|
-
const bind_custom_event = (target, events, customizer) => new ZikoCustomEvent(target, events, customizer);
|
|
3237
|
-
|
|
3238
|
-
const binderMap = {
|
|
3239
|
-
ptr: bind_pointer_event,
|
|
3240
|
-
mouse : bind_mouse_event,
|
|
3241
|
-
key: bind_key_event,
|
|
3242
|
-
click : bind_click_event,
|
|
3243
|
-
drag : bind_drag_event,
|
|
3244
|
-
clipboard : bind_clipboard_event,
|
|
3245
|
-
focus : bind_focus_event,
|
|
3246
|
-
wheel : bind_wheel_event,
|
|
3247
|
-
view : bind_view_event,
|
|
3248
|
-
swipe : bind_swipe_event
|
|
3249
|
-
};
|
|
3250
|
-
|
|
3251
|
-
const EventsMethodes = {
|
|
3252
|
-
on(event_name,...callbacks){
|
|
3253
|
-
if(!this.events.custom)this.events.custom = bind_custom_event(this);
|
|
3254
|
-
this.events.custom.on(event_name,...callbacks);
|
|
3255
|
-
return this;
|
|
3256
|
-
},
|
|
3257
|
-
emit(event_name,detail={}){
|
|
3258
|
-
if(!this.events.custom)this.events.custom = bind_custom_event(this);
|
|
3259
|
-
this.events.custom.emit(event_name,detail);
|
|
3260
|
-
return this;
|
|
3261
|
-
}
|
|
3262
|
-
};
|
|
3263
|
-
|
|
3264
|
-
Object.entries(EventsMap).forEach(([name, eventList]) => {
|
|
3265
|
-
const lname = name.toLowerCase();
|
|
3266
|
-
eventList.forEach(event => {
|
|
3267
|
-
const methodName = `on${event}`;
|
|
3268
|
-
EventsMethodes[methodName] = function (callbacks) {
|
|
3269
|
-
if (!this.events[lname]) this.events[lname] = binderMap[lname](this);
|
|
3270
|
-
this.events[lname][methodName](callbacks);
|
|
3271
|
-
return this;
|
|
3272
|
-
};
|
|
3273
|
-
});
|
|
2575
|
+
var DomMethods = /*#__PURE__*/Object.freeze({
|
|
2576
|
+
__proto__: null,
|
|
2577
|
+
__addItem__: __addItem__,
|
|
2578
|
+
after: after,
|
|
2579
|
+
append: append,
|
|
2580
|
+
before: before,
|
|
2581
|
+
clear: clear,
|
|
2582
|
+
insertAt: insertAt,
|
|
2583
|
+
prepend: prepend,
|
|
2584
|
+
remove: remove,
|
|
2585
|
+
replaceElementWith: replaceElementWith
|
|
3274
2586
|
});
|
|
3275
2587
|
|
|
3276
2588
|
function at(index) {
|
|
@@ -3337,9 +2649,207 @@ var StyleMethods = /*#__PURE__*/Object.freeze({
|
|
|
3337
2649
|
style: style$1
|
|
3338
2650
|
});
|
|
3339
2651
|
|
|
2652
|
+
class ClickAwayEvent extends Event {
|
|
2653
|
+
constructor(originalEvent, targetElement) {
|
|
2654
|
+
super("clickaway", { bubbles: true, cancelable: true });
|
|
2655
|
+
this.originalEvent = originalEvent;
|
|
2656
|
+
this.targetElement = targetElement;
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
|
|
2660
|
+
function register_click_away_event(element) {
|
|
2661
|
+
// console.log(element)
|
|
2662
|
+
function handler(e) {
|
|
2663
|
+
if (!element.contains(e.target)) {
|
|
2664
|
+
const clickAwayEvent = new ClickAwayEvent(e, element);
|
|
2665
|
+
element.dispatchEvent(clickAwayEvent);
|
|
2666
|
+
}
|
|
2667
|
+
}
|
|
2668
|
+
|
|
2669
|
+
globalThis?.document?.addEventListener("click", handler);
|
|
2670
|
+
|
|
2671
|
+
return () => globalThis?.document?.removeEventListener("click", handler);
|
|
2672
|
+
|
|
2673
|
+
}
|
|
2674
|
+
|
|
2675
|
+
// // Example usage
|
|
2676
|
+
// const box = document.querySelector("#my-box");
|
|
2677
|
+
|
|
2678
|
+
// const stop = listenClickAway(box);
|
|
2679
|
+
|
|
2680
|
+
// box.addEventListener("clickaway", (e) => {
|
|
2681
|
+
// console.log("Clicked outside box!", e);
|
|
2682
|
+
// });
|
|
2683
|
+
|
|
2684
|
+
// // later, you can stop listening:
|
|
2685
|
+
// // stop();
|
|
2686
|
+
|
|
2687
|
+
const CATEGORY$2 = 'click';
|
|
2688
|
+
const ClickListeners = {
|
|
2689
|
+
onClick(callback){
|
|
2690
|
+
this._on(
|
|
2691
|
+
'click', callback,
|
|
2692
|
+
{ category : CATEGORY$2 });
|
|
2693
|
+
},
|
|
2694
|
+
onDblClick(callback){
|
|
2695
|
+
this._on(
|
|
2696
|
+
'dblclick', callback,
|
|
2697
|
+
{ category : CATEGORY$2});
|
|
2698
|
+
},
|
|
2699
|
+
onClickAway(callback){
|
|
2700
|
+
register_click_away_event(this.element);
|
|
2701
|
+
this._on(
|
|
2702
|
+
'clickaway', callback,
|
|
2703
|
+
{ category : CATEGORY$2});
|
|
2704
|
+
},
|
|
2705
|
+
};
|
|
2706
|
+
|
|
2707
|
+
const getCoordinates = (ctx, normalized = false) =>{
|
|
2708
|
+
const rect = ctx.element.getBoundingClientRect();
|
|
2709
|
+
const e = ctx.event;
|
|
2710
|
+
let x = (e?.clientX - rect.left) | 0;
|
|
2711
|
+
let y = (e?.clientY - rect.top) | 0;
|
|
2712
|
+
|
|
2713
|
+
if(normalized){
|
|
2714
|
+
const w = ctx.element.clientWidth;
|
|
2715
|
+
const h = ctx.element.clientHeight;
|
|
2716
|
+
x = +((x / w) * 2 - 1).toFixed(8);
|
|
2717
|
+
y = +((y / h) * -2 + 1).toFixed(8);
|
|
2718
|
+
}
|
|
2719
|
+
|
|
2720
|
+
return {x, y};
|
|
2721
|
+
};
|
|
2722
|
+
|
|
2723
|
+
const CATEGORY$1 = 'ptr';
|
|
2724
|
+
const PtrListeners = {
|
|
2725
|
+
onPtrDown(callback, useNormalizedCoordinates = false){
|
|
2726
|
+
this._on(
|
|
2727
|
+
'pointerdown', callback,
|
|
2728
|
+
{ category : CATEGORY$1, details_setter : (ctx)=> {
|
|
2729
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
2730
|
+
ctx.dx = x;
|
|
2731
|
+
ctx.dy = y;
|
|
2732
|
+
ctx.isDown = true;
|
|
2733
|
+
ctx.isDragging = ctx.isMoving ?? false;
|
|
2734
|
+
}}
|
|
2735
|
+
);
|
|
2736
|
+
},
|
|
2737
|
+
onPtrMove(callback, useNormalizedCoordinates = false){
|
|
2738
|
+
this._on(
|
|
2739
|
+
'pointermove', callback,
|
|
2740
|
+
{ category : CATEGORY$1, details_setter : (ctx)=> {
|
|
2741
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
2742
|
+
ctx.mx = x;
|
|
2743
|
+
ctx.my = y;
|
|
2744
|
+
ctx.isMoving = true;
|
|
2745
|
+
ctx.isDragging = ctx.isDown ?? false;
|
|
2746
|
+
}}
|
|
2747
|
+
);
|
|
2748
|
+
},
|
|
2749
|
+
onPtrUp(callback, useNormalizedCoordinates = false){
|
|
2750
|
+
this._on(
|
|
2751
|
+
'pointerup', callback,
|
|
2752
|
+
{ category : CATEGORY$1, details_setter : (ctx)=> {
|
|
2753
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
2754
|
+
ctx.ux = x;
|
|
2755
|
+
ctx.uy = y;
|
|
2756
|
+
ctx.isDown = false;
|
|
2757
|
+
ctx.isMoving = false;
|
|
2758
|
+
ctx.isDragging = false;
|
|
2759
|
+
}}
|
|
2760
|
+
);
|
|
2761
|
+
}
|
|
2762
|
+
};
|
|
2763
|
+
|
|
2764
|
+
const CATEGORY = 'key';
|
|
2765
|
+
const KeyListeners = {
|
|
2766
|
+
onKeyDown(callback){
|
|
2767
|
+
this._on(
|
|
2768
|
+
'keydown', callback,
|
|
2769
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.kd = ctx.event.key; }
|
|
2770
|
+
});
|
|
2771
|
+
},
|
|
2772
|
+
onKeyPress(callback){
|
|
2773
|
+
this._on(
|
|
2774
|
+
'keypress', callback,
|
|
2775
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.kp = ctx.event.key; }
|
|
2776
|
+
});
|
|
2777
|
+
},
|
|
2778
|
+
onKeyUp(callback){
|
|
2779
|
+
this._on(
|
|
2780
|
+
'keydown', callback,
|
|
2781
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.ku = ctx.event.key; }
|
|
2782
|
+
});
|
|
2783
|
+
},
|
|
2784
|
+
|
|
2785
|
+
};
|
|
2786
|
+
|
|
2787
|
+
class EventController {
|
|
2788
|
+
constructor(target, category){
|
|
2789
|
+
this.cache = {
|
|
2790
|
+
category,
|
|
2791
|
+
target,
|
|
2792
|
+
listeners : {},
|
|
2793
|
+
currentEvent : null,
|
|
2794
|
+
event : null
|
|
2795
|
+
};
|
|
2796
|
+
}
|
|
2797
|
+
get event(){
|
|
2798
|
+
return this.cache.event
|
|
2799
|
+
}
|
|
2800
|
+
get element(){
|
|
2801
|
+
return this.cache.target.element;
|
|
2802
|
+
}
|
|
2803
|
+
get currentEvent(){
|
|
2804
|
+
return this.cache.currentEvent;
|
|
2805
|
+
}
|
|
2806
|
+
addListener(event_name, callback, {preventDefault = false, paused = false} = {}){
|
|
2807
|
+
this.cache.listeners[event_name] = {
|
|
2808
|
+
callback : e =>{
|
|
2809
|
+
this.cache.event = e;
|
|
2810
|
+
if(this.cache.listeners[event_name].preventDefault) e.preventDefault();
|
|
2811
|
+
if(!this.cache.listeners[event_name].paused) {
|
|
2812
|
+
this.cache.currentEvent = event_name;
|
|
2813
|
+
callback.call(this, this);
|
|
2814
|
+
}
|
|
2815
|
+
},
|
|
2816
|
+
preventDefault,
|
|
2817
|
+
paused,
|
|
2818
|
+
};
|
|
2819
|
+
this.element.addEventListener(event_name, this.cache.listeners[event_name].callback);
|
|
2820
|
+
return this;
|
|
2821
|
+
}
|
|
2822
|
+
removeListener(event_name){
|
|
2823
|
+
this.element.removeEventListener(event_name, this.cache.listeners[event_name].callback);
|
|
2824
|
+
return this;
|
|
2825
|
+
}
|
|
2826
|
+
pause(event_name){
|
|
2827
|
+
this.cache.listeners[event_name].paused = true;
|
|
2828
|
+
return this;
|
|
2829
|
+
}
|
|
2830
|
+
resume(event_name){
|
|
2831
|
+
this.cache.listeners[event_name].paused = false;
|
|
2832
|
+
return this;
|
|
2833
|
+
}
|
|
2834
|
+
preventDefault(event_name){
|
|
2835
|
+
// if(!event_name)
|
|
2836
|
+
this.cache.listeners[event_name].preventDefault = true;
|
|
2837
|
+
return this;
|
|
2838
|
+
}
|
|
2839
|
+
useDefault(event_name){
|
|
2840
|
+
this.cache.listeners[event_name].preventDefault = false;
|
|
2841
|
+
return this;
|
|
2842
|
+
}
|
|
2843
|
+
}
|
|
2844
|
+
|
|
3340
2845
|
let UIElement$1 = class UIElement extends UIElementCore{
|
|
3341
2846
|
constructor({element, name ='', type='html', render = __Ziko__.__Config__.default.render}={}){
|
|
3342
2847
|
super();
|
|
2848
|
+
this.exp = {
|
|
2849
|
+
events : {
|
|
2850
|
+
|
|
2851
|
+
}
|
|
2852
|
+
};
|
|
3343
2853
|
register_to_class(
|
|
3344
2854
|
this,
|
|
3345
2855
|
LifecycleMethods,
|
|
@@ -3347,11 +2857,27 @@ let UIElement$1 = class UIElement extends UIElementCore{
|
|
|
3347
2857
|
DomMethods,
|
|
3348
2858
|
StyleMethods,
|
|
3349
2859
|
IndexingMethods,
|
|
3350
|
-
|
|
2860
|
+
PtrListeners,
|
|
2861
|
+
ClickListeners,
|
|
2862
|
+
KeyListeners
|
|
3351
2863
|
);
|
|
3352
2864
|
|
|
3353
2865
|
if(element)this.init(element, name, type, render);
|
|
3354
2866
|
}
|
|
2867
|
+
_on(event, callback, {details_setter, category = 'global', preventDefault = false} = {}){
|
|
2868
|
+
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
2869
|
+
const EVENT = this.exp.events[category];
|
|
2870
|
+
EVENT.addListener(event, (e)=>{
|
|
2871
|
+
if(details_setter) details_setter(EVENT);
|
|
2872
|
+
callback(e);
|
|
2873
|
+
},{
|
|
2874
|
+
preventDefault
|
|
2875
|
+
});
|
|
2876
|
+
|
|
2877
|
+
}
|
|
2878
|
+
_off(event, category = 'global'){
|
|
2879
|
+
this.exp.events[category].removeListener(event);
|
|
2880
|
+
}
|
|
3355
2881
|
get element(){
|
|
3356
2882
|
return this.cache.element;
|
|
3357
2883
|
}
|
|
@@ -4335,6 +3861,20 @@ const Scheduler = (tasks, { repeat = null} = {}) => new TimeScheduler(tasks, { r
|
|
|
4335
3861
|
|
|
4336
3862
|
const step_fps = (step_or_fps) => 1000 / step_or_fps;
|
|
4337
3863
|
|
|
3864
|
+
const debounce=(fn,delay=1000)=>{
|
|
3865
|
+
let id;
|
|
3866
|
+
return (...args) => id ? clearTimeout(id) : setTimeout(()=>fn(...args),delay);
|
|
3867
|
+
};
|
|
3868
|
+
const throttle=(fn,delay)=>{
|
|
3869
|
+
let lastTime=0;
|
|
3870
|
+
return (...args) => {
|
|
3871
|
+
const now = new Date().getTime();
|
|
3872
|
+
if(now-lastTime < delay) return;
|
|
3873
|
+
lastTime = now;
|
|
3874
|
+
fn(...args);
|
|
3875
|
+
}
|
|
3876
|
+
};
|
|
3877
|
+
|
|
4338
3878
|
const sleep= ms => new Promise(res => setTimeout(res, ms));
|
|
4339
3879
|
function timeout(ms, fn) {
|
|
4340
3880
|
let id;
|
|
@@ -5357,6 +4897,7 @@ exports.CloneElement = CloneElement;
|
|
|
5357
4897
|
exports.Complex = Complex;
|
|
5358
4898
|
exports.E = E;
|
|
5359
4899
|
exports.EPSILON = EPSILON;
|
|
4900
|
+
exports.EventController = EventController;
|
|
5360
4901
|
exports.FileBasedRouting = FileBasedRouting;
|
|
5361
4902
|
exports.Flex = Flex;
|
|
5362
4903
|
exports.HTMLWrapper = HTMLWrapper;
|
|
@@ -5384,7 +4925,6 @@ exports.UseThread = UseThread;
|
|
|
5384
4925
|
exports.Utils = Utils;
|
|
5385
4926
|
exports.View = View;
|
|
5386
4927
|
exports.ZikoApp = ZikoApp;
|
|
5387
|
-
exports.ZikoEvent = ZikoEvent;
|
|
5388
4928
|
exports.ZikoSPA = ZikoSPA;
|
|
5389
4929
|
exports.ZikoUISuspense = ZikoUISuspense;
|
|
5390
4930
|
exports.ZikoUIText = ZikoUIText;
|
|
@@ -5409,17 +4949,6 @@ exports.atan = atan;
|
|
|
5409
4949
|
exports.atan2 = atan2;
|
|
5410
4950
|
exports.atanh = atanh;
|
|
5411
4951
|
exports.back = back;
|
|
5412
|
-
exports.bind_click_event = bind_click_event;
|
|
5413
|
-
exports.bind_clipboard_event = bind_clipboard_event;
|
|
5414
|
-
exports.bind_drag_event = bind_drag_event;
|
|
5415
|
-
exports.bind_focus_event = bind_focus_event;
|
|
5416
|
-
exports.bind_key_event = bind_key_event;
|
|
5417
|
-
exports.bind_mouse_event = bind_mouse_event;
|
|
5418
|
-
exports.bind_pointer_event = bind_pointer_event;
|
|
5419
|
-
exports.bind_swipe_event = bind_swipe_event;
|
|
5420
|
-
exports.bind_touch_event = bind_touch_event;
|
|
5421
|
-
exports.bind_view_event = bind_view_event;
|
|
5422
|
-
exports.bind_wheel_event = bind_wheel_event;
|
|
5423
4952
|
exports.binomial = binomial;
|
|
5424
4953
|
exports.call_with_optional_props = call_with_optional_props;
|
|
5425
4954
|
exports.cartesianProduct = cartesianProduct;
|
|
@@ -5445,12 +4974,10 @@ exports.deg2rad = deg2rad;
|
|
|
5445
4974
|
exports.discret = discret;
|
|
5446
4975
|
exports.div = div;
|
|
5447
4976
|
exports.elastic = elastic;
|
|
5448
|
-
exports.event_controller = event_controller;
|
|
5449
4977
|
exports.exp = exp$1;
|
|
5450
4978
|
exports.floor = floor;
|
|
5451
4979
|
exports.fract = fract;
|
|
5452
4980
|
exports.geomspace = geomspace;
|
|
5453
|
-
exports.getEvent = getEvent;
|
|
5454
4981
|
exports.hypot = hypot;
|
|
5455
4982
|
exports.inRange = inRange;
|
|
5456
4983
|
exports.in_back = in_back;
|
|
@@ -5555,7 +5082,6 @@ exports.tick = tick;
|
|
|
5555
5082
|
exports.timeTaken = timeTaken;
|
|
5556
5083
|
exports.time_memory_Taken = time_memory_Taken;
|
|
5557
5084
|
exports.timeout = timeout;
|
|
5558
|
-
exports.toggle_event_listener = toggle_event_listener;
|
|
5559
5085
|
exports.trunc = trunc;
|
|
5560
5086
|
exports.useDerived = useDerived;
|
|
5561
5087
|
exports.useEventEmitter = useEventEmitter;
|