services.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. /**
  4. * # Angular 1 types
  5. *
  6. * UI-Router core provides various Typescript types which you can use for code completion and validating parameter values, etc.
  7. * The customizations to the core types for Angular UI-Router are documented here.
  8. *
  9. * The optional [[$resolve]] service is also documented here.
  10. *
  11. * @module ng1
  12. * @preferred
  13. */
  14. /** for typedoc */
  15. var angular_1 = require("./angular");
  16. var core_1 = require("@uirouter/core");
  17. var views_1 = require("./statebuilders/views");
  18. var templateFactory_1 = require("./templateFactory");
  19. var stateProvider_1 = require("./stateProvider");
  20. var onEnterExitRetain_1 = require("./statebuilders/onEnterExitRetain");
  21. var locationServices_1 = require("./locationServices");
  22. var urlRouterProvider_1 = require("./urlRouterProvider");
  23. angular_1.ng.module("ui.router.angular1", []);
  24. var mod_init = angular_1.ng.module('ui.router.init', []);
  25. var mod_util = angular_1.ng.module('ui.router.util', ['ng', 'ui.router.init']);
  26. var mod_rtr = angular_1.ng.module('ui.router.router', ['ui.router.util']);
  27. var mod_state = angular_1.ng.module('ui.router.state', ['ui.router.router', 'ui.router.util', 'ui.router.angular1']);
  28. var mod_main = angular_1.ng.module('ui.router', ['ui.router.init', 'ui.router.state', 'ui.router.angular1']);
  29. var mod_cmpt = angular_1.ng.module('ui.router.compat', ['ui.router']); // tslint:disable-line
  30. var router = null;
  31. $uiRouter.$inject = ['$locationProvider'];
  32. /** This angular 1 provider instantiates a Router and exposes its services via the angular injector */
  33. function $uiRouter($locationProvider) {
  34. // Create a new instance of the Router when the $uiRouterProvider is initialized
  35. router = this.router = new core_1.UIRouter();
  36. router.stateProvider = new stateProvider_1.StateProvider(router.stateRegistry, router.stateService);
  37. // Apply ng1 specific StateBuilder code for `views`, `resolve`, and `onExit/Retain/Enter` properties
  38. router.stateRegistry.decorator("views", views_1.ng1ViewsBuilder);
  39. router.stateRegistry.decorator("onExit", onEnterExitRetain_1.getStateHookBuilder("onExit"));
  40. router.stateRegistry.decorator("onRetain", onEnterExitRetain_1.getStateHookBuilder("onRetain"));
  41. router.stateRegistry.decorator("onEnter", onEnterExitRetain_1.getStateHookBuilder("onEnter"));
  42. router.viewService._pluginapi._viewConfigFactory('ng1', views_1.getNg1ViewConfigFactory());
  43. var ng1LocationService = router.locationService = router.locationConfig = new locationServices_1.Ng1LocationServices($locationProvider);
  44. locationServices_1.Ng1LocationServices.monkeyPatchPathParameterType(router);
  45. // backwards compat: also expose router instance as $uiRouterProvider.router
  46. router['router'] = router;
  47. router['$get'] = $get;
  48. $get.$inject = ['$location', '$browser', '$sniffer', '$rootScope', '$http', '$templateCache'];
  49. function $get($location, $browser, $sniffer, $rootScope, $http, $templateCache) {
  50. ng1LocationService._runtimeServices($rootScope, $location, $sniffer, $browser);
  51. delete router['router'];
  52. delete router['$get'];
  53. return router;
  54. }
  55. return router;
  56. }
  57. var getProviderFor = function (serviceName) { return ['$uiRouterProvider', function ($urp) {
  58. var service = $urp.router[serviceName];
  59. service["$get"] = function () { return service; };
  60. return service;
  61. }]; };
  62. // This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)
  63. runBlock.$inject = ['$injector', '$q', '$uiRouter'];
  64. function runBlock($injector, $q, $uiRouter) {
  65. core_1.services.$injector = $injector;
  66. core_1.services.$q = $q;
  67. // The $injector is now available.
  68. // Find any resolvables that had dependency annotation deferred
  69. $uiRouter.stateRegistry.get()
  70. .map(function (x) { return x.$$state().resolvables; })
  71. .reduce(core_1.unnestR, [])
  72. .filter(function (x) { return x.deps === "deferred"; })
  73. .forEach(function (resolvable) { return resolvable.deps = $injector.annotate(resolvable.resolveFn); });
  74. }
  75. // $urlRouter service and $urlRouterProvider
  76. var getUrlRouterProvider = function (uiRouter) {
  77. return uiRouter.urlRouterProvider = new urlRouterProvider_1.UrlRouterProvider(uiRouter);
  78. };
  79. // $state service and $stateProvider
  80. // $urlRouter service and $urlRouterProvider
  81. var getStateProvider = function () {
  82. return core_1.extend(router.stateProvider, { $get: function () { return router.stateService; } });
  83. };
  84. watchDigests.$inject = ['$rootScope'];
  85. function watchDigests($rootScope) {
  86. $rootScope.$watch(function () { core_1.trace.approximateDigests++; });
  87. }
  88. exports.watchDigests = watchDigests;
  89. mod_init.provider("$uiRouter", $uiRouter);
  90. mod_rtr.provider('$urlRouter', ['$uiRouterProvider', getUrlRouterProvider]);
  91. mod_util.provider('$urlService', getProviderFor('urlService'));
  92. mod_util.provider('$urlMatcherFactory', ['$uiRouterProvider', function () { return router.urlMatcherFactory; }]);
  93. mod_util.provider('$templateFactory', function () { return new templateFactory_1.TemplateFactory(); });
  94. mod_state.provider('$stateRegistry', getProviderFor('stateRegistry'));
  95. mod_state.provider('$uiRouterGlobals', getProviderFor('globals'));
  96. mod_state.provider('$transitions', getProviderFor('transitionService'));
  97. mod_state.provider('$state', ['$uiRouterProvider', getStateProvider]);
  98. mod_state.factory('$stateParams', ['$uiRouter', function ($uiRouter) { return $uiRouter.globals.params; }]);
  99. mod_main.factory('$view', function () { return router.viewService; });
  100. mod_main.service("$trace", function () { return core_1.trace; });
  101. mod_main.run(watchDigests);
  102. mod_util.run(['$urlMatcherFactory', function ($urlMatcherFactory) { }]);
  103. mod_state.run(['$state', function ($state) { }]);
  104. mod_rtr.run(['$urlRouter', function ($urlRouter) { }]);
  105. mod_init.run(runBlock);
  106. /** @hidden TODO: find a place to move this */
  107. exports.getLocals = function (ctx) {
  108. var tokens = ctx.getTokens().filter(core_1.isString);
  109. var tuples = tokens.map(function (key) {
  110. var resolvable = ctx.getResolvable(key);
  111. var waitPolicy = ctx.getPolicy(resolvable).async;
  112. return [key, waitPolicy === 'NOWAIT' ? resolvable.promise : resolvable.data];
  113. });
  114. return tuples.reduce(core_1.applyPairs, {});
  115. };
  116. //# sourceMappingURL=services.js.map