cradova 3.0.0 → 3.1.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/README.md +11 -9
- package/package.json +1 -1
- package/dist/index.d.ts +0 -623
- package/dist/index.js +0 -1369
package/dist/index.js
DELETED
|
@@ -1,1369 +0,0 @@
|
|
|
1
|
-
// lib/parts/fns.ts
|
|
2
|
-
var isNode = (node) => typeof node === "object" && typeof node.nodeType === "number";
|
|
3
|
-
var cradovaEvent = class {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.listeners = {};
|
|
6
|
-
}
|
|
7
|
-
addEventListener(eventName, callback) {
|
|
8
|
-
if (!this.listeners[eventName]) {
|
|
9
|
-
this.listeners[eventName] = [];
|
|
10
|
-
}
|
|
11
|
-
this.listeners[eventName].push(callback);
|
|
12
|
-
}
|
|
13
|
-
dispatchEvent(eventName, eventArgs) {
|
|
14
|
-
const eventListeners = this.listeners[eventName] || [];
|
|
15
|
-
for (; eventListeners.length !== 0; ) {
|
|
16
|
-
eventListeners.shift()?.call(void 0, eventArgs);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
var CradovaEvent = new cradovaEvent();
|
|
21
|
-
function Rhoda(l) {
|
|
22
|
-
const fg = new DocumentFragment();
|
|
23
|
-
for (let ch of l) {
|
|
24
|
-
if (Array.isArray(ch)) {
|
|
25
|
-
fg.appendChild(Rhoda(ch));
|
|
26
|
-
} else {
|
|
27
|
-
if (ch instanceof Ref) {
|
|
28
|
-
ch = ch.render(void 0);
|
|
29
|
-
}
|
|
30
|
-
if (typeof ch === "function") {
|
|
31
|
-
ch = ch();
|
|
32
|
-
if (typeof ch === "function") {
|
|
33
|
-
ch = ch();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (typeof ch === "string" || typeof ch === "number") {
|
|
37
|
-
fg.appendChild(document.createTextNode(ch));
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
if (isNode(ch)) {
|
|
41
|
-
fg.appendChild(ch);
|
|
42
|
-
} else {
|
|
43
|
-
if (typeof ch !== "undefined") {
|
|
44
|
-
throw new Error(
|
|
45
|
-
" \u2718 Cradova err: invalid child type: " + ch + " (" + typeof ch + ")"
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return fg;
|
|
52
|
-
}
|
|
53
|
-
function css(identifier) {
|
|
54
|
-
if (Array.isArray(identifier)) {
|
|
55
|
-
identifier = identifier[0];
|
|
56
|
-
}
|
|
57
|
-
if (typeof identifier === "string") {
|
|
58
|
-
let styTag = document.querySelector("style");
|
|
59
|
-
if (styTag !== null) {
|
|
60
|
-
styTag.textContent = identifier + styTag.textContent;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
styTag = document.createElement("style");
|
|
64
|
-
styTag.textContent = identifier;
|
|
65
|
-
document.head.appendChild(styTag);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
function assert(condition, ...elements) {
|
|
69
|
-
if (condition) {
|
|
70
|
-
return elements;
|
|
71
|
-
}
|
|
72
|
-
return void 0;
|
|
73
|
-
}
|
|
74
|
-
function loop(datalist2, component) {
|
|
75
|
-
if (typeof component !== "function") {
|
|
76
|
-
throw new Error(
|
|
77
|
-
" \u2718 Cradova err : Invalid component type, must be a function that returns html "
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
return Array.isArray(datalist2) ? datalist2.map(component) : void 0;
|
|
81
|
-
}
|
|
82
|
-
function assertOr(condition, ifTrue, ifFalse) {
|
|
83
|
-
if (condition) {
|
|
84
|
-
return ifTrue;
|
|
85
|
-
}
|
|
86
|
-
return ifFalse;
|
|
87
|
-
}
|
|
88
|
-
var Ref = class {
|
|
89
|
-
constructor(component) {
|
|
90
|
-
this.effects = [];
|
|
91
|
-
this.effectuate = null;
|
|
92
|
-
this.rendered = false;
|
|
93
|
-
this.published = false;
|
|
94
|
-
this.hasFirstStateUpdateRun = false;
|
|
95
|
-
this.preRendered = null;
|
|
96
|
-
this.reference = new reference();
|
|
97
|
-
this.component = component.bind(this);
|
|
98
|
-
}
|
|
99
|
-
preRender(data2) {
|
|
100
|
-
let ihtml = this.component(data2);
|
|
101
|
-
let phtml;
|
|
102
|
-
if (typeof ihtml === "function") {
|
|
103
|
-
phtml = ihtml;
|
|
104
|
-
ihtml = phtml();
|
|
105
|
-
}
|
|
106
|
-
if (ihtml instanceof HTMLElement) {
|
|
107
|
-
this.preRendered = ihtml;
|
|
108
|
-
}
|
|
109
|
-
if (!this.preRendered) {
|
|
110
|
-
throw new Error(
|
|
111
|
-
" \u2718 Cradova err : Invalid component type for cradova Ref got - " + this.preRendered
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
this.reference._appendDomForce("element", this.preRendered);
|
|
115
|
-
}
|
|
116
|
-
destroyPreRendered() {
|
|
117
|
-
this.preRendered = null;
|
|
118
|
-
}
|
|
119
|
-
render(data2, stash) {
|
|
120
|
-
this.effects = [];
|
|
121
|
-
this.rendered = false;
|
|
122
|
-
this.hasFirstStateUpdateRun = false;
|
|
123
|
-
let element = null;
|
|
124
|
-
if (!this.preRendered) {
|
|
125
|
-
let ihtml = this.component(data2);
|
|
126
|
-
let phtml;
|
|
127
|
-
if (typeof ihtml === "function") {
|
|
128
|
-
phtml = ihtml;
|
|
129
|
-
ihtml = phtml();
|
|
130
|
-
}
|
|
131
|
-
if (ihtml instanceof HTMLElement) {
|
|
132
|
-
element = ihtml;
|
|
133
|
-
}
|
|
134
|
-
if (!element) {
|
|
135
|
-
throw new Error(
|
|
136
|
-
" \u2718 Cradova err : Invalid component type for cradova Ref, got - " + element
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
if (stash) {
|
|
141
|
-
this.stash = data2;
|
|
142
|
-
}
|
|
143
|
-
const av = async () => {
|
|
144
|
-
await this.effector.apply(this);
|
|
145
|
-
};
|
|
146
|
-
CradovaEvent.addEventListener("onmountEvent", av);
|
|
147
|
-
this.effector();
|
|
148
|
-
this.published = true;
|
|
149
|
-
this.rendered = true;
|
|
150
|
-
if (!element) {
|
|
151
|
-
element = this.preRendered;
|
|
152
|
-
}
|
|
153
|
-
this.reference._appendDomForce("element", element);
|
|
154
|
-
return element;
|
|
155
|
-
}
|
|
156
|
-
instance() {
|
|
157
|
-
return this.reference.element;
|
|
158
|
-
}
|
|
159
|
-
_setExtra(Extra) {
|
|
160
|
-
this.Signal = Extra;
|
|
161
|
-
}
|
|
162
|
-
effect(fn) {
|
|
163
|
-
if (!this.rendered) {
|
|
164
|
-
this.effects.push(fn.bind(this));
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
async effector() {
|
|
168
|
-
if (!this.rendered) {
|
|
169
|
-
for (let i2 = 0; i2 < this.effects.length; i2++) {
|
|
170
|
-
await this.effects[i2].apply(this);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (!this.hasFirstStateUpdateRun && this.effectuate) {
|
|
174
|
-
await this.effectuate();
|
|
175
|
-
}
|
|
176
|
-
this.hasFirstStateUpdateRun = true;
|
|
177
|
-
}
|
|
178
|
-
updateState(data2, stash) {
|
|
179
|
-
if (!this) {
|
|
180
|
-
console.error(
|
|
181
|
-
" \u2718 Cradova err: Ref.updateState has is passed out of scope"
|
|
182
|
-
);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
if (!this.rendered) {
|
|
186
|
-
async function updateState(data3) {
|
|
187
|
-
await this.Activate(data3);
|
|
188
|
-
}
|
|
189
|
-
this.effectuate = updateState.bind(this, data2);
|
|
190
|
-
} else {
|
|
191
|
-
if (this.published) {
|
|
192
|
-
(async () => {
|
|
193
|
-
await this.Activate(data2);
|
|
194
|
-
})();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
if (stash) {
|
|
198
|
-
this.stash = data2;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
async Activate(data2) {
|
|
202
|
-
if (!data2) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
this.published = false;
|
|
206
|
-
if (!this.reference.element) {
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
209
|
-
let ihtml = this.component(data2);
|
|
210
|
-
let element;
|
|
211
|
-
let phtml;
|
|
212
|
-
if (typeof ihtml === "function") {
|
|
213
|
-
phtml = ihtml;
|
|
214
|
-
ihtml = phtml();
|
|
215
|
-
}
|
|
216
|
-
if (ihtml instanceof HTMLElement) {
|
|
217
|
-
element = ihtml;
|
|
218
|
-
}
|
|
219
|
-
if (!element) {
|
|
220
|
-
throw new Error(
|
|
221
|
-
" \u2718 Cradova err : Invalid component type for cradova Ref, got - " + element
|
|
222
|
-
);
|
|
223
|
-
}
|
|
224
|
-
this.reference.element.insertAdjacentElement("beforebegin", element);
|
|
225
|
-
if (this.reference.element.parentElement) {
|
|
226
|
-
this.reference.element.parentElement.removeChild(this.reference.element);
|
|
227
|
-
} else {
|
|
228
|
-
this.reference.element.remove();
|
|
229
|
-
}
|
|
230
|
-
this.reference._appendDomForce("element", element);
|
|
231
|
-
this.published = true;
|
|
232
|
-
CradovaEvent.dispatchEvent("onmountEvent");
|
|
233
|
-
}
|
|
234
|
-
remove() {
|
|
235
|
-
this.reference.element.remove();
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
var frag = function(children) {
|
|
239
|
-
const par = document.createDocumentFragment();
|
|
240
|
-
for (let i2 = 0; i2 < children.length; i2++) {
|
|
241
|
-
let a2 = children[i2];
|
|
242
|
-
if (typeof a2 === "function") {
|
|
243
|
-
a2 = a2();
|
|
244
|
-
}
|
|
245
|
-
if (isNode(a2)) {
|
|
246
|
-
par.appendChild(a2);
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
if (a2 instanceof String) {
|
|
250
|
-
par.appendChild(document.createTextNode(a2));
|
|
251
|
-
continue;
|
|
252
|
-
}
|
|
253
|
-
console.error(" \u2718 Cradova err: wrong element type" + a2);
|
|
254
|
-
throw new TypeError(" \u2718 Cradova err: invalid element");
|
|
255
|
-
}
|
|
256
|
-
return par;
|
|
257
|
-
};
|
|
258
|
-
var lazy = class {
|
|
259
|
-
constructor(cb) {
|
|
260
|
-
this._cb = cb;
|
|
261
|
-
}
|
|
262
|
-
async load() {
|
|
263
|
-
let content = await this._cb();
|
|
264
|
-
if (typeof content === "function") {
|
|
265
|
-
content = await content();
|
|
266
|
-
} else {
|
|
267
|
-
content = await content;
|
|
268
|
-
}
|
|
269
|
-
const def = content;
|
|
270
|
-
if (def.default) {
|
|
271
|
-
this.content = def?.default;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
};
|
|
275
|
-
var reference = class {
|
|
276
|
-
bindAs(name) {
|
|
277
|
-
return [this, name];
|
|
278
|
-
}
|
|
279
|
-
_appendDomForce(name, Element) {
|
|
280
|
-
this[name] = Element;
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
// lib/parts/track.ts
|
|
285
|
-
function dispatch(element, state) {
|
|
286
|
-
if (!element) {
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
if (typeof state === "object" && !Array.isArray(state)) {
|
|
290
|
-
for (const key in state) {
|
|
291
|
-
if (key === "style" && typeof state[key] === "object") {
|
|
292
|
-
for (const [k, v] of Object.entries(state[key])) {
|
|
293
|
-
if (typeof element.style[k] !== "undefined" && k !== "src" && typeof v === "string") {
|
|
294
|
-
element.style[k] = v;
|
|
295
|
-
} else {
|
|
296
|
-
throw new Error(
|
|
297
|
-
"\u2718 Cradova err : " + k + " is not a valid css style property"
|
|
298
|
-
);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
continue;
|
|
302
|
-
}
|
|
303
|
-
const stateK = state;
|
|
304
|
-
if (typeof element[key] === "function") {
|
|
305
|
-
if (key.startsWith("on")) {
|
|
306
|
-
element[key] = stateK[key];
|
|
307
|
-
} else {
|
|
308
|
-
element[key].apply(element);
|
|
309
|
-
}
|
|
310
|
-
continue;
|
|
311
|
-
}
|
|
312
|
-
if (key === "text") {
|
|
313
|
-
element.innerText = stateK[key];
|
|
314
|
-
continue;
|
|
315
|
-
}
|
|
316
|
-
if (key === "tree") {
|
|
317
|
-
element.innerHTML = "";
|
|
318
|
-
element.appendChild(frag([stateK[key]]));
|
|
319
|
-
continue;
|
|
320
|
-
}
|
|
321
|
-
if (key.includes("data-")) {
|
|
322
|
-
element.setAttribute(key, stateK[key]);
|
|
323
|
-
continue;
|
|
324
|
-
}
|
|
325
|
-
element[key] = stateK[key];
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
if (typeof state === "string") {
|
|
329
|
-
element.innerText = state;
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
if (typeof state === "function") {
|
|
333
|
-
element.appendChild(frag([state]));
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
if (state instanceof HTMLElement) {
|
|
337
|
-
element.appendChild(state);
|
|
338
|
-
}
|
|
339
|
-
if (!(typeof state === "object" && !Array.isArray(state))) {
|
|
340
|
-
throw new Error(
|
|
341
|
-
" \u2718 Cradova err: Cradova got invalid state => \n" + String(state)
|
|
342
|
-
);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// lib/parts/createSignal.ts
|
|
347
|
-
var createSignal = class {
|
|
348
|
-
constructor(initial, props) {
|
|
349
|
-
this.persistName = "";
|
|
350
|
-
this.actions = {};
|
|
351
|
-
this.ref = [];
|
|
352
|
-
this.value = initial;
|
|
353
|
-
if (props && props.persistName) {
|
|
354
|
-
this.persistName = props.persistName;
|
|
355
|
-
const key = localStorage.getItem(props.persistName);
|
|
356
|
-
if (key && key !== "undefined") {
|
|
357
|
-
this.value = JSON.parse(key);
|
|
358
|
-
}
|
|
359
|
-
if (typeof initial === "object") {
|
|
360
|
-
for (const key2 in initial) {
|
|
361
|
-
if (!Object.prototype.hasOwnProperty.call(this.value, key2)) {
|
|
362
|
-
this.value[key2] = initial[key2];
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
set(value, shouldRefRender) {
|
|
369
|
-
if (typeof value === "function") {
|
|
370
|
-
this.value = value(this.value);
|
|
371
|
-
} else {
|
|
372
|
-
this.value = value;
|
|
373
|
-
}
|
|
374
|
-
if (this.persistName) {
|
|
375
|
-
localStorage.setItem(this.persistName, JSON.stringify(this.value));
|
|
376
|
-
}
|
|
377
|
-
if (this.ref.length && shouldRefRender !== false) {
|
|
378
|
-
this._updateState();
|
|
379
|
-
}
|
|
380
|
-
if (this.callback) {
|
|
381
|
-
this.callback(this.value);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
setKey(key, value, shouldRefRender) {
|
|
385
|
-
if (typeof this.value === "object" && !Array.isArray(this.value)) {
|
|
386
|
-
this.value[key] = value;
|
|
387
|
-
if (this.persistName) {
|
|
388
|
-
localStorage.setItem(this.persistName, JSON.stringify(this.value));
|
|
389
|
-
}
|
|
390
|
-
if (this.ref.length && shouldRefRender !== false) {
|
|
391
|
-
this._updateState();
|
|
392
|
-
}
|
|
393
|
-
if (this.callback) {
|
|
394
|
-
this.callback(this.value);
|
|
395
|
-
}
|
|
396
|
-
} else {
|
|
397
|
-
throw new Error(
|
|
398
|
-
`\u2718 Cradova err : can't set key ${String(
|
|
399
|
-
key
|
|
400
|
-
)} . store.value is not a javascript object`
|
|
401
|
-
);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
createAction(name, action) {
|
|
405
|
-
if (typeof name === "string" && typeof action === "function") {
|
|
406
|
-
this.actions[name] = action;
|
|
407
|
-
} else {
|
|
408
|
-
throw new Error(
|
|
409
|
-
`\u2718 Cradova err : can't create action, ${name} is not a function`
|
|
410
|
-
);
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
createActions(Actions) {
|
|
414
|
-
for (const [name, action] of Object.entries(Actions)) {
|
|
415
|
-
if (typeof name === "string" && typeof action === "function") {
|
|
416
|
-
this.actions[name] = action;
|
|
417
|
-
} else {
|
|
418
|
-
throw new Error(
|
|
419
|
-
`\u2718 Cradova err : can't create action, ${name} is not a function`
|
|
420
|
-
);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
fireAction(key, data2) {
|
|
425
|
-
this._updateState(key, data2);
|
|
426
|
-
if (typeof this.actions[key] === "function") {
|
|
427
|
-
this.actions[key].call(this, data2);
|
|
428
|
-
} else {
|
|
429
|
-
throw Error("\u2718 Cradova err : action " + key + " does not exist!");
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
bind(prop) {
|
|
433
|
-
if (typeof this.value === "object" && typeof this.value[prop] !== "undefined") {
|
|
434
|
-
return [this, prop];
|
|
435
|
-
} else {
|
|
436
|
-
throw new Error(
|
|
437
|
-
"\u2718 Cradova err : can't bind an unavailable property! " + prop
|
|
438
|
-
);
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
_updateState(name, data2) {
|
|
442
|
-
if (name && data2) {
|
|
443
|
-
this.ref.map((ent) => {
|
|
444
|
-
if (ent._event === name) {
|
|
445
|
-
if (ent._element_property && ent._signalProperty) {
|
|
446
|
-
ent.ref?.updateState({
|
|
447
|
-
[ent._element_property]: data2[ent._signalProperty]
|
|
448
|
-
});
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
if (ent._element_property) {
|
|
452
|
-
ent.ref.updateState({
|
|
453
|
-
[ent._element_property]: data2
|
|
454
|
-
});
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
if (ent._signalProperty) {
|
|
458
|
-
ent.ref.updateState(data2[ent._signalProperty]);
|
|
459
|
-
return;
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
} else {
|
|
464
|
-
for (let i2 = 0; i2 < this.ref.length; i2++) {
|
|
465
|
-
const ent = this.ref[i2];
|
|
466
|
-
if (ent._element_property && ent._signalProperty) {
|
|
467
|
-
ent.ref.updateState({
|
|
468
|
-
[ent._element_property]: this.value[ent._signalProperty]
|
|
469
|
-
});
|
|
470
|
-
continue;
|
|
471
|
-
}
|
|
472
|
-
if (ent._element_property) {
|
|
473
|
-
ent.ref.updateState({
|
|
474
|
-
[ent._element_property]: this.value
|
|
475
|
-
});
|
|
476
|
-
continue;
|
|
477
|
-
}
|
|
478
|
-
if (ent._signalProperty) {
|
|
479
|
-
ent.ref.updateState(this.value[ent._signalProperty]);
|
|
480
|
-
continue;
|
|
481
|
-
}
|
|
482
|
-
if (!ent._element_property && !ent._signalProperty) {
|
|
483
|
-
ent.ref.updateState(this.value);
|
|
484
|
-
continue;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
bindRef(ref, binding = { signalProperty: "", _element_property: "" }) {
|
|
490
|
-
if (ref.render) {
|
|
491
|
-
ref.render = ref.render.bind(ref, this.value);
|
|
492
|
-
}
|
|
493
|
-
if (ref._setExtra) {
|
|
494
|
-
ref._setExtra(this);
|
|
495
|
-
}
|
|
496
|
-
if (ref && ref.updateState) {
|
|
497
|
-
this.ref.push({
|
|
498
|
-
ref,
|
|
499
|
-
_signalProperty: binding.signalProperty,
|
|
500
|
-
_element_property: binding._element_property,
|
|
501
|
-
_event: binding.event
|
|
502
|
-
});
|
|
503
|
-
return;
|
|
504
|
-
}
|
|
505
|
-
throw new Error(
|
|
506
|
-
"\u2718 Cradova err : Invalid parameters for binding ref to Signal"
|
|
507
|
-
);
|
|
508
|
-
}
|
|
509
|
-
listen(callback) {
|
|
510
|
-
this.callback = callback;
|
|
511
|
-
}
|
|
512
|
-
clearPersist() {
|
|
513
|
-
if (this.persistName) {
|
|
514
|
-
localStorage.removeItem(this.persistName);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
};
|
|
518
|
-
|
|
519
|
-
// lib/parts/Screen.ts
|
|
520
|
-
var localTree = new reference();
|
|
521
|
-
var Screen = class {
|
|
522
|
-
constructor(cradova_screen_initials) {
|
|
523
|
-
this._secondaryChildren = [];
|
|
524
|
-
this._errorHandler = null;
|
|
525
|
-
this._packed = false;
|
|
526
|
-
this._template = document.createElement("div");
|
|
527
|
-
this._persist = true;
|
|
528
|
-
this._delegatedRoutesCount = -1;
|
|
529
|
-
const { template: template2, name, persist, renderInParallel, transition } = cradova_screen_initials;
|
|
530
|
-
this._html = template2;
|
|
531
|
-
this._name = name;
|
|
532
|
-
this._transition = transition;
|
|
533
|
-
this._template.setAttribute("id", "cradova-screen-set");
|
|
534
|
-
if (renderInParallel === true) {
|
|
535
|
-
this._delegatedRoutesCount = 0;
|
|
536
|
-
} else {
|
|
537
|
-
if (typeof persist === "boolean") {
|
|
538
|
-
this._persist = persist;
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
get _delegatedRoutes() {
|
|
543
|
-
if (this._delegatedRoutesCount > 100) {
|
|
544
|
-
return -1;
|
|
545
|
-
}
|
|
546
|
-
return this._delegatedRoutesCount;
|
|
547
|
-
}
|
|
548
|
-
set _delegatedRoutes(count) {
|
|
549
|
-
if (count) {
|
|
550
|
-
this._delegatedRoutesCount += 1;
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
setErrorHandler(errorHandler) {
|
|
554
|
-
this._errorHandler = errorHandler;
|
|
555
|
-
}
|
|
556
|
-
async _package() {
|
|
557
|
-
if (typeof this._html === "function") {
|
|
558
|
-
let fuc = await this._html.apply(this, this._data);
|
|
559
|
-
if (typeof fuc === "function") {
|
|
560
|
-
fuc = fuc();
|
|
561
|
-
if (isNode(fuc)) {
|
|
562
|
-
this._template.innerHTML = "";
|
|
563
|
-
this._template.appendChild(fuc);
|
|
564
|
-
}
|
|
565
|
-
} else {
|
|
566
|
-
if (isNode(fuc)) {
|
|
567
|
-
this._template.innerHTML = "";
|
|
568
|
-
this._template.appendChild(fuc);
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
if (this._secondaryChildren.length) {
|
|
573
|
-
this._template.appendChild(frag(this._secondaryChildren));
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
onActivate(cb) {
|
|
577
|
-
this._callBack = cb;
|
|
578
|
-
}
|
|
579
|
-
onDeactivate(cb) {
|
|
580
|
-
this._deCallBack = cb;
|
|
581
|
-
}
|
|
582
|
-
addChildren(...addOns) {
|
|
583
|
-
this._secondaryChildren.push(...addOns);
|
|
584
|
-
}
|
|
585
|
-
async _deActivate() {
|
|
586
|
-
if (this._deCallBack) {
|
|
587
|
-
await this._deCallBack();
|
|
588
|
-
}
|
|
589
|
-
if (this._transition) {
|
|
590
|
-
this._template.classList.remove(this._transition);
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
async _Activate(force = false) {
|
|
594
|
-
if (!this._persist || force || !this._packed) {
|
|
595
|
-
await this._package();
|
|
596
|
-
this._packed = true;
|
|
597
|
-
}
|
|
598
|
-
if (!localTree._doc) {
|
|
599
|
-
localTree._appendDomForce(
|
|
600
|
-
"_doc",
|
|
601
|
-
document.querySelector("[data-wrapper=app]")
|
|
602
|
-
);
|
|
603
|
-
}
|
|
604
|
-
if (!localTree._doc) {
|
|
605
|
-
throw new Error(
|
|
606
|
-
" \u2718 Cradova err: Unable to render, cannot find cradova root <div data-wrapper='app'> ... </div>"
|
|
607
|
-
);
|
|
608
|
-
}
|
|
609
|
-
if (this._transition) {
|
|
610
|
-
this._template.classList.add(this._transition);
|
|
611
|
-
}
|
|
612
|
-
localTree._doc.innerHTML = "";
|
|
613
|
-
localTree._doc.appendChild(this._template);
|
|
614
|
-
document.title = this._name;
|
|
615
|
-
CradovaEvent.dispatchEvent("onmountEvent");
|
|
616
|
-
if (this._callBack) {
|
|
617
|
-
await this._callBack();
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
};
|
|
621
|
-
|
|
622
|
-
// lib/parts/Router.ts
|
|
623
|
-
var RouterBox = {};
|
|
624
|
-
RouterBox["lastNavigatedRouteController"] = null;
|
|
625
|
-
RouterBox["nextRouteController"] = null;
|
|
626
|
-
RouterBox["lastNavigatedRoute"] = null;
|
|
627
|
-
RouterBox["pageShow"] = null;
|
|
628
|
-
RouterBox["pageHide"] = null;
|
|
629
|
-
RouterBox["errorHandler"] = null;
|
|
630
|
-
RouterBox["loadingScreen"] = {};
|
|
631
|
-
RouterBox["params"] = {};
|
|
632
|
-
RouterBox["routes"] = {};
|
|
633
|
-
RouterBox["pageevents"] = [];
|
|
634
|
-
RouterBox["start_pageevents"] = async function(lastR, newR) {
|
|
635
|
-
setTimeout(() => {
|
|
636
|
-
for (let ci = 0; ci < RouterBox["pageevents"].length; ci++) {
|
|
637
|
-
RouterBox["pageevents"][ci](lastR, newR);
|
|
638
|
-
}
|
|
639
|
-
}, 300);
|
|
640
|
-
};
|
|
641
|
-
var checker = (url) => {
|
|
642
|
-
if (RouterBox.routes[url]) {
|
|
643
|
-
return [RouterBox.routes[url], { path: url }];
|
|
644
|
-
}
|
|
645
|
-
if (RouterBox.routes[url + "/"]) {
|
|
646
|
-
return [RouterBox.routes[url], { path: url }];
|
|
647
|
-
}
|
|
648
|
-
for (const path in RouterBox.routes) {
|
|
649
|
-
if (!path.includes(":")) {
|
|
650
|
-
continue;
|
|
651
|
-
}
|
|
652
|
-
const urlFixtures = url.split("/");
|
|
653
|
-
const pathFixtures = path.split("/");
|
|
654
|
-
if (url.endsWith("/")) {
|
|
655
|
-
urlFixtures.pop();
|
|
656
|
-
}
|
|
657
|
-
let fixturesX = 0;
|
|
658
|
-
let fixturesY = 0;
|
|
659
|
-
urlFixtures.shift();
|
|
660
|
-
pathFixtures.shift();
|
|
661
|
-
if (pathFixtures.length === urlFixtures.length) {
|
|
662
|
-
const routesParams = { _path: "" };
|
|
663
|
-
for (let i2 = 0; i2 < pathFixtures.length; i2++) {
|
|
664
|
-
if (pathFixtures[i2].includes(":")) {
|
|
665
|
-
fixturesY++;
|
|
666
|
-
continue;
|
|
667
|
-
}
|
|
668
|
-
if (urlFixtures[i2] === pathFixtures[i2]) {
|
|
669
|
-
fixturesX++;
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
if (fixturesX + fixturesY === pathFixtures.length) {
|
|
673
|
-
for (let i2 = 0; i2 < pathFixtures.length; i2++) {
|
|
674
|
-
if (pathFixtures[i2].includes(":")) {
|
|
675
|
-
routesParams[pathFixtures[i2].split(":")[1]] = urlFixtures[i2];
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
routesParams._path = path;
|
|
679
|
-
return [RouterBox.routes[path], routesParams];
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
return [];
|
|
684
|
-
};
|
|
685
|
-
RouterBox.route = (path, screen) => {
|
|
686
|
-
if (typeof screen !== "undefined") {
|
|
687
|
-
if (screen && !screen._Activate) {
|
|
688
|
-
console.error(" \u2718 Cradova err: not a valid screen ", screen);
|
|
689
|
-
throw new Error(" \u2718 Cradova err: Not a valid cradova screen component");
|
|
690
|
-
}
|
|
691
|
-
return RouterBox.routes[path] = screen;
|
|
692
|
-
}
|
|
693
|
-
return void 0;
|
|
694
|
-
};
|
|
695
|
-
RouterBox.router = async function(_e, _force) {
|
|
696
|
-
let url, route, params;
|
|
697
|
-
if (!url) {
|
|
698
|
-
url = window.location.pathname;
|
|
699
|
-
}
|
|
700
|
-
if (url === RouterBox["lastNavigatedRoute"]) {
|
|
701
|
-
return;
|
|
702
|
-
}
|
|
703
|
-
if (RouterBox["nextRouteController"]) {
|
|
704
|
-
route = RouterBox["nextRouteController"];
|
|
705
|
-
RouterBox["nextRouteController"] = null;
|
|
706
|
-
} else {
|
|
707
|
-
[route, params] = checker(url);
|
|
708
|
-
}
|
|
709
|
-
if (typeof route !== "undefined") {
|
|
710
|
-
try {
|
|
711
|
-
if (typeof route === "function") {
|
|
712
|
-
if (RouterBox["LoadingScreen"] && RouterBox["LoadingScreen"]._Activate) {
|
|
713
|
-
await RouterBox["LoadingScreen"]._Activate();
|
|
714
|
-
}
|
|
715
|
-
route = await route();
|
|
716
|
-
if (!route) {
|
|
717
|
-
if (RouterBox["lastNavigatedRoute"]) {
|
|
718
|
-
history.pushState({}, url, RouterBox["lastNavigatedRoute"]);
|
|
719
|
-
}
|
|
720
|
-
return;
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
if (route._delegatedRoutes !== -1) {
|
|
724
|
-
route._delegatedRoutes = true;
|
|
725
|
-
route = new Screen({
|
|
726
|
-
name: route._name,
|
|
727
|
-
template: route._html
|
|
728
|
-
});
|
|
729
|
-
RouterBox.routes[url] = route;
|
|
730
|
-
}
|
|
731
|
-
if (params) {
|
|
732
|
-
RouterBox.params.params = params;
|
|
733
|
-
}
|
|
734
|
-
await route._Activate(_force);
|
|
735
|
-
RouterBox["lastNavigatedRouteController"] && RouterBox["lastNavigatedRouteController"]._deActivate();
|
|
736
|
-
RouterBox["lastNavigatedRoute"] = url;
|
|
737
|
-
RouterBox["lastNavigatedRouteController"] = route;
|
|
738
|
-
} catch (error) {
|
|
739
|
-
if (route && route["_errorHandler"]) {
|
|
740
|
-
route._errorHandler(error);
|
|
741
|
-
} else {
|
|
742
|
-
if (RouterBox["errorHandler"]) {
|
|
743
|
-
RouterBox["errorHandler"](error);
|
|
744
|
-
} else {
|
|
745
|
-
console.error(error);
|
|
746
|
-
throw new Error(
|
|
747
|
-
" \u2718 Cradova err: consider adding error boundary to the specific screen "
|
|
748
|
-
);
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
} else {
|
|
753
|
-
if (RouterBox.routes["/404"]) {
|
|
754
|
-
await RouterBox.routes["/404"]._Activate(_force);
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
};
|
|
758
|
-
var RouterClass = class {
|
|
759
|
-
BrowserRoutes(obj) {
|
|
760
|
-
for (const path in obj) {
|
|
761
|
-
let screen = obj[path];
|
|
762
|
-
if (typeof screen === "object" && typeof screen.then === "function" || typeof screen === "function") {
|
|
763
|
-
RouterBox["routes"][path] = async () => {
|
|
764
|
-
screen = await (typeof screen === "function" ? await screen() : await screen);
|
|
765
|
-
return RouterBox.route(path, screen?.default || screen);
|
|
766
|
-
};
|
|
767
|
-
} else {
|
|
768
|
-
RouterBox.route(path, screen);
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
this._mount();
|
|
772
|
-
}
|
|
773
|
-
back() {
|
|
774
|
-
history.go(-1);
|
|
775
|
-
}
|
|
776
|
-
forward() {
|
|
777
|
-
history.go(1);
|
|
778
|
-
}
|
|
779
|
-
navigate(href, data2 = null, force = false) {
|
|
780
|
-
if (typeof href !== "string") {
|
|
781
|
-
throw new TypeError(
|
|
782
|
-
" \u2718 Cradova err: href must be a defined path but got " + href + " instead"
|
|
783
|
-
);
|
|
784
|
-
}
|
|
785
|
-
let route = null, params;
|
|
786
|
-
if (href.includes("://")) {
|
|
787
|
-
window.location.href = href;
|
|
788
|
-
} else {
|
|
789
|
-
const lastR = window.location.pathname;
|
|
790
|
-
if (href === lastR) {
|
|
791
|
-
return;
|
|
792
|
-
}
|
|
793
|
-
[route, params] = checker(href);
|
|
794
|
-
if (route) {
|
|
795
|
-
RouterBox["nextRouteController"] = route;
|
|
796
|
-
window.history.pushState({}, "", href);
|
|
797
|
-
}
|
|
798
|
-
RouterBox.params.params = params;
|
|
799
|
-
RouterBox.params.data = data2;
|
|
800
|
-
RouterBox.router(null, force);
|
|
801
|
-
RouterBox["start_pageevents"](lastR, href);
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
setLoadingScreen(screen) {
|
|
805
|
-
if (screen instanceof Screen) {
|
|
806
|
-
RouterBox["LoadingScreen"] = screen;
|
|
807
|
-
} else {
|
|
808
|
-
throw new Error(
|
|
809
|
-
" \u2718 Cradova err: Loading Screen should be a cradova screen class"
|
|
810
|
-
);
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
|
-
onPageEvent(callback) {
|
|
814
|
-
if (typeof callback === "function") {
|
|
815
|
-
RouterBox["pageevents"].push(callback);
|
|
816
|
-
} else {
|
|
817
|
-
throw new Error(
|
|
818
|
-
" \u2718 Cradova err: callback for pageShow event is not a function"
|
|
819
|
-
);
|
|
820
|
-
}
|
|
821
|
-
}
|
|
822
|
-
async packageScreen(path, data2 = {}) {
|
|
823
|
-
if (!RouterBox.routes[path]) {
|
|
824
|
-
console.error(" \u2718 Cradova err: no screen with path " + path);
|
|
825
|
-
throw new Error(
|
|
826
|
-
" \u2718 Cradova err: cradova err: Not a defined screen path"
|
|
827
|
-
);
|
|
828
|
-
}
|
|
829
|
-
let [route, params] = checker(path);
|
|
830
|
-
if (!route._Activate && typeof route === "function") {
|
|
831
|
-
route = await route();
|
|
832
|
-
}
|
|
833
|
-
route._package(Object.assign(data2, params || {}));
|
|
834
|
-
route._packed = true;
|
|
835
|
-
}
|
|
836
|
-
getParams() {
|
|
837
|
-
return RouterBox["params"];
|
|
838
|
-
}
|
|
839
|
-
addErrorHandler(callback) {
|
|
840
|
-
if (typeof callback === "function") {
|
|
841
|
-
RouterBox["errorHandler"] = callback;
|
|
842
|
-
} else {
|
|
843
|
-
throw new Error(" \u2718 Cradova err: callback for event is not a function");
|
|
844
|
-
}
|
|
845
|
-
}
|
|
846
|
-
_mount() {
|
|
847
|
-
let doc = document.querySelector("[data-wrapper=app]");
|
|
848
|
-
if (!doc) {
|
|
849
|
-
doc = document.createElement("div");
|
|
850
|
-
doc.setAttribute("data-wrapper", "app");
|
|
851
|
-
document.body.appendChild(doc);
|
|
852
|
-
localTree._appendDomForce("doc", doc);
|
|
853
|
-
}
|
|
854
|
-
window.addEventListener("pageshow", RouterBox.router);
|
|
855
|
-
window.addEventListener("popstate", (_e) => {
|
|
856
|
-
RouterBox.router();
|
|
857
|
-
});
|
|
858
|
-
}
|
|
859
|
-
};
|
|
860
|
-
var Router = new RouterClass();
|
|
861
|
-
|
|
862
|
-
// lib/parts/elements.ts
|
|
863
|
-
var makeElement = (element, ElementChildrenAndPropertyList) => {
|
|
864
|
-
let props = {}, text = null;
|
|
865
|
-
if (ElementChildrenAndPropertyList.length !== 0) {
|
|
866
|
-
for (let i2 = 0; i2 < ElementChildrenAndPropertyList.length; i2++) {
|
|
867
|
-
let child = ElementChildrenAndPropertyList[i2];
|
|
868
|
-
if (child instanceof Ref) {
|
|
869
|
-
child = child.render();
|
|
870
|
-
}
|
|
871
|
-
if (typeof child === "function") {
|
|
872
|
-
child = child();
|
|
873
|
-
}
|
|
874
|
-
if (isNode(child)) {
|
|
875
|
-
element.appendChild(child);
|
|
876
|
-
continue;
|
|
877
|
-
}
|
|
878
|
-
if (Array.isArray(child)) {
|
|
879
|
-
element.appendChild(Rhoda(child));
|
|
880
|
-
continue;
|
|
881
|
-
}
|
|
882
|
-
if (typeof child === "string" || typeof child === "number") {
|
|
883
|
-
text = child;
|
|
884
|
-
continue;
|
|
885
|
-
}
|
|
886
|
-
if (typeof child === "object") {
|
|
887
|
-
props = Object.assign(props, child);
|
|
888
|
-
continue;
|
|
889
|
-
}
|
|
890
|
-
if (typeof child !== "undefined") {
|
|
891
|
-
console.error(" \u2718 Cradova err: got", { child });
|
|
892
|
-
throw new Error(
|
|
893
|
-
" \u2718 Cradova err: invalid child type: (" + typeof child + ")"
|
|
894
|
-
);
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
} else {
|
|
898
|
-
return element;
|
|
899
|
-
}
|
|
900
|
-
if (typeof props === "object" && element) {
|
|
901
|
-
for (const [prop, value] of Object.entries(props)) {
|
|
902
|
-
if (prop === "style" && typeof value === "object") {
|
|
903
|
-
for (const [k, v] of Object.entries(value)) {
|
|
904
|
-
if (typeof element.style[k] !== "undefined" && k !== "src") {
|
|
905
|
-
element.style[k] = v;
|
|
906
|
-
} else {
|
|
907
|
-
throw new Error(
|
|
908
|
-
"\u2718 Cradova err : " + k + " is not a valid css style property"
|
|
909
|
-
);
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
continue;
|
|
913
|
-
}
|
|
914
|
-
if (typeof element.style[prop] !== "undefined" && prop !== "src") {
|
|
915
|
-
element.style[prop] = value;
|
|
916
|
-
continue;
|
|
917
|
-
}
|
|
918
|
-
if (prop === "text" && typeof value === "string" && value !== "") {
|
|
919
|
-
text = value;
|
|
920
|
-
continue;
|
|
921
|
-
}
|
|
922
|
-
if (prop === "href" && typeof value === "string") {
|
|
923
|
-
const href = value || "";
|
|
924
|
-
if (!href.includes("://")) {
|
|
925
|
-
element.addEventListener(
|
|
926
|
-
"click",
|
|
927
|
-
(e) => {
|
|
928
|
-
e.preventDefault();
|
|
929
|
-
Router.navigate(element.pathname);
|
|
930
|
-
}
|
|
931
|
-
);
|
|
932
|
-
}
|
|
933
|
-
element.setAttribute(prop, value);
|
|
934
|
-
continue;
|
|
935
|
-
}
|
|
936
|
-
if (Array.isArray(value)) {
|
|
937
|
-
const clas = value;
|
|
938
|
-
if (clas[0] instanceof createSignal) {
|
|
939
|
-
element["updateState"] = dispatch.bind(null, element);
|
|
940
|
-
clas[0].bindRef(element, {
|
|
941
|
-
_element_property: prop,
|
|
942
|
-
signalProperty: clas[1]
|
|
943
|
-
});
|
|
944
|
-
continue;
|
|
945
|
-
}
|
|
946
|
-
if (prop == "reference" && clas[0] instanceof reference) {
|
|
947
|
-
element["updateState"] = dispatch.bind(null, element);
|
|
948
|
-
clas[0]._appendDomForce(clas[1], element);
|
|
949
|
-
continue;
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
if (prop === "onmount" && typeof props["onmount"] === "function") {
|
|
953
|
-
const ev = () => {
|
|
954
|
-
props.onmount?.apply(element);
|
|
955
|
-
props["onmount"] = void 0;
|
|
956
|
-
};
|
|
957
|
-
CradovaEvent.addEventListener("onmountEvent", ev);
|
|
958
|
-
continue;
|
|
959
|
-
}
|
|
960
|
-
if (prop.includes("data-")) {
|
|
961
|
-
element.setAttribute(prop, value);
|
|
962
|
-
continue;
|
|
963
|
-
}
|
|
964
|
-
if (prop.includes("aria-")) {
|
|
965
|
-
element.setAttribute(prop, value);
|
|
966
|
-
continue;
|
|
967
|
-
}
|
|
968
|
-
element[prop] = value;
|
|
969
|
-
}
|
|
970
|
-
}
|
|
971
|
-
if (text) {
|
|
972
|
-
element.appendChild(document.createTextNode(text));
|
|
973
|
-
}
|
|
974
|
-
return element;
|
|
975
|
-
};
|
|
976
|
-
var cra = (element_initials) => {
|
|
977
|
-
return (...initials) => {
|
|
978
|
-
return makeElement(document.createElement(element_initials), initials);
|
|
979
|
-
};
|
|
980
|
-
};
|
|
981
|
-
var a = cra("a");
|
|
982
|
-
var abbr = cra("abbr");
|
|
983
|
-
var address = cra("address");
|
|
984
|
-
var area = cra("area");
|
|
985
|
-
var article = cra("article");
|
|
986
|
-
var aside = cra("aside");
|
|
987
|
-
var audio = cra("audio");
|
|
988
|
-
var b = cra("b");
|
|
989
|
-
var base = cra("base");
|
|
990
|
-
var bdi = cra("bdi");
|
|
991
|
-
var bdo = cra("bdo");
|
|
992
|
-
var blockquote = cra("blockquote");
|
|
993
|
-
var body = cra("body");
|
|
994
|
-
var br = cra("br");
|
|
995
|
-
var button = cra("button");
|
|
996
|
-
var canvas = cra("canvas");
|
|
997
|
-
var caption = cra("caption");
|
|
998
|
-
var cite = cra("cite");
|
|
999
|
-
var code = cra("code");
|
|
1000
|
-
var col = cra("col");
|
|
1001
|
-
var colgroup = cra("colgroup");
|
|
1002
|
-
var data = cra("data");
|
|
1003
|
-
var datalist = cra("datalist");
|
|
1004
|
-
var dd = cra("dd");
|
|
1005
|
-
var del = cra("del");
|
|
1006
|
-
var details = cra("details");
|
|
1007
|
-
var dfn = cra("dfn");
|
|
1008
|
-
var dialog = cra("dialog");
|
|
1009
|
-
var div = cra("div");
|
|
1010
|
-
var dl = cra("dl");
|
|
1011
|
-
var dt = cra("dt");
|
|
1012
|
-
var em = cra("em");
|
|
1013
|
-
var embed = cra("embed");
|
|
1014
|
-
var fieldset = cra("fieldset");
|
|
1015
|
-
var figcaption = cra("figcaption");
|
|
1016
|
-
var figure = cra("figure");
|
|
1017
|
-
var footer = cra("footer");
|
|
1018
|
-
var form = cra("form");
|
|
1019
|
-
var h1 = cra("h1");
|
|
1020
|
-
var h2 = cra("h2");
|
|
1021
|
-
var h3 = cra("h3");
|
|
1022
|
-
var h4 = cra("h4");
|
|
1023
|
-
var h5 = cra("h5");
|
|
1024
|
-
var h6 = cra("h6");
|
|
1025
|
-
var head = cra("head");
|
|
1026
|
-
var header = cra("header");
|
|
1027
|
-
var hr = cra("hr");
|
|
1028
|
-
var html = cra("html");
|
|
1029
|
-
var i = cra("i");
|
|
1030
|
-
var iframe = cra("iframe");
|
|
1031
|
-
var img = cra("img");
|
|
1032
|
-
var input = cra("input");
|
|
1033
|
-
var ins = cra("ins");
|
|
1034
|
-
var kbd = cra("kbd");
|
|
1035
|
-
var label = cra("label");
|
|
1036
|
-
var legend = cra("legend");
|
|
1037
|
-
var li = cra("li");
|
|
1038
|
-
var link = cra("link");
|
|
1039
|
-
var main = cra("main");
|
|
1040
|
-
var map = cra("map");
|
|
1041
|
-
var mark = cra("mark");
|
|
1042
|
-
var math = cra("math");
|
|
1043
|
-
var menu = cra("menu");
|
|
1044
|
-
var meta = cra("meta");
|
|
1045
|
-
var meter = cra("meter");
|
|
1046
|
-
var nav = cra("nav");
|
|
1047
|
-
var object = cra("object");
|
|
1048
|
-
var ol = cra("ol");
|
|
1049
|
-
var optgroup = cra("optgroup");
|
|
1050
|
-
var option = cra("option");
|
|
1051
|
-
var output = cra("output");
|
|
1052
|
-
var p = cra("p");
|
|
1053
|
-
var picture = cra("picture");
|
|
1054
|
-
var portal = cra("portal");
|
|
1055
|
-
var pre = cra("pre");
|
|
1056
|
-
var progress = cra("progress");
|
|
1057
|
-
var q = cra("q");
|
|
1058
|
-
var rp = cra("rp");
|
|
1059
|
-
var rt = cra("rt");
|
|
1060
|
-
var ruby = cra("ruby");
|
|
1061
|
-
var s = cra("s");
|
|
1062
|
-
var samp = cra("samp");
|
|
1063
|
-
var script = cra("script");
|
|
1064
|
-
var section = cra("section");
|
|
1065
|
-
var select = cra("select");
|
|
1066
|
-
var slot = cra("slot");
|
|
1067
|
-
var small = cra("small");
|
|
1068
|
-
var source = cra("source");
|
|
1069
|
-
var span = cra("span");
|
|
1070
|
-
var strong = cra("strong");
|
|
1071
|
-
var style = cra("style");
|
|
1072
|
-
var sub = cra("sub");
|
|
1073
|
-
var summary = cra("summary");
|
|
1074
|
-
var sup = cra("sup");
|
|
1075
|
-
var table = cra("table");
|
|
1076
|
-
var tbody = cra("tbody");
|
|
1077
|
-
var td = cra("td");
|
|
1078
|
-
var template = cra("template");
|
|
1079
|
-
var textarea = cra("textarea");
|
|
1080
|
-
var tfoot = cra("tfoot");
|
|
1081
|
-
var th = cra("th");
|
|
1082
|
-
var thead = cra("thead");
|
|
1083
|
-
var time = cra("time");
|
|
1084
|
-
var title = cra("title");
|
|
1085
|
-
var tr = cra("tr");
|
|
1086
|
-
var track = cra("track");
|
|
1087
|
-
var u = cra("u");
|
|
1088
|
-
var ul = cra("ul");
|
|
1089
|
-
var val = cra("val");
|
|
1090
|
-
var video = cra("video");
|
|
1091
|
-
var wbr = cra("wbr");
|
|
1092
|
-
|
|
1093
|
-
// lib/parts/ajax.ts
|
|
1094
|
-
function Ajax(url, opts = {}) {
|
|
1095
|
-
const { method, data: data2, header: header2, callbacks } = opts;
|
|
1096
|
-
if (typeof url !== "string") {
|
|
1097
|
-
throw new Error("\u2718 Cradova err : Ajax invalid url " + url);
|
|
1098
|
-
}
|
|
1099
|
-
return new Promise(function(resolve) {
|
|
1100
|
-
const ajax = new XMLHttpRequest();
|
|
1101
|
-
const formData = new FormData();
|
|
1102
|
-
if (callbacks && typeof callbacks === "object") {
|
|
1103
|
-
for (const [k, v] of Object.entries(callbacks)) {
|
|
1104
|
-
ajax.addEventListener(k, v);
|
|
1105
|
-
}
|
|
1106
|
-
}
|
|
1107
|
-
ajax.addEventListener("load", function() {
|
|
1108
|
-
resolve(ajax.response);
|
|
1109
|
-
});
|
|
1110
|
-
if (data2 && typeof data2 === "object") {
|
|
1111
|
-
for (const [k, v] of Object.entries(data2)) {
|
|
1112
|
-
let value = v;
|
|
1113
|
-
if (typeof value === "object" && value && !value.name) {
|
|
1114
|
-
value = JSON.stringify(value);
|
|
1115
|
-
formData.set(k, value);
|
|
1116
|
-
}
|
|
1117
|
-
if (typeof value === "string") {
|
|
1118
|
-
formData.set(k, value);
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
}
|
|
1122
|
-
ajax.addEventListener("error", () => {
|
|
1123
|
-
console.error(
|
|
1124
|
-
"\u2718 Cradova Ajax err : ",
|
|
1125
|
-
ajax.response || "ERR_INTERNET_DISCONNECTED"
|
|
1126
|
-
);
|
|
1127
|
-
if (!navigator.onLine) {
|
|
1128
|
-
resolve(
|
|
1129
|
-
JSON.stringify({
|
|
1130
|
-
message: `this device is offline!`
|
|
1131
|
-
})
|
|
1132
|
-
);
|
|
1133
|
-
} else {
|
|
1134
|
-
resolve(
|
|
1135
|
-
JSON.stringify({
|
|
1136
|
-
message: `problem with the action, please try again!`
|
|
1137
|
-
})
|
|
1138
|
-
);
|
|
1139
|
-
}
|
|
1140
|
-
});
|
|
1141
|
-
if (!method) {
|
|
1142
|
-
ajax.open(data2 && typeof data2 === "object" ? "POST" : "GET", url, true);
|
|
1143
|
-
} else {
|
|
1144
|
-
ajax.open(method, url, true);
|
|
1145
|
-
}
|
|
1146
|
-
if (header2 && typeof header2 === "object") {
|
|
1147
|
-
Object.keys(header2).forEach(function(key) {
|
|
1148
|
-
ajax.setRequestHeader(key, header2[key]);
|
|
1149
|
-
});
|
|
1150
|
-
}
|
|
1151
|
-
ajax.send(formData);
|
|
1152
|
-
});
|
|
1153
|
-
}
|
|
1154
|
-
|
|
1155
|
-
// lib/index.ts
|
|
1156
|
-
var make = function(txx) {
|
|
1157
|
-
if (Array.isArray(txx)) {
|
|
1158
|
-
txx = txx[0];
|
|
1159
|
-
}
|
|
1160
|
-
if (typeof txx !== "string") {
|
|
1161
|
-
return [];
|
|
1162
|
-
}
|
|
1163
|
-
if (Array.isArray(txx)) {
|
|
1164
|
-
txx = txx[0];
|
|
1165
|
-
}
|
|
1166
|
-
let innerValue = "";
|
|
1167
|
-
if (txx.includes("|")) {
|
|
1168
|
-
[txx, innerValue] = txx.split("|");
|
|
1169
|
-
if (!txx) {
|
|
1170
|
-
return ["P", void 0, void 0, innerValue];
|
|
1171
|
-
}
|
|
1172
|
-
}
|
|
1173
|
-
let tag;
|
|
1174
|
-
let teak;
|
|
1175
|
-
if (!txx.includes("#")) {
|
|
1176
|
-
teak = txx.split(".");
|
|
1177
|
-
tag = teak.shift();
|
|
1178
|
-
if (!tag) {
|
|
1179
|
-
tag = "DIV";
|
|
1180
|
-
}
|
|
1181
|
-
return [tag, void 0, teak.join(" "), innerValue];
|
|
1182
|
-
} else {
|
|
1183
|
-
if (!txx.includes(".")) {
|
|
1184
|
-
teak = txx.split("#");
|
|
1185
|
-
tag = teak.shift();
|
|
1186
|
-
if (!tag) {
|
|
1187
|
-
tag = "DIV";
|
|
1188
|
-
}
|
|
1189
|
-
if (teak[0].includes(" ")) {
|
|
1190
|
-
teak = [teak[0].split(" ")[1]];
|
|
1191
|
-
}
|
|
1192
|
-
return [tag, teak[0], void 0, innerValue];
|
|
1193
|
-
}
|
|
1194
|
-
}
|
|
1195
|
-
teak = txx.split(".");
|
|
1196
|
-
const classes = [];
|
|
1197
|
-
const IDs = [];
|
|
1198
|
-
tag = !teak[0].includes("#") && teak.shift();
|
|
1199
|
-
if (!tag) {
|
|
1200
|
-
tag = "DIV";
|
|
1201
|
-
}
|
|
1202
|
-
for (let i2 = 0; i2 < teak.length; i2++) {
|
|
1203
|
-
if (teak[i2].includes("#")) {
|
|
1204
|
-
const item = teak[i2].split("#");
|
|
1205
|
-
IDs.push(item[1]);
|
|
1206
|
-
if (i2 === 0) {
|
|
1207
|
-
tag = item[0];
|
|
1208
|
-
continue;
|
|
1209
|
-
}
|
|
1210
|
-
classes.push(item[0]);
|
|
1211
|
-
continue;
|
|
1212
|
-
}
|
|
1213
|
-
classes.push(teak[i2]);
|
|
1214
|
-
}
|
|
1215
|
-
return [tag || "DIV", IDs[0], classes.join(" "), innerValue];
|
|
1216
|
-
};
|
|
1217
|
-
var _2 = (...element_initials) => {
|
|
1218
|
-
const {
|
|
1219
|
-
0: tag,
|
|
1220
|
-
1: id,
|
|
1221
|
-
2: className,
|
|
1222
|
-
3: innerText
|
|
1223
|
-
} = make(element_initials[0]);
|
|
1224
|
-
let props = {};
|
|
1225
|
-
const element = tag ? document.createElement(tag) : new DocumentFragment();
|
|
1226
|
-
if (element.tagName) {
|
|
1227
|
-
if (className) {
|
|
1228
|
-
props["className"] = className;
|
|
1229
|
-
}
|
|
1230
|
-
if (id) {
|
|
1231
|
-
props["id"] = id;
|
|
1232
|
-
}
|
|
1233
|
-
if (innerText) {
|
|
1234
|
-
props["innerText"] = innerText;
|
|
1235
|
-
}
|
|
1236
|
-
}
|
|
1237
|
-
typeof tag === "string" && element_initials.shift();
|
|
1238
|
-
props && element_initials.push(props);
|
|
1239
|
-
return makeElement(element, element_initials);
|
|
1240
|
-
};
|
|
1241
|
-
var lib_default = _2;
|
|
1242
|
-
export {
|
|
1243
|
-
Ajax,
|
|
1244
|
-
Ref,
|
|
1245
|
-
Router,
|
|
1246
|
-
Screen,
|
|
1247
|
-
a,
|
|
1248
|
-
abbr,
|
|
1249
|
-
address,
|
|
1250
|
-
area,
|
|
1251
|
-
article,
|
|
1252
|
-
aside,
|
|
1253
|
-
assert,
|
|
1254
|
-
assertOr,
|
|
1255
|
-
audio,
|
|
1256
|
-
b,
|
|
1257
|
-
base,
|
|
1258
|
-
bdi,
|
|
1259
|
-
bdo,
|
|
1260
|
-
blockquote,
|
|
1261
|
-
body,
|
|
1262
|
-
br,
|
|
1263
|
-
button,
|
|
1264
|
-
canvas,
|
|
1265
|
-
caption,
|
|
1266
|
-
cite,
|
|
1267
|
-
code,
|
|
1268
|
-
col,
|
|
1269
|
-
colgroup,
|
|
1270
|
-
createSignal,
|
|
1271
|
-
css,
|
|
1272
|
-
data,
|
|
1273
|
-
datalist,
|
|
1274
|
-
dd,
|
|
1275
|
-
lib_default as default,
|
|
1276
|
-
del,
|
|
1277
|
-
details,
|
|
1278
|
-
dfn,
|
|
1279
|
-
dialog,
|
|
1280
|
-
div,
|
|
1281
|
-
dl,
|
|
1282
|
-
dt,
|
|
1283
|
-
em,
|
|
1284
|
-
embed,
|
|
1285
|
-
fieldset,
|
|
1286
|
-
figcaption,
|
|
1287
|
-
figure,
|
|
1288
|
-
footer,
|
|
1289
|
-
form,
|
|
1290
|
-
h1,
|
|
1291
|
-
h2,
|
|
1292
|
-
h3,
|
|
1293
|
-
h4,
|
|
1294
|
-
h5,
|
|
1295
|
-
h6,
|
|
1296
|
-
head,
|
|
1297
|
-
header,
|
|
1298
|
-
hr,
|
|
1299
|
-
html,
|
|
1300
|
-
i,
|
|
1301
|
-
iframe,
|
|
1302
|
-
img,
|
|
1303
|
-
input,
|
|
1304
|
-
ins,
|
|
1305
|
-
kbd,
|
|
1306
|
-
label,
|
|
1307
|
-
lazy,
|
|
1308
|
-
legend,
|
|
1309
|
-
li,
|
|
1310
|
-
link,
|
|
1311
|
-
loop,
|
|
1312
|
-
main,
|
|
1313
|
-
makeElement,
|
|
1314
|
-
map,
|
|
1315
|
-
mark,
|
|
1316
|
-
math,
|
|
1317
|
-
menu,
|
|
1318
|
-
meta,
|
|
1319
|
-
meter,
|
|
1320
|
-
nav,
|
|
1321
|
-
object,
|
|
1322
|
-
ol,
|
|
1323
|
-
optgroup,
|
|
1324
|
-
option,
|
|
1325
|
-
output,
|
|
1326
|
-
p,
|
|
1327
|
-
picture,
|
|
1328
|
-
portal,
|
|
1329
|
-
pre,
|
|
1330
|
-
progress,
|
|
1331
|
-
q,
|
|
1332
|
-
reference,
|
|
1333
|
-
rp,
|
|
1334
|
-
rt,
|
|
1335
|
-
ruby,
|
|
1336
|
-
s,
|
|
1337
|
-
samp,
|
|
1338
|
-
script,
|
|
1339
|
-
section,
|
|
1340
|
-
select,
|
|
1341
|
-
slot,
|
|
1342
|
-
small,
|
|
1343
|
-
source,
|
|
1344
|
-
span,
|
|
1345
|
-
strong,
|
|
1346
|
-
style,
|
|
1347
|
-
sub,
|
|
1348
|
-
summary,
|
|
1349
|
-
sup,
|
|
1350
|
-
table,
|
|
1351
|
-
tbody,
|
|
1352
|
-
td,
|
|
1353
|
-
template,
|
|
1354
|
-
textarea,
|
|
1355
|
-
tfoot,
|
|
1356
|
-
th,
|
|
1357
|
-
thead,
|
|
1358
|
-
time,
|
|
1359
|
-
title,
|
|
1360
|
-
tr,
|
|
1361
|
-
track,
|
|
1362
|
-
u,
|
|
1363
|
-
ul,
|
|
1364
|
-
val,
|
|
1365
|
-
video,
|
|
1366
|
-
wbr
|
|
1367
|
-
};
|
|
1368
|
-
//! always starts events a moment later
|
|
1369
|
-
//! value could be a promise
|