Code coverage report for src/router-view.js

Statements: 48% (24 / 50)      Branches: 33.33% (6 / 18)      Functions: 53.85% (7 / 13)      Lines: 50% (24 / 48)      Ignored: none     

All files » src/ » router-view.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 971     1   1   1   1412 1412   1210 1210 1210 1210   100   10 10     1 1                   1   1       1                                                                     1                     1 1 1 1     1        
System.register(['aurelia-dependency-injection', 'aurelia-templating', 'aurelia-router', 'aurelia-metadata'], function (_export) {
  'use strict';
 
  var Container, inject, ViewSlot, ViewStrategy, customElement, noView, Router, Metadata, Origin, RouterView;
 
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
 
  return {
    setters: [function (_aureliaDependencyInjection) {
      Container = _aureliaDependencyInjection.Container;
      inject = _aureliaDependencyInjection.inject;
    }, function (_aureliaTemplating) {
      ViewSlot = _aureliaTemplating.ViewSlot;
      ViewStrategy = _aureliaTemplating.ViewStrategy;
      customElement = _aureliaTemplating.customElement;
      noView = _aureliaTemplating.noView;
    }, function (_aureliaRouter) {
      Router = _aureliaRouter.Router;
    }, function (_aureliaMetadata) {
      Metadata = _aureliaMetadata.Metadata;
      Origin = _aureliaMetadata.Origin;
    }],
    execute: function () {
      RouterView = (function () {
        function RouterView(element, container, viewSlot, router) {
          _classCallCheck(this, _RouterView);
 
          this.element = element;
          this.container = container;
          this.viewSlot = viewSlot;
          this.router = router;
          this.router.registerViewPort(this, this.element.getAttribute('name'));
        }
 
        var _RouterView = RouterView;
 
        _RouterView.prototype.bind = function bind(executionContext) {
          this.container.viewModel = executionContext;
        };
 
        _RouterView.prototype.process = function process(viewPortInstruction, waitToSwap) {
          var _this = this;
 
          var component = viewPortInstruction.component,
              viewStrategy = component.view,
              childContainer = component.childContainer,
              viewModel = component.executionContext,
              viewModelResource = component.viewModelResource,
              metadata = viewModelResource.metadata;
 
          if (!viewStrategy && 'getViewStrategy' in viewModel) {
            viewStrategy = viewModel.getViewStrategy();
          }
 
          if (viewStrategy) {
            viewStrategy = ViewStrategy.normalize(viewStrategy);
            viewStrategy.makeRelativeTo(Origin.get(component.router.container.viewModel.constructor).moduleId);
          }
 
          return metadata.load(childContainer, viewModelResource.value, viewStrategy, true).then(function (viewFactory) {
            viewPortInstruction.behavior = metadata.create(childContainer, {
              executionContext: viewModel,
              viewFactory: viewFactory,
              suppressBind: true,
              host: _this.element
            });
 
            if (waitToSwap) {
              return;
            }
 
            _this.swap(viewPortInstruction);
          });
        };
 
        _RouterView.prototype.swap = function swap(viewPortInstruction) {
          viewPortInstruction.behavior.view.bind(viewPortInstruction.behavior.executionContext);
          this.viewSlot.swap(viewPortInstruction.behavior.view);
 
          if (this.view) {
            this.view.unbind();
          }
 
          this.view = viewPortInstruction.behavior.view;
        };
 
        RouterView = inject(Element, Container, ViewSlot, Router)(RouterView) || RouterView;
        RouterView = noView(RouterView) || RouterView;
        RouterView = customElement('router-view')(RouterView) || RouterView;
        return RouterView;
      })();
 
      _export('RouterView', RouterView);
    }
  };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmctcm91dGVyL3NyYy9yb3V0ZXItdmlldy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7a0dBUWEsVUFBVTs7Ozs7OzhDQVJmLFNBQVM7MkNBQUUsTUFBTTs7b0NBQ2pCLFFBQVE7d0NBQUUsWUFBWTt5Q0FBRSxhQUFhO2tDQUFFLE1BQU07OzhCQUM3QyxNQUFNOztrQ0FDTixRQUFRO2dDQUFFLE1BQU07OztBQUtYLGdCQUFVO0FBQ1YsaUJBREEsVUFBVSxDQUNULE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTs7O0FBQ2hELGNBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLGNBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzNCLGNBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLGNBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDdkU7OzBCQVBVLFVBQVU7OzhCQVNyQixJQUFJLEdBQUEsY0FBQyxnQkFBZ0IsRUFBQztBQUNwQixjQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztTQUM3Qzs7OEJBRUQsT0FBTyxHQUFBLGlCQUFDLG1CQUFtQixFQUFFLFVBQVUsRUFBRTs7O0FBQ3ZDLGNBQUksU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVM7Y0FDekMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJO2NBQzdCLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYztjQUN6QyxTQUFTLEdBQUcsU0FBUyxDQUFDLGdCQUFnQjtjQUN0QyxpQkFBaUIsR0FBRyxTQUFTLENBQUMsaUJBQWlCO2NBQy9DLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7O0FBRTFDLGNBQUcsQ0FBQyxZQUFZLElBQUksaUJBQWlCLElBQUksU0FBUyxFQUFDO0FBQ2pELHdCQUFZLEdBQUcsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1dBQzVDOztBQUVELGNBQUcsWUFBWSxFQUFDO0FBQ2Qsd0JBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BELHdCQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1dBQ3BHOztBQUVELGlCQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsV0FBVyxFQUFJO0FBQ3BHLCtCQUFtQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUM3RCw4QkFBZ0IsRUFBQyxTQUFTO0FBQzFCLHlCQUFXLEVBQUMsV0FBVztBQUN2QiwwQkFBWSxFQUFDLElBQUk7QUFDakIsa0JBQUksRUFBQyxNQUFLLE9BQU87YUFDbEIsQ0FBQyxDQUFDOztBQUVILGdCQUFHLFVBQVUsRUFBQztBQUNaLHFCQUFPO2FBQ1I7O0FBRUQsa0JBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7V0FDaEMsQ0FBQyxDQUFDO1NBQ0o7OzhCQUVELElBQUksR0FBQSxjQUFDLG1CQUFtQixFQUFDO0FBQ3ZCLDZCQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3RGLGNBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEQsY0FBRyxJQUFJLENBQUMsSUFBSSxFQUFDO0FBQ1gsZ0JBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7V0FDcEI7O0FBRUQsY0FBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQy9DOztBQXZEVSxrQkFBVSxHQUR0QixNQUFNLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQ2hDLFVBQVUsS0FBVixVQUFVO0FBQVYsa0JBQVUsR0FGdEIsTUFBTSxDQUVNLFVBQVUsS0FBVixVQUFVO0FBQVYsa0JBQVUsR0FIdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUdoQixVQUFVLEtBQVYsVUFBVTtlQUFWLFVBQVU7Ozs0QkFBVixVQUFVIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmctcm91dGVyL3NyYy9yb3V0ZXItdmlldy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGFpbmVyLCBpbmplY3R9IGZyb20gJ2F1cmVsaWEtZGVwZW5kZW5jeS1pbmplY3Rpb24nO1xuaW1wb3J0IHtWaWV3U2xvdCwgVmlld1N0cmF0ZWd5LCBjdXN0b21FbGVtZW50LCBub1ZpZXd9IGZyb20gJ2F1cmVsaWEtdGVtcGxhdGluZyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnYXVyZWxpYS1yb3V0ZXInO1xuaW1wb3J0IHtNZXRhZGF0YSwgT3JpZ2lufSBmcm9tICdhdXJlbGlhLW1ldGFkYXRhJztcblxuQGN1c3RvbUVsZW1lbnQoJ3JvdXRlci12aWV3JylcbkBub1ZpZXdcbkBpbmplY3QoRWxlbWVudCwgQ29udGFpbmVyLCBWaWV3U2xvdCwgUm91dGVyKVxuZXhwb3J0IGNsYXNzIFJvdXRlclZpZXcge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb250YWluZXIsIHZpZXdTbG90LCByb3V0ZXIpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIHRoaXMudmlld1Nsb3QgPSB2aWV3U2xvdDtcbiAgICB0aGlzLnJvdXRlciA9IHJvdXRlcjtcbiAgICB0aGlzLnJvdXRlci5yZWdpc3RlclZpZXdQb3J0KHRoaXMsIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSk7XG4gIH1cblxuICBiaW5kKGV4ZWN1dGlvbkNvbnRleHQpe1xuICAgIHRoaXMuY29udGFpbmVyLnZpZXdNb2RlbCA9IGV4ZWN1dGlvbkNvbnRleHQ7XG4gIH1cblxuICBwcm9jZXNzKHZpZXdQb3J0SW5zdHJ1Y3Rpb24sIHdhaXRUb1N3YXApIHtcbiAgICB2YXIgY29tcG9uZW50ID0gdmlld1BvcnRJbnN0cnVjdGlvbi5jb21wb25lbnQsXG4gICAgICAgIHZpZXdTdHJhdGVneSA9IGNvbXBvbmVudC52aWV3LFxuICAgICAgICBjaGlsZENvbnRhaW5lciA9IGNvbXBvbmVudC5jaGlsZENvbnRhaW5lcixcbiAgICAgICAgdmlld01vZGVsID0gY29tcG9uZW50LmV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgIHZpZXdNb2RlbFJlc291cmNlID0gY29tcG9uZW50LnZpZXdNb2RlbFJlc291cmNlLFxuICAgICAgICBtZXRhZGF0YSA9IHZpZXdNb2RlbFJlc291cmNlLm1ldGFkYXRhO1xuXG4gICAgaWYoIXZpZXdTdHJhdGVneSAmJiAnZ2V0Vmlld1N0cmF0ZWd5JyBpbiB2aWV3TW9kZWwpe1xuICAgICAgdmlld1N0cmF0ZWd5ID0gdmlld01vZGVsLmdldFZpZXdTdHJhdGVneSgpO1xuICAgIH1cblxuICAgIGlmKHZpZXdTdHJhdGVneSl7XG4gICAgICB2aWV3U3RyYXRlZ3kgPSBWaWV3U3RyYXRlZ3kubm9ybWFsaXplKHZpZXdTdHJhdGVneSk7XG4gICAgICB2aWV3U3RyYXRlZ3kubWFrZVJlbGF0aXZlVG8oT3JpZ2luLmdldChjb21wb25lbnQucm91dGVyLmNvbnRhaW5lci52aWV3TW9kZWwuY29uc3RydWN0b3IpLm1vZHVsZUlkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YWRhdGEubG9hZChjaGlsZENvbnRhaW5lciwgdmlld01vZGVsUmVzb3VyY2UudmFsdWUsIHZpZXdTdHJhdGVneSwgdHJ1ZSkudGhlbih2aWV3RmFjdG9yeSA9PiB7XG4gICAgICB2aWV3UG9ydEluc3RydWN0aW9uLmJlaGF2aW9yID0gbWV0YWRhdGEuY3JlYXRlKGNoaWxkQ29udGFpbmVyLCB7XG4gICAgICAgIGV4ZWN1dGlvbkNvbnRleHQ6dmlld01vZGVsLFxuICAgICAgICB2aWV3RmFjdG9yeTp2aWV3RmFjdG9yeSxcbiAgICAgICAgc3VwcHJlc3NCaW5kOnRydWUsXG4gICAgICAgIGhvc3Q6dGhpcy5lbGVtZW50XG4gICAgICB9KTtcblxuICAgICAgaWYod2FpdFRvU3dhcCl7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zd2FwKHZpZXdQb3J0SW5zdHJ1Y3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgc3dhcCh2aWV3UG9ydEluc3RydWN0aW9uKXtcbiAgICB2aWV3UG9ydEluc3RydWN0aW9uLmJlaGF2aW9yLnZpZXcuYmluZCh2aWV3UG9ydEluc3RydWN0aW9uLmJlaGF2aW9yLmV4ZWN1dGlvbkNvbnRleHQpO1xuICAgIHRoaXMudmlld1Nsb3Quc3dhcCh2aWV3UG9ydEluc3RydWN0aW9uLmJlaGF2aW9yLnZpZXcpO1xuXG4gICAgaWYodGhpcy52aWV3KXtcbiAgICAgIHRoaXMudmlldy51bmJpbmQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXcgPSB2aWV3UG9ydEluc3RydWN0aW9uLmJlaGF2aW9yLnZpZXc7XG4gIH1cbn1cbiJdfQ==