@twobirds/microcomponents 0.0.84 → 0.0.85
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 +22 -6
- package/assets/documentation/MC.md +60 -81
- package/assets/documentation/elements.md +6 -9
- package/assets/documentation/observables.md +97 -11
- package/dist/MC.d.ts +6 -9
- package/dist/MC.d.ts.map +1 -1
- package/dist/MC.js +33 -69
- package/dist/MC.min.js +33 -69
- package/dist/MC.ts +55 -102
- package/dist/elements.min.js +1 -1
- package/dist/formValues.min.js +1 -1
- package/dist/microcomponents.min.js +1 -1
- package/dist/observables.min.js +1 -1
- package/package.json +1 -1
- package/public/MC.d.ts +6 -9
- package/public/MC.d.ts.map +1 -1
- package/public/MC.js +33 -69
- package/public/MC.js.map +1 -1
- package/public/MC.min.js +33 -69
- package/public/MC.ts +55 -102
- package/public/documentation/MC.md +60 -81
- package/public/documentation/elements.md +6 -9
- package/public/documentation/observables.md +97 -11
- package/public/elements.min.js +1 -1
- package/public/formValues.min.js +1 -1
- package/public/microcomponents.min.js +1 -1
- package/public/observables.min.js +1 -1
- package/public/src/MC.d.ts +6 -9
- package/public/src/MC.d.ts.map +1 -1
- package/public/src/MC.js +33 -69
- package/public/src/MC.js.map +1 -1
- package/public/src/MC.ts +55 -102
- package/public/src/test/test/grandparent.js +1 -1
- package/public/src/test/test/testform.js +1 -1
- package/public/src/test/test.js +1 -1
- package/public/src/test/test.js.map +1 -1
- package/public/src/test/test.ts +2 -1
- package/public/test/MC.d.ts +6 -9
- package/public/test/MC.d.ts.map +1 -1
- package/public/test/MC.js +33 -69
- package/public/test/MC.min.js +33 -69
- package/public/test/MC.ts +55 -102
- package/public/test/elements.min.js +1 -1
- package/public/test/formValues.min.js +1 -1
- package/public/test/microcomponents.min.js +1 -1
- package/public/test/observables.min.js +1 -1
- package/public/test/test/grandparent.js +1 -1
- package/public/test/test/testform.js +1 -1
- package/public/test/test.js +1 -1
- package/public/test/test.js.map +1 -1
- package/public/test/test.ts +2 -1
- package/public/typedoc/assets/navigation.js +1 -1
- package/public/typedoc/assets/search.js +1 -1
- package/public/typedoc/classes/MC.DC.html +3 -4
- package/public/typedoc/classes/MC.MC.html +2 -4
- package/public/typedoc/classes/MC.McBase.html +2 -2
- package/public/typedoc/functions/MC.autoload.html +1 -1
- package/public/typedoc/functions/MC.off.html +1 -1
- package/public/typedoc/functions/MC.on.html +1 -1
- package/public/typedoc/functions/MC.one.html +1 -1
- package/public/typedoc/functions/MC.trigger.html +1 -0
- 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/index.html +21 -10
- package/public/typedoc/interfaces/MC.HTMLMcElement.html +2 -2
- package/public/typedoc/modules/MC.html +3 -3
- 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/types/observables.Observable.html +1 -1
- package/src/MC.ts +55 -102
- package/src/test/test.ts +2 -1
package/public/MC.min.js
CHANGED
|
@@ -56,7 +56,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
56
56
|
/* harmony export */ trigger: () => (/* binding */ trigger)
|
|
57
57
|
/* harmony export */ });
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
|
|
60
60
|
function getNativeEventNames(domNode) {
|
|
61
61
|
let nativeEventNames = [];
|
|
62
62
|
if (isBrowser()) {
|
|
@@ -66,51 +66,13 @@ function getNativeEventNames(domNode) {
|
|
|
66
66
|
}
|
|
67
67
|
return nativeEventNames;
|
|
68
68
|
}
|
|
69
|
-
function getMicroComponents(elements, search) {
|
|
70
|
-
let mcValues = [];
|
|
71
|
-
elements.forEach((e) => {
|
|
72
|
-
if (e) {
|
|
73
|
-
if (e instanceof HTMLElement) {
|
|
74
|
-
const _mc = e?._mc;
|
|
75
|
-
if (!search && _mc) {
|
|
76
|
-
mcValues = mcValues.concat(Object.values(e._mc));
|
|
77
|
-
}
|
|
78
|
-
else if (search && _mc && _mc[search]) {
|
|
79
|
-
mcValues.push(_mc[search]);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
return mcValues;
|
|
85
|
-
}
|
|
86
|
-
function traverseNodes(node, search, firstonly = true) {
|
|
87
|
-
let mcValues = [];
|
|
88
|
-
while (node) {
|
|
89
|
-
if (node._mc) {
|
|
90
|
-
if (!search) {
|
|
91
|
-
mcValues = mcValues.concat(Object.values(node._mc));
|
|
92
|
-
}
|
|
93
|
-
else if (search && node._mc[search]) {
|
|
94
|
-
mcValues.push(node._mc[search]);
|
|
95
|
-
}
|
|
96
|
-
if (firstonly)
|
|
97
|
-
return mcValues;
|
|
98
|
-
}
|
|
99
|
-
node = node.parentNode;
|
|
100
|
-
}
|
|
101
|
-
return mcValues;
|
|
102
|
-
}
|
|
103
69
|
function isDOM(element) {
|
|
104
70
|
return element && element instanceof HTMLElement;
|
|
105
71
|
}
|
|
106
72
|
function add(target, key, element = {}) {
|
|
107
73
|
let node = target;
|
|
108
74
|
if (!node._mc) {
|
|
109
|
-
let debug = DC?.debug;
|
|
110
|
-
DC.debug = false;
|
|
111
75
|
node._mc = new DC(target);
|
|
112
|
-
DC.debug = debug;
|
|
113
|
-
delete node._mc._mc;
|
|
114
76
|
}
|
|
115
77
|
const _mc = node._mc;
|
|
116
78
|
if (key.length && !_mc[key]) {
|
|
@@ -119,7 +81,7 @@ function add(target, key, element = {}) {
|
|
|
119
81
|
target.setAttribute('data-mc', '');
|
|
120
82
|
}
|
|
121
83
|
}
|
|
122
|
-
return
|
|
84
|
+
return node;
|
|
123
85
|
}
|
|
124
86
|
function remove(target, key) {
|
|
125
87
|
if (!key)
|
|
@@ -136,9 +98,9 @@ function remove(target, key) {
|
|
|
136
98
|
return;
|
|
137
99
|
}
|
|
138
100
|
function init(element) {
|
|
139
|
-
if (element.constructor === DC)
|
|
140
|
-
return;
|
|
141
101
|
setTimeout(() => {
|
|
102
|
+
if (element.constructor === DC)
|
|
103
|
+
return;
|
|
142
104
|
element.trigger('Init');
|
|
143
105
|
}, 0);
|
|
144
106
|
}
|
|
@@ -179,7 +141,7 @@ function bubbleEvent(domNode, ev) {
|
|
|
179
141
|
.map((c) => c?.target));
|
|
180
142
|
targets.forEach((target) => {
|
|
181
143
|
if (target)
|
|
182
|
-
|
|
144
|
+
target._mc.trigger(target, ev);
|
|
183
145
|
});
|
|
184
146
|
}
|
|
185
147
|
}, 0);
|
|
@@ -211,13 +173,15 @@ function getMcChildNodes(domNode) {
|
|
|
211
173
|
const id = Math.random().toString().replace('.', '');
|
|
212
174
|
const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
|
|
213
175
|
domNode.setAttribute('temp_id', id);
|
|
214
|
-
const
|
|
176
|
+
const mcArray = [...domNode.querySelectorAll(selector)]
|
|
177
|
+
.filter((e) => !!e._mc)
|
|
178
|
+
.map(e => e._mc);
|
|
215
179
|
domNode.removeAttribute('temp_id');
|
|
216
|
-
return
|
|
180
|
+
return mcArray.length ? mcArray : null;
|
|
217
181
|
}
|
|
218
182
|
class McBase {
|
|
219
183
|
_target;
|
|
220
|
-
constructor(target
|
|
184
|
+
constructor(target) {
|
|
221
185
|
let element = this;
|
|
222
186
|
this._target = new WeakRef(target || {});
|
|
223
187
|
init(element);
|
|
@@ -231,9 +195,6 @@ class MC extends McBase {
|
|
|
231
195
|
constructor(target) {
|
|
232
196
|
super(target);
|
|
233
197
|
}
|
|
234
|
-
static trigger = trigger;
|
|
235
|
-
trigger(ev, data = {}, bubble = 'l') {
|
|
236
|
-
}
|
|
237
198
|
}
|
|
238
199
|
class DC extends McBase {
|
|
239
200
|
constructor(target, debug = false) {
|
|
@@ -241,7 +202,6 @@ class DC extends McBase {
|
|
|
241
202
|
}
|
|
242
203
|
static add = add;
|
|
243
204
|
static remove = remove;
|
|
244
|
-
static trigger = trigger;
|
|
245
205
|
off(eventName, handler) {
|
|
246
206
|
off(this.target, eventName, handler);
|
|
247
207
|
}
|
|
@@ -251,36 +211,40 @@ class DC extends McBase {
|
|
|
251
211
|
one(eventName, handler) {
|
|
252
212
|
one(this.target, eventName, handler);
|
|
253
213
|
}
|
|
254
|
-
trigger(
|
|
255
|
-
|
|
256
|
-
}
|
|
214
|
+
trigger(eventName, data = {}, bubble = 'l') {
|
|
215
|
+
trigger(this.target, eventName, data, bubble);
|
|
257
216
|
}
|
|
258
|
-
parent(
|
|
217
|
+
parent() {
|
|
259
218
|
let target = this.target;
|
|
260
219
|
if (!isDOM(target))
|
|
261
|
-
return
|
|
262
|
-
return
|
|
220
|
+
return null;
|
|
221
|
+
return target.closest('[data-mc]')?._mc || null;
|
|
263
222
|
}
|
|
264
|
-
ancestors(
|
|
265
|
-
let
|
|
266
|
-
if (!isDOM(
|
|
223
|
+
ancestors() {
|
|
224
|
+
let currentNode = this?.target, result = [];
|
|
225
|
+
if (!isDOM(currentNode))
|
|
267
226
|
return [];
|
|
268
|
-
|
|
227
|
+
while (currentNode = (currentNode.closest('[data-mc]'))) {
|
|
228
|
+
if (currentNode?._mc) {
|
|
229
|
+
result.push(currentNode?._mc);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result.length ? result : null;
|
|
269
233
|
}
|
|
270
|
-
children(
|
|
234
|
+
children() {
|
|
271
235
|
let target = this?.target;
|
|
272
236
|
if (!isDOM(target))
|
|
273
|
-
return
|
|
274
|
-
|
|
275
|
-
const mcValues = getMicroComponents([...myDomElements], search);
|
|
276
|
-
return mcValues;
|
|
237
|
+
return null;
|
|
238
|
+
return getMcChildNodes(target);
|
|
277
239
|
}
|
|
278
|
-
descendants(
|
|
279
|
-
|
|
240
|
+
descendants() {
|
|
241
|
+
const target = this?.target;
|
|
280
242
|
if (!isDOM(target))
|
|
281
243
|
return [];
|
|
282
|
-
const
|
|
283
|
-
|
|
244
|
+
const mcArray = [...target.querySelectorAll('[data-mc]')]
|
|
245
|
+
.filter((e) => !!e._mc)
|
|
246
|
+
.map(e => e._mc);
|
|
247
|
+
return mcArray.length ? mcArray : null;
|
|
284
248
|
}
|
|
285
249
|
}
|
|
286
250
|
const loadingDCs = new Set();
|
package/public/MC.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { LooseObject } from './helpers.js';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const isBrowser = new Function(
|
|
6
6
|
'try {return this===window;}catch(e){ return false;}'
|
|
7
7
|
);
|
|
8
8
|
|
|
@@ -21,61 +21,17 @@ export interface HTMLMcElement extends HTMLElement {
|
|
|
21
21
|
_mc: LooseObject;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
// get all microcomponents from a list of HTMLElements
|
|
25
|
-
function getMicroComponents(elements: any[], search: string): any[] {
|
|
26
|
-
let mcValues: any[] = [];
|
|
27
|
-
|
|
28
|
-
elements.forEach((e) => {
|
|
29
|
-
if (e) {
|
|
30
|
-
if (e instanceof HTMLElement) {
|
|
31
|
-
const _mc = (e as any)?._mc;
|
|
32
|
-
if (!search && _mc) {
|
|
33
|
-
mcValues = mcValues.concat(Object.values((e as any)._mc));
|
|
34
|
-
} else if (search && _mc && _mc[search]) {
|
|
35
|
-
mcValues.push(_mc[search]);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
return mcValues;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// get all ancestor DOM nodes up to the document root
|
|
44
|
-
function traverseNodes(
|
|
45
|
-
node: { [key: string]: any },
|
|
46
|
-
search: string,
|
|
47
|
-
firstonly = true
|
|
48
|
-
): any[] {
|
|
49
|
-
let mcValues: any[] = [];
|
|
50
|
-
while (node) {
|
|
51
|
-
if (node._mc) {
|
|
52
|
-
if (!search) {
|
|
53
|
-
mcValues = mcValues.concat(Object.values(node._mc));
|
|
54
|
-
} else if (search && node._mc[search]) {
|
|
55
|
-
mcValues.push(node._mc[search]);
|
|
56
|
-
}
|
|
57
|
-
if (firstonly) return mcValues;
|
|
58
|
-
}
|
|
59
|
-
node = node.parentNode;
|
|
60
|
-
}
|
|
61
|
-
return mcValues;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
24
|
function isDOM(element: { [key: string]: any }) {
|
|
65
25
|
return element && element instanceof HTMLElement;
|
|
66
26
|
}
|
|
67
27
|
|
|
68
28
|
// add a microcomponent to a target DOM node
|
|
69
|
-
function add(target: HTMLElement, key: string, element = {}):
|
|
29
|
+
function add( target: HTMLElement, key: string, element: any = {} ): HTMLMcElement {
|
|
70
30
|
let node = target as HTMLMcElement;
|
|
71
31
|
|
|
72
32
|
// create the _mc property if necessary
|
|
73
33
|
if (!node._mc) {
|
|
74
|
-
let debug = (DC as any)?.debug;
|
|
75
|
-
(DC as any).debug = false;
|
|
76
34
|
node._mc = new (DC as any)(target);
|
|
77
|
-
(DC as any).debug = debug;
|
|
78
|
-
delete node._mc._mc; // NOT NEEDED on the top level _mc property of a DOM HTMLElement
|
|
79
35
|
}
|
|
80
36
|
|
|
81
37
|
const _mc = node._mc;
|
|
@@ -88,7 +44,8 @@ function add(target: HTMLElement, key: string, element = {}): any {
|
|
|
88
44
|
target.setAttribute('data-mc', '');
|
|
89
45
|
}
|
|
90
46
|
}
|
|
91
|
-
|
|
47
|
+
|
|
48
|
+
return node;
|
|
92
49
|
}
|
|
93
50
|
|
|
94
51
|
// remove a micro component from the DOM
|
|
@@ -114,27 +71,14 @@ function remove(target: HTMLMcElement, key: string) {
|
|
|
114
71
|
}
|
|
115
72
|
|
|
116
73
|
// run the "init" lifecycle event on the complete _mc structure
|
|
117
|
-
function init(element:
|
|
118
|
-
if (element.constructor === DC) return;
|
|
119
|
-
|
|
74
|
+
function init(element: DC) {
|
|
120
75
|
setTimeout(() => {
|
|
76
|
+
if (element.constructor === DC) return;
|
|
121
77
|
element.trigger('Init');
|
|
122
|
-
/*
|
|
123
|
-
let keys = Object.keys( ( element as any)?._mc );
|
|
124
|
-
if ( keys.length ){
|
|
125
|
-
//console.log( 'inner Inits on [', mc.constructor.name, ']', keys );
|
|
126
|
-
keys?.forEach( (key: string) => {
|
|
127
|
-
let mc = ( element as any)?._mc?.[key];
|
|
128
|
-
//console.log( key, typeof mc?.oneInit, mc );
|
|
129
|
-
if ( ( mc as any )['oneInit'] && typeof ( mc as any ).oneInit == 'function' ){
|
|
130
|
-
( mc as any ).oneInit( new McEvent('Init') );
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
};
|
|
134
|
-
*/
|
|
135
78
|
}, 0);
|
|
136
79
|
}
|
|
137
80
|
|
|
81
|
+
// 'eventName' => '_mcEventName'
|
|
138
82
|
function getMcEventName( eventName: string ): string {
|
|
139
83
|
return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
|
|
140
84
|
}
|
|
@@ -156,8 +100,8 @@ function one( domNode: Node, eventName: string, handler: EventListenerOrEventLis
|
|
|
156
100
|
|
|
157
101
|
// create and dispatch custom event
|
|
158
102
|
function trigger(
|
|
159
|
-
domNode: HTMLElement,
|
|
160
|
-
event: CustomEvent | string,
|
|
103
|
+
domNode: HTMLElement,
|
|
104
|
+
event: CustomEvent | string,
|
|
161
105
|
data: any = {},
|
|
162
106
|
bubble: string = 'l'
|
|
163
107
|
){
|
|
@@ -199,7 +143,7 @@ function bubbleEvent( domNode: HTMLElement, ev: CustomEvent) {
|
|
|
199
143
|
.map((c: unknown) => (c as any)?.target)
|
|
200
144
|
);
|
|
201
145
|
targets.forEach((target: HTMLMcElement) => {
|
|
202
|
-
if (target)
|
|
146
|
+
if (target) target._mc.trigger(target, ev);
|
|
203
147
|
});
|
|
204
148
|
}
|
|
205
149
|
|
|
@@ -241,24 +185,27 @@ function autoAttachListeners(element: MC | DC) {
|
|
|
241
185
|
}
|
|
242
186
|
}
|
|
243
187
|
|
|
244
|
-
function getMcChildNodes(domNode: HTMLElement):
|
|
188
|
+
function getMcChildNodes(domNode: HTMLElement): DC[] | null {
|
|
245
189
|
const id = Math.random().toString().replace('.', '');
|
|
246
190
|
const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
|
|
247
191
|
domNode.setAttribute('temp_id', id);
|
|
248
|
-
const
|
|
192
|
+
const mcArray: unknown[] =
|
|
193
|
+
( [ ...domNode.querySelectorAll(selector) ] as HTMLMcElement[])
|
|
194
|
+
.filter( (e) => !!e._mc )
|
|
195
|
+
.map( e => e._mc );
|
|
249
196
|
domNode.removeAttribute('temp_id');
|
|
250
|
-
return
|
|
197
|
+
return mcArray.length ? mcArray as DC[] : null;
|
|
251
198
|
}
|
|
252
199
|
|
|
253
200
|
class McBase {
|
|
254
201
|
private _target: WeakRef<any>; // avoid circular reference
|
|
255
202
|
|
|
256
|
-
constructor(target?: { [key: string]: any }
|
|
203
|
+
constructor(target?: { [key: string]: any } ) {
|
|
257
204
|
let element = this as unknown as MC | DC;
|
|
258
205
|
|
|
259
206
|
this._target = new WeakRef(target || {});
|
|
260
207
|
|
|
261
|
-
init(element); // async lifecycle event
|
|
208
|
+
init(element as DC); // async lifecycle event
|
|
262
209
|
|
|
263
210
|
autoAttachListeners(element);
|
|
264
211
|
}
|
|
@@ -273,12 +220,6 @@ class MC extends McBase {
|
|
|
273
220
|
constructor(target?: any) {
|
|
274
221
|
super(target);
|
|
275
222
|
}
|
|
276
|
-
|
|
277
|
-
static trigger = trigger;
|
|
278
|
-
|
|
279
|
-
trigger(ev: string, data: any = {}, bubble: string = 'l') {
|
|
280
|
-
// TBD
|
|
281
|
-
}
|
|
282
223
|
}
|
|
283
224
|
|
|
284
225
|
class DC extends McBase {
|
|
@@ -288,8 +229,8 @@ class DC extends McBase {
|
|
|
288
229
|
|
|
289
230
|
static add: Function = add;
|
|
290
231
|
static remove: Function = remove;
|
|
291
|
-
static trigger: Function = trigger;
|
|
292
232
|
|
|
233
|
+
/* event handling */
|
|
293
234
|
off( eventName: string, handler: EventListenerOrEventListenerObject ) {
|
|
294
235
|
off( this.target, eventName, handler );
|
|
295
236
|
}
|
|
@@ -302,45 +243,57 @@ class DC extends McBase {
|
|
|
302
243
|
one( this.target, eventName, handler );
|
|
303
244
|
}
|
|
304
245
|
|
|
305
|
-
trigger(
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
}
|
|
309
|
-
//trigger( this.target, ev, data, bubble);
|
|
246
|
+
trigger( eventName: string, data: any = {}, bubble: string = 'l') {
|
|
247
|
+
trigger( this.target, eventName, data, bubble);
|
|
310
248
|
}
|
|
311
249
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
250
|
+
/* DOM traversal */
|
|
251
|
+
parent(): DC | null {
|
|
252
|
+
let
|
|
253
|
+
target: HTMLElement = (this as DC).target;
|
|
254
|
+
if (!isDOM(target)) return null;
|
|
255
|
+
return (target.closest('[data-mc]') as HTMLMcElement)?._mc as DC || null;
|
|
316
256
|
}
|
|
317
257
|
|
|
318
|
-
ancestors(
|
|
319
|
-
let
|
|
320
|
-
|
|
321
|
-
|
|
258
|
+
ancestors(): DC[] | null {
|
|
259
|
+
let
|
|
260
|
+
currentNode: HTMLElement | null = (this as DC)?.target as HTMLMcElement,
|
|
261
|
+
result: DC[] = [];
|
|
262
|
+
|
|
263
|
+
if (!isDOM( currentNode )) return [];
|
|
264
|
+
|
|
265
|
+
while ( currentNode = (currentNode.closest('[data-mc]') ) ){
|
|
266
|
+
if ( (currentNode as HTMLMcElement)?._mc ){
|
|
267
|
+
result.push( (currentNode as HTMLMcElement)?._mc as DC );
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return result.length ? result : null;
|
|
322
272
|
}
|
|
323
273
|
|
|
324
|
-
children(
|
|
274
|
+
children(): DC[] | null {
|
|
325
275
|
let target: any = (this as any)?.target;
|
|
326
|
-
if (!isDOM(target)) return
|
|
327
|
-
|
|
328
|
-
const mcValues = getMicroComponents([...myDomElements], search);
|
|
329
|
-
return mcValues;
|
|
276
|
+
if (!isDOM(target)) return null;
|
|
277
|
+
return getMcChildNodes(target);
|
|
330
278
|
}
|
|
331
279
|
|
|
332
|
-
descendants(
|
|
333
|
-
|
|
280
|
+
descendants(): DC[] | null {
|
|
281
|
+
const target: any = (this as DC)?.target;
|
|
334
282
|
if (!isDOM(target)) return [];
|
|
335
|
-
const
|
|
336
|
-
|
|
283
|
+
const mcArray: unknown[] =
|
|
284
|
+
( [ ...target.querySelectorAll( '[data-mc]' ) ] as HTMLMcElement[])
|
|
285
|
+
.filter( (e) => !!e._mc )
|
|
286
|
+
.map( e => e._mc );
|
|
287
|
+
return mcArray.length ? mcArray as DC[] : null;
|
|
337
288
|
}
|
|
338
289
|
}
|
|
339
290
|
|
|
291
|
+
/*
|
|
292
|
+
Autoload Section...
|
|
293
|
+
*/
|
|
294
|
+
|
|
340
295
|
const loadingDCs = new Set<string>();
|
|
341
296
|
|
|
342
|
-
// this only applies to DCs defined in the data-mc attribute,
|
|
343
|
-
// since they need to be attached manually
|
|
344
297
|
function attachDC(element: string): Function {
|
|
345
298
|
|
|
346
299
|
//@ts-ignore
|