ziko 0.45.0 → 0.45.2

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 (54) hide show
  1. package/dist/ziko.js +647 -696
  2. package/dist/ziko.mjs +636 -678
  3. package/package.json +1 -1
  4. package/src/__helpers__/register/index.js +3 -1
  5. package/src/__helpers__/register/register-to-instance.js +17 -5
  6. package/src/app/spa-file-based-routing.js +3 -2
  7. package/src/app/spa.js +3 -3
  8. package/src/app/ziko-app.js +1 -1
  9. package/src/events/__Events__.js +2 -1
  10. package/src/events/binders/click.js +20 -0
  11. package/src/events/binders/clipboard.js +16 -0
  12. package/src/events/{custom-event.js → binders/custom-event.js} +1 -1
  13. package/src/events/binders/drag.js +16 -0
  14. package/src/events/binders/focus.js +16 -0
  15. package/src/events/{hash.js → binders/hash.js} +2 -2
  16. package/src/events/binders/index.js +16 -0
  17. package/src/events/{key.js → binders/key.js} +4 -4
  18. package/src/events/binders/mouse.js +16 -0
  19. package/src/events/{pointer.js → binders/pointer.js} +4 -4
  20. package/src/events/{touch.js → binders/touch.js} +2 -2
  21. package/src/events/binders/wheel.js +16 -0
  22. package/src/events/custom-events/click-away.js +1 -0
  23. package/src/events/index.js +2 -16
  24. package/src/events/types/clipboard.d.ts +2 -2
  25. package/src/events/types/focus.d.ts +2 -2
  26. package/src/events/types/pointer.d.ts +2 -2
  27. package/src/hooks/use-state.js +2 -2
  28. package/src/lite.js +2 -0
  29. package/src/ui/__methods__/attrs.js +29 -45
  30. package/src/ui/__methods__/dom.js +65 -111
  31. package/src/ui/__methods__/events.js +17 -17
  32. package/src/ui/__methods__/index.js +10 -1
  33. package/src/ui/__methods__/indexing.js +14 -15
  34. package/src/ui/__methods__/style.js +28 -30
  35. package/src/ui/__methods__/utils/index.js +64 -0
  36. package/src/ui/constructors/UIElement-lite.js +10 -0
  37. package/src/ui/constructors/UIElement.js +89 -155
  38. package/src/ui/constructors/UIElementCore.js +235 -0
  39. package/src/ui/index.js +3 -3
  40. package/src/ui/suspense/index.js +1 -1
  41. package/src/ui/tags/index.js +9 -3
  42. package/src/ui/tags/tags-list.js +0 -1
  43. package/src/ui/wrappers/html/index.js +26 -0
  44. package/src/ui/wrappers/index.js +2 -0
  45. package/src/ui/wrappers/svg/index.js +46 -0
  46. package/src/events/click.js +0 -18
  47. package/src/events/clipboard.js +0 -16
  48. package/src/events/drag.js +0 -16
  49. package/src/events/focus.js +0 -16
  50. package/src/events/mouse.js +0 -16
  51. package/src/events/wheel.js +0 -16
  52. package/src/ui/__methods__/observer.js +0 -0
  53. package/src/ui/wrapper/index.js +0 -42
  54. /package/src/ui/constructors/{ZikoUIElementMethodesToBeMoved-dep.js → _m.js.txt} +0 -0
@@ -0,0 +1,235 @@
1
+ import {UINode} from "./UINode.js";
2
+ import {__init__global__, UIStore} from '../../__ziko__/index.js';
3
+ __init__global__()
4
+ class UIElementCore extends UINode{
5
+ constructor(){
6
+ super()
7
+ }
8
+ init(element, name, type, render, isInteractive = [true, false][Math.floor(2*Math.random())]){
9
+ this.target = globalThis.__Ziko__.__Config__.default.target||globalThis?.document?.body;
10
+ if(typeof element === "string") {
11
+ switch(type){
12
+ case "html" : {
13
+ element = globalThis?.document?.createElement(element);
14
+ console.log('1')
15
+ }; break;
16
+ case "svg" : {
17
+ element = globalThis?.document?.createElementNS("http://www.w3.org/2000/svg", element);
18
+ console.log('2')
19
+ }; break;
20
+ default : throw Error("Not supported")
21
+ }
22
+ }
23
+ else this.target = element?.parentElement;
24
+ Object.assign(this.cache, {
25
+ name,
26
+ isInteractive,
27
+ parent:null,
28
+ isBody:false,
29
+ isRoot:false,
30
+ isHidden: false,
31
+ isFrozzen:false,
32
+ legacyParent : null,
33
+ attributes: {},
34
+ filters: {},
35
+ temp:{}
36
+ })
37
+ this.events = {
38
+ ptr:null,
39
+ mouse:null,
40
+ wheel:null,
41
+ key:null,
42
+ drag:null,
43
+ drop:null,
44
+ click:null,
45
+ clipboard:null,
46
+ focus:null,
47
+ swipe:null,
48
+ custom:null,
49
+ }
50
+ this.observer={
51
+ resize:null,
52
+ intersection:null
53
+ }
54
+ if(element) Object.assign(this.cache,{element});
55
+ // useDefaultStyle && this.style({
56
+ // position: "relative",
57
+ // boxSizing:"border-box",
58
+ // margin:0,
59
+ // padding:0,
60
+ // width : "auto",
61
+ // height : "auto"
62
+ // });
63
+ this.items = new UIStore();
64
+ globalThis.__Ziko__.__UI__[this.cache.name]?globalThis.__Ziko__.__UI__[this.cache.name]?.push(this):globalThis.__Ziko__.__UI__[this.cache.name]=[this];
65
+ element && render && this?.render?.()
66
+ if(
67
+ // globalThis.__Ziko__.__Config__.renderingMode !== "spa"
68
+ // &&
69
+ // !globalThis.__Ziko__.__Config__.isSSC
70
+ // &&
71
+ this.isInteractive()){
72
+ // this.setAttr("ziko-hydration-index", globalThis.__Ziko__.__HYDRATION__.index);
73
+ // this.element.setAttribute('ziko-hydration-index', globalThis.__Ziko__.__HYDRATION__.index)
74
+ globalThis.__Ziko__.__HYDRATION__.register(() => this)
75
+ }
76
+ globalThis.__Ziko__.__UI__.push(this)
77
+ }
78
+ get element(){
79
+ return this.cache.element;
80
+ }
81
+ [Symbol.iterator]() {
82
+ return this.items[Symbol.iterator]();
83
+ }
84
+ maintain() {
85
+ for (let i = 0; i < this.items.length; i++) {
86
+ Object.defineProperty(this, i, {
87
+ value: this.items[i],
88
+ writable: true,
89
+ configurable: true,
90
+ enumerable: false
91
+ });
92
+ }
93
+ }
94
+ isInteractive(){
95
+ return this.cache.isInteractive;
96
+ }
97
+ isUIElement(){
98
+ return true;
99
+ }
100
+ // get st(){
101
+ // return this.cache.style;
102
+ // }
103
+ // get attr(){
104
+ // return this.cache.attributes;
105
+ // }
106
+ // get evt(){
107
+ // return this.events;
108
+ // }
109
+ // get html(){
110
+ // return this.element.innerHTML;
111
+ // }
112
+ // get text(){
113
+ // return this.element.textContent;
114
+ // }
115
+ // get isBody(){
116
+ // return this.element === globalThis?.document.body;
117
+ // }
118
+ // get parent(){
119
+ // return this.cache.parent;
120
+ // }
121
+ // get width(){
122
+ // return this.element.getBoundingClientRect().width;
123
+ // }
124
+ // get height(){
125
+ // return this.element.getBoundingClientRect().height;
126
+ // }
127
+ // get top(){
128
+ // return this.element.getBoundingClientRect().top;
129
+ // }
130
+ // get right(){
131
+ // return this.element.getBoundingClientRect().right;
132
+ // }
133
+ // get bottom(){
134
+ // return this.element.getBoundingClientRect().bottom;
135
+ // }
136
+ // get left(){
137
+ // return this.element.getBoundingClientRect().left;
138
+ // }
139
+ // clone(render=false) {
140
+ // // UI.__proto__=this.__proto__;
141
+ // // if(this.items.length){
142
+ // // const items = [...this.items].map(n=>n.clone());
143
+ // // UI.append(...items);
144
+ // // }
145
+ // // else UI.element=this.element.cloneNode(true);
146
+ // // return UI.render(render);
147
+ // }
148
+
149
+ // freeze(freeze){
150
+ // this.cache.isFrozzen=freeze;
151
+ // return this;
152
+ // }
153
+ // setTarget(tg) {
154
+ // if(this.isBody) return ;
155
+ // if (tg?.isUIElement) tg = tg.element;
156
+ // this.unrender();
157
+ // this.target = tg;
158
+ // this.render();
159
+ // return this;
160
+ // }
161
+ // describe(label){
162
+ // if(label)this.setAttr("aria-label",label)
163
+ // }
164
+ // get children() {
165
+ // return [...this.element.children];
166
+ // }
167
+ // get cloneElement() {
168
+ // return this.element.cloneNode(true);
169
+ // }
170
+ // setClasses(...value) {
171
+ // this.setAttr("class", value.join(" "));
172
+ // return this;
173
+ // }
174
+ // get classes(){
175
+ // const classes=this.element.getAttribute("class");
176
+ // return classes===null?[]:classes.split(" ");
177
+ // }
178
+ // addClass() {
179
+ // /*this.setAttr("class", value);
180
+ // return this;*/
181
+ // }
182
+ // setId(id) {
183
+ // this.setAttr("id", id);
184
+ // return this;
185
+ // }
186
+ // get id() {
187
+ // return this.element.getAttribute("id");
188
+ // }
189
+ // onSwipe(width_threshold, height_threshold,...callbacks){
190
+ // if(!this.events.swipe)this.events.swipe = useSwipeEvent(this, width_threshold, height_threshold);
191
+ // this.events.swipe.onSwipe(...callbacks);
192
+ // return this;
193
+ // }
194
+ // To Fix
195
+ // onKeysDown({keys=[],callback}={}){
196
+ // if(!this.events.key)this.events.key = useKeyEvent(this);
197
+ // this.events.key.handleSuccessifKeys({keys,callback});
198
+ // return this;
199
+ // }
200
+ // onSelect(...callbacks){
201
+ // if(!this.events.clipboard)this.events.clipboard = useClipboardEvent(this);
202
+ // this.events.clipboard.onSelect(...callbacks);
203
+ // return this;
204
+ // }
205
+ // on(event_name,...callbacks){
206
+ // if(!this.events.custom)this.events.custom = useCustomEvent(this);
207
+ // this.events.custom.on(event_name,...callbacks);
208
+ // return this;
209
+ // }
210
+ // emit(event_name,detail={}){
211
+ // if(!this.events.custom)this.events.custom = useCustomEvent(this);
212
+ // this.events.custom.emit(event_name,detail);
213
+ // return this;
214
+ // }
215
+ // watchAttr(callback){
216
+ // if(!this.observer.attr)this.observer.attr = watchAttr(this,callback);
217
+ // return this;
218
+ // }
219
+ // watchChildren(callback){
220
+ // if(!this.observer.children)this.observer.children = watchChildren(this,callback);
221
+ // return this;
222
+ // }
223
+ // watchSize(callback){
224
+ // if(!this.observer.resize)this.observer.resize = watchSize(this,callback);
225
+ // this.observer.resize.start();
226
+ // return this;
227
+ // }
228
+ // watchIntersection(callback,config){
229
+ // if(!this.observer.intersection)this.observer.intersection = watchIntersection(this,callback,config);
230
+ // this.observer.intersection.start();
231
+ // return this;
232
+ // }
233
+
234
+ }
235
+ export { UIElementCore }
package/src/ui/index.js CHANGED
@@ -3,8 +3,8 @@ export * from "./constructors/UINode.js"
3
3
  export * from './tags/index.js';
4
4
  export * from './text/index.js';
5
5
  export * from './flex/index.js';
6
- export * from './grid/index.js';
6
+ // export * from './grid/index.js';
7
7
  export * from './suspense/index.js';
8
- export * from './wrapper/index.js';
9
- export * from './graphics/index.js'
8
+ export * from './wrappers/index.js';
9
+ // export * from './graphics/index.js'
10
10
  export * from './web-component/index.js'
@@ -1,4 +1,4 @@
1
- import {UIElement} from "../constructors/UIElement";
1
+ import {UIElement} from "../constructors/UIElement-lite.js";
2
2
  class ZikoUISuspense extends UIElement{
3
3
  constructor(fallback_ui, callback){
4
4
  super({element : "div", name : "suspense"})
@@ -9,8 +9,8 @@ const _h=(tag, type, attributes, ...children)=>{
9
9
  children && element.append(...children);
10
10
  return element;
11
11
  }
12
- const h=(tag, attributes = {}, ...children)=> _h(tag, "html", attributes, ...children);
13
- const s=(tag, attributes = {}, ...children)=> _h(tag, "svg", attributes, ...children);
12
+ // const h=(tag, attributes = {}, ...children)=> _h(tag, "html", attributes, ...children);
13
+ // const s=(tag, attributes = {}, ...children)=> _h(tag, "svg", attributes, ...children);
14
14
 
15
15
  const tags = new Proxy({}, {
16
16
  get(target, prop) {
@@ -19,16 +19,22 @@ const tags = new Proxy({}, {
19
19
  let type ;
20
20
  if(HTMLTags.includes(tag)) type = 'html'
21
21
  if(SVGTags.includes(tag)) type = 'svg'
22
+ console.log(type)
22
23
  return (...args)=>{
23
24
  // Fix undefined
24
25
  // console.log(isStateGetter(args[0]))
26
+ // console.log(!!args)
27
+ if(args.length === 0) {
28
+ console.log('length 0')
29
+ return new UIElement({element : tag, name : tag, type})
30
+ }
25
31
  if(
26
32
  ['string', 'number'].includes(typeof args[0])
27
33
  || args[0] instanceof UIElement
28
34
  || (typeof args[0] === 'function' && args[0]().isStateGetter())
29
35
  ) return new UIElement({element : tag, name : tag, type}).append(...args);
30
36
  // console.log(args[0])
31
- return new UIElement({element : tag}).setAttr(args.shift()).append(...args)
37
+ return new UIElement({element : tag, type}).setAttr(args.shift()).append(...args)
32
38
  }
33
39
  // if(SVGTags.includes(tag)) return (...args) => new UIElement(tag,"",{el_type : "svg"}).append(...args);
34
40
  // return (...args)=>{
@@ -86,7 +86,6 @@ const HTMLTags = [
86
86
  'sub',
87
87
  'summary',
88
88
  'sup',
89
- 'svg',
90
89
  'table',
91
90
  'tbody',
92
91
  'td',
@@ -0,0 +1,26 @@
1
+ import { UIElement } from "../../constructors/UIElement.js";
2
+
3
+ class UIHTMLWrapper extends UIElement {
4
+ constructor(content){
5
+ super({element : 'div', name : 'html_wrappper'})
6
+ this.element.append(html2dom(content))
7
+ this.style({
8
+ display : 'contents'
9
+ })
10
+ }
11
+ }
12
+
13
+ function html2dom(htmlString) {
14
+ if(globalThis?.DOMParser){
15
+ const parser = new DOMParser();
16
+ const doc = parser.parseFromString(`<div>${htmlString}</div>`, 'text/html');
17
+ doc.body.firstChild.style.display = "contents"
18
+ return doc.body.firstChild;
19
+ }
20
+ }
21
+
22
+ const HTMLWrapper = (content) => new UIHTMLWrapper(content)
23
+ export{
24
+ UIHTMLWrapper,
25
+ HTMLWrapper
26
+ }
@@ -0,0 +1,2 @@
1
+ export * from './html/index.js'
2
+ export * from './svg/index.js'
@@ -0,0 +1,46 @@
1
+ import { UIElement } from "../../constructors/UIElement.js";
2
+
3
+ class UISVGWrapper extends UIElement {
4
+ constructor(content){
5
+ super({element : 'div', name : 'html_wrappper'})
6
+ this.element.append(svg2dom(content));
7
+ this.style({
8
+ display : 'contents'
9
+ })
10
+ }
11
+ }
12
+
13
+ function svg2dom(svgString) {
14
+ if (typeof DOMParser !== "undefined") {
15
+ const parser = new DOMParser();
16
+ const doc = parser.parseFromString(svgString.trim(), "image/svg+xml");
17
+ const svg = doc.documentElement;
18
+
19
+ if (svg.nodeName === "parsererror") {
20
+ throw new Error("Invalid SVG string");
21
+ }
22
+ if(svg.hasAttribute('xmlns')) return svg
23
+ // TO Fix ...
24
+ const {children, attributes} = svg;
25
+ const element = document.createElementNS("http://www.w3.org/2000/svg", "svg")
26
+ for(let {name, value} of attributes){
27
+ element.setAttribute(name, value)
28
+ }
29
+ element.append(...children)
30
+
31
+ globalThis.svg = svg
32
+ globalThis.children = children
33
+ globalThis.attributes = attributes
34
+ globalThis.element = element
35
+ return element;
36
+ }
37
+ throw new Error("DOMParser is not available in this environment");
38
+ }
39
+
40
+
41
+
42
+ const SVGWrapper = (content) => new UISVGWrapper(content)
43
+ export{
44
+ UISVGWrapper,
45
+ SVGWrapper
46
+ }
@@ -1,18 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventClick extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Click, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
- if(this.currentEvent==="click") this.dx = 0
10
- else this.dx = 1
11
- // console.log(this.currentEvent)
12
- }
13
- const bindClickEvent = (target, customizer) => new ZikoEventClick(target, customizer)
14
-
15
- export{
16
- bindClickEvent,
17
- ZikoEventClick
18
- }
@@ -1,16 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventClipboard extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Clipboard, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
-
10
- }
11
- const bindClipboardEvent = (target, customizer) => new ZikoEventClipboard(target, customizer)
12
-
13
- export{
14
- bindClipboardEvent,
15
- ZikoEventClipboard
16
- }
@@ -1,16 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventDrag extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Drag, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
-
10
- }
11
- const bindDragEvent = (target, customizer) => new ZikoEventDrag(target, customizer)
12
-
13
- export{
14
- bindDragEvent,
15
- ZikoEventDrag
16
- }
@@ -1,16 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventFocus extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Focus, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
-
10
- }
11
- const bindFocusEvent = (target, customizer) => new ZikoEventFocus(target, customizer)
12
-
13
- export{
14
- bindFocusEvent,
15
- ZikoEventFocus
16
- }
@@ -1,16 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventMouse extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Mouse, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
-
10
- }
11
- const bindMouseEvent = (target, customizer) => new ZikoEventMouse(target, customizer)
12
-
13
- export{
14
- bindMouseEvent,
15
- ZikoEventMouse
16
- }
@@ -1,16 +0,0 @@
1
- import { __ZikoEvent__ } from "./__ZikoEvent__.js";
2
- import { Events } from "./__Events__.js";
3
- class ZikoEventWheel extends __ZikoEvent__{
4
- constructor(target, customizer){
5
- super(target, Events.Wheel, details_setter, customizer)
6
- }
7
- }
8
- function details_setter(){
9
-
10
- }
11
- const bindWheelEvent = (target, customizer) => new ZikoEventWheel(target, customizer)
12
-
13
- export{
14
- bindWheelEvent,
15
- ZikoEventWheel
16
- }
File without changes
@@ -1,42 +0,0 @@
1
- import {UIElement} from "../constructors/UIElement.js";
2
- class ZikoUIXMLWrapper extends UIElement{
3
- constructor(XMLContent, type){
4
- super({element : "div", name : ""})
5
- this.element.append(type==="svg"?svg2dom(XMLContent):html2dom(XMLContent))
6
- }
7
- }
8
- function html2dom(htmlString) {
9
- if(globalThis?.DOMParser){
10
- const parser = new DOMParser();
11
- const doc = parser.parseFromString(`<div>${htmlString}</div>`, 'text/html');
12
- doc.body.firstChild.style.display = "contents"
13
- return doc.body.firstChild;
14
- }
15
- }
16
- function svg2dom(svgString) {
17
- if(globalThis?.DOMParser){
18
- const parser = new DOMParser();
19
- const doc = parser.parseFromString(svgString.replace(/\s+/g, ' ').trim(), 'image/svg+xml');
20
- return doc.documentElement; // SVG elements are usually at the root
21
- }
22
- }
23
- class ZikoUIHTMLWrapper extends ZikoUIXMLWrapper{
24
- constructor(HTMLContent){
25
- super(HTMLContent, "html")
26
- }
27
- }
28
- class ZikoUISVGWrapper extends ZikoUIXMLWrapper{
29
- constructor(SVGContent){
30
- super(SVGContent, "svg")
31
- }
32
- }
33
- const HTMLWrapper = (HTMLContent) => new ZikoUIHTMLWrapper(HTMLContent);
34
- const SVGWrapper = (SVGContent) => new ZikoUISVGWrapper(SVGContent);
35
-
36
- export{
37
- ZikoUIXMLWrapper,
38
- ZikoUIHTMLWrapper,
39
- ZikoUISVGWrapper,
40
- HTMLWrapper,
41
- SVGWrapper
42
- }