ziko 0.65.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.
Files changed (113) hide show
  1. package/dist/ziko.cjs +61 -107
  2. package/dist/ziko.js +61 -107
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +61 -107
  5. package/package.json +2 -2
  6. package/src/events/custom-events-registry/click-away.js +0 -1
  7. package/src/exp-events/controller/index.js +41 -0
  8. package/src/exp-events/custom-events-registry/click-away.js +39 -0
  9. package/src/exp-events/custom-events-registry/index.js +3 -0
  10. package/src/exp-events/custom-events-registry/swipe.js +76 -0
  11. package/src/exp-events/custom-events-registry/view.js +74 -0
  12. package/src/exp-events/details-setter/index.js +4 -0
  13. package/src/exp-events/details-setter/key.js +14 -0
  14. package/src/exp-events/details-setter/mouse.js +35 -0
  15. package/src/exp-events/details-setter/pointer.js +35 -0
  16. package/src/exp-events/details-setter/touch.js +37 -0
  17. package/src/exp-events/index.js +1 -0
  18. package/src/hooks/index.d.ts +11 -0
  19. package/src/hooks/use-derived.d.ts +14 -0
  20. package/src/hooks/use-event-emitter.d.ts +46 -0
  21. package/src/hooks/use-favicon.d.ts +41 -0
  22. package/src/hooks/use-ipc.d.ts +12 -0
  23. package/src/hooks/use-media-query.d.ts +24 -0
  24. package/src/hooks/use-reactive.d.ts +14 -0
  25. package/src/hooks/use-root.d.ts +15 -0
  26. package/src/hooks/use-state.d.ts +25 -0
  27. package/src/hooks/use-storage.d.ts +47 -0
  28. package/src/hooks/use-thread.d.ts +33 -0
  29. package/src/hooks/use-title.d.ts +37 -0
  30. package/src/index.d.ts +5 -0
  31. package/src/math/complex/index.d.ts +54 -0
  32. package/src/math/functions/index.d.ts +140 -0
  33. package/src/math/functions/logic/index.d.ts +11 -0
  34. package/src/math/functions/mapfun/index.d.ts +87 -0
  35. package/src/math/functions/utils/index.d.ts +1 -0
  36. package/src/math/functions/utils/mapfun.d.ts +43 -0
  37. package/src/math/index.d.ts +5 -0
  38. package/src/time/clocks/clock.d.ts +28 -0
  39. package/src/time/clocks/index.d.ts +3 -0
  40. package/src/time/clocks/scheduler.d.ts +42 -0
  41. package/src/time/clocks/tick.d.ts +26 -0
  42. package/src/time/decorators/index.d.ts +9 -0
  43. package/src/time/delay/index.d.ts +12 -0
  44. package/src/time/ease/index.d.ts +103 -0
  45. package/src/time/index.d.ts +4 -0
  46. package/src/time/loop/index.d.ts +50 -0
  47. package/src/ui/constructors/UIElement.js +19 -93
  48. package/src/ui/constructors/UIElementCore.d.ts +59 -0
  49. package/src/ui/constructors/UIElementCore.js +0 -9
  50. package/src/ui/constructors/UINode.d.ts +11 -0
  51. package/src/ui/constructors/UINode.js +1 -1
  52. package/src/ui/{__methods__ → constructors/mixins}/dom.js +1 -1
  53. package/src/ui/{__methods__ → constructors/mixins}/events.js +3 -3
  54. package/src/ui/{__methods__ → constructors/mixins}/style.js +1 -1
  55. package/src/ui/{__methods__ → constructors/mixins}/utils/index.js +4 -4
  56. package/src/ui/web-component/index.d.ts +14 -0
  57. package/src/ui/web-component/index.js +2 -2
  58. package/README.dep.md +0 -137
  59. package/src/--reactivity-deprecated/events/Input.js +0 -62
  60. package/src/--reactivity-deprecated/events/ZikoEvent.js +0 -92
  61. package/src/--reactivity-deprecated/events/__note__ +0 -1
  62. package/src/--reactivity-deprecated/events/custom-event.js +0 -57
  63. package/src/--reactivity-deprecated/events/hash.js +0 -47
  64. package/src/--reactivity-deprecated/events/index.js +0 -12
  65. package/src/--reactivity-deprecated/events/media.js +0 -1
  66. package/src/--reactivity-deprecated/events/mouse.js +0 -233
  67. package/src/--reactivity-deprecated/events/swipe.js +0 -149
  68. package/src/--reactivity-deprecated/events/touch.js +0 -0
  69. package/src/--reactivity-deprecated/hooks/Contexte/index.js +0 -1
  70. package/src/--reactivity-deprecated/hooks/Contexte/useSuccesifKeys.js +0 -14
  71. package/src/--reactivity-deprecated/hooks/UI/index.js +0 -6
  72. package/src/--reactivity-deprecated/hooks/UI/useCssLink.js +0 -0
  73. package/src/--reactivity-deprecated/hooks/UI/useLinearGradient.js +0 -0
  74. package/src/--reactivity-deprecated/hooks/UI/useMediaQuery.js +0 -43
  75. package/src/--reactivity-deprecated/hooks/UI/useRadialGradient.js +0 -0
  76. package/src/--reactivity-deprecated/hooks/UI/useRoot.js +0 -39
  77. package/src/--reactivity-deprecated/hooks/UI/useStyle.js +0 -79
  78. package/src/--reactivity-deprecated/hooks/UI/useTheme.js +0 -62
  79. package/src/--reactivity-deprecated/hooks/head/_useCssText.js +0 -21
  80. package/src/--reactivity-deprecated/hooks/head/index.js +0 -5
  81. package/src/--reactivity-deprecated/hooks/head/useFavIcon.js +0 -38
  82. package/src/--reactivity-deprecated/hooks/head/useHead.js +0 -28
  83. package/src/--reactivity-deprecated/hooks/head/useMeta.js +0 -52
  84. package/src/--reactivity-deprecated/hooks/head/useTitle.js +0 -30
  85. package/src/--reactivity-deprecated/hooks/index.js +0 -8
  86. package/src/--reactivity-deprecated/hooks/todo.md +0 -26
  87. package/src/--reactivity-deprecated/idea +0 -1
  88. package/src/--reactivity-deprecated/index.js +0 -3
  89. package/src/--reactivity-deprecated/observer/attributes.js +0 -28
  90. package/src/--reactivity-deprecated/observer/children.js +0 -37
  91. package/src/--reactivity-deprecated/observer/index.js +0 -6
  92. package/src/--reactivity-deprecated/observer/intersection.js +0 -44
  93. package/src/--reactivity-deprecated/observer/mutation.js +0 -113
  94. package/src/--reactivity-deprecated/observer/resize.js +0 -47
  95. package/src/--reactivity-deprecated/observer/screen.js +0 -45
  96. package/src/--reactivity-deprecated/observer/screen.js.txt +0 -84
  97. package/src/--reactivity-deprecated/observer/screen.txt +0 -13
  98. package/src/--use-deprecated/index.js +0 -11
  99. package/src/--use-deprecated/use-channel.js.txt +0 -61
  100. package/src/--use-deprecated/use-event-emmiter.js.txt +0 -64
  101. package/src/--use-deprecated/use-favicon.js +0 -0
  102. package/src/--use-deprecated/use-link.js +0 -0
  103. package/src/--use-deprecated/use-meta.js +0 -0
  104. package/src/--use-deprecated/use-root.js +0 -77
  105. package/src/--use-deprecated/use-storage.js.txt +0 -73
  106. package/src/--use-deprecated/use-thread.js +0 -44
  107. package/src/--use-deprecated/use-title.js +0 -0
  108. package/src/ui/constructors/_m.js.txt +0 -96
  109. package/src/ui/constructors/style/index.js +0 -506
  110. /package/src/ui/{__methods__ → constructors/mixins}/attrs.js +0 -0
  111. /package/src/ui/{__methods__ → constructors/mixins}/index.js +0 -0
  112. /package/src/ui/{__methods__ → constructors/mixins}/indexing.js +0 -0
  113. /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 : Fri Feb 13 2026 20:49:44 GMT+0100 (UTC+01:00)
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
@@ -1855,7 +1855,7 @@ class UINode {
1855
1855
  node
1856
1856
  };
1857
1857
  }
1858
- isZikoUINode(){
1858
+ isUINode(){
1859
1859
  return true
1860
1860
  }
1861
1861
  get node(){
@@ -2210,7 +2210,6 @@ class UIElementCore extends UINode{
2210
2210
  isRoot:false,
2211
2211
  isHidden: false,
2212
2212
  isFrozzen:false,
2213
- legacyParent : null,
2214
2213
  attributes: {},
2215
2214
  filters: {},
2216
2215
  temp:{}
@@ -2233,14 +2232,6 @@ class UIElementCore extends UINode{
2233
2232
  intersection:null
2234
2233
  };
2235
2234
  if(element) Object.assign(this.cache,{element});
2236
- // useDefaultStyle && this.style({
2237
- // position: "relative",
2238
- // boxSizing:"border-box",
2239
- // margin:0,
2240
- // padding:0,
2241
- // width : "auto",
2242
- // height : "auto"
2243
- // });
2244
2235
  this.items = new UIStore();
2245
2236
  globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
2246
2237
  element && render && this?.render?.();
@@ -2440,7 +2431,7 @@ async function __addItem__(adder, pusher, ...ele) {
2440
2431
  }
2441
2432
  }
2442
2433
  if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
2443
- if (ele[i]?.isZikoUINode) {
2434
+ if (ele[i]?.isUINode) {
2444
2435
  ele[i].cache.parent = this;
2445
2436
  this.element?.[adder](ele[i].element);
2446
2437
  ele[i].target = this.element;
@@ -2944,7 +2935,6 @@ class ClickAwayEvent extends Event {
2944
2935
  }
2945
2936
 
2946
2937
  function register_click_away_event(element) {
2947
- console.log(element);
2948
2938
  function handler(e) {
2949
2939
  if (!element.contains(e.target)) {
2950
2940
  const clickAwayEvent = new ClickAwayEvent(e, element);
@@ -3344,19 +3334,56 @@ var StyleMethods = /*#__PURE__*/Object.freeze({
3344
3334
  style: style$1
3345
3335
  });
3346
3336
 
3347
- // import {
3348
- // // useCustomEvent,
3349
- // // useSwipeEvent,
3350
- // // watchIntersection,
3351
- // // watchSize,
3352
- // // watchAttr,
3353
- // // watchChildren
3354
- // } from "../../--reactivity-deprecated/events/custom-event.js"
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
+
3355
3379
  let UIElement$1 = class UIElement extends UIElementCore{
3356
3380
  constructor({element, name ='', type='html', render = __Ziko__.__Config__.default.render}={}){
3357
3381
  super();
3358
- // console.log({type})
3359
- // console.log(this)
3382
+ this.exp = {
3383
+ events : {
3384
+
3385
+ }
3386
+ };
3360
3387
  register_to_class(
3361
3388
  this,
3362
3389
  LifecycleMethods,
@@ -3367,9 +3394,17 @@ let UIElement$1 = class UIElement extends UIElementCore{
3367
3394
  EventsMethodes
3368
3395
  );
3369
3396
 
3370
- // console.log(EventsMethodes)
3371
3397
  if(element)this.init(element, name, type, render);
3372
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
+ }
3373
3408
  get element(){
3374
3409
  return this.cache.element;
3375
3410
  }
@@ -3385,9 +3420,6 @@ let UIElement$1 = class UIElement extends UIElementCore{
3385
3420
  if(directive)this.element.setAttribute('data-hydration-directive', directive);
3386
3421
  return this;
3387
3422
  }
3388
- // isUIElement(){
3389
- // return true;
3390
- // }
3391
3423
  get st(){
3392
3424
  return this.cache.style;
3393
3425
  }
@@ -3427,84 +3459,6 @@ let UIElement$1 = class UIElement extends UIElementCore{
3427
3459
  get left(){
3428
3460
  return this.element.getBoundingClientRect().left;
3429
3461
  }
3430
- // clone(render=false) {
3431
- // // UI.__proto__=this.__proto__;
3432
- // // if(this.items.length){
3433
- // // const items = [...this.items].map(n=>n.clone());
3434
- // // UI.append(...items);
3435
- // // }
3436
- // // else UI.element=this.element.cloneNode(true);
3437
- // // return UI.mount(render);
3438
- // }
3439
- // [Symbol.iterator]() {
3440
- // return this.items[Symbol.iterator]();
3441
- // }
3442
- // maintain() {
3443
- // for (let i = 0; i < this.items.length; i++) {
3444
- // Object.defineProperty(this, i, {
3445
- // value: this.items[i],
3446
- // writable: true,
3447
- // configurable: true,
3448
- // enumerable: false
3449
- // });
3450
- // }
3451
- // }
3452
- // freeze(freeze){
3453
- // this.cache.isFrozzen=freeze;
3454
- // return this;
3455
- // }
3456
- // setTarget(tg) {
3457
- // if(this.isBody) return ;
3458
- // if (tg?.isUIElement) tg = tg.element;
3459
- // this.unmount();
3460
- // this.target = tg;
3461
- // this.mount();
3462
- // return this;
3463
- // }
3464
- // describe(label){
3465
- // if(label)this.setAttr("aria-label",label)
3466
- // }
3467
- // get children() {
3468
- // return [...this.element.children];
3469
- // }
3470
- // get cloneElement() {
3471
- // return this.element.cloneNode(true);
3472
- // }
3473
- // setClasses(...value) {
3474
- // this.setAttr("class", value.join(" "));
3475
- // return this;
3476
- // }
3477
- // get classes(){
3478
- // const classes=this.element.getAttribute("class");
3479
- // return classes===null?[]:classes.split(" ");
3480
- // }
3481
- // addClass() {
3482
- // /*this.setAttr("class", value);
3483
- // return this;*/
3484
- // }
3485
- // setId(id) {
3486
- // this.setAttr("id", id);
3487
- // return this;
3488
- // }
3489
- // get id() {
3490
- // return this.element.getAttribute("id");
3491
- // }
3492
- // To Fix
3493
- // onKeysDown({keys=[],callback}={}){
3494
- // if(!this.events.key)this.events.key = useKeyEvent(this);
3495
- // this.events.key.handleSuccessifKeys({keys,callback});
3496
- // return this;
3497
- // }
3498
- // watchAttr(callback){
3499
- // if(!this.observer.attr)this.observer.attr = watchAttr(this,callback);
3500
- // return this;
3501
- // }
3502
- // watchChildren(callback){
3503
- // if(!this.observer.children)this.observer.children = watchChildren(this,callback);
3504
- // return this;
3505
- // }
3506
- // watchSize(callback)Remplaced By on onViewResize
3507
- // watchIntersection(callback,config) Remplaced By onViewEnter and onViewExit
3508
3462
 
3509
3463
  };
3510
3464
 
@@ -3973,7 +3927,7 @@ function svg2dom(svgString) {
3973
3927
 
3974
3928
  const SVGWrapper = (content) => new UISVGWrapper(content);
3975
3929
 
3976
- function define_wc(name, UIElement, props = {}, { mode = 'open'} = {}) {
3930
+ function define_wc(name, UI_Constructor, props = {}, { mode = 'open'} = {}) {
3977
3931
  if (globalThis.customElements?.get(name)) {
3978
3932
  console.warn(`Custom element "${name}" is already defined`);
3979
3933
  return;
@@ -4005,7 +3959,7 @@ function define_wc(name, UIElement, props = {}, { mode = 'open'} = {}) {
4005
3959
 
4006
3960
  render() {
4007
3961
  this.shadowRoot.innerHTML = '';
4008
- const item = UIElement(this.props);
3962
+ const item = UI_Constructor(this.props);
4009
3963
  if(item instanceof Array) item.forEach(n => n.mount(this.shadowRoot));
4010
3964
  else item.mount(this.shadowRoot);
4011
3965
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ziko",
3
- "version": "0.65.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": "^28.0.0",
93
+ "jsdom": "^26.0.0",
94
94
  "rollup": "^4.57.1",
95
95
  "vitest": "^4.0.18"
96
96
  }
@@ -7,7 +7,6 @@ class ClickAwayEvent extends Event {
7
7
  }
8
8
 
9
9
  function register_click_away_event(element) {
10
- console.log(element)
11
10
  function handler(e) {
12
11
  if (!element.contains(e.target)) {
13
12
  const clickAwayEvent = new ClickAwayEvent(e, element);
@@ -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,3 @@
1
+ export * from './click-away.js'
2
+ export * from './view.js'
3
+ export * from './swipe.js'
@@ -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,4 @@
1
+ export * from './key.js'
2
+ export * from './pointer.js'
3
+ export * from './mouse.js'
4
+ export * from './touch.js'
@@ -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'
@@ -0,0 +1,11 @@
1
+ export type * from './use-ipc'
2
+ export type * from './use-storage.d.ts'
3
+ export type * from './use-state.d.ts'
4
+ export type * from './use-derived.d.ts'
5
+ export type * from './use-reactive.d.ts'
6
+ export type * from './use-thread.d.ts'
7
+ export type * from './use-event-emitter.d.ts'
8
+ export type * from './use-media-query.d.ts'
9
+ export type * from './use-title.d.ts'
10
+ export type * from './use-favicon.d.ts'
11
+ export type * from './use-root.d.ts'
@@ -0,0 +1,14 @@
1
+ export function useDerived<T>(
2
+ deriveFn: (...values: any[]) => T,
3
+ sources: Array<
4
+ () => {
5
+ value: any;
6
+ isStateGetter: () => true;
7
+ _subscribe: (fn: (value: any) => void) => void;
8
+ }
9
+ >
10
+ ): () => {
11
+ value: T;
12
+ isStateGetter: () => true;
13
+ _subscribe: (fn: (value: T) => void) => void;
14
+ };