@angular-wave/angular.ts 0.0.16 → 0.0.18
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/README.md +5 -3
- package/dist/angular-ts.esm.js +1 -1
- package/dist/angular-ts.umd.js +1 -1
- package/index.html +66 -57
- package/package.json +1 -1
- package/rollup.config.js +2 -6
- package/src/animations/animate-children-directive.js +1 -1
- package/src/animations/animate-css-driver.js +1 -1
- package/src/animations/animate-css.js +220 -15
- package/src/animations/animate-js-driver.js +1 -1
- package/src/animations/animate-js.js +2 -2
- package/src/animations/animate-queue.js +3 -4
- package/src/animations/animation.js +1 -1
- package/src/animations/module.js +750 -0
- package/src/animations/shared.js +15 -4
- package/src/core/animate-runner.js +1 -1
- package/src/core/animate.js +4 -5
- package/src/core/compile.js +6 -7
- package/src/core/controller.js +4 -3
- package/src/core/filter.js +1 -1
- package/src/core/interpolate.js +1 -1
- package/src/core/interval-factory.js +1 -1
- package/src/core/interval.js +1 -1
- package/src/core/location.js +1 -1
- package/src/core/parser/parse.js +1 -1
- package/src/core/q.js +2 -3
- package/src/core/root-scope.js +1 -1
- package/src/core/sanitize-uri.js +1 -1
- package/src/core/sce.js +1 -1
- package/src/core/task-tracker-factory.js +1 -1
- package/src/core/timeout.js +1 -1
- package/src/core/urlUtils.js +1 -1
- package/src/directive/attrs.js +1 -1
- package/src/directive/bind.js +1 -1
- package/src/directive/class.js +2 -2
- package/src/directive/events.js +1 -1
- package/src/directive/form.js +1 -1
- package/src/directive/include.js +1 -1
- package/src/directive/input.js +1 -1
- package/src/directive/list.js +2 -2
- package/src/directive/model-options.js +1 -1
- package/src/directive/model.js +1 -1
- package/src/directive/options.js +2 -3
- package/src/directive/ref.js +1 -1
- package/src/directive/repeat.js +1 -1
- package/src/directive/select.js +1 -1
- package/src/directive/switch.js +1 -1
- package/src/directive/transclude.js +1 -1
- package/src/directive/validators.js +1 -1
- package/src/exts/aria.js +1 -1
- package/src/exts/messages.js +3 -3
- package/src/exts/messages.md +28 -31
- package/src/filters/filter.js +2 -3
- package/src/filters/filters.js +1 -1
- package/src/filters/limit-to.js +1 -1
- package/src/filters/order-by.js +2 -3
- package/src/injector.js +8 -9
- package/src/jqLite.js +3 -4
- package/src/loader.js +2 -4
- package/src/public.js +1 -1
- package/src/router/common/coreservices.js +5 -0
- package/src/router/{core/common → common}/queue.js +1 -1
- package/src/router/{core/common → common}/trace.js +21 -19
- package/src/router/{adapter/directives → directives}/stateDirectives.js +24 -28
- package/src/router/{adapter/directives → directives}/viewDirective.js +10 -9
- package/src/router/{core/globals.js → globals.js} +13 -3
- package/src/router/{core/hooks → hooks}/coreResolvables.js +6 -4
- package/src/router/{core/hooks → hooks}/lazyLoad.js +5 -2
- package/src/router/{core/hooks → hooks}/redirectTo.js +1 -1
- package/src/router/{core/hooks → hooks}/resolve.js +5 -4
- package/src/router/{core/hooks → hooks}/updateGlobals.js +1 -1
- package/src/router/{core/hooks → hooks}/views.js +2 -3
- package/src/router/index.js +60 -0
- package/src/router/{adapter/injectables.js → injectables.js} +9 -9
- package/src/router/{adapter/locationServices.js → locationServices.js} +19 -12
- package/src/router/{core/params → params}/param.js +5 -10
- package/src/router/{core/params → params}/paramType.js +4 -4
- package/src/router/{core/params → params}/paramTypes.js +4 -3
- package/src/router/{core/params → params}/stateParams.js +1 -1
- package/src/router/{core/path → path}/pathNode.js +2 -2
- package/src/router/{core/path → path}/pathUtils.js +13 -7
- package/src/router/{core/resolve → resolve}/resolvable.js +5 -5
- package/src/router/{core/resolve → resolve}/resolveContext.js +16 -6
- package/src/router/router.js +171 -72
- package/src/router/{adapter/services.js → services.js} +47 -27
- package/src/router/{core/state → state}/stateBuilder.js +14 -10
- package/src/router/{core/state → state}/stateMatcher.js +2 -3
- package/src/router/{core/state → state}/stateObject.js +8 -6
- package/src/router/{core/state → state}/stateQueueManager.js +3 -3
- package/src/router/{core/state → state}/stateRegistry.js +6 -7
- package/src/router/{core/state → state}/stateService.js +12 -15
- package/src/router/{core/state → state}/targetState.js +2 -2
- package/src/router/{adapter/statebuilders → state}/views.js +17 -15
- package/src/router/{adapter/stateProvider.js → stateProvider.js} +51 -9
- package/src/router/{adapter/templateFactory.js → templateFactory.js} +10 -19
- package/src/router/{core/transition → transition}/hookBuilder.js +4 -3
- package/src/router/{core/transition → transition}/hookRegistry.js +3 -6
- package/src/router/{core/transition → transition}/rejectFactory.js +4 -5
- package/src/router/{core/transition → transition}/transition.js +10 -12
- package/src/router/{core/transition → transition}/transitionHook.js +4 -4
- package/src/router/{core/transition → transition}/transitionService.js +13 -13
- package/src/router/{core/url → url}/urlConfig.js +28 -19
- package/src/router/{core/url → url}/urlMatcher.js +14 -16
- package/src/router/{core/url → url}/urlMatcherFactory.js +7 -6
- package/src/router/{core/url → url}/urlRouter.js +6 -30
- package/src/router/{core/url → url}/urlRule.js +3 -3
- package/src/router/{core/url → url}/urlRules.js +10 -11
- package/src/router/{core/url → url}/urlService.js +12 -6
- package/src/router/{core/view → view}/view.js +32 -27
- package/src/router/{adapter/viewScroll.js → viewScroll.js} +3 -0
- package/src/services/anchor-scroll.js +1 -1
- package/src/services/browser.js +1 -1
- package/src/services/cache-factory.js +7 -1
- package/src/services/cookie-reader.js +1 -1
- package/src/services/http-backend.js +6 -1
- package/src/services/http.js +4 -5
- package/src/services/log.js +1 -1
- package/src/services/template-request.js +2 -2
- package/src/{router/core/common → shared}/common.js +35 -16
- package/src/{router/core/common → shared}/predicates.js +2 -12
- package/src/{router/core/common → shared}/strings.js +5 -13
- package/src/{core → shared}/utils.js +13 -29
- package/test/angular.spec.js +1 -31
- package/test/{ng → core}/animate.spec.js +1 -1
- package/test/{ng → core}/compile.spec.js +2 -3
- package/test/{ng → core}/http.spec.js +2 -2
- package/test/{ng → core}/on.spec.js +1 -1
- package/test/{ng → core}/parse.spec.js +1 -1
- package/test/{ng → core}/prop.spec.js +1 -1
- package/test/{ng → core}/scope.spec.js +1 -1
- package/test/{ng/directive → directive}/a.spec.js +4 -4
- package/test/{ng/directive → directive}/bind.spec.js +3 -3
- package/test/{ng/directive → directive}/boolean.spec.js +2 -2
- package/test/{ng/directive → directive}/change.spec.js +3 -3
- package/test/{ng/directive → directive}/class.spec.js +4 -4
- package/test/{ng/directive → directive}/click.spec.js +3 -3
- package/test/{ng/directive → directive}/cloak.spec.js +4 -4
- package/test/{ng/directive → directive}/constoller.spec.js +5 -5
- package/test/{ng/directive → directive}/element-style.spec.js +3 -3
- package/test/{ng/directive → directive}/event.spec.js +4 -4
- package/test/{ng/directive → directive}/form.spec.js +5 -5
- package/test/{ng/directive → directive}/href.spec.js +4 -4
- package/test/{ng/directive → directive}/if.spec.js +5 -5
- package/test/{ng/directive → directive}/include.spec.js +5 -5
- package/test/{ng/directive → directive}/init.spec.js +4 -4
- package/test/{ng/directive → directive}/input.spec.js +5 -5
- package/test/{ng/directive → directive}/list.spec.js +3 -3
- package/test/{ng/directive → directive}/model-options.spec.js +6 -6
- package/test/{ng/directive → directive}/model.spec.js +8 -8
- package/test/{ng/directive → directive}/non-bindable.spec.js +3 -3
- package/test/{ng/directive → directive}/options.spec.js +5 -5
- package/test/{ng/directive → directive}/ref.spec.js +2 -2
- package/test/{ng/directive → directive}/repeat.spec.js +5 -5
- package/test/{ng/directive → directive}/script.spec.js +3 -3
- package/test/{ng/directive → directive}/scrset.spec.js +3 -3
- package/test/{ng/directive → directive}/select.spec.js +5 -5
- package/test/{ng/directive → directive}/show-hide.spec.js +3 -3
- package/test/{ng/directive → directive}/src.spec.js +3 -3
- package/test/{ng/directive → directive}/style.spec.js +3 -3
- package/test/{ng/directive → directive}/switch.spec.js +3 -3
- package/test/{ng/directive → directive}/validators.spec.js +3 -3
- package/test/{ng/filter → filter}/filter.spec.js +4 -4
- package/test/{ng/filter → filter}/filters.spec.js +3 -3
- package/test/{ng/filter → filter}/limit-to.spec.js +3 -3
- package/test/{ng/filter → filter}/order-by.spec.js +2 -2
- package/test/injector.spec.js +1 -1
- package/test/jqlite.spec.js +1 -1
- package/test/messages/messages.spec.js +1 -1
- package/test/min-err.spec.js +1 -1
- package/test/original-test.html +4 -4
- package/test/router/glob.spec.js +78 -0
- package/test/router/state.spec.js +1010 -0
- package/test/sanitize/bing-html.spec.js +1 -1
- package/test/shared/common.spec.js +283 -0
- package/test/shared/hof.spec.js +60 -0
- package/test/shared/strings.spec.js +40 -0
- package/test/{ng → shared}/utils.spec.js +1 -1
- package/types/index.d.ts +1 -1
- package/types/router/angular.d.ts +1 -0
- package/types/router/core/common/common.d.ts +370 -0
- package/types/router/core/common/coreservices.d.ts +80 -0
- package/types/router/core/common/glob.d.ts +60 -0
- package/types/router/core/common/hof.d.ts +160 -0
- package/types/router/core/common/index.d.ts +8 -0
- package/types/router/core/common/predicates.d.ts +25 -0
- package/types/router/core/common/queue.d.ts +15 -0
- package/types/router/core/common/safeConsole.d.ts +5 -0
- package/types/router/core/common/strings.d.ts +64 -0
- package/types/router/core/common/trace.d.ts +114 -0
- package/types/router/core/globals.d.ts +45 -0
- package/types/router/core/hooks/coreResolvables.d.ts +4 -0
- package/types/router/core/hooks/ignoredTransition.d.ts +2 -0
- package/types/router/core/hooks/invalidTransition.d.ts +2 -0
- package/types/router/core/hooks/lazyLoad.d.ts +12 -0
- package/types/router/core/hooks/onEnterExitRetain.d.ts +4 -0
- package/types/router/core/hooks/redirectTo.d.ts +2 -0
- package/types/router/core/hooks/resolve.d.ts +5 -0
- package/types/router/core/hooks/updateGlobals.d.ts +2 -0
- package/types/router/core/hooks/url.d.ts +2 -0
- package/types/router/core/hooks/views.d.ts +3 -0
- package/types/router/core/index.d.ts +12 -0
- package/types/router/core/interface.d.ts +102 -0
- package/types/router/core/params/index.d.ts +12 -0
- package/types/router/core/params/interface.d.ts +606 -0
- package/types/router/core/params/param.d.ts +65 -0
- package/types/router/core/params/paramType.d.ts +65 -0
- package/types/router/core/params/paramTypes.d.ts +190 -0
- package/types/router/core/params/stateParams.d.ts +15 -0
- package/types/router/core/path/index.d.ts +2 -0
- package/types/router/core/path/pathNode.d.ts +60 -0
- package/types/router/core/path/pathUtils.d.ts +79 -0
- package/types/router/core/resolve/index.d.ts +3 -0
- package/types/router/core/resolve/interface.d.ts +210 -0
- package/types/router/core/resolve/resolvable.d.ts +69 -0
- package/types/router/core/resolve/resolveContext.d.ts +92 -0
- package/types/router/core/router.d.ts +95 -0
- package/types/router/core/state/index.d.ts +28 -0
- package/types/router/core/state/interface.d.ts +708 -0
- package/types/router/core/state/stateBuilder.d.ts +104 -0
- package/types/router/core/state/stateMatcher.d.ts +11 -0
- package/types/router/core/state/stateObject.d.ts +155 -0
- package/types/router/core/state/stateQueueManager.d.ts +24 -0
- package/types/router/core/state/stateRegistry.d.ts +136 -0
- package/types/router/core/state/stateService.d.ts +350 -0
- package/types/router/core/state/targetState.d.ts +100 -0
- package/types/router/core/transition/hookBuilder.d.ts +45 -0
- package/types/router/core/transition/hookRegistry.d.ts +93 -0
- package/types/router/core/transition/index.d.ts +20 -0
- package/types/router/core/transition/interface.d.ts +819 -0
- package/types/router/core/transition/rejectFactory.d.ts +103 -0
- package/types/router/core/transition/transition.d.ts +527 -0
- package/types/router/core/transition/transitionEventType.d.ts +17 -0
- package/types/router/core/transition/transitionHook.d.ts +88 -0
- package/types/router/core/transition/transitionService.d.ts +187 -0
- package/types/router/core/url/index.d.ts +8 -0
- package/types/router/core/url/interface.d.ts +156 -0
- package/types/router/core/url/urlConfig.d.ts +141 -0
- package/types/router/core/url/urlMatcher.d.ts +180 -0
- package/types/router/core/url/urlMatcherFactory.d.ts +52 -0
- package/types/router/core/url/urlRouter.d.ts +85 -0
- package/types/router/core/url/urlRule.d.ts +120 -0
- package/types/router/core/url/urlRules.d.ts +244 -0
- package/types/router/core/url/urlService.d.ts +206 -0
- package/types/router/core/vanilla.d.ts +1 -0
- package/types/router/core/view/index.d.ts +2 -0
- package/types/router/core/view/interface.d.ts +46 -0
- package/types/router/core/view/view.d.ts +167 -0
- package/types/router/directives/stateDirectives.d.ts +3 -0
- package/types/router/directives/viewDirective.d.ts +143 -0
- package/types/router/index.d.ts +19 -0
- package/types/router/interface.d.ts +491 -0
- package/types/router/legacy/resolveService.d.ts +44 -0
- package/types/router/legacy/stateEvents.d.ts +123 -0
- package/types/router/locationServices.d.ts +43 -0
- package/types/router/services.d.ts +15 -0
- package/types/router/stateFilters.d.ts +11 -0
- package/types/router/stateProvider.d.ts +254 -0
- package/types/router/statebuilders/onEnterExitRetain.d.ts +12 -0
- package/types/router/statebuilders/views.d.ts +41 -0
- package/types/router/templateFactory.d.ts +84 -0
- package/types/router/viewScroll.d.ts +9 -0
- package/src/animations/animate.css.md +0 -263
- package/src/animations/animate.md +0 -933
- package/src/router/adapter/statebuilders/onEnterExitRetain.js +0 -29
- package/src/router/core/common/coreservices.js +0 -15
- package/src/router/core/common/safeConsole.js +0 -37
- package/src/router/core/interface.js +0 -3
- package/src/router/core/resolve/interface.js +0 -10
- package/src/router/core/router.js +0 -203
- package/src/router/core/url/interface.js +0 -1
- package/src/router/core/view/interface.js +0 -1
- /package/src/router/{core/common → common}/glob.js +0 -0
- /package/src/router/{core/hooks → hooks}/ignoredTransition.js +0 -0
- /package/src/router/{core/hooks → hooks}/invalidTransition.js +0 -0
- /package/src/router/{core/hooks → hooks}/onEnterExitRetain.js +0 -0
- /package/src/router/{core/hooks → hooks}/url.js +0 -0
- /package/src/router/{core/params → params}/README.md +0 -0
- /package/src/router/{core/state → state}/README.md +0 -0
- /package/src/router/{adapter/stateFilters.js → stateFilters.js} +0 -0
- /package/src/router/{core/transition → transition}/interface.js +0 -0
- /package/src/router/{core/transition → transition}/transitionEventType.js +0 -0
- /package/src/{router/core/common → shared}/hof.js +0 -0
- /package/test/{ng → core}/cache-factor.spec.js +0 -0
- /package/test/{ng → core}/controller-provider.spec.js +0 -0
- /package/test/{ng → core}/cookie-reader.spec.js +0 -0
- /package/test/{ng → core}/document.spec.js +0 -0
- /package/test/{ng → core}/filter.spec.js +0 -0
- /package/test/{ng → core}/http-backend.spec.js +0 -0
- /package/test/{ng → core}/interpolate.spec.js +0 -0
- /package/test/{ng → core}/interval.spec.js +0 -0
- /package/test/{ng → core}/location.spec.js +0 -0
- /package/test/{ng → core}/q.spec.js +0 -0
- /package/test/{ng → core}/root-element.spec.js +0 -0
- /package/test/{ng → core}/sanitize-uri.spec.js +0 -0
- /package/test/{ng → core}/sce.spec.js +0 -0
- /package/test/{ng → core}/template-request.spec.js +0 -0
- /package/test/{ng → core}/timeout.spec.js +0 -0
- /package/test/{ng → core}/url-utils.spec.js +0 -0
- /package/{src/router/adapter/interface.js → types/router/injectables.d.ts} +0 -0
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
* Because of these confusing details, this service is deprecated.
|
|
18
18
|
*
|
|
19
19
|
* ### Instead of using the global `$stateParams` service object,
|
|
20
|
-
* inject [[$
|
|
20
|
+
* inject [[$routerGlobals]] and use [[UIRouterGlobals.params]]
|
|
21
21
|
*
|
|
22
22
|
* ```js
|
|
23
|
-
* MyService.$inject = ['$
|
|
24
|
-
* function MyService($
|
|
23
|
+
* MyService.$inject = ['$routerGlobals'];
|
|
24
|
+
* function MyService($routerGlobals) {
|
|
25
25
|
* return {
|
|
26
26
|
* paramValues: function () {
|
|
27
|
-
* return $
|
|
27
|
+
* return $routerGlobals.params;
|
|
28
28
|
* }
|
|
29
29
|
* }
|
|
30
30
|
* }
|
|
@@ -67,7 +67,7 @@ let $stateParams;
|
|
|
67
67
|
*
|
|
68
68
|
* This object contains globals such as the current state and current parameter values.
|
|
69
69
|
*/
|
|
70
|
-
let $
|
|
70
|
+
let $routerGlobals;
|
|
71
71
|
/**
|
|
72
72
|
* The UI-Router instance
|
|
73
73
|
*
|
|
@@ -76,9 +76,9 @@ let $uiRouterGlobals;
|
|
|
76
76
|
* This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.
|
|
77
77
|
* It has references to the other UI-Router services
|
|
78
78
|
*
|
|
79
|
-
* #### Note: This object is also exposed as [[$
|
|
79
|
+
* #### Note: This object is also exposed as [[$routerProvider]] for injection during angular config time.
|
|
80
80
|
*/
|
|
81
|
-
let $
|
|
81
|
+
let $router;
|
|
82
82
|
/**
|
|
83
83
|
* The UI-Router instance
|
|
84
84
|
*
|
|
@@ -87,9 +87,9 @@ let $uiRouter;
|
|
|
87
87
|
* This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.
|
|
88
88
|
* It has references to the other UI-Router services
|
|
89
89
|
*
|
|
90
|
-
* #### Note: This object is also exposed as [[$
|
|
90
|
+
* #### Note: This object is also exposed as [[$router]] for injection during runtime.
|
|
91
91
|
*/
|
|
92
|
-
let $
|
|
92
|
+
let $routerProvider;
|
|
93
93
|
/**
|
|
94
94
|
* Transition debug/tracing
|
|
95
95
|
*
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { isDefined, isObject } from "../shared/utils";
|
|
2
|
+
import { val } from "../shared/hof";
|
|
3
|
+
import { createProxyFunctions, removeFrom } from "../shared/common";
|
|
4
|
+
|
|
5
5
|
/**
|
|
6
6
|
* Implements UI-Router LocationServices and LocationConfig using Angular 1's $location service
|
|
7
7
|
* @internalapi
|
|
8
8
|
*/
|
|
9
9
|
export class Ng1LocationServices {
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {angular.ILocationProvider} $locationProvider
|
|
13
|
+
*/
|
|
14
|
+
constructor($locationProvider) {
|
|
15
|
+
// .onChange() registry
|
|
16
|
+
this._urlListeners = [];
|
|
17
|
+
/** @type {angular.ILocationProvider} */ this.$locationProvider =
|
|
18
|
+
$locationProvider;
|
|
19
|
+
const _lp = val($locationProvider);
|
|
20
|
+
createProxyFunctions(_lp, this, _lp, ["hashPrefix"]);
|
|
21
|
+
}
|
|
10
22
|
/**
|
|
11
23
|
* Applys ng1-specific path parameter encoding
|
|
12
24
|
*
|
|
@@ -33,13 +45,7 @@ export class Ng1LocationServices {
|
|
|
33
45
|
: x;
|
|
34
46
|
}
|
|
35
47
|
dispose() {}
|
|
36
|
-
|
|
37
|
-
// .onChange() registry
|
|
38
|
-
this._urlListeners = [];
|
|
39
|
-
this.$locationProvider = $locationProvider;
|
|
40
|
-
const _lp = val($locationProvider);
|
|
41
|
-
createProxyFunctions(_lp, this, _lp, ["hashPrefix"]);
|
|
42
|
-
}
|
|
48
|
+
|
|
43
49
|
onChange(callback) {
|
|
44
50
|
this._urlListeners.push(callback);
|
|
45
51
|
return () => removeFrom(this._urlListeners)(callback);
|
|
@@ -62,8 +68,9 @@ export class Ng1LocationServices {
|
|
|
62
68
|
if (state) this.$location.state(state);
|
|
63
69
|
return this.$location.url();
|
|
64
70
|
}
|
|
71
|
+
|
|
65
72
|
_runtimeServices($rootScope, $location, $browser) {
|
|
66
|
-
this.$location = $location;
|
|
73
|
+
/** @type {angular.ILocationService} */ this.$location = $location;
|
|
67
74
|
this.$browser = $browser;
|
|
68
75
|
this.$window = window;
|
|
69
76
|
// Bind $locationChangeSuccess to the listeners registered in LocationService.onChange
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import { filter, map, allTrueR, find } from "
|
|
2
|
-
import { prop } from "
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
isDefined,
|
|
6
|
-
isString,
|
|
7
|
-
isArray,
|
|
8
|
-
isUndefined,
|
|
9
|
-
} from "../common/predicates";
|
|
1
|
+
import { filter, map, allTrueR, find } from "../../shared/common";
|
|
2
|
+
import { prop } from "../../shared/hof";
|
|
3
|
+
import { isInjectable } from "../../shared/predicates";
|
|
4
|
+
import { isDefined, isUndefined, isString } from "../../shared/utils";
|
|
10
5
|
import { services } from "../common/coreservices";
|
|
11
6
|
import { ParamType } from "./paramType";
|
|
12
7
|
const hasOwn = Object.prototype.hasOwnProperty;
|
|
@@ -79,7 +74,7 @@ function getReplace(config, arrayMode, isOptional, squash) {
|
|
|
79
74
|
{ from: "", to: isOptional || arrayMode ? undefined : "" },
|
|
80
75
|
{ from: null, to: isOptional || arrayMode ? undefined : "" },
|
|
81
76
|
];
|
|
82
|
-
const replace = isArray(config.replace) ? config.replace : [];
|
|
77
|
+
const replace = Array.isArray(config.replace) ? config.replace : [];
|
|
83
78
|
if (isString(squash)) replace.push({ from: squash, to: undefined });
|
|
84
79
|
const configuredKeys = map(replace, prop("from"));
|
|
85
80
|
return filter(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { filter, map } from "
|
|
2
|
-
import {
|
|
1
|
+
import { filter, map } from "../../shared/common";
|
|
2
|
+
import { isDefined } from "../../shared/utils";
|
|
3
3
|
/**
|
|
4
4
|
* An internal class which implements [[ParamTypeDefinition]].
|
|
5
5
|
*
|
|
@@ -86,7 +86,7 @@ export class ParamType {
|
|
|
86
86
|
function ArrayType(type, mode) {
|
|
87
87
|
// Wrap non-array value as array
|
|
88
88
|
function arrayWrap(val) {
|
|
89
|
-
return isArray(val) ? val : isDefined(val) ? [val] : [];
|
|
89
|
+
return Array.isArray(val) ? val : isDefined(val) ? [val] : [];
|
|
90
90
|
}
|
|
91
91
|
// Unwrap array value for "auto" mode. Return undefined for empty array.
|
|
92
92
|
function arrayUnwrap(val) {
|
|
@@ -102,7 +102,7 @@ function ArrayType(type, mode) {
|
|
|
102
102
|
// Wraps type (.is/.encode/.decode) functions to operate on each value of an array
|
|
103
103
|
function arrayHandler(callback, allTruthyMode) {
|
|
104
104
|
return function handleArray(val) {
|
|
105
|
-
if (isArray(val) && val.length === 0) return val;
|
|
105
|
+
if (Array.isArray(val) && val.length === 0) return val;
|
|
106
106
|
const arr = arrayWrap(val);
|
|
107
107
|
const result = map(arr, callback);
|
|
108
108
|
return allTruthyMode === true
|
|
@@ -6,9 +6,10 @@ import {
|
|
|
6
6
|
inherit,
|
|
7
7
|
map,
|
|
8
8
|
pick,
|
|
9
|
-
} from "
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
9
|
+
} from "../../shared/common";
|
|
10
|
+
import { isNullOrUndefined } from "../../shared/predicates";
|
|
11
|
+
import { isDefined } from "../../shared/utils";
|
|
12
|
+
import { is } from "../../shared/hof";
|
|
12
13
|
import { services } from "../common/coreservices";
|
|
13
14
|
import { ParamType } from "./paramType";
|
|
14
15
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { applyPairs, find } from "
|
|
2
|
-
import { propEq } from "
|
|
1
|
+
import { applyPairs, find } from "../../shared/common";
|
|
2
|
+
import { propEq } from "../../shared/hof";
|
|
3
3
|
import { Param } from "../params/param";
|
|
4
4
|
/**
|
|
5
5
|
* A node in a [[TreeChanges]] path
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
unnestR,
|
|
8
8
|
inArray,
|
|
9
9
|
arrayTuples,
|
|
10
|
-
} from "
|
|
11
|
-
import { prop, propEq } from "
|
|
10
|
+
} from "../../shared/common";
|
|
11
|
+
import { prop, propEq } from "../../shared/hof";
|
|
12
12
|
import { TargetState } from "../state/targetState";
|
|
13
13
|
import { PathNode } from "./pathNode";
|
|
14
14
|
/**
|
|
@@ -190,9 +190,15 @@ export class PathUtils {
|
|
|
190
190
|
const elementIdx = path.indexOf(node);
|
|
191
191
|
return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);
|
|
192
192
|
}
|
|
193
|
+
|
|
194
|
+
static nonDynamicParams(node) {
|
|
195
|
+
return node.state
|
|
196
|
+
.parameters({ inherit: false })
|
|
197
|
+
.filter((param) => !param.dynamic);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Gets the raw parameter values from a path */
|
|
201
|
+
static paramValues(path) {
|
|
202
|
+
return path.reduce((acc, node) => Object.assign(acc, node.paramValues), {});
|
|
203
|
+
}
|
|
193
204
|
}
|
|
194
|
-
PathUtils.nonDynamicParams = (node) =>
|
|
195
|
-
node.state.parameters({ inherit: false }).filter((param) => !param.dynamic);
|
|
196
|
-
/** Gets the raw parameter values from a path */
|
|
197
|
-
PathUtils.paramValues = (path) =>
|
|
198
|
-
path.reduce((acc, node) => Object.assign(acc, node.paramValues), {});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { identity } from "
|
|
1
|
+
import { identity, isFunction, isObject } from "../../shared/utils";
|
|
2
2
|
import { services } from "../common/coreservices";
|
|
3
3
|
import { trace } from "../common/trace";
|
|
4
|
-
import { stringify } from "
|
|
5
|
-
import {
|
|
6
|
-
import { isNullOrUndefined } from "../common/predicates";
|
|
4
|
+
import { stringify } from "../../shared/strings";
|
|
5
|
+
import { isNullOrUndefined } from "../../shared/predicates";
|
|
7
6
|
// TODO: explicitly make this user configurable
|
|
8
7
|
export let defaultResolvePolicy = {
|
|
9
8
|
when: "LAZY",
|
|
@@ -44,7 +43,8 @@ export class Resolvable {
|
|
|
44
43
|
} else if (
|
|
45
44
|
isObject(arg1) &&
|
|
46
45
|
arg1.token &&
|
|
47
|
-
(
|
|
46
|
+
(Object.prototype.hasOwnProperty.call(arg1, "resolveFn") ||
|
|
47
|
+
Object.prototype.hasOwnProperty.call(arg1, "data"))
|
|
48
48
|
) {
|
|
49
49
|
const literal = arg1;
|
|
50
50
|
return new Resolvable(
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { find, tail, uniqR, unnestR, inArray } from "
|
|
2
|
-
import { propEq, not } from "
|
|
1
|
+
import { find, tail, uniqR, unnestR, inArray } from "../../shared/common";
|
|
2
|
+
import { propEq, not } from "../../shared/hof";
|
|
3
3
|
import { trace } from "../common/trace";
|
|
4
4
|
import { services } from "../common/coreservices";
|
|
5
|
-
import { resolvePolicies } from "./interface";
|
|
6
5
|
import { Resolvable } from "./resolvable";
|
|
7
6
|
import { PathUtils } from "../path/pathUtils";
|
|
8
|
-
import { stringify } from "
|
|
9
|
-
import { isUndefined } from "
|
|
7
|
+
import { stringify } from "../../shared/strings";
|
|
8
|
+
import { isUndefined } from "../../shared/utils";
|
|
9
|
+
|
|
10
|
+
export let resolvePolicies = {
|
|
11
|
+
when: {
|
|
12
|
+
LAZY: "LAZY",
|
|
13
|
+
EAGER: "EAGER",
|
|
14
|
+
},
|
|
15
|
+
async: {
|
|
16
|
+
WAIT: "WAIT",
|
|
17
|
+
NOWAIT: "NOWAIT",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
10
20
|
|
|
11
21
|
const whens = resolvePolicies.when;
|
|
12
22
|
const ALL_WHENS = [whens.EAGER, whens.LAZY];
|
|
@@ -179,7 +189,7 @@ export class ResolveContext {
|
|
|
179
189
|
return resolvable.deps.map(getDependency);
|
|
180
190
|
}
|
|
181
191
|
}
|
|
182
|
-
|
|
192
|
+
|
|
183
193
|
class UIInjectorImpl {
|
|
184
194
|
constructor(context) {
|
|
185
195
|
this.context = context;
|
package/src/router/router.js
CHANGED
|
@@ -1,77 +1,176 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { $IsStateFilter, $IncludedByStateFilter } from "./adapter/stateFilters";
|
|
13
|
-
import {
|
|
14
|
-
uiSrefActiveDirective,
|
|
15
|
-
uiStateDirective,
|
|
16
|
-
uiSrefDirective,
|
|
17
|
-
} from "./adapter/directives/stateDirectives";
|
|
18
|
-
import { uiView, $ViewDirectiveFill } from "./adapter/directives/viewDirective";
|
|
1
|
+
import { UrlMatcherFactory } from "./url/urlMatcherFactory";
|
|
2
|
+
import { UrlRouter } from "./url/urlRouter";
|
|
3
|
+
import { TransitionService } from "./transition/transitionService";
|
|
4
|
+
import { ViewService } from "./view/view";
|
|
5
|
+
import { StateRegistry } from "./state/stateRegistry";
|
|
6
|
+
import { StateService } from "./state/stateService";
|
|
7
|
+
import { UIRouterGlobals } from "./globals";
|
|
8
|
+
import { removeFrom } from "../shared/common";
|
|
9
|
+
import { isFunction } from "../shared/utils";
|
|
10
|
+
import { UrlService } from "./url/urlService";
|
|
11
|
+
import { trace } from "./common/trace";
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"ui.router.util",
|
|
26
|
-
"ui.router.angular1",
|
|
27
|
-
]);
|
|
13
|
+
/**
|
|
14
|
+
* Router id tracker
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
let routerId = 0;
|
|
28
18
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
/**
|
|
20
|
+
* An instance of UI-Router.
|
|
21
|
+
* @class
|
|
22
|
+
*
|
|
23
|
+
* This object contains references to service APIs which define your application's routing behavior.
|
|
24
|
+
*/
|
|
25
|
+
export class UIRouter {
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new `UIRouter` object
|
|
28
|
+
*
|
|
29
|
+
* @param {import('./locationServices').Ng1LocationServices} locationService
|
|
30
|
+
*/
|
|
31
|
+
constructor(locationService) {
|
|
32
|
+
/**
|
|
33
|
+
* @type {import('./locationServices').Ng1LocationServices}
|
|
34
|
+
*/
|
|
35
|
+
this.locationService = locationService;
|
|
36
|
+
/** @type {number} */ this.$id = routerId++;
|
|
37
|
+
/** @type {boolean} */ this._disposed = false;
|
|
38
|
+
this._disposables = [];
|
|
39
|
+
/** Enable/disable tracing to the javascript console */
|
|
40
|
+
this.trace = trace;
|
|
41
|
+
/** Provides services related to ui-view synchronization */
|
|
42
|
+
this.viewService = new ViewService(this);
|
|
43
|
+
/** @type {UIRouterGlobals} An object that contains global router state, such as the current state and params */
|
|
44
|
+
this.globals = new UIRouterGlobals();
|
|
45
|
+
/** @type {TransitionService} A service that exposes global Transition Hooks */
|
|
46
|
+
this.transitionService = new TransitionService(this);
|
|
47
|
+
/**
|
|
48
|
+
* Deprecated for public use. Use [[urlService]] instead.
|
|
49
|
+
* @deprecated Use [[urlService]] instead
|
|
50
|
+
*/
|
|
51
|
+
this.urlMatcherFactory = new UrlMatcherFactory(this);
|
|
52
|
+
/**
|
|
53
|
+
* Deprecated for public use. Use [[urlService]] instead.
|
|
54
|
+
* @deprecated Use [[urlService]] instead
|
|
55
|
+
*/
|
|
56
|
+
this.urlRouter = new UrlRouter(this);
|
|
57
|
+
/** Provides services related to the URL */
|
|
58
|
+
this.urlService = new UrlService(this);
|
|
59
|
+
/** Provides a registry for states, and related registration services */
|
|
60
|
+
this.stateRegistry = new StateRegistry(this);
|
|
61
|
+
/** Provides services related to states */
|
|
62
|
+
this.stateService = new StateService(this);
|
|
63
|
+
/** @internal plugin instances are registered here */
|
|
64
|
+
this._plugins = {};
|
|
65
|
+
this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());
|
|
66
|
+
this.globals.$current = this.stateRegistry.root();
|
|
67
|
+
this.globals.current = this.globals.$current.self;
|
|
68
|
+
this.disposable(this.globals);
|
|
69
|
+
this.disposable(this.stateService);
|
|
70
|
+
this.disposable(this.stateRegistry);
|
|
71
|
+
this.disposable(this.transitionService);
|
|
72
|
+
this.disposable(this.urlService);
|
|
73
|
+
this.disposable(locationService);
|
|
74
|
+
}
|
|
34
75
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
.
|
|
60
|
-
.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
.directive("uiView", $ViewDirectiveFill)
|
|
66
|
-
.run(["$state", function () {}]);
|
|
67
|
-
mod_main
|
|
68
|
-
.factory("$view", function View() {
|
|
69
|
-
return router.viewService;
|
|
70
|
-
})
|
|
71
|
-
.service("$trace", function Trace() {
|
|
72
|
-
return trace;
|
|
76
|
+
/**
|
|
77
|
+
* Registers an object to be notified when the router is disposed
|
|
78
|
+
* @param {Disposable} disposable
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
81
|
+
disposable(disposable) {
|
|
82
|
+
this._disposables.push(disposable);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Disposes this router instance
|
|
86
|
+
*
|
|
87
|
+
* When called, clears resources retained by the router by calling `dispose(this)` on all
|
|
88
|
+
* registered [[disposable]] objects.
|
|
89
|
+
*
|
|
90
|
+
* Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.
|
|
91
|
+
*
|
|
92
|
+
* @internal
|
|
93
|
+
* @param disposable (optional) the disposable to dispose
|
|
94
|
+
*/
|
|
95
|
+
dispose(disposable) {
|
|
96
|
+
if (disposable && isFunction(disposable.dispose)) {
|
|
97
|
+
disposable.dispose(this);
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
this._disposed = true;
|
|
101
|
+
this._disposables.slice().forEach((d) => {
|
|
102
|
+
try {
|
|
103
|
+
typeof d.dispose === "function" && d.dispose(this);
|
|
104
|
+
removeFrom(this._disposables, d);
|
|
105
|
+
} catch (ignored) {}
|
|
73
106
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Adds a plugin to UI-Router
|
|
111
|
+
*
|
|
112
|
+
* This method adds a UI-Router Plugin.
|
|
113
|
+
* A plugin can enhance or change UI-Router behavior using any public API.
|
|
114
|
+
*
|
|
115
|
+
* #### Example:
|
|
116
|
+
* ```js
|
|
117
|
+
* import { MyCoolPlugin } from "ui-router-cool-plugin";
|
|
118
|
+
*
|
|
119
|
+
* var plugin = router.addPlugin(MyCoolPlugin);
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* ### Plugin authoring
|
|
123
|
+
*
|
|
124
|
+
* A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.
|
|
125
|
+
*
|
|
126
|
+
* The plugin can implement its functionality using any of the public APIs of [[UIRouter]].
|
|
127
|
+
* For example, it may configure router options or add a Transition Hook.
|
|
128
|
+
*
|
|
129
|
+
* The plugin can then be published as a separate module.
|
|
130
|
+
*
|
|
131
|
+
* #### Example:
|
|
132
|
+
* ```js
|
|
133
|
+
* export class MyAuthPlugin implements UIRouterPlugin {
|
|
134
|
+
* constructor(router: UIRouter, options: any) {
|
|
135
|
+
* this.name = "MyAuthPlugin";
|
|
136
|
+
* let $transitions = router.transitionService;
|
|
137
|
+
* let $state = router.stateService;
|
|
138
|
+
*
|
|
139
|
+
* let authCriteria = {
|
|
140
|
+
* to: (state) => state.data && state.data.requiresAuth
|
|
141
|
+
* };
|
|
142
|
+
*
|
|
143
|
+
* function authHook(transition: Transition) {
|
|
144
|
+
* let authService = transition.injector().get('AuthService');
|
|
145
|
+
* if (!authService.isAuthenticated()) {
|
|
146
|
+
* return $state.target('login');
|
|
147
|
+
* }
|
|
148
|
+
* }
|
|
149
|
+
*
|
|
150
|
+
* $transitions.onStart(authCriteria, authHook);
|
|
151
|
+
* }
|
|
152
|
+
* }
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @param plugin one of:
|
|
156
|
+
* - a plugin class which implements [[UIRouterPlugin]]
|
|
157
|
+
* - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance
|
|
158
|
+
* - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance
|
|
159
|
+
* @param options options to pass to the plugin class/factory
|
|
160
|
+
* @returns the registered plugin instance
|
|
161
|
+
*/
|
|
162
|
+
plugin(plugin, options = {}) {
|
|
163
|
+
const pluginInstance = new plugin(this, options);
|
|
164
|
+
if (!pluginInstance.name)
|
|
165
|
+
throw new Error(
|
|
166
|
+
"Required property `name` missing on plugin: " + pluginInstance,
|
|
167
|
+
);
|
|
168
|
+
this._disposables.push(pluginInstance);
|
|
169
|
+
return (this._plugins[pluginInstance.name] = pluginInstance);
|
|
170
|
+
}
|
|
171
|
+
getPlugin(pluginName) {
|
|
172
|
+
return pluginName
|
|
173
|
+
? this._plugins[pluginName]
|
|
174
|
+
: Object.values(this._plugins);
|
|
175
|
+
}
|
|
77
176
|
}
|
|
@@ -8,26 +8,24 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @preferred @publicapi @module ng1
|
|
10
10
|
*/
|
|
11
|
-
import { services } from "
|
|
12
|
-
import { applyPairs, unnestR } from "../
|
|
13
|
-
import { isString } from "
|
|
14
|
-
import { trace } from "
|
|
15
|
-
import { UIRouter } from "
|
|
16
|
-
import {
|
|
17
|
-
ng1ViewsBuilder,
|
|
18
|
-
getNg1ViewConfigFactory,
|
|
19
|
-
} from "./statebuilders/views";
|
|
11
|
+
import { services } from "./common/coreservices";
|
|
12
|
+
import { applyPairs, unnestR } from "../shared/common";
|
|
13
|
+
import { isString } from "../shared/utils";
|
|
14
|
+
import { trace } from "./common/trace";
|
|
15
|
+
import { UIRouter } from "./router";
|
|
16
|
+
import { ng1ViewsBuilder, getNg1ViewConfigFactory } from "./state/views";
|
|
20
17
|
|
|
21
18
|
import { StateProvider } from "./stateProvider";
|
|
22
|
-
import { getStateHookBuilder } from "./statebuilders/onEnterExitRetain";
|
|
23
19
|
import { Ng1LocationServices } from "./locationServices";
|
|
20
|
+
import { ResolveContext } from "./resolve/resolveContext";
|
|
24
21
|
|
|
25
22
|
export let router = null;
|
|
26
|
-
$
|
|
23
|
+
$routerProvider.$inject = ["$locationProvider"];
|
|
27
24
|
/** This angular 1 provider instantiates a Router and exposes its services via the angular injector */
|
|
28
|
-
export function $
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
export function $routerProvider($locationProvider) {
|
|
26
|
+
const ng1LocationService = new Ng1LocationServices($locationProvider);
|
|
27
|
+
// Create a new instance of the Router when the $routerProvider is initialized
|
|
28
|
+
router = this.router = new UIRouter(ng1LocationService);
|
|
31
29
|
router.stateProvider = new StateProvider(
|
|
32
30
|
router.stateRegistry,
|
|
33
31
|
router.stateService,
|
|
@@ -43,47 +41,42 @@ export function $uiRouterProvider($locationProvider) {
|
|
|
43
41
|
);
|
|
44
42
|
// Disable decoding of params by UrlMatcherFactory because $location already handles this
|
|
45
43
|
router.urlService.config._decodeParams = false;
|
|
46
|
-
|
|
47
|
-
(router.locationService =
|
|
48
|
-
router.locationConfig =
|
|
49
|
-
new Ng1LocationServices($locationProvider));
|
|
44
|
+
|
|
50
45
|
Ng1LocationServices.monkeyPatchPathParameterType(router);
|
|
51
|
-
// backwards compat: also expose router instance as $
|
|
46
|
+
// backwards compat: also expose router instance as $routerProvider.router
|
|
52
47
|
router["router"] = router;
|
|
53
48
|
router["$get"] = $get;
|
|
54
49
|
$get.$inject = ["$location", "$browser", "$rootScope"];
|
|
55
50
|
function $get($location, $browser, $rootScope) {
|
|
56
51
|
ng1LocationService._runtimeServices($rootScope, $location, $browser);
|
|
57
|
-
delete router["router"];
|
|
58
|
-
delete router["$get"];
|
|
59
52
|
return router;
|
|
60
53
|
}
|
|
61
54
|
return router;
|
|
62
55
|
}
|
|
63
56
|
export const getProviderFor = (serviceName) => [
|
|
64
|
-
"$
|
|
57
|
+
"$routerProvider",
|
|
65
58
|
function UrlServiceProvider($urp) {
|
|
66
59
|
const service = $urp.router[serviceName];
|
|
67
60
|
service["$get"] = () => service;
|
|
68
61
|
return service;
|
|
69
62
|
},
|
|
70
63
|
];
|
|
71
|
-
// This effectively calls $get() on `$
|
|
72
|
-
runBlock.$inject = ["$injector", "$q", "$
|
|
73
|
-
export function runBlock($injector, $q, $
|
|
64
|
+
// This effectively calls $get() on `$routerProvider` to trigger init (when ng enters runtime)
|
|
65
|
+
runBlock.$inject = ["$injector", "$q", "$router"];
|
|
66
|
+
export function runBlock($injector, $q, $router) {
|
|
74
67
|
services.$injector = $injector;
|
|
75
68
|
services.$q = $q;
|
|
76
69
|
// https://github.com/angular-ui/ui-router/issues/3678
|
|
77
70
|
if (!Object.prototype.hasOwnProperty.call($injector, "strictDi")) {
|
|
78
71
|
try {
|
|
79
|
-
$injector.invoke(
|
|
72
|
+
$injector.invoke(() => {});
|
|
80
73
|
} catch (error) {
|
|
81
74
|
$injector.strictDi = !!/strict mode/.exec(error && error.toString());
|
|
82
75
|
}
|
|
83
76
|
}
|
|
84
77
|
// The $injector is now available.
|
|
85
78
|
// Find any resolvables that had dependency annotation deferred
|
|
86
|
-
$
|
|
79
|
+
$router.stateRegistry
|
|
87
80
|
.get()
|
|
88
81
|
.map((x) => x.$$state().resolvables)
|
|
89
82
|
.reduce(unnestR, [])
|
|
@@ -95,6 +88,8 @@ export function runBlock($injector, $q, $uiRouter) {
|
|
|
95
88
|
$injector.strictDi,
|
|
96
89
|
)),
|
|
97
90
|
);
|
|
91
|
+
// TODO: Is this the best place for this?
|
|
92
|
+
$router.urlService.listen();
|
|
98
93
|
}
|
|
99
94
|
|
|
100
95
|
// $state service and $stateProvider
|
|
@@ -125,3 +120,28 @@ export const getLocals = (ctx) => {
|
|
|
125
120
|
});
|
|
126
121
|
return tuples.reduce(applyPairs, {});
|
|
127
122
|
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* This is a [[StateBuilder.builder]] function for angular1 `onEnter`, `onExit`,
|
|
126
|
+
* `onRetain` callback hooks on a [[Ng1StateDeclaration]].
|
|
127
|
+
*
|
|
128
|
+
* When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder
|
|
129
|
+
* ensures that those hooks are injectable for @uirouter/angularjs (ng1).
|
|
130
|
+
*
|
|
131
|
+
* @internalapi
|
|
132
|
+
*/
|
|
133
|
+
const getStateHookBuilder = (hookName) =>
|
|
134
|
+
function stateHookBuilder(stateObject) {
|
|
135
|
+
const hook = stateObject[hookName];
|
|
136
|
+
const pathname = hookName === "onExit" ? "from" : "to";
|
|
137
|
+
function decoratedNg1Hook(trans, state) {
|
|
138
|
+
const resolveContext = new ResolveContext(trans.treeChanges(pathname));
|
|
139
|
+
const subContext = resolveContext.subContext(state.$$state());
|
|
140
|
+
const locals = Object.assign(getLocals(subContext), {
|
|
141
|
+
$state$: state,
|
|
142
|
+
$transition$: trans,
|
|
143
|
+
});
|
|
144
|
+
return services.$injector.invoke(hook, this, locals);
|
|
145
|
+
}
|
|
146
|
+
return hook ? decoratedNg1Hook : undefined;
|
|
147
|
+
};
|