taggedjs 2.3.28 → 2.3.30
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/Subject.d.ts +2 -1
- package/js/Subject.js +11 -7
- package/js/Subject.js.map +1 -1
- package/js/Tag.class.d.ts +1 -4
- package/js/Tag.class.js +29 -56
- package/js/Tag.class.js.map +1 -1
- package/js/Tag.utils.d.ts +7 -3
- package/js/Tag.utils.js +3 -3
- package/js/Tag.utils.js.map +1 -1
- package/js/TagSupport.class.d.ts +7 -11
- package/js/TagSupport.class.js +21 -92
- package/js/TagSupport.class.js.map +1 -1
- package/js/ValueSubject.d.ts +1 -1
- package/js/ValueSubject.js +3 -3
- package/js/ValueSubject.js.map +1 -1
- package/js/bindSubjectCallback.function.d.ts +2 -1
- package/js/bindSubjectCallback.function.js +14 -9
- package/js/bindSubjectCallback.function.js.map +1 -1
- package/js/deepFunctions.js +9 -4
- package/js/deepFunctions.js.map +1 -1
- package/js/elementDestroyCheck.function.d.ts +3 -3
- package/js/elementDestroyCheck.function.js.map +1 -1
- package/js/elementInitCheck.d.ts +1 -1
- package/js/elementInitCheck.js +4 -4
- package/js/elementInitCheck.js.map +1 -1
- package/js/gateway/loadTagGateway.function.d.ts +2 -2
- package/js/gateway/loadTagGateway.function.js.map +1 -1
- package/js/gateway/tagGateway.function.d.ts +3 -2
- package/js/gateway/tagGateway.function.js.map +1 -1
- package/js/gateway/tagGateway.utils.d.ts +4 -3
- package/js/gateway/tagGateway.utils.js +3 -15
- package/js/gateway/tagGateway.utils.js.map +1 -1
- package/js/getCallback.js +1 -1
- package/js/getCallback.js.map +1 -1
- package/js/hasTagSupportChanged.function.d.ts +7 -0
- package/js/hasTagSupportChanged.function.js +76 -0
- package/js/hasTagSupportChanged.function.js.map +1 -0
- package/js/index.d.ts +4 -2
- package/js/index.js +5 -2
- package/js/index.js.map +1 -1
- package/js/interpolateAttributes.js +24 -16
- package/js/interpolateAttributes.js.map +1 -1
- package/js/interpolateContentTemplates.d.ts +1 -1
- package/js/interpolateContentTemplates.js +8 -10
- package/js/interpolateContentTemplates.js.map +1 -1
- package/js/interpolateElement.d.ts +2 -0
- package/js/interpolateElement.js +1 -8
- package/js/interpolateElement.js.map +1 -1
- package/js/interpolateTemplate.d.ts +3 -3
- package/js/interpolateTemplate.js +18 -13
- package/js/interpolateTemplate.js.map +1 -1
- package/js/onDestroy.js +0 -3
- package/js/onDestroy.js.map +1 -1
- package/js/onInit.js +0 -4
- package/js/onInit.js.map +1 -1
- package/js/processNewValue.function.d.ts +2 -0
- package/js/processNewValue.function.js +29 -0
- package/js/processNewValue.function.js.map +1 -0
- package/js/processRegularValue.function.d.ts +7 -0
- package/js/processRegularValue.function.js +21 -0
- package/js/processRegularValue.function.js.map +1 -0
- package/js/processSubjectComponent.function.js +3 -19
- package/js/processSubjectComponent.function.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +6 -5
- package/js/processSubjectValue.function.js +28 -42
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTagArray.d.ts +1 -0
- package/js/processTagArray.js +46 -16
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +1 -2
- package/js/processTagResult.function.js +1 -17
- package/js/processTagResult.function.js.map +1 -1
- package/js/propState.function.d.ts +2 -0
- package/js/propState.function.js +3 -0
- package/js/propState.function.js.map +1 -0
- package/js/provider.utils.d.ts +2 -0
- package/js/provider.utils.js +34 -0
- package/js/provider.utils.js.map +1 -0
- package/js/providers.d.ts +2 -1
- package/js/providers.js +2 -2
- package/js/providers.js.map +1 -1
- package/js/redrawTag.function.d.ts +3 -2
- package/js/redrawTag.function.js +2 -5
- package/js/redrawTag.function.js.map +1 -1
- package/js/set.function.d.ts +23 -0
- package/{_js/state.js → js/set.function.js} +60 -64
- package/js/set.function.js.map +1 -0
- package/js/setLet.function.d.ts +3 -0
- package/js/setLet.function.js +31 -0
- package/js/setLet.function.js.map +1 -0
- package/js/setProp.function.d.ts +3 -0
- package/js/setProp.function.js +34 -0
- package/js/setProp.function.js.map +1 -0
- package/js/setUse.function.d.ts +1 -1
- package/js/state.d.ts +7 -6
- package/js/state.js +14 -12
- package/js/state.js.map +1 -1
- package/js/tag.d.ts +7 -3
- package/js/tag.js +42 -8
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +2 -1
- package/js/tagElement.js +16 -8
- package/js/tagElement.js.map +1 -1
- package/js/templater.utils.d.ts +0 -3
- package/js/templater.utils.js +22 -19
- package/js/templater.utils.js.map +1 -1
- package/js/updateExistingTag.function.d.ts +1 -1
- package/js/updateExistingTag.function.js +3 -9
- package/js/updateExistingTag.function.js.map +1 -1
- package/js/updateExistingTagComponent.function.js +12 -13
- package/js/updateExistingTagComponent.function.js.map +1 -1
- package/js/updateExistingValue.function.d.ts +5 -3
- package/js/updateExistingValue.function.js +82 -53
- package/js/updateExistingValue.function.js.map +1 -1
- package/js/watch.function.d.ts +3 -0
- package/js/watch.function.js +19 -0
- package/js/watch.function.js.map +1 -0
- package/package.json +1 -1
- package/_js/Clones.type.d.ts +0 -1
- package/_js/Clones.type.js +0 -2
- package/_js/Clones.type.js.map +0 -1
- package/_js/ElementTarget.interface.d.ts +0 -7
- package/_js/ElementTarget.interface.js +0 -2
- package/_js/ElementTarget.interface.js.map +0 -1
- package/_js/ElementTargetEvent.interface.d.ts +0 -6
- package/_js/ElementTargetEvent.interface.js +0 -2
- package/_js/ElementTargetEvent.interface.js.map +0 -1
- package/_js/Props.d.ts +0 -1
- package/_js/Props.js +0 -2
- package/_js/Props.js.map +0 -1
- package/_js/Subject.d.ts +0 -17
- package/_js/Subject.js +0 -43
- package/_js/Subject.js.map +0 -1
- package/_js/Tag.class.d.ts +0 -69
- package/_js/Tag.class.js +0 -258
- package/_js/Tag.class.js.map +0 -1
- package/_js/Tag.utils.d.ts +0 -12
- package/_js/Tag.utils.js +0 -31
- package/_js/Tag.utils.js.map +0 -1
- package/_js/ValueSubject.d.ts +0 -6
- package/_js/ValueSubject.js +0 -15
- package/_js/ValueSubject.js.map +0 -1
- package/_js/bindSubjectCallback.function.d.ts +0 -5
- package/_js/bindSubjectCallback.function.js +0 -19
- package/_js/bindSubjectCallback.function.js.map +0 -1
- package/_js/deepFunctions.d.ts +0 -2
- package/_js/deepFunctions.js +0 -76
- package/_js/deepFunctions.js.map +0 -1
- package/_js/elementDestroyCheck.function.d.ts +0 -3
- package/_js/elementDestroyCheck.function.js +0 -17
- package/_js/elementDestroyCheck.function.js.map +0 -1
- package/_js/elementInitCheck.d.ts +0 -2
- package/_js/elementInitCheck.js +0 -18
- package/_js/elementInitCheck.js.map +0 -1
- package/_js/gateway/gateway.web.component.d.ts +0 -11
- package/_js/gateway/gateway.web.component.js +0 -20
- package/_js/gateway/gateway.web.component.js.map +0 -1
- package/_js/gateway/index.d.ts +0 -3
- package/_js/gateway/index.js +0 -4
- package/_js/gateway/index.js.map +0 -1
- package/_js/gateway/loadTagGateway.function.d.ts +0 -2
- package/_js/gateway/loadTagGateway.function.js +0 -18
- package/_js/gateway/loadTagGateway.function.js.map +0 -1
- package/_js/gateway/tagGateway.function.d.ts +0 -4
- package/_js/gateway/tagGateway.function.js +0 -49
- package/_js/gateway/tagGateway.function.js.map +0 -1
- package/_js/gateway/tagGateway.utils.d.ts +0 -21
- package/_js/gateway/tagGateway.utils.js +0 -139
- package/_js/gateway/tagGateway.utils.js.map +0 -1
- package/_js/getCallback.d.ts +0 -3
- package/_js/getCallback.js +0 -50
- package/_js/getCallback.js.map +0 -1
- package/_js/getTagSupport.d.ts +0 -21
- package/_js/getTagSupport.js +0 -110
- package/_js/getTagSupport.js.map +0 -1
- package/_js/html.d.ts +0 -2
- package/_js/html.js +0 -5
- package/_js/html.js.map +0 -1
- package/_js/index.d.ts +0 -20
- package/_js/index.js +0 -25
- package/_js/index.js.map +0 -1
- package/_js/inputAttribute.d.ts +0 -1
- package/_js/inputAttribute.js +0 -19
- package/_js/inputAttribute.js.map +0 -1
- package/_js/interpolateAttributes.d.ts +0 -4
- package/_js/interpolateAttributes.js +0 -135
- package/_js/interpolateAttributes.js.map +0 -1
- package/_js/interpolateContentTemplates.d.ts +0 -6
- package/_js/interpolateContentTemplates.js +0 -54
- package/_js/interpolateContentTemplates.js.map +0 -1
- package/_js/interpolateElement.d.ts +0 -9
- package/_js/interpolateElement.js +0 -39
- package/_js/interpolateElement.js.map +0 -1
- package/_js/interpolateTemplate.d.ts +0 -17
- package/_js/interpolateTemplate.js +0 -64
- package/_js/interpolateTemplate.js.map +0 -1
- package/_js/interpolations.d.ts +0 -7
- package/_js/interpolations.js +0 -18
- package/_js/interpolations.js.map +0 -1
- package/_js/isInstance.d.ts +0 -6
- package/_js/isInstance.js +0 -10
- package/_js/isInstance.js.map +0 -1
- package/_js/js/Clones.type.d.ts +0 -1
- package/_js/js/Clones.type.js +0 -2
- package/_js/js/Clones.type.js.map +0 -1
- package/_js/js/Props.d.ts +0 -1
- package/_js/js/Props.js +0 -2
- package/_js/js/Props.js.map +0 -1
- package/_js/js/Subject.d.ts +0 -17
- package/_js/js/Subject.js +0 -43
- package/_js/js/Subject.js.map +0 -1
- package/_js/js/Tag.class.d.ts +0 -67
- package/_js/js/Tag.class.js +0 -241
- package/_js/js/Tag.class.js.map +0 -1
- package/_js/js/Tag.utils.d.ts +0 -12
- package/_js/js/Tag.utils.js +0 -31
- package/_js/js/Tag.utils.js.map +0 -1
- package/_js/js/ValueSubject.d.ts +0 -6
- package/_js/js/ValueSubject.js +0 -15
- package/_js/js/ValueSubject.js.map +0 -1
- package/_js/js/bindSubjectCallback.function.d.ts +0 -5
- package/_js/js/bindSubjectCallback.function.js +0 -19
- package/_js/js/bindSubjectCallback.function.js.map +0 -1
- package/_js/js/deepFunctions.d.ts +0 -2
- package/_js/js/deepFunctions.js +0 -76
- package/_js/js/deepFunctions.js.map +0 -1
- package/_js/js/elementDestroyCheck.function.d.ts +0 -3
- package/_js/js/elementDestroyCheck.function.js +0 -17
- package/_js/js/elementDestroyCheck.function.js.map +0 -1
- package/_js/js/elementInitCheck.d.ts +0 -2
- package/_js/js/elementInitCheck.js +0 -18
- package/_js/js/elementInitCheck.js.map +0 -1
- package/_js/js/getCallback.d.ts +0 -3
- package/_js/js/getCallback.js +0 -50
- package/_js/js/getCallback.js.map +0 -1
- package/_js/js/getTagSupport.d.ts +0 -22
- package/_js/js/getTagSupport.js +0 -116
- package/_js/js/getTagSupport.js.map +0 -1
- package/_js/js/html.d.ts +0 -2
- package/_js/js/html.js +0 -5
- package/_js/js/html.js.map +0 -1
- package/_js/js/index.d.ts +0 -19
- package/_js/js/index.js +0 -24
- package/_js/js/index.js.map +0 -1
- package/_js/js/inputAttribute.d.ts +0 -1
- package/_js/js/inputAttribute.js +0 -19
- package/_js/js/inputAttribute.js.map +0 -1
- package/_js/js/interpolateAttributes.d.ts +0 -4
- package/_js/js/interpolateAttributes.js +0 -127
- package/_js/js/interpolateAttributes.js.map +0 -1
- package/_js/js/interpolateContentTemplates.d.ts +0 -5
- package/_js/js/interpolateContentTemplates.js +0 -57
- package/_js/js/interpolateContentTemplates.js.map +0 -1
- package/_js/js/interpolateElement.d.ts +0 -9
- package/_js/js/interpolateElement.js +0 -32
- package/_js/js/interpolateElement.js.map +0 -1
- package/_js/js/interpolateTemplate.d.ts +0 -17
- package/_js/js/interpolateTemplate.js +0 -64
- package/_js/js/interpolateTemplate.js.map +0 -1
- package/_js/js/interpolations.d.ts +0 -8
- package/_js/js/interpolations.js +0 -17
- package/_js/js/interpolations.js.map +0 -1
- package/_js/js/isInstance.d.ts +0 -6
- package/_js/js/isInstance.js +0 -10
- package/_js/js/isInstance.js.map +0 -1
- package/_js/js/onDestroy.d.ts +0 -2
- package/_js/js/onDestroy.js +0 -20
- package/_js/js/onDestroy.js.map +0 -1
- package/_js/js/onInit.d.ts +0 -2
- package/_js/js/onInit.js +0 -19
- package/_js/js/onInit.js.map +0 -1
- package/_js/js/processSubjectComponent.function.d.ts +0 -8
- package/_js/js/processSubjectComponent.function.js +0 -53
- package/_js/js/processSubjectComponent.function.js.map +0 -1
- package/_js/js/processSubjectValue.function.d.ts +0 -16
- package/_js/js/processSubjectValue.function.js +0 -122
- package/_js/js/processSubjectValue.function.js.map +0 -1
- package/_js/js/processTagArray.d.ts +0 -9
- package/_js/js/processTagArray.js +0 -60
- package/_js/js/processTagArray.js.map +0 -1
- package/_js/js/processTagResult.function.d.ts +0 -10
- package/_js/js/processTagResult.function.js +0 -42
- package/_js/js/processTagResult.function.js.map +0 -1
- package/_js/js/providers.d.ts +0 -17
- package/_js/js/providers.js +0 -86
- package/_js/js/providers.js.map +0 -1
- package/_js/js/redrawTag.function.d.ts +0 -7
- package/_js/js/redrawTag.function.js +0 -9
- package/_js/js/redrawTag.function.js.map +0 -1
- package/_js/js/render.d.ts +0 -1
- package/_js/js/render.js +0 -24
- package/_js/js/render.js.map +0 -1
- package/_js/js/renderAppToElement.d.ts +0 -14
- package/_js/js/renderAppToElement.js +0 -57
- package/_js/js/renderAppToElement.js.map +0 -1
- package/_js/js/setUse.function.d.ts +0 -23
- package/_js/js/setUse.function.js +0 -14
- package/_js/js/setUse.function.js.map +0 -1
- package/_js/js/state.d.ts +0 -24
- package/_js/js/state.js +0 -98
- package/_js/js/state.js.map +0 -1
- package/_js/js/tag.d.ts +0 -8
- package/_js/js/tag.js +0 -46
- package/_js/js/tag.js.map +0 -1
- package/_js/js/tagElement.d.ts +0 -14
- package/_js/js/tagElement.js +0 -57
- package/_js/js/tagElement.js.map +0 -1
- package/_js/js/tagGateway.function.d.ts +0 -5
- package/_js/js/tagGateway.function.js +0 -119
- package/_js/js/tagGateway.function.js.map +0 -1
- package/_js/js/tagRunner.d.ts +0 -6
- package/_js/js/tagRunner.js +0 -19
- package/_js/js/tagRunner.js.map +0 -1
- package/_js/js/templater.utils.d.ts +0 -28
- package/_js/js/templater.utils.js +0 -99
- package/_js/js/templater.utils.js.map +0 -1
- package/_js/js/updateTag.utils.d.ts +0 -6
- package/_js/js/updateTag.utils.js +0 -84
- package/_js/js/updateTag.utils.js.map +0 -1
- package/_js/js/wait.d.ts +0 -1
- package/_js/js/wait.js +0 -8
- package/_js/js/wait.js.map +0 -1
- package/_js/onDestroy.d.ts +0 -2
- package/_js/onDestroy.js +0 -20
- package/_js/onDestroy.js.map +0 -1
- package/_js/onInit.d.ts +0 -2
- package/_js/onInit.js +0 -19
- package/_js/onInit.js.map +0 -1
- package/_js/processSubjectComponent.function.d.ts +0 -8
- package/_js/processSubjectComponent.function.js +0 -53
- package/_js/processSubjectComponent.function.js.map +0 -1
- package/_js/processSubjectValue.function.d.ts +0 -16
- package/_js/processSubjectValue.function.js +0 -122
- package/_js/processSubjectValue.function.js.map +0 -1
- package/_js/processTagArray.d.ts +0 -9
- package/_js/processTagArray.js +0 -60
- package/_js/processTagArray.js.map +0 -1
- package/_js/processTagResult.function.d.ts +0 -10
- package/_js/processTagResult.function.js +0 -40
- package/_js/processTagResult.function.js.map +0 -1
- package/_js/providers.d.ts +0 -17
- package/_js/providers.js +0 -86
- package/_js/providers.js.map +0 -1
- package/_js/redrawTag.function.d.ts +0 -7
- package/_js/redrawTag.function.js +0 -8
- package/_js/redrawTag.function.js.map +0 -1
- package/_js/render.d.ts +0 -1
- package/_js/render.js +0 -17
- package/_js/render.js.map +0 -1
- package/_js/renderAppToElement.d.ts +0 -14
- package/_js/renderAppToElement.js +0 -57
- package/_js/renderAppToElement.js.map +0 -1
- package/_js/setUse.function.d.ts +0 -23
- package/_js/setUse.function.js +0 -14
- package/_js/setUse.function.js.map +0 -1
- package/_js/state.d.ts +0 -21
- package/_js/state.js.map +0 -1
- package/_js/tag.d.ts +0 -7
- package/_js/tag.js +0 -46
- package/_js/tag.js.map +0 -1
- package/_js/tagElement.d.ts +0 -14
- package/_js/tagElement.js +0 -57
- package/_js/tagElement.js.map +0 -1
- package/_js/tagGateway.function.d.ts +0 -14
- package/_js/tagGateway.function.js +0 -138
- package/_js/tagGateway.function.js.map +0 -1
- package/_js/tagRunner.d.ts +0 -6
- package/_js/tagRunner.js +0 -19
- package/_js/tagRunner.js.map +0 -1
- package/_js/templater.utils.d.ts +0 -27
- package/_js/templater.utils.js +0 -98
- package/_js/templater.utils.js.map +0 -1
- package/_js/updateTag.utils.d.ts +0 -6
- package/_js/updateTag.utils.js +0 -102
- package/_js/updateTag.utils.js.map +0 -1
- package/_js/wait.d.ts +0 -1
- package/_js/wait.js +0 -8
- package/_js/wait.js.map +0 -1
|
@@ -1,89 +1,50 @@
|
|
|
1
|
+
import { StateMismatchError } from "./errors.js";
|
|
1
2
|
import { setUse } from "./setUse.function.js";
|
|
2
3
|
// TODO: rename
|
|
3
4
|
setUse.memory.stateConfig = {
|
|
4
5
|
array: [], // state memory on the first render
|
|
5
6
|
rearray: [], // state memory to be used before the next render
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
-
export function state0(defaultValue, getSetMethod) {
|
|
9
|
-
const config = setUse.memory.stateConfig;
|
|
10
|
-
const restate = config.rearray[config.array.length];
|
|
11
|
-
if (restate) {
|
|
12
|
-
const oldValue = getStateValue(restate);
|
|
13
|
-
config.array.push({
|
|
14
|
-
callback: getSetMethod,
|
|
15
|
-
lastValue: oldValue,
|
|
16
|
-
defaultValue: restate.defaultValue,
|
|
17
|
-
});
|
|
18
|
-
return oldValue; // return old value instead
|
|
19
|
-
}
|
|
20
|
-
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
21
|
-
const initValue = defaultFn();
|
|
22
|
-
config.array.push({
|
|
23
|
-
callback: getSetMethod,
|
|
24
|
-
lastValue: initValue,
|
|
25
|
-
defaultValue: initValue,
|
|
26
|
-
});
|
|
27
|
-
return initValue;
|
|
28
|
-
}
|
|
29
|
-
export function state(defaultValue) {
|
|
30
|
-
console.log('----------------');
|
|
31
|
-
const config = setUse.memory.stateConfig;
|
|
32
|
-
let getSetMethod;
|
|
33
|
-
const restate = config.rearray[config.array.length];
|
|
34
|
-
if (restate) {
|
|
35
|
-
let oldValue = getStateValue(restate);
|
|
36
|
-
getSetMethod = (x => [oldValue, oldValue = x]);
|
|
37
|
-
const push = {
|
|
38
|
-
callback: getSetMethod,
|
|
39
|
-
lastValue: oldValue,
|
|
40
|
-
defaultValue: restate.defaultValue,
|
|
41
|
-
};
|
|
42
|
-
config.array.push(push);
|
|
43
|
-
return (y) => {
|
|
44
|
-
push.callback = y || (x => [oldValue, oldValue = x]);
|
|
45
|
-
return oldValue;
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
49
|
-
let initValue = defaultFn();
|
|
50
|
-
getSetMethod = (x => [initValue, initValue = x]);
|
|
51
|
-
const push = {
|
|
52
|
-
callback: getSetMethod,
|
|
53
|
-
lastValue: initValue,
|
|
54
|
-
defaultValue: initValue,
|
|
55
|
-
};
|
|
56
|
-
config.array.push(push);
|
|
8
|
+
export function makeStateResult(initValue, push) {
|
|
57
9
|
// return initValue
|
|
58
|
-
|
|
10
|
+
const result = (y) => {
|
|
59
11
|
push.callback = y || (x => [initValue, initValue = x]);
|
|
60
12
|
return initValue;
|
|
61
13
|
};
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
const waitingStates = [];
|
|
17
|
+
export function onNextStateOnly(callback) {
|
|
18
|
+
const config = setUse.memory.stateConfig;
|
|
19
|
+
if (!config.rearray.length) {
|
|
20
|
+
callback();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
waitingStates.push(callback);
|
|
62
24
|
}
|
|
63
25
|
setUse({
|
|
64
26
|
beforeRender: (tagSupport) => initState(tagSupport),
|
|
65
27
|
beforeRedraw: (tagSupport) => initState(tagSupport),
|
|
66
|
-
afterRender: (tagSupport
|
|
28
|
+
afterRender: (tagSupport) => {
|
|
67
29
|
const state = tagSupport.memory.state;
|
|
68
30
|
const config = setUse.memory.stateConfig;
|
|
69
31
|
if (config.rearray.length) {
|
|
70
32
|
if (config.rearray.length !== config.array.length) {
|
|
71
33
|
const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
|
|
72
|
-
|
|
34
|
+
const error = new StateMismatchError(message, {
|
|
73
35
|
oldStates: config.array,
|
|
74
36
|
newStates: config.rearray,
|
|
75
37
|
component: tagSupport.templater?.wrapper.original
|
|
76
38
|
});
|
|
77
|
-
throw
|
|
39
|
+
throw error;
|
|
78
40
|
}
|
|
79
41
|
}
|
|
80
|
-
// config.rearray.length = 0 // clean up any previous runs
|
|
81
42
|
config.rearray = []; // clean up any previous runs
|
|
82
|
-
// state.newest.length = 0
|
|
83
|
-
// state.newest.push(...config.array) as any
|
|
84
43
|
state.newest = [...config.array];
|
|
85
44
|
// config.array.length = 0
|
|
86
45
|
config.array = [];
|
|
46
|
+
waitingStates.forEach(callback => callback());
|
|
47
|
+
waitingStates.length = 0;
|
|
87
48
|
}
|
|
88
49
|
});
|
|
89
50
|
export function getStateValue(
|
|
@@ -97,11 +58,11 @@ state) {
|
|
|
97
58
|
const [oldValue] = oldState;
|
|
98
59
|
const [checkValue] = callback(oldValue); // set back to original value
|
|
99
60
|
if (checkValue !== StateEchoBack) {
|
|
100
|
-
const message = 'State property not used correctly.\n\n' +
|
|
101
|
-
'For "let" state use `let name = state(default
|
|
102
|
-
'For "const" state use `const name = state(default)`\n\n' +
|
|
103
|
-
'Problem
|
|
104
|
-
|
|
61
|
+
const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
|
|
62
|
+
'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
|
|
63
|
+
'For "const" state use `const name = state(default)()`\n\n' +
|
|
64
|
+
'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
|
|
65
|
+
console.error(message, { state, callback, oldState, oldValue, checkValue });
|
|
105
66
|
throw new Error(message);
|
|
106
67
|
}
|
|
107
68
|
return oldValue;
|
|
@@ -111,14 +72,21 @@ export class StateEchoBack {
|
|
|
111
72
|
function initState(tagSupport) {
|
|
112
73
|
const state = tagSupport.memory.state;
|
|
113
74
|
const config = setUse.memory.stateConfig;
|
|
75
|
+
// TODO: This guard may no longer be needed
|
|
114
76
|
if (config.rearray.length) {
|
|
115
77
|
const message = 'last array not cleared';
|
|
116
78
|
console.error(message, {
|
|
117
79
|
config,
|
|
118
80
|
component: tagSupport.templater?.wrapper.original,
|
|
119
81
|
state,
|
|
82
|
+
expectedClearArray: config.rearray,
|
|
83
|
+
});
|
|
84
|
+
throw new StateMismatchError(message, {
|
|
85
|
+
config,
|
|
86
|
+
component: tagSupport.templater?.wrapper.original,
|
|
87
|
+
state,
|
|
88
|
+
expectedClearArray: config.rearray,
|
|
120
89
|
});
|
|
121
|
-
throw message;
|
|
122
90
|
}
|
|
123
91
|
// TODO: this maybe redundant and not needed
|
|
124
92
|
config.rearray = []; // .length = 0
|
|
@@ -126,4 +94,32 @@ function initState(tagSupport) {
|
|
|
126
94
|
config.rearray.push(...state.newest);
|
|
127
95
|
}
|
|
128
96
|
}
|
|
129
|
-
|
|
97
|
+
/** Used for variables that need to remain the same variable during render passes */
|
|
98
|
+
export function set(defaultValue) {
|
|
99
|
+
const config = setUse.memory.stateConfig;
|
|
100
|
+
let getSetMethod;
|
|
101
|
+
const restate = config.rearray[config.array.length];
|
|
102
|
+
if (restate) {
|
|
103
|
+
let oldValue = getStateValue(restate);
|
|
104
|
+
getSetMethod = ((x) => [oldValue, oldValue = x]);
|
|
105
|
+
const push = {
|
|
106
|
+
callback: getSetMethod,
|
|
107
|
+
lastValue: oldValue,
|
|
108
|
+
defaultValue: restate.defaultValue,
|
|
109
|
+
};
|
|
110
|
+
config.array.push(push);
|
|
111
|
+
return oldValue;
|
|
112
|
+
}
|
|
113
|
+
// State first time run
|
|
114
|
+
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
115
|
+
let initValue = defaultFn();
|
|
116
|
+
getSetMethod = ((x) => [initValue, initValue = x]);
|
|
117
|
+
const push = {
|
|
118
|
+
callback: getSetMethod,
|
|
119
|
+
lastValue: initValue,
|
|
120
|
+
defaultValue: initValue,
|
|
121
|
+
};
|
|
122
|
+
config.array.push(push);
|
|
123
|
+
return initValue;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=set.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.function.js","sourceRoot":"","sources":["../ts/set.function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getStateValue, makeStateResult } from "./set.function.js";
|
|
2
|
+
import { setUse } from "./setUse.function.js";
|
|
3
|
+
/** Used for variables that need to remain the same variable during render passes */
|
|
4
|
+
export function setLet(defaultValue) {
|
|
5
|
+
const config = setUse.memory.stateConfig;
|
|
6
|
+
let getSetMethod;
|
|
7
|
+
const restate = config.rearray[config.array.length];
|
|
8
|
+
if (restate) {
|
|
9
|
+
let oldValue = getStateValue(restate);
|
|
10
|
+
getSetMethod = ((x) => [oldValue, oldValue = x]);
|
|
11
|
+
const push = {
|
|
12
|
+
callback: getSetMethod,
|
|
13
|
+
lastValue: oldValue,
|
|
14
|
+
defaultValue: restate.defaultValue,
|
|
15
|
+
};
|
|
16
|
+
config.array.push(push);
|
|
17
|
+
return makeStateResult(oldValue, push);
|
|
18
|
+
}
|
|
19
|
+
// State first time run
|
|
20
|
+
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
21
|
+
let initValue = defaultFn();
|
|
22
|
+
getSetMethod = ((x) => [initValue, initValue = x]);
|
|
23
|
+
const push = {
|
|
24
|
+
callback: getSetMethod,
|
|
25
|
+
lastValue: initValue,
|
|
26
|
+
defaultValue: initValue,
|
|
27
|
+
};
|
|
28
|
+
config.array.push(push);
|
|
29
|
+
return makeStateResult(initValue, push);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=setLet.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setLet.function.js","sourceRoot":"","sources":["../ts/setLet.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,oFAAoF;AACpF,MAAM,UAAU,MAAM,CACpB,YAA2B;IAE3B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,IAAI,YAA4B,CAAA;IAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAE1C,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAuB;YAC/B,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;IACtF,IAAI,SAAS,GAAG,SAAS,EAAE,CAAA;IAE3B,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;IACrD,MAAM,IAAI,GAAuB;QAC/B,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,SAAS;KACxB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getStateValue } from "./set.function.js";
|
|
2
|
+
import { setUse } from "./setUse.function.js";
|
|
3
|
+
/** Used for variables that need to remain the same variable during render passes */
|
|
4
|
+
export function setProp(getSet) {
|
|
5
|
+
const config = setUse.memory.stateConfig;
|
|
6
|
+
const [propValue] = getSet(undefined);
|
|
7
|
+
getSet(propValue); // restore original value instead of undefined
|
|
8
|
+
const restate = config.rearray[config.array.length];
|
|
9
|
+
if (restate) {
|
|
10
|
+
let watchValue = restate.watch;
|
|
11
|
+
let oldValue = getStateValue(restate);
|
|
12
|
+
const push = {
|
|
13
|
+
callback: getSet,
|
|
14
|
+
lastValue: oldValue,
|
|
15
|
+
watch: restate.watch,
|
|
16
|
+
};
|
|
17
|
+
// has the prop value changed?
|
|
18
|
+
if (propValue != watchValue) {
|
|
19
|
+
push.watch = propValue;
|
|
20
|
+
oldValue = push.lastValue = propValue;
|
|
21
|
+
}
|
|
22
|
+
config.array.push(push);
|
|
23
|
+
getSet(oldValue);
|
|
24
|
+
return oldValue;
|
|
25
|
+
}
|
|
26
|
+
const push = {
|
|
27
|
+
callback: getSet,
|
|
28
|
+
lastValue: propValue,
|
|
29
|
+
watch: propValue,
|
|
30
|
+
};
|
|
31
|
+
config.array.push(push);
|
|
32
|
+
return propValue;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=setProp.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setProp.function.js","sourceRoot":"","sources":["../ts/setProp.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AAChH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,oFAAoF;AACpF,MAAM,UAAU,OAAO,CACrB,MAAmB;IAEnB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAEhD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAc,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,8CAA8C;IAEhE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,UAAU,GAAG,OAAO,CAAC,KAAU,CAAA;QACnC,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAE1C,MAAM,IAAI,GAAuB;YAC/B,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAA;QAED,8BAA8B;QAC9B,IAAG,SAAS,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QACvC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEhB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAuB;QAC/B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,SAAS;KACjB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/js/setUse.function.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
2
|
import { TagSupport } from "./TagSupport.class.js";
|
|
3
|
-
import { Config } from "./
|
|
3
|
+
import { Config } from "./set.function.js";
|
|
4
4
|
interface TagUse {
|
|
5
5
|
beforeRender: (tagSupport: TagSupport, ownerTag: Tag) => void;
|
|
6
6
|
beforeRedraw: (tagSupport: TagSupport, tag: Tag) => void;
|
package/js/state.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export type StateConfig = (x
|
|
2
|
-
type StateConfigItem = {
|
|
3
|
-
callback?: StateConfig
|
|
1
|
+
export type StateConfig<T> = (x: T) => [T, T];
|
|
2
|
+
type StateConfigItem<T> = {
|
|
3
|
+
callback?: StateConfig<T>;
|
|
4
4
|
lastValue?: any;
|
|
5
5
|
defaultValue?: any;
|
|
6
6
|
};
|
|
7
|
-
export type StateConfigArray = StateConfigItem[];
|
|
7
|
+
export type StateConfigArray = StateConfigItem<any>[];
|
|
8
8
|
export type Config = {
|
|
9
9
|
array: StateConfigArray;
|
|
10
10
|
rearray: StateConfigArray;
|
|
@@ -12,10 +12,11 @@ export type Config = {
|
|
|
12
12
|
export type State = {
|
|
13
13
|
newest: StateConfigArray;
|
|
14
14
|
};
|
|
15
|
+
export type GetSet<T> = (y: T) => [T, T];
|
|
15
16
|
/** Used for variables that need to remain the same variable during render passes */
|
|
16
|
-
export declare function state<T>(defaultValue: T | (() => T)): (
|
|
17
|
+
export declare function state<T>(defaultValue: T | (() => T)): ((getSet?: GetSet<T>) => T);
|
|
17
18
|
export declare function onNextStateOnly(callback: () => unknown): void;
|
|
18
|
-
export declare function getStateValue(state: StateConfigItem): any;
|
|
19
|
+
export declare function getStateValue<T>(state: StateConfigItem<T>): any;
|
|
19
20
|
export declare class StateEchoBack {
|
|
20
21
|
}
|
|
21
22
|
export {};
|
package/js/state.js
CHANGED
|
@@ -12,32 +12,34 @@ export function state(defaultValue) {
|
|
|
12
12
|
const restate = config.rearray[config.array.length];
|
|
13
13
|
if (restate) {
|
|
14
14
|
let oldValue = getStateValue(restate);
|
|
15
|
-
getSetMethod = (x => [oldValue, oldValue = x]);
|
|
15
|
+
getSetMethod = ((x) => [oldValue, oldValue = x]);
|
|
16
16
|
const push = {
|
|
17
17
|
callback: getSetMethod,
|
|
18
18
|
lastValue: oldValue,
|
|
19
19
|
defaultValue: restate.defaultValue,
|
|
20
20
|
};
|
|
21
21
|
config.array.push(push);
|
|
22
|
-
return (
|
|
23
|
-
push.callback = y || (x => [oldValue, oldValue = x]);
|
|
24
|
-
return oldValue;
|
|
25
|
-
};
|
|
22
|
+
return makeStateResult(oldValue, push);
|
|
26
23
|
}
|
|
24
|
+
// State first time run
|
|
27
25
|
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
28
26
|
let initValue = defaultFn();
|
|
29
|
-
getSetMethod = (x => [initValue, initValue = x]);
|
|
27
|
+
getSetMethod = ((x) => [initValue, initValue = x]);
|
|
30
28
|
const push = {
|
|
31
29
|
callback: getSetMethod,
|
|
32
30
|
lastValue: initValue,
|
|
33
31
|
defaultValue: initValue,
|
|
34
32
|
};
|
|
35
33
|
config.array.push(push);
|
|
34
|
+
return makeStateResult(initValue, push);
|
|
35
|
+
}
|
|
36
|
+
function makeStateResult(initValue, push) {
|
|
36
37
|
// return initValue
|
|
37
|
-
|
|
38
|
+
const result = (y) => {
|
|
38
39
|
push.callback = y || (x => [initValue, initValue = x]);
|
|
39
40
|
return initValue;
|
|
40
41
|
};
|
|
42
|
+
return result;
|
|
41
43
|
}
|
|
42
44
|
const waitingStates = [];
|
|
43
45
|
export function onNextStateOnly(callback) {
|
|
@@ -87,11 +89,11 @@ state) {
|
|
|
87
89
|
const [oldValue] = oldState;
|
|
88
90
|
const [checkValue] = callback(oldValue); // set back to original value
|
|
89
91
|
if (checkValue !== StateEchoBack) {
|
|
90
|
-
const message = 'State property not used correctly.\n\n' +
|
|
91
|
-
'For "let" state use `let name = state(default
|
|
92
|
-
'For "const" state use `const name = state(default)`\n\n' +
|
|
93
|
-
'Problem
|
|
94
|
-
|
|
92
|
+
const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
|
|
93
|
+
'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
|
|
94
|
+
'For "const" state use `const name = state(default)()`\n\n' +
|
|
95
|
+
'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
|
|
96
|
+
console.error(message, { state, callback, oldState, oldValue, checkValue });
|
|
95
97
|
throw new Error(message);
|
|
96
98
|
}
|
|
97
99
|
return oldValue;
|
package/js/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAuB7C,eAAe;AACf,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG;IAC1B,KAAK,EAAE,EAAsB,EAAE,mCAAmC;IAClE,OAAO,EAAE,EAAsB,EAAE,iDAAiD;CACzE,CAAA;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"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"}
|
package/js/tag.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
|
-
import { TagComponent } from "./templater.utils.js";
|
|
3
2
|
import { ValueSubject } from "./ValueSubject.js";
|
|
4
3
|
export type TagChildren = ValueSubject<Tag[]>;
|
|
5
4
|
export type TagChildrenInput = Tag[] | Tag | TagChildren;
|
|
6
|
-
export
|
|
5
|
+
export type TagComponentArg<T extends any[]> = (...args: T) => Tag;
|
|
6
|
+
type FirstArgOptional<T extends any[]> = T['length'] extends 0 ? true : false;
|
|
7
|
+
export type TagComponentBase<T extends any[]> = (arg: FirstArgOptional<T> extends true ? (T[0] | void) : T[0], children?: TagChildrenInput) => Tag;
|
|
8
|
+
export declare const tags: TagComponentBase<any>[];
|
|
9
|
+
export type TagComponent = TagComponentBase<[any?, TagChildren?]> | TagComponentBase<[]>;
|
|
7
10
|
/** Wraps a tag component in a state manager and always push children to last argument as any array */
|
|
8
|
-
export declare function tag<T>(tagComponent:
|
|
11
|
+
export declare function tag<T extends any[]>(tagComponent: TagComponentArg<T>): (TagComponentBase<T>);
|
|
12
|
+
export {};
|
package/js/tag.js
CHANGED
|
@@ -3,9 +3,12 @@ import { setUse } from "./setUse.function.js";
|
|
|
3
3
|
import { TemplaterResult, alterProps } from "./templater.utils.js";
|
|
4
4
|
import { ValueSubject } from "./ValueSubject.js";
|
|
5
5
|
import { runTagCallback } from "./bindSubjectCallback.function.js";
|
|
6
|
+
import { deepClone } from "./deepFunctions.js";
|
|
7
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
6
8
|
export const tags = [];
|
|
7
9
|
let tagCount = 0;
|
|
8
10
|
/** Wraps a tag component in a state manager and always push children to last argument as any array */
|
|
11
|
+
// export function tag<T>(a: T): T;
|
|
9
12
|
export function tag(tagComponent) {
|
|
10
13
|
const result = (function tagWrapper(props, children) {
|
|
11
14
|
const isPropTag = isTagInstance(props) || isTagArray(props);
|
|
@@ -14,16 +17,47 @@ export function tag(tagComponent) {
|
|
|
14
17
|
props = undefined;
|
|
15
18
|
}
|
|
16
19
|
const { childSubject, madeSubject } = kidsToTagArraySubject(children);
|
|
20
|
+
childSubject.isChildSubject = true;
|
|
17
21
|
const templater = new TemplaterResult(props, childSubject);
|
|
18
|
-
if (!isPropTag) {
|
|
19
|
-
// wrap props that are functions
|
|
20
|
-
alterProps(props, templater);
|
|
21
|
-
}
|
|
22
22
|
function innerTagWrap() {
|
|
23
23
|
const originalFunction = innerTagWrap.original;
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
24
|
+
const oldTagSetup = templater.tagSupport;
|
|
25
|
+
const oldest = templater.oldest;
|
|
26
|
+
let props = oldTagSetup.propsConfig.latest;
|
|
27
|
+
let castedProps = alterProps(props, templater);
|
|
28
|
+
// CALL ORIGINAL COMPONENT FUNCTION
|
|
29
|
+
const tag = originalFunction(castedProps, childSubject);
|
|
30
|
+
if (oldTagSetup.mutatingRender === TagSupport.prototype.mutatingRender) {
|
|
31
|
+
oldTagSetup.oldest = tag;
|
|
32
|
+
// tag.tagSupport = oldTagSetup
|
|
33
|
+
oldTagSetup.mutatingRender = () => {
|
|
34
|
+
const exit = oldTagSetup.renderExistingTag(tag, templater);
|
|
35
|
+
if (exit) {
|
|
36
|
+
return tag;
|
|
37
|
+
}
|
|
38
|
+
if (tag.ownerTag) {
|
|
39
|
+
const newest = tag.ownerTag.tagSupport.render();
|
|
40
|
+
tag.ownerTag.tagSupport.newest = newest;
|
|
41
|
+
return tag;
|
|
42
|
+
}
|
|
43
|
+
return tag;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
tag.tagSupport = new TagSupport(templater, oldTagSetup.children);
|
|
47
|
+
const clonedProps = deepClone(castedProps); // castedProps
|
|
48
|
+
tag.tagSupport.propsConfig = {
|
|
49
|
+
latest: props, // castedProps
|
|
50
|
+
latestCloned: clonedProps,
|
|
51
|
+
clonedProps: clonedProps,
|
|
52
|
+
lastClonedKidValues: tag.tagSupport.propsConfig.lastClonedKidValues,
|
|
53
|
+
};
|
|
54
|
+
tag.tagSupport.memory = oldTagSetup.memory;
|
|
55
|
+
tag.tagSupport.mutatingRender = oldTagSetup.mutatingRender;
|
|
56
|
+
oldTagSetup.newest = tag;
|
|
57
|
+
oldTagSetup.propsConfig = { ...tag.tagSupport.propsConfig };
|
|
58
|
+
if (oldest) {
|
|
59
|
+
oldest.tagSupport.propsConfig = { ...tag.tagSupport.propsConfig };
|
|
60
|
+
}
|
|
27
61
|
if (madeSubject) {
|
|
28
62
|
childSubject.value.forEach(kid => {
|
|
29
63
|
kid.values.forEach((value, index) => {
|
|
@@ -77,7 +111,7 @@ function updateResult(result, tagComponent) {
|
|
|
77
111
|
function updateComponent(tagComponent) {
|
|
78
112
|
tagComponent.tags = tags;
|
|
79
113
|
tagComponent.setUse = setUse;
|
|
80
|
-
tagComponent.tagIndex = ++tagCount;
|
|
114
|
+
tagComponent.tagIndex = ++tagCount; // needed for things like HMR
|
|
81
115
|
}
|
|
82
116
|
class NoPropsGiven {
|
|
83
117
|
}
|
package/js/tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"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"}
|
package/js/tagElement.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TagSupport } from "./TagSupport.class.js";
|
|
2
|
-
import {
|
|
2
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
3
3
|
import { Tag } from "./Tag.class.js";
|
|
4
|
+
import { TagComponent } from "./tag.js";
|
|
4
5
|
export declare function tagElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
|
|
5
6
|
element: HTMLElement | Element, props: unknown): {
|
|
6
7
|
tag: Tag;
|
package/js/tagElement.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
2
|
+
import { providersChangeCheck } from "./provider.utils.js";
|
|
2
3
|
const appElements = [];
|
|
3
4
|
export function tagElement(app, // (...args: unknown[]) => TemplaterResult,
|
|
4
5
|
element, props) {
|
|
@@ -14,8 +15,10 @@ element, props) {
|
|
|
14
15
|
// have a function setup and call the tagWrapper with (props, {update, async, on})
|
|
15
16
|
const result = applyTagUpdater(wrapper);
|
|
16
17
|
const { tag, tagSupport } = result;
|
|
18
|
+
// wrapper.tagSupport = tagSupport
|
|
17
19
|
tag.appElement = element;
|
|
18
|
-
|
|
20
|
+
tag.tagSupport.oldest = tag;
|
|
21
|
+
addAppTagRender(tag.tagSupport, tag);
|
|
19
22
|
const templateElm = document.createElement('template');
|
|
20
23
|
templateElm.setAttribute('tag-detail', 'app-template-placeholder');
|
|
21
24
|
element.appendChild(templateElm);
|
|
@@ -29,22 +32,27 @@ export function applyTagUpdater(wrapper) {
|
|
|
29
32
|
runBeforeRender(tagSupport, undefined);
|
|
30
33
|
// Call the apps function for our tag templater
|
|
31
34
|
const tag = wrapper.wrapper();
|
|
32
|
-
|
|
33
|
-
runAfterRender(tag.tagSupport, tag);
|
|
35
|
+
runAfterRender(tagSupport, tag);
|
|
34
36
|
return { tag, tagSupport };
|
|
35
37
|
}
|
|
36
38
|
/** Overwrites arguments.tagSupport.mutatingRender */
|
|
37
39
|
export function addAppTagRender(tagSupport, tag) {
|
|
38
|
-
let lastTag;
|
|
40
|
+
let lastTag = tag;
|
|
39
41
|
tagSupport.mutatingRender = () => {
|
|
42
|
+
const preRenderCount = tagSupport.memory.renderCount;
|
|
43
|
+
providersChangeCheck(tag);
|
|
44
|
+
// When the providers were checked, a render to myself occurred and I do not need to re-render again
|
|
45
|
+
if (preRenderCount !== tagSupport.memory.renderCount) {
|
|
46
|
+
return lastTag;
|
|
47
|
+
}
|
|
40
48
|
runBeforeRedraw(tag.tagSupport, tag);
|
|
41
49
|
const templater = tagSupport.templater; // wrapper
|
|
42
50
|
const fromTag = lastTag = templater.wrapper();
|
|
43
|
-
tagSupport.
|
|
44
|
-
tagSupport.
|
|
45
|
-
|
|
51
|
+
fromTag.tagSupport.memory = tagSupport.memory;
|
|
52
|
+
tagSupport.propsConfig = { ...fromTag.tagSupport.propsConfig };
|
|
53
|
+
tag.tagSupport.newest = fromTag;
|
|
46
54
|
runAfterRender(tag.tagSupport, tag);
|
|
47
|
-
|
|
55
|
+
tagSupport.oldest.updateByTag(fromTag);
|
|
48
56
|
tagSupport.newest = fromTag;
|
|
49
57
|
return lastTag;
|
|
50
58
|
};
|
package/js/tagElement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../ts/tagElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../ts/tagElement.ts"],"names":[],"mappings":"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"}
|
package/js/templater.utils.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
2
|
import { TagSupport } from "./TagSupport.class.js";
|
|
3
3
|
import { Props } from "./Props.js";
|
|
4
|
-
import { ValueSubject } from "./ValueSubject.js";
|
|
5
4
|
import { TagChildren } from "./tag.js";
|
|
6
5
|
export type Wrapper = (() => Tag) & {
|
|
7
6
|
original: () => Tag;
|
|
@@ -24,6 +23,4 @@ export declare class TemplaterResult {
|
|
|
24
23
|
export interface TemplateRedraw extends TemplaterResult {
|
|
25
24
|
redraw: () => Tag | undefined;
|
|
26
25
|
}
|
|
27
|
-
export type TagComponent = (props: Props, // props or children
|
|
28
|
-
children?: ValueSubject<Tag[]>) => Tag;
|
|
29
26
|
export declare function alterProps(props: Props, templater: TemplaterResult): any;
|