|
1 | 1 | import { inject as service } from '@ember/service'; |
2 | 2 | import Component from '@ember/component'; |
3 | 3 | import layout from './template'; |
| 4 | +import { computed } from '@ember/object'; |
| 5 | +import appFiles from 'ember-cli-addon-docs/app-files'; |
| 6 | +import { dasherize } from '@ember/string'; |
4 | 7 |
|
5 | 8 | export default Component.extend({ |
6 | 9 | layout, |
7 | 10 |
|
8 | 11 | docsRoutes: service(), |
| 12 | + router: service(), |
9 | 13 |
|
10 | 14 | tagName: 'main', |
11 | 15 |
|
12 | 16 | elementId: 'docs-viewer__scroll-body', |
13 | | - classNames: 'docs-viewer__main' |
| 17 | + classNames: 'docs-viewer__main', |
| 18 | + |
| 19 | + editCurrentPageUrl: computed('router.currentRouteName', function() { |
| 20 | + let path = this.get('router.currentRouteName'); |
| 21 | + if (!path) { |
| 22 | + // `routing` doesn't exist for old ember versions via ember-try |
| 23 | + return; |
| 24 | + } |
| 25 | + path = path.replace(/\./g, '/'); |
| 26 | + |
| 27 | + if (path === 'docs/api/class') { |
| 28 | + let params = this.get('router._router._routerMicrolib.state').params['docs.api.class']; |
| 29 | + let klass = dasherize(params.class_id.replace(/-.+$/g, '')); |
| 30 | + let path = `pods/${path}`; |
| 31 | + |
| 32 | + return `https://github.com/ember-learn/ember-cli-addon-docs/edit/master/addon/components/${klass}/component.js`; |
| 33 | + } else { |
| 34 | + let templatePath = `pods/${path}`; |
| 35 | + let file = appFiles.find(file => file.match(`${templatePath}/template.(hbs|md)`)); |
| 36 | + |
| 37 | + return `https://github.com/ember-learn/ember-cli-addon-docs/edit/master/tests/dummy/app/${file}`; |
| 38 | + } |
| 39 | + }) |
14 | 40 |
|
15 | 41 | }); |
0 commit comments