taggedjs 2.5.4 → 2.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.js +3378 -2966
- package/bundle.js.map +1 -1
- package/js/Props.d.ts +1 -1
- package/js/Tag.class.d.ts +1 -1
- package/js/TemplaterResult.class.d.ts +14 -8
- package/js/TemplaterResult.class.js +13 -3
- package/js/TemplaterResult.class.js.map +1 -1
- package/js/afterInterpolateElement.function.d.ts +2 -2
- package/js/alterProps.function.d.ts +2 -3
- package/js/alterProps.function.js +6 -7
- package/js/alterProps.function.js.map +1 -1
- package/js/checkDestroyPrevious.function.d.ts +3 -3
- package/js/checkDestroyPrevious.function.js +2 -2
- package/js/checkDestroyPrevious.function.js.map +1 -1
- package/js/cloneValueArray.function.d.ts +1 -1
- package/js/destroy.support.d.ts +1 -1
- package/js/destroyTag.function.d.ts +1 -1
- package/js/hasTagSupportChanged.function.d.ts +1 -1
- package/js/index.d.ts +15 -12
- package/js/index.js +15 -12
- package/js/index.js.map +1 -1
- package/js/insertAfter.function.d.ts +1 -1
- package/js/interpolations/Clones.type.d.ts +3 -0
- package/js/interpolations/Clones.type.js +2 -0
- package/js/interpolations/Clones.type.js.map +1 -0
- package/js/interpolations/ElementTargetEvent.interface.d.ts +6 -0
- package/js/interpolations/ElementTargetEvent.interface.js +2 -0
- package/js/interpolations/ElementTargetEvent.interface.js.map +1 -0
- package/js/interpolations/afterInterpolateElement.function.d.ts +4 -0
- package/js/interpolations/afterInterpolateElement.function.js +12 -0
- package/js/interpolations/afterInterpolateElement.function.js.map +1 -0
- package/js/interpolations/bindSubjectCallback.function.d.ts +1 -1
- package/js/interpolations/bindSubjectCallback.function.js +11 -9
- package/js/interpolations/bindSubjectCallback.function.js.map +1 -1
- package/js/interpolations/interpolateAttributes.d.ts +2 -2
- package/js/interpolations/interpolateContentTemplates.d.ts +2 -2
- package/js/interpolations/interpolateElement.d.ts +2 -2
- package/js/interpolations/interpolateElement.js +1 -1
- package/js/interpolations/interpolateElement.js.map +1 -1
- package/js/interpolations/interpolateTemplate.d.ts +4 -4
- package/js/interpolations/interpolateTemplate.js +19 -4
- package/js/interpolations/interpolateTemplate.js.map +1 -1
- package/js/interpolations/processAttribute.function.d.ts +2 -2
- package/js/interpolations/scanTextAreaValue.function.d.ts +2 -2
- package/js/isInstance.d.ts +2 -2
- package/js/isInstance.js +2 -1
- package/js/isInstance.js.map +1 -1
- package/js/isLikeTags.function.d.ts +2 -1
- package/js/isLikeTags.function.js +3 -0
- package/js/isLikeTags.function.js.map +1 -1
- package/js/processNewValue.function.d.ts +1 -1
- package/js/processNewValue.function.js +1 -1
- package/js/processNewValue.function.js.map +1 -1
- package/js/processSubjectComponent.function.d.ts +1 -1
- package/js/processSubjectComponent.function.js +1 -1
- package/js/processSubjectComponent.function.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +2 -2
- package/js/processSubjectValue.function.js +2 -2
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTag.function.d.ts +1 -1
- package/js/processTag.function.js +1 -1
- package/js/processTag.function.js.map +1 -1
- package/js/processTagArray.d.ts +1 -1
- package/js/processTagArray.js +2 -2
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +2 -2
- package/js/render.d.ts +1 -1
- package/js/render.js +6 -5
- package/js/render.js.map +1 -1
- package/js/renderExistingTag.function.d.ts +1 -1
- package/js/renderExistingTag.function.js +3 -4
- package/js/renderExistingTag.function.js.map +1 -1
- package/js/renderSubjectComponent.function.d.ts +1 -1
- package/js/renderSubjectComponent.function.js +1 -1
- package/js/renderSubjectComponent.function.js.map +1 -1
- package/js/renderTagOnly.function.d.ts +4 -0
- package/js/renderTagOnly.function.js +39 -0
- package/js/renderTagOnly.function.js.map +1 -0
- package/js/renderTagSupport.function.d.ts +1 -1
- package/js/renderTagSupport.function.js +1 -1
- package/js/renderTagSupport.function.js.map +1 -1
- package/js/renderWithSupport.function.d.ts +2 -3
- package/js/renderWithSupport.function.js +4 -36
- package/js/renderWithSupport.function.js.map +1 -1
- package/js/state/callbackMaker.function.d.ts +3 -2
- package/js/state/callbackMaker.function.js +40 -18
- package/js/state/callbackMaker.function.js.map +1 -1
- package/js/state/children.d.ts +1 -0
- package/js/state/children.js +14 -0
- package/js/state/children.js.map +1 -0
- package/js/state/index.d.ts +2 -1
- package/js/state/index.js +2 -1
- package/js/state/index.js.map +1 -1
- package/js/state/provider.utils.d.ts +1 -1
- package/js/state/provider.utils.js +7 -7
- package/js/state/provider.utils.js.map +1 -1
- package/js/state/providers.d.ts +4 -2
- package/js/state/providers.js +56 -47
- package/js/state/providers.js.map +1 -1
- package/js/state/setUse.function.d.ts +9 -8
- package/js/state/setUse.function.js.map +1 -1
- package/js/state/state.function.js +17 -0
- package/js/state/state.function.js.map +1 -1
- package/js/state/state.utils.d.ts +1 -1
- package/js/state/state.utils.js +38 -24
- package/js/state/state.utils.js.map +1 -1
- package/js/state/subject.function.d.ts +12 -0
- package/js/state/subject.function.js +23 -0
- package/js/state/subject.function.js.map +1 -0
- package/js/state/syncStates.function.d.ts +2 -0
- package/js/state/syncStates.function.js +11 -0
- package/js/state/syncStates.function.js.map +1 -0
- package/js/state/watch.function.d.ts +20 -3
- package/js/state/watch.function.js +106 -10
- package/js/state/watch.function.js.map +1 -1
- package/js/subject/Subject.class.d.ts +9 -3
- package/js/subject/Subject.class.js +20 -54
- package/js/subject/Subject.class.js.map +1 -1
- package/js/subject/Subject.utils.d.ts +6 -3
- package/js/subject/Subject.utils.js +51 -3
- package/js/subject/Subject.utils.js.map +1 -1
- package/js/subject/ValueSubject.d.ts +2 -2
- package/js/subject/combineLatest.function.js +10 -2
- package/js/subject/combineLatest.function.js.map +1 -1
- package/js/subject/subject.cancel.d.ts +2 -0
- package/js/subject/subject.cancel.js +3 -0
- package/js/subject/subject.cancel.js.map +1 -0
- package/js/subject/will.functions.d.ts +1 -1
- package/js/subject.types.d.ts +2 -2
- package/js/tag/Tag.class.d.ts +43 -0
- package/js/tag/Tag.class.js +27 -0
- package/js/tag/Tag.class.js.map +1 -0
- package/js/tag/TagSupport.class.d.ts +58 -0
- package/js/tag/TagSupport.class.js +306 -0
- package/js/tag/TagSupport.class.js.map +1 -0
- package/js/tag/checkDestroyPrevious.function.d.ts +8 -0
- package/js/tag/checkDestroyPrevious.function.js +83 -0
- package/js/tag/checkDestroyPrevious.function.js.map +1 -0
- package/js/tag/cloneValueArray.function.d.ts +2 -0
- package/js/tag/cloneValueArray.function.js +19 -0
- package/js/tag/cloneValueArray.function.js.map +1 -0
- package/js/tag/destroy.support.d.ts +6 -0
- package/js/tag/destroy.support.js +10 -0
- package/js/tag/destroy.support.js.map +1 -0
- package/js/tag/destroyTag.function.d.ts +3 -0
- package/js/tag/destroyTag.function.js +12 -0
- package/js/tag/destroyTag.function.js.map +1 -0
- package/js/tag/elementDestroyCheck.function.d.ts +3 -0
- package/js/tag/elementDestroyCheck.function.js +17 -0
- package/js/tag/elementDestroyCheck.function.js.map +1 -0
- package/js/tag/getSupportInCycle.function.d.ts +1 -0
- package/js/tag/getSupportInCycle.function.js +5 -0
- package/js/tag/getSupportInCycle.function.js.map +1 -0
- package/js/tag/hasPropChanges.function.d.ts +9 -0
- package/js/tag/hasPropChanges.function.js +80 -0
- package/js/tag/hasPropChanges.function.js.map +1 -0
- package/js/tag/hasTagSupportChanged.function.d.ts +4 -0
- package/js/tag/hasTagSupportChanged.function.js +23 -0
- package/js/tag/hasTagSupportChanged.function.js.map +1 -0
- package/js/tag/html.d.ts +4 -0
- package/js/tag/html.js +5 -0
- package/js/tag/html.js.map +1 -0
- package/js/tag/isLikeTags.function.d.ts +5 -0
- package/js/tag/isLikeTags.function.js +42 -0
- package/js/tag/isLikeTags.function.js.map +1 -0
- package/js/tag/render/renderExistingTag.function.d.ts +7 -0
- package/js/tag/render/renderExistingTag.function.js +32 -0
- package/js/tag/render/renderExistingTag.function.js.map +1 -0
- package/js/tag/render/renderSubjectComponent.function.d.ts +3 -0
- package/js/tag/render/renderSubjectComponent.function.js +14 -0
- package/js/tag/render/renderSubjectComponent.function.js.map +1 -0
- package/js/tag/render/renderTagOnly.function.d.ts +3 -0
- package/js/tag/render/renderTagOnly.function.js +41 -0
- package/js/tag/render/renderTagOnly.function.js.map +1 -0
- package/js/tag/render/renderTagSupport.function.d.ts +4 -0
- package/js/tag/render/renderTagSupport.function.js +37 -0
- package/js/tag/render/renderTagSupport.function.js.map +1 -0
- package/js/tag/render/renderWithSupport.function.d.ts +5 -0
- package/js/tag/render/renderWithSupport.function.js +31 -0
- package/js/tag/render/renderWithSupport.function.js.map +1 -0
- package/js/tag/setTagPlaceholder.function.d.ts +4 -0
- package/js/tag/setTagPlaceholder.function.js +12 -0
- package/js/tag/setTagPlaceholder.function.js.map +1 -0
- package/js/tag/tag.d.ts +26 -0
- package/js/tag/tag.js +121 -0
- package/js/tag/tag.js.map +1 -0
- package/js/tag/tagElement.d.ts +9 -0
- package/js/tag/tagElement.js +60 -0
- package/js/tag/tagElement.js.map +1 -0
- package/js/tag/tagRunner.d.ts +5 -0
- package/js/tag/tagRunner.js +28 -0
- package/js/tag/tagRunner.js.map +1 -0
- package/js/tag/update/processNewValue.function.d.ts +3 -0
- package/js/tag/update/processNewValue.function.js +42 -0
- package/js/tag/update/processNewValue.function.js.map +1 -0
- package/js/tag/update/processRegularValue.function.d.ts +5 -0
- package/js/tag/update/processRegularValue.function.js +15 -0
- package/js/tag/update/processRegularValue.function.js.map +1 -0
- package/js/tag/update/processSubjectComponent.function.d.ts +9 -0
- package/js/tag/update/processSubjectComponent.function.js +35 -0
- package/js/tag/update/processSubjectComponent.function.js.map +1 -0
- package/js/tag/update/processSubjectValue.function.d.ts +27 -0
- package/js/tag/update/processSubjectValue.function.js +55 -0
- package/js/tag/update/processSubjectValue.function.js.map +1 -0
- package/js/tag/update/processTag.function.d.ts +11 -0
- package/js/tag/update/processTag.function.js +46 -0
- package/js/tag/update/processTag.function.js.map +1 -0
- package/js/tag/update/processTagArray.d.ts +22 -0
- package/js/tag/update/processTagArray.js +122 -0
- package/js/tag/update/processTagArray.js.map +1 -0
- package/js/tag/update/processTagResult.function.d.ts +11 -0
- package/js/tag/update/processTagResult.function.js +30 -0
- package/js/tag/update/processTagResult.function.js.map +1 -0
- package/js/tag/update/updateContextItem.function.d.ts +3 -0
- package/js/tag/update/updateContextItem.function.js +44 -0
- package/js/tag/update/updateContextItem.function.js.map +1 -0
- package/js/tag/update/updateExistingTagComponent.function.d.ts +5 -0
- package/js/tag/update/updateExistingTagComponent.function.js +116 -0
- package/js/tag/update/updateExistingTagComponent.function.js.map +1 -0
- package/js/tag/update/updateExistingValue.function.d.ts +4 -0
- package/js/tag/update/updateExistingValue.function.js +137 -0
- package/js/tag/update/updateExistingValue.function.js.map +1 -0
- package/js/tag/updates/processNewValue.function.d.ts +3 -0
- package/js/tag/updates/processNewValue.function.js +43 -0
- package/js/tag/updates/processNewValue.function.js.map +1 -0
- package/js/tag.js +1 -1
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +1 -1
- package/js/tagElement.js +1 -1
- package/js/tagElement.js.map +1 -1
- package/js/tagRunner.d.ts +1 -1
- package/js/updateBeforeTemplate.function.d.ts +1 -1
- package/js/updateBeforeTemplate.function.js.map +1 -1
- package/js/updateContextItem.function.d.ts +1 -1
- package/js/updateContextItem.function.js +1 -1
- package/js/updateContextItem.function.js.map +1 -1
- package/js/updateExistingTagComponent.function.d.ts +2 -2
- package/js/updateExistingTagComponent.function.js +3 -3
- package/js/updateExistingTagComponent.function.js.map +1 -1
- package/js/updateExistingValue.function.d.ts +3 -3
- package/js/updateExistingValue.function.js +6 -6
- package/js/updateExistingValue.function.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { hasPropChanges } from "./hasPropChanges.function";
|
|
2
|
+
export function hasTagSupportChanged(oldTagSupport, newTagSupport, newTemplater) {
|
|
3
|
+
const latestProps = newTemplater.props; // newTagSupport.propsConfig.latest
|
|
4
|
+
const pastCloneProps = oldTagSupport.propsConfig.latestCloned;
|
|
5
|
+
const propsChanged = hasPropChanges(latestProps, pastCloneProps);
|
|
6
|
+
// if no changes detected, no need to continue to rendering further tags
|
|
7
|
+
if (propsChanged) {
|
|
8
|
+
return propsChanged;
|
|
9
|
+
}
|
|
10
|
+
const kidsChanged = hasKidsChanged(oldTagSupport, newTagSupport);
|
|
11
|
+
// we already know props didn't change and if kids didn't either, than don't render
|
|
12
|
+
return kidsChanged;
|
|
13
|
+
}
|
|
14
|
+
export function hasKidsChanged(oldTagSupport, newTagSupport) {
|
|
15
|
+
const oldCloneKidValues = oldTagSupport.propsConfig.lastClonedKidValues;
|
|
16
|
+
const newClonedKidValues = newTagSupport.propsConfig.lastClonedKidValues;
|
|
17
|
+
const everySame = oldCloneKidValues.every((set, index) => {
|
|
18
|
+
const x = newClonedKidValues[index];
|
|
19
|
+
return set.every((item, index) => item === x[index]);
|
|
20
|
+
});
|
|
21
|
+
return everySame ? false : 9;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=hasTagSupportChanged.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasTagSupportChanged.function.js","sourceRoot":"","sources":["../../ts/tag/hasTagSupportChanged.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,UAAU,oBAAoB,CAClC,aAA6B,EAC7B,aAA6B,EAC7B,YAA6B;IAE7B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAA,CAAC,mCAAmC;IAC1E,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAA;IAC7D,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IAEhE,wEAAwE;IACxE,IAAG,YAAY,EAAE,CAAC;QAChB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAEhE,mFAAmF;IACnF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,aAA6B,EAC7B,aAA6B;IAE7B,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAA;IACvE,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAA;IAExE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACnC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC"}
|
package/js/tag/html.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InputElementTargetEvent } from "../interpolations/ElementTargetEvent.interface";
|
|
2
|
+
import { Tag } from "./Tag.class";
|
|
3
|
+
export type TagValues = (((e: InputElementTargetEvent) => any) | number | string | boolean | null | undefined | Object)[];
|
|
4
|
+
export declare function html(strings: string[] | TemplateStringsArray, ...values: TagValues): Tag;
|
package/js/tag/html.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../ts/tag/html.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAIjC,MAAM,UAAU,IAAI,CAClB,OAAwC,EACxC,GAAG,MAAiB;IAEpB,OAAO,IAAI,GAAG,CAAC,OAAmB,EAAE,MAAM,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class";
|
|
2
|
+
import { TagSupport } from "./TagSupport.class";
|
|
3
|
+
export declare function isLikeTags(tagSupport0: TagSupport | Tag, // new
|
|
4
|
+
tagSupport1: TagSupport): Boolean;
|
|
5
|
+
export declare function isLikeValueSets(values0: any[], values1: any[]): boolean;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function isLikeTags(tagSupport0, // new
|
|
2
|
+
tagSupport1) {
|
|
3
|
+
const templater0 = tagSupport0.templater;
|
|
4
|
+
const templater1 = tagSupport1.templater;
|
|
5
|
+
const tag0 = templater0?.tag || tagSupport0;
|
|
6
|
+
const tag1 = templater1.tag;
|
|
7
|
+
const strings0 = tag0.strings;
|
|
8
|
+
const strings1 = tagSupport1.strings || tag1.strings;
|
|
9
|
+
if (strings0.length !== strings1.length) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const everyStringMatched = strings0.every((string, index) => strings1[index] === string);
|
|
13
|
+
if (!everyStringMatched) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const values0 = tagSupport0.values || tag0.values;
|
|
17
|
+
const values1 = tagSupport1.values || tag1.values;
|
|
18
|
+
return isLikeValueSets(values0, values1);
|
|
19
|
+
}
|
|
20
|
+
export function isLikeValueSets(values0, values1) {
|
|
21
|
+
const valuesLengthsMatch = values0.length === values1.length;
|
|
22
|
+
if (!valuesLengthsMatch) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const allVarsMatch = values1.every((value, index) => {
|
|
26
|
+
const compareTo = values0[index];
|
|
27
|
+
const isFunctions = value instanceof Function && compareTo instanceof Function;
|
|
28
|
+
if (isFunctions) {
|
|
29
|
+
const stringMatch = value.toString() === compareTo.toString();
|
|
30
|
+
if (stringMatch) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return true; // deepEqual(value, compareTo)
|
|
36
|
+
});
|
|
37
|
+
if (allVarsMatch) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=isLikeTags.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isLikeTags.function.js","sourceRoot":"","sources":["../../ts/tag/isLikeTags.function.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,UAAU,CACxB,WAA6B,EAAE,MAAM;AACrC,WAAuB;IAEvB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAwC,CAAA;IACvE,MAAM,UAAU,GAAG,WAAW,CAAC,SAA4B,CAAA;IAE3D,MAAM,IAAI,GAAG,UAAU,EAAE,GAAG,IAAK,WAAmB,CAAA;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAU,CAAA;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAA;IACpD,IAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAA;IACvF,IAAG,CAAC,kBAAkB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAa,EAAE,OAAa;IAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAA;IAC5D,IAAG,CAAC,kBAAkB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,EAAE;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,WAAW,GAAG,KAAK,YAAY,QAAQ,IAAI,SAAS,YAAY,QAAQ,CAAA;QAE9E,IAAG,WAAW,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAA;YAC7D,IAAG,WAAW,EAAE,CAAC;gBACf,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA,CAAC,8BAA8B;IAC5C,CAAC,CAAC,CAAA;IAEF,IAAG,YAAY,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseTagSupport, TagSupport } from '../TagSupport.class';
|
|
2
|
+
import { TagSubject } from '../../subject.types';
|
|
3
|
+
/** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
|
|
4
|
+
export declare function renderExistingTag(oldestSupport: TagSupport, // oldest with elements on html
|
|
5
|
+
newSupport: TagSupport, // new to be rendered
|
|
6
|
+
ownerSupport: BaseTagSupport, // ownerSupport
|
|
7
|
+
subject: TagSubject): TagSupport;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { providersChangeCheck } from '../../state/provider.utils';
|
|
2
|
+
import { isLikeTags } from '../isLikeTags.function';
|
|
3
|
+
import { renderWithSupport } from './renderWithSupport.function';
|
|
4
|
+
/** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
|
|
5
|
+
export function renderExistingTag(oldestSupport, // oldest with elements on html
|
|
6
|
+
newSupport, // new to be rendered
|
|
7
|
+
ownerSupport, // ownerSupport
|
|
8
|
+
subject) {
|
|
9
|
+
const lastSupport = subject.tagSupport;
|
|
10
|
+
const global = lastSupport.global;
|
|
11
|
+
// share point between renders
|
|
12
|
+
newSupport.global = global;
|
|
13
|
+
const preRenderCount = global.renderCount;
|
|
14
|
+
providersChangeCheck(oldestSupport);
|
|
15
|
+
// When the providers were checked, a render to myself occurred and I do not need to re-render again
|
|
16
|
+
const prevSupport = global.newest;
|
|
17
|
+
if (preRenderCount !== global.renderCount) {
|
|
18
|
+
oldestSupport.updateBy(prevSupport);
|
|
19
|
+
return prevSupport; // already rendered during triggered events
|
|
20
|
+
}
|
|
21
|
+
const toRedrawTag = prevSupport || lastSupport || global.oldest;
|
|
22
|
+
const reSupport = renderWithSupport(newSupport, toRedrawTag, subject, ownerSupport);
|
|
23
|
+
const oldest = global.oldest || oldestSupport;
|
|
24
|
+
reSupport.global.oldest = oldest;
|
|
25
|
+
// TODO: renderWithSupport already does an isLikeTags compare
|
|
26
|
+
if (isLikeTags(prevSupport, reSupport)) {
|
|
27
|
+
subject.tagSupport = reSupport;
|
|
28
|
+
oldest.updateBy(reSupport);
|
|
29
|
+
}
|
|
30
|
+
return reSupport;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=renderExistingTag.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderExistingTag.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderExistingTag.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,uGAAuG;AACvG,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EAAE,+BAA+B;AAC1D,UAAsB,EAAE,qBAAqB;AAC7C,YAA4B,EAAE,eAAe;AAC7C,OAAmB;IAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,UAAwB,CAAA;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;IAEjC,8BAA8B;IAC9B,UAAU,CAAC,MAAM,GAAG,MAAM,CAAA;IAE1B,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAA;IACzC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAEnC,oGAAoG;IACpG,MAAM,WAAW,GAAG,MAAM,CAAC,MAAoB,CAAA;IAC/C,IAAG,cAAc,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACnC,OAAO,WAAW,CAAA,CAAC,2CAA2C;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAA;IAE/D,MAAM,SAAS,GAAG,iBAAiB,CACjC,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAA0B,CAC3B,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,aAAa,CAAA;IAC7C,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAEhC,6DAA6D;IAC7D,IAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;QAC9B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { renderWithSupport } from './renderWithSupport.function';
|
|
2
|
+
export function renderSubjectComponent(subject, reSupport, ownerSupport) {
|
|
3
|
+
const preClones = ownerSupport.clones.map(clone => clone);
|
|
4
|
+
reSupport = renderWithSupport(reSupport, subject.tagSupport, // existing tag
|
|
5
|
+
subject, ownerSupport);
|
|
6
|
+
reSupport.global.newest = reSupport;
|
|
7
|
+
if (ownerSupport.clones.length > preClones.length) {
|
|
8
|
+
const myClones = ownerSupport.clones.filter(fClone => !preClones.find(clone => clone === fClone));
|
|
9
|
+
reSupport.clones.push(...myClones);
|
|
10
|
+
}
|
|
11
|
+
ownerSupport.childTags.push(reSupport);
|
|
12
|
+
return reSupport;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=renderSubjectComponent.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderSubjectComponent.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderSubjectComponent.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,MAAM,UAAU,sBAAsB,CACpC,OAAmB,EACnB,SAAqB,EACrB,YAAwB;IAExB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAEzD,SAAS,GAAG,iBAAiB,CAC3B,SAAS,EACT,OAAO,CAAC,UAAU,EAAE,eAAe;IACnC,OAAO,EACP,YAAY,CACb,CAAA;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAEnC,IAAG,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAA;QACjG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEtC,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { runBeforeRedraw, runBeforeRender } from '../tagRunner';
|
|
2
|
+
import { setUse } from '../../state';
|
|
3
|
+
import { runAfterRender } from '../tagRunner';
|
|
4
|
+
export function renderTagOnly(newTagSupport, lastSupport, subject, ownerSupport) {
|
|
5
|
+
const oldRenderCount = newTagSupport.global.renderCount;
|
|
6
|
+
beforeWithRender(newTagSupport, ownerSupport, lastSupport);
|
|
7
|
+
const templater = newTagSupport.templater;
|
|
8
|
+
// NEW TAG CREATED HERE
|
|
9
|
+
const wrapper = templater.wrapper;
|
|
10
|
+
let reSupport = wrapper(newTagSupport, subject);
|
|
11
|
+
/* AFTER */
|
|
12
|
+
runAfterRender(newTagSupport, ownerSupport);
|
|
13
|
+
// When we rendered, only 1 render should have taken place OTHERWISE rendering caused another render and that is the latest instead
|
|
14
|
+
if (reSupport.global.renderCount > oldRenderCount + 1) {
|
|
15
|
+
return newTagSupport.global.newest;
|
|
16
|
+
}
|
|
17
|
+
newTagSupport.global.newest = reSupport;
|
|
18
|
+
return reSupport;
|
|
19
|
+
}
|
|
20
|
+
function beforeWithRender(tagSupport, // new
|
|
21
|
+
ownerSupport, lastSupport) {
|
|
22
|
+
const lastOwnerSupport = lastSupport?.ownerTagSupport;
|
|
23
|
+
const runtimeOwnerSupport = lastOwnerSupport || ownerSupport;
|
|
24
|
+
if (lastSupport) {
|
|
25
|
+
const lastState = lastSupport.memory.state;
|
|
26
|
+
const memory = tagSupport.memory;
|
|
27
|
+
// memory.state.length = 0
|
|
28
|
+
// memory.state.push(...lastState)
|
|
29
|
+
memory.state = [...lastState];
|
|
30
|
+
tagSupport.global = lastSupport.global;
|
|
31
|
+
runBeforeRedraw(tagSupport, lastSupport);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// first time render
|
|
35
|
+
runBeforeRender(tagSupport, runtimeOwnerSupport);
|
|
36
|
+
// TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
|
|
37
|
+
const providers = setUse.memory.providerConfig;
|
|
38
|
+
providers.ownerSupport = runtimeOwnerSupport;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=renderTagOnly.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderTagOnly.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderTagOnly.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAI7C,MAAM,UAAU,aAAa,CAC3B,aAAyB,EACzB,WAAmC,EACnC,OAAmB,EACnB,YAAyB;IAEzB,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAA;IAEvD,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;IAE1D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAA;IAEzC,uBAAuB;IACvB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAkB,CAAA;IAC5C,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC/C,WAAW;IAEX,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IAE3C,mIAAmI;IACnI,IAAG,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC,MAAM,CAAC,MAAoB,CAAA;IAClD,CAAC;IAED,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAEvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,gBAAgB,CACvB,UAA0B,EAAE,MAAM;AAClC,YAAyB,EACzB,WAAwB;IAExB,MAAM,gBAAgB,GAAG,WAAW,EAAE,eAAe,CAAA;IACrD,MAAM,mBAAmB,GAA2B,gBAAgB,IAAI,YAAY,CAAA;IAEpF,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAA;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,0BAA0B;QAC1B,kCAAkC;QAClC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;QAC7B,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;QAEtC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,eAAe,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;QAEhD,mGAAmG;QACnG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAA;QAC9C,SAAS,CAAC,YAAY,GAAG,mBAAmB,CAAA;IAC9C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TagSupport } from '../TagSupport.class';
|
|
2
|
+
/** Main function used by all other callers to render/update display of a tag component */
|
|
3
|
+
export declare function renderTagSupport(tagSupport: TagSupport, // must be latest/newest state render
|
|
4
|
+
renderUp: boolean): TagSupport;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { deepEqual } from '../../deepFunctions';
|
|
2
|
+
import { renderExistingTag } from './renderExistingTag.function';
|
|
3
|
+
/** Main function used by all other callers to render/update display of a tag component */
|
|
4
|
+
export function renderTagSupport(tagSupport, // must be latest/newest state render
|
|
5
|
+
renderUp) {
|
|
6
|
+
const global = tagSupport.global;
|
|
7
|
+
const templater = tagSupport.templater;
|
|
8
|
+
// is it just a vanilla tag, not component?
|
|
9
|
+
if (!templater.wrapper) { // || isTagTemplater(templater)
|
|
10
|
+
const ownerTag = tagSupport.ownerTagSupport;
|
|
11
|
+
++global.renderCount;
|
|
12
|
+
return renderTagSupport(ownerTag, true);
|
|
13
|
+
}
|
|
14
|
+
const subject = tagSupport.subject;
|
|
15
|
+
let ownerSupport;
|
|
16
|
+
let selfPropChange = false;
|
|
17
|
+
const shouldRenderUp = renderUp && tagSupport;
|
|
18
|
+
if (shouldRenderUp) {
|
|
19
|
+
ownerSupport = tagSupport.ownerTagSupport;
|
|
20
|
+
if (ownerSupport) {
|
|
21
|
+
const nowProps = templater.props;
|
|
22
|
+
const latestProps = tagSupport.propsConfig.latestCloned;
|
|
23
|
+
selfPropChange = !nowProps.every((props, index) => deepEqual(props, latestProps[index]));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const oldest = tagSupport.global.oldest;
|
|
27
|
+
const tag = renderExistingTag(oldest, tagSupport, ownerSupport, // useTagSupport,
|
|
28
|
+
subject);
|
|
29
|
+
const renderOwner = ownerSupport && selfPropChange;
|
|
30
|
+
if (renderOwner) {
|
|
31
|
+
const ownerTagSupport = ownerSupport;
|
|
32
|
+
renderTagSupport(ownerTagSupport, true);
|
|
33
|
+
return tag;
|
|
34
|
+
}
|
|
35
|
+
return tag;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=renderTagSupport.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderTagSupport.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderTagSupport.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EAAE,qCAAqC;AAC7D,QAAiB;IAEjB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;IAEtC,2CAA2C;IAE3C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAG,CAAC,CAAA,gCAAgC;QACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,eAA6B,CAAA;QACzD,EAAE,MAAM,CAAC,WAAW,CAAA;QACpB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;IAElC,IAAI,YAAoC,CAAA;IACxC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,cAAc,GAAG,QAAQ,IAAI,UAAU,CAAA;IAE7C,IAAG,cAAc,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,CAAC,eAAe,CAAA;QACzC,IAAG,YAAY,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAc,CAAA;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAA;YACvD,cAAc,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAoB,CAAA;IACrD,MAAM,GAAG,GAAG,iBAAiB,CAC3B,MAAM,EACN,UAAU,EACV,YAA0B,EAAE,iBAAiB;IAC7C,OAAO,CACR,CAAA;IAED,MAAM,WAAW,GAAG,YAAY,IAAI,cAAc,CAAA;IAClD,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,YAA0B,CAAA;QAElD,gBAAgB,CACd,eAAe,EACf,IAAI,CACL,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TagSupport } from '../TagSupport.class';
|
|
2
|
+
import { TagSubject } from '../../subject.types';
|
|
3
|
+
export declare function renderWithSupport(newTagSupport: TagSupport, lastSupport: TagSupport | undefined, // previous
|
|
4
|
+
subject: TagSubject, // events & memory
|
|
5
|
+
ownerSupport?: TagSupport): TagSupport;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isLikeTags } from '../isLikeTags.function';
|
|
2
|
+
import { destroyTagMemory } from '../destroyTag.function';
|
|
3
|
+
import { renderTagOnly } from './renderTagOnly.function';
|
|
4
|
+
export function renderWithSupport(newTagSupport, lastSupport, // previous
|
|
5
|
+
subject, // events & memory
|
|
6
|
+
ownerSupport) {
|
|
7
|
+
const reSupport = renderTagOnly(newTagSupport, lastSupport, subject, ownerSupport);
|
|
8
|
+
const isLikeTag = !lastSupport || isLikeTags(lastSupport, reSupport);
|
|
9
|
+
if (!isLikeTag) {
|
|
10
|
+
destroyUnlikeTags(lastSupport, reSupport, subject);
|
|
11
|
+
}
|
|
12
|
+
const lastOwnerSupport = lastSupport?.ownerTagSupport;
|
|
13
|
+
reSupport.ownerTagSupport = (ownerSupport || lastOwnerSupport);
|
|
14
|
+
return reSupport;
|
|
15
|
+
}
|
|
16
|
+
function destroyUnlikeTags(lastSupport, // old
|
|
17
|
+
reSupport, // new
|
|
18
|
+
subject) {
|
|
19
|
+
const oldGlobal = lastSupport.global;
|
|
20
|
+
const insertBefore = oldGlobal.insertBefore;
|
|
21
|
+
destroyTagMemory(lastSupport);
|
|
22
|
+
// when a tag is destroyed, disconnect the globals
|
|
23
|
+
reSupport.global = { ...oldGlobal }; // break memory references
|
|
24
|
+
const global = reSupport.global;
|
|
25
|
+
global.insertBefore = insertBefore;
|
|
26
|
+
global.deleted = false;
|
|
27
|
+
delete global.oldest;
|
|
28
|
+
delete global.newest;
|
|
29
|
+
delete subject.tagSupport;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=renderWithSupport.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderWithSupport.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderWithSupport.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EACzB,WAAmC,EAAE,WAAW;AAChD,OAAmB,EAAE,kBAAkB;AACvC,YAAyB;IAEzB,MAAM,SAAS,GAAG,aAAa,CAC7B,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAClD,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACpE,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,iBAAiB,CACf,WAAW,EACX,SAAS,EACT,OAAO,CACR,CAAA;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,WAAW,EAAE,eAAe,CAAA;IACrD,SAAS,CAAC,eAAe,GAAG,CAAC,YAAY,IAAI,gBAAgB,CAAe,CAAA;IAE5E,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,WAAuB,EAAE,MAAM;AAC/B,SAAqB,EAAE,MAAM;AAC7B,OAAmB;IAEnB,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAA;IACpC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAuB,CAAA;IAEtD,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAE7B,kDAAkD;IAClD,SAAS,CAAC,MAAM,GAAG,EAAC,GAAG,SAAS,EAAC,CAAA,CAAC,0BAA0B;IAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAE/B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;IAEtB,OAAO,MAAM,CAAC,MAAM,CAAA;IACpB,OAAO,MAAM,CAAC,MAAM,CAAA;IACpB,OAAQ,OAAyB,CAAC,UAAU,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function setTagPlaceholder(global) {
|
|
2
|
+
const insertBefore = global.insertBefore;
|
|
3
|
+
return global.placeholder = swapInsertBefore(insertBefore);
|
|
4
|
+
}
|
|
5
|
+
export function swapInsertBefore(insertBefore) {
|
|
6
|
+
const placeholder = document.createTextNode('');
|
|
7
|
+
const parentNode = insertBefore.parentNode;
|
|
8
|
+
parentNode.insertBefore(placeholder, insertBefore);
|
|
9
|
+
parentNode.removeChild(insertBefore);
|
|
10
|
+
return placeholder;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=setTagPlaceholder.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setTagPlaceholder.function.js","sourceRoot":"","sources":["../../ts/tag/setTagPlaceholder.function.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAC/B,MAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,CAAC,YAA4B,CAAA;IACxD,OAAO,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAA0B;IAE1B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAClD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IACpC,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
package/js/tag/tag.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Tag } from './Tag.class';
|
|
2
|
+
import { TemplaterResult } from '../TemplaterResult.class';
|
|
3
|
+
import { ValueSubject } from '../subject/ValueSubject';
|
|
4
|
+
export type TagChildren = ValueSubject<Tag[]> & {
|
|
5
|
+
lastArray?: Tag[];
|
|
6
|
+
};
|
|
7
|
+
export type TagChildrenInput = Tag[] | Tag | TagChildren;
|
|
8
|
+
type FirstArgOptional<T extends any[]> = T['length'] extends 0 ? true : false;
|
|
9
|
+
export type TagComponentBase<T extends any[]> = (arg: FirstArgOptional<T> extends true ? (T[0] | void) : T[0], children?: TagChildrenInput) => Tag;
|
|
10
|
+
export declare const tags: TagWrapper<any>[];
|
|
11
|
+
export type TagComponent = TagComponentBase<[any?, TagChildren?]> | TagComponentBase<[]>;
|
|
12
|
+
export type TagWrapper<T> = ((...props: T[]) => TemplaterResult) & {
|
|
13
|
+
original: (...args: any[]) => any;
|
|
14
|
+
compareTo: string;
|
|
15
|
+
isTag: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type TagMaker = ((...args: any[]) => Tag) | ((...args: any[]) => (...args: any[]) => Tag);
|
|
18
|
+
/** Wraps a tag component in a state manager and always push children to last argument as an array */
|
|
19
|
+
export declare function tag<T>(tagComponent: T): T & {
|
|
20
|
+
original: Function;
|
|
21
|
+
};
|
|
22
|
+
export declare function kidsToTagArraySubject(children?: TagChildrenInput): {
|
|
23
|
+
childSubject: ValueSubject<Tag[]>;
|
|
24
|
+
madeSubject: boolean;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
package/js/tag/tag.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { isSubjectInstance, isTagArray } from '../isInstance';
|
|
2
|
+
import { setUse } from '../state';
|
|
3
|
+
import { TemplaterResult } from '../TemplaterResult.class';
|
|
4
|
+
import { runTagCallback } from '../interpolations/bindSubjectCallback.function';
|
|
5
|
+
import { deepClone } from '../deepFunctions';
|
|
6
|
+
import { TagSupport } from './TagSupport.class';
|
|
7
|
+
import { alterProps } from '../alterProps.function';
|
|
8
|
+
import { ValueSubject } from '../subject/ValueSubject';
|
|
9
|
+
// export const tags: TagComponentBase<any>[] = []
|
|
10
|
+
export const tags = [];
|
|
11
|
+
let tagCount = 0;
|
|
12
|
+
/** Wraps a tag component in a state manager and always push children to last argument as an array */
|
|
13
|
+
// export function tag<T>(a: T): T;
|
|
14
|
+
export function tag(tagComponent) {
|
|
15
|
+
/** function developer triggers */
|
|
16
|
+
const parentWrap = (function tagWrapper(...props) {
|
|
17
|
+
const templater = new TemplaterResult(props);
|
|
18
|
+
// attach memory back to original function that contains developer display logic
|
|
19
|
+
const innerTagWrap = getTagWrap(templater, parentWrap);
|
|
20
|
+
if (!innerTagWrap.parentWrap) {
|
|
21
|
+
innerTagWrap.parentWrap = parentWrap;
|
|
22
|
+
}
|
|
23
|
+
templater.tagged = true;
|
|
24
|
+
templater.wrapper = innerTagWrap;
|
|
25
|
+
return templater;
|
|
26
|
+
}) // we override the function provided and pretend original is what's returned
|
|
27
|
+
;
|
|
28
|
+
parentWrap.original = tagComponent;
|
|
29
|
+
parentWrap.compareTo = tagComponent.toString();
|
|
30
|
+
updateResult(parentWrap, tagComponent);
|
|
31
|
+
// group tags together and have hmr pickup
|
|
32
|
+
updateComponent(tagComponent);
|
|
33
|
+
tags.push(parentWrap);
|
|
34
|
+
return parentWrap;
|
|
35
|
+
}
|
|
36
|
+
export function kidsToTagArraySubject(children) {
|
|
37
|
+
if (isSubjectInstance(children)) {
|
|
38
|
+
return { childSubject: children, madeSubject: false };
|
|
39
|
+
}
|
|
40
|
+
const kidArray = children;
|
|
41
|
+
if (isTagArray(kidArray)) {
|
|
42
|
+
return { childSubject: new ValueSubject(children), madeSubject: true };
|
|
43
|
+
}
|
|
44
|
+
const kid = children;
|
|
45
|
+
if (kid) {
|
|
46
|
+
kid.memory.arrayValue = 0;
|
|
47
|
+
return { childSubject: new ValueSubject([kid]), madeSubject: true };
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
childSubject: new ValueSubject([]),
|
|
51
|
+
madeSubject: true // was converted into a subject
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function updateResult(result, tagComponent) {
|
|
55
|
+
result.isTag = true;
|
|
56
|
+
result.original = tagComponent;
|
|
57
|
+
}
|
|
58
|
+
function updateComponent(tagComponent) {
|
|
59
|
+
tagComponent.tags = tags;
|
|
60
|
+
tagComponent.setUse = setUse;
|
|
61
|
+
tagComponent.tagIndex = tagCount++; // needed for things like HMR
|
|
62
|
+
}
|
|
63
|
+
/** creates/returns a function that when called then calls the original component function
|
|
64
|
+
* Gets used as templater.wrapper()
|
|
65
|
+
*/
|
|
66
|
+
function getTagWrap(templater, result) {
|
|
67
|
+
// this function gets called by taggedjs
|
|
68
|
+
const wrapper = function (newTagSupport, subject) {
|
|
69
|
+
const global = newTagSupport.global;
|
|
70
|
+
++global.renderCount;
|
|
71
|
+
const childSubject = templater.children;
|
|
72
|
+
const lastArray = global.oldest?.templater.children.lastArray;
|
|
73
|
+
if (lastArray) {
|
|
74
|
+
childSubject.lastArray = lastArray;
|
|
75
|
+
}
|
|
76
|
+
// result.original
|
|
77
|
+
const originalFunction = result.original; // (innerTagWrap as any).original as unknown as TagComponent
|
|
78
|
+
let props = templater.props;
|
|
79
|
+
let castedProps = props.map(props => alterProps(props, newTagSupport.ownerTagSupport));
|
|
80
|
+
const latestCloned = props.map(props => deepClone(props)); // castedProps
|
|
81
|
+
// CALL ORIGINAL COMPONENT FUNCTION
|
|
82
|
+
let tag = originalFunction(...castedProps);
|
|
83
|
+
if (tag instanceof Function) {
|
|
84
|
+
tag = tag();
|
|
85
|
+
}
|
|
86
|
+
tag.templater = templater;
|
|
87
|
+
templater.tag = tag;
|
|
88
|
+
const tagSupport = new TagSupport(templater, newTagSupport.ownerTagSupport, subject, global.renderCount);
|
|
89
|
+
tagSupport.global = global;
|
|
90
|
+
tagSupport.propsConfig = {
|
|
91
|
+
latest: props,
|
|
92
|
+
latestCloned,
|
|
93
|
+
lastClonedKidValues: tagSupport.propsConfig.lastClonedKidValues,
|
|
94
|
+
};
|
|
95
|
+
tagSupport.memory = newTagSupport.memory; // state handover
|
|
96
|
+
if (templater.madeChildIntoSubject) {
|
|
97
|
+
childSubject.value.forEach(kid => {
|
|
98
|
+
kid.values.forEach((value, index) => {
|
|
99
|
+
if (!(value instanceof Function)) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const valuesValue = kid.values[index];
|
|
103
|
+
if (valuesValue.isChildOverride) {
|
|
104
|
+
return; // already overwritten
|
|
105
|
+
}
|
|
106
|
+
// all functions need to report to me
|
|
107
|
+
kid.values[index] = function (...args) {
|
|
108
|
+
const ownerSupport = tagSupport.ownerTagSupport;
|
|
109
|
+
return runTagCallback(value, // callback
|
|
110
|
+
ownerSupport, this, // bindTo
|
|
111
|
+
args);
|
|
112
|
+
};
|
|
113
|
+
valuesValue.isChildOverride = true;
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return tagSupport;
|
|
118
|
+
};
|
|
119
|
+
return wrapper;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../../ts/tag/tag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TagSupport } from './TagSupport.class';
|
|
2
|
+
import { TemplaterResult } from '../TemplaterResult.class';
|
|
3
|
+
import { TagComponent, TagMaker } from './tag';
|
|
4
|
+
export declare function tagElement(app: TagMaker, // (...args: unknown[]) => TemplaterResult,
|
|
5
|
+
element: HTMLElement | Element, props?: unknown): {
|
|
6
|
+
tagSupport: TagSupport;
|
|
7
|
+
tags: TagComponent[];
|
|
8
|
+
};
|
|
9
|
+
export declare function runWrapper(templater: TemplaterResult): TagSupport;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BaseTagSupport } from './TagSupport.class';
|
|
2
|
+
import { runAfterRender, runBeforeRender } from './tagRunner';
|
|
3
|
+
import { ValueSubject } from '../subject/ValueSubject';
|
|
4
|
+
const appElements = [];
|
|
5
|
+
export function tagElement(
|
|
6
|
+
// app: TagComponent, // (...args: unknown[]) => TemplaterResult,
|
|
7
|
+
app, // (...args: unknown[]) => TemplaterResult,
|
|
8
|
+
element, props) {
|
|
9
|
+
const appElmIndex = appElements.findIndex(appElm => appElm.element === element);
|
|
10
|
+
if (appElmIndex >= 0) {
|
|
11
|
+
appElements[appElmIndex].tagSupport.destroy();
|
|
12
|
+
appElements.splice(appElmIndex, 1);
|
|
13
|
+
// an element already had an app on it
|
|
14
|
+
console.warn('Found and destroyed app element already rendered to element', { element });
|
|
15
|
+
}
|
|
16
|
+
// Create the app which returns [props, runOneTimeFunction]
|
|
17
|
+
const wrapper = app(props);
|
|
18
|
+
// have a function setup and call the tagWrapper with (props, {update, async, on})
|
|
19
|
+
const tagSupport = runWrapper(wrapper);
|
|
20
|
+
// TODO: is the below needed?
|
|
21
|
+
tagSupport.appElement = element;
|
|
22
|
+
tagSupport.isApp = true;
|
|
23
|
+
tagSupport.global.isApp = true;
|
|
24
|
+
const templateElm = document.createElement('template');
|
|
25
|
+
templateElm.setAttribute('id', 'app-tag-' + appElements.length);
|
|
26
|
+
templateElm.setAttribute('app-tag-detail', appElements.length.toString());
|
|
27
|
+
const fragment = document.createDocumentFragment();
|
|
28
|
+
fragment.appendChild(templateElm);
|
|
29
|
+
element.destroy = async () => {
|
|
30
|
+
await tagSupport.destroy();
|
|
31
|
+
const insertBefore = tagSupport.global.insertBefore;
|
|
32
|
+
const parentNode = insertBefore.parentNode;
|
|
33
|
+
parentNode.removeChild(insertBefore);
|
|
34
|
+
};
|
|
35
|
+
tagSupport.buildBeforeElement(templateElm);
|
|
36
|
+
tagSupport.global.oldest = tagSupport;
|
|
37
|
+
tagSupport.global.newest = tagSupport;
|
|
38
|
+
element.setUse = app.original.setUse;
|
|
39
|
+
appElements.push({ element, tagSupport });
|
|
40
|
+
element.appendChild(fragment);
|
|
41
|
+
return {
|
|
42
|
+
tagSupport,
|
|
43
|
+
tags: app.original.tags,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function runWrapper(templater) {
|
|
47
|
+
let newSupport = {};
|
|
48
|
+
const subject = new ValueSubject(newSupport);
|
|
49
|
+
newSupport = new BaseTagSupport(templater, subject);
|
|
50
|
+
// newSupport.ownerTagSupport = newSupport
|
|
51
|
+
subject.set(templater);
|
|
52
|
+
subject.tagSupport = newSupport;
|
|
53
|
+
runBeforeRender(newSupport, undefined);
|
|
54
|
+
// Call the apps function for our tag templater
|
|
55
|
+
const wrapper = templater.wrapper;
|
|
56
|
+
const tagSupport = wrapper(newSupport, subject);
|
|
57
|
+
runAfterRender(newSupport, tagSupport);
|
|
58
|
+
return tagSupport;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=tagElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../../ts/tag/tagElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BaseTagSupport, TagSupport } from './TagSupport.class';
|
|
2
|
+
export declare function runBeforeRender(tagSupport: BaseTagSupport, ownerSupport?: TagSupport): void;
|
|
3
|
+
export declare function runAfterRender(tagSupport: BaseTagSupport, ownerTagSupport?: TagSupport): void;
|
|
4
|
+
export declare function runBeforeRedraw(tagSupport: BaseTagSupport, ownerTagSupport: TagSupport): void;
|
|
5
|
+
export declare function runBeforeDestroy(tagSupport: BaseTagSupport, ownerTagSupport: TagSupport): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// TODO: This should be more like `new TaggedJs().use({})`
|
|
2
|
+
import { setUse } from '../state';
|
|
3
|
+
import { Subject } from '../subject';
|
|
4
|
+
import { getSupportInCycle } from './getSupportInCycle.function';
|
|
5
|
+
// Emits event at the end of a tag being rendered. Use tagClosed$.toPromise() to render a tag after a current tag is done rendering
|
|
6
|
+
setUse.memory.tagClosed$ = new Subject(undefined, subscription => {
|
|
7
|
+
if (!getSupportInCycle()) {
|
|
8
|
+
subscription.next(); // we are not currently processing so process now
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
// Life cycle 1
|
|
12
|
+
export function runBeforeRender(tagSupport, ownerSupport) {
|
|
13
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, ownerSupport));
|
|
14
|
+
}
|
|
15
|
+
// Life cycle 2
|
|
16
|
+
export function runAfterRender(tagSupport, ownerTagSupport) {
|
|
17
|
+
setUse.tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, ownerTagSupport));
|
|
18
|
+
setUse.memory.tagClosed$.next(ownerTagSupport);
|
|
19
|
+
}
|
|
20
|
+
// Life cycle 3
|
|
21
|
+
export function runBeforeRedraw(tagSupport, ownerTagSupport) {
|
|
22
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeRedraw(tagSupport, ownerTagSupport));
|
|
23
|
+
}
|
|
24
|
+
// Life cycle 4 - end of life
|
|
25
|
+
export function runBeforeDestroy(tagSupport, ownerTagSupport) {
|
|
26
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeDestroy(tagSupport, ownerTagSupport));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tagRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagRunner.js","sourceRoot":"","sources":["../../ts/tag/tagRunner.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAG1D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,mIAAmI;AACnI,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,OAAO,CAAa,SAAS,EAAE,YAAY,CAAC,EAAE;IAC3E,IAAI,CAAC,iBAAiB,EAAE,EAAG,CAAC;QAC1B,YAAY,CAAC,IAAI,EAAE,CAAA,CAAC,iDAAiD;IACvE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,YAAyB;IAEzB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAA;AAChF,CAAC;AAED,eAAe;AACf,MAAM,UAAU,cAAc,CAC5B,UAA0B,EAC1B,eAA4B;IAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;IAChF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAChD,CAAC;AAED,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,eAA2B;IAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,UAA0B,EAC1B,eAA2B;IAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;AACpF,CAAC"}
|