UNPKG

oo-redux-utils

Version:

Utility functions for Object-oriented Redux

1 lines 3.76 kB
{"version":3,"sources":["../src/OOReduxUtils.js"],"names":["createStateReducer","initialState","actionBaseClasses","stateNamespace","currentState","action","type","getStateNamespace","performActionAndReturnNewState","OOReduxUtils","ownState","foreignState","overlappingOwnAndForeignStateKeys","Object","keys","filter","ownStateKey","includes","length","Error"],"mappings":";;;;;;;AAEA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;AAEA,SAASA,mBAAT,CACEC,YADF,EAEEC,iBAFF,EAGEC,cAHF,EAIiD;AAC/C,SAAO,YAAkF;AAAA,QAAzEC,YAAyE,uEAA/CH,YAA+C;AAAA,QAAjCI,MAAiC;AACvF,WAAO,CAACA,MAAM,CAACC,IAAP,YAAuBJ,iBAAiB,CAAC,CAAD,CAAxC,IACLA,iBAAiB,CAAC,CAAD,CAAjB,IAAwBG,MAAM,CAACC,IAAP,YAAuBJ,iBAAiB,CAAC,CAAD,CAD5D,KAELG,MAAM,CAACC,IAAP,CAAYC,iBAAZ,OAAoCJ,cAF/B,GAGHE,MAAM,CAACC,IAAP,CAAYE,8BAAZ,CAA2CJ,YAA3C,CAHG,GAIHA,YAJJ;AAKD,GAND;AAOD;;IAEoBK,Y;;;;;;;;;AACnB;4CAEEC,Q,EACAC,Y,EACkD;AAClD,UAAMC,iCAAiC,GAAGC,MAAM,CAACC,IAAP,CAAYJ,QAAZ,EAAsBK,MAAtB,CAA6B,UAACC,WAAD;AAAA,eACrEH,MAAM,CAACC,IAAP,CAAYH,YAAZ,EAA0BM,QAA1B,CAAmCD,WAAnC,CADqE;AAAA,OAA7B,CAA1C;;AAIA,UAAIJ,iCAAiC,CAACM,MAAlC,GAA2C,CAA/C,EAAkD;AAChD,cAAM,IAAIC,KAAJ,CAAU,6DAAV,CAAN;AACD;;AAED,+BACKT,QADL,MAEKC,YAFL;AAID,K,CAED;;;;uCAEEV,Y,EACAC,iB,EAC+C;AAC/C,aAAOF,mBAAkB,CAACC,YAAD,EAAeC,iBAAf,EAAkC,EAAlC,CAAzB;AACD,K,CAED;;;;iDAEED,Y,EACAC,iB,EACAC,c,EAC+C;AAC/C,aAAOH,mBAAkB,CAACC,YAAD,EAAeC,iBAAf,EAAkCC,cAAlC,CAAzB;AACD","sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport AbstractAction from './AbstractAction';\nimport type { ActionObject } from './Dispatch';\nimport AbstractDispatchingAction from './AbstractDispatchingAction';\n\nfunction createStateReducer<StateType, StateNamespaceType: string>(\n initialState: StateType,\n actionBaseClasses: [Class<AbstractAction<any, any>>, ?Class<AbstractDispatchingAction<any, any>>],\n stateNamespace: StateNamespaceType\n): (StateType | void, ActionObject) => StateType {\n return function(currentState: StateType = initialState, action: ActionObject): StateType {\n return (action.type instanceof actionBaseClasses[0] ||\n (actionBaseClasses[1] && action.type instanceof actionBaseClasses[1])) &&\n action.type.getStateNamespace() === stateNamespace\n ? action.type.performActionAndReturnNewState(currentState)\n : currentState;\n };\n}\n\nexport default class OOReduxUtils {\n // noinspection JSUnusedGlobalSymbols\n static mergeOwnAndForeignState<OwnStateType: Object, ForeignStateType: Object>(\n ownState: OwnStateType,\n foreignState: ForeignStateType\n ): $Exact<{ ...OwnStateType, ...ForeignStateType }> {\n const overlappingOwnAndForeignStateKeys = Object.keys(ownState).filter((ownStateKey: string) =>\n Object.keys(foreignState).includes(ownStateKey)\n );\n\n if (overlappingOwnAndForeignStateKeys.length > 0) {\n throw new Error('One or more overlapping properties in own and foreign state');\n }\n\n return {\n ...ownState,\n ...foreignState\n };\n }\n\n // noinspection JSUnusedGlobalSymbols\n static createStateReducer<StateType>(\n initialState: StateType,\n actionBaseClasses: [Class<AbstractAction<any, any>>, ?Class<AbstractDispatchingAction<any, any>>]\n ): (StateType | void, ActionObject) => StateType {\n return createStateReducer(initialState, actionBaseClasses, '');\n }\n\n // noinspection JSUnusedGlobalSymbols\n static createNamespacedStateReducer<StateType, StateNamespaceType: string>(\n initialState: StateType,\n actionBaseClasses: [Class<AbstractAction<any, any>>, ?Class<AbstractDispatchingAction<any, any>>],\n stateNamespace: StateNamespaceType\n ): (StateType | void, ActionObject) => StateType {\n return createStateReducer(initialState, actionBaseClasses, stateNamespace);\n }\n}\n"],"file":"OOReduxUtils.js"}