taggedjs 2.5.4 → 2.5.6

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 (243) hide show
  1. package/bundle.js +3378 -2966
  2. package/bundle.js.map +1 -1
  3. package/js/Props.d.ts +1 -1
  4. package/js/Tag.class.d.ts +1 -1
  5. package/js/TemplaterResult.class.d.ts +14 -8
  6. package/js/TemplaterResult.class.js +13 -3
  7. package/js/TemplaterResult.class.js.map +1 -1
  8. package/js/afterInterpolateElement.function.d.ts +2 -2
  9. package/js/alterProps.function.d.ts +2 -3
  10. package/js/alterProps.function.js +6 -7
  11. package/js/alterProps.function.js.map +1 -1
  12. package/js/checkDestroyPrevious.function.d.ts +3 -3
  13. package/js/checkDestroyPrevious.function.js +2 -2
  14. package/js/checkDestroyPrevious.function.js.map +1 -1
  15. package/js/cloneValueArray.function.d.ts +1 -1
  16. package/js/destroy.support.d.ts +1 -1
  17. package/js/destroyTag.function.d.ts +1 -1
  18. package/js/hasTagSupportChanged.function.d.ts +1 -1
  19. package/js/index.d.ts +15 -12
  20. package/js/index.js +15 -12
  21. package/js/index.js.map +1 -1
  22. package/js/insertAfter.function.d.ts +1 -1
  23. package/js/interpolations/Clones.type.d.ts +3 -0
  24. package/js/interpolations/Clones.type.js +2 -0
  25. package/js/interpolations/Clones.type.js.map +1 -0
  26. package/js/interpolations/ElementTargetEvent.interface.d.ts +6 -0
  27. package/js/interpolations/ElementTargetEvent.interface.js +2 -0
  28. package/js/interpolations/ElementTargetEvent.interface.js.map +1 -0
  29. package/js/interpolations/afterInterpolateElement.function.d.ts +4 -0
  30. package/js/interpolations/afterInterpolateElement.function.js +12 -0
  31. package/js/interpolations/afterInterpolateElement.function.js.map +1 -0
  32. package/js/interpolations/bindSubjectCallback.function.d.ts +1 -1
  33. package/js/interpolations/bindSubjectCallback.function.js +11 -9
  34. package/js/interpolations/bindSubjectCallback.function.js.map +1 -1
  35. package/js/interpolations/interpolateAttributes.d.ts +2 -2
  36. package/js/interpolations/interpolateContentTemplates.d.ts +2 -2
  37. package/js/interpolations/interpolateElement.d.ts +2 -2
  38. package/js/interpolations/interpolateElement.js +1 -1
  39. package/js/interpolations/interpolateElement.js.map +1 -1
  40. package/js/interpolations/interpolateTemplate.d.ts +4 -4
  41. package/js/interpolations/interpolateTemplate.js +19 -4
  42. package/js/interpolations/interpolateTemplate.js.map +1 -1
  43. package/js/interpolations/processAttribute.function.d.ts +2 -2
  44. package/js/interpolations/scanTextAreaValue.function.d.ts +2 -2
  45. package/js/isInstance.d.ts +2 -2
  46. package/js/isInstance.js +2 -1
  47. package/js/isInstance.js.map +1 -1
  48. package/js/isLikeTags.function.d.ts +2 -1
  49. package/js/isLikeTags.function.js +3 -0
  50. package/js/isLikeTags.function.js.map +1 -1
  51. package/js/processNewValue.function.d.ts +1 -1
  52. package/js/processNewValue.function.js +1 -1
  53. package/js/processNewValue.function.js.map +1 -1
  54. package/js/processSubjectComponent.function.d.ts +1 -1
  55. package/js/processSubjectComponent.function.js +1 -1
  56. package/js/processSubjectComponent.function.js.map +1 -1
  57. package/js/processSubjectValue.function.d.ts +2 -2
  58. package/js/processSubjectValue.function.js +2 -2
  59. package/js/processSubjectValue.function.js.map +1 -1
  60. package/js/processTag.function.d.ts +1 -1
  61. package/js/processTag.function.js +1 -1
  62. package/js/processTag.function.js.map +1 -1
  63. package/js/processTagArray.d.ts +1 -1
  64. package/js/processTagArray.js +2 -2
  65. package/js/processTagArray.js.map +1 -1
  66. package/js/processTagResult.function.d.ts +2 -2
  67. package/js/render.d.ts +1 -1
  68. package/js/render.js +6 -5
  69. package/js/render.js.map +1 -1
  70. package/js/renderExistingTag.function.d.ts +1 -1
  71. package/js/renderExistingTag.function.js +3 -4
  72. package/js/renderExistingTag.function.js.map +1 -1
  73. package/js/renderSubjectComponent.function.d.ts +1 -1
  74. package/js/renderSubjectComponent.function.js +1 -1
  75. package/js/renderSubjectComponent.function.js.map +1 -1
  76. package/js/renderTagOnly.function.d.ts +4 -0
  77. package/js/renderTagOnly.function.js +39 -0
  78. package/js/renderTagOnly.function.js.map +1 -0
  79. package/js/renderTagSupport.function.d.ts +1 -1
  80. package/js/renderTagSupport.function.js +1 -1
  81. package/js/renderTagSupport.function.js.map +1 -1
  82. package/js/renderWithSupport.function.d.ts +2 -3
  83. package/js/renderWithSupport.function.js +4 -36
  84. package/js/renderWithSupport.function.js.map +1 -1
  85. package/js/state/callbackMaker.function.d.ts +3 -2
  86. package/js/state/callbackMaker.function.js +40 -18
  87. package/js/state/callbackMaker.function.js.map +1 -1
  88. package/js/state/children.d.ts +1 -0
  89. package/js/state/children.js +14 -0
  90. package/js/state/children.js.map +1 -0
  91. package/js/state/index.d.ts +2 -1
  92. package/js/state/index.js +2 -1
  93. package/js/state/index.js.map +1 -1
  94. package/js/state/provider.utils.d.ts +1 -1
  95. package/js/state/provider.utils.js +7 -7
  96. package/js/state/provider.utils.js.map +1 -1
  97. package/js/state/providers.d.ts +4 -2
  98. package/js/state/providers.js +56 -47
  99. package/js/state/providers.js.map +1 -1
  100. package/js/state/setUse.function.d.ts +9 -8
  101. package/js/state/setUse.function.js.map +1 -1
  102. package/js/state/state.function.js +17 -0
  103. package/js/state/state.function.js.map +1 -1
  104. package/js/state/state.utils.d.ts +1 -1
  105. package/js/state/state.utils.js +38 -24
  106. package/js/state/state.utils.js.map +1 -1
  107. package/js/state/subject.function.d.ts +12 -0
  108. package/js/state/subject.function.js +23 -0
  109. package/js/state/subject.function.js.map +1 -0
  110. package/js/state/syncStates.function.d.ts +2 -0
  111. package/js/state/syncStates.function.js +11 -0
  112. package/js/state/syncStates.function.js.map +1 -0
  113. package/js/state/watch.function.d.ts +20 -3
  114. package/js/state/watch.function.js +106 -10
  115. package/js/state/watch.function.js.map +1 -1
  116. package/js/subject/Subject.class.d.ts +9 -3
  117. package/js/subject/Subject.class.js +20 -54
  118. package/js/subject/Subject.class.js.map +1 -1
  119. package/js/subject/Subject.utils.d.ts +6 -3
  120. package/js/subject/Subject.utils.js +51 -3
  121. package/js/subject/Subject.utils.js.map +1 -1
  122. package/js/subject/ValueSubject.d.ts +2 -2
  123. package/js/subject/combineLatest.function.js +10 -2
  124. package/js/subject/combineLatest.function.js.map +1 -1
  125. package/js/subject/subject.cancel.d.ts +2 -0
  126. package/js/subject/subject.cancel.js +3 -0
  127. package/js/subject/subject.cancel.js.map +1 -0
  128. package/js/subject/will.functions.d.ts +1 -1
  129. package/js/subject.types.d.ts +2 -2
  130. package/js/tag/Tag.class.d.ts +43 -0
  131. package/js/tag/Tag.class.js +27 -0
  132. package/js/tag/Tag.class.js.map +1 -0
  133. package/js/tag/TagSupport.class.d.ts +58 -0
  134. package/js/tag/TagSupport.class.js +306 -0
  135. package/js/tag/TagSupport.class.js.map +1 -0
  136. package/js/tag/checkDestroyPrevious.function.d.ts +8 -0
  137. package/js/tag/checkDestroyPrevious.function.js +83 -0
  138. package/js/tag/checkDestroyPrevious.function.js.map +1 -0
  139. package/js/tag/cloneValueArray.function.d.ts +2 -0
  140. package/js/tag/cloneValueArray.function.js +19 -0
  141. package/js/tag/cloneValueArray.function.js.map +1 -0
  142. package/js/tag/destroy.support.d.ts +6 -0
  143. package/js/tag/destroy.support.js +10 -0
  144. package/js/tag/destroy.support.js.map +1 -0
  145. package/js/tag/destroyTag.function.d.ts +3 -0
  146. package/js/tag/destroyTag.function.js +12 -0
  147. package/js/tag/destroyTag.function.js.map +1 -0
  148. package/js/tag/elementDestroyCheck.function.d.ts +3 -0
  149. package/js/tag/elementDestroyCheck.function.js +17 -0
  150. package/js/tag/elementDestroyCheck.function.js.map +1 -0
  151. package/js/tag/getSupportInCycle.function.d.ts +1 -0
  152. package/js/tag/getSupportInCycle.function.js +5 -0
  153. package/js/tag/getSupportInCycle.function.js.map +1 -0
  154. package/js/tag/hasPropChanges.function.d.ts +9 -0
  155. package/js/tag/hasPropChanges.function.js +80 -0
  156. package/js/tag/hasPropChanges.function.js.map +1 -0
  157. package/js/tag/hasTagSupportChanged.function.d.ts +4 -0
  158. package/js/tag/hasTagSupportChanged.function.js +23 -0
  159. package/js/tag/hasTagSupportChanged.function.js.map +1 -0
  160. package/js/tag/html.d.ts +4 -0
  161. package/js/tag/html.js +5 -0
  162. package/js/tag/html.js.map +1 -0
  163. package/js/tag/isLikeTags.function.d.ts +5 -0
  164. package/js/tag/isLikeTags.function.js +42 -0
  165. package/js/tag/isLikeTags.function.js.map +1 -0
  166. package/js/tag/render/renderExistingTag.function.d.ts +7 -0
  167. package/js/tag/render/renderExistingTag.function.js +32 -0
  168. package/js/tag/render/renderExistingTag.function.js.map +1 -0
  169. package/js/tag/render/renderSubjectComponent.function.d.ts +3 -0
  170. package/js/tag/render/renderSubjectComponent.function.js +14 -0
  171. package/js/tag/render/renderSubjectComponent.function.js.map +1 -0
  172. package/js/tag/render/renderTagOnly.function.d.ts +3 -0
  173. package/js/tag/render/renderTagOnly.function.js +41 -0
  174. package/js/tag/render/renderTagOnly.function.js.map +1 -0
  175. package/js/tag/render/renderTagSupport.function.d.ts +4 -0
  176. package/js/tag/render/renderTagSupport.function.js +37 -0
  177. package/js/tag/render/renderTagSupport.function.js.map +1 -0
  178. package/js/tag/render/renderWithSupport.function.d.ts +5 -0
  179. package/js/tag/render/renderWithSupport.function.js +31 -0
  180. package/js/tag/render/renderWithSupport.function.js.map +1 -0
  181. package/js/tag/setTagPlaceholder.function.d.ts +4 -0
  182. package/js/tag/setTagPlaceholder.function.js +12 -0
  183. package/js/tag/setTagPlaceholder.function.js.map +1 -0
  184. package/js/tag/tag.d.ts +26 -0
  185. package/js/tag/tag.js +121 -0
  186. package/js/tag/tag.js.map +1 -0
  187. package/js/tag/tagElement.d.ts +9 -0
  188. package/js/tag/tagElement.js +60 -0
  189. package/js/tag/tagElement.js.map +1 -0
  190. package/js/tag/tagRunner.d.ts +5 -0
  191. package/js/tag/tagRunner.js +28 -0
  192. package/js/tag/tagRunner.js.map +1 -0
  193. package/js/tag/update/processNewValue.function.d.ts +3 -0
  194. package/js/tag/update/processNewValue.function.js +42 -0
  195. package/js/tag/update/processNewValue.function.js.map +1 -0
  196. package/js/tag/update/processRegularValue.function.d.ts +5 -0
  197. package/js/tag/update/processRegularValue.function.js +15 -0
  198. package/js/tag/update/processRegularValue.function.js.map +1 -0
  199. package/js/tag/update/processSubjectComponent.function.d.ts +9 -0
  200. package/js/tag/update/processSubjectComponent.function.js +35 -0
  201. package/js/tag/update/processSubjectComponent.function.js.map +1 -0
  202. package/js/tag/update/processSubjectValue.function.d.ts +27 -0
  203. package/js/tag/update/processSubjectValue.function.js +55 -0
  204. package/js/tag/update/processSubjectValue.function.js.map +1 -0
  205. package/js/tag/update/processTag.function.d.ts +11 -0
  206. package/js/tag/update/processTag.function.js +46 -0
  207. package/js/tag/update/processTag.function.js.map +1 -0
  208. package/js/tag/update/processTagArray.d.ts +22 -0
  209. package/js/tag/update/processTagArray.js +122 -0
  210. package/js/tag/update/processTagArray.js.map +1 -0
  211. package/js/tag/update/processTagResult.function.d.ts +11 -0
  212. package/js/tag/update/processTagResult.function.js +30 -0
  213. package/js/tag/update/processTagResult.function.js.map +1 -0
  214. package/js/tag/update/updateContextItem.function.d.ts +3 -0
  215. package/js/tag/update/updateContextItem.function.js +44 -0
  216. package/js/tag/update/updateContextItem.function.js.map +1 -0
  217. package/js/tag/update/updateExistingTagComponent.function.d.ts +5 -0
  218. package/js/tag/update/updateExistingTagComponent.function.js +116 -0
  219. package/js/tag/update/updateExistingTagComponent.function.js.map +1 -0
  220. package/js/tag/update/updateExistingValue.function.d.ts +4 -0
  221. package/js/tag/update/updateExistingValue.function.js +137 -0
  222. package/js/tag/update/updateExistingValue.function.js.map +1 -0
  223. package/js/tag/updates/processNewValue.function.d.ts +3 -0
  224. package/js/tag/updates/processNewValue.function.js +43 -0
  225. package/js/tag/updates/processNewValue.function.js.map +1 -0
  226. package/js/tag.js +1 -1
  227. package/js/tag.js.map +1 -1
  228. package/js/tagElement.d.ts +1 -1
  229. package/js/tagElement.js +1 -1
  230. package/js/tagElement.js.map +1 -1
  231. package/js/tagRunner.d.ts +1 -1
  232. package/js/updateBeforeTemplate.function.d.ts +1 -1
  233. package/js/updateBeforeTemplate.function.js.map +1 -1
  234. package/js/updateContextItem.function.d.ts +1 -1
  235. package/js/updateContextItem.function.js +1 -1
  236. package/js/updateContextItem.function.js.map +1 -1
  237. package/js/updateExistingTagComponent.function.d.ts +2 -2
  238. package/js/updateExistingTagComponent.function.js +3 -3
  239. package/js/updateExistingTagComponent.function.js.map +1 -1
  240. package/js/updateExistingValue.function.d.ts +3 -3
  241. package/js/updateExistingValue.function.js +6 -6
  242. package/js/updateExistingValue.function.js.map +1 -1
  243. package/package.json +1 -1
@@ -0,0 +1,306 @@
1
+ import { escapeVariable, variablePrefix } from './Tag.class';
2
+ import { deepClone } from '../deepFunctions';
3
+ import { isTagComponent } from '../isInstance';
4
+ import { cloneValueArray } from './cloneValueArray.function';
5
+ import { restoreTagMarker } from './checkDestroyPrevious.function';
6
+ import { runBeforeDestroy } from './tagRunner';
7
+ import { getChildTagsToDestroy } from './destroy.support';
8
+ import { elementDestroyCheck } from './elementDestroyCheck.function';
9
+ import { updateContextItem } from './update/updateContextItem.function';
10
+ import { processNewValue } from './update/processNewValue.function';
11
+ import { setTagPlaceholder } from './setTagPlaceholder.function';
12
+ import { interpolateElement, interpolateString } from '../interpolations/interpolateElement';
13
+ import { subscribeToTemplate } from '../interpolations/interpolateTemplate';
14
+ import { afterInterpolateElement } from '../interpolations/afterInterpolateElement.function';
15
+ import { renderSubjectComponent } from './render/renderSubjectComponent.function';
16
+ const prefixSearch = new RegExp(variablePrefix, 'g');
17
+ /** used only for apps, otherwise use TagSupport */
18
+ export class BaseTagSupport {
19
+ templater;
20
+ subject;
21
+ isApp = true;
22
+ appElement; // only seen on this.getAppTagSupport().appElement
23
+ strings;
24
+ values;
25
+ lastTemplateString = undefined; // used to compare templates for updates
26
+ propsConfig;
27
+ // stays with current render
28
+ memory = {
29
+ state: [],
30
+ };
31
+ clones = []; // elements on document. Needed at destroy process to know what to destroy
32
+ // travels with all rerenderings
33
+ global = {
34
+ context: {}, // populated after reading interpolated.values array converted to an object {variable0, variable:1}
35
+ providers: [],
36
+ /** Indicator of re-rending. Saves from double rending something already rendered */
37
+ renderCount: 0,
38
+ deleted: false,
39
+ subscriptions: [],
40
+ };
41
+ hasLiveElements = false;
42
+ constructor(templater, subject) {
43
+ this.templater = templater;
44
+ this.subject = subject;
45
+ const children = templater.children; // children tags passed in as arguments
46
+ const kidValue = children.value;
47
+ const props = templater.props; // natural props
48
+ const latestCloned = props.map(props => deepClone(props));
49
+ this.propsConfig = {
50
+ latest: props,
51
+ latestCloned, // assume its HTML children and then detect
52
+ lastClonedKidValues: kidValue.map(kid => {
53
+ const cloneValues = cloneValueArray(kid.values);
54
+ return cloneValues;
55
+ })
56
+ };
57
+ }
58
+ /** Function that kicks off actually putting tags down as HTML elements */
59
+ buildBeforeElement(insertBefore, options = {
60
+ forceElement: false,
61
+ counts: { added: 0, removed: 0 },
62
+ }) {
63
+ const subject = this.subject;
64
+ const global = this.global;
65
+ global.insertBefore = insertBefore;
66
+ if (!global.placeholder) {
67
+ setTagPlaceholder(global);
68
+ }
69
+ const placeholderElm = global.placeholder;
70
+ global.oldest = this;
71
+ global.newest = this;
72
+ subject.tagSupport = this;
73
+ this.hasLiveElements = true;
74
+ const context = this.update();
75
+ const template = this.getTemplate();
76
+ const isForceElement = options.forceElement;
77
+ const elementContainer = document.createElement('div');
78
+ elementContainer.id = 'tag-temp-holder';
79
+ // render content with a first child that we can know is our first element
80
+ elementContainer.innerHTML = `<template id="temp-template-tag-wrap">${template.string}</template>`;
81
+ // Search/replace innerHTML variables but don't interpolate tag components just yet
82
+ const { tagComponents } = interpolateElement(elementContainer, context, template, this, // ownerSupport,
83
+ {
84
+ forceElement: options.forceElement,
85
+ counts: options.counts
86
+ });
87
+ afterInterpolateElement(elementContainer, placeholderElm, this, // ownerSupport
88
+ context, options);
89
+ // Any tag components that were found should be processed AFTER the owner processes its elements. Avoid double processing of elements attributes like (oninit)=${}
90
+ tagComponents.forEach(tagComponent => {
91
+ subscribeToTemplate(tagComponent.insertBefore, tagComponent.subject, tagComponent.ownerSupport, options.counts, { isForceElement });
92
+ afterInterpolateElement(elementContainer, tagComponent.insertBefore, tagComponent.ownerSupport, context, options);
93
+ });
94
+ }
95
+ getTemplate() {
96
+ const thisTag = this.templater.tag;
97
+ const strings = this.strings || thisTag.strings;
98
+ const values = this.values || thisTag.values;
99
+ const string = strings.map((string, index) => {
100
+ const safeString = string.replace(prefixSearch, escapeVariable);
101
+ const endString = safeString + (values.length > index ? `{${variablePrefix}${index}}` : '');
102
+ const trimString = endString.replace(/>\s*/g, '>').replace(/\s*</g, '<');
103
+ return trimString;
104
+ }).join('');
105
+ const interpolation = interpolateString(string);
106
+ this.lastTemplateString = interpolation.string;
107
+ return {
108
+ interpolation,
109
+ string: interpolation.string,
110
+ strings,
111
+ values,
112
+ context: this.global.context || {},
113
+ };
114
+ }
115
+ update() {
116
+ return this.updateContext(this.global.context);
117
+ }
118
+ updateContext(context) {
119
+ const thisTag = this.templater.tag;
120
+ const strings = this.strings || thisTag.strings;
121
+ const values = this.values || thisTag.values;
122
+ strings.map((_string, index) => {
123
+ const variableName = variablePrefix + index;
124
+ const hasValue = values.length > index;
125
+ const value = values[index];
126
+ // is something already there?
127
+ const exists = variableName in context;
128
+ if (exists) {
129
+ return updateContextItem(context, variableName, value);
130
+ }
131
+ if (!hasValue) {
132
+ return;
133
+ }
134
+ // 🆕 First time values below
135
+ context[variableName] = processNewValue(hasValue, value, this);
136
+ });
137
+ return context;
138
+ }
139
+ }
140
+ export class TagSupport extends BaseTagSupport {
141
+ templater;
142
+ ownerTagSupport;
143
+ subject;
144
+ version;
145
+ isApp = false;
146
+ childTags = []; // tags on me
147
+ constructor(templater, // at runtime rendering of a tag, it needs to be married to a new TagSupport()
148
+ ownerTagSupport, subject, version = 0) {
149
+ super(templater, subject);
150
+ this.templater = templater;
151
+ this.ownerTagSupport = ownerTagSupport;
152
+ this.subject = subject;
153
+ this.version = version;
154
+ }
155
+ destroy(options = {
156
+ stagger: 0,
157
+ byParent: false, // Only destroy clones of direct children
158
+ }) {
159
+ const firstDestroy = !options.byParent;
160
+ const global = this.global;
161
+ const subject = this.subject;
162
+ const childTags = options.byParent ? [] : getChildTagsToDestroy(this.childTags);
163
+ if (firstDestroy && isTagComponent(this.templater)) {
164
+ runBeforeDestroy(this, this);
165
+ }
166
+ // signify immediately child has been deleted (looked for during event processing)
167
+ childTags.forEach(child => {
168
+ const subGlobal = child.global;
169
+ delete subGlobal.newest;
170
+ subGlobal.deleted = true;
171
+ if (isTagComponent(child.templater)) {
172
+ runBeforeDestroy(child, child);
173
+ }
174
+ });
175
+ // HTML DOM manipulation. Put back down the template tag
176
+ const insertBefore = global.insertBefore;
177
+ if (insertBefore.nodeName === 'TEMPLATE') {
178
+ const placeholder = global.placeholder;
179
+ if (placeholder && !('arrayValue' in this.memory)) {
180
+ if (!options.byParent) {
181
+ restoreTagMarker(this);
182
+ }
183
+ }
184
+ }
185
+ this.destroySubscriptions();
186
+ let mainPromise;
187
+ if (this.ownerTagSupport) {
188
+ this.ownerTagSupport.childTags = this.ownerTagSupport.childTags.filter(child => child !== this);
189
+ }
190
+ if (firstDestroy) {
191
+ const { stagger, promise } = this.destroyClones(options);
192
+ options.stagger = stagger;
193
+ if (promise) {
194
+ mainPromise = promise;
195
+ }
196
+ }
197
+ else {
198
+ this.destroyClones();
199
+ }
200
+ // data reset
201
+ delete global.placeholder;
202
+ global.context = {};
203
+ delete global.oldest;
204
+ delete global.newest;
205
+ global.deleted = true;
206
+ this.childTags.length = 0;
207
+ this.hasLiveElements = false;
208
+ delete subject.tagSupport;
209
+ if (mainPromise) {
210
+ mainPromise = mainPromise.then(async () => {
211
+ const promises = childTags.map(kid => kid.destroy({ stagger: 0, byParent: true }));
212
+ return Promise.all(promises);
213
+ });
214
+ }
215
+ else {
216
+ mainPromise = Promise.all(childTags.map(kid => kid.destroy({ stagger: 0, byParent: true })));
217
+ }
218
+ return mainPromise.then(() => options.stagger);
219
+ }
220
+ destroySubscriptions() {
221
+ const global = this.global;
222
+ global.subscriptions.forEach(cloneSub => cloneSub.unsubscribe());
223
+ global.subscriptions.length = 0;
224
+ }
225
+ destroyClones({ stagger } = {
226
+ stagger: 0,
227
+ }) {
228
+ const oldClones = [...this.clones];
229
+ this.clones.length = 0; // tag maybe used for something else
230
+ const promises = oldClones.map(clone => this.checkCloneRemoval(clone, stagger)).filter(x => x); // only return promises
231
+ const oldContext = this.global.context;
232
+ Object.values(oldContext).forEach(value => {
233
+ const clone = value.clone;
234
+ if (clone && clone.parentNode) {
235
+ clone.parentNode.removeChild(clone);
236
+ }
237
+ });
238
+ if (promises.length) {
239
+ return { promise: Promise.all(promises), stagger };
240
+ }
241
+ return { stagger };
242
+ }
243
+ /** Reviews elements for the presences of ondestroy */
244
+ checkCloneRemoval(clone, stagger) {
245
+ let promise;
246
+ const customElm = clone;
247
+ if (customElm.ondestroy) {
248
+ promise = elementDestroyCheck(customElm, stagger);
249
+ }
250
+ const next = () => {
251
+ const parentNode = clone.parentNode;
252
+ if (parentNode) {
253
+ parentNode.removeChild(clone);
254
+ }
255
+ const ownerSupport = this.ownerTagSupport;
256
+ if (ownerSupport) {
257
+ // Sometimes my clones were first registered to my owner, remove them from owner
258
+ ownerSupport.clones = ownerSupport.clones.filter(compareClone => compareClone !== clone);
259
+ }
260
+ };
261
+ if (promise instanceof Promise) {
262
+ return promise.then(next);
263
+ }
264
+ else {
265
+ next();
266
+ }
267
+ return promise;
268
+ }
269
+ updateBy(tagSupport) {
270
+ const tempTag = tagSupport.templater.tag;
271
+ this.updateConfig(tempTag.strings, tempTag.values);
272
+ }
273
+ updateConfig(strings, values) {
274
+ this.strings = strings;
275
+ this.updateValues(values);
276
+ }
277
+ updateValues(values) {
278
+ this.values = values;
279
+ return this.updateContext(this.global.context);
280
+ }
281
+ /** Used during HMR only where static content itself could have been edited */
282
+ async rebuild() {
283
+ delete this.strings; // seek the templater strings instead now
284
+ delete this.values; // seek the templater strings instead now
285
+ restoreTagMarkers(this);
286
+ const newSupport = renderSubjectComponent(this.subject, this, this.ownerTagSupport);
287
+ await this.destroy();
288
+ newSupport.buildBeforeElement(this.global.insertBefore, {
289
+ forceElement: true,
290
+ counts: { added: 0, removed: 0 },
291
+ });
292
+ return newSupport;
293
+ }
294
+ getAppTagSupport() {
295
+ let tag = this;
296
+ while (tag.ownerTagSupport) {
297
+ tag = tag.ownerTagSupport;
298
+ }
299
+ return tag;
300
+ }
301
+ }
302
+ function restoreTagMarkers(support) {
303
+ restoreTagMarker(support);
304
+ support.childTags.forEach(childTag => restoreTagMarkers(childTag.global.oldest));
305
+ }
306
+ //# sourceMappingURL=TagSupport.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagSupport.class.js","sourceRoot":"","sources":["../../ts/tag/TagSupport.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { InterpolateSubject } from './update/processSubjectValue.function';
2
+ import { Counts } from '../interpolations/interpolateTemplate';
3
+ import { InsertBefore } from '../interpolations/Clones.type';
4
+ import { TagSupport } from './TagSupport.class';
5
+ export declare function checkDestroyPrevious(subject: InterpolateSubject, // existing.value is the old value
6
+ newValue: unknown, insertBefore: InsertBefore): false | "array" | 2 | "different-tag" | "changed-simple-value";
7
+ export declare function destroyArrayTag(tagSupport: TagSupport, counts: Counts): void;
8
+ export declare function restoreTagMarker(lastSupport: TagSupport): void;
@@ -0,0 +1,83 @@
1
+ import { isTag, isTagArray, isTagComponent } from '../isInstance';
2
+ import { isLikeTags } from './isLikeTags.function';
3
+ import { destroyTagMemory, destroyTagSupportPast } from './destroyTag.function';
4
+ import { insertAfter } from '../insertAfter.function';
5
+ export function checkDestroyPrevious(subject, // existing.value is the old value
6
+ newValue, insertBefore) {
7
+ const arraySubject = subject;
8
+ const wasArray = arraySubject.lastArray;
9
+ // no longer an array
10
+ if (wasArray && !isTagArray(newValue)) {
11
+ const placeholderElm = arraySubject.placeholder;
12
+ delete arraySubject.lastArray;
13
+ delete arraySubject.placeholder;
14
+ insertAfter(insertBefore, placeholderElm);
15
+ wasArray.forEach(({ tagSupport }) => destroyArrayTag(tagSupport, { added: 0, removed: 0 }));
16
+ return 'array';
17
+ }
18
+ const tagSubject = subject;
19
+ const lastSupport = tagSubject.tagSupport;
20
+ // no longer tag or component?
21
+ if (lastSupport) {
22
+ const isValueTag = isTag(newValue);
23
+ const isSubjectTag = isTag(subject.value);
24
+ if (isSubjectTag && isValueTag) {
25
+ const newTag = newValue;
26
+ // its a different tag now
27
+ if (!isLikeTags(newTag, lastSupport)) {
28
+ // put template back down
29
+ restoreTagMarker(lastSupport);
30
+ destroyTagMemory(lastSupport);
31
+ return 2;
32
+ }
33
+ return false;
34
+ }
35
+ const isValueTagComponent = isTagComponent(newValue);
36
+ if (isValueTagComponent) {
37
+ return false; // its still a tag component
38
+ }
39
+ // put template back down
40
+ restoreTagMarker(lastSupport);
41
+ // destroy old component, value is not a component
42
+ destroyTagMemory(lastSupport);
43
+ return 'different-tag';
44
+ }
45
+ const displaySubject = subject;
46
+ const hasLastValue = 'lastValue' in displaySubject;
47
+ const lastValue = displaySubject.lastValue; // TODO: we maybe able to use displaySubject.value and remove concept of lastValue
48
+ // was simple value but now something bigger
49
+ if (hasLastValue && lastValue !== newValue) {
50
+ destroySimpleValue(insertBefore, displaySubject);
51
+ return 'changed-simple-value';
52
+ }
53
+ return false;
54
+ }
55
+ export function destroyArrayTag(tagSupport, counts) {
56
+ destroyTagSupportPast(tagSupport);
57
+ tagSupport.destroy({
58
+ stagger: counts.removed++,
59
+ });
60
+ const insertBefore = tagSupport.global.insertBefore;
61
+ const parentNode = insertBefore.parentNode;
62
+ parentNode.removeChild(insertBefore);
63
+ }
64
+ function destroySimpleValue(insertBefore, // always a template tag
65
+ subject) {
66
+ const clone = subject.clone;
67
+ const parent = clone.parentNode;
68
+ // 1 put the template back down
69
+ parent.insertBefore(insertBefore, clone);
70
+ parent.removeChild(clone);
71
+ delete subject.clone;
72
+ delete subject.lastValue;
73
+ }
74
+ export function restoreTagMarker(lastSupport) {
75
+ const insertBefore = lastSupport.global.insertBefore;
76
+ const global = lastSupport.global;
77
+ const placeholderElm = global.placeholder;
78
+ if (placeholderElm) {
79
+ insertAfter(insertBefore, placeholderElm);
80
+ delete global.placeholder;
81
+ }
82
+ }
83
+ //# sourceMappingURL=checkDestroyPrevious.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDestroyPrevious.function.js","sourceRoot":"","sources":["../../ts/tag/checkDestroyPrevious.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Tag } from './Tag.class';
2
+ export declare function cloneValueArray<T>(values: (T | Tag | Tag[])[]): T[];
@@ -0,0 +1,19 @@
1
+ import { deepClone } from '../deepFunctions';
2
+ import { isTagArray, isTagClass, isTagComponent, isTagTemplater } from '../isInstance';
3
+ export function cloneValueArray(values) {
4
+ return values.map((value) => {
5
+ const tag = value;
6
+ if (isTagComponent(value)) {
7
+ const tagComponent = value;
8
+ return deepClone(tagComponent.props);
9
+ }
10
+ if (isTagClass(tag) || isTagTemplater(tag)) {
11
+ return cloneValueArray(tag.values);
12
+ }
13
+ if (isTagArray(tag)) {
14
+ return cloneValueArray(tag);
15
+ }
16
+ return deepClone(value);
17
+ });
18
+ }
19
+ //# sourceMappingURL=cloneValueArray.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneValueArray.function.js","sourceRoot":"","sources":["../../ts/tag/cloneValueArray.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGtF,MAAM,UAAU,eAAe,CAAI,MAA2B;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,KAAY,CAAA;QAExB,IAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,KAAwB,CAAA;YAC7C,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,IAAG,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,CAAC;QAED,IAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,eAAe,CAAC,GAAuB,CAAC,CAAA;QACjD,CAAC;QAED,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TagSupport } from './TagSupport.class';
2
+ export type DestroyOptions = {
3
+ stagger: number;
4
+ byParent?: boolean;
5
+ };
6
+ export declare function getChildTagsToDestroy(childTags: TagSupport[], allTags?: TagSupport[]): TagSupport[];
@@ -0,0 +1,10 @@
1
+ export function getChildTagsToDestroy(childTags, allTags = []) {
2
+ for (let index = childTags.length - 1; index >= 0; --index) {
3
+ const cTag = childTags[index];
4
+ allTags.push(cTag);
5
+ childTags.splice(index, 1);
6
+ getChildTagsToDestroy(cTag.childTags, allTags);
7
+ }
8
+ return allTags;
9
+ }
10
+ //# sourceMappingURL=destroy.support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.support.js","sourceRoot":"","sources":["../../ts/tag/destroy.support.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,qBAAqB,CACnC,SAAuB,EACvB,UAAwB,EAAE;IAE1B,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;QAE7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC1B,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TagSupport } from './TagSupport.class';
2
+ export declare function destroyTagMemory(oldTagSupport: TagSupport): void;
3
+ export declare function destroyTagSupportPast(oldTagSupport: TagSupport): void;
@@ -0,0 +1,12 @@
1
+ export function destroyTagMemory(oldTagSupport) {
2
+ // must destroy oldest which is tag with elements on stage
3
+ const oldest = oldTagSupport.global.oldest;
4
+ oldest.destroy();
5
+ destroyTagSupportPast(oldTagSupport);
6
+ oldTagSupport.global.context = {};
7
+ }
8
+ export function destroyTagSupportPast(oldTagSupport) {
9
+ delete oldTagSupport.global.oldest;
10
+ delete oldTagSupport.global.newest;
11
+ }
12
+ //# sourceMappingURL=destroyTag.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroyTag.function.js","sourceRoot":"","sources":["../../ts/tag/destroyTag.function.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAC9B,aAAyB;IAEzB,0DAA0D;IAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAoB,CAAA;IACxD,MAAM,CAAC,OAAO,EAAE,CAAA;IAEhB,qBAAqB,CAAC,aAAa,CAAC,CAAA;IAEpC,aAAa,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAyB;IAC7D,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAA;IAClC,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAA;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function elementDestroyCheck<T>(nextSibling: Element & {
2
+ ondestroy?: (event: Event) => T;
3
+ }, stagger: number): T | undefined;
@@ -0,0 +1,17 @@
1
+ export function elementDestroyCheck(nextSibling, stagger) {
2
+ const onDestroyDoubleWrap = nextSibling.ondestroy;
3
+ if (!onDestroyDoubleWrap) {
4
+ return;
5
+ }
6
+ const onDestroyWrap = onDestroyDoubleWrap.tagFunction;
7
+ if (!onDestroyWrap) {
8
+ return;
9
+ }
10
+ const onDestroy = onDestroyWrap.tagFunction;
11
+ if (!onDestroy) {
12
+ return;
13
+ }
14
+ const event = { target: nextSibling, stagger };
15
+ return onDestroy(event);
16
+ }
17
+ //# sourceMappingURL=elementDestroyCheck.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementDestroyCheck.function.js","sourceRoot":"","sources":["../../ts/tag/elementDestroyCheck.function.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CACjC,WAAwD,EACxD,OAAe;IAEf,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,CAAA;IACjD,IAAG,CAAC,mBAAmB,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IAED,MAAM,aAAa,GAAI,mBAA2B,CAAC,WAAW,CAAA;IAC9D,IAAG,CAAC,aAAa,EAAE,CAAC;QAClB,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAA;IAC3C,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAqB,CAAA;IAChE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function getSupportInCycle(): import("./TagSupport.class").BaseTagSupport | undefined;
@@ -0,0 +1,5 @@
1
+ import { setUse } from '../state';
2
+ export function getSupportInCycle() {
3
+ return setUse.memory.stateConfig.tagSupport;
4
+ }
5
+ //# sourceMappingURL=getSupportInCycle.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSupportInCycle.function.js","sourceRoot":"","sources":["../../ts/tag/getSupportInCycle.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Props } from "../Props";
2
+ /**
3
+ *
4
+ * @param props
5
+ * @param pastCloneProps
6
+ * @returns WHEN number then props have changed. WHEN false props have not changed
7
+ */
8
+ export declare function hasPropChanges(props: Props, // natural props
9
+ pastCloneProps: Props): number | false;
@@ -0,0 +1,80 @@
1
+ import { deepEqual } from "../deepFunctions";
2
+ /**
3
+ *
4
+ * @param props
5
+ * @param pastCloneProps
6
+ * @returns WHEN number then props have changed. WHEN false props have not changed
7
+ */
8
+ export function hasPropChanges(props, // natural props
9
+ pastCloneProps) {
10
+ /*
11
+ const isCommonEqual = props === undefined && props === compareToProps
12
+ if(isCommonEqual) {
13
+ return false
14
+ }
15
+ */
16
+ let castedProps = props;
17
+ let castedPastProps = pastCloneProps;
18
+ // check all prop functions match
19
+ if (typeof (props) === 'object') {
20
+ if (!pastCloneProps) {
21
+ return 3;
22
+ }
23
+ // castedProps = {...props}
24
+ castedProps = [...props];
25
+ // castedPastProps = {...(pastCloneProps || {})}
26
+ castedPastProps = [...(pastCloneProps || [])];
27
+ const allFunctionsMatch = castedProps.every((value, index) => {
28
+ let compare = castedPastProps[index];
29
+ if (value && typeof (value) === 'object') {
30
+ const subCastedProps = { ...value };
31
+ const subCompareProps = { ...compare || {} };
32
+ const matched = Object.entries(subCastedProps).every(([key, value]) => {
33
+ return compareProps(value, subCompareProps[key], () => {
34
+ delete subCastedProps[key]; // its a function and not needed to be compared
35
+ delete subCompareProps[key]; // its a function and not needed to be compared
36
+ });
37
+ });
38
+ return matched;
39
+ }
40
+ return compareProps(value, compare, () => {
41
+ castedProps.splice(index, 1);
42
+ castedPastProps.splice(index, 1);
43
+ });
44
+ });
45
+ if (!allFunctionsMatch) {
46
+ return 6; // a change has been detected by function comparisons
47
+ }
48
+ }
49
+ // const isEqual = deepEqual(castedPastProps, castedProps)
50
+ // return isEqual ? false : 7 // if equal then no changes
51
+ return false;
52
+ }
53
+ /** returning a number means true good comparison */
54
+ function compareProps(value, compare, onDelete) {
55
+ if (!(value instanceof Function)) {
56
+ return deepEqual(value, compare) ? 4 : false;
57
+ }
58
+ const compareFn = compare;
59
+ if (!(compareFn instanceof Function)) {
60
+ return false; // its a function now but was not before
61
+ }
62
+ // ensure we are comparing apples to apples as function get wrapped
63
+ const compareOriginal = compare?.original;
64
+ if (compareOriginal) {
65
+ compare = compareOriginal;
66
+ }
67
+ const original = value.original;
68
+ if (original) {
69
+ value = value.original;
70
+ }
71
+ const valueString = value.toString();
72
+ const compareString = compare.toString();
73
+ if (valueString === compareString) {
74
+ onDelete();
75
+ return 3; // both are function the same
76
+ }
77
+ onDelete();
78
+ return 5;
79
+ }
80
+ //# sourceMappingURL=hasPropChanges.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasPropChanges.function.js","sourceRoot":"","sources":["../../ts/tag/hasPropChanges.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { BaseTagSupport } from "./TagSupport.class";
2
+ import { TemplaterResult } from "../TemplaterResult.class";
3
+ export declare function hasTagSupportChanged(oldTagSupport: BaseTagSupport, newTagSupport: BaseTagSupport, newTemplater: TemplaterResult): number | false;
4
+ export declare function hasKidsChanged(oldTagSupport: BaseTagSupport, newTagSupport: BaseTagSupport): number | false;