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
@@ -0,0 +1,20 @@
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
+ export{
18
+ HTMLViewer,
19
+ ZikoUIHtmlViewer
20
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./html.js"
2
+ export * from "./pdf.js"
3
+ export * from "./youtube.js"
@@ -0,0 +1,17 @@
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
+ export{
15
+ ZikoUIPdf,
16
+ PDFViewer
17
+ }
@@ -0,0 +1,24 @@
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
+ export{
22
+ YoutubePlayer,
23
+ ZikoUIYoutubePlayer
24
+ }
@@ -1,8 +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";
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
8
  export * from "./misc/index.js";
@@ -1,42 +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
1
+ import { ZikoUIFlex } from "../../../derived/flex";
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
42
  }
@@ -1,104 +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
- };
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
+ };
@@ -1,52 +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
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
52
  }
@@ -1,12 +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";
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";