taggedjs 2.4.32 → 2.5.4

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 (74) hide show
  1. package/bundle.js +325 -230
  2. package/bundle.js.map +1 -1
  3. package/js/TagSupport.class.d.ts +1 -1
  4. package/js/TagSupport.class.js +26 -19
  5. package/js/TagSupport.class.js.map +1 -1
  6. package/js/TemplaterResult.class.d.ts +0 -4
  7. package/js/TemplaterResult.class.js +0 -56
  8. package/js/TemplaterResult.class.js.map +1 -1
  9. package/js/alterProps.function.d.ts +1 -1
  10. package/js/alterProps.function.js +37 -13
  11. package/js/alterProps.function.js.map +1 -1
  12. package/js/checkDestroyPrevious.function.d.ts +1 -1
  13. package/js/checkDestroyPrevious.function.js +5 -3
  14. package/js/checkDestroyPrevious.function.js.map +1 -1
  15. package/js/deepFunctions.js +1 -1
  16. package/js/deepFunctions.js.map +1 -1
  17. package/js/destroyTag.function.js +0 -2
  18. package/js/destroyTag.function.js.map +1 -1
  19. package/js/index.d.ts +8 -3
  20. package/js/index.js +7 -8
  21. package/js/index.js.map +1 -1
  22. package/js/interpolations/bindSubjectCallback.function.js +4 -2
  23. package/js/interpolations/bindSubjectCallback.function.js.map +1 -1
  24. package/js/interpolations/interpolateAttributes.js +5 -0
  25. package/js/interpolations/interpolateAttributes.js.map +1 -1
  26. package/js/interpolations/interpolateTemplate.js.map +1 -1
  27. package/js/processSubjectComponent.function.js +1 -15
  28. package/js/processSubjectComponent.function.js.map +1 -1
  29. package/js/processTag.function.js.map +1 -1
  30. package/js/renderExistingTag.function.js +1 -3
  31. package/js/renderExistingTag.function.js.map +1 -1
  32. package/js/renderSubjectComponent.function.d.ts +3 -0
  33. package/js/renderSubjectComponent.function.js +14 -0
  34. package/js/renderSubjectComponent.function.js.map +1 -0
  35. package/js/renderTagSupport.function.d.ts +2 -1
  36. package/js/renderTagSupport.function.js +6 -8
  37. package/js/renderTagSupport.function.js.map +1 -1
  38. package/js/renderWithSupport.function.d.ts +6 -0
  39. package/js/renderWithSupport.function.js +63 -0
  40. package/js/renderWithSupport.function.js.map +1 -0
  41. package/js/state/callbackMaker.function.js.map +1 -1
  42. package/js/state/index.d.ts +1 -1
  43. package/js/state/letState.function.js.map +1 -1
  44. package/js/state/onDestroy.js +8 -6
  45. package/js/state/onDestroy.js.map +1 -1
  46. package/js/state/onInit.js +2 -2
  47. package/js/state/onInit.js.map +1 -1
  48. package/js/state/providers.js +11 -2
  49. package/js/state/providers.js.map +1 -1
  50. package/js/state/setProp.function.js.map +1 -1
  51. package/js/state/setUse.function.d.ts +1 -1
  52. package/js/state/state.function.js.map +1 -1
  53. package/js/state/state.utils.d.ts +4 -5
  54. package/js/state/state.utils.js +27 -24
  55. package/js/state/state.utils.js.map +1 -1
  56. package/js/subject/Subject.class.d.ts +2 -1
  57. package/js/subject/Subject.class.js +2 -1
  58. package/js/subject/Subject.class.js.map +1 -1
  59. package/js/tag.d.ts +8 -1
  60. package/js/tag.js +2 -1
  61. package/js/tag.js.map +1 -1
  62. package/js/tagElement.d.ts +1 -1
  63. package/js/tagElement.js +6 -0
  64. package/js/tagElement.js.map +1 -1
  65. package/js/tagRunner.d.ts +1 -2
  66. package/js/tagRunner.js +6 -3
  67. package/js/tagRunner.js.map +1 -1
  68. package/js/updateContextItem.function.js +1 -2
  69. package/js/updateContextItem.function.js.map +1 -1
  70. package/js/updateExistingTagComponent.function.js +0 -2
  71. package/js/updateExistingTagComponent.function.js.map +1 -1
  72. package/js/updateExistingValue.function.js +1 -4
  73. package/js/updateExistingValue.function.js.map +1 -1
  74. package/package.json +1 -1
package/bundle.js CHANGED
@@ -74,6 +74,8 @@ __webpack_require__.r(__webpack_exports__);
74
74
  /* harmony import */ var _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./interpolations/interpolateElement */ "./ts/interpolations/interpolateElement.ts");
75
75
  /* harmony import */ var _interpolations_interpolateTemplate__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./interpolations/interpolateTemplate */ "./ts/interpolations/interpolateTemplate.ts");
76
76
  /* harmony import */ var _afterInterpolateElement_function__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./afterInterpolateElement.function */ "./ts/afterInterpolateElement.function.ts");
77
+ /* harmony import */ var _renderSubjectComponent_function__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./renderSubjectComponent.function */ "./ts/renderSubjectComponent.function.ts");
78
+
77
79
 
78
80
 
79
81
 
@@ -98,7 +100,6 @@ class BaseTagSupport {
98
100
  propsConfig;
99
101
  // stays with current render
100
102
  memory = {
101
- // context: {}, // populated after reading interpolated.values array converted to an object {variable0, variable:1}
102
103
  state: [],
103
104
  };
104
105
  // travels with all rerenderings
@@ -164,13 +165,12 @@ class TagSupport extends BaseTagSupport {
164
165
  const placeholder = global.placeholder;
165
166
  if (placeholder && !('arrayValue' in this.memory)) {
166
167
  if (!options.byParent) {
167
- (0,_checkDestroyPrevious_function__WEBPACK_IMPORTED_MODULE_4__.restoreTagMarker)(this, insertBefore);
168
+ (0,_checkDestroyPrevious_function__WEBPACK_IMPORTED_MODULE_4__.restoreTagMarker)(this);
168
169
  }
169
170
  }
170
171
  }
171
- delete global.placeholder;
172
172
  // the isComponent check maybe able to be removed
173
- const isComponent = (0,_isInstance__WEBPACK_IMPORTED_MODULE_2__.isTagComponent)(this) ? true : false;
173
+ const isComponent = (0,_isInstance__WEBPACK_IMPORTED_MODULE_2__.isTagComponent)(this.templater) ? true : false;
174
174
  if (isComponent) {
175
175
  (0,_tagRunner__WEBPACK_IMPORTED_MODULE_5__.runBeforeDestroy)(this, this);
176
176
  }
@@ -181,10 +181,17 @@ class TagSupport extends BaseTagSupport {
181
181
  const subGlobal = child.global;
182
182
  delete subGlobal.newest;
183
183
  subGlobal.deleted = true;
184
+ // delete subGlobal.placeholder
185
+ // restoreTagMarker(child)
184
186
  });
187
+ // data reset
188
+ delete global.placeholder;
189
+ delete subject.tagSupport;
190
+ global.context = {};
185
191
  delete global.oldest;
186
192
  delete global.newest;
187
193
  global.deleted = true;
194
+ this.childTags.length = 0;
188
195
  this.hasLiveElements = false;
189
196
  delete subject.tagSupport;
190
197
  this.destroySubscriptions();
@@ -306,11 +313,13 @@ class TagSupport extends BaseTagSupport {
306
313
  this.hasLiveElements = true;
307
314
  // remove old clones
308
315
  if (this.clones.length) {
309
- this.clones.forEach(clone => this.checkCloneRemoval(clone, 0));
316
+ // this.destroyClones()
317
+ // this.clones.forEach(clone => this.checkCloneRemoval(clone, 0))
310
318
  }
311
319
  global.insertBefore = insertBefore;
312
320
  const context = this.update();
313
321
  const template = this.getTemplate();
322
+ const isForceElement = options.forceElement;
314
323
  const elementContainer = document.createElement('div');
315
324
  elementContainer.id = 'tag-temp-holder';
316
325
  // render content with a first child that we can know is our first element
@@ -324,11 +333,9 @@ class TagSupport extends BaseTagSupport {
324
333
  (0,_afterInterpolateElement_function__WEBPACK_IMPORTED_MODULE_13__.afterInterpolateElement)(elementContainer, placeholderElm, this, // ownerSupport
325
334
  context, options);
326
335
  // Any tag components that were found should be processed AFTER the owner processes its elements. Avoid double processing of elements attributes like (oninit)=${}
327
- let isForceElement = options.forceElement;
328
336
  tagComponents.forEach(tagComponent => {
329
337
  (0,_interpolations_interpolateTemplate__WEBPACK_IMPORTED_MODULE_12__.subscribeToTemplate)(tagComponent.insertBefore, tagComponent.subject, tagComponent.ownerSupport, options.counts, { isForceElement });
330
- (0,_afterInterpolateElement_function__WEBPACK_IMPORTED_MODULE_13__.afterInterpolateElement)(elementContainer, tagComponent.insertBefore, tagComponent.ownerSupport, // this, // ownerTag
331
- context, options);
338
+ (0,_afterInterpolateElement_function__WEBPACK_IMPORTED_MODULE_13__.afterInterpolateElement)(elementContainer, tagComponent.insertBefore, tagComponent.ownerSupport, context, options);
332
339
  });
333
340
  }
334
341
  getTemplate() {
@@ -338,7 +345,6 @@ class TagSupport extends BaseTagSupport {
338
345
  const string = strings.map((string, index) => {
339
346
  const safeString = string.replace(prefixSearch, _Tag_class__WEBPACK_IMPORTED_MODULE_0__.escapeVariable);
340
347
  const endString = safeString + (values.length > index ? `{${_Tag_class__WEBPACK_IMPORTED_MODULE_0__.variablePrefix}${index}}` : '');
341
- // const trimString = index === 0 || index === this.strings.length-1 ? endString.trim() : endString
342
348
  const trimString = endString.replace(/>\s*/g, '>').replace(/\s*</g, '<');
343
349
  return trimString;
344
350
  }).join('');
@@ -346,7 +352,6 @@ class TagSupport extends BaseTagSupport {
346
352
  this.lastTemplateString = interpolation.string;
347
353
  return {
348
354
  interpolation,
349
- // string,
350
355
  string: interpolation.string,
351
356
  strings,
352
357
  values,
@@ -354,18 +359,17 @@ class TagSupport extends BaseTagSupport {
354
359
  };
355
360
  }
356
361
  /** Used during HMR only where static content itself could have been edited */
357
- rebuild() {
358
- // const insertBefore = this.insertBefore
359
- const insertBefore = this.global.insertBefore;
360
- if (!insertBefore) {
361
- const err = new Error('Cannot rebuild. Previous insertBefore element is not defined on tag');
362
- err.tag = this;
363
- throw err;
364
- }
365
- this.buildBeforeElement(insertBefore, {
362
+ async rebuild() {
363
+ delete this.strings; // seek the templater strings instead now
364
+ delete this.values; // seek the templater strings instead now
365
+ restoreTagMarkers(this);
366
+ const newSupport = (0,_renderSubjectComponent_function__WEBPACK_IMPORTED_MODULE_14__.renderSubjectComponent)(this.subject, this, this.ownerTagSupport);
367
+ await this.destroy();
368
+ newSupport.buildBeforeElement(this.global.insertBefore, {
366
369
  forceElement: true,
367
370
  counts: { added: 0, removed: 0 },
368
371
  });
372
+ return newSupport;
369
373
  }
370
374
  getAppElement() {
371
375
  let tag = this;
@@ -375,6 +379,10 @@ class TagSupport extends BaseTagSupport {
375
379
  return tag;
376
380
  }
377
381
  }
382
+ function restoreTagMarkers(support) {
383
+ (0,_checkDestroyPrevious_function__WEBPACK_IMPORTED_MODULE_4__.restoreTagMarker)(support);
384
+ support.childTags.forEach(childTag => restoreTagMarkers(childTag.global.oldest));
385
+ }
378
386
 
379
387
 
380
388
  /***/ }),
@@ -387,17 +395,8 @@ class TagSupport extends BaseTagSupport {
387
395
 
388
396
  __webpack_require__.r(__webpack_exports__);
389
397
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
390
- /* harmony export */ TemplaterResult: () => (/* binding */ TemplaterResult),
391
- /* harmony export */ renderWithSupport: () => (/* binding */ renderWithSupport)
398
+ /* harmony export */ TemplaterResult: () => (/* binding */ TemplaterResult)
392
399
  /* harmony export */ });
393
- /* harmony import */ var _tagRunner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tagRunner */ "./ts/tagRunner.ts");
394
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
395
- /* harmony import */ var _isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLikeTags.function */ "./ts/isLikeTags.function.ts");
396
- /* harmony import */ var _destroyTag_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./destroyTag.function */ "./ts/destroyTag.function.ts");
397
-
398
-
399
-
400
-
401
400
  class TemplaterResult {
402
401
  props;
403
402
  children;
@@ -410,58 +409,6 @@ class TemplaterResult {
410
409
  this.children = children;
411
410
  }
412
411
  }
413
- function renderWithSupport(tagSupport, // new
414
- lastSupport, // previous
415
- subject, // events & memory
416
- ownerSupport) {
417
- /* BEFORE RENDER */
418
- const lastOwnerSupport = lastSupport?.ownerTagSupport;
419
- const runtimeOwnerSupport = lastOwnerSupport || ownerSupport;
420
- if (lastSupport) {
421
- const lastState = lastSupport.memory.state;
422
- const memory = tagSupport.memory;
423
- memory.state = [...lastState];
424
- tagSupport.global = lastSupport.global;
425
- (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runBeforeRedraw)(tagSupport, lastSupport);
426
- }
427
- else {
428
- // first time render
429
- (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runBeforeRender)(tagSupport, runtimeOwnerSupport);
430
- // TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
431
- const providers = _state__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.providerConfig;
432
- providers.ownerSupport = runtimeOwnerSupport;
433
- }
434
- /* END: BEFORE RENDER */
435
- const templater = tagSupport.templater;
436
- const subTag = subject.tagSupport;
437
- // NEW TAG CREATED HERE
438
- const wrapper = templater.wrapper;
439
- const reSupport = wrapper(tagSupport, subject);
440
- /* AFTER */
441
- (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runAfterRender)(tagSupport, reSupport);
442
- const isLikeTag = !lastSupport || (0,_isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__.isLikeTags)(lastSupport, reSupport);
443
- if (!isLikeTag) {
444
- destroyUnlikeTags(lastSupport, reSupport, subject);
445
- }
446
- reSupport.ownerTagSupport = (ownerSupport || lastOwnerSupport);
447
- tagSupport.global.newest = reSupport;
448
- return reSupport;
449
- }
450
- function destroyUnlikeTags(lastSupport, // old
451
- reSupport, // new
452
- subject) {
453
- const oldGlobal = lastSupport.global;
454
- const insertBefore = oldGlobal.insertBefore;
455
- (0,_destroyTag_function__WEBPACK_IMPORTED_MODULE_3__.destroyTagMemory)(lastSupport, subject);
456
- // when a tag is destroyed, disconnect the globals
457
- reSupport.global = { ...oldGlobal }; // break memory references
458
- const global = reSupport.global;
459
- global.insertBefore = insertBefore;
460
- global.deleted = false;
461
- delete global.oldest;
462
- delete global.newest;
463
- delete subject.tagSupport;
464
- }
465
412
 
466
413
 
467
414
  /***/ }),
@@ -506,22 +453,25 @@ __webpack_require__.r(__webpack_exports__);
506
453
  /* harmony export */ alterProps: () => (/* binding */ alterProps),
507
454
  /* harmony export */ callbackPropOwner: () => (/* binding */ callbackPropOwner)
508
455
  /* harmony export */ });
509
- /* harmony import */ var _isInstance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isInstance */ "./ts/isInstance.ts");
510
- /* harmony import */ var _renderTagSupport_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./renderTagSupport.function */ "./ts/renderTagSupport.function.ts");
456
+ /* harmony import */ var _deepFunctions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./deepFunctions */ "./ts/deepFunctions.ts");
457
+ /* harmony import */ var _isInstance__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isInstance */ "./ts/isInstance.ts");
458
+ /* harmony import */ var _renderTagSupport_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderTagSupport.function */ "./ts/renderTagSupport.function.ts");
459
+ /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
460
+ /* harmony import */ var _tagRunner__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tagRunner */ "./ts/tagRunner.ts");
461
+
462
+
463
+
511
464
 
512
465
 
513
466
  /* Used to rewrite props that are functions. When they are called it should cause parent rendering */
514
467
  function alterProps(props, ownerSupport) {
515
- function callback(toCall, callWith) {
516
- return callbackPropOwner(toCall, callWith, ownerSupport);
517
- }
518
- const isPropTag = (0,_isInstance__WEBPACK_IMPORTED_MODULE_0__.isTag)(props);
468
+ const isPropTag = (0,_isInstance__WEBPACK_IMPORTED_MODULE_1__.isTag)(props);
519
469
  const watchProps = isPropTag ? 0 : props;
520
- const newProps = resetFunctionProps(watchProps, callback);
470
+ const newProps = resetFunctionProps(watchProps, ownerSupport);
521
471
  return newProps;
522
472
  }
523
- function resetFunctionProps(props, callback) {
524
- if (typeof (props) !== 'object') {
473
+ function resetFunctionProps(props, ownerSupport) {
474
+ if (typeof (props) !== 'object' || !ownerSupport) {
525
475
  return props;
526
476
  }
527
477
  const newProps = props;
@@ -529,15 +479,17 @@ function resetFunctionProps(props, callback) {
529
479
  // const newProps = {...props}
530
480
  Object.entries(newProps).forEach(([name, value]) => {
531
481
  if (value instanceof Function) {
532
- const original = newProps[name].original;
533
- if (original) {
482
+ const toCall = newProps[name].toCall;
483
+ if (toCall) {
534
484
  return; // already previously converted
535
485
  }
536
486
  newProps[name] = (...args) => {
537
487
  return newProps[name].toCall(...args); // what gets called can switch over parent state changes
538
488
  };
539
489
  // Currently, call self but over parent state changes, I may need to call a newer parent tag owner
540
- newProps[name].toCall = (...args) => callback(value, args);
490
+ newProps[name].toCall = (...args) => {
491
+ return callbackPropOwner(value, args, ownerSupport);
492
+ };
541
493
  newProps[name].original = value;
542
494
  return;
543
495
  }
@@ -545,10 +497,32 @@ function resetFunctionProps(props, callback) {
545
497
  return newProps;
546
498
  }
547
499
  function callbackPropOwner(toCall, callWith, ownerSupport) {
548
- const callbackResult = toCall(...callWith);
549
- const lastestOwner = ownerSupport.global.newest;
550
- (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_1__.renderTagSupport)(lastestOwner, true);
551
- return callbackResult;
500
+ // const renderCount = ownerSupport.global.renderCount
501
+ const cycle = (0,_tagRunner__WEBPACK_IMPORTED_MODULE_4__.isInCycle)();
502
+ const result = toCall(...callWith);
503
+ const run = () => {
504
+ const lastestOwner = ownerSupport.global.newest;
505
+ if (cycle) {
506
+ // appears a prop function was called sync/immediately so lets see if owner changed state
507
+ const allMatched = lastestOwner.memory.state.every(state => {
508
+ const lastValue = state.lastValue;
509
+ const get = state.get();
510
+ const equal = (0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepEqual)((0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepClone)(lastValue), get);
511
+ return equal;
512
+ });
513
+ if (allMatched) {
514
+ return result; // owner did not change
515
+ }
516
+ }
517
+ const newest = (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_2__.renderTagSupport)(lastestOwner, true);
518
+ lastestOwner.global.newest = newest;
519
+ return result;
520
+ };
521
+ if (!cycle) {
522
+ return run();
523
+ }
524
+ _state__WEBPACK_IMPORTED_MODULE_3__.setUse.memory.tagClosed$.toCallback(run);
525
+ return result;
552
526
  }
553
527
 
554
528
 
@@ -598,7 +572,7 @@ newValue, insertBefore) {
598
572
  // its a different tag now
599
573
  if (!(0,_isLikeTags_function__WEBPACK_IMPORTED_MODULE_1__.isLikeTags)(newTag, lastSupport)) {
600
574
  // put template back down
601
- restoreTagMarker(lastSupport, insertBefore);
575
+ restoreTagMarker(lastSupport);
602
576
  (0,_destroyTag_function__WEBPACK_IMPORTED_MODULE_2__.destroyTagMemory)(lastSupport, tagSubject);
603
577
  return 2;
604
578
  }
@@ -609,7 +583,7 @@ newValue, insertBefore) {
609
583
  return false; // its still a tag component
610
584
  }
611
585
  // put template back down
612
- restoreTagMarker(lastSupport, insertBefore);
586
+ restoreTagMarker(lastSupport);
613
587
  // destroy old component, value is not a component
614
588
  (0,_destroyTag_function__WEBPACK_IMPORTED_MODULE_2__.destroyTagMemory)(lastSupport, tagSubject);
615
589
  return 'different-tag';
@@ -643,11 +617,13 @@ subject) {
643
617
  delete subject.clone;
644
618
  delete subject.lastValue;
645
619
  }
646
- function restoreTagMarker(lastSupport, insertBefore) {
620
+ function restoreTagMarker(lastSupport) {
621
+ const insertBefore = lastSupport.global.insertBefore;
647
622
  const global = lastSupport.global;
648
623
  const placeholderElm = global.placeholder;
649
624
  if (placeholderElm) {
650
625
  (0,_insertAfter_function__WEBPACK_IMPORTED_MODULE_3__.insertAfter)(insertBefore, placeholderElm);
626
+ delete global.placeholder;
651
627
  }
652
628
  }
653
629
 
@@ -752,7 +728,7 @@ function isDeepEqual(obj1, obj2, visited) {
752
728
  if (typeof obj1 === 'object' && typeof obj2 === 'object') {
753
729
  // both are dates and were already determined not the same
754
730
  if (obj1 instanceof Date && obj2 instanceof Date) {
755
- return false;
731
+ return obj1.getTime() === obj2.getTime();
756
732
  }
757
733
  // Register the cloned object to avoid cyclic references
758
734
  visited.set(obj1, 0);
@@ -839,8 +815,6 @@ __webpack_require__.r(__webpack_exports__);
839
815
  /* harmony export */ destroyTagSupportPast: () => (/* binding */ destroyTagSupportPast)
840
816
  /* harmony export */ });
841
817
  function destroyTagMemory(oldTagSupport, subject) {
842
- delete subject.tagSupport;
843
- delete oldTagSupport.subject.tagSupport; // TODO: this line maybe not needed
844
818
  // must destroy oldest which is tag with elements on stage
845
819
  const oldest = oldTagSupport.global.oldest;
846
820
  oldest.destroy();
@@ -1090,13 +1064,15 @@ function runTagCallback(value, tagSupport, bindTo, args) {
1090
1064
  }
1091
1065
  return 'no-data-ever'; // already rendered
1092
1066
  }
1093
- (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_0__.renderTagSupport)(tagSupport, true);
1067
+ const newest = (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_0__.renderTagSupport)(tagSupport.global.newest, true);
1068
+ tagSupport.global.newest = newest;
1094
1069
  if (callbackResult instanceof Promise) {
1095
1070
  return callbackResult.then(() => {
1096
1071
  if (tagSupport.global.deleted) {
1097
1072
  return 'promise-no-data-ever'; // tag was deleted during event processing
1098
1073
  }
1099
- (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_0__.renderTagSupport)(tagSupport, true);
1074
+ const newest = (0,_renderTagSupport_function__WEBPACK_IMPORTED_MODULE_0__.renderTagSupport)(tagSupport.global.newest, true);
1075
+ tagSupport.global.newest = newest;
1100
1076
  return 'promise-no-data-ever';
1101
1077
  });
1102
1078
  }
@@ -1186,6 +1162,11 @@ function howToSetAttribute(element, name, value) {
1186
1162
  element.setAttribute(name, value);
1187
1163
  }
1188
1164
  function howToSetInputValue(element, name, value) {
1165
+ /*
1166
+ if((element as any)[name] === value) {
1167
+ return // its already the value we are setting
1168
+ }
1169
+ */
1189
1170
  element[name] = value;
1190
1171
  }
1191
1172
  function interpolateAttributes(child, scope, ownerSupport) {
@@ -1805,10 +1786,10 @@ __webpack_require__.r(__webpack_exports__);
1805
1786
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1806
1787
  /* harmony export */ processSubjectComponent: () => (/* binding */ processSubjectComponent)
1807
1788
  /* harmony export */ });
1808
- /* harmony import */ var _TemplaterResult_class__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./TemplaterResult.class */ "./ts/TemplaterResult.class.ts");
1809
- /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
1810
- /* harmony import */ var _processTagResult_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./processTagResult.function */ "./ts/processTagResult.function.ts");
1811
- /* harmony import */ var _TagSupport_class__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TagSupport.class */ "./ts/TagSupport.class.ts");
1789
+ /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
1790
+ /* harmony import */ var _processTagResult_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./processTagResult.function */ "./ts/processTagResult.function.ts");
1791
+ /* harmony import */ var _TagSupport_class__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TagSupport.class */ "./ts/TagSupport.class.ts");
1792
+ /* harmony import */ var _renderSubjectComponent_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderSubjectComponent.function */ "./ts/renderSubjectComponent.function.ts");
1812
1793
 
1813
1794
 
1814
1795
 
@@ -1827,36 +1808,22 @@ function processSubjectComponent(templater, subject, insertBefore, ownerSupport,
1827
1808
  const error = new Error(`Not a tag component. Wrap your function with tag(). Example tag(props => html\`\`) on component:\n\n${label}\n\n`);
1828
1809
  throw error;
1829
1810
  }
1830
- const tagSupport = new _TagSupport_class__WEBPACK_IMPORTED_MODULE_3__.TagSupport(templater, ownerSupport, subject);
1811
+ const tagSupport = new _TagSupport_class__WEBPACK_IMPORTED_MODULE_2__.TagSupport(templater, ownerSupport, subject);
1831
1812
  let reSupport = subject.tagSupport;
1832
1813
  const global = tagSupport.global = reSupport?.global || tagSupport.global;
1833
1814
  global.insertBefore = insertBefore;
1834
- const providers = _state__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.providerConfig;
1815
+ const providers = _state__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.providerConfig;
1835
1816
  providers.ownerSupport = ownerSupport;
1836
1817
  const isRender = !reSupport || options.forceElement;
1837
1818
  if (isRender) {
1838
1819
  const support = reSupport || tagSupport;
1839
- reSupport = renderSubjectComponent(subject, support, ownerSupport);
1820
+ reSupport = (0,_renderSubjectComponent_function__WEBPACK_IMPORTED_MODULE_3__.renderSubjectComponent)(subject, support, ownerSupport);
1840
1821
  }
1841
- (0,_processTagResult_function__WEBPACK_IMPORTED_MODULE_2__.processTagResult)(reSupport, subject, // The element set here will be removed from document. Also result.tag will be added in here
1822
+ (0,_processTagResult_function__WEBPACK_IMPORTED_MODULE_1__.processTagResult)(reSupport, subject, // The element set here will be removed from document. Also result.tag will be added in here
1842
1823
  insertBefore, // <template end interpolate /> (will be removed)
1843
1824
  options);
1844
1825
  return reSupport;
1845
1826
  }
1846
- function renderSubjectComponent(subject, reSupport, ownerSupport) {
1847
- const preClones = ownerSupport.clones.map(clone => clone);
1848
- reSupport = (0,_TemplaterResult_class__WEBPACK_IMPORTED_MODULE_0__.renderWithSupport)(reSupport, subject.tagSupport, // existing tag
1849
- subject, ownerSupport);
1850
- reSupport.global.newest = reSupport;
1851
- // ??? - mirroring add 0
1852
- // reSupport.ownerTagSupport = ownerSupport
1853
- if (ownerSupport.clones.length > preClones.length) {
1854
- const myClones = ownerSupport.clones.filter(fClone => !preClones.find(clone => clone === fClone));
1855
- reSupport.clones.push(...myClones);
1856
- }
1857
- ownerSupport.childTags.push(reSupport);
1858
- return reSupport;
1859
- }
1860
1827
 
1861
1828
 
1862
1829
  /***/ }),
@@ -2218,8 +2185,8 @@ __webpack_require__.r(__webpack_exports__);
2218
2185
  /* harmony export */ renderExistingTag: () => (/* binding */ renderExistingTag)
2219
2186
  /* harmony export */ });
2220
2187
  /* harmony import */ var _state_provider_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state/provider.utils */ "./ts/state/provider.utils.ts");
2221
- /* harmony import */ var _TemplaterResult_class__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TemplaterResult.class */ "./ts/TemplaterResult.class.ts");
2222
- /* harmony import */ var _isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLikeTags.function */ "./ts/isLikeTags.function.ts");
2188
+ /* harmony import */ var _isLikeTags_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./isLikeTags.function */ "./ts/isLikeTags.function.ts");
2189
+ /* harmony import */ var _renderWithSupport_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderWithSupport.function */ "./ts/renderWithSupport.function.ts");
2223
2190
 
2224
2191
 
2225
2192
 
@@ -2240,15 +2207,13 @@ subject) {
2240
2207
  oldestSupport.updateBy(prevSupport);
2241
2208
  return prevSupport; // already rendered during triggered events
2242
2209
  }
2243
- // ??? changed during mirroring - lastSupport keeps having less info than newest
2244
- // const toRedrawTag = lastSupport || prevSupport || tagSupport.global.oldest
2245
2210
  const toRedrawTag = prevSupport || lastSupport || global.oldest;
2246
- const reSupport = (0,_TemplaterResult_class__WEBPACK_IMPORTED_MODULE_1__.renderWithSupport)(newSupport, toRedrawTag, subject,
2211
+ const reSupport = (0,_renderWithSupport_function__WEBPACK_IMPORTED_MODULE_2__.renderWithSupport)(newSupport, toRedrawTag, subject,
2247
2212
  // oldestSupport,
2248
2213
  ownerSupport);
2249
2214
  const oldest = global.oldest || oldestSupport;
2250
2215
  reSupport.global.oldest = oldest;
2251
- if ((0,_isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__.isLikeTags)(prevSupport, reSupport)) {
2216
+ if ((0,_isLikeTags_function__WEBPACK_IMPORTED_MODULE_1__.isLikeTags)(prevSupport, reSupport)) {
2252
2217
  subject.tagSupport = reSupport;
2253
2218
  oldest.updateBy(reSupport);
2254
2219
  }
@@ -2256,6 +2221,34 @@ subject) {
2256
2221
  }
2257
2222
 
2258
2223
 
2224
+ /***/ }),
2225
+
2226
+ /***/ "./ts/renderSubjectComponent.function.ts":
2227
+ /*!***********************************************!*\
2228
+ !*** ./ts/renderSubjectComponent.function.ts ***!
2229
+ \***********************************************/
2230
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2231
+
2232
+ __webpack_require__.r(__webpack_exports__);
2233
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2234
+ /* harmony export */ renderSubjectComponent: () => (/* binding */ renderSubjectComponent)
2235
+ /* harmony export */ });
2236
+ /* harmony import */ var _renderWithSupport_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderWithSupport.function */ "./ts/renderWithSupport.function.ts");
2237
+
2238
+ function renderSubjectComponent(subject, reSupport, ownerSupport) {
2239
+ const preClones = ownerSupport.clones.map(clone => clone);
2240
+ reSupport = (0,_renderWithSupport_function__WEBPACK_IMPORTED_MODULE_0__.renderWithSupport)(reSupport, subject.tagSupport, // existing tag
2241
+ subject, ownerSupport);
2242
+ reSupport.global.newest = reSupport;
2243
+ if (ownerSupport.clones.length > preClones.length) {
2244
+ const myClones = ownerSupport.clones.filter(fClone => !preClones.find(clone => clone === fClone));
2245
+ reSupport.clones.push(...myClones);
2246
+ }
2247
+ ownerSupport.childTags.push(reSupport);
2248
+ return reSupport;
2249
+ }
2250
+
2251
+
2259
2252
  /***/ }),
2260
2253
 
2261
2254
  /***/ "./ts/renderTagSupport.function.ts":
@@ -2273,30 +2266,28 @@ __webpack_require__.r(__webpack_exports__);
2273
2266
 
2274
2267
 
2275
2268
  /** Main function used by all other callers to render/update display of a tag component */
2276
- function renderTagSupport(tagSupport, renderUp) {
2269
+ function renderTagSupport(tagSupport, // must be latest/newest state render
2270
+ renderUp) {
2277
2271
  const global = tagSupport.global;
2278
2272
  const templater = tagSupport.templater;
2279
2273
  // is it just a vanilla tag, not component?
2280
2274
  if (!templater.wrapper) { // || isTagTemplater(templater)
2281
- const newTag = global.newest;
2282
- const ownerTag = newTag.ownerTagSupport;
2275
+ const ownerTag = tagSupport.ownerTagSupport;
2283
2276
  ++global.renderCount;
2284
2277
  return renderTagSupport(ownerTag, true);
2285
2278
  }
2286
2279
  const subject = tagSupport.subject;
2287
- const newest = global.newest;
2288
2280
  let ownerSupport;
2289
2281
  let selfPropChange = false;
2290
- const shouldRenderUp = renderUp && newest;
2282
+ const shouldRenderUp = renderUp && tagSupport;
2291
2283
  if (shouldRenderUp) {
2292
- ownerSupport = newest.ownerTagSupport;
2284
+ ownerSupport = tagSupport.ownerTagSupport;
2293
2285
  if (ownerSupport) {
2294
2286
  const nowProps = templater.props;
2295
- const latestProps = newest.propsConfig.latestCloned;
2287
+ const latestProps = tagSupport.propsConfig.latestCloned;
2296
2288
  selfPropChange = !(0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepEqual)(nowProps, latestProps);
2297
2289
  }
2298
2290
  }
2299
- // const useTagSupport = global.newest as TagSupport // oldTagSetup
2300
2291
  const oldest = tagSupport.global.oldest;
2301
2292
  const tag = (0,_renderExistingTag_function__WEBPACK_IMPORTED_MODULE_1__.renderExistingTag)(oldest, tagSupport, ownerSupport, // useTagSupport,
2302
2293
  subject);
@@ -2310,6 +2301,86 @@ function renderTagSupport(tagSupport, renderUp) {
2310
2301
  }
2311
2302
 
2312
2303
 
2304
+ /***/ }),
2305
+
2306
+ /***/ "./ts/renderWithSupport.function.ts":
2307
+ /*!******************************************!*\
2308
+ !*** ./ts/renderWithSupport.function.ts ***!
2309
+ \******************************************/
2310
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2311
+
2312
+ __webpack_require__.r(__webpack_exports__);
2313
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2314
+ /* harmony export */ renderWithSupport: () => (/* binding */ renderWithSupport)
2315
+ /* harmony export */ });
2316
+ /* harmony import */ var _tagRunner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tagRunner */ "./ts/tagRunner.ts");
2317
+ /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
2318
+ /* harmony import */ var _isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLikeTags.function */ "./ts/isLikeTags.function.ts");
2319
+ /* harmony import */ var _destroyTag_function__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./destroyTag.function */ "./ts/destroyTag.function.ts");
2320
+
2321
+
2322
+
2323
+
2324
+ function renderWithSupport(tagSupport, // new
2325
+ lastSupport, // previous
2326
+ subject, // events & memory
2327
+ ownerSupport) {
2328
+ const oldRenderCount = tagSupport.global.renderCount;
2329
+ beforeWithRender(tagSupport, ownerSupport, lastSupport);
2330
+ const templater = tagSupport.templater;
2331
+ // NEW TAG CREATED HERE
2332
+ const wrapper = templater.wrapper;
2333
+ const reSupport = wrapper(tagSupport, subject);
2334
+ /* AFTER */
2335
+ (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runAfterRender)(tagSupport, reSupport);
2336
+ // When we rendered, only 1 render should have taken place OTHERWISE rendering caused another render and that is the latest instead
2337
+ if (reSupport.global.renderCount > oldRenderCount + 1) {
2338
+ return tagSupport.global.newest;
2339
+ }
2340
+ tagSupport.global.newest = reSupport;
2341
+ const isLikeTag = !lastSupport || (0,_isLikeTags_function__WEBPACK_IMPORTED_MODULE_2__.isLikeTags)(lastSupport, reSupport);
2342
+ if (!isLikeTag) {
2343
+ destroyUnlikeTags(lastSupport, reSupport, subject);
2344
+ }
2345
+ const lastOwnerSupport = lastSupport?.ownerTagSupport;
2346
+ reSupport.ownerTagSupport = (ownerSupport || lastOwnerSupport);
2347
+ return reSupport;
2348
+ }
2349
+ function beforeWithRender(tagSupport, ownerSupport, lastSupport) {
2350
+ const lastOwnerSupport = lastSupport?.ownerTagSupport;
2351
+ const runtimeOwnerSupport = lastOwnerSupport || ownerSupport;
2352
+ if (lastSupport) {
2353
+ const lastState = lastSupport.memory.state;
2354
+ const memory = tagSupport.memory;
2355
+ memory.state = [...lastState];
2356
+ tagSupport.global = lastSupport.global;
2357
+ (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runBeforeRedraw)(tagSupport, lastSupport);
2358
+ }
2359
+ else {
2360
+ // first time render
2361
+ (0,_tagRunner__WEBPACK_IMPORTED_MODULE_0__.runBeforeRender)(tagSupport, runtimeOwnerSupport);
2362
+ // TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
2363
+ const providers = _state__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.providerConfig;
2364
+ providers.ownerSupport = runtimeOwnerSupport;
2365
+ }
2366
+ }
2367
+ function destroyUnlikeTags(lastSupport, // old
2368
+ reSupport, // new
2369
+ subject) {
2370
+ const oldGlobal = lastSupport.global;
2371
+ const insertBefore = oldGlobal.insertBefore;
2372
+ (0,_destroyTag_function__WEBPACK_IMPORTED_MODULE_3__.destroyTagMemory)(lastSupport, subject);
2373
+ // when a tag is destroyed, disconnect the globals
2374
+ reSupport.global = { ...oldGlobal }; // break memory references
2375
+ const global = reSupport.global;
2376
+ global.insertBefore = insertBefore;
2377
+ global.deleted = false;
2378
+ delete global.oldest;
2379
+ delete global.newest;
2380
+ delete subject.tagSupport;
2381
+ }
2382
+
2383
+
2313
2384
  /***/ }),
2314
2385
 
2315
2386
  /***/ "./ts/setTagPlaceholder.function.ts":
@@ -2510,15 +2581,17 @@ __webpack_require__.r(__webpack_exports__);
2510
2581
  /* harmony export */ });
2511
2582
  /* harmony import */ var _setUse_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setUse.function */ "./ts/state/setUse.function.ts");
2512
2583
 
2513
- /** When undefined, it means a tag is being built for the first time so do run destroy(s) */
2514
- let destroyCurrentTagSupport;
2584
+ function setCurrentTagSupport(support) {
2585
+ _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.destroyCurrentSupport = support;
2586
+ }
2515
2587
  function onDestroy(callback) {
2516
- destroyCurrentTagSupport.global.destroyCallback = callback;
2588
+ const tagSupport = _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.destroyCurrentSupport;
2589
+ tagSupport.global.destroyCallback = callback;
2517
2590
  }
2518
2591
  (0,_setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse)({
2519
- beforeRender: tagSupport => destroyCurrentTagSupport = tagSupport,
2520
- beforeRedraw: tagSupport => destroyCurrentTagSupport = tagSupport,
2521
- beforeDestroy: (tagSupport, tag) => {
2592
+ beforeRender: tagSupport => setCurrentTagSupport(tagSupport),
2593
+ beforeRedraw: tagSupport => setCurrentTagSupport(tagSupport),
2594
+ beforeDestroy: (tagSupport) => {
2522
2595
  const callback = tagSupport.global.destroyCallback;
2523
2596
  if (callback) {
2524
2597
  callback();
@@ -2542,10 +2615,10 @@ __webpack_require__.r(__webpack_exports__);
2542
2615
  /* harmony import */ var _setUse_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setUse.function */ "./ts/state/setUse.function.ts");
2543
2616
 
2544
2617
  function setCurrentTagSupport(support) {
2545
- _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.initCurrentSupport = support;
2618
+ _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.currentSupport = support;
2546
2619
  }
2547
2620
  function onInit(callback) {
2548
- const tagSupport = _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.initCurrentSupport;
2621
+ const tagSupport = _setUse_function__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.currentSupport;
2549
2622
  if (!tagSupport.global.init) {
2550
2623
  tagSupport.global.init = callback;
2551
2624
  callback(); // fire init
@@ -2626,6 +2699,8 @@ __webpack_require__.r(__webpack_exports__);
2626
2699
  /* harmony export */ });
2627
2700
  /* harmony import */ var _deepFunctions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../deepFunctions */ "./ts/deepFunctions.ts");
2628
2701
  /* harmony import */ var _setUse_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setUse.function */ "./ts/state/setUse.function.ts");
2702
+ /* harmony import */ var _state_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state.function */ "./ts/state/state.function.ts");
2703
+
2629
2704
 
2630
2705
 
2631
2706
  _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.providerConfig = {
@@ -2642,16 +2717,24 @@ const providers = {
2642
2717
  const existing = get(constructMethod);
2643
2718
  if (existing) {
2644
2719
  existing.clone = (0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepClone)(existing.instance);
2645
- return existing.instance;
2720
+ // fake calling state the same number of previous times
2721
+ for (let x = 0; x < existing.stateDiff; ++x) {
2722
+ (0,_state_function__WEBPACK_IMPORTED_MODULE_2__.state)(existing.stateDiff);
2723
+ }
2724
+ return (0,_state_function__WEBPACK_IMPORTED_MODULE_2__.state)(existing.stateDiff);
2646
2725
  }
2726
+ const oldStateCount = _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.stateConfig.array.length;
2647
2727
  // Providers with provider requirements just need to use providers.create() and providers.inject()
2648
2728
  const instance = 'prototype' in constructMethod ? new constructMethod() : constructMethod();
2729
+ const stateDiff = _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.stateConfig.array.length - oldStateCount;
2649
2730
  const config = _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.providerConfig;
2650
2731
  config.providers.push({
2651
2732
  constructMethod,
2652
2733
  instance,
2653
- clone: (0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepClone)(instance)
2734
+ clone: (0,_deepFunctions__WEBPACK_IMPORTED_MODULE_0__.deepClone)(instance),
2735
+ stateDiff,
2654
2736
  });
2737
+ (0,_state_function__WEBPACK_IMPORTED_MODULE_2__.state)(() => instance); // tie provider to a state for rendering change checking
2655
2738
  return instance;
2656
2739
  },
2657
2740
  /**
@@ -2855,10 +2938,9 @@ __webpack_require__.r(__webpack_exports__);
2855
2938
  /* harmony import */ var _setUse_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setUse.function */ "./ts/state/setUse.function.ts");
2856
2939
 
2857
2940
 
2858
- // TODO: rename
2859
2941
  _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.stateConfig = {
2860
2942
  array: [], // state memory on the first render
2861
- // rearray: [] as StateConfigArray, // state memory to be used before the next render
2943
+ // rearray: [] as State,
2862
2944
  };
2863
2945
  const beforeRender = (tagSupport) => initState(tagSupport);
2864
2946
  (0,_setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse)({
@@ -2866,7 +2948,7 @@ const beforeRender = (tagSupport) => initState(tagSupport);
2866
2948
  beforeRedraw: beforeRender,
2867
2949
  afterRender: (tagSupport) => {
2868
2950
  const memory = tagSupport.memory;
2869
- const state = memory.state;
2951
+ // const state: State = memory.state
2870
2952
  const config = _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.stateConfig;
2871
2953
  const rearray = config.rearray;
2872
2954
  if (rearray.length) {
@@ -2884,14 +2966,13 @@ const beforeRender = (tagSupport) => initState(tagSupport);
2884
2966
  }
2885
2967
  }
2886
2968
  delete config.rearray; // clean up any previous runs
2969
+ delete config.tagSupport;
2887
2970
  memory.state = config.array; // [...config.array]
2888
2971
  memory.state.forEach(item => item.lastValue = getStateValue(item)); // set last values
2889
2972
  config.array = [];
2890
2973
  }
2891
2974
  });
2892
- function getStateValue(
2893
- // state: StateConfig,
2894
- state) {
2975
+ function getStateValue(state) {
2895
2976
  const callback = state.callback;
2896
2977
  if (!callback) {
2897
2978
  return state.defaultValue;
@@ -2918,31 +2999,36 @@ function initState(tagSupport) {
2918
2999
  const config = _setUse_function__WEBPACK_IMPORTED_MODULE_1__.setUse.memory.stateConfig;
2919
3000
  // TODO: This guard may no longer be needed
2920
3001
  if (config.rearray) {
2921
- const wrapper = tagSupport.templater?.wrapper;
2922
- const wasWrapper = config.tagSupport?.templater.wrapper;
2923
- const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render';
2924
- console.error(message, {
2925
- config,
2926
- tagFunction: wrapper.original,
2927
- wasInMiddleOf: wasWrapper.original,
2928
- state,
2929
- expectedClearArray: config.rearray,
2930
- });
2931
- throw new _errors__WEBPACK_IMPORTED_MODULE_0__.StateMismatchError(message, {
2932
- config,
2933
- tagFunction: wrapper.original,
2934
- state,
2935
- expectedClearArray: config.rearray,
2936
- });
3002
+ checkStateMismatch(tagSupport, config, state);
2937
3003
  }
2938
- // TODO: this maybe redundant and not needed
2939
- config.rearray = []; // .length = 0
3004
+ config.rearray = [];
2940
3005
  if (state?.length) {
2941
3006
  state.forEach(state => getStateValue(state));
2942
3007
  config.rearray.push(...state);
2943
3008
  }
2944
3009
  config.tagSupport = tagSupport;
2945
3010
  }
3011
+ function checkStateMismatch(tagSupport, config, state) {
3012
+ const wrapper = tagSupport.templater?.wrapper;
3013
+ const wasWrapper = config.tagSupport?.templater.wrapper;
3014
+ const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render';
3015
+ if (!wasWrapper) {
3016
+ return; // its not a component or was not a component before
3017
+ }
3018
+ console.error(message, {
3019
+ config,
3020
+ tagFunction: wrapper.original,
3021
+ wasInMiddleOf: wasWrapper.original,
3022
+ state,
3023
+ expectedClearArray: config.rearray,
3024
+ });
3025
+ throw new _errors__WEBPACK_IMPORTED_MODULE_0__.StateMismatchError(message, {
3026
+ config,
3027
+ tagFunction: wrapper.original,
3028
+ state,
3029
+ expectedClearArray: config.rearray,
3030
+ });
3031
+ }
2946
3032
 
2947
3033
 
2948
3034
  /***/ }),
@@ -3046,12 +3132,13 @@ class Subject {
3046
3132
  });
3047
3133
  });
3048
3134
  }
3049
- // like toPromise but faster
3135
+ /** like toPromise but faster */
3050
3136
  toCallback(callback) {
3051
3137
  this.subscribe((x, subscription) => {
3052
3138
  subscription.unsubscribe();
3053
3139
  callback(x);
3054
3140
  });
3141
+ return this;
3055
3142
  }
3056
3143
  pipe(...operations) {
3057
3144
  const subject = new Subject();
@@ -3304,7 +3391,7 @@ function tag(tagComponent) {
3304
3391
  const templater = new _TemplaterResult_class__WEBPACK_IMPORTED_MODULE_2__.TemplaterResult(props, childSubject);
3305
3392
  // attach memory back to original function that contains developer display logic
3306
3393
  const innerTagWrap = getTagWrap(templater, madeSubject);
3307
- innerTagWrap.original = tagComponent;
3394
+ innerTagWrap.original = tagComponent.lastResult?.original || tagComponent;
3308
3395
  templater.tagged = true;
3309
3396
  templater.wrapper = innerTagWrap;
3310
3397
  return templater;
@@ -3342,6 +3429,7 @@ function updateComponent(tagComponent) {
3342
3429
  tagComponent.tags = tags;
3343
3430
  tagComponent.setUse = _state__WEBPACK_IMPORTED_MODULE_1__.setUse;
3344
3431
  tagComponent.tagIndex = tagCount++; // needed for things like HMR
3432
+ tagComponent.lastResult = tagComponent;
3345
3433
  }
3346
3434
  /** creates/returns a function that when called then calls the original component function
3347
3435
  * Gets used as templater.wrapper()
@@ -3440,6 +3528,12 @@ element, props) {
3440
3528
  templateElm.setAttribute('id', 'app-tag-' + appElements.length);
3441
3529
  templateElm.setAttribute('app-tag-detail', appElements.length.toString());
3442
3530
  element.appendChild(templateElm);
3531
+ element.destroy = async () => {
3532
+ await tagSupport.destroy();
3533
+ const insertBefore = tagSupport.global.insertBefore;
3534
+ const parentNode = insertBefore.parentNode;
3535
+ parentNode.removeChild(insertBefore);
3536
+ };
3443
3537
  tagSupport.buildBeforeElement(templateElm);
3444
3538
  tagSupport.global.oldest = tagSupport;
3445
3539
  tagSupport.global.newest = tagSupport;
@@ -3475,11 +3569,11 @@ function runWrapper(templater) {
3475
3569
 
3476
3570
  __webpack_require__.r(__webpack_exports__);
3477
3571
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3572
+ /* harmony export */ isInCycle: () => (/* binding */ isInCycle),
3478
3573
  /* harmony export */ runAfterRender: () => (/* binding */ runAfterRender),
3479
3574
  /* harmony export */ runBeforeDestroy: () => (/* binding */ runBeforeDestroy),
3480
3575
  /* harmony export */ runBeforeRedraw: () => (/* binding */ runBeforeRedraw),
3481
- /* harmony export */ runBeforeRender: () => (/* binding */ runBeforeRender),
3482
- /* harmony export */ tagClosed$: () => (/* binding */ tagClosed$)
3576
+ /* harmony export */ runBeforeRender: () => (/* binding */ runBeforeRender)
3483
3577
  /* harmony export */ });
3484
3578
  /* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./state */ "./ts/state/index.ts");
3485
3579
  /* harmony import */ var _subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subject */ "./ts/subject/index.ts");
@@ -3487,11 +3581,14 @@ __webpack_require__.r(__webpack_exports__);
3487
3581
 
3488
3582
 
3489
3583
  // Emits event at the end of a tag being rendered. Use tagClosed$.toPromise() to render a tag after a current tag is done rendering
3490
- const tagClosed$ = new _subject__WEBPACK_IMPORTED_MODULE_1__.Subject(undefined, subscription => {
3491
- if (!_state__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.stateConfig.rearray) {
3584
+ _state__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.tagClosed$ = new _subject__WEBPACK_IMPORTED_MODULE_1__.Subject(undefined, subscription => {
3585
+ if (!isInCycle()) {
3492
3586
  subscription.next(); // we are not currently processing so process now
3493
3587
  }
3494
3588
  });
3589
+ function isInCycle() {
3590
+ return _state__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.stateConfig.tagSupport;
3591
+ }
3495
3592
  // Life cycle 1
3496
3593
  function runBeforeRender(tagSupport, ownerSupport) {
3497
3594
  _state__WEBPACK_IMPORTED_MODULE_0__.setUse.tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, ownerSupport));
@@ -3499,7 +3596,7 @@ function runBeforeRender(tagSupport, ownerSupport) {
3499
3596
  // Life cycle 2
3500
3597
  function runAfterRender(tagSupport, ownerTagSupport) {
3501
3598
  _state__WEBPACK_IMPORTED_MODULE_0__.setUse.tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, ownerTagSupport));
3502
- tagClosed$.next(ownerTagSupport);
3599
+ _state__WEBPACK_IMPORTED_MODULE_0__.setUse.memory.tagClosed$.next(ownerTagSupport);
3503
3600
  }
3504
3601
  // Life cycle 3
3505
3602
  function runBeforeRedraw(tagSupport, ownerTagSupport) {
@@ -3572,7 +3669,7 @@ function updateContextItem(context, variableName, value) {
3572
3669
  }
3573
3670
  }
3574
3671
  if ((0,_isInstance__WEBPACK_IMPORTED_MODULE_0__.isSubjectInstance)(value)) {
3575
- return;
3672
+ return; // emits on its own
3576
3673
  }
3577
3674
  // listeners will evaluate updated values to possibly update display(s)
3578
3675
  subject.set(value);
@@ -3588,7 +3685,6 @@ function shareTemplaterGlobal(oldTagSupport, tagSupport) {
3588
3685
  const fnMatched = oldValueFn === newValueFn;
3589
3686
  if (fnMatched) {
3590
3687
  tagSupport.global = oldTagSupport.global;
3591
- // ??? new mirroring transfer state
3592
3688
  const newest = oldTagSupport.global.newest;
3593
3689
  if (newest) {
3594
3690
  const prevState = newest.memory.state;
@@ -3852,7 +3948,7 @@ function handleStillTag(subject, value, ownerSupport) {
3852
3948
  return (0,_processRegularValue_function__WEBPACK_IMPORTED_MODULE_5__.processRegularValue)(value, subject, subject.insertBefore);
3853
3949
  }
3854
3950
  function prepareUpdateToComponent(templater, subjectTag, insertBefore, ownerSupport) {
3855
- // When was something before component
3951
+ // When last value was not a component
3856
3952
  if (!subjectTag.tagSupport) {
3857
3953
  (0,_processSubjectComponent_function__WEBPACK_IMPORTED_MODULE_8__.processSubjectComponent)(templater, subjectTag, insertBefore, // oldInsertBefore as InsertBefore,
3858
3954
  ownerSupport, {
@@ -3862,9 +3958,7 @@ function prepareUpdateToComponent(templater, subjectTag, insertBefore, ownerSupp
3862
3958
  return subjectTag;
3863
3959
  }
3864
3960
  const tagSupport = new _TagSupport_class__WEBPACK_IMPORTED_MODULE_0__.TagSupport(templater, ownerSupport, subjectTag);
3865
- // ??? new mirroring
3866
3961
  const subjectSup = subjectTag.tagSupport;
3867
- // const prevSupport = (subjectSup.global.newest || subjectSup) as TagSupport
3868
3962
  const prevSupport = subjectSup.global.newest;
3869
3963
  if (prevSupport) {
3870
3964
  const newestState = prevSupport.memory.state;
@@ -3876,7 +3970,6 @@ function prepareUpdateToComponent(templater, subjectTag, insertBefore, ownerSupp
3876
3970
  (0,_insertAfter_function__WEBPACK_IMPORTED_MODULE_12__.insertAfter)(insertBefore, placeholder);
3877
3971
  delete subjectSup.global.placeholder;
3878
3972
  }
3879
- // insertBefore = subjectSup.global.placeholder || insertBefore
3880
3973
  (0,_processSubjectComponent_function__WEBPACK_IMPORTED_MODULE_8__.processSubjectComponent)(templater, subjectTag, insertBefore, ownerSupport, {
3881
3974
  forceElement: true,
3882
3975
  counts: { added: 0, removed: 0 },
@@ -3957,58 +4050,62 @@ var __webpack_exports__ = {};
3957
4050
  \*********************/
3958
4051
  __webpack_require__.r(__webpack_exports__);
3959
4052
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3960
- /* harmony export */ ArrayNoKeyError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_4__.ArrayNoKeyError),
3961
- /* harmony export */ BaseTagSupport: () => (/* reexport safe */ _TagSupport_class__WEBPACK_IMPORTED_MODULE_8__.BaseTagSupport),
3962
- /* harmony export */ StateMismatchError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_4__.StateMismatchError),
4053
+ /* harmony export */ ArrayNoKeyError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_2__.ArrayNoKeyError),
4054
+ /* harmony export */ BaseTagSupport: () => (/* reexport safe */ _TagSupport_class__WEBPACK_IMPORTED_MODULE_6__.BaseTagSupport),
4055
+ /* harmony export */ StateMismatchError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_2__.StateMismatchError),
3963
4056
  /* harmony export */ Subject: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.Subject),
3964
- /* harmony export */ SyncCallbackError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_4__.SyncCallbackError),
4057
+ /* harmony export */ SyncCallbackError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_2__.SyncCallbackError),
3965
4058
  /* harmony export */ Tag: () => (/* reexport safe */ _Tag_class__WEBPACK_IMPORTED_MODULE_10__.Tag),
3966
- /* harmony export */ TagError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_4__.TagError),
3967
- /* harmony export */ TagSupport: () => (/* reexport safe */ _TagSupport_class__WEBPACK_IMPORTED_MODULE_8__.TagSupport),
4059
+ /* harmony export */ TagError: () => (/* reexport safe */ _errors__WEBPACK_IMPORTED_MODULE_2__.TagError),
4060
+ /* harmony export */ TagSupport: () => (/* reexport safe */ _TagSupport_class__WEBPACK_IMPORTED_MODULE_6__.TagSupport),
3968
4061
  /* harmony export */ ValueSubject: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.ValueSubject),
3969
- /* harmony export */ callbackMaker: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.callbackMaker),
4062
+ /* harmony export */ callbackMaker: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.callbackMaker),
3970
4063
  /* harmony export */ combineLatest: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.combineLatest),
3971
4064
  /* harmony export */ hmr: () => (/* binding */ hmr),
3972
- /* harmony export */ html: () => (/* reexport safe */ _html__WEBPACK_IMPORTED_MODULE_3__.html),
3973
- /* harmony export */ interpolateElement: () => (/* reexport safe */ _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_9__.interpolateElement),
3974
- /* harmony export */ interpolateString: () => (/* reexport safe */ _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_9__.interpolateString),
3975
- /* harmony export */ isSubjectInstance: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isSubjectInstance),
3976
- /* harmony export */ isTag: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isTag),
3977
- /* harmony export */ isTagArray: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isTagArray),
3978
- /* harmony export */ isTagClass: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isTagClass),
3979
- /* harmony export */ isTagComponent: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isTagComponent),
3980
- /* harmony export */ isTagTemplater: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_6__.isTagTemplater),
3981
- /* harmony export */ letState: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.letState),
3982
- /* harmony export */ onDestroy: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.onDestroy),
3983
- /* harmony export */ onInit: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.onInit),
3984
- /* harmony export */ providers: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.providers),
4065
+ /* harmony export */ html: () => (/* reexport safe */ _html__WEBPACK_IMPORTED_MODULE_1__.html),
4066
+ /* harmony export */ interpolateElement: () => (/* reexport safe */ _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_8__.interpolateElement),
4067
+ /* harmony export */ interpolateString: () => (/* reexport safe */ _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_8__.interpolateString),
4068
+ /* harmony export */ isSubjectInstance: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isSubjectInstance),
4069
+ /* harmony export */ isTag: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isTag),
4070
+ /* harmony export */ isTagArray: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isTagArray),
4071
+ /* harmony export */ isTagClass: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isTagClass),
4072
+ /* harmony export */ isTagComponent: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isTagComponent),
4073
+ /* harmony export */ isTagTemplater: () => (/* reexport safe */ _isInstance__WEBPACK_IMPORTED_MODULE_3__.isTagTemplater),
4074
+ /* harmony export */ letState: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.letState),
4075
+ /* harmony export */ onDestroy: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.onDestroy),
4076
+ /* harmony export */ onInit: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.onInit),
4077
+ /* harmony export */ providers: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.providers),
3985
4078
  /* harmony export */ renderTagSupport: () => (/* reexport safe */ _renderTagSupport_function__WEBPACK_IMPORTED_MODULE_12__.renderTagSupport),
4079
+ /* harmony export */ renderWithSupport: () => (/* reexport safe */ _renderWithSupport_function__WEBPACK_IMPORTED_MODULE_13__.renderWithSupport),
3986
4080
  /* harmony export */ runBeforeRender: () => (/* reexport safe */ _tagRunner__WEBPACK_IMPORTED_MODULE_11__.runBeforeRender),
3987
- /* harmony export */ setProp: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.setProp),
3988
- /* harmony export */ setUse: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.setUse),
3989
- /* harmony export */ state: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.state),
3990
- /* harmony export */ tag: () => (/* reexport safe */ _tag__WEBPACK_IMPORTED_MODULE_2__.tag),
3991
- /* harmony export */ tagElement: () => (/* reexport safe */ _tagElement__WEBPACK_IMPORTED_MODULE_0__.tagElement),
3992
- /* harmony export */ tags: () => (/* reexport safe */ _tag__WEBPACK_IMPORTED_MODULE_2__.tags),
3993
- /* harmony export */ watch: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_7__.watch),
4081
+ /* harmony export */ setProp: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.setProp),
4082
+ /* harmony export */ setUse: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.setUse),
4083
+ /* harmony export */ state: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.state),
4084
+ /* harmony export */ tag: () => (/* reexport safe */ _tag__WEBPACK_IMPORTED_MODULE_0__.tag),
4085
+ /* harmony export */ tagElement: () => (/* reexport safe */ _tagElement__WEBPACK_IMPORTED_MODULE_9__.tagElement),
4086
+ /* harmony export */ tags: () => (/* reexport safe */ _tag__WEBPACK_IMPORTED_MODULE_0__.tags),
4087
+ /* harmony export */ watch: () => (/* reexport safe */ _state_index__WEBPACK_IMPORTED_MODULE_4__.watch),
3994
4088
  /* harmony export */ willCallback: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.willCallback),
3995
4089
  /* harmony export */ willPromise: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.willPromise),
3996
4090
  /* harmony export */ willSubscribe: () => (/* reexport safe */ _subject_index__WEBPACK_IMPORTED_MODULE_5__.willSubscribe)
3997
4091
  /* harmony export */ });
3998
- /* harmony import */ var _tagElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tagElement */ "./ts/tagElement.ts");
3999
- /* harmony import */ var _ElementTargetEvent_interface__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ElementTargetEvent.interface */ "./ts/ElementTargetEvent.interface.ts");
4000
- /* harmony import */ var _tag__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tag */ "./ts/tag.ts");
4001
- /* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./html */ "./ts/html.ts");
4002
- /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./errors */ "./ts/errors.ts");
4092
+ /* harmony import */ var _tag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tag */ "./ts/tag.ts");
4093
+ /* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./html */ "./ts/html.ts");
4094
+ /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./errors */ "./ts/errors.ts");
4095
+ /* harmony import */ var _isInstance__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isInstance */ "./ts/isInstance.ts");
4096
+ /* harmony import */ var _state_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./state/index */ "./ts/state/index.ts");
4003
4097
  /* harmony import */ var _subject_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./subject/index */ "./ts/subject/index.ts");
4004
- /* harmony import */ var _isInstance__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isInstance */ "./ts/isInstance.ts");
4005
- /* harmony import */ var _state_index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./state/index */ "./ts/state/index.ts");
4006
- /* harmony import */ var _TagSupport_class__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TagSupport.class */ "./ts/TagSupport.class.ts");
4007
- /* harmony import */ var _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./interpolations/interpolateElement */ "./ts/interpolations/interpolateElement.ts");
4098
+ /* harmony import */ var _TagSupport_class__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./TagSupport.class */ "./ts/TagSupport.class.ts");
4099
+ /* harmony import */ var _ElementTargetEvent_interface__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ElementTargetEvent.interface */ "./ts/ElementTargetEvent.interface.ts");
4100
+ /* harmony import */ var _interpolations_interpolateElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./interpolations/interpolateElement */ "./ts/interpolations/interpolateElement.ts");
4101
+ /* harmony import */ var _tagElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./tagElement */ "./ts/tagElement.ts");
4008
4102
  /* harmony import */ var _Tag_class__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Tag.class */ "./ts/Tag.class.ts");
4009
4103
  /* harmony import */ var _tagRunner__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./tagRunner */ "./ts/tagRunner.ts");
4010
4104
  /* harmony import */ var _renderTagSupport_function__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./renderTagSupport.function */ "./ts/renderTagSupport.function.ts");
4011
- // import { redrawTag } from "./redrawTag.function"
4105
+ /* harmony import */ var _renderWithSupport_function__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./renderWithSupport.function */ "./ts/renderWithSupport.function.ts");
4106
+
4107
+
4108
+
4012
4109
 
4013
4110
 
4014
4111
 
@@ -4018,16 +4115,13 @@ __webpack_require__.r(__webpack_exports__);
4018
4115
 
4019
4116
 
4020
4117
 
4021
- // export * from "./redrawTag.function"
4022
4118
 
4023
- // TODO: export *
4024
4119
 
4025
4120
 
4026
4121
 
4027
4122
 
4028
4123
  const hmr = {
4029
- tagElement: _tagElement__WEBPACK_IMPORTED_MODULE_0__.tagElement,
4030
- // redrawTag
4124
+ tagElement: _tagElement__WEBPACK_IMPORTED_MODULE_9__.tagElement, renderWithSupport: _renderWithSupport_function__WEBPACK_IMPORTED_MODULE_13__.renderWithSupport, renderTagSupport: _renderTagSupport_function__WEBPACK_IMPORTED_MODULE_12__.renderTagSupport,
4031
4125
  };
4032
4126
 
4033
4127
  })();
@@ -4058,6 +4152,7 @@ var __webpack_exports__onDestroy = __webpack_exports__.onDestroy;
4058
4152
  var __webpack_exports__onInit = __webpack_exports__.onInit;
4059
4153
  var __webpack_exports__providers = __webpack_exports__.providers;
4060
4154
  var __webpack_exports__renderTagSupport = __webpack_exports__.renderTagSupport;
4155
+ var __webpack_exports__renderWithSupport = __webpack_exports__.renderWithSupport;
4061
4156
  var __webpack_exports__runBeforeRender = __webpack_exports__.runBeforeRender;
4062
4157
  var __webpack_exports__setProp = __webpack_exports__.setProp;
4063
4158
  var __webpack_exports__setUse = __webpack_exports__.setUse;
@@ -4069,6 +4164,6 @@ var __webpack_exports__watch = __webpack_exports__.watch;
4069
4164
  var __webpack_exports__willCallback = __webpack_exports__.willCallback;
4070
4165
  var __webpack_exports__willPromise = __webpack_exports__.willPromise;
4071
4166
  var __webpack_exports__willSubscribe = __webpack_exports__.willSubscribe;
4072
- export { __webpack_exports__ArrayNoKeyError as ArrayNoKeyError, __webpack_exports__BaseTagSupport as BaseTagSupport, __webpack_exports__StateMismatchError as StateMismatchError, __webpack_exports__Subject as Subject, __webpack_exports__SyncCallbackError as SyncCallbackError, __webpack_exports__Tag as Tag, __webpack_exports__TagError as TagError, __webpack_exports__TagSupport as TagSupport, __webpack_exports__ValueSubject as ValueSubject, __webpack_exports__callbackMaker as callbackMaker, __webpack_exports__combineLatest as combineLatest, __webpack_exports__hmr as hmr, __webpack_exports__html as html, __webpack_exports__interpolateElement as interpolateElement, __webpack_exports__interpolateString as interpolateString, __webpack_exports__isSubjectInstance as isSubjectInstance, __webpack_exports__isTag as isTag, __webpack_exports__isTagArray as isTagArray, __webpack_exports__isTagClass as isTagClass, __webpack_exports__isTagComponent as isTagComponent, __webpack_exports__isTagTemplater as isTagTemplater, __webpack_exports__letState as letState, __webpack_exports__onDestroy as onDestroy, __webpack_exports__onInit as onInit, __webpack_exports__providers as providers, __webpack_exports__renderTagSupport as renderTagSupport, __webpack_exports__runBeforeRender as runBeforeRender, __webpack_exports__setProp as setProp, __webpack_exports__setUse as setUse, __webpack_exports__state as state, __webpack_exports__tag as tag, __webpack_exports__tagElement as tagElement, __webpack_exports__tags as tags, __webpack_exports__watch as watch, __webpack_exports__willCallback as willCallback, __webpack_exports__willPromise as willPromise, __webpack_exports__willSubscribe as willSubscribe };
4167
+ export { __webpack_exports__ArrayNoKeyError as ArrayNoKeyError, __webpack_exports__BaseTagSupport as BaseTagSupport, __webpack_exports__StateMismatchError as StateMismatchError, __webpack_exports__Subject as Subject, __webpack_exports__SyncCallbackError as SyncCallbackError, __webpack_exports__Tag as Tag, __webpack_exports__TagError as TagError, __webpack_exports__TagSupport as TagSupport, __webpack_exports__ValueSubject as ValueSubject, __webpack_exports__callbackMaker as callbackMaker, __webpack_exports__combineLatest as combineLatest, __webpack_exports__hmr as hmr, __webpack_exports__html as html, __webpack_exports__interpolateElement as interpolateElement, __webpack_exports__interpolateString as interpolateString, __webpack_exports__isSubjectInstance as isSubjectInstance, __webpack_exports__isTag as isTag, __webpack_exports__isTagArray as isTagArray, __webpack_exports__isTagClass as isTagClass, __webpack_exports__isTagComponent as isTagComponent, __webpack_exports__isTagTemplater as isTagTemplater, __webpack_exports__letState as letState, __webpack_exports__onDestroy as onDestroy, __webpack_exports__onInit as onInit, __webpack_exports__providers as providers, __webpack_exports__renderTagSupport as renderTagSupport, __webpack_exports__renderWithSupport as renderWithSupport, __webpack_exports__runBeforeRender as runBeforeRender, __webpack_exports__setProp as setProp, __webpack_exports__setUse as setUse, __webpack_exports__state as state, __webpack_exports__tag as tag, __webpack_exports__tagElement as tagElement, __webpack_exports__tags as tags, __webpack_exports__watch as watch, __webpack_exports__willCallback as willCallback, __webpack_exports__willPromise as willPromise, __webpack_exports__willSubscribe as willSubscribe };
4073
4168
 
4074
4169
  //# sourceMappingURL=bundle.js.map