ziko 0.0.16 → 0.0.18

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 (61) hide show
  1. package/dist/ziko.cjs +479 -1901
  2. package/dist/ziko.js +7648 -8185
  3. package/dist/ziko.min.js +2 -2
  4. package/dist/ziko.mjs +7614 -8182
  5. package/package.json +1 -1
  6. package/readme.md +137 -0
  7. package/src/app/spa-file-based-routing.js +0 -1
  8. package/src/data/datatypes/color.js +11 -0
  9. package/src/graphics/canvas/canvas.js +13 -26
  10. package/src/graphics/canvas/elements/{Basic → basic}/arc.js +1 -1
  11. package/src/graphics/canvas/elements/{Basic → basic}/line.js +1 -1
  12. package/src/graphics/canvas/elements/{Basic → basic}/points.js +1 -1
  13. package/src/graphics/canvas/elements/{Basic → basic}/rect.js +1 -1
  14. package/src/graphics/canvas/elements/index.js +4 -4
  15. package/src/graphics/canvas/index.js +2 -15
  16. package/src/graphics/index.js +9 -68
  17. package/src/graphics/svg/{Elements/Basic → elements/basic}/circle.js +5 -2
  18. package/src/graphics/svg/{Elements/Basic → elements/basic}/ellipse.js +5 -2
  19. package/src/graphics/svg/{Elements/Basic/foreignObject.js → elements/basic/foreign-object.js} +7 -4
  20. package/src/graphics/svg/{Elements/Basic → elements/basic}/groupe.js +5 -2
  21. package/src/graphics/svg/{Elements/Basic → elements/basic}/image.js +5 -2
  22. package/src/graphics/svg/elements/basic/index.js +11 -0
  23. package/src/graphics/svg/{Elements/Basic → elements/basic}/line.js +5 -2
  24. package/src/graphics/svg/{Elements/Basic → elements/basic}/link.js +5 -2
  25. package/src/graphics/svg/{Elements/Basic → elements/basic}/path.js +5 -2
  26. package/src/graphics/svg/{Elements/Basic → elements/basic}/polygon.js +1 -1
  27. package/src/graphics/svg/{Elements/Basic → elements/basic}/polyline.js +4 -1
  28. package/src/graphics/svg/{Elements/Basic → elements/basic}/rect.js +5 -2
  29. package/src/graphics/svg/{Elements/Basic → elements/basic}/text.js +5 -2
  30. package/src/graphics/svg/{Elements/Derived → elements/derived}/grid.js +1 -1
  31. package/src/graphics/svg/elements/derived/index.js +1 -0
  32. package/src/graphics/svg/elements/index.js +2 -0
  33. package/src/graphics/svg/{Elements/ZikoSvgElement.js → elements/ziko-svg-element.js} +5 -3
  34. package/src/graphics/svg/index.js +1 -1
  35. package/src/graphics/svg/svg.js +19 -65
  36. package/src/index.js +2 -1
  37. package/src/reactivity/events/index.js +12 -63
  38. package/src/reactivity/hooks/index.js +8 -91
  39. package/src/reactivity/hooks/ui/index.js +2 -1
  40. package/src/reactivity/hooks/ui/useRoot.js +39 -0
  41. package/src/reactivity/index.js +2 -2
  42. package/src/ui/elements/primitives/ZikoUIContainerElement.js +155 -118
  43. package/src/ui/elements/primitives/ZikoUIElement.js +3 -3
  44. package/src/ui/elements/primitives/misc/xml-wrapper.js +3 -2
  45. package/src/ui/index.js +10 -1
  46. package/README.md +0 -246
  47. package/src/graphics/canvas/elements/Groupe.js +0 -0
  48. package/src/graphics/canvas/elements/grid.js +0 -0
  49. package/src/graphics/canvas/filter/index.js +0 -0
  50. package/src/graphics/canvas/paint/index.js +0 -0
  51. package/src/graphics/svg/Elements/index.js +0 -14
  52. /package/src/graphics/canvas/elements/{Basic → basic}/image.js +0 -0
  53. /package/src/graphics/canvas/elements/{Basic → basic}/path.js +0 -0
  54. /package/src/graphics/canvas/elements/{Basic → basic}/polygon.js +0 -0
  55. /package/src/graphics/canvas/elements/{Basic → basic}/polyline.js +0 -0
  56. /package/src/graphics/canvas/elements/{Basic → basic}/text.js +0 -0
  57. /package/src/graphics/canvas/elements/{Chart → chart}/histogram.js +0 -0
  58. /package/src/graphics/canvas/elements/{Chart → chart}/plot.js +0 -0
  59. /package/src/graphics/canvas/elements/{Chart → chart}/scatter.js +0 -0
  60. /package/src/graphics/canvas/elements/{Chart → chart}/stem.js +0 -0
  61. /package/src/graphics/canvas/elements/{Element.js → element.js} +0 -0
@@ -1,27 +1,26 @@
1
- import ZikoUIElement from "../../UI/elements/primitives/ZikoUIElement.js";
2
- // import svgRect from "./Elements/rect.js";
3
- // import svgCircle from "./Elements/circle.js";
4
- // import svgEllipse from "./Elements/ellipse.js";
5
- // import svgLine from "./Elements/line.js";
6
- // //import svgPath from "./Elements/path.js";
7
- // import svgPolygon from "./Elements/polygon.js";
8
- // import svgImage from "./Elements/image.js";
9
- // import svgText from "./Elements/text.js";
10
- // import svgGroupe from "./Elements/groupe.js";
11
- // import svgLink from "./Elements/link.js";
12
- // //import svgObject from "./Elements/foreignObject.js";
13
- // //import svgGrid from "./Elements/grid.js";
14
-
15
- class ZikoUISvg extends ZikoUIElement {
1
+ import { ZikoUIContainerElement } from "../../ui/index.js";
2
+ class ZikoUISvg extends ZikoUIContainerElement {
16
3
  constructor(w=360,h=300) {
17
4
  super("svg","svg");
18
5
  //this.cache={};
19
- this.setAttr("width",w);
20
- this.setAttr("height",h);
6
+ // this.setAttr("width",w);
7
+ // this.setAttr("height",h);
8
+ // this.setAttr({
9
+ // width : w,
10
+ // height : h
11
+ // })
21
12
  this.style({border:"1px black solid"});
22
- //this.view(-w/2,-h/2,w/2,h/2)
13
+ //this.view(-w/2,-h/2,w/2,h/2);
14
+ this.size(w, h)
23
15
  this.view(-10,-10,10,10);
24
16
  }
17
+ size(w, h){
18
+ this.setAttr({
19
+ width : w,
20
+ height : h
21
+ });
22
+ return this
23
+ }
25
24
  view(x1,y1,x2,y2){
26
25
  let width=Math.abs(x2-x1);
27
26
  let height=Math.abs(y2-y1);
@@ -31,7 +30,7 @@ import ZikoUIElement from "../../UI/elements/primitives/ZikoUIElement.js";
31
30
  }
32
31
  add(...svgElement){
33
32
  for(let i=0;i<svgElement.length;i++){
34
- this.element?.appendChildddddddd(svgElement[i].element);
33
+ this.element.append(svgElement[i].element);
35
34
  this.items.push(svgElement[i])
36
35
  }
37
36
  this.maintain()
@@ -45,43 +44,6 @@ import ZikoUIElement from "../../UI/elements/primitives/ZikoUIElement.js";
45
44
  this.maintain();
46
45
  return this;
47
46
  }
48
- // text(text,x,y){
49
- // let item=svgText(text,x,y);
50
- // this.element?.appendChildd(item.element);
51
- // item.x(x-item.element.getComputedTextLength()/2);
52
- // return item;
53
- // }
54
- // rect(x,y,w,h){
55
- // let item=svgRect(x,y,w,h);
56
- // this.add(item);
57
- // return item;
58
- // }
59
- // line(x1,y1,x2,y2){
60
- // let item=svgLine(x1,y1,x2,y2);
61
- // this.element?.appendChildd(item.element);
62
- // return item;
63
- // }
64
- // circle(cx,cy,r){
65
- // let item=svgCircle(cx,cy,r);
66
- // this.element?.appendChildd(item.element);
67
- // return item;
68
- // }
69
- // ellipse(cx,cy,rx,ry){
70
- // let item=svgEllipse(cx,cy,rx,ry);
71
- // this.element?.appendChildd(item.element);
72
- // return item;
73
- // }
74
- // polygon(X,Y){
75
- // let item=svgPolygon(X,Y);
76
- // this.element?.appendChildd(item.element);
77
- // item.addPoints(X,Y)
78
- // return item;
79
- // }
80
- // image(src,w,h,x,y){
81
- // let item=svgImage(src,w,h,x,y);
82
- // this.element?.appendddChild(item.element);
83
- // return item;
84
- // }
85
47
  mask(){
86
48
 
87
49
  }
@@ -97,19 +59,11 @@ import ZikoUIElement from "../../UI/elements/primitives/ZikoUIElement.js";
97
59
  toImg2(){
98
60
  return "data:image/svg+xml;charset=utf8,"+this.toString().replaceAll("<","%3C").replaceAll(">","%3E").replaceAll("#","%23").replaceAll('"',"'");
99
61
  }
62
+
100
63
  }
101
64
 
102
65
  const Svg =(w,h)=>new ZikoUISvg(w,h);
103
66
  export{
104
67
  Svg,
105
68
  ZikoUISvg,
106
- // svgLink,
107
- // svgCircle,
108
- // svgEllipse,
109
- // svgImage,
110
- // svgLine,
111
- // svgPolygon,
112
- // svgRect,
113
- // svgText,
114
- // svgGroupe
115
69
  }
package/src/index.js CHANGED
@@ -21,7 +21,8 @@ export * from "./app";
21
21
  UI,
22
22
  Time,
23
23
  Data,
24
- Reactivity
24
+ Reactivity,
25
+ Graphics
25
26
  ].forEach(n=>Object.assign(n,{
26
27
  ExtractAll:()=>__ExtractAll__(n),
27
28
  RemoveAll:()=>__RemoveAll__(n)
@@ -1,63 +1,12 @@
1
- import { useClickEvent } from "./click.js";
2
- import {usePointerEvent} from "./pointer.js";
3
- import {useMouseEvent} from "./mouse.js";
4
- import {useWheelEvent} from "./wheel.js";
5
- import {useKeyEvent} from "./key.js";
6
- import {useDragEvent,useDropEvent} from "./drag.js";
7
- import {useClipboardEvent} from "./clipboard.js";
8
- import {useFocusEvent} from "./focus.js";
9
- import {useInputEvent} from "./Input.js";
10
- import {useHashEvent} from "./hash.js";
11
- import {useCustomEvent} from "./custom-event.js";
12
- import {useSwipeEvent} from "./swipe.js"
13
- const Events={
14
- usePointerEvent,
15
- useMouseEvent,
16
- useWheelEvent,
17
- useKeyEvent,
18
- useDragEvent,
19
- useDropEvent,
20
- useClickEvent,
21
- useClipboardEvent,
22
- useFocusEvent,
23
- useInputEvent,
24
- useHashEvent,
25
- useCustomEvent,
26
- useSwipeEvent,
27
- ExtractAll: function () {
28
- const keys = Object.keys(this);
29
- for (let i = 0; i < keys.length; i++) {
30
- const key = keys[i];
31
- if (key !== 'ExtractAll' && key !== 'RemoveAll') {
32
- globalThis[key] = this[key];
33
- }
34
- }
35
- return this;
36
- },
37
- RemoveAll: function () {
38
- const keys = Object.keys(this);
39
- for (let i = 0; i < keys.length; i++) {
40
- const key = keys[i];
41
- if (key !== 'RemoveAll') {
42
- delete globalThis[key];
43
- }
44
- }
45
- return this;
46
- }
47
- }
48
- export {
49
- usePointerEvent,
50
- useMouseEvent,
51
- useWheelEvent,
52
- useKeyEvent,
53
- useDragEvent,
54
- useDropEvent,
55
- useClickEvent,
56
- useClipboardEvent,
57
- useFocusEvent,
58
- useInputEvent,
59
- useHashEvent,
60
- useCustomEvent,
61
- useSwipeEvent
62
- }
63
- export default Events
1
+ export * from "./click.js";
2
+ export * from "./pointer.js";
3
+ export * from "./mouse.js";
4
+ export * from "./wheel.js";
5
+ export * from "./key.js";
6
+ export * from "./drag.js";
7
+ export * from "./clipboard.js";
8
+ export * from "./focus.js";
9
+ export * from "./Input.js";
10
+ export * from "./hash.js";
11
+ export * from "./custom-event.js";
12
+ export * from "./swipe.js"
@@ -1,91 +1,8 @@
1
- import {
2
- useTitle,
3
- useFavIcon,
4
- useMeta,
5
- useHead
6
- } from "./Head"
7
- import {
8
- useStyle,
9
- useTheme,
10
- useMediaQuery
11
- } from "./UI";
12
- import {
13
- useEventEmitter,
14
- useChannel,
15
- useThread,
16
- useBluetooth
17
- } from "./Interactions";
18
- import {
19
- useBattery,
20
- useGeolocation
21
- } from "./Sensors";
22
- import {
23
- useThrottle,
24
- useDebounce
25
- } from "./Decorators";
26
- import {
27
- useLocaleStorage,
28
- useSessionStorage
29
- } from "./Storage"
30
- import {
31
- useSuccesifKeys
32
- } from "./Contexte";
33
- const Hooks={
34
- useStyle,
35
- useTheme,
36
- useMediaQuery,
37
- useBattery,
38
- useGeolocation,
39
- useEventEmitter,
40
- useChannel,
41
- useThread,
42
- useBluetooth,
43
- useTitle,
44
- useFavIcon,
45
- useMeta,
46
- useHead,
47
- useThrottle,
48
- useDebounce,
49
- useLocaleStorage,
50
- useSessionStorage,
51
- useSuccesifKeys,
52
- ExtractAll: function () {
53
- const keys = Object.keys(this);
54
- for (let i = 0; i < keys.length; i++) {
55
- const key = keys[i];
56
- if (key !== 'ExtractAll' && key !== 'RemoveAll') {
57
- globalThis[key] = this[key];
58
- }
59
- }
60
- return this;
61
- },
62
- RemoveAll: function () {
63
- const keys = Object.keys(this);
64
- for (let i = 0; i < keys.length; i++) {
65
- const key = keys[i];
66
- if (key !== 'RemoveAll') {
67
- delete globalThis[key];
68
- }
69
- }
70
- return this;
71
- }
72
- }
73
- export default Hooks;
74
- export{
75
- useStyle,
76
- useTheme,
77
- useMediaQuery,
78
- useTitle,
79
- useFavIcon,
80
- useBattery,
81
- useGeolocation,
82
- useEventEmitter,
83
- useChannel,
84
- useThread,
85
- useBluetooth,
86
- useThrottle,
87
- useDebounce,
88
- useLocaleStorage,
89
- useSessionStorage,
90
- useSuccesifKeys
91
- }
1
+ export * from "./contexte"
2
+ export * from "./decorators"
3
+ export * from "./head"
4
+ export * from "./interactions"
5
+ export * from "./sensors"
6
+ export * from "./storage"
7
+ export * from "./ui"
8
+ // export * from "./window"
@@ -2,4 +2,5 @@ export * from "./useStyle";
2
2
  export * from "./useTheme";
3
3
  // export * from "../Head/useTitle";
4
4
  // export * from "../Head/useFavIcon";
5
- export * from "./useMediaQuery"
5
+ export * from "./useMediaQuery"
6
+ export * from "./useRoot.js"
@@ -0,0 +1,39 @@
1
+ import { Str } from "../../../data"
2
+ class ZikoUseRoot{
3
+ constructor(props){
4
+ this.props={};
5
+ props && this.set(props)
6
+ }
7
+ get(prop){
8
+ return this.props[prop]
9
+ }
10
+ // getStaticValue(){
11
+ // return document.documentElement.style.getPropertyValue("--primary-col")
12
+ // }
13
+ set(props){
14
+ Object.entries(props).forEach(([key,value])=>this.#setOneProp(key, value));
15
+ return this;
16
+ }
17
+ #setOneProp(prop, value){
18
+ const CssProp = `--${Str.camel2hyphencase(prop)}`
19
+ document.documentElement.style.setProperty(CssProp,value);
20
+ Object.assign(this.props, {[prop]: `var(${CssProp})`})
21
+ Object.assign(this, {[prop] : `var(${CssProp})`})
22
+ }
23
+ }
24
+
25
+ const useRootValue=CssVar=>{
26
+ if(!CssVar.startsWith("--")) CssVar = `--${Str.camel2hyphencase(CssVar)}`
27
+ return `var(${CssVar})`
28
+ }
29
+ // const useRootStaticValue=CssVar=>{
30
+ // if(!CssVar.startsWith("--")) CssVar = `--${Str.camel2hyphencase(CssVar)}`
31
+ // return globalThis.document.documentElement.style.getPropertyValue(CssVar)
32
+ // }
33
+ const useRoot=(props)=>new ZikoUseRoot(props)
34
+ export{
35
+ ZikoUseRoot,
36
+ useRoot,
37
+ useRootValue,
38
+ // useRootStaticValue
39
+ }
@@ -1,6 +1,6 @@
1
- import Events from "./events";
1
+ import * as Events from "./events";
2
2
  import * as Observer from "./observer"
3
- import Hooks from "./hooks"
3
+ import * as Hooks from "./hooks"
4
4
  const Reactivity={
5
5
  ...Events,
6
6
  ...Observer,
@@ -1,127 +1,164 @@
1
1
  import ZikoUIElement from "./ZikoUIElement";
2
2
  import { text } from "./text";
3
- class ZikoUIContainerElement extends ZikoUIElement{
4
- constructor(element, name=""){
5
- super(element, name)
6
- this.items = [];
7
- }
8
- maintain() {
9
- for (let i = 0; i < this.items.length; i++)
10
- Object.assign(this, { [[i]]: this.items[i] });
11
- this.length = this.items.length;
3
+ class ZikoUIContainerElement extends ZikoUIElement {
4
+ constructor(element, name = "") {
5
+ super(element, name);
6
+ this.items = [];
7
+ }
8
+ maintain() {
9
+ for (let i = 0; i < this.items.length; i++)
10
+ Object.assign(this, { [[i]]: this.items[i] });
11
+ this.length = this.items.length;
12
+ return this;
13
+ }
14
+ at(index) {
15
+ return this.items.at(index);
16
+ }
17
+ #addItem(adder, pusher, ...ele) {
18
+ if (this.cache.isFrozzen) {
19
+ console.warn("You can't append new item to frozzen element");
12
20
  return this;
13
21
  }
14
- at(index) {
15
- return this.items.at(index);
16
- }
17
- append(...ele) {
18
- if(this.cache.isFrozzen){
19
- console.warn("You can't append new item to frozzen element");
20
- return this;
21
- }
22
- for (let i = 0; i < ele.length; i++){
23
- if(["number","string"].includes(typeof ele[i]))ele[i]=text(ele[i]);
24
- if (ele[i] instanceof ZikoUIElement) {
25
- ele[i].cache.parent=this;
26
- this.element?.appendChild(ele[i].element);
27
- ele[i].target = this.element;
28
- this.items.push(ele[i]);
29
- } else if (ele[i] instanceof Object) {
30
- if (ele[i]?.style) this.style(ele[i]?.style);
31
- if (ele[i]?.attr) {
32
- Object.entries(ele[i].attr).forEach((n) =>
33
- this.setAttr("" + n[0], n[1]),
34
- );
35
- }
36
- }
22
+ for (let i = 0; i < ele.length; i++) {
23
+ if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
24
+ if (ele[i] instanceof ZikoUIElement) {
25
+ ele[i].cache.parent = this;
26
+ this.element[adder](ele[i].element);
27
+ ele[i].target = this.element;
28
+ this.items[pusher](ele[i]);
29
+ } else if (ele[i] instanceof Object) {
30
+ if (ele[i]?.style) this.style(ele[i]?.style);
31
+ if (ele[i]?.attr) {
32
+ Object.entries(ele[i].attr).forEach((n) =>
33
+ this.setAttr("" + n[0], n[1]),
34
+ );
37
35
  }
38
- this.maintain();
39
- return this;
40
- }
41
- insertAt(index, ...ele) {
42
- if (index >= this.element.children.length) this.append(...ele);
43
- else
44
- for (let i = 0; i < ele.length; i++) {
45
- if(["number","string"].includes(typeof ele[i]))ele[i]=text(ele[i]);
46
- this.element?.insertBefore(ele[i].element, this.items[index].element);
47
- this.items.splice(index, 0, ele[i]);
48
- }
49
- return this;
50
- }
51
- // remove(...ele) {
52
- // if(ele.length==0){
53
- // if(this.cache.parent)this.cache.parent.remove(this);
54
- // else if(this.target.children.length && [...this.target.children].includes(this.element)) this.target.removeChild(this.element);
55
- // }
56
- // else {
57
- // const remove = (ele) => {
58
- // if(typeof ele === "number") ele=this.items[ele];
59
- // if(ele instanceof ZikoUIElement)this.element?.removeChild(ele.element);
60
- // this.items=this.items.filter(n=>n!==ele);
61
- // };
62
- // for (let i = 0; i < ele.length; i++) remove(ele[i]);
63
- // for (let i = 0; i < this.items.length; i++)Object.assign(this, { [[i]]: this.items[i] });
64
- // // Remove from item
65
- // }
66
- // return this;
67
- // }
68
- remove(...ele) {
69
- const remove = (ele) => {
70
- if(typeof ele === "number") ele=this.items[ele];
71
- if(ele instanceof ZikoUIElement)this.element?.removeChild(ele.element);
72
- this.items=this.items.filter(n=>n!==ele);
73
- };
74
- for (let i = 0; i < ele.length; i++) remove(ele[i]);
75
- for (let i = 0; i < this.items.length; i++)Object.assign(this, { [[i]]: this.items[i] });
76
- // Remove from item
77
- return this;
78
- }
79
- forEach(callback){
80
- this.items.forEach(callback);
81
- return this;
82
36
  }
83
- map(callback){
84
- return this.items.map(callback);
85
- }
86
- find(condition){
87
- return this.items.filter(condition);
88
- }
89
- filter(condition_callback,if_callback=()=>{},else_callback=()=>{}){
90
- const FilterItems=this.items.filter(condition_callback);
91
- FilterItems.forEach(if_callback);
92
- this.items.filter(item => !FilterItems.includes(item)).forEach(else_callback);
93
- return this;
94
- }
95
- filterByTextContent(text,exactMatch=false){
96
- this.items.forEach(n=>n.render());
97
- this.filter(
98
- n=>!(exactMatch?n.text===text:n.text.includes(text)),
99
- e=>e.unrender()
100
- )
101
- // this.items.filter(n=>{
102
- // const content=n.element.textContent;
103
- // return !(exactMatch?content===text:content.includes(text))
104
- // }).map(n=>n.unrender());
105
- // return this;
106
- }
107
- filterByClass(value){
108
- this.items.map(n=>n.render());
109
- this.items.filter(n=>!n.classes.includes(value)).map(n=>n.unrender());
110
- return this;
111
- }
112
- sortByTextContent(value, displays) {
113
- let item = this.children;
114
- item
115
- .filter((n) => !n.textContent.toLowerCase().includes(value.toLowerCase()))
116
- .map((n) => {
117
- n.style.display = "none";
118
- });
119
- item
120
- .filter((n) => n.textContent.toLowerCase().includes(value.toLowerCase()))
121
- .map((n, i) => (n.style.display = displays[i]));
122
- //return item.filter(n=>n.style.display!="none")
123
- item.filter((n) => n.style.display != "none");
124
- return this;
37
+ }
38
+ this.maintain();
39
+ return this;
40
+ }
41
+ append(...ele) {
42
+ this.#addItem("append", "push", ...ele);
43
+ return this;
44
+ }
45
+ prepend(...ele) {
46
+ this.#addItem("prepend", "unshift", ...ele);
47
+ return this;
48
+ }
49
+ // append(...ele) {
50
+ // if(this.cache.isFrozzen){
51
+ // console.warn("You can't append new item to frozzen element");
52
+ // return this;
53
+ // }
54
+ // for (let i = 0; i < ele.length; i++){
55
+ // if(["number","string"].includes(typeof ele[i]))ele[i]=text(ele[i]);
56
+ // if (ele[i] instanceof ZikoUIElement) {
57
+ // ele[i].cache.parent=this;
58
+ // this.element?.appendChild(ele[i].element);
59
+ // ele[i].target = this.element;
60
+ // this.items.push(ele[i]);
61
+ // } else if (ele[i] instanceof Object) {
62
+ // if (ele[i]?.style) this.style(ele[i]?.style);
63
+ // if (ele[i]?.attr) {
64
+ // Object.entries(ele[i].attr).forEach((n) =>
65
+ // this.setAttr("" + n[0], n[1]),
66
+ // );
67
+ // }
68
+ // }
69
+ // }
70
+ // this.maintain();
71
+ // return this;
72
+ // }
73
+ insertAt(index, ...ele) {
74
+ if (index >= this.element.children.length) this.append(...ele);
75
+ else
76
+ for (let i = 0; i < ele.length; i++) {
77
+ if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
78
+ this.element?.insertBefore(ele[i].element, this.items[index].element);
79
+ this.items.splice(index, 0, ele[i]);
125
80
  }
81
+ return this;
82
+ }
83
+ // remove(...ele) {
84
+ // if(ele.length==0){
85
+ // if(this.cache.parent)this.cache.parent.remove(this);
86
+ // else if(this.target.children.length && [...this.target.children].includes(this.element)) this.target.removeChild(this.element);
87
+ // }
88
+ // else {
89
+ // const remove = (ele) => {
90
+ // if(typeof ele === "number") ele=this.items[ele];
91
+ // if(ele instanceof ZikoUIElement)this.element?.removeChild(ele.element);
92
+ // this.items=this.items.filter(n=>n!==ele);
93
+ // };
94
+ // for (let i = 0; i < ele.length; i++) remove(ele[i]);
95
+ // for (let i = 0; i < this.items.length; i++)Object.assign(this, { [[i]]: this.items[i] });
96
+ // // Remove from item
97
+ // }
98
+ // return this;
99
+ // }
100
+ remove(...ele) {
101
+ const remove = (ele) => {
102
+ if (typeof ele === "number") ele = this.items[ele];
103
+ if (ele instanceof ZikoUIElement) this.element?.removeChild(ele.element);
104
+ this.items = this.items.filter((n) => n !== ele);
105
+ };
106
+ for (let i = 0; i < ele.length; i++) remove(ele[i]);
107
+ for (let i = 0; i < this.items.length; i++)
108
+ Object.assign(this, { [[i]]: this.items[i] });
109
+ // Remove from item
110
+ return this;
111
+ }
112
+ forEach(callback) {
113
+ this.items.forEach(callback);
114
+ return this;
115
+ }
116
+ map(callback) {
117
+ return this.items.map(callback);
118
+ }
119
+ find(condition) {
120
+ return this.items.filter(condition);
121
+ }
122
+ filter(condition_callback, if_callback = () => {}, else_callback = () => {}) {
123
+ const FilterItems = this.items.filter(condition_callback);
124
+ FilterItems.forEach(if_callback);
125
+ this.items
126
+ .filter((item) => !FilterItems.includes(item))
127
+ .forEach(else_callback);
128
+ return this;
129
+ }
130
+ filterByTextContent(text, exactMatch = false) {
131
+ this.items.forEach((n) => n.render());
132
+ this.filter(
133
+ (n) => !(exactMatch ? n.text === text : n.text.includes(text)),
134
+ (e) => e.unrender(),
135
+ );
136
+ // this.items.filter(n=>{
137
+ // const content=n.element.textContent;
138
+ // return !(exactMatch?content===text:content.includes(text))
139
+ // }).map(n=>n.unrender());
140
+ // return this;
141
+ }
142
+ filterByClass(value) {
143
+ this.items.map((n) => n.render());
144
+ this.items
145
+ .filter((n) => !n.classes.includes(value))
146
+ .map((n) => n.unrender());
147
+ return this;
148
+ }
149
+ sortByTextContent(value, displays) {
150
+ let item = this.children;
151
+ item
152
+ .filter((n) => !n.textContent.toLowerCase().includes(value.toLowerCase()))
153
+ .map((n) => {
154
+ n.style.display = "none";
155
+ });
156
+ item
157
+ .filter((n) => n.textContent.toLowerCase().includes(value.toLowerCase()))
158
+ .map((n, i) => (n.style.display = displays[i]));
159
+ //return item.filter(n=>n.style.display!="none")
160
+ item.filter((n) => n.style.display != "none");
161
+ return this;
162
+ }
126
163
  }
127
164
  export default ZikoUIContainerElement;
@@ -25,7 +25,7 @@ class ZikoUIElement {
25
25
  if(typeof element === "string") {
26
26
  element === "svg" ? element=globalThis?.document?.createElementNS("http://www.w3.org/2000/svg", "svg"): element = globalThis?.document?.createElement(element);
27
27
  }
28
- this.element = element;
28
+ if(element)this.element = element;
29
29
  this.uuid=this.constructor.name+"-"+Random.string(10);
30
30
  this.cache = {
31
31
  name,
@@ -67,7 +67,7 @@ class ZikoUIElement {
67
67
  });
68
68
  this.size("auto", "auto");
69
69
  globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
70
- globalThis.__Ziko__.__Config__.default.render && this.render()
70
+ element && globalThis.__Ziko__.__Config__.default.render && this.render()
71
71
  }
72
72
  get isZikoUIElement(){
73
73
  return true
@@ -229,7 +229,7 @@ class ZikoUIElement {
229
229
  }
230
230
  // Attributes
231
231
  #setAttr(name, value){
232
- name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
232
+ if(this.element.tagName !== "svg") name = Str.isCamelCase(name) ? Str.camel2hyphencase(name) : name;
233
233
  if(this?.attr[name] && this?.attr[name]===value) return;
234
234
  this.element.setAttribute(name, value)
235
235
  Object.assign(this.cache.attributes, {[name]:value});