ziko 0.0.14 → 0.0.15

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 (289) hide show
  1. package/dist/ziko.cjs +13347 -11831
  2. package/dist/ziko.js +13867 -12409
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +13282 -11828
  5. package/package.json +2 -1
  6. package/src/__helpers__/index.js +61 -41
  7. package/src/app/index.js +20 -12
  8. package/src/app/json-style-sheet.js +64 -0
  9. package/src/app/routes.js +58 -0
  10. package/src/app/spa.js +56 -0
  11. package/src/app/ziko-app.js +39 -0
  12. package/src/data/api/fetchdom.js +13 -13
  13. package/src/data/api/index.js +3 -3
  14. package/src/data/api/preload.js +10 -10
  15. package/src/data/converter/adoc.js +130 -130
  16. package/src/data/converter/array.js +42 -42
  17. package/src/data/converter/canvas.js +24 -24
  18. package/src/data/converter/css.js +37 -0
  19. package/src/data/converter/csv.js +32 -32
  20. package/src/data/converter/idea.txt +9 -9
  21. package/src/data/converter/index.js +37 -34
  22. package/src/data/converter/json.js +80 -80
  23. package/src/data/converter/markdown.js +95 -95
  24. package/src/data/converter/object.js +69 -69
  25. package/src/data/converter/svg.js +10 -10
  26. package/src/data/index.js +16 -73
  27. package/src/data/parser/index.js +1 -0
  28. package/src/data/parser/xml.js +46 -46
  29. package/src/data/string/patterns.js +11 -11
  30. package/src/data/string/string.js +169 -169
  31. package/src/{app/app.js → global/app/index.js} +45 -45
  32. package/src/{app → global}/component/index.js +38 -38
  33. package/src/global/globals/index.js +20 -0
  34. package/src/global/index.js +12 -0
  35. package/src/global/params/index.js +40 -0
  36. package/src/{app → global}/router/index.js +66 -66
  37. package/src/{app → global}/seo/index.js +42 -42
  38. package/src/global/style/index.js +1 -0
  39. package/src/{app → global}/themes/dark.js +884 -884
  40. package/src/{app → global}/themes/index.js +10 -10
  41. package/src/{app → global}/themes/light.js +254 -254
  42. package/src/graphics/canvas/canvas.js +188 -188
  43. package/src/graphics/canvas/elements/Basic/arc.js +42 -42
  44. package/src/graphics/canvas/elements/Basic/line.js +25 -25
  45. package/src/graphics/canvas/elements/Basic/points.js +47 -47
  46. package/src/graphics/canvas/elements/Basic/polygon.js +6 -6
  47. package/src/graphics/canvas/elements/Basic/rect.js +45 -45
  48. package/src/graphics/canvas/elements/Chart/scatter.js +2 -2
  49. package/src/graphics/canvas/elements/Element.js +114 -114
  50. package/src/graphics/canvas/elements/index.js +12 -12
  51. package/src/graphics/canvas/index.js +14 -14
  52. package/src/graphics/canvas/utils/color.js +7 -7
  53. package/src/graphics/canvas/utils/floodFill.js +57 -57
  54. package/src/graphics/index.js +68 -68
  55. package/src/graphics/svg/Elements/Basic/circle.js +25 -25
  56. package/src/graphics/svg/Elements/Basic/ellipse.js +20 -20
  57. package/src/graphics/svg/Elements/Basic/foreignObject.js +32 -32
  58. package/src/graphics/svg/Elements/Basic/groupe.js +29 -29
  59. package/src/graphics/svg/Elements/Basic/image.js +32 -32
  60. package/src/graphics/svg/Elements/Basic/line.js +28 -28
  61. package/src/graphics/svg/Elements/Basic/link.js +30 -30
  62. package/src/graphics/svg/Elements/Basic/path.js +58 -58
  63. package/src/graphics/svg/Elements/Basic/polygon.js +31 -31
  64. package/src/graphics/svg/Elements/Basic/polyline.js +3 -3
  65. package/src/graphics/svg/Elements/Basic/rect.js +42 -42
  66. package/src/graphics/svg/Elements/Basic/text.js +25 -25
  67. package/src/graphics/svg/Elements/Derived/grid.js +8 -8
  68. package/src/graphics/svg/Elements/ZikoSvgElement.js +46 -46
  69. package/src/graphics/svg/Elements/index.js +14 -14
  70. package/src/graphics/svg/index.js +1 -1
  71. package/src/graphics/svg/svg.js +114 -114
  72. package/src/index.js +83 -88
  73. package/src/math/calculus/derivation/index.js +7 -0
  74. package/src/math/calculus/index.js +2 -1
  75. package/src/math/calculus/special-functions/bessel.js +30 -30
  76. package/src/math/calculus/special-functions/beta.js +37 -37
  77. package/src/math/calculus/special-functions/gamma.js +29 -29
  78. package/src/math/calculus/special-functions/index.js +4 -4
  79. package/src/math/complex/index.js +202 -202
  80. package/src/math/const.js +2 -2
  81. package/src/math/discret/Combinaison/index.js +33 -33
  82. package/src/math/discret/Conversion/index.js +85 -85
  83. package/src/math/discret/Logic/index.js +45 -45
  84. package/src/math/discret/Permutation/index.js +30 -30
  85. package/src/math/discret/Set/index.js +1 -1
  86. package/src/math/discret/Set/power-set.js +14 -14
  87. package/src/math/discret/Set/sub-set.js +10 -10
  88. package/src/math/discret/index.js +12 -23
  89. package/src/math/functions/helper.js +20 -0
  90. package/src/math/functions/index.js +161 -181
  91. package/src/math/index.js +32 -189
  92. package/src/math/matrix/Decomposition.js +90 -90
  93. package/src/math/matrix/LinearSystem.js +9 -9
  94. package/src/math/matrix/Matrix.js +716 -716
  95. package/src/math/matrix/index.js +2 -2
  96. package/src/math/random/index.js +172 -172
  97. package/src/math/signal/__np.py.txt +39 -39
  98. package/src/math/signal/conv.js +174 -174
  99. package/src/math/signal/fft.js +54 -54
  100. package/src/math/signal/filter.js +38 -38
  101. package/src/math/signal/functions.js +145 -145
  102. package/src/math/signal/index.js +109 -109
  103. package/src/math/statistics/Functions/index.js +99 -99
  104. package/src/math/statistics/index.js +15 -15
  105. package/src/math/utils/arithmetic.js +138 -138
  106. package/src/math/utils/checkers.js +29 -29
  107. package/src/math/utils/conversions.js +19 -19
  108. package/src/math/utils/discret.js +51 -51
  109. package/src/math/utils/index.js +101 -101
  110. package/src/math/utils/mapfun.js +49 -49
  111. package/src/reactivity/events/{Partiel/Input.js → Input.js} +62 -59
  112. package/src/reactivity/events/{Global/Pointer.js → Pointer.js} +232 -234
  113. package/src/reactivity/events/ZikoEvent.js +90 -90
  114. package/src/reactivity/events/{Global/Click.js → click.js} +60 -56
  115. package/src/reactivity/events/{Global/Clipboard.js → clipboard.js} +88 -84
  116. package/src/reactivity/events/{Global/CustomEvent.js → custom-event.js} +57 -53
  117. package/src/reactivity/events/{Global/Drag.js → drag.js} +136 -136
  118. package/src/reactivity/events/{Global/Focus.js → focus.js} +59 -56
  119. package/src/reactivity/events/{Partiel/Hash.js → hash.js} +47 -44
  120. package/src/reactivity/events/index.js +62 -62
  121. package/src/reactivity/events/{Global/Key.js → key.js} +102 -104
  122. package/src/reactivity/events/{Global/Mouse.js → mouse.js} +233 -230
  123. package/src/reactivity/events/{Global/Swipe.js → swipe.js} +149 -147
  124. package/src/reactivity/events/{Global/Wheel.js → wheel.js} +47 -44
  125. package/src/reactivity/hooks/{Contexte → contexte}/useSuccesifKeys.js +13 -13
  126. package/src/reactivity/hooks/{Decorators → decorators}/index.js +6 -6
  127. package/src/reactivity/hooks/{Decorators → decorators}/time.js +16 -16
  128. package/src/reactivity/hooks/{Decorators → decorators}/type.js +87 -87
  129. package/src/reactivity/hooks/head/index.js +5 -0
  130. package/src/reactivity/hooks/{UI → head}/useCssText.js +21 -21
  131. package/src/reactivity/hooks/{UI → head}/useFavIcon.js +37 -37
  132. package/src/reactivity/hooks/head/useHead.js +28 -0
  133. package/src/reactivity/hooks/head/useMeta.js +52 -0
  134. package/src/reactivity/hooks/{UI → head}/useTitle.js +29 -29
  135. package/src/reactivity/hooks/index.js +91 -85
  136. package/src/reactivity/hooks/{Interactions → interactions}/index.js +3 -3
  137. package/src/reactivity/hooks/{Interactions → interactions}/useBluetooth.js +47 -47
  138. package/src/reactivity/hooks/{Interactions → interactions}/useChannel.js +49 -49
  139. package/src/reactivity/hooks/{Interactions → interactions}/useEventEmmiter.js +63 -63
  140. package/src/reactivity/hooks/{Interactions → interactions}/useThread.js +43 -43
  141. package/src/reactivity/hooks/sensors/index.js +2 -0
  142. package/src/reactivity/hooks/{Sensors → sensors}/useBattery.js +35 -35
  143. package/src/reactivity/hooks/{Sensors → sensors}/useGeolocation.js +16 -16
  144. package/src/reactivity/hooks/{Storage → storage}/useStorage.js +72 -72
  145. package/src/reactivity/hooks/todo.md +26 -26
  146. package/src/reactivity/hooks/ui/index.js +5 -0
  147. package/src/reactivity/hooks/{UI → ui}/useMediaQuery.js +43 -43
  148. package/src/reactivity/hooks/{UI → ui}/useStyle.js +79 -79
  149. package/src/reactivity/hooks/{UI → ui}/useTheme.js +61 -61
  150. package/src/reactivity/idea +1 -1
  151. package/src/reactivity/index.js +11 -21
  152. package/src/reactivity/observer/attributes.js +28 -28
  153. package/src/reactivity/observer/children.js +36 -36
  154. package/src/reactivity/observer/index.js +6 -44
  155. package/src/reactivity/observer/intersection.js +43 -43
  156. package/src/reactivity/observer/mutation.js +112 -112
  157. package/src/reactivity/observer/resize.js +46 -46
  158. package/src/reactivity/observer/screen.js +44 -44
  159. package/src/reactivity/observer/screen.js.txt +83 -83
  160. package/src/reactivity/observer/screen.txt +12 -12
  161. package/src/time/animation.js +75 -75
  162. package/src/time/index.js +12 -54
  163. package/src/time/loop.js +87 -87
  164. package/src/time/utils/decorators.js +16 -16
  165. package/src/time/utils/ease.js +143 -143
  166. package/src/time/utils/index.js +17 -17
  167. package/src/time/utils/performance.js +15 -15
  168. package/src/time/utils/ui.js +25 -25
  169. package/src/types.js +73 -71
  170. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/accordion.js +42 -45
  171. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/collapsible.js +82 -82
  172. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/index.js +1 -1
  173. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/alert.js +80 -80
  174. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/palette.js +51 -51
  175. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/carousel/index.js +50 -50
  176. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/SubElements.js.txt +104 -104
  177. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/code-cell.js +194 -194
  178. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/code-note.js +71 -71
  179. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/index.js +1 -1
  180. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/sub-elements.js +66 -66
  181. package/src/{user-interface → ui}/elements/derived/elements/Swipper.js +3 -3
  182. package/src/{user-interface → ui}/elements/derived/elements/index.js +9 -9
  183. package/src/{user-interface/elements/derived/Flex.js → ui/elements/derived/flex/index.js} +102 -102
  184. package/src/{user-interface/elements/derived/Grid.js → ui/elements/derived/grid/index.js} +32 -32
  185. package/src/ui/elements/derived/index.js +12 -0
  186. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/menu/menu3d.js +259 -259
  187. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/modal/index.js +91 -91
  188. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/pagination/breadcrumbs.js +53 -53
  189. package/src/ui/elements/derived/slider/__ZikoUISlider__.js +112 -0
  190. package/src/ui/elements/derived/slider/hSlider.js +34 -0
  191. package/src/ui/elements/derived/slider/index.js +12 -0
  192. package/src/ui/elements/derived/slider/vSlider.js +27 -0
  193. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/__ZikoUISplitter__.js +61 -61
  194. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/hsplitter.js +39 -39
  195. package/src/ui/elements/derived/splitter/index.js +12 -0
  196. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/vsplitter.js +39 -39
  197. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/tabs/index.js +179 -179
  198. package/src/{user-interface → ui}/elements/primitives/ZikoUIContainerElement.js +126 -126
  199. package/src/{user-interface → ui}/elements/primitives/ZikoUIElement.js +492 -480
  200. package/src/{user-interface → ui}/elements/primitives/embaded/html.js +19 -20
  201. package/src/{user-interface → ui}/elements/primitives/embaded/index.js +3 -3
  202. package/src/{user-interface → ui}/elements/primitives/embaded/pdf.js +16 -17
  203. package/src/{user-interface → ui}/elements/primitives/embaded/youtube.js +23 -25
  204. package/src/{user-interface → ui}/elements/primitives/index.js +7 -7
  205. package/src/{user-interface → ui}/elements/primitives/io/Form/index.js +41 -41
  206. package/src/{user-interface → ui}/elements/primitives/io/Form/index.js.txt +104 -104
  207. package/src/{user-interface → ui}/elements/primitives/io/Inputs/__helpers__.js +51 -51
  208. package/src/{user-interface → ui}/elements/primitives/io/Inputs/index.js +12 -12
  209. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input/index.js +98 -98
  210. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-camera/index.js +26 -26
  211. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-checkbox/index.js +25 -25
  212. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-color/index.js +15 -15
  213. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/index.js +2 -2
  214. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-date-time.js +13 -13
  215. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-date.js +13 -13
  216. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-time.js +13 -13
  217. package/src/ui/elements/primitives/io/Inputs/input-email-password/index.js +2 -0
  218. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-email-password/input-email.js +14 -14
  219. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-email-password/input-password.js +13 -13
  220. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/input-image.js +42 -42
  221. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-number/index.js +36 -36
  222. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-radio/index.js +25 -25
  223. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-search/index.js +45 -45
  224. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-slider/index.js +34 -34
  225. package/src/{user-interface → ui}/elements/primitives/io/Select/index.js +19 -19
  226. package/src/{user-interface → ui}/elements/primitives/io/Textarea/index.js +17 -17
  227. package/src/{user-interface → ui}/elements/primitives/io/index.js +3 -3
  228. package/src/{user-interface → ui}/elements/primitives/list/index.js +138 -138
  229. package/src/{user-interface → ui}/elements/primitives/media/Audio/index.js +16 -16
  230. package/src/{user-interface → ui}/elements/primitives/media/Image/figure.js +18 -18
  231. package/src/{user-interface → ui}/elements/primitives/media/Image/image.js +36 -36
  232. package/src/ui/elements/primitives/media/Image/index.js +2 -0
  233. package/src/{user-interface → ui}/elements/primitives/media/Video/index.js +26 -26
  234. package/src/{user-interface → ui}/elements/primitives/media/__ZikoUIDynamicMediaELement__.js +46 -46
  235. package/src/{user-interface → ui}/elements/primitives/media/index.js +2 -2
  236. package/src/{user-interface → ui}/elements/primitives/misc/index.js +100 -100
  237. package/src/{user-interface → ui}/elements/primitives/semantic/index.js +81 -81
  238. package/src/{user-interface → ui}/elements/primitives/table/elements.js +93 -93
  239. package/src/ui/elements/primitives/table/index.js +3 -0
  240. package/src/{user-interface → ui}/elements/primitives/table/table.js +115 -115
  241. package/src/{user-interface → ui}/elements/primitives/table/utils.js +11 -11
  242. package/src/{user-interface → ui}/elements/primitives/text/__ZikoUIText__.js +71 -71
  243. package/src/{user-interface → ui}/elements/primitives/text/heading.js +35 -35
  244. package/src/{user-interface → ui}/elements/primitives/text/index.js +2 -2
  245. package/src/{user-interface → ui}/elements/primitives/text/p.js +26 -26
  246. package/src/{user-interface → ui}/elements/primitives/text/text.js +80 -80
  247. package/src/ui/index.js +29 -0
  248. package/src/{user-interface → ui}/style/index.js +515 -509
  249. package/src/{user-interface → ui}/utils/index.js +69 -69
  250. package/src/reactivity/events/Global/Touch.js +0 -0
  251. package/src/reactivity/hooks/Sensors/index.js +0 -2
  252. package/src/reactivity/hooks/UI/index.js +0 -5
  253. package/src/user-interface/elements/derived/elements/splitter/index.js +0 -2
  254. package/src/user-interface/elements/derived/index.js +0 -3
  255. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/index.js +0 -2
  256. package/src/user-interface/elements/primitives/media/Image/index.js +0 -2
  257. package/src/user-interface/elements/primitives/table/index.js +0 -3
  258. package/src/user-interface/index.js +0 -190
  259. /package/src/app/{globals/index.js → globals.js} +0 -0
  260. /package/src/app/{params/index.js → params.js} +0 -0
  261. /package/src/reactivity/events/{Partiel/Media.js → media.js} +0 -0
  262. /package/src/{app/accessibility/index.js → reactivity/events/touch.js} +0 -0
  263. /package/src/reactivity/hooks/{Contexte → contexte}/index.js +0 -0
  264. /package/src/reactivity/hooks/{Interactions → interactions}/useSerial.js +0 -0
  265. /package/src/reactivity/hooks/{Interactions → interactions}/useUsb.js +0 -0
  266. /package/src/reactivity/hooks/{Sensors → sensors}/useCamera.js +0 -0
  267. /package/src/reactivity/hooks/{Sensors → sensors}/useMicro.js +0 -0
  268. /package/src/reactivity/hooks/{Sensors → sensors}/useOrientation.js +0 -0
  269. /package/src/reactivity/hooks/{Storage → storage}/index.js +0 -0
  270. /package/src/reactivity/hooks/{Storage → storage}/useCookie.js +0 -0
  271. /package/src/reactivity/hooks/{Storage → storage}/useIndexedDb.js +0 -0
  272. /package/src/reactivity/hooks/{UI → ui}/useCssLink.js +0 -0
  273. /package/src/reactivity/hooks/{UI → ui}/useLinearGradient.js +0 -0
  274. /package/src/reactivity/hooks/{UI → ui}/useRadialGradient.js +0 -0
  275. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/index.js +0 -0
  276. /package/src/{user-interface → ui}/elements/derived/elements/Notification.js +0 -0
  277. /package/src/{user-interface → ui}/elements/derived/elements/Popover.js +0 -0
  278. /package/src/{user-interface → ui}/elements/derived/elements/Popup.js +0 -0
  279. /package/src/{user-interface → ui}/elements/derived/elements/Timeline.js +0 -0
  280. /package/src/{user-interface → ui}/elements/derived/elements/Toast.js +0 -0
  281. /package/src/{user-interface → ui}/elements/derived/elements/Treeview.js +0 -0
  282. /package/src/{user-interface → ui}/elements/derived/elements/columns.js +0 -0
  283. /package/src/{user-interface → ui}/elements/derived/elements/fab.js +0 -0
  284. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/menu/index.js +0 -0
  285. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/pagination/index.js +0 -0
  286. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/index.js +0 -0
  287. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/input-file.js +0 -0
  288. /package/src/{user-interface → ui}/elements/primitives/list/elements.js +0 -0
  289. /package/src/{user-interface → ui}/elements/primitives/text/pre.js +0 -0
@@ -1,480 +1,492 @@
1
- import { ZikoUseStyle } from "../../../reactivity/hooks/UI/useStyle.js";
2
- import { ZikoStyle } from "../../style/index.js";
3
- import {
4
- usePointerEvent,
5
- useMouseEvent,
6
- useWheelEvent,
7
- useKeyEvent,
8
- useDragEvent ,
9
- useDropEvent,
10
- useClickEvent ,
11
- useClipboardEvent ,
12
- useFocusEvent,
13
- useCustomEvent,
14
- useSwipeEvent,
15
- watchIntersection,
16
- watchSize,
17
- watchAttr,
18
- watchChildren
19
- } from "../../../reactivity/index.js"
20
- import { Random } from "../../../math/index.js";
21
- import { Str } from "../../../data/index.js";
22
- class ZikoUIElement {
23
- constructor(element ,name="") {
24
- this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
25
- if(typeof element === "string") {
26
- element === "svg" ? element=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg", "svg"): element = globalThis?.document?.createElement(element);
27
- }
28
- this.element = element;
29
- this.uuid=this.constructor.name+"-"+Random.string(10);
30
- this.cache = {
31
- name,
32
- parent:null,
33
- isRoot:false,
34
- isHidden: false,
35
- isFrozzen:false,
36
- legacyParent : null,
37
- style: ZikoStyle({}),
38
- attributes: {},
39
- filters: {},
40
- temp:{}
41
- };
42
- this.events = {
43
- ptr:null,
44
- mouse:null,
45
- wheel:null,
46
- key:null,
47
- drag:null,
48
- drop:null,
49
- click:null,
50
- clipboard:null,
51
- focus:null,
52
- swipe:null,
53
- custom:null,
54
- }
55
- this.observer={
56
- resize:null,
57
- intersection:null
58
- }
59
- this.cache.style.linkTo(this);
60
- this.style({
61
- position: "relative",
62
- boxSizing:"border-box",
63
- // fontFamily:"verdana",
64
- margin:0,
65
- padding:0,
66
- });
67
- this.size("auto", "auto");
68
- globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
69
- // this.render(globalThis.__Ziko__.__Config__.default.render);
70
- globalThis.__Ziko__.__Config__.default.render && this.render()
71
- }
72
- get st(){
73
- return this.cache.style;
74
- }
75
- get attr(){
76
- return this.cache.attributes;
77
- }
78
- get evt(){
79
- return this.cache.events;
80
- }
81
- get html(){
82
- return this.element.innerHTML;
83
- }
84
- get text(){
85
- return this.element.textContent;
86
- }
87
- get __app__(){
88
- if(this.cache.isRoot)return this;
89
- let root=this.cache.parent;
90
- while(1){
91
- if(!root)return null;
92
- if(root.cache.isRoot)return root;
93
- root=root.parent;
94
- }
95
- }
96
- get parent(){
97
- return this.cache.parent;
98
- }
99
- get width(){
100
- return this.element.getBoundingClientRect().width;
101
- }
102
- get height(){
103
- return this.element.getBoundingClientRect().height;
104
- }
105
- get top(){
106
- return this.element.getBoundingClientRect().top;
107
- }
108
- get right(){
109
- return this.element.getBoundingClientRect().right;
110
- }
111
- get bottom(){
112
- return this.element.getBoundingClientRect().bottom;
113
- }
114
- get left(){
115
- return this.element.getBoundingClientRect().left;
116
- }
117
- clone(render=false) {
118
- const UI = new this.constructor();
119
- UI.__proto__=this.__proto__;
120
- if(this.items.length){
121
- const items = [...this.items].map(n=>n.clone());
122
- UI.append(...items);
123
- }
124
- else UI.element=this.element.cloneNode(true);
125
- return UI.render(render);
126
- }
127
- style(styles){
128
- styles instanceof ZikoUseStyle ? this.st.style(styles.current): this.st.style(styles);
129
- return this;
130
- }
131
- size(width,height){
132
- this.st.size(width,height);
133
- return this;
134
- }
135
- get #SwitchedStyleRTL_LTR(){
136
- const CalculedStyle = globalThis.getComputedStyle(this.element);
137
- const SwitchedStyle = {}
138
- if(CalculedStyle.marginRight!=="0px")Object.assign(SwitchedStyle, {marginLeft: CalculedStyle.marginRight});
139
- if(CalculedStyle.marginLeft!=="0px")Object.assign(SwitchedStyle, {marginRight: CalculedStyle.marginLeft});
140
- if(CalculedStyle.paddingRight!=="0px")Object.assign(SwitchedStyle, {paddingLeft: CalculedStyle.paddingRight});
141
- if(CalculedStyle.paddingLeft!=="0px")Object.assign(SwitchedStyle, {paddingRight: CalculedStyle.paddingLeft});
142
- if(CalculedStyle.left!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.left});
143
- if(CalculedStyle.right!=="0px")Object.assign(SwitchedStyle, {left: CalculedStyle.right});
144
- if(CalculedStyle.textAlign === "right")Object.assign(SwitchedStyle, {textAlign: "left"});
145
- if(CalculedStyle.textAlign === "left")Object.assign(SwitchedStyle, {textAlign: "right"});
146
- if(CalculedStyle.float === "right")Object.assign(SwitchedStyle, {float: "left"});
147
- if(CalculedStyle.float === "left")Object.assign(SwitchedStyle, {float: "right"});
148
- if(CalculedStyle.borderRadiusLeft!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusRight});
149
- if(CalculedStyle.borderRadiusRight!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusLeft});
150
- if(["flex","inline-flex"].includes(CalculedStyle.display)){
151
- if(CalculedStyle.justifyContent === "flex-end")Object.assign(SwitchedStyle, {justifyContent: "flex-start"});
152
- if(CalculedStyle.justifyContent === "flex-start")Object.assign(SwitchedStyle, {justifyContent: "flex-end"});
153
- }
154
- return SwitchedStyle;
155
- }
156
- useRtl(switchAll = false){
157
- switchAll ? this.style({
158
- ...this.#SwitchedStyleRTL_LTR,
159
- direction : "rtl"
160
- }) : this.style({direction : "rtl"});
161
- return this;
162
- }
163
- useLtr(switchAll = false){
164
- switchAll ? this.style({
165
- ...this.#SwitchedStyleRTL_LTR,
166
- direction : "ltr"
167
- }) : this.style({direction : "ltr"});
168
- return this;
169
- }
170
- freeze(freeze){
171
- this.cache.isFrozzen=freeze;
172
- return this;
173
- }
174
- setTarget(tg) {
175
- if (tg instanceof ZikoUIElement) tg = tg.element;
176
- this.unrender();
177
- this.target = tg;
178
- this.render();
179
- return this;
180
- }
181
- render(/*render = true , */target = this.target) {
182
- if(target instanceof ZikoUIElement)target=target.element;
183
- this.target=target;
184
- this.target?.appendChild(this.element);
185
- // if(render) {
186
- // this.target.appendChild(this.element);
187
- // }
188
- // else this.remove();
189
- return this;
190
- }
191
- unrender(){
192
- if(this.cache.parent)this.cache.parent.remove(this);
193
- else if(this.target?.children?.length && [...this.target?.children].includes(this.element)) this.target.removeChild(this.element);
194
- return this;
195
- }
196
- renderAfter(t = 1) {
197
- setTimeout(() => this.render(), t);
198
- return this;
199
- }
200
- unrenderAfter(t = 1) {
201
- setTimeout(() => this.unrender(), t);
202
- return this;
203
- }
204
- after(ui){
205
- if(ui instanceof ZikoUIElement) ui=ui.element;
206
- this.element?.after(ui)
207
- return this;
208
- }
209
- before(ui){
210
- if(ui instanceof ZikoUIElement) ui=ui.element;
211
- this.element?.before(ui)
212
- return this;
213
- }
214
- animate(keyframe, {duration=1000, iterations=1, easing="ease"}={}){
215
- this.element?.animate(keyframe,{duration, iterations, easing});
216
- return this;
217
- }
218
- // Attributes
219
- #setAttr(name, value){
220
- name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
221
- if(this?.attr[name] && this?.attr[name]===value) return;
222
- this.element.setAttribute(name, value)
223
- Object.assign(this.cache.attributes, {[name]:value});
224
- }
225
- setAttr(name, value) {
226
- if(name instanceof Object){
227
- const [names,values]=[Object.keys(name),Object.values(name)];
228
- for(let i=0;i<names.length;i++){
229
- if(values[i] instanceof Array)value[i] = values[i].join(" ");
230
- this.#setAttr(names[i], values[i])
231
- }
232
- }
233
- else{
234
- if(value instanceof Array)value = value.join(" ");
235
- this.#setAttr(name, value)
236
- }
237
- return this;
238
- }
239
- removeAttr(...names) {
240
- for(let i=0;i<names.length;i++)this.element?.removeAttribute(names[i]);
241
- return this;
242
- }
243
- getAttr(name){
244
- name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
245
- return this.element.attributes[name].value;
246
- }
247
- setContentEditable(bool = true) {
248
- this.setAttr("contenteditable", bool);
249
- return this;
250
- }
251
- get children() {
252
- return [...this.element.children];
253
- }
254
- get cloneElement() {
255
- return this.element.cloneNode(true);
256
- }
257
- setClasses(...value) {
258
- this.setAttr("class", value.join(" "));
259
- return this;
260
- }
261
- get classes(){
262
- const classes=this.element.getAttribute("class");
263
- return classes===null?[]:classes.split(" ");
264
- }
265
- addClass() {
266
- /*this.setAttr("class", value);
267
- return this;*/
268
- }
269
- setId(id) {
270
- this.setAttr("id", id);
271
- return this;
272
- }
273
- get id() {
274
- return this.element.getAttribute("id");
275
- }
276
- onPtrMove(...callbacks){
277
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
278
- this.events.ptr.onMove(...callbacks);
279
- return this;
280
- }
281
- onPtrDown(...callbacks){
282
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
283
- this.events.ptr.onDown(...callbacks);
284
- return this;
285
- }
286
- onPtrUp(...callbacks){
287
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
288
- this.events.ptr.onUp(...callbacks);
289
- return this;
290
- }
291
- onPtrEnter(...callbacks){
292
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
293
- this.events.ptr.onEnter(...callbacks);
294
- return this;
295
- }
296
- onPtrLeave(...callbacks){
297
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
298
- this.events.ptr.onLeave(...callbacks);
299
- return this;
300
- }
301
- onPtrOut(...callbacks){
302
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
303
- this.events.ptr.onOut(...callbacks);
304
- return this;
305
- }
306
- onPtrCancel(...callbacks){
307
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
308
- this.events.ptr.onCancel(...callbacks);
309
- return this;
310
- }
311
- onSwipe(width_threshold, height_threshold,...callbacks){
312
- if(!this.events.swipe)this.events.swipe = useSwipeEvent(this, width_threshold, height_threshold);
313
- this.events.swipe.onSwipe(...callbacks);
314
- return this;
315
- }
316
- onMouseMove(...callbacks){
317
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
318
- this.events.mouse.onMove(...callbacks);
319
- return this;
320
- }
321
- onMouseDown(...callbacks){
322
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
323
- this.events.mouse.onDown(...callbacks);
324
- return this;
325
- }
326
- onMouseUp(...callbacks){
327
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
328
- this.events.mouse.onUp(...callbacks);
329
- return this;
330
- }
331
- onMouseEnter(...callbacks){
332
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
333
- this.events.mouse.onEnter(...callbacks);
334
- return this;
335
- }
336
- onMouseLeave(...callbacks){
337
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
338
- this.events.mouse.onLeave(...callbacks);
339
- return this;
340
- }
341
- onMouseOut(...callbacks){
342
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
343
- this.events.mouse.onOut(...callbacks);
344
- return this;
345
- }
346
- onWheel(...callbacks){
347
- if(!this.events.wheel)this.events.wheel = useWheelEvent(this);
348
- this.events.wheel.onWheel(...callbacks);
349
- return this;
350
- }
351
- onKeyDown(...callbacks){
352
- if(!this.events.key)this.events.key = useKeyEvent(this);
353
- this.events.key.onDown(...callbacks);
354
- return this;
355
- }
356
- onKeyPress(...callbacks){
357
- if(!this.events.key)this.events.key = useKeyEvent(this);
358
- this.events.key.onPress(...callbacks);
359
- return this;
360
- }
361
- onKeyUp(...callbacks){
362
- if(!this.events.key)this.events.key = useKeyEvent(this);
363
- this.events.key.onUp(...callbacks);
364
- return this;
365
- }
366
- onKeysDown({keys=[],callback}={}){
367
- if(!this.events.key)this.events.key = useKeyEvent(this);
368
- this.events.key.handleSuccessifKeys({keys,callback});
369
- return this;
370
- }
371
- onDragStart(...callbacks){
372
- if(!this.events.drag)this.events.drag = useDragEvent(this);
373
- this.events.drag.onStart(...callbacks);
374
- return this;
375
- }
376
- onDrag(...callbacks){
377
- if(!this.events.drag)this.events.drag = useDragEvent(this);
378
- this.events.drag.onDrag(...callbacks);
379
- return this;
380
- }
381
- onDragEnd(...callbacks){
382
- if(!this.events.drag)this.events.drag = useDragEvent(this);
383
- this.events.drag.onEnd(...callbacks);
384
- return this;
385
- }
386
- onDrop(...callbacks){
387
- if(!this.events.drop)this.events.drop = useDropEvent(this);
388
- this.events.drop.onDrop(...callbacks);
389
- return this;
390
- }
391
- onClick(...callbacks){
392
- if(!this.events.click)this.events.click = useClickEvent(this);
393
- this.events.click.onClick(...callbacks);
394
- return this;
395
- }
396
- onDbClick(...callbacks){
397
- if(!this.events.click)this.events.click = useClickEvent(this);
398
- this.events.click.onDbClick(...callbacks);
399
- return this;
400
- }
401
- onCopy(...callbacks){
402
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
403
- this.events.clipboard.onCopy(...callbacks);
404
- return this;
405
- }
406
- onCut(...callbacks){
407
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
408
- this.events.clipboard.onCut(...callbacks);
409
- return this;
410
- }
411
- onPaste(...callbacks){
412
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
413
- this.events.clipboard.onPaste(...callbacks);
414
- return this;
415
- }
416
- onSelect(...callbacks){
417
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
418
- this.events.clipboard.onSelect(...callbacks);
419
- return this;
420
- }
421
- onFocus(...callbacks){
422
- if(!this.events.focus)this.events.focus = useFocusEvent(this);
423
- this.events.focus.onFocus(...callbacks);
424
- return this;
425
- }
426
- onBlur(...callbacks){
427
- if(!this.events.focus)this.events.focus = useFocusEvent(this);
428
- this.events.focus.onFocus(...callbacks);
429
- return this;
430
- }
431
- on(event_name,...callbacks){
432
- if(!this.events.custom)this.events.custom = useCustomEvent(this);
433
- this.events.custom.on(event_name,...callbacks);
434
- return this;
435
- }
436
- emit(event_name,detail={}){
437
- if(!this.events.custom)this.events.custom = useCustomEvent(this);
438
- this.events.custom.emit(event_name,detail);
439
- return this;
440
- }
441
- watchAttr(callback){
442
- if(!this.observer.attr)this.observer.attr = watchAttr(this,callback);
443
- return this;
444
- }
445
- watchChildren(callback){
446
- if(!this.observer.children)this.observer.children = watchChildren(this,callback);
447
- return this;
448
- }
449
- watchSize(callback){
450
- if(!this.observer.resize)this.observer.resize = watchSize(this,callback);
451
- this.observer.resize.start();
452
- return this;
453
- }
454
- watchIntersection(callback,config){
455
- if(!this.observer.intersection)this.observer.intersection = watchIntersection(this,callback,config);
456
- this.observer.intersection.start();
457
- return this;
458
- }
459
- setFullScreen(set = true, e) {
460
- if(!this.element.requestFullscreen){
461
- console.error("Fullscreen API is not supported in this browser.");
462
- return this;
463
- }
464
- if (set) this.element.requestFullscreen(e);
465
- else globalThis.document.exitFullscreen();
466
- return this;
467
- }
468
- toggleFullScreen(e) {
469
- if (!globalThis.document.fullscreenElement) this.element.requestFullscreen(e);
470
- else globalThis.document.exitFullscreen();
471
- return this;
472
- }
473
- toPdf(){
474
- if(__ZikoPdf__){
475
-
476
- }
477
- return this;
478
- }
479
- }
480
- export default ZikoUIElement;
1
+ import { ZikoUseStyle } from "../../../reactivity/hooks/UI/useStyle.js";
2
+ import { ZikoUIElementStyle } from "../../style/index.js";
3
+ import {
4
+ usePointerEvent,
5
+ useMouseEvent,
6
+ useWheelEvent,
7
+ useKeyEvent,
8
+ useDragEvent ,
9
+ useDropEvent,
10
+ useClickEvent ,
11
+ useClipboardEvent ,
12
+ useFocusEvent,
13
+ useCustomEvent,
14
+ useSwipeEvent,
15
+ watchIntersection,
16
+ watchSize,
17
+ watchAttr,
18
+ watchChildren
19
+ } from "../../../reactivity/index.js"
20
+ import { Random } from "../../../math/index.js";
21
+ import { Str } from "../../../data/index.js";
22
+ class ZikoUIElement {
23
+ constructor(element ,name="") {
24
+ this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
25
+ if(typeof element === "string") {
26
+ element === "svg" ? element=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg", "svg"): element = globalThis?.document?.createElement(element);
27
+ }
28
+ this.element = element;
29
+ this.uuid=this.constructor.name+"-"+Random.string(10);
30
+ this.cache = {
31
+ name,
32
+ parent:null,
33
+ isBody:false,
34
+ isRoot:false,
35
+ isHidden: false,
36
+ isFrozzen:false,
37
+ legacyParent : null,
38
+ style: new ZikoUIElementStyle({}),
39
+ attributes: {},
40
+ filters: {},
41
+ temp:{}
42
+ };
43
+ this.events = {
44
+ ptr:null,
45
+ mouse:null,
46
+ wheel:null,
47
+ key:null,
48
+ drag:null,
49
+ drop:null,
50
+ click:null,
51
+ clipboard:null,
52
+ focus:null,
53
+ swipe:null,
54
+ custom:null,
55
+ }
56
+ this.observer={
57
+ resize:null,
58
+ intersection:null
59
+ }
60
+ this.cache.style.linkTo(this);
61
+ this.style({
62
+ position: "relative",
63
+ boxSizing:"border-box",
64
+ // fontFamily:"verdana",
65
+ margin:0,
66
+ padding:0,
67
+ });
68
+ this.size("auto", "auto");
69
+ globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
70
+ globalThis.__Ziko__.__Config__.default.render && this.render()
71
+ }
72
+ get isZikoUIElement(){
73
+ return true
74
+ }
75
+ get st(){
76
+ return this.cache.style;
77
+ }
78
+ get attr(){
79
+ return this.cache.attributes;
80
+ }
81
+ get evt(){
82
+ return this.cache.events;
83
+ }
84
+ get html(){
85
+ return this.element.innerHTML;
86
+ }
87
+ get text(){
88
+ return this.element.textContent;
89
+ }
90
+ get isBody(){
91
+ return this.element === globalThis?.document.body;
92
+ }
93
+ get __app__(){
94
+ if(this.cache.isRoot)return this;
95
+ let root=this.cache.parent;
96
+ while(1){
97
+ if(!root)return null;
98
+ if(root.cache.isRoot)return root;
99
+ root=root.parent;
100
+ }
101
+ }
102
+ get parent(){
103
+ return this.cache.parent;
104
+ }
105
+ get width(){
106
+ return this.element.getBoundingClientRect().width;
107
+ }
108
+ get height(){
109
+ return this.element.getBoundingClientRect().height;
110
+ }
111
+ get top(){
112
+ return this.element.getBoundingClientRect().top;
113
+ }
114
+ get right(){
115
+ return this.element.getBoundingClientRect().right;
116
+ }
117
+ get bottom(){
118
+ return this.element.getBoundingClientRect().bottom;
119
+ }
120
+ get left(){
121
+ return this.element.getBoundingClientRect().left;
122
+ }
123
+ clone(render=false) {
124
+ const UI = new this.constructor();
125
+ UI.__proto__=this.__proto__;
126
+ if(this.items.length){
127
+ const items = [...this.items].map(n=>n.clone());
128
+ UI.append(...items);
129
+ }
130
+ else UI.element=this.element.cloneNode(true);
131
+ return UI.render(render);
132
+ }
133
+ style(styles){
134
+ styles instanceof ZikoUseStyle ? this.st.style(styles.current): this.st.style(styles);
135
+ return this;
136
+ }
137
+ size(width,height){
138
+ this.st.size(width,height);
139
+ return this;
140
+ }
141
+ get #SwitchedStyleRTL_LTR(){
142
+ const CalculedStyle = globalThis.getComputedStyle(this.element);
143
+ const SwitchedStyle = {}
144
+ if(CalculedStyle.marginRight!=="0px")Object.assign(SwitchedStyle, {marginLeft: CalculedStyle.marginRight});
145
+ if(CalculedStyle.marginLeft!=="0px")Object.assign(SwitchedStyle, {marginRight: CalculedStyle.marginLeft});
146
+ if(CalculedStyle.paddingRight!=="0px")Object.assign(SwitchedStyle, {paddingLeft: CalculedStyle.paddingRight});
147
+ if(CalculedStyle.paddingLeft!=="0px")Object.assign(SwitchedStyle, {paddingRight: CalculedStyle.paddingLeft});
148
+ if(CalculedStyle.left!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.left});
149
+ if(CalculedStyle.right!=="0px")Object.assign(SwitchedStyle, {left: CalculedStyle.right});
150
+ if(CalculedStyle.textAlign === "right")Object.assign(SwitchedStyle, {textAlign: "left"});
151
+ if(CalculedStyle.textAlign === "left")Object.assign(SwitchedStyle, {textAlign: "right"});
152
+ if(CalculedStyle.float === "right")Object.assign(SwitchedStyle, {float: "left"});
153
+ if(CalculedStyle.float === "left")Object.assign(SwitchedStyle, {float: "right"});
154
+ if(CalculedStyle.borderRadiusLeft!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusRight});
155
+ if(CalculedStyle.borderRadiusRight!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusLeft});
156
+ if(["flex","inline-flex"].includes(CalculedStyle.display)){
157
+ if(CalculedStyle.justifyContent === "flex-end")Object.assign(SwitchedStyle, {justifyContent: "flex-start"});
158
+ if(CalculedStyle.justifyContent === "flex-start")Object.assign(SwitchedStyle, {justifyContent: "flex-end"});
159
+ }
160
+ return SwitchedStyle;
161
+ }
162
+ useRtl(switchAll = false){
163
+ switchAll ? this.style({
164
+ ...this.#SwitchedStyleRTL_LTR,
165
+ direction : "rtl"
166
+ }) : this.style({direction : "rtl"});
167
+ return this;
168
+ }
169
+ useLtr(switchAll = false){
170
+ switchAll ? this.style({
171
+ ...this.#SwitchedStyleRTL_LTR,
172
+ direction : "ltr"
173
+ }) : this.style({direction : "ltr"});
174
+ return this;
175
+ }
176
+ freeze(freeze){
177
+ this.cache.isFrozzen=freeze;
178
+ return this;
179
+ }
180
+ setTarget(tg) {
181
+ if(this.isBody) return ;
182
+ if (tg instanceof ZikoUIElement) tg = tg.element;
183
+ this.unrender();
184
+ this.target = tg;
185
+ this.render();
186
+ return this;
187
+ }
188
+ describe(label){
189
+ if(label)this.setAttr("aria-label",label)
190
+ }
191
+ clear(){
192
+ this?.items?.forEach(n=>n.unrender());
193
+ this.element.innerHTML = "";
194
+ return this;
195
+ }
196
+ render(target = this.target) {
197
+ if(this.isBody)return ;
198
+ if(target instanceof ZikoUIElement)target=target.element;
199
+ this.target=target;
200
+ this.target?.appendChild(this.element);
201
+ return this;
202
+ }
203
+ unrender(){
204
+ if(this.cache.parent)this.cache.parent.remove(this);
205
+ else if(this.target?.children?.length && [...this.target?.children].includes(this.element)) this.target.removeChild(this.element);
206
+ return this;
207
+ }
208
+ renderAfter(t = 1) {
209
+ setTimeout(() => this.render(), t);
210
+ return this;
211
+ }
212
+ unrenderAfter(t = 1) {
213
+ setTimeout(() => this.unrender(), t);
214
+ return this;
215
+ }
216
+ after(ui){
217
+ if(ui instanceof ZikoUIElement) ui=ui.element;
218
+ this.element?.after(ui)
219
+ return this;
220
+ }
221
+ before(ui){
222
+ if(ui instanceof ZikoUIElement) ui=ui.element;
223
+ this.element?.before(ui)
224
+ return this;
225
+ }
226
+ animate(keyframe, {duration=1000, iterations=1, easing="ease"}={}){
227
+ this.element?.animate(keyframe,{duration, iterations, easing});
228
+ return this;
229
+ }
230
+ // Attributes
231
+ #setAttr(name, value){
232
+ name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
233
+ if(this?.attr[name] && this?.attr[name]===value) return;
234
+ this.element.setAttribute(name, value)
235
+ Object.assign(this.cache.attributes, {[name]:value});
236
+ }
237
+ setAttr(name, value) {
238
+ if(name instanceof Object){
239
+ const [names,values]=[Object.keys(name),Object.values(name)];
240
+ for(let i=0;i<names.length;i++){
241
+ if(values[i] instanceof Array)value[i] = values[i].join(" ");
242
+ this.#setAttr(names[i], values[i])
243
+ }
244
+ }
245
+ else{
246
+ if(value instanceof Array)value = value.join(" ");
247
+ this.#setAttr(name, value)
248
+ }
249
+ return this;
250
+ }
251
+ removeAttr(...names) {
252
+ for(let i=0;i<names.length;i++)this.element?.removeAttribute(names[i]);
253
+ return this;
254
+ }
255
+ getAttr(name){
256
+ name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
257
+ return this.element.attributes[name].value;
258
+ }
259
+ setContentEditable(bool = true) {
260
+ this.setAttr("contenteditable", bool);
261
+ return this;
262
+ }
263
+ get children() {
264
+ return [...this.element.children];
265
+ }
266
+ get cloneElement() {
267
+ return this.element.cloneNode(true);
268
+ }
269
+ setClasses(...value) {
270
+ this.setAttr("class", value.join(" "));
271
+ return this;
272
+ }
273
+ get classes(){
274
+ const classes=this.element.getAttribute("class");
275
+ return classes===null?[]:classes.split(" ");
276
+ }
277
+ addClass() {
278
+ /*this.setAttr("class", value);
279
+ return this;*/
280
+ }
281
+ setId(id) {
282
+ this.setAttr("id", id);
283
+ return this;
284
+ }
285
+ get id() {
286
+ return this.element.getAttribute("id");
287
+ }
288
+ onPtrMove(...callbacks){
289
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
290
+ this.events.ptr.onMove(...callbacks);
291
+ return this;
292
+ }
293
+ onPtrDown(...callbacks){
294
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
295
+ this.events.ptr.onDown(...callbacks);
296
+ return this;
297
+ }
298
+ onPtrUp(...callbacks){
299
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
300
+ this.events.ptr.onUp(...callbacks);
301
+ return this;
302
+ }
303
+ onPtrEnter(...callbacks){
304
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
305
+ this.events.ptr.onEnter(...callbacks);
306
+ return this;
307
+ }
308
+ onPtrLeave(...callbacks){
309
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
310
+ this.events.ptr.onLeave(...callbacks);
311
+ return this;
312
+ }
313
+ onPtrOut(...callbacks){
314
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
315
+ this.events.ptr.onOut(...callbacks);
316
+ return this;
317
+ }
318
+ onPtrCancel(...callbacks){
319
+ if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
320
+ this.events.ptr.onCancel(...callbacks);
321
+ return this;
322
+ }
323
+ onSwipe(width_threshold, height_threshold,...callbacks){
324
+ if(!this.events.swipe)this.events.swipe = useSwipeEvent(this, width_threshold, height_threshold);
325
+ this.events.swipe.onSwipe(...callbacks);
326
+ return this;
327
+ }
328
+ onMouseMove(...callbacks){
329
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
330
+ this.events.mouse.onMove(...callbacks);
331
+ return this;
332
+ }
333
+ onMouseDown(...callbacks){
334
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
335
+ this.events.mouse.onDown(...callbacks);
336
+ return this;
337
+ }
338
+ onMouseUp(...callbacks){
339
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
340
+ this.events.mouse.onUp(...callbacks);
341
+ return this;
342
+ }
343
+ onMouseEnter(...callbacks){
344
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
345
+ this.events.mouse.onEnter(...callbacks);
346
+ return this;
347
+ }
348
+ onMouseLeave(...callbacks){
349
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
350
+ this.events.mouse.onLeave(...callbacks);
351
+ return this;
352
+ }
353
+ onMouseOut(...callbacks){
354
+ if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
355
+ this.events.mouse.onOut(...callbacks);
356
+ return this;
357
+ }
358
+ onWheel(...callbacks){
359
+ if(!this.events.wheel)this.events.wheel = useWheelEvent(this);
360
+ this.events.wheel.onWheel(...callbacks);
361
+ return this;
362
+ }
363
+ onKeyDown(...callbacks){
364
+ if(!this.events.key)this.events.key = useKeyEvent(this);
365
+ this.events.key.onDown(...callbacks);
366
+ return this;
367
+ }
368
+ onKeyPress(...callbacks){
369
+ if(!this.events.key)this.events.key = useKeyEvent(this);
370
+ this.events.key.onPress(...callbacks);
371
+ return this;
372
+ }
373
+ onKeyUp(...callbacks){
374
+ if(!this.events.key)this.events.key = useKeyEvent(this);
375
+ this.events.key.onUp(...callbacks);
376
+ return this;
377
+ }
378
+ onKeysDown({keys=[],callback}={}){
379
+ if(!this.events.key)this.events.key = useKeyEvent(this);
380
+ this.events.key.handleSuccessifKeys({keys,callback});
381
+ return this;
382
+ }
383
+ onDragStart(...callbacks){
384
+ if(!this.events.drag)this.events.drag = useDragEvent(this);
385
+ this.events.drag.onStart(...callbacks);
386
+ return this;
387
+ }
388
+ onDrag(...callbacks){
389
+ if(!this.events.drag)this.events.drag = useDragEvent(this);
390
+ this.events.drag.onDrag(...callbacks);
391
+ return this;
392
+ }
393
+ onDragEnd(...callbacks){
394
+ if(!this.events.drag)this.events.drag = useDragEvent(this);
395
+ this.events.drag.onEnd(...callbacks);
396
+ return this;
397
+ }
398
+ onDrop(...callbacks){
399
+ if(!this.events.drop)this.events.drop = useDropEvent(this);
400
+ this.events.drop.onDrop(...callbacks);
401
+ return this;
402
+ }
403
+ onClick(...callbacks){
404
+ if(!this.events.click)this.events.click = useClickEvent(this);
405
+ this.events.click.onClick(...callbacks);
406
+ return this;
407
+ }
408
+ onDbClick(...callbacks){
409
+ if(!this.events.click)this.events.click = useClickEvent(this);
410
+ this.events.click.onDbClick(...callbacks);
411
+ return this;
412
+ }
413
+ onCopy(...callbacks){
414
+ if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
415
+ this.events.clipboard.onCopy(...callbacks);
416
+ return this;
417
+ }
418
+ onCut(...callbacks){
419
+ if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
420
+ this.events.clipboard.onCut(...callbacks);
421
+ return this;
422
+ }
423
+ onPaste(...callbacks){
424
+ if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
425
+ this.events.clipboard.onPaste(...callbacks);
426
+ return this;
427
+ }
428
+ onSelect(...callbacks){
429
+ if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
430
+ this.events.clipboard.onSelect(...callbacks);
431
+ return this;
432
+ }
433
+ onFocus(...callbacks){
434
+ if(!this.events.focus)this.events.focus = useFocusEvent(this);
435
+ this.events.focus.onFocus(...callbacks);
436
+ return this;
437
+ }
438
+ onBlur(...callbacks){
439
+ if(!this.events.focus)this.events.focus = useFocusEvent(this);
440
+ this.events.focus.onFocus(...callbacks);
441
+ return this;
442
+ }
443
+ on(event_name,...callbacks){
444
+ if(!this.events.custom)this.events.custom = useCustomEvent(this);
445
+ this.events.custom.on(event_name,...callbacks);
446
+ return this;
447
+ }
448
+ emit(event_name,detail={}){
449
+ if(!this.events.custom)this.events.custom = useCustomEvent(this);
450
+ this.events.custom.emit(event_name,detail);
451
+ return this;
452
+ }
453
+ watchAttr(callback){
454
+ if(!this.observer.attr)this.observer.attr = watchAttr(this,callback);
455
+ return this;
456
+ }
457
+ watchChildren(callback){
458
+ if(!this.observer.children)this.observer.children = watchChildren(this,callback);
459
+ return this;
460
+ }
461
+ watchSize(callback){
462
+ if(!this.observer.resize)this.observer.resize = watchSize(this,callback);
463
+ this.observer.resize.start();
464
+ return this;
465
+ }
466
+ watchIntersection(callback,config){
467
+ if(!this.observer.intersection)this.observer.intersection = watchIntersection(this,callback,config);
468
+ this.observer.intersection.start();
469
+ return this;
470
+ }
471
+ setFullScreen(set = true, e) {
472
+ if(!this.element.requestFullscreen){
473
+ console.error("Fullscreen API is not supported in this browser.");
474
+ return this;
475
+ }
476
+ if (set) this.element.requestFullscreen(e);
477
+ else globalThis.document.exitFullscreen();
478
+ return this;
479
+ }
480
+ toggleFullScreen(e) {
481
+ if (!globalThis.document.fullscreenElement) this.element.requestFullscreen(e);
482
+ else globalThis.document.exitFullscreen();
483
+ return this;
484
+ }
485
+ toPdf(){
486
+ if(__ZikoPdf__){
487
+
488
+ }
489
+ return this;
490
+ }
491
+ }
492
+ export default ZikoUIElement;