taggedjs 2.0.1 → 2.1.2
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/index.js +1 -1
- package/js/Subject.d.ts +12 -0
- package/js/Subject.js +38 -0
- package/js/Subject.js.map +1 -0
- package/js/Tag.class.d.ts +45 -0
- package/js/Tag.class.js +213 -0
- package/js/Tag.class.js.map +1 -0
- package/js/Tag.utils.d.ts +24 -0
- package/js/Tag.utils.js +102 -0
- package/js/Tag.utils.js.map +1 -0
- package/js/ValueSubject.d.ts +6 -0
- package/js/ValueSubject.js +15 -0
- package/js/ValueSubject.js.map +1 -0
- package/js/deepFunctions.d.ts +2 -0
- package/js/deepFunctions.js +76 -0
- package/js/deepFunctions.js.map +1 -0
- package/js/elementInitCheck.d.ts +2 -0
- package/js/elementInitCheck.js +18 -0
- package/js/elementInitCheck.js.map +1 -0
- package/js/getCallback.d.ts +3 -0
- package/js/getCallback.js +53 -0
- package/js/getCallback.js.map +1 -0
- package/js/getTagSupport.d.ts +20 -0
- package/js/getTagSupport.js +20 -0
- package/js/getTagSupport.js.map +1 -0
- package/js/html.d.ts +2 -0
- package/js/html.js +5 -0
- package/js/html.js.map +1 -0
- package/js/index.d.ts +10 -0
- package/js/index.js +12 -0
- package/js/index.js.map +1 -0
- package/js/inputAttribute.d.ts +1 -0
- package/js/inputAttribute.js +19 -0
- package/js/inputAttribute.js.map +1 -0
- package/js/interpolateAttributes.d.ts +3 -0
- package/js/interpolateAttributes.js +69 -0
- package/js/interpolateAttributes.js.map +1 -0
- package/js/interpolateContentTemplates.d.ts +3 -0
- package/js/interpolateContentTemplates.js +47 -0
- package/js/interpolateContentTemplates.js.map +1 -0
- package/js/interpolateElement.d.ts +14 -0
- package/js/interpolateElement.js +35 -0
- package/js/interpolateElement.js.map +1 -0
- package/js/interpolateTemplate.d.ts +21 -0
- package/js/interpolateTemplate.js +262 -0
- package/js/interpolateTemplate.js.map +1 -0
- package/js/interpolations.d.ts +6 -0
- package/js/interpolations.js +17 -0
- package/js/interpolations.js.map +1 -0
- package/js/js/Subject.d.ts +12 -0
- package/js/js/Subject.js +38 -0
- package/js/js/Subject.js.map +1 -0
- package/js/js/Tag.class.d.ts +45 -0
- package/js/js/Tag.class.js +213 -0
- package/js/js/Tag.class.js.map +1 -0
- package/js/js/Tag.utils.d.ts +24 -0
- package/js/js/Tag.utils.js +102 -0
- package/js/js/Tag.utils.js.map +1 -0
- package/js/js/ValueSubject.d.ts +6 -0
- package/js/js/ValueSubject.js +15 -0
- package/js/js/ValueSubject.js.map +1 -0
- package/js/js/deepFunctions.d.ts +2 -0
- package/js/js/deepFunctions.js +76 -0
- package/js/js/deepFunctions.js.map +1 -0
- package/js/js/elementInitCheck.d.ts +2 -0
- package/js/js/elementInitCheck.js +18 -0
- package/js/js/elementInitCheck.js.map +1 -0
- package/js/js/getCallback.d.ts +3 -0
- package/js/js/getCallback.js +53 -0
- package/js/js/getCallback.js.map +1 -0
- package/js/js/getTagSupport.d.ts +20 -0
- package/js/js/getTagSupport.js +20 -0
- package/js/js/getTagSupport.js.map +1 -0
- package/js/js/html.d.ts +2 -0
- package/js/js/html.js +5 -0
- package/js/js/html.js.map +1 -0
- package/js/js/index.d.ts +10 -0
- package/js/js/index.js +12 -0
- package/js/js/index.js.map +1 -0
- package/js/js/inputAttribute.d.ts +1 -0
- package/js/js/inputAttribute.js +19 -0
- package/js/js/inputAttribute.js.map +1 -0
- package/js/js/interpolateAttributes.d.ts +3 -0
- package/js/js/interpolateAttributes.js +69 -0
- package/js/js/interpolateAttributes.js.map +1 -0
- package/js/js/interpolateContentTemplates.d.ts +3 -0
- package/js/js/interpolateContentTemplates.js +47 -0
- package/js/js/interpolateContentTemplates.js.map +1 -0
- package/js/js/interpolateElement.d.ts +14 -0
- package/js/js/interpolateElement.js +35 -0
- package/js/js/interpolateElement.js.map +1 -0
- package/js/js/interpolateTemplate.d.ts +21 -0
- package/js/js/interpolateTemplate.js +262 -0
- package/js/js/interpolateTemplate.js.map +1 -0
- package/js/js/interpolations.d.ts +6 -0
- package/js/js/interpolations.js +17 -0
- package/js/js/interpolations.js.map +1 -0
- package/js/js/onInit.d.ts +6 -0
- package/js/js/onInit.js +17 -0
- package/js/js/onInit.js.map +1 -0
- package/js/js/processTagArray.d.ts +5 -0
- package/js/js/processTagArray.js +49 -0
- package/js/js/processTagArray.js.map +1 -0
- package/js/js/providers.d.ts +25 -0
- package/js/js/providers.js +78 -0
- package/js/js/providers.js.map +1 -0
- package/js/js/render.d.ts +6 -0
- package/js/js/render.js +31 -0
- package/js/js/render.js.map +1 -0
- package/js/js/renderAppToElement.d.ts +8 -0
- package/js/js/renderAppToElement.js +38 -0
- package/js/js/renderAppToElement.js.map +1 -0
- package/js/js/state.d.ts +21 -0
- package/js/js/state.js +63 -0
- package/js/js/state.js.map +1 -0
- package/js/js/tag.d.ts +17 -0
- package/js/js/tag.js +57 -0
- package/js/js/tag.js.map +1 -0
- package/js/js/tagRunner.d.ts +17 -0
- package/js/js/tagRunner.js +19 -0
- package/js/js/tagRunner.js.map +1 -0
- package/js/js/wait.d.ts +1 -0
- package/js/js/wait.js +8 -0
- package/js/js/wait.js.map +1 -0
- package/js/onInit.d.ts +6 -0
- package/js/onInit.js +17 -0
- package/js/onInit.js.map +1 -0
- package/js/processTagArray.d.ts +5 -0
- package/js/processTagArray.js +49 -0
- package/js/processTagArray.js.map +1 -0
- package/js/providers.d.ts +25 -0
- package/js/providers.js +78 -0
- package/js/providers.js.map +1 -0
- package/js/render.d.ts +6 -0
- package/js/render.js +31 -0
- package/js/render.js.map +1 -0
- package/js/renderAppToElement.d.ts +8 -0
- package/js/renderAppToElement.js +38 -0
- package/js/renderAppToElement.js.map +1 -0
- package/js/state.d.ts +21 -0
- package/js/state.js +63 -0
- package/js/state.js.map +1 -0
- package/js/tag.d.ts +17 -0
- package/js/tag.js +57 -0
- package/js/tag.js.map +1 -0
- package/js/tagRunner.d.ts +17 -0
- package/js/tagRunner.js +19 -0
- package/js/tagRunner.js.map +1 -0
- package/js/wait.d.ts +1 -0
- package/js/wait.js +8 -0
- package/js/wait.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { buildItemTagMap } from "./render.js";
|
|
2
|
+
import { Tag, variablePrefix } from "./Tag.class.js";
|
|
3
|
+
import { Subject } from "./Subject.js";
|
|
4
|
+
import { processTagArray } from "./processTagArray.js";
|
|
5
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
6
|
+
import { deepClone, deepEqual } from "./deepFunctions.js";
|
|
7
|
+
import { config as providers } from "./providers.js";
|
|
8
|
+
import { elementInitCheck } from "./elementInitCheck.js";
|
|
9
|
+
import { runBeforeRender } from "./tagRunner.js";
|
|
10
|
+
import { TemplaterResult } from "./tag.js";
|
|
11
|
+
export function interpolateTemplate(template, // <template end interpolate /> (will be removed)
|
|
12
|
+
context, // variable scope of {`__tagVar${index}`:'x'}
|
|
13
|
+
ownerTag, // Tag class
|
|
14
|
+
counts) {
|
|
15
|
+
if (!template.hasAttribute('end')) {
|
|
16
|
+
return; // only care about starts
|
|
17
|
+
}
|
|
18
|
+
const variableName = template.getAttribute('id');
|
|
19
|
+
if (variableName?.substring(0, variablePrefix.length) !== variablePrefix) {
|
|
20
|
+
return; // ignore, not a tagVar
|
|
21
|
+
}
|
|
22
|
+
const result = context[variableName];
|
|
23
|
+
if (result instanceof Subject) {
|
|
24
|
+
const callback = (templateNewValue) => {
|
|
25
|
+
processSubjectValue(templateNewValue, result, template, ownerTag, counts);
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
counts.added = 0; // reset
|
|
28
|
+
counts.removed = 0; // reset
|
|
29
|
+
}, 0);
|
|
30
|
+
};
|
|
31
|
+
const sub = result.subscribe(callback);
|
|
32
|
+
ownerTag.cloneSubs.push(sub);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const clone = updateBetweenTemplates(result, template.clone || template);
|
|
36
|
+
ownerTag.clones.push(clone);
|
|
37
|
+
template.clone = clone;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
* @param {*} value
|
|
43
|
+
* @param {*} result
|
|
44
|
+
* @param {*} template
|
|
45
|
+
* @param {Tag} ownerTag
|
|
46
|
+
* @param {{added: number, removed: number}} counts
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
function processSubjectValue(value, result, // could be tag via result.tag
|
|
50
|
+
template, // <template end interpolate /> (will be removed)
|
|
51
|
+
ownerTag, counts) {
|
|
52
|
+
if (value instanceof Tag) {
|
|
53
|
+
// first time seeing this tag?
|
|
54
|
+
if (!value.tagSupport) {
|
|
55
|
+
value.tagSupport = getTagSupport();
|
|
56
|
+
value.tagSupport.mutatingRender = ownerTag.tagSupport.mutatingRender;
|
|
57
|
+
value.tagSupport.oldest = value.tagSupport.oldest || value;
|
|
58
|
+
ownerTag.children.push(value);
|
|
59
|
+
value.ownerTag = ownerTag;
|
|
60
|
+
}
|
|
61
|
+
// value.tagSupport.newest = value
|
|
62
|
+
processTagResult(value, result, // Function will attach result.tag
|
|
63
|
+
template, { counts });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// *for map
|
|
67
|
+
if (value instanceof Array && value.every(x => x instanceof Tag)) {
|
|
68
|
+
return processTagArray(result, value, template, ownerTag, counts);
|
|
69
|
+
}
|
|
70
|
+
if (isTagComponent(value)) {
|
|
71
|
+
return processSubjectComponent(value, result, template, ownerTag, counts);
|
|
72
|
+
}
|
|
73
|
+
// *if processing WAS a tag BUT NOW its some other non-tag value
|
|
74
|
+
if (result.tag) {
|
|
75
|
+
// put the template back
|
|
76
|
+
const lastFirstChild = template.clone || template; // result.tag.clones[0] // template.lastFirstChild
|
|
77
|
+
lastFirstChild.parentNode.insertBefore(template, lastFirstChild);
|
|
78
|
+
const stagger = counts.removed;
|
|
79
|
+
const animated = result.tag.destroy(stagger);
|
|
80
|
+
counts.removed = stagger + animated;
|
|
81
|
+
delete result.tag;
|
|
82
|
+
const clone = updateBetweenTemplates(value, lastFirstChild // ✅ this will be removed
|
|
83
|
+
); // the template will be remove in here
|
|
84
|
+
template.clone = clone;
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const before = template.clone || template; // Either the template is on the doc OR its the first element we last put on doc
|
|
88
|
+
// Processing of regular values
|
|
89
|
+
const clone = updateBetweenTemplates(value, before);
|
|
90
|
+
template.clone = clone;
|
|
91
|
+
const oldPos = ownerTag.clones.indexOf(before);
|
|
92
|
+
if (oldPos >= 0 && !ownerTag.clones.includes(clone) && !before.parentNode) {
|
|
93
|
+
ownerTag.clones.splice(oldPos, 1);
|
|
94
|
+
ownerTag.clones.push(clone);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Function to update the value of x
|
|
98
|
+
export function updateBetweenTemplates(value, lastFirstChild) {
|
|
99
|
+
const parent = lastFirstChild.parentNode;
|
|
100
|
+
// mimic React skipping to display EXCEPT for true does display on page
|
|
101
|
+
if (value === undefined || value === false || value === null) { // || value === true
|
|
102
|
+
value = '';
|
|
103
|
+
}
|
|
104
|
+
// Insert the new value (never use innerHTML here)
|
|
105
|
+
const textNode = document.createTextNode(value); // never innerHTML
|
|
106
|
+
parent.insertBefore(textNode, lastFirstChild);
|
|
107
|
+
/* remove existing nodes */
|
|
108
|
+
parent.removeChild(lastFirstChild);
|
|
109
|
+
return textNode;
|
|
110
|
+
}
|
|
111
|
+
/** Returns {clones:[], subs:[]} */
|
|
112
|
+
export function processTagResult(tag, result, // used for recording past and current value
|
|
113
|
+
insertBefore, // <template end interpolate />
|
|
114
|
+
{ index, counts, }) {
|
|
115
|
+
const template = tag.getTemplate();
|
|
116
|
+
// *for
|
|
117
|
+
if (index !== undefined) {
|
|
118
|
+
const existing = result.lastArray[index];
|
|
119
|
+
if (existing?.tag.isLikeTag(tag)) {
|
|
120
|
+
existing.tag.updateByTag(tag);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const lastFirstChild = insertBefore; // tag.clones[0] // insertBefore.lastFirstChild
|
|
124
|
+
const clones = buildItemTagMap(tag, template, lastFirstChild);
|
|
125
|
+
clones.forEach(clone => afterElmBuild(clone, counts));
|
|
126
|
+
result.lastArray.push({
|
|
127
|
+
tag, index
|
|
128
|
+
});
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// *if appears we already have seen
|
|
132
|
+
if (result.tag) {
|
|
133
|
+
// are we just updating an if we already had?
|
|
134
|
+
if (result.tag.isLikeTag(tag)) {
|
|
135
|
+
// components
|
|
136
|
+
if (result instanceof Function) {
|
|
137
|
+
const newTag = result(result.tag.tagSupport);
|
|
138
|
+
result.tag.updateByTag(newTag);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
result.tag.updateByTag(tag);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// *if just now appearing to be a Tag
|
|
146
|
+
const before = insertBefore.clone || insertBefore;
|
|
147
|
+
const clones = buildItemTagMap(tag, template, before);
|
|
148
|
+
clones.forEach(clone => afterElmBuild(clone, counts));
|
|
149
|
+
result.tag = tag; // let reprocessing know we saw this previously as an if
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
export function isTagComponent(value) {
|
|
153
|
+
return value instanceof TemplaterResult;
|
|
154
|
+
}
|
|
155
|
+
function processSubjectComponent(value, result, template, ownerTag, counts) {
|
|
156
|
+
if (value.tagged !== true) {
|
|
157
|
+
let name = value.name || value.constructor?.name;
|
|
158
|
+
if (name === 'Function') {
|
|
159
|
+
name = undefined;
|
|
160
|
+
}
|
|
161
|
+
const error = new Error(`Not a tag component. Wrap your function with tag(). Example tag(props => html\`\`) on component:\n\n${name || value.toString().substring(0, 120)}\n\n`);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
/** @type {TagSupport} */
|
|
165
|
+
const tagSupport = result.tagSupport || getTagSupport(value);
|
|
166
|
+
tagSupport.mutatingRender = () => {
|
|
167
|
+
const preRenderCount = tagSupport.renderCount;
|
|
168
|
+
// Is this NOT my first render
|
|
169
|
+
if (result.tag) {
|
|
170
|
+
providersChangeCheck(result.tag);
|
|
171
|
+
// When the providers were checked, a render to myself occurred and I do not need to re-render again
|
|
172
|
+
if (preRenderCount !== tagSupport.renderCount) {
|
|
173
|
+
return tagSupport.newest;
|
|
174
|
+
}
|
|
175
|
+
const hasPropsChanged = tagSupport.hasPropChanges(value.props, value.newProps, result.tag.tagSupport.templater.props);
|
|
176
|
+
if (!hasPropsChanged) {
|
|
177
|
+
tagSupport.newest = value.redraw(value.newProps); // No change detected, just redraw me only
|
|
178
|
+
return tagSupport.newest;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// draw to my parent
|
|
182
|
+
const newest = tagSupport.newest = ownerTag.tagSupport.render();
|
|
183
|
+
return newest;
|
|
184
|
+
};
|
|
185
|
+
const templater = value;
|
|
186
|
+
let tag = templater.newest;
|
|
187
|
+
providers.ownerTag = ownerTag;
|
|
188
|
+
const isFirstTime = !tag;
|
|
189
|
+
runBeforeRender(tagSupport, tag);
|
|
190
|
+
if (isFirstTime) {
|
|
191
|
+
tag = templater.wrapper();
|
|
192
|
+
tag.tagSupport = tagSupport;
|
|
193
|
+
tag.afterRender();
|
|
194
|
+
templater.oldest = tag;
|
|
195
|
+
tagSupport.oldest = tag;
|
|
196
|
+
value.oldest = tag;
|
|
197
|
+
}
|
|
198
|
+
templater.newest = tag;
|
|
199
|
+
tag.ownerTag = ownerTag;
|
|
200
|
+
tag.ownerTag = ownerTag;
|
|
201
|
+
ownerTag.children.push(tag);
|
|
202
|
+
tag.setSupport(tagSupport);
|
|
203
|
+
processTagResult(tag, result, // The element set here will be removed from document
|
|
204
|
+
template, // <template end interpolate /> (will be removed)
|
|
205
|
+
{
|
|
206
|
+
counts,
|
|
207
|
+
});
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
function afterElmBuild(elm, counts) {
|
|
211
|
+
if (!elm.getAttribute) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
elementInitCheck(elm, counts);
|
|
215
|
+
if (elm.children) {
|
|
216
|
+
new Array(...elm.children).forEach(child => afterElmBuild(child, counts));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
function providersChangeCheck(tag) {
|
|
220
|
+
const providersWithChanges = tag.providers.filter(provider => {
|
|
221
|
+
return !deepEqual(provider.instance, provider.clone);
|
|
222
|
+
});
|
|
223
|
+
// reset clones
|
|
224
|
+
providersWithChanges.forEach(provider => {
|
|
225
|
+
const appElement = tag.getAppElement();
|
|
226
|
+
handleProviderChanges(appElement, provider);
|
|
227
|
+
provider.clone = deepClone(provider.instance);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
*
|
|
232
|
+
* @param {Tag} appElement
|
|
233
|
+
* @param {Provider} provider
|
|
234
|
+
*/
|
|
235
|
+
function handleProviderChanges(appElement, provider) {
|
|
236
|
+
const tagsWithProvider = getTagsWithProvider(appElement, provider);
|
|
237
|
+
tagsWithProvider.forEach(({ tag, renderCount, provider }) => {
|
|
238
|
+
if (renderCount === tag.tagSupport.renderCount) {
|
|
239
|
+
provider.clone = deepClone(provider.instance);
|
|
240
|
+
tag.tagSupport.render();
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
*
|
|
246
|
+
* @param {Tag} appElement
|
|
247
|
+
* @param {Provider} provider
|
|
248
|
+
* @returns {{tag: Tag, renderCount: numer, provider: Provider}[]}
|
|
249
|
+
*/
|
|
250
|
+
function getTagsWithProvider(tag, provider, memory = []) {
|
|
251
|
+
const hasProvider = tag.providers.find(xProvider => xProvider.constructMethod === provider.constructMethod);
|
|
252
|
+
if (hasProvider) {
|
|
253
|
+
memory.push({
|
|
254
|
+
tag,
|
|
255
|
+
renderCount: tag.tagSupport.renderCount,
|
|
256
|
+
provider: hasProvider
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
tag.children.forEach(child => getTagsWithProvider(child, provider, memory));
|
|
260
|
+
return memory;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=interpolateTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolateTemplate.js","sourceRoot":"","sources":["../ts/interpolateTemplate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const interpolateReplace = /(?:<[^>]*>)|({__tagVar[^}]+})/g;
|
|
2
|
+
/** replaces ${x} with <template id="x-start"></template><template id="x-end"></template> */
|
|
3
|
+
export function interpolateToTemplates(template) {
|
|
4
|
+
const keys = [];
|
|
5
|
+
const string = template.replace(interpolateReplace, (match, expression) => {
|
|
6
|
+
if (match.startsWith('<')) {
|
|
7
|
+
// If the match is an HTML tag, don't replace
|
|
8
|
+
return match;
|
|
9
|
+
}
|
|
10
|
+
const noBraces = expression.substring(1, expression.length - 1);
|
|
11
|
+
const id = noBraces;
|
|
12
|
+
keys.push(id);
|
|
13
|
+
return `<template interpolate end id="${id}"></template>`;
|
|
14
|
+
});
|
|
15
|
+
return { string, keys };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=interpolations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolations.js","sourceRoot":"","sources":["../ts/interpolations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;AAElE,4FAA4F;AAC5F,MAAM,UAAU,sBAAsB,CACpC,QAAgB;IAEhB,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACxE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,6CAA6C;YAC7C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC,CAAA;QAC7D,MAAM,EAAE,GAAG,QAAQ,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACb,OAAO,iCAAiC,EAAE,eAAe,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type Subscription = (() => void) & {
|
|
2
|
+
unsubscribe: () => any;
|
|
3
|
+
};
|
|
4
|
+
type Subscriber = () => any;
|
|
5
|
+
export declare class Subject {
|
|
6
|
+
subscribers: Subscriber[];
|
|
7
|
+
value?: any;
|
|
8
|
+
subscribe(callback: Subscriber): Subscription;
|
|
9
|
+
set(value: any): void;
|
|
10
|
+
next: (value: any) => void;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
package/js/js/Subject.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export class Subject {
|
|
2
|
+
subscribers = [];
|
|
3
|
+
value;
|
|
4
|
+
// unsubcount = 0 // 🔬 testing
|
|
5
|
+
subscribe(callback) {
|
|
6
|
+
this.subscribers.push(callback);
|
|
7
|
+
Subject.globalSubs.push(callback); // 🔬 testing
|
|
8
|
+
++Subject.globalSubCount;
|
|
9
|
+
const unsubscribe = () => {
|
|
10
|
+
removeSubFromArray(this.subscribers, callback);
|
|
11
|
+
removeSubFromArray(Subject.globalSubs, callback); // 🔬 testing
|
|
12
|
+
--Subject.globalSubCount;
|
|
13
|
+
};
|
|
14
|
+
// Return a function to unsubscribe from the BehaviorSubject
|
|
15
|
+
unsubscribe.unsubscribe = unsubscribe;
|
|
16
|
+
return unsubscribe;
|
|
17
|
+
}
|
|
18
|
+
set(value) {
|
|
19
|
+
this.value = value;
|
|
20
|
+
// Notify all subscribers with the new value
|
|
21
|
+
this.subscribers.forEach((callback) => {
|
|
22
|
+
callback.value = value;
|
|
23
|
+
callback(value);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
next = this.set;
|
|
27
|
+
}
|
|
28
|
+
function removeSubFromArray(subscribers, callback) {
|
|
29
|
+
const index = subscribers.indexOf(callback);
|
|
30
|
+
if (index !== -1) {
|
|
31
|
+
subscribers.splice(index, 1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
Subject.globalSubCount = 0 // for ease of debugging
|
|
36
|
+
;
|
|
37
|
+
Subject.globalSubs = []; // 🔬 testing
|
|
38
|
+
//# sourceMappingURL=Subject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Subject.js","sourceRoot":"","sources":["../ts/Subject.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,OAAO;IAClB,WAAW,GAAiB,EAAE,CAAA;IAC9B,KAAK,CAAM;IACX,+BAA+B;IAE/B,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9B;QAAC,OAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,aAAa;QAEzD,EAAG,OAAe,CAAC,cAAc,CAAA;QAEjC,MAAM,WAAW,GAAiB,GAAG,EAAE;YACrC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC9C,kBAAkB,CAAE,OAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA,CAAC,aAAa;YACvE,EAAG,OAAe,CAAC,cAAc,CAAA;QACnC,CAAC,CAAA;QAED,4DAA4D;QAC5D,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;QAErC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,KAAU;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAA;CAChB;AAED,SAAS,kBAAkB,CACzB,WAAyB,EACzB,QAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,CAAC;AAAC,OAAe,CAAC,cAAc,GAAG,CAAC,CAAC,wBAAwB;CAC5D;AAAC,OAAe,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,aAAa"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { Provider } from "./providers.js";
|
|
3
|
+
import { Subscription } from "./Subject.js";
|
|
4
|
+
export declare const variablePrefix = "__tagVar";
|
|
5
|
+
export declare const escapeVariable: string;
|
|
6
|
+
export declare const escapeSearch: RegExp;
|
|
7
|
+
export type Context = {
|
|
8
|
+
[index: string]: any;
|
|
9
|
+
};
|
|
10
|
+
export declare class Tag {
|
|
11
|
+
strings: string[];
|
|
12
|
+
values: any[];
|
|
13
|
+
context: Context;
|
|
14
|
+
clones: (Element | Text | ChildNode)[];
|
|
15
|
+
cloneSubs: Subscription[];
|
|
16
|
+
children: Tag[];
|
|
17
|
+
tagSupport: TagSupport;
|
|
18
|
+
ownerTag?: Tag;
|
|
19
|
+
arrayValue?: any[];
|
|
20
|
+
constructor(strings: string[], values: any[]);
|
|
21
|
+
providers: Provider[];
|
|
22
|
+
beforeRedraw(): void;
|
|
23
|
+
afterRender(): void;
|
|
24
|
+
/** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
|
|
25
|
+
key(arrayValue: any[]): this;
|
|
26
|
+
destroy(stagger?: number, byParent?: boolean): number;
|
|
27
|
+
destroySubscriptions(): void;
|
|
28
|
+
destroyClones(stagger?: number): number;
|
|
29
|
+
updateByTag(tag: Tag): void;
|
|
30
|
+
lastTemplateString: string | undefined;
|
|
31
|
+
/** A method of passing down the same render method */
|
|
32
|
+
setSupport(tagSupport: TagSupport): void;
|
|
33
|
+
updateConfig(strings: string[], values: any[]): void;
|
|
34
|
+
getTemplate(): {
|
|
35
|
+
string: string;
|
|
36
|
+
strings: string[];
|
|
37
|
+
values: any[];
|
|
38
|
+
context: Context;
|
|
39
|
+
};
|
|
40
|
+
isLikeTag(tag: Tag): boolean;
|
|
41
|
+
update(): Context;
|
|
42
|
+
updateValues(values: any[]): Context;
|
|
43
|
+
updateContext(context: Context): Context;
|
|
44
|
+
getAppElement(): Tag;
|
|
45
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { bindSubjectFunction, elementDestroyCheck, getSubjectFunction, setValueRedraw } from "./Tag.utils.js";
|
|
2
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
3
|
+
import { isTagComponent } from "./interpolateTemplate.js";
|
|
4
|
+
import { ValueSubject } from "./ValueSubject.js";
|
|
5
|
+
import { deepEqual } from "./deepFunctions.js";
|
|
6
|
+
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
7
|
+
export const variablePrefix = '__tagVar';
|
|
8
|
+
export const escapeVariable = '--' + variablePrefix + '--';
|
|
9
|
+
const prefixSearch = new RegExp(variablePrefix, 'g');
|
|
10
|
+
export const escapeSearch = new RegExp(escapeVariable, 'g');
|
|
11
|
+
export class Tag {
|
|
12
|
+
strings;
|
|
13
|
+
values;
|
|
14
|
+
context = {}; // populated after reading interpolated.values array converted to an object {variable0, variable:1}
|
|
15
|
+
clones = []; // elements on document
|
|
16
|
+
cloneSubs = []; // subscriptions created by clones
|
|
17
|
+
children = []; // tags on me
|
|
18
|
+
tagSupport;
|
|
19
|
+
// only present when a child of a tag
|
|
20
|
+
ownerTag;
|
|
21
|
+
// present only when an array. Populated by this.key()
|
|
22
|
+
arrayValue;
|
|
23
|
+
constructor(strings, values) {
|
|
24
|
+
this.strings = strings;
|
|
25
|
+
this.values = values;
|
|
26
|
+
}
|
|
27
|
+
providers = [];
|
|
28
|
+
beforeRedraw() {
|
|
29
|
+
runBeforeRedraw(this.tagSupport, this);
|
|
30
|
+
}
|
|
31
|
+
afterRender() {
|
|
32
|
+
runAfterRender(this.tagSupport, this);
|
|
33
|
+
}
|
|
34
|
+
/** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
|
|
35
|
+
key(arrayValue) {
|
|
36
|
+
this.arrayValue = arrayValue;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
destroy(stagger = 0, byParent = false) {
|
|
40
|
+
this.children.forEach((kid, index) => kid.destroy(0, true));
|
|
41
|
+
this.destroySubscriptions();
|
|
42
|
+
if (!byParent) {
|
|
43
|
+
stagger = this.destroyClones(stagger);
|
|
44
|
+
}
|
|
45
|
+
return stagger;
|
|
46
|
+
}
|
|
47
|
+
destroySubscriptions() {
|
|
48
|
+
this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
|
|
49
|
+
this.cloneSubs.length = 0;
|
|
50
|
+
}
|
|
51
|
+
destroyClones(stagger = 0) {
|
|
52
|
+
this.clones.reverse().forEach((clone, index) => {
|
|
53
|
+
let promise = Promise.resolve();
|
|
54
|
+
if (clone.ondestroy) {
|
|
55
|
+
promise = elementDestroyCheck(clone, stagger);
|
|
56
|
+
}
|
|
57
|
+
promise.then(() => clone.parentNode.removeChild(clone));
|
|
58
|
+
});
|
|
59
|
+
this.clones.length = 0;
|
|
60
|
+
return stagger;
|
|
61
|
+
}
|
|
62
|
+
updateByTag(tag) {
|
|
63
|
+
this.updateConfig(tag.strings, tag.values);
|
|
64
|
+
this.tagSupport.templater = tag.tagSupport.templater;
|
|
65
|
+
}
|
|
66
|
+
lastTemplateString = undefined; // used to compare templates for updates
|
|
67
|
+
/** A method of passing down the same render method */
|
|
68
|
+
setSupport(tagSupport) {
|
|
69
|
+
this.tagSupport = this.tagSupport || tagSupport;
|
|
70
|
+
this.tagSupport.mutatingRender = this.tagSupport.mutatingRender || tagSupport.mutatingRender;
|
|
71
|
+
this.children.forEach(kid => kid.setSupport(tagSupport));
|
|
72
|
+
}
|
|
73
|
+
updateConfig(strings, values) {
|
|
74
|
+
this.strings = strings;
|
|
75
|
+
this.updateValues(values);
|
|
76
|
+
}
|
|
77
|
+
getTemplate() {
|
|
78
|
+
// TODO: treat interpolation hack here
|
|
79
|
+
const string = this.lastTemplateString = this.strings.map((string, index) => {
|
|
80
|
+
const safeString = string.replace(prefixSearch, escapeVariable);
|
|
81
|
+
const endString = safeString + (this.values.length > index ? `{${variablePrefix}${index}}` : '');
|
|
82
|
+
return endString;
|
|
83
|
+
}).join('');
|
|
84
|
+
return { string, strings: this.strings, values: this.values, context: this.context };
|
|
85
|
+
}
|
|
86
|
+
isLikeTag(tag) {
|
|
87
|
+
if (tag.lastTemplateString !== this.lastTemplateString) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
if (tag.values.length !== this.values.length) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const allVarsMatch = tag.values.every((value, index) => {
|
|
94
|
+
const compareTo = this.values[index];
|
|
95
|
+
const isFunctions = value instanceof Function && compareTo instanceof Function;
|
|
96
|
+
if (isFunctions) {
|
|
97
|
+
const stringMatch = value.toString() === compareTo.toString();
|
|
98
|
+
if (stringMatch) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
if (value instanceof Tag && compareTo instanceof Tag) {
|
|
104
|
+
value.ownerTag = this; // let children know I own them
|
|
105
|
+
this.children.push(value); // record children I created
|
|
106
|
+
value.lastTemplateString || value.getTemplate().string; // ensure last template string is generated
|
|
107
|
+
if (value.isLikeTag(compareTo)) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
});
|
|
114
|
+
if (allVarsMatch) {
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
update() {
|
|
120
|
+
return this.updateContext(this.context);
|
|
121
|
+
}
|
|
122
|
+
updateValues(values) {
|
|
123
|
+
this.values = values;
|
|
124
|
+
return this.updateContext(this.context);
|
|
125
|
+
}
|
|
126
|
+
updateContext(context) {
|
|
127
|
+
this.strings.map((_string, index) => {
|
|
128
|
+
const variableName = variablePrefix + index;
|
|
129
|
+
const hasValue = this.values.length > index;
|
|
130
|
+
const value = this.values[index];
|
|
131
|
+
// is something already there?
|
|
132
|
+
const existing = context[variableName];
|
|
133
|
+
if (existing) {
|
|
134
|
+
/** @type {Tag | undefined} */
|
|
135
|
+
const ogTag = existing.value?.tag;
|
|
136
|
+
// handle already seen tag components
|
|
137
|
+
if (isTagComponent(value)) {
|
|
138
|
+
const latestProps = value.cloneProps;
|
|
139
|
+
const existingTag = existing.tag;
|
|
140
|
+
// previously was something else, now a tag component
|
|
141
|
+
if (!existing.tag) {
|
|
142
|
+
setValueRedraw(value, existing, this);
|
|
143
|
+
value.redraw(latestProps);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const oldTagSetup = existingTag.tagSupport;
|
|
147
|
+
const tagSupport = value.tagSupport || oldTagSetup || getTagSupport(value);
|
|
148
|
+
const oldCloneProps = tagSupport.templater?.cloneProps;
|
|
149
|
+
const oldProps = tagSupport.templater?.props;
|
|
150
|
+
if (existingTag) {
|
|
151
|
+
const isCommonEqual = oldProps === undefined && oldProps === latestProps;
|
|
152
|
+
const equal = isCommonEqual || deepEqual(oldCloneProps, latestProps);
|
|
153
|
+
if (equal) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
setValueRedraw(value, existing, this);
|
|
158
|
+
oldTagSetup.templater = value;
|
|
159
|
+
existing.value.tag = oldTagSetup.newest = value.redraw(latestProps);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// handle already seen tags
|
|
163
|
+
if (ogTag) {
|
|
164
|
+
const tagSupport = ogTag.tagSupport;
|
|
165
|
+
const templater = value;
|
|
166
|
+
runBeforeRender(tagSupport, ogTag);
|
|
167
|
+
tagSupport.oldest.beforeRedraw();
|
|
168
|
+
const retag = templater.wrapper();
|
|
169
|
+
retag.tagSupport = tagSupport;
|
|
170
|
+
templater.newest = retag;
|
|
171
|
+
tagSupport.oldest.afterRender();
|
|
172
|
+
ogTag.updateByTag(retag);
|
|
173
|
+
existing.set(value);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// now its a function
|
|
177
|
+
if (value instanceof Function) {
|
|
178
|
+
existing.set(bindSubjectFunction(value, this));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
existing.set(value); // let ValueSubject now of newest value
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// First time values below
|
|
185
|
+
if (isTagComponent(value)) {
|
|
186
|
+
const existing = context[variableName] = new ValueSubject(value);
|
|
187
|
+
setValueRedraw(value, existing, this);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (value instanceof Function) {
|
|
191
|
+
context[variableName] = getSubjectFunction(value, this);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (!hasValue) {
|
|
195
|
+
return; // more strings than values, stop here
|
|
196
|
+
}
|
|
197
|
+
if (value instanceof Tag) {
|
|
198
|
+
value.ownerTag = this;
|
|
199
|
+
this.children.push(value);
|
|
200
|
+
}
|
|
201
|
+
context[variableName] = new ValueSubject(value);
|
|
202
|
+
});
|
|
203
|
+
return context;
|
|
204
|
+
}
|
|
205
|
+
getAppElement() {
|
|
206
|
+
let tag = this;
|
|
207
|
+
while (tag.ownerTag) {
|
|
208
|
+
tag = tag.ownerTag;
|
|
209
|
+
}
|
|
210
|
+
return tag;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=Tag.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ValueSubject } from "./ValueSubject.js";
|
|
2
|
+
import { Tag } from "./Tag.class.js";
|
|
3
|
+
import { TemplaterResult } from "./tag.js";
|
|
4
|
+
export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject;
|
|
5
|
+
/**
|
|
6
|
+
* @param {*} value
|
|
7
|
+
* @param {Tag} tag
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare function bindSubjectFunction(value: (...args: any[]) => any, tag: Tag): {
|
|
11
|
+
(element: Element, args: any[]): any;
|
|
12
|
+
tagFunction: (...args: any[]) => any;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param {*} templater
|
|
17
|
+
* @param {ExistingValue} existing
|
|
18
|
+
* @param {Tag} ownerTag
|
|
19
|
+
*/
|
|
20
|
+
export declare function setValueRedraw(templater: TemplaterResult, // latest tag function to call for rendering
|
|
21
|
+
existing: any, ownerTag: Tag): void;
|
|
22
|
+
export declare function elementDestroyCheck(nextSibling: Element & {
|
|
23
|
+
ondestroy?: () => any;
|
|
24
|
+
}, stagger: number): any;
|