taggedjs 2.4.2 → 2.4.12
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 +3612 -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 +25 -17
- package/js/Tag.class.js +208 -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 +36 -0
- package/js/TemplaterResult.class.js +73 -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 +45 -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 +18 -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 +16 -15
- package/js/getCallback.js.map +1 -1
- package/js/hasTagSupportChanged.function.d.ts +6 -6
- package/js/hasTagSupportChanged.function.js +30 -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 +6 -4
- 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 +17 -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 +30 -0
- package/js/renderExistingTag.function.js.map +1 -0
- package/js/renderTagSupport.function.d.ts +4 -0
- package/js/renderTagSupport.function.js +42 -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 +78 -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 +105 -39
- package/js/updateExistingTagComponent.function.js.map +1 -1
- package/js/updateExistingValue.function.d.ts +8 -10
- package/js/updateExistingValue.function.js +62 -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 -2
- 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');
|
|
@@ -15,14 +16,17 @@ export class ArrayValueNeverSet {
|
|
|
15
16
|
export class Tag {
|
|
16
17
|
strings;
|
|
17
18
|
values;
|
|
19
|
+
version = 0;
|
|
18
20
|
isTag = true;
|
|
19
|
-
|
|
21
|
+
hasLiveElements = false;
|
|
22
|
+
clones = []; // elements on document. Needed at destroy process to know what to destroy
|
|
20
23
|
cloneSubs = []; // subscriptions created by clones
|
|
21
|
-
|
|
24
|
+
childTags = []; // tags on me
|
|
22
25
|
tagSupport;
|
|
26
|
+
lastTemplateString = undefined; // used to compare templates for updates
|
|
23
27
|
// only present when a child of a tag
|
|
24
28
|
ownerTag;
|
|
25
|
-
insertBefore
|
|
29
|
+
// insertBefore?: Element
|
|
26
30
|
appElement; // only seen on this.getAppElement().appElement
|
|
27
31
|
// present only when an array. Populated by this.key()
|
|
28
32
|
arrayValue = new ArrayValueNeverSet();
|
|
@@ -35,71 +39,98 @@ export class Tag {
|
|
|
35
39
|
this.arrayValue = arrayValue;
|
|
36
40
|
return this;
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
destroy(options = {
|
|
39
43
|
stagger: 0,
|
|
40
44
|
byParent: false, // Only destroy clones of direct children
|
|
41
45
|
}) {
|
|
46
|
+
if (!this.hasLiveElements) {
|
|
47
|
+
throw new Error('destroying wrong tag');
|
|
48
|
+
}
|
|
49
|
+
const tagSupport = this.tagSupport;
|
|
50
|
+
const global = tagSupport.templater.global;
|
|
51
|
+
// removing is considered rendering. Prevents after event processing of this tag even tho possibly deleted
|
|
52
|
+
// ++this.tagSupport.templater.global.renderCount
|
|
42
53
|
// the isComponent check maybe able to be removed
|
|
43
|
-
const isComponent =
|
|
54
|
+
const isComponent = tagSupport ? true : false;
|
|
44
55
|
if (isComponent) {
|
|
45
|
-
runBeforeDestroy(
|
|
56
|
+
runBeforeDestroy(tagSupport, this);
|
|
46
57
|
}
|
|
58
|
+
const childTags = options.byParent ? [] : getChildTagsToDestroy(this.childTags);
|
|
59
|
+
// signify that no further event rendering should take place by making logic think a render occurred during event
|
|
60
|
+
// childTags.forEach(child => ++child.tagSupport.templater.global.renderCount)
|
|
61
|
+
// signify immediately child has been deleted (looked for during event processing)
|
|
62
|
+
childTags.forEach(child => {
|
|
63
|
+
const subGlobal = child.tagSupport.templater.global;
|
|
64
|
+
delete subGlobal.newest;
|
|
65
|
+
subGlobal.deleted = true;
|
|
66
|
+
});
|
|
67
|
+
delete global.oldest;
|
|
68
|
+
delete global.newest;
|
|
69
|
+
global.deleted = true;
|
|
70
|
+
this.hasLiveElements = false;
|
|
71
|
+
delete tagSupport.subject.tag;
|
|
47
72
|
this.destroySubscriptions();
|
|
48
|
-
|
|
73
|
+
let mainPromise;
|
|
49
74
|
if (this.ownerTag) {
|
|
50
|
-
this.ownerTag.
|
|
75
|
+
this.ownerTag.childTags = this.ownerTag.childTags.filter(child => child !== this);
|
|
51
76
|
}
|
|
52
77
|
if (!options.byParent) {
|
|
53
|
-
|
|
78
|
+
const { stagger, promise } = this.destroyClones(options);
|
|
79
|
+
options.stagger = stagger;
|
|
80
|
+
if (promise) {
|
|
81
|
+
mainPromise = promise;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.destroyClones();
|
|
86
|
+
}
|
|
87
|
+
if (mainPromise) {
|
|
88
|
+
mainPromise = mainPromise.then(async () => {
|
|
89
|
+
const promises = childTags.map(kid => kid.destroy({ stagger: 0, byParent: true }));
|
|
90
|
+
return Promise.all(promises);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
mainPromise = Promise.all(childTags.map(kid => kid.destroy({ stagger: 0, byParent: true })));
|
|
54
95
|
}
|
|
55
|
-
|
|
56
|
-
return options.stagger;
|
|
96
|
+
return mainPromise.then(() => options.stagger);
|
|
57
97
|
}
|
|
58
98
|
destroySubscriptions() {
|
|
59
99
|
this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
|
|
60
100
|
this.cloneSubs.length = 0;
|
|
61
101
|
}
|
|
62
|
-
|
|
102
|
+
destroyClones({ stagger } = {
|
|
63
103
|
stagger: 0,
|
|
64
104
|
}) {
|
|
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);
|
|
105
|
+
//const promises = this.clones.reverse().map(
|
|
106
|
+
const promises = this.clones.map(clone => this.checkCloneRemoval(clone, stagger)).filter(x => x); // only return promises
|
|
107
|
+
this.clones.length = 0; // tag maybe used for something else
|
|
108
|
+
if (promises.length) {
|
|
109
|
+
return { promise: Promise.all(promises), stagger };
|
|
90
110
|
}
|
|
91
|
-
return stagger;
|
|
111
|
+
return { stagger };
|
|
92
112
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
checkCloneRemoval(clone, stagger) {
|
|
114
|
+
let promise;
|
|
115
|
+
const customElm = clone;
|
|
116
|
+
if (customElm.ondestroy) {
|
|
117
|
+
promise = elementDestroyCheck(customElm, stagger);
|
|
118
|
+
}
|
|
119
|
+
const next = () => {
|
|
120
|
+
clone.parentNode?.removeChild(clone);
|
|
121
|
+
const ownerTag = this.ownerTag;
|
|
122
|
+
if (ownerTag) {
|
|
123
|
+
// Sometimes my clones were first registered to my owner, remove them from owner
|
|
124
|
+
ownerTag.clones = ownerTag.clones.filter(compareClone => compareClone !== clone);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
if (promise instanceof Promise) {
|
|
128
|
+
return promise.then(next);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
next();
|
|
132
|
+
}
|
|
133
|
+
return promise;
|
|
103
134
|
}
|
|
104
135
|
getTemplate() {
|
|
105
136
|
const string = this.strings.map((string, index) => {
|
|
@@ -117,11 +148,13 @@ export class Tag {
|
|
|
117
148
|
string: interpolation.string,
|
|
118
149
|
strings: this.strings,
|
|
119
150
|
values: this.values,
|
|
120
|
-
context: this.tagSupport
|
|
151
|
+
context: this.tagSupport.templater.global.context || {},
|
|
121
152
|
};
|
|
122
153
|
}
|
|
123
154
|
isLikeTag(tag) {
|
|
155
|
+
return isLikeTags(this, tag);
|
|
124
156
|
const { string } = tag.getTemplate();
|
|
157
|
+
// TODO: most likely remove?
|
|
125
158
|
if (!this.lastTemplateString) {
|
|
126
159
|
throw new Error('no template here');
|
|
127
160
|
}
|
|
@@ -146,12 +179,29 @@ export class Tag {
|
|
|
146
179
|
}
|
|
147
180
|
return false;
|
|
148
181
|
}
|
|
182
|
+
updateByTag(tag) {
|
|
183
|
+
if (!this.tagSupport.templater.global.oldest) {
|
|
184
|
+
throw new Error('no oldest here');
|
|
185
|
+
}
|
|
186
|
+
if (!this.hasLiveElements) {
|
|
187
|
+
throw new Error('trying to update a tag with no elements on stage');
|
|
188
|
+
}
|
|
189
|
+
this.tagSupport.templater.global.newest = tag;
|
|
190
|
+
if (!this.tagSupport.templater.global.context) {
|
|
191
|
+
throw new Error('issue back here');
|
|
192
|
+
}
|
|
193
|
+
this.updateConfig(tag.strings, tag.values);
|
|
194
|
+
}
|
|
195
|
+
updateConfig(strings, values) {
|
|
196
|
+
this.strings = strings;
|
|
197
|
+
this.updateValues(values);
|
|
198
|
+
}
|
|
149
199
|
update() {
|
|
150
|
-
return this.updateContext(this.tagSupport.
|
|
200
|
+
return this.updateContext(this.tagSupport.templater.global.context);
|
|
151
201
|
}
|
|
152
202
|
updateValues(values) {
|
|
153
203
|
this.values = values;
|
|
154
|
-
return this.updateContext(this.tagSupport.
|
|
204
|
+
return this.updateContext(this.tagSupport.templater.global.context);
|
|
155
205
|
}
|
|
156
206
|
updateContext(context) {
|
|
157
207
|
this.strings.map((_string, index) => {
|
|
@@ -159,13 +209,15 @@ export class Tag {
|
|
|
159
209
|
const hasValue = this.values.length > index;
|
|
160
210
|
const value = this.values[index];
|
|
161
211
|
// is something already there?
|
|
162
|
-
const
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
|
|
212
|
+
const exists = variableName in context;
|
|
213
|
+
if (exists) {
|
|
214
|
+
return updateContextItem(context, variableName, value);
|
|
215
|
+
}
|
|
216
|
+
if (!hasValue) {
|
|
217
|
+
return;
|
|
166
218
|
}
|
|
167
219
|
// 🆕 First time values below
|
|
168
|
-
processNewValue(hasValue, value,
|
|
220
|
+
context[variableName] = processNewValue(hasValue, value, this);
|
|
169
221
|
});
|
|
170
222
|
return context;
|
|
171
223
|
}
|
|
@@ -178,7 +230,8 @@ export class Tag {
|
|
|
178
230
|
}
|
|
179
231
|
/** Used during HMR only where static content itself could have been edited */
|
|
180
232
|
rebuild() {
|
|
181
|
-
const insertBefore = this.insertBefore
|
|
233
|
+
// const insertBefore = this.insertBefore
|
|
234
|
+
const insertBefore = this.tagSupport.templater.global.insertBefore;
|
|
182
235
|
if (!insertBefore) {
|
|
183
236
|
const err = new Error('Cannot rebuild. Previous insertBefore element is not defined on tag');
|
|
184
237
|
err.tag = this;
|
|
@@ -186,34 +239,111 @@ export class Tag {
|
|
|
186
239
|
}
|
|
187
240
|
this.buildBeforeElement(insertBefore, {
|
|
188
241
|
forceElement: true,
|
|
189
|
-
counts: { added: 0, removed: 0 },
|
|
242
|
+
counts: { added: 0, removed: 0 }, test: false,
|
|
190
243
|
});
|
|
191
244
|
}
|
|
192
245
|
buildBeforeElement(insertBefore, options = {
|
|
193
246
|
forceElement: false,
|
|
194
247
|
counts: { added: 0, removed: 0 },
|
|
248
|
+
test: false
|
|
195
249
|
}) {
|
|
196
|
-
|
|
250
|
+
if (!insertBefore.parentNode) {
|
|
251
|
+
throw new Error('no parent before removing clones');
|
|
252
|
+
}
|
|
253
|
+
this.tagSupport.templater.global.oldest = this;
|
|
254
|
+
this.tagSupport.templater.global.newest = this;
|
|
255
|
+
this.tagSupport.subject.tag = this;
|
|
256
|
+
this.hasLiveElements = true;
|
|
257
|
+
// remove old clones
|
|
258
|
+
if (this.clones.length) {
|
|
259
|
+
this.clones.forEach(clone => this.checkCloneRemoval(clone, 0));
|
|
260
|
+
}
|
|
261
|
+
// this.insertBefore = insertBefore
|
|
262
|
+
this.tagSupport.templater.global.insertBefore = insertBefore;
|
|
263
|
+
// const context = this.tagSupport.memory.context // this.update()
|
|
197
264
|
const context = this.update();
|
|
198
265
|
const template = this.getTemplate();
|
|
199
|
-
|
|
200
|
-
|
|
266
|
+
if (!insertBefore.parentNode) {
|
|
267
|
+
throw new Error('no parent before building tag');
|
|
268
|
+
}
|
|
269
|
+
const elementContainer = document.createElement('div');
|
|
270
|
+
elementContainer.id = 'tag-temp-holder';
|
|
201
271
|
// render content with a first child that we can know is our first element
|
|
202
|
-
|
|
203
|
-
//
|
|
204
|
-
const
|
|
272
|
+
elementContainer.innerHTML = `<template id="temp-template-tag-wrap">${template.string}</template>`;
|
|
273
|
+
// Search/replace innerHTML variables but don't interpolate tag components just yet
|
|
274
|
+
const { tagComponents } = interpolateElement(elementContainer, context, template, this, // ownerTag,
|
|
205
275
|
{
|
|
206
276
|
forceElement: options.forceElement,
|
|
207
277
|
counts: options.counts
|
|
278
|
+
}, options.test);
|
|
279
|
+
if (!insertBefore.parentNode) {
|
|
280
|
+
throw new Error('no parent building tag');
|
|
281
|
+
}
|
|
282
|
+
afterInterpolateElement(elementContainer, insertBefore, this, // ownerTag
|
|
283
|
+
context, options);
|
|
284
|
+
// this.clones.push(...clones)
|
|
285
|
+
// Any tag components that were found should be processed AFTER the owner processes its elements. Avoid double processing of elements attributes like (oninit)=${}
|
|
286
|
+
let isForceElement = options.forceElement;
|
|
287
|
+
tagComponents.forEach(tagComponent => {
|
|
288
|
+
// const preClones = this.clones.map(clone => clone)
|
|
289
|
+
subscribeToTemplate(tagComponent.insertBefore, // temporary,
|
|
290
|
+
tagComponent.subject, tagComponent.ownerTag, options.counts, { isForceElement });
|
|
291
|
+
if (!insertBefore.parentNode) {
|
|
292
|
+
throw new Error('no parent building tag components');
|
|
293
|
+
}
|
|
294
|
+
afterInterpolateElement(elementContainer, insertBefore, this, context, options);
|
|
295
|
+
// remove component clones from ownerTag as they will belong to the components they live on
|
|
296
|
+
/*
|
|
297
|
+
if( preClones.length ) {
|
|
298
|
+
this.clones = this.clones.filter(cloneFilter => !preClones.find(clone => clone === cloneFilter))
|
|
299
|
+
}
|
|
300
|
+
*/
|
|
208
301
|
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function afterInterpolateElement(container, insertBefore, ownerTag,
|
|
305
|
+
// preClones: Clones,
|
|
306
|
+
context, options) {
|
|
307
|
+
const clones = buildClones(container, insertBefore);
|
|
308
|
+
ownerTag.clones.push(...clones);
|
|
309
|
+
clones.forEach(clone => afterElmBuild(clone, options, context, ownerTag));
|
|
310
|
+
return clones;
|
|
311
|
+
}
|
|
312
|
+
function getChildTagsToDestroy(childTags, allTags = []) {
|
|
313
|
+
for (let index = childTags.length - 1; index >= 0; --index) {
|
|
314
|
+
const cTag = childTags[index];
|
|
315
|
+
if (allTags.find(x => x === cTag)) {
|
|
316
|
+
// TODO: Lets find why a child tag is attached twice to owner
|
|
317
|
+
throw new Error('child tag registered twice for delete');
|
|
214
318
|
}
|
|
215
|
-
|
|
216
|
-
|
|
319
|
+
allTags.push(cTag);
|
|
320
|
+
childTags.splice(index, 1);
|
|
321
|
+
getChildTagsToDestroy(cTag.childTags, allTags);
|
|
322
|
+
}
|
|
323
|
+
return allTags;
|
|
324
|
+
}
|
|
325
|
+
function updateContextItem(context, variableName, value) {
|
|
326
|
+
const subject = context[variableName];
|
|
327
|
+
const tag = subject.tag;
|
|
328
|
+
if (tag) {
|
|
329
|
+
const oldTemp = tag.tagSupport.templater;
|
|
330
|
+
const oldWrap = oldTemp.wrapper; // tag versus component
|
|
331
|
+
if (value.global !== oldTemp.global) {
|
|
332
|
+
if (oldWrap && isTagComponent(value)) {
|
|
333
|
+
const oldValueFn = oldWrap.original;
|
|
334
|
+
const newValueFn = value.wrapper?.original;
|
|
335
|
+
const fnMatched = oldValueFn === newValueFn;
|
|
336
|
+
if (fnMatched) {
|
|
337
|
+
value.global = oldTemp.global;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// return updateExistingValue(subject, value, this)
|
|
343
|
+
if (isSubjectInstance(value)) {
|
|
344
|
+
return;
|
|
217
345
|
}
|
|
346
|
+
subject.set(value); // listeners will evaluate updated values to possibly update display(s)
|
|
347
|
+
return;
|
|
218
348
|
}
|
|
219
349
|
//# 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
|