ziko 0.0.13 → 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 (290) hide show
  1. package/dist/ziko.cjs +13310 -11794
  2. package/dist/ziko.js +13868 -12352
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +13286 -11774
  5. package/package.json +5 -4
  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 -0
  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 -49
  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 -478
  200. package/src/ui/elements/primitives/embaded/html.js +20 -0
  201. package/src/ui/elements/primitives/embaded/index.js +3 -0
  202. package/src/ui/elements/primitives/embaded/pdf.js +17 -0
  203. package/src/ui/elements/primitives/embaded/youtube.js +24 -0
  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 -97
  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 -35
  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 -99
  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/embaded/index.js +0 -1
  256. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/index.js +0 -2
  257. package/src/user-interface/elements/primitives/media/Image/index.js +0 -2
  258. package/src/user-interface/elements/primitives/table/index.js +0 -3
  259. package/src/user-interface/index.js +0 -188
  260. /package/src/app/{globals/index.js → globals.js} +0 -0
  261. /package/src/app/{params/index.js → params.js} +0 -0
  262. /package/src/reactivity/events/{Partiel/Media.js → media.js} +0 -0
  263. /package/src/{app/accessibility/index.js → reactivity/events/touch.js} +0 -0
  264. /package/src/reactivity/hooks/{Contexte → contexte}/index.js +0 -0
  265. /package/src/reactivity/hooks/{Interactions → interactions}/useSerial.js +0 -0
  266. /package/src/reactivity/hooks/{Interactions → interactions}/useUsb.js +0 -0
  267. /package/src/reactivity/hooks/{Sensors → sensors}/useCamera.js +0 -0
  268. /package/src/reactivity/hooks/{Sensors → sensors}/useMicro.js +0 -0
  269. /package/src/reactivity/hooks/{Sensors → sensors}/useOrientation.js +0 -0
  270. /package/src/reactivity/hooks/{Storage → storage}/index.js +0 -0
  271. /package/src/reactivity/hooks/{Storage → storage}/useCookie.js +0 -0
  272. /package/src/reactivity/hooks/{Storage → storage}/useIndexedDb.js +0 -0
  273. /package/src/reactivity/hooks/{UI → ui}/useCssLink.js +0 -0
  274. /package/src/reactivity/hooks/{UI → ui}/useLinearGradient.js +0 -0
  275. /package/src/reactivity/hooks/{UI → ui}/useRadialGradient.js +0 -0
  276. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/index.js +0 -0
  277. /package/src/{user-interface → ui}/elements/derived/elements/Notification.js +0 -0
  278. /package/src/{user-interface → ui}/elements/derived/elements/Popover.js +0 -0
  279. /package/src/{user-interface → ui}/elements/derived/elements/Popup.js +0 -0
  280. /package/src/{user-interface → ui}/elements/derived/elements/Timeline.js +0 -0
  281. /package/src/{user-interface → ui}/elements/derived/elements/Toast.js +0 -0
  282. /package/src/{user-interface → ui}/elements/derived/elements/Treeview.js +0 -0
  283. /package/src/{user-interface → ui}/elements/derived/elements/columns.js +0 -0
  284. /package/src/{user-interface → ui}/elements/derived/elements/fab.js +0 -0
  285. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/menu/index.js +0 -0
  286. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/pagination/index.js +0 -0
  287. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/index.js +0 -0
  288. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/input-file.js +0 -0
  289. /package/src/{user-interface → ui}/elements/primitives/list/elements.js +0 -0
  290. /package/src/{user-interface → ui}/elements/primitives/text/pre.js +0 -0
@@ -1,478 +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
- class ZikoUIElement {
22
- constructor(element ,name="") {
23
- this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
24
- if(typeof element === "string") {
25
- element === "svg" ? element=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg", "svg"): element = globalThis?.document?.createElement(element);
26
- }
27
- this.element = element;
28
- this.uuid=this.constructor.name+"-"+Random.string(10);
29
- this.cache = {
30
- name,
31
- parent:null,
32
- isRoot:false,
33
- isHidden: false,
34
- isFrozzen:false,
35
- legacyParent : null,
36
- style: ZikoStyle({}),
37
- attributes: {},
38
- filters: {},
39
- temp:{}
40
- };
41
- this.events = {
42
- ptr:null,
43
- mouse:null,
44
- wheel:null,
45
- key:null,
46
- drag:null,
47
- drop:null,
48
- click:null,
49
- clipboard:null,
50
- focus:null,
51
- swipe:null,
52
- custom:null,
53
- }
54
- this.observer={
55
- resize:null,
56
- intersection:null
57
- }
58
- this.cache.style.linkTo(this);
59
- this.style({
60
- position: "relative",
61
- boxSizing:"border-box",
62
- fontFamily:"verdana",
63
- margin:0,
64
- padding:0,
65
- });
66
- this.size("auto", "auto");
67
- globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
68
- // this.render(globalThis.__Ziko__.__Config__.default.render);
69
- globalThis.__Ziko__.__Config__.default.render && this.render()
70
- }
71
- get st(){
72
- return this.cache.style;
73
- }
74
- get attr(){
75
- return this.cache.attributes;
76
- }
77
- get evt(){
78
- return this.cache.events;
79
- }
80
- get html(){
81
- return this.element.innerHTML;
82
- }
83
- get text(){
84
- return this.element.textContent;
85
- }
86
- get __app__(){
87
- if(this.cache.isRoot)return this;
88
- let root=this.cache.parent;
89
- while(1){
90
- if(!root)return null;
91
- if(root.cache.isRoot)return root;
92
- root=root.parent;
93
- }
94
- }
95
- get parent(){
96
- return this.cache.parent;
97
- }
98
- get width(){
99
- return this.element.getBoundingClientRect().width;
100
- }
101
- get height(){
102
- return this.element.getBoundingClientRect().height;
103
- }
104
- get top(){
105
- return this.element.getBoundingClientRect().top;
106
- }
107
- get right(){
108
- return this.element.getBoundingClientRect().right;
109
- }
110
- get bottom(){
111
- return this.element.getBoundingClientRect().bottom;
112
- }
113
- get left(){
114
- return this.element.getBoundingClientRect().left;
115
- }
116
- clone(render=false) {
117
- const UI = new this.constructor();
118
- UI.__proto__=this.__proto__;
119
- if(this.items.length){
120
- const items = [...this.items].map(n=>n.clone());
121
- UI.append(...items);
122
- }
123
- else UI.element=this.element.cloneNode(true);
124
- return UI.render(render);
125
- }
126
- style(styles){
127
- styles instanceof ZikoUseStyle ? this.st.style(styles.current): this.st.style(styles);
128
- return this;
129
- }
130
- size(width,height){
131
- this.st.size(width,height);
132
- return this;
133
- }
134
- get #SwitchedStyleRTL_LTR(){
135
- const CalculedStyle = globalThis.getComputedStyle(this.element);
136
- const SwitchedStyle = {}
137
- if(CalculedStyle.marginRight!=="0px")Object.assign(SwitchedStyle, {marginLeft: CalculedStyle.marginRight});
138
- if(CalculedStyle.marginLeft!=="0px")Object.assign(SwitchedStyle, {marginRight: CalculedStyle.marginLeft});
139
- if(CalculedStyle.paddingRight!=="0px")Object.assign(SwitchedStyle, {paddingLeft: CalculedStyle.paddingRight});
140
- if(CalculedStyle.paddingLeft!=="0px")Object.assign(SwitchedStyle, {paddingRight: CalculedStyle.paddingLeft});
141
- if(CalculedStyle.left!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.left});
142
- if(CalculedStyle.right!=="0px")Object.assign(SwitchedStyle, {left: CalculedStyle.right});
143
- if(CalculedStyle.textAlign === "right")Object.assign(SwitchedStyle, {textAlign: "left"});
144
- if(CalculedStyle.textAlign === "left")Object.assign(SwitchedStyle, {textAlign: "right"});
145
- if(CalculedStyle.float === "right")Object.assign(SwitchedStyle, {float: "left"});
146
- if(CalculedStyle.float === "left")Object.assign(SwitchedStyle, {float: "right"});
147
- if(CalculedStyle.borderRadiusLeft!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusRight});
148
- if(CalculedStyle.borderRadiusRight!=="0px")Object.assign(SwitchedStyle, {right: CalculedStyle.borderRadiusLeft});
149
- if(["flex","inline-flex"].includes(CalculedStyle.display)){
150
- if(CalculedStyle.justifyContent === "flex-end")Object.assign(SwitchedStyle, {justifyContent: "flex-start"});
151
- if(CalculedStyle.justifyContent === "flex-start")Object.assign(SwitchedStyle, {justifyContent: "flex-end"});
152
- }
153
- return SwitchedStyle;
154
- }
155
- useRtl(switchAll = false){
156
- switchAll ? this.style({
157
- ...this.#SwitchedStyleRTL_LTR,
158
- direction : "rtl"
159
- }) : this.style({direction : "rtl"});
160
- return this;
161
- }
162
- useLtr(switchAll = false){
163
- switchAll ? this.style({
164
- ...this.#SwitchedStyleRTL_LTR,
165
- direction : "ltr"
166
- }) : this.style({direction : "ltr"});
167
- return this;
168
- }
169
- freeze(freeze){
170
- this.cache.isFrozzen=freeze;
171
- return this;
172
- }
173
- setTarget(tg) {
174
- if (tg instanceof ZikoUIElement) tg = tg.element;
175
- this.unrender();
176
- this.target = tg;
177
- this.render();
178
- return this;
179
- }
180
- render(/*render = true , */target = this.target) {
181
- if(target instanceof ZikoUIElement)target=target.element;
182
- this.target=target;
183
- this.target?.appendChild(this.element);
184
- // if(render) {
185
- // this.target.appendChild(this.element);
186
- // }
187
- // else this.remove();
188
- return this;
189
- }
190
- unrender(){
191
- if(this.cache.parent)this.cache.parent.remove(this);
192
- else if(this.target?.children?.length && [...this.target?.children].includes(this.element)) this.target.removeChild(this.element);
193
- return this;
194
- }
195
- renderAfter(t = 1) {
196
- setTimeout(() => this.render(), t);
197
- return this;
198
- }
199
- unrenderAfter(t = 1) {
200
- setTimeout(() => this.unrender(), t);
201
- return this;
202
- }
203
- after(ui){
204
- if(ui instanceof ZikoUIElement) ui=ui.element;
205
- this.element?.after(ui)
206
- return this;
207
- }
208
- before(ui){
209
- if(ui instanceof ZikoUIElement) ui=ui.element;
210
- this.element?.before(ui)
211
- return this;
212
- }
213
- animate(keyframe, {duration=1000, iterations=1, easing="ease"}={}){
214
- this.element?.animate(keyframe,{duration, iterations, easing});
215
- return this;
216
- }
217
- // Attributes
218
- setAttr(name, value) {
219
- if(name instanceof Object){
220
- const [names,values]=[Object.keys(name),Object.values(name)];
221
- for(let i=0;i<names.length;i++){
222
- if(values[i] instanceof Array)value[i] = values[i].join(" ");
223
- if(this?.attr[name[i]]!==value[i]){
224
- this.element?.setAttribute(names[i], values[i]);
225
- Object.assign(this.cache.attributes, Object.fromEntries([[names[i], values[i]]]));
226
- }
227
- }
228
- }
229
- else{
230
- if(value instanceof Array)value = value.join(" ");
231
- if(this?.attr[name]!==value){
232
- this.element?.setAttribute(name, value);
233
- Object.assign(this.cache.attributes, Object.fromEntries([[name, value]]));
234
- }
235
- }
236
- return this;
237
- }
238
- removeAttr(...names) {
239
- for(let i=0;i<names.length;i++)this.element?.removeAttribute(names[i]);
240
- return this;
241
- }
242
- getAttr(name){
243
- return this.element.attributes[name].value;
244
- }
245
- setContentEditable(bool = true) {
246
- this.setAttr("contenteditable", bool);
247
- return this;
248
- }
249
- get children() {
250
- return [...this.element.children];
251
- }
252
- get cloneElement() {
253
- return this.element.cloneNode(true);
254
- }
255
- setClasses(...value) {
256
- this.setAttr("class", value.join(" "));
257
- return this;
258
- }
259
- get classes(){
260
- const classes=this.element.getAttribute("class");
261
- return classes===null?[]:classes.split(" ");
262
- }
263
- addClass() {
264
- /*this.setAttr("class", value);
265
- return this;*/
266
- }
267
- setId(id) {
268
- this.setAttr("id", id);
269
- return this;
270
- }
271
- get id() {
272
- return this.element.getAttribute("id");
273
- }
274
- onPtrMove(...callbacks){
275
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
276
- this.events.ptr.onMove(...callbacks);
277
- return this;
278
- }
279
- onPtrDown(...callbacks){
280
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
281
- this.events.ptr.onDown(...callbacks);
282
- return this;
283
- }
284
- onPtrUp(...callbacks){
285
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
286
- this.events.ptr.onUp(...callbacks);
287
- return this;
288
- }
289
- onPtrEnter(...callbacks){
290
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
291
- this.events.ptr.onEnter(...callbacks);
292
- return this;
293
- }
294
- onPtrLeave(...callbacks){
295
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
296
- this.events.ptr.onLeave(...callbacks);
297
- return this;
298
- }
299
- onPtrOut(...callbacks){
300
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
301
- this.events.ptr.onOut(...callbacks);
302
- return this;
303
- }
304
- onPtrCancel(...callbacks){
305
- if(!this.events.ptr)this.events.ptr = usePointerEvent(this);
306
- this.events.ptr.onCancel(...callbacks);
307
- return this;
308
- }
309
- onSwipe(width_threshold, height_threshold,...callbacks){
310
- if(!this.events.swipe)this.events.swipe = useSwipeEvent(this, width_threshold, height_threshold);
311
- this.events.swipe.onSwipe(...callbacks);
312
- return this;
313
- }
314
- onMouseMove(...callbacks){
315
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
316
- this.events.mouse.onMove(...callbacks);
317
- return this;
318
- }
319
- onMouseDown(...callbacks){
320
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
321
- this.events.mouse.onDown(...callbacks);
322
- return this;
323
- }
324
- onMouseUp(...callbacks){
325
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
326
- this.events.mouse.onUp(...callbacks);
327
- return this;
328
- }
329
- onMouseEnter(...callbacks){
330
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
331
- this.events.mouse.onEnter(...callbacks);
332
- return this;
333
- }
334
- onMouseLeave(...callbacks){
335
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
336
- this.events.mouse.onLeave(...callbacks);
337
- return this;
338
- }
339
- onMouseOut(...callbacks){
340
- if(!this.events.mouse)this.events.mouse = useMouseEvent(this);
341
- this.events.mouse.onOut(...callbacks);
342
- return this;
343
- }
344
- onWheel(...callbacks){
345
- if(!this.events.wheel)this.events.wheel = useWheelEvent(this);
346
- this.events.wheel.onWheel(...callbacks);
347
- return this;
348
- }
349
- onKeyDown(...callbacks){
350
- if(!this.events.key)this.events.key = useKeyEvent(this);
351
- this.events.key.onDown(...callbacks);
352
- return this;
353
- }
354
- onKeyPress(...callbacks){
355
- if(!this.events.key)this.events.key = useKeyEvent(this);
356
- this.events.key.onPress(...callbacks);
357
- return this;
358
- }
359
- onKeyUp(...callbacks){
360
- if(!this.events.key)this.events.key = useKeyEvent(this);
361
- this.events.key.onUp(...callbacks);
362
- return this;
363
- }
364
- onKeysDown({keys=[],callback}={}){
365
- if(!this.events.key)this.events.key = useKeyEvent(this);
366
- this.events.key.handleSuccessifKeys({keys,callback});
367
- return this;
368
- }
369
- onDragStart(...callbacks){
370
- if(!this.events.drag)this.events.drag = useDragEvent(this);
371
- this.events.drag.onStart(...callbacks);
372
- return this;
373
- }
374
- onDrag(...callbacks){
375
- if(!this.events.drag)this.events.drag = useDragEvent(this);
376
- this.events.drag.onDrag(...callbacks);
377
- return this;
378
- }
379
- onDragEnd(...callbacks){
380
- if(!this.events.drag)this.events.drag = useDragEvent(this);
381
- this.events.drag.onEnd(...callbacks);
382
- return this;
383
- }
384
- onDrop(...callbacks){
385
- if(!this.events.drop)this.events.drop = useDropEvent(this);
386
- this.events.drop.onDrop(...callbacks);
387
- return this;
388
- }
389
- onClick(...callbacks){
390
- if(!this.events.click)this.events.click = useClickEvent(this);
391
- this.events.click.onClick(...callbacks);
392
- return this;
393
- }
394
- onDbClick(...callbacks){
395
- if(!this.events.click)this.events.click = useClickEvent(this);
396
- this.events.click.onDbClick(...callbacks);
397
- return this;
398
- }
399
- onCopy(...callbacks){
400
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
401
- this.events.clipboard.onCopy(...callbacks);
402
- return this;
403
- }
404
- onCut(...callbacks){
405
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
406
- this.events.clipboard.onCut(...callbacks);
407
- return this;
408
- }
409
- onPaste(...callbacks){
410
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
411
- this.events.clipboard.onPaste(...callbacks);
412
- return this;
413
- }
414
- onSelect(...callbacks){
415
- if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
416
- this.events.clipboard.onSelect(...callbacks);
417
- return this;
418
- }
419
- onFocus(...callbacks){
420
- if(!this.events.focus)this.events.focus = useFocusEvent(this);
421
- this.events.focus.onFocus(...callbacks);
422
- return this;
423
- }
424
- onBlur(...callbacks){
425
- if(!this.events.focus)this.events.focus = useFocusEvent(this);
426
- this.events.focus.onFocus(...callbacks);
427
- return this;
428
- }
429
- on(event_name,...callbacks){
430
- if(!this.events.custom)this.events.custom = useCustomEvent(this);
431
- this.events.custom.on(event_name,...callbacks);
432
- return this;
433
- }
434
- emit(event_name,detail={}){
435
- if(!this.events.custom)this.events.custom = useCustomEvent(this);
436
- this.events.custom.emit(event_name,detail);
437
- return this;
438
- }
439
- watchAttr(callback){
440
- if(!this.observer.attr)this.observer.attr = watchAttr(this,callback);
441
- return this;
442
- }
443
- watchChildren(callback){
444
- if(!this.observer.children)this.observer.children = watchChildren(this,callback);
445
- return this;
446
- }
447
- watchSize(callback){
448
- if(!this.observer.resize)this.observer.resize = watchSize(this,callback);
449
- this.observer.resize.start();
450
- return this;
451
- }
452
- watchIntersection(callback,config){
453
- if(!this.observer.intersection)this.observer.intersection = watchIntersection(this,callback,config);
454
- this.observer.intersection.start();
455
- return this;
456
- }
457
- setFullScreen(set = true, e) {
458
- if(!this.element.requestFullscreen){
459
- console.error("Fullscreen API is not supported in this browser.");
460
- return this;
461
- }
462
- if (set) this.element.requestFullscreen(e);
463
- else globalThis.document.exitFullscreen();
464
- return this;
465
- }
466
- toggleFullScreen(e) {
467
- if (!globalThis.document.fullscreenElement) this.element.requestFullscreen(e);
468
- else globalThis.document.exitFullscreen();
469
- return this;
470
- }
471
- toPdf(){
472
- if(__ZikoPdf__){
473
-
474
- }
475
- return this;
476
- }
477
- }
478
- 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;