Index: third_party/pkg/angular/lib/routing/ng_view.dart |
diff --git a/third_party/pkg/angular/lib/routing/ng_view.dart b/third_party/pkg/angular/lib/routing/ng_view.dart |
deleted file mode 100644 |
index deb733e57d63e30d9ffa1f8719f8b0ce50c31610..0000000000000000000000000000000000000000 |
--- a/third_party/pkg/angular/lib/routing/ng_view.dart |
+++ /dev/null |
@@ -1,201 +0,0 @@ |
-part of angular.routing; |
- |
-/** |
- * A directive that works with the [Router] and loads the template associated |
- * with the current route. |
- * |
- * <ng-view></ng-view> |
- * |
- * [NgViewDirective] can work with [NgViewDirective] to define nested views |
- * for hierarchical routes. For example: |
- * |
- * void initRoutes(Router router, ViewFactory view) { |
- * router.root |
- * ..addRoute( |
- * name: 'library', |
- * path: '/library', |
- * enter: view('library.html'), |
- * mount: (Route route) => route |
- * ..addRoute( |
- * name: 'all', |
- * path: '/all', |
- * enter: view('book_list.html')) |
- * ..addRoute( |
- * name: 'book', |
- * path: '/:bookId', |
- * mount: (Route route) => route |
- * ..addRoute( |
- * name: 'overview', |
- * path: '/overview', |
- * defaultRoute: true, |
- * enter: view('book_overview.html')) |
- * ..addRoute( |
- * name: 'read', |
- * path: '/read', |
- * enter: view('book_read.html')))); |
- * } |
- * } |
- * |
- * index.html: |
- * |
- * <ng-view></ng-view> |
- * |
- * library.html: |
- * |
- * <div> |
- * <h1>Library!</h1> |
- * |
- * <ng-view></ng-view> |
- * </div> |
- * |
- * book_list.html: |
- * |
- * <ul> |
- * <li><a href="/library/12345/overview">Book 12345</a> |
- * <li><a href="/library/23456/overview">Book 23456</a> |
- * </ul> |
- */ |
-@NgDirective( |
- selector: 'ng-view', |
- publishTypes: const [RouteProvider], |
- visibility: NgDirective.CHILDREN_VISIBILITY) |
-class NgViewDirective implements NgDetachAware, RouteProvider { |
- final NgRoutingHelper locationService; |
- final BlockCache blockCache; |
- final Injector injector; |
- final Element element; |
- final Scope scope; |
- RouteHandle _route; |
- |
- Block _previousBlock; |
- Scope _previousScope; |
- Route _viewRoute; |
- |
- NgViewDirective(this.element, this.blockCache, |
- Injector injector, Router router, |
- this.scope) |
- : injector = injector, |
- locationService = injector.get(NgRoutingHelper) |
- { |
- RouteProvider routeProvider = injector.parent.get(NgViewDirective); |
- _route = routeProvider != null ? |
- routeProvider.route.newHandle() : |
- router.root.newHandle(); |
- locationService._registerPortal(this); |
- _maybeReloadViews(); |
- } |
- |
- void _maybeReloadViews() { |
- if (_route.isActive) locationService._reloadViews(startingFrom: _route); |
- } |
- |
- detach() { |
- _route.discard(); |
- locationService._unregisterPortal(this); |
- } |
- |
- _show(String templateUrl, Route route, List<Module> modules) { |
- assert(route.isActive); |
- |
- if (_viewRoute != null) return; |
- _viewRoute = route; |
- |
- StreamSubscription _leaveSubscription; |
- _leaveSubscription = route.onLeave.listen((_) { |
- _leaveSubscription.cancel(); |
- _leaveSubscription = null; |
- _viewRoute = null; |
- _cleanUp(); |
- }); |
- |
- var viewInjector = injector; |
- if (modules != null) { |
- viewInjector = forceNewDirectivesAndFilters(viewInjector, modules); |
- } |
- |
- var newDirectives = viewInjector.get(DirectiveMap); |
- blockCache.fromUrl(templateUrl, newDirectives).then((blockFactory) { |
- _cleanUp(); |
- _previousScope = scope.createChild(new PrototypeMap(scope.context)); |
- _previousBlock = blockFactory( |
- viewInjector.createChild( |
- [new Module()..value(Scope, _previousScope)])); |
- |
- _previousBlock.elements.forEach((elm) => element.append(elm)); |
- }); |
- } |
- |
- _cleanUp() { |
- if (_previousBlock == null) return; |
- |
- _previousBlock.remove(); |
- _previousScope.destroy(); |
- |
- _previousBlock = null; |
- _previousScope = null; |
- } |
- |
- Route get route => _viewRoute; |
- String get routeName => _viewRoute.name; |
- Map<String, String> get parameters { |
- var res = <String, String>{}; |
- var p = _viewRoute; |
- while (p != null) { |
- res.addAll(p.parameters); |
- p = p.parent; |
- } |
- return res; |
- } |
-} |
- |
- |
-/** |
- * Class that can be injected to retrieve information about the current route. |
- * For example: |
- * |
- * @NgComponent(/* ... */) |
- * class MyComponent implement NgDetachAware { |
- * RouteHandle route; |
- * |
- * MyComponent(RouteProvider routeProvider) { |
- * _loadFoo(routeProvider.parameters['fooId']); |
- * route = routeProvider.route.newHandle(); |
- * route.onRoute.listen((RouteEvent e) { |
- * // Do something when the route is activated. |
- * }); |
- * route.onLeave.listen((RouteEvent e) { |
- * // Do something when the route is diactivated. |
- * e.allowLeave(allDataSaved()); |
- * }); |
- * } |
- * |
- * detach() { |
- * // The route handle must be discarded. |
- * route.discard(); |
- * } |
- * |
- * Future<bool> allDataSaved() { |
- * // Check that all data is saved and confirm with the user if needed. |
- * } |
- * } |
- * |
- * If user component is used outside of ng-view directive then |
- * injected [RouteProvider] will be null. |
- */ |
-abstract class RouteProvider { |
- |
- /** |
- * Returns [Route] for current view. |
- */ |
- Route get route; |
- |
- /** |
- * Returns the name of the current route. |
- */ |
- String get routeName; |
- |
- /** |
- * Returns parameters for this route. |
- */ |
- Map<String, String> get parameters; |
-} |