import React from 'dom-chef'; import select from 'select-dom'; import {PencilIcon} from '@primer/octicons-react'; import elementReady from 'element-ready'; import * as pageDetect from 'github-url-detection'; import features from '.'; import GitHubURL from '../github-helpers/github-url'; import {isPermalink} from '../github-helpers'; import getDefaultBranch from '../github-helpers/get-default-branch'; async function init(): Promise { const readmeHeader = await elementReady('#readme :is(.Box-header, .js-sticky)'); // The button already exists on repos you can push to if (!readmeHeader || select.exists('[aria-label="Edit this file"]', readmeHeader)) { return false; } const isPermalink_ = await isPermalink(); const filename = select('[href="#readme"]')!.textContent!.trim(); const fileLink = select(`.js-navigation-open[title="${filename}"]`)!; const url = new GitHubURL(fileLink.href).assign({ route: 'edit', }); if (isPermalink_) { url.branch = await getDefaultBranch(); // Permalinks can't be edited } readmeHeader.append( , ); } void features.add(__filebasename, { include: [ pageDetect.isRepoTree, ], awaitDomReady: false, deduplicate: 'has-rgh-inner', init, });