@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
package/dist/MC.d.ts
CHANGED
|
@@ -7,20 +7,20 @@ declare function addListener(domNode: Node, eventName: string, handler: EventLis
|
|
|
7
7
|
declare function removeListener(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject | null): void;
|
|
8
8
|
declare function trigger(target: HTMLElement, ev: McEvent | string, data?: any, bubble?: string): void;
|
|
9
9
|
declare class McBase {
|
|
10
|
-
|
|
10
|
+
private _target;
|
|
11
|
+
private __mc;
|
|
11
12
|
constructor(target?: {
|
|
12
13
|
[key: string]: any;
|
|
13
14
|
}, debug?: boolean);
|
|
14
15
|
get target(): any;
|
|
16
|
+
get _mc(): any;
|
|
15
17
|
}
|
|
16
18
|
declare class MC extends McBase {
|
|
17
|
-
_mc?: LooseObject;
|
|
18
19
|
constructor(target?: any);
|
|
19
20
|
static trigger: typeof trigger;
|
|
20
21
|
trigger(ev: McEvent | string, data?: any, bubble?: string): this | undefined;
|
|
21
22
|
}
|
|
22
23
|
declare class DC extends McBase {
|
|
23
|
-
_mc?: LooseObject;
|
|
24
24
|
constructor(target: HTMLElement, debug?: boolean);
|
|
25
25
|
static add: Function;
|
|
26
26
|
static remove: Function;
|
package/dist/MC.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MC.d.ts","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAevC,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD,GAAG,EAAE,WAAW,CAAC;CACjB;AA8CD,iBAAS,WAAW,CACnB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,EAClD,OAAO,GAAE,OAAe,EACxB,IAAI,GAAE,OAAe,QAarB;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,QAGlD;AAmDD,iBAAS,OAAO,CACf,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,IAAI,GAAE,GAAQ,EACd,MAAM,GAAE,MAAY,QAwBpB;AAiGD,cAAM,MAAM
|
|
1
|
+
{"version":3,"file":"MC.d.ts","sourceRoot":"","sources":["../src/MC.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAevC,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD,GAAG,EAAE,WAAW,CAAC;CACjB;AA8CD,iBAAS,WAAW,CACnB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,EAClD,OAAO,GAAE,OAAe,EACxB,IAAI,GAAE,OAAe,QAarB;AAED,iBAAS,cAAc,CACtB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,GAAG,IAAI,QAGlD;AAmDD,iBAAS,OAAO,CACf,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,OAAO,GAAG,MAAM,EACpB,IAAI,GAAE,GAAQ,EACd,MAAM,GAAE,MAAY,QAwBpB;AAiGD,cAAM,MAAM;IACX,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,IAAI,CAAmB;gBAEnB,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,KAAK,GAAE,OAAe;IAWnE,IAAI,MAAM,IAAI,GAAG,CAEhB;IAED,IAAI,GAAG,IAAI,GAAG,CAEb;CACD;AAED,cAAM,EAAG,SAAQ,MAAM;gBACV,MAAM,CAAC,EAAE,GAAG;IAIxB,MAAM,CAAC,OAAO,iBAAW;IAEzB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,GAAE,MAAY;CAmElE;AAED,cAAM,EAAG,SAAQ,MAAM;gBACV,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,OAAe;IAIvD,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAO;IAC3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAU;IACjC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAW;IAEnC,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,EAAE,IAAI,GAAE,GAAQ,EAAE,MAAM,CAAC,EAAE,MAAM;IAI7D,MAAM,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMlC,SAAS,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAMrC,QAAQ,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;IAYpC,WAAW,CAAC,MAAM,GAAE,MAAW,GAAG,GAAG,EAAE;CAMvC;AAgGD,iBAAS,QAAQ,CAAC,MAAM,GAAE,OAAc,GAAG,OAAO,CAmBjD;AAID,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/MC.js
CHANGED
|
@@ -166,19 +166,22 @@ function bubbleEvent(target, ev) {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
class McBase {
|
|
169
|
-
|
|
169
|
+
_target;
|
|
170
|
+
__mc = {};
|
|
170
171
|
constructor(target, debug = false) {
|
|
171
172
|
let that = this, element = that;
|
|
172
|
-
this
|
|
173
|
+
this._target = new WeakRef(target || {});
|
|
173
174
|
init(element);
|
|
174
175
|
autoAttachListeners(element);
|
|
175
176
|
}
|
|
176
177
|
get target() {
|
|
177
|
-
return this
|
|
178
|
+
return this._target.deref();
|
|
179
|
+
}
|
|
180
|
+
get _mc() {
|
|
181
|
+
return this.__mc;
|
|
178
182
|
}
|
|
179
183
|
}
|
|
180
184
|
class MC extends McBase {
|
|
181
|
-
_mc = {};
|
|
182
185
|
constructor(target) {
|
|
183
186
|
super(target);
|
|
184
187
|
}
|
|
@@ -225,7 +228,6 @@ class MC extends McBase {
|
|
|
225
228
|
}
|
|
226
229
|
}
|
|
227
230
|
class DC extends McBase {
|
|
228
|
-
_mc = {};
|
|
229
231
|
constructor(target, debug = false) {
|
|
230
232
|
super(target);
|
|
231
233
|
}
|
|
@@ -267,93 +269,60 @@ class DC extends McBase {
|
|
|
267
269
|
return getMicroComponents([...myDomElements], search);
|
|
268
270
|
}
|
|
269
271
|
}
|
|
270
|
-
const
|
|
271
|
-
const MCs = new Map();
|
|
272
|
+
const loadingMCs = new Set();
|
|
272
273
|
function makeLoadScript(element) {
|
|
274
|
+
if (loadingMCs.has(element))
|
|
275
|
+
return;
|
|
276
|
+
loadingMCs.add(element);
|
|
273
277
|
const fileName = './' + element.split('-').join('/') + '.js';
|
|
274
278
|
const se = document.createElement('script');
|
|
275
279
|
se.setAttribute('src', fileName);
|
|
276
280
|
se.setAttribute('blocking', 'render');
|
|
277
281
|
se.async = true;
|
|
278
282
|
se.setAttribute('type', 'module');
|
|
279
|
-
se.setAttribute('name', element);
|
|
283
|
+
se.setAttribute('data-name', element);
|
|
280
284
|
se.setAttribute('loading', '');
|
|
285
|
+
const loadedPromise = customElements.whenDefined(element);
|
|
286
|
+
loadedPromise.then(() => {
|
|
287
|
+
const elements = Array
|
|
288
|
+
.from(document.querySelectorAll(`[_mc*="${element}"]`))
|
|
289
|
+
.filter(element => element instanceof HTMLElement);
|
|
290
|
+
if (elements.length === 0)
|
|
291
|
+
return;
|
|
292
|
+
const klass = customElements.get(element);
|
|
293
|
+
elements.forEach((node) => {
|
|
294
|
+
DC.add(node, klass.name, new klass(node));
|
|
295
|
+
const new_mc = node
|
|
296
|
+
.getAttribute('_mc')
|
|
297
|
+
.split(' ')
|
|
298
|
+
.filter((name) => name !== element && name !== '')
|
|
299
|
+
.join(' ');
|
|
300
|
+
node.setAttribute('_mc', new_mc);
|
|
301
|
+
});
|
|
302
|
+
document.head.querySelector('script[data-name="${elementName}]"')?.remove();
|
|
303
|
+
});
|
|
281
304
|
addListener(se, 'load', (ev) => {
|
|
282
|
-
|
|
283
|
-
se.setAttribute('loaded', '');
|
|
305
|
+
loadingMCs.delete(element);
|
|
284
306
|
});
|
|
285
307
|
addListener(se, 'error', (ev) => {
|
|
286
|
-
console.error('could not load
|
|
308
|
+
console.error('could not load MC code from', fileName);
|
|
287
309
|
});
|
|
288
|
-
|
|
310
|
+
document.head.append(se);
|
|
289
311
|
}
|
|
290
|
-
function
|
|
291
|
-
setTimeout(function () {
|
|
292
|
-
const importFileName = script.getAttribute('src');
|
|
293
|
-
const elementName = script.getAttribute('name');
|
|
294
|
-
const se = document.createElement('script');
|
|
295
|
-
se.async = true;
|
|
296
|
-
se.setAttribute('type', 'module');
|
|
297
|
-
const code = `
|
|
298
|
-
|
|
299
|
-
import _ from "${importFileName}";
|
|
300
|
-
import { DC } from "./microcomponents.js";
|
|
301
|
-
|
|
302
|
-
const elements = Array.from(document.querySelectorAll('[_mc*="${elementName}"]')).filter( element => element instanceof HTMLElement );
|
|
303
|
-
|
|
304
|
-
elements.forEach((element) => {
|
|
305
|
-
// add class to MCs repository
|
|
306
|
-
autoload.state.MCs.set( '${elementName}', _ );
|
|
307
|
-
// add instance to HTMLElement
|
|
308
|
-
DC.add(element, _.name, new _(element));
|
|
309
|
-
// remove instance name from elements "_mc" attribute
|
|
310
|
-
element.setAttribute('_mc', element.getAttribute('_mc').replace('${elementName}', '').replace( /\w\w/g, ' ').trim());
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
setTimeout( () => {
|
|
314
|
-
document.body.querySelector('script[name="${elementName}]"')?.remove();
|
|
315
|
-
},0);
|
|
316
|
-
|
|
317
|
-
`;
|
|
318
|
-
se.innerHTML = code;
|
|
319
|
-
document.body.append(se);
|
|
320
|
-
}, 0);
|
|
321
|
-
}
|
|
322
|
-
function loadUndefinedMicroComponents() {
|
|
312
|
+
function loadUndefinedMCs() {
|
|
323
313
|
[...document.querySelectorAll(':not(:defined)')]
|
|
324
314
|
.filter((element) => !!element
|
|
325
315
|
&& !customElements.get(element.tagName.toLowerCase())
|
|
326
|
-
&& !
|
|
316
|
+
&& !loadingMCs.has(element.tagName.toLowerCase()))
|
|
327
317
|
.forEach((el) => {
|
|
328
|
-
|
|
329
|
-
const se = makeLoadScript(elementName);
|
|
330
|
-
addListener(se, 'load', () => {
|
|
331
|
-
CEs.set(elementName, customElements.get(el.tagName.toLowerCase()));
|
|
332
|
-
});
|
|
333
|
-
CEs.set(elementName, 'loading');
|
|
334
|
-
document.head.append(se);
|
|
318
|
+
makeLoadScript(el.tagName.toLowerCase());
|
|
335
319
|
});
|
|
336
320
|
[...document.querySelectorAll('[_mc]:not([_mc=""]')]
|
|
337
321
|
.filter((element) => !!element)
|
|
338
322
|
.forEach((el) => {
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
const se = makeLoadScript(elementName);
|
|
343
|
-
addListener(se, 'load', () => onLoadCallback(document.head.querySelector(`script[name="${elementName}"]`)));
|
|
344
|
-
MCs.set(elementName, 'loading');
|
|
345
|
-
document.head.append(se);
|
|
346
|
-
});
|
|
347
|
-
const elementsAlreadyLoaded = elements.filter(m => MCs.has(m) && !MCs.get(m).length);
|
|
348
|
-
elementsAlreadyLoaded?.forEach(elementName => {
|
|
349
|
-
setTimeout(() => {
|
|
350
|
-
DC.add(el, elementName, new (autoload.state.MCs.get(elementName))(el));
|
|
351
|
-
const newAttribute = el.getAttribute('_mc')
|
|
352
|
-
.replace('${elementName}', '')
|
|
353
|
-
.replace(/\w\w/g, ' ')
|
|
354
|
-
.trim() || '_mc';
|
|
355
|
-
el.setAttribute('_mc');
|
|
356
|
-
}, 5);
|
|
323
|
+
const _mc = el.getAttribute('_mc')?.split(' ').filter(name => name !== '');
|
|
324
|
+
_mc?.forEach(dc => {
|
|
325
|
+
makeLoadScript(dc);
|
|
357
326
|
});
|
|
358
327
|
});
|
|
359
328
|
}
|
|
@@ -366,14 +335,14 @@ function autoload(enable = true) {
|
|
|
366
335
|
return autoloadEnabled;
|
|
367
336
|
}
|
|
368
337
|
autoloadEnabled = enable;
|
|
369
|
-
observer = new MutationObserver(
|
|
338
|
+
observer = new MutationObserver(loadUndefinedMCs);
|
|
370
339
|
setTimeout(() => {
|
|
371
340
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
372
|
-
|
|
341
|
+
loadUndefinedMCs();
|
|
373
342
|
}, 5);
|
|
374
343
|
window.autoload = window.autoload || autoload;
|
|
375
344
|
return autoloadEnabled;
|
|
376
345
|
}
|
|
377
|
-
autoload.state = {
|
|
346
|
+
autoload.state = { loadingMCs };
|
|
378
347
|
export { addListener, removeListener, McBase, MC, DC, McEvent, autoload };
|
|
379
348
|
//# sourceMappingURL=MC.js.map
|
package/dist/MC.min.js
CHANGED
|
@@ -299,19 +299,22 @@ function bubbleEvent(target, ev) {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
class McBase {
|
|
302
|
-
|
|
302
|
+
_target;
|
|
303
|
+
__mc = {};
|
|
303
304
|
constructor(target, debug = false) {
|
|
304
305
|
let that = this, element = that;
|
|
305
|
-
this
|
|
306
|
+
this._target = new WeakRef(target || {});
|
|
306
307
|
init(element);
|
|
307
308
|
autoAttachListeners(element);
|
|
308
309
|
}
|
|
309
310
|
get target() {
|
|
310
|
-
return this
|
|
311
|
+
return this._target.deref();
|
|
312
|
+
}
|
|
313
|
+
get _mc() {
|
|
314
|
+
return this.__mc;
|
|
311
315
|
}
|
|
312
316
|
}
|
|
313
317
|
class MC extends McBase {
|
|
314
|
-
_mc = {};
|
|
315
318
|
constructor(target) {
|
|
316
319
|
super(target);
|
|
317
320
|
}
|
|
@@ -358,7 +361,6 @@ class MC extends McBase {
|
|
|
358
361
|
}
|
|
359
362
|
}
|
|
360
363
|
class DC extends McBase {
|
|
361
|
-
_mc = {};
|
|
362
364
|
constructor(target, debug = false) {
|
|
363
365
|
super(target);
|
|
364
366
|
}
|
|
@@ -400,93 +402,60 @@ class DC extends McBase {
|
|
|
400
402
|
return MC_getMicroComponents([...myDomElements], search);
|
|
401
403
|
}
|
|
402
404
|
}
|
|
403
|
-
const
|
|
404
|
-
const MCs = new Map();
|
|
405
|
+
const loadingMCs = new Set();
|
|
405
406
|
function makeLoadScript(element) {
|
|
407
|
+
if (loadingMCs.has(element))
|
|
408
|
+
return;
|
|
409
|
+
loadingMCs.add(element);
|
|
406
410
|
const fileName = './' + element.split('-').join('/') + '.js';
|
|
407
411
|
const se = document.createElement('script');
|
|
408
412
|
se.setAttribute('src', fileName);
|
|
409
413
|
se.setAttribute('blocking', 'render');
|
|
410
414
|
se.async = true;
|
|
411
415
|
se.setAttribute('type', 'module');
|
|
412
|
-
se.setAttribute('name', element);
|
|
416
|
+
se.setAttribute('data-name', element);
|
|
413
417
|
se.setAttribute('loading', '');
|
|
418
|
+
const loadedPromise = customElements.whenDefined(element);
|
|
419
|
+
loadedPromise.then(() => {
|
|
420
|
+
const elements = Array
|
|
421
|
+
.from(document.querySelectorAll(`[_mc*="${element}"]`))
|
|
422
|
+
.filter(element => element instanceof HTMLElement);
|
|
423
|
+
if (elements.length === 0)
|
|
424
|
+
return;
|
|
425
|
+
const klass = customElements.get(element);
|
|
426
|
+
elements.forEach((node) => {
|
|
427
|
+
DC.add(node, klass.name, new klass(node));
|
|
428
|
+
const new_mc = node
|
|
429
|
+
.getAttribute('_mc')
|
|
430
|
+
.split(' ')
|
|
431
|
+
.filter((name) => name !== element && name !== '')
|
|
432
|
+
.join(' ');
|
|
433
|
+
node.setAttribute('_mc', new_mc);
|
|
434
|
+
});
|
|
435
|
+
document.head.querySelector('script[data-name="${elementName}]"')?.remove();
|
|
436
|
+
});
|
|
414
437
|
addListener(se, 'load', (ev) => {
|
|
415
|
-
|
|
416
|
-
se.setAttribute('loaded', '');
|
|
438
|
+
loadingMCs.delete(element);
|
|
417
439
|
});
|
|
418
440
|
addListener(se, 'error', (ev) => {
|
|
419
|
-
console.error('could not load
|
|
441
|
+
console.error('could not load MC code from', fileName);
|
|
420
442
|
});
|
|
421
|
-
|
|
422
|
-
}
|
|
423
|
-
function onLoadCallback(script) {
|
|
424
|
-
setTimeout(function () {
|
|
425
|
-
const importFileName = script.getAttribute('src');
|
|
426
|
-
const elementName = script.getAttribute('name');
|
|
427
|
-
const se = document.createElement('script');
|
|
428
|
-
se.async = true;
|
|
429
|
-
se.setAttribute('type', 'module');
|
|
430
|
-
const code = `
|
|
431
|
-
|
|
432
|
-
import _ from "${importFileName}";
|
|
433
|
-
import { DC } from "./microcomponents.js";
|
|
434
|
-
|
|
435
|
-
const elements = Array.from(document.querySelectorAll('[_mc*="${elementName}"]')).filter( element => element instanceof HTMLElement );
|
|
436
|
-
|
|
437
|
-
elements.forEach((element) => {
|
|
438
|
-
// add class to MCs repository
|
|
439
|
-
autoload.state.MCs.set( '${elementName}', _ );
|
|
440
|
-
// add instance to HTMLElement
|
|
441
|
-
DC.add(element, _.name, new _(element));
|
|
442
|
-
// remove instance name from elements "_mc" attribute
|
|
443
|
-
element.setAttribute('_mc', element.getAttribute('_mc').replace('${elementName}', '').replace( /\w\w/g, ' ').trim());
|
|
444
|
-
});
|
|
445
|
-
|
|
446
|
-
setTimeout( () => {
|
|
447
|
-
document.body.querySelector('script[name="${elementName}]"')?.remove();
|
|
448
|
-
},0);
|
|
449
|
-
|
|
450
|
-
`;
|
|
451
|
-
se.innerHTML = code;
|
|
452
|
-
document.body.append(se);
|
|
453
|
-
}, 0);
|
|
443
|
+
document.head.append(se);
|
|
454
444
|
}
|
|
455
|
-
function
|
|
445
|
+
function loadUndefinedMCs() {
|
|
456
446
|
[...document.querySelectorAll(':not(:defined)')]
|
|
457
447
|
.filter((element) => !!element
|
|
458
448
|
&& !customElements.get(element.tagName.toLowerCase())
|
|
459
|
-
&& !
|
|
449
|
+
&& !loadingMCs.has(element.tagName.toLowerCase()))
|
|
460
450
|
.forEach((el) => {
|
|
461
|
-
|
|
462
|
-
const se = makeLoadScript(elementName);
|
|
463
|
-
addListener(se, 'load', () => {
|
|
464
|
-
CEs.set(elementName, customElements.get(el.tagName.toLowerCase()));
|
|
465
|
-
});
|
|
466
|
-
CEs.set(elementName, 'loading');
|
|
467
|
-
document.head.append(se);
|
|
451
|
+
makeLoadScript(el.tagName.toLowerCase());
|
|
468
452
|
});
|
|
469
453
|
[...document.querySelectorAll('[_mc]:not([_mc=""]')]
|
|
470
454
|
.filter((element) => !!element)
|
|
471
455
|
.forEach((el) => {
|
|
472
|
-
const
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
const se = makeLoadScript(elementName);
|
|
476
|
-
addListener(se, 'load', () => onLoadCallback(document.head.querySelector(`script[name="${elementName}"]`)));
|
|
477
|
-
MCs.set(elementName, 'loading');
|
|
478
|
-
document.head.append(se);
|
|
479
|
-
});
|
|
480
|
-
const elementsAlreadyLoaded = elements.filter(m => MCs.has(m) && !MCs.get(m).length);
|
|
481
|
-
elementsAlreadyLoaded?.forEach(elementName => {
|
|
482
|
-
setTimeout(() => {
|
|
483
|
-
DC.add(el, elementName, new (autoload.state.MCs.get(elementName))(el));
|
|
484
|
-
const newAttribute = el.getAttribute('_mc')
|
|
485
|
-
.replace('${elementName}', '')
|
|
486
|
-
.replace(/\w\w/g, ' ')
|
|
487
|
-
.trim() || '_mc';
|
|
488
|
-
el.setAttribute('_mc');
|
|
489
|
-
}, 5);
|
|
456
|
+
const _mc = el.getAttribute('_mc')?.split(' ').filter(name => name !== '');
|
|
457
|
+
_mc?.forEach(dc => {
|
|
458
|
+
makeLoadScript(dc);
|
|
490
459
|
});
|
|
491
460
|
});
|
|
492
461
|
}
|
|
@@ -499,15 +468,15 @@ function autoload(enable = true) {
|
|
|
499
468
|
return autoloadEnabled;
|
|
500
469
|
}
|
|
501
470
|
autoloadEnabled = enable;
|
|
502
|
-
observer = new MutationObserver(
|
|
471
|
+
observer = new MutationObserver(loadUndefinedMCs);
|
|
503
472
|
setTimeout(() => {
|
|
504
473
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
505
|
-
|
|
474
|
+
loadUndefinedMCs();
|
|
506
475
|
}, 5);
|
|
507
476
|
window.autoload = window.autoload || autoload;
|
|
508
477
|
return autoloadEnabled;
|
|
509
478
|
}
|
|
510
|
-
autoload.state = {
|
|
479
|
+
autoload.state = { loadingMCs };
|
|
511
480
|
|
|
512
481
|
|
|
513
482
|
/******/ return __webpack_exports__;
|