taggedjs 2.3.26 → 2.3.28
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/CustomError.d.ts +7 -0
- package/js/CustomError.js +9 -0
- package/js/CustomError.js.map +1 -0
- package/js/Errors.d.ts +14 -0
- package/js/Errors.js +21 -0
- package/js/Errors.js.map +1 -0
- package/js/Errors2.d.ts +14 -0
- package/js/Errors2.js +21 -0
- package/js/Errors2.js.map +1 -0
- package/js/Subject.d.ts +1 -1
- package/js/Tag.class.d.ts +5 -4
- package/js/Tag.class.js +8 -9
- package/js/Tag.class.js.map +1 -1
- package/js/Tag.utils.d.ts +2 -2
- package/js/Tag.utils.js +2 -14
- package/js/Tag.utils.js.map +1 -1
- package/js/TagSupport.class.d.ts +27 -0
- package/js/TagSupport.class.js +157 -0
- package/js/TagSupport.class.js.map +1 -0
- package/js/ValueSubject.d.ts +2 -2
- package/js/ValueSubject.js.map +1 -1
- package/js/bindSubjectCallback.function.d.ts +5 -3
- package/js/bindSubjectCallback.function.js +19 -12
- package/js/bindSubjectCallback.function.js.map +1 -1
- package/js/deepFunctions.d.ts +1 -1
- package/js/deepFunctions.js +20 -6
- package/js/deepFunctions.js.map +1 -1
- package/js/gateway/tagGateway.utils.js +14 -4
- package/js/gateway/tagGateway.utils.js.map +1 -1
- package/js/getTagSupport.d.ts +1 -2
- package/js/getTagSupport.js +26 -21
- package/js/getTagSupport.js.map +1 -1
- package/js/index.d.ts +13 -5
- package/js/index.js +12 -6
- package/js/index.js.map +1 -1
- package/js/isInstance.d.ts +3 -2
- package/js/isInstance.js +3 -0
- package/js/isInstance.js.map +1 -1
- package/js/processSubjectComponent.function.js +6 -5
- package/js/processSubjectComponent.function.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +0 -1
- package/js/processSubjectValue.function.js +5 -6
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTagArray.js +15 -9
- package/js/processTagArray.js.map +1 -1
- package/js/redrawTag.function.js +3 -2
- package/js/redrawTag.function.js.map +1 -1
- package/js/setUse.function.d.ts +1 -1
- package/js/state.d.ts +1 -0
- package/js/state.js +21 -3
- package/js/state.js.map +1 -1
- package/js/tag.d.ts +5 -4
- package/js/tag.js +48 -9
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +1 -1
- package/js/tagElement.js +6 -14
- package/js/tagElement.js.map +1 -1
- package/js/tagRunner.d.ts +1 -1
- package/js/templater.utils.d.ts +6 -4
- package/js/templater.utils.js +8 -6
- package/js/templater.utils.js.map +1 -1
- package/js/updateExistingTag.function.d.ts +4 -0
- package/js/updateExistingTag.function.js +21 -0
- package/js/updateExistingTag.function.js.map +1 -0
- package/js/updateExistingTagComponent.function.d.ts +4 -0
- package/js/updateExistingTagComponent.function.js +57 -0
- package/js/updateExistingTagComponent.function.js.map +1 -0
- package/js/updateExistingValue.function.d.ts +8 -0
- package/js/updateExistingValue.function.js +83 -0
- package/js/updateExistingValue.function.js.map +1 -0
- package/js/updateTag.utils.d.ts +1 -0
- package/js/updateTag.utils.js +5 -69
- package/js/updateTag.utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processTagArray.js","sourceRoot":"","sources":["../ts/processTagArray.ts"],"names":[],"mappings":"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"}
|
package/js/redrawTag.function.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
2
2
|
export function redrawTag(existingTag, templater, // latest tag function to call for rendering
|
|
3
3
|
ownerTag) {
|
|
4
|
-
|
|
4
|
+
// TODO: The or condition here may not be needed since its an obvious "re"draw
|
|
5
|
+
const tagSupport = existingTag?.tagSupport || new TagSupport(templater, templater.tagSupport.children);
|
|
5
6
|
const result = templater.renderWithSupport(tagSupport, existingTag, ownerTag);
|
|
6
7
|
return result;
|
|
7
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redrawTag.function.js","sourceRoot":"","sources":["../ts/redrawTag.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"redrawTag.function.js","sourceRoot":"","sources":["../ts/redrawTag.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAIlD,MAAM,UAAU,SAAS,CACvB,WAA4B,EAC5B,SAA0B,EAAE,4CAA4C;AACxE,QAAc;IAEd,8EAA8E;IAC9E,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,IAAI,IAAI,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAEtG,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CACxC,UAAU,EACV,WAAW,EACX,QAAQ,CACT,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/js/setUse.function.d.ts
CHANGED
package/js/state.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type State = {
|
|
|
14
14
|
};
|
|
15
15
|
/** Used for variables that need to remain the same variable during render passes */
|
|
16
16
|
export declare function state<T>(defaultValue: T | (() => T)): (x?: (y: T) => [T, T]) => T;
|
|
17
|
+
export declare function onNextStateOnly(callback: () => unknown): void;
|
|
17
18
|
export declare function getStateValue(state: StateConfigItem): any;
|
|
18
19
|
export declare class StateEchoBack {
|
|
19
20
|
}
|
package/js/state.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { StateMismatchError } from "./errors.js";
|
|
1
2
|
import { setUse } from "./setUse.function.js";
|
|
2
3
|
// TODO: rename
|
|
3
4
|
setUse.memory.stateConfig = {
|
|
@@ -38,6 +39,15 @@ export function state(defaultValue) {
|
|
|
38
39
|
return initValue;
|
|
39
40
|
};
|
|
40
41
|
}
|
|
42
|
+
const waitingStates = [];
|
|
43
|
+
export function onNextStateOnly(callback) {
|
|
44
|
+
const config = setUse.memory.stateConfig;
|
|
45
|
+
if (!config.rearray.length) {
|
|
46
|
+
callback();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
waitingStates.push(callback);
|
|
50
|
+
}
|
|
41
51
|
setUse({
|
|
42
52
|
beforeRender: (tagSupport) => initState(tagSupport),
|
|
43
53
|
beforeRedraw: (tagSupport) => initState(tagSupport),
|
|
@@ -47,12 +57,12 @@ setUse({
|
|
|
47
57
|
if (config.rearray.length) {
|
|
48
58
|
if (config.rearray.length !== config.array.length) {
|
|
49
59
|
const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
|
|
50
|
-
|
|
60
|
+
const error = new StateMismatchError(message, {
|
|
51
61
|
oldStates: config.array,
|
|
52
62
|
newStates: config.rearray,
|
|
53
63
|
component: tagSupport.templater?.wrapper.original
|
|
54
64
|
});
|
|
55
|
-
throw
|
|
65
|
+
throw error;
|
|
56
66
|
}
|
|
57
67
|
}
|
|
58
68
|
// config.rearray.length = 0 // clean up any previous runs
|
|
@@ -62,6 +72,8 @@ setUse({
|
|
|
62
72
|
state.newest = [...config.array];
|
|
63
73
|
// config.array.length = 0
|
|
64
74
|
config.array = [];
|
|
75
|
+
waitingStates.forEach(callback => callback());
|
|
76
|
+
waitingStates.length = 0;
|
|
65
77
|
}
|
|
66
78
|
});
|
|
67
79
|
export function getStateValue(
|
|
@@ -96,8 +108,14 @@ function initState(tagSupport) {
|
|
|
96
108
|
config,
|
|
97
109
|
component: tagSupport.templater?.wrapper.original,
|
|
98
110
|
state,
|
|
111
|
+
expectedClearArray: config.rearray,
|
|
112
|
+
});
|
|
113
|
+
throw new StateMismatchError(message, {
|
|
114
|
+
config,
|
|
115
|
+
component: tagSupport.templater?.wrapper.original,
|
|
116
|
+
state,
|
|
117
|
+
expectedClearArray: config.rearray,
|
|
99
118
|
});
|
|
100
|
-
throw message;
|
|
101
119
|
}
|
|
102
120
|
// TODO: this maybe redundant and not needed
|
|
103
121
|
config.rearray = []; // .length = 0
|
package/js/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"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"}
|
package/js/tag.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
2
|
import { TagComponent } from "./templater.utils.js";
|
|
3
|
+
import { ValueSubject } from "./ValueSubject.js";
|
|
4
|
+
export type TagChildren = ValueSubject<Tag[]>;
|
|
5
|
+
export type TagChildrenInput = Tag[] | Tag | TagChildren;
|
|
3
6
|
export declare const tags: TagComponent[];
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
export declare function tag<T>(tagComponent: T | TagComponent): T;
|
|
7
|
+
/** 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: (((props: T, children: TagChildren) => Tag) | ((props: T) => Tag) | (() => Tag))): ((props?: T, children?: TagChildrenInput) => Tag);
|
package/js/tag.js
CHANGED
|
@@ -1,23 +1,47 @@
|
|
|
1
|
-
import { isTagInstance } from "./isInstance.js";
|
|
1
|
+
import { isSubjectInstance, isTagArray, isTagInstance } from "./isInstance.js";
|
|
2
2
|
import { setUse } from "./setUse.function.js";
|
|
3
|
-
import { TemplaterResult,
|
|
3
|
+
import { TemplaterResult, alterProps } from "./templater.utils.js";
|
|
4
|
+
import { ValueSubject } from "./ValueSubject.js";
|
|
5
|
+
import { runTagCallback } from "./bindSubjectCallback.function.js";
|
|
4
6
|
export const tags = [];
|
|
5
7
|
let tagCount = 0;
|
|
8
|
+
/** Wraps a tag component in a state manager and always push children to last argument as any array */
|
|
6
9
|
export function tag(tagComponent) {
|
|
7
10
|
const result = (function tagWrapper(props, children) {
|
|
8
|
-
const isPropTag = isTagInstance(props);
|
|
9
|
-
const templater = new TemplaterResult(props);
|
|
10
|
-
const newProps = getNewProps(props, templater);
|
|
11
|
-
let argProps = newProps;
|
|
11
|
+
const isPropTag = isTagInstance(props) || isTagArray(props);
|
|
12
12
|
if (isPropTag) {
|
|
13
13
|
children = props;
|
|
14
|
-
|
|
14
|
+
props = undefined;
|
|
15
|
+
}
|
|
16
|
+
const { childSubject, madeSubject } = kidsToTagArraySubject(children);
|
|
17
|
+
const templater = new TemplaterResult(props, childSubject);
|
|
18
|
+
if (!isPropTag) {
|
|
19
|
+
// wrap props that are functions
|
|
20
|
+
alterProps(props, templater);
|
|
15
21
|
}
|
|
16
22
|
function innerTagWrap() {
|
|
17
23
|
const originalFunction = innerTagWrap.original;
|
|
18
|
-
const props = templater.tagSupport.props;
|
|
19
|
-
const tag = originalFunction(props,
|
|
24
|
+
const props = templater.tagSupport.props;
|
|
25
|
+
const tag = originalFunction(props, childSubject);
|
|
20
26
|
tag.setSupport(templater.tagSupport);
|
|
27
|
+
if (madeSubject) {
|
|
28
|
+
childSubject.value.forEach(kid => {
|
|
29
|
+
kid.values.forEach((value, index) => {
|
|
30
|
+
if (!(value instanceof Function)) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (kid.values[index].isChildOverride) {
|
|
34
|
+
return; // already overwritten
|
|
35
|
+
}
|
|
36
|
+
// all functions need to report to me
|
|
37
|
+
kid.values[index] = function (...args) {
|
|
38
|
+
runTagCallback(value, tag.ownerTag, this, args);
|
|
39
|
+
// runTagCallback(value, tag, this, args)
|
|
40
|
+
};
|
|
41
|
+
kid.values[index].isChildOverride = true;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
}
|
|
21
45
|
return tag;
|
|
22
46
|
}
|
|
23
47
|
innerTagWrap.original = tagComponent;
|
|
@@ -31,6 +55,21 @@ export function tag(tagComponent) {
|
|
|
31
55
|
tags.push(tagComponent);
|
|
32
56
|
return result;
|
|
33
57
|
}
|
|
58
|
+
function kidsToTagArraySubject(children) {
|
|
59
|
+
if (isSubjectInstance(children)) {
|
|
60
|
+
return { childSubject: children, madeSubject: false };
|
|
61
|
+
}
|
|
62
|
+
const kidArray = children;
|
|
63
|
+
if (isTagArray(kidArray)) {
|
|
64
|
+
return { childSubject: new ValueSubject(children), madeSubject: true };
|
|
65
|
+
}
|
|
66
|
+
const kid = children;
|
|
67
|
+
if (kid) {
|
|
68
|
+
kid.arrayValue = 0;
|
|
69
|
+
return { childSubject: new ValueSubject([kid]), madeSubject: true };
|
|
70
|
+
}
|
|
71
|
+
return { childSubject: new ValueSubject([]), madeSubject: true };
|
|
72
|
+
}
|
|
34
73
|
function updateResult(result, tagComponent) {
|
|
35
74
|
result.isTag = true;
|
|
36
75
|
result.original = tagComponent;
|
package/js/tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"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"}
|
package/js/tagElement.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TagSupport } from "./
|
|
1
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
2
2
|
import { TagComponent, TemplaterResult } from "./templater.utils.js";
|
|
3
3
|
import { Tag } from "./Tag.class.js";
|
|
4
4
|
export declare function tagElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
|
package/js/tagElement.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { runBeforeRender } from "./tagRunner.js";
|
|
1
|
+
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
2
2
|
const appElements = [];
|
|
3
3
|
export function tagElement(app, // (...args: unknown[]) => TemplaterResult,
|
|
4
4
|
element, props) {
|
|
@@ -16,7 +16,6 @@ element, props) {
|
|
|
16
16
|
const { tag, tagSupport } = result;
|
|
17
17
|
tag.appElement = element;
|
|
18
18
|
addAppTagRender(tagSupport, tag);
|
|
19
|
-
// const context = tag.updateValues(tag.values)
|
|
20
19
|
const templateElm = document.createElement('template');
|
|
21
20
|
templateElm.setAttribute('tag-detail', 'app-template-placeholder');
|
|
22
21
|
element.appendChild(templateElm);
|
|
@@ -26,33 +25,26 @@ element, props) {
|
|
|
26
25
|
return { tag, tags: app.original.tags };
|
|
27
26
|
}
|
|
28
27
|
export function applyTagUpdater(wrapper) {
|
|
29
|
-
const tagSupport = wrapper.tagSupport;
|
|
28
|
+
const tagSupport = wrapper.tagSupport;
|
|
30
29
|
runBeforeRender(tagSupport, undefined);
|
|
31
30
|
// Call the apps function for our tag templater
|
|
32
|
-
|
|
33
|
-
const tag = wrapper.wrapper(); // templater.wrapper()
|
|
31
|
+
const tag = wrapper.wrapper();
|
|
34
32
|
tag.tagSupport = tagSupport;
|
|
35
|
-
tag.
|
|
33
|
+
runAfterRender(tag.tagSupport, tag);
|
|
36
34
|
return { tag, tagSupport };
|
|
37
35
|
}
|
|
38
36
|
/** Overwrites arguments.tagSupport.mutatingRender */
|
|
39
37
|
export function addAppTagRender(tagSupport, tag) {
|
|
40
38
|
let lastTag;
|
|
41
39
|
tagSupport.mutatingRender = () => {
|
|
42
|
-
tag.
|
|
40
|
+
runBeforeRedraw(tag.tagSupport, tag);
|
|
43
41
|
const templater = tagSupport.templater; // wrapper
|
|
44
42
|
const fromTag = lastTag = templater.wrapper();
|
|
45
|
-
// tagSupport.props = fromTag.tagSupport.props
|
|
46
43
|
tagSupport.latestProps = fromTag.tagSupport.props;
|
|
47
44
|
tagSupport.latestClonedProps = fromTag.tagSupport.clonedProps;
|
|
48
45
|
fromTag.setSupport(tagSupport);
|
|
49
|
-
tag.
|
|
46
|
+
runAfterRender(tag.tagSupport, tag);
|
|
50
47
|
tag.updateByTag(fromTag);
|
|
51
|
-
/*
|
|
52
|
-
if(lastTag) {
|
|
53
|
-
lastTag.destroy({stagger: 0})
|
|
54
|
-
}
|
|
55
|
-
*/
|
|
56
48
|
tagSupport.newest = fromTag;
|
|
57
49
|
return lastTag;
|
|
58
50
|
};
|
package/js/tagElement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../ts/tagElement.ts"],"names":[],"mappings":"AACA,OAAO,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/tagRunner.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
|
-
import { TagSupport } from "./
|
|
2
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
3
3
|
export declare function runBeforeRender(tagSupport: TagSupport, tagOwner: Tag): void;
|
|
4
4
|
export declare function runAfterRender(tagSupport: TagSupport, tag: Tag): void;
|
|
5
5
|
export declare function runBeforeRedraw(tagSupport: TagSupport, tag: Tag): void;
|
package/js/templater.utils.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Tag } from "./Tag.class.js";
|
|
2
|
-
import { TagSupport } from "./
|
|
2
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
3
3
|
import { Props } from "./Props.js";
|
|
4
|
+
import { ValueSubject } from "./ValueSubject.js";
|
|
5
|
+
import { TagChildren } from "./tag.js";
|
|
4
6
|
export type Wrapper = (() => Tag) & {
|
|
5
7
|
original: () => Tag;
|
|
6
8
|
};
|
|
@@ -10,7 +12,7 @@ export declare class TemplaterResult {
|
|
|
10
12
|
newest?: Tag;
|
|
11
13
|
oldest?: Tag;
|
|
12
14
|
tagSupport: TagSupport;
|
|
13
|
-
constructor(props: Props);
|
|
15
|
+
constructor(props: Props, children: TagChildren);
|
|
14
16
|
redraw?: (force?: boolean) => Tag | undefined;
|
|
15
17
|
isTemplater: boolean;
|
|
16
18
|
forceRenderTemplate(tagSupport: TagSupport, ownerTag: Tag): Tag;
|
|
@@ -23,5 +25,5 @@ export interface TemplateRedraw extends TemplaterResult {
|
|
|
23
25
|
redraw: () => Tag | undefined;
|
|
24
26
|
}
|
|
25
27
|
export type TagComponent = (props: Props, // props or children
|
|
26
|
-
children?: Tag) => Tag;
|
|
27
|
-
export declare function
|
|
28
|
+
children?: ValueSubject<Tag[]>) => Tag;
|
|
29
|
+
export declare function alterProps(props: Props, templater: TemplaterResult): any;
|
package/js/templater.utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
2
2
|
import { isTagInstance } from "./isInstance.js";
|
|
3
3
|
import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
|
|
4
4
|
import { setUse } from "./setUse.function.js";
|
|
@@ -8,15 +8,15 @@ export class TemplaterResult {
|
|
|
8
8
|
newest;
|
|
9
9
|
oldest;
|
|
10
10
|
tagSupport;
|
|
11
|
-
constructor(props) {
|
|
12
|
-
this.tagSupport =
|
|
11
|
+
constructor(props, children) {
|
|
12
|
+
this.tagSupport = new TagSupport(this, children, props);
|
|
13
13
|
}
|
|
14
14
|
redraw;
|
|
15
15
|
isTemplater = true;
|
|
16
16
|
forceRenderTemplate(tagSupport, ownerTag) {
|
|
17
17
|
const tag = this.wrapper();
|
|
18
18
|
tag.setSupport(tagSupport);
|
|
19
|
-
tag.
|
|
19
|
+
runAfterRender(tag.tagSupport, tag);
|
|
20
20
|
this.oldest = tag;
|
|
21
21
|
tagSupport.oldest = tag;
|
|
22
22
|
this.oldest = tag;
|
|
@@ -33,6 +33,7 @@ export class TemplaterResult {
|
|
|
33
33
|
// ensure props are the last ones used
|
|
34
34
|
tagSupport.props = tagSupport.latestProps;
|
|
35
35
|
tagSupport.clonedProps = tagSupport.latestClonedProps;
|
|
36
|
+
// tagSupport.latestClonedProps = tagSupport.latestClonedProps
|
|
36
37
|
runBeforeRedraw(tagSupport, tagSupport.oldest);
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
@@ -48,6 +49,7 @@ export class TemplaterResult {
|
|
|
48
49
|
/* AFTER */
|
|
49
50
|
tagSupport.latestProps = retag.tagSupport.props;
|
|
50
51
|
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
52
|
+
// tagSupport.latestClonedProps = retag.tagSupport.latestClonedProps
|
|
51
53
|
retag.setSupport(tagSupport);
|
|
52
54
|
runAfterRender(tagSupport, retag);
|
|
53
55
|
templater.newest = retag;
|
|
@@ -67,8 +69,8 @@ export class TemplaterResult {
|
|
|
67
69
|
return { remit: true, retag };
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
|
-
/*
|
|
71
|
-
export function
|
|
72
|
+
/* Used to rewrite props that are functions. When they are called it should cause parent rendering */
|
|
73
|
+
export function alterProps(props, templater) {
|
|
72
74
|
function callback(toCall, callWith) {
|
|
73
75
|
const callbackResult = toCall(...callWith);
|
|
74
76
|
templater.newest?.ownerTag?.tagSupport.render();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templater.utils.js","sourceRoot":"","sources":["../ts/templater.utils.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"templater.utils.js","sourceRoot":"","sources":["../ts/templater.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { runAfterRender, runBeforeRedraw } from "./tagRunner.js";
|
|
2
|
+
export function updateExistingTag(templater, ogTag, existingSubject) {
|
|
3
|
+
const tagSupport = ogTag.tagSupport;
|
|
4
|
+
const oldest = tagSupport.oldest;
|
|
5
|
+
runBeforeRedraw(oldest.tagSupport, oldest);
|
|
6
|
+
const retag = templater.wrapper();
|
|
7
|
+
// move my props onto tagSupport
|
|
8
|
+
tagSupport.latestProps = retag.tagSupport.props;
|
|
9
|
+
tagSupport.latestClonedProps = retag.tagSupport.clonedProps;
|
|
10
|
+
// tagSupport.latestClonedProps = retag.tagSupport.latestClonedProps
|
|
11
|
+
tagSupport.memory = retag.tagSupport.memory;
|
|
12
|
+
// retag.tagSupport = tagSupport
|
|
13
|
+
retag.setSupport(tagSupport);
|
|
14
|
+
templater.newest = retag;
|
|
15
|
+
tagSupport.newest = retag;
|
|
16
|
+
runAfterRender(oldest.tagSupport, oldest);
|
|
17
|
+
ogTag.updateByTag(retag);
|
|
18
|
+
existingSubject.set(templater);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=updateExistingTag.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateExistingTag.function.js","sourceRoot":"","sources":["../ts/updateExistingTag.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhE,MAAM,UAAU,iBAAiB,CAC/B,SAA0B,EAC1B,KAAU,EACV,eAA2B;IAE3B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAa,CAAA;IACvC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAE1C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAA;IAEjC,gCAAgC;IAChC,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAA;IAC/C,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAA;IAC3D,oEAAoE;IACpE,UAAU,CAAC,MAAM,GAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAA;IAE5C,gCAAgC;IAChC,KAAK,CAAC,UAAU,CAAE,UAAU,CAAE,CAAA;IAE9B,SAAS,CAAC,MAAM,GAAG,KAAK,CAAA;IACxB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAA;IACzB,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACzC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACxB,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAE9B,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TagSubject } from "./Tag.utils.js";
|
|
2
|
+
import { TemplateRedraw } from "./templater.utils.js";
|
|
3
|
+
import { Tag } from "./Tag.class.js";
|
|
4
|
+
export declare function updateExistingTagComponent(tag: Tag, tempResult: TemplateRedraw, existingSubject: TagSubject, subjectValue: any): void;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { setValueRedraw } from "./Tag.utils.js";
|
|
2
|
+
import { deepClone } from "./deepFunctions.js";
|
|
3
|
+
import { isTagInstance } from "./isInstance.js";
|
|
4
|
+
import { destroyTagMemory } from "./updateExistingValue.function.js";
|
|
5
|
+
import { hasTagSupportChanged } from "./TagSupport.class.js";
|
|
6
|
+
export function updateExistingTagComponent(tag, tempResult, existingSubject, subjectValue) {
|
|
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 latestProps = tempResult.tagSupport.props;
|
|
24
|
+
const oldTagSetup = existingTag.tagSupport;
|
|
25
|
+
oldTagSetup.latestProps = latestProps;
|
|
26
|
+
if (!isSameTag) {
|
|
27
|
+
// TODO: this may not be in use
|
|
28
|
+
destroyTagMemory(existingTag, existingSubject, subjectValue);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const subjectTagSupport = subjectValue?.tagSupport;
|
|
32
|
+
// old props may have changed, reclone first
|
|
33
|
+
let oldCloneProps = subjectTagSupport.props;
|
|
34
|
+
// if the new props are NOT HTML children, then clone the props for later render cycle comparing
|
|
35
|
+
if (!isTagInstance(subjectTagSupport.props)) {
|
|
36
|
+
oldCloneProps = deepClone(subjectTagSupport.props);
|
|
37
|
+
}
|
|
38
|
+
if (existingTag) {
|
|
39
|
+
const hasChanged = hasTagSupportChanged(oldTagSetup, tempResult.tagSupport);
|
|
40
|
+
if (!hasChanged) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
setValueRedraw(tempResult, existingSubject, tag);
|
|
46
|
+
oldTagSetup.templater = tempResult;
|
|
47
|
+
const redraw = tempResult.redraw();
|
|
48
|
+
existingSubject.value.tag = oldTagSetup.newest = redraw;
|
|
49
|
+
oldTagSetup.latestClonedProps = tempResult.tagSupport.clonedProps;
|
|
50
|
+
// oldTagSetup.latestClonedProps = tempResult.tagSupport.latestClonedProps
|
|
51
|
+
if (!isSameTag) {
|
|
52
|
+
existingSubject.tag = redraw;
|
|
53
|
+
subjectValue.tagSupport = tempResult.tagSupport;
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=updateExistingTagComponent.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateExistingTagComponent.function.js","sourceRoot":"","sources":["../ts/updateExistingTagComponent.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,UAAU,0BAA0B,CACxC,GAAQ,EACR,UAA0B,EAC1B,eAA2B,EAC3B,YAAiB;IAEjB,IAAI,WAAW,GAAoB,eAAe,CAAC,GAAG,CAAA;IAEtD,qDAAqD;IACrD,IAAI,CAAC,WAAW,EAAG,CAAC;QAClB,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;QAChD,UAAU,CAAC,MAAM,EAAE,CAAA;QACnB,OAAM;IACR,CAAC;IAED,kBAAkB;IAClB,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAA;IAC3D,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAA;IACrC,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,IAAG,UAAU,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAA;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAA;QACvC,SAAS,GAAG,WAAW,KAAK,WAAW,CAAA;IACzC,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAA;IAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,UAAU,CAAA;IAC1C,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;IAErC,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,+BAA+B;QAC/B,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,GAAG,YAAY,EAAE,UAAU,CAAA;QAClD,4CAA4C;QAE5C,IAAI,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAA;QAE3C,gGAAgG;QAChG,IAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,aAAa,GAAG,SAAS,CAAE,iBAAiB,CAAC,KAAK,CAAE,CAAA;QACtD,CAAC;QAED,IAAG,WAAW,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YAC3E,IAAG,CAAC,UAAU,EAAE,CAAC;gBACf,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IAEhD,WAAW,CAAC,SAAS,GAAG,UAAU,CAAA;IAElC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAS,CAAA;IAEzC,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAA;IACvD,WAAW,CAAC,iBAAiB,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAA;IACjE,0EAA0E;IAG1E,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,eAAe,CAAC,GAAG,GAAG,MAAM,CAAA;QAC5B,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;IACjD,CAAC;IAED,OAAM;AACR,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TagSubject } from "./Tag.utils.js";
|
|
2
|
+
import { TagSupport } from "./TagSupport.class.js";
|
|
3
|
+
import { Subject } from "./Subject.js";
|
|
4
|
+
import { TemplaterResult } from "./templater.utils.js";
|
|
5
|
+
import { Tag } from "./Tag.class.js";
|
|
6
|
+
import { TagArraySubject } from "./processTagArray.js";
|
|
7
|
+
export declare function updateExistingValue(existing: Subject<Tag> | TemplaterResult | TagSubject | TagArraySubject, value: TemplaterResult | TagSupport | Function | Subject<any>, tag: Tag): void;
|
|
8
|
+
export declare function destroyTagMemory(existingTag: Tag, existingSubject: TagSubject, subjectValue: any): void;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { isSubjectInstance, isTagArray, isTagComponent } from "./isInstance.js";
|
|
2
|
+
import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
|
|
3
|
+
import { processTag } from "./processSubjectValue.function.js";
|
|
4
|
+
import { processTagArray } from "./processTagArray.js";
|
|
5
|
+
import { updateExistingTagComponent } from "./updateExistingTagComponent.function.js";
|
|
6
|
+
import { updateExistingTag } from "./updateExistingTag.function.js";
|
|
7
|
+
export function updateExistingValue(existing, value, tag) {
|
|
8
|
+
const subjectValue = existing.value;
|
|
9
|
+
const ogTag = subjectValue?.tag;
|
|
10
|
+
const tempResult = value;
|
|
11
|
+
const existingSubArray = existing;
|
|
12
|
+
const existingSubTag = existing;
|
|
13
|
+
// was array
|
|
14
|
+
if (existing.lastArray) {
|
|
15
|
+
// its another tag array
|
|
16
|
+
if (isTagArray(value)) {
|
|
17
|
+
processTagArray(existing, value, existingSubArray.template, tag, { counts: {
|
|
18
|
+
added: 0,
|
|
19
|
+
removed: 0,
|
|
20
|
+
} });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// was tag array and now something else
|
|
24
|
+
;
|
|
25
|
+
existing.lastArray.forEach(({ tag }) => tag.destroy());
|
|
26
|
+
delete existing.lastArray;
|
|
27
|
+
}
|
|
28
|
+
// handle already seen tag components
|
|
29
|
+
if (isTagComponent(tempResult)) {
|
|
30
|
+
return updateExistingTagComponent(tag, tempResult, existingSubTag, subjectValue);
|
|
31
|
+
}
|
|
32
|
+
// was component but no longer
|
|
33
|
+
const existingTag = existingSubTag.tag;
|
|
34
|
+
if (existingTag) {
|
|
35
|
+
// its now an array
|
|
36
|
+
if (isTagArray(value)) {
|
|
37
|
+
destroyTagMemory(existingTag, existingSubTag, subjectValue);
|
|
38
|
+
delete existingSubTag.tag;
|
|
39
|
+
}
|
|
40
|
+
const oldWrapper = existingTag.tagSupport.templater.wrapper;
|
|
41
|
+
const newWrapper = value?.wrapper;
|
|
42
|
+
const wrapMatch = oldWrapper && newWrapper && oldWrapper?.original === newWrapper?.original;
|
|
43
|
+
// TODO: We shouldn't need both of these
|
|
44
|
+
const isSameTag = value && existingTag.lastTemplateString === value.lastTemplateString;
|
|
45
|
+
const isSameTag2 = value && value.getTemplate && existingTag.isLikeTag(value);
|
|
46
|
+
if (isSameTag || isSameTag2) {
|
|
47
|
+
processTag(value, existing, existing.template, existingTag, // tag,
|
|
48
|
+
{
|
|
49
|
+
counts: {
|
|
50
|
+
added: 0,
|
|
51
|
+
removed: 0,
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (wrapMatch) {
|
|
57
|
+
return updateExistingTag(value, existingTag, existingSubTag);
|
|
58
|
+
}
|
|
59
|
+
if (ogTag) {
|
|
60
|
+
destroyTagMemory(existingTag, existingSubTag, subjectValue);
|
|
61
|
+
delete existingSubTag.tag;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// now its a function
|
|
65
|
+
if (value instanceof Function) {
|
|
66
|
+
existingSubTag.set(bindSubjectCallback(value, tag));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
// we have been given a subject
|
|
70
|
+
if (isSubjectInstance(value)) {
|
|
71
|
+
existingSubTag.set(value.value); // let ValueSubject now of newest value
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
existingSubTag.set(value); // let ValueSubject now of newest value
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
export function destroyTagMemory(existingTag, existingSubject, subjectValue) {
|
|
78
|
+
delete existingSubject.tag;
|
|
79
|
+
delete existingSubject.tagSupport;
|
|
80
|
+
delete subjectValue.tagSupport;
|
|
81
|
+
existingTag.destroy();
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=updateExistingValue.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateExistingValue.function.js","sourceRoot":"","sources":["../ts/updateExistingValue.function.ts"],"names":[],"mappings":"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"}
|