@twobirds/microcomponents 0.1.16 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MC.ts +345 -346
- package/dist/elements.ts +80 -96
- package/dist/formValues.ts +165 -171
- package/dist/helpers.ts +100 -100
- package/dist/observables.ts +295 -325
- package/package.json +4 -3
- package/dist/MC.d.ts +0 -39
- package/dist/MC.d.ts.map +0 -1
- package/dist/MC.js +0 -302
- package/dist/MC.min.js +0 -345
- package/dist/elements.d.ts +0 -5
- package/dist/elements.d.ts.map +0 -1
- package/dist/elements.js +0 -67
- package/dist/elements.min.js +0 -1
- package/dist/formValues.d.ts +0 -3
- package/dist/formValues.d.ts.map +0 -1
- package/dist/formValues.js +0 -159
- package/dist/formValues.min.js +0 -1
- package/dist/helpers.d.ts +0 -14
- package/dist/helpers.d.ts.map +0 -1
- package/dist/helpers.js +0 -111
- package/dist/microcomponents.d.ts +0 -6
- package/dist/microcomponents.d.ts.map +0 -1
- package/dist/microcomponents.js +0 -6
- package/dist/microcomponents.min.js +0 -1
- package/dist/observables.d.ts +0 -11
- package/dist/observables.d.ts.map +0 -1
- package/dist/observables.js +0 -234
- package/dist/observables.min.js +0 -1
package/dist/helpers.ts
CHANGED
|
@@ -1,138 +1,138 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
export interface LooseObject {
|
|
4
|
-
|
|
4
|
+
[key: string | symbol]: any;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export function isNativeObject(value: any): boolean {
|
|
8
|
-
|
|
8
|
+
return value && value['constructor'] && value.constructor === Object;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export function sortObject(o: LooseObject): LooseObject {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
let result: LooseObject = {},
|
|
13
|
+
keys = [...Object.keys(o)].sort();
|
|
14
|
+
|
|
15
|
+
keys.forEach((key) => {
|
|
16
|
+
if (isNativeObject(o[key])) {
|
|
17
|
+
result[key] = sortObject(o[key]);
|
|
18
|
+
} else {
|
|
19
|
+
result[key] = o[key];
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return result;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export function flattenObject(o: LooseObject, doSort: boolean = true): LooseObject {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
27
|
+
let result: LooseObject = {};
|
|
28
|
+
|
|
29
|
+
[...Object.getOwnPropertyNames(o)].forEach((propName) => {
|
|
30
|
+
if (o[propName] instanceof Object) {
|
|
31
|
+
const temp = flattenObject(o[propName], false);
|
|
32
|
+
result[propName] = {};
|
|
33
|
+
for (const j in temp) {
|
|
34
|
+
result[propName + '.' + j] = temp[j];
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
result[propName] = o[propName];
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
return doSort ? sortObject(result) : result;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export function deepEqual(o1: LooseObject, o2: LooseObject): boolean {
|
|
45
|
-
|
|
45
|
+
return JSON.stringify(flattenObject(o1)) === JSON.stringify(flattenObject(o2));
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export function nameSpace(ns: string | string[], obj: LooseObject = {}): any {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
let nsa = ns.constructor === String ? ns.split('.') : ns;
|
|
50
|
+
|
|
51
|
+
if (!obj || !nsa[0] || !obj[nsa[0]]) {
|
|
52
|
+
console.warn('ns', nsa[0], 'not in', obj);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (obj[nsa[0]].constructor === Object && nsa.length > 1) {
|
|
56
|
+
return nameSpace((nsa as string[]).splice(1), obj[nsa[0]]);
|
|
57
|
+
}
|
|
58
|
+
return obj[nsa[0]];
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
export function parse(what: string | object | any[], parseThis: object) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
62
|
+
var args = Array.from(arguments);
|
|
63
|
+
|
|
64
|
+
if (args.length > 2) {
|
|
65
|
+
while (args.length > 1) {
|
|
66
|
+
args[0] = parse(args[0], args[1]);
|
|
67
|
+
args.splice(1, 1);
|
|
68
|
+
}
|
|
69
|
+
return args[0];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (typeof what === 'string') {
|
|
73
|
+
what.match(/\{[^\{\}]*\}/g)?.forEach(function (pPropname) {
|
|
74
|
+
var propname = pPropname.substring(1, pPropname.length - 1),
|
|
75
|
+
value = nameSpace(propname, parseThis);
|
|
76
|
+
//console.log(propname, value);
|
|
77
|
+
if (typeof value !== 'undefined') {
|
|
78
|
+
what = (what as string).replace(pPropname, value);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
} else if (isNativeObject(what)) {
|
|
82
|
+
switch (what.constructor) {
|
|
83
|
+
case Object:
|
|
84
|
+
Object.keys(what).forEach(function (pKey) {
|
|
85
|
+
if (what.hasOwnProperty(pKey)) {
|
|
86
|
+
(what as LooseObject)[pKey] = parse((what as LooseObject)[pKey], parseThis);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
break;
|
|
90
|
+
case Array:
|
|
91
|
+
(what as Array<any>).forEach(function (pValue, pKey, original) {
|
|
92
|
+
original[pKey] = parse((what as any)[pKey], parseThis);
|
|
93
|
+
});
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return what;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
export function kebabToPascal(str: string) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
return str
|
|
103
|
+
.split('-') // Split by hyphens
|
|
104
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize each part
|
|
105
|
+
.join(''); // Join without spaces
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
export function debounce(func: Function, milliseconds: number): Function {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
let timeout: any;
|
|
110
|
+
return () => {
|
|
111
|
+
clearTimeout(timeout);
|
|
112
|
+
|
|
113
|
+
timeout = setTimeout(function () {
|
|
114
|
+
func(...arguments);
|
|
115
|
+
}, milliseconds);
|
|
116
|
+
};
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
export function htmlToElements(html: string): HTMLElement[] {
|
|
120
|
-
|
|
120
|
+
let template = document.createElement('template');
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
html = html.replace(/<([A-Za-z0-9\-]*)([^>\/]*)(\/>)/gi, '<$1$2></$1>'); // replace XHTML closing tags by full closing tags
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
template.innerHTML = html;
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
template.content.normalize();
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
return Array.from(template.content.childNodes) as HTMLElement[];
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
export function copyGettersSetters(source: LooseObject, target: LooseObject) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
const descriptors = Object.getOwnPropertyDescriptors(source);
|
|
133
|
+
for (const [key, descriptor] of Object.entries(descriptors)) {
|
|
134
|
+
if ('get' in descriptor || 'set' in descriptor) {
|
|
135
|
+
Object.defineProperty(target, key, descriptor);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
138
|
}
|