ziko 0.0.14 → 0.0.16

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 (291) hide show
  1. package/dist/ziko.cjs +13435 -11825
  2. package/dist/ziko.js +13958 -12406
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +13401 -11859
  5. package/package.json +2 -1
  6. package/src/__helpers__/index.js +61 -41
  7. package/src/app/index.js +21 -12
  8. package/src/app/json-style-sheet.js +64 -0
  9. package/src/app/params.js +40 -0
  10. package/src/app/routes.js +58 -0
  11. package/src/app/spa-file-based-routing.js +74 -0
  12. package/src/app/spa.js +55 -0
  13. package/src/app/ziko-app.js +39 -0
  14. package/src/data/api/fetchdom.js +13 -13
  15. package/src/data/api/index.js +3 -3
  16. package/src/data/api/preload.js +10 -10
  17. package/src/data/converter/adoc.js +130 -130
  18. package/src/data/converter/array.js +42 -42
  19. package/src/data/converter/canvas.js +24 -24
  20. package/src/data/converter/css.js +37 -0
  21. package/src/data/converter/csv.js +32 -32
  22. package/src/data/converter/idea.txt +9 -9
  23. package/src/data/converter/index.js +37 -34
  24. package/src/data/converter/json.js +80 -80
  25. package/src/data/converter/markdown.js +95 -95
  26. package/src/data/converter/object.js +69 -69
  27. package/src/data/converter/svg.js +10 -10
  28. package/src/data/index.js +16 -73
  29. package/src/data/parser/index.js +1 -0
  30. package/src/data/parser/xml.js +46 -46
  31. package/src/data/string/patterns.js +11 -11
  32. package/src/data/string/string.js +169 -169
  33. package/src/{app/app.js → global/app/index.js} +45 -45
  34. package/src/{app → global}/component/index.js +38 -38
  35. package/src/global/globals/index.js +20 -0
  36. package/src/global/index.js +12 -0
  37. package/src/{app → global}/params/index.js +39 -39
  38. package/src/{app → global}/router/index.js +66 -66
  39. package/src/{app → global}/seo/index.js +42 -42
  40. package/src/global/style/index.js +1 -0
  41. package/src/{app → global}/themes/dark.js +884 -884
  42. package/src/{app → global}/themes/index.js +10 -10
  43. package/src/{app → global}/themes/light.js +254 -254
  44. package/src/graphics/canvas/canvas.js +188 -188
  45. package/src/graphics/canvas/elements/Basic/arc.js +42 -42
  46. package/src/graphics/canvas/elements/Basic/line.js +25 -25
  47. package/src/graphics/canvas/elements/Basic/points.js +47 -47
  48. package/src/graphics/canvas/elements/Basic/polygon.js +6 -6
  49. package/src/graphics/canvas/elements/Basic/rect.js +45 -45
  50. package/src/graphics/canvas/elements/Chart/scatter.js +2 -2
  51. package/src/graphics/canvas/elements/Element.js +114 -114
  52. package/src/graphics/canvas/elements/index.js +12 -12
  53. package/src/graphics/canvas/index.js +14 -14
  54. package/src/graphics/canvas/utils/color.js +7 -7
  55. package/src/graphics/canvas/utils/floodFill.js +57 -57
  56. package/src/graphics/index.js +68 -68
  57. package/src/graphics/svg/Elements/Basic/circle.js +25 -25
  58. package/src/graphics/svg/Elements/Basic/ellipse.js +20 -20
  59. package/src/graphics/svg/Elements/Basic/foreignObject.js +32 -32
  60. package/src/graphics/svg/Elements/Basic/groupe.js +29 -29
  61. package/src/graphics/svg/Elements/Basic/image.js +32 -32
  62. package/src/graphics/svg/Elements/Basic/line.js +28 -28
  63. package/src/graphics/svg/Elements/Basic/link.js +30 -30
  64. package/src/graphics/svg/Elements/Basic/path.js +58 -58
  65. package/src/graphics/svg/Elements/Basic/polygon.js +31 -31
  66. package/src/graphics/svg/Elements/Basic/polyline.js +3 -3
  67. package/src/graphics/svg/Elements/Basic/rect.js +42 -42
  68. package/src/graphics/svg/Elements/Basic/text.js +25 -25
  69. package/src/graphics/svg/Elements/Derived/grid.js +8 -8
  70. package/src/graphics/svg/Elements/ZikoSvgElement.js +46 -46
  71. package/src/graphics/svg/Elements/index.js +14 -14
  72. package/src/graphics/svg/index.js +1 -1
  73. package/src/graphics/svg/svg.js +114 -114
  74. package/src/index.js +84 -88
  75. package/src/math/calculus/derivation/index.js +7 -0
  76. package/src/math/calculus/index.js +2 -1
  77. package/src/math/calculus/special-functions/bessel.js +30 -30
  78. package/src/math/calculus/special-functions/beta.js +37 -37
  79. package/src/math/calculus/special-functions/gamma.js +29 -29
  80. package/src/math/calculus/special-functions/index.js +4 -4
  81. package/src/math/complex/index.js +202 -202
  82. package/src/math/const.js +2 -2
  83. package/src/math/discret/Combinaison/index.js +33 -33
  84. package/src/math/discret/Conversion/index.js +85 -85
  85. package/src/math/discret/Logic/index.js +45 -45
  86. package/src/math/discret/Permutation/index.js +30 -30
  87. package/src/math/discret/Set/index.js +1 -1
  88. package/src/math/discret/Set/power-set.js +14 -14
  89. package/src/math/discret/Set/sub-set.js +10 -10
  90. package/src/math/discret/index.js +12 -23
  91. package/src/math/functions/helper.js +20 -0
  92. package/src/math/functions/index.js +161 -181
  93. package/src/math/index.js +32 -189
  94. package/src/math/matrix/Decomposition.js +90 -90
  95. package/src/math/matrix/LinearSystem.js +9 -9
  96. package/src/math/matrix/Matrix.js +716 -716
  97. package/src/math/matrix/index.js +2 -2
  98. package/src/math/random/index.js +172 -172
  99. package/src/math/signal/__np.py.txt +39 -39
  100. package/src/math/signal/conv.js +174 -174
  101. package/src/math/signal/fft.js +54 -54
  102. package/src/math/signal/filter.js +38 -38
  103. package/src/math/signal/functions.js +145 -145
  104. package/src/math/signal/index.js +109 -109
  105. package/src/math/statistics/Functions/index.js +99 -99
  106. package/src/math/statistics/index.js +15 -15
  107. package/src/math/utils/arithmetic.js +138 -138
  108. package/src/math/utils/checkers.js +29 -29
  109. package/src/math/utils/conversions.js +19 -19
  110. package/src/math/utils/discret.js +51 -51
  111. package/src/math/utils/index.js +101 -101
  112. package/src/math/utils/mapfun.js +49 -49
  113. package/src/reactivity/events/{Partiel/Input.js → Input.js} +62 -59
  114. package/src/reactivity/events/{Global/Pointer.js → Pointer.js} +232 -234
  115. package/src/reactivity/events/ZikoEvent.js +90 -90
  116. package/src/reactivity/events/{Global/Click.js → click.js} +60 -56
  117. package/src/reactivity/events/{Global/Clipboard.js → clipboard.js} +88 -84
  118. package/src/reactivity/events/{Global/CustomEvent.js → custom-event.js} +57 -53
  119. package/src/reactivity/events/{Global/Drag.js → drag.js} +136 -136
  120. package/src/reactivity/events/{Global/Focus.js → focus.js} +59 -56
  121. package/src/reactivity/events/{Partiel/Hash.js → hash.js} +47 -44
  122. package/src/reactivity/events/index.js +62 -62
  123. package/src/reactivity/events/{Global/Key.js → key.js} +102 -104
  124. package/src/reactivity/events/{Global/Mouse.js → mouse.js} +233 -230
  125. package/src/reactivity/events/{Global/Swipe.js → swipe.js} +149 -147
  126. package/src/reactivity/events/{Global/Wheel.js → wheel.js} +47 -44
  127. package/src/reactivity/hooks/{Contexte → contexte}/useSuccesifKeys.js +13 -13
  128. package/src/reactivity/hooks/{Decorators → decorators}/index.js +6 -6
  129. package/src/reactivity/hooks/{Decorators → decorators}/time.js +16 -16
  130. package/src/reactivity/hooks/{Decorators → decorators}/type.js +87 -87
  131. package/src/reactivity/hooks/head/index.js +5 -0
  132. package/src/reactivity/hooks/{UI → head}/useCssText.js +21 -21
  133. package/src/reactivity/hooks/{UI → head}/useFavIcon.js +37 -37
  134. package/src/reactivity/hooks/head/useHead.js +28 -0
  135. package/src/reactivity/hooks/head/useMeta.js +52 -0
  136. package/src/reactivity/hooks/{UI → head}/useTitle.js +29 -29
  137. package/src/reactivity/hooks/index.js +91 -85
  138. package/src/reactivity/hooks/{Interactions → interactions}/index.js +3 -3
  139. package/src/reactivity/hooks/{Interactions → interactions}/useBluetooth.js +47 -47
  140. package/src/reactivity/hooks/{Interactions → interactions}/useChannel.js +49 -49
  141. package/src/reactivity/hooks/{Interactions → interactions}/useEventEmmiter.js +63 -63
  142. package/src/reactivity/hooks/{Interactions → interactions}/useThread.js +43 -43
  143. package/src/reactivity/hooks/sensors/index.js +2 -0
  144. package/src/reactivity/hooks/{Sensors → sensors}/useBattery.js +35 -35
  145. package/src/reactivity/hooks/{Sensors → sensors}/useGeolocation.js +16 -16
  146. package/src/reactivity/hooks/{Storage → storage}/useStorage.js +72 -72
  147. package/src/reactivity/hooks/todo.md +26 -26
  148. package/src/reactivity/hooks/ui/index.js +5 -0
  149. package/src/reactivity/hooks/{UI → ui}/useMediaQuery.js +43 -43
  150. package/src/reactivity/hooks/{UI → ui}/useStyle.js +79 -79
  151. package/src/reactivity/hooks/{UI → ui}/useTheme.js +61 -61
  152. package/src/reactivity/idea +1 -1
  153. package/src/reactivity/index.js +11 -21
  154. package/src/reactivity/observer/attributes.js +28 -28
  155. package/src/reactivity/observer/children.js +36 -36
  156. package/src/reactivity/observer/index.js +6 -44
  157. package/src/reactivity/observer/intersection.js +43 -43
  158. package/src/reactivity/observer/mutation.js +112 -112
  159. package/src/reactivity/observer/resize.js +46 -46
  160. package/src/reactivity/observer/screen.js +44 -44
  161. package/src/reactivity/observer/screen.js.txt +83 -83
  162. package/src/reactivity/observer/screen.txt +12 -12
  163. package/src/time/animation.js +75 -75
  164. package/src/time/index.js +12 -54
  165. package/src/time/loop.js +87 -87
  166. package/src/time/utils/decorators.js +16 -16
  167. package/src/time/utils/ease.js +143 -143
  168. package/src/time/utils/index.js +17 -17
  169. package/src/time/utils/performance.js +15 -15
  170. package/src/time/utils/ui.js +25 -25
  171. package/src/types.js +73 -71
  172. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/accordion.js +42 -45
  173. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/collapsible.js +82 -82
  174. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/accordion/index.js +1 -1
  175. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/alert.js +80 -80
  176. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/palette.js +51 -51
  177. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/carousel/index.js +50 -50
  178. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/SubElements.js.txt +104 -104
  179. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/code-cell.js +194 -194
  180. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/code-note.js +71 -71
  181. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/index.js +1 -1
  182. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/code-note/sub-elements.js +66 -66
  183. package/src/{user-interface → ui}/elements/derived/elements/Swipper.js +3 -3
  184. package/src/{user-interface → ui}/elements/derived/elements/index.js +9 -9
  185. package/src/{user-interface/elements/derived/Flex.js → ui/elements/derived/flex/index.js} +102 -102
  186. package/src/{user-interface/elements/derived/Grid.js → ui/elements/derived/grid/index.js} +32 -32
  187. package/src/ui/elements/derived/index.js +12 -0
  188. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/menu/menu3d.js +259 -259
  189. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/modal/index.js +91 -91
  190. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/pagination/breadcrumbs.js +53 -53
  191. package/src/ui/elements/derived/slider/__ZikoUISlider__.js +112 -0
  192. package/src/ui/elements/derived/slider/hSlider.js +34 -0
  193. package/src/ui/elements/derived/slider/index.js +12 -0
  194. package/src/ui/elements/derived/slider/vSlider.js +27 -0
  195. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/__ZikoUISplitter__.js +61 -61
  196. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/hsplitter.js +39 -39
  197. package/src/ui/elements/derived/splitter/index.js +12 -0
  198. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/splitter/vsplitter.js +39 -39
  199. package/src/{user-interface/elements/derived/elements → ui/elements/derived}/tabs/index.js +179 -179
  200. package/src/{user-interface → ui}/elements/primitives/ZikoUIContainerElement.js +126 -126
  201. package/src/{user-interface → ui}/elements/primitives/ZikoUIElement.js +492 -480
  202. package/src/{user-interface → ui}/elements/primitives/embaded/html.js +19 -20
  203. package/src/{user-interface → ui}/elements/primitives/embaded/index.js +3 -3
  204. package/src/{user-interface → ui}/elements/primitives/embaded/pdf.js +16 -17
  205. package/src/{user-interface → ui}/elements/primitives/embaded/youtube.js +23 -25
  206. package/src/{user-interface → ui}/elements/primitives/index.js +7 -7
  207. package/src/{user-interface → ui}/elements/primitives/io/Form/index.js +41 -41
  208. package/src/{user-interface → ui}/elements/primitives/io/Form/index.js.txt +104 -104
  209. package/src/{user-interface → ui}/elements/primitives/io/Inputs/__helpers__.js +51 -51
  210. package/src/{user-interface → ui}/elements/primitives/io/Inputs/index.js +12 -12
  211. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input/index.js +98 -98
  212. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-camera/index.js +26 -26
  213. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-checkbox/index.js +25 -25
  214. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-color/index.js +15 -15
  215. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/index.js +2 -2
  216. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-date-time.js +13 -13
  217. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-date.js +13 -13
  218. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-date-time/input-time.js +13 -13
  219. package/src/ui/elements/primitives/io/Inputs/input-email-password/index.js +2 -0
  220. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-email-password/input-email.js +14 -14
  221. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-email-password/input-password.js +13 -13
  222. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/input-image.js +42 -42
  223. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-number/index.js +36 -36
  224. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-radio/index.js +25 -25
  225. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-search/index.js +45 -45
  226. package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-slider/index.js +34 -34
  227. package/src/{user-interface → ui}/elements/primitives/io/Select/index.js +19 -19
  228. package/src/{user-interface → ui}/elements/primitives/io/Textarea/index.js +17 -17
  229. package/src/{user-interface → ui}/elements/primitives/io/index.js +3 -3
  230. package/src/{user-interface → ui}/elements/primitives/list/index.js +138 -138
  231. package/src/{user-interface → ui}/elements/primitives/media/Audio/index.js +16 -16
  232. package/src/{user-interface → ui}/elements/primitives/media/Image/figure.js +18 -18
  233. package/src/{user-interface → ui}/elements/primitives/media/Image/image.js +36 -36
  234. package/src/ui/elements/primitives/media/Image/index.js +2 -0
  235. package/src/{user-interface → ui}/elements/primitives/media/Video/index.js +26 -26
  236. package/src/{user-interface → ui}/elements/primitives/media/__ZikoUIDynamicMediaELement__.js +46 -46
  237. package/src/{user-interface → ui}/elements/primitives/media/index.js +2 -2
  238. package/src/{user-interface → ui}/elements/primitives/misc/index.js +101 -100
  239. package/src/ui/elements/primitives/misc/xml-wrapper.js +37 -0
  240. package/src/{user-interface → ui}/elements/primitives/semantic/index.js +81 -81
  241. package/src/{user-interface → ui}/elements/primitives/table/elements.js +93 -93
  242. package/src/ui/elements/primitives/table/index.js +3 -0
  243. package/src/{user-interface → ui}/elements/primitives/table/table.js +115 -115
  244. package/src/{user-interface → ui}/elements/primitives/table/utils.js +11 -11
  245. package/src/{user-interface → ui}/elements/primitives/text/__ZikoUIText__.js +71 -71
  246. package/src/{user-interface → ui}/elements/primitives/text/heading.js +35 -35
  247. package/src/{user-interface → ui}/elements/primitives/text/index.js +2 -2
  248. package/src/{user-interface → ui}/elements/primitives/text/p.js +26 -26
  249. package/src/{user-interface → ui}/elements/primitives/text/text.js +80 -80
  250. package/src/ui/index.js +29 -0
  251. package/src/{user-interface → ui}/style/index.js +515 -509
  252. package/src/{user-interface → ui}/utils/index.js +69 -69
  253. package/src/reactivity/events/Global/Touch.js +0 -0
  254. package/src/reactivity/hooks/Sensors/index.js +0 -2
  255. package/src/reactivity/hooks/UI/index.js +0 -5
  256. package/src/user-interface/elements/derived/elements/splitter/index.js +0 -2
  257. package/src/user-interface/elements/derived/index.js +0 -3
  258. package/src/user-interface/elements/primitives/io/Inputs/input-email-password/index.js +0 -2
  259. package/src/user-interface/elements/primitives/media/Image/index.js +0 -2
  260. package/src/user-interface/elements/primitives/table/index.js +0 -3
  261. package/src/user-interface/index.js +0 -190
  262. /package/src/app/{globals/index.js → globals.js} +0 -0
  263. /package/src/reactivity/events/{Partiel/Media.js → media.js} +0 -0
  264. /package/src/{app/accessibility/index.js → reactivity/events/touch.js} +0 -0
  265. /package/src/reactivity/hooks/{Contexte → contexte}/index.js +0 -0
  266. /package/src/reactivity/hooks/{Interactions → interactions}/useSerial.js +0 -0
  267. /package/src/reactivity/hooks/{Interactions → interactions}/useUsb.js +0 -0
  268. /package/src/reactivity/hooks/{Sensors → sensors}/useCamera.js +0 -0
  269. /package/src/reactivity/hooks/{Sensors → sensors}/useMicro.js +0 -0
  270. /package/src/reactivity/hooks/{Sensors → sensors}/useOrientation.js +0 -0
  271. /package/src/reactivity/hooks/{Storage → storage}/index.js +0 -0
  272. /package/src/reactivity/hooks/{Storage → storage}/useCookie.js +0 -0
  273. /package/src/reactivity/hooks/{Storage → storage}/useIndexedDb.js +0 -0
  274. /package/src/reactivity/hooks/{UI → ui}/useCssLink.js +0 -0
  275. /package/src/reactivity/hooks/{UI → ui}/useLinearGradient.js +0 -0
  276. /package/src/reactivity/hooks/{UI → ui}/useRadialGradient.js +0 -0
  277. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/alert/index.js +0 -0
  278. /package/src/{user-interface → ui}/elements/derived/elements/Notification.js +0 -0
  279. /package/src/{user-interface → ui}/elements/derived/elements/Popover.js +0 -0
  280. /package/src/{user-interface → ui}/elements/derived/elements/Popup.js +0 -0
  281. /package/src/{user-interface → ui}/elements/derived/elements/Timeline.js +0 -0
  282. /package/src/{user-interface → ui}/elements/derived/elements/Toast.js +0 -0
  283. /package/src/{user-interface → ui}/elements/derived/elements/Treeview.js +0 -0
  284. /package/src/{user-interface → ui}/elements/derived/elements/columns.js +0 -0
  285. /package/src/{user-interface → ui}/elements/derived/elements/fab.js +0 -0
  286. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/menu/index.js +0 -0
  287. /package/src/{user-interface/elements/derived/elements → ui/elements/derived}/pagination/index.js +0 -0
  288. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/index.js +0 -0
  289. /package/src/{user-interface → ui}/elements/primitives/io/Inputs/input-file/input-file.js +0 -0
  290. /package/src/{user-interface → ui}/elements/primitives/list/elements.js +0 -0
  291. /package/src/{user-interface → ui}/elements/primitives/text/pre.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ziko",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "description": "a versatile JavaScript library offering a rich set of UI components, advanced mathematical utilities,Reactivity,animations,client side routing and graphics capabilities",
5
5
  "keywords": [
6
6
  "Zikojs",
@@ -89,6 +89,7 @@
89
89
  "@rollup/plugin-terser": "^0.4.4",
90
90
  "cross-env": "^7.0.3",
91
91
  "eslint": "^8.52.0",
92
+ "eslint-plugin-spellcheck": "^0.0.20",
92
93
  "jasmine": "^5.3.0",
93
94
  "rollup": "^4.1.5",
94
95
  "rollup-plugin-livereload": "^2.0.5",
@@ -1,41 +1,61 @@
1
- const mixin = (target, ...sources) => {
2
- sources.forEach(source => {
3
- Object.getOwnPropertyNames(source.prototype).forEach(name => {
4
- if (name !== 'constructor') {
5
- target[name] = source.prototype[name];
6
- }
7
- });
8
- });
9
- }
10
-
11
- class A {
12
- constructor(){
13
- this.msg="from A";
14
- }
15
- a() {
16
- console.log(this.msg);
17
- return this;
18
- }
19
- }
20
-
21
- class B{
22
- constructor(){
23
- this.msg="from B";
24
- }
25
- b() {
26
- console.log(this.msg);
27
- return this;
28
- }
29
- }
30
-
31
- class AB {
32
- constructor() {
33
- this.msg="from AB"
34
- mixin(this.__proto__, A, B);
35
- }
36
- }
37
-
38
- ab=new AB()
39
- export{
40
- mixin
41
- }
1
+ const __ExtractAll__ =(obj)=> {
2
+ const keys = Object.keys(obj);
3
+ for (let i = 0; i < keys.length; i++) {
4
+ const key = keys[i];
5
+ if (!["__ExtractAll__","__RemoveAll__","ExtractAll","RemoveAll"].includes(key)) {
6
+ globalThis[key] = obj[key];
7
+ }
8
+ }
9
+ }
10
+ const __RemoveAll__ =(obj)=> {
11
+ const keys = Object.keys(obj);
12
+ for (let i = 0; i < keys.length; i++) {
13
+ const key = keys[i];
14
+ if (key !== '__RemoveAll__') {
15
+ delete globalThis[key];
16
+ }
17
+ }
18
+ }
19
+ const mixin = (target, ...sources) => {
20
+ sources.forEach(source => {
21
+ Object.getOwnPropertyNames(source.prototype).forEach(name => {
22
+ if (name !== 'constructor') {
23
+ target[name] = source.prototype[name];
24
+ }
25
+ });
26
+ });
27
+ }
28
+
29
+ class A {
30
+ constructor(){
31
+ this.msg="from A";
32
+ }
33
+ a() {
34
+ console.log(this.msg);
35
+ return this;
36
+ }
37
+ }
38
+
39
+ class B{
40
+ constructor(){
41
+ this.msg="from B";
42
+ }
43
+ b() {
44
+ console.log(this.msg);
45
+ return this;
46
+ }
47
+ }
48
+
49
+ class AB {
50
+ constructor() {
51
+ this.msg="from AB"
52
+ mixin(this.__proto__, A, B);
53
+ }
54
+ }
55
+
56
+ // ab=new AB()
57
+ export{
58
+ mixin,
59
+ __ExtractAll__,
60
+ __RemoveAll__
61
+ }
package/src/app/index.js CHANGED
@@ -1,12 +1,21 @@
1
- export{
2
- App,
3
- } from "./app.js"
4
- export {
5
- Themes,
6
- LightThemes,
7
- DarkThemes
8
- } from "./themes/index.js";
9
- export {
10
- __Config__
11
- } from "./globals/index.js"
12
- export * from "./globals/index.js"
1
+ export * from "./ziko-app";
2
+ export * from "./json-style-sheet";
3
+ export * from "./spa"
4
+ export * from "./params"
5
+ export * from "./globals"
6
+ export * from "./spa-file-based-routing"
7
+
8
+ import * as __App__ from "./ziko-app"
9
+ import * as JsonStyleSheet from "./json-style-sheet"
10
+ import * as Spa from "./spa"
11
+ import * as Global from "./globals"
12
+ // import * as Params from "./params"
13
+
14
+ const App={
15
+ ...__App__,
16
+ ...JsonStyleSheet,
17
+ ...Spa,
18
+ ...Global,
19
+ // ...Params
20
+ }
21
+ export default App
@@ -0,0 +1,64 @@
1
+ import { json2css } from "../data";
2
+ class ZikoJsonStyleSheet{
3
+ constructor(JsonStyle={}){
4
+ this.cache={
5
+ JsonStyle,
6
+ isRenderd : false
7
+ }
8
+ this.target = globalThis?.document?.head;
9
+ this.element = document.createElement("style");
10
+ this.element.setAttribute("data-generator","zikojs");
11
+ this.write();
12
+ this.render()
13
+ }
14
+ get CssText(){
15
+ return json2css(this.cache.JsonStyle);
16
+ }
17
+ render(){
18
+ this.target.append(this.element);
19
+ this.cache.isRenderd = true;
20
+ return this;
21
+ }
22
+ unrender(){
23
+ if(this.target?.children?.length && [...this.target?.children].includes(this.element)) this.target.removeChild(this.element);
24
+ this.cache.isRenderd = false;
25
+ return this;
26
+ }
27
+ write(){
28
+ this.element.textContent = this.CssText;
29
+ return this;
30
+ }
31
+ style(styles, overwrite = false){
32
+ if(overwrite) this.clear();
33
+ Object.assign(this.cache.JsonStyle,styles);
34
+ this.write();
35
+ return this;
36
+ }
37
+ clear(){
38
+ this.cache.JsonStyle = {}
39
+ this.write();
40
+ return this;
41
+ }
42
+ // overrideGlobal(style){
43
+ // if(this.cache.JsonStyle["*"]){
44
+ // Object.assign(this.cache.JsonStyle["*"],style);
45
+ // }
46
+ // else Object.assign();
47
+ // this.write();
48
+ // return this;
49
+ // }
50
+ }
51
+
52
+ const jsonStyleSheet = JsonStyle =>new ZikoJsonStyleSheet(JsonStyle);
53
+ export {
54
+ jsonStyleSheet,
55
+ ZikoJsonStyleSheet
56
+ }
57
+
58
+
59
+ // p().style({color:"red"})
60
+ // jsonStyleSheet({
61
+ // p:{
62
+ // color : "green !important"
63
+ // }
64
+ // })
@@ -0,0 +1,40 @@
1
+ function parseQueryParams(queryString) {
2
+ const params = {};
3
+ queryString.replace(/[A-Z0-9]+?=([\w|:|\/\.]*)/gi, (match) => {
4
+ const [key, value] = match.split('=');
5
+ params[key] = value;
6
+ });
7
+ return params;
8
+ }
9
+
10
+ function defineParamsGetter(target ){
11
+ Object.defineProperties(target, {
12
+ 'QueryParams': {
13
+ get: function() {
14
+ return parseQueryParams(globalThis.location.search.substring(1));
15
+ },
16
+ configurable: false,
17
+ enumerable: true
18
+ },
19
+ 'HashParams': {
20
+ get: function() {
21
+ const hash = globalThis.location.hash.substring(1);
22
+ return hash.split("#");
23
+ },
24
+ configurable: false,
25
+ enumerable: true
26
+ }
27
+ });
28
+ }
29
+
30
+
31
+ /*
32
+
33
+ /users?name=ziko&age=26
34
+ /users#name=ziko
35
+
36
+ */
37
+
38
+ export{
39
+ defineParamsGetter
40
+ }
@@ -0,0 +1,58 @@
1
+
2
+ function routesMatcher(mask, route) {
3
+ const maskSegments = mask.split('/');
4
+ const routeSegments = route.split('/');
5
+ if (maskSegments.length !== routeSegments.length) {
6
+ return false;
7
+ }
8
+ for (let i = 0; i < maskSegments.length; i++) {
9
+ const maskSegment = maskSegments[i];
10
+ const routeSegment = routeSegments[i];
11
+ if (maskSegment.startsWith(':')) {
12
+ continue;
13
+ } else if (maskSegment !== routeSegment) {
14
+ return false;
15
+ }
16
+ }
17
+ return true;
18
+ }
19
+ function dynamicRoutesParser(mask, route) {
20
+ const maskSegments = mask.split('/');
21
+ const routeSegments = route.split('/');
22
+ const params = {};
23
+ if (maskSegments.length !== routeSegments.length) {
24
+ return params;
25
+ }
26
+ for (let i = 0; i < maskSegments.length; i++) {
27
+ const maskSegment = maskSegments[i];
28
+ const routeSegment = routeSegments[i];
29
+ if (maskSegment.startsWith(':')) {
30
+ const paramName = maskSegment.slice(1);
31
+ params[paramName] = routeSegment;
32
+ } else if (maskSegment !== routeSegment) {
33
+ return {};
34
+ }
35
+ }
36
+ return params;
37
+ }
38
+
39
+ function isDynamic(path) {
40
+ const DynamicPattern = /:\w+/;
41
+ return DynamicPattern.test(path);
42
+ }
43
+
44
+ // // Example usage:
45
+ // const mask = "/:id/id/:lang/lang";
46
+ // const route = "/id/5/lang/fr";
47
+ // console.log(DynamicRouteMatcher(mask, route)); // Should return true
48
+
49
+ export {
50
+ routesMatcher,
51
+ dynamicRoutesParser,
52
+ isDynamic
53
+ }
54
+
55
+ // // Example usage:
56
+ // const mask = "app/lang/:lang/id/:id";
57
+ // const route = "app/lang/en/id/7";
58
+ // console.log(dynamicRoutesParser(mask, route)); // Should return { lang: "en", id: "7" }
@@ -0,0 +1,74 @@
1
+ import { SPA } from "./spa";
2
+ import { Section } from "../ui";
3
+ // import.meta.glob('./src/pages/**/*.js')
4
+ async function FileBasedRouting(pages /* use import.meta.glob */){
5
+ const routes = Object.keys(pages)
6
+ const root = findCommonPath(routes)
7
+ // console.log({root})
8
+ const pairs = {}
9
+ for(let i=0; i<routes.length; i++){
10
+ const module = await pages[routes[i]]()
11
+ const component = await module.default
12
+ Object.assign(pairs,{[customPath(routes[i], root)]:component})
13
+ }
14
+ return SPA({
15
+ target : document.body,
16
+ routes : {
17
+ "/" : ()=>{},
18
+ ...pairs
19
+ },
20
+ wrapper : Section()
21
+ })
22
+ }
23
+ function customPath(inputPath, root = './src/pages', extensions = ['js', 'ts']) {
24
+ if(root.at(-1)==="/") root = root.slice(0, -1)
25
+ const normalizedPath = inputPath.replace(/\\/g, '/').replace(/\[(\w+)\]/g, '$1/:$1');
26
+ const parts = normalizedPath.split('/');
27
+ const rootParts = root.split('/');
28
+ const rootIndex = parts.indexOf(rootParts[rootParts.length - 1]);
29
+ if (rootIndex !== -1) {
30
+ const subsequentParts = parts.slice(rootIndex + 1);
31
+ const lastPart = subsequentParts[subsequentParts.length - 1];
32
+ const isIndexFile = lastPart === 'index.js' || lastPart === 'index.ts';
33
+ const hasValidExtension = extensions.some(ext => lastPart === `.${ext}` || lastPart.endsWith(`.${ext}`));
34
+ if (isIndexFile) {
35
+ return '/' + (subsequentParts.length > 1 ? subsequentParts.slice(0, -1).join('/') : '');
36
+ }
37
+ if (hasValidExtension) {
38
+ return '/' + subsequentParts.join('/').replace(/\.(js|ts)$/, '');
39
+ }
40
+ }
41
+ return '';
42
+ }
43
+ function findCommonPath(paths) {
44
+ if (paths.length === 0) return '';
45
+ const splitPaths = paths.map(path => path.split('/'));
46
+ const minLength = Math.min(...splitPaths.map(parts => parts.length));
47
+ let commonParts = [];
48
+ for (let i = 0; i < minLength; i++) {
49
+ const part = splitPaths[0][i];
50
+ if (splitPaths.every(parts => parts[i] === part || parts[i].startsWith('['))) {
51
+ commonParts.push(part);
52
+ } else {
53
+ break;
54
+ }
55
+ }
56
+ const commonPath = commonParts.join('/') + (commonParts.length ? '/' : '');
57
+ return commonPath;
58
+ }
59
+
60
+ // // Example usage
61
+ // const inputPaths = [
62
+ // './src/pages/[blog]/[lang]/index.js',
63
+ // './src/pages/[blog]/index.js',
64
+ // './src/pages/about.js',
65
+ // './src/pages/articles/[data]/[color]/index.js',
66
+ // './src/pages/articles/a1.js',
67
+ // './src/pages/index.js',
68
+ // './src/pages/me.js'
69
+ // ];
70
+
71
+ // console.log(findCommonPath(inputPaths)); // Output: './src/pages/'
72
+ export{
73
+ FileBasedRouting,
74
+ }
package/src/app/spa.js ADDED
@@ -0,0 +1,55 @@
1
+ import { text } from "../ui";
2
+ import { dynamicRoutesParser,routesMatcher,isDynamic } from "./routes";
3
+ import { ZikoApp } from "./ziko-app";
4
+ class ZikoSPA extends ZikoApp{
5
+ constructor({head, wrapper, target, routes}){
6
+ super({head, wrapper, target})
7
+ this.routes=new Map([
8
+ ["404",text("Error 404")],
9
+ ...Object.entries(routes)
10
+ ]);
11
+ this.clear();
12
+ globalThis.onpopstate = this.render(location.pathname);
13
+ }
14
+ clear(){
15
+ [...this.routes].forEach(n=>{
16
+ !isDynamic(n[0]) && n[1]?.isZikoUIElement && n[1].unrender()
17
+ })
18
+ // this.wrapper.clear();
19
+ return this;
20
+ }
21
+ render(path){
22
+ const [mask, callback] = [...this.routes].find(route=>routesMatcher(route[0],path));
23
+ let element ;
24
+ if(isDynamic(mask)){
25
+ const params = dynamicRoutesParser(mask, path)
26
+ element = callback.call(this,params)
27
+ }
28
+ else {
29
+ callback?.isZikoUIElement && callback.render(this.wrapper);
30
+ if(typeof callback === "function") element = callback();
31
+ }
32
+ if(element?.isZikoUIElement) element.render(this.wrapper);
33
+ // if(element?.isZikoApp) element.render(this.wrapper);
34
+ if(element instanceof Promise){
35
+ element.then(e=>e.render(this.wrapper))
36
+ }
37
+ globalThis.history.pushState({}, "", path);
38
+ return this;
39
+ }
40
+ }
41
+ const SPA=({head, wrapper, target, routes})=>new ZikoSPA({head, wrapper, target, routes});
42
+
43
+ export {
44
+ ZikoSPA,
45
+ SPA
46
+ }
47
+
48
+
49
+ /*
50
+ // Static
51
+ S.get("/url",wrapper)
52
+ // Dynamique
53
+ s.get("/url/name/:name/id/:id",(path,name,id)=>handler())
54
+ // regEx
55
+ */
@@ -0,0 +1,39 @@
1
+ import { ZikoHead , useHead} from "../reactivity/hooks/Head";
2
+ class ZikoApp {
3
+ constructor({head = null, wrapper = null, target = null}){
4
+ this.head = head;
5
+ this.wrapper = wrapper;
6
+ this.target = target;
7
+ this.init()
8
+ }
9
+ get isZikoApp(){
10
+ return true;
11
+ }
12
+ init(){
13
+ this.head && this.setHead(this.head);
14
+ this.wrapper && this.setWrapper(this.wrapper);
15
+ this.target && this.setTarget(this.target);
16
+ if(this.wrapper && this.target)this.wrapper.render(this.target);
17
+ }
18
+ setTarget(target){
19
+ if(target instanceof HTMLElement) this.target = target;
20
+ else if (typeof target === "string") this.target = globalThis?.document?.querySelector(target);
21
+ return this;
22
+ }
23
+ setWrapper(wrapper){
24
+ if(wrapper?.isZikoUIElement) this.wrapper = wrapper;
25
+ else if(typeof wrapper === "function") this.wrapper = wrapper();
26
+ return this;
27
+ }
28
+ setHead(head){
29
+ if(head instanceof ZikoHead) this.head = head;
30
+ else this.head = useHead(head);
31
+ return this;
32
+ }
33
+
34
+ }
35
+ const App = ({head, wrapper, target}) => new ZikoApp({head, wrapper, target})
36
+ export{
37
+ ZikoApp,
38
+ App
39
+ }
@@ -1,14 +1,14 @@
1
- import { preload } from "./preload"
2
-
3
- async function fetchdom(url='https://github.com/zakarialaoui10'){
4
- const data=await fetch(url)
5
- const html=await data.text()
6
- const dom= new DOMParser().parseFromString(html,'text/xml')
7
- return dom.documentElement
8
- }
9
- function fetchdomSync(url='https://github.com/zakarialaoui10'){
10
- const data=preload(url);
11
- const dom= new DOMParser().parseFromString(data,'text/xml')
12
- return dom.documentElement;
13
- }
1
+ import { preload } from "./preload"
2
+
3
+ async function fetchdom(url='https://github.com/zakarialaoui10'){
4
+ const data=await fetch(url)
5
+ const html=await data.text()
6
+ const dom= new DOMParser().parseFromString(html,'text/xml')
7
+ return dom.documentElement
8
+ }
9
+ function fetchdomSync(url='https://github.com/zakarialaoui10'){
10
+ const data=preload(url);
11
+ const dom= new DOMParser().parseFromString(data,'text/xml')
12
+ return dom.documentElement;
13
+ }
14
14
  export {fetchdom,fetchdomSync}
@@ -1,4 +1,4 @@
1
- export { preload } from "./preload";
2
- import { fetchdom ,fetchdomSync } from "./fetchdom";
3
- globalThis.fetchdom=fetchdom
1
+ export { preload } from "./preload";
2
+ import { fetchdom ,fetchdomSync } from "./fetchdom";
3
+ globalThis.fetchdom=fetchdom
4
4
  globalThis.fetchdomSync=fetchdomSync
@@ -1,11 +1,11 @@
1
- const preload=(url)=>{
2
- const xhr = new XMLHttpRequest();
3
- xhr.open("GET", url, false);
4
- xhr.send();
5
- if (xhr.status === 200) {
6
- return xhr.responseText;
7
- } else {
8
- throw new Error(`Failed to fetch data from ${url}. Status: ${xhr.status}`);
9
- }
10
- }
1
+ const preload=(url)=>{
2
+ const xhr = new XMLHttpRequest();
3
+ xhr.open("GET", url, false);
4
+ xhr.send();
5
+ if (xhr.status === 200) {
6
+ return xhr.responseText;
7
+ } else {
8
+ throw new Error(`Failed to fetch data from ${url}. Status: ${xhr.status}`);
9
+ }
10
+ }
11
11
  export {preload}