taggedjs 2.4.2 → 2.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.js +3675 -0
- package/bundle.js.map +1 -0
- package/index.js +1 -1
- package/js/Subject.d.ts +3 -4
- package/js/Subject.js +4 -4
- package/js/Subject.js.map +1 -1
- package/js/Tag.class.d.ts +24 -17
- package/js/Tag.class.js +205 -78
- package/js/Tag.class.js.map +1 -1
- package/js/Tag.utils.d.ts +13 -13
- package/js/Tag.utils.js +2 -18
- package/js/Tag.utils.js.map +1 -1
- package/js/TagSupport.class.d.ts +15 -14
- package/js/TagSupport.class.js +24 -46
- package/js/TagSupport.class.js.map +1 -1
- package/js/TemplaterResult.class.d.ts +34 -0
- package/js/TemplaterResult.class.js +79 -0
- package/js/TemplaterResult.class.js.map +1 -0
- package/js/ValueSubject.d.ts +4 -2
- package/js/ValueSubject.js +1 -1
- package/js/ValueSubject.js.map +1 -1
- package/js/alterProps.function.d.ts +4 -0
- package/js/alterProps.function.js +46 -0
- package/js/alterProps.function.js.map +1 -0
- package/js/bindSubjectCallback.function 9.27.33/342/200/257AM.js" +32 -0
- package/js/bindSubjectCallback.function.d 9.27.33/342/200/257AM.ts" +8 -0
- package/js/bindSubjectCallback.function.d.ts +3 -4
- package/js/bindSubjectCallback.function.js +20 -8
- package/js/bindSubjectCallback.function.js.map +1 -1
- package/js/checkDestroyPrevious.function.d.ts +6 -0
- package/js/checkDestroyPrevious.function.js +62 -0
- package/js/checkDestroyPrevious.function.js.map +1 -0
- package/js/destroyTag.function.d.ts +5 -0
- package/js/destroyTag.function.js +19 -0
- package/js/destroyTag.function.js.map +1 -0
- package/js/elementInitCheck.d.ts +1 -1
- package/js/getCallback.d.ts +1 -1
- package/js/getCallback.js +15 -13
- package/js/getCallback.js.map +1 -1
- package/js/hasTagSupportChanged.function.d.ts +6 -6
- package/js/hasTagSupportChanged.function.js +31 -21
- package/js/hasTagSupportChanged.function.js.map +1 -1
- package/js/html.d.ts +1 -1
- package/js/html.js +1 -1
- package/js/html.js.map +1 -1
- package/js/index.d.ts +22 -27
- package/js/index.js +26 -27
- package/js/index.js.map +1 -1
- package/js/interpolateAttributes.d.ts +2 -3
- package/js/interpolateAttributes.js +1 -127
- package/js/interpolateAttributes.js.map +1 -1
- package/js/interpolateContentTemplates.d.ts +9 -6
- package/js/interpolateContentTemplates.js +18 -28
- package/js/interpolateContentTemplates.js.map +1 -1
- package/js/interpolateElement.d.ts +7 -6
- package/js/interpolateElement.js +13 -10
- package/js/interpolateElement.js.map +1 -1
- package/js/interpolateTemplate.d.ts +22 -7
- package/js/interpolateTemplate.js +65 -27
- package/js/interpolateTemplate.js.map +1 -1
- package/js/isInstance.d.ts +3 -4
- package/js/isInstance.js.map +1 -1
- package/js/isLikeTags.function.d.ts +2 -0
- package/js/isLikeTags.function.js +30 -0
- package/js/isLikeTags.function.js.map +1 -0
- package/js/onDestroy.js +3 -3
- package/js/onDestroy.js.map +1 -1
- package/js/onInit.js +1 -1
- package/js/onInit.js.map +1 -1
- package/js/processAttribute.function.d.ts +3 -0
- package/js/processAttribute.function.js +122 -0
- package/js/processAttribute.function.js.map +1 -0
- package/js/processNewValue.function.d.ts +2 -2
- package/js/processNewValue.function.js +13 -15
- package/js/processNewValue.function.js.map +1 -1
- package/js/processRegularValue.function.d.ts +5 -7
- package/js/processRegularValue.function.js +10 -17
- package/js/processRegularValue.function.js.map +1 -1
- package/js/processSubjectComponent.function.d.ts +6 -6
- package/js/processSubjectComponent.function.js +30 -22
- package/js/processSubjectComponent.function.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +16 -14
- package/js/processSubjectValue.function.js +55 -79
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTagArray.d.ts +9 -8
- package/js/processTagArray.js +36 -37
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +7 -8
- package/js/processTagResult.function.js +40 -17
- package/js/processTagResult.function.js.map +1 -1
- package/js/provider.utils.d.ts +1 -1
- package/js/provider.utils.js +19 -8
- package/js/provider.utils.js.map +1 -1
- package/js/providers.js +6 -6
- package/js/providers.js.map +1 -1
- package/js/redrawTag.function.d.ts +5 -8
- package/js/redrawTag.function.js +16 -4
- package/js/redrawTag.function.js.map +1 -1
- package/js/render.d.ts +1 -1
- package/js/render.js.map +1 -1
- package/js/renderExistingTag.function.d.ts +7 -0
- package/js/renderExistingTag.function.js +40 -0
- package/js/renderExistingTag.function.js.map +1 -0
- package/js/renderTagSupport.function.d.ts +4 -0
- package/js/renderTagSupport.function.js +50 -0
- package/js/renderTagSupport.function.js.map +1 -0
- package/js/scanTextAreaValue.function.d.ts +2 -0
- package/js/scanTextAreaValue.function.js +16 -0
- package/js/scanTextAreaValue.function.js.map +1 -0
- package/js/set.function.d.ts +4 -3
- package/js/set.function.js +25 -34
- package/js/set.function.js.map +1 -1
- package/js/setLet.function.d.ts +1 -1
- package/js/setLet.function.js +14 -3
- package/js/setLet.function.js.map +1 -1
- package/js/setProp.function.d.ts +1 -1
- package/js/setProp.function.js +6 -3
- package/js/setProp.function.js.map +1 -1
- package/js/setUse.function.d.ts +11 -11
- package/js/tag.d.ts +6 -4
- package/js/tag.js +80 -71
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +5 -7
- package/js/tagElement.js +20 -31
- package/js/tagElement.js.map +1 -1
- package/js/tagRunner.d.ts +6 -6
- package/js/tagRunner.js +1 -1
- package/js/tagRunner.js.map +1 -1
- package/js/templater.utils.d.ts +23 -12
- package/js/templater.utils.js +55 -40
- package/js/templater.utils.js.map +1 -1
- package/js/updateExistingTag.function.d.ts +4 -4
- package/js/updateExistingTag.function.js +16 -7
- package/js/updateExistingTag.function.js.map +1 -1
- package/js/updateExistingTagComponent.function.d.ts +4 -4
- package/js/updateExistingTagComponent.function.js +114 -38
- package/js/updateExistingTagComponent.function.js.map +1 -1
- package/js/updateExistingValue.function.d.ts +8 -10
- package/js/updateExistingValue.function.js +58 -89
- package/js/updateExistingValue.function.js.map +1 -1
- package/js/watch.function.js +4 -3
- package/js/watch.function.js.map +1 -1
- package/package.json +1 -1
- package/js/CustomError.d.ts +0 -7
- package/js/CustomError.js +0 -9
- package/js/CustomError.js.map +0 -1
- package/js/ElementTarget.interface.d.ts +0 -7
- package/js/ElementTarget.interface.js +0 -2
- package/js/ElementTarget.interface.js.map +0 -1
- package/js/Errors2.d.ts +0 -14
- package/js/Errors2.js +0 -21
- package/js/Errors2.js.map +0 -1
- package/js/gateway/gateway.web.component.d.ts +0 -11
- package/js/gateway/gateway.web.component.js +0 -20
- package/js/gateway/gateway.web.component.js.map +0 -1
- package/js/gateway/index.d.ts +0 -3
- package/js/gateway/index.js +0 -4
- package/js/gateway/index.js.map +0 -1
- package/js/gateway/loadTagGateway.function.d.ts +0 -2
- package/js/gateway/loadTagGateway.function.js +0 -18
- package/js/gateway/loadTagGateway.function.js.map +0 -1
- package/js/gateway/tagGateway.function.d.ts +0 -5
- package/js/gateway/tagGateway.function.js +0 -49
- package/js/gateway/tagGateway.function.js.map +0 -1
- package/js/gateway/tagGateway.utils.d.ts +0 -22
- package/js/gateway/tagGateway.utils.js +0 -137
- package/js/gateway/tagGateway.utils.js.map +0 -1
- package/js/getTagSupport.d.ts +0 -20
- package/js/getTagSupport.js +0 -114
- package/js/getTagSupport.js.map +0 -1
- package/js/renderAppToElement.d.ts +0 -14
- package/js/renderAppToElement.js +0 -57
- package/js/renderAppToElement.js.map +0 -1
- package/js/state.d.ts +0 -22
- package/js/state.js +0 -128
- package/js/state.js.map +0 -1
- package/js/tagGateway.function.d.ts +0 -14
- package/js/tagGateway.function.js +0 -138
- package/js/tagGateway.function.js.map +0 -1
- package/js/updateTag.utils.d.ts +0 -8
- package/js/updateTag.utils.js +0 -83
- package/js/updateTag.utils.js.map +0 -1
- package/taggedjs.js +0 -1
- /package/js/{Errors.d.ts → errors.d.ts} +0 -0
- /package/js/{Errors.js → errors.js} +0 -0
- /package/js/{Errors.js.map → errors.js.map} +0 -0
package/js/Tag.class.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { runBeforeDestroy } from
|
|
2
|
-
import { buildClones } from
|
|
3
|
-
import { interpolateElement, interpolateString } from
|
|
4
|
-
import { afterElmBuild } from
|
|
5
|
-
import { elementDestroyCheck } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { runBeforeDestroy } from './tagRunner';
|
|
2
|
+
import { buildClones } from './render';
|
|
3
|
+
import { interpolateElement, interpolateString } from './interpolateElement';
|
|
4
|
+
import { afterElmBuild, subscribeToTemplate } from './interpolateTemplate';
|
|
5
|
+
import { elementDestroyCheck } from './elementDestroyCheck.function';
|
|
6
|
+
import { processNewValue } from './processNewValue.function';
|
|
7
|
+
import { isSubjectInstance, isTagComponent } from './isInstance';
|
|
8
|
+
import { isLikeTags } from './isLikeTags.function';
|
|
8
9
|
export const variablePrefix = '__tagvar';
|
|
9
10
|
export const escapeVariable = '--' + variablePrefix + '--';
|
|
10
11
|
const prefixSearch = new RegExp(variablePrefix, 'g');
|
|
@@ -16,13 +17,15 @@ export class Tag {
|
|
|
16
17
|
strings;
|
|
17
18
|
values;
|
|
18
19
|
isTag = true;
|
|
19
|
-
|
|
20
|
+
hasLiveElements = false;
|
|
21
|
+
clones = []; // elements on document. Needed at destroy process to know what to destroy
|
|
20
22
|
cloneSubs = []; // subscriptions created by clones
|
|
21
|
-
|
|
23
|
+
childTags = []; // tags on me
|
|
22
24
|
tagSupport;
|
|
25
|
+
lastTemplateString = undefined; // used to compare templates for updates
|
|
23
26
|
// only present when a child of a tag
|
|
24
27
|
ownerTag;
|
|
25
|
-
insertBefore
|
|
28
|
+
// insertBefore?: Element
|
|
26
29
|
appElement; // only seen on this.getAppElement().appElement
|
|
27
30
|
// present only when an array. Populated by this.key()
|
|
28
31
|
arrayValue = new ArrayValueNeverSet();
|
|
@@ -35,71 +38,98 @@ export class Tag {
|
|
|
35
38
|
this.arrayValue = arrayValue;
|
|
36
39
|
return this;
|
|
37
40
|
}
|
|
38
|
-
|
|
41
|
+
destroy(options = {
|
|
39
42
|
stagger: 0,
|
|
40
43
|
byParent: false, // Only destroy clones of direct children
|
|
41
44
|
}) {
|
|
45
|
+
if (!this.hasLiveElements) {
|
|
46
|
+
throw new Error('destroying wrong tag');
|
|
47
|
+
}
|
|
48
|
+
const tagSupport = this.tagSupport;
|
|
49
|
+
const global = tagSupport.templater.global;
|
|
50
|
+
// removing is considered rendering. Prevents after event processing of this tag even tho possibly deleted
|
|
51
|
+
// ++this.tagSupport.templater.global.renderCount
|
|
42
52
|
// the isComponent check maybe able to be removed
|
|
43
|
-
const isComponent =
|
|
53
|
+
const isComponent = tagSupport ? true : false;
|
|
44
54
|
if (isComponent) {
|
|
45
|
-
runBeforeDestroy(
|
|
55
|
+
runBeforeDestroy(tagSupport, this);
|
|
46
56
|
}
|
|
57
|
+
const childTags = options.byParent ? [] : getChildTagsToDestroy(this.childTags);
|
|
58
|
+
// signify that no further event rendering should take place by making logic think a render occurred during event
|
|
59
|
+
// childTags.forEach(child => ++child.tagSupport.templater.global.renderCount)
|
|
60
|
+
// signify immediately child has been deleted (looked for during event processing)
|
|
61
|
+
childTags.forEach(child => {
|
|
62
|
+
const subGlobal = child.tagSupport.templater.global;
|
|
63
|
+
delete subGlobal.newest;
|
|
64
|
+
subGlobal.deleted = true;
|
|
65
|
+
});
|
|
66
|
+
delete global.oldest;
|
|
67
|
+
delete global.newest;
|
|
68
|
+
global.deleted = true;
|
|
69
|
+
this.hasLiveElements = false;
|
|
70
|
+
delete tagSupport.subject.tag;
|
|
47
71
|
this.destroySubscriptions();
|
|
48
|
-
|
|
72
|
+
let mainPromise;
|
|
49
73
|
if (this.ownerTag) {
|
|
50
|
-
this.ownerTag.
|
|
74
|
+
this.ownerTag.childTags = this.ownerTag.childTags.filter(child => child !== this);
|
|
51
75
|
}
|
|
52
76
|
if (!options.byParent) {
|
|
53
|
-
|
|
77
|
+
const { stagger, promise } = this.destroyClones(options);
|
|
78
|
+
options.stagger = stagger;
|
|
79
|
+
if (promise) {
|
|
80
|
+
mainPromise = promise;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.destroyClones();
|
|
85
|
+
}
|
|
86
|
+
if (mainPromise) {
|
|
87
|
+
mainPromise = mainPromise.then(async () => {
|
|
88
|
+
const promises = childTags.map(kid => kid.destroy({ stagger: 0, byParent: true }));
|
|
89
|
+
return Promise.all(promises);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
mainPromise = Promise.all(childTags.map(kid => kid.destroy({ stagger: 0, byParent: true })));
|
|
54
94
|
}
|
|
55
|
-
|
|
56
|
-
return options.stagger;
|
|
95
|
+
return mainPromise.then(() => options.stagger);
|
|
57
96
|
}
|
|
58
97
|
destroySubscriptions() {
|
|
59
98
|
this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
|
|
60
99
|
this.cloneSubs.length = 0;
|
|
61
100
|
}
|
|
62
|
-
|
|
101
|
+
destroyClones({ stagger } = {
|
|
63
102
|
stagger: 0,
|
|
64
103
|
}) {
|
|
65
|
-
|
|
66
|
-
const promises = this.clones.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
const next = () => {
|
|
72
|
-
clone.parentNode?.removeChild(clone);
|
|
73
|
-
const ownerTag = this.ownerTag;
|
|
74
|
-
if (ownerTag) {
|
|
75
|
-
// Sometimes my clones were first registered to my owner, remove them
|
|
76
|
-
ownerTag.clones = ownerTag.clones.filter(compareClone => compareClone !== clone);
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
if (promise instanceof Promise) {
|
|
80
|
-
hasPromise = true;
|
|
81
|
-
promise.then(next);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
next();
|
|
85
|
-
}
|
|
86
|
-
return promise;
|
|
87
|
-
});
|
|
88
|
-
if (hasPromise) {
|
|
89
|
-
await Promise.all(promises);
|
|
104
|
+
//const promises = this.clones.reverse().map(
|
|
105
|
+
const promises = this.clones.map(clone => this.checkCloneRemoval(clone, stagger)).filter(x => x); // only return promises
|
|
106
|
+
this.clones.length = 0; // tag maybe used for something else
|
|
107
|
+
if (promises.length) {
|
|
108
|
+
return { promise: Promise.all(promises), stagger };
|
|
90
109
|
}
|
|
91
|
-
return stagger;
|
|
110
|
+
return { stagger };
|
|
92
111
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
112
|
+
checkCloneRemoval(clone, stagger) {
|
|
113
|
+
let promise;
|
|
114
|
+
const customElm = clone;
|
|
115
|
+
if (customElm.ondestroy) {
|
|
116
|
+
promise = elementDestroyCheck(customElm, stagger);
|
|
117
|
+
}
|
|
118
|
+
const next = () => {
|
|
119
|
+
clone.parentNode?.removeChild(clone);
|
|
120
|
+
const ownerTag = this.ownerTag;
|
|
121
|
+
if (ownerTag) {
|
|
122
|
+
// Sometimes my clones were first registered to my owner, remove them from owner
|
|
123
|
+
ownerTag.clones = ownerTag.clones.filter(compareClone => compareClone !== clone);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
if (promise instanceof Promise) {
|
|
127
|
+
return promise.then(next);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
next();
|
|
131
|
+
}
|
|
132
|
+
return promise;
|
|
103
133
|
}
|
|
104
134
|
getTemplate() {
|
|
105
135
|
const string = this.strings.map((string, index) => {
|
|
@@ -117,11 +147,13 @@ export class Tag {
|
|
|
117
147
|
string: interpolation.string,
|
|
118
148
|
strings: this.strings,
|
|
119
149
|
values: this.values,
|
|
120
|
-
context: this.tagSupport
|
|
150
|
+
context: this.tagSupport.templater.global.context || {},
|
|
121
151
|
};
|
|
122
152
|
}
|
|
123
153
|
isLikeTag(tag) {
|
|
154
|
+
return isLikeTags(this, tag);
|
|
124
155
|
const { string } = tag.getTemplate();
|
|
156
|
+
// TODO: most likely remove?
|
|
125
157
|
if (!this.lastTemplateString) {
|
|
126
158
|
throw new Error('no template here');
|
|
127
159
|
}
|
|
@@ -146,12 +178,29 @@ export class Tag {
|
|
|
146
178
|
}
|
|
147
179
|
return false;
|
|
148
180
|
}
|
|
181
|
+
updateByTag(tag) {
|
|
182
|
+
if (!this.tagSupport.templater.global.oldest) {
|
|
183
|
+
throw new Error('no oldest here');
|
|
184
|
+
}
|
|
185
|
+
if (!this.hasLiveElements) {
|
|
186
|
+
throw new Error('trying to update a tag with no elements on stage');
|
|
187
|
+
}
|
|
188
|
+
this.tagSupport.templater.global.newest = tag;
|
|
189
|
+
if (!this.tagSupport.templater.global.context) {
|
|
190
|
+
throw new Error('issue back here');
|
|
191
|
+
}
|
|
192
|
+
this.updateConfig(tag.strings, tag.values);
|
|
193
|
+
}
|
|
194
|
+
updateConfig(strings, values) {
|
|
195
|
+
this.strings = strings;
|
|
196
|
+
this.updateValues(values);
|
|
197
|
+
}
|
|
149
198
|
update() {
|
|
150
|
-
return this.updateContext(this.tagSupport.
|
|
199
|
+
return this.updateContext(this.tagSupport.templater.global.context);
|
|
151
200
|
}
|
|
152
201
|
updateValues(values) {
|
|
153
202
|
this.values = values;
|
|
154
|
-
return this.updateContext(this.tagSupport.
|
|
203
|
+
return this.updateContext(this.tagSupport.templater.global.context);
|
|
155
204
|
}
|
|
156
205
|
updateContext(context) {
|
|
157
206
|
this.strings.map((_string, index) => {
|
|
@@ -159,13 +208,15 @@ export class Tag {
|
|
|
159
208
|
const hasValue = this.values.length > index;
|
|
160
209
|
const value = this.values[index];
|
|
161
210
|
// is something already there?
|
|
162
|
-
const
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
211
|
+
const exists = variableName in context;
|
|
212
|
+
if (exists) {
|
|
213
|
+
return updateContextItem(context, variableName, value);
|
|
214
|
+
}
|
|
215
|
+
if (!hasValue) {
|
|
216
|
+
return;
|
|
166
217
|
}
|
|
167
218
|
// 🆕 First time values below
|
|
168
|
-
processNewValue(hasValue, value,
|
|
219
|
+
context[variableName] = processNewValue(hasValue, value, this);
|
|
169
220
|
});
|
|
170
221
|
return context;
|
|
171
222
|
}
|
|
@@ -178,7 +229,8 @@ export class Tag {
|
|
|
178
229
|
}
|
|
179
230
|
/** Used during HMR only where static content itself could have been edited */
|
|
180
231
|
rebuild() {
|
|
181
|
-
const insertBefore = this.insertBefore
|
|
232
|
+
// const insertBefore = this.insertBefore
|
|
233
|
+
const insertBefore = this.tagSupport.templater.global.insertBefore;
|
|
182
234
|
if (!insertBefore) {
|
|
183
235
|
const err = new Error('Cannot rebuild. Previous insertBefore element is not defined on tag');
|
|
184
236
|
err.tag = this;
|
|
@@ -186,34 +238,109 @@ export class Tag {
|
|
|
186
238
|
}
|
|
187
239
|
this.buildBeforeElement(insertBefore, {
|
|
188
240
|
forceElement: true,
|
|
189
|
-
counts: { added: 0, removed: 0 },
|
|
241
|
+
counts: { added: 0, removed: 0 }, test: false,
|
|
190
242
|
});
|
|
191
243
|
}
|
|
192
244
|
buildBeforeElement(insertBefore, options = {
|
|
193
245
|
forceElement: false,
|
|
194
246
|
counts: { added: 0, removed: 0 },
|
|
247
|
+
test: false
|
|
195
248
|
}) {
|
|
196
|
-
|
|
249
|
+
if (!insertBefore.parentNode) {
|
|
250
|
+
throw new Error('no parent before removing clones');
|
|
251
|
+
}
|
|
252
|
+
this.tagSupport.templater.global.oldest = this;
|
|
253
|
+
this.tagSupport.templater.global.newest = this;
|
|
254
|
+
this.tagSupport.subject.tag = this;
|
|
255
|
+
this.hasLiveElements = true;
|
|
256
|
+
// remove old clones
|
|
257
|
+
if (this.clones.length) {
|
|
258
|
+
this.clones.forEach(clone => this.checkCloneRemoval(clone, 0));
|
|
259
|
+
}
|
|
260
|
+
// this.insertBefore = insertBefore
|
|
261
|
+
this.tagSupport.templater.global.insertBefore = insertBefore;
|
|
262
|
+
// const context = this.tagSupport.memory.context // this.update()
|
|
197
263
|
const context = this.update();
|
|
198
264
|
const template = this.getTemplate();
|
|
199
|
-
|
|
200
|
-
|
|
265
|
+
if (!insertBefore.parentNode) {
|
|
266
|
+
throw new Error('no parent before building tag');
|
|
267
|
+
}
|
|
268
|
+
const elementContainer = document.createElement('div');
|
|
269
|
+
elementContainer.id = 'tag-temp-holder';
|
|
201
270
|
// render content with a first child that we can know is our first element
|
|
202
|
-
|
|
203
|
-
//
|
|
204
|
-
const
|
|
271
|
+
elementContainer.innerHTML = `<template id="temp-template-tag-wrap">${template.string}</template>`;
|
|
272
|
+
// Search/replace innerHTML variables but don't interpolate tag components just yet
|
|
273
|
+
const { tagComponents } = interpolateElement(elementContainer, context, template, this, // ownerTag,
|
|
205
274
|
{
|
|
206
275
|
forceElement: options.forceElement,
|
|
207
276
|
counts: options.counts
|
|
277
|
+
}, options.test);
|
|
278
|
+
if (!insertBefore.parentNode) {
|
|
279
|
+
throw new Error('no parent building tag');
|
|
280
|
+
}
|
|
281
|
+
afterInterpolateElement(elementContainer, insertBefore, this, // ownerTag
|
|
282
|
+
context, options);
|
|
283
|
+
// this.clones.push(...clones)
|
|
284
|
+
// Any tag components that were found should be processed AFTER the owner processes its elements. Avoid double processing of elements attributes like (oninit)=${}
|
|
285
|
+
let isForceElement = options.forceElement;
|
|
286
|
+
tagComponents.forEach(tagComponent => {
|
|
287
|
+
// const preClones = this.clones.map(clone => clone)
|
|
288
|
+
subscribeToTemplate(tagComponent.insertBefore, // temporary,
|
|
289
|
+
tagComponent.subject, tagComponent.ownerTag, options.counts, { isForceElement });
|
|
290
|
+
if (!insertBefore.parentNode) {
|
|
291
|
+
throw new Error('no parent building tag components');
|
|
292
|
+
}
|
|
293
|
+
afterInterpolateElement(elementContainer, insertBefore, this, context, options);
|
|
294
|
+
// remove component clones from ownerTag as they will belong to the components they live on
|
|
295
|
+
/*
|
|
296
|
+
if( preClones.length ) {
|
|
297
|
+
this.clones = this.clones.filter(cloneFilter => !preClones.find(clone => clone === cloneFilter))
|
|
298
|
+
}
|
|
299
|
+
*/
|
|
208
300
|
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function afterInterpolateElement(container, insertBefore, ownerTag,
|
|
304
|
+
// preClones: Clones,
|
|
305
|
+
context, options) {
|
|
306
|
+
const clones = buildClones(container, insertBefore);
|
|
307
|
+
ownerTag.clones.push(...clones);
|
|
308
|
+
clones.forEach(clone => afterElmBuild(clone, options, context, ownerTag));
|
|
309
|
+
return clones;
|
|
310
|
+
}
|
|
311
|
+
function getChildTagsToDestroy(childTags, allTags = []) {
|
|
312
|
+
for (let index = childTags.length - 1; index >= 0; --index) {
|
|
313
|
+
const cTag = childTags[index];
|
|
314
|
+
if (allTags.find(x => x === cTag)) {
|
|
315
|
+
// TODO: Lets find why a child tag is attached twice to owner
|
|
316
|
+
throw new Error('child tag registered twice for delete');
|
|
317
|
+
}
|
|
318
|
+
allTags.push(cTag);
|
|
319
|
+
childTags.splice(index, 1);
|
|
320
|
+
getChildTagsToDestroy(cTag.childTags, allTags);
|
|
321
|
+
}
|
|
322
|
+
return allTags;
|
|
323
|
+
}
|
|
324
|
+
function updateContextItem(context, variableName, value) {
|
|
325
|
+
const subject = context[variableName];
|
|
326
|
+
const tag = subject.tag;
|
|
327
|
+
if (tag) {
|
|
328
|
+
const oldWrap = tag.tagSupport.templater.wrapper; // tag versus component
|
|
329
|
+
if (oldWrap && isTagComponent(value)) {
|
|
330
|
+
const oldValueFn = oldWrap.original;
|
|
331
|
+
const newValueFn = value.wrapper?.original;
|
|
332
|
+
const fnMatched = oldValueFn === newValueFn;
|
|
333
|
+
if (fnMatched) {
|
|
334
|
+
const newTemp = value;
|
|
335
|
+
newTemp.global = tag.tagSupport.templater.global;
|
|
336
|
+
}
|
|
214
337
|
}
|
|
215
|
-
this.clones.forEach(clone => afterElmBuild(clone, options));
|
|
216
|
-
return this.clones;
|
|
217
338
|
}
|
|
339
|
+
// return updateExistingValue(subject, value, this)
|
|
340
|
+
if (isSubjectInstance(value)) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
subject.set(value); // listeners will evaluate updated values to possibly update display(s)
|
|
344
|
+
return;
|
|
218
345
|
}
|
|
219
346
|
//# sourceMappingURL=Tag.class.js.map
|
package/js/Tag.class.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
|
package/js/Tag.utils.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { ValueSubject } from "./ValueSubject";
|
|
2
|
+
import { Subject } from "./Subject";
|
|
3
|
+
import { Tag } from "./Tag.class";
|
|
4
|
+
import { TemplaterResult } from "./TemplaterResult.class";
|
|
5
|
+
import { Template } from "./interpolateTemplate";
|
|
6
6
|
export type TagSubject = Subject<TemplaterResult> & {
|
|
7
|
-
tagSupport: TagSupport;
|
|
8
7
|
tag: Tag;
|
|
9
|
-
template: Element;
|
|
8
|
+
template: Element | Text | Template;
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
type RegularValue = string | number | boolean;
|
|
11
|
+
export type DisplaySubject = Subject<RegularValue> & {
|
|
12
|
+
lastValue?: RegularValue;
|
|
13
|
+
clone?: Element | Text | Template;
|
|
14
|
+
template: Element | Text | Template;
|
|
14
15
|
};
|
|
15
|
-
export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject<(
|
|
16
|
-
export
|
|
17
|
-
existing: TagSubject, ownerTag: Tag): void;
|
|
16
|
+
export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject<import("./bindSubjectCallback.function").Callback>;
|
|
17
|
+
export {};
|
package/js/Tag.utils.js
CHANGED
|
@@ -1,22 +1,6 @@
|
|
|
1
|
-
import { ValueSubject } from "./ValueSubject
|
|
2
|
-
import {
|
|
3
|
-
import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
|
|
1
|
+
import { ValueSubject } from "./ValueSubject";
|
|
2
|
+
import { bindSubjectCallback } from "./bindSubjectCallback.function";
|
|
4
3
|
export function getSubjectFunction(value, tag) {
|
|
5
4
|
return new ValueSubject(bindSubjectCallback(value, tag));
|
|
6
5
|
}
|
|
7
|
-
export function setValueRedraw(templater, // latest tag function to call for rendering
|
|
8
|
-
existing, ownerTag) {
|
|
9
|
-
// redraw does not communicate to parent
|
|
10
|
-
templater.redraw = () => {
|
|
11
|
-
const existingTag = existing.tag;
|
|
12
|
-
const newest = templater.tagSupport.newest;
|
|
13
|
-
const tagSupport = existingTag?.tagSupport || templater.tagSupport;
|
|
14
|
-
const { remit, retag } = redrawTag(tagSupport, templater, newest, ownerTag);
|
|
15
|
-
if (!remit) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
existing.set(templater);
|
|
19
|
-
return retag;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
6
|
//# sourceMappingURL=Tag.utils.js.map
|
package/js/Tag.utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.utils.js","sourceRoot":"","sources":["../ts/Tag.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tag.utils.js","sourceRoot":"","sources":["../ts/Tag.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAepE,MAAM,UAAU,kBAAkB,CAChC,KAAU,EACV,GAAQ;IAER,OAAO,IAAI,YAAY,CAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAE,CAAA;AAC5D,CAAC"}
|
package/js/TagSupport.class.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { Props } from
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export declare class
|
|
1
|
+
import { Props } from './Props';
|
|
2
|
+
import { TagMemory } from './Tag.class';
|
|
3
|
+
import { TemplaterResult } from './TemplaterResult.class';
|
|
4
|
+
import { TagSubject } from './Tag.utils';
|
|
5
|
+
export declare class BaseTagSupport {
|
|
6
6
|
templater: TemplaterResult;
|
|
7
|
-
|
|
7
|
+
subject: TagSubject;
|
|
8
|
+
isApp: boolean;
|
|
8
9
|
propsConfig: {
|
|
9
10
|
latest: Props;
|
|
10
11
|
latestCloned: Props;
|
|
@@ -12,12 +13,12 @@ export declare class TagSupport {
|
|
|
12
13
|
clonedProps: Props;
|
|
13
14
|
};
|
|
14
15
|
memory: TagMemory;
|
|
15
|
-
constructor(templater: TemplaterResult,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
constructor(templater: TemplaterResult, subject: TagSubject);
|
|
17
|
+
}
|
|
18
|
+
export declare class TagSupport extends BaseTagSupport {
|
|
19
|
+
ownerTagSupport: TagSupport;
|
|
20
|
+
templater: TemplaterResult;
|
|
21
|
+
subject: TagSubject;
|
|
22
|
+
isApp: boolean;
|
|
23
|
+
constructor(ownerTagSupport: TagSupport, templater: TemplaterResult, subject: TagSubject);
|
|
23
24
|
}
|
package/js/TagSupport.class.js
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
import { deepClone } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { providersChangeCheck } from "./provider.utils.js";
|
|
5
|
-
import { alterProps } from "./templater.utils.js";
|
|
6
|
-
export class TagSupport {
|
|
1
|
+
import { deepClone } from './deepFunctions';
|
|
2
|
+
import { isTagArray, isTagComponent, isTagInstance } from './isInstance';
|
|
3
|
+
export class BaseTagSupport {
|
|
7
4
|
templater;
|
|
8
|
-
|
|
5
|
+
subject;
|
|
6
|
+
isApp = true;
|
|
9
7
|
propsConfig;
|
|
10
8
|
memory = {
|
|
11
|
-
context: {}, // populated after reading interpolated.values array converted to an object {variable0, variable:1}
|
|
9
|
+
// context: {}, // populated after reading interpolated.values array converted to an object {variable0, variable:1}
|
|
12
10
|
state: {
|
|
13
11
|
newest: [],
|
|
14
12
|
},
|
|
15
|
-
providers: [],
|
|
16
|
-
/** Indicator of re-rending. Saves from double rending something already rendered */
|
|
17
|
-
renderCount: 0,
|
|
18
13
|
};
|
|
19
|
-
constructor(templater,
|
|
20
|
-
props) {
|
|
14
|
+
constructor(templater, subject) {
|
|
21
15
|
this.templater = templater;
|
|
22
|
-
this.
|
|
23
|
-
const
|
|
16
|
+
this.subject = subject;
|
|
17
|
+
const children = this.templater.children; // children tags passed in as arguments
|
|
18
|
+
const props = this.templater.props; // natural props
|
|
19
|
+
const latestCloned = deepClone(props); // alterProps(props, templater)
|
|
24
20
|
this.propsConfig = {
|
|
25
21
|
latest: props,
|
|
26
22
|
latestCloned, // assume its HTML children and then detect
|
|
@@ -36,36 +32,6 @@ export class TagSupport {
|
|
|
36
32
|
this.propsConfig.clonedProps = this.propsConfig.latestCloned;
|
|
37
33
|
}
|
|
38
34
|
}
|
|
39
|
-
// TODO: these below may not be in use
|
|
40
|
-
oldest;
|
|
41
|
-
newest;
|
|
42
|
-
mutatingRender() {
|
|
43
|
-
const message = 'Tag function "render()" was called in sync but can only be called async';
|
|
44
|
-
console.error(message, { tagSupport: this });
|
|
45
|
-
throw new Error(message);
|
|
46
|
-
} // loaded later and only callable async
|
|
47
|
-
render() {
|
|
48
|
-
++this.memory.renderCount;
|
|
49
|
-
return this.mutatingRender();
|
|
50
|
-
} // ensure this function still works even during deconstructing
|
|
51
|
-
/** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
|
|
52
|
-
renderExistingTag(tag, newTemplater) {
|
|
53
|
-
const preRenderCount = this.memory.renderCount;
|
|
54
|
-
providersChangeCheck(tag);
|
|
55
|
-
// When the providers were checked, a render to myself occurred and I do not need to re-render again
|
|
56
|
-
if (preRenderCount !== this.memory.renderCount) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
// const oldTemplater = tag.tagSupport.templater
|
|
60
|
-
const oldTagSupport = tag.tagSupport;
|
|
61
|
-
// const oldTagSupport = this
|
|
62
|
-
const hasChanged = hasTagSupportChanged(oldTagSupport, newTemplater.tagSupport);
|
|
63
|
-
this.newest = this.templater.redraw(); // No change detected, just redraw me only
|
|
64
|
-
if (!hasChanged) {
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
35
|
}
|
|
70
36
|
function cloneValueArray(values) {
|
|
71
37
|
return values.map((value) => {
|
|
@@ -75,7 +41,7 @@ function cloneValueArray(values) {
|
|
|
75
41
|
}
|
|
76
42
|
if (isTagComponent(tag)) {
|
|
77
43
|
const tagComponent = tag;
|
|
78
|
-
return deepClone(tagComponent.
|
|
44
|
+
return deepClone(tagComponent.props);
|
|
79
45
|
}
|
|
80
46
|
if (isTagArray(tag)) {
|
|
81
47
|
return cloneValueArray(tag);
|
|
@@ -83,4 +49,16 @@ function cloneValueArray(values) {
|
|
|
83
49
|
return deepClone(value);
|
|
84
50
|
});
|
|
85
51
|
}
|
|
52
|
+
export class TagSupport extends BaseTagSupport {
|
|
53
|
+
ownerTagSupport;
|
|
54
|
+
templater;
|
|
55
|
+
subject;
|
|
56
|
+
isApp = false;
|
|
57
|
+
constructor(ownerTagSupport, templater, subject) {
|
|
58
|
+
super(templater, subject);
|
|
59
|
+
this.ownerTagSupport = ownerTagSupport;
|
|
60
|
+
this.templater = templater;
|
|
61
|
+
this.subject = subject;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
86
64
|
//# sourceMappingURL=TagSupport.class.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagSupport.class.js","sourceRoot":"","sources":["../ts/TagSupport.class.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TagSupport.class.js","sourceRoot":"","sources":["../ts/TagSupport.class.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAMxE,MAAM,OAAO,cAAc;IAmBhB;IACA;IAnBT,KAAK,GAAG,IAAI,CAAA;IAEZ,WAAW,CAMV;IAED,MAAM,GAAc;QAClB,mHAAmH;QACnH,KAAK,EAAE;YACL,MAAM,EAAE,EAAsB;SAC/B;KACF,CAAA;IAED,YACS,SAA0B,EAC1B,OAAmB;QADnB,cAAS,GAAT,SAAS,CAAiB;QAC1B,YAAO,GAAP,OAAO,CAAY;QAE1B,MAAM,QAAQ,GAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAC,uCAAuC;QAC7F,MAAM,KAAK,GAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA,CAAE,gBAAgB;QAE3D,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA,CAAC,+BAA+B;QACrE,IAAI,CAAC,WAAW,GAAG;YACjB,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,2CAA2C;YACzD,WAAW,EAAE,YAAY,EAAE,kBAAkB;YAC7C,mBAAmB,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC5C,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC/C,OAAO,WAAW,CAAA;YACpB,CAAC,CAAC;SACH,CAAA;QAED,qGAAqG;QACrG,IAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,SAAS,CAAE,YAAY,CAAE,CAAA;YACzD,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAA;QAC9D,CAAC;IACH,CAAC;CACF;AAGD,SAAS,eAAe,CAAI,MAA2B;IACrD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,KAAY,CAAA;QAExB,IAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACpC,CAAC;QAED,IAAG,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,GAAiC,CAAA;YACtD,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACtC,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;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAInC;IACA;IACA;IALT,KAAK,GAAG,KAAK,CAAA;IAEb,YACS,eAA2B,EAC3B,SAA0B,EAC1B,OAAmB;QAE1B,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAJlB,oBAAe,GAAf,eAAe,CAAY;QAC3B,cAAS,GAAT,SAAS,CAAiB;QAC1B,YAAO,GAAP,OAAO,CAAY;IAG5B,CAAC;CACF"}
|