vast 1.0.20 → 1.0.21
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/dist/cjs/vast.development.js +1 -0
- package/dist/cjs/vast.development.js.map +1 -0
- package/dist/cjs/vast.production.js +1 -0
- package/dist/cjs/vast.production.js.map +1 -0
- package/dist/es/vast.development.js +1 -0
- package/dist/es/vast.development.js.map +1 -0
- package/dist/es/vast.production.js +1 -0
- package/dist/es/vast.production.js.map +1 -0
- package/dist/umd/vast.development.js +1 -0
- package/dist/umd/vast.development.js.map +1 -0
- package/dist/umd/vast.production.js +1 -0
- package/dist/umd/vast.production.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.development.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":["optionalFunctionValue","isFunction"],"mappings":";;;;AAQA;AACM,SAAU,WAAW,CACzB,aAA+C,EAAA;AAE/C,IAAA,MAAM,KAAK,GAEP;AACF,QAAA,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,MAAM,aAAa,GAGb,EAAE,CAAC;IAET,OAAO;QACL,gBAAgB;QAChB,KAAK;KACN,CAAC;AAEF;;;;;;;;;;;;AAYG;AACH,IAAA,SAAS,gBAAgB,CACvB,YAAmC,EACnC,QAAqB,EAAA;AAErB,QAAA,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;KACnC;AAED,IAAA,SAAS,KAAK,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AACvB,QAAA,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,KAC1C,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;KACH;AAED,IAAA,SAAS,OAAO,CACd,GAAW,EACX,YAAmC,EACnC,SAAoB,EAAA;AAEpB,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,GAAG,EAAEA,+BAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;AAEzD,QAAA,OAAO,SAAS,WAAW,GAAA;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,CAAC;AACd,gBAAA,CAAC,SAA2B,KAC1B,GAAG,CAAC,GAAG,EAAEA,+BAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7D,CAAC;AACJ,SAAC,CAAC;KACH;AAED,IAAA,SAAS,OAAO,GAAA;QACd,OAAO,KAAK,CAAC,UAAU,CAAC;KACzB;AAED,IAAA,SAAS,GAAG,CAAC,KAAa,EAAE,KAAc,EAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAIC,oBAAU,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAIA,oBAAU,CAAC,aAAa,CAAC,EAAE;AAC7B,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;KACF;AACH;;;;"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
"use strict";var e=require("vest-utils");exports.createState=function(n){const t={references:[]},r=[];return{registerStateKey:function(e,n){const t=r.length;return r.push([e,n]),c(t,e)},reset:function(){const e=u();t.references=[],r.forEach((([n],t)=>c(t,n,e[t])))}};function c(n,t,r){return u().push(),o(n,e.optionalFunctionValue(t,r)),function(){return[u()[n],t=>o(n,e.optionalFunctionValue(t,u()[n]))]}}function u(){return t.references}function o(c,u){const o=t.references[c];t.references[c]=u;const[,s]=r[c];e.isFunction(s)&&s(u,o),e.isFunction(n)&&n()}};
|
|
2
|
+
//# sourceMappingURL=vast.production.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.production.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":["onStateChange","state","references","registrations","registerStateKey","initialState","onUpdate","key","length","push","initKey","reset","prev","current","forEach","initialValue","index","prevState","set","optionalFunctionValue","nextState","value","prevValue","isFunction"],"mappings":"6DASM,SACJA,GAEA,MAAMC,EAEF,CACFC,WAAY,IAGRC,EAGA,GAEN,MAAO,CACLC,iBAiBF,SACEC,EACAC,GAEA,MAAMC,EAAMJ,EAAcK,OAE1B,OADAL,EAAcM,KAAK,CAACJ,EAAcC,IAC3BI,EAAQH,EAAKF,EACrB,EAvBCM,MAyBF,WACE,MAAMC,EAAOC,IACbZ,EAAMC,WAAa,GACnBC,EAAcW,SAAQ,EAAEC,GAAeC,IACrCN,EAAQM,EAAOD,EAAcH,EAAKI,KAErC,GAED,SAASN,EACPH,EACAF,EACAY,GAKA,OAHAJ,IAAUJ,OACVS,EAAIX,EAAKY,EAAAA,sBAAsBd,EAAcY,IAEtC,WACL,MAAO,CACLJ,IAAUN,GACTa,GACCF,EAAIX,EAAKY,EAAAA,sBAAsBC,EAAWP,IAAUN,KAE1D,CACD,CAED,SAASM,IACP,OAAOZ,EAAMC,UACd,CAED,SAASgB,EAAIF,EAAeK,GAC1B,MAAMC,EAAYrB,EAAMC,WAAWc,GACnCf,EAAMC,WAAWc,GAASK,EAE1B,OAASf,GAAYH,EAAca,GAE/BO,EAAAA,WAAWjB,IACbA,EAASe,EAAOC,GAGdC,EAAAA,WAAWvB,IACbA,GAEH,CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.development.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":[],"mappings":";;AAQA;AACM,SAAU,WAAW,CACzB,aAA+C,EAAA;AAE/C,IAAA,MAAM,KAAK,GAEP;AACF,QAAA,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,MAAM,aAAa,GAGb,EAAE,CAAC;IAET,OAAO;QACL,gBAAgB;QAChB,KAAK;KACN,CAAC;AAEF;;;;;;;;;;;;AAYG;AACH,IAAA,SAAS,gBAAgB,CACvB,YAAmC,EACnC,QAAqB,EAAA;AAErB,QAAA,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;KACnC;AAED,IAAA,SAAS,KAAK,GAAA;AACZ,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;AACvB,QAAA,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,KAC1C,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;KACH;AAED,IAAA,SAAS,OAAO,CACd,GAAW,EACX,YAAmC,EACnC,SAAoB,EAAA;AAEpB,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;AAEzD,QAAA,OAAO,SAAS,WAAW,GAAA;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,CAAC;AACd,gBAAA,CAAC,SAA2B,KAC1B,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7D,CAAC;AACJ,SAAC,CAAC;KACH;AAED,IAAA,SAAS,OAAO,GAAA;QACd,OAAO,KAAK,CAAC,UAAU,CAAC;KACzB;AAED,IAAA,SAAS,GAAG,CAAC,KAAa,EAAE,KAAc,EAAA;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAEhC,MAAM,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AACxB,YAAA,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;AAC7B,YAAA,aAAa,EAAE,CAAC;AACjB,SAAA;KACF;AACH;;;;"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
import{optionalFunctionValue as e,isFunction as n}from"vest-utils";function r(r){const t={references:[]},c=[];return{registerStateKey:function(e,n){const r=c.length;return c.push([e,n]),o(r,e)},reset:function(){const e=s();t.references=[],c.forEach((([n],r)=>o(r,n,e[r])))}};function o(n,r,t){return s().push(),u(n,e(r,t)),function(){return[s()[n],r=>u(n,e(r,s()[n]))]}}function s(){return t.references}function u(e,o){const s=t.references[e];t.references[e]=o;const[,u]=c[e];n(u)&&u(o,s),n(r)&&r()}}export{r as createState};
|
|
2
|
+
//# sourceMappingURL=vast.production.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.production.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":["createState","onStateChange","state","references","registrations","registerStateKey","initialState","onUpdate","key","length","push","initKey","reset","prev","current","forEach","initialValue","index","prevState","set","optionalFunctionValue","nextState","value","prevValue","isFunction"],"mappings":"mEASM,SAAUA,EACdC,GAEA,MAAMC,EAEF,CACFC,WAAY,IAGRC,EAGA,GAEN,MAAO,CACLC,iBAiBF,SACEC,EACAC,GAEA,MAAMC,EAAMJ,EAAcK,OAE1B,OADAL,EAAcM,KAAK,CAACJ,EAAcC,IAC3BI,EAAQH,EAAKF,EACrB,EAvBCM,MAyBF,WACE,MAAMC,EAAOC,IACbZ,EAAMC,WAAa,GACnBC,EAAcW,SAAQ,EAAEC,GAAeC,IACrCN,EAAQM,EAAOD,EAAcH,EAAKI,KAErC,GAED,SAASN,EACPH,EACAF,EACAY,GAKA,OAHAJ,IAAUJ,OACVS,EAAIX,EAAKY,EAAsBd,EAAcY,IAEtC,WACL,MAAO,CACLJ,IAAUN,GACTa,GACCF,EAAIX,EAAKY,EAAsBC,EAAWP,IAAUN,KAE1D,CACD,CAED,SAASM,IACP,OAAOZ,EAAMC,UACd,CAED,SAASgB,EAAIF,EAAeK,GAC1B,MAAMC,EAAYrB,EAAMC,WAAWc,GACnCf,EAAMC,WAAWc,GAASK,EAE1B,OAASf,GAAYH,EAAca,GAE/BO,EAAWjB,IACbA,EAASe,EAAOC,GAGdC,EAAWvB,IACbA,GAEH,CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.development.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":["optionalFunctionValue","isFunction"],"mappings":";;;;;;EAQA;EACM,SAAU,WAAW,CACzB,aAA+C,EAAA;EAE/C,IAAA,MAAM,KAAK,GAEP;EACF,QAAA,UAAU,EAAE,EAAE;OACf,CAAC;MAEF,MAAM,aAAa,GAGb,EAAE,CAAC;MAET,OAAO;UACL,gBAAgB;UAChB,KAAK;OACN,CAAC;EAEF;;;;;;;;;;;;EAYG;EACH,IAAA,SAAS,gBAAgB,CACvB,YAAmC,EACnC,QAAqB,EAAA;EAErB,QAAA,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC;UACjC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;EAC7C,QAAA,OAAO,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;OACnC;EAED,IAAA,SAAS,KAAK,GAAA;EACZ,QAAA,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;EACvB,QAAA,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;UACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,KAC1C,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;OACH;EAED,IAAA,SAAS,OAAO,CACd,GAAW,EACX,YAAmC,EACnC,SAAoB,EAAA;EAEpB,QAAA,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;UACjB,GAAG,CAAC,GAAG,EAAEA,+BAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;EAEzD,QAAA,OAAO,SAAS,WAAW,GAAA;cACzB,OAAO;kBACL,OAAO,EAAE,CAAC,GAAG,CAAC;EACd,gBAAA,CAAC,SAA2B,KAC1B,GAAG,CAAC,GAAG,EAAEA,+BAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;eAC7D,CAAC;EACJ,SAAC,CAAC;OACH;EAED,IAAA,SAAS,OAAO,GAAA;UACd,OAAO,KAAK,CAAC,UAAU,CAAC;OACzB;EAED,IAAA,SAAS,GAAG,CAAC,KAAa,EAAE,KAAc,EAAA;UACxC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;EAC1C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;UAEhC,MAAM,GAAG,QAAQ,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;EAE1C,QAAA,IAAIC,oBAAU,CAAC,QAAQ,CAAC,EAAE;EACxB,YAAA,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;EAC5B,SAAA;EAED,QAAA,IAAIA,oBAAU,CAAC,aAAa,CAAC,EAAE;EAC7B,YAAA,aAAa,EAAE,CAAC;EACjB,SAAA;OACF;EACH;;;;;;;;"}
|
|
@@ -1 +1,2 @@
|
|
|
1
1
|
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vest-utils")):"function"==typeof define&&define.amd?define(["exports","vest-utils"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).vast={},e["vest-utils"])}(this,(function(e,n){"use strict";e.createState=function(e){const t={references:[]},o=[];return{registerStateKey:function(e,n){const t=o.length;return o.push([e,n]),i(t,e)},reset:function(){const e=s();t.references=[],o.forEach((([n],t)=>i(t,n,e[t])))}};function i(e,t,o){return s().push(),r(e,n.optionalFunctionValue(t,o)),function(){return[s()[e],t=>r(e,n.optionalFunctionValue(t,s()[e]))]}}function s(){return t.references}function r(i,s){const r=t.references[i];t.references[i]=s;const[,u]=o[i];n.isFunction(u)&&u(s,r),n.isFunction(e)&&e()}}}));
|
|
2
|
+
//# sourceMappingURL=vast.production.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vast.production.js","sources":["../../src/vast.ts"],"sourcesContent":["import {\n CB,\n DynamicValue,\n Maybe,\n isFunction,\n optionalFunctionValue,\n} from 'vest-utils';\n\n// eslint-disable-next-line max-lines-per-function\nexport function createState(\n onStateChange?: (...args: unknown[]) => unknown\n): CreateStateReturn {\n const state: {\n references: unknown[];\n } = {\n references: [],\n };\n\n const registrations: [\n unknown,\n (<S>(currentState: S, prevState: S) => void)?\n ][] = [];\n\n return {\n registerStateKey,\n reset,\n };\n\n /**\n * Registers a new key in the state, takes the initial value (may be a function that returns the initial value), returns a function.\n *\n * @example\n *\n * const useColor = state.registerStateKey(\"blue\");\n *\n * let [color, setColor] = useColor(); // -> [\"blue\", Function]\n *\n * setColor(\"green\");\n *\n * useColor()[0]; -> \"green\"\n */\n function registerStateKey<S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ): CB<StateHandlerReturn<S>> {\n const key = registrations.length;\n registrations.push([initialState, onUpdate]);\n return initKey(key, initialState);\n }\n\n function reset(): void {\n const prev = current();\n state.references = [];\n registrations.forEach(([initialValue], index) =>\n initKey(index, initialValue, prev[index])\n );\n }\n\n function initKey<S>(\n key: number,\n initialState?: Maybe<StateInput<S>>,\n prevState?: Maybe<S>\n ) {\n current().push();\n set(key, optionalFunctionValue(initialState, prevState));\n\n return function useStateKey(): StateHandlerReturn<S> {\n return [\n current()[key],\n (nextState: SetStateInput<S>) =>\n set(key, optionalFunctionValue(nextState, current()[key])),\n ];\n };\n }\n\n function current(): any[] {\n return state.references;\n }\n\n function set(index: number, value: unknown): void {\n const prevValue = state.references[index];\n state.references[index] = value;\n\n const [, onUpdate] = registrations[index];\n\n if (isFunction(onUpdate)) {\n onUpdate(value, prevValue);\n }\n\n if (isFunction(onStateChange)) {\n onStateChange();\n }\n }\n}\n\ntype StateInput<S> = DynamicValue<S, [prevState?: S]>;\ntype SetStateInput<S> = DynamicValue<S, [prevState: S]>;\n\nexport type State = CreateStateReturn;\nexport type StateHandlerReturn<S> = [S, (nextState: SetStateInput<S>) => void];\nexport type UseState<S> = CB<StateHandlerReturn<S>>;\n\ntype CreateStateReturn = {\n reset: () => void;\n registerStateKey: <S>(\n initialState?: Maybe<StateInput<S>>,\n onUpdate?: () => void\n ) => CB<StateHandlerReturn<S>>;\n};\n"],"names":["onStateChange","state","references","registrations","registerStateKey","initialState","onUpdate","key","length","push","initKey","reset","prev","current","forEach","initialValue","index","prevState","set","optionalFunctionValue","nextState","value","prevValue","isFunction"],"mappings":"+SASM,SACJA,GAEA,MAAMC,EAEF,CACFC,WAAY,IAGRC,EAGA,GAEN,MAAO,CACLC,iBAiBF,SACEC,EACAC,GAEA,MAAMC,EAAMJ,EAAcK,OAE1B,OADAL,EAAcM,KAAK,CAACJ,EAAcC,IAC3BI,EAAQH,EAAKF,EACrB,EAvBCM,MAyBF,WACE,MAAMC,EAAOC,IACbZ,EAAMC,WAAa,GACnBC,EAAcW,SAAQ,EAAEC,GAAeC,IACrCN,EAAQM,EAAOD,EAAcH,EAAKI,KAErC,GAED,SAASN,EACPH,EACAF,EACAY,GAKA,OAHAJ,IAAUJ,OACVS,EAAIX,EAAKY,EAAAA,sBAAsBd,EAAcY,IAEtC,WACL,MAAO,CACLJ,IAAUN,GACTa,GACCF,EAAIX,EAAKY,EAAAA,sBAAsBC,EAAWP,IAAUN,KAE1D,CACD,CAED,SAASM,IACP,OAAOZ,EAAMC,UACd,CAED,SAASgB,EAAIF,EAAeK,GAC1B,MAAMC,EAAYrB,EAAMC,WAAWc,GACnCf,EAAMC,WAAWc,GAASK,EAE1B,OAASf,GAAYH,EAAca,GAE/BO,EAAAA,WAAWjB,IACbA,EAASe,EAAOC,GAGdC,EAAAA,WAAWvB,IACbA,GAEH,CACH"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.21",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "./dist/cjs/vast.js",
|
|
5
5
|
"types": "./types/vast.d.ts",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"url": "https://github.com/ealush/vest.git/issues"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"vest-utils": "^1.0.
|
|
22
|
+
"vest-utils": "^1.0.3"
|
|
23
23
|
},
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|