@twobirds/microcomponents 0.0.82 → 0.0.83
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/assets/documentation/MC.md +0 -1
- package/dist/MC.d.ts +3 -3
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.js +43 -74
- package/dist/MC.min.js +43 -74
- package/dist/MC.ts +67 -143
- package/dist/elements.d.ts +1 -1
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +16 -2
- package/dist/elements.min.js +1 -1
- package/dist/elements.ts +33 -3
- package/dist/formValues.min.js +1 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/observables.d.ts.map +1 -1
- package/dist/observables.js +40 -47
- package/dist/observables.min.js +1 -1
- package/dist/observables.ts +54 -59
- package/dist/selectors.d.ts +2 -4
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +2 -214
- package/dist/selectors.min.js +1 -1
- package/dist/selectors.ts +2 -367
- package/package.json +6 -5
- package/public/MC.d.ts +3 -3
- package/public/MC.d.ts.map +1 -1
- package/public/MC.js +43 -74
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +43 -74
- package/public/MC.ts +67 -143
- package/public/documentation/MC.md +0 -1
- package/public/elements.d.ts +1 -1
- package/public/elements.d.ts.map +1 -1
- package/public/elements.js +16 -2
- package/public/elements.js.map +1 -1
- package/public/elements.min.js +1 -1
- package/public/elements.ts +33 -3
- package/public/formValues.min.js +1 -1
- package/public/microcomponents.min.js +1 -1
- package/public/observables.d.ts.map +1 -1
- package/public/observables.js +40 -47
- package/public/observables.js.map +1 -1
- package/public/observables.min.js +1 -1
- package/public/observables.ts +54 -59
- package/public/selectors.d.ts +2 -4
- package/public/selectors.d.ts.map +1 -1
- package/public/selectors.js +2 -214
- package/public/selectors.js.map +1 -1
- package/public/selectors.min.js +1 -1
- package/public/selectors.ts +2 -367
- package/public/src/MC.d.ts +36 -0
- package/public/src/MC.d.ts.map +1 -0
- package/public/src/MC.js +348 -0
- package/public/src/MC.js.map +1 -0
- package/public/src/MC.ts +67 -143
- package/public/src/McEvent.d.ts +15 -0
- package/public/src/McEvent.d.ts.map +1 -0
- package/public/src/McEvent.js +71 -0
- package/public/src/elements.d.ts +5 -0
- package/public/src/elements.d.ts.map +1 -0
- package/public/src/elements.js +62 -0
- package/public/src/elements.js.map +1 -0
- package/public/src/elements.ts +33 -3
- package/public/src/formValues.d.ts +3 -0
- package/public/src/formValues.d.ts.map +1 -0
- package/public/src/formValues.js +162 -0
- package/public/src/helpers.d.ts +14 -0
- package/public/src/helpers.d.ts.map +1 -0
- package/public/src/helpers.js +113 -0
- package/public/src/microcomponents.d.ts +7 -0
- package/public/src/microcomponents.d.ts.map +1 -0
- package/public/src/microcomponents.js +8 -0
- package/public/src/observables.d.ts +11 -0
- package/public/src/observables.d.ts.map +1 -0
- package/public/src/observables.js +242 -0
- package/public/src/observables.js.map +1 -0
- package/public/src/observables.ts +54 -59
- package/public/src/selectors.d.ts +106 -0
- package/public/src/selectors.d.ts.map +1 -0
- package/public/src/selectors.js +759 -0
- package/public/src/selectors.js.map +1 -0
- package/public/src/selectors.ts +2 -367
- package/public/src/test/grandparent.css +11 -0
- package/public/src/test/test/child.d.ts +2 -0
- package/public/src/test/test/child.d.ts.map +1 -0
- package/public/src/test/test/child.js +15 -0
- package/public/src/test/test/child.js.map +1 -0
- package/public/src/test/test/child.ts +21 -0
- package/public/src/test/test/grandchild.d.ts +2 -0
- package/public/src/test/test/grandchild.d.ts.map +1 -0
- package/public/src/test/test/grandchild.js +15 -0
- package/public/src/test/test/grandchild.js.map +1 -0
- package/public/src/test/test/grandchild.ts +21 -0
- package/public/src/test/test/grandparent.d.ts +2 -0
- package/public/src/test/test/grandparent.d.ts.map +1 -0
- package/public/src/test/test/grandparent.js +1 -0
- package/public/src/test/test/grandparent.js.map +1 -0
- package/public/src/test/test/grandparent.ts +21 -0
- package/public/src/test/test/greatgrandchild.d.ts +2 -0
- package/public/src/test/test/greatgrandchild.d.ts.map +1 -0
- package/public/src/test/test/greatgrandchild.js +29 -0
- package/public/src/test/test/greatgrandchild.js.map +1 -0
- package/public/src/test/test/greatgrandchild.ts +42 -0
- package/public/src/test/test/parent.d.ts +2 -0
- package/public/src/test/test/parent.d.ts.map +1 -0
- package/public/src/test/test/parent.js +15 -0
- package/public/src/test/test/parent.js.map +1 -0
- package/public/src/test/test/parent.ts +21 -0
- package/public/src/test/test/testform.d.ts +2 -0
- package/public/src/test/test/testform.d.ts.map +1 -0
- package/public/src/test/test/testform.js +1 -0
- package/public/src/test/test/testform.js.map +1 -0
- package/public/src/test/test/testform.ts +155 -0
- package/public/src/test/test/testfunction.d.ts +3 -0
- package/public/src/test/test/testfunction.d.ts.map +1 -0
- package/public/src/test/test/testfunction.js +7 -0
- package/public/src/test/test/testfunction.js.map +1 -0
- package/public/src/test/test/testfunction.ts +12 -0
- package/public/src/test/test/testmc.d.ts +3 -0
- package/public/src/test/test/testmc.d.ts.map +1 -0
- package/public/src/test/test/testmc.js +10 -0
- package/public/src/test/test/testmc.js.map +1 -0
- package/public/src/test/test/testmc.ts +16 -0
- package/public/src/test/test/testsimpleclass.d.ts +3 -0
- package/public/src/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/src/test/test/testsimpleclass.js +9 -0
- package/public/src/test/test/testsimpleclass.js.map +1 -0
- package/public/src/test/test/testsimpleclass.ts +15 -0
- package/public/src/test/test.d.ts +2 -0
- package/public/src/test/test.d.ts.map +1 -0
- package/public/src/test/test.js +79 -0
- package/public/src/test/test.js.map +1 -0
- package/public/src/test/test.ts +188 -0
- package/public/src/test/testform.css +47 -0
- package/public/src/test/testform.html +56 -0
- package/public/src/test/testform.json +27 -0
- package/public/test/MC.d.ts +3 -3
- package/public/test/MC.d.ts.map +1 -1
- package/public/test/MC.js +43 -74
- package/public/test/MC.min.js +485 -0
- package/public/test/MC.ts +67 -143
- package/public/test/elements.d.ts +1 -1
- package/public/test/elements.d.ts.map +1 -1
- package/public/test/elements.js +16 -2
- package/public/test/elements.min.js +1 -0
- package/public/test/elements.ts +33 -3
- package/public/test/formValues.min.js +1 -0
- package/public/test/grandparent.css +1 -3
- package/public/test/microcomponents.min.js +1 -1
- package/public/test/observables.d.ts.map +1 -1
- package/public/test/observables.js +40 -47
- package/public/test/observables.min.js +1 -0
- package/public/test/observables.ts +54 -59
- package/public/test/selectors.d.ts +2 -4
- package/public/test/selectors.d.ts.map +1 -1
- package/public/test/selectors.js +2 -214
- package/public/test/selectors.min.js +1 -0
- package/public/test/selectors.ts +2 -367
- package/public/test/test/child.ts +21 -0
- package/public/test/test/grandchild.ts +21 -0
- package/public/test/test/grandparent.js +1 -1
- package/public/test/test/grandparent.ts +21 -0
- package/public/test/test/greatgrandchild.ts +42 -0
- package/public/test/test/parent.ts +21 -0
- package/public/test/test/testform.js +1 -1
- package/public/test/test/testform.js.map +1 -1
- package/public/test/test/testform.ts +155 -0
- package/public/test/test/testfunction.d.ts +3 -0
- package/public/test/test/testfunction.d.ts.map +1 -0
- package/public/test/test/testfunction.js +7 -0
- package/public/test/test/testfunction.js.map +1 -0
- package/public/test/test/testfunction.ts +12 -0
- package/public/test/test/testmc.d.ts +2 -5
- package/public/test/test/testmc.d.ts.map +1 -1
- package/public/test/test/testmc.js +4 -4
- package/public/test/test/testmc.js.map +1 -1
- package/public/test/test/testmc.ts +16 -0
- package/public/test/test/testsimpleclass.d.ts +3 -0
- package/public/test/test/testsimpleclass.d.ts.map +1 -0
- package/public/test/test/testsimpleclass.js +9 -0
- package/public/test/test/testsimpleclass.js.map +1 -0
- package/public/test/test/testsimpleclass.ts +15 -0
- package/public/test/test.js +0 -2
- package/public/test/test.js.map +1 -1
- package/public/test/test.ts +188 -0
- package/public/test/testform.css +47 -0
- package/public/test/testform.html +56 -0
- package/public/test/testform.json +3 -3
- package/public/typedoc/assets/navigation.js +1 -1
- package/public/typedoc/assets/search.js +1 -1
- package/public/typedoc/classes/MC.DC.html +5 -5
- package/public/typedoc/classes/MC.MC.html +5 -5
- package/public/typedoc/classes/MC.McBase.html +4 -3
- package/public/typedoc/classes/MC.McEvent.html +2 -2
- package/public/typedoc/functions/MC.addListener.html +1 -1
- package/public/typedoc/functions/MC.autoload.html +1 -1
- package/public/typedoc/functions/MC.removeListener.html +1 -1
- package/public/typedoc/functions/elements.defineCE.html +1 -1
- package/public/typedoc/functions/elements.getCE.html +1 -1
- package/public/typedoc/functions/formValues.formValues.html +1 -1
- package/public/typedoc/functions/observables.observe.html +1 -1
- package/public/typedoc/functions/selectors._d.html +1 -0
- package/public/typedoc/functions/selectors._t.html +1 -0
- package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
- package/public/typedoc/interfaces/selectors.DSelector.html +48 -0
- package/public/typedoc/interfaces/selectors.TSelector.html +34 -0
- package/public/typedoc/modules/MC.html +1 -1
- package/public/typedoc/modules/elements.html +1 -1
- package/public/typedoc/modules/formValues.html +1 -1
- package/public/typedoc/modules/observables.html +1 -1
- package/public/typedoc/modules/selectors.html +7 -0
- package/public/typedoc/modules.html +1 -0
- package/public/typedoc/types/observables.Observable.html +1 -1
- package/public/typedoc/types/selectors.selection.html +1 -0
- package/public/typedoc/types/selectors.singleSelector.html +1 -0
- package/src/MC.ts +67 -143
- package/src/elements.ts +33 -3
- package/src/observables.ts +54 -59
- package/src/selectors.ts +2 -367
- package/src/test/test/testform.ts +7 -3
- package/src/test/test/testfunction.ts +12 -0
- package/src/test/test/testmc.ts +13 -9
- package/src/test/test/testsimpleclass.ts +15 -0
- package/src/test/test.ts +0 -12
- package/tasks.md +36 -0
- package/typedoc.json +1 -1
- package/public/test/MC.js.map +0 -1
- package/public/test/elements.js.map +0 -1
- package/public/test/observables.js.map +0 -1
- package/public/test/selectors.js.map +0 -1
- /package/public/{test → src}/McEvent.js.map +0 -0
- /package/public/{test → src}/formValues.js.map +0 -0
- /package/public/{test → src}/helpers.js.map +0 -0
- /package/public/{test → src}/microcomponents.js.map +0 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import { debounce, deepEqual, flattenObject, copyGettersSetters, } from './helpers.js';
|
|
3
|
+
import { DC } from './MC.js';
|
|
4
|
+
function isObservableObject(value) {
|
|
5
|
+
return value != null && typeof value === 'object';
|
|
6
|
+
}
|
|
7
|
+
function getPlaceholders(target) {
|
|
8
|
+
let placeholders = new Set(), regEx = /\{[^\{\}]*\}/g;
|
|
9
|
+
(!!target.getAttributeNames ? target.getAttributeNames() : [])
|
|
10
|
+
.filter((attr) => target.getAttribute(attr)?.match(regEx))
|
|
11
|
+
.forEach((attr) => {
|
|
12
|
+
let placeholders = new Set(target.getAttribute(attr)?.match(regEx));
|
|
13
|
+
placeholders.forEach((placeholder) => placeholders.add(placeholder.replace(/[\{\}]/g, '')));
|
|
14
|
+
});
|
|
15
|
+
[...target.childNodes]
|
|
16
|
+
.filter((childNode) => {
|
|
17
|
+
return (childNode.nodeType === 3 &&
|
|
18
|
+
(childNode.nodeValue || '').match(regEx));
|
|
19
|
+
})
|
|
20
|
+
.forEach((childNode) => {
|
|
21
|
+
(childNode.nodeValue || '')
|
|
22
|
+
.match(regEx)
|
|
23
|
+
.forEach((placeholder) => {
|
|
24
|
+
placeholders.add(placeholder.replace(/[\{\}]/g, ''));
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return [...placeholders].map((placeholder) => placeholder.replace(/[\{\}]/g, ''));
|
|
28
|
+
}
|
|
29
|
+
const inputs = [HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement];
|
|
30
|
+
class Placeholders extends DC {
|
|
31
|
+
data = {};
|
|
32
|
+
oldDisplay = '';
|
|
33
|
+
constructor(target) {
|
|
34
|
+
super(target);
|
|
35
|
+
getPlaceholders(target).forEach((property) => (this.data[property] = ''));
|
|
36
|
+
observe(this);
|
|
37
|
+
this.#attachCallbacks();
|
|
38
|
+
}
|
|
39
|
+
#attachCallbacks() {
|
|
40
|
+
let target = this.target, hide = false;
|
|
41
|
+
(!!target.getAttributeNames ? target.getAttributeNames() : [])
|
|
42
|
+
.filter((attr) => target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g))
|
|
43
|
+
.forEach((attr) => {
|
|
44
|
+
let placeholders = new Set(target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g));
|
|
45
|
+
this.data.observe(((template) => (data) => {
|
|
46
|
+
let result = template;
|
|
47
|
+
placeholders.forEach((placeholder) => {
|
|
48
|
+
result = result.replace(placeholder, data[placeholder.replace(/[\{\}]/g, '')]);
|
|
49
|
+
});
|
|
50
|
+
target.setAttribute(attr, result);
|
|
51
|
+
})(target.getAttribute(attr)));
|
|
52
|
+
});
|
|
53
|
+
[...target.childNodes]
|
|
54
|
+
.filter((childNode) => {
|
|
55
|
+
return (childNode.nodeType === 3 &&
|
|
56
|
+
(childNode.nodeValue || '').match(/\{[^\{\}]*\}/g));
|
|
57
|
+
})
|
|
58
|
+
.forEach((childNode) => {
|
|
59
|
+
hide = true;
|
|
60
|
+
let placeholders = new Set(childNode.nodeValue.match(/\{[^\{\}]*\}/g));
|
|
61
|
+
this.data.observe(((template) => (data) => {
|
|
62
|
+
let result = template;
|
|
63
|
+
placeholders.forEach((placeholder) => {
|
|
64
|
+
result = result.replace(placeholder, data[placeholder.replace(/[\{\}]/g, '')]);
|
|
65
|
+
});
|
|
66
|
+
if (!!this.oldDisplay) {
|
|
67
|
+
target.style = this.oldDisplay;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
target.removeAttribute('style');
|
|
71
|
+
}
|
|
72
|
+
delete this.oldDisplay;
|
|
73
|
+
childNode.nodeValue = result;
|
|
74
|
+
})(childNode.nodeValue));
|
|
75
|
+
this.oldDisplay = target.getAttribute('style)') || '';
|
|
76
|
+
if (hide &&
|
|
77
|
+
!inputs.includes(target.constructor) &&
|
|
78
|
+
target.tagName !== 'FIELDSET') {
|
|
79
|
+
target.style.display = 'none';
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
onData(ev) {
|
|
84
|
+
let data = {};
|
|
85
|
+
Object.keys(ev.data).forEach((key) => {
|
|
86
|
+
if (this.data.hasOwnProperty(key))
|
|
87
|
+
data[key] = ev.data[key];
|
|
88
|
+
});
|
|
89
|
+
if (JSON.stringify(data) !== JSON.stringify(this.data))
|
|
90
|
+
Object.assign(this.data, data);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function getPlaceholderElements(target) {
|
|
94
|
+
let elements = [target]
|
|
95
|
+
.concat([...target.querySelectorAll('*')])
|
|
96
|
+
.filter((e) => !!getPlaceholders(e).length)
|
|
97
|
+
.filter((e) => e?.tagName !== 'STYLE')
|
|
98
|
+
.reverse();
|
|
99
|
+
return elements;
|
|
100
|
+
}
|
|
101
|
+
function makePlaceholders(element) {
|
|
102
|
+
getPlaceholderElements(element).forEach((e) => {
|
|
103
|
+
if (e?._mc?._placeholders)
|
|
104
|
+
return;
|
|
105
|
+
DC.add(e, '_placeholders', new Placeholders(e));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const classRepo = {};
|
|
109
|
+
function makeObservable(val) {
|
|
110
|
+
const Constructor = val.constructor, ConstructorName = Constructor.name;
|
|
111
|
+
let ObservableClass = class extends Constructor {
|
|
112
|
+
#notify = true;
|
|
113
|
+
#callbacks = [];
|
|
114
|
+
constructor(val) {
|
|
115
|
+
super(val);
|
|
116
|
+
this.constructor.callbacks = [];
|
|
117
|
+
if (isObservableObject(val)) {
|
|
118
|
+
Object.getOwnPropertyNames(val).forEach((key) => {
|
|
119
|
+
this[key] = val[key];
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
get callbacks() {
|
|
124
|
+
return this.#callbacks;
|
|
125
|
+
}
|
|
126
|
+
set callbacks(callbacks) {
|
|
127
|
+
this.#callbacks = callbacks;
|
|
128
|
+
}
|
|
129
|
+
observe(f) {
|
|
130
|
+
this.#callbacks.push(f);
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
bind(target) {
|
|
134
|
+
const iso = isObservableObject(this.valueOf());
|
|
135
|
+
if (iso) {
|
|
136
|
+
makePlaceholders(target);
|
|
137
|
+
const placeholders = [
|
|
138
|
+
target, ...target.querySelectorAll('[_mc]'),
|
|
139
|
+
].filter((e) => !!e?._mc?._placeholders);
|
|
140
|
+
const func = function callback(data) {
|
|
141
|
+
let d = flattenObject(data);
|
|
142
|
+
placeholders.forEach((e) => {
|
|
143
|
+
if (!e)
|
|
144
|
+
return;
|
|
145
|
+
e._mc.trigger('data', d);
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
this.#callbacks.push(func);
|
|
149
|
+
this.notify();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
console.warn('IGNORED - cannot bind a non-Object to the dom, IS:', typeof this.valueOf(), this);
|
|
153
|
+
}
|
|
154
|
+
return this;
|
|
155
|
+
}
|
|
156
|
+
notify(notify) {
|
|
157
|
+
let data = isObservableObject(this.valueOf()) &&
|
|
158
|
+
this.valueOf() instanceof Array === false
|
|
159
|
+
? structuredClone(Object.assign({}, this))
|
|
160
|
+
: this.valueOf();
|
|
161
|
+
if (notify !== undefined) {
|
|
162
|
+
this.#notify = notify;
|
|
163
|
+
}
|
|
164
|
+
this.#callbacks.forEach((f) => {
|
|
165
|
+
f(data);
|
|
166
|
+
});
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
classRepo[ConstructorName] = ObservableClass;
|
|
171
|
+
return ObservableClass;
|
|
172
|
+
}
|
|
173
|
+
function getConstructor(val) {
|
|
174
|
+
let key = val.constructor.name;
|
|
175
|
+
return classRepo[key] || makeObservable(val);
|
|
176
|
+
}
|
|
177
|
+
export const observe = (target, propertyName) => {
|
|
178
|
+
let keys = !propertyName
|
|
179
|
+
? [...Object.getOwnPropertyNames(target)]
|
|
180
|
+
: [propertyName];
|
|
181
|
+
keys.forEach((key) => {
|
|
182
|
+
if (target.hasOwnProperty(key)
|
|
183
|
+
&& typeof target[key] !== 'function'
|
|
184
|
+
&& !target?.[key]?.constructor?.prototype?.observe) {
|
|
185
|
+
if (key[0] === '_' || target?.[key] === undefined)
|
|
186
|
+
return target;
|
|
187
|
+
let val = target[key];
|
|
188
|
+
let o = new (getConstructor(val))(val);
|
|
189
|
+
Object.defineProperty(target, key, {
|
|
190
|
+
enumerable: true,
|
|
191
|
+
get() {
|
|
192
|
+
if (isObservableObject(o.valueOf())) {
|
|
193
|
+
let check = structuredClone(Object.assign({}, o));
|
|
194
|
+
setTimeout(debounce(function checkChanges() {
|
|
195
|
+
let state = structuredClone(Object.assign({}, o));
|
|
196
|
+
if (!deepEqual(state, check)) {
|
|
197
|
+
o.notify();
|
|
198
|
+
}
|
|
199
|
+
}, 0), 0);
|
|
200
|
+
}
|
|
201
|
+
return o;
|
|
202
|
+
},
|
|
203
|
+
set(val) {
|
|
204
|
+
if (typeof val === typeof o.valueOf()) {
|
|
205
|
+
let iso = isObservableObject(o.valueOf()) &&
|
|
206
|
+
o.valueOf() instanceof Array === false;
|
|
207
|
+
if (iso) {
|
|
208
|
+
let old = structuredClone(Object.assign({}, o));
|
|
209
|
+
if (o?.constructor?.prototype?.observe === undefined) {
|
|
210
|
+
o = new (getConstructor(val))(structuredClone(Object.assign({}, val)));
|
|
211
|
+
copyGettersSetters(val, o);
|
|
212
|
+
o.seal();
|
|
213
|
+
}
|
|
214
|
+
Object.assign(o, val);
|
|
215
|
+
setTimeout(debounce(function checkChanges() {
|
|
216
|
+
let state = structuredClone(Object.assign({}, o));
|
|
217
|
+
if (!deepEqual(state, old)) {
|
|
218
|
+
o.notify();
|
|
219
|
+
}
|
|
220
|
+
}, 0), 0);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
let old = o.valueOf(), callbacks = o.callbacks;
|
|
224
|
+
if (val !== old) {
|
|
225
|
+
o = new (getConstructor(val))(val);
|
|
226
|
+
o.callbacks = callbacks;
|
|
227
|
+
o.notify();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.warn('IGNORED - cannot change observable types, IS:', typeof o.valueOf(), o, '- CANNOT BECOME:', typeof val);
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
target[key] = val;
|
|
237
|
+
}
|
|
238
|
+
;
|
|
239
|
+
});
|
|
240
|
+
return target;
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=observables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observables.js","sourceRoot":"","sources":["../src/observables.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,12 +21,11 @@ function getPlaceholders(target: HTMLElement): string[] {
|
|
|
21
21
|
regEx = /\{[^\{\}]*\}/g;
|
|
22
22
|
|
|
23
23
|
// scan attributes
|
|
24
|
-
target
|
|
25
|
-
.getAttributeNames()
|
|
24
|
+
( !!target.getAttributeNames ? target.getAttributeNames() : [] )
|
|
26
25
|
.filter((attr) => target.getAttribute(attr)?.match(regEx)) // extract placeholder(s)
|
|
27
26
|
.forEach((attr) => {
|
|
28
|
-
let
|
|
29
|
-
|
|
27
|
+
let placeholders: Set<string> = new Set(target.getAttribute(attr)?.match(regEx));
|
|
28
|
+
placeholders.forEach((placeholder) =>
|
|
30
29
|
placeholders.add(placeholder.replace(/[\{\}]/g, ''))
|
|
31
30
|
);
|
|
32
31
|
});
|
|
@@ -62,35 +61,31 @@ class Placeholders extends DC {
|
|
|
62
61
|
|
|
63
62
|
constructor(target: HTMLElement) {
|
|
64
63
|
super(target);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
that.#attachCallbacks();
|
|
69
|
-
delete that._mc; // cleanup, not needed
|
|
64
|
+
getPlaceholders(target).forEach((property) => (this.data[property] = ''));
|
|
65
|
+
observe(this);
|
|
66
|
+
this.#attachCallbacks();
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
#attachCallbacks() {
|
|
73
|
-
let
|
|
74
|
-
target = that.target,
|
|
70
|
+
let target = this.target,
|
|
75
71
|
hide: boolean = false;
|
|
76
72
|
|
|
77
|
-
//console.log('attachCallbacks',
|
|
73
|
+
//console.log('attachCallbacks', this.target);
|
|
78
74
|
|
|
79
75
|
// scan attributes
|
|
80
|
-
target
|
|
81
|
-
.getAttributeNames()
|
|
76
|
+
( !!target.getAttributeNames ? target.getAttributeNames() : [] )
|
|
82
77
|
.filter((attr: string) =>
|
|
83
78
|
target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g)
|
|
84
79
|
) // extract placeholder(s)
|
|
85
80
|
.forEach((attr: string) => {
|
|
86
|
-
let
|
|
81
|
+
let placeholders: Set<string> = new Set(
|
|
87
82
|
target.getAttribute(attr)?.match(/\{[^\{\}]*\}/g)
|
|
88
83
|
);
|
|
89
84
|
// attach callback
|
|
90
|
-
|
|
85
|
+
this.data.observe(
|
|
91
86
|
((template: string) => (data: LooseObject) => {
|
|
92
87
|
let result: string = template;
|
|
93
|
-
|
|
88
|
+
placeholders.forEach((placeholder) => {
|
|
94
89
|
result = result.replace(
|
|
95
90
|
placeholder,
|
|
96
91
|
data[placeholder.replace(/[\{\}]/g, '')]
|
|
@@ -108,44 +103,48 @@ class Placeholders extends DC {
|
|
|
108
103
|
return (
|
|
109
104
|
// is text node and has placeholders
|
|
110
105
|
childNode.nodeType === 3 &&
|
|
111
|
-
((childNode as
|
|
106
|
+
((childNode as Node).nodeValue || '').match(/\{[^\{\}]*\}/g)
|
|
112
107
|
);
|
|
113
108
|
})
|
|
114
109
|
.forEach((childNode) => {
|
|
115
110
|
hide = true;
|
|
116
|
-
let
|
|
111
|
+
let placeholders: Set<string> = new Set(
|
|
117
112
|
childNode.nodeValue.match(/\{[^\{\}]*\}/g)
|
|
118
113
|
);
|
|
119
114
|
|
|
120
115
|
// attach callback
|
|
121
|
-
|
|
116
|
+
this.data.observe(
|
|
122
117
|
((template: string) => (data: LooseObject) => {
|
|
123
118
|
let result: string = template;
|
|
124
|
-
//console.log('text node "', template, '"
|
|
125
|
-
|
|
119
|
+
//console.log('text node "', template, '" callback data:', data);
|
|
120
|
+
placeholders.forEach((placeholder) => {
|
|
126
121
|
result = result.replace(
|
|
127
122
|
placeholder,
|
|
128
123
|
data[placeholder.replace(/[\{\}]/g, '')]
|
|
129
124
|
);
|
|
130
125
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
// TODO: find out why this doesnt work correctly ... maybe completely overhaul the whole thing
|
|
127
|
+
// TODO: check overlap with inner web components, possibly firewall them
|
|
128
|
+
// TODO: maybe include convention for plain DOM / ShadowDom handling
|
|
129
|
+
|
|
130
|
+
// if (
|
|
131
|
+
// Object.keys(data).some((key) => {
|
|
132
|
+
// return !!data[key];
|
|
133
|
+
// })
|
|
134
|
+
// ) {
|
|
135
|
+
if (!!this.oldDisplay) {
|
|
136
|
+
target.style = this.oldDisplay;
|
|
138
137
|
} else {
|
|
139
138
|
target.removeAttribute('style');
|
|
140
139
|
}
|
|
141
|
-
delete
|
|
142
|
-
}
|
|
140
|
+
delete this.oldDisplay;
|
|
141
|
+
// }
|
|
143
142
|
childNode.nodeValue = result;
|
|
144
143
|
})(childNode.nodeValue)
|
|
145
144
|
);
|
|
146
145
|
|
|
147
146
|
// hide for now
|
|
148
|
-
|
|
147
|
+
this.oldDisplay = target.getAttribute('style)') || '';
|
|
149
148
|
if (
|
|
150
149
|
hide &&
|
|
151
150
|
!inputs.includes((target as any).constructor) &&
|
|
@@ -157,26 +156,24 @@ class Placeholders extends DC {
|
|
|
157
156
|
}
|
|
158
157
|
|
|
159
158
|
onData(ev: McEvent) {
|
|
160
|
-
let
|
|
161
|
-
data: LooseObject = {};
|
|
159
|
+
let data: LooseObject = {};
|
|
162
160
|
Object.keys(ev.data).forEach((key) => {
|
|
163
|
-
if (
|
|
161
|
+
if (this.data.hasOwnProperty(key)) data[key] = ev.data[key];
|
|
164
162
|
});
|
|
165
|
-
//console.log('onData()', ev, data,
|
|
166
|
-
if (JSON.stringify(data) !== JSON.stringify(
|
|
167
|
-
Object.assign(
|
|
163
|
+
//console.log('onData()', ev, data, this.data);
|
|
164
|
+
if (JSON.stringify(data) !== JSON.stringify(this.data))
|
|
165
|
+
Object.assign(this.data, data); // will trigger callbacks
|
|
168
166
|
}
|
|
169
167
|
}
|
|
170
168
|
|
|
171
169
|
function getPlaceholderElements(
|
|
172
170
|
target: HTMLElement | DocumentFragment | ShadowRoot
|
|
173
171
|
): HTMLElement[] {
|
|
174
|
-
let elements: Array<
|
|
175
|
-
target instanceof HTMLElement ? [target] : []
|
|
176
|
-
)
|
|
172
|
+
let elements: Array<Node> = [target]
|
|
177
173
|
.concat([...(target.querySelectorAll('*') as unknown as HTMLElement[])])
|
|
178
174
|
.filter((e) => !!getPlaceholders(e as HTMLElement).length)
|
|
179
|
-
.filter((e) => e
|
|
175
|
+
.filter((e) => (e as HTMLElement)?.tagName !== 'STYLE')
|
|
176
|
+
.reverse(); // to start with inner elements
|
|
180
177
|
//console.log('getPlaceholderElements', elements);
|
|
181
178
|
return elements as HTMLElement[];
|
|
182
179
|
}
|
|
@@ -239,14 +236,13 @@ function makeObservable(val: any): Class<typeof val>{
|
|
|
239
236
|
}
|
|
240
237
|
|
|
241
238
|
bind(target: HTMLElement | DocumentFragment | ShadowRoot) {
|
|
242
|
-
const
|
|
243
|
-
iso = isObservableObject(that.valueOf());
|
|
239
|
+
const iso = isObservableObject(this.valueOf());
|
|
244
240
|
//console.log('bind', iso, target);
|
|
245
241
|
|
|
246
242
|
if (iso) {
|
|
247
243
|
makePlaceholders(target);
|
|
248
244
|
const placeholders: unknown = [
|
|
249
|
-
...target.querySelectorAll('[_mc]'),
|
|
245
|
+
target, ...target.querySelectorAll('[_mc]'),
|
|
250
246
|
].filter((e) => !!(e as LooseObject)?._mc?._placeholders);
|
|
251
247
|
//console.log('placeholders:', target, placeholders);
|
|
252
248
|
const func = function callback(data: LooseObject) {
|
|
@@ -259,13 +255,13 @@ function makeObservable(val: any): Class<typeof val>{
|
|
|
259
255
|
(e as any)._mc.trigger('data', d);
|
|
260
256
|
});
|
|
261
257
|
};
|
|
262
|
-
(
|
|
263
|
-
|
|
258
|
+
(this as any).#callbacks.push(func);
|
|
259
|
+
this.notify();
|
|
264
260
|
} else {
|
|
265
261
|
console.warn(
|
|
266
262
|
'IGNORED - cannot bind a non-Object to the dom, IS:',
|
|
267
|
-
typeof
|
|
268
|
-
|
|
263
|
+
typeof this.valueOf(),
|
|
264
|
+
this
|
|
269
265
|
);
|
|
270
266
|
}
|
|
271
267
|
|
|
@@ -273,20 +269,19 @@ function makeObservable(val: any): Class<typeof val>{
|
|
|
273
269
|
}
|
|
274
270
|
|
|
275
271
|
notify(notify?: boolean) {
|
|
276
|
-
let
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
: that.valueOf();
|
|
272
|
+
let data =
|
|
273
|
+
isObservableObject(this.valueOf()) &&
|
|
274
|
+
this.valueOf() instanceof Array === false
|
|
275
|
+
? structuredClone(Object.assign({}, this))
|
|
276
|
+
: this.valueOf();
|
|
282
277
|
|
|
283
278
|
if (notify !== undefined) {
|
|
284
|
-
|
|
279
|
+
this.#notify = notify;
|
|
285
280
|
// return;
|
|
286
281
|
}
|
|
287
282
|
|
|
288
|
-
//if (
|
|
289
|
-
(
|
|
283
|
+
//if (this.#notify) console.log('notify', this, data);
|
|
284
|
+
(this as any).#callbacks.forEach((f: Function) => {
|
|
290
285
|
// console.log(
|
|
291
286
|
// (this.constructor as any).callbacks,
|
|
292
287
|
// 'notify: exec callback',
|
|
@@ -296,7 +291,7 @@ function makeObservable(val: any): Class<typeof val>{
|
|
|
296
291
|
f(data);
|
|
297
292
|
});
|
|
298
293
|
|
|
299
|
-
return
|
|
294
|
+
return this;
|
|
300
295
|
}
|
|
301
296
|
};
|
|
302
297
|
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { MC, DC } from './MC.js';
|
|
2
|
+
import { LooseObject } from './helpers.js';
|
|
3
|
+
declare class DomSelector {
|
|
4
|
+
#private;
|
|
5
|
+
get set(): Set<HTMLElement>;
|
|
6
|
+
get array(): HTMLElement[];
|
|
7
|
+
set set(set: Set<HTMLElement>);
|
|
8
|
+
get length(): number;
|
|
9
|
+
constructor(selection?: selection, element?: any);
|
|
10
|
+
$t(nameSpace?: string): TSelector;
|
|
11
|
+
add(selection: selection, target?: HTMLElement): DSelector;
|
|
12
|
+
addClass(...classes: string[]): DSelector;
|
|
13
|
+
after(selection: selection, target?: HTMLElement): DSelector;
|
|
14
|
+
append(selection: selection, target?: HTMLElement): DSelector;
|
|
15
|
+
appendTo(selection: selection, target?: HTMLElement): DSelector;
|
|
16
|
+
attr(): LooseObject;
|
|
17
|
+
attr(obj: LooseObject): DSelector;
|
|
18
|
+
attr(name: string): string | null;
|
|
19
|
+
attr(first?: string | LooseObject, second?: string | object | null): DSelector;
|
|
20
|
+
before(selection: selection, target?: HTMLElement): DSelector;
|
|
21
|
+
children(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
22
|
+
descendants(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
23
|
+
empty(): DSelector;
|
|
24
|
+
first(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
25
|
+
has(element: HTMLElement): boolean;
|
|
26
|
+
hasClass(...classes: string[]): boolean;
|
|
27
|
+
html(html?: string): string | DSelector;
|
|
28
|
+
last(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
29
|
+
next(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
30
|
+
normalize(): DSelector;
|
|
31
|
+
off(eventName: string, cb: Function): DSelector;
|
|
32
|
+
on(eventName: string, cb: Function, capture?: boolean, once?: boolean): Function;
|
|
33
|
+
one(eventName: string, cb: Function, capture?: boolean): Function;
|
|
34
|
+
parent(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
35
|
+
ancestors(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
36
|
+
prepend(selection: selection, target?: HTMLElement): DSelector;
|
|
37
|
+
prev(selection?: selection, rootNode?: HTMLElement): DSelector;
|
|
38
|
+
removeClass(...classes: string[]): DSelector;
|
|
39
|
+
text(text?: string): string | DSelector;
|
|
40
|
+
toggleClass(...classes: string[]): DSelector;
|
|
41
|
+
trigger(eventName: string, data?: any, bubbles?: boolean, cancelable?: boolean, composed?: boolean): DSelector;
|
|
42
|
+
at(index: number): DSelector;
|
|
43
|
+
concat(items: DSelector | any[]): DSelector;
|
|
44
|
+
entries(): IterableIterator<[number, any]>;
|
|
45
|
+
every(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean;
|
|
46
|
+
filter(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): DSelector;
|
|
47
|
+
forEach(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): DSelector;
|
|
48
|
+
includes(item: HTMLElement): boolean;
|
|
49
|
+
indexOf(item: HTMLElement, start?: number): number;
|
|
50
|
+
map(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): Array<any>;
|
|
51
|
+
pop(): HTMLElement;
|
|
52
|
+
push(...items: HTMLElement[]): DSelector;
|
|
53
|
+
shift(): HTMLElement | undefined;
|
|
54
|
+
slice(start: number, end?: number): DSelector;
|
|
55
|
+
some(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean;
|
|
56
|
+
splice(start: number, deleteCount?: number | undefined): DSelector;
|
|
57
|
+
}
|
|
58
|
+
export interface DSelector extends DomSelector {
|
|
59
|
+
}
|
|
60
|
+
declare class TbSelector {
|
|
61
|
+
#private;
|
|
62
|
+
get set(): Set<any>;
|
|
63
|
+
get array(): any[];
|
|
64
|
+
set set(set: Set<any>);
|
|
65
|
+
get length(): number;
|
|
66
|
+
set length(value: number);
|
|
67
|
+
constructor(selection?: selection, element?: HTMLElement);
|
|
68
|
+
$d(selection?: selection, element?: HTMLElement): DSelector;
|
|
69
|
+
children(nameSpace?: string): TSelector;
|
|
70
|
+
descendants(nameSpace?: string): TSelector;
|
|
71
|
+
first(nameSpace?: string): TSelector;
|
|
72
|
+
has(element: any): boolean;
|
|
73
|
+
last(nameSpace?: string): TSelector;
|
|
74
|
+
next(nameSpace?: string): TSelector;
|
|
75
|
+
ns(nameSpace: string): TSelector;
|
|
76
|
+
off(name: string, cb: Function): TSelector;
|
|
77
|
+
on(name: string, cb: Function, once?: boolean): Function;
|
|
78
|
+
one(name: string, cb: Function): Function;
|
|
79
|
+
parent(nameSpace?: string): TSelector;
|
|
80
|
+
ancestors(nameSpace?: string): TSelector;
|
|
81
|
+
prev(nameSpace?: string): TSelector;
|
|
82
|
+
trigger(ev: string, data?: any, bubble?: string): TSelector;
|
|
83
|
+
at(index: number): TSelector;
|
|
84
|
+
concat(items: TSelector): TSelector;
|
|
85
|
+
entries(): IterableIterator<[number, any]>;
|
|
86
|
+
every(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean;
|
|
87
|
+
filter(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): TSelector;
|
|
88
|
+
forEach(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): TSelector;
|
|
89
|
+
includes(item: any): boolean;
|
|
90
|
+
indexOf(item: any, start?: number): number;
|
|
91
|
+
map(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): Array<any>;
|
|
92
|
+
pop(): any;
|
|
93
|
+
push(item: any): TSelector;
|
|
94
|
+
shift(): any | undefined;
|
|
95
|
+
slice(start: number, end?: number): TSelector;
|
|
96
|
+
some(predicate: (value: any, index: number, array: any[]) => unknown, thisArg?: any): boolean;
|
|
97
|
+
splice(start: number, deleteCount?: number | undefined): TSelector;
|
|
98
|
+
}
|
|
99
|
+
export interface TSelector extends TbSelector {
|
|
100
|
+
}
|
|
101
|
+
export declare const $d: (selection: selection, element?: any) => DSelector;
|
|
102
|
+
export declare const $t: (selection?: selection, element?: any) => TSelector;
|
|
103
|
+
export type singleSelector = string | ShadowRoot | HTMLElement | HTMLElement[] | HTMLCollection | NodeList | DSelector | MC | DC | TSelector | undefined;
|
|
104
|
+
export type selection = singleSelector | singleSelector[];
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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"}
|