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
|
@@ -1,20 +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
|
|
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
20
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./html.js"
|
|
2
|
-
export * from "./pdf.js"
|
|
3
|
-
export * from "./youtube.js"
|
|
1
|
+
export * from "./html.js"
|
|
2
|
+
export * from "./pdf.js"
|
|
3
|
+
export * from "./youtube.js"
|
|
@@ -1,17 +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
|
|
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
17
|
}
|
|
@@ -1,24 +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
|
|
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
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";
|
|
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";
|