Skip to content

Commit b837653

Browse files
Merged Master into feature branch and fixed conflicts
2 parents 86370ed + eeca031 commit b837653

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+477
-224
lines changed

browser/components/CodeEditor.js

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export default class CodeEditor extends React.Component {
5454
this.focusHandler = () => {
5555
ipcRenderer.send('editor:focused', true)
5656
}
57+
const debouncedDeletionOfAttachments = _.debounce(attachmentManagement.deleteAttachmentsNotPresentInNote, 30000)
5758
this.blurHandler = (editor, e) => {
5859
ipcRenderer.send('editor:focused', false)
5960
if (e == null) return null
@@ -65,16 +66,11 @@ export default class CodeEditor extends React.Component {
6566
el = el.parentNode
6667
}
6768
this.props.onBlur != null && this.props.onBlur(e)
68-
6969
const {
7070
storageKey,
7171
noteKey
7272
} = this.props
73-
attachmentManagement.deleteAttachmentsNotPresentInNote(
74-
this.editor.getValue(),
75-
storageKey,
76-
noteKey
77-
)
73+
debouncedDeletionOfAttachments(this.editor.getValue(), storageKey, noteKey)
7874
}
7975
this.pasteHandler = (editor, e) => {
8076
e.preventDefault()
@@ -206,23 +202,11 @@ export default class CodeEditor extends React.Component {
206202
'Cmd-T': function (cm) {
207203
// Do nothing
208204
},
209-
'Ctrl-/': function (cm) {
210-
if (global.process.platform === 'darwin') { return }
211-
const dateNow = new Date()
212-
cm.replaceSelection(dateNow.toLocaleDateString())
213-
},
214-
'Cmd-/': function (cm) {
215-
if (global.process.platform !== 'darwin') { return }
205+
[translateHotkey(hotkey.insertDate)]: function (cm) {
216206
const dateNow = new Date()
217207
cm.replaceSelection(dateNow.toLocaleDateString())
218208
},
219-
'Shift-Ctrl-/': function (cm) {
220-
if (global.process.platform === 'darwin') { return }
221-
const dateNow = new Date()
222-
cm.replaceSelection(dateNow.toLocaleString())
223-
},
224-
'Shift-Cmd-/': function (cm) {
225-
if (global.process.platform !== 'darwin') { return }
209+
[translateHotkey(hotkey.insertDateTime)]: function (cm) {
226210
const dateNow = new Date()
227211
cm.replaceSelection(dateNow.toLocaleString())
228212
},
@@ -290,7 +274,7 @@ export default class CodeEditor extends React.Component {
290274
value: this.props.value,
291275
linesHighlighted: this.props.linesHighlighted,
292276
lineNumbers: this.props.displayLineNumbers,
293-
lineWrapping: true,
277+
lineWrapping: this.props.lineWrapping,
294278
theme: this.props.theme,
295279
indentUnit: this.props.indentSize,
296280
tabSize: this.props.indentSize,
@@ -590,6 +574,10 @@ export default class CodeEditor extends React.Component {
590574
this.editor.setOption('lineNumbers', this.props.displayLineNumbers)
591575
}
592576

577+
if (prevProps.lineWrapping !== this.props.lineWrapping) {
578+
this.editor.setOption('lineWrapping', this.props.lineWrapping)
579+
}
580+
593581
if (prevProps.scrollPastEnd !== this.props.scrollPastEnd) {
594582
this.editor.setOption('scrollPastEnd', this.props.scrollPastEnd)
595583
}

browser/components/MarkdownEditor.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ class MarkdownEditor extends React.Component {
304304
enableRulers={config.editor.enableRulers}
305305
rulers={config.editor.rulers}
306306
displayLineNumbers={config.editor.displayLineNumbers}
307+
lineWrapping
307308
matchingPairs={config.editor.matchingPairs}
308309
matchingTriples={config.editor.matchingTriples}
309310
explodingPairs={config.editor.explodingPairs}
@@ -341,6 +342,7 @@ class MarkdownEditor extends React.Component {
341342
smartArrows={config.preview.smartArrows}
342343
breaks={config.preview.breaks}
343344
sanitize={config.preview.sanitize}
345+
mermaidHTMLLabel={config.preview.mermaidHTMLLabel}
344346
ref='preview'
345347
onContextMenu={(e) => this.handleContextMenu(e)}
346348
onDoubleClick={(e) => this.handleDoubleClick(e)}

browser/components/MarkdownPreview.js

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ const CSS_FILES = [
4141
`${appPath}/node_modules/codemirror/lib/codemirror.css`,
4242
`${appPath}/node_modules/react-image-carousel/lib/css/main.min.css`
4343
]
44+
const win = global.process.platform === 'win32'
4445

4546
function buildStyle (
4647
fontFamily,
@@ -247,7 +248,7 @@ export default class MarkdownPreview extends React.Component {
247248
handleContextMenu (event) {
248249
const menu = buildMarkdownPreviewContextMenu(this, event)
249250
if (menu != null) {
250-
setTimeout(() => menu.popup(remote.getCurrentWindow()), 30)
251+
menu.popup(remote.getCurrentWindow())
251252
}
252253
}
253254

@@ -320,7 +321,11 @@ export default class MarkdownPreview extends React.Component {
320321
customCSS
321322
)
322323
let body = this.markdown.render(noteContent)
323-
const files = [this.GetCodeThemeLink(codeBlockTheme), ...CSS_FILES]
324+
body = attachmentManagement.fixLocalURLS(
325+
body,
326+
this.props.storagePath
327+
)
328+
const files = [this.getCodeThemeLink(codeBlockTheme), ...CSS_FILES]
324329
files.forEach(file => {
325330
if (global.process.platform === 'win32') {
326331
file = file.replace('file:///', '')
@@ -555,6 +560,7 @@ export default class MarkdownPreview extends React.Component {
555560
if (
556561
prevProps.smartQuotes !== this.props.smartQuotes ||
557562
prevProps.sanitize !== this.props.sanitize ||
563+
prevProps.mermaidHTMLLabel !== this.props.mermaidHTMLLabel ||
558564
prevProps.smartArrows !== this.props.smartArrows ||
559565
prevProps.breaks !== this.props.breaks ||
560566
prevProps.lineThroughCheckbox !== this.props.lineThroughCheckbox
@@ -632,7 +638,7 @@ export default class MarkdownPreview extends React.Component {
632638

633639
this.getWindow().document.getElementById(
634640
'codeTheme'
635-
).href = this.GetCodeThemeLink(codeBlockTheme)
641+
).href = this.getCodeThemeLink(codeBlockTheme)
636642
this.getWindow().document.getElementById('style').innerHTML = buildStyle(
637643
fontFamily,
638644
fontSize,
@@ -645,14 +651,12 @@ export default class MarkdownPreview extends React.Component {
645651
)
646652
}
647653

648-
GetCodeThemeLink (name) {
654+
getCodeThemeLink (name) {
649655
const theme = consts.THEMES.find(theme => theme.name === name)
650656

651-
if (theme) {
652-
return `${appPath}/${theme.path}`
653-
} else {
654-
return `${appPath}/node_modules/codemirror/theme/elegant.css`
655-
}
657+
return theme != null
658+
? theme.path
659+
: `${appPath}/node_modules/codemirror/theme/elegant.css`
656660
}
657661

658662
rewriteIframe () {
@@ -678,7 +682,8 @@ export default class MarkdownPreview extends React.Component {
678682
showCopyNotification,
679683
storagePath,
680684
noteKey,
681-
sanitize
685+
sanitize,
686+
mermaidHTMLLabel
682687
} = this.props
683688
let { value, codeBlockTheme } = this.props
684689

@@ -820,7 +825,7 @@ export default class MarkdownPreview extends React.Component {
820825
_.forEach(
821826
this.refs.root.contentWindow.document.querySelectorAll('.mermaid'),
822827
el => {
823-
mermaidRender(el, htmlTextHelper.decodeEntities(el.innerHTML), theme)
828+
mermaidRender(el, htmlTextHelper.decodeEntities(el.innerHTML), theme, mermaidHTMLLabel)
824829
}
825830
)
826831

@@ -870,6 +875,12 @@ export default class MarkdownPreview extends React.Component {
870875
this.setImgOnClickEventHelper(img, rect)
871876
imgObserver.observe(parentEl, config)
872877
}
878+
879+
const aList = markdownPreviewIframe.contentWindow.document.body.querySelectorAll('a')
880+
for (const a of aList) {
881+
a.removeEventListener('click', this.linkClickHandler)
882+
a.addEventListener('click', this.linkClickHandler)
883+
}
873884
}
874885

875886
setImgOnClickEventHelper (img, rect) {
@@ -998,11 +1009,11 @@ export default class MarkdownPreview extends React.Component {
9981009

9991010
if (!rawHref) return // not checked href because parser will create file://... string for [empty link]()
10001011

1001-
const regexNoteInternalLink = /.*[main.\w]*.html#/
1002-
1003-
if (regexNoteInternalLink.test(href)) {
1004-
const targetId = mdurl.encode(linkHash)
1005-
const targetElement = this.refs.root.contentWindow.document.querySelector(
1012+
const extractId = /(main.html)?#/
1013+
const regexNoteInternalLink = new RegExp(`${extractId.source}(.+)`)
1014+
if (regexNoteInternalLink.test(linkHash)) {
1015+
const targetId = mdurl.encode(linkHash.replace(extractId, ''))
1016+
const targetElement = this.refs.root.contentWindow.document.getElementById(
10061017
targetId
10071018
)
10081019

browser/components/MarkdownSplitEditor.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ class MarkdownSplitEditor extends React.Component {
150150
onMouseMove={e => this.handleMouseMove(e)}
151151
onMouseUp={e => this.handleMouseUp(e)}>
152152
<CodeEditor
153-
styleName='codeEditor'
154153
ref='code'
155154
width={this.state.codeEditorWidthInPercent + '%'}
156155
mode='Boost Flavored Markdown'
@@ -160,6 +159,7 @@ class MarkdownSplitEditor extends React.Component {
160159
fontFamily={config.editor.fontFamily}
161160
fontSize={editorFontSize}
162161
displayLineNumbers={config.editor.displayLineNumbers}
162+
lineWrapping
163163
matchingPairs={config.editor.matchingPairs}
164164
matchingTriples={config.editor.matchingTriples}
165165
explodingPairs={config.editor.explodingPairs}
@@ -187,7 +187,6 @@ class MarkdownSplitEditor extends React.Component {
187187
</div>
188188
<MarkdownPreview
189189
style={previewStyle}
190-
styleName='preview'
191190
theme={config.ui.theme}
192191
keyMap={config.editor.keyMap}
193192
fontSize={config.preview.fontSize}
@@ -200,6 +199,7 @@ class MarkdownSplitEditor extends React.Component {
200199
smartArrows={config.preview.smartArrows}
201200
breaks={config.preview.breaks}
202201
sanitize={config.preview.sanitize}
202+
mermaidHTMLLabel={config.preview.mermaidHTMLLabel}
203203
ref='preview'
204204
tabInde='0'
205205
value={value}

browser/components/MarkdownSplitEditor.styl

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,30 @@
88
top -2px
99
width 0
1010
z-index 0
11+
border-left 1px solid $ui-borderColor
1112
.slider-hitbox
1213
absolute top bottom left right
1314
width 7px
1415
left -3px
1516
z-index 10
1617
cursor col-resize
18+
19+
body[data-theme="dark"]
20+
.root
21+
.slider
22+
border-left 1px solid $ui-dark-borderColor
23+
24+
body[data-theme="solarized-dark"]
25+
.root
26+
.slider
27+
border-left 1px solid $ui-solarized-dark-borderColor
28+
29+
body[data-theme="monokai"]
30+
.root
31+
.slider
32+
border-left 1px solid $ui-monokai-borderColor
33+
34+
body[data-theme="dracula"]
35+
.root
36+
.slider
37+
border-left 1px solid $ui-dracula-borderColor

browser/components/ModalEscButton.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const ModalEscButton = ({
88
}) => (
99
<button styleName='escButton' onClick={handleEscButtonClick}>
1010
<div styleName='esc-mark'>×</div>
11-
<div styleName='esc-text'>esc</div>
11+
<div>esc</div>
1212
</button>
1313
)
1414

browser/components/NoteItem.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,15 +148,14 @@ NoteItem.propTypes = {
148148
tags: PropTypes.array,
149149
isStarred: PropTypes.bool.isRequired,
150150
isTrashed: PropTypes.bool.isRequired,
151-
blog: {
151+
blog: PropTypes.shape({
152152
blogLink: PropTypes.string,
153153
blogId: PropTypes.number
154-
}
154+
})
155155
}),
156156
handleNoteClick: PropTypes.func.isRequired,
157157
handleNoteContextMenu: PropTypes.func.isRequired,
158-
handleDragStart: PropTypes.func.isRequired,
159-
handleDragEnd: PropTypes.func.isRequired
158+
handleDragStart: PropTypes.func.isRequired
160159
}
161160

162161
export default CSSModules(NoteItem, styles)

browser/components/SideNavFilter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ SideNavFilter.propTypes = {
7474
isStarredActive: PropTypes.bool.isRequired,
7575
isTrashedActive: PropTypes.bool.isRequired,
7676
handleStarredButtonClick: PropTypes.func.isRequired,
77-
handleTrashdButtonClick: PropTypes.func.isRequired
77+
handleTrashedButtonClick: PropTypes.func.isRequired
7878
}
7979

8080
export default CSSModules(SideNavFilter, styles)

browser/components/SnippetTab.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class SnippetTab extends React.Component {
114114
>
115115
{snippet.name.trim().length > 0
116116
? snippet.name
117-
: <span styleName='button-unnamed'>
117+
: <span>
118118
{i18n.__('Unnamed')}
119119
</span>
120120
}

browser/components/TodoProcess.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ const TodoProcess = ({
2525
)
2626

2727
TodoProcess.propTypes = {
28-
todoStatus: {
28+
todoStatus: PropTypes.exact({
2929
total: PropTypes.number.isRequired,
3030
completed: PropTypes.number.isRequired
31-
}
31+
})
3232
}
3333

3434
export default CSSModules(TodoProcess, styles)

0 commit comments

Comments
 (0)