taggedjs 2.3.25 → 2.3.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_js/ElementTarget.interface.d.ts +7 -0
- package/_js/ElementTarget.interface.js +2 -0
- package/_js/ElementTarget.interface.js.map +1 -0
- package/_js/ElementTargetEvent.interface.d.ts +6 -0
- package/_js/ElementTargetEvent.interface.js +2 -0
- package/_js/ElementTargetEvent.interface.js.map +1 -0
- package/_js/Tag.class.d.ts +69 -0
- package/_js/Tag.class.js +258 -0
- package/_js/Tag.class.js.map +1 -0
- package/_js/elementInitCheck.js.map +1 -0
- 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 +4 -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 +4 -0
- package/_js/gateway/tagGateway.function.js +49 -0
- package/_js/gateway/tagGateway.function.js.map +1 -0
- package/_js/gateway/tagGateway.utils.d.ts +21 -0
- package/_js/gateway/tagGateway.utils.js +139 -0
- package/_js/gateway/tagGateway.utils.js.map +1 -0
- package/_js/getCallback.d.ts +3 -0
- package/_js/getTagSupport.d.ts +21 -0
- package/_js/getTagSupport.js +110 -0
- package/_js/getTagSupport.js.map +1 -0
- package/_js/index.d.ts +20 -0
- package/_js/index.js +25 -0
- package/_js/index.js.map +1 -0
- package/_js/inputAttribute.js +19 -0
- package/_js/inputAttribute.js.map +1 -0
- package/_js/interpolateAttributes.js +135 -0
- package/_js/interpolateAttributes.js.map +1 -0
- package/_js/interpolateContentTemplates.d.ts +6 -0
- package/_js/interpolateContentTemplates.js +54 -0
- package/_js/interpolateContentTemplates.js.map +1 -0
- package/_js/interpolateElement.d.ts +9 -0
- package/_js/interpolateElement.js +39 -0
- package/_js/interpolateElement.js.map +1 -0
- package/_js/interpolations.d.ts +7 -0
- package/_js/interpolations.js +18 -0
- package/_js/interpolations.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 +17 -0
- package/_js/js/Subject.js +43 -0
- package/_js/js/Subject.js.map +1 -0
- package/_js/js/Tag.utils.d.ts +12 -0
- package/_js/js/Tag.utils.js +31 -0
- package/_js/js/Tag.utils.js.map +1 -0
- package/_js/js/ValueSubject.d.ts +6 -0
- package/_js/js/ValueSubject.js +15 -0
- package/_js/js/ValueSubject.js.map +1 -0
- package/_js/js/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/deepFunctions.d.ts +2 -0
- package/_js/js/deepFunctions.js +76 -0
- package/_js/js/deepFunctions.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.d.ts +2 -0
- package/_js/js/elementInitCheck.js +18 -0
- package/_js/js/getCallback.js +50 -0
- package/_js/js/getCallback.js.map +1 -0
- package/_js/js/html.d.ts +2 -0
- package/_js/js/html.js +5 -0
- package/_js/js/html.js.map +1 -0
- package/_js/js/inputAttribute.d.ts +1 -0
- package/_js/js/interpolateAttributes.d.ts +4 -0
- package/_js/js/interpolateTemplate.d.ts +17 -0
- package/_js/js/interpolateTemplate.js +64 -0
- package/_js/js/interpolateTemplate.js.map +1 -0
- 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/onDestroy.d.ts +2 -0
- package/_js/onDestroy.js +20 -0
- package/_js/onDestroy.js.map +1 -0
- package/_js/onInit.d.ts +2 -0
- package/_js/onInit.js +19 -0
- package/_js/onInit.js.map +1 -0
- 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 +9 -0
- package/_js/processTagArray.js +60 -0
- package/_js/processTagArray.js.map +1 -0
- package/_js/processTagResult.function.d.ts +10 -0
- package/_js/processTagResult.function.js +40 -0
- package/_js/processTagResult.function.js.map +1 -0
- package/_js/providers.d.ts +17 -0
- package/_js/providers.js +86 -0
- package/_js/providers.js.map +1 -0
- 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 -0
- package/_js/render.js +17 -0
- package/_js/render.js.map +1 -0
- package/_js/renderAppToElement.d.ts +14 -0
- package/_js/renderAppToElement.js +57 -0
- package/_js/renderAppToElement.js.map +1 -0
- 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 +21 -0
- package/_js/state.js +129 -0
- package/_js/state.js.map +1 -0
- package/_js/tag.d.ts +7 -0
- package/_js/tag.js +46 -0
- package/_js/tag.js.map +1 -0
- 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 +6 -0
- package/_js/tagRunner.js +19 -0
- package/_js/tagRunner.js.map +1 -0
- 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/index.js +1 -1
- package/js/ElementTarget.interface.d.ts +7 -0
- package/js/ElementTarget.interface.js +2 -0
- package/js/ElementTarget.interface.js.map +1 -0
- package/js/ElementTargetEvent.interface.d.ts +6 -0
- package/js/ElementTargetEvent.interface.js +2 -0
- package/js/ElementTargetEvent.interface.js.map +1 -0
- package/js/Tag.class.js +5 -5
- package/js/Tag.class.js.map +1 -1
- package/js/Tag.utils.d.ts +3 -2
- package/js/Tag.utils.js +4 -1
- package/js/Tag.utils.js.map +1 -1
- package/js/bindSubjectCallback.function.js +1 -0
- package/js/bindSubjectCallback.function.js.map +1 -1
- package/js/elementInitCheck.js.map +1 -1
- package/js/gateway/gateway.web.component.d.ts +1 -1
- package/js/gateway/gateway.web.component.js +1 -1
- package/js/gateway/gateway.web.component.js.map +1 -1
- package/js/gateway/index.d.ts +1 -1
- package/js/gateway/index.js +1 -0
- package/js/gateway/index.js.map +1 -1
- package/js/gateway/loadTagGateway.function.d.ts +1 -1
- package/js/gateway/loadTagGateway.function.js +1 -1
- package/js/gateway/loadTagGateway.function.js.map +1 -1
- package/js/gateway/tagGateway.function.d.ts +1 -28
- package/js/gateway/tagGateway.function.js +1 -139
- package/js/gateway/tagGateway.function.js.map +1 -1
- package/js/gateway/tagGateway.utils.d.ts +21 -0
- package/js/gateway/tagGateway.utils.js +139 -0
- package/js/gateway/tagGateway.utils.js.map +1 -0
- package/js/getCallback.d.ts +1 -1
- package/js/index.d.ts +1 -0
- package/js/index.js +1 -0
- package/js/index.js.map +1 -1
- package/js/interpolateAttributes.js +7 -4
- package/js/interpolateAttributes.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +8 -1
- package/js/processSubjectValue.function.js +12 -5
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTagArray.d.ts +10 -1
- package/js/processTagArray.js +9 -3
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +3 -1
- package/js/processTagResult.function.js +14 -10
- package/js/processTagResult.function.js.map +1 -1
- package/js/state.d.ts +3 -7
- package/js/state.js +27 -17
- package/js/state.js.map +1 -1
- package/js/tagElement.js +5 -2
- package/js/tagElement.js.map +1 -1
- package/js/updateTag.utils.d.ts +2 -1
- package/js/updateTag.utils.js +56 -11
- package/js/updateTag.utils.js.map +1 -1
- package/package.json +1 -1
- /package/{js/js → _js}/Clones.type.d.ts +0 -0
- /package/{js/js → _js}/Clones.type.js +0 -0
- /package/{js/js → _js}/Clones.type.js.map +0 -0
- /package/{js/js → _js}/Props.d.ts +0 -0
- /package/{js/js → _js}/Props.js +0 -0
- /package/{js/js → _js}/Props.js.map +0 -0
- /package/{js/js → _js}/Subject.d.ts +0 -0
- /package/{js/js → _js}/Subject.js +0 -0
- /package/{js/js → _js}/Subject.js.map +0 -0
- /package/{js/js → _js}/Tag.utils.d.ts +0 -0
- /package/{js/js → _js}/Tag.utils.js +0 -0
- /package/{js/js → _js}/Tag.utils.js.map +0 -0
- /package/{js/js → _js}/ValueSubject.d.ts +0 -0
- /package/{js/js → _js}/ValueSubject.js +0 -0
- /package/{js/js → _js}/ValueSubject.js.map +0 -0
- /package/{js/js → _js}/bindSubjectCallback.function.d.ts +0 -0
- /package/{js/js → _js}/bindSubjectCallback.function.js +0 -0
- /package/{js/js → _js}/bindSubjectCallback.function.js.map +0 -0
- /package/{js/js → _js}/deepFunctions.d.ts +0 -0
- /package/{js/js → _js}/deepFunctions.js +0 -0
- /package/{js/js → _js}/deepFunctions.js.map +0 -0
- /package/{js/js → _js}/elementDestroyCheck.function.d.ts +0 -0
- /package/{js/js → _js}/elementDestroyCheck.function.js +0 -0
- /package/{js/js → _js}/elementDestroyCheck.function.js.map +0 -0
- /package/{js/js → _js}/elementInitCheck.d.ts +0 -0
- /package/{js/js → _js}/elementInitCheck.js +0 -0
- /package/{js/js → _js}/getCallback.js +0 -0
- /package/{js/js → _js}/getCallback.js.map +0 -0
- /package/{js/js → _js}/html.d.ts +0 -0
- /package/{js/js → _js}/html.js +0 -0
- /package/{js/js → _js}/html.js.map +0 -0
- /package/{js/js → _js}/inputAttribute.d.ts +0 -0
- /package/{js/js → _js}/interpolateAttributes.d.ts +0 -0
- /package/{js/js → _js}/interpolateTemplate.d.ts +0 -0
- /package/{js/js → _js}/interpolateTemplate.js +0 -0
- /package/{js/js → _js}/interpolateTemplate.js.map +0 -0
- /package/{js/js → _js}/isInstance.d.ts +0 -0
- /package/{js/js → _js}/isInstance.js +0 -0
- /package/{js/js → _js}/isInstance.js.map +0 -0
- /package/{js → _js}/js/Tag.class.d.ts +0 -0
- /package/{js → _js}/js/Tag.class.js +0 -0
- /package/{js → _js}/js/Tag.class.js.map +0 -0
- /package/{js → _js}/js/elementInitCheck.js.map +0 -0
- /package/{js → _js}/js/getCallback.d.ts +0 -0
- /package/{js → _js}/js/getTagSupport.d.ts +0 -0
- /package/{js → _js}/js/getTagSupport.js +0 -0
- /package/{js → _js}/js/getTagSupport.js.map +0 -0
- /package/{js → _js}/js/index.d.ts +0 -0
- /package/{js → _js}/js/index.js +0 -0
- /package/{js → _js}/js/index.js.map +0 -0
- /package/{js → _js}/js/inputAttribute.js +0 -0
- /package/{js → _js}/js/inputAttribute.js.map +0 -0
- /package/{js → _js}/js/interpolateAttributes.js +0 -0
- /package/{js → _js}/js/interpolateAttributes.js.map +0 -0
- /package/{js → _js}/js/interpolateContentTemplates.d.ts +0 -0
- /package/{js → _js}/js/interpolateContentTemplates.js +0 -0
- /package/{js → _js}/js/interpolateContentTemplates.js.map +0 -0
- /package/{js → _js}/js/interpolateElement.d.ts +0 -0
- /package/{js → _js}/js/interpolateElement.js +0 -0
- /package/{js → _js}/js/interpolateElement.js.map +0 -0
- /package/{js → _js}/js/interpolations.d.ts +0 -0
- /package/{js → _js}/js/interpolations.js +0 -0
- /package/{js → _js}/js/interpolations.js.map +0 -0
- /package/{js → _js}/js/onDestroy.d.ts +0 -0
- /package/{js → _js}/js/onDestroy.js +0 -0
- /package/{js → _js}/js/onDestroy.js.map +0 -0
- /package/{js → _js}/js/onInit.d.ts +0 -0
- /package/{js → _js}/js/onInit.js +0 -0
- /package/{js → _js}/js/onInit.js.map +0 -0
- /package/{js → _js}/js/processSubjectComponent.function.d.ts +0 -0
- /package/{js → _js}/js/processSubjectComponent.function.js +0 -0
- /package/{js → _js}/js/processSubjectComponent.function.js.map +0 -0
- /package/{js → _js}/js/processSubjectValue.function.d.ts +0 -0
- /package/{js → _js}/js/processSubjectValue.function.js +0 -0
- /package/{js → _js}/js/processSubjectValue.function.js.map +0 -0
- /package/{js → _js}/js/processTagArray.d.ts +0 -0
- /package/{js → _js}/js/processTagArray.js +0 -0
- /package/{js → _js}/js/processTagArray.js.map +0 -0
- /package/{js → _js}/js/processTagResult.function.d.ts +0 -0
- /package/{js → _js}/js/processTagResult.function.js +0 -0
- /package/{js → _js}/js/processTagResult.function.js.map +0 -0
- /package/{js → _js}/js/providers.d.ts +0 -0
- /package/{js → _js}/js/providers.js +0 -0
- /package/{js → _js}/js/providers.js.map +0 -0
- /package/{js → _js}/js/redrawTag.function.d.ts +0 -0
- /package/{js → _js}/js/redrawTag.function.js +0 -0
- /package/{js → _js}/js/redrawTag.function.js.map +0 -0
- /package/{js → _js}/js/render.d.ts +0 -0
- /package/{js → _js}/js/render.js +0 -0
- /package/{js → _js}/js/render.js.map +0 -0
- /package/{js → _js}/js/renderAppToElement.d.ts +0 -0
- /package/{js → _js}/js/renderAppToElement.js +0 -0
- /package/{js → _js}/js/renderAppToElement.js.map +0 -0
- /package/{js → _js}/js/setUse.function.d.ts +0 -0
- /package/{js → _js}/js/setUse.function.js +0 -0
- /package/{js → _js}/js/setUse.function.js.map +0 -0
- /package/{js → _js}/js/state.d.ts +0 -0
- /package/{js → _js}/js/state.js +0 -0
- /package/{js → _js}/js/state.js.map +0 -0
- /package/{js → _js}/js/tag.d.ts +0 -0
- /package/{js → _js}/js/tag.js +0 -0
- /package/{js → _js}/js/tag.js.map +0 -0
- /package/{js → _js}/js/tagElement.d.ts +0 -0
- /package/{js → _js}/js/tagElement.js +0 -0
- /package/{js → _js}/js/tagElement.js.map +0 -0
- /package/{js → _js}/js/tagGateway.function.d.ts +0 -0
- /package/{js → _js}/js/tagGateway.function.js +0 -0
- /package/{js → _js}/js/tagGateway.function.js.map +0 -0
- /package/{js → _js}/js/tagRunner.d.ts +0 -0
- /package/{js → _js}/js/tagRunner.js +0 -0
- /package/{js → _js}/js/tagRunner.js.map +0 -0
- /package/{js → _js}/js/templater.utils.d.ts +0 -0
- /package/{js → _js}/js/templater.utils.js +0 -0
- /package/{js → _js}/js/templater.utils.js.map +0 -0
- /package/{js → _js}/js/updateTag.utils.d.ts +0 -0
- /package/{js → _js}/js/updateTag.utils.js +0 -0
- /package/{js → _js}/js/updateTag.utils.js.map +0 -0
- /package/{js → _js}/js/wait.d.ts +0 -0
- /package/{js → _js}/js/wait.js +0 -0
- /package/{js → _js}/js/wait.js.map +0 -0
- /package/{js → _js}/wait.d.ts +0 -0
- /package/{js → _js}/wait.js +0 -0
- /package/{js → _js}/wait.js.map +0 -0
|
@@ -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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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Clones } from "./Clones.type.js";
|
|
2
|
+
import { Tag } from "./Tag.class.js";
|
|
3
|
+
import { Counts } from "./interpolateTemplate.js";
|
|
4
|
+
export declare function processTagArray(result: any, value: Tag[], // arry of Tag classes
|
|
5
|
+
template: Element, // <template end interpolate />
|
|
6
|
+
ownerTag: Tag, options: {
|
|
7
|
+
counts: Counts;
|
|
8
|
+
forceElement?: boolean;
|
|
9
|
+
}): Clones;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { processTagResult } from "./processTagResult.function.js";
|
|
3
|
+
export function processTagArray(result, value, // arry of Tag classes
|
|
4
|
+
template, // <template end interpolate />
|
|
5
|
+
ownerTag, options) {
|
|
6
|
+
const clones = [];
|
|
7
|
+
result.lastArray = result.lastArray || []; // {tag, index}[] populated in processTagResult
|
|
8
|
+
let removed = 0;
|
|
9
|
+
/** 🗑️ remove previous items first */
|
|
10
|
+
result.lastArray = result.lastArray.filter((item, index) => {
|
|
11
|
+
const lessLength = value.length - 1 < index - removed;
|
|
12
|
+
const subTag = value[index - removed];
|
|
13
|
+
const subArrayValue = subTag?.arrayValue;
|
|
14
|
+
if (lessLength || subArrayValue !== item.tag.arrayValue) {
|
|
15
|
+
const last = result.lastArray[index];
|
|
16
|
+
const tag = last.tag;
|
|
17
|
+
tag.destroy({
|
|
18
|
+
stagger: options.counts.removed,
|
|
19
|
+
byParent: false
|
|
20
|
+
});
|
|
21
|
+
++removed;
|
|
22
|
+
++options.counts.removed;
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
});
|
|
27
|
+
// const masterBefore = template || (template as any).clone
|
|
28
|
+
const before = template || template.clone;
|
|
29
|
+
value.forEach((subTag, index) => {
|
|
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
|
|
35
|
+
subTag.ownerTag = ownerTag;
|
|
36
|
+
ownerTag.children.push(subTag);
|
|
37
|
+
if (subTag.arrayValue === undefined) {
|
|
38
|
+
// appears arrayValue is not there but maybe arrayValue is actually the value of undefined
|
|
39
|
+
if (!Object.keys(subTag).includes('arrayValue')) {
|
|
40
|
+
const err = new Error('Use html`...`.key(item) instead of html`...` to template an Array');
|
|
41
|
+
err.code = 'add-array-key';
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const previous = result.lastArray[index];
|
|
46
|
+
if (previous) {
|
|
47
|
+
if (previous.tag.arrayValue === subTag.arrayValue) {
|
|
48
|
+
previous.tag.updateValues(subTag.values);
|
|
49
|
+
}
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
const nextClones = processTagResult(subTag, result, before, {
|
|
53
|
+
index,
|
|
54
|
+
...options,
|
|
55
|
+
});
|
|
56
|
+
clones.push(...nextClones);
|
|
57
|
+
});
|
|
58
|
+
return clones;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=processTagArray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,40 @@
|
|
|
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
|
+
const rTag = result.tag;
|
|
20
|
+
if (rTag && !forceElement) {
|
|
21
|
+
// are we just updating an if we already had?
|
|
22
|
+
if (rTag.isLikeTag(tag)) {
|
|
23
|
+
// components
|
|
24
|
+
if (result instanceof Function) {
|
|
25
|
+
const newTag = result(rTag.tagSupport);
|
|
26
|
+
rTag.updateByTag(newTag);
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
rTag.updateByTag(tag);
|
|
30
|
+
return []; // no clones created in element already on stage
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const clones = tag.buildBeforeElement(insertBefore, {
|
|
34
|
+
counts,
|
|
35
|
+
forceElement,
|
|
36
|
+
});
|
|
37
|
+
result.tag = tag; // let reprocessing know we saw this previously as an if
|
|
38
|
+
return clones;
|
|
39
|
+
}
|
|
40
|
+
//# 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,MAAM,IAAI,GAAQ,MAAM,CAAC,GAAG,CAAA;IAC5B,IAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACzB,6CAA6C;QAC7C,IAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,aAAa;YACb,IAAG,MAAM,YAAY,QAAQ,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACxB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YAErB,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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type Provider = {
|
|
2
|
+
constructMethod: any;
|
|
3
|
+
instance: any;
|
|
4
|
+
clone: any;
|
|
5
|
+
};
|
|
6
|
+
type functionProvider = <T>() => T;
|
|
7
|
+
type classProvider = new <T>(...args: any[]) => T;
|
|
8
|
+
export declare const providers: {
|
|
9
|
+
create: <T>(constructMethod: classProvider | functionProvider) => T;
|
|
10
|
+
/**
|
|
11
|
+
* @template T
|
|
12
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
13
|
+
* @returns {T}
|
|
14
|
+
*/
|
|
15
|
+
inject: (constructor: any) => any;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
package/_js/providers.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { deepClone } from "./deepFunctions.js";
|
|
2
|
+
import { setUse } from "./setUse.function.js";
|
|
3
|
+
// TODO: rename
|
|
4
|
+
setUse.memory.providerConfig = {
|
|
5
|
+
providers: [],
|
|
6
|
+
currentTagSupport: undefined,
|
|
7
|
+
ownerTag: undefined,
|
|
8
|
+
};
|
|
9
|
+
function get(constructMethod) {
|
|
10
|
+
const config = setUse.memory.providerConfig;
|
|
11
|
+
const providers = config.providers;
|
|
12
|
+
return providers.find(provider => provider.constructMethod === constructMethod);
|
|
13
|
+
}
|
|
14
|
+
export const providers = {
|
|
15
|
+
create: (constructMethod) => {
|
|
16
|
+
const existing = get(constructMethod);
|
|
17
|
+
if (existing) {
|
|
18
|
+
existing.clone = deepClone(existing.instance);
|
|
19
|
+
return existing.instance;
|
|
20
|
+
}
|
|
21
|
+
// Providers with provider requirements just need to use providers.create() and providers.inject()
|
|
22
|
+
const instance = constructMethod.constructor ? new constructMethod() : constructMethod();
|
|
23
|
+
const config = setUse.memory.providerConfig;
|
|
24
|
+
config.providers.push({
|
|
25
|
+
constructMethod,
|
|
26
|
+
instance,
|
|
27
|
+
clone: deepClone(instance)
|
|
28
|
+
});
|
|
29
|
+
return instance;
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* @template T
|
|
33
|
+
* @param {(new (...args: any[]) => T) | () => T} constructor
|
|
34
|
+
* @returns {T}
|
|
35
|
+
*/
|
|
36
|
+
inject: (constructor) => {
|
|
37
|
+
const oldValue = get(constructor);
|
|
38
|
+
if (oldValue) {
|
|
39
|
+
return oldValue.instance;
|
|
40
|
+
}
|
|
41
|
+
const config = setUse.memory.providerConfig;
|
|
42
|
+
let owner = {
|
|
43
|
+
ownerTag: config.ownerTag
|
|
44
|
+
};
|
|
45
|
+
while (owner.ownerTag) {
|
|
46
|
+
const ownerProviders = owner.ownerTag.tagSupport.memory.providers;
|
|
47
|
+
const provider = ownerProviders.find(provider => {
|
|
48
|
+
if (provider.constructMethod === constructor) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (provider) {
|
|
53
|
+
provider.clone = deepClone(provider.instance); // keep a copy of the latest before any change occur
|
|
54
|
+
config.providers.push(provider);
|
|
55
|
+
return provider.instance;
|
|
56
|
+
}
|
|
57
|
+
owner = owner.ownerTag; // cause reloop
|
|
58
|
+
}
|
|
59
|
+
const msg = `Could not inject provider: ${constructor.name} ${constructor}`;
|
|
60
|
+
console.warn(`${msg}. Available providers`, config.providers);
|
|
61
|
+
throw new Error(msg);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
setUse({
|
|
65
|
+
beforeRender: (tagSupport, ownerTag) => {
|
|
66
|
+
run(tagSupport, ownerTag);
|
|
67
|
+
},
|
|
68
|
+
beforeRedraw: (tagSupport, tag) => {
|
|
69
|
+
run(tagSupport, tag.ownerTag);
|
|
70
|
+
},
|
|
71
|
+
afterRender: (tagSupport) => {
|
|
72
|
+
const config = setUse.memory.providerConfig;
|
|
73
|
+
tagSupport.memory.providers = [...config.providers];
|
|
74
|
+
config.providers.length = 0;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
function run(tagSupport, ownerTag) {
|
|
78
|
+
const config = setUse.memory.providerConfig;
|
|
79
|
+
config.currentTagSuport = tagSupport;
|
|
80
|
+
config.ownerTag = ownerTag;
|
|
81
|
+
if (tagSupport.memory.providers.length) {
|
|
82
|
+
config.providers.length = 0;
|
|
83
|
+
config.providers.push(...tagSupport.memory.providers);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../ts/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
2
|
+
import { Tag } from "./Tag.class.js";
|
|
3
|
+
export declare function redrawTag(existingTag: Tag | undefined, templater: TemplaterResult, // latest tag function to call for rendering
|
|
4
|
+
ownerTag?: Tag): {
|
|
5
|
+
remit: boolean;
|
|
6
|
+
retag: Tag;
|
|
7
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
2
|
+
export function redrawTag(existingTag, templater, // latest tag function to call for rendering
|
|
3
|
+
ownerTag) {
|
|
4
|
+
const tagSupport = existingTag?.tagSupport || getTagSupport(templater);
|
|
5
|
+
const result = templater.renderWithSupport(tagSupport, existingTag, ownerTag);
|
|
6
|
+
return result;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=redrawTag.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redrawTag.function.js","sourceRoot":"","sources":["../ts/redrawTag.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIlD,MAAM,UAAU,SAAS,CACvB,WAA4B,EAC5B,SAA0B,EAAE,4CAA4C;AACxE,QAAc;IAEd,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,IAAI,aAAa,CAAC,SAAS,CAAC,CAAA;IAEtE,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CACxC,UAAU,EACV,WAAW,EACX,QAAQ,CACT,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/_js/render.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function buildClones(temporary: Element, insertBefore: Element): ChildNode[];
|
package/_js/render.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function buildClones(temporary, insertBefore) {
|
|
2
|
+
const clones = [];
|
|
3
|
+
const template = temporary.children[0];
|
|
4
|
+
let nextSibling = template.content.firstChild;
|
|
5
|
+
while (nextSibling) {
|
|
6
|
+
const nextNextSibling = nextSibling.nextSibling;
|
|
7
|
+
buildSibling(nextSibling, insertBefore);
|
|
8
|
+
clones.push(nextSibling);
|
|
9
|
+
nextSibling = nextNextSibling;
|
|
10
|
+
}
|
|
11
|
+
return clones;
|
|
12
|
+
}
|
|
13
|
+
function buildSibling(nextSibling, insertBefore) {
|
|
14
|
+
const parentNode = insertBefore.parentNode;
|
|
15
|
+
parentNode.insertBefore(nextSibling, insertBefore);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CACzB,SAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAwB,CAAA;IAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IAE7C,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAAqB;IAErB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CACrB,WAAW,EACX,YAAY,CACb,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { TagComponent, TemplaterResult } from "./templater.utils.js";
|
|
3
|
+
import { Tag } from "./Tag.class.js";
|
|
4
|
+
export declare function renderAppToElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
|
|
5
|
+
element: Element, props: unknown): {
|
|
6
|
+
tag: Tag;
|
|
7
|
+
tags: TagComponent[];
|
|
8
|
+
};
|
|
9
|
+
export declare function applyTagUpdater(wrapper: TemplaterResult): {
|
|
10
|
+
tag: Tag;
|
|
11
|
+
tagSupport: TagSupport;
|
|
12
|
+
};
|
|
13
|
+
/** Overwrites arguments.tagSupport.mutatingRender */
|
|
14
|
+
export declare function addAppTagRender(tagSupport: TagSupport, tag: Tag): void;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { runBeforeRender } from "./tagRunner.js";
|
|
2
|
+
const appElements = [];
|
|
3
|
+
export function renderAppToElement(app, // (...args: unknown[]) => TemplaterResult,
|
|
4
|
+
element, props) {
|
|
5
|
+
const appElmIndex = appElements.findIndex(appElm => appElm.element === element);
|
|
6
|
+
if (appElmIndex >= 0) {
|
|
7
|
+
appElements[appElmIndex].tag.destroy();
|
|
8
|
+
appElements.splice(appElmIndex, 1);
|
|
9
|
+
console.warn('Found and destroyed app element already rendered to element', { element });
|
|
10
|
+
}
|
|
11
|
+
// Create the app which returns [props, runOneTimeFunction]
|
|
12
|
+
const wrapper = app(props);
|
|
13
|
+
// have a function setup and call the tagWrapper with (props, {update, async, on})
|
|
14
|
+
const result = applyTagUpdater(wrapper);
|
|
15
|
+
const { tag, tagSupport } = result;
|
|
16
|
+
tag.appElement = element;
|
|
17
|
+
addAppTagRender(tagSupport, tag);
|
|
18
|
+
// const context = tag.updateValues(tag.values)
|
|
19
|
+
const templateElm = document.createElement('template');
|
|
20
|
+
templateElm.setAttribute('tag-detail', 'app-template-placeholder');
|
|
21
|
+
element.appendChild(templateElm);
|
|
22
|
+
tag.buildBeforeElement(templateElm);
|
|
23
|
+
element.setUse = app.original.setUse;
|
|
24
|
+
appElements.push({ element, tag });
|
|
25
|
+
return { tag, tags: app.original.tags };
|
|
26
|
+
}
|
|
27
|
+
export function applyTagUpdater(wrapper) {
|
|
28
|
+
const tagSupport = wrapper.tagSupport; // getTagSupport(0, wrapper)
|
|
29
|
+
runBeforeRender(tagSupport, undefined);
|
|
30
|
+
// Call the apps function for our tag templater
|
|
31
|
+
// const templater = tagSupport.templater as TemplaterResult
|
|
32
|
+
const tag = wrapper.wrapper(); // templater.wrapper()
|
|
33
|
+
tag.tagSupport = tagSupport;
|
|
34
|
+
tag.afterRender();
|
|
35
|
+
return { tag, tagSupport };
|
|
36
|
+
}
|
|
37
|
+
/** Overwrites arguments.tagSupport.mutatingRender */
|
|
38
|
+
export function addAppTagRender(tagSupport, tag) {
|
|
39
|
+
let lastTag;
|
|
40
|
+
tagSupport.mutatingRender = () => {
|
|
41
|
+
tag.beforeRedraw();
|
|
42
|
+
const templater = tagSupport.templater; // wrapper
|
|
43
|
+
const fromTag = lastTag = templater.wrapper();
|
|
44
|
+
// tagSupport.props = fromTag.tagSupport.props
|
|
45
|
+
tagSupport.latestProps = fromTag.tagSupport.props;
|
|
46
|
+
tagSupport.latestClonedProps = fromTag.tagSupport.clonedProps;
|
|
47
|
+
fromTag.setSupport(tagSupport);
|
|
48
|
+
tag.afterRender();
|
|
49
|
+
tag.updateByTag(fromTag);
|
|
50
|
+
if (lastTag) {
|
|
51
|
+
lastTag.destroy({ stagger: 0 });
|
|
52
|
+
}
|
|
53
|
+
tagSupport.newest = fromTag;
|
|
54
|
+
return lastTag;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=renderAppToElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderAppToElement.js","sourceRoot":"","sources":["../ts/renderAppToElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
import { TagSupport } from "./getTagSupport";
|
|
3
|
+
import { Config } from "./state";
|
|
4
|
+
interface TagUse {
|
|
5
|
+
beforeRender: (tagSupport: TagSupport, ownerTag: Tag) => void;
|
|
6
|
+
beforeRedraw: (tagSupport: TagSupport, tag: Tag) => void;
|
|
7
|
+
afterRender: (tagSupport: TagSupport, tag: Tag) => void;
|
|
8
|
+
beforeDestroy: (tagSupport: TagSupport, tag: Tag) => void;
|
|
9
|
+
}
|
|
10
|
+
export type UseOptions = {
|
|
11
|
+
beforeRender?: (tagSupport: TagSupport, ownerTag: Tag) => void;
|
|
12
|
+
beforeRedraw?: (tagSupport: TagSupport, tag: Tag) => void;
|
|
13
|
+
afterRender?: (tagSupport: TagSupport, tag: Tag) => void;
|
|
14
|
+
beforeDestroy?: (tagSupport: TagSupport, tag: Tag) => void;
|
|
15
|
+
};
|
|
16
|
+
export declare function setUse(use: UseOptions): void;
|
|
17
|
+
export declare namespace setUse {
|
|
18
|
+
var tagUse: TagUse[];
|
|
19
|
+
var memory: Record<string, any> & {
|
|
20
|
+
stateConfig: Config;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const tagUse = [];
|
|
2
|
+
export function setUse(use) {
|
|
3
|
+
// must provide defaults
|
|
4
|
+
const useMe = {
|
|
5
|
+
beforeRender: use.beforeRender || (() => undefined),
|
|
6
|
+
beforeRedraw: use.beforeRedraw || (() => undefined),
|
|
7
|
+
afterRender: use.afterRender || (() => undefined),
|
|
8
|
+
beforeDestroy: use.beforeDestroy || (() => undefined),
|
|
9
|
+
};
|
|
10
|
+
setUse.tagUse.push(useMe);
|
|
11
|
+
}
|
|
12
|
+
setUse.tagUse = tagUse;
|
|
13
|
+
setUse.memory = {};
|
|
14
|
+
//# sourceMappingURL=setUse.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setUse.function.js","sourceRoot":"","sources":["../ts/setUse.function.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAa,EAAE,CAAA;AAsB3B,MAAM,UAAU,MAAM,CAAC,GAAe;IACpC,wBAAwB;IACxB,MAAM,KAAK,GAAW;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACjD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KACtD,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;AACtB,MAAM,CAAC,MAAM,GAAG,EAAkD,CAAA"}
|