taggedjs 2.1.1 → 2.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/js/Clones.type.d.ts +1 -0
- package/js/Clones.type.js +2 -0
- package/js/Clones.type.js.map +1 -0
- package/js/Props.d.ts +1 -0
- package/js/Props.js +2 -0
- package/js/Props.js.map +1 -0
- package/js/Subject.d.ts +17 -0
- package/js/Subject.js +43 -0
- package/js/Subject.js.map +1 -0
- package/js/Tag.class.d.ts +69 -0
- package/js/Tag.class.js +247 -0
- package/js/Tag.class.js.map +1 -0
- package/js/Tag.utils.d.ts +12 -0
- package/js/Tag.utils.js +31 -0
- package/js/Tag.utils.js.map +1 -0
- package/js/ValueSubject.d.ts +6 -0
- package/js/ValueSubject.js +15 -0
- package/js/ValueSubject.js.map +1 -0
- package/js/bindSubjectCallback.function.d.ts +5 -0
- package/js/bindSubjectCallback.function.js +19 -0
- package/js/bindSubjectCallback.function.js.map +1 -0
- package/js/deepFunctions.d.ts +2 -0
- package/js/deepFunctions.js +76 -0
- package/js/deepFunctions.js.map +1 -0
- package/js/elementDestroyCheck.function.d.ts +3 -0
- package/js/elementDestroyCheck.function.js +17 -0
- package/js/elementDestroyCheck.function.js.map +1 -0
- package/js/elementInitCheck.d.ts +2 -0
- package/js/elementInitCheck.js +18 -0
- package/js/elementInitCheck.js.map +1 -0
- package/js/gateway/gateway.web.component.d.ts +11 -0
- package/js/gateway/gateway.web.component.js +20 -0
- package/js/gateway/gateway.web.component.js.map +1 -0
- package/js/gateway/index.d.ts +3 -0
- package/js/gateway/index.js +3 -0
- package/js/gateway/index.js.map +1 -0
- package/js/gateway/loadTagGateway.function.d.ts +2 -0
- package/js/gateway/loadTagGateway.function.js +18 -0
- package/js/gateway/loadTagGateway.function.js.map +1 -0
- package/js/gateway/tagGateway.function.d.ts +31 -0
- package/js/gateway/tagGateway.function.js +187 -0
- package/js/gateway/tagGateway.function.js.map +1 -0
- package/js/getCallback.d.ts +3 -0
- package/js/getCallback.js +50 -0
- package/js/getCallback.js.map +1 -0
- package/js/getTagSupport.d.ts +21 -0
- package/js/getTagSupport.js +109 -0
- package/js/getTagSupport.js.map +1 -0
- package/js/html.d.ts +2 -0
- package/js/html.js +5 -0
- package/js/html.js.map +1 -0
- package/js/index.d.ts +19 -0
- package/js/index.js +24 -0
- package/js/index.js.map +1 -0
- package/js/inputAttribute.d.ts +1 -0
- package/js/inputAttribute.js +19 -0
- package/js/inputAttribute.js.map +1 -0
- package/js/interpolateAttributes.d.ts +4 -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/interpolateTemplate.d.ts +17 -0
- package/js/interpolateTemplate.js +64 -0
- package/js/interpolateTemplate.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/isInstance.d.ts +6 -0
- package/js/isInstance.js +10 -0
- package/js/isInstance.js.map +1 -0
- package/js/js/Clones.type.d.ts +1 -0
- package/js/js/Clones.type.js +2 -0
- package/js/js/Clones.type.js.map +1 -0
- package/js/js/Props.d.ts +1 -0
- package/js/js/Props.js +2 -0
- package/js/js/Props.js.map +1 -0
- package/js/js/Subject.d.ts +17 -0
- package/js/js/Subject.js +43 -0
- package/js/js/Subject.js.map +1 -0
- package/js/js/Tag.class.d.ts +67 -0
- package/js/js/Tag.class.js +241 -0
- package/js/js/Tag.class.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/elementInitCheck.js.map +1 -0
- package/js/js/getCallback.d.ts +3 -0
- package/js/js/getCallback.js +50 -0
- package/js/js/getCallback.js.map +1 -0
- package/js/js/getTagSupport.d.ts +22 -0
- package/js/js/getTagSupport.js +116 -0
- package/js/js/getTagSupport.js.map +1 -0
- package/js/js/html.d.ts +2 -0
- package/js/js/html.js +5 -0
- package/js/js/html.js.map +1 -0
- package/js/js/index.d.ts +19 -0
- package/js/js/index.js +24 -0
- package/js/js/index.js.map +1 -0
- package/js/js/inputAttribute.d.ts +1 -0
- package/js/js/inputAttribute.js +19 -0
- package/js/js/inputAttribute.js.map +1 -0
- package/js/js/interpolateAttributes.d.ts +4 -0
- package/js/js/interpolateAttributes.js +127 -0
- package/js/js/interpolateAttributes.js.map +1 -0
- package/js/js/interpolateContentTemplates.d.ts +5 -0
- package/js/js/interpolateContentTemplates.js +57 -0
- package/js/js/interpolateContentTemplates.js.map +1 -0
- package/js/js/interpolateElement.d.ts +9 -0
- package/js/js/interpolateElement.js +32 -0
- package/js/js/interpolateElement.js.map +1 -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/interpolations.d.ts +8 -0
- package/js/js/interpolations.js +17 -0
- package/js/js/interpolations.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/js/onDestroy.d.ts +2 -0
- package/js/js/onDestroy.js +20 -0
- package/js/js/onDestroy.js.map +1 -0
- package/js/js/onInit.d.ts +2 -0
- package/js/js/onInit.js +19 -0
- package/js/js/onInit.js.map +1 -0
- package/js/js/processSubjectComponent.function.d.ts +8 -0
- package/js/js/processSubjectComponent.function.js +53 -0
- package/js/js/processSubjectComponent.function.js.map +1 -0
- package/js/js/processSubjectValue.function.d.ts +16 -0
- package/js/js/processSubjectValue.function.js +122 -0
- package/js/js/processSubjectValue.function.js.map +1 -0
- package/js/js/processTagArray.d.ts +9 -0
- package/js/js/processTagArray.js +60 -0
- package/js/js/processTagArray.js.map +1 -0
- package/js/js/processTagResult.function.d.ts +10 -0
- package/js/js/processTagResult.function.js +42 -0
- package/js/js/processTagResult.function.js.map +1 -0
- package/js/js/providers.d.ts +17 -0
- package/js/js/providers.js +86 -0
- package/js/js/providers.js.map +1 -0
- package/js/js/redrawTag.function.d.ts +7 -0
- package/js/js/redrawTag.function.js +9 -0
- package/js/js/redrawTag.function.js.map +1 -0
- package/js/js/render.d.ts +1 -0
- package/js/js/render.js +24 -0
- package/js/js/render.js.map +1 -0
- package/js/js/renderAppToElement.d.ts +14 -0
- package/js/js/renderAppToElement.js +57 -0
- package/js/js/renderAppToElement.js.map +1 -0
- package/js/js/setUse.function.d.ts +23 -0
- package/js/js/setUse.function.js +14 -0
- package/js/js/setUse.function.js.map +1 -0
- package/js/js/state.d.ts +24 -0
- package/js/js/state.js +98 -0
- package/js/js/state.js.map +1 -0
- package/js/js/tag.d.ts +8 -0
- package/js/js/tag.js +46 -0
- package/js/js/tag.js.map +1 -0
- package/js/js/tagElement.d.ts +14 -0
- package/js/js/tagElement.js +57 -0
- package/js/js/tagElement.js.map +1 -0
- package/js/js/tagGateway.function.d.ts +5 -0
- package/js/js/tagGateway.function.js +119 -0
- package/js/js/tagGateway.function.js.map +1 -0
- package/js/js/tagRunner.d.ts +6 -0
- package/js/js/tagRunner.js +19 -0
- package/js/js/tagRunner.js.map +1 -0
- package/js/js/templater.utils.d.ts +28 -0
- package/js/js/templater.utils.js +99 -0
- package/js/js/templater.utils.js.map +1 -0
- package/js/js/updateTag.utils.d.ts +6 -0
- package/js/js/updateTag.utils.js +84 -0
- package/js/js/updateTag.utils.js.map +1 -0
- package/js/js/wait.d.ts +1 -0
- package/js/js/wait.js +8 -0
- package/js/js/wait.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 +39 -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 +24 -0
- package/js/state.js +98 -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/js/wait.d.ts +1 -0
- package/js/wait.js +8 -0
- package/js/wait.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { redrawTag } from "./redrawTag.function.js";
|
|
2
|
+
import { tagElement } from "./tagElement.js";
|
|
3
|
+
export function checkGateways() {
|
|
4
|
+
Object.entries(gateways).forEach(([id, gateway]) => checkGateway(gateway));
|
|
5
|
+
}
|
|
6
|
+
function checkGateway(gateway) {
|
|
7
|
+
const { id, observer, tag } = gateway;
|
|
8
|
+
if (document.getElementById(id)) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
observer.disconnect();
|
|
12
|
+
tag.destroy();
|
|
13
|
+
delete gateways[id];
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const namedTimeouts = {};
|
|
17
|
+
export const tagGateway = function tagGateway(component) {
|
|
18
|
+
const componentString = functionToHtmlId(component);
|
|
19
|
+
const id = '__tagTemplate_' + componentString;
|
|
20
|
+
if (namedTimeouts[id]) {
|
|
21
|
+
return namedTimeouts[id];
|
|
22
|
+
}
|
|
23
|
+
let intervalId;
|
|
24
|
+
let hitCount = 0;
|
|
25
|
+
const interval = 5;
|
|
26
|
+
function findElements() {
|
|
27
|
+
const elements = document.querySelectorAll('#' + id);
|
|
28
|
+
if (!elements.length) {
|
|
29
|
+
return elements.length;
|
|
30
|
+
}
|
|
31
|
+
// Element has been found, load
|
|
32
|
+
if (intervalId) {
|
|
33
|
+
clearInterval(intervalId);
|
|
34
|
+
}
|
|
35
|
+
delete namedTimeouts[id];
|
|
36
|
+
elements.forEach(element => {
|
|
37
|
+
const updateTag = element.updateTag;
|
|
38
|
+
if (updateTag) {
|
|
39
|
+
updateTag();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const props = parsePropsString(element);
|
|
43
|
+
try {
|
|
44
|
+
const { tag } = tagElement(component, element, props);
|
|
45
|
+
watchElement(id, element, tag);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.warn('Failed to render component to element', { component, element, props });
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return elements.length;
|
|
53
|
+
}
|
|
54
|
+
function findElement() {
|
|
55
|
+
intervalId = setInterval(() => {
|
|
56
|
+
hitCount = hitCount + interval;
|
|
57
|
+
if (hitCount >= 2000) {
|
|
58
|
+
clearInterval(intervalId);
|
|
59
|
+
throw new Error(`TaggedJs Element ${id} not found`);
|
|
60
|
+
}
|
|
61
|
+
findElements();
|
|
62
|
+
}, interval);
|
|
63
|
+
}
|
|
64
|
+
const elementCounts = findElements();
|
|
65
|
+
if (elementCounts) {
|
|
66
|
+
return { id };
|
|
67
|
+
}
|
|
68
|
+
findElement();
|
|
69
|
+
namedTimeouts[id] = { id };
|
|
70
|
+
return namedTimeouts[id];
|
|
71
|
+
};
|
|
72
|
+
function parsePropsString(element) {
|
|
73
|
+
const propsString = element.getAttribute('props');
|
|
74
|
+
if (!propsString) {
|
|
75
|
+
return { element };
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const props = JSON.parse(propsString);
|
|
79
|
+
// props.element = element
|
|
80
|
+
props.dispatchEvent = function (name, eventData) {
|
|
81
|
+
const event = new CustomEvent(name, eventData);
|
|
82
|
+
element.dispatchEvent(event);
|
|
83
|
+
};
|
|
84
|
+
return props;
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
console.warn('Failed to parse props on element', { element, propsString });
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function watchElement(id, targetNode, tag) {
|
|
92
|
+
let lastTag = tag;
|
|
93
|
+
const observer = new MutationObserver((mutationsList, observer) => {
|
|
94
|
+
if (!checkGateway(gateway)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
for (const mutation of mutationsList) {
|
|
98
|
+
if (mutation.type === 'attributes') {
|
|
99
|
+
updateTag();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
function updateTag() {
|
|
104
|
+
const templater = tag.tagSupport.templater;
|
|
105
|
+
const oldProps = templater.tagSupport.props;
|
|
106
|
+
templater.tagSupport.props = parsePropsString(targetNode);
|
|
107
|
+
const isSameProps = JSON.stringify(oldProps) === JSON.stringify(templater.tagSupport.props);
|
|
108
|
+
if (isSameProps) {
|
|
109
|
+
return; // no reason to update, same props
|
|
110
|
+
}
|
|
111
|
+
templater.tagSupport.latestProps = templater.tagSupport.props;
|
|
112
|
+
const result = redrawTag(lastTag, templater);
|
|
113
|
+
// update records
|
|
114
|
+
gateway.tag = lastTag = result.retag;
|
|
115
|
+
}
|
|
116
|
+
;
|
|
117
|
+
targetNode.updateTag = updateTag;
|
|
118
|
+
const gateway = { id, tag, observer };
|
|
119
|
+
gateways[id] = gateway;
|
|
120
|
+
// Configure the observer to watch for changes in child nodes and attributes
|
|
121
|
+
const config = { attributes: true };
|
|
122
|
+
// Start observing the target node for specified changes
|
|
123
|
+
observer.observe(targetNode, config);
|
|
124
|
+
}
|
|
125
|
+
function functionToHtmlId(func) {
|
|
126
|
+
// Convert function to string
|
|
127
|
+
let funcString = func.toString();
|
|
128
|
+
// Remove spaces and replace special characters with underscores
|
|
129
|
+
let cleanedString = funcString.replace(/\s+/g, '_')
|
|
130
|
+
.replace(/[^\w\d]/g, '_');
|
|
131
|
+
// Ensure the ID starts with a letter
|
|
132
|
+
if (!/^[a-zA-Z]/.test(cleanedString)) {
|
|
133
|
+
cleanedString = 'fn_' + cleanedString;
|
|
134
|
+
}
|
|
135
|
+
return cleanedString;
|
|
136
|
+
}
|
|
137
|
+
const gateways = {};
|
|
138
|
+
//# sourceMappingURL=tagGateway.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagGateway.function.js","sourceRoot":"","sources":["../ts/tagGateway.function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
import { TagSupport } from "./getTagSupport";
|
|
3
|
+
export declare function runBeforeRender(tagSupport: TagSupport, tagOwner: Tag): void;
|
|
4
|
+
export declare function runAfterRender(tagSupport: TagSupport, tag: Tag): void;
|
|
5
|
+
export declare function runBeforeRedraw(tagSupport: TagSupport, tag: Tag): void;
|
|
6
|
+
export declare function runBeforeDestroy(tagSupport: TagSupport, tag: Tag): void;
|
package/js/tagRunner.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// TODO: This should be more like `new TaggedJs().use({})`
|
|
2
|
+
import { setUse } from "./setUse.function.js";
|
|
3
|
+
// Life cycle 1
|
|
4
|
+
export function runBeforeRender(tagSupport, tagOwner) {
|
|
5
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, tagOwner));
|
|
6
|
+
}
|
|
7
|
+
// Life cycle 2
|
|
8
|
+
export function runAfterRender(tagSupport, tag) {
|
|
9
|
+
setUse.tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, tag));
|
|
10
|
+
}
|
|
11
|
+
// Life cycle 3
|
|
12
|
+
export function runBeforeRedraw(tagSupport, tag) {
|
|
13
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeRedraw(tagSupport, tag));
|
|
14
|
+
}
|
|
15
|
+
// Life cycle 4 - end of life
|
|
16
|
+
export function runBeforeDestroy(tagSupport, tag) {
|
|
17
|
+
setUse.tagUse.forEach(tagUse => tagUse.beforeDestroy(tagSupport, tag));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tagRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tagRunner.js","sourceRoot":"","sources":["../ts/tagRunner.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAI1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,QAAa;IAEb,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,eAAe;AACf,MAAM,UAAU,cAAc,CAC5B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACxE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Tag } from "./Tag.class.js";
|
|
2
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
3
|
+
import { Props } from "./Props.js";
|
|
4
|
+
export type Wrapper = (() => Tag) & {
|
|
5
|
+
original: () => Tag;
|
|
6
|
+
};
|
|
7
|
+
export declare class TemplaterResult {
|
|
8
|
+
tagged: boolean;
|
|
9
|
+
wrapper: Wrapper;
|
|
10
|
+
newest?: Tag;
|
|
11
|
+
oldest?: Tag;
|
|
12
|
+
tagSupport: TagSupport;
|
|
13
|
+
constructor(props: Props);
|
|
14
|
+
redraw?: (force?: boolean) => Tag | undefined;
|
|
15
|
+
isTemplater: boolean;
|
|
16
|
+
forceRenderTemplate(tagSupport: TagSupport, ownerTag: Tag): Tag;
|
|
17
|
+
renderWithSupport(tagSupport: TagSupport, existingTag: Tag | undefined, ownerTag?: Tag): {
|
|
18
|
+
remit: boolean;
|
|
19
|
+
retag: Tag;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface TemplateRedraw extends TemplaterResult {
|
|
23
|
+
redraw: () => Tag | undefined;
|
|
24
|
+
}
|
|
25
|
+
export type TagComponent = (props: Props, // props or children
|
|
26
|
+
children?: Tag) => Tag;
|
|
27
|
+
export declare function getNewProps(props: Props, templater: TemplaterResult): any;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { getTagSupport } from "./getTagSupport.js";
|
|
2
|
+
import { isTagInstance } from "./isInstance.js";
|
|
3
|
+
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
4
|
+
import { setUse } from "./setUse.function.js";
|
|
5
|
+
export class TemplaterResult {
|
|
6
|
+
tagged;
|
|
7
|
+
wrapper;
|
|
8
|
+
newest;
|
|
9
|
+
oldest;
|
|
10
|
+
tagSupport;
|
|
11
|
+
constructor(props) {
|
|
12
|
+
this.tagSupport = getTagSupport(this, props);
|
|
13
|
+
}
|
|
14
|
+
redraw;
|
|
15
|
+
isTemplater = true;
|
|
16
|
+
forceRenderTemplate(tagSupport, ownerTag) {
|
|
17
|
+
const tag = this.wrapper();
|
|
18
|
+
tag.setSupport(tagSupport);
|
|
19
|
+
tag.afterRender();
|
|
20
|
+
this.oldest = tag;
|
|
21
|
+
tagSupport.oldest = tag;
|
|
22
|
+
this.oldest = tag;
|
|
23
|
+
this.newest = tag;
|
|
24
|
+
tag.ownerTag = ownerTag;
|
|
25
|
+
return tag;
|
|
26
|
+
}
|
|
27
|
+
renderWithSupport(tagSupport, existingTag, ownerTag) {
|
|
28
|
+
/* BEFORE RENDER */
|
|
29
|
+
// signify to other operations that a rendering has occurred so they do not need to render again
|
|
30
|
+
++tagSupport.memory.renderCount;
|
|
31
|
+
const runtimeOwnerTag = existingTag?.ownerTag || ownerTag;
|
|
32
|
+
if (tagSupport.oldest) {
|
|
33
|
+
// ensure props are the last ones used
|
|
34
|
+
tagSupport.props = tagSupport.latestProps;
|
|
35
|
+
tagSupport.clonedProps = tagSupport.latestClonedProps;
|
|
36
|
+
runBeforeRedraw(tagSupport, tagSupport.oldest);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// first time render
|
|
40
|
+
runBeforeRender(tagSupport, runtimeOwnerTag);
|
|
41
|
+
// TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
|
|
42
|
+
const providers = setUse.memory.providerConfig;
|
|
43
|
+
providers.ownerTag = runtimeOwnerTag;
|
|
44
|
+
}
|
|
45
|
+
/* END: BEFORE RENDER */
|
|
46
|
+
const templater = this;
|
|
47
|
+
const retag = templater.wrapper();
|
|
48
|
+
/* AFTER */
|
|
49
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
50
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
51
|
+
retag.setSupport(tagSupport);
|
|
52
|
+
runAfterRender(tagSupport, retag);
|
|
53
|
+
templater.newest = retag;
|
|
54
|
+
retag.ownerTag = runtimeOwnerTag;
|
|
55
|
+
const oldest = tagSupport.oldest = tagSupport.oldest || retag;
|
|
56
|
+
tagSupport.newest = retag;
|
|
57
|
+
const oldestTagSupport = oldest.tagSupport;
|
|
58
|
+
oldest.tagSupport = oldestTagSupport || tagSupport;
|
|
59
|
+
oldest.tagSupport.templater = templater;
|
|
60
|
+
// retag.setSupport(tagSupport)
|
|
61
|
+
const isSameTag = existingTag && existingTag.isLikeTag(retag);
|
|
62
|
+
// If previously was a tag and seems to be same tag, then just update current tag with new values
|
|
63
|
+
if (isSameTag) {
|
|
64
|
+
oldest.updateByTag(retag);
|
|
65
|
+
return { remit: false, retag };
|
|
66
|
+
}
|
|
67
|
+
return { remit: true, retag };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/* rewriter */
|
|
71
|
+
export function getNewProps(props, templater) {
|
|
72
|
+
function callback(toCall, callWith) {
|
|
73
|
+
const callbackResult = toCall(...callWith);
|
|
74
|
+
templater.newest?.ownerTag?.tagSupport.render();
|
|
75
|
+
return callbackResult;
|
|
76
|
+
}
|
|
77
|
+
const isPropTag = isTagInstance(props);
|
|
78
|
+
const watchProps = isPropTag ? 0 : props;
|
|
79
|
+
const newProps = resetFunctionProps(watchProps, callback);
|
|
80
|
+
return newProps;
|
|
81
|
+
}
|
|
82
|
+
function resetFunctionProps(props, callback) {
|
|
83
|
+
if (typeof (props) !== 'object') {
|
|
84
|
+
return props;
|
|
85
|
+
}
|
|
86
|
+
const newProps = { ...props };
|
|
87
|
+
Object.entries(newProps).forEach(([name, value]) => {
|
|
88
|
+
if (value instanceof Function) {
|
|
89
|
+
newProps[name] = (...args) => {
|
|
90
|
+
return callback(value, args);
|
|
91
|
+
};
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
newProps[name] = value;
|
|
95
|
+
});
|
|
96
|
+
return newProps;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=templater.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templater.utils.js","sourceRoot":"","sources":["../ts/templater.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TagSubject } from "./Tag.utils.js";
|
|
2
|
+
import { TagSupport } from "./getTagSupport.js";
|
|
3
|
+
import { Subject } from "./Subject.js";
|
|
4
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
5
|
+
import { Tag } from "./Tag.class.js";
|
|
6
|
+
export declare function updateExistingValue(existing: Subject<Tag> | TemplaterResult | TagSubject, value: TemplaterResult | TagSupport | Function | Subject<any>, tag: Tag, variableName: string): void;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { setValueRedraw } from "./Tag.utils.js";
|
|
2
|
+
import { deepClone } from "./deepFunctions.js";
|
|
3
|
+
import { isSubjectInstance, isTagComponent } from "./isInstance.js";
|
|
4
|
+
import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
|
|
5
|
+
function updateExistingTagComponent(tag, tempResult, existingSubject, subjectValue) {
|
|
6
|
+
const latestProps = tempResult.tagSupport.props;
|
|
7
|
+
let existingTag = existingSubject.tag;
|
|
8
|
+
// previously was something else, now a tag component
|
|
9
|
+
if (!existingTag) {
|
|
10
|
+
setValueRedraw(tempResult, existingSubject, tag);
|
|
11
|
+
tempResult.redraw();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
// tag existingTag
|
|
15
|
+
const oldWrapper = existingTag.tagSupport.templater.wrapper;
|
|
16
|
+
const newWrapper = tempResult.wrapper;
|
|
17
|
+
let isSameTag = false;
|
|
18
|
+
if (oldWrapper && newWrapper) {
|
|
19
|
+
const oldFunction = oldWrapper.original;
|
|
20
|
+
const newFunction = newWrapper.original;
|
|
21
|
+
isSameTag = oldFunction === newFunction;
|
|
22
|
+
}
|
|
23
|
+
const oldTagSetup = existingTag.tagSupport;
|
|
24
|
+
oldTagSetup.latestProps = latestProps;
|
|
25
|
+
oldTagSetup.latestClonedProps = tempResult.tagSupport.clonedProps;
|
|
26
|
+
if (!isSameTag) {
|
|
27
|
+
destroyTagMemory(existingTag, existingSubject, subjectValue);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const subjectTagSupport = subjectValue?.tagSupport;
|
|
31
|
+
// old props may have changed, reclone first
|
|
32
|
+
const oldCloneProps = deepClone(subjectTagSupport.props); // tagSupport.clonedProps
|
|
33
|
+
const oldProps = subjectTagSupport?.props; // tagSupport.props
|
|
34
|
+
if (existingTag) {
|
|
35
|
+
const equal = oldTagSetup.hasPropChanges(oldProps, oldCloneProps, latestProps);
|
|
36
|
+
if (equal) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
setValueRedraw(tempResult, existingSubject, tag);
|
|
42
|
+
oldTagSetup.templater = tempResult;
|
|
43
|
+
const redraw = tempResult.redraw();
|
|
44
|
+
existingSubject.value.tag = oldTagSetup.newest = redraw;
|
|
45
|
+
if (!isSameTag) {
|
|
46
|
+
existingSubject.tag = redraw;
|
|
47
|
+
subjectValue.tagSupport = tempResult.tagSupport;
|
|
48
|
+
}
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
function updateExistingTag(templater, ogTag, existingSubject) {
|
|
52
|
+
const tagSupport = ogTag.tagSupport;
|
|
53
|
+
const oldest = tagSupport.oldest;
|
|
54
|
+
oldest.beforeRedraw();
|
|
55
|
+
const retag = templater.wrapper();
|
|
56
|
+
// move my props onto tagSupport
|
|
57
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
58
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
59
|
+
tagSupport.memory = retag.tagSupport.memory;
|
|
60
|
+
retag.setSupport(tagSupport);
|
|
61
|
+
templater.newest = retag;
|
|
62
|
+
tagSupport.newest = retag;
|
|
63
|
+
oldest.afterRender();
|
|
64
|
+
ogTag.updateByTag(retag);
|
|
65
|
+
existingSubject.set(templater);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
export function updateExistingValue(existing, value, tag, variableName) {
|
|
69
|
+
const subjectValue = existing.value;
|
|
70
|
+
const ogTag = subjectValue?.tag;
|
|
71
|
+
const tempResult = value;
|
|
72
|
+
const existingSubject = existing;
|
|
73
|
+
// handle already seen tag components
|
|
74
|
+
if (isTagComponent(tempResult)) {
|
|
75
|
+
return updateExistingTagComponent(tag, tempResult, existingSubject, subjectValue);
|
|
76
|
+
}
|
|
77
|
+
// was component but no longer
|
|
78
|
+
if (existingSubject.tag) {
|
|
79
|
+
destroyTagMemory(existingSubject.tag, existingSubject, subjectValue);
|
|
80
|
+
}
|
|
81
|
+
else if (ogTag) {
|
|
82
|
+
return updateExistingTag(value, ogTag, existingSubject);
|
|
83
|
+
}
|
|
84
|
+
// now its a function
|
|
85
|
+
if (value instanceof Function) {
|
|
86
|
+
existingSubject.set(bindSubjectCallback(value, tag));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (isSubjectInstance(value)) {
|
|
90
|
+
existingSubject.set(value.value); // let ValueSubject now of newest value
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
existingSubject.set(value); // let ValueSubject now of newest value
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
function destroyTagMemory(existingTag, existingSubject, subjectValue) {
|
|
97
|
+
delete existingSubject.tag;
|
|
98
|
+
delete existingSubject.tagSupport;
|
|
99
|
+
delete subjectValue.tagSupport;
|
|
100
|
+
existingTag.destroy();
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=updateTag.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateTag.utils.js","sourceRoot":"","sources":["../ts/updateTag.utils.ts"],"names":[],"mappings":"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"}
|
package/js/wait.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function wait(ms: number): Promise<unknown>;
|
package/js/wait.js
ADDED
package/js/wait.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../ts/wait.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QACvB,UAAU,CAAC,GAAG,EAAE;YACd,GAAG,CAAC,CAAC,CAAC,CAAA;QACR,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC,CAAC,CAAA;AACJ,CAAC"}
|