summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--readme.md1
-rw-r--r--source/content.ts1
-rw-r--r--source/features/html-preview-link.tsx34
-rw-r--r--source/libs/utils.ts2
4 files changed, 38 insertions, 0 deletions
diff --git a/readme.md b/readme.md
index 381c2883..2150fdbf 100644
--- a/readme.md
+++ b/readme.md
@@ -152,6 +152,7 @@ Thanks for contributing! πŸ¦‹πŸ™Œ
- [](# "show-whitespace") πŸ”₯ [Shows whitespace characters.](https://user-images.githubusercontent.com/1402241/61187598-f9118380-a6a5-11e9-985a-990a7f798805.png)
- [](# "content") [Reduces tabs’ size to 4 spaces instead of 8.](https://cloud.githubusercontent.com/assets/170270/14170088/d3be931e-f755-11e5-8edf-c5f864336382.png)
- [](# "esc-to-deselect-line") [Adds a keyboard shortcut to deselect the current line: <kbd>esc</kbd>.](https://github.com/sindresorhus/refined-github/issues/1590)
+- [](# "html-preview-link") [Adds a link to preview HTML files.](https://user-images.githubusercontent.com/44045911/67634792-48995980-f8fb-11e9-8b6a-7b57d5b12a2f.png)
<!-- Refer to style guide above. Keep this message between sections. -->
diff --git a/source/content.ts b/source/content.ts
index d974bf80..6b532ea4 100644
--- a/source/content.ts
+++ b/source/content.ts
@@ -149,6 +149,7 @@ import './features/separate-draft-pr-button';
import './features/link-to-prior-blame-line';
import './features/dim-bots';
import './features/conflict-marker';
+import './features/html-preview-link';
// Add global for easier debugging
// eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/source/features/html-preview-link.tsx b/source/features/html-preview-link.tsx
new file mode 100644
index 00000000..968cefb6
--- /dev/null
+++ b/source/features/html-preview-link.tsx
@@ -0,0 +1,34 @@
+import React from 'dom-chef';
+import select from 'select-dom';
+import features from '../libs/features';
+import {isSingleHTMLFile} from '../libs/utils';
+
+function init(): void {
+ const rawButton = select<HTMLAnchorElement>('#raw-url')!;
+ const link = rawButton.pathname.split('/');
+ // Remove /raw/
+ link.splice(3, 1);
+ rawButton
+ .parentElement! // `BtnGroup`
+ .prepend(
+ <a
+ className="btn btn-sm BtnGroup-item"
+ href={`https://cdn.statically.io/gh${link.join('/')}`}>
+ Preview
+ </a>
+ );
+}
+
+features.add({
+ id: __featureName__,
+ description: 'Adds a link to preview HTML files.',
+ screenshot: 'https://user-images.githubusercontent.com/44045911/67634792-48995980-f8fb-11e9-8b6a-7b57d5b12a2f.png',
+ include: [
+ isSingleHTMLFile
+ ],
+ exclude: [
+ features.isEnterprise
+ ],
+ load: features.onAjaxedPages,
+ init
+});
diff --git a/source/libs/utils.ts b/source/libs/utils.ts
index e11a8071..b32247d5 100644
--- a/source/libs/utils.ts
+++ b/source/libs/utils.ts
@@ -144,3 +144,5 @@ export function reportBug(featureName: string, bugName: string): void {
console.log('Find existing issues:\n' + String(issuesUrl));
console.log('Open new issue:\n' + String(newIssueUrl));
}
+
+export const isSingleHTMLFile = (): boolean => /\.html?$/.test(location.pathname);