taggedjs 2.1.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/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,6 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
export type OnInitCallback = () => unknown;
|
|
3
|
+
/** When undefined, it means a tag is being built for the first time so do run init(s) */
|
|
4
|
+
export declare let initCurrentTag: Tag | undefined;
|
|
5
|
+
export declare function setCurrentInitTag(tag: Tag | undefined): void;
|
|
6
|
+
export declare function onInit(callback: OnInitCallback): void;
|
package/js/js/onInit.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { setUse } from "./tagRunner.js";
|
|
2
|
+
/** When undefined, it means a tag is being built for the first time so do run init(s) */
|
|
3
|
+
export let initCurrentTag;
|
|
4
|
+
export function setCurrentInitTag(tag) {
|
|
5
|
+
initCurrentTag = tag;
|
|
6
|
+
}
|
|
7
|
+
export function onInit(callback) {
|
|
8
|
+
if (!initCurrentTag) {
|
|
9
|
+
callback();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
setUse({
|
|
13
|
+
beforeRender: (_tagSupport, tag) => {
|
|
14
|
+
setCurrentInitTag(tag);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=onInit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onInit.js","sourceRoot":"","sources":["../ts/onInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAIvC,yFAAyF;AACzF,MAAM,CAAC,IAAI,cAA+B,CAAA;AAE1C,MAAM,UAAU,iBAAiB,CAAC,GAAoB;IACpD,cAAc,GAAG,GAAG,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,QAAwB;IAExB,IAAG,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,EAAE,CAAA;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC;IACL,YAAY,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;QACjC,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
import { Counts } from "./interpolateTemplate.js";
|
|
3
|
+
export declare function processTagArray(result: any, value: Tag[], // arry of Tag classes
|
|
4
|
+
template: Element, // <template end interpolate />
|
|
5
|
+
ownerTag: Tag, counts: Counts): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { processTagResult } from "./interpolateTemplate.js";
|
|
2
|
+
export function processTagArray(result, value, // arry of Tag classes
|
|
3
|
+
template, // <template end interpolate />
|
|
4
|
+
ownerTag, counts) {
|
|
5
|
+
result.lastArray = result.lastArray || []; // {tag, index}[] populated in processTagResult
|
|
6
|
+
let removed = 0;
|
|
7
|
+
/** 🗑️ remove previous items first */
|
|
8
|
+
result.lastArray = result.lastArray.filter((item, index) => {
|
|
9
|
+
const lessLength = value.length - 1 < index - removed;
|
|
10
|
+
const subTag = value[index - removed];
|
|
11
|
+
const subArrayValue = subTag?.arrayValue;
|
|
12
|
+
if (lessLength || subArrayValue !== item.tag.arrayValue) {
|
|
13
|
+
const last = result.lastArray[index];
|
|
14
|
+
const tag = last.tag;
|
|
15
|
+
tag.destroy(counts.removed, false);
|
|
16
|
+
++removed;
|
|
17
|
+
++counts.removed;
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
});
|
|
22
|
+
value.forEach((subTag, index) => {
|
|
23
|
+
subTag.tagSupport = ownerTag.tagSupport;
|
|
24
|
+
subTag.ownerTag = ownerTag;
|
|
25
|
+
ownerTag.children.push(subTag);
|
|
26
|
+
if (subTag.arrayValue === undefined) {
|
|
27
|
+
// appears arrayValue is not there but maybe arrayValue is actually the value of undefined
|
|
28
|
+
if (!Object.keys(subTag).includes('arrayValue')) {
|
|
29
|
+
const err = new Error('Use html`...`.key(item) instead of html`...` to template an Array');
|
|
30
|
+
err.code = 'add-array-key';
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const previous = result.lastArray[index];
|
|
35
|
+
if (previous) {
|
|
36
|
+
if (previous.tag.arrayValue === subTag.arrayValue) {
|
|
37
|
+
previous.tag.updateValues(subTag.values);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const before = template || template.clone;
|
|
42
|
+
processTagResult(subTag, result, before, {
|
|
43
|
+
index,
|
|
44
|
+
counts,
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=processTagArray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEnE,MAAM,UAAU,eAAe,CAC7B,MAAW,EACX,KAAY,EAAE,sBAAsB;AACpC,QAAiB,EAAE,+BAA+B;AAClD,QAAa,EACb,MAAc;IAEd,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAA,CAAC,+CAA+C;IAEzF,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,sCAAsC;IACtC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CACzC,IAAS,EACT,KAAa,EACb,EAAE;QACF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAA;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CAAA;QACrC,MAAM,aAAa,GAAG,MAAM,EAAE,UAAU,CAAA;QACxC,IAAG,UAAU,IAAI,aAAa,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;YACpB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;YAClC,EAAE,OAAO,CAAA;YACT,EAAE,MAAM,CAAC,OAAO,CAAA;YAChB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;QACvC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,0FAA0F;YAC1F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mEAAmE,CAAC,CACzF;gBAAC,GAAW,CAAC,IAAI,GAAG,eAAe,CAAA;gBACpC,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;gBAClD,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC1C,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,IAAK,QAAgB,CAAC,KAAK,CAAA;QAClD,gBAAgB,CACd,MAAM,EACN,MAAM,EACN,MAAM,EACN;YACE,KAAK;YACL,MAAM;SACP,CACF,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
export type Provider = {
|
|
3
|
+
constructMethod: any;
|
|
4
|
+
instance: any;
|
|
5
|
+
clone: any;
|
|
6
|
+
};
|
|
7
|
+
export declare const config: {
|
|
8
|
+
providers: Provider[];
|
|
9
|
+
currentTag: Tag | undefined;
|
|
10
|
+
ownerTag: Tag | undefined;
|
|
11
|
+
};
|
|
12
|
+
export declare const providers: {
|
|
13
|
+
/**
|
|
14
|
+
* @template T
|
|
15
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
16
|
+
* @returns {T}
|
|
17
|
+
*/
|
|
18
|
+
create: (constructMethod: any) => any;
|
|
19
|
+
/**
|
|
20
|
+
* @template T
|
|
21
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
22
|
+
* @returns {T}
|
|
23
|
+
*/
|
|
24
|
+
inject: (constructor: any) => any;
|
|
25
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { deepClone } from "./deepFunctions.js";
|
|
2
|
+
import { setUse } from "./tagRunner.js";
|
|
3
|
+
export const config = {
|
|
4
|
+
providers: [],
|
|
5
|
+
currentTag: undefined,
|
|
6
|
+
ownerTag: undefined,
|
|
7
|
+
};
|
|
8
|
+
function get(constructMethod) {
|
|
9
|
+
return config.providers.find(provider => provider.constructMethod === constructMethod);
|
|
10
|
+
}
|
|
11
|
+
export const providers = {
|
|
12
|
+
/**
|
|
13
|
+
* @template T
|
|
14
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
15
|
+
* @returns {T}
|
|
16
|
+
*/
|
|
17
|
+
create: (constructMethod) => {
|
|
18
|
+
const existing = get(constructMethod);
|
|
19
|
+
if (existing) {
|
|
20
|
+
existing.clone = deepClone(existing.instance);
|
|
21
|
+
return existing.instance;
|
|
22
|
+
}
|
|
23
|
+
// Providers with provider requirements just need to use providers.create() and providers.inject()
|
|
24
|
+
const instance = constructMethod.constructor ? new constructMethod() : constructMethod();
|
|
25
|
+
config.providers.push({
|
|
26
|
+
constructMethod,
|
|
27
|
+
instance,
|
|
28
|
+
clone: deepClone(instance)
|
|
29
|
+
});
|
|
30
|
+
return instance;
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* @template T
|
|
34
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
35
|
+
* @returns {T}
|
|
36
|
+
*/
|
|
37
|
+
inject: (constructor) => {
|
|
38
|
+
const oldValue = get(constructor);
|
|
39
|
+
if (oldValue) {
|
|
40
|
+
return oldValue.instance;
|
|
41
|
+
}
|
|
42
|
+
let owner = {
|
|
43
|
+
ownerTag: config.ownerTag
|
|
44
|
+
};
|
|
45
|
+
while (owner.ownerTag) {
|
|
46
|
+
const ownerProviders = owner.ownerTag.providers;
|
|
47
|
+
const provider = ownerProviders.find(provider => {
|
|
48
|
+
if (provider.constructMethod === constructor) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (provider) {
|
|
53
|
+
provider.clone = deepClone(provider.instance); // keep a copy of the latest before any change occur
|
|
54
|
+
config.providers.push(provider);
|
|
55
|
+
return provider.instance;
|
|
56
|
+
}
|
|
57
|
+
owner = owner.ownerTag; // cause reloop
|
|
58
|
+
}
|
|
59
|
+
const msg = `Could not inject provider: ${constructor}`;
|
|
60
|
+
console.warn(`${msg}. Available providers`, config.providers);
|
|
61
|
+
throw new Error(msg);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
setUse({
|
|
65
|
+
beforeRedraw: (_tagSupport, tag) => {
|
|
66
|
+
config.currentTag = tag;
|
|
67
|
+
config.ownerTag = tag.ownerTag;
|
|
68
|
+
if (tag.providers.length) {
|
|
69
|
+
config.providers.length = 0;
|
|
70
|
+
config.providers.push(...tag.providers);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
afterRender: (_tagSupport, tag) => {
|
|
74
|
+
tag.providers = [...config.providers];
|
|
75
|
+
config.providers.length = 0;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../ts/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAQvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,EAAgB;IAE3B,UAAU,EAAE,SAA4B;IACxC,QAAQ,EAAE,SAA4B;CACvC,CAAA;AAED,SAAS,GAAG,CAAC,eAAyB;IACpC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC,CAAA;AACxF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;;;;OAIG;IACH,MAAM,EAAE,CAAC,eAAoB,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,CAAA;QACrC,IAAG,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7C,OAAO,QAAQ,CAAC,QAAQ,CAAA;QAC1B,CAAC;QAED,kGAAkG;QAClG,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAA;QACxF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACpB,eAAe;YACf,QAAQ;YACR,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;SAC3B,CAAC,CAAA;QACF,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,MAAM,EAAE,CAAC,WAAgB,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;QACjC,IAAG,QAAQ,EAAE,CAAC;YACZ,OAAO,QAAQ,CAAC,QAAQ,CAAA;QAC1B,CAAC;QAED,IAAI,KAAK,GAAG;YACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;SACnB,CAAA;QACR,OAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAA;YAE/C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC9C,IAAG,QAAQ,CAAC,eAAe,KAAK,WAAW,EAAE,CAAC;oBAC5C,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAG,QAAQ,EAAE,CAAC;gBACZ,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,CAAC,oDAAoD;gBAClG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC/B,OAAO,QAAQ,CAAC,QAAQ,CAAA;YAC1B,CAAC;YAED,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA,CAAC,eAAe;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,8BAA8B,WAAW,EAAE,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,uBAAuB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAC7D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;CACF,CAAA;AAED,MAAM,CAAC;IACL,YAAY,EAAE,CAAC,WAAW,EAAE,GAAQ,EAAE,EAAE;QACtC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAA;QACvB,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC9B,IAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;YAC3B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IACD,WAAW,EAAE,CAAC,WAAW,EAAE,GAAQ,EAAE,EAAE;QACrC,GAAG,CAAC,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7B,CAAC;CACF,CAAC,CAAA"}
|
package/js/js/render.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { interpolateElement } from "./interpolateElement.js";
|
|
2
|
+
export function buildItemTagMap(tag, template, // {string, context}
|
|
3
|
+
insertBefore) {
|
|
4
|
+
const temporary = document.createElement('div');
|
|
5
|
+
temporary.id = 'tag-temp-holder';
|
|
6
|
+
// render content with a first child that we can know is our first element
|
|
7
|
+
temporary.innerHTML = '<div></div>' + template.string;
|
|
8
|
+
const context = tag.update();
|
|
9
|
+
interpolateElement(temporary, context, tag);
|
|
10
|
+
const clones = buildClones(temporary, insertBefore);
|
|
11
|
+
tag.clones.push(...clones);
|
|
12
|
+
return clones;
|
|
13
|
+
}
|
|
14
|
+
function buildClones(temporary, insertBefore) {
|
|
15
|
+
const clones = [];
|
|
16
|
+
const templateClone = temporary.children[0];
|
|
17
|
+
const sibling = templateClone; // a div we added
|
|
18
|
+
let nextSibling = sibling.nextSibling;
|
|
19
|
+
temporary.removeChild(templateClone); // remove the div
|
|
20
|
+
while (nextSibling) {
|
|
21
|
+
const nextNextSibling = nextSibling.nextSibling;
|
|
22
|
+
buildSibling(nextSibling, insertBefore);
|
|
23
|
+
clones.push(nextSibling);
|
|
24
|
+
nextSibling = nextNextSibling;
|
|
25
|
+
}
|
|
26
|
+
return clones;
|
|
27
|
+
}
|
|
28
|
+
function buildSibling(nextSibling, insertBefore) {
|
|
29
|
+
insertBefore.parentNode.insertBefore(nextSibling, insertBefore);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,MAAM,UAAU,eAAe,CAC7B,GAAQ,EACR,QAA4C,EAAE,oBAAoB;AAClE,YAAqB;IAErB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAA;IAEhC,0EAA0E;IAC1E,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;IAErD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;IAC5B,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACnD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,MAAM,CAAE,CAAA;IAE5B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,WAAW,CAClB,SAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAA,CAAC,iBAAiB;IAC/C,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;IACrC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA,CAAC,iBAAiB;IAEtD,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAAqB;IAEpB,YAAY,CAAC,UAAyB,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AACjF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { Tag } from "./Tag.class.js";
|
|
3
|
+
import { TemplaterResult } from "./tag.js";
|
|
4
|
+
export declare function renderAppToElement(app: (...args: unknown[]) => TemplaterResult, element: Element, props: unknown): void;
|
|
5
|
+
export declare function applyTagUpdater(wrapper: TemplaterResult): {
|
|
6
|
+
tag: Tag;
|
|
7
|
+
tagSupport: TagSupport;
|
|
8
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { interpolateElement } from "./interpolateElement.js";
|
|
2
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
3
|
+
import { runBeforeRender } from "./tagRunner.js";
|
|
4
|
+
export function renderAppToElement(app, element, props) {
|
|
5
|
+
// Create the app which returns [props, runOneTimeFunction]
|
|
6
|
+
const wrapper = app(props);
|
|
7
|
+
// have a function setup and call the tagWrapper with (props, {update, async, on})
|
|
8
|
+
const result = applyTagUpdater(wrapper);
|
|
9
|
+
const { tag, tagSupport } = result;
|
|
10
|
+
let lastTag;
|
|
11
|
+
tagSupport.mutatingRender = () => {
|
|
12
|
+
runBeforeRender(tagSupport, tag);
|
|
13
|
+
tag.beforeRedraw();
|
|
14
|
+
const fromTag = lastTag = wrapper.wrapper();
|
|
15
|
+
fromTag.setSupport(tag.tagSupport);
|
|
16
|
+
tag.afterRender();
|
|
17
|
+
tag.updateByTag(fromTag);
|
|
18
|
+
if (lastTag) {
|
|
19
|
+
lastTag.destroy(0);
|
|
20
|
+
}
|
|
21
|
+
return lastTag;
|
|
22
|
+
};
|
|
23
|
+
const context = tag.updateValues(tag.values);
|
|
24
|
+
const template = tag.getTemplate();
|
|
25
|
+
element.innerHTML = template.string;
|
|
26
|
+
interpolateElement(element, context, tag);
|
|
27
|
+
}
|
|
28
|
+
export function applyTagUpdater(wrapper) {
|
|
29
|
+
const tagSupport = getTagSupport(wrapper);
|
|
30
|
+
runBeforeRender(tagSupport);
|
|
31
|
+
// Call the apps function for our tag templater
|
|
32
|
+
const templater = tagSupport.templater;
|
|
33
|
+
const tag = templater.wrapper();
|
|
34
|
+
tag.tagSupport = tagSupport;
|
|
35
|
+
tag.afterRender();
|
|
36
|
+
return { tag, tagSupport };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=renderAppToElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderAppToElement.js","sourceRoot":"","sources":["../ts/renderAppToElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,MAAM,UAAU,kBAAkB,CAChC,GAA4C,EAC5C,OAAgB,EAChB,KAAc;IAEd,2DAA2D;IAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;IAE1B,kFAAkF;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,EAAC,GAAG,EAAE,UAAU,EAAC,GAAG,MAAM,CAAA;IAEhC,IAAI,OAAO,CAAA;IACX,UAAU,CAAC,cAAc,GAAG,GAAG,EAAE;QAC/B,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAChC,GAAG,CAAC,YAAY,EAAE,CAAA;QAElB,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE3C,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,GAAG,CAAC,WAAW,EAAE,CAAA;QACjB,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAExB,IAAG,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAElC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;IACnC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAwB;IAExB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACzC,eAAe,CAAC,UAAU,CAAC,CAAA;IAE3B,+CAA+C;IAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,SAA4B,CAAA;IACzD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAA;IAE/B,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;IAC3B,GAAG,CAAC,WAAW,EAAE,CAAA;IAEjB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAA;AAC5B,CAAC"}
|
package/js/js/state.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
2
|
+
export type StateConfig = ((x?: any) => [any, any]);
|
|
3
|
+
export type StateConfigArray = StateConfig[];
|
|
4
|
+
export type State = {
|
|
5
|
+
newest: StateConfigArray;
|
|
6
|
+
oldest?: StateConfigArray;
|
|
7
|
+
};
|
|
8
|
+
export type StateTagSupport = TagSupport & {
|
|
9
|
+
state?: State;
|
|
10
|
+
};
|
|
11
|
+
export declare const config: {
|
|
12
|
+
array: StateConfigArray;
|
|
13
|
+
rearray: StateConfigArray;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @template T
|
|
17
|
+
* @param {T} defaultValue
|
|
18
|
+
* @returns {T}
|
|
19
|
+
*/
|
|
20
|
+
export declare function state<T>(defaultValue: T, getSetMethod?: (x: T) => [T, T]): T;
|
|
21
|
+
export declare function getStateValue(state: StateConfig): any;
|