+28
-5
@@ -5,6 +5,15 @@ | ||
| interface UpdateStateOptions { | ||
| rerender?: boolean | ||
| } | ||
| interface NodeAndUpdateValue { | ||
| node: string, | ||
| updateValue: any | ||
| } | ||
| export let globalState: any = {}; | ||
| let stateSubsId = 0; | ||
| let stateSubs: {[key: number]: any} = {}; | ||
| let stateSubs: { [key: number]: any } = {}; | ||
| let stateManager = { | ||
@@ -29,13 +38,27 @@ subscribe: (func: any) => { | ||
| export const setState = (newState: any) => { | ||
| const setState = (newState: any, options?: UpdateStateOptions) => { | ||
| globalState = newState; | ||
| stateManager.emit(); | ||
| if (options && !options.rerender) { | ||
| // don't rerender | ||
| } else { | ||
| stateManager.emit(); | ||
| } | ||
| }; | ||
| export const updateState= (node: string, newState: any) => { | ||
| export const updateState = (node: string, newState: any, options?: UpdateStateOptions) => { | ||
| setState( | ||
| iu(getState(), node, newState) | ||
| iu(getState(), node, newState), options | ||
| ); | ||
| } | ||
| export const updateMulti = (nodeAndUpdateValues: NodeAndUpdateValue[], options?: UpdateStateOptions) => { | ||
| nodeAndUpdateValues.forEach((nodeAndUpdateValue, i) => { | ||
| setState( | ||
| iu(getState(), nodeAndUpdateValue.node, nodeAndUpdateValue.updateValue), ( | ||
| nodeAndUpdateValues.length - 1 === i ? options : Object.assign({}, options, { rerender: false}) | ||
| ) | ||
| ); | ||
| }); | ||
| } | ||
| export const app = (initialState: any, view: any, container: any) => { | ||
@@ -42,0 +65,0 @@ |
+1
-1
| { | ||
| "name": "hyperwrap", | ||
| "version": "1.0.4", | ||
| "version": "1.0.5", | ||
| "description": "Makes React simple and functional", | ||
@@ -5,0 +5,0 @@ "main": "index.tsx", |
5144
16.49%64
45.45%