ziko 0.0.12 → 0.0.14

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