UNPKG

3.81 kBSource Map (JSON)View Raw
1{"version":3,"file":"ui-router-rx.js","sourceRoot":"","sources":["../src/ui-router-rx.ts"],"names":[],"mappings":";;AAAA,iBAAiB;AACjB,MAAM;AACN,6BAAiD;AACjD,4CAAuD;AAkBvD,oHAAoH;AACpH;IAIE,oBAAY,MAAgB;QAH5B,SAAI,GAAG,cAAc,CAAC;QACd,kBAAa,GAAe,EAAE,CAAC;QAGrC,IAAI,MAAM,GAAG,IAAI,oBAAa,CAAa,CAAC,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAQ,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,cAAM,OAAA,CAAC,EAAD,CAAC,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,EAAnC,CAAmC,CAAC,EAAE,kBAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC,CAAC;QACjG,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAG,CAAC,UAAC,UAAsB,IAAK,OAAA,UAAU,CAAC,MAAM,EAAE,EAAnB,CAAmB,CAAC,CAAC,CAAC;QAElF,IAAI,OAAO,GAAG,IAAI,oBAAa,CAAqB,CAAC,CAAC,CAAC;QAEvD,SAAS,oBAAoB,CAAC,KAAa,EAAE,MAA0B;YACrE,IAAI,WAAW,GAAG;gBAChB,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE;gBACzC,UAAU,EAAE,EAAE;gBACd,YAAY,EAAE,EAAE;aACjB,CAAC;YAEF,IAAI,KAAK;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAA,UAAU,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAvB,CAAuB,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACpF,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,OAAO,SAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,4BAAO,GAAP;QACE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAA,YAAY,IAAI,OAAA,YAAY,EAAE,EAAd,CAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IACH,iBAAC;AAAD,CAAC,AAhCD,IAgCC;AAhCY,gCAAU;AAkCV,QAAA,gBAAgB,GAAG,UAAU,CAAC","sourcesContent":["/** @module rx */\r\n/** */\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { map, mergeMap, filter } from 'rxjs/operators';\r\nimport { Transition, UIRouter, StateDeclaration, UIRouterPlugin } from '@uirouter/core';\r\n\r\nexport interface StatesChangedEvent {\r\n currentStates: StateDeclaration[];\r\n registered: StateDeclaration[];\r\n deregistered: StateDeclaration[];\r\n}\r\n\r\ndeclare module '@uirouter/core/lib/globals' {\r\n interface UIRouterGlobals {\r\n states$?: Observable<StatesChangedEvent>;\r\n start$?: Observable<Transition>;\r\n success$?: Observable<Transition>;\r\n params$?: Observable<{ [paramName: string]: any }>;\r\n }\r\n}\r\n\r\n/** Augments UIRouterGlobals with observables for transition starts, successful transitions, and state parameters */\r\nexport class UIRouterRx implements UIRouterPlugin {\r\n name = '@uirouter/rx';\r\n private deregisterFns: Function[] = [];\r\n\r\n constructor(router: UIRouter) {\r\n let start$ = new ReplaySubject<Transition>(1);\r\n let success$ = start$.pipe(mergeMap(t => t.promise.then(() => t, () => null)), filter(t => !!t));\r\n let params$ = success$.pipe(map((transition: Transition) => transition.params()));\r\n\r\n let states$ = new ReplaySubject<StatesChangedEvent>(1);\r\n\r\n function onStatesChangedEvent(event: string, states: StateDeclaration[]) {\r\n let changeEvent = {\r\n currentStates: router.stateRegistry.get(),\r\n registered: [],\r\n deregistered: [],\r\n };\r\n\r\n if (event) changeEvent[event] = states;\r\n states$.next(changeEvent);\r\n }\r\n\r\n this.deregisterFns.push(router.transitionService.onStart({}, transition => start$.next(transition)));\r\n this.deregisterFns.push(router.stateRegistry.onStatesChanged(onStatesChangedEvent));\r\n onStatesChangedEvent(null, null);\r\n Object.assign(router.globals, { start$, success$, params$, states$ });\r\n }\r\n\r\n dispose() {\r\n this.deregisterFns.forEach(deregisterFn => deregisterFn());\r\n this.deregisterFns = [];\r\n }\r\n}\r\n\r\nexport const UIRouterRxPlugin = UIRouterRx;\r\n"]}
\No newline at end of file