-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Copy clipboard button for markdown code blocks #603
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -9,6 +9,7 @@ import SequenceDiagram from 'js-sequence-diagrams' | |
| import eventEmitter from 'browser/main/lib/eventEmitter' | ||
| import fs from 'fs' | ||
| import htmlTextHelper from 'browser/lib/htmlTextHelper' | ||
| import copy from 'copy-to-clipboard' | ||
|
|
||
| const { remote } = require('electron') | ||
| const { app } = remote | ||
|
|
@@ -46,6 +47,24 @@ code { | |
| font-family: ${codeBlockFontFamily.join(', ')}; | ||
| } | ||
|
|
||
| .clipboardButton { | ||
| color: #939395; | ||
| fill: #939395; | ||
| border-radius: 17px; | ||
| font-size: 14px; | ||
| margin: 13px 7px; | ||
| padding-top: 5px; | ||
| border: none; | ||
| background-color: transparent; | ||
| outline: none; | ||
| height: 34px; | ||
| width: 34px; | ||
| } | ||
|
|
||
| .clipboardButton:hover { | ||
| background-color: #D9D9D9; | ||
| } | ||
|
|
||
| h1, h2 { | ||
| border: none; | ||
| } | ||
|
|
@@ -261,6 +280,12 @@ export default class MarkdownPreview extends React.Component { | |
| if (syntax == null) syntax = CodeMirror.findModeByName('Plain Text') | ||
| CodeMirror.requireMode(syntax.mode, () => { | ||
| let content = htmlTextHelper.decodeEntities(el.innerHTML) | ||
| const copyIcon = document.createElement('i') | ||
| copyIcon.innerHTML = '<button class="clipboardButton"><svg width="14" height="14" viewBox="0 0 1792 1792" ><path d="M768 1664h896v-640h-416q-40 0-68-28t-28-68v-416h-384v1152zm256-1440v-64q0-13-9.5-22.5t-22.5-9.5h-704q-13 0-22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h704q13 0 22.5-9.5t9.5-22.5zm256 672h299l-299-299v299zm512 128v672q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-160h-544q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h1088q40 0 68 28t28 68v328q21 13 36 28l408 408q28 28 48 76t20 88z"/></svg></button>' | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To the begin with, we have to decide its design ✏️
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What were you thinking it would look like? Also I am switching the code to use the electron clipboard but when pressing the button in the preview mode, the
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @kazup01 will change the design, so you don't need to about it 😄 Well.... To be honest, I'm reluctant to add libraries. So I'll try to find any easy way to solve the issue in a few days. But if I give up, you can use the library. |
||
| copyIcon.onclick = (e) => { | ||
| copy(content) | ||
| } | ||
| el.parentNode.appendChild(copyIcon) | ||
| el.innerHTML = '' | ||
| el.parentNode.className += ` cm-s-${codeBlockTheme} CodeMirror` | ||
| CodeMirror.runMode(content, syntax.mime, el, { | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have to use
clipboard, built in electron (https://github.com/electron/electron/blob/master/docs/api/clipboard.md), rather than another package.