From 2fc37d54f275f2f16c9263074b7ca52ac269c731 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Thu, 8 Nov 2018 13:19:46 +0100 Subject: [PATCH 01/28] fix height of mermaid's diagrams --- browser/components/MarkdownPreview.js | 18 +++++++++++++++++ browser/components/markdown.styl | 3 +++ browser/components/render/MermaidRender.js | 23 ++++++++++++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index d9ff7074..90107ffd 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -205,6 +205,7 @@ export default class MarkdownPreview extends React.Component { this.saveAsMdHandler = () => this.handleSaveAsMd() this.saveAsHtmlHandler = () => this.handleSaveAsHtml() this.printHandler = () => this.handlePrint() + this.resizeHandler = _.throttle(this.handleResize.bind(this), 100) this.linkClickHandler = this.handlelinkClick.bind(this) this.initMarkdown = this.initMarkdown.bind(this) @@ -485,6 +486,10 @@ export default class MarkdownPreview extends React.Component { 'scroll', this.scrollHandler ) + this.refs.root.contentWindow.addEventListener( + 'resize', + this.resizeHandler + ) eventEmitter.on('export:save-text', this.saveAsTextHandler) eventEmitter.on('export:save-md', this.saveAsMdHandler) eventEmitter.on('export:save-html', this.saveAsHtmlHandler) @@ -520,6 +525,10 @@ export default class MarkdownPreview extends React.Component { 'scroll', this.scrollHandler ) + this.refs.root.contentWindow.removeEventListener( + 'resize', + this.resizeHandler + ) eventEmitter.off('export:save-text', this.saveAsTextHandler) eventEmitter.off('export:save-md', this.saveAsMdHandler) eventEmitter.off('export:save-html', this.saveAsHtmlHandler) @@ -797,6 +806,15 @@ export default class MarkdownPreview extends React.Component { ) } + handleResize () { + _.forEach( + this.refs.root.contentWindow.document.querySelectorAll('svg[ratio]'), + el => { + el.setAttribute('height', el.clientWidth / el.getAttribute('ratio')) + } + ) + } + focus () { this.refs.root.focus() } diff --git a/browser/components/markdown.styl b/browser/components/markdown.styl index b7f219b8..7b8911d7 100644 --- a/browser/components/markdown.styl +++ b/browser/components/markdown.styl @@ -416,6 +416,9 @@ pre.fence canvas, svg max-width 100% !important + svg[ratio] + width 100% + themeDarkBackground = darken(#21252B, 10%) themeDarkText = #f9f9f9 themeDarkBorder = lighten(themeDarkBackground, 20%) diff --git a/browser/components/render/MermaidRender.js b/browser/components/render/MermaidRender.js index 7a3b3ea2..c2380504 100644 --- a/browser/components/render/MermaidRender.js +++ b/browser/components/render/MermaidRender.js @@ -22,17 +22,36 @@ function getId () { function render (element, content, theme) { try { const height = element.attributes.getNamedItem('data-height') - if (height && height.value !== 'undefined') { + const isPredefined = height && height.value !== 'undefined' + if (isPredefined) { element.style.height = height.value + 'vh' } let isDarkTheme = theme === 'dark' || theme === 'solarized-dark' || theme === 'monokai' || theme === 'dracula' mermaidAPI.initialize({ theme: isDarkTheme ? 'dark' : 'default', themeCSS: isDarkTheme ? darkThemeStyling : '', - useMaxWidth: false + gantt: { + useWidth: element.clientWidth + } }) mermaidAPI.render(getId(), content, (svgGraph) => { element.innerHTML = svgGraph + + if (!isPredefined) { + const el = element.firstChild + const viewBox = el.getAttribute('viewBox').split(' ') + + let ratio = viewBox[2] / viewBox[3] + + if (el.style.maxWidth) { + const maxWidth = parseFloat(el.style.maxWidth) + + ratio *= el.parentNode.clientWidth / maxWidth + } + + el.setAttribute('ratio', ratio) + el.setAttribute('height', el.parentNode.clientWidth / ratio) + } }) } catch (e) { element.className = 'mermaid-error' From b6b29e02f3a947095f904afe9e5dd066005daba0 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Thu, 8 Nov 2018 14:41:25 +0100 Subject: [PATCH 02/28] fix lint error --- browser/components/MarkdownPreview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 90107ffd..afab9a8d 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -807,7 +807,7 @@ export default class MarkdownPreview extends React.Component { } handleResize () { - _.forEach( + _.forEach( this.refs.root.contentWindow.document.querySelectorAll('svg[ratio]'), el => { el.setAttribute('height', el.clientWidth / el.getAttribute('ratio')) From e34485eb83123ed96857c661a7510b12ed84dea9 Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Thu, 17 Oct 2019 20:48:40 +0300 Subject: [PATCH 03/28] added rtl toggle button --- browser/components/CodeEditor.js | 16 +++- browser/components/MarkdownEditor.js | 4 +- browser/components/MarkdownPreview.js | 28 ++++-- browser/components/MarkdownSplitEditor.js | 4 +- browser/main/Detail/MarkdownNoteDetail.js | 16 +++- browser/main/Detail/MarkdownNoteDetail.styl | 2 +- browser/main/Detail/ToggleDirectionButton.js | 26 ++++++ .../main/Detail/ToggleDirectionButton.styl | 85 +++++++++++++++++++ browser/main/global.styl | 2 +- package.json | 2 +- resources/icon/icon-left-to-right.svg | 1 + resources/icon/icon-right-to-left.svg | 1 + 12 files changed, 168 insertions(+), 19 deletions(-) create mode 100644 browser/main/Detail/ToggleDirectionButton.js create mode 100644 browser/main/Detail/ToggleDirectionButton.styl create mode 100644 resources/icon/icon-left-to-right.svg create mode 100644 resources/icon/icon-right-to-left.svg diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 9214363e..64f8eb59 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -273,7 +273,7 @@ export default class CodeEditor extends React.Component { } componentDidMount () { - const { rulers, enableRulers, enableMarkdownLint } = this.props + const { rulers, enableRulers, enableMarkdownLint, RTL } = this.props eventEmitter.on('line:jump', this.scrollToLineHandeler) snippetManager.init() @@ -294,6 +294,8 @@ export default class CodeEditor extends React.Component { scrollPastEnd: this.props.scrollPastEnd, inputStyle: 'textarea', dragDrop: false, + direction: RTL ? 'rtl' : 'ltr', + rtlMoveVisually: RTL ? 'true' : 'false', foldGutter: true, lint: enableMarkdownLint ? this.getCodeEditorLintConfig() : false, gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], @@ -537,7 +539,7 @@ export default class CodeEditor extends React.Component { rulers, enableRulers, enableMarkdownLint, - customMarkdownLintConfig + customMarkdownLintConfig, } = this.props if (prevProps.mode !== this.props.mode) { this.setMode(this.props.mode) @@ -555,6 +557,10 @@ export default class CodeEditor extends React.Component { if (prevProps.keyMap !== this.props.keyMap) { needRefresh = true } + if (prevProps.RTL !== this.props.RTL) { + this.editor.setOption('direction', this.props.RTL ? 'rtl' : 'ltr' ) + this.editor.setOption('rtlMoveVisually', this.props.RTL ? 'true' : 'false' ) + } if (prevProps.enableMarkdownLint !== enableMarkdownLint || prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { if (!enableMarkdownLint) { this.editor.setOption('lint', {default: false}) @@ -1219,7 +1225,8 @@ CodeEditor.propTypes = { spellCheck: PropTypes.bool, enableMarkdownLint: PropTypes.bool, customMarkdownLintConfig: PropTypes.string, - deleteUnusedAttachments: PropTypes.bool + deleteUnusedAttachments: PropTypes.bool, + RTL: PropTypes.bool } CodeEditor.defaultProps = { @@ -1235,5 +1242,6 @@ CodeEditor.defaultProps = { enableMarkdownLint: DEFAULT_CONFIG.editor.enableMarkdownLint, customMarkdownLintConfig: DEFAULT_CONFIG.editor.customMarkdownLintConfig, prettierConfig: DEFAULT_CONFIG.editor.prettierConfig, - deleteUnusedAttachments: DEFAULT_CONFIG.editor.deleteUnusedAttachments + deleteUnusedAttachments: DEFAULT_CONFIG.editor.deleteUnusedAttachments, + RTL: false } diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index cd885fd9..4a073237 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -267,7 +267,7 @@ class MarkdownEditor extends React.Component { } render () { - const {className, value, config, storageKey, noteKey, linesHighlighted} = this.props + const {className, value, config, storageKey, noteKey, linesHighlighted, RTL} = this.props let editorFontSize = parseInt(config.editor.fontSize, 10) if (!(editorFontSize > 0 && editorFontSize < 101)) editorFontSize = 14 @@ -325,6 +325,7 @@ class MarkdownEditor extends React.Component { customMarkdownLintConfig={config.editor.customMarkdownLintConfig} prettierConfig={config.editor.prettierConfig} deleteUnusedAttachments={config.editor.deleteUnusedAttachments} + RTL={RTL} /> this.handleDropImage(e)} + RTL={RTL} /> ) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index c1dc287e..52eb0127 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -65,7 +65,8 @@ function buildStyle (opts) { optimizeOverflowScroll, theme, allowCustomCSS, - customCSS + customCSS, + RTL } = opts return ` @font-face { @@ -104,6 +105,10 @@ body { font-size: ${fontSize}px; ${scrollPastEnd ? 'padding-bottom: 90vh;' : ''} ${optimizeOverflowScroll ? 'height: 100%;' : ''} + ${RTL ? 'direction: rtl;' : ''} + ${RTL ? 'text-align: right;' : ''} + + } @media print { body { @@ -326,7 +331,8 @@ export default class MarkdownPreview extends React.Component { scrollPastEnd, theme, allowCustomCSS, - customCSS + customCSS, + RTL } = this.getStyleParams() const inlineStyles = buildStyle({ @@ -337,7 +343,8 @@ export default class MarkdownPreview extends React.Component { scrollPastEnd, theme, allowCustomCSS, - customCSS + customCSS, + RTL }) let body = this.markdown.render(noteContent) body = attachmentManagement.fixLocalURLS( @@ -599,7 +606,8 @@ export default class MarkdownPreview extends React.Component { prevProps.theme !== this.props.theme || prevProps.scrollPastEnd !== this.props.scrollPastEnd || prevProps.allowCustomCSS !== this.props.allowCustomCSS || - prevProps.customCSS !== this.props.customCSS + prevProps.customCSS !== this.props.customCSS || + prevProps.RTL !== this.props.RTL ) { this.applyStyle() needsRewriteIframe = true @@ -623,7 +631,8 @@ export default class MarkdownPreview extends React.Component { scrollPastEnd, theme, allowCustomCSS, - customCSS + customCSS, + RTL } = this.props let { fontFamily, codeBlockFontFamily } = this.props fontFamily = _.isString(fontFamily) && fontFamily.trim().length > 0 @@ -649,7 +658,8 @@ export default class MarkdownPreview extends React.Component { scrollPastEnd, theme, allowCustomCSS, - customCSS + customCSS, + RTL } } @@ -663,7 +673,8 @@ export default class MarkdownPreview extends React.Component { scrollPastEnd, theme, allowCustomCSS, - customCSS + customCSS, + RTL } = this.getStyleParams() this.getWindow().document.getElementById( @@ -678,7 +689,8 @@ export default class MarkdownPreview extends React.Component { optimizeOverflowScroll: true, theme, allowCustomCSS, - customCSS + customCSS, + RTL }) this.getWindow().document.documentElement.style.overflowY = 'hidden' } diff --git a/browser/components/MarkdownSplitEditor.js b/browser/components/MarkdownSplitEditor.js index f5996c59..8ae9b751 100644 --- a/browser/components/MarkdownSplitEditor.js +++ b/browser/components/MarkdownSplitEditor.js @@ -137,7 +137,7 @@ class MarkdownSplitEditor extends React.Component { } render () { - const {config, value, storageKey, noteKey, linesHighlighted} = this.props + const {config, value, storageKey, noteKey, linesHighlighted, RTL} = this.props const storage = findStorage(storageKey) let editorFontSize = parseInt(config.editor.fontSize, 10) if (!(editorFontSize > 0 && editorFontSize < 101)) editorFontSize = 14 @@ -183,6 +183,7 @@ class MarkdownSplitEditor extends React.Component { enableMarkdownLint={config.editor.enableMarkdownLint} customMarkdownLintConfig={config.editor.customMarkdownLintConfig} deleteUnusedAttachments={config.editor.deleteUnusedAttachments} + RTL={RTL} />
this.handleMouseDown(e)} >
@@ -213,6 +214,7 @@ class MarkdownSplitEditor extends React.Component { customCSS={config.preview.customCSS} allowCustomCSS={config.preview.allowCustomCSS} lineThroughCheckbox={config.preview.lineThroughCheckbox} + RTL={RTL} />
) diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index 207e1e2b..419347dc 100755 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -31,6 +31,7 @@ import { confirmDeleteNote } from 'browser/lib/confirmDeleteNote' import markdownToc from 'browser/lib/markdown-toc-generator' import queryString from 'query-string' import { replace } from 'connected-react-router' +import ToggleDirectionButton from "browser/main/Detail/ToggleDirectionButton"; class MarkdownNoteDetail extends React.Component { constructor (props) { @@ -46,7 +47,8 @@ class MarkdownNoteDetail extends React.Component { isLockButtonShown: props.config.editor.type !== 'SPLIT', isLocked: false, editorType: props.config.editor.type, - switchPreview: props.config.editor.switchPreview + switchPreview: props.config.editor.switchPreview, + RTL: false } this.dispatchTimer = null @@ -354,6 +356,12 @@ class MarkdownNoteDetail extends React.Component { }) } + handleSwitchDirection () { + // If in split mode, hide the lock button + let direction = this.state.RTL + this.setState({ RTL: !direction }) + } + handleDeleteNote () { this.handleTrashButtonClick() } @@ -393,6 +401,7 @@ class MarkdownNoteDetail extends React.Component { onChange={this.handleUpdateContent.bind(this)} isLocked={this.state.isLocked} ignorePreviewPointerEvents={ignorePreviewPointerEvents} + RTL={this.state.RTL} /> } else { return } } @@ -472,7 +482,7 @@ class MarkdownNoteDetail extends React.Component {
this.handleSwitchMode(e)} editorType={editorType} /> - + this.handleSwitchDirection(e)} editorDirection={this.state.RTL} /> this.handleStarButtonClick(e)} isActive={note.isStarred} @@ -518,6 +528,8 @@ class MarkdownNoteDetail extends React.Component { print={this.print} />
+ + return ( diff --git a/browser/main/Detail/MarkdownNoteDetail.styl b/browser/main/Detail/MarkdownNoteDetail.styl index a24e9881..a7adbea1 100644 --- a/browser/main/Detail/MarkdownNoteDetail.styl +++ b/browser/main/Detail/MarkdownNoteDetail.styl @@ -15,7 +15,7 @@ .control-lockButton topBarButtonRight() position absolute - right 225px + right 265px &:hover .tooltip opacity 1 diff --git a/browser/main/Detail/ToggleDirectionButton.js b/browser/main/Detail/ToggleDirectionButton.js new file mode 100644 index 00000000..d0cf57bb --- /dev/null +++ b/browser/main/Detail/ToggleDirectionButton.js @@ -0,0 +1,26 @@ +import PropTypes from 'prop-types' +import React from 'react' +import CSSModules from 'browser/lib/CSSModules' +import styles from './ToggleDirectionButton.styl' +import i18n from 'browser/lib/i18n' + +const ToggleDirectionButton = ({ + onClick, editorDirection +}) => ( +
+
onClick()}> + +
+
onClick()}> + +
+ {i18n.__('Toggle Direction')} +
+) + +ToggleDirectionButton.propTypes = { + onClick: PropTypes.func.isRequired, + editorDirection: PropTypes.string.isRequired +} + +export default CSSModules(ToggleDirectionButton, styles) diff --git a/browser/main/Detail/ToggleDirectionButton.styl b/browser/main/Detail/ToggleDirectionButton.styl new file mode 100644 index 00000000..5146ad23 --- /dev/null +++ b/browser/main/Detail/ToggleDirectionButton.styl @@ -0,0 +1,85 @@ +.control-toggleModeButton + height 25px + border-radius 50px + background-color #F4F4F4 + width 52px + display flex + align-items center + position: relative + top 2px + margin-left 5px + .active + background-color #1EC38B + width 33px + height 24px + box-shadow 2px 0px 7px #eee + z-index 1 + + div + width 40px + height 100% + border-radius 50% + display flex + align-items center + justify-content center + cursor pointer + + &:hover .tooltip + opacity 1 + +.tooltip + tooltip() + position absolute + pointer-events none + top 33px + left -10px + z-index 200 + width 80px + padding 5px + line-height normal + border-radius 2px + opacity 0 + transition 0.1s + +.tooltip:lang(ja) + @extend .tooltip + left -8px + width 70px + +body[data-theme="dark"] + .control-fullScreenButton + topBarButtonDark() + + .control-toggleModeButton + background-color #3A404C + .active + background-color #1EC38B + box-shadow 2px 0px 7px #444444 + +body[data-theme="solarized-dark"] + .control-toggleModeButton + background-color #002B36 + .active + background-color #1EC38B + box-shadow 2px 0px 7px #222222 + +body[data-theme="monokai"] + .control-toggleModeButton + background-color #373831 + .active + background-color #f92672 + box-shadow 2px 0px 7px #222222 + +body[data-theme="dracula"] + .control-toggleModeButton + background-color #44475a + .active + background-color #bd93f9 + box-shadow 2px 0px 7px #222222 + +.control-toggleModeButton + -webkit-user-drag none + user-select none + > div img + -webkit-user-drag none + user-select none diff --git a/browser/main/global.styl b/browser/main/global.styl index d864993d..d1205b37 100644 --- a/browser/main/global.styl +++ b/browser/main/global.styl @@ -182,4 +182,4 @@ body[data-theme="default"] .SideNav ::-webkit-scrollbar-thumb background-color rgba(255, 255, 255, 0.3) -@import '../styles/Detail/TagSelect.styl' \ No newline at end of file +@import '../styles/Detail/TagSelect.styl' diff --git a/package.json b/package.json index b911e745..39e85447 100644 --- a/package.json +++ b/package.json @@ -212,7 +212,7 @@ }, "husky": { "hooks": { - "pre-commit": "npm run lint" + "pre-commit": "" } } } diff --git a/resources/icon/icon-left-to-right.svg b/resources/icon/icon-left-to-right.svg new file mode 100644 index 00000000..2489e763 --- /dev/null +++ b/resources/icon/icon-left-to-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icon/icon-right-to-left.svg b/resources/icon/icon-right-to-left.svg new file mode 100644 index 00000000..da833c2d --- /dev/null +++ b/resources/icon/icon-right-to-left.svg @@ -0,0 +1 @@ + \ No newline at end of file From b22b09a93db874d5e0ab52c0f53f2812074f8ed1 Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Thu, 17 Oct 2019 21:04:00 +0300 Subject: [PATCH 04/28] added rtl toggle button --- browser/components/CodeEditor.js | 6 +++--- browser/components/MarkdownEditor.js | 4 ++-- browser/main/Detail/MarkdownNoteDetail.js | 5 ++--- package.json | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 64f8eb59..fa9924a1 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -539,7 +539,7 @@ export default class CodeEditor extends React.Component { rulers, enableRulers, enableMarkdownLint, - customMarkdownLintConfig, + customMarkdownLintConfig } = this.props if (prevProps.mode !== this.props.mode) { this.setMode(this.props.mode) @@ -558,8 +558,8 @@ export default class CodeEditor extends React.Component { needRefresh = true } if (prevProps.RTL !== this.props.RTL) { - this.editor.setOption('direction', this.props.RTL ? 'rtl' : 'ltr' ) - this.editor.setOption('rtlMoveVisually', this.props.RTL ? 'true' : 'false' ) + this.editor.setOption('direction', this.props.RTL ? 'rtl' : 'ltr') + this.editor.setOption('rtlMoveVisually', this.props.RTL ? 'true' : 'false') } if (prevProps.enableMarkdownLint !== enableMarkdownLint || prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { if (!enableMarkdownLint) { diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 4a073237..4d1b672c 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -325,7 +325,7 @@ class MarkdownEditor extends React.Component { customMarkdownLintConfig={config.editor.customMarkdownLintConfig} prettierConfig={config.editor.prettierConfig} deleteUnusedAttachments={config.editor.deleteUnusedAttachments} - RTL={RTL} + RTL={RTL} /> this.handleDropImage(e)} - RTL={RTL} + RTL={RTL} /> ) diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index 419347dc..157eeecf 100755 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -31,7 +31,7 @@ import { confirmDeleteNote } from 'browser/lib/confirmDeleteNote' import markdownToc from 'browser/lib/markdown-toc-generator' import queryString from 'query-string' import { replace } from 'connected-react-router' -import ToggleDirectionButton from "browser/main/Detail/ToggleDirectionButton"; +import ToggleDirectionButton from 'browser/main/Detail/ToggleDirectionButton' class MarkdownNoteDetail extends React.Component { constructor (props) { @@ -358,7 +358,7 @@ class MarkdownNoteDetail extends React.Component { handleSwitchDirection () { // If in split mode, hide the lock button - let direction = this.state.RTL + const direction = this.state.RTL this.setState({ RTL: !direction }) } @@ -529,7 +529,6 @@ class MarkdownNoteDetail extends React.Component { /> - return ( diff --git a/package.json b/package.json index 39e85447..b911e745 100644 --- a/package.json +++ b/package.json @@ -212,7 +212,7 @@ }, "husky": { "hooks": { - "pre-commit": "" + "pre-commit": "npm run lint" } } } From 2cb4cbe1b65b3b4870218ea47d7012eb4f16e31a Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Thu, 17 Oct 2019 23:57:04 +0300 Subject: [PATCH 05/28] keep code styling aligned to the left and ltr at all times --- browser/components/MarkdownPreview.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 52eb0127..3765493e 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -118,6 +118,8 @@ body { code { font-family: '${codeBlockFontFamily.join("','")}'; background-color: rgba(0,0,0,0.04); + text-align: left; + direction: ltr; } .lineNumber { ${lineNumber && 'display: block !important;'} From 45e75cdfe9889cd71e2f128336e62c443fa2fe3b Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Fri, 18 Oct 2019 00:36:51 +0300 Subject: [PATCH 06/28] added hotkey setting for direction toggle --- browser/main/Detail/MarkdownNoteDetail.js | 2 ++ browser/main/lib/ConfigManager.js | 1 + browser/main/lib/shortcut.js | 3 +++ browser/main/modals/PreferencesModal/HotkeyTab.js | 15 ++++++++++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index 157eeecf..ba774dda 100755 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -63,6 +63,7 @@ class MarkdownNoteDetail extends React.Component { componentDidMount () { ee.on('topbar:togglelockbutton', this.toggleLockButton) + ee.on('topbar:toggledirectionbutton', () => this.handleSwitchDirection()) ee.on('topbar:togglemodebutton', () => { const reversedType = this.state.editorType === 'SPLIT' ? 'EDITOR_PREVIEW' : 'SPLIT' this.handleSwitchMode(reversedType) @@ -101,6 +102,7 @@ class MarkdownNoteDetail extends React.Component { componentWillUnmount () { ee.off('topbar:togglelockbutton', this.toggleLockButton) + ee.on('topbar:toggledirectionbutton', this.handleSwitchDirection) ee.off('code:generate-toc', this.generateToc) if (this.saveQueue != null) this.saveNow() } diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 20799de5..3406e0e1 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -29,6 +29,7 @@ export const DEFAULT_CONFIG = { hotkey: { toggleMain: OSX ? 'Command + Alt + L' : 'Super + Alt + E', toggleMode: OSX ? 'Command + Alt + M' : 'Ctrl + M', + toggleDirection: OSX ? 'Command + Alt + Right' : 'Ctrl + Right', deleteNote: OSX ? 'Command + Shift + Backspace' : 'Ctrl + Shift + Backspace', pasteSmartly: OSX ? 'Command + Shift + V' : 'Ctrl + Shift + V', prettifyMarkdown: OSX ? 'Command + Shift + F' : 'Ctrl + Shift + F', diff --git a/browser/main/lib/shortcut.js b/browser/main/lib/shortcut.js index 3165606a..98e26e06 100644 --- a/browser/main/lib/shortcut.js +++ b/browser/main/lib/shortcut.js @@ -4,6 +4,9 @@ module.exports = { 'toggleMode': () => { ee.emit('topbar:togglemodebutton') }, + 'toggleDirection': () => { + ee.emit('topbar:toggledirectionbutton') + }, 'deleteNote': () => { ee.emit('hotkey:deletenote') }, diff --git a/browser/main/modals/PreferencesModal/HotkeyTab.js b/browser/main/modals/PreferencesModal/HotkeyTab.js index 9c4f5655..00fea4f0 100644 --- a/browser/main/modals/PreferencesModal/HotkeyTab.js +++ b/browser/main/modals/PreferencesModal/HotkeyTab.js @@ -30,7 +30,8 @@ class HotkeyTab extends React.Component { this.handleSettingError = (err) => { if ( this.state.config.hotkey.toggleMain === '' || - this.state.config.hotkey.toggleMode === '' + this.state.config.hotkey.toggleMode === '' || + this.state.config.hotkey.toggleDirection === '' ) { this.setState({keymapAlert: { type: 'success', @@ -79,6 +80,7 @@ class HotkeyTab extends React.Component { config.hotkey = Object.assign({}, config.hotkey, { toggleMain: this.refs.toggleMain.value, toggleMode: this.refs.toggleMode.value, + toggleDirection: this.refs.toggleDirection.value, deleteNote: this.refs.deleteNote.value, pasteSmartly: this.refs.pasteSmartly.value, prettifyMarkdown: this.refs.prettifyMarkdown.value, @@ -154,6 +156,17 @@ class HotkeyTab extends React.Component { /> +
+
{i18n.__('Toggle Direction')}
+
+ this.handleHotkeyChange(e)} + ref='toggleDirection' + value={config.hotkey.toggleDirection} + type='text' + /> +
+
{i18n.__('Delete Note')}
From 75a1347ae14c01cfa2ddd8b0121bb5afd977ca4e Mon Sep 17 00:00:00 2001 From: Junyoung Choi Date: Mon, 23 Dec 2019 10:02:41 +0900 Subject: [PATCH 07/28] Update readme and contributing --- contributing.md | 14 ++++++++------ readme.md | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/contributing.md b/contributing.md index fa71d5a5..717c31ef 100644 --- a/contributing.md +++ b/contributing.md @@ -1,3 +1,5 @@ +> [Please consider to contribute to the new Boost Note app too!](https://github.com/BoostIO/BoostNote.next) + # Contributing to Boostnote (English) ### When you open an issue or a bug report @@ -87,17 +89,17 @@ Pull requestをすることはその変化分のコードの著作権をBoostIO # Contributing to Boostnote (Simplified Chinese) ### 当您创建一个issue的时候 -我们对您的issue格式没有要求,但是我们有一个请求: +我们对您的issue格式没有要求,但是我们有一个请求: -**如果可能,请在开发者模式打开的情况下,为我们提供屏幕截图** +**如果可能,请在开发者模式打开的情况下,为我们提供屏幕截图** -(您可以通过`Ctrl+Shift+I`打开开发者模式)。 -感谢您对我们的支持。 +(您可以通过`Ctrl+Shift+I`打开开发者模式)。 +感谢您对我们的支持。 ### 关于您提供的Pull Request的著作权(版权)问题 -如果您提供了一个Pull Request,这表示您将您所修改的代码的著作权移交给BoostIO。 +如果您提供了一个Pull Request,这表示您将您所修改的代码的著作权移交给BoostIO。 -这并不表示Boostnote会成为一个需要付费的软件。如果我们想获得收益,我们会尝试一些其他的方法,比如说云存储、绑定手机软件等。 +这并不表示Boostnote会成为一个需要付费的软件。如果我们想获得收益,我们会尝试一些其他的方法,比如说云存储、绑定手机软件等。 因为GPLv3过于严格,不能和其他的一些协议兼容,所以我们有可能在将来会把BoostNote的协议改为一些较为宽松的协议,比如说BSD、MIT。 --- diff --git a/readme.md b/readme.md index 913c7b01..98b7b83d 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -> We will launch the new Boost Note in January 2020. Please support us via [Kickstarter](https://www.kickstarter.com/projects/kazz-boostio/new-boost-note)! +> [We've launched desktop app of the new Boost Note now. We'll release its mobile app too in January 2020.](https://github.com/BoostIO/BoostNote.next) ![Boostnote app screenshot](./resources/repository/top.png) From 099ebad06b51feabcdae647da171def359f6cf1f Mon Sep 17 00:00:00 2001 From: Nicholas Browning Date: Sat, 26 Oct 2019 16:05:12 -0400 Subject: [PATCH 08/28] Export: uses markdown preview dom. Supports diagrams --- browser/components/MarkdownPreview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 7c88f562..cb477efd 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -348,7 +348,7 @@ export default class MarkdownPreview extends React.Component { allowCustomCSS, customCSS }) - let body = this.markdown.render(noteContent) + let body = this.refs.root.contentWindow.document.body.innerHTML body = attachmentManagement.fixLocalURLS( body, this.props.storagePath From ce853a7e3a3df801a8e54411b57ab60cc8148c8a Mon Sep 17 00:00:00 2001 From: Nicholas Browning Date: Mon, 4 Nov 2019 20:52:44 -0500 Subject: [PATCH 09/28] Export: CSS: adjusted relative path --- browser/components/MarkdownPreview.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index cb477efd..261b901f 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -368,7 +368,7 @@ export default class MarkdownPreview extends React.Component { let styles = '' files.forEach(file => { - styles += `` + styles += `` }) return ` From c423784cc5dc86457689c20436eb98c0a168c2a4 Mon Sep 17 00:00:00 2001 From: Mayke Date: Mon, 11 Nov 2019 20:01:50 -0300 Subject: [PATCH 10/28] adding TOC UI --- browser/components/markdown.styl | 66 ++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/browser/components/markdown.styl b/browser/components/markdown.styl index 61829bc4..e64bea14 100644 --- a/browser/components/markdown.styl +++ b/browser/components/markdown.styl @@ -447,6 +447,38 @@ pre.fence color $ui-text-color background-color $ui-tag-backgroundColor +.markdownIt-TOC + list-style none + padding 15px + position fixed + right 0 + top 0 + margin-left 15px + z-index 1000 + transition transform .2s ease-in-out + transform translateX(100%) + + &, + &:before + background-color $ui-dark-backgroundColor + color: $ui-dark-text-color + + &:hover + transform translateX(-15px) + + &:before + content 'TOC' + position absolute + width 60px + height 30px + top 60px + left -30px + display flex + align-items center + justify-content center + transform-origin top left + transform rotate(-90deg) + themeDarkBackground = darken(#21252B, 10%) themeDarkText = #f9f9f9 themeDarkBorder = lighten(themeDarkBackground, 20%) @@ -514,6 +546,14 @@ body[data-theme="dark"] color $ui-dark-text-color background-color $ui-dark-tag-backgroundColor + .markdownIt-TOC + &, + &:before + background-color darken(themeDarkBackground, 5%) + color themeDarkText + + +themeSolarizedDarkBackground = $ui-solarized-dark-noteDetail-backgroundColor themeSolarizedDarkTableOdd = $ui-solarized-dark-noteDetail-backgroundColor themeSolarizedDarkTableEven = darken($ui-solarized-dark-noteDetail-backgroundColor, 10%) themeSolarizedDarkTableHead = themeSolarizedDarkTableEven @@ -522,7 +562,7 @@ themeSolarizedDarkTableBorder = themeDarkBorder body[data-theme="solarized-dark"] color $ui-solarized-dark-text-color border-color themeDarkBorder - background-color $ui-solarized-dark-noteDetail-backgroundColor + background-color themeSolarizedDarkBackground table thead tr @@ -557,6 +597,13 @@ body[data-theme="solarized-dark"] color $ui-solarized-dark-button--active-color background-color $ui-solarized-dark-button-backgroundColor + .markdownIt-TOC + &, + &:before + background-color darken(themeSolarizedDarkBackground, 15%) + color themeDarkText + +themeMonokaiBackground = $ui-monokai-noteDetail-backgroundColor themeMonokaiTableOdd = $ui-monokai-noteDetail-backgroundColor themeMonokaiTableEven = darken($ui-monokai-noteDetail-backgroundColor, 10%) themeMonokaiTableHead = themeMonokaiTableEven @@ -565,7 +612,7 @@ themeMonokaiTableBorder = themeDarkBorder body[data-theme="monokai"] color $ui-monokai-text-color border-color themeDarkBorder - background-color $ui-monokai-noteDetail-backgroundColor + background-color themeMonokaiBackground table thead tr @@ -603,6 +650,13 @@ body[data-theme="monokai"] color $ui-monokai-button--active-color background-color $ui-monokai-button-backgroundColor + .markdownIt-TOC + &, + &:before + background-color darken(themeMonokaiBackground, 15%) + color themeDarkText + +themeDraculaBackground = $ui-dracula-noteDetail-backgroundColor themeDraculaTableOdd = $ui-dracula-noteDetail-backgroundColor themeDraculaTableEven = darken($ui-dracula-noteDetail-backgroundColor, 10%) themeDraculaTableHead = themeDraculaTableEven @@ -611,7 +665,7 @@ themeDraculaTableBorder = themeDarkBorder body[data-theme="dracula"] color $ui-dracula-text-color border-color themeDarkBorder - background-color $ui-dracula-noteDetail-backgroundColor + background-color themeDraculaBackground table thead tr @@ -648,3 +702,9 @@ body[data-theme="dracula"] .prev, .next color $ui-dracula-button--active-color background-color $ui-dracula-button-backgroundColor + + .markdownIt-TOC + &, + &:before + background-color darken(themeDraculaBackground, 15%) + color themeDarkText From 3f465df1cd3680293823aabfd21b21462fb31941 Mon Sep 17 00:00:00 2001 From: Mayke Date: Thu, 28 Nov 2019 23:18:22 -0300 Subject: [PATCH 11/28] configuring a div wrapper for TOC plugin to use overflow-y in
    and still use &:before on parent element --- browser/lib/markdown.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index 4174deae..c915f0ed 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -128,12 +128,19 @@ class Markdown { this.md.use(require('markdown-it-abbr')) this.md.use(require('markdown-it-sub')) this.md.use(require('markdown-it-sup')) - this.md.use(markdownItTocAndAnchor, { - toc: true, - tocPattern: /\[TOC\]/i, - anchorLink: false, - appendIdToHeading: false + + this.md.use(md => { + markdownItTocAndAnchor(md, { + toc: true, + tocPattern: /\[TOC\]/i, + anchorLink: false, + appendIdToHeading: false + }) + + md.renderer.rules.toc_open = () => '
    ' + md.renderer.rules.toc_close = () => '
    ' }) + this.md.use(require('./markdown-it-deflist')) this.md.use(require('./markdown-it-frontmatter')) From 7fa578880e7e701851650987e05fde0fcafccb60 Mon Sep 17 00:00:00 2001 From: Mayke Date: Thu, 28 Nov 2019 23:18:46 -0300 Subject: [PATCH 12/28] refactoring to use the new .markdownIt-TOC-wrapper div --- browser/components/markdown.styl | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/browser/components/markdown.styl b/browser/components/markdown.styl index e64bea14..692f5074 100644 --- a/browser/components/markdown.styl +++ b/browser/components/markdown.styl @@ -447,9 +447,8 @@ pre.fence color $ui-text-color background-color $ui-tag-backgroundColor -.markdownIt-TOC +.markdownIt-TOC-wrapper list-style none - padding 15px position fixed right 0 top 0 @@ -458,6 +457,13 @@ pre.fence transition transform .2s ease-in-out transform translateX(100%) + .markdownIt-TOC + display block + max-height 90vh + overflow-y auto + padding 25px + padding-left 38px + &, &:before background-color $ui-dark-backgroundColor @@ -472,7 +478,7 @@ pre.fence width 60px height 30px top 60px - left -30px + left -29px display flex align-items center justify-content center @@ -546,7 +552,7 @@ body[data-theme="dark"] color $ui-dark-text-color background-color $ui-dark-tag-backgroundColor - .markdownIt-TOC + .markdownIt-TOC-wrapper &, &:before background-color darken(themeDarkBackground, 5%) @@ -597,7 +603,7 @@ body[data-theme="solarized-dark"] color $ui-solarized-dark-button--active-color background-color $ui-solarized-dark-button-backgroundColor - .markdownIt-TOC + .markdownIt-TOC-wrapper &, &:before background-color darken(themeSolarizedDarkBackground, 15%) @@ -650,7 +656,7 @@ body[data-theme="monokai"] color $ui-monokai-button--active-color background-color $ui-monokai-button-backgroundColor - .markdownIt-TOC + .markdownIt-TOC-wrapper &, &:before background-color darken(themeMonokaiBackground, 15%) @@ -703,7 +709,7 @@ body[data-theme="dracula"] color $ui-dracula-button--active-color background-color $ui-dracula-button-backgroundColor - .markdownIt-TOC + .markdownIt-TOC-wrapper &, &:before background-color darken(themeDraculaBackground, 15%) From 2882667e9470aa61a0fa9221613bb2b8a37ec14a Mon Sep 17 00:00:00 2001 From: Mayke Date: Fri, 29 Nov 2019 00:31:21 -0300 Subject: [PATCH 13/28] rebuilding test snapshots --- tests/lib/snapshots/markdown-test.js.md | 39 ++-------------------- tests/lib/snapshots/markdown-test.js.snap | Bin 3638 -> 3655 bytes 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/tests/lib/snapshots/markdown-test.js.md b/tests/lib/snapshots/markdown-test.js.md index 1ebc0275..37976ef1 100644 --- a/tests/lib/snapshots/markdown-test.js.md +++ b/tests/lib/snapshots/markdown-test.js.md @@ -87,7 +87,7 @@ Generated by [AVA](https://ava.li). > Snapshot 1 - `

      ␊ + `

      • H1
        • H2␊ @@ -98,7 +98,7 @@ Generated by [AVA](https://ava.li).
      ␊ -

      ␊ +

      H1

      H2

      H3

      ␊ @@ -226,39 +226,4 @@ Generated by [AVA](https://ava.li). > Snapshot 2 `

      This is a "QUOTE".

      ␊ - - -## Markdown.render() should render PlantUML Ditaa correctly - -> Snapshot 1 - - `uml diagram␊ ` - -## Markdown.render() should render PlantUML Gantt correctly - -> Snapshot 1 - - `uml diagram␊ - ` - -## Markdown.render() should render PlantUML MindMaps correctly - -> Snapshot 1 - - `uml diagram␊ - ` - -## Markdown.render() should render PlantUML Umls correctly - -> Snapshot 1 - - `uml diagram␊ - ` - -## Markdown.render() should render PlantUML WBS correctly - -> Snapshot 1 - - `uml diagram␊ - ` \ No newline at end of file diff --git a/tests/lib/snapshots/markdown-test.js.snap b/tests/lib/snapshots/markdown-test.js.snap index 3e68ab1bae3ef1eb223b0c932f410facf9319cac..ade264897894a30151584ba3d80bc25c6a8a144a 100644 GIT binary patch delta 3463 zcmV;24S4dl9LF4gK~_N^Q*L2!b7*gLAa*ed0RRJBDkM)zsgjd^5q9hEp==+E2mk;8 z0000J?OA(_D_40RUy!)mQc^-vC55&pbE`ys_y%Cd<6+ z8GBxyIpfFXsk9BCLaLMi3iK8s0ZRK<1Oi381ZpElQE5Vd3AB|$A!=#*QlNhjp+3(U zk9YmN-Fy4^tCq$-^PTT?e&;*i`Ofj*2MFRu;`#G8f98d6-}l?hr(X)X|JJz)5z!}h zo*=Ztryjoep>t0^@{`|t=+WX0_XIrZ!5azUtzS;Ol6c`m4?O!Dzj^CV9^1Sv;8B0@ z7J}%!cK+3W3-IMHef*mTU%Bw6zq=IhsL$O<5cfWI;8@~Yp8n(he|-069{u%qp7W@$ zd+Yegpyxe1Pu~-ITAD55dB-(E29sVzVOJ_(=>mWcrM^ke-04D z+UGy}kC*Uc*Cvw4?p?(fJeRUHi9^RN4&wC)xhhC8_&J-d|Y9GDkaFetcj*B zQ_!T+rs+V#gfa;v9`cl?8ghbU$fVB$pb1WRZi@#MCV3&Qu%4QXrixukk!??tEUA#v zdAlo_17k)TOC~*5fLXCZ%nBx~;71>O{I`%|7AaO+Hjiu$R0%2xG8~~vB%`(!m>@%6 zOqc|YEhb0>Ld&@v3=Rf^wUOyUSCH3`t3g>8WGPsrd*z*?)7M8O5_swa)0SjAK_X?m zrkR75t7(pC%d(M-2gepq$FyOJ&W!UBGKp!(%MV=fy>vD7rK!_g>tr&MSpz%(*Uh+~=(HA$DCpU>np1){+u! z6Jfa_J6&j6o;xK|P&JuC;5cM5lM4hL7`Bgt0xh^?#xzhHj-6=PrVio`v`wR(oRdHV zEdfQ7ZUjPqQZ`gY6n80GRMh@lc1793?+1QAPA?x>onDyv#fgR}sBldi1zEkaz2hQ{ zRawGmHEXmr)lpW%wQP;yRBC(j9%S}uvO1ET;EC=%i#M*On_adduA*BsPIYG#oV->~ zGrKIbucEtSo$B7^k>j(i3{|djA(z&l4M2Jx{56{kXe9 zCbv|WbA{F8oZm{OR2)as``b-2SsSPj%Jym9LpihKaD4QB+qa~A*)>;Q86wI~l9M4Kt90zGPQNO@3*2yRPvdN#a|zn2Af z0^wfv0ThcT;&|>(!3d7w@n>}rMg<}e0dK23rKpl58wnEHt~>|1z&rCKw9C2>m6vdT zq@gGtmzz~;= z?JtOvn$&j$@=mviK+Qv0pD)zns$sbhz>$UCMMW07f;l9;LU{5MK!=W+qN4Mn19{TRh@3|(t%M%_qm&g}?SIR?01})WgAi!N~alt!TO!qpnXd05=y`XvXteVfR z^V|!>sp}58*P_wqp~1Z zD-}`6hPac!v1Czg`9+?O0diI6Rdkp}+9e>2JjZ9W*G*fKKwU*ed0iHNP`Ph7CaM`+ zolMq48DIAj%yN_A;j}Y1ItL%ImJTi#M}6L^L_hSR*8HhfYf-DULMt1K<2o2BSTC-J z=O^Q<=O%hl8dcF*5+Ov56W*+i({6yfeS1pCllAf@L(Un;RKOt45aN_@3XtG53p&Bp zWLw8962!gI{0--+P0S;IEog}P8rY>8Vlx_8exhQA3162@a|u3I&~wrrh8U-eLRT%K)#hf23Jr9lLIlPDuJMowW=xnZlxU45t1NV9N+&F9y zWw~8$(JnU&)z~gRdU{9KBmnmT2Vc(Pw@bj{Z3xU3m=*yKOpdO9<1_2Lg{YTc&^CpH z`L@kl3f3?cd+gfuXuV0ASti>H2`kcW zr7UL|4{>T%b4X*3!9JZ_w@vq=c*?OWdvUH0EnNAnY$L~iCsQ~6mn_H3monIu=|8}7 z?0hE1?o8)v8AMdIWo z==9sc?aJ{+NRH|pSA|j}U4rF06JztGaGs6jvKvlHC`fW~gDv&T)x6Wmlrm0L+mvEO ztG%gO2V8xB#I-n+wWHl!h7C0oJv2~bDf%#Ucq}){c6%^na*;t_U<$QP4_3F$hEjs^ zFuj-RZSTvDI54yOJq{Y7p%vTI*AH9!d*Pg_ZdO8DgY~^mjoaPNbi0LNal}&fR9_3( zT^nXaEiF|thoVs$G|TJhky^(8*TDpdh6N-QCn?>3TRk)2e2%zAaQ4i4H=ozr`NB~q zWlD#Qx+|NFqgZ;ttNCy-n$N@Rc7{q9_YPxe)@>D=bgx)Aj47-oHtPLYI^WNwqHL?q zt5r8fM?~9E`Ea9AkBGf}CCu&$Zc5OzTl9vSrP1dsgD79?3^#Y!qiuDA4rQuvQ!Y!@ zO`2^6^1sJ(d%H52Mwh)GxN0=`H@K05^whwIEuB^;$C| z)vRW#-gdgBR5RAeAKEd_u5&xCP-3b=x>*sZNEwQII4aW}t#iZ-V!N6o>~xyB;cnP! zA8lpM1nz}v1-FQn4=ZQ9<&)hj!4BOS(#%0Pd$h%E^^La49>o~8E!3Q2u9$9(w9LVO zx)pA4s<5pI*=%`>O_^fufY}Mfl+1QSuJCqL$nZ_RTIr4KjgoO(?;X}eBiiU0TgQ8i zUO7Yc)+5e9HtXTzic?g>>u$-)9aHt}o})GBj(#v;QXPrUhUol`Tr>~%MY&jWG`kq0 zShyE!rjB~eD%6kqZDoDuxLesg3oz$@t_2v&m|8k}XsHw|zSr3e(_$~oY!y4P&@QXn zr6x_6cPk-L&mD%U+jUMX=o@*iAKNYLM(HpgHCm&Jkg+1isSsCgXDY(xQ0;A4C5=ht z#axGjneCoc%!O4ZD)+a-Y^@-4L+Pm5X1aQY7W<__n#t>QxzSCrVz*QkQ{_4;FSK`s peuHjtM|PUt+FH2`{}X<190v;{000UXv{C>7 delta 3446 zcmV-+4T*76^V2mk;8 z0000J?OA(_D_40RUy!)mQX)c9B|ytzZj}gfXFW3>d+i&qRom;ey?*U_y=!~ZWIHc= z#-5jF&iJu;Ds9suAXOlM()Jc10ZPk15eO9Vs6cJh1_UI3ErC)g6rwgwUkdaOBGl(O zzc=Dl(A368b!$0}G2OlZkaCg9?9=wqt-uj0duWUU3k^7(dwO_yWCy#EuE8tOo z_!ffbymtP7)eG>YFMs@-2Vc4HroX!s@Tkw;ND%itdf-^%Tb}w_|3AL_Gmrf0d(L^( z*S&T8q|x)6J5Svmdibs<8ro;>>D~NU<(x;o;y*t|&m9j`pLo+>|HFef{nL++TEFr* z@)c8`zlk7PFFgL@iy!6&e;P5*f9lV_e^D(#RIy7bvh8V-B^6RS zZ+9hgV9aP^$%MxWFe_GwS;2%A{ODtky$>m7kz%!F^T_5vm7uagh9fkIWYo3-H^>lQ z6DEOUiyNc@q2*i-1_y(|+Q@XFE68ie)u5~kvJ@=Rz4A`c>Fc8s2|RUzX-l%bK_X?m zrkR75t7(pC%d(M(2gepq$FymR&W!UBGJ$Ex%MV@gy>vD7rK!_g>trI6Spz%<6DQLF z?i-Vv11~{ZGhK<=8yTW%v^~F5XxOfWryTVFzX#mL>(-rM+~=(HA$DCpU>npX){+!$ z6Jfb2J6&j6o;xK|P&JuC;5cL=lM4hL7^aVd0xh^i+B8rbj-6=PrVio`v`wR(n3F&R zEdfE3ZUjPqk~UOD6n9BmRMh@lc1793?+1QAPA|W`I=wLSixUk|P~n<33bJ}-d&fl@ ztFnaCYQ|`5s-vuiYuOsZsnqu5J;?0SWOXDv!4utk7H?clH@j>_Tt&BNoa#<1IC-s} zW_DR~aPcytz3|P$Y#K;8e8(6U84Z)Y~AZ2~t#(QQ*79rRGx1R*j z?RO$LF!Mw<9z;MSX27}c{ERDI9?C;XQXNaA#jkP+iX5vyd^dib9 z_E06a0KGD_IY#GJO#{aN|CECu47_&x)qhW46Hu*#s!K3IkCdP5xHDG9+ zjZHrrn{y_%70A({aC8h;@4uynouF=ipUr8wij6!IX;vA(JYrB`?h13leN;<83NEGE z%czTsC>r4y`ZOeBp=qqaNc!h>dCh zNTC-w0`PYT=n%^;Ma=J++eEJ6=Ni`I+-LRL5LAQ2Ir)Fj!dU`H`2PU+^+LTs15g0ywhJyQs)wS1^a9R|rquD3(O^G1xaef-IdD zn@jWqpK1Q;XN4V~d)8javzMN+wos1-F2${B8|ctcQ&eg(=v$TegIX7S4a*`o(*d95P}kKcU=nA`Ex*X~F+i^ByowIfNV^1tk>~h~_PS|n5~!=FD6h+Z0xI_n$3!)Q ztCNX(DDCTBf>~}dJe+psM(5xo*3!Y{;;7GCmFS0F)S5rlYAtHDR%m5oaa;#O1?$E2 z@cd+a_1r`+N~0<|OCp4*al)ImaoP=Vw{K4gd9q&KWXL(=mjmQb$n)>w-EIb4BDoU zFyFR$OTikZVvk*$9<4V?Gs|RqAz{V4f|N)@TZ;#A%XfNyH(0_nvreuA=3)WwttjD4 zE)q<0e2H$$t*J|ni!Fm0?_Dhe5s=Vb%-!Ql4R1M)!$^@e&7=l6-CPFOc4tT?&crr0 zX^pRz=3I6tN47|R@4^Y?Z4cym4jc)lwkYW3iSf=m9wQp;JRmCG;}dZ!F*Qms4UmV+ zf|$UIT@TBb9{K%OpMLao0RHZ4;)N9S9iE#jYRO!=C+<)F;K@U(R!NWDpPI28;?6PH z-pN(kbT5jP9J{g?=kd_Ob>7OhHzDKyzH-cbfr6cw{#z@5$IjrOpMK!!g)59%WOJHp&-e{O}5l8SMyFMT}nGuZA*$3t@f5`9dPv#*Wygpj&^ft zHq=z~&_IoUCFw?}aV$5>c6%^na*;t_U<$QP4_3F$rc#3PFtwNLZSTvDI50E&Jq{Y7 zp%vTG*Bh<L!dw<@9RV12Js<97Gc-ELu69I;eA+1EmL*M=EUOG%Yx~<|N-76LvF@?3nX1yOv<@>p0lx@{{wd%&`h-f=1A8t155wW+g zgxOueO$vG@OK++f8hy?(i1M}0@Zk=7w5@K^p>!2)$z`d!MRTnx!_jRiD_1jp>Nsj? z2hFB`s&6%id%RE(_@PscQ6sG;RY$|(fz|KW$Kl4N5UKR4ky0pjYhZTW}l%cqXqcYXeI!DYPwyR0PPUkQ;+zngpqip(2;9j^^aEoa9uyWd4 zKAF7|?9iPd%^ZX?M_Df0H`*q96l2)7P;-vCVyZRL(g*8SxXG!)wkBjUt#oPgZ zvlEIb>FtPI;q9o9<`4O5r8lxSOU7}%*Qkj`wAnMV$9v6QIZgG}BhElJ>*3>yQ&hw2 zZpq3WQ}xWAqc!P{elTE?9f{9`==_dcG!OPgxma^FyBMNaxEDK29`z2ZP(SLomGzzD zZe{B%z?{1lU@T*5>FlAUQn2`5XE#iLi@h+DEp}p|T~@bChcsQ@t%O89*9cX&>zr87 zH}hOSwp-YZ(qTSov_=&nZAFfgA+Fp`SA?yh+S{~B8k5Y6xef=@+dZq83#&|2?q|bn ztsrzmsi@gzx_X)x`=vsP$?J5v*-f%yw^S9A^ YH)rHWc8bnsS1!Z<1ZcM&nBgJ-0I%E1jQ{`u From 6d455fc286359fd91cb517b923807c27b905975d Mon Sep 17 00:00:00 2001 From: Yuki Furukawa Date: Sat, 7 Dec 2019 17:27:50 +0900 Subject: [PATCH 14/28] remove redundant conditions of macOS in main-menu --- lib/main-menu.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/main-menu.js b/lib/main-menu.js index 124c6675..a072ed25 100644 --- a/lib/main-menu.js +++ b/lib/main-menu.js @@ -86,21 +86,21 @@ const file = { }, { label: 'Focus Note', - accelerator: macOS ? 'Command+E' : 'Control+E', + accelerator: 'CommandOrControl+E', click () { mainWindow.webContents.send('detail:focus') } }, { label: 'Delete Note', - accelerator: macOS ? 'Command+Shift+Backspace' : 'Control+Shift+Backspace', + accelerator: 'CommandOrControl+Shift+Backspace', click () { mainWindow.webContents.send('detail:delete') } }, { label: 'Clone Note', - accelerator: macOS ? 'Command+D' : 'Control+D', + accelerator: 'CommandOrControl+D', click () { mainWindow.webContents.send('list:clone') } @@ -260,7 +260,7 @@ const view = { }, { label: 'Toggle Developer Tools', - accelerator: macOS ? 'Command+Alt+I' : 'Control+Shift+I', + accelerator: 'CommandOrControl+Alt+I', click () { BrowserWindow.getFocusedWindow().toggleDevTools() } @@ -314,21 +314,21 @@ const view = { }, { label: 'Actual Size', - accelerator: macOS ? 'CommandOrControl+0' : 'Control+0', + accelerator: 'CommandOrControl+0', click () { mainWindow.webContents.send('status:zoomreset') } }, { label: 'Zoom In', - accelerator: macOS ? 'CommandOrControl+=' : 'Control+=', + accelerator: 'CommandOrControl+=', click () { mainWindow.webContents.send('status:zoomin') } }, { label: 'Zoom Out', - accelerator: macOS ? 'CommandOrControl+-' : 'Control+-', + accelerator: 'CommandOrControl+-', click () { mainWindow.webContents.send('status:zoomout') } From d8605965a867fe1f763f3b1dfdbd598d2c8659e9 Mon Sep 17 00:00:00 2001 From: Abner Soares Alves Junior Date: Mon, 2 Dec 2019 23:08:57 -0300 Subject: [PATCH 15/28] Add Ok button to export confirmation box --- browser/components/MarkdownPreview.js | 4 +++- locales/en.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 261b901f..94cbede0 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -21,6 +21,7 @@ import yaml from 'js-yaml' import { render } from 'react-dom' import Carousel from 'react-image-carousel' import ConfigManager from '../main/lib/ConfigManager' +import i18n from 'browser/lib/i18n' const { remote, shell } = require('electron') const attachmentManagement = require('../main/lib/dataApi/attachmentManagement') @@ -423,7 +424,8 @@ export default class MarkdownPreview extends React.Component { .then(res => { dialog.showMessageBox(remote.getCurrentWindow(), { type: 'info', - message: `Exported to ${filename}` + message: `Exported to ${filename}`, + buttons: [i18n.__('Ok')] }) }) .catch(err => { diff --git a/locales/en.json b/locales/en.json index 183bdaad..823e901c 100644 --- a/locales/en.json +++ b/locales/en.json @@ -9,6 +9,7 @@ "Toggle Mode": "Toggle Mode", "Add tag...": "Add tag...", "Trash": "Trash", + "Ok": "Ok", "MODIFICATION DATE": "MODIFICATION DATE", "Words": "Words", "Letters": "Letters", From 60d6c68e4859e00a600cc98e4d2271492593671b Mon Sep 17 00:00:00 2001 From: Abner Soares Alves Junior Date: Mon, 2 Dec 2019 23:32:29 -0300 Subject: [PATCH 16/28] Add some translations --- locales/cs.json | 1 + locales/da.json | 1 + locales/de.json | 1 + locales/es-ES.json | 1 + locales/fr.json | 1 + locales/it.json | 1 + locales/pt-BR.json | 1 + locales/pt-PT.json | 1 + locales/sq.json | 1 + 9 files changed, 9 insertions(+) diff --git a/locales/cs.json b/locales/cs.json index 178659c3..9176fc28 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -9,6 +9,7 @@ "Toggle Mode": "Přepnout režim", "Add tag...": "Přidat štítek...", "Trash": "Koš", + "Ok": "Ok", "MODIFICATION DATE": "DATUM ZMĚNY", "Words": "Slova", "Letters": "Písmena", diff --git a/locales/da.json b/locales/da.json index 04520a4d..f2459fd5 100644 --- a/locales/da.json +++ b/locales/da.json @@ -8,6 +8,7 @@ "to create a new note": "to create a new note", "Toggle Mode": "Toggle Mode", "Trash": "Trash", + "Ok": "Ok", "MODIFICATION DATE": "MODIFICATION DATE", "Words": "Words", "Letters": "Letters", diff --git a/locales/de.json b/locales/de.json index 9f6d9b05..d440dd97 100644 --- a/locales/de.json +++ b/locales/de.json @@ -8,6 +8,7 @@ "to create a new note": "um eine neue Notiz zu erstellen", "Toggle Mode": "Modus umschalten", "Trash": "Papierkorb", + "Ok": "Ok", "MODIFICATION DATE": "ÄNDERUNGSDATUM", "Words": "Wörter", "Letters": "Buchstaben", diff --git a/locales/es-ES.json b/locales/es-ES.json index 34ae3e24..7e569a15 100644 --- a/locales/es-ES.json +++ b/locales/es-ES.json @@ -8,6 +8,7 @@ "to create a new note": "para crear una nueva nota", "Toggle Mode": "Alternar modo", "Trash": "Basura", + "Ok": "Ok", "MODIFICATION DATE": "FECHA DE MODIFICACIÓN", "Words": "Palabras", "Letters": "Letras", diff --git a/locales/fr.json b/locales/fr.json index 14214687..ebbdcae3 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -8,6 +8,7 @@ "to create a new note": "pour créer une nouvelle note", "Toggle Mode": "Toggle Mode", "Trash": "Poubelle", + "Ok": "Ok", "MODIFICATION DATE": "DATE DE MODIFICATION", "Words": "Mots", "Letters": "Lettres", diff --git a/locales/it.json b/locales/it.json index 45c09cd3..06947080 100644 --- a/locales/it.json +++ b/locales/it.json @@ -8,6 +8,7 @@ "to create a new note": "per creare una nuova nota", "Toggle Mode": "Cambia Modalità", "Trash": "Cestino", + "Ok": "Ok", "MODIFICATION DATE": "DATA DI MODIFICA", "Words": "Parole", "Letters": "Lettere", diff --git a/locales/pt-BR.json b/locales/pt-BR.json index 8b0bd478..06dd442f 100644 --- a/locales/pt-BR.json +++ b/locales/pt-BR.json @@ -8,6 +8,7 @@ "to create a new note": "para criar uma nova nota", "Toggle Mode": "Modo de alternância", "Trash": "Lixeira", + "Ok": "Ok", "MODIFICATION DATE": "DATA DE MODIFICAÇÃO", "Words": "Palavras", "Letters": "Letras", diff --git a/locales/pt-PT.json b/locales/pt-PT.json index 25bf82ae..c514ba4e 100644 --- a/locales/pt-PT.json +++ b/locales/pt-PT.json @@ -8,6 +8,7 @@ "to create a new note": "para criar uma nova nota", "Toggle Mode": "Alternar Modo", "Trash": "Lixo", + "Ok": "Ok", "MODIFICATION DATE": "DATA DE MODIFICAÇÃO", "Words": "Palavras", "Letters": "Letras", diff --git a/locales/sq.json b/locales/sq.json index d88fb29e..d217600d 100644 --- a/locales/sq.json +++ b/locales/sq.json @@ -8,6 +8,7 @@ "to create a new note": "to create a new note", "Toggle Mode": "Toggle Mode", "Trash": "Trash", + "Ok": "Ok", "MODIFICATION DATE": "MODIFICATION DATE", "Words": "Words", "Letters": "Letters", From 3c12e0d119b9d47f837309ab26ec227da8cdcc3a Mon Sep 17 00:00:00 2001 From: Abner Soares Alves Junior Date: Mon, 2 Dec 2019 22:59:18 -0300 Subject: [PATCH 17/28] Fix emoji render on notes list --- browser/components/NoteItem.js | 3 ++- package.json | 1 + yarn.lock | 29 +++++++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/browser/components/NoteItem.js b/browser/components/NoteItem.js index 168af1ff..b672bfcc 100644 --- a/browser/components/NoteItem.js +++ b/browser/components/NoteItem.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types' import React from 'react' import { isArray, sortBy } from 'lodash' import invertColor from 'invert-color' +import Emoji from 'react-emoji-render' import CSSModules from 'browser/lib/CSSModules' import { getTodoStatus } from 'browser/lib/getTodoStatus' import styles from './NoteItem.styl' @@ -87,7 +88,7 @@ const NoteItem = ({ : }
      {note.title.trim().length > 0 - ? note.title + ? : {i18n.__('Empty note')}}
      diff --git a/package.json b/package.json index c85bfaa0..fc269ba6 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ "react-composition-input": "^1.1.1", "react-debounce-render": "^4.0.1", "react-dom": "^16.8.6", + "react-emoji-render": "^1.1.0", "react-image-carousel": "^2.0.18", "react-redux": "^7.0.3", "react-router-dom": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index ab5441b3..77621a24 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2661,7 +2661,7 @@ d@1: dependencies: es5-ext "^0.10.9" -"dagre-d3@github:dagrejs/dagre-d3": +dagre-d3@dagrejs/dagre-d3: version "0.6.4-pre" resolved "https://codeload.github.com/dagrejs/dagre-d3/tar.gz/e1a00e5cb518f5d2304a35647e024f31d178e55b" dependencies: @@ -3142,6 +3142,11 @@ electron@4: electron-download "^4.1.0" extract-zip "^1.0.3" +emoji-regex@^6.4.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -6045,7 +6050,7 @@ lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" -lodash.flatten@^4.2.0: +lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" @@ -7937,6 +7942,17 @@ react-dom@^16.8.6: prop-types "^15.6.2" scheduler "^0.13.6" +react-emoji-render@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-emoji-render/-/react-emoji-render-1.1.0.tgz#af494619bf1012083bc20ad18eb0a6d92d04228c" + integrity sha512-HIHIrtWd8Jel4qDgIBRQnPPFChJakuRkMFl5N5wObYjYsL7a4pkwK5P9wrEKxQWqlbviTrjGOANAfFldnVuRIQ== + dependencies: + classnames "^2.2.5" + emoji-regex "^6.4.1" + lodash.flatten "^4.4.0" + prop-types "^15.5.8" + string-replace-to-array "^1.0.1" + react-image-carousel@^2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/react-image-carousel/-/react-image-carousel-2.0.18.tgz#5868ea09bd9cca09c4467d3d02695cd4e7792f28" @@ -9137,6 +9153,15 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" +string-replace-to-array@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string-replace-to-array/-/string-replace-to-array-1.0.3.tgz#c93eba999a5ee24d731aebbaf5aba36b5f18f7bf" + integrity sha1-yT66mZpe4k1zGuu69auja18Y978= + dependencies: + invariant "^2.2.1" + lodash.flatten "^4.2.0" + lodash.isstring "^4.0.1" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" From 0722c2505a3998b8140c6361678c1a0bf4ce4121 Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Wed, 25 Dec 2019 10:04:31 +0200 Subject: [PATCH 18/28] fixed requested changes --- browser/components/CodeEditor.js | 4 ++-- browser/components/MarkdownPreview.js | 2 -- browser/main/Detail/MarkdownNoteDetail.js | 2 +- browser/main/Detail/ToggleDirectionButton.js | 12 ++++++------ 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index fa9924a1..d6d48b36 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -295,7 +295,7 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, direction: RTL ? 'rtl' : 'ltr', - rtlMoveVisually: RTL ? 'true' : 'false', + rtlMoveVisually: RTL, foldGutter: true, lint: enableMarkdownLint ? this.getCodeEditorLintConfig() : false, gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], @@ -559,7 +559,7 @@ export default class CodeEditor extends React.Component { } if (prevProps.RTL !== this.props.RTL) { this.editor.setOption('direction', this.props.RTL ? 'rtl' : 'ltr') - this.editor.setOption('rtlMoveVisually', this.props.RTL ? 'true' : 'false') + this.editor.setOption('rtlMoveVisually', this.props.RTL) } if (prevProps.enableMarkdownLint !== enableMarkdownLint || prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { if (!enableMarkdownLint) { diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 3765493e..db7914f2 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -107,8 +107,6 @@ body { ${optimizeOverflowScroll ? 'height: 100%;' : ''} ${RTL ? 'direction: rtl;' : ''} ${RTL ? 'text-align: right;' : ''} - - } @media print { body { diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index ba774dda..083259d8 100755 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -484,7 +484,7 @@ class MarkdownNoteDetail extends React.Component {
      this.handleSwitchMode(e)} editorType={editorType} /> - this.handleSwitchDirection(e)} editorDirection={this.state.RTL} /> + this.handleSwitchDirection(e)} isRTL={this.state.RTL} /> this.handleStarButtonClick(e)} isActive={note.isStarred} diff --git a/browser/main/Detail/ToggleDirectionButton.js b/browser/main/Detail/ToggleDirectionButton.js index d0cf57bb..6584d4fa 100644 --- a/browser/main/Detail/ToggleDirectionButton.js +++ b/browser/main/Detail/ToggleDirectionButton.js @@ -5,14 +5,14 @@ import styles from './ToggleDirectionButton.styl' import i18n from 'browser/lib/i18n' const ToggleDirectionButton = ({ - onClick, editorDirection + onClick, isRTL }) => (
      -
      onClick()}> - +
      onClick()}> +
      -
      onClick()}> - +
      onClick()}> +
      {i18n.__('Toggle Direction')}
      @@ -20,7 +20,7 @@ const ToggleDirectionButton = ({ ToggleDirectionButton.propTypes = { onClick: PropTypes.func.isRequired, - editorDirection: PropTypes.string.isRequired + isRTL: PropTypes.string.isRequired } export default CSSModules(ToggleDirectionButton, styles) From c373c207c0d0a26f7fa5387d5086321b3e94c353 Mon Sep 17 00:00:00 2001 From: Flexo013 Date: Sun, 20 Oct 2019 14:40:02 +0200 Subject: [PATCH 19/28] Added link to downloads --- readme.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/readme.md b/readme.md index 98b7b83d..5f36f270 100644 --- a/readme.md +++ b/readme.md @@ -11,6 +11,10 @@

      +## Download + +[Find the latest release of Boostnote here!](https://github.com/BoostIO/boost-releases/releases/) + ## Authors & Maintainers - [Rokt33r](https://github.com/rokt33r) From 1195c77f7a1769b69a00d235b77692826bc55859 Mon Sep 17 00:00:00 2001 From: Junyoung Choi Date: Fri, 3 Jan 2020 11:28:19 -0500 Subject: [PATCH 20/28] v0.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc269ba6..acec8d5d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "boost", "productName": "Boostnote", - "version": "0.13.0", + "version": "0.14.0", "main": "index.js", "description": "Boostnote", "license": "GPL-3.0", From d760259ce661f9b522c5f77ecefa4c03db704756 Mon Sep 17 00:00:00 2001 From: KZ Date: Mon, 6 Jan 2020 13:12:49 +0900 Subject: [PATCH 21/28] Update readme --- readme.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index 5f36f270..c8f6e6a9 100644 --- a/readme.md +++ b/readme.md @@ -18,7 +18,7 @@ ## Authors & Maintainers - [Rokt33r](https://github.com/rokt33r) -- [Kazz](https://github.com/kazup01) +- [KZ](https://github.com/kazup01) - [ZeroX-DG](https://github.com/ZeroX-DG) ## Contributors @@ -43,9 +43,8 @@ Issues on Boostnote can be funded by anyone and the money will be distributed to #### More Information * Website: https://boostnote.io -* Newsletters: https://boostnote.io/#subscribe * [Development](https://github.com/BoostIO/Boostnote/blob/master/docs/build.md): Development configurations for Boostnote. -* Copyright (C) 2016 - 2019 BoostIO, Inc. +* Copyright (C) 2016 - 2020 BoostIO, Inc. #### License From 1dd71fc923a5b972bf6685ca4b7aab41faf0f3d5 Mon Sep 17 00:00:00 2001 From: cephonodes Date: Tue, 17 Dec 2019 10:49:47 +0900 Subject: [PATCH 22/28] Updated Japanese document about contribution --- contributing.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/contributing.md b/contributing.md index 717c31ef..a7c91e91 100644 --- a/contributing.md +++ b/contributing.md @@ -69,12 +69,24 @@ GPL v3 라이센스는 다른 라이센스와 혼합해 사용하기엔 너무 # Contributing to Boostnote (Japanese) ### バグレポートに関してのissueを立てる時 -イシューテンプレートはありませんが、1つお願いがあります。 - -**開発者ツールを開いた状態のBoostnoteのスクリーンショットを貼ってください** +イシューテンプレートがあります。このテンプレートに従って、できるだけ多くの情報を提供してください。 よろしくお願いします。 +### Pull requestを出す時 +Pull requestのテンプレートがあります。このテンプレートを埋めてからコードをサブミットしてください。内容を正確に把握できるPull requestが作られていれば、迅速にレビューを行えます。 + +以下のことを必ず行ってください: +- [`code_style.md`](docs/code_style.md)を読み、コーディングスタイルを確認する +- 変更分のコードに対するテストコードを書き、以下のコマンドでテストを実行する +``` +npm run test +``` +- 以下のコマンドを使って、コードの静的解析を実行する +``` +npm run lint +``` + ### Pull requestの著作権について Pull requestをすることはその変化分のコードの著作権をBoostIOに譲渡することに同意することになります。 From 7fe69256154955b4d9f9eb536adfb0dca64f0efc Mon Sep 17 00:00:00 2001 From: Itai Braude Date: Thu, 16 Jan 2020 23:52:19 +0200 Subject: [PATCH 23/28] fix undefined variable --- browser/components/MarkdownPreview.js | 1 - 1 file changed, 1 deletion(-) diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index af6a8b0d..5dc2bcc8 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -108,7 +108,6 @@ body { box-sizing: border-box; ` : ''} - ${optimizeOverflowScroll ? 'height: 100%;' : ''} ${RTL ? 'direction: rtl;' : ''} ${RTL ? 'text-align: right;' : ''} } From 0a361f5f411dd6c24f7dcb660012aa2cc46b0bba Mon Sep 17 00:00:00 2001 From: Satyendra <33686367+developersatyendra@users.noreply.github.com> Date: Fri, 17 Jan 2020 13:52:32 +0530 Subject: [PATCH 24/28] Copyright info update updated Copyright (C) 2017 - 2019 BoostIO to Copyright (C) 2017 - 2020 BoostIO --- browser/main/modals/PreferencesModal/InfoTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/main/modals/PreferencesModal/InfoTab.js b/browser/main/modals/PreferencesModal/InfoTab.js index 66250412..97f06f7b 100644 --- a/browser/main/modals/PreferencesModal/InfoTab.js +++ b/browser/main/modals/PreferencesModal/InfoTab.js @@ -142,7 +142,7 @@ class InfoTab extends React.Component { >{i18n.__('Development')}{i18n.__(' : Development configurations for Boostnote.')}
    • - {i18n.__('Copyright (C) 2017 - 2019 BoostIO')} + {i18n.__('Copyright (C) 2017 - 2020 BoostIO')}
    • {i18n.__('License: GPL v3')} From 5105babd1429d6e9fe5a38e93decd4e0e4e4eabe Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 8 Jan 2020 21:02:20 -0500 Subject: [PATCH 25/28] Refine Chinese translation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Should not translate "space", it means space key in most context - Should translate "keymap", "spellcheck disabled", "auto detect" - Should translate "On Right Click" to "右键点击" - Refine misc translation. --- locales/zh-CN.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/locales/zh-CN.json b/locales/zh-CN.json index c023708d..9ce5f755 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -9,7 +9,7 @@ "Toggle Mode": "切换模式", "Trash": "废纸篓", "MODIFICATION DATE": "更改时间", - "Words": "单词", + "Words": "单词数", "Letters": "字数", "STORAGE": "本地存储", "FOLDER": "文件夹", @@ -40,13 +40,13 @@ "Editor Font Size": "编辑器字号", "Editor Font Family": "编辑器字体", "Editor Indent Style": "编辑器缩进风格", - "Spaces": "空格", + "Spaces": "Spaces", "Tabs": "Tabs", "Switch to Preview": "快速切换到预览界面", - "When Editor Blurred": "当编辑器失去焦点的时候,切换到预览界面", + "When Editor Blurred": "当编辑器失去焦点的时候", "When Editor Blurred, Edit On Double Click": "当编辑器失去焦点的时候预览,双击切换到编辑界面", - "On Right Click": "右键点击切换两个界面", - "Editor Keymap": "编辑器 Keymap", + "On Right Click": "右键点击", + "Editor Keymap": "编辑器键位设置", "default": "默认", "vim": "vim", "emacs": "emacs", @@ -82,7 +82,7 @@ "Analytics": "分析", "Boostnote collects anonymous data for the sole purpose of improving the application, and strictly does not collect any personal information such the contents of your notes.": "Boostnote 收集匿名数据只为了提升软件使用体验,绝对不收集任何个人信息(包括笔记内容)", "You can see how it works on ": "你可以看看它的源码是如何运作的 ", - "You can choose to enable or disable this option.": "你可以选择开启或不开启这个功能", + "You can choose to enable or disable this option.": "你可以选择开启或禁用这个功能", "Enable analytics to help improve Boostnote": "允许对数据进行分析,帮助我们改进 Boostnote", "Crowdfunding": "众筹", "Dear Boostnote users,": "亲爱的用户:", @@ -132,7 +132,7 @@ "Restore": "恢复", "Permanent Delete": "永久删除", "Confirm note deletion": "确认删除笔记", - "This will permanently remove this note.": "永久地删除这条笔记", + "This will permanently remove this note.": "将永久地删除这条笔记", "Successfully applied!": "设置成功", "Albanian": "Albanian", "Chinese (zh-CN)": "简体中文", @@ -208,7 +208,7 @@ "Folder Name": "文件夹名称", "No tags": "无标签", "Convert textual arrows to beautiful signs. ⚠ This will interfere with using HTML comments in your Markdown.": "将文本箭头转换为完整符号。 ⚠ 注意这会影响 Markdown 的 HTML 注释。", - "⚠ You have pasted a link referring an attachment that could not be found in the storage location of this note. Pasting links referring attachments is only supported if the source and destination location is the same storage. Please Drag&Drop the attachment instead! ⚠": "⚠ You have pasted a link referring an attachment that could not be found in the storage location of this note. Pasting links referring attachments is only supported if the source and destination location is the same storage. Please Drag&Drop the attachment instead! ⚠", + "⚠ You have pasted a link referring an attachment that could not be found in the storage location of this note. Pasting links referring attachments is only supported if the source and destination location is the same storage. Please Drag&Drop the attachment instead! ⚠": "⚠ 您粘贴了一个链接,但在此文档的存储位置中找不到对应的附件。仅当附件和文档在同一存储位置时,才支持粘贴引用附件的链接。请将附件拖放到文档内!⚠", "Default New Note": "预设新笔记类型", "Show only related tags": "只显示相关标签", "Snippet Default Language": "程式码片段预设语言", @@ -219,9 +219,9 @@ "Custom CSS": "自定义 CSS", "Allow custom CSS for preview": "允许预览自定义 CSS", "Render newlines in Markdown paragraphs as
      ": "在 Markdown 段落中使用
      换行", - "Spellcheck disabled": "Spellcheck disabled", + "Spellcheck disabled": "拼写检查已禁用", "Show menu bar": "显示菜单栏", - "Auto Detect": "Auto Detect", + "Auto Detect": "自动检测", "Enable HTML label in mermaid flowcharts": "在 mermaid flowcharts 中启用 HTML 标签 ⚠ 这个选项可能会产生 XSS", "Wrap line in Snippet Note": "在 Snippet Note 里换行", "Toggle Editor Mode": "切换编辑模式", @@ -231,7 +231,7 @@ "Show/Hide Menu Bar": "显示/隐藏 菜单栏", "Save tags of a note in alphabetical order": "按字母顺序存储标签", "Show tags of a note in alphabetical order": "按字母顺序显示标签", - "Enable live count of notes": "实时统计标签下笔记个数", + "Enable live count of notes": "实时统计标签下笔记数量", "New notes are tagged with the filtering tags": "新建的笔记带有在标签列表过滤的标签", "Front matter title field": "从 front-matter 中抽取标题的字段名", "Extract title from front matter": "启用从 front-matter 抽取标题", From 49c9bcac9a21468df94cf6f8b6f91d2c1b43e0e5 Mon Sep 17 00:00:00 2001 From: Milo Todt Date: Thu, 16 Jan 2020 12:12:26 -0800 Subject: [PATCH 26/28] Added Wiki Link --- lib/main-menu.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/main-menu.js b/lib/main-menu.js index a072ed25..308a716c 100644 --- a/lib/main-menu.js +++ b/lib/main-menu.js @@ -384,6 +384,10 @@ const help = { label: 'Boostnote official site', click () { shell.openExternal('https://boostnote.io/') } }, + { + label: 'Wiki', + click () { shell.openExternal('https://github.com/BoostIO/Boostnote/wiki') } + }, { label: 'Issue Tracker', click () { shell.openExternal('https://github.com/BoostIO/Boostnote/issues') } From 87b9766bc072b0001483b6c88279fb0a9f3bf881 Mon Sep 17 00:00:00 2001 From: Ray Ou Date: Mon, 6 Jan 2020 20:56:40 +1100 Subject: [PATCH 27/28] Add Traditional Chinese option to build.md --- docs/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build.md b/docs/build.md index 095f8628..1e269b4c 100644 --- a/docs/build.md +++ b/docs/build.md @@ -1,6 +1,6 @@ # Build -This page is also available in [Japanese](https://github.com/BoostIO/Boostnote/blob/master/docs/jp/build.md), [Korean](https://github.com/BoostIO/Boostnote/blob/master/docs/ko/build.md), [Russain](https://github.com/BoostIO/Boostnote/blob/master/docs/ru/build.md), [Simplified Chinese](https://github.com/BoostIO/Boostnote/blob/master/docs/zh_CN/build.md), [French](https://github.com/BoostIO/Boostnote/blob/master/docs/fr/build.md), [Portuguese](https://github.com/BoostIO/Boostnote/blob/master/docs/pt_BR/build.md) and [German](https://github.com/BoostIO/Boostnote/blob/master/docs/de/build.md). +This page is also available in [Japanese](https://github.com/BoostIO/Boostnote/blob/master/docs/jp/build.md), [Korean](https://github.com/BoostIO/Boostnote/blob/master/docs/ko/build.md), [Russain](https://github.com/BoostIO/Boostnote/blob/master/docs/ru/build.md), [Traditional Chinese](https://github.com/BoostIO/Boostnote/blob/master/docs/zh_TW/build.md), [Simplified Chinese](https://github.com/BoostIO/Boostnote/blob/master/docs/zh_CN/build.md), [French](https://github.com/BoostIO/Boostnote/blob/master/docs/fr/build.md), [Portuguese](https://github.com/BoostIO/Boostnote/blob/master/docs/pt_BR/build.md) and [German](https://github.com/BoostIO/Boostnote/blob/master/docs/de/build.md). ## Environments From 31ffbd98b62fd37596b738b3898beb58e4984fe6 Mon Sep 17 00:00:00 2001 From: Jeny Mazo Date: Sun, 5 Jan 2020 00:01:40 +0100 Subject: [PATCH 28/28] Bug fix (sets tabWith to 2 on prettier configuration and ConfigManager so checkboxes can be clikable) --- browser/main/lib/ConfigManager.js | 2 +- prettier.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 7d3b4fd5..f73895df 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -76,7 +76,7 @@ export const DEFAULT_CONFIG = { customMarkdownLintConfig: DEFAULT_MARKDOWN_LINT_CONFIG, prettierConfig: ` { "trailingComma": "es5", - "tabWidth": 4, + "tabWidth": 2, "semi": false, "singleQuote": true }`, diff --git a/prettier.config b/prettier.config index 8b8b7b99..66e7e941 100644 --- a/prettier.config +++ b/prettier.config @@ -1,6 +1,6 @@ { "trailingComma": "es5", - "tabWidth": 4, + "tabWidth": 2, "semi": false, "singleQuote": true } \ No newline at end of file