Skip to content

Commit 1784542

Browse files
committed
Merge branch 'fence-attrs' into chart-yaml
2 parents 44d6374 + efd1b3c commit 1784542

Some content is hidden

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

78 files changed

+2313
-581
lines changed

browser/components/CodeEditor.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ export default class CodeEditor extends React.Component {
292292
this.editor.on('cursorActivity', this.editorActivityHandler)
293293
this.editor.on('changes', this.editorActivityHandler)
294294
}
295+
296+
this.setState({
297+
clientWidth: this.refs.root.clientWidth
298+
})
295299
}
296300

297301
expandSnippet (line, cursor, cm, snippets) {
@@ -441,6 +445,14 @@ export default class CodeEditor extends React.Component {
441445
this.editor.setOption('extraKeys', this.defaultKeyMap)
442446
}
443447

448+
if (this.state.clientWidth !== this.refs.root.clientWidth) {
449+
this.setState({
450+
clientWidth: this.refs.root.clientWidth
451+
})
452+
453+
needRefresh = true
454+
}
455+
444456
if (needRefresh) {
445457
this.editor.refresh()
446458
}
@@ -604,7 +616,10 @@ export default class CodeEditor extends React.Component {
604616
body,
605617
'text/html'
606618
)
607-
const linkWithTitle = `[${parsedBody.title}](${pastedTxt})`
619+
const escapePipe = (str) => {
620+
return str.replace('|', '\\|')
621+
}
622+
const linkWithTitle = `[${escapePipe(parsedBody.title)}](${pastedTxt})`
608623
resolve(linkWithTitle)
609624
} catch (e) {
610625
reject(e)

browser/components/MarkdownPreview.js

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ import mdurl from 'mdurl'
1818
import exportNote from 'browser/main/lib/dataApi/exportNote'
1919
import { escapeHtmlCharacters } from 'browser/lib/utils'
2020
import yaml from 'js-yaml'
21+
import context from 'browser/lib/context'
22+
import i18n from 'browser/lib/i18n'
23+
import fs from 'fs'
2124

22-
const { remote } = require('electron')
25+
const { remote, shell } = require('electron')
2326
const attachmentManagement = require('../main/lib/dataApi/attachmentManagement')
2427

2528
const { app } = remote
@@ -28,6 +31,8 @@ const fileUrl = require('file-url')
2831

2932
const dialog = remote.dialog
3033

34+
const uri2path = require('file-uri-to-path')
35+
3136
const markdownStyle = require('!!css!stylus?sourceMap!./markdown.styl')[0][1]
3237
const appPath = fileUrl(
3338
process.env.NODE_ENV === 'production' ? app.getAppPath() : path.resolve()
@@ -162,7 +167,6 @@ const scrollBarDarkStyle = `
162167
}
163168
`
164169

165-
const { shell } = require('electron')
166170
const OSX = global.process.platform === 'darwin'
167171

168172
const defaultFontFamily = ['helvetica', 'arial', 'sans-serif']
@@ -220,8 +224,32 @@ export default class MarkdownPreview extends React.Component {
220224
}
221225
}
222226

223-
handleContextMenu (e) {
224-
this.props.onContextMenu(e)
227+
handleContextMenu (event) {
228+
// If a contextMenu handler was passed to us, use it instead of the self-defined one -> return
229+
if (_.isFunction(this.props.onContextMenu)) {
230+
this.props.onContextMenu(event)
231+
return
232+
}
233+
// No contextMenu was passed to us -> execute our own link-opener
234+
if (event.target.tagName.toLowerCase() === 'a') {
235+
const href = event.target.href
236+
const isLocalFile = href.startsWith('file:')
237+
if (isLocalFile) {
238+
const absPath = uri2path(href)
239+
try {
240+
if (fs.lstatSync(absPath).isFile()) {
241+
context.popup([
242+
{
243+
label: i18n.__('Show in explorer'),
244+
click: (e) => shell.showItemInFolder(absPath)
245+
}
246+
])
247+
}
248+
} catch (e) {
249+
console.log('Error while evaluating if the file is locally available', e)
250+
}
251+
}
252+
}
225253
}
226254

227255
handleDoubleClick (e) {
@@ -705,7 +733,6 @@ export default class MarkdownPreview extends React.Component {
705733
el.addEventListener('click', this.linkClickHandler)
706734
})
707735
} catch (e) {
708-
console.error(e)
709736
el.className = 'flowchart-error'
710737
el.innerHTML = 'Flowchart parse error: ' + e.message
711738
}
@@ -726,7 +753,6 @@ export default class MarkdownPreview extends React.Component {
726753
el.addEventListener('click', this.linkClickHandler)
727754
})
728755
} catch (e) {
729-
console.error(e)
730756
el.className = 'sequence-error'
731757
el.innerHTML = 'Sequence diagram parse error: ' + e.message
732758
}
@@ -752,7 +778,6 @@ export default class MarkdownPreview extends React.Component {
752778

753779
const chart = new Chart(canvas, chartConfig)
754780
} catch (e) {
755-
console.error(e)
756781
el.className = 'chart-error'
757782
el.innerHTML = 'chartjs diagram parse error: ' + e.message
758783
}

browser/components/NoteItem.js

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -74,24 +74,22 @@ const NoteItem = ({
7474
? note.title
7575
: <span styleName='item-title-empty'>{i18n.__('Empty note')}</span>}
7676
</div>
77-
{['ALL', 'STORAGE'].includes(viewType) &&
78-
<div styleName='item-middle'>
79-
<div styleName='item-middle-time'>{dateDisplay}</div>
80-
<div styleName='item-middle-app-meta'>
81-
<div
82-
title={
83-
viewType === 'ALL'
84-
? storageName
85-
: viewType === 'STORAGE' ? folderName : null
86-
}
87-
styleName='item-middle-app-meta-label'
88-
>
89-
{viewType === 'ALL' && storageName}
90-
{viewType === 'STORAGE' && folderName}
91-
</div>
77+
<div styleName='item-middle'>
78+
<div styleName='item-middle-time'>{dateDisplay}</div>
79+
<div styleName='item-middle-app-meta'>
80+
<div
81+
title={
82+
viewType === 'ALL'
83+
? storageName
84+
: viewType === 'STORAGE' ? folderName : null
85+
}
86+
styleName='item-middle-app-meta-label'
87+
>
88+
{viewType === 'ALL' && storageName}
89+
{viewType === 'STORAGE' && folderName}
9290
</div>
93-
</div>}
94-
91+
</div>
92+
</div>
9593
<div styleName='item-bottom'>
9694
<div styleName='item-bottom-tagList'>
9795
{note.tags.length > 0

browser/components/NoteItem.styl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,13 +368,13 @@ body[data-theme="monokai"]
368368
.item-title
369369
.item-title-icon
370370
.item-bottom-time
371-
color $ui-monokai-text-color
371+
color $ui-monokai-active-color
372372
.item-bottom-tagList-item
373373
background-color alpha(white, 10%)
374374
color $ui-monokai-text-color
375375
&:hover
376376
// background-color alpha($ui-monokai-button--active-backgroundColor, 60%)
377-
color #c0392b
377+
color #f92672
378378
.item-bottom-tagList-item
379379
background-color alpha(#fff, 20%)
380380

browser/components/NoteItemSimple.styl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ body[data-theme="monokai"]
240240
.item-simple-title-icon
241241
.item-simple-bottom-time
242242
transition 0.15s
243-
color $ui-solarized-dark-text-color
243+
color $ui-monokai-text-color
244244
.item-simple-bottom-tagList-item
245245
transition 0.15s
246246
background-color alpha(#fff, 20%)

browser/components/TodoListPercentage.styl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body[data-theme="dark"]
3939

4040
.percentageText
4141
color $ui-dark-text-color
42-
42+
4343
body[data-theme="solarized-dark"]
4444
.percentageBar
4545
background-color #002b36
@@ -52,10 +52,10 @@ body[data-theme="solarized-dark"]
5252

5353
body[data-theme="monokai"]
5454
.percentageBar
55-
background-color #f92672
55+
background-color: $ui-monokai-borderColor
5656

5757
.progressBar
58-
background-color: #373831
58+
background-color $ui-monokai-active-color
5959

6060
.percentageText
61-
color #fdf6e3
61+
color $ui-monokai-text-color

browser/components/markdown.styl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,11 @@ code
206206
text-decoration none
207207
margin-right 2px
208208
pre
209-
padding 0.5em !important
209+
padding 0.5rem !important
210210
border solid 1px #D1D1D1
211211
border-radius 5px
212212
overflow-x auto
213-
margin 0 0 1em
213+
margin 0 0 1rem
214214
display flex
215215
line-height 1.4em
216216
code
@@ -226,17 +226,17 @@ pre
226226
flex 1
227227
overflow-x auto
228228
&>span.filename
229-
margin -8px 100% 8px -8px
230-
padding 2px 6px
229+
margin -0.5rem 100% 0.5rem -0.5rem
230+
padding 0.125rem 0.375rem
231231
background-color #777;
232232
color white
233233
&:empty
234234
display none
235235
&>span.lineNumber
236236
display none
237237
font-size 1em
238-
padding 0.5em 0
239-
margin -0.5em 0.5em -0.5em -0.5em
238+
padding 0.5rem 0
239+
margin -0.5rem 0.5rem -0.5rem -0.5rem
240240
border-right 1px solid
241241
text-align right
242242
border-top-left-radius 4px

browser/components/render/MermaidRender.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ function render (element, content, theme) {
3535
element.innerHTML = svgGraph
3636
})
3737
} catch (e) {
38-
console.error(e)
3938
element.className = 'mermaid-error'
4039
element.innerHTML = 'mermaid diagram parse error: ' + e.message
4140
}

browser/lib/findNoteTitle.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,17 @@ export function findNoteTitle (value) {
33
let title = null
44
let isInsideCodeBlock = false
55

6+
if (splitted[0] === '---') {
7+
let line = 0
8+
while (++line < splitted.length) {
9+
if (splitted[line] === '---') {
10+
splitted.splice(0, line + 1)
11+
12+
break
13+
}
14+
}
15+
}
16+
617
splitted.some((line, index) => {
718
const trimmedLine = line.trim()
819
const trimmedNextLine = splitted[index + 1] === undefined ? '' : splitted[index + 1].trim()

browser/lib/markdown-it-fence.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ module.exports = function (md, renderers, defaultRenderer) {
6666
const parameters = {}
6767
let langType = ''
6868
let fileName = ''
69-
let firstLineNumber = 0
69+
let firstLineNumber = 1
7070

7171
let match = paramsRE.exec(params)
7272
if (match) {
@@ -122,7 +122,7 @@ module.exports = function (md, renderers, defaultRenderer) {
122122
alt: ['paragraph', 'reference', 'blockquote', 'list']
123123
})
124124

125-
for (let name in renderers) {
125+
for (const name in renderers) {
126126
md.renderer.rules[`${name}_fence`] = (tokens, index) => renderers[name](tokens[index])
127127
}
128128

0 commit comments

Comments
 (0)