ziko 0.0.17 → 0.0.19
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.
- package/README.md +91 -200
- package/package.json +17 -46
- package/src/__helpers__/index.js +61 -61
- package/src/app/json-style-sheet.js +64 -64
- package/src/app/spa-file-based-routing.js +0 -1
- package/src/app/ziko-app.js +38 -38
- package/src/data/api/fetchdom.js +13 -13
- package/src/data/api/index.js +3 -3
- package/src/data/api/preload.js +10 -10
- package/src/data/converter/adoc.js +130 -130
- package/src/data/converter/array.js +42 -42
- package/src/data/converter/canvas.js +24 -24
- package/src/data/converter/css.js +36 -36
- package/src/data/converter/csv.js +32 -32
- package/src/data/converter/idea.txt +9 -9
- package/src/data/converter/index.js +36 -36
- package/src/data/converter/json.js +80 -80
- package/src/data/converter/markdown.js +95 -95
- package/src/data/converter/object.js +69 -69
- package/src/data/converter/svg.js +10 -10
- package/src/data/datatypes/color.js +11 -0
- package/src/data/index.js +16 -16
- package/src/data/parser/xml.js +46 -46
- package/src/data/string/patterns.js +11 -11
- package/src/data/string/string.js +169 -169
- package/src/global/{themes → _themes}/dark.js +884 -884
- package/src/global/{themes → _themes}/index.js +10 -10
- package/src/global/{themes → _themes}/light.js +254 -254
- package/src/global/app/index.js +45 -45
- package/src/global/component/index.js +38 -38
- package/src/global/globals/index.js +20 -20
- package/src/global/index.js +3 -11
- package/src/global/params/index.js +39 -39
- package/src/global/router/index.js +66 -66
- package/src/global/seo/index.js +42 -42
- package/src/graphics/canvas/canvas.js +176 -189
- package/src/graphics/canvas/elements/Basic/arc.js +42 -42
- package/src/graphics/canvas/elements/Basic/line.js +25 -25
- package/src/graphics/canvas/elements/Basic/points.js +47 -47
- package/src/graphics/canvas/elements/Basic/polygon.js +6 -6
- package/src/graphics/canvas/elements/Basic/rect.js +45 -45
- package/src/graphics/canvas/elements/Chart/scatter.js +2 -2
- package/src/graphics/canvas/elements/Element.js +114 -114
- package/src/graphics/canvas/elements/index.js +13 -13
- package/src/graphics/canvas/index.js +2 -15
- package/src/graphics/canvas/utils/color.js +7 -7
- package/src/graphics/canvas/utils/floodFill.js +57 -57
- package/src/graphics/index.js +10 -69
- package/src/graphics/svg/Elements/Basic/circle.js +29 -26
- package/src/graphics/svg/Elements/Basic/ellipse.js +24 -21
- package/src/graphics/svg/Elements/Basic/{foreignObject.js → foreign-object.js} +36 -33
- package/src/graphics/svg/Elements/Basic/groupe.js +32 -29
- package/src/graphics/svg/Elements/Basic/image.js +36 -33
- package/src/graphics/svg/Elements/Basic/index.js +11 -0
- package/src/graphics/svg/Elements/Basic/line.js +32 -29
- package/src/graphics/svg/Elements/Basic/link.js +33 -30
- package/src/graphics/svg/Elements/Basic/path.js +62 -59
- package/src/graphics/svg/Elements/Basic/polygon.js +31 -31
- package/src/graphics/svg/Elements/Basic/polyline.js +7 -4
- package/src/graphics/svg/Elements/Basic/rect.js +46 -43
- package/src/graphics/svg/Elements/Basic/text.js +29 -26
- package/src/graphics/svg/Elements/Derived/grid.js +8 -8
- package/src/graphics/svg/Elements/Derived/index.js +1 -0
- package/src/graphics/svg/Elements/index.js +2 -14
- package/src/graphics/svg/Elements/{ZikoSvgElement.js → ziko-svg-element.js} +48 -46
- package/src/graphics/svg/index.js +2 -2
- package/src/graphics/svg/svg.js +68 -114
- package/src/index.js +85 -84
- package/src/math/calculus/index.js +2 -2
- package/src/math/calculus/special-functions/bessel.js +30 -30
- package/src/math/calculus/special-functions/beta.js +37 -37
- package/src/math/calculus/special-functions/gamma.js +29 -29
- package/src/math/calculus/special-functions/index.js +4 -4
- package/src/math/complex/index.js +202 -202
- package/src/math/const.js +2 -2
- package/src/math/discret/Combinaison/index.js +33 -33
- package/src/math/discret/Conversion/index.js +85 -85
- package/src/math/discret/Logic/index.js +45 -45
- package/src/math/discret/Permutation/index.js +30 -30
- package/src/math/discret/Set/index.js +1 -1
- package/src/math/discret/Set/power-set.js +14 -14
- package/src/math/discret/Set/sub-set.js +10 -10
- package/src/math/discret/index.js +11 -11
- package/src/math/functions/index.js +161 -161
- package/src/math/index.js +32 -32
- package/src/math/matrix/Decomposition.js +90 -90
- package/src/math/matrix/LinearSystem.js +9 -9
- package/src/math/matrix/Matrix.js +716 -716
- package/src/math/matrix/index.js +2 -2
- package/src/math/random/index.js +172 -172
- package/src/math/signal/__np.py.txt +39 -39
- package/src/math/signal/conv.js +174 -174
- package/src/math/signal/fft.js +54 -54
- package/src/math/signal/filter.js +38 -38
- package/src/math/signal/functions.js +145 -145
- package/src/math/signal/index.js +109 -109
- package/src/math/statistics/Functions/index.js +99 -99
- package/src/math/statistics/index.js +15 -15
- package/src/math/utils/arithmetic.js +138 -138
- package/src/math/utils/checkers.js +29 -29
- package/src/math/utils/conversions.js +19 -19
- package/src/math/utils/discret.js +51 -51
- package/src/math/utils/index.js +101 -101
- package/src/math/utils/mapfun.js +49 -49
- package/src/reactivity/events/Input.js +61 -61
- package/src/reactivity/events/Pointer.js +231 -231
- package/src/reactivity/events/ZikoEvent.js +90 -90
- package/src/reactivity/events/click.js +59 -59
- package/src/reactivity/events/clipboard.js +87 -87
- package/src/reactivity/events/custom-event.js +56 -56
- package/src/reactivity/events/drag.js +136 -136
- package/src/reactivity/events/focus.js +58 -58
- package/src/reactivity/events/hash.js +46 -46
- package/src/reactivity/events/index.js +12 -63
- package/src/reactivity/events/key.js +101 -101
- package/src/reactivity/events/mouse.js +232 -232
- package/src/reactivity/events/swipe.js +149 -149
- package/src/reactivity/events/wheel.js +46 -46
- package/src/reactivity/hooks/{contexte → Contexte}/useSuccesifKeys.js +13 -13
- package/src/reactivity/hooks/{decorators → Decorators}/index.js +6 -6
- package/src/reactivity/hooks/{decorators → Decorators}/time.js +16 -16
- package/src/reactivity/hooks/{decorators → Decorators}/type.js +87 -87
- package/src/reactivity/hooks/{head/useCssText.js → Head/_useCssText.js} +20 -20
- package/src/reactivity/hooks/{head → Head}/index.js +5 -5
- package/src/reactivity/hooks/{head → Head}/useFavIcon.js +37 -37
- package/src/reactivity/hooks/{head → Head}/useHead.js +27 -27
- package/src/reactivity/hooks/{head → Head}/useMeta.js +52 -52
- package/src/reactivity/hooks/{head → Head}/useTitle.js +29 -29
- package/src/reactivity/hooks/{interactions/useBluetooth.js → Interactions/_useBluetooth.js} +47 -47
- package/src/reactivity/hooks/{interactions → Interactions}/index.js +4 -4
- package/src/reactivity/hooks/{interactions → Interactions}/useChannel.js +49 -49
- package/src/reactivity/hooks/{interactions → Interactions}/useEventEmmiter.js +63 -63
- package/src/reactivity/hooks/{interactions → Interactions}/useThread.js +43 -43
- package/src/reactivity/hooks/Sensors/index.js +2 -0
- package/src/reactivity/hooks/{sensors → Sensors}/useBattery.js +35 -35
- package/src/reactivity/hooks/{sensors → Sensors}/useGeolocation.js +16 -16
- package/src/reactivity/hooks/{storage → Storage}/useStorage.js +72 -72
- package/src/reactivity/hooks/{ui → UI}/index.js +6 -5
- package/src/reactivity/hooks/{ui → UI}/useMediaQuery.js +43 -43
- package/src/reactivity/hooks/UI/useRoot.js +39 -0
- package/src/reactivity/hooks/{ui → UI}/useStyle.js +79 -79
- package/src/reactivity/hooks/{ui → UI}/useTheme.js +61 -61
- package/src/reactivity/hooks/index.js +8 -91
- package/src/reactivity/hooks/todo.md +26 -26
- package/src/reactivity/idea +1 -1
- package/src/reactivity/index.js +11 -11
- package/src/reactivity/observer/attributes.js +28 -28
- package/src/reactivity/observer/children.js +36 -36
- package/src/reactivity/observer/index.js +6 -6
- package/src/reactivity/observer/intersection.js +43 -43
- package/src/reactivity/observer/mutation.js +112 -112
- package/src/reactivity/observer/resize.js +46 -46
- package/src/reactivity/observer/screen.js +44 -44
- package/src/reactivity/observer/screen.js.txt +83 -83
- package/src/reactivity/observer/screen.txt +12 -12
- package/src/time/animation.js +75 -75
- package/src/time/index.js +11 -11
- package/src/time/loop.js +87 -87
- package/src/time/utils/decorators.js +16 -16
- package/src/time/utils/ease.js +143 -143
- package/src/time/utils/index.js +17 -17
- package/src/time/utils/performance.js +15 -15
- package/src/time/utils/ui.js +25 -25
- package/src/types.js +73 -73
- package/src/ui/elements/derived/accordion/accordion.js +42 -42
- package/src/ui/elements/derived/accordion/collapsible.js +82 -82
- package/src/ui/elements/derived/accordion/index.js +1 -1
- package/src/ui/elements/derived/alert/alert.js +80 -80
- package/src/ui/elements/derived/alert/palette.js +51 -51
- package/src/ui/elements/derived/carousel/index.js +50 -50
- package/src/ui/elements/derived/code-note/SubElements.js.txt +104 -104
- package/src/ui/elements/derived/code-note/code-cell.js +194 -194
- package/src/ui/elements/derived/code-note/code-note.js +71 -71
- package/src/ui/elements/derived/code-note/index.js +1 -1
- package/src/ui/elements/derived/code-note/sub-elements.js +66 -66
- package/src/ui/elements/derived/elements/Swipper.js +3 -3
- package/src/ui/elements/derived/elements/index.js +9 -9
- package/src/ui/elements/derived/flex/index.js +102 -102
- package/src/ui/elements/derived/grid/index.js +32 -32
- package/src/ui/elements/derived/index.js +11 -11
- package/src/ui/elements/derived/menu/menu3d.js +259 -259
- package/src/ui/elements/derived/modal/index.js +91 -91
- package/src/ui/elements/derived/pagination/breadcrumbs.js +53 -53
- package/src/ui/elements/derived/slider/__ZikoUISlider__.js +111 -111
- package/src/ui/elements/derived/slider/hSlider.js +33 -33
- package/src/ui/elements/derived/slider/index.js +11 -11
- package/src/ui/elements/derived/slider/vSlider.js +26 -26
- package/src/ui/elements/derived/splitter/__ZikoUISplitter__.js +61 -61
- package/src/ui/elements/derived/splitter/hsplitter.js +39 -39
- package/src/ui/elements/derived/splitter/index.js +11 -11
- package/src/ui/elements/derived/splitter/vsplitter.js +39 -39
- package/src/ui/elements/derived/tabs/index.js +179 -179
- package/src/ui/elements/primitives/ZikoUIContainerElement.js +163 -126
- package/src/ui/elements/primitives/ZikoUIElement.js +492 -492
- package/src/ui/elements/primitives/embaded/html.js +19 -19
- package/src/ui/elements/primitives/embaded/index.js +3 -3
- package/src/ui/elements/primitives/embaded/pdf.js +16 -16
- package/src/ui/elements/primitives/embaded/youtube.js +23 -23
- package/src/ui/elements/primitives/index.js +7 -7
- package/src/ui/elements/primitives/io/Form/index.js +41 -41
- package/src/ui/elements/primitives/io/Form/index.js.txt +104 -104
- package/src/ui/elements/primitives/io/Inputs/__helpers__.js +51 -51
- package/src/ui/elements/primitives/io/Inputs/index.js +12 -12
- package/src/ui/elements/primitives/io/Inputs/input/index.js +98 -98
- package/src/ui/elements/primitives/io/Inputs/input-camera/index.js +26 -26
- package/src/ui/elements/primitives/io/Inputs/input-checkbox/index.js +25 -25
- package/src/ui/elements/primitives/io/Inputs/input-color/index.js +15 -15
- package/src/ui/elements/primitives/io/Inputs/input-date-time/index.js +2 -2
- package/src/ui/elements/primitives/io/Inputs/input-date-time/input-date-time.js +13 -13
- package/src/ui/elements/primitives/io/Inputs/input-date-time/input-date.js +13 -13
- package/src/ui/elements/primitives/io/Inputs/input-date-time/input-time.js +13 -13
- package/src/ui/elements/primitives/io/Inputs/input-email-password/index.js +1 -1
- package/src/ui/elements/primitives/io/Inputs/input-email-password/input-email.js +14 -14
- package/src/ui/elements/primitives/io/Inputs/input-email-password/input-password.js +13 -13
- package/src/ui/elements/primitives/io/Inputs/input-file/input-image.js +42 -42
- package/src/ui/elements/primitives/io/Inputs/input-number/index.js +36 -36
- package/src/ui/elements/primitives/io/Inputs/input-radio/index.js +25 -25
- package/src/ui/elements/primitives/io/Inputs/input-search/index.js +45 -45
- package/src/ui/elements/primitives/io/Inputs/input-slider/index.js +34 -34
- package/src/ui/elements/primitives/io/Select/index.js +19 -19
- package/src/ui/elements/primitives/io/Textarea/index.js +17 -17
- package/src/ui/elements/primitives/io/index.js +3 -3
- package/src/ui/elements/primitives/list/index.js +138 -138
- package/src/ui/elements/primitives/media/Audio/index.js +16 -16
- package/src/ui/elements/primitives/media/Image/figure.js +18 -18
- package/src/ui/elements/primitives/media/Image/image.js +36 -36
- package/src/ui/elements/primitives/media/Image/index.js +1 -1
- package/src/ui/elements/primitives/media/Video/index.js +26 -26
- package/src/ui/elements/primitives/media/__ZikoUIDynamicMediaELement__.js +46 -46
- package/src/ui/elements/primitives/media/index.js +2 -2
- package/src/ui/elements/primitives/misc/index.js +101 -101
- package/src/ui/elements/primitives/misc/xml-wrapper.js +3 -2
- package/src/ui/elements/primitives/semantic/index.js +81 -81
- package/src/ui/elements/primitives/table/elements.js +93 -93
- package/src/ui/elements/primitives/table/index.js +2 -2
- package/src/ui/elements/primitives/table/table.js +115 -115
- package/src/ui/elements/primitives/table/utils.js +11 -11
- package/src/ui/elements/primitives/text/__ZikoUIText__.js +71 -71
- package/src/ui/elements/primitives/text/heading.js +35 -35
- package/src/ui/elements/primitives/text/index.js +2 -2
- package/src/ui/elements/primitives/text/p.js +26 -26
- package/src/ui/elements/primitives/text/text.js +80 -80
- package/src/ui/index.js +37 -37
- package/src/ui/style/index.js +504 -515
- package/src/ui/utils/index.js +69 -69
- package/starter/bin/index.js +11 -11
- package/dist/ziko.cjs +0 -14018
- package/dist/ziko.js +0 -14028
- package/dist/ziko.min.js +0 -9
- package/dist/ziko.mjs +0 -13688
- package/src/graphics/canvas/elements/Groupe.js +0 -0
- package/src/graphics/canvas/elements/grid.js +0 -0
- package/src/graphics/canvas/filter/index.js +0 -0
- package/src/graphics/canvas/paint/index.js +0 -0
- package/src/reactivity/hooks/sensors/index.js +0 -2
- /package/src/reactivity/hooks/{contexte → Contexte}/index.js +0 -0
- /package/src/reactivity/hooks/{interactions → Interactions}/useSerial.js +0 -0
- /package/src/reactivity/hooks/{interactions → Interactions}/useUsb.js +0 -0
- /package/src/reactivity/hooks/{sensors → Sensors}/useCamera.js +0 -0
- /package/src/reactivity/hooks/{sensors → Sensors}/useMicro.js +0 -0
- /package/src/reactivity/hooks/{sensors → Sensors}/useOrientation.js +0 -0
- /package/src/reactivity/hooks/{storage → Storage}/index.js +0 -0
- /package/src/reactivity/hooks/{storage → Storage}/useCookie.js +0 -0
- /package/src/reactivity/hooks/{storage → Storage}/useIndexedDb.js +0 -0
- /package/src/reactivity/hooks/{ui → UI}/useCssLink.js +0 -0
- /package/src/reactivity/hooks/{ui → UI}/useLinearGradient.js +0 -0
- /package/src/reactivity/hooks/{ui → UI}/useRadialGradient.js +0 -0
package/README.md
CHANGED
|
@@ -1,233 +1,131 @@
|
|
|
1
1
|
<img src="docs/assets/zikojs.png" width="200" align="right" alt="zikojs logo">
|
|
2
|
-
|
|
3
|
-
*💡 **Zikojs** a versatile JavaScript library offering a rich set of UI components, advanced mathematical utilities,Reactivity,animations,client side routing and graphics capabilities*
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
*💡 **Zikojs** a versatile JavaScript library offering a rich set of UI components, advanced mathematical utilities,Reactivity,animations,client side routing and graphics capabilities*
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
## Install
|
|
8
6
|
```bash
|
|
9
7
|
npm install ziko
|
|
10
8
|
```
|
|
11
|
-
# ⚡ Get started
|
|
12
|
-
## Node
|
|
13
|
-
```bash
|
|
14
|
-
npx create-ziko-app [My_App]
|
|
15
|
-
```
|
|
16
|
-
```
|
|
17
|
-
cd [My_App]
|
|
18
|
-
npm run dev
|
|
19
|
-
```
|
|
20
|
-
## Browser
|
|
21
|
-
```html
|
|
22
|
-
<!DOCTYPE html>
|
|
23
|
-
<html lang="en">
|
|
24
|
-
<head>
|
|
25
|
-
<meta charset="UTF-8">
|
|
26
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
27
|
-
<title>zikojs</title>
|
|
28
|
-
</head>
|
|
29
|
-
<body>
|
|
30
|
-
<script src="https://cdn.jsdelivr.net/npm/ziko@latest/dist/ziko.js"></script>
|
|
31
|
-
<script>
|
|
32
|
-
Ziko.ExtractAll()
|
|
33
|
-
const hello = p("Hello World").style({
|
|
34
|
-
color: "gold",
|
|
35
|
-
fontSize: "30px",
|
|
36
|
-
fontWeight: "bold"
|
|
37
|
-
})
|
|
38
|
-
.onPtrEnter(e=>e.target.st.color(Random.color()))
|
|
39
|
-
.onPtrLeave(e=>e.target.st.color("gold"))
|
|
40
|
-
Ziko.App(
|
|
41
|
-
hello
|
|
42
|
-
).style({
|
|
43
|
-
width: "100vw",
|
|
44
|
-
height: "100vh",
|
|
45
|
-
background: "darkblue"
|
|
46
|
-
}).vertical(0, "space-around")
|
|
47
|
-
|
|
48
|
-
</script>
|
|
49
|
-
</body>
|
|
50
|
-
</html>
|
|
51
|
-
```
|
|
52
|
-
## Documentation
|
|
53
9
|
## 🎬 Demos
|
|
54
10
|
- ### [ Windows entanglement using zikojs and ziko-three ](https://www.linkedin.com/feed/update/urn:li:activity:7144023650394918913/)
|
|
55
11
|
|
|
56
|
-
##
|
|
12
|
+
## Features :
|
|
57
13
|
|
|
58
|
-
|
|
59
|
-
### 🔰 No Template Engines :
|
|
14
|
+
### 🔰 Seamlessly operates in both browser and Node.js environments
|
|
60
15
|
|
|
61
|
-
|
|
62
|
-
|
|
16
|
+
### 🔰 Mathematical Utilities & Tips
|
|
17
|
+
|
|
18
|
+
- ***Flexible Math Functions*** :
|
|
63
19
|
|
|
64
|
-
|
|
65
|
-
|
|
20
|
+
ZikoJS offers flexible math utilities, such as the `mapfun` function, which allows mapping standard mathematical operations to complex and nested data structures.
|
|
21
|
+
For example, the `cos` function in ZikoJS is built on top of mapfun, enabling it to handle multiple arguments with diverse types (numbers, arrays, objects).
|
|
66
22
|
|
|
67
|
-
For instance, consider the following JavaScript code using zikojs:
|
|
68
23
|
```js
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
<span>hello</span>
|
|
93
|
-
<span>world</span>
|
|
94
|
-
</p>
|
|
95
|
-
<script>
|
|
96
|
-
para=document.querySelector(p);
|
|
97
|
-
[...a.children].forEach(
|
|
98
|
-
n=>n.addEventListener("pointerenter",e=>{
|
|
99
|
-
console.log(e.target.textContent)
|
|
100
|
-
}))
|
|
101
|
-
</script>
|
|
24
|
+
import { cos, PI } from "ziko";
|
|
25
|
+
const result = cos(PI, PI / 2, PI / 4, [PI / 6, PI / 3], {
|
|
26
|
+
x: PI / 2,
|
|
27
|
+
y: PI / 4,
|
|
28
|
+
z: [0, PI / 12],
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
/*
|
|
32
|
+
result =>
|
|
33
|
+
[
|
|
34
|
+
-1,
|
|
35
|
+
0,
|
|
36
|
+
0.707106781186548,
|
|
37
|
+
[0.866025403784439, 0.5],
|
|
38
|
+
{
|
|
39
|
+
x: 0,
|
|
40
|
+
y: 0.707106781186548,
|
|
41
|
+
z: [1, 0.965925826289068],
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
*/
|
|
45
|
+
// console.log(result)
|
|
46
|
+
|
|
102
47
|
```
|
|
103
|
-
|
|
48
|
+
You can also built your own flexible Math function using this mapfun util :
|
|
49
|
+
```js
|
|
50
|
+
import { mapfun } from "ziko";
|
|
51
|
+
const parabolic_func = (a, b, c, x) => a * x ** 2 + b * x + c;
|
|
52
|
+
const map_parabolic_func =
|
|
53
|
+
(a, b, c) =>
|
|
54
|
+
(...X) =>
|
|
55
|
+
mapfun((n) => parabolic_func(a, b, c, n), ...X);
|
|
56
|
+
const a = -1.5,
|
|
57
|
+
b = 2,
|
|
58
|
+
c = 3;
|
|
59
|
+
const X = [0, 1, 2, 3];
|
|
60
|
+
console.log(parabolic_func(a, b, c)(X));
|
|
61
|
+
// [3,3,1,3]
|
|
104
62
|
|
|
105
|
-
|
|
63
|
+
```
|
|
106
64
|
|
|
65
|
+
- Built in Matrix, Complex, Random ... classes
|
|
107
66
|
|
|
67
|
+
### 🔰 No Template Engines :
|
|
68
|
+
zikojs UI module adopts a distinctive approach to building and updating user interfaces. It doesn't rely on predefined markup templates. Instead, it leverages a hyperscript-like syntax to dynamically create and update user interfaces.
|
|
108
69
|
|
|
109
|
-
### 🔰
|
|
70
|
+
### 🔰 Built in File-Based Routing with Single Page Application
|
|
110
71
|
|
|
111
|
-
|
|
72
|
+
ZikoJS provides an intuitive file-based routing mechanism that simplifies the development of single-page applications. By organizing your page components into a directory structure, you can automatically generate routes based on the file paths. This approach enhances the maintainability of your code by allowing you to easily manage and navigate between different views in your application.
|
|
112
73
|
|
|
113
|
-
|
|
74
|
+
To implement file-based routing, simply use the following code:
|
|
114
75
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|ziko-chart|-|`Chart.js`<br>`D3.js`|[NPM](https://www.npmjs.com/package/ziko-chart) [GITHUB](https://github.com/zakarialaoui10/ziko-chart/)|
|
|
119
|
-
|ziko-xls|-|`Xls.js`<br>`Hansontable.js`<br>|[NPM](https://www.npmjs.com/package/ziko-xls) [GITHUB](https://github.com/zakarialaoui10/ziko-xls/)|
|
|
120
|
-
|ziko-pdf|-|`jsPdf.js`<br>`Pdf.js`<br>|[NPM](https://www.npmjs.com/package/ziko-pdf) [GITHUB](https://github.com/zakarialaoui10/ziko-pdf/)|
|
|
121
|
-
|ziko-lottie|render Lottie file within zikojs app|`Lottie-web`|[NPM](https://www.npmjs.com/package/ziko-lottie) [GITHUB](https://github.com/zakarialaoui10/ziko-lottie/)|
|
|
122
|
-
### 🔰 The capability to function in both browser-based and Node.js environments
|
|
123
|
-
### 🔰 Methodes Extracting
|
|
124
|
-
|
|
125
|
-
<details>
|
|
126
|
-
<summary>
|
|
127
|
-
See More
|
|
128
|
-
</summary>
|
|
129
|
-
|
|
130
|
-
```js
|
|
131
|
-
Ziko.ExtractAll()
|
|
132
|
-
// if you want to extract only UI methodes you can use Ziko.UI.Extractll()
|
|
76
|
+
```js
|
|
77
|
+
import { FileBasedRouting } from "ziko";
|
|
78
|
+
FileBasedRouting(import.meta.glob("./src/pages/**/*.js"))
|
|
133
79
|
```
|
|
134
|
-
|
|
80
|
+
In this example, the import.meta.glob function dynamically imports all JavaScript files from the specified directory (./src/pages/**). Each file represents a separate route in your application, allowing you to create a clean and organized routing structure without the need for manual route configuration.
|
|
135
81
|
|
|
136
|
-
|
|
137
|
-
</details>
|
|
82
|
+
### 🔰 Flexible Integration with Popular Frameworks/Libraries
|
|
138
83
|
|
|
139
|
-
|
|
140
|
-
### 🔰 Rich UI elements
|
|
141
|
-
### 🔰 Methodes Chaining
|
|
142
|
-
It allows multiple methods to be called sequentially on an object, enhancing code readability and conciseness.
|
|
143
|
-
<details>
|
|
144
|
-
<summary> See More </summary>
|
|
145
|
-
</details>
|
|
84
|
+
**ZikoJS** is designed to seamlessly integrate into other frameworks and libraries. By installing the [ziko-wrapper](https://github.com/zakarialaoui10/ziko-wrapper) package, you can easily use ZikoJS within your favorite frontend ecosystems.
|
|
146
85
|
|
|
147
|
-
|
|
86
|
+
Currently supported frameworks:
|
|
87
|
+
- ***REACT***
|
|
88
|
+
- ***Solid***
|
|
89
|
+
- ***Preact***
|
|
90
|
+
- ***Svelte***
|
|
91
|
+
- ***Vue***
|
|
148
92
|
|
|
149
|
-
|
|
150
|
-
<summary>
|
|
151
|
-
See More
|
|
152
|
-
</summary>
|
|
93
|
+
### 🔰 Custom Markdown Parser
|
|
153
94
|
|
|
154
|
-
|
|
155
|
-
```js
|
|
156
|
-
Scene=Canvas().size("500px","500px")
|
|
157
|
-
Scene.onPtrDown(e=>{
|
|
158
|
-
e.target.ctx.beginPath()
|
|
159
|
-
e.target.ctx.moveTo(
|
|
160
|
-
map(e.dx,0,e.target.element.offsetWidth,e.target.Xmin,e.target.Xmax),
|
|
161
|
-
map(e.dy,0,e.target.element.offseHeight,e.target.Ymin,e.target.Ymax)
|
|
162
|
-
)
|
|
163
|
-
})
|
|
164
|
-
Scene.onPtrMove(e=>{
|
|
165
|
-
if(e.isDown){
|
|
166
|
-
const x=map(e.mx,0,e.target.element.offsetWidth,e.target.axisMatrix[0][0],e.target.axisMatrix[1][0])
|
|
167
|
-
const y=map(e.my,0,e.target.element.offsetHeight,e.target.axisMatrix[1][1],e.target.axisMatrix[0][1])
|
|
168
|
-
e.target.append(canvasCircle(x,y,1).color({fill:"#5555AA"}).fill())
|
|
169
|
-
}})
|
|
170
|
-
|
|
171
|
-
Scene.onPtrUp(()=>{})
|
|
172
|
-
```
|
|
173
|
-
</details>
|
|
174
|
-
|
|
175
|
-
### 🔰 Functions decorators
|
|
95
|
+
[Mdzjs](https://github.com/zakarialaoui10/mdzjs) allowing you to write markdown content alongside Zikojs Elements
|
|
176
96
|
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
|
|
97
|
+
```md
|
|
98
|
+
---
|
|
99
|
+
module :
|
|
100
|
+
- import InteractiveBlock from "./InteractiveBlock"
|
|
101
|
+
title : Article 1
|
|
102
|
+
---
|
|
180
103
|
|
|
181
|
-
|
|
182
|
-
### 🔰 Routing for Single Page Applications (SPA)
|
|
104
|
+
# Hello World this is markdown heading
|
|
183
105
|
|
|
184
|
-
|
|
106
|
+
<InteractiveBlock data = "Hello" />
|
|
107
|
+
```
|
|
185
108
|
|
|
186
|
-
|
|
187
|
-
<summary>
|
|
188
|
-
<strong> See More </strong>
|
|
189
|
-
</summary>
|
|
109
|
+
### 🔰 Growing Add-On Ecosystem
|
|
190
110
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
pattern,
|
|
203
|
-
path=>handler(path)
|
|
204
|
-
)
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
***⚠️ Ensure that your server serves only the index page for all incoming requests.***
|
|
208
|
-
|
|
209
|
-
***💡 Example using expressjs :***
|
|
111
|
+
|Addon|Purpose|Dependencies|Repository|
|
|
112
|
+
|-|-|-|-|
|
|
113
|
+
|ziko-gl||`threejs`|
|
|
114
|
+
|ziko-code||`codeMirror`||
|
|
115
|
+
|ziko-chart||`chartjs`||
|
|
116
|
+
|ziko-pdf||`jsPdf.js`||
|
|
117
|
+
|ziko-xls||`xls.js`||
|
|
118
|
+
|ziko-lottie||`Lottie-web`|
|
|
119
|
+
|ziko-rough||`rough.js`|
|
|
120
|
+
|ziko-icons||`fontawesome`|
|
|
121
|
+
|ziko-tippy||`tippy.js`|
|
|
210
122
|
|
|
211
|
-
```js
|
|
212
|
-
app.get('*', (req , res) => {
|
|
213
|
-
res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
|
214
|
-
});
|
|
215
|
-
```
|
|
216
|
-
</details>
|
|
217
123
|
|
|
124
|
+
### 🔰 Rich UI elements
|
|
218
125
|
|
|
219
|
-
### 🔰
|
|
126
|
+
### 🔰 Reactivity
|
|
220
127
|
|
|
221
|
-
|
|
222
|
-
useThread(() => {
|
|
223
|
-
s = 0;
|
|
224
|
-
for (i = 0; i < 10000000000; i++) s += i;
|
|
225
|
-
return s;
|
|
226
|
-
}, console.log);
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### 🔰 Responsive Design based on Flex element and resize observer
|
|
230
|
-
### 🔰 Loop and animations support
|
|
128
|
+
### 🔰 Time loop and animations support
|
|
231
129
|
|
|
232
130
|
## ⭐️ Show your support <a name="support"></a>
|
|
233
131
|
|
|
@@ -237,10 +135,3 @@ If you appreciate the library, kindly demonstrate your support by giving it a st
|
|
|
237
135
|
# License
|
|
238
136
|
This projet is licensed under the terms of MIT License
|
|
239
137
|
<img src="https://img.shields.io/github/license/zakarialaoui10/zikojs?color=rgb%2820%2C21%2C169%29" width="100" align="right">
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
package/package.json
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziko",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "a versatile
|
|
3
|
+
"version": "0.0.19",
|
|
4
|
+
"description": "a versatile javaScript framework offering a rich set of UI components, advanced mathematical utilities, reactivity, animations, client side routing and graphics capabilities",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
6
|
+
"front-end",
|
|
7
|
+
"framework",
|
|
8
|
+
"zikojs",
|
|
9
|
+
"ziko",
|
|
10
|
+
"math",
|
|
11
|
+
"user-interface",
|
|
12
|
+
"time",
|
|
13
|
+
"data",
|
|
14
|
+
"svg",
|
|
15
|
+
"canvas",
|
|
16
|
+
"reactivity",
|
|
17
|
+
"dom",
|
|
18
|
+
"single page application",
|
|
19
|
+
"file based routing"
|
|
16
20
|
],
|
|
17
21
|
"type": "module",
|
|
18
22
|
"main": "dist/ziko.mjs",
|
|
@@ -25,41 +29,8 @@
|
|
|
25
29
|
],
|
|
26
30
|
"exports": {
|
|
27
31
|
".": {
|
|
28
|
-
"import": "./
|
|
32
|
+
"import": "./dist/ziko.mjs",
|
|
29
33
|
"require": "./dist/ziko.cjs"
|
|
30
|
-
},
|
|
31
|
-
"./type": {
|
|
32
|
-
"import": "./src/type.js"
|
|
33
|
-
},
|
|
34
|
-
"./math": {
|
|
35
|
-
"import": "./src/math/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./math/functions": {
|
|
38
|
-
"import": "./src/math/functions/index.js"
|
|
39
|
-
},
|
|
40
|
-
"./math/matrix": {
|
|
41
|
-
"import": "./src/math/matrix/index.js"
|
|
42
|
-
},
|
|
43
|
-
"./math/complex": {
|
|
44
|
-
"import": "./src/math/complex/index.js"
|
|
45
|
-
},
|
|
46
|
-
"./math/signal": {
|
|
47
|
-
"import": "./src/math/signal/index.js"
|
|
48
|
-
},
|
|
49
|
-
"./ui": {
|
|
50
|
-
"import": "./src/ui/index.js"
|
|
51
|
-
},
|
|
52
|
-
"./time": {
|
|
53
|
-
"import": "./src/time/index.js"
|
|
54
|
-
},
|
|
55
|
-
"./reactivity": {
|
|
56
|
-
"import": "./src/reactivity/index.js"
|
|
57
|
-
},
|
|
58
|
-
"./data": {
|
|
59
|
-
"import": "./src/data/index.js"
|
|
60
|
-
},
|
|
61
|
-
"./graphics": {
|
|
62
|
-
"import": "./src/data/graphics.js"
|
|
63
34
|
}
|
|
64
35
|
},
|
|
65
36
|
"bin": {
|
package/src/__helpers__/index.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,64 +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
|
-
// })
|
|
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
|
+
// })
|
|
@@ -4,7 +4,6 @@ import { Section } from "../ui";
|
|
|
4
4
|
async function FileBasedRouting(pages /* use import.meta.glob */){
|
|
5
5
|
const routes = Object.keys(pages)
|
|
6
6
|
const root = findCommonPath(routes)
|
|
7
|
-
// console.log({root})
|
|
8
7
|
const pairs = {}
|
|
9
8
|
for(let i=0; i<routes.length; i++){
|
|
10
9
|
const module = await pages[routes[i]]()
|