import Mixin from '@ember/object/mixin'; import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; import { computed } from '@ember/object'; import { getOwner } from '@ember/application'; export default Mixin.create({ toolService: service('tool-service'), routeName: alias('router.currentRouteName'), 'trim-index': true, route: computed('routeName', function() { let me = this; let routeName = me.get('routeName'); return me.getRoute(me.get('trim-index') ? routeName.replace(/\.index$/, '') : routeName); }), service: computed('routeName', function() { return this.getService(); }), params: computed('router.location.lastSetURL', function() { let me = this; let routeName = me.get('routeName'); return me.getRouteParams(me.get('trim-index') ? routeName.replace(/\.index$/, '') : routeName); }), getRouteParams(routeName) { return this.get('route').paramsFor(routeName); }, getRoute(routeName) { return getOwner(this).lookup( 'route:' + (routeName || this.get('routeName'))); }, getParentRouteName(routeName) { return routeName.replace(/\.[^\.]+$/, ''); }, getService(name) { const me = this; return name ? me.get('toolService').getServiceByRouteName(name) : me.getRoute().get('service') || me.get('toolService').getServiceByRouteName(me.get('routeName')); } });