taggedjs 2.1.2 → 2.3.25
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/Clones.type.d.ts +1 -0
- package/js/Clones.type.js +2 -0
- package/js/Clones.type.js.map +1 -0
- package/js/Props.d.ts +1 -0
- package/js/Props.js +2 -0
- package/js/Props.js.map +1 -0
- package/js/Subject.d.ts +7 -2
- package/js/Subject.js +15 -10
- package/js/Subject.js.map +1 -1
- package/js/Tag.class.d.ts +37 -13
- package/js/Tag.class.js +133 -99
- package/js/Tag.class.js.map +1 -1
- package/js/Tag.utils.d.ts +8 -20
- package/js/Tag.utils.js +17 -88
- package/js/Tag.utils.js.map +1 -1
- package/js/ValueSubject.d.ts +1 -1
- package/js/ValueSubject.js.map +1 -1
- package/js/bindSubjectCallback.function.d.ts +5 -0
- package/js/bindSubjectCallback.function.js +19 -0
- package/js/bindSubjectCallback.function.js.map +1 -0
- package/js/elementDestroyCheck.function.d.ts +3 -0
- package/js/elementDestroyCheck.function.js +17 -0
- package/js/elementDestroyCheck.function.js.map +1 -0
- package/js/elementInitCheck.js.map +1 -1
- package/js/gateway/gateway.web.component.d.ts +11 -0
- package/js/gateway/gateway.web.component.js +20 -0
- package/js/gateway/gateway.web.component.js.map +1 -0
- package/js/gateway/index.d.ts +3 -0
- package/js/gateway/index.js +3 -0
- package/js/gateway/index.js.map +1 -0
- package/js/gateway/loadTagGateway.function.d.ts +2 -0
- package/js/gateway/loadTagGateway.function.js +18 -0
- package/js/gateway/loadTagGateway.function.js.map +1 -0
- package/js/gateway/tagGateway.function.d.ts +31 -0
- package/js/gateway/tagGateway.function.js +187 -0
- package/js/gateway/tagGateway.function.js.map +1 -0
- package/js/getCallback.js +39 -42
- package/js/getCallback.js.map +1 -1
- package/js/getTagSupport.d.ts +18 -17
- package/js/getTagSupport.js +104 -15
- package/js/getTagSupport.js.map +1 -1
- package/js/html.d.ts +1 -1
- package/js/html.js.map +1 -1
- package/js/index.d.ts +16 -7
- package/js/index.js +20 -8
- package/js/index.js.map +1 -1
- package/js/inputAttribute.js +3 -3
- package/js/inputAttribute.js.map +1 -1
- package/js/interpolateAttributes.d.ts +2 -1
- package/js/interpolateAttributes.js +126 -60
- package/js/interpolateAttributes.js.map +1 -1
- package/js/interpolateContentTemplates.d.ts +4 -1
- package/js/interpolateContentTemplates.js +32 -25
- package/js/interpolateContentTemplates.js.map +1 -1
- package/js/interpolateElement.d.ts +8 -13
- package/js/interpolateElement.js +26 -22
- package/js/interpolateElement.js.map +1 -1
- package/js/interpolateTemplate.d.ts +15 -19
- package/js/interpolateTemplate.js +33 -231
- package/js/interpolateTemplate.js.map +1 -1
- package/js/interpolations.d.ts +3 -2
- package/js/interpolations.js +2 -1
- package/js/interpolations.js.map +1 -1
- package/js/isInstance.d.ts +6 -0
- package/js/isInstance.js +10 -0
- package/js/isInstance.js.map +1 -0
- package/js/js/Clones.type.d.ts +1 -0
- package/js/js/Clones.type.js +2 -0
- package/js/js/Clones.type.js.map +1 -0
- package/js/js/Props.d.ts +1 -0
- package/js/js/Props.js +2 -0
- package/js/js/Props.js.map +1 -0
- package/js/js/Subject.d.ts +7 -2
- package/js/js/Subject.js +15 -10
- package/js/js/Subject.js.map +1 -1
- package/js/js/Tag.class.d.ts +27 -5
- package/js/js/Tag.class.js +109 -81
- package/js/js/Tag.class.js.map +1 -1
- package/js/js/Tag.utils.d.ts +8 -20
- package/js/js/Tag.utils.js +17 -88
- package/js/js/Tag.utils.js.map +1 -1
- package/js/js/ValueSubject.d.ts +1 -1
- package/js/js/ValueSubject.js.map +1 -1
- package/js/js/bindSubjectCallback.function.d.ts +5 -0
- package/js/js/bindSubjectCallback.function.js +19 -0
- package/js/js/bindSubjectCallback.function.js.map +1 -0
- package/js/js/elementDestroyCheck.function.d.ts +3 -0
- package/js/js/elementDestroyCheck.function.js +17 -0
- package/js/js/elementDestroyCheck.function.js.map +1 -0
- package/js/js/elementInitCheck.js.map +1 -1
- package/js/js/getCallback.js +39 -42
- package/js/js/getCallback.js.map +1 -1
- package/js/js/getTagSupport.d.ts +19 -17
- package/js/js/getTagSupport.js +111 -15
- package/js/js/getTagSupport.js.map +1 -1
- package/js/js/html.d.ts +1 -1
- package/js/js/html.js.map +1 -1
- package/js/js/index.d.ts +16 -7
- package/js/js/index.js +20 -8
- package/js/js/index.js.map +1 -1
- package/js/js/interpolateAttributes.d.ts +2 -1
- package/js/js/interpolateAttributes.js +118 -60
- package/js/js/interpolateAttributes.js.map +1 -1
- package/js/js/interpolateContentTemplates.d.ts +3 -1
- package/js/js/interpolateContentTemplates.js +32 -22
- package/js/js/interpolateContentTemplates.js.map +1 -1
- package/js/js/interpolateElement.d.ts +7 -12
- package/js/js/interpolateElement.js +18 -21
- package/js/js/interpolateElement.js.map +1 -1
- package/js/js/interpolateTemplate.d.ts +15 -19
- package/js/js/interpolateTemplate.js +33 -231
- package/js/js/interpolateTemplate.js.map +1 -1
- package/js/js/interpolations.d.ts +3 -1
- package/js/js/interpolations.js +3 -3
- package/js/js/interpolations.js.map +1 -1
- package/js/js/isInstance.d.ts +6 -0
- package/js/js/isInstance.js +10 -0
- package/js/js/isInstance.js.map +1 -0
- package/js/js/onDestroy.d.ts +2 -0
- package/js/js/onDestroy.js +20 -0
- package/js/js/onDestroy.js.map +1 -0
- package/js/js/onInit.d.ts +0 -4
- package/js/js/onInit.js +12 -10
- package/js/js/onInit.js.map +1 -1
- package/js/js/processSubjectComponent.function.d.ts +8 -0
- package/js/js/processSubjectComponent.function.js +53 -0
- package/js/js/processSubjectComponent.function.js.map +1 -0
- package/js/js/processSubjectValue.function.d.ts +16 -0
- package/js/js/processSubjectValue.function.js +122 -0
- package/js/js/processSubjectValue.function.js.map +1 -0
- package/js/js/processTagArray.d.ts +5 -1
- package/js/js/processTagArray.js +21 -10
- package/js/js/processTagArray.js.map +1 -1
- package/js/js/processTagResult.function.d.ts +10 -0
- package/js/js/processTagResult.function.js +42 -0
- package/js/js/processTagResult.function.js.map +1 -0
- package/js/js/providers.d.ts +4 -12
- package/js/js/providers.js +28 -20
- package/js/js/providers.js.map +1 -1
- package/js/js/redrawTag.function.d.ts +7 -0
- package/js/js/redrawTag.function.js +9 -0
- package/js/js/redrawTag.function.js.map +1 -0
- package/js/js/render.d.ts +1 -6
- package/js/js/render.js +8 -15
- package/js/js/render.js.map +1 -1
- package/js/js/renderAppToElement.d.ts +8 -2
- package/js/js/renderAppToElement.js +40 -21
- package/js/js/renderAppToElement.js.map +1 -1
- package/js/js/setUse.function.d.ts +23 -0
- package/js/js/setUse.function.js +14 -0
- package/js/js/setUse.function.js.map +1 -0
- package/js/js/state.d.ts +14 -11
- package/js/js/state.js +68 -33
- package/js/js/state.js.map +1 -1
- package/js/js/tag.d.ts +7 -16
- package/js/js/tag.js +33 -44
- package/js/js/tag.js.map +1 -1
- package/js/js/tagElement.d.ts +14 -0
- package/js/js/tagElement.js +57 -0
- package/js/js/tagElement.js.map +1 -0
- package/js/js/tagGateway.function.d.ts +5 -0
- package/js/js/tagGateway.function.js +119 -0
- package/js/js/tagGateway.function.js.map +1 -0
- package/js/js/tagRunner.d.ts +2 -13
- package/js/js/tagRunner.js +12 -12
- package/js/js/tagRunner.js.map +1 -1
- package/js/js/templater.utils.d.ts +28 -0
- package/js/js/templater.utils.js +99 -0
- package/js/js/templater.utils.js.map +1 -0
- package/js/js/updateTag.utils.d.ts +6 -0
- package/js/js/updateTag.utils.js +84 -0
- package/js/js/updateTag.utils.js.map +1 -0
- package/js/onDestroy.d.ts +2 -0
- package/js/onDestroy.js +20 -0
- package/js/onDestroy.js.map +1 -0
- package/js/onInit.d.ts +0 -4
- package/js/onInit.js +12 -10
- package/js/onInit.js.map +1 -1
- package/js/processSubjectComponent.function.d.ts +8 -0
- package/js/processSubjectComponent.function.js +53 -0
- package/js/processSubjectComponent.function.js.map +1 -0
- package/js/processSubjectValue.function.d.ts +16 -0
- package/js/processSubjectValue.function.js +122 -0
- package/js/processSubjectValue.function.js.map +1 -0
- package/js/processTagArray.d.ts +5 -1
- package/js/processTagArray.js +21 -10
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +10 -0
- package/js/processTagResult.function.js +39 -0
- package/js/processTagResult.function.js.map +1 -0
- package/js/providers.d.ts +4 -12
- package/js/providers.js +28 -20
- package/js/providers.js.map +1 -1
- package/js/redrawTag.function.d.ts +7 -0
- package/js/redrawTag.function.js +8 -0
- package/js/redrawTag.function.js.map +1 -0
- package/js/render.d.ts +1 -6
- package/js/render.js +5 -19
- package/js/render.js.map +1 -1
- package/js/renderAppToElement.d.ts +8 -2
- package/js/renderAppToElement.js +40 -21
- package/js/renderAppToElement.js.map +1 -1
- package/js/setUse.function.d.ts +23 -0
- package/js/setUse.function.js +14 -0
- package/js/setUse.function.js.map +1 -0
- package/js/state.d.ts +14 -11
- package/js/state.js +68 -33
- package/js/state.js.map +1 -1
- package/js/tag.d.ts +6 -16
- package/js/tag.js +32 -43
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +14 -0
- package/js/tagElement.js +57 -0
- package/js/tagElement.js.map +1 -0
- package/js/tagGateway.function.d.ts +14 -0
- package/js/tagGateway.function.js +138 -0
- package/js/tagGateway.function.js.map +1 -0
- package/js/tagRunner.d.ts +2 -13
- package/js/tagRunner.js +12 -12
- package/js/tagRunner.js.map +1 -1
- package/js/templater.utils.d.ts +27 -0
- package/js/templater.utils.js +98 -0
- package/js/templater.utils.js.map +1 -0
- package/js/updateTag.utils.d.ts +6 -0
- package/js/updateTag.utils.js +102 -0
- package/js/updateTag.utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { isTagInstance } from "./isInstance.js";
|
|
3
|
+
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
4
|
+
import { setUse } from "./setUse.function.js";
|
|
5
|
+
export class TemplaterResult {
|
|
6
|
+
tagged;
|
|
7
|
+
wrapper;
|
|
8
|
+
newest;
|
|
9
|
+
oldest;
|
|
10
|
+
tagSupport;
|
|
11
|
+
constructor(props) {
|
|
12
|
+
this.tagSupport = getTagSupport(0, this, props);
|
|
13
|
+
}
|
|
14
|
+
redraw;
|
|
15
|
+
isTemplater = true;
|
|
16
|
+
forceRenderTemplate(tagSupport, ownerTag) {
|
|
17
|
+
const tag = this.wrapper();
|
|
18
|
+
tag.setSupport(tagSupport);
|
|
19
|
+
tag.afterRender();
|
|
20
|
+
this.oldest = tag;
|
|
21
|
+
tagSupport.oldest = tag;
|
|
22
|
+
this.oldest = tag;
|
|
23
|
+
this.newest = tag;
|
|
24
|
+
tag.ownerTag = ownerTag;
|
|
25
|
+
return tag;
|
|
26
|
+
}
|
|
27
|
+
renderWithSupport(tagSupport, existingTag, ownerTag) {
|
|
28
|
+
/* BEFORE RENDER */
|
|
29
|
+
// signify to other operations that a rendering has occurred so they do not need to render again
|
|
30
|
+
++tagSupport.memory.renderCount;
|
|
31
|
+
const runtimeOwnerTag = existingTag?.ownerTag || ownerTag;
|
|
32
|
+
if (tagSupport.oldest) {
|
|
33
|
+
// ensure props are the last ones used
|
|
34
|
+
tagSupport.props = tagSupport.latestProps;
|
|
35
|
+
tagSupport.clonedProps = tagSupport.latestClonedProps;
|
|
36
|
+
// tagSupport.oldest.beforeRedraw()
|
|
37
|
+
runBeforeRedraw(tagSupport, tagSupport.oldest);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// first time render
|
|
41
|
+
runBeforeRender(tagSupport, runtimeOwnerTag);
|
|
42
|
+
// TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
|
|
43
|
+
const providers = setUse.memory.providerConfig;
|
|
44
|
+
providers.ownerTag = runtimeOwnerTag;
|
|
45
|
+
}
|
|
46
|
+
/* END: BEFORE RENDER */
|
|
47
|
+
const templater = this;
|
|
48
|
+
const retag = templater.wrapper();
|
|
49
|
+
/* AFTER */
|
|
50
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
51
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
52
|
+
retag.setSupport(tagSupport);
|
|
53
|
+
runAfterRender(tagSupport, retag);
|
|
54
|
+
templater.newest = retag;
|
|
55
|
+
retag.ownerTag = runtimeOwnerTag;
|
|
56
|
+
const oldest = tagSupport.oldest = tagSupport.oldest || retag;
|
|
57
|
+
tagSupport.newest = retag;
|
|
58
|
+
const oldestTagSupport = oldest.tagSupport;
|
|
59
|
+
oldest.tagSupport = oldestTagSupport || tagSupport;
|
|
60
|
+
oldest.tagSupport.templater = templater;
|
|
61
|
+
// retag.setSupport(tagSupport)
|
|
62
|
+
const isSameTag = existingTag && existingTag.isLikeTag(retag);
|
|
63
|
+
// If previously was a tag and seems to be same tag, then just update current tag with new values
|
|
64
|
+
if (isSameTag) {
|
|
65
|
+
oldest.updateByTag(retag);
|
|
66
|
+
return { remit: false, retag };
|
|
67
|
+
}
|
|
68
|
+
return { remit: true, retag };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/* rewriter */
|
|
72
|
+
export function getNewProps(props, templater) {
|
|
73
|
+
function callback(toCall, callWith) {
|
|
74
|
+
const callbackResult = toCall(...callWith);
|
|
75
|
+
templater.newest?.ownerTag?.tagSupport.render();
|
|
76
|
+
return callbackResult;
|
|
77
|
+
}
|
|
78
|
+
const isPropTag = isTagInstance(props);
|
|
79
|
+
const watchProps = isPropTag ? 0 : props;
|
|
80
|
+
const newProps = resetFunctionProps(watchProps, callback);
|
|
81
|
+
return newProps;
|
|
82
|
+
}
|
|
83
|
+
function resetFunctionProps(props, callback) {
|
|
84
|
+
if (typeof (props) !== 'object') {
|
|
85
|
+
return props;
|
|
86
|
+
}
|
|
87
|
+
const newProps = { ...props };
|
|
88
|
+
Object.entries(newProps).forEach(([name, value]) => {
|
|
89
|
+
if (value instanceof Function) {
|
|
90
|
+
newProps[name] = (...args) => {
|
|
91
|
+
return callback(value, args);
|
|
92
|
+
};
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
newProps[name] = value;
|
|
96
|
+
});
|
|
97
|
+
return newProps;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=templater.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templater.utils.js","sourceRoot":"","sources":["../ts/templater.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TagSubject } from "./Tag.utils.js";
|
|
2
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
3
|
+
import { Subject } from "./Subject.js";
|
|
4
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
5
|
+
import { Tag } from "./Tag.class.js";
|
|
6
|
+
export declare function updateExistingValue(existing: Subject<Tag> | TemplaterResult | TagSubject, value: TemplaterResult | TagSupport | Function | Subject<any>, tag: Tag): void;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { setValueRedraw } from "./Tag.utils.js";
|
|
2
|
+
import { deepClone } from "./deepFunctions.js";
|
|
3
|
+
import { isSubjectInstance, isTagComponent } from "./isInstance.js";
|
|
4
|
+
import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
|
|
5
|
+
function updateExistingTagComponent(tag, tempResult, existingSubject, subjectValue) {
|
|
6
|
+
const latestProps = tempResult.tagSupport.props;
|
|
7
|
+
const existingTag = existingSubject.tag;
|
|
8
|
+
// previously was something else, now a tag component
|
|
9
|
+
if (!existingSubject.tag) {
|
|
10
|
+
setValueRedraw(tempResult, existingSubject, tag);
|
|
11
|
+
tempResult.redraw();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// tag existingTag
|
|
15
|
+
const oldFunction = existingTag.tagSupport.templater.wrapper.original;
|
|
16
|
+
const newFunction = tempResult.wrapper.original;
|
|
17
|
+
const isSameTag = oldFunction === newFunction;
|
|
18
|
+
if (!isSameTag) {
|
|
19
|
+
existingTag.destroy();
|
|
20
|
+
}
|
|
21
|
+
const oldTagSetup = existingTag.tagSupport;
|
|
22
|
+
oldTagSetup.latestProps = latestProps;
|
|
23
|
+
oldTagSetup.latestClonedProps = tempResult.tagSupport.clonedProps;
|
|
24
|
+
const subjectTagSupport = subjectValue?.tagSupport;
|
|
25
|
+
// old props may have changed, reclone first
|
|
26
|
+
const oldCloneProps = deepClone(subjectTagSupport.props); // tagSupport.clonedProps
|
|
27
|
+
const oldProps = subjectTagSupport?.props; // tagSupport.props
|
|
28
|
+
if (existingTag) {
|
|
29
|
+
const equal = oldTagSetup.hasPropChanges(oldProps, oldCloneProps, latestProps);
|
|
30
|
+
if (equal) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
setValueRedraw(tempResult, existingSubject, tag);
|
|
35
|
+
oldTagSetup.templater = tempResult;
|
|
36
|
+
existingSubject.value.tag = oldTagSetup.newest = tempResult.redraw();
|
|
37
|
+
if (!isSameTag) {
|
|
38
|
+
existingSubject.tag = existingSubject.value.tag;
|
|
39
|
+
}
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
function updateExistingTag(templater, ogTag, existingSubject) {
|
|
43
|
+
const tagSupport = ogTag.tagSupport;
|
|
44
|
+
const oldest = tagSupport.oldest;
|
|
45
|
+
oldest.beforeRedraw();
|
|
46
|
+
const retag = templater.wrapper();
|
|
47
|
+
// move my props onto tagSupport
|
|
48
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
49
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
50
|
+
tagSupport.memory = retag.tagSupport.memory;
|
|
51
|
+
retag.setSupport(tagSupport);
|
|
52
|
+
templater.newest = retag;
|
|
53
|
+
tagSupport.newest = retag;
|
|
54
|
+
oldest.afterRender();
|
|
55
|
+
ogTag.updateByTag(retag);
|
|
56
|
+
existingSubject.set(templater);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
export function updateExistingValue(existing, value, tag) {
|
|
60
|
+
const subjectValue = existing.value;
|
|
61
|
+
const ogTag = subjectValue?.tag;
|
|
62
|
+
const tempResult = value;
|
|
63
|
+
const existingSubject = existing;
|
|
64
|
+
// handle already seen tag components
|
|
65
|
+
if (isTagComponent(tempResult)) {
|
|
66
|
+
return updateExistingTagComponent(tag, tempResult, existingSubject, subjectValue);
|
|
67
|
+
}
|
|
68
|
+
// handle already seen tags
|
|
69
|
+
if (ogTag) {
|
|
70
|
+
return updateExistingTag(value, ogTag, existingSubject);
|
|
71
|
+
}
|
|
72
|
+
// now its a function
|
|
73
|
+
if (value instanceof Function) {
|
|
74
|
+
existingSubject.set(bindSubjectCallback(value, tag));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (isSubjectInstance(value)) {
|
|
78
|
+
existingSubject.set(value.value); // let ValueSubject now of newest value
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
existingSubject.set(value); // let ValueSubject now of newest value
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=updateTag.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateTag.utils.js","sourceRoot":"","sources":["../ts/updateTag.utils.ts"],"names":[],"mappings":"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"}
|
package/js/onDestroy.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { setUse } from "./setUse.function.js";
|
|
2
|
+
/** When undefined, it means a tag is being built for the first time so do run destroy(s) */
|
|
3
|
+
let destroyCurrentTagSupport;
|
|
4
|
+
export function onDestroy(callback) {
|
|
5
|
+
if (!destroyCurrentTagSupport.memory) {
|
|
6
|
+
console.error('xxx', destroyCurrentTagSupport);
|
|
7
|
+
}
|
|
8
|
+
destroyCurrentTagSupport.memory.destroyCallback = callback;
|
|
9
|
+
}
|
|
10
|
+
setUse({
|
|
11
|
+
beforeRender: tagSupport => destroyCurrentTagSupport = tagSupport,
|
|
12
|
+
beforeRedraw: tagSupport => destroyCurrentTagSupport = tagSupport,
|
|
13
|
+
beforeDestroy: (tagSupport, tag) => {
|
|
14
|
+
const callback = tagSupport.memory.destroyCallback;
|
|
15
|
+
if (callback) {
|
|
16
|
+
callback();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=onDestroy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onDestroy.js","sourceRoot":"","sources":["../ts/onDestroy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C,4FAA4F;AAC5F,IAAI,wBAAoC,CAAA;AAExC,MAAM,UAAU,SAAS,CACvB,QAA2B;IAE3B,IAAG,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAC,wBAAwB,CAAC,CAAA;IAC/C,CAAC;IAED,wBAAwB,CAAC,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAA;AAC5D,CAAC;AAED,MAAM,CAAC;IACL,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,wBAAwB,GAAG,UAAU;IACjE,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,wBAAwB,GAAG,UAAU;IACjE,aAAa,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAA;QAElD,IAAG,QAAQ,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC;CACF,CAAC,CAAA"}
|
package/js/onInit.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
import { Tag } from "./Tag.class.js";
|
|
2
1
|
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
2
|
export declare function onInit(callback: OnInitCallback): void;
|
package/js/onInit.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { setUse } from "./
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export function setCurrentInitTag(tag) {
|
|
5
|
-
initCurrentTag = tag;
|
|
1
|
+
import { setUse } from "./setUse.function.js";
|
|
2
|
+
function setCurrentTagSupport(support) {
|
|
3
|
+
setUse.memory.initCurrentSupport = support;
|
|
6
4
|
}
|
|
7
5
|
export function onInit(callback) {
|
|
8
|
-
if (!
|
|
9
|
-
|
|
6
|
+
if (!setUse.memory.initCurrentSupport) {
|
|
7
|
+
console.warn('possible init issue?');
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (!setUse.memory.initCurrentSupport.memory.init) {
|
|
11
|
+
setUse.memory.initCurrentSupport.memory.init = callback;
|
|
12
|
+
callback(); // fire init
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
15
|
setUse({
|
|
13
|
-
beforeRender:
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
+
beforeRender: tagSupport => setCurrentTagSupport(tagSupport),
|
|
17
|
+
beforeRedraw: tagSupport => setCurrentTagSupport(tagSupport),
|
|
16
18
|
});
|
|
17
19
|
//# sourceMappingURL=onInit.js.map
|
package/js/onInit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onInit.js","sourceRoot":"","sources":["../ts/onInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"onInit.js","sourceRoot":"","sources":["../ts/onInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C,SAAS,oBAAoB,CAAC,OAAmB;IAC/C,MAAM,CAAC,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,MAAM,CACpB,QAAwB;IAExB,IAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACpC,OAAM;IACR,CAAC;IAED,IAAG,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;QACvD,QAAQ,EAAE,CAAA,CAAC,YAAY;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC;IACL,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC;IAC5D,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC;CAC7D,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
2
|
+
import { Counts } from "./interpolateTemplate.js";
|
|
3
|
+
import { Tag } from "./Tag.class.js";
|
|
4
|
+
import { TagSubject } from "./Tag.utils.js";
|
|
5
|
+
export declare function processSubjectComponent(value: TemplaterResult, result: TagSubject, template: Element, ownerTag: Tag, options: {
|
|
6
|
+
counts: Counts;
|
|
7
|
+
forceElement?: boolean;
|
|
8
|
+
}): import("./Clones.type.js").Clones;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
2
|
+
import { setUse } from "./setUse.function.js";
|
|
3
|
+
import { processTagResult } from "./processTagResult.function.js";
|
|
4
|
+
export function processSubjectComponent(value, result, template, ownerTag, options) {
|
|
5
|
+
// TODO: This below check not needed in production mode
|
|
6
|
+
if (value.tagged !== true) {
|
|
7
|
+
let name = value.wrapper.original.name || value.wrapper.original.constructor?.name;
|
|
8
|
+
if (name === 'Function') {
|
|
9
|
+
name = undefined;
|
|
10
|
+
}
|
|
11
|
+
const label = name || value.wrapper.original.toString().substring(0, 120);
|
|
12
|
+
const error = new Error(`Not a tag component. Wrap your function with tag(). Example tag(props => html\`\`) on component:\n\n${label}\n\n`);
|
|
13
|
+
throw error;
|
|
14
|
+
}
|
|
15
|
+
const templater = value;
|
|
16
|
+
const tagSupport = value.tagSupport;
|
|
17
|
+
tagSupport.mutatingRender = () => {
|
|
18
|
+
// Is this NOT my first render
|
|
19
|
+
if (result.tag) {
|
|
20
|
+
const exit = tagSupport.renderExistingTag(result.tag, templater);
|
|
21
|
+
if (exit) {
|
|
22
|
+
return result.tag;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// draw to my parent
|
|
26
|
+
const newest = tagSupport.newest = ownerTag.tagSupport.render();
|
|
27
|
+
return newest;
|
|
28
|
+
};
|
|
29
|
+
let retag = templater.newest;
|
|
30
|
+
const providers = setUse.memory.providerConfig;
|
|
31
|
+
providers.ownerTag = ownerTag;
|
|
32
|
+
const isFirstTime = !retag || options.forceElement;
|
|
33
|
+
if (isFirstTime) {
|
|
34
|
+
if (!retag) {
|
|
35
|
+
runBeforeRender(tagSupport, ownerTag);
|
|
36
|
+
}
|
|
37
|
+
// only true when options.forceElement
|
|
38
|
+
if (retag) {
|
|
39
|
+
runBeforeRedraw(tagSupport, retag);
|
|
40
|
+
}
|
|
41
|
+
retag = templater.forceRenderTemplate(tagSupport, ownerTag);
|
|
42
|
+
}
|
|
43
|
+
ownerTag.children.push(retag);
|
|
44
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
45
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
46
|
+
tagSupport.memory = retag.tagSupport.memory;
|
|
47
|
+
retag.setSupport(tagSupport);
|
|
48
|
+
const clones = processTagResult(retag, result, // The element set here will be removed from document. Also result.tag will be added in here
|
|
49
|
+
template, // <template end interpolate /> (will be removed)
|
|
50
|
+
options);
|
|
51
|
+
return clones;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=processSubjectComponent.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processSubjectComponent.function.js","sourceRoot":"","sources":["../ts/processSubjectComponent.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAGjE,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,MAAkB,EAClB,QAAiB,EACjB,QAAa,EACb,OAAiD;IAEjD,uDAAuD;IACvD,IAAG,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,GAAuB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;QAEtG,IAAG,IAAI,KAAK,UAAU,EAAE,CAAC;YACvB,IAAI,GAAG,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAC,GAAG,CAAC,CAAA;QACxE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,uGAAuG,KAAK,MAAM,CAAC,CAAA;QAC3I,MAAM,KAAK,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,KAAwB,CAAA;IAC1C,MAAM,UAAU,GAAe,KAAK,CAAC,UAAU,CAAA;IAE/C,UAAU,CAAC,cAAc,GAAG,GAAG,EAAE;QAC/B,8BAA8B;QAC9B,IAAG,MAAM,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YAChE,IAAG,IAAI,EAAE,CAAC;gBACR,OAAO,MAAM,CAAC,GAAG,CAAA;YACnB,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;QAC/D,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,IAAI,KAAK,GAAG,SAAS,CAAC,MAAa,CAAA;IAEnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAA;IAC9C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE7B,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,CAAA;IAElD,IAAG,WAAW,EAAE,CAAC;QACf,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACvC,CAAC;QAED,sCAAsC;QACtC,IAAG,KAAK,EAAE,CAAC;YACT,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,GAAG,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE7B,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAA;IAC/C,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAA;IAC3D,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAA;IAE3C,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAE5B,MAAM,MAAM,GAAG,gBAAgB,CAC7B,KAAK,EACL,MAAM,EAAE,4FAA4F;IACpG,QAAQ,EAAE,iDAAiD;IAC3D,OAAO,CACR,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Clones } from "./Clones.type.js";
|
|
2
|
+
import { Tag } from "./Tag.class.js";
|
|
3
|
+
import { Counts, Template } from "./interpolateTemplate.js";
|
|
4
|
+
type processOptions = {
|
|
5
|
+
forceElement?: boolean;
|
|
6
|
+
counts: Counts;
|
|
7
|
+
};
|
|
8
|
+
export type ClonesAndPromise = {
|
|
9
|
+
clones: Clones;
|
|
10
|
+
promise?: Promise<any>;
|
|
11
|
+
};
|
|
12
|
+
export declare function processSubjectValue(value: any, result: any, // could be tag via result.tag
|
|
13
|
+
template: Template, // <template end interpolate /> (will be removed)
|
|
14
|
+
tag: Tag, // owner
|
|
15
|
+
options: processOptions): ClonesAndPromise;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { processSubjectComponent } from "./processSubjectComponent.function.js";
|
|
2
|
+
import { processTagResult } from "./processTagResult.function.js";
|
|
3
|
+
import { isTagComponent, isTagInstance } from "./isInstance.js";
|
|
4
|
+
import { processTagArray } from "./processTagArray.js";
|
|
5
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
6
|
+
import { updateBetweenTemplates } from "./interpolateTemplate.js";
|
|
7
|
+
var ValueTypes;
|
|
8
|
+
(function (ValueTypes) {
|
|
9
|
+
ValueTypes["tag"] = "tag";
|
|
10
|
+
ValueTypes["tagArray"] = "tag-array";
|
|
11
|
+
ValueTypes["tagComponent"] = "tag-component";
|
|
12
|
+
ValueTypes["value"] = "value";
|
|
13
|
+
})(ValueTypes || (ValueTypes = {}));
|
|
14
|
+
function getValueType(value) {
|
|
15
|
+
if (isTagComponent(value)) {
|
|
16
|
+
return ValueTypes.tagComponent;
|
|
17
|
+
}
|
|
18
|
+
if (isTagInstance(value)) {
|
|
19
|
+
return ValueTypes.tag;
|
|
20
|
+
}
|
|
21
|
+
if (value instanceof Array && value.every(x => isTagInstance(x))) {
|
|
22
|
+
return ValueTypes.tagArray;
|
|
23
|
+
}
|
|
24
|
+
return ValueTypes.value;
|
|
25
|
+
}
|
|
26
|
+
export function processSubjectValue(value, result, // could be tag via result.tag
|
|
27
|
+
template, // <template end interpolate /> (will be removed)
|
|
28
|
+
tag, // owner
|
|
29
|
+
options) {
|
|
30
|
+
const valueType = getValueType(value);
|
|
31
|
+
// Previously was simple value, now its a tag of some sort
|
|
32
|
+
if (valueType !== ValueTypes.value && result.clone) {
|
|
33
|
+
const clone = result.clone;
|
|
34
|
+
const parent = clone.parentNode;
|
|
35
|
+
template.removeAttribute('removedAt');
|
|
36
|
+
parent.insertBefore(template, clone);
|
|
37
|
+
parent.removeChild(clone);
|
|
38
|
+
delete result.clone;
|
|
39
|
+
// result.clone = template
|
|
40
|
+
}
|
|
41
|
+
switch (valueType) {
|
|
42
|
+
case ValueTypes.tag:
|
|
43
|
+
return {
|
|
44
|
+
clones: processTag(value, result, template, tag, options)
|
|
45
|
+
};
|
|
46
|
+
case ValueTypes.tagArray:
|
|
47
|
+
return {
|
|
48
|
+
clones: processTagArray(result, value, template, tag, options)
|
|
49
|
+
};
|
|
50
|
+
case ValueTypes.tagComponent:
|
|
51
|
+
return {
|
|
52
|
+
clones: processSubjectComponent(value, result, template, tag, options)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// *if processing WAS a tag BUT NOW its some other non-tag value
|
|
56
|
+
if (result.tag) {
|
|
57
|
+
return {
|
|
58
|
+
clones: [],
|
|
59
|
+
promise: processWasTag(value, result, template, options),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
clones: processRegularValue(value, result, template, tag)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function processRegularValue(value, result, // could be tag via result.tag
|
|
67
|
+
template, // <template end interpolate /> (will be removed)
|
|
68
|
+
tag) {
|
|
69
|
+
const before = result.clone || template; // Either the template is on the doc OR its the first element we last put on doc
|
|
70
|
+
// Processing of regular values
|
|
71
|
+
const clone = updateBetweenTemplates(value, before);
|
|
72
|
+
result.clone = clone; // remember single element put down, for future updates
|
|
73
|
+
const clones = [];
|
|
74
|
+
const oldPos = tag.clones.indexOf(before); // is the insertBefore guide being considered one of the tags clones?
|
|
75
|
+
const isOnlyGuideInClones = oldPos >= 0 && !tag.clones.includes(clone);
|
|
76
|
+
const exchangeGuideForClone = isOnlyGuideInClones && !before.parentNode; // guide is in clones AND guide is not on the document
|
|
77
|
+
if (exchangeGuideForClone) {
|
|
78
|
+
tag.clones.splice(oldPos, 1); // remove insertBefore guide from tag
|
|
79
|
+
tag.clones.push(clone); // exchange guide for element actually on document
|
|
80
|
+
clones.push(clone); // record the one element that in the end is on the document
|
|
81
|
+
}
|
|
82
|
+
return clones;
|
|
83
|
+
}
|
|
84
|
+
function processTag(value, result, // could be tag via result.tag
|
|
85
|
+
template, // <template end interpolate /> (will be removed)
|
|
86
|
+
tag, // owner
|
|
87
|
+
options) {
|
|
88
|
+
// first time seeing this tag?
|
|
89
|
+
if (!value.tagSupport) {
|
|
90
|
+
value.tagSupport = getTagSupport({});
|
|
91
|
+
// asking me to render will cause my parent to render
|
|
92
|
+
value.tagSupport.mutatingRender = tag.tagSupport.mutatingRender;
|
|
93
|
+
value.tagSupport.oldest = value.tagSupport.oldest || value;
|
|
94
|
+
tag.children.push(value);
|
|
95
|
+
value.ownerTag = tag;
|
|
96
|
+
}
|
|
97
|
+
const clones = processTagResult(value, result, // Function will attach result.tag
|
|
98
|
+
template, options);
|
|
99
|
+
return clones;
|
|
100
|
+
}
|
|
101
|
+
function processWasTag(value, result, // could be tag via result.tag,
|
|
102
|
+
template, // <template end interpolate /> (will be removed)
|
|
103
|
+
options) {
|
|
104
|
+
const tag = result.tag;
|
|
105
|
+
// put the template back
|
|
106
|
+
const lastFirstChild = result.clone || template; // result.tag.clones[0] // template.lastFirstChild
|
|
107
|
+
// const parentNode = lastFirstChild.parentNode || template.parentNode
|
|
108
|
+
// put the template back down
|
|
109
|
+
lastFirstChild.parentNode.insertBefore(template, lastFirstChild);
|
|
110
|
+
// cleanup old
|
|
111
|
+
if (result.clone) {
|
|
112
|
+
result.clone.parentNode.removeChild(result.clone);
|
|
113
|
+
}
|
|
114
|
+
delete result.tag;
|
|
115
|
+
const stagger = options.counts.removed;
|
|
116
|
+
const promise = tag.destroy({ stagger }).then(animated => options.counts.removed = stagger + animated);
|
|
117
|
+
delete result.tag;
|
|
118
|
+
const clone = updateBetweenTemplates(value, template);
|
|
119
|
+
result.clone = clone;
|
|
120
|
+
return promise;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=processSubjectValue.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processSubjectValue.function.js","sourceRoot":"","sources":["../ts/processSubjectValue.function.ts"],"names":[],"mappings":"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"}
|
package/js/processTagArray.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { Clones } from "./Clones.type.js";
|
|
1
2
|
import { Tag } from "./Tag.class.js";
|
|
2
3
|
import { Counts } from "./interpolateTemplate.js";
|
|
3
4
|
export declare function processTagArray(result: any, value: Tag[], // arry of Tag classes
|
|
4
5
|
template: Element, // <template end interpolate />
|
|
5
|
-
ownerTag: Tag,
|
|
6
|
+
ownerTag: Tag, options: {
|
|
7
|
+
counts: Counts;
|
|
8
|
+
forceElement?: boolean;
|
|
9
|
+
}): Clones;
|
package/js/processTagArray.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { processTagResult } from "./processTagResult.function.js";
|
|
2
3
|
export function processTagArray(result, value, // arry of Tag classes
|
|
3
4
|
template, // <template end interpolate />
|
|
4
|
-
ownerTag,
|
|
5
|
+
ownerTag, options) {
|
|
6
|
+
const clones = [];
|
|
5
7
|
result.lastArray = result.lastArray || []; // {tag, index}[] populated in processTagResult
|
|
6
8
|
let removed = 0;
|
|
7
9
|
/** 🗑️ remove previous items first */
|
|
@@ -12,15 +14,24 @@ ownerTag, counts) {
|
|
|
12
14
|
if (lessLength || subArrayValue !== item.tag.arrayValue) {
|
|
13
15
|
const last = result.lastArray[index];
|
|
14
16
|
const tag = last.tag;
|
|
15
|
-
tag.destroy(
|
|
17
|
+
tag.destroy({
|
|
18
|
+
stagger: options.counts.removed,
|
|
19
|
+
byParent: false
|
|
20
|
+
});
|
|
16
21
|
++removed;
|
|
17
|
-
++counts.removed;
|
|
22
|
+
++options.counts.removed;
|
|
18
23
|
return false;
|
|
19
24
|
}
|
|
20
25
|
return true;
|
|
21
26
|
});
|
|
27
|
+
// const masterBefore = template || (template as any).clone
|
|
28
|
+
const before = template || template.clone;
|
|
22
29
|
value.forEach((subTag, index) => {
|
|
23
|
-
subTag.tagSupport = ownerTag.tagSupport
|
|
30
|
+
subTag.tagSupport = getTagSupport({}); // {...ownerTag.tagSupport} // ownerTag.tagSupport.templater
|
|
31
|
+
subTag.tagSupport.mutatingRender = () => {
|
|
32
|
+
ownerTag.tagSupport.render();
|
|
33
|
+
return subTag;
|
|
34
|
+
}; // fake having a render function
|
|
24
35
|
subTag.ownerTag = ownerTag;
|
|
25
36
|
ownerTag.children.push(subTag);
|
|
26
37
|
if (subTag.arrayValue === undefined) {
|
|
@@ -36,14 +47,14 @@ ownerTag, counts) {
|
|
|
36
47
|
if (previous.tag.arrayValue === subTag.arrayValue) {
|
|
37
48
|
previous.tag.updateValues(subTag.values);
|
|
38
49
|
}
|
|
39
|
-
return;
|
|
50
|
+
return [];
|
|
40
51
|
}
|
|
41
|
-
const
|
|
42
|
-
processTagResult(subTag, result, before, {
|
|
52
|
+
const nextClones = processTagResult(subTag, result, before, {
|
|
43
53
|
index,
|
|
44
|
-
|
|
54
|
+
...options,
|
|
45
55
|
});
|
|
56
|
+
clones.push(...nextClones);
|
|
46
57
|
});
|
|
47
|
-
return;
|
|
58
|
+
return clones;
|
|
48
59
|
}
|
|
49
60
|
//# sourceMappingURL=processTagArray.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
import { Clones } from "./Clones.type.js";
|
|
3
|
+
import { Counts } from "./interpolateTemplate.js";
|
|
4
|
+
export declare function processTagResult(tag: Tag, result: any, // used for recording past and current value
|
|
5
|
+
insertBefore: Element, // <template end interpolate />
|
|
6
|
+
{ index, counts, forceElement, }: {
|
|
7
|
+
index?: number;
|
|
8
|
+
counts: Counts;
|
|
9
|
+
forceElement?: boolean;
|
|
10
|
+
}): Clones;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function processTagResult(tag, result, // used for recording past and current value
|
|
2
|
+
insertBefore, // <template end interpolate />
|
|
3
|
+
{ index, counts, forceElement, }) {
|
|
4
|
+
// *for
|
|
5
|
+
if (index !== undefined) {
|
|
6
|
+
const existing = result.lastArray[index];
|
|
7
|
+
if (existing?.tag.isLikeTag(tag)) {
|
|
8
|
+
existing.tag.updateByTag(tag);
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const lastFirstChild = insertBefore; // tag.clones[0] // insertBefore.lastFirstChild
|
|
12
|
+
const clones = tag.buildBeforeElement(lastFirstChild, { counts, forceElement });
|
|
13
|
+
result.lastArray.push({
|
|
14
|
+
tag, index
|
|
15
|
+
});
|
|
16
|
+
return clones;
|
|
17
|
+
}
|
|
18
|
+
// *if appears we already have seen
|
|
19
|
+
if (result.tag && !forceElement) {
|
|
20
|
+
// are we just updating an if we already had?
|
|
21
|
+
if (result.tag.isLikeTag(tag)) {
|
|
22
|
+
// components
|
|
23
|
+
if (result instanceof Function) {
|
|
24
|
+
const newTag = result(result.tag.tagSupport);
|
|
25
|
+
result.tag.updateByTag(newTag);
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
result.tag.updateByTag(tag);
|
|
29
|
+
return []; // no clones created in element already on stage
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const clones = tag.buildBeforeElement(insertBefore, {
|
|
33
|
+
counts,
|
|
34
|
+
forceElement,
|
|
35
|
+
});
|
|
36
|
+
result.tag = tag; // let reprocessing know we saw this previously as an if
|
|
37
|
+
return clones;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=processTagResult.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processTagResult.function.js","sourceRoot":"","sources":["../ts/processTagResult.function.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,MAAW,EAAE,4CAA4C;AACzD,YAAqB,EAAE,+BAA+B;AACtD,EACE,KAAK,EAAE,MAAM,EAAE,YAAY,GAK5B;IAED,OAAO;IACP,IAAG,KAAK,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAExC,IAAG,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAC7B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,CAAA,CAAC,+CAA+C;QAEnF,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAC,MAAM,EAAE,YAAY,EAAC,CAAC,CAAA;QAE7E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,KAAK;SACX,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,mCAAmC;IACnC,IAAG,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,6CAA6C;QAC7C,IAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,aAAa;YACb,IAAG,MAAM,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAC5C,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAE3B,OAAO,EAAE,CAAA,CAAC,gDAAgD;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAClD,MAAM;QACN,YAAY;KACb,CAAC,CAAA;IACF,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA,CAAC,wDAAwD;IAEzE,OAAO,MAAM,CAAA;AACf,CAAC"}
|