ziko 0.0.18 → 0.0.20

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 (267) hide show
  1. package/dist/ziko.cjs +10682 -11306
  2. package/dist/ziko.js +10490 -11999
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +10491 -11996
  5. package/package.json +16 -45
  6. package/src/__helpers__/index.js +61 -61
  7. package/src/app/json-style-sheet.js +64 -64
  8. package/src/app/ziko-app.js +38 -38
  9. package/src/data/api/fetchdom.js +13 -13
  10. package/src/data/api/index.js +3 -3
  11. package/src/data/api/preload.js +10 -10
  12. package/src/data/converter/adoc.js +130 -130
  13. package/src/data/converter/array.js +42 -42
  14. package/src/data/converter/canvas.js +24 -24
  15. package/src/data/converter/css.js +36 -36
  16. package/src/data/converter/csv.js +32 -32
  17. package/src/data/converter/idea.txt +9 -9
  18. package/src/data/converter/index.js +36 -36
  19. package/src/data/converter/json.js +80 -80
  20. package/src/data/converter/markdown.js +95 -95
  21. package/src/data/converter/object.js +69 -69
  22. package/src/data/converter/svg.js +10 -10
  23. package/src/data/index.js +16 -16
  24. package/src/data/parser/xml.js +46 -46
  25. package/src/data/string/patterns.js +11 -11
  26. package/src/data/string/string.js +169 -169
  27. package/src/global/{themes → _themes}/dark.js +884 -884
  28. package/src/global/{themes → _themes}/index.js +10 -10
  29. package/src/global/{themes → _themes}/light.js +254 -254
  30. package/src/global/app/index.js +45 -45
  31. package/src/global/component/index.js +38 -38
  32. package/src/global/globals/index.js +20 -20
  33. package/src/global/index.js +3 -11
  34. package/src/global/params/index.js +39 -39
  35. package/src/global/router/index.js +66 -66
  36. package/src/global/seo/index.js +42 -42
  37. package/src/graphics/canvas/canvas.js +176 -176
  38. package/src/graphics/canvas/elements/{basic → Basic}/arc.js +42 -42
  39. package/src/graphics/canvas/elements/{basic → Basic}/line.js +25 -25
  40. package/src/graphics/canvas/elements/{basic → Basic}/points.js +47 -47
  41. package/src/graphics/canvas/elements/{basic → Basic}/polygon.js +6 -6
  42. package/src/graphics/canvas/elements/{basic → Basic}/rect.js +45 -45
  43. package/src/graphics/canvas/elements/{chart → Chart}/scatter.js +2 -2
  44. package/src/graphics/canvas/elements/{element.js → Element.js} +114 -114
  45. package/src/graphics/canvas/elements/index.js +12 -12
  46. package/src/graphics/canvas/index.js +1 -1
  47. package/src/graphics/canvas/utils/color.js +7 -7
  48. package/src/graphics/canvas/utils/floodFill.js +57 -57
  49. package/src/graphics/index.js +9 -9
  50. package/src/graphics/svg/{elements/basic → Elements/Basic}/circle.js +28 -28
  51. package/src/graphics/svg/{elements/basic → Elements/Basic}/ellipse.js +23 -23
  52. package/src/graphics/svg/{elements/basic → Elements/Basic}/foreign-object.js +35 -35
  53. package/src/graphics/svg/{elements/basic → Elements/Basic}/groupe.js +32 -32
  54. package/src/graphics/svg/{elements/basic → Elements/Basic}/image.js +35 -35
  55. package/src/graphics/svg/{elements/basic → Elements/Basic}/line.js +31 -31
  56. package/src/graphics/svg/{elements/basic → Elements/Basic}/link.js +33 -33
  57. package/src/graphics/svg/{elements/basic → Elements/Basic}/path.js +61 -61
  58. package/src/graphics/svg/{elements/basic → Elements/Basic}/polygon.js +31 -31
  59. package/src/graphics/svg/{elements/basic → Elements/Basic}/polyline.js +6 -6
  60. package/src/graphics/svg/{elements/basic → Elements/Basic}/rect.js +45 -45
  61. package/src/graphics/svg/{elements/basic → Elements/Basic}/text.js +28 -28
  62. package/src/graphics/svg/{elements/derived → Elements/Derived}/grid.js +8 -8
  63. package/src/graphics/svg/{elements → Elements}/index.js +2 -2
  64. package/src/graphics/svg/{elements → Elements}/ziko-svg-element.js +48 -48
  65. package/src/graphics/svg/index.js +1 -1
  66. package/src/graphics/svg/svg.js +68 -68
  67. package/src/index.js +85 -85
  68. package/src/math/calculus/index.js +2 -2
  69. package/src/math/calculus/special-functions/bessel.js +30 -30
  70. package/src/math/calculus/special-functions/beta.js +37 -37
  71. package/src/math/calculus/special-functions/gamma.js +29 -29
  72. package/src/math/calculus/special-functions/index.js +4 -4
  73. package/src/math/complex/index.js +202 -202
  74. package/src/math/const.js +2 -2
  75. package/src/math/discret/Combinaison/index.js +33 -33
  76. package/src/math/discret/Conversion/index.js +85 -85
  77. package/src/math/discret/Logic/index.js +45 -45
  78. package/src/math/discret/Permutation/index.js +30 -30
  79. package/src/math/discret/Set/index.js +1 -1
  80. package/src/math/discret/Set/power-set.js +14 -14
  81. package/src/math/discret/Set/sub-set.js +10 -10
  82. package/src/math/discret/index.js +11 -11
  83. package/src/math/functions/index.js +161 -161
  84. package/src/math/index.js +32 -32
  85. package/src/math/matrix/Decomposition.js +90 -90
  86. package/src/math/matrix/LinearSystem.js +9 -9
  87. package/src/math/matrix/Matrix.js +716 -716
  88. package/src/math/matrix/index.js +2 -2
  89. package/src/math/random/index.js +172 -172
  90. package/src/math/signal/__np.py.txt +39 -39
  91. package/src/math/signal/conv.js +174 -174
  92. package/src/math/signal/fft.js +54 -54
  93. package/src/math/signal/filter.js +38 -38
  94. package/src/math/signal/functions.js +145 -145
  95. package/src/math/signal/index.js +109 -109
  96. package/src/math/statistics/Functions/index.js +99 -99
  97. package/src/math/statistics/index.js +15 -15
  98. package/src/math/utils/arithmetic.js +138 -138
  99. package/src/math/utils/checkers.js +29 -29
  100. package/src/math/utils/conversions.js +19 -19
  101. package/src/math/utils/discret.js +51 -51
  102. package/src/math/utils/index.js +101 -101
  103. package/src/math/utils/mapfun.js +49 -49
  104. package/src/reactivity/events/Input.js +61 -61
  105. package/src/reactivity/events/Pointer.js +231 -231
  106. package/src/reactivity/events/ZikoEvent.js +90 -90
  107. package/src/reactivity/events/click.js +59 -59
  108. package/src/reactivity/events/clipboard.js +87 -87
  109. package/src/reactivity/events/custom-event.js +56 -56
  110. package/src/reactivity/events/drag.js +136 -136
  111. package/src/reactivity/events/focus.js +58 -58
  112. package/src/reactivity/events/hash.js +46 -46
  113. package/src/reactivity/events/index.js +12 -12
  114. package/src/reactivity/events/key.js +101 -101
  115. package/src/reactivity/events/mouse.js +232 -232
  116. package/src/reactivity/events/swipe.js +149 -149
  117. package/src/reactivity/events/wheel.js +46 -46
  118. package/src/reactivity/hooks/{contexte → Contexte}/useSuccesifKeys.js +13 -13
  119. package/src/reactivity/hooks/{decorators → Decorators}/index.js +6 -6
  120. package/src/reactivity/hooks/{decorators → Decorators}/time.js +16 -16
  121. package/src/reactivity/hooks/{decorators → Decorators}/type.js +87 -87
  122. package/src/reactivity/hooks/{head/useCssText.js → Head/_useCssText.js} +20 -20
  123. package/src/reactivity/hooks/{head → Head}/index.js +5 -5
  124. package/src/reactivity/hooks/{head → Head}/useFavIcon.js +37 -37
  125. package/src/reactivity/hooks/{head → Head}/useHead.js +27 -27
  126. package/src/reactivity/hooks/{head → Head}/useMeta.js +52 -52
  127. package/src/reactivity/hooks/{head → Head}/useTitle.js +29 -29
  128. package/src/reactivity/hooks/{interactions/useBluetooth.js → Interactions/_useBluetooth.js} +47 -47
  129. package/src/reactivity/hooks/{interactions → Interactions}/index.js +4 -4
  130. package/src/reactivity/hooks/{interactions → Interactions}/useChannel.js +49 -49
  131. package/src/reactivity/hooks/{interactions → Interactions}/useEventEmmiter.js +63 -63
  132. package/src/reactivity/hooks/{interactions → Interactions}/useThread.js +43 -43
  133. package/src/reactivity/hooks/Sensors/index.js +2 -0
  134. package/src/reactivity/hooks/{sensors → Sensors}/useBattery.js +35 -35
  135. package/src/reactivity/hooks/{sensors → Sensors}/useGeolocation.js +16 -16
  136. package/src/reactivity/hooks/{storage → Storage}/useStorage.js +72 -72
  137. package/src/reactivity/hooks/{ui → UI}/index.js +5 -5
  138. package/src/reactivity/hooks/{ui → UI}/useMediaQuery.js +43 -43
  139. package/src/reactivity/hooks/{ui → UI}/useStyle.js +79 -79
  140. package/src/reactivity/hooks/{ui → UI}/useTheme.js +61 -61
  141. package/src/reactivity/hooks/index.js +7 -7
  142. package/src/reactivity/hooks/todo.md +26 -26
  143. package/src/reactivity/idea +1 -1
  144. package/src/reactivity/index.js +11 -11
  145. package/src/reactivity/observer/attributes.js +28 -28
  146. package/src/reactivity/observer/children.js +36 -36
  147. package/src/reactivity/observer/index.js +6 -6
  148. package/src/reactivity/observer/intersection.js +43 -43
  149. package/src/reactivity/observer/mutation.js +112 -112
  150. package/src/reactivity/observer/resize.js +46 -46
  151. package/src/reactivity/observer/screen.js +44 -44
  152. package/src/reactivity/observer/screen.js.txt +83 -83
  153. package/src/reactivity/observer/screen.txt +12 -12
  154. package/src/time/animation.js +75 -75
  155. package/src/time/index.js +11 -11
  156. package/src/time/loop.js +87 -87
  157. package/src/time/utils/decorators.js +16 -16
  158. package/src/time/utils/ease.js +143 -143
  159. package/src/time/utils/index.js +17 -17
  160. package/src/time/utils/performance.js +15 -15
  161. package/src/time/utils/ui.js +25 -25
  162. package/src/types.js +73 -73
  163. package/src/ui/elements/derived/accordion/accordion.js +42 -42
  164. package/src/ui/elements/derived/accordion/collapsible.js +82 -82
  165. package/src/ui/elements/derived/accordion/index.js +1 -1
  166. package/src/ui/elements/derived/alert/alert.js +80 -80
  167. package/src/ui/elements/derived/alert/palette.js +51 -51
  168. package/src/ui/elements/derived/carousel/index.js +50 -50
  169. package/src/ui/elements/derived/code-note/SubElements.js.txt +104 -104
  170. package/src/ui/elements/derived/code-note/code-cell.js +194 -194
  171. package/src/ui/elements/derived/code-note/code-note.js +71 -71
  172. package/src/ui/elements/derived/code-note/index.js +1 -1
  173. package/src/ui/elements/derived/code-note/sub-elements.js +66 -66
  174. package/src/ui/elements/derived/elements/Swipper.js +3 -3
  175. package/src/ui/elements/derived/elements/index.js +9 -9
  176. package/src/ui/elements/derived/flex/index.js +102 -102
  177. package/src/ui/elements/derived/grid/index.js +32 -32
  178. package/src/ui/elements/derived/index.js +11 -11
  179. package/src/ui/elements/derived/menu/menu3d.js +259 -259
  180. package/src/ui/elements/derived/modal/index.js +91 -91
  181. package/src/ui/elements/derived/pagination/breadcrumbs.js +53 -53
  182. package/src/ui/elements/derived/slider/__ZikoUISlider__.js +111 -111
  183. package/src/ui/elements/derived/slider/hSlider.js +33 -33
  184. package/src/ui/elements/derived/slider/index.js +11 -11
  185. package/src/ui/elements/derived/slider/vSlider.js +26 -26
  186. package/src/ui/elements/derived/splitter/__ZikoUISplitter__.js +61 -61
  187. package/src/ui/elements/derived/splitter/hsplitter.js +39 -39
  188. package/src/ui/elements/derived/splitter/index.js +11 -11
  189. package/src/ui/elements/derived/splitter/vsplitter.js +39 -39
  190. package/src/ui/elements/derived/tabs/index.js +179 -179
  191. package/src/ui/elements/primitives/ZikoUIContainerElement.js +163 -163
  192. package/src/ui/elements/primitives/ZikoUIElement.js +492 -492
  193. package/src/ui/elements/primitives/embaded/html.js +19 -19
  194. package/src/ui/elements/primitives/embaded/index.js +3 -3
  195. package/src/ui/elements/primitives/embaded/pdf.js +16 -16
  196. package/src/ui/elements/primitives/embaded/youtube.js +23 -23
  197. package/src/ui/elements/primitives/index.js +7 -7
  198. package/src/ui/elements/primitives/io/Form/index.js +41 -41
  199. package/src/ui/elements/primitives/io/Form/index.js.txt +104 -104
  200. package/src/ui/elements/primitives/io/Inputs/__helpers__.js +51 -51
  201. package/src/ui/elements/primitives/io/Inputs/index.js +12 -12
  202. package/src/ui/elements/primitives/io/Inputs/input/index.js +98 -98
  203. package/src/ui/elements/primitives/io/Inputs/input-camera/index.js +26 -26
  204. package/src/ui/elements/primitives/io/Inputs/input-checkbox/index.js +25 -25
  205. package/src/ui/elements/primitives/io/Inputs/input-color/index.js +15 -15
  206. package/src/ui/elements/primitives/io/Inputs/input-date-time/index.js +2 -2
  207. package/src/ui/elements/primitives/io/Inputs/input-date-time/input-date-time.js +13 -13
  208. package/src/ui/elements/primitives/io/Inputs/input-date-time/input-date.js +13 -13
  209. package/src/ui/elements/primitives/io/Inputs/input-date-time/input-time.js +13 -13
  210. package/src/ui/elements/primitives/io/Inputs/input-email-password/index.js +1 -1
  211. package/src/ui/elements/primitives/io/Inputs/input-email-password/input-email.js +14 -14
  212. package/src/ui/elements/primitives/io/Inputs/input-email-password/input-password.js +13 -13
  213. package/src/ui/elements/primitives/io/Inputs/input-file/input-image.js +42 -42
  214. package/src/ui/elements/primitives/io/Inputs/input-number/index.js +36 -36
  215. package/src/ui/elements/primitives/io/Inputs/input-radio/index.js +25 -25
  216. package/src/ui/elements/primitives/io/Inputs/input-search/index.js +45 -45
  217. package/src/ui/elements/primitives/io/Inputs/input-slider/index.js +34 -34
  218. package/src/ui/elements/primitives/io/Select/index.js +19 -19
  219. package/src/ui/elements/primitives/io/Textarea/index.js +17 -17
  220. package/src/ui/elements/primitives/io/index.js +3 -3
  221. package/src/ui/elements/primitives/list/index.js +138 -138
  222. package/src/ui/elements/primitives/media/Audio/index.js +16 -16
  223. package/src/ui/elements/primitives/media/Image/figure.js +18 -18
  224. package/src/ui/elements/primitives/media/Image/image.js +36 -36
  225. package/src/ui/elements/primitives/media/Image/index.js +1 -1
  226. package/src/ui/elements/primitives/media/Video/index.js +26 -26
  227. package/src/ui/elements/primitives/media/__ZikoUIDynamicMediaELement__.js +46 -46
  228. package/src/ui/elements/primitives/media/index.js +2 -2
  229. package/src/ui/elements/primitives/misc/index.js +101 -101
  230. package/src/ui/elements/primitives/semantic/index.js +81 -81
  231. package/src/ui/elements/primitives/table/elements.js +93 -93
  232. package/src/ui/elements/primitives/table/index.js +2 -2
  233. package/src/ui/elements/primitives/table/table.js +115 -115
  234. package/src/ui/elements/primitives/table/utils.js +11 -11
  235. package/src/ui/elements/primitives/text/__ZikoUIText__.js +71 -71
  236. package/src/ui/elements/primitives/text/heading.js +35 -35
  237. package/src/ui/elements/primitives/text/index.js +2 -2
  238. package/src/ui/elements/primitives/text/p.js +26 -26
  239. package/src/ui/elements/primitives/text/text.js +80 -80
  240. package/src/ui/index.js +37 -37
  241. package/src/ui/style/index.js +504 -515
  242. package/src/ui/utils/index.js +69 -69
  243. package/starter/bin/index.js +11 -11
  244. package/src/reactivity/hooks/sensors/index.js +0 -2
  245. /package/{readme.md → README.md} +0 -0
  246. /package/src/graphics/canvas/elements/{basic → Basic}/image.js +0 -0
  247. /package/src/graphics/canvas/elements/{basic → Basic}/path.js +0 -0
  248. /package/src/graphics/canvas/elements/{basic → Basic}/polyline.js +0 -0
  249. /package/src/graphics/canvas/elements/{basic → Basic}/text.js +0 -0
  250. /package/src/graphics/canvas/elements/{chart → Chart}/histogram.js +0 -0
  251. /package/src/graphics/canvas/elements/{chart → Chart}/plot.js +0 -0
  252. /package/src/graphics/canvas/elements/{chart → Chart}/stem.js +0 -0
  253. /package/src/graphics/svg/{elements/basic → Elements/Basic}/index.js +0 -0
  254. /package/src/graphics/svg/{elements/derived → Elements/Derived}/index.js +0 -0
  255. /package/src/reactivity/hooks/{contexte → Contexte}/index.js +0 -0
  256. /package/src/reactivity/hooks/{interactions → Interactions}/useSerial.js +0 -0
  257. /package/src/reactivity/hooks/{interactions → Interactions}/useUsb.js +0 -0
  258. /package/src/reactivity/hooks/{sensors → Sensors}/useCamera.js +0 -0
  259. /package/src/reactivity/hooks/{sensors → Sensors}/useMicro.js +0 -0
  260. /package/src/reactivity/hooks/{sensors → Sensors}/useOrientation.js +0 -0
  261. /package/src/reactivity/hooks/{storage → Storage}/index.js +0 -0
  262. /package/src/reactivity/hooks/{storage → Storage}/useCookie.js +0 -0
  263. /package/src/reactivity/hooks/{storage → Storage}/useIndexedDb.js +0 -0
  264. /package/src/reactivity/hooks/{ui → UI}/useCssLink.js +0 -0
  265. /package/src/reactivity/hooks/{ui → UI}/useLinearGradient.js +0 -0
  266. /package/src/reactivity/hooks/{ui → UI}/useRadialGradient.js +0 -0
  267. /package/src/reactivity/hooks/{ui → UI}/useRoot.js +0 -0
@@ -1,149 +1,149 @@
1
- import { ZikoEvent, EVENT_CONTROLLER } from "./ZikoEvent.js";
2
- import { norm, lerp, abs, sign } from "../../math/index.js";
3
- class ZikoEventSwipe extends ZikoEvent {
4
- constructor(target, width_threshold = 0.3, height_threshold = 0.3) {
5
- super(target);
6
- const { removeListener, setWidthThreshold, setHeightThreshold } = init_swipe_event_handler(
7
- this.target?.element,
8
- width_threshold,
9
- height_threshold,
10
- this.target.width,
11
- this.target.height,
12
- );
13
- this.cache = {
14
- width_threshold,
15
- height_threshold,
16
- removeListener,
17
- setWidthThreshold,
18
- setHeightThreshold,
19
- legacyTouchAction : globalThis?.document?.body?.style?.touchAction,
20
- prefixe: "",
21
- preventDefault: {
22
- swipe: false,
23
- },
24
- paused: {
25
- swipe: false,
26
- },
27
- stream: {
28
- enabled: {
29
- swipe: false,
30
- },
31
- clear: {
32
- swipe: false,
33
- },
34
- history: {
35
- swipe: [],
36
- },
37
- },
38
- callbacks: {
39
- swipe: [],
40
- },
41
- };
42
- this.__controller = {
43
- swipe: swipe_controller.bind(this),
44
- };
45
- }
46
- onSwipe(...callbacks) {
47
- Object.assign(globalThis?.document?.body?.style,{touchAction:"none"})
48
- this.__onEvent("swipe", {}, ...callbacks);
49
- return this;
50
- }
51
- updateThresholds(width_threshold = this.cache.width_threshold, height_threshold = this.cache.height_threshold) {
52
- if (width_threshold !== undefined) {
53
- this.cache.setWidthThreshold(width_threshold);
54
- }
55
- if (height_threshold !== undefined) {
56
- this.cache.setHeightThreshold(height_threshold);
57
- }
58
- return this;
59
- }
60
- destroy() {
61
- this.cache.removeListener();
62
- Object.assign(globalThis?.document?.body?.style,{touchAction:this.cache.legacyTouchAction})
63
- return this;
64
- }
65
- }
66
- function init_swipe_event_handler(element, width_threshold = 0.50, height_threshold = 0.5, width, height) {
67
- let Interpolated_width_threshold = lerp(width_threshold, 0, width);
68
- let Interpolated_height_threshold = lerp(height_threshold, 0, height);
69
- let startX = 0, startY = 0, endX = 0, endY = 0;
70
- const pointerDownHandler = (event) => {
71
- startX = event.clientX;
72
- startY = event.clientY;
73
- };
74
- const pointerUpHandler = (event) => {
75
- endX = event.clientX;
76
- endY = event.clientY;
77
- handleSwipe();
78
- };
79
- element?.addEventListener('pointerdown', pointerDownHandler);
80
- element?.addEventListener('pointerup', pointerUpHandler);
81
- function handleSwipe() {
82
- const deltaX = endX - startX;
83
- const deltaY = endY - startY;
84
- if (Math.abs(deltaX) > Interpolated_width_threshold || Math.abs(deltaY) > Interpolated_height_threshold) {
85
- dispatchSwipeEvent(deltaX, deltaY);
86
- }
87
- }
88
- function dispatchSwipeEvent(deltaX, deltaY) {
89
- const event = globalThis?.CustomEvent ? new CustomEvent('swipe', {
90
- detail: {
91
- deltaX: abs(deltaX) < Interpolated_width_threshold ? 0 : sign(deltaX) * norm(abs(deltaX), 0, width),
92
- deltaY: abs(deltaY) < Interpolated_height_threshold ? 0 : sign(deltaY) * norm(abs(deltaY), 0, height),
93
- direction: {
94
- x : abs(deltaX) < Interpolated_width_threshold ? "none" : deltaX > 0 ? "right" : "left",
95
- y : abs(deltaY) < Interpolated_height_threshold ? "none" : deltaY > 0 ? 'down' : 'up',
96
- },
97
- },
98
- }) : null;
99
- element?.dispatchEvent(event);
100
- }
101
- function setWidthThreshold(new_width_threshold) {
102
- Interpolated_width_threshold = lerp(new_width_threshold, 0, width);
103
- }
104
- function setHeightThreshold(new_height_threshold) {
105
- Interpolated_height_threshold = lerp(new_height_threshold, 0, height);
106
- }
107
- return {
108
- removeListener() {
109
- element?.removeEventListener('pointerdown', pointerDownHandler);
110
- element?.removeEventListener('pointerup', pointerUpHandler);
111
- console.log('Swipe event listeners removed');
112
- },
113
- setWidthThreshold,
114
- setHeightThreshold,
115
- };
116
- }
117
- function swipe_controller(e) {
118
- EVENT_CONTROLLER.call(this, e, "swipe", null, null);
119
- }
120
- const useSwipeEvent = (target, width_threshold, height_threshold) => new ZikoEventSwipe(target, width_threshold, height_threshold);
121
- export{
122
- useSwipeEvent,
123
- ZikoEventSwipe
124
- }
125
- /*
126
- a=p("ALLL").size("300px","300px").style({background:"red",userSelect:"none"})
127
- t=text("")
128
- ev=useSwipeEvent(a, .1, .3)
129
- ev.onSwipe(e=>{
130
- // t.setValue(`
131
- // vertical direction : ${e.event.detail.direction.y}
132
- // horizontal direction : ${e.event.detail.direction.x}
133
- // deltaX : ${e.event.detail.deltaX}
134
- // deltaY : ${e.event.detail.deltaY}
135
- // `)
136
- e.target.st.translate(e.event.detail.deltaX * 200, e.event.detail.deltaY * 200,0, 500)
137
- })
138
- */
139
- /*
140
- a=p("ALLL")
141
- .size("300px","300px")
142
- .style({background:"red",userSelect:"none"})
143
- .onSwipe(
144
- .3,
145
- .3,
146
- e=>{
147
- e.target.st.translate(e.event.detail.deltaX * 200, e.event.detail.deltaY * 200,0, 500)
148
- })
149
- */
1
+ import { ZikoEvent, EVENT_CONTROLLER } from "./ZikoEvent.js";
2
+ import { norm, lerp, abs, sign } from "../../math/index.js";
3
+ class ZikoEventSwipe extends ZikoEvent {
4
+ constructor(target, width_threshold = 0.3, height_threshold = 0.3) {
5
+ super(target);
6
+ const { removeListener, setWidthThreshold, setHeightThreshold } = init_swipe_event_handler(
7
+ this.target?.element,
8
+ width_threshold,
9
+ height_threshold,
10
+ this.target.width,
11
+ this.target.height,
12
+ );
13
+ this.cache = {
14
+ width_threshold,
15
+ height_threshold,
16
+ removeListener,
17
+ setWidthThreshold,
18
+ setHeightThreshold,
19
+ legacyTouchAction : globalThis?.document?.body?.style?.touchAction,
20
+ prefixe: "",
21
+ preventDefault: {
22
+ swipe: false,
23
+ },
24
+ paused: {
25
+ swipe: false,
26
+ },
27
+ stream: {
28
+ enabled: {
29
+ swipe: false,
30
+ },
31
+ clear: {
32
+ swipe: false,
33
+ },
34
+ history: {
35
+ swipe: [],
36
+ },
37
+ },
38
+ callbacks: {
39
+ swipe: [],
40
+ },
41
+ };
42
+ this.__controller = {
43
+ swipe: swipe_controller.bind(this),
44
+ };
45
+ }
46
+ onSwipe(...callbacks) {
47
+ Object.assign(globalThis?.document?.body?.style,{touchAction:"none"})
48
+ this.__onEvent("swipe", {}, ...callbacks);
49
+ return this;
50
+ }
51
+ updateThresholds(width_threshold = this.cache.width_threshold, height_threshold = this.cache.height_threshold) {
52
+ if (width_threshold !== undefined) {
53
+ this.cache.setWidthThreshold(width_threshold);
54
+ }
55
+ if (height_threshold !== undefined) {
56
+ this.cache.setHeightThreshold(height_threshold);
57
+ }
58
+ return this;
59
+ }
60
+ destroy() {
61
+ this.cache.removeListener();
62
+ Object.assign(globalThis?.document?.body?.style,{touchAction:this.cache.legacyTouchAction})
63
+ return this;
64
+ }
65
+ }
66
+ function init_swipe_event_handler(element, width_threshold = 0.50, height_threshold = 0.5, width, height) {
67
+ let Interpolated_width_threshold = lerp(width_threshold, 0, width);
68
+ let Interpolated_height_threshold = lerp(height_threshold, 0, height);
69
+ let startX = 0, startY = 0, endX = 0, endY = 0;
70
+ const pointerDownHandler = (event) => {
71
+ startX = event.clientX;
72
+ startY = event.clientY;
73
+ };
74
+ const pointerUpHandler = (event) => {
75
+ endX = event.clientX;
76
+ endY = event.clientY;
77
+ handleSwipe();
78
+ };
79
+ element?.addEventListener('pointerdown', pointerDownHandler);
80
+ element?.addEventListener('pointerup', pointerUpHandler);
81
+ function handleSwipe() {
82
+ const deltaX = endX - startX;
83
+ const deltaY = endY - startY;
84
+ if (Math.abs(deltaX) > Interpolated_width_threshold || Math.abs(deltaY) > Interpolated_height_threshold) {
85
+ dispatchSwipeEvent(deltaX, deltaY);
86
+ }
87
+ }
88
+ function dispatchSwipeEvent(deltaX, deltaY) {
89
+ const event = globalThis?.CustomEvent ? new CustomEvent('swipe', {
90
+ detail: {
91
+ deltaX: abs(deltaX) < Interpolated_width_threshold ? 0 : sign(deltaX) * norm(abs(deltaX), 0, width),
92
+ deltaY: abs(deltaY) < Interpolated_height_threshold ? 0 : sign(deltaY) * norm(abs(deltaY), 0, height),
93
+ direction: {
94
+ x : abs(deltaX) < Interpolated_width_threshold ? "none" : deltaX > 0 ? "right" : "left",
95
+ y : abs(deltaY) < Interpolated_height_threshold ? "none" : deltaY > 0 ? 'down' : 'up',
96
+ },
97
+ },
98
+ }) : null;
99
+ element?.dispatchEvent(event);
100
+ }
101
+ function setWidthThreshold(new_width_threshold) {
102
+ Interpolated_width_threshold = lerp(new_width_threshold, 0, width);
103
+ }
104
+ function setHeightThreshold(new_height_threshold) {
105
+ Interpolated_height_threshold = lerp(new_height_threshold, 0, height);
106
+ }
107
+ return {
108
+ removeListener() {
109
+ element?.removeEventListener('pointerdown', pointerDownHandler);
110
+ element?.removeEventListener('pointerup', pointerUpHandler);
111
+ console.log('Swipe event listeners removed');
112
+ },
113
+ setWidthThreshold,
114
+ setHeightThreshold,
115
+ };
116
+ }
117
+ function swipe_controller(e) {
118
+ EVENT_CONTROLLER.call(this, e, "swipe", null, null);
119
+ }
120
+ const useSwipeEvent = (target, width_threshold, height_threshold) => new ZikoEventSwipe(target, width_threshold, height_threshold);
121
+ export{
122
+ useSwipeEvent,
123
+ ZikoEventSwipe
124
+ }
125
+ /*
126
+ a=p("ALLL").size("300px","300px").style({background:"red",userSelect:"none"})
127
+ t=text("")
128
+ ev=useSwipeEvent(a, .1, .3)
129
+ ev.onSwipe(e=>{
130
+ // t.setValue(`
131
+ // vertical direction : ${e.event.detail.direction.y}
132
+ // horizontal direction : ${e.event.detail.direction.x}
133
+ // deltaX : ${e.event.detail.deltaX}
134
+ // deltaY : ${e.event.detail.deltaY}
135
+ // `)
136
+ e.target.st.translate(e.event.detail.deltaX * 200, e.event.detail.deltaY * 200,0, 500)
137
+ })
138
+ */
139
+ /*
140
+ a=p("ALLL")
141
+ .size("300px","300px")
142
+ .style({background:"red",userSelect:"none"})
143
+ .onSwipe(
144
+ .3,
145
+ .3,
146
+ e=>{
147
+ e.target.st.translate(e.event.detail.deltaX * 200, e.event.detail.deltaY * 200,0, 500)
148
+ })
149
+ */
@@ -1,47 +1,47 @@
1
- import { ZikoEvent , EVENT_CONTROLLER } from "./ZikoEvent.js";
2
- function wheel_controller(e){
3
- EVENT_CONTROLLER.call(this,e,"wheel",null,null)
4
- }
5
- class ZikoEventWheel extends ZikoEvent{
6
- constructor(target){
7
- super(target);
8
- this.event=null;
9
- this.cache={
10
- prefixe:"",
11
- preventDefault:{
12
- wheel:false,
13
- },
14
- paused:{
15
- wheel:false,
16
- },
17
- stream:{
18
- enabled:{
19
- wheel:false,
20
-
21
- },
22
- clear:{
23
- wheel:false,
24
-
25
- },
26
- history:{
27
- wheel:[],
28
- }
29
- },
30
- callbacks:{
31
- click:[],
32
- }
33
- }
34
- this.__controller={
35
- wheel:wheel_controller.bind(this),
36
- }
37
- }
38
- onWheel(...callbacks){
39
- this.__onEvent("wheel",{},...callbacks)
40
- return this;
41
- }
42
- }
43
- const useWheelEvent=target=>new ZikoEventWheel(target);
44
- export{
45
- useWheelEvent,
46
- ZikoEventWheel
1
+ import { ZikoEvent , EVENT_CONTROLLER } from "./ZikoEvent.js";
2
+ function wheel_controller(e){
3
+ EVENT_CONTROLLER.call(this,e,"wheel",null,null)
4
+ }
5
+ class ZikoEventWheel extends ZikoEvent{
6
+ constructor(target){
7
+ super(target);
8
+ this.event=null;
9
+ this.cache={
10
+ prefixe:"",
11
+ preventDefault:{
12
+ wheel:false,
13
+ },
14
+ paused:{
15
+ wheel:false,
16
+ },
17
+ stream:{
18
+ enabled:{
19
+ wheel:false,
20
+
21
+ },
22
+ clear:{
23
+ wheel:false,
24
+
25
+ },
26
+ history:{
27
+ wheel:[],
28
+ }
29
+ },
30
+ callbacks:{
31
+ click:[],
32
+ }
33
+ }
34
+ this.__controller={
35
+ wheel:wheel_controller.bind(this),
36
+ }
37
+ }
38
+ onWheel(...callbacks){
39
+ this.__onEvent("wheel",{},...callbacks)
40
+ return this;
41
+ }
42
+ }
43
+ const useWheelEvent=target=>new ZikoEventWheel(target);
44
+ export{
45
+ useWheelEvent,
46
+ ZikoEventWheel
47
47
  }
@@ -1,14 +1,14 @@
1
- const useSuccesifKeys=(self,keys=[],callback=()=>{})=>{
2
- self.cache.stream.enabled.down=true;
3
- const length=keys.length;
4
- const LastKeysDown=self.cache.stream.history.down.slice(-length).map(n=>n.key);
5
-
6
- if(keys.join("")===LastKeysDown.join("")){
7
- self.event.preventDefault();
8
- callback.call(self,self);
9
- }
10
-
11
- }
12
- export {
13
- useSuccesifKeys
1
+ const useSuccesifKeys=(self,keys=[],callback=()=>{})=>{
2
+ self.cache.stream.enabled.down=true;
3
+ const length=keys.length;
4
+ const LastKeysDown=self.cache.stream.history.down.slice(-length).map(n=>n.key);
5
+
6
+ if(keys.join("")===LastKeysDown.join("")){
7
+ self.event.preventDefault();
8
+ callback.call(self,self);
9
+ }
10
+
11
+ }
12
+ export {
13
+ useSuccesifKeys
14
14
  }
@@ -1,6 +1,6 @@
1
- export { useType } from "./type";
2
-
3
- export {
4
- useThrottle,
5
- useDebounce
6
- } from "../../../time";
1
+ export { useType } from "./type";
2
+
3
+ export {
4
+ useThrottle,
5
+ useDebounce
6
+ } from "../../../time";
@@ -1,17 +1,17 @@
1
- const useDebounce=(fn,delay=1000)=>{
2
- let id;
3
- return(...args)=>id?clearTimeout(id):setTimeout(()=>fn(...args),delay)
4
- }
5
- const useThrottle=(fn,delay)=>{
6
- let lastTime=0;
7
- return (...args)=>{
8
- const now=new Date().getTime()
9
- if(now-lastTime<delay)return;
10
- lastTime=now;
11
- fn(...args);
12
- }
13
- }
14
- export{
15
- useDebounce,
16
- useThrottle
1
+ const useDebounce=(fn,delay=1000)=>{
2
+ let id;
3
+ return(...args)=>id?clearTimeout(id):setTimeout(()=>fn(...args),delay)
4
+ }
5
+ const useThrottle=(fn,delay)=>{
6
+ let lastTime=0;
7
+ return (...args)=>{
8
+ const now=new Date().getTime()
9
+ if(now-lastTime<delay)return;
10
+ lastTime=now;
11
+ fn(...args);
12
+ }
13
+ }
14
+ export{
15
+ useDebounce,
16
+ useThrottle
17
17
  }
@@ -1,88 +1,88 @@
1
- function useType(func, ...expectedTypes) {
2
- const argNames = func.toString()
3
- .match(/\(([^)]*)\)/)[1]
4
- .split(',')
5
- .map(arg => arg.trim());
6
- return function(...args) {
7
- const lastExpectedType = expectedTypes[expectedTypes.length - 1];
8
- for (let i = 0; i < args.length; i++) {
9
- const isRestParam = i >= expectedTypes.length;
10
- const expectedType = isRestParam ? lastExpectedType : expectedTypes[i];
11
- const arg = args[i];
12
- const argName = isRestParam ? `${argNames[argNames.length - 1]}[${i - expectedTypes.length + 1}]` : argNames[i] || `Argument ${i + 1}`;
13
- let isValid = false;
14
- if(typeof expectedType === "object"){
15
- if (expectedType.or) {
16
- for (const type of expectedType.types) {
17
- if (checkTypeOrInstance(type, arg)) {
18
- isValid = true;
19
- break;
20
- }
21
- }
22
- }
23
- if (expectedType.nor) {
24
- for (const type of expectedType.types) {
25
- if (checkTypeOrInstance(type, arg)) {
26
- isValid = false;
27
- break;
28
- }
29
- isValid = true
30
- }
31
- }
32
- else if (expectedType.not) isValid = !checkTypeOrInstance(expectedType.type, arg);
33
- }
34
- else isValid = checkTypeOrInstance(expectedType, arg);
35
- // Should Fix Nor error Message
36
- if (!isValid) {
37
- // const expectedTypeName = typeof expectedType === 'object'
38
- // ? expectedType.or
39
- // ? expectedType.types.map(type => (typeof type === 'string' ? type : type.name)).join(' or ')
40
- // : expectedType.not
41
- // ? `not ${typeof expectedType.type === 'string' ? expectedType.type : expectedType.type.name}`
42
- // : Array.isArray(expectedType)
43
- // ? `[${expectedType.map(type => (typeof type === 'string' ? type : type.name)).join(', ')}]`
44
- // : `{${Object.entries(expectedType).map(([key, type]) => `${key}: ${typeof type === 'string' ? type : type.name}`).join(', ')}}`
45
- // : typeof expectedType === 'string'
46
- // ? expectedType
47
- // : expectedType.name;
48
- // throw new TypeError(`${argName} should be of type ${expectedTypeName}`);
49
- throw new TypeError("jjj")
50
- }
51
- }
52
- return func(...args);
53
- };
54
- }
55
-
56
- function useOr(...types) {
57
- return { or: true, types };
58
- }
59
- function useNot(type) {
60
- return { not: true, type };
61
- }
62
- function useNor(...types){
63
- return { nor: true, types}
64
- }
65
- const checkTypeOrInstance = (type, arg) => {
66
- if (typeof type === 'string') return typeof arg === type;
67
- else if (type instanceof Function) return arg instanceof type;
68
- else if (Array.isArray(type))
69
- return (!Array.isArray(arg) || arg.length !== type.length)? false: arg.every((item, index) => checkTypeOrInstance(type[index], item));
70
- else if (typeof type === 'object' && !Array.isArray(type))
71
- return (typeof arg !== 'object' || arg === null)? false : Object.keys(type).every(key => key in arg && checkTypeOrInstance(type[key], arg[key]))
72
- return false;
73
- };
74
- // globalThis.useType = useType
75
- // globalThis.useNot = useNot
76
- // globalThis.useOr = useOr
77
-
78
- // function add(a, b = 0){
79
- // return a+b
80
- // }
81
-
82
- // add = useType(add,"number",useNor("string","number"))
83
-
84
- // console.log(add(1))
85
-
86
- export{
87
- useType
1
+ function useType(func, ...expectedTypes) {
2
+ const argNames = func.toString()
3
+ .match(/\(([^)]*)\)/)[1]
4
+ .split(',')
5
+ .map(arg => arg.trim());
6
+ return function(...args) {
7
+ const lastExpectedType = expectedTypes[expectedTypes.length - 1];
8
+ for (let i = 0; i < args.length; i++) {
9
+ const isRestParam = i >= expectedTypes.length;
10
+ const expectedType = isRestParam ? lastExpectedType : expectedTypes[i];
11
+ const arg = args[i];
12
+ const argName = isRestParam ? `${argNames[argNames.length - 1]}[${i - expectedTypes.length + 1}]` : argNames[i] || `Argument ${i + 1}`;
13
+ let isValid = false;
14
+ if(typeof expectedType === "object"){
15
+ if (expectedType.or) {
16
+ for (const type of expectedType.types) {
17
+ if (checkTypeOrInstance(type, arg)) {
18
+ isValid = true;
19
+ break;
20
+ }
21
+ }
22
+ }
23
+ if (expectedType.nor) {
24
+ for (const type of expectedType.types) {
25
+ if (checkTypeOrInstance(type, arg)) {
26
+ isValid = false;
27
+ break;
28
+ }
29
+ isValid = true
30
+ }
31
+ }
32
+ else if (expectedType.not) isValid = !checkTypeOrInstance(expectedType.type, arg);
33
+ }
34
+ else isValid = checkTypeOrInstance(expectedType, arg);
35
+ // Should Fix Nor error Message
36
+ if (!isValid) {
37
+ // const expectedTypeName = typeof expectedType === 'object'
38
+ // ? expectedType.or
39
+ // ? expectedType.types.map(type => (typeof type === 'string' ? type : type.name)).join(' or ')
40
+ // : expectedType.not
41
+ // ? `not ${typeof expectedType.type === 'string' ? expectedType.type : expectedType.type.name}`
42
+ // : Array.isArray(expectedType)
43
+ // ? `[${expectedType.map(type => (typeof type === 'string' ? type : type.name)).join(', ')}]`
44
+ // : `{${Object.entries(expectedType).map(([key, type]) => `${key}: ${typeof type === 'string' ? type : type.name}`).join(', ')}}`
45
+ // : typeof expectedType === 'string'
46
+ // ? expectedType
47
+ // : expectedType.name;
48
+ // throw new TypeError(`${argName} should be of type ${expectedTypeName}`);
49
+ throw new TypeError("jjj")
50
+ }
51
+ }
52
+ return func(...args);
53
+ };
54
+ }
55
+
56
+ function useOr(...types) {
57
+ return { or: true, types };
58
+ }
59
+ function useNot(type) {
60
+ return { not: true, type };
61
+ }
62
+ function useNor(...types){
63
+ return { nor: true, types}
64
+ }
65
+ const checkTypeOrInstance = (type, arg) => {
66
+ if (typeof type === 'string') return typeof arg === type;
67
+ else if (type instanceof Function) return arg instanceof type;
68
+ else if (Array.isArray(type))
69
+ return (!Array.isArray(arg) || arg.length !== type.length)? false: arg.every((item, index) => checkTypeOrInstance(type[index], item));
70
+ else if (typeof type === 'object' && !Array.isArray(type))
71
+ return (typeof arg !== 'object' || arg === null)? false : Object.keys(type).every(key => key in arg && checkTypeOrInstance(type[key], arg[key]))
72
+ return false;
73
+ };
74
+ // globalThis.useType = useType
75
+ // globalThis.useNot = useNot
76
+ // globalThis.useOr = useOr
77
+
78
+ // function add(a, b = 0){
79
+ // return a+b
80
+ // }
81
+
82
+ // add = useType(add,"number",useNor("string","number"))
83
+
84
+ // console.log(add(1))
85
+
86
+ export{
87
+ useType
88
88
  }