@cocreate/utils 1.9.0 → 1.10.1
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/CHANGELOG.md +21 -0
- package/package.json +2 -2
- package/src/encodedecode.js +111 -0
- package/src/index.js +42 -1
- package/src/index.old.js +18 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [1.10.1](https://github.com/CoCreate-app/CoCreate-utils/compare/v1.10.0...v1.10.1) (2022-09-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* bump all of [@cocreate](https://github.com/cocreate) dependencies ([36536ff](https://github.com/CoCreate-app/CoCreate-utils/commit/36536ff6e53f08edabbdece0b082b4bf389263bb))
|
|
7
|
+
|
|
8
|
+
# [1.10.0](https://github.com/CoCreate-app/CoCreate-utils/compare/v1.9.1...v1.10.0) (2022-08-23)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* dotNotationToObject to convert a dot notation string to a nested object structure ([b924d33](https://github.com/CoCreate-app/CoCreate-utils/commit/b924d333ccf364d6ac1f736e8cbfe2d8999316cb))
|
|
14
|
+
|
|
15
|
+
## [1.9.1](https://github.com/CoCreate-app/CoCreate-utils/compare/v1.9.0...v1.9.1) (2022-07-29)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* removed console.log ([b237022](https://github.com/CoCreate-app/CoCreate-utils/commit/b2370221c33dc1972eee8204af8a310f9e44721c))
|
|
21
|
+
|
|
1
22
|
# [1.9.0](https://github.com/CoCreate-app/CoCreate-utils/compare/v1.8.1...v1.9.0) (2022-07-03)
|
|
2
23
|
|
|
3
24
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocreate/utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"description": "A simple utils component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"utils",
|
|
@@ -61,6 +61,6 @@
|
|
|
61
61
|
"webpack-log": "^3.0.1"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@cocreate/docs": "^1.3.
|
|
64
|
+
"@cocreate/docs": "^1.3.5"
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// function __mergeObject(target, source)
|
|
2
|
+
// {
|
|
3
|
+
// target = target || {};
|
|
4
|
+
// for (let key of Object.keys(source)) {
|
|
5
|
+
// if (source[key] instanceof Object) {
|
|
6
|
+
// Object.assign(source[key], __mergeObject(target[key], source[key]))
|
|
7
|
+
// }
|
|
8
|
+
// }
|
|
9
|
+
|
|
10
|
+
// Object.assign(target || {}, source)
|
|
11
|
+
// return target
|
|
12
|
+
// }
|
|
13
|
+
|
|
14
|
+
// function __createObject(data, path)
|
|
15
|
+
// {
|
|
16
|
+
// if (!path) return data;
|
|
17
|
+
|
|
18
|
+
// let keys = path.split('.')
|
|
19
|
+
// let newObject = data;
|
|
20
|
+
|
|
21
|
+
// for (var i = keys.length - 1; i >= 0; i--) {
|
|
22
|
+
// newObject = {[keys[i]]: newObject}
|
|
23
|
+
// }
|
|
24
|
+
// return newObject;
|
|
25
|
+
// }
|
|
26
|
+
|
|
27
|
+
// function __createArray(key, data)
|
|
28
|
+
// {
|
|
29
|
+
// try {
|
|
30
|
+
// let item = /([\w\W]+)\[(\d+)\]/gm.exec(key)
|
|
31
|
+
// if (item && item.length == 3) {
|
|
32
|
+
// let arrayKey = item[1];
|
|
33
|
+
// let index = parseInt(item[2]);
|
|
34
|
+
|
|
35
|
+
// if (!data[arrayKey] || !Array.isArray(data[arrayKey])) {
|
|
36
|
+
// data[arrayKey] = [];
|
|
37
|
+
// }
|
|
38
|
+
// data[arrayKey][index] = data[key];
|
|
39
|
+
// delete data[key];
|
|
40
|
+
// key = arrayKey;
|
|
41
|
+
// }
|
|
42
|
+
// } catch {
|
|
43
|
+
// console.log('create array error');
|
|
44
|
+
// }
|
|
45
|
+
// return key;
|
|
46
|
+
// }
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
// function isObject(item) {
|
|
51
|
+
// return (!!item) && (item.constructor === Object);
|
|
52
|
+
// }
|
|
53
|
+
// function isArray(item) {
|
|
54
|
+
// return (!!item) && (item.constructor === Array);
|
|
55
|
+
// }
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
// function decodeObject(data) {
|
|
59
|
+
// let keys = Object.keys(data)
|
|
60
|
+
// let objectData = {};
|
|
61
|
+
|
|
62
|
+
// keys.forEach((k) => {
|
|
63
|
+
// k = __createArray(k, data);
|
|
64
|
+
// if (k.split('.').length > 1) {
|
|
65
|
+
// let newData = __createObject(data[k], k);
|
|
66
|
+
// delete data[k];
|
|
67
|
+
|
|
68
|
+
// objectData = __mergeObject(objectData, newData);
|
|
69
|
+
// } else {
|
|
70
|
+
// objectData[k] = data[k];
|
|
71
|
+
// }
|
|
72
|
+
// })
|
|
73
|
+
// return objectData;
|
|
74
|
+
// }
|
|
75
|
+
|
|
76
|
+
// function encodeObject(data) {
|
|
77
|
+
// let keys = Object.keys(data);
|
|
78
|
+
// let newData = {};
|
|
79
|
+
// keys.forEach((k) => {
|
|
80
|
+
// let data_value = data[k];
|
|
81
|
+
// if (isObject(data[k])) {
|
|
82
|
+
// let new_obj = encodeObject(data[k]);
|
|
83
|
+
// let newKeys = Object.keys(new_obj);
|
|
84
|
+
// newKeys.forEach((newKey) => {
|
|
85
|
+
// let value = new_obj[newKey];
|
|
86
|
+
// if (isNaN(parseInt(newKey))) {
|
|
87
|
+
// newKey = `${k}.${newKey}`;
|
|
88
|
+
// } else {
|
|
89
|
+
// newKey = `${k}[${newKey}]`;
|
|
90
|
+
// }
|
|
91
|
+
|
|
92
|
+
// newData[newKey] = value;
|
|
93
|
+
// })
|
|
94
|
+
|
|
95
|
+
// } else if (isArray(data_value)){
|
|
96
|
+
// data_value.forEach((v, index) => {
|
|
97
|
+
// newData[`${k}[${index}]`] = v;
|
|
98
|
+
// })
|
|
99
|
+
// } else {
|
|
100
|
+
// newData[k] = data[k];
|
|
101
|
+
// }
|
|
102
|
+
// })
|
|
103
|
+
// return newData;
|
|
104
|
+
// }
|
|
105
|
+
|
|
106
|
+
module.exports = {
|
|
107
|
+
// decodeObject,
|
|
108
|
+
// encodeObject,
|
|
109
|
+
replaceArray
|
|
110
|
+
};
|
|
111
|
+
|
package/src/index.js
CHANGED
|
@@ -20,6 +20,46 @@ function clickedElement() {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export function dotNotationToObject(data) {
|
|
24
|
+
try {
|
|
25
|
+
let obj = {};
|
|
26
|
+
|
|
27
|
+
for (const [key, value] of Object.entries(data)) {
|
|
28
|
+
let newObject = obj
|
|
29
|
+
let keys = key.split('.');
|
|
30
|
+
let length = keys.length - 1
|
|
31
|
+
for (let i = 0; i < keys.length; i++) {
|
|
32
|
+
if (/\[([0-9]*)\]/g.test(keys[i])){
|
|
33
|
+
let [k, index] = keys[i].split('[');
|
|
34
|
+
index = index.slice(0, -1)
|
|
35
|
+
console.log(index, k)
|
|
36
|
+
if (length == i){
|
|
37
|
+
newObject[k] = [];
|
|
38
|
+
newObject[k][index] = value;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
newObject[k] = [];
|
|
42
|
+
newObject[k][index] = {};
|
|
43
|
+
}
|
|
44
|
+
newObject = newObject[k][index]
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
if (length == i)
|
|
48
|
+
newObject[keys[i]] = value;
|
|
49
|
+
else
|
|
50
|
+
newObject[keys[i]] = {};
|
|
51
|
+
newObject = newObject[keys[i]]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.log(obj);
|
|
56
|
+
return obj
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.log("Error converting dot notation to object", error);
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
23
63
|
export function parseTextToHtml(text) {
|
|
24
64
|
let doc = new DOMParser().parseFromString(text, "text/html");
|
|
25
65
|
if (doc.head.children[0]) return doc.head.children[0];
|
|
@@ -99,7 +139,7 @@ export function domParser(str) {
|
|
|
99
139
|
try {
|
|
100
140
|
var mainTag = str.match(/\<(?<tag>[a-z0-9]+)(.*?)?\>/).groups.tag;
|
|
101
141
|
} catch (e){
|
|
102
|
-
console.log('find position: can not find the main tag');
|
|
142
|
+
// console.log(e, 'find position: can not find the main tag');
|
|
103
143
|
}
|
|
104
144
|
let doc;
|
|
105
145
|
switch (mainTag) {
|
|
@@ -219,6 +259,7 @@ clickedElement();
|
|
|
219
259
|
|
|
220
260
|
export default {
|
|
221
261
|
parseTextToHtml,
|
|
262
|
+
dotNotationToObject,
|
|
222
263
|
cssPath,
|
|
223
264
|
domParser,
|
|
224
265
|
queryDocumentSelector,
|
package/src/index.old.js
CHANGED
|
@@ -425,7 +425,24 @@ async function complexSelector(comSelector, callback) {
|
|
|
425
425
|
}
|
|
426
426
|
}
|
|
427
427
|
|
|
428
|
-
|
|
428
|
+
function decodeArray(data) {
|
|
429
|
+
let keys = Object.keys(data);
|
|
430
|
+
let objectData = {};
|
|
431
|
+
|
|
432
|
+
keys.forEach((k) => {
|
|
433
|
+
let nk = k
|
|
434
|
+
if (/\[([0-9]*)\]/g.test(k)) {
|
|
435
|
+
nk = nk.replace(/\[/g, '.');
|
|
436
|
+
if (nk.endsWith(']'))
|
|
437
|
+
nk = nk.slice(0, -1)
|
|
438
|
+
nk = nk.replace(/\]./g, '.');
|
|
439
|
+
nk = nk.replace(/\]/g, '.');
|
|
440
|
+
}
|
|
441
|
+
objectData[nk] = data[k];
|
|
442
|
+
});
|
|
443
|
+
return objectData;
|
|
444
|
+
}
|
|
445
|
+
|
|
429
446
|
|
|
430
447
|
export default {
|
|
431
448
|
getElementPath,
|