taggedjs 2.4.16 → 2.4.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.js +1851 -1732
- package/bundle.js.map +1 -1
- package/js/Clones.type.d.ts +1 -1
- package/js/{errors.d.ts → Errors.d.ts} +3 -0
- package/js/{errors.js → Errors.js} +6 -0
- package/js/{errors.js.map → Errors.js.map} +1 -1
- package/js/Tag.class.d.ts +6 -41
- package/js/Tag.class.js +2 -347
- package/js/Tag.class.js.map +1 -1
- package/js/TagSupport.class.d.ts +40 -6
- package/js/TagSupport.class.js +268 -30
- package/js/TagSupport.class.js.map +1 -1
- package/js/TemplaterResult.class.d.ts +16 -16
- package/js/TemplaterResult.class.js +35 -46
- package/js/TemplaterResult.class.js.map +1 -1
- package/js/afterInterpolateElement.function.d.ts +4 -0
- package/js/afterInterpolateElement.function.js +14 -0
- package/js/afterInterpolateElement.function.js.map +1 -0
- package/js/alterProps.function.d.ts +2 -4
- package/js/alterProps.function.js +7 -15
- package/js/alterProps.function.js.map +1 -1
- package/js/bindSubjectCallback.function.js +0 -3
- package/js/bindSubjectCallback.function.js.map +1 -1
- package/js/checkDestroyPrevious.function.d.ts +5 -5
- package/js/checkDestroyPrevious.function.js +20 -17
- package/js/checkDestroyPrevious.function.js.map +1 -1
- package/js/cloneValueArray.function.d.ts +2 -0
- package/js/cloneValueArray.function.js +19 -0
- package/js/cloneValueArray.function.js.map +1 -0
- package/js/deepFunctions.js +36 -29
- package/js/deepFunctions.js.map +1 -1
- package/js/destroy.support.d.ts +6 -0
- package/js/destroy.support.js +10 -0
- package/js/destroy.support.js.map +1 -0
- package/js/destroyTag.function.d.ts +2 -3
- package/js/destroyTag.function.js +7 -11
- package/js/destroyTag.function.js.map +1 -1
- package/js/hasTagSupportChanged.function.js +0 -12
- package/js/hasTagSupportChanged.function.js.map +1 -1
- package/js/index.d.ts +3 -10
- package/js/index.js +3 -13
- package/js/index.js.map +1 -1
- package/js/interpolateTemplate.js +0 -5
- package/js/interpolateTemplate.js.map +1 -1
- package/js/interpolations/bindSubjectCallback.function.d.ts +7 -0
- package/js/interpolations/bindSubjectCallback.function.js +40 -0
- package/js/interpolations/bindSubjectCallback.function.js.map +1 -0
- package/js/interpolations/elementInitCheck.d.ts +2 -0
- package/js/interpolations/elementInitCheck.js +18 -0
- package/js/interpolations/elementInitCheck.js.map +1 -0
- package/js/interpolations/inputAttribute.d.ts +1 -0
- package/js/interpolations/inputAttribute.js +19 -0
- package/js/interpolations/inputAttribute.js.map +1 -0
- package/js/interpolations/interpolateAttributes.d.ts +4 -0
- package/js/interpolations/interpolateAttributes.js +20 -0
- package/js/interpolations/interpolateAttributes.js.map +1 -0
- package/js/interpolations/interpolateContentTemplates.d.ts +9 -0
- package/js/interpolations/interpolateContentTemplates.js +42 -0
- package/js/interpolations/interpolateContentTemplates.js.map +1 -0
- package/js/interpolations/interpolateElement.d.ts +14 -0
- package/js/interpolations/interpolateElement.js +36 -0
- package/js/interpolations/interpolateElement.js.map +1 -0
- package/js/interpolations/interpolateTemplate.d.ts +32 -0
- package/js/interpolations/interpolateTemplate.js +80 -0
- package/js/interpolations/interpolateTemplate.js.map +1 -0
- package/js/interpolations/interpolations.d.ts +7 -0
- package/js/interpolations/interpolations.js +18 -0
- package/js/interpolations/interpolations.js.map +1 -0
- package/js/interpolations/processAttribute.function.d.ts +5 -0
- package/js/interpolations/processAttribute.function.js +122 -0
- package/js/interpolations/processAttribute.function.js.map +1 -0
- package/js/interpolations/scanTextAreaValue.function.d.ts +3 -0
- package/js/interpolations/scanTextAreaValue.function.js +16 -0
- package/js/interpolations/scanTextAreaValue.function.js.map +1 -0
- package/js/interpolations.js +1 -2
- package/js/interpolations.js.map +1 -1
- package/js/isInstance.d.ts +4 -1
- package/js/isInstance.js +12 -4
- package/js/isInstance.js.map +1 -1
- package/js/isLikeTags.function.d.ts +3 -1
- package/js/isLikeTags.function.js +15 -6
- package/js/isLikeTags.function.js.map +1 -1
- package/js/processNewValue.function.d.ts +3 -2
- package/js/processNewValue.function.js +27 -11
- package/js/processNewValue.function.js.map +1 -1
- package/js/processRegularValue.function.d.ts +1 -1
- package/js/processSubjectComponent.function.d.ts +5 -5
- package/js/processSubjectComponent.function.js +27 -35
- package/js/processSubjectComponent.function.js.map +1 -1
- package/js/processSubjectValue.function.d.ts +11 -7
- package/js/processSubjectValue.function.js +20 -7
- package/js/processSubjectValue.function.js.map +1 -1
- package/js/processTag.function.d.ts +8 -4
- package/js/processTag.function.js +23 -39
- package/js/processTag.function.js.map +1 -1
- package/js/processTagArray.d.ts +6 -4
- package/js/processTagArray.js +41 -39
- package/js/processTagArray.js.map +1 -1
- package/js/processTagResult.function.d.ts +4 -4
- package/js/processTagResult.function.js +14 -30
- package/js/processTagResult.function.js.map +1 -1
- package/js/renderExistingTag.function.d.ts +6 -6
- package/js/renderExistingTag.function.js +27 -23
- package/js/renderExistingTag.function.js.map +1 -1
- package/js/renderTagSupport.function.d.ts +2 -3
- package/js/renderTagSupport.function.js +17 -20
- package/js/renderTagSupport.function.js.map +1 -1
- package/js/setTagPlaceholder.function.d.ts +2 -0
- package/js/setTagPlaceholder.function.js +8 -0
- package/js/setTagPlaceholder.function.js.map +1 -0
- package/js/state/callbackMaker.function.d.ts +3 -0
- package/js/state/callbackMaker.function.js +51 -0
- package/js/state/callbackMaker.function.js.map +1 -0
- package/js/state/getCallback.d.ts +3 -0
- package/js/state/getCallback.js +51 -0
- package/js/state/getCallback.js.map +1 -0
- package/js/state/index.d.ts +10 -0
- package/js/state/index.js +10 -0
- package/js/state/index.js.map +1 -0
- package/js/state/letState.function.d.ts +3 -0
- package/js/state/letState.function.js +42 -0
- package/js/state/letState.function.js.map +1 -0
- package/js/state/onDestroy.d.ts +2 -0
- package/js/state/onDestroy.js +17 -0
- package/js/state/onDestroy.js.map +1 -0
- package/js/state/onInit.d.ts +2 -0
- package/js/state/onInit.js +16 -0
- package/js/state/onInit.js.map +1 -0
- package/js/state/provider.utils.d.ts +2 -0
- package/js/state/provider.utils.js +40 -0
- package/js/state/provider.utils.js.map +1 -0
- package/js/state/providers.d.ts +23 -0
- package/js/state/providers.js +83 -0
- package/js/state/providers.js.map +1 -0
- package/js/state/setProp.function.d.ts +3 -0
- package/js/state/setProp.function.js +37 -0
- package/js/state/setProp.function.js.map +1 -0
- package/js/state/setUse.function.d.ts +25 -0
- package/js/state/setUse.function.js +14 -0
- package/js/state/setUse.function.js.map +1 -0
- package/js/state/state.function.d.ts +2 -0
- package/js/state/state.function.js +34 -0
- package/js/state/state.function.js.map +1 -0
- package/js/state/state.utils.d.ts +20 -0
- package/js/state/state.utils.js +91 -0
- package/js/state/state.utils.js.map +1 -0
- package/js/state/watch.function.d.ts +8 -0
- package/js/state/watch.function.js +25 -0
- package/js/state/watch.function.js.map +1 -0
- package/js/subject/Subject.class.d.ts +10 -6
- package/js/subject/Subject.class.js +29 -13
- package/js/subject/Subject.class.js.map +1 -1
- package/js/subject/Subject.utils.d.ts +7 -5
- package/js/subject/Subject.utils.js.map +1 -1
- package/js/subject/ValueSubject.d.ts +2 -2
- package/js/subject/ValueSubject.js.map +1 -1
- package/js/subject/combineLatest.function.js.map +1 -1
- package/js/subject.types.d.ts +18 -0
- package/js/subject.types.js +2 -0
- package/js/subject.types.js.map +1 -0
- package/js/tag.d.ts +1 -1
- package/js/tag.js +26 -32
- package/js/tag.js.map +1 -1
- package/js/tagElement.d.ts +3 -7
- package/js/tagElement.js +24 -24
- package/js/tagElement.js.map +1 -1
- package/js/tagRunner.d.ts +7 -6
- package/js/tagRunner.js +17 -9
- package/js/tagRunner.js.map +1 -1
- package/js/updateBeforeTemplate.function.d.ts +1 -1
- package/js/updateBeforeTemplate.function.js.map +1 -1
- package/js/updateContextItem.function.d.ts +3 -0
- package/js/updateContextItem.function.js +43 -0
- package/js/updateContextItem.function.js.map +1 -0
- package/js/updateExistingTagComponent.function.d.ts +4 -4
- package/js/updateExistingTagComponent.function.js +49 -88
- package/js/updateExistingTagComponent.function.js.map +1 -1
- package/js/updateExistingValue.function.d.ts +2 -7
- package/js/updateExistingValue.function.js +94 -50
- package/js/updateExistingValue.function.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getStateValue } from './state.utils';
|
|
2
|
+
import { setUse } from './setUse.function';
|
|
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 rearray = config.rearray;
|
|
7
|
+
const [propValue] = getSet(undefined);
|
|
8
|
+
getSet(propValue); // restore original value instead of undefined
|
|
9
|
+
const restate = rearray[config.array.length];
|
|
10
|
+
if (restate) {
|
|
11
|
+
let watchValue = restate.watch;
|
|
12
|
+
let oldValue = getStateValue(restate);
|
|
13
|
+
const push = {
|
|
14
|
+
get: () => getStateValue(push),
|
|
15
|
+
callback: getSet,
|
|
16
|
+
lastValue: oldValue,
|
|
17
|
+
watch: restate.watch,
|
|
18
|
+
};
|
|
19
|
+
// has the prop value changed?
|
|
20
|
+
if (propValue != watchValue) {
|
|
21
|
+
push.watch = propValue;
|
|
22
|
+
oldValue = push.lastValue = propValue;
|
|
23
|
+
}
|
|
24
|
+
config.array.push(push);
|
|
25
|
+
getSet(oldValue);
|
|
26
|
+
return oldValue;
|
|
27
|
+
}
|
|
28
|
+
const push = {
|
|
29
|
+
get: () => getStateValue(push),
|
|
30
|
+
callback: getSet,
|
|
31
|
+
lastValue: propValue,
|
|
32
|
+
watch: propValue,
|
|
33
|
+
};
|
|
34
|
+
config.array.push(push);
|
|
35
|
+
return propValue;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=setProp.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setProp.function.js","sourceRoot":"","sources":["../../ts/state/setProp.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,aAAa,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,oFAAoF;AACpF,MAAM,UAAU,OAAO,CACrB,MAAmB;IAEnB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAA2B,CAAA;IAElD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAc,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,8CAA8C;IAEhE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,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,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,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,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseTagSupport, TagSupport } from '../TagSupport.class';
|
|
2
|
+
import { ProviderConfig } from './providers';
|
|
3
|
+
import { Config } from './state.utils';
|
|
4
|
+
interface TagUse {
|
|
5
|
+
beforeRender: (tagSupport: BaseTagSupport, ownerTag?: TagSupport) => void;
|
|
6
|
+
beforeRedraw: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
7
|
+
afterRender: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
8
|
+
beforeDestroy: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
9
|
+
}
|
|
10
|
+
export type UseOptions = {
|
|
11
|
+
beforeRender?: (tagSupport: BaseTagSupport, ownerTag?: TagSupport) => void;
|
|
12
|
+
beforeRedraw?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
13
|
+
afterRender?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
14
|
+
beforeDestroy?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
|
|
15
|
+
};
|
|
16
|
+
export declare function setUse(use: UseOptions): void;
|
|
17
|
+
export declare namespace setUse {
|
|
18
|
+
var tagUse: TagUse[];
|
|
19
|
+
var memory: Record<string, any> & {
|
|
20
|
+
stateConfig: Config;
|
|
21
|
+
providerConfig: ProviderConfig;
|
|
22
|
+
initCurrentSupport: TagSupport;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const tagUse = [];
|
|
2
|
+
export function setUse(use) {
|
|
3
|
+
// must provide defaults
|
|
4
|
+
const useMe = {
|
|
5
|
+
beforeRender: use.beforeRender || (() => undefined),
|
|
6
|
+
beforeRedraw: use.beforeRedraw || (() => undefined),
|
|
7
|
+
afterRender: use.afterRender || (() => undefined),
|
|
8
|
+
beforeDestroy: use.beforeDestroy || (() => undefined),
|
|
9
|
+
};
|
|
10
|
+
setUse.tagUse.push(useMe);
|
|
11
|
+
}
|
|
12
|
+
setUse.tagUse = tagUse;
|
|
13
|
+
setUse.memory = {};
|
|
14
|
+
//# sourceMappingURL=setUse.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setUse.function.js","sourceRoot":"","sources":["../../ts/state/setUse.function.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAa,EAAE,CAAA;AAyB3B,MAAM,UAAU,MAAM,CAAC,GAAe;IACpC,wBAAwB;IACxB,MAAM,KAAK,GAAW;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACjD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KACtD,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;AACtB,MAAM,CAAC,MAAM,GAAG,EAId,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { setUse } from './setUse.function';
|
|
2
|
+
import { getStateValue } from './state.utils';
|
|
3
|
+
/** Used for variables that need to remain the same variable during render passes */
|
|
4
|
+
export function state(defaultValue) {
|
|
5
|
+
const config = setUse.memory.stateConfig;
|
|
6
|
+
let getSetMethod;
|
|
7
|
+
const rearray = config.rearray;
|
|
8
|
+
const restate = rearray[config.array.length];
|
|
9
|
+
if (restate) {
|
|
10
|
+
let oldValue = getStateValue(restate);
|
|
11
|
+
getSetMethod = ((x) => [oldValue, oldValue = x]);
|
|
12
|
+
const push = {
|
|
13
|
+
get: () => getStateValue(push),
|
|
14
|
+
callback: getSetMethod,
|
|
15
|
+
lastValue: oldValue,
|
|
16
|
+
defaultValue: restate.defaultValue,
|
|
17
|
+
};
|
|
18
|
+
config.array.push(push);
|
|
19
|
+
return oldValue;
|
|
20
|
+
}
|
|
21
|
+
// State first time run
|
|
22
|
+
const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
|
|
23
|
+
let initValue = defaultFn();
|
|
24
|
+
getSetMethod = ((x) => [initValue, initValue = x]);
|
|
25
|
+
const push = {
|
|
26
|
+
get: () => getStateValue(push),
|
|
27
|
+
callback: getSetMethod,
|
|
28
|
+
lastValue: initValue,
|
|
29
|
+
defaultValue: initValue,
|
|
30
|
+
};
|
|
31
|
+
config.array.push(push);
|
|
32
|
+
return initValue;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=state.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.function.js","sourceRoot":"","sources":["../../ts/state/state.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAA0D,aAAa,EAAE,MAAM,eAAe,CAAA;AAErG,oFAAoF;AACpF,MAAM,UAAU,KAAK,CACnB,YAA2B;IAE3B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,IAAI,YAA4B,CAAA;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAA2B,CAAA;IAElD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAuB;YAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,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,QAAQ,CAAA;IACjB,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,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,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,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseTagSupport } from '../TagSupport.class';
|
|
2
|
+
export type StateConfig<T> = (x: T) => [T, T];
|
|
3
|
+
export type StateConfigItem<T> = {
|
|
4
|
+
get: () => T;
|
|
5
|
+
callback?: StateConfig<T>;
|
|
6
|
+
lastValue?: T;
|
|
7
|
+
defaultValue?: T;
|
|
8
|
+
watch?: T;
|
|
9
|
+
};
|
|
10
|
+
export type StateConfigArray = StateConfigItem<any>[];
|
|
11
|
+
export type Config = {
|
|
12
|
+
tagSupport: BaseTagSupport;
|
|
13
|
+
array: StateConfigArray;
|
|
14
|
+
rearray?: StateConfigArray;
|
|
15
|
+
};
|
|
16
|
+
export type State = StateConfigArray;
|
|
17
|
+
export type GetSet<T> = (y: T) => [T, T];
|
|
18
|
+
export declare function getStateValue<T>(state: StateConfigItem<T>): T | undefined;
|
|
19
|
+
export declare class StateEchoBack {
|
|
20
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { StateMismatchError } from '../errors';
|
|
2
|
+
import { setUse } from './setUse.function';
|
|
3
|
+
// TODO: rename
|
|
4
|
+
setUse.memory.stateConfig = {
|
|
5
|
+
array: [], // state memory on the first render
|
|
6
|
+
// rearray: [] as StateConfigArray, // state memory to be used before the next render
|
|
7
|
+
};
|
|
8
|
+
const beforeRender = (tagSupport) => initState(tagSupport);
|
|
9
|
+
setUse({
|
|
10
|
+
beforeRender,
|
|
11
|
+
beforeRedraw: beforeRender,
|
|
12
|
+
afterRender: (tagSupport) => {
|
|
13
|
+
const memory = tagSupport.memory;
|
|
14
|
+
const state = memory.state;
|
|
15
|
+
const config = setUse.memory.stateConfig;
|
|
16
|
+
const rearray = config.rearray;
|
|
17
|
+
if (rearray.length) {
|
|
18
|
+
if (rearray.length !== config.array.length) {
|
|
19
|
+
const message = `States lengths has changed ${rearray.length} !== ${config.array.length}. Typically occurs when a function is intended to be wrapped with a tag() call`;
|
|
20
|
+
const wrapper = tagSupport.templater?.wrapper;
|
|
21
|
+
const details = {
|
|
22
|
+
oldStates: config.array,
|
|
23
|
+
newStates: config.rearray,
|
|
24
|
+
tagFunction: wrapper.original,
|
|
25
|
+
};
|
|
26
|
+
const error = new StateMismatchError(message, details);
|
|
27
|
+
console.warn(message, details);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
delete config.rearray; // clean up any previous runs
|
|
32
|
+
memory.state = config.array; // [...config.array]
|
|
33
|
+
memory.state.forEach(item => item.lastValue = getStateValue(item)); // set last values
|
|
34
|
+
config.array = [];
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
export function getStateValue(
|
|
38
|
+
// state: StateConfig,
|
|
39
|
+
state) {
|
|
40
|
+
const callback = state.callback;
|
|
41
|
+
if (!callback) {
|
|
42
|
+
return state.defaultValue;
|
|
43
|
+
}
|
|
44
|
+
const oldState = callback(StateEchoBack); // get value and set to undefined
|
|
45
|
+
const [oldValue] = oldState;
|
|
46
|
+
const [checkValue] = callback(oldValue); // set back to original value
|
|
47
|
+
if (checkValue !== StateEchoBack) {
|
|
48
|
+
const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
|
|
49
|
+
'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
|
|
50
|
+
'For "const" state use `const name = state(default)()`\n\n' +
|
|
51
|
+
'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
|
|
52
|
+
console.error(message, { state, callback, oldState, oldValue, checkValue });
|
|
53
|
+
throw new Error(message);
|
|
54
|
+
}
|
|
55
|
+
// state.lastValue = oldValue
|
|
56
|
+
return oldValue;
|
|
57
|
+
}
|
|
58
|
+
export class StateEchoBack {
|
|
59
|
+
}
|
|
60
|
+
function initState(tagSupport) {
|
|
61
|
+
const memory = tagSupport.memory;
|
|
62
|
+
const state = memory.state;
|
|
63
|
+
const config = setUse.memory.stateConfig;
|
|
64
|
+
// TODO: This guard may no longer be needed
|
|
65
|
+
if (config.rearray) {
|
|
66
|
+
const wrapper = tagSupport.templater?.wrapper;
|
|
67
|
+
const wasWrapper = config.tagSupport?.templater.wrapper;
|
|
68
|
+
const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render';
|
|
69
|
+
console.error(message, {
|
|
70
|
+
config,
|
|
71
|
+
tagFunction: wrapper.original,
|
|
72
|
+
wasInMiddleOf: wasWrapper.original,
|
|
73
|
+
state,
|
|
74
|
+
expectedClearArray: config.rearray,
|
|
75
|
+
});
|
|
76
|
+
throw new StateMismatchError(message, {
|
|
77
|
+
config,
|
|
78
|
+
tagFunction: wrapper.original,
|
|
79
|
+
state,
|
|
80
|
+
expectedClearArray: config.rearray,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// TODO: this maybe redundant and not needed
|
|
84
|
+
config.rearray = []; // .length = 0
|
|
85
|
+
if (state?.length) {
|
|
86
|
+
state.forEach(state => getStateValue(state));
|
|
87
|
+
config.rearray.push(...state);
|
|
88
|
+
}
|
|
89
|
+
config.tagSupport = tagSupport;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=state.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.utils.js","sourceRoot":"","sources":["../../ts/state/state.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type WatchCallback = (currentValues: any[], previousValues: any[] | undefined) => unknown | ((currentValues: any[]) => unknown) | (() => unknown);
|
|
2
|
+
/**
|
|
3
|
+
* When an item in watch array changes, callback function will be triggered. Does not trigger on initial watch setup.
|
|
4
|
+
* @param currentValues T[]
|
|
5
|
+
* @param callback WatchCallback
|
|
6
|
+
* @returns T[]
|
|
7
|
+
*/
|
|
8
|
+
export declare function watch<T>(currentValues: T[], callback: WatchCallback): T[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { letState } from './letState.function';
|
|
2
|
+
/**
|
|
3
|
+
* When an item in watch array changes, callback function will be triggered. Does not trigger on initial watch setup.
|
|
4
|
+
* @param currentValues T[]
|
|
5
|
+
* @param callback WatchCallback
|
|
6
|
+
* @returns T[]
|
|
7
|
+
*/
|
|
8
|
+
export function watch(currentValues, callback) {
|
|
9
|
+
let previousValues = letState(undefined)(x => [previousValues, previousValues = x]);
|
|
10
|
+
// First time running watch?
|
|
11
|
+
if (previousValues === undefined) {
|
|
12
|
+
// callback(currentValues, previousValues) // do not call during init
|
|
13
|
+
previousValues = currentValues;
|
|
14
|
+
return currentValues;
|
|
15
|
+
}
|
|
16
|
+
const allExact = currentValues.every((item, index) => item === previousValues[index]);
|
|
17
|
+
if (allExact) {
|
|
18
|
+
return currentValues;
|
|
19
|
+
}
|
|
20
|
+
callback(currentValues, previousValues);
|
|
21
|
+
previousValues.length = 0;
|
|
22
|
+
previousValues.push(...currentValues);
|
|
23
|
+
return currentValues;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=watch.function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.function.js","sourceRoot":"","sources":["../../ts/state/watch.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAO9C;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CACnB,aAAkB,EAClB,QAAuB;IAEvB,IAAI,cAAc,GAAG,QAAQ,CAAC,SAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAA;IAE5G,4BAA4B;IAC5B,IAAG,cAAc,KAAK,SAAS,EAAE,CAAC;QAChC,qEAAqE;QACrE,cAAc,GAAG,aAAa,CAAA;QAC9B,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAM,cAAwB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChG,IAAG,QAAQ,EAAE,CAAC;QACZ,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IACvC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;IAErC,OAAO,aAAa,CAAA;AACtB,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { OperatorFunction, SubjectLike, SubjectSubscriber, Subscription } from "./Subject.utils";
|
|
2
|
+
type OnSubscription<T> = (subscription: Subscription<T>) => unknown;
|
|
2
3
|
export declare class Subject<T> implements SubjectLike<T> {
|
|
3
4
|
value?: T | undefined;
|
|
5
|
+
onSubscription?: OnSubscription<T> | undefined;
|
|
4
6
|
methods: OperatorFunction<any, any, any>[];
|
|
5
7
|
isSubject: boolean;
|
|
6
|
-
subscribers:
|
|
7
|
-
subscribeWith?: (x: SubjectSubscriber<T>) => Subscription
|
|
8
|
-
constructor(value?: T | undefined);
|
|
9
|
-
subscribe(callback: SubjectSubscriber<T>): Subscription
|
|
10
|
-
set(value
|
|
11
|
-
next: (value
|
|
8
|
+
subscribers: Subscription<T>[];
|
|
9
|
+
subscribeWith?: (x: SubjectSubscriber<T>) => Subscription<T>;
|
|
10
|
+
constructor(value?: T | undefined, onSubscription?: OnSubscription<T> | undefined);
|
|
11
|
+
subscribe(callback: SubjectSubscriber<T>): Subscription<T> | Subscription<any>;
|
|
12
|
+
set(value?: any): void;
|
|
13
|
+
next: (value?: any) => void;
|
|
12
14
|
toPromise(): Promise<T>;
|
|
15
|
+
toCallback(callback: (x: T) => any): void;
|
|
13
16
|
pipe(): Subject<T>;
|
|
14
17
|
pipe<A, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>): Subject<A>;
|
|
15
18
|
pipe<A, B, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>): Subject<B>;
|
|
@@ -22,3 +25,4 @@ export declare class Subject<T> implements SubjectLike<T> {
|
|
|
22
25
|
pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>): Subject<I>;
|
|
23
26
|
pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>, ...operations: OperatorFunction<any, any, any>[]): Subject<unknown>;
|
|
24
27
|
}
|
|
28
|
+
export {};
|
|
@@ -1,48 +1,60 @@
|
|
|
1
1
|
export class Subject {
|
|
2
2
|
value;
|
|
3
|
+
onSubscription;
|
|
3
4
|
methods = [];
|
|
4
5
|
isSubject = true;
|
|
5
6
|
subscribers = [];
|
|
6
7
|
subscribeWith;
|
|
7
8
|
// unsubcount = 0 // 🔬 testing
|
|
8
|
-
constructor(value) {
|
|
9
|
+
constructor(value, onSubscription) {
|
|
9
10
|
this.value = value;
|
|
11
|
+
this.onSubscription = onSubscription;
|
|
10
12
|
}
|
|
11
13
|
subscribe(callback) {
|
|
14
|
+
const subscription = getSubscription(this, callback);
|
|
12
15
|
// are we within a pipe?
|
|
13
16
|
const subscribeWith = this.subscribeWith;
|
|
14
17
|
if (subscribeWith) {
|
|
15
18
|
// are we in a pipe?
|
|
16
19
|
if (this.methods.length) {
|
|
17
20
|
const orgCallback = callback;
|
|
18
|
-
callback = (value
|
|
19
|
-
runPipedMethods(value,
|
|
21
|
+
callback = (value) => {
|
|
22
|
+
runPipedMethods(value, this.methods, lastValue => orgCallback(lastValue, subscription));
|
|
20
23
|
};
|
|
21
24
|
}
|
|
22
25
|
return subscribeWith(callback);
|
|
23
26
|
}
|
|
24
|
-
this.subscribers.push(
|
|
25
|
-
SubjectClass.globalSubs.push(
|
|
26
|
-
|
|
27
|
+
this.subscribers.push(subscription);
|
|
28
|
+
SubjectClass.globalSubs.push(subscription); // 🔬 testing
|
|
29
|
+
if (this.onSubscription) {
|
|
30
|
+
this.onSubscription(subscription);
|
|
31
|
+
}
|
|
27
32
|
return subscription;
|
|
28
33
|
}
|
|
29
34
|
set(value) {
|
|
30
35
|
this.value = value;
|
|
31
36
|
// Notify all subscribers with the new value
|
|
32
|
-
this.subscribers.forEach(
|
|
33
|
-
callback.value = value
|
|
34
|
-
callback(value);
|
|
37
|
+
this.subscribers.forEach(sub => {
|
|
38
|
+
// (sub.callback as any).value = value
|
|
39
|
+
sub.callback(value, sub);
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
42
|
next = this.set;
|
|
38
43
|
toPromise() {
|
|
39
44
|
return new Promise((res, rej) => {
|
|
40
|
-
|
|
45
|
+
this.subscribe((x, subscription) => {
|
|
41
46
|
subscription.unsubscribe();
|
|
42
47
|
res(x);
|
|
43
48
|
});
|
|
44
49
|
});
|
|
45
50
|
}
|
|
51
|
+
// like toPromise but faster
|
|
52
|
+
toCallback(callback) {
|
|
53
|
+
this.subscribe((x, subscription) => {
|
|
54
|
+
subscription.unsubscribe();
|
|
55
|
+
callback(x);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
46
58
|
pipe(...operations) {
|
|
47
59
|
const subject = new Subject();
|
|
48
60
|
subject.methods = operations;
|
|
@@ -51,7 +63,7 @@ export class Subject {
|
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
65
|
function removeSubFromArray(subscribers, callback) {
|
|
54
|
-
const index = subscribers.
|
|
66
|
+
const index = subscribers.findIndex(sub => sub.callback === callback);
|
|
55
67
|
if (index !== -1) {
|
|
56
68
|
subscribers.splice(index, 1);
|
|
57
69
|
}
|
|
@@ -66,6 +78,7 @@ function getSubscription(subject, callback) {
|
|
|
66
78
|
const subscription = () => {
|
|
67
79
|
subscription.unsubscribe();
|
|
68
80
|
};
|
|
81
|
+
subscription.callback = callback;
|
|
69
82
|
subscription.subscriptions = [];
|
|
70
83
|
// Return a function to unsubscribe from the BehaviorSubject
|
|
71
84
|
subscription.unsubscribe = () => {
|
|
@@ -82,14 +95,17 @@ function getSubscription(subject, callback) {
|
|
|
82
95
|
subscription.subscriptions.push(sub);
|
|
83
96
|
return subscription;
|
|
84
97
|
};
|
|
98
|
+
subscription.next = (value) => {
|
|
99
|
+
callback(value, subscription);
|
|
100
|
+
};
|
|
85
101
|
return subscription;
|
|
86
102
|
}
|
|
87
|
-
function runPipedMethods(value,
|
|
103
|
+
function runPipedMethods(value, methods, onComplete) {
|
|
88
104
|
const cloneMethods = [...methods];
|
|
89
105
|
const firstMethod = cloneMethods.shift();
|
|
90
106
|
const next = (newValue) => {
|
|
91
107
|
if (cloneMethods.length) {
|
|
92
|
-
return runPipedMethods(newValue,
|
|
108
|
+
return runPipedMethods(newValue, cloneMethods, onComplete);
|
|
93
109
|
}
|
|
94
110
|
onComplete(newValue);
|
|
95
111
|
// return newValue = next
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subject.class.js","sourceRoot":"","sources":["../../ts/subject/Subject.class.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Subject.class.js","sourceRoot":"","sources":["../../ts/subject/Subject.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export type Resolve<T> = (x: T) => any;
|
|
2
|
-
export type Subscription = (() => void) & {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export type Subscription<T> = (() => void) & {
|
|
3
|
+
callback: SubjectSubscriber<T>;
|
|
4
|
+
unsubscribe: () => Subscription<T>;
|
|
5
|
+
add: (sub: Subscription<T>) => Subscription<T>;
|
|
6
|
+
next: (value?: T) => any;
|
|
7
|
+
subscriptions: Subscription<T>[];
|
|
6
8
|
};
|
|
7
|
-
export type SubjectSubscriber<T> = (value: T, subscription: Subscription) => unknown;
|
|
9
|
+
export type SubjectSubscriber<T> = (value: T, subscription: Subscription<T>) => unknown;
|
|
8
10
|
export interface SubjectLike<T> {
|
|
9
11
|
subscribe?: (callback: SubjectSubscriber<T>) => any;
|
|
10
12
|
isSubject?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Subject.utils.js","sourceRoot":"","sources":["../../ts/subject/Subject.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Subject.utils.js","sourceRoot":"","sources":["../../ts/subject/Subject.utils.ts"],"names":[],"mappings":"AA0CA,MAAM,MAAM;CAAG"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Subject } from './Subject.class';
|
|
2
2
|
import { Subscription } from './Subject.utils';
|
|
3
|
-
type ValueSubjectSubscriber<T> = (value: T, subscription: Subscription) => unknown;
|
|
3
|
+
type ValueSubjectSubscriber<T> = (value: T, subscription: Subscription<T>) => unknown;
|
|
4
4
|
export declare class ValueSubject<T> extends Subject<T> {
|
|
5
5
|
value: T;
|
|
6
6
|
constructor(value: T);
|
|
7
|
-
subscribe(callback: ValueSubjectSubscriber<T>): Subscription
|
|
7
|
+
subscribe(callback: ValueSubjectSubscriber<T>): Subscription<any> | Subscription<T>;
|
|
8
8
|
}
|
|
9
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueSubject.js","sourceRoot":"","sources":["../../ts/subject/ValueSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"ValueSubject.js","sourceRoot":"","sources":["../../ts/subject/ValueSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAUzC,MAAM,OAAO,YAAgB,SAAQ,OAAU;IAC1B;IAAnB,YAAmB,KAAQ;QACzB,KAAK,CAAC,KAAK,CAAC,CAAA;QADK,UAAK,GAAL,KAAK,CAAG;IAE3B,CAAC;IAED,SAAS,CAAC,QAAmC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,QAAgC,CAAC,CAAA;QAEtE,uDAAuD;QACvD,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;QAElC,OAAO,YAAY,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combineLatest.function.js","sourceRoot":"","sources":["../../ts/subject/combineLatest.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,MAAM,UAAU,aAAa,CAC3B,QAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAA;IAE5B,MAAM,SAAS,GAAG,CAChB,QAAgC,EAChC,EAAE;QACF,MAAM,UAAU,GAAW,EAAE,CAAA;QAC7B,MAAM,MAAM,GAAU,EAAE,CAAA;QACxB,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YACzC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEjB,IAAG,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAChC,CAAC;QACH,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAkB,CAAA;QAC/C,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"combineLatest.function.js","sourceRoot":"","sources":["../../ts/subject/combineLatest.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,MAAM,UAAU,aAAa,CAC3B,QAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAA;IAE5B,MAAM,SAAS,GAAG,CAChB,QAAgC,EAChC,EAAE;QACF,MAAM,UAAU,GAAW,EAAE,CAAA;QAC7B,MAAM,MAAM,GAAU,EAAE,CAAA;QACxB,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,KAAa,EAAE,EAAE;YACzC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEjB,IAAG,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAChC,CAAC;QACH,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAkB,CAAA;QAC/C,MAAM,YAAY,GAAsB,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAE/E,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpG,YAAY,CAAC,aAAa,GAAG,aAAa,CAAA;QAE1C,OAAO,YAAY,CAAA;IACrB,CAAC,CAAA;IAED,MAAM,CAAC,aAAa,GAAG,SAAS,CAAA;IAEhC,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { InsertBefore } from "./Clones.type";
|
|
2
|
+
import { TagSupport } from "./TagSupport.class";
|
|
3
|
+
import { TemplaterResult } from "./TemplaterResult.class";
|
|
4
|
+
import { Template } from "./interpolations/interpolateTemplate";
|
|
5
|
+
import { Subject } from "./subject/Subject.class";
|
|
6
|
+
export type WasTagSubject = Subject<TemplaterResult> & {
|
|
7
|
+
tagSupport?: TagSupport;
|
|
8
|
+
};
|
|
9
|
+
export type TagSubject = Subject<TemplaterResult> & {
|
|
10
|
+
tagSupport: TagSupport;
|
|
11
|
+
};
|
|
12
|
+
type RegularValue = string | number | boolean;
|
|
13
|
+
export type DisplaySubject = Subject<RegularValue> & {
|
|
14
|
+
lastValue?: RegularValue;
|
|
15
|
+
clone?: Element | Text | Template;
|
|
16
|
+
insertBefore: InsertBefore;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject.types.js","sourceRoot":"","sources":["../ts/subject.types.ts"],"names":[],"mappings":""}
|
package/js/tag.d.ts
CHANGED
|
@@ -10,5 +10,5 @@ export type TagComponentBase<T extends any[]> = (arg: FirstArgOptional<T> extend
|
|
|
10
10
|
export declare const tags: TagComponentBase<any>[];
|
|
11
11
|
export type TagComponent = TagComponentBase<[any?, TagChildren?]> | TagComponentBase<[]>;
|
|
12
12
|
/** Wraps a tag component in a state manager and always push children to last argument as an array */
|
|
13
|
-
export declare function tag<T extends any[]>(tagComponent: TagComponentArg<T>):
|
|
13
|
+
export declare function tag<T extends any[]>(tagComponent: TagComponentArg<T>): TagComponentBase<T>;
|
|
14
14
|
export {};
|