ziko 0.67.0 → 0.68.0
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/dist/ziko.cjs +276 -805
- package/dist/ziko.js +276 -805
- package/dist/ziko.min.js +2 -2
- package/dist/ziko.mjs +276 -791
- package/package.json +1 -1
- package/src/events/controller/index.js +57 -0
- package/src/events/custom-events-registry/click-away.js +1 -0
- package/src/events/index.js +1 -3
- package/src/{exp-events → events-dep}/custom-events-registry/click-away.js +0 -1
- package/src/events-dep/index.js +3 -0
- package/src/ui/constructors/UIElement.js +17 -7
- package/src/ui/constructors/mixins/attrs.js +19 -5
- package/src/ui/constructors/mixins/dom.js +53 -1
- package/src/ui/constructors/mixins/events/click.js +22 -0
- package/src/ui/constructors/mixins/events/index.js +3 -0
- package/src/ui/constructors/mixins/events/key.js +24 -0
- package/src/ui/constructors/mixins/events/ptr.js +44 -0
- package/src/ui/constructors/mixins/events/utils/index.js +15 -0
- package/src/ui/constructors/mixins/index.js +4 -2
- package/src/exp-events/controller/index.js +0 -41
- package/src/exp-events/index.js +0 -1
- package/src/ui/constructors/mixins/events.js +0 -57
- package/src/ui/constructors/mixins/utils/index.js +0 -64
- /package/src/{events → events-dep}/binders/coordinates-based-event.js +0 -0
- /package/src/{events → events-dep}/binders/custom-event.js +0 -0
- /package/src/{events → events-dep}/binders/index.js +0 -0
- /package/src/{exp-events → events-dep}/custom-events-registry/index.js +0 -0
- /package/src/{exp-events → events-dep}/custom-events-registry/swipe.js +0 -0
- /package/src/{exp-events → events-dep}/custom-events-registry/view.js +0 -0
- /package/src/{events → events-dep}/customizers/normalise-coordinates.js +0 -0
- /package/src/{exp-events → events-dep}/details-setter/index.js +0 -0
- /package/src/{exp-events → events-dep}/details-setter/key.js +0 -0
- /package/src/{exp-events → events-dep}/details-setter/mouse.js +0 -0
- /package/src/{exp-events → events-dep}/details-setter/pointer.js +0 -0
- /package/src/{exp-events → events-dep}/details-setter/touch.js +0 -0
- /package/src/{events → events-dep}/events-map/index.js +0 -0
- /package/src/{events → events-dep}/types/__Shared__.d.ts +0 -0
- /package/src/{events → events-dep}/types/clipboard.d.ts +0 -0
- /package/src/{events → events-dep}/types/focus.d.ts +0 -0
- /package/src/{events → events-dep}/types/pointer.d.ts +0 -0
- /package/src/{events → events-dep}/utils.js +0 -0
- /package/src/{events → events-dep}/ziko-event.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ziko",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"description": "A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"front-end",
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export class EventController {
|
|
2
|
+
constructor(target, category){
|
|
3
|
+
this.cache = {
|
|
4
|
+
category,
|
|
5
|
+
target,
|
|
6
|
+
listeners : {},
|
|
7
|
+
currentEvent : null,
|
|
8
|
+
event : null
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
get event(){
|
|
12
|
+
return this.cache.event
|
|
13
|
+
}
|
|
14
|
+
get element(){
|
|
15
|
+
return this.cache.target.element;
|
|
16
|
+
}
|
|
17
|
+
get currentEvent(){
|
|
18
|
+
return this.cache.currentEvent;
|
|
19
|
+
}
|
|
20
|
+
addListener(event_name, callback, {preventDefault = false, paused = false} = {}){
|
|
21
|
+
this.cache.listeners[event_name] = {
|
|
22
|
+
callback : e =>{
|
|
23
|
+
this.cache.event = e;
|
|
24
|
+
if(this.cache.listeners[event_name].preventDefault) e.preventDefault()
|
|
25
|
+
if(!this.cache.listeners[event_name].paused) {
|
|
26
|
+
this.cache.currentEvent = event_name;
|
|
27
|
+
callback.call(this, this)
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
preventDefault,
|
|
31
|
+
paused,
|
|
32
|
+
};
|
|
33
|
+
this.element.addEventListener(event_name, this.cache.listeners[event_name].callback);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
removeListener(event_name){
|
|
37
|
+
this.element.removeEventListener(event_name, this.cache.listeners[event_name].callback);
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
pause(event_name){
|
|
41
|
+
this.cache.listeners[event_name].paused = true;
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
resume(event_name){
|
|
45
|
+
this.cache.listeners[event_name].paused = false;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
preventDefault(event_name){
|
|
49
|
+
// if(!event_name)
|
|
50
|
+
this.cache.listeners[event_name].preventDefault = true;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
useDefault(event_name){
|
|
54
|
+
this.cache.listeners[event_name].preventDefault = false;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/events/index.js
CHANGED
|
@@ -5,13 +5,16 @@ import {
|
|
|
5
5
|
AttrsMethods,
|
|
6
6
|
DomMethods,
|
|
7
7
|
IndexingMethods,
|
|
8
|
-
EventsMethodes,
|
|
9
|
-
StyleMethods
|
|
8
|
+
// EventsMethodes,
|
|
9
|
+
StyleMethods,
|
|
10
|
+
PtrListeners,
|
|
11
|
+
ClickListeners,
|
|
12
|
+
KeyListeners,
|
|
10
13
|
} from "./mixins/index.js";
|
|
11
14
|
|
|
12
15
|
import {
|
|
13
16
|
EventController
|
|
14
|
-
} from '../../
|
|
17
|
+
} from '../../events/index.js'
|
|
15
18
|
class UIElement extends UIElementCore{
|
|
16
19
|
constructor({element, name ='', type='html', render = __Ziko__.__Config__.default.render}={}){
|
|
17
20
|
super()
|
|
@@ -27,16 +30,23 @@ class UIElement extends UIElementCore{
|
|
|
27
30
|
DomMethods,
|
|
28
31
|
StyleMethods,
|
|
29
32
|
IndexingMethods,
|
|
30
|
-
|
|
33
|
+
PtrListeners,
|
|
34
|
+
ClickListeners,
|
|
35
|
+
KeyListeners
|
|
31
36
|
);
|
|
32
37
|
|
|
33
38
|
if(element)this.init(element, name, type, render)
|
|
34
39
|
}
|
|
35
|
-
_on(event, callback, {details_setter, category = 'global'} = {}){
|
|
40
|
+
_on(event, callback, {details_setter, category = 'global', preventDefault = false} = {}){
|
|
36
41
|
if(category && !this.exp.events.hasOwnProperty(category)) this.exp.events[category] = new EventController(this, category);
|
|
37
42
|
const EVENT = this.exp.events[category]
|
|
38
|
-
EVENT.addListener(event,
|
|
39
|
-
|
|
43
|
+
EVENT.addListener(event, (e)=>{
|
|
44
|
+
if(details_setter) details_setter(EVENT);
|
|
45
|
+
callback(e)
|
|
46
|
+
},{
|
|
47
|
+
preventDefault
|
|
48
|
+
});
|
|
49
|
+
|
|
40
50
|
}
|
|
41
51
|
_off(event, category = 'global'){
|
|
42
52
|
this.exp.events[category].removeListener(event)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { isStateGetter } from "../../../hooks/use-state.js";
|
|
2
|
+
import {
|
|
3
|
+
is_camelcase,
|
|
4
|
+
camel2hyphencase
|
|
5
|
+
} from '../../../data/string/index.js'
|
|
6
6
|
|
|
7
7
|
export function setAttr(name, value) {
|
|
8
8
|
if(name instanceof Object){
|
|
@@ -31,3 +31,17 @@ export function setContentEditable(bool = true) {
|
|
|
31
31
|
return this;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
|
|
35
|
+
export function _set_attrs_(name, value){
|
|
36
|
+
if(globalThis.SVGAElement && this.element instanceof globalThis.SVGAElement) name = is_camelcase(name) ? camel2hyphencase(name) : name;
|
|
37
|
+
if(this?.attr[name] && this?.attr[name]===value) return;
|
|
38
|
+
if(isStateGetter(value)){
|
|
39
|
+
const getter = value()
|
|
40
|
+
getter._subscribe(
|
|
41
|
+
(newValue) => this.element?.setAttribute(name, newValue),
|
|
42
|
+
this
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
else this.element?.setAttribute(name, value)
|
|
46
|
+
Object.assign(this.cache.attributes, {[name]:value});
|
|
47
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
// import { isStateGetter } from "../../../hooks/use-state.js";
|
|
2
|
+
// import {
|
|
3
|
+
// is_camelcase,
|
|
4
|
+
// camel2hyphencase
|
|
5
|
+
// } from '../../../data/string/index.js';
|
|
1
6
|
import { text } from "../../text/index.js";
|
|
2
|
-
|
|
7
|
+
|
|
3
8
|
export function append(...ele) {
|
|
4
9
|
__addItem__.call(this, "append", "push", ...ele);
|
|
5
10
|
return this;
|
|
@@ -54,3 +59,50 @@ export function before(ui){
|
|
|
54
59
|
}
|
|
55
60
|
|
|
56
61
|
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
export async function __addItem__(adder, pusher, ...ele) {
|
|
65
|
+
if (this.cache.isFrozzen) {
|
|
66
|
+
console.warn("You can't append new item to frozzen element");
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
for (let i = 0; i < ele.length; i++) {
|
|
70
|
+
if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
|
|
71
|
+
// Fix Items Latter
|
|
72
|
+
if (ele[i] instanceof Function) {
|
|
73
|
+
const getter = ele[i]();
|
|
74
|
+
if (getter.isStateGetter) {
|
|
75
|
+
ele[i] = text(getter.value);
|
|
76
|
+
getter._subscribe(
|
|
77
|
+
(newValue) => (ele[i].element.textContent = newValue),
|
|
78
|
+
ele[i]
|
|
79
|
+
);
|
|
80
|
+
// this.element.appendChild(textNode);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
84
|
+
if (ele[i]?.isUINode) {
|
|
85
|
+
ele[i].cache.parent = this;
|
|
86
|
+
this.element?.[adder](ele[i].element);
|
|
87
|
+
ele[i].target = this.element;
|
|
88
|
+
this.items[pusher](ele[i]);
|
|
89
|
+
}
|
|
90
|
+
else if(ele[i] instanceof Promise){
|
|
91
|
+
const UIEle = await ele[i]
|
|
92
|
+
UIEle.cache.parent = this;
|
|
93
|
+
this.element?.[adder](UIEle.element);
|
|
94
|
+
UIEle.target = this.element;
|
|
95
|
+
this.items[pusher](UIEle)
|
|
96
|
+
}
|
|
97
|
+
else if (ele[i] instanceof Object) {
|
|
98
|
+
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
99
|
+
if (ele[i]?.attr) {
|
|
100
|
+
Object.entries(ele[i].attr).forEach((n) =>
|
|
101
|
+
this.setAttr("" + n[0], n[1]),
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
this.maintain();
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const CATEGORY = 'click';
|
|
2
|
+
import {register_click_away_event} from '../../../../events/custom-events-registry/click-away.js'
|
|
3
|
+
export const ClickListeners = {
|
|
4
|
+
onClick(callback){
|
|
5
|
+
this._on(
|
|
6
|
+
'click', callback,
|
|
7
|
+
{ category : CATEGORY })
|
|
8
|
+
},
|
|
9
|
+
onDblClick(callback){
|
|
10
|
+
this._on(
|
|
11
|
+
'dblclick', callback,
|
|
12
|
+
{ category : CATEGORY})
|
|
13
|
+
},
|
|
14
|
+
onClickAway(callback){
|
|
15
|
+
register_click_away_event(this.element)
|
|
16
|
+
this._on(
|
|
17
|
+
'clickaway', callback,
|
|
18
|
+
{ category : CATEGORY})
|
|
19
|
+
},
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const CATEGORY = 'key'
|
|
2
|
+
export const KeyListeners = {
|
|
3
|
+
onKeyDown(callback){
|
|
4
|
+
this._on(
|
|
5
|
+
'keydown', callback,
|
|
6
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.kd = ctx.event.key }
|
|
7
|
+
})
|
|
8
|
+
},
|
|
9
|
+
onKeyPress(callback){
|
|
10
|
+
this._on(
|
|
11
|
+
'keypress', callback,
|
|
12
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.kp = ctx.event.key }
|
|
13
|
+
})
|
|
14
|
+
},
|
|
15
|
+
onKeyUp(callback){
|
|
16
|
+
this._on(
|
|
17
|
+
'keydown', callback,
|
|
18
|
+
{ category : CATEGORY, details_setter : ctx=> { ctx.ku = ctx.event.key }
|
|
19
|
+
})
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { getCoordinates } from "./utils/index.js";
|
|
2
|
+
const CATEGORY = 'ptr';
|
|
3
|
+
export const PtrListeners = {
|
|
4
|
+
onPtrDown(callback, useNormalizedCoordinates = false){
|
|
5
|
+
this._on(
|
|
6
|
+
'pointerdown', callback,
|
|
7
|
+
{ category : CATEGORY, details_setter : (ctx)=> {
|
|
8
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
9
|
+
ctx.dx = x;
|
|
10
|
+
ctx.dy = y;
|
|
11
|
+
ctx.isDown = true;
|
|
12
|
+
ctx.isDragging = ctx.isMoving ?? false
|
|
13
|
+
}}
|
|
14
|
+
)
|
|
15
|
+
},
|
|
16
|
+
onPtrMove(callback, useNormalizedCoordinates = false){
|
|
17
|
+
this._on(
|
|
18
|
+
'pointermove', callback,
|
|
19
|
+
{ category : CATEGORY, details_setter : (ctx)=> {
|
|
20
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
21
|
+
ctx.mx = x;
|
|
22
|
+
ctx.my = y;
|
|
23
|
+
ctx.isMoving = true;
|
|
24
|
+
ctx.isDragging = ctx.isDown ?? false
|
|
25
|
+
}}
|
|
26
|
+
)
|
|
27
|
+
},
|
|
28
|
+
onPtrUp(callback, useNormalizedCoordinates = false){
|
|
29
|
+
this._on(
|
|
30
|
+
'pointerup', callback,
|
|
31
|
+
{ category : CATEGORY, details_setter : (ctx)=> {
|
|
32
|
+
const {x, y} = getCoordinates(ctx, useNormalizedCoordinates);
|
|
33
|
+
ctx.ux = x;
|
|
34
|
+
ctx.uy = y;
|
|
35
|
+
ctx.isDown = false;
|
|
36
|
+
ctx.isMoving = false;
|
|
37
|
+
ctx.isDragging = false;
|
|
38
|
+
}}
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const getCoordinates = (ctx, normalized = false) =>{
|
|
2
|
+
const rect = ctx.element.getBoundingClientRect();
|
|
3
|
+
const e = ctx.event;
|
|
4
|
+
let x = (e?.clientX - rect.left) | 0;
|
|
5
|
+
let y = (e?.clientY - rect.top) | 0;
|
|
6
|
+
|
|
7
|
+
if(normalized){
|
|
8
|
+
const w = ctx.element.clientWidth;
|
|
9
|
+
const h = ctx.element.clientHeight;
|
|
10
|
+
x = +((x / w) * 2 - 1).toFixed(8);
|
|
11
|
+
y = +((y / h) * -2 + 1).toFixed(8);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return {x, y};
|
|
15
|
+
}
|
|
@@ -7,11 +7,13 @@ export * as AttrsMethods from './attrs.js'
|
|
|
7
7
|
export * from './dom.js'
|
|
8
8
|
export * as DomMethods from './dom.js'
|
|
9
9
|
|
|
10
|
-
export * from './events.js'
|
|
10
|
+
// export * from './events.js'
|
|
11
11
|
|
|
12
12
|
export * from './indexing.js'
|
|
13
13
|
export * as IndexingMethods from './indexing.js'
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
export * from './style.js'
|
|
17
|
-
export * as StyleMethods from './style.js'
|
|
17
|
+
export * as StyleMethods from './style.js'
|
|
18
|
+
|
|
19
|
+
export * from './events/index.js'
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export class EventController {
|
|
2
|
-
constructor(target, category){
|
|
3
|
-
this.cache = {
|
|
4
|
-
category,
|
|
5
|
-
target,
|
|
6
|
-
listeners : {},
|
|
7
|
-
currentEvent : null
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
get element(){
|
|
11
|
-
return this.cache.target.element;
|
|
12
|
-
}
|
|
13
|
-
get currentEvent(){
|
|
14
|
-
return this.cache.currentEvent;
|
|
15
|
-
}
|
|
16
|
-
addListener(event, callback){
|
|
17
|
-
this.cache.listeners[event] = {
|
|
18
|
-
paused : false,
|
|
19
|
-
callback : ()=>{
|
|
20
|
-
if(!this.cache.listeners[event].paused) {
|
|
21
|
-
this.cache.currentEvent = event
|
|
22
|
-
callback.call(this, this)
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
this.element.addEventListener(event, this.cache.listeners[event].callback);
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
removeListener(event){
|
|
30
|
-
this.element.removeEventListener(event, this.cache.listeners[event].callback);
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
pause(event){
|
|
34
|
-
this.cache.listeners[event].paused = true;
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
resume(event){
|
|
38
|
-
this.cache.listeners[event].paused = false;
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
}
|
package/src/exp-events/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './controller/index.js'
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { EventsMap } from "../../../events/events-map/index.js";
|
|
2
|
-
import {
|
|
3
|
-
bind_pointer_event,
|
|
4
|
-
bind_mouse_event,
|
|
5
|
-
bind_key_event,
|
|
6
|
-
bind_click_event,
|
|
7
|
-
bind_drag_event,
|
|
8
|
-
bind_clipboard_event,
|
|
9
|
-
bind_focus_event,
|
|
10
|
-
bind_wheel_event,
|
|
11
|
-
bind_view_event,
|
|
12
|
-
bind_swipe_event
|
|
13
|
-
} from "../../../events/binders/index.js";
|
|
14
|
-
|
|
15
|
-
import { bind_custom_event } from "../../../events/binders/custom-event.js";
|
|
16
|
-
|
|
17
|
-
const binderMap = {
|
|
18
|
-
ptr: bind_pointer_event,
|
|
19
|
-
mouse : bind_mouse_event,
|
|
20
|
-
key: bind_key_event,
|
|
21
|
-
click : bind_click_event,
|
|
22
|
-
drag : bind_drag_event,
|
|
23
|
-
clipboard : bind_clipboard_event,
|
|
24
|
-
focus : bind_focus_event,
|
|
25
|
-
wheel : bind_wheel_event,
|
|
26
|
-
view : bind_view_event,
|
|
27
|
-
swipe : bind_swipe_event
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const EventsMethodes = {
|
|
31
|
-
on(event_name,...callbacks){
|
|
32
|
-
if(!this.events.custom)this.events.custom = bind_custom_event(this);
|
|
33
|
-
this.events.custom.on(event_name,...callbacks);
|
|
34
|
-
return this;
|
|
35
|
-
},
|
|
36
|
-
emit(event_name,detail={}){
|
|
37
|
-
if(!this.events.custom)this.events.custom = bind_custom_event(this);
|
|
38
|
-
this.events.custom.emit(event_name,detail);
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
Object.entries(EventsMap).forEach(([name, eventList]) => {
|
|
44
|
-
const lname = name.toLowerCase()
|
|
45
|
-
eventList.forEach(event => {
|
|
46
|
-
const methodName = `on${event}`;
|
|
47
|
-
EventsMethodes[methodName] = function (callbacks) {
|
|
48
|
-
if (!this.events[lname]) this.events[lname] = binderMap[lname](this);
|
|
49
|
-
this.events[lname][methodName](callbacks);
|
|
50
|
-
return this;
|
|
51
|
-
};
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
export {EventsMethodes}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { isStateGetter } from "../../../../hooks/use-state.js";
|
|
2
|
-
import {
|
|
3
|
-
is_camelcase,
|
|
4
|
-
camel2hyphencase
|
|
5
|
-
} from '../../../../data/string/index.js'
|
|
6
|
-
import { text } from "../../../text/index.js";
|
|
7
|
-
export async function __addItem__(adder, pusher, ...ele) {
|
|
8
|
-
if (this.cache.isFrozzen) {
|
|
9
|
-
console.warn("You can't append new item to frozzen element");
|
|
10
|
-
return this;
|
|
11
|
-
}
|
|
12
|
-
for (let i = 0; i < ele.length; i++) {
|
|
13
|
-
if (["number", "string"].includes(typeof ele[i])) ele[i] = text(ele[i]);
|
|
14
|
-
// Fix Items Latter
|
|
15
|
-
if (ele[i] instanceof Function) {
|
|
16
|
-
const getter = ele[i]();
|
|
17
|
-
if (getter.isStateGetter) {
|
|
18
|
-
ele[i] = text(getter.value);
|
|
19
|
-
getter._subscribe(
|
|
20
|
-
(newValue) => (ele[i].element.textContent = newValue),
|
|
21
|
-
ele[i]
|
|
22
|
-
);
|
|
23
|
-
// this.element.appendChild(textNode);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (typeof globalThis?.Node === "function" && ele[i] instanceof globalThis?.Node) ele[i] = new this.constructor(ele[i]);
|
|
27
|
-
if (ele[i]?.isUINode) {
|
|
28
|
-
ele[i].cache.parent = this;
|
|
29
|
-
this.element?.[adder](ele[i].element);
|
|
30
|
-
ele[i].target = this.element;
|
|
31
|
-
this.items[pusher](ele[i]);
|
|
32
|
-
}
|
|
33
|
-
else if(ele[i] instanceof Promise){
|
|
34
|
-
const UIEle = await ele[i]
|
|
35
|
-
UIEle.cache.parent = this;
|
|
36
|
-
this.element?.[adder](UIEle.element);
|
|
37
|
-
UIEle.target = this.element;
|
|
38
|
-
this.items[pusher](UIEle)
|
|
39
|
-
}
|
|
40
|
-
else if (ele[i] instanceof Object) {
|
|
41
|
-
if (ele[i]?.style) this.style(ele[i]?.style);
|
|
42
|
-
if (ele[i]?.attr) {
|
|
43
|
-
Object.entries(ele[i].attr).forEach((n) =>
|
|
44
|
-
this.setAttr("" + n[0], n[1]),
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
this.maintain();
|
|
50
|
-
return this;
|
|
51
|
-
}
|
|
52
|
-
export function _set_attrs_(name, value){
|
|
53
|
-
if(globalThis.SVGAElement && this.element instanceof globalThis.SVGAElement) name = is_camelcase(name) ? camel2hyphencase(name) : name;
|
|
54
|
-
if(this?.attr[name] && this?.attr[name]===value) return;
|
|
55
|
-
if(isStateGetter(value)){
|
|
56
|
-
const getter = value()
|
|
57
|
-
getter._subscribe(
|
|
58
|
-
(newValue) => this.element?.setAttribute(name, newValue),
|
|
59
|
-
this
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
else this.element?.setAttribute(name, value)
|
|
63
|
-
Object.assign(this.cache.attributes, {[name]:value});
|
|
64
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|