@twobirds/microcomponents 0.1.20 → 0.1.23

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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -102
  3. package/dist/MC.min.js +1 -342
  4. package/dist/autoload.min.js +1 -0
  5. package/dist/core/MC.d.ts +401 -0
  6. package/dist/core/MC.d.ts.map +1 -0
  7. package/dist/core/MC.js +471 -0
  8. package/dist/core/autoload.d.ts +54 -0
  9. package/dist/core/autoload.d.ts.map +1 -0
  10. package/dist/core/autoload.js +158 -0
  11. package/dist/core/elements.d.ts +232 -0
  12. package/dist/core/elements.d.ts.map +1 -0
  13. package/dist/core/elements.js +123 -0
  14. package/dist/core/events.d.ts +231 -0
  15. package/dist/core/events.d.ts.map +1 -0
  16. package/dist/core/events.js +228 -0
  17. package/dist/core/mcGuards.d.ts +49 -0
  18. package/dist/core/mcGuards.d.ts.map +1 -0
  19. package/dist/core/mcGuards.js +19 -0
  20. package/dist/elements.min.js +1 -1
  21. package/dist/events.min.js +1 -0
  22. package/dist/formValues.min.js +1 -1
  23. package/dist/mcGuards.min.js +1 -0
  24. package/dist/microcomponents.d.ts +8 -5
  25. package/dist/microcomponents.d.ts.map +1 -1
  26. package/dist/microcomponents.js +8 -5
  27. package/dist/microcomponents.min.js +1 -1
  28. package/dist/observables.min.js +1 -1
  29. package/dist/state/formValues.d.ts +70 -0
  30. package/dist/state/formValues.d.ts.map +1 -0
  31. package/dist/state/formValues.js +334 -0
  32. package/dist/state/observables.d.ts +276 -0
  33. package/dist/state/observables.d.ts.map +1 -0
  34. package/dist/state/observables.js +382 -0
  35. package/dist/state/placeholders.d.ts +62 -0
  36. package/dist/state/placeholders.d.ts.map +1 -0
  37. package/dist/state/placeholders.js +181 -0
  38. package/dist/types/mcTypes.d.ts +201 -0
  39. package/dist/types/mcTypes.d.ts.map +1 -0
  40. package/dist/types/mcTypes.js +9 -0
  41. package/dist/utils/helpers.d.ts +195 -0
  42. package/dist/utils/helpers.d.ts.map +1 -0
  43. package/dist/utils/helpers.js +340 -0
  44. package/package.json +95 -61
  45. package/dist/MC.d.ts +0 -39
  46. package/dist/MC.d.ts.map +0 -1
  47. package/dist/MC.js +0 -299
  48. package/dist/MC.ts +0 -457
  49. package/dist/MicroComponents.svg +0 -15
  50. package/dist/elements.d.ts +0 -5
  51. package/dist/elements.d.ts.map +0 -1
  52. package/dist/elements.js +0 -50
  53. package/dist/elements.ts +0 -94
  54. package/dist/formValues.d.ts +0 -3
  55. package/dist/formValues.d.ts.map +0 -1
  56. package/dist/formValues.js +0 -158
  57. package/dist/formValues.ts +0 -213
  58. package/dist/helpers.d.ts +0 -14
  59. package/dist/helpers.d.ts.map +0 -1
  60. package/dist/helpers.js +0 -111
  61. package/dist/helpers.ts +0 -138
  62. package/dist/microcomponents.ts +0 -6
  63. package/dist/observables.d.ts +0 -11
  64. package/dist/observables.d.ts.map +0 -1
  65. package/dist/observables.js +0 -228
  66. package/dist/observables.ts +0 -338
package/dist/MC.ts DELETED
@@ -1,457 +0,0 @@
1
- 'use strict';
2
-
3
- import { LooseObject } from './helpers.js';
4
-
5
- const isBrowser = new Function('try {return this===window;}catch(e){ return false;}');
6
-
7
- export interface HTMLMcElement extends HTMLElement {
8
- _mc: LooseObject;
9
- }
10
-
11
- function isDOM(element: { [key: string]: any }) {
12
- return element && element instanceof HTMLElement;
13
- }
14
-
15
- // add a microcomponent to a target DOM node
16
- function add(target: HTMLElement, key: string, element: any = {}): HTMLMcElement {
17
- let node = target as HTMLMcElement;
18
-
19
- // create the _mc property if necessary
20
- if (!node._mc) {
21
- node._mc = new (DC as any)(target);
22
- }
23
-
24
- const _mc = node._mc;
25
-
26
- // add the element with the given property key to the _mc property
27
- if (key.length && !_mc[key]) {
28
- _mc[key] = element;
29
- // add attribute if HTMLElement
30
- if (target instanceof HTMLElement && !target.getAttribute('data-mc')) {
31
- target.setAttribute('data-mc', '');
32
- }
33
- }
34
-
35
- //console.warn('add() args: target, key, element', arguments, node);
36
-
37
- return node;
38
- }
39
-
40
- // remove a micro component from the DOM
41
- function remove(target: HTMLElement, key: string) {
42
- if (!key) return; // silent fail
43
-
44
- const _mc = (target as unknown as HTMLMcElement)?._mc || {};
45
-
46
- // delete the property from the HTMLElement _mc collection
47
- if (_mc && _mc[key]) {
48
- delete _mc[key];
49
- }
50
-
51
- // remove the _mc attribute if the DOM collection is empty
52
- if (!Object.keys(_mc).length && target instanceof HTMLElement && target.hasAttribute('data-mc')) {
53
- target.removeAttribute('data-mc');
54
- }
55
- return;
56
- }
57
-
58
- // run the "init" lifecycle event on the complete _mc structure
59
- function init(element: DC) {
60
- //console.warn('init(): args', ...arguments);
61
- setTimeout(() => {
62
- if (element.constructor === DC) return;
63
- element.trigger('Init');
64
- }, 0);
65
- }
66
-
67
- // 'eventName' => '_mcEventName'
68
- function getMcEventName(eventName: string): string {
69
- return '_mc' + eventName[0].toUpperCase() + eventName.substring(1);
70
- }
71
-
72
- /*
73
- CustomEvent Section...
74
- */
75
- function off(domNode: Node, eventName: string, handler: EventListenerOrEventListenerObject) {
76
- domNode.removeEventListener(getMcEventName(eventName), handler);
77
- }
78
-
79
- function on(
80
- domNode: Node,
81
- eventName: string,
82
- handler: EventListenerOrEventListenerObject,
83
- once: boolean = false
84
- ): EventListenerOrEventListenerObject {
85
- domNode.addEventListener(getMcEventName(eventName), handler, { capture: false, once });
86
- return handler;
87
- }
88
-
89
- function one(
90
- domNode: Node,
91
- eventName: string,
92
- handler: EventListenerOrEventListenerObject
93
- ): EventListenerOrEventListenerObject {
94
- on(domNode, eventName, handler, true);
95
- return handler;
96
- }
97
-
98
- class BubbleController {
99
- stopped = false;
100
- constructor() {}
101
- stop() {
102
- this.stopped = true;
103
- }
104
- }
105
-
106
- // create and dispatch custom event
107
- function trigger(
108
- domNode: HTMLElement,
109
- event: string,
110
- data: any = {},
111
- bubble: string = 'l', // direction of bubbling
112
- controller?: BubbleController
113
- ) {
114
- //console.warn('trigger args', ...arguments);
115
-
116
- const eventName = /^_mc/.test(event) ? event : getMcEventName(event),
117
- bubbleController = controller ? controller : new BubbleController(),
118
- ev = new CustomEvent(eventName, {
119
- detail: { data, control: bubbleController },
120
- bubbles: false,
121
- });
122
-
123
- if (bubbleController.stopped) return;
124
-
125
- if (/l/.test(bubble)) {
126
- domNode.dispatchEvent(ev);
127
- ev.stopImmediatePropagation();
128
-
129
- if (bubbleController.stopped) return;
130
- }
131
-
132
- // bubble if up or down is indicated
133
- if (/[ud]/.test(bubble)) {
134
- // add missing 'l', or else no handlers are executed
135
- if (bubble.indexOf('l') === -1) {
136
- bubble += 'l';
137
- }
138
-
139
- setTimeout(() => {
140
- // bubble up towards document.body
141
- if (bubble.indexOf('u') > -1) {
142
- let parentMc: HTMLMcElement | null | undefined =
143
- domNode.parentElement?.closest('[data-mc]');
144
- if (parentMc) {
145
- parentMc?._mc.trigger(eventName, data, bubble, bubbleController);
146
- }
147
- }
148
-
149
- // bubble down towards DOM children
150
- if (bubble.indexOf('d') > -1) {
151
- let childNodes: DC[] | null = (domNode as HTMLMcElement)._mc.children();
152
- if (childNodes) {
153
- childNodes.forEach((_mc: DC) => _mc.trigger(eventName, data, bubble)); // event multiplex - dont carry bubble controller
154
- }
155
- }
156
- }, 0);
157
- }
158
- }
159
-
160
- function autoAttachListeners(element: MC | DC) {
161
- if (!isBrowser() || element.constructor === DC) return;
162
-
163
- const target = element.target;
164
-
165
- if (target instanceof HTMLElement) {
166
- let that: LooseObject = element;
167
- Object.getOwnPropertyNames(that.constructor.prototype)
168
- .filter(
169
- (key) =>
170
- /^(on[A-Z]|one[A-Z])/.test(key) && typeof that.constructor.prototype[key] === 'function'
171
- )
172
- .forEach((key) => {
173
- let once = /^one/.test(key),
174
- withoutOnOne = key.replace(/^on[e]{0,1}/, ''), // preserves upper/lowercase for non-native events
175
- nativeEventName = withoutOnOne.toLowerCase(); // lowercase for native event names
176
-
177
- if ('on' + nativeEventName in target) {
178
- // it is a native HTML event
179
- let listener = (ev: Event) => {
180
- that[key](ev);
181
- };
182
- // console.log( 'AAL: attach native event listener', nativeEventName, 'to', target );
183
- target.addEventListener(nativeEventName, listener);
184
- } else {
185
- // it is a customEvent
186
- // console.log( 'AAL: attach custom event listener', '_mc' + withoutOnOne , 'to key', key, 'in', element );
187
- let listener = (ev: CustomEvent) => {
188
- that[key](ev);
189
- };
190
- on(target, withoutOnOne, listener as EventListenerOrEventListenerObject, once);
191
- }
192
- });
193
- }
194
- }
195
-
196
- function getMcChildNodes(domNode: HTMLElement): DC[] | null {
197
- const id = Math.random().toString().replace('.', '');
198
- const selector = '[data-mc]:not([temp_id="' + id + '"] [data-mc] [data-mc])';
199
- domNode.setAttribute('temp_id', id);
200
- const mcArray: unknown[] = ([...domNode.querySelectorAll(selector)] as HTMLMcElement[])
201
- .filter((e) => !!e._mc)
202
- .map((e) => e._mc);
203
- domNode.removeAttribute('temp_id');
204
- return mcArray.length ? (mcArray as DC[]) : null;
205
- }
206
-
207
- class McBase {
208
- private _target: WeakRef<any>; // avoid circular reference
209
-
210
- constructor(target?: { [key: string]: any }) {
211
- let element = this as unknown as MC | DC;
212
-
213
- this._target = new WeakRef(target || {});
214
-
215
- //console.warn('McBase: this, element, args', target, this, element, arguments);
216
-
217
- autoAttachListeners(element);
218
-
219
- init(element as DC); // async lifecycle event
220
- }
221
-
222
- get target(): any {
223
- return this._target.deref();
224
- }
225
- }
226
-
227
- class MC extends McBase {
228
- constructor(target?: any) {
229
- super(target);
230
- }
231
- }
232
-
233
- class DC extends McBase {
234
- constructor(target: HTMLElement) {
235
- super(target);
236
- //console.warn('DC constructor:', arguments);
237
- }
238
-
239
- static add(target: HTMLElement, key: string, element: any = {}): HTMLMcElement {
240
- //console.warn('static DC.add() args', arguments);
241
- return add(target, key, element);
242
- }
243
-
244
- static remove(target: HTMLElement, key: string) {
245
- remove(target, key);
246
- }
247
-
248
- /* event handling */
249
- off(eventName: string, handler: EventListenerOrEventListenerObject) {
250
- off(this.target, eventName, handler);
251
- }
252
-
253
- on(
254
- eventName: string,
255
- handler: EventListenerOrEventListenerObject
256
- ): EventListenerOrEventListenerObject {
257
- return on(this.target, eventName, handler);
258
- }
259
-
260
- one(
261
- eventName: string,
262
- handler: EventListenerOrEventListenerObject
263
- ): EventListenerOrEventListenerObject {
264
- return one(this.target, eventName, handler);
265
- }
266
-
267
- trigger(eventName: string, data: any = {}, bubble: string = 'l', controller?: BubbleController) {
268
- //console.warn('MC.trigger args', ...arguments, this);
269
-
270
- trigger(this.target, eventName, data, bubble, controller);
271
- }
272
-
273
- /* DOM traversal */
274
- ancestors(): DC[] | null {
275
- let currentNode: HTMLElement | null = (this as DC)?.target as HTMLMcElement,
276
- result: DC[] = [];
277
-
278
- if (!isDOM(currentNode)) return [];
279
-
280
- while ((currentNode = currentNode.closest('[data-mc]'))) {
281
- if ((currentNode as HTMLMcElement)?._mc) {
282
- result.push((currentNode as HTMLMcElement)?._mc as DC);
283
- }
284
- }
285
-
286
- return result.length ? result : null;
287
- }
288
-
289
- closest(): DC | null {
290
- let target: HTMLElement = (this as DC).target;
291
- if (!isDOM(target)) return null;
292
- return ((target.closest('[data-mc]') as HTMLMcElement)?._mc as DC) || null;
293
- }
294
-
295
- children(): DC[] | null {
296
- let target: any = (this as any)?.target;
297
- if (!isDOM(target)) return null;
298
- return getMcChildNodes(target);
299
- }
300
-
301
- descendants(): DC[] | null {
302
- const target: any = (this as DC)?.target;
303
- if (!isDOM(target)) return [];
304
- const mcArray: unknown[] = ([...target.querySelectorAll('[data-mc]')] as HTMLMcElement[])
305
- .filter((e) => !!e._mc)
306
- .map((e) => e._mc);
307
- return mcArray.length ? (mcArray as DC[]) : null;
308
- }
309
- }
310
-
311
- /*
312
- Autoload Section...
313
- */
314
-
315
- const loadingDCs = new Set<string>();
316
-
317
- function attachDC(element: string): Function {
318
- //@ts-ignore
319
- return () => {
320
- const elements: HTMLElement[] = Array.from(
321
- document.querySelectorAll(`[data-mc*="${element}"]`)
322
- ).filter((element) => element instanceof HTMLElement) as HTMLElement[];
323
-
324
- if (elements.length === 0) return;
325
-
326
- //console.log( 'loadedPromise elements', elements );
327
-
328
- const Klass = customElements.get(element);
329
-
330
- elements.forEach((node: HTMLElement) => {
331
- try {
332
- //console.log( 'add', klass!.name, 'to', node );
333
- DC.add(node, Klass!.name, new Klass!(node));
334
- } catch (error) {
335
- if ((Klass as LooseObject)['create']) {
336
- let element: HTMLMcElement = (Klass as LooseObject).create(node);
337
- element.setAttribute('data-mc', node.getAttribute('data-mc')!);
338
- node.replaceWith(element);
339
- node = element;
340
- } else {
341
- throw `Class ${(Klass as LooseObject).name} doesn't have a callable constructor AND class doesn't have a static .create() method.`;
342
- }
343
- }
344
-
345
- //@ts-ignore
346
- const new_mc = node
347
- .getAttribute('data-mc')
348
- .split(' ')
349
- .filter((name) => name !== element && name !== '')
350
- .join(' ')
351
- .trim();
352
-
353
- //@ts-ignore
354
- node.setAttribute(
355
- 'data-mc',
356
- //@ts-ignore
357
- new_mc
358
- );
359
- });
360
- };
361
- }
362
-
363
- function makeLoadScript(element: string) {
364
- if (loadingDCs.has(element)) return; // already loading
365
-
366
- loadingDCs.add(element);
367
-
368
- //console.log( 'makeLoadScript:', element);
369
- const fileName: string = './' + element.split('-').join('/') + '.js';
370
-
371
- const se: HTMLScriptElement = document.createElement('script');
372
-
373
- se.setAttribute('src', fileName);
374
- se.setAttribute('blocking', 'render');
375
- se.async = true;
376
- se.setAttribute('type', 'module');
377
- se.setAttribute('data-name', element);
378
- se.setAttribute('loading', '');
379
-
380
- const loadedPromise = customElements.whenDefined(element);
381
-
382
- //@ts-ignore
383
- loadedPromise.then(attachDC(element));
384
-
385
- se.addEventListener('load', (ev: Event) => {
386
- loadingDCs.delete(element);
387
-
388
- document.head.querySelector(`script[data-name="${element}"]`)?.remove();
389
- });
390
-
391
- se.addEventListener('error', (ev: Event) => {
392
- console.error('could not load DC code from', fileName);
393
- });
394
-
395
- document.head.append(se);
396
- }
397
-
398
- function loadUndefinedMCs() {
399
- // load unresolved custom elements
400
- [...document.querySelectorAll(':not(:defined)')]
401
- .filter(
402
- (element) =>
403
- !!element &&
404
- !customElements.get(element.tagName.toLowerCase()) && // not in CustomElementsRegistry
405
- !loadingDCs.has(element.tagName.toLowerCase()) // not in loading list
406
- )
407
- .forEach((el) => {
408
- //console.log( 'detected CE', el.tagName.toLowerCase() );
409
- makeLoadScript(el.tagName.toLowerCase()); // will automatically be instanciated
410
- });
411
-
412
- // if defined in _mc attribute: instanciate DCs, load if necessary
413
- [...document.querySelectorAll('[data-mc]:not([data-mc=""]')]
414
- .filter((element) => !!element)
415
- .forEach((el) => {
416
- const _mc = el
417
- .getAttribute('data-mc')
418
- ?.split(' ')
419
- .filter((name) => name !== '');
420
- _mc?.forEach((element) => {
421
- //console.log( 'detected DC', dc );
422
- const isDefined = customElements.get(element);
423
- if (!loadingDCs.has(element) && !isDefined) {
424
- makeLoadScript(element);
425
- } else if (isDefined) {
426
- attachDC(element)();
427
- }
428
- });
429
- });
430
- }
431
-
432
- let autoloadEnabled: boolean = false;
433
- let observer: MutationObserver | null = null;
434
-
435
- function autoload(enable: boolean = true): boolean {
436
- if (!enable) {
437
- observer?.disconnect();
438
- observer = null;
439
- return autoloadEnabled;
440
- }
441
-
442
- autoloadEnabled = enable;
443
- observer = new MutationObserver(loadUndefinedMCs);
444
-
445
- setTimeout(() => {
446
- observer!.observe(document.body, { childList: true, subtree: true });
447
- loadUndefinedMCs();
448
- }, 5);
449
-
450
- (window as LooseObject).autoload = (window as LooseObject).autoload || autoload;
451
-
452
- return autoloadEnabled;
453
- }
454
-
455
- (autoload as LooseObject).state = loadingDCs;
456
-
457
- export { McBase, MC, DC, autoload, on, one, off, trigger };
@@ -1,15 +0,0 @@
1
- <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
2
- <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
3
- <title>test</title>
4
- <rect fill="transparent" x="0" y="0" width="200" height="200" fill-opacity="1"/>
5
- <g style="fill:transparent">
6
- <title>first bird</title>
7
- <path fill="#18829c" d="
8
- m15,160
9
- a30,75 45 1 0 160,-150
10
- a20,50 225 1 1 -110,100
11
- a12,25 45 1 1 60,-50
12
- a20,50 225 1 0 -110,100
13
- " />
14
- </g>
15
- </svg>
@@ -1,5 +0,0 @@
1
- export declare function defineCE(tagName: string, DefinitionClass: {
2
- new (...args: any[]): any;
3
- } | Function, observedAttributes?: string[]): void;
4
- export declare function getCE(tagName: string): CustomElementConstructor | undefined;
5
- //# sourceMappingURL=elements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["elements.ts"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CACvB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;CAAE,GAAG,QAAQ,EACzD,kBAAkB,GAAE,MAAM,EAAO,QA6EjC;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAE3E"}
package/dist/elements.js DELETED
@@ -1,50 +0,0 @@
1
- 'use strict';
2
- import { DC, McBase } from './MC.js';
3
- import { kebabToPascal } from './helpers.js';
4
- function createNamedClass(name, ClassBody) {
5
- return Object.defineProperty(ClassBody, 'name', { value: name });
6
- }
7
- export function defineCE(tagName, DefinitionClass, observedAttributes = []) {
8
- if (customElements.get(tagName)) {
9
- console.warn(`IGNORED: Custom element "${tagName}" is already defined!`);
10
- return;
11
- }
12
- if (!tagName.includes('-')) {
13
- throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');
14
- }
15
- let name = kebabToPascal(tagName);
16
- if (!(DefinitionClass.prototype instanceof McBase)) {
17
- customElements.define(tagName, DefinitionClass);
18
- return;
19
- }
20
- customElements.define(tagName, createNamedClass(name, class extends HTMLElement {
21
- constructor(data) {
22
- super();
23
- DC.add(this, name, new DefinitionClass(this, data));
24
- }
25
- connectedCallback() {
26
- this.dispatchEvent(new CustomEvent('_mcConnected'));
27
- }
28
- connectedMoveCallback() {
29
- this.dispatchEvent(new CustomEvent('_mcConnectedMove'));
30
- }
31
- disconnectedCallback() {
32
- this.dispatchEvent(new CustomEvent('_mcDisconnected'));
33
- }
34
- adoptedCallback() {
35
- this.dispatchEvent(new CustomEvent('_mcAdopted'));
36
- }
37
- attributeChangedCallback(name, oldValue, newValue) {
38
- this.dispatchEvent(new CustomEvent('_mcAttributeChanged', { detail: { name, oldValue, newValue } }));
39
- }
40
- formResetCallback() {
41
- this.dispatchEvent(new CustomEvent('_mcFormReset'));
42
- }
43
- static get observedAttributes() {
44
- return observedAttributes;
45
- }
46
- }));
47
- }
48
- export function getCE(tagName) {
49
- return customElements.get(tagName);
50
- }
package/dist/elements.ts DELETED
@@ -1,94 +0,0 @@
1
- 'use strict';
2
-
3
- import { DC, McBase } from './MC.js';
4
- import { kebabToPascal } from './helpers.js';
5
-
6
- function createNamedClass(name: string, ClassBody: { new (...args: any[]): any }) {
7
- return Object.defineProperty(ClassBody, 'name', { value: name });
8
- }
9
-
10
- export function defineCE(
11
- tagName: string,
12
- DefinitionClass: { new (...args: any[]): any } | Function,
13
- observedAttributes: string[] = []
14
- ) {
15
- //console.warn('defineCE args', arguments);
16
-
17
- if (customElements.get(tagName)) {
18
- console.warn(`IGNORED: Custom element "${tagName}" is already defined!`);
19
- return;
20
- }
21
-
22
- if (!tagName.includes('-')) {
23
- throw new Error('createCustomElement: tagName must contain at least one hyphen ("-").');
24
- }
25
-
26
- let name = kebabToPascal(tagName);
27
-
28
- // a class, but not a MC
29
- if (!(DefinitionClass.prototype instanceof McBase)) {
30
- //console.warn('pure class', tagName, DefinitionClass);
31
- customElements.define(
32
- tagName,
33
- // @ts-ignore
34
- DefinitionClass
35
- );
36
- return;
37
- }
38
-
39
- //console.warn('MC class', tagName, DefinitionClass);
40
- // a MC
41
- customElements.define(
42
- tagName,
43
- createNamedClass(
44
- name,
45
- class extends HTMLElement {
46
- constructor(data?: any) {
47
- super();
48
- // console.log('[named class constructor]', tagName, name, this, data);
49
- // @ts-ignore
50
- DC.add(this, name, new DefinitionClass(this, data));
51
- }
52
-
53
- connectedCallback() {
54
- //console.warn('onConnected', this);
55
- this.dispatchEvent(new CustomEvent('_mcConnected'));
56
- }
57
-
58
- connectedMoveCallback() {
59
- //console.warn('onConnectedMove', this);
60
- this.dispatchEvent(new CustomEvent('_mcConnectedMove'));
61
- }
62
-
63
- disconnectedCallback() {
64
- //console.warn('onDisconnected', this);
65
- this.dispatchEvent(new CustomEvent('_mcDisconnected'));
66
- }
67
-
68
- adoptedCallback() {
69
- //console.warn('onAdopted', this);
70
- this.dispatchEvent(new CustomEvent('_mcAdopted'));
71
- }
72
-
73
- attributeChangedCallback(name: string, oldValue: any, newValue: any) {
74
- //console.warn('onAttributeChanged', this);
75
- this.dispatchEvent(
76
- new CustomEvent('_mcAttributeChanged', { detail: { name, oldValue, newValue } })
77
- );
78
- }
79
-
80
- formResetCallback() {
81
- this.dispatchEvent(new CustomEvent('_mcFormReset'));
82
- }
83
-
84
- static get observedAttributes() {
85
- return observedAttributes;
86
- }
87
- }
88
- )
89
- );
90
- }
91
-
92
- export function getCE(tagName: string): CustomElementConstructor | undefined {
93
- return customElements.get(tagName);
94
- }
@@ -1,3 +0,0 @@
1
- import { LooseObject } from './helpers.js';
2
- export declare function formValues(targetObject: LooseObject, propertyName: string, dom: HTMLElement | ShadowRoot): void;
3
- //# sourceMappingURL=formValues.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formValues.d.ts","sourceRoot":"","sources":["formValues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAsB,MAAM,cAAc,CAAC;AA6L/D,wBAAgB,UAAU,CACzB,YAAY,EAAE,WAAW,EACzB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,WAAW,GAAG,UAAU,QAkB7B"}