ziko 0.0.11 → 0.0.13

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 (278) hide show
  1. package/README.md +6 -3
  2. package/dist/ziko.cjs +5640 -4532
  3. package/dist/ziko.js +5640 -4532
  4. package/dist/ziko.min.js +2 -2
  5. package/dist/ziko.mjs +5602 -4532
  6. package/package.json +39 -12
  7. package/src/__helpers__/index.js +41 -0
  8. package/src/app/accessibility/index.js +0 -0
  9. package/src/app/app.js +46 -0
  10. package/src/app/component/index.js +38 -0
  11. package/src/app/globals/index.js +20 -0
  12. package/src/app/index.js +12 -0
  13. package/src/app/params/index.js +40 -0
  14. package/src/app/router/index.js +67 -0
  15. package/src/app/seo/index.js +43 -0
  16. package/src/app/themes/dark.js +885 -0
  17. package/src/app/themes/index.js +11 -0
  18. package/src/app/themes/light.js +255 -0
  19. package/src/data/api/fetchdom.js +14 -0
  20. package/src/data/api/index.js +4 -0
  21. package/src/data/api/preload.js +11 -0
  22. package/src/data/converter/adoc.js +130 -0
  23. package/src/data/converter/array.js +43 -0
  24. package/src/data/converter/canvas.js +25 -0
  25. package/src/data/converter/csv.js +33 -0
  26. package/src/data/converter/idea.txt +10 -0
  27. package/src/data/converter/index.js +34 -0
  28. package/src/data/converter/json.js +80 -0
  29. package/src/data/converter/markdown.js +95 -0
  30. package/src/data/converter/object.js +70 -0
  31. package/src/data/converter/svg.js +11 -0
  32. package/src/data/decorators.js +0 -0
  33. package/src/data/index.js +74 -0
  34. package/src/data/parser/markdown.js +0 -0
  35. package/src/data/parser/xml.js +47 -0
  36. package/src/data/string/index.js +1 -0
  37. package/src/data/string/patterns.js +12 -0
  38. package/src/data/string/string.js +170 -0
  39. package/src/graphics/canvas/_canvas_offscreen +0 -0
  40. package/src/graphics/canvas/canvas.js +189 -0
  41. package/src/graphics/canvas/elements/Basic/arc.js +43 -0
  42. package/src/graphics/canvas/elements/Basic/image.js +0 -0
  43. package/src/graphics/canvas/elements/Basic/line.js +26 -0
  44. package/src/graphics/canvas/elements/Basic/path.js +0 -0
  45. package/src/graphics/canvas/elements/Basic/points.js +48 -0
  46. package/src/graphics/canvas/elements/Basic/polygon.js +7 -0
  47. package/src/graphics/canvas/elements/Basic/polyline.js +0 -0
  48. package/src/graphics/canvas/elements/Basic/rect.js +46 -0
  49. package/src/graphics/canvas/elements/Basic/text.js +0 -0
  50. package/src/graphics/canvas/elements/Chart/histogram.js +0 -0
  51. package/src/graphics/canvas/elements/Chart/plot.js +0 -0
  52. package/src/graphics/canvas/elements/Chart/scatter.js +2 -0
  53. package/src/graphics/canvas/elements/Chart/stem.js +0 -0
  54. package/src/graphics/canvas/elements/Element.js +115 -0
  55. package/src/graphics/canvas/elements/Groupe.js +0 -0
  56. package/src/graphics/canvas/elements/grid.js +0 -0
  57. package/src/graphics/canvas/elements/index.js +13 -0
  58. package/src/graphics/canvas/filter/index.js +0 -0
  59. package/src/graphics/canvas/index.js +15 -0
  60. package/src/graphics/canvas/paint/index.js +0 -0
  61. package/src/graphics/canvas/utils/color.js +8 -0
  62. package/src/graphics/canvas/utils/floodFill.js +58 -0
  63. package/src/graphics/index.js +69 -0
  64. package/src/graphics/svg/Elements/Basic/circle.js +26 -0
  65. package/src/graphics/svg/Elements/Basic/ellipse.js +21 -0
  66. package/src/graphics/svg/Elements/Basic/foreignObject.js +33 -0
  67. package/src/graphics/svg/Elements/Basic/groupe.js +29 -0
  68. package/src/graphics/svg/Elements/Basic/image.js +33 -0
  69. package/src/graphics/svg/Elements/Basic/line.js +29 -0
  70. package/src/graphics/svg/Elements/Basic/link.js +30 -0
  71. package/src/graphics/svg/Elements/Basic/path.js +59 -0
  72. package/src/graphics/svg/Elements/Basic/polygon.js +32 -0
  73. package/src/graphics/svg/Elements/Basic/polyline.js +4 -0
  74. package/src/graphics/svg/Elements/Basic/rect.js +43 -0
  75. package/src/graphics/svg/Elements/Basic/text.js +26 -0
  76. package/src/graphics/svg/Elements/Derived/grid.js +9 -0
  77. package/src/graphics/svg/Elements/ZikoSvgElement.js +46 -0
  78. package/src/graphics/svg/Elements/index.js +14 -0
  79. package/src/graphics/svg/index.js +2 -0
  80. package/src/graphics/svg/svg.js +115 -0
  81. package/src/index.js +88 -0
  82. package/src/math/absract.js +1 -0
  83. package/src/math/calculus/index.js +1 -0
  84. package/src/math/calculus/special-functions/bessel.js +31 -0
  85. package/src/math/calculus/special-functions/beta.js +38 -0
  86. package/src/math/calculus/special-functions/gamma.js +30 -0
  87. package/src/math/calculus/special-functions/index.js +4 -0
  88. package/src/math/complex/Fractals/julia.js +0 -0
  89. package/src/math/complex/index.js +203 -0
  90. package/src/math/const.js +3 -0
  91. package/src/math/discret/Combinaison/index.js +34 -0
  92. package/src/math/discret/Conversion/index.js +86 -0
  93. package/src/math/discret/Logic/index.js +46 -0
  94. package/src/math/discret/Permutation/index.js +31 -0
  95. package/src/math/discret/Set/index.js +2 -0
  96. package/src/math/discret/Set/power-set.js +15 -0
  97. package/src/math/discret/Set/sub-set.js +10 -0
  98. package/src/math/discret/index.js +23 -0
  99. package/src/math/functions/index.js +182 -0
  100. package/src/math/index.js +189 -0
  101. package/src/math/matrix/Decomposition.js +90 -0
  102. package/src/math/matrix/LinearSystem.js +10 -0
  103. package/src/math/matrix/Matrix.js +717 -0
  104. package/src/math/matrix/index.js +3 -0
  105. package/src/math/numeric/index.js +0 -0
  106. package/src/math/random/index.js +173 -0
  107. package/src/math/signal/__np.py.txt +40 -0
  108. package/src/math/signal/conv.js +175 -0
  109. package/src/math/signal/fft.js +55 -0
  110. package/src/math/signal/filter.js +39 -0
  111. package/src/math/signal/functions.js +146 -0
  112. package/src/math/signal/index.js +110 -0
  113. package/src/math/statistics/Functions/index.js +100 -0
  114. package/src/math/statistics/index.js +16 -0
  115. package/src/math/utils/arithmetic.js +139 -0
  116. package/src/math/utils/checkers.js +29 -0
  117. package/src/math/utils/comparaison.js +1 -0
  118. package/src/math/utils/conversions.js +19 -0
  119. package/src/math/utils/discret.js +51 -0
  120. package/src/math/utils/index.js +102 -0
  121. package/src/math/utils/mapfun.js +50 -0
  122. package/src/reactivity/events/Global/Click.js +56 -0
  123. package/src/reactivity/events/Global/Clipboard.js +84 -0
  124. package/src/reactivity/events/Global/CustomEvent.js +53 -0
  125. package/src/reactivity/events/Global/Drag.js +137 -0
  126. package/src/reactivity/events/Global/Focus.js +56 -0
  127. package/src/reactivity/events/Global/Key.js +104 -0
  128. package/src/reactivity/events/Global/Mouse.js +230 -0
  129. package/src/reactivity/events/Global/Pointer.js +234 -0
  130. package/src/reactivity/events/Global/Swipe.js +147 -0
  131. package/src/reactivity/events/Global/Touch.js +0 -0
  132. package/src/reactivity/events/Global/Wheel.js +44 -0
  133. package/src/reactivity/events/Partiel/Hash.js +44 -0
  134. package/src/reactivity/events/Partiel/Input.js +59 -0
  135. package/src/reactivity/events/Partiel/Media.js +1 -0
  136. package/src/reactivity/events/ZikoEvent.js +91 -0
  137. package/src/reactivity/events/index.js +63 -0
  138. package/src/reactivity/hooks/Contexte/index.js +1 -0
  139. package/src/reactivity/hooks/Contexte/useSuccesifKeys.js +14 -0
  140. package/src/reactivity/hooks/Decorators/index.js +6 -0
  141. package/src/reactivity/hooks/Decorators/time.js +17 -0
  142. package/src/reactivity/hooks/Decorators/type.js +88 -0
  143. package/src/reactivity/hooks/Interactions/index.js +4 -0
  144. package/src/reactivity/hooks/Interactions/useBluetooth.js +48 -0
  145. package/src/reactivity/hooks/Interactions/useChannel.js +50 -0
  146. package/src/reactivity/hooks/Interactions/useEventEmmiter.js +64 -0
  147. package/src/reactivity/hooks/Interactions/useSerial.js +0 -0
  148. package/src/reactivity/hooks/Interactions/useThread.js +44 -0
  149. package/src/reactivity/hooks/Interactions/useUsb.js +0 -0
  150. package/src/reactivity/hooks/Sensors/index.js +2 -0
  151. package/src/reactivity/hooks/Sensors/useBattery.js +36 -0
  152. package/src/reactivity/hooks/Sensors/useCamera.js +0 -0
  153. package/src/reactivity/hooks/Sensors/useGeolocation.js +17 -0
  154. package/src/reactivity/hooks/Sensors/useMicro.js +0 -0
  155. package/src/reactivity/hooks/Sensors/useOrientation.js +0 -0
  156. package/src/reactivity/hooks/Storage/index.js +1 -0
  157. package/src/reactivity/hooks/Storage/useCookie.js +0 -0
  158. package/src/reactivity/hooks/Storage/useIndexedDb.js +0 -0
  159. package/src/reactivity/hooks/Storage/useStorage.js +73 -0
  160. package/src/reactivity/hooks/UI/index.js +5 -0
  161. package/src/reactivity/hooks/UI/useCssLink.js +0 -0
  162. package/src/reactivity/hooks/UI/useCssText.js +21 -0
  163. package/src/reactivity/hooks/UI/useFavIcon.js +38 -0
  164. package/src/reactivity/hooks/UI/useLinearGradient.js +0 -0
  165. package/src/reactivity/hooks/UI/useMediaQuery.js +43 -0
  166. package/src/reactivity/hooks/UI/useRadialGradient.js +0 -0
  167. package/src/reactivity/hooks/UI/useStyle.js +79 -0
  168. package/src/reactivity/hooks/UI/useTheme.js +62 -0
  169. package/src/reactivity/hooks/UI/useTitle.js +30 -0
  170. package/src/reactivity/hooks/index.js +85 -0
  171. package/src/reactivity/hooks/todo.md +26 -0
  172. package/src/reactivity/idea +2 -0
  173. package/src/reactivity/index.js +22 -0
  174. package/src/reactivity/observer/attributes.js +28 -0
  175. package/src/reactivity/observer/children.js +37 -0
  176. package/src/reactivity/observer/index.js +44 -0
  177. package/src/reactivity/observer/intersection.js +44 -0
  178. package/src/reactivity/observer/mutation.js +113 -0
  179. package/src/reactivity/observer/resize.js +47 -0
  180. package/src/reactivity/observer/screen.js +45 -0
  181. package/src/reactivity/observer/screen.js.txt +84 -0
  182. package/src/reactivity/observer/screen.txt +13 -0
  183. package/src/time/animation.js +76 -0
  184. package/src/time/index.js +54 -0
  185. package/src/time/loop.js +87 -0
  186. package/src/time/utils/decorators.js +17 -0
  187. package/src/time/utils/ease.js +144 -0
  188. package/src/time/utils/index.js +18 -0
  189. package/src/time/utils/performance.js +16 -0
  190. package/src/time/utils/ui.js +26 -0
  191. package/src/user-interface/elements/derived/Flex.js +103 -0
  192. package/src/user-interface/elements/derived/Grid.js +33 -0
  193. package/src/user-interface/elements/derived/elements/Notification.js +0 -0
  194. package/src/user-interface/elements/derived/elements/Popover.js +0 -0
  195. package/src/user-interface/elements/derived/elements/Popup.js +0 -0
  196. package/src/user-interface/elements/derived/elements/Swipper.js +4 -0
  197. package/src/user-interface/elements/derived/elements/Timeline.js +0 -0
  198. package/src/user-interface/elements/derived/elements/Toast.js +0 -0
  199. package/src/user-interface/elements/derived/elements/Treeview.js +0 -0
  200. package/src/user-interface/elements/derived/elements/accordion/accordion.js +45 -0
  201. package/src/user-interface/elements/derived/elements/accordion/collapsible.js +82 -0
  202. package/src/user-interface/elements/derived/elements/accordion/index.js +2 -0
  203. package/src/user-interface/elements/derived/elements/alert/alert.js +80 -0
  204. package/src/user-interface/elements/derived/elements/alert/index.js +1 -0
  205. package/src/user-interface/elements/derived/elements/alert/palette.js +52 -0
  206. package/src/user-interface/elements/derived/elements/carousel/index.js +50 -0
  207. package/src/user-interface/elements/derived/elements/code-note/SubElements.js.txt +105 -0
  208. package/src/user-interface/elements/derived/elements/code-note/code-cell.js +195 -0
  209. package/src/user-interface/elements/derived/elements/code-note/code-note.js +72 -0
  210. package/src/user-interface/elements/derived/elements/code-note/index.js +2 -0
  211. package/src/user-interface/elements/derived/elements/code-note/sub-elements.js +67 -0
  212. package/src/user-interface/elements/derived/elements/columns.js +1 -0
  213. package/src/user-interface/elements/derived/elements/fab.js +0 -0
  214. package/src/user-interface/elements/derived/elements/index.js +9 -0
  215. package/src/user-interface/elements/derived/elements/menu/index.js +1 -0
  216. package/src/user-interface/elements/derived/elements/menu/menu3d.js +260 -0
  217. package/src/user-interface/elements/derived/elements/modal/index.js +92 -0
  218. package/src/user-interface/elements/derived/elements/pagination/breadcrumbs.js +54 -0
  219. package/src/user-interface/elements/derived/elements/pagination/index.js +1 -0
  220. package/src/user-interface/elements/derived/elements/splitter/__ZikoUISplitter__.js +62 -0
  221. package/src/user-interface/elements/derived/elements/splitter/hsplitter.js +40 -0
  222. package/src/user-interface/elements/derived/elements/splitter/index.js +2 -0
  223. package/src/user-interface/elements/derived/elements/splitter/vsplitter.js +40 -0
  224. package/src/user-interface/elements/derived/elements/tabs/index.js +180 -0
  225. package/src/user-interface/elements/derived/index.js +3 -0
  226. package/src/user-interface/elements/primitives/ZikoUIContainerElement.js +127 -0
  227. package/src/user-interface/elements/primitives/ZikoUIElement.js +478 -0
  228. package/src/user-interface/elements/primitives/embaded/index.js +1 -0
  229. package/src/user-interface/elements/primitives/index.js +8 -0
  230. package/src/user-interface/elements/primitives/io/Form/index.js +42 -0
  231. package/src/user-interface/elements/primitives/io/Form/index.js.txt +104 -0
  232. package/src/user-interface/elements/primitives/io/Inputs/__helpers__.js +52 -0
  233. package/src/user-interface/elements/primitives/io/Inputs/index.js +12 -0
  234. package/src/user-interface/elements/primitives/io/Inputs/input/index.js +98 -0
  235. package/src/user-interface/elements/primitives/io/Inputs/input-camera/index.js +26 -0
  236. package/src/user-interface/elements/primitives/io/Inputs/input-checkbox/index.js +26 -0
  237. package/src/user-interface/elements/primitives/io/Inputs/input-color/index.js +16 -0
  238. package/src/user-interface/elements/primitives/io/Inputs/input-date-time/index.js +3 -0
  239. package/src/user-interface/elements/primitives/io/Inputs/input-date-time/input-date-time.js +14 -0
  240. package/src/user-interface/elements/primitives/io/Inputs/input-date-time/input-date.js +14 -0
  241. package/src/user-interface/elements/primitives/io/Inputs/input-date-time/input-time.js +14 -0
  242. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/index.js +2 -0
  243. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/input-email.js +15 -0
  244. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/input-password.js +14 -0
  245. package/src/user-interface/elements/primitives/io/Inputs/input-file/index.js +1 -0
  246. package/src/user-interface/elements/primitives/io/Inputs/input-file/input-file.js +0 -0
  247. package/src/user-interface/elements/primitives/io/Inputs/input-file/input-image.js +43 -0
  248. package/src/user-interface/elements/primitives/io/Inputs/input-number/index.js +37 -0
  249. package/src/user-interface/elements/primitives/io/Inputs/input-radio/index.js +26 -0
  250. package/src/user-interface/elements/primitives/io/Inputs/input-search/index.js +45 -0
  251. package/src/user-interface/elements/primitives/io/Inputs/input-slider/index.js +34 -0
  252. package/src/user-interface/elements/primitives/io/Select/index.js +20 -0
  253. package/src/user-interface/elements/primitives/io/Textarea/index.js +18 -0
  254. package/src/user-interface/elements/primitives/io/index.js +4 -0
  255. package/src/user-interface/elements/primitives/list/elements.js +0 -0
  256. package/src/user-interface/elements/primitives/list/index.js +139 -0
  257. package/src/user-interface/elements/primitives/media/Audio/index.js +17 -0
  258. package/src/user-interface/elements/primitives/media/Image/figure.js +19 -0
  259. package/src/user-interface/elements/primitives/media/Image/image.js +36 -0
  260. package/src/user-interface/elements/primitives/media/Image/index.js +2 -0
  261. package/src/user-interface/elements/primitives/media/Video/index.js +27 -0
  262. package/src/user-interface/elements/primitives/media/__ZikoUIDynamicMediaELement__.js +47 -0
  263. package/src/user-interface/elements/primitives/media/index.js +3 -0
  264. package/src/user-interface/elements/primitives/misc/index.js +99 -0
  265. package/src/user-interface/elements/primitives/semantic/index.js +82 -0
  266. package/src/user-interface/elements/primitives/table/elements.js +94 -0
  267. package/src/user-interface/elements/primitives/table/index.js +3 -0
  268. package/src/user-interface/elements/primitives/table/table.js +115 -0
  269. package/src/user-interface/elements/primitives/table/utils.js +12 -0
  270. package/src/user-interface/elements/primitives/text/__ZikoUIText__.js +71 -0
  271. package/src/user-interface/elements/primitives/text/heading.js +36 -0
  272. package/src/user-interface/elements/primitives/text/index.js +3 -0
  273. package/src/user-interface/elements/primitives/text/p.js +26 -0
  274. package/src/user-interface/elements/primitives/text/pre.js +0 -0
  275. package/src/user-interface/elements/primitives/text/text.js +81 -0
  276. package/src/user-interface/index.js +188 -0
  277. package/src/user-interface/style/index.js +510 -0
  278. package/src/user-interface/utils/index.js +70 -0
@@ -0,0 +1,478 @@
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;
@@ -0,0 +1,8 @@
1
+ export * from "./text/index.js";
2
+ export * from "./list/index.js";
3
+ export * from "./io/index.js";
4
+ export * from "./semantic/index.js";
5
+ export * from "./embaded/index.js";
6
+ export * from "./table/index.js";
7
+ export * from "./media/index.js";
8
+ export * from "./misc/index.js";
@@ -0,0 +1,42 @@
1
+ import { ZikoUIFlex } from "../../../derived/Flex.js";
2
+ class ZikoUIForm extends ZikoUIFlex{
3
+ constructor(...items){
4
+ super("form", "Form");
5
+ this.append(...items);
6
+ this.setMethod("POST");
7
+ this.setAction("/");
8
+ }
9
+ setAction(action = "/"){
10
+ this.setAttr("action", action);
11
+ return this;
12
+ }
13
+ setMethod(method = "post"){
14
+ this.setAttr("method", method);
15
+ return this;
16
+ }
17
+ get data(){
18
+ let formData = new FormData(this.element);
19
+ this.items.forEach(n=>{
20
+ if(n.isInput||n.isSelect||n.isTextarea)formData.append(n.element.name, n.value)
21
+ })
22
+ return formData;
23
+ }
24
+ sendFormData(){
25
+ fetch(this.element.action, {
26
+ method: this.element.method,
27
+ body: this.data
28
+ })
29
+ .then(response => response.json())
30
+ .then(data => console.log(data))
31
+ .catch(error => console.error('Error:', error));
32
+ return this;
33
+ }
34
+ getByName(name){
35
+ return this.data.get(name);
36
+ }
37
+ }
38
+ const Form = (...items) => new ZikoUIForm(...items);
39
+ export{
40
+ Form,
41
+ ZikoUIForm
42
+ }
@@ -0,0 +1,104 @@
1
+ import { ZikoUIFlex } from "../../custom-elements/Flex";
2
+
3
+ class ZikoUIForm extends ZikoUIFlex {
4
+ constructor(...items) {
5
+ super("form", "Form");
6
+ this.append(...items);
7
+ this.setMethod("POST");
8
+ // this.setAction("/");
9
+ // this.addCSRFToken(); // Add CSRF token field by default
10
+ }
11
+ setAction(action = "/") {
12
+ // Ensure the action URL is trusted before setting it
13
+ if (this.isTrustedURL(action)) {
14
+ this.setAttr("action", action);
15
+ } else {
16
+ throw new Error('Untrusted action URL.');
17
+ }
18
+ return this;
19
+ }
20
+ setMethod(method = "post") {
21
+ const validMethods = ["post", "get"];
22
+ if (validMethods.includes(method.toLowerCase())) {
23
+ this.setAttr("method", method);
24
+ } else {
25
+ throw new Error('Invalid HTTP method.');
26
+ }
27
+ return this;
28
+ }
29
+
30
+ get data() {
31
+ const formData = new FormData(this.element);
32
+ this.items.forEach(n => {
33
+ if (n.isInput || n.isSelect || n.isTextarea) {
34
+ // Sanitize input values before appending
35
+ formData.append(n.element.name, this.#sanitizeInput(n.value));
36
+ }
37
+ });
38
+ return formData;
39
+ }
40
+
41
+ // Sanitize input data to prevent XSS
42
+ #sanitizeInput(input) {
43
+ const div = document?.createElement('div');
44
+ div.textContent = input;
45
+ return div.innerHTML;
46
+ }
47
+
48
+ // Include a CSRF token in the form
49
+ addCSRFToken() {
50
+ const token = this.getCSRFTokenFromServer();
51
+ const hiddenInput = document?.createElement('input');
52
+ hiddenInput.type = 'hidden';
53
+ hiddenInput.name = 'csrf_token';
54
+ hiddenInput.value = token;
55
+ this.element?.append(hiddenInput);
56
+ }
57
+
58
+ // Method to fetch CSRF token from the server (mocked here)
59
+ getCSRFTokenFromServer() {
60
+ // Replace with real token fetching logic
61
+ return 'mocked_csrf_token';
62
+ }
63
+
64
+ sendFormData() {
65
+ fetch(this.element.action, {
66
+ method: this.element.method,
67
+ body: this.data,
68
+ headers: {
69
+ 'X-CSRF-Token': this.getByName('csrf_token'), // Add CSRF token header
70
+ }
71
+ })
72
+ .then(response => {
73
+ if (!response.ok) {
74
+ throw new Error('Network response was not ok');
75
+ }
76
+ return response.json();
77
+ })
78
+ .then(data => console.log('Success:', data))
79
+ .catch(error => {
80
+ console.error('Error:', error.message || error);
81
+ });
82
+ return this;
83
+ }
84
+
85
+ getByName(name) {
86
+ return this.data.get(name);
87
+ }
88
+
89
+ // Check if the action URL is trusted
90
+ isTrustedURL(url) {
91
+ const trustedDomains = ['/','yourdomain.com', 'anothertrustedsite.com'];
92
+ try {
93
+ const urlObj = new URL(url);
94
+ return trustedDomains.includes(urlObj.hostname);
95
+ } catch (e) {
96
+ return false;
97
+ }
98
+ }
99
+ }
100
+ const Form = (...items) => new ZikoUIForm(...items);
101
+ export {
102
+ Form,
103
+ ZikoUIForm
104
+ };
@@ -0,0 +1,52 @@
1
+ import ZikoUIElement from "../../ZikoUIElement.js";
2
+ import { Random } from "../../../../../math/index.js";
3
+ class ZikoUILabel extends ZikoUIElement{
4
+ constructor(){
5
+ super();
6
+ this.element=document?.createElement("label");
7
+ }
8
+ get isLabel(){
9
+ return true;
10
+ }
11
+ }
12
+ class ZikoUIInputOption extends ZikoUIElement {
13
+ constructor(value = "") {
14
+ super();
15
+ this.element = document?.createElement("option");
16
+ if(value instanceof Object&&"value" in value){
17
+ this.setValue(value.value);
18
+ this.setText(value?.text??value.value)
19
+ }
20
+ else this.setValue(value);
21
+ }
22
+ setValue(str = "") {
23
+ this.element.value = str;
24
+ return this;
25
+ }
26
+ setText(text=""){
27
+ if(text)this.element.textContent=text;
28
+ return this;
29
+ }
30
+ }
31
+ class ZikoUIInputDatalist extends ZikoUIElement {
32
+ constructor(...options){
33
+ super();
34
+ this.element = document?.createElement("datalist");
35
+ this.addOptions(...options).setId("ziko-datalist-id"+Random.string(10));
36
+ }
37
+ get isDatalist(){
38
+ return true;
39
+ }
40
+ addOptions(...options) {
41
+ options.map((n) => this.append(new ZikoUIInputOption(n)));
42
+ return this;
43
+ }
44
+ }
45
+
46
+ const datalist = (...options) => new ZikoUIInputDatalist(...options);
47
+ export{
48
+ datalist,
49
+ ZikoUIInputDatalist,
50
+ ZikoUILabel,
51
+ ZikoUIInputOption
52
+ }
@@ -0,0 +1,12 @@
1
+ export * from "./input/index.js";
2
+ export * from "./input-number/index.js";
3
+ export * from "./input-slider/index.js";
4
+ export * from "./input-color/index.js";
5
+ export * from "./input-search/index.js";
6
+ export * from "./input-checkbox/index.js";
7
+ export * from "./input-radio/index.js";
8
+ export * from "./input-email-password/index.js";
9
+ export * from "./input-date-time/index.js";
10
+ export * from "./input-file/index.js";
11
+ export * from "./input-camera/index.js";
12
+ export * from "./__helpers__.js";