1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-12 17:26:17 +00:00

Merge branch 'master' into bug-1992

This commit is contained in:
Baptiste Augrain
2018-10-23 09:34:26 +02:00
85 changed files with 1506 additions and 301 deletions

View File

@@ -1,15 +1,25 @@
# Current behavior
<!--
Please paste some **screenshots** with the **developer tool** open (console tab) when you report a bug.
Let us know what is currently happening.
If your issue is regarding boostnote mobile, move to https://github.com/BoostIO/boostnote-mobile.
Please include some **screenshots** with the **developer tools** open (console tab) when you report a bug.
If your issue is regarding Boostnote mobile, please open an issue in the Boostnote Mobile repo 👉 https://github.com/BoostIO/boostnote-mobile.
-->
# Expected behavior
<!--
Let us know what you think should happen!
-->
# Steps to reproduce
<!--
Please be thorough, issues we can reproduce are easier to fix!
-->
1.
2.
3.

View File

@@ -292,6 +292,10 @@ export default class CodeEditor extends React.Component {
this.editor.on('cursorActivity', this.editorActivityHandler)
this.editor.on('changes', this.editorActivityHandler)
}
this.setState({
clientWidth: this.refs.root.clientWidth
})
}
expandSnippet (line, cursor, cm, snippets) {
@@ -441,6 +445,14 @@ export default class CodeEditor extends React.Component {
this.editor.setOption('extraKeys', this.defaultKeyMap)
}
if (this.state.clientWidth !== this.refs.root.clientWidth) {
this.setState({
clientWidth: this.refs.root.clientWidth
})
needRefresh = true
}
if (needRefresh) {
this.editor.refresh()
}

View File

@@ -250,7 +250,7 @@ class MarkdownEditor extends React.Component {
: 'codeEditor--hide'
}
ref='code'
mode='GitHub Flavored Markdown'
mode='Boost Flavored Markdown'
value={value}
theme={config.editor.theme}
keyMap={config.editor.keyMap}

View File

@@ -16,7 +16,6 @@
.preview
display block
absolute top bottom left right
z-index 100
background-color white
height 100%
width 100%

View File

@@ -17,8 +17,11 @@ import copy from 'copy-to-clipboard'
import mdurl from 'mdurl'
import exportNote from 'browser/main/lib/dataApi/exportNote'
import { escapeHtmlCharacters } from 'browser/lib/utils'
import context from 'browser/lib/context'
import i18n from 'browser/lib/i18n'
import fs from 'fs'
const { remote } = require('electron')
const { remote, shell } = require('electron')
const attachmentManagement = require('../main/lib/dataApi/attachmentManagement')
const { app } = remote
@@ -27,6 +30,8 @@ const fileUrl = require('file-url')
const dialog = remote.dialog
const uri2path = require('file-uri-to-path')
const markdownStyle = require('!!css!stylus?sourceMap!./markdown.styl')[0][1]
const appPath = fileUrl(
process.env.NODE_ENV === 'production' ? app.getAppPath() : path.resolve()
@@ -161,7 +166,6 @@ const scrollBarDarkStyle = `
}
`
const { shell } = require('electron')
const OSX = global.process.platform === 'darwin'
const defaultFontFamily = ['helvetica', 'arial', 'sans-serif']
@@ -219,8 +223,32 @@ export default class MarkdownPreview extends React.Component {
}
}
handleContextMenu (e) {
this.props.onContextMenu(e)
handleContextMenu (event) {
// If a contextMenu handler was passed to us, use it instead of the self-defined one -> return
if (_.isFunction(this.props.onContextMenu)) {
this.props.onContextMenu(event)
return
}
// No contextMenu was passed to us -> execute our own link-opener
if (event.target.tagName.toLowerCase() === 'a') {
const href = event.target.href
const isLocalFile = href.startsWith('file:')
if (isLocalFile) {
const absPath = uri2path(href)
try {
if (fs.lstatSync(absPath).isFile()) {
context.popup([
{
label: i18n.__('Show in explorer'),
click: (e) => shell.showItemInFolder(absPath)
}
])
}
} catch (e) {
console.log('Error while evaluating if the file is locally available', e)
}
}
}
}
handleDoubleClick (e) {
@@ -397,6 +425,7 @@ export default class MarkdownPreview extends React.Component {
case 'dark':
case 'solarized-dark':
case 'monokai':
case 'dracula':
return scrollBarDarkStyle
default:
return scrollBarStyle
@@ -455,6 +484,10 @@ export default class MarkdownPreview extends React.Component {
eventEmitter.on('export:save-md', this.saveAsMdHandler)
eventEmitter.on('export:save-html', this.saveAsHtmlHandler)
eventEmitter.on('print', this.printHandler)
eventEmitter.on('config-renew', () => {
this.markdown.updateConfig()
this.rewriteIframe()
})
}
componentWillUnmount () {

View File

@@ -145,7 +145,7 @@ class MarkdownSplitEditor extends React.Component {
styleName='codeEditor'
ref='code'
width={this.state.codeEditorWidthInPercent + '%'}
mode='GitHub Flavored Markdown'
mode='Boost Flavored Markdown'
value={value}
theme={config.editor.theme}
keyMap={config.editor.keyMap}

View File

@@ -74,24 +74,22 @@ const NoteItem = ({
? note.title
: <span styleName='item-title-empty'>{i18n.__('Empty note')}</span>}
</div>
{['ALL', 'STORAGE'].includes(viewType) &&
<div styleName='item-middle'>
<div styleName='item-middle-time'>{dateDisplay}</div>
<div styleName='item-middle-app-meta'>
<div
title={
viewType === 'ALL'
? storageName
: viewType === 'STORAGE' ? folderName : null
}
styleName='item-middle-app-meta-label'
>
{viewType === 'ALL' && storageName}
{viewType === 'STORAGE' && folderName}
</div>
<div styleName='item-middle'>
<div styleName='item-middle-time'>{dateDisplay}</div>
<div styleName='item-middle-app-meta'>
<div
title={
viewType === 'ALL'
? storageName
: viewType === 'STORAGE' ? folderName : null
}
styleName='item-middle-app-meta-label'
>
{viewType === 'ALL' && storageName}
{viewType === 'STORAGE' && folderName}
</div>
</div>}
</div>
</div>
<div styleName='item-bottom'>
<div styleName='item-bottom-tagList'>
{note.tags.length > 0

View File

@@ -368,13 +368,13 @@ body[data-theme="monokai"]
.item-title
.item-title-icon
.item-bottom-time
color $ui-monokai-text-color
color $ui-monokai-active-color
.item-bottom-tagList-item
background-color alpha(white, 10%)
color $ui-monokai-text-color
&:hover
// background-color alpha($ui-monokai-button--active-backgroundColor, 60%)
color #c0392b
color #f92672
.item-bottom-tagList-item
background-color alpha(#fff, 20%)
@@ -394,3 +394,76 @@ body[data-theme="monokai"]
.item-bottom-tagList-empty
color $ui-inactive-text-color
vertical-align middle
body[data-theme="dracula"]
.root
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
.item
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
&:hover
transition 0.15s
// background-color alpha($ui-dracula-noteList-backgroundColor, 20%)
color $ui-dracula-text-color
.item-title
.item-title-icon
.item-bottom-time
transition 0.15s
color $ui-dracula-text-color
.item-bottom-tagList-item
transition 0.15s
background-color alpha($ui-dracula-noteList-backgroundColor, 20%)
color $ui-dracula-text-color
&:active
transition 0.15s
background-color $ui-dracula-noteList-backgroundColor
color $ui-dracula-text-color
.item-title
.item-title-icon
.item-bottom-time
transition 0.15s
color $ui-dracula-text-color
.item-bottom-tagList-item
transition 0.15s
background-color alpha($ui-dracula-noteList-backgroundColor, 10%)
color $ui-dracula-text-color
.item-wrapper
border-color alpha($ui-dracula-button-backgroundColor, 60%)
.item--active
border-color $ui-dracula-borderColor
background-color $ui-dracula-button-backgroundColor
.item-wrapper
border-color transparent
.item-title
.item-title-icon
.item-bottom-time
color $ui-dracula-active-color
.item-bottom-tagList-item
background-color alpha(#f8f8f2, 10%)
color $ui-dracula-text-color
&:hover
// background-color alpha($ui-dracula-button--active-backgroundColor, 60%)
color #ff79c6
.item-bottom-tagList-item
background-color alpha(#f8f8f2, 20%)
.item-title
color $ui-inactive-text-color
.item-title-icon
color $ui-inactive-text-color
.item-title-empty
color $ui-inactive-text-color
.item-bottom-tagList-item
background-color alpha($ui-dark-button--active-backgroundColor, 40%)
color $ui-inactive-text-color
.item-bottom-tagList-empty
color $ui-inactive-text-color
vertical-align middle

View File

@@ -240,7 +240,7 @@ body[data-theme="monokai"]
.item-simple-title-icon
.item-simple-bottom-time
transition 0.15s
color $ui-solarized-dark-text-color
color $ui-monokai-text-color
.item-simple-bottom-tagList-item
transition 0.15s
background-color alpha(#fff, 20%)
@@ -286,3 +286,67 @@ body[data-theme="monokai"]
.item-simple-right-storageName
padding-left 4px
opacity 0.4
body[data-theme="dracula"]
.root
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
.item-simple
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
&:hover
transition 0.15s
background-color alpha($ui-dracula-button-backgroundColor, 60%)
color $ui-dracula-text-color
.item-simple-title
.item-simple-title-empty
.item-simple-title-icon
.item-simple-bottom-time
transition 0.15s
color $ui-dracula-text-color
.item-simple-bottom-tagList-item
transition 0.15s
background-color alpha(#f8f8f2, 20%)
color $ui-dracula-text-color
&:active
transition 0.15s
background-color $ui-dracula-button--active-backgroundColor
color $ui-dracula-text-color
.item-simple-title
.item-simple-title-empty
.item-simple-title-icon
.item-simple-bottom-time
transition 0.15s
color $ui-dracula-text-color
.item-simple-bottom-tagList-item
transition 0.15s
background-color alpha(#f8f8f2, 10%)
color $ui-dracula-text-color
.item-simple--active
border-color $ui-dracula-borderColor
background-color $ui-dracula-button--active-backgroundColor
.item-simple-wrapper
border-color transparent
.item-simple-title
.item-simple-title-empty
.item-simple-title-icon
.item-simple-bottom-time
color $ui-dracula-text-color
.item-simple-bottom-tagList-item
background-color alpha(#f8f8f2, 10%)
color $ui-dracula-text-color
&:hover
// background-color alpha($ui-dark-button--active-backgroundColor, 60%)
color #c0392b
.item-simple-bottom-tagList-item
background-color alpha(#f8f8f2, 20%)
.item-simple-title
color $ui-dark-text-color
border-bottom $ui-dark-borderColor
.item-simple-right
float right
.item-simple-right-storageName
padding-left 4px
opacity 0.4

View File

@@ -51,4 +51,15 @@ body[data-theme="monokai"]
border none
background-color $ui-monokai-button-backgroundColor
&:hover
color #5CB85C
color #5CB85C
body[data-theme="dracula"]
.notification-area
background-color none
.notification-link
color $ui-dracula-text-color
border none
background-color $ui-dracula-button-backgroundColor
&:hover
color #ff79c6

View File

@@ -263,4 +263,46 @@ body[data-theme="monokai"]
background-color $ui-monokai-button-backgroundColor
color $ui-monokai-text-color
.menu-button-label
color $ui-monokai-text-color
color $ui-monokai-text-color
body[data-theme="dracula"]
.menu-button
&:active
background-color $ui-dracula-noteList-backgroundColor
color $ui-dracula-text-color
&:hover
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
.menu-button--active
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
.menu-button-label
color $ui-dracula-text-color
&:hover
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
.menu-button-label
color $ui-dracula-text-color
.menu-button-star--active
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
.menu-button-label
color $ui-dracula-text-color
&:hover
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
.menu-button-label
color $ui-dracula-text-color
.menu-button-trash--active
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
.menu-button-label
color $ui-dracula-text-color
&:hover
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
.menu-button-label
color $ui-dracula-text-color

View File

@@ -180,4 +180,48 @@ body[data-theme="monokai"]
color $ui-monokai-text-color
.deleteButton
color alpha($ui-monokai-text-color, 30%)
color alpha($ui-monokai-text-color, 30%)
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
border-color $ui-dark-borderColor
&:hover
background-color $ui-dracula-noteDetail-backgroundColor
.deleteButton
color $ui-dracula-text-color
&:hover
background-color darken($ui-dracula-noteDetail-backgroundColor, 15%)
&:active
color $ui-dracula-text-color
background-color $ui-dark-button--active-backgroundColor
.root--active
color $ui-dracula-text-color
border-color $ui-dracula-borderColor
&:hover
background-color $ui-dracula-noteDetail-backgroundColor
.deleteButton
color $ui-dracula-text-color
&:hover
background-color darken($ui-dracula-noteDetail-backgroundColor, 15%)
&:active
color $ui-dracula-text-color
background-color $ui-dark-button--active-backgroundColor
.button
border none
color $ui-dracula-text-color
background-color transparent
transition color background-color 0.15s
border-left 4px solid transparent
&:hover
color $ui-dracula-text-color
background-color $ui-dracula-noteDetail-backgroundColor
.input
background-color $ui-dracula-noteDetail-backgroundColor
color $ui-dracula-text-color
.deleteButton
color alpha($ui-dracula-text-color, 30%)

View File

@@ -156,4 +156,23 @@ body[data-theme="monokai"]
background-color $ui-monokai-button-backgroundColor
&:hover
color $ui-monokai-text-color
background-color $ui-monokai-button-backgroundColor
background-color $ui-monokai-button-backgroundColor
body[data-theme="dracula"]
.folderList-item
&:hover
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
&:active
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
.folderList-item--active
@extend .folderList-item
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
&:active
background-color $ui-dracula-button-backgroundColor
&:hover
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor

View File

@@ -39,7 +39,7 @@ body[data-theme="dark"]
.percentageText
color $ui-dark-text-color
body[data-theme="solarized-dark"]
.percentageBar
background-color #002b36
@@ -52,10 +52,20 @@ body[data-theme="solarized-dark"]
body[data-theme="monokai"]
.percentageBar
background-color #f92672
background-color: $ui-monokai-borderColor
.progressBar
background-color: #373831
background-color $ui-monokai-active-color
.percentageText
color #fdf6e3
color $ui-monokai-text-color
body[data-theme="dracula"]
.percentageBar
background-color $ui-dracula-borderColor
.progressBar
background-color: $ui-dracula-active-color
.percentageText
color $ui-dracula-text-color

View File

@@ -80,6 +80,9 @@ li
&.checked
text-decoration line-through
opacity 0.5
&.taskListItem.checked
text-decoration line-through
opacity 0.5
div.math-rendered
text-align center
.math-failed
@@ -361,7 +364,7 @@ for name, val in admonition_types
.admonition.{name}
@extend $admonition
border-left-color: val[color]
.admonition.{name}>.admonition-title
@extend $admonition-title
border-bottom-color: .1rem solid rgba(val[color], 0.2)
@@ -476,5 +479,34 @@ body[data-theme="monokai"]
border-color themeMonokaiTableBorder
&:last-child
border-right solid 1px themeMonokaiTableBorder
kbd
background-color themeDarkBackground
themeDraculaTableOdd = $ui-dracula-noteDetail-backgroundColor
themeDraculaTableEven = darken($ui-dracula-noteDetail-backgroundColor, 10%)
themeDraculaTableHead = themeDraculaTableEven
themeDraculaTableBorder = themeDarkBorder
body[data-theme="dracula"]
color $ui-dracula-text-color
border-color themeDarkBorder
background-color $ui-dracula-noteDetail-backgroundColor
table
thead
tr
background-color themeDraculaTableHead
th
border-color themeDraculaTableBorder
&:last-child
border-right solid 1px themeDraculaTableBorder
tbody
tr:nth-child(2n + 1)
background-color themeDraculaTableOdd
tr:nth-child(2n)
background-color themeDraculaTableEven
td
border-color themeDraculaTableBorder
&:last-child
border-right solid 1px themeDraculaTableBorder
kbd
background-color themeDarkBackground

View File

@@ -2,8 +2,8 @@ import mermaidAPI from 'mermaid'
// fixes bad styling in the mermaid dark theme
const darkThemeStyling = `
.loopText tspan {
fill: white;
.loopText tspan {
fill: white;
}`
function getRandomInt (min, max) {
@@ -21,7 +21,7 @@ function getId () {
function render (element, content, theme) {
try {
let isDarkTheme = theme === 'dark' || theme === 'solarized-dark' || theme === 'monokai'
let isDarkTheme = theme === 'dark' || theme === 'solarized-dark' || theme === 'monokai' || theme === 'dracula'
mermaidAPI.initialize({
theme: isDarkTheme ? 'dark' : 'default',
themeCSS: isDarkTheme ? darkThemeStyling : ''

View File

@@ -7,6 +7,7 @@ import _ from 'lodash'
import ConfigManager from 'browser/main/lib/ConfigManager'
import katex from 'katex'
import { lastFindInArray } from './utils'
import ee from 'browser/main/lib/eventEmitter'
function createGutter (str, firstLineNumber) {
if (Number.isNaN(firstLineNumber)) firstLineNumber = 1
@@ -20,7 +21,7 @@ function createGutter (str, firstLineNumber) {
class Markdown {
constructor (options = {}) {
const config = ConfigManager.get()
let config = ConfigManager.get()
const defaultOptions = {
typographer: config.preview.smartQuotes,
linkify: true,
@@ -152,7 +153,8 @@ class Markdown {
}
})
this.md.use(require('markdown-it-kbd'))
this.md.use(require('markdown-it-admonition'))
this.md.use(require('markdown-it-admonition'), {types: ['note', 'hint', 'attention', 'caution', 'danger', 'error']})
this.md.use(require('./markdown-it-frontmatter'))
const deflate = require('markdown-it-plantuml/lib/deflate')
@@ -226,7 +228,11 @@ class Markdown {
if (!liToken.attrs) {
liToken.attrs = []
}
liToken.attrs.push(['class', 'taskListItem'])
if (config.preview.lineThroughCheckbox) {
liToken.attrs.push(['class', `taskListItem${match[1] !== ' ' ? ' checked' : ''}`])
} else {
liToken.attrs.push(['class', 'taskListItem'])
}
}
content = `<label class='taskListItem${match[1] !== ' ' ? ' checked' : ''}' for='checkbox-${startLine + 1}'><input type='checkbox'${match[1] !== ' ' ? ' checked' : ''} id='checkbox-${startLine + 1}'/> ${content.substring(4, content.length)}</label>`
}
@@ -263,6 +269,9 @@ class Markdown {
}
// FIXME We should not depend on global variable.
window.md = this.md
this.updateConfig = () => {
config = ConfigManager.get()
}
}
render (content) {

View File

@@ -23,7 +23,7 @@ body[data-theme="dark"]
border-left 1px solid $ui-dark-borderColor
.empty-message
color $ui-dark-inactive-text-color
body[data-theme="solarized-dark"]
.root
background-color $ui-solarized-dark-noteDetail-backgroundColor
@@ -37,3 +37,10 @@ body[data-theme="monokai"]
border-left 1px solid $ui-monokai-borderColor
.empty-message
color $ui-monokai-text-color
body[data-theme="dracula"]
.root
background-color $ui-dracula-noteDetail-backgroundColor
border-left 1px solid $ui-dracula-borderColor
.empty-message
color $ui-dracula-text-color

View File

@@ -36,7 +36,7 @@
height 34px
width 20px
line-height 34px
.search-input
vertical-align middle
position relative
@@ -71,7 +71,7 @@
overflow ellipsis
cursor pointer
&:hover
background-color $ui-button--hover-backgroundColor
background-color $ui-button--hover-backgroundColor
.search-optionList-item--active
@extend .search-optionList-item
@@ -159,3 +159,29 @@ body[data-theme="monokai"]
color $ui-monokai-button--active-color
.search-optionList-item-name-surfix
color $ui-monokai-inactive-text-color
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
&:hover
color #f8f8f2
background-color $ui-dark-button--hover-backgroundColor
border-color $ui-dracula-borderColor
.search-optionList
color #f8f8f2
border-color $ui-dracula-borderColor
background-color $ui-dracula-button-backgroundColor
.search-optionList-item
&:hover
background-color lighten($ui-dracula-button--hover-backgroundColor, 15%)
.search-optionList-item--active
background-color $ui-dracula-button--active-backgroundColor
color $ui-dracula-button--active-color
&:hover
background-color $ui-dark-button--hover-backgroundColor
color $ui-dracula-button--active-color
.search-optionList-item-name-surfix
color $ui-dracula-inactive-text-color

View File

@@ -257,3 +257,43 @@ body[data-theme="monokai"]
color $ui-dark-inactive-text-color
&:hover
color $ui-monokai-text-color
body[data-theme="dracula"]
.control-infoButton-panel
background-color $ui-dracula-noteList-backgroundColor
.control-infoButton-panel-trash
background-color $ui-dracula-noteList-backgroundColor
.modification-date
color $ui-dracula-text-color
.modification-date-desc
color $ui-inactive-text-color
.infoPanel-defaul-count
color $ui-dracula-text-color
.infoPanel-sub-count
color $ui-inactive-text-color
.infoPanel-default
color $ui-dracula-text-color
.infoPanel-sub
color $ui-inactive-text-color
.infoPanel-noteLink
background-color alpha($ui-dracula-borderColor, 20%)
color $ui-dracula-text-color
[id=export-wrap]
button
color $ui-dark-inactive-text-color
&:hover
background-color alpha($ui-dracula-borderColor, 20%)
color $ui-dracula-text-color
p
color $ui-dark-inactive-text-color
&:hover
color $ui-dracula-text-color

View File

@@ -76,3 +76,8 @@ body[data-theme="monokai"]
.root
border-left 1px solid $ui-monokai-borderColor
background-color $ui-monokai-noteDetail-backgroundColor
body[data-theme="dracula"]
.root
border-left 1px solid $ui-dracula-borderColor
background-color $ui-dracula-noteDetail-backgroundColor

View File

@@ -98,8 +98,13 @@ body[data-theme="solarized-dark"]
.info
border-color $ui-solarized-dark-borderColor
background-color $ui-solarized-dark-noteDetail-backgroundColor
body[data-theme="monokai"]
.info
border-color $ui-monokai-borderColor
background-color $ui-monokai-noteDetail-backgroundColor
background-color $ui-monokai-noteDetail-backgroundColor
body[data-theme="dracula"]
.info
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteDetail-backgroundColor

View File

@@ -759,6 +759,7 @@ class SnippetNoteDetail extends React.Component {
<TagSelect
ref='tags'
value={this.state.note.tags}
data={data}
onChange={(e) => this.handleChange(e)}
/>
</div>

View File

@@ -169,4 +169,21 @@ body[data-theme="monokai"]
.tabList
background-color $ui-monokai-noteDetail-backgroundColor
color $ui-monokai-text-color
color $ui-monokai-text-color
body[data-theme="dracula"]
.root
border-left 1px solid $ui-dracula-borderColor
background-color $ui-dracula-noteDetail-backgroundColor
.body
background-color $ui-dracula-noteDetail-backgroundColor
.body .description textarea
background-color $ui-dracula-noteDetail-backgroundColor
color $ui-dracula-text-color
border 1px solid $ui-dracula-borderColor
.tabList
background-color $ui-dracula-noteDetail-backgroundColor
color $ui-dracula-text-color

View File

@@ -88,6 +88,11 @@ class TagSelect extends React.Component {
this.refs.newTag.input.focus()
}
handleTagLabelClick (tag) {
const { router } = this.context
router.push(`/tags/${tag}`)
}
handleTagRemoveButtonClick (tag) {
this.removeTagByCallback((value, tag) => {
value.splice(value.indexOf(tag), 1)
@@ -182,7 +187,7 @@ class TagSelect extends React.Component {
<span styleName='tag'
key={tag}
>
<span styleName='tag-label'>#{tag}</span>
<span styleName='tag-label' onClick={(e) => this.handleTagLabelClick(tag)}>#{tag}</span>
<button styleName='tag-removeButton'
onClick={(e) => this.handleTagRemoveButtonClick(tag)}
>
@@ -228,6 +233,10 @@ class TagSelect extends React.Component {
}
}
TagSelect.contextTypes = {
router: PropTypes.shape({})
}
TagSelect.propTypes = {
className: PropTypes.string,
value: PropTypes.arrayOf(PropTypes.string),

View File

@@ -39,8 +39,9 @@
.tag-label
font-size 13px
color: $ui-text-color
color $ui-text-color
padding 4px 16px 4px 8px
cursor pointer
body[data-theme="dark"]
.tag
@@ -67,11 +68,22 @@ body[data-theme="solarized-dark"]
body[data-theme="monokai"]
.tag
background-color $ui-monokai-button-backgroundColor
background-color $ui-monokai-tag-backgroundColor
.tag-removeButton
border-color $ui-button--focus-borderColor
background-color transparent
.tag-label
color $ui-monokai-text-color
color $ui-monokai-text-color
body[data-theme="dracula"]
.tag
background-color $ui-dracula-tag-backgroundColor
.tag-removeButton
border-color $ui-dracula-button--focus-borderColor
background-color transparent
.tag-label
color $ui-dracula-borderColor

View File

@@ -59,7 +59,14 @@ body[data-theme="solarized-dark"]
body[data-theme="monokai"]
.control-toggleModeButton
background-color #272822
background-color #373831
.active
background-color #1EC38B
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

View File

@@ -56,7 +56,7 @@ class Main extends React.Component {
init () {
dataApi
.addStorage({
name: 'My Storage',
name: 'My Storage Location',
path: path.join(remote.app.getPath('home'), 'Boostnote')
})
.then(data => {
@@ -141,7 +141,7 @@ class Main extends React.Component {
componentDidMount () {
const { dispatch, config } = this.props
const supportedThemes = ['dark', 'white', 'solarized-dark', 'monokai']
const supportedThemes = ['dark', 'white', 'solarized-dark', 'monokai', 'dracula']
if (supportedThemes.indexOf(config.ui.theme) !== -1) {
document.body.setAttribute('data-theme', config.ui.theme)

View File

@@ -79,3 +79,7 @@ body[data-theme="solarized-dark"]
body[data-theme="monokai"]
.root, .root--expanded
background-color $ui-monokai-noteList-backgroundColor
body[data-theme="dracula"]
.root, .root--expanded
background-color $ui-dracula-noteList-backgroundColor

View File

@@ -84,7 +84,7 @@ body[data-theme="dark"]
color $ui-dark-inactive-text-color
&:hover
color $ui-dark-text-color
.control-button--active
color $ui-dark-text-color
&:active
@@ -109,7 +109,7 @@ body[data-theme="solarized-dark"]
color $ui-solarized-dark-inactive-text-color
&:hover
color $ui-solarized-dark-text-color
.control-button--active
color $ui-solarized-dark-text-color
&:active
@@ -138,3 +138,27 @@ body[data-theme="monokai"]
color $ui-monokai-text-color
&:active
color $ui-monokai-text-color
body[data-theme="dracula"]
.root
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
.control
background-color $ui-dracula-noteList-backgroundColor
border-color $ui-dracula-borderColor
.control-sortBy-select
&:hover
transition 0.2s
color $ui-dracula-text-color
.control-button
color $ui-dracula-inactive-text-color
&:hover
color $ui-dracula-text-color
.control-button--active
color $ui-dracula-text-color
&:active
color $ui-dracula-text-color

View File

@@ -519,7 +519,7 @@ class NoteList extends React.Component {
click: this.cloneNote.bind(this)
}, {
label: copyNoteLink,
click: this.copyNoteLink(note)
click: this.copyNoteLink.bind(this, note)
})
if (note.type === 'MARKDOWN_NOTE') {
if (note.blog && note.blog.blogLink && note.blog.blogId) {

View File

@@ -19,7 +19,7 @@
text-align center
.top-menu-label
margin-left 5px
overflow ellipsis
@@ -122,3 +122,8 @@ body[data-theme="monokai"]
.root, .root--folded
background-color $ui-monokai-backgroundColor
border-right 1px solid $ui-monokai-borderColor
body[data-theme="dracula"]
.root, .root--folded
background-color $ui-dracula-backgroundColor
border-right 1px solid $ui-dracula-borderColor

View File

@@ -34,7 +34,7 @@
color $ui-active-color
span
margin-left 5px
.update
navButtonColor()
height 24px
@@ -80,3 +80,14 @@ body[data-theme="monokai"]
color $ui-monokai-active-color
&:active
color $ui-monokai-active-color
body[data-theme="dracula"]
navButtonColor()
.zoom
border-color $ui-dark-borderColor
color $ui-dracula-text-color
&:hover
transition 0.15s
color $ui-dracula-active-color
&:active
color $ui-dracula-active-color

View File

@@ -256,3 +256,25 @@ body[data-theme="monokai"]
input
background-color $ui-monokai-noteList-backgroundColor
color $ui-monokai-text-color
body[data-theme="dracula"]
.root, .root--expanded
background-color $ui-dracula-noteList-backgroundColor
.control
border-color $ui-dracula-borderColor
.control-search
background-color $ui-dracula-noteList-backgroundColor
.control-search-icon
absolute top bottom left
line-height 32px
width 35px
color $ui-dracula-inactive-text-color
background-color $ui-dracula-noteList-backgroundColor
.control-search-input
background-color $ui-dracula-noteList-backgroundColor
input
background-color $ui-dracula-noteList-backgroundColor
color $ui-dracula-text-color

View File

@@ -18,6 +18,9 @@ body
::-webkit-scrollbar
width 12px
::-webkit-scrollbar-corner
background-color: transparent;
::-webkit-scrollbar-thumb
background-color rgba(0, 0, 0, 0.15)
@@ -162,6 +165,15 @@ body[data-theme="monokai"]
.sortableItemHelper
color: $ui-monokai-text-color
body[data-theme="dracula"]
::-webkit-scrollbar-thumb
background-color rgba(0, 0, 0, 0.3)
.ModalBase
.modalBack
background-color $ui-dracula-backgroundColor
.sortableItemHelper
color: $ui-dracula-text-color
body[data-theme="default"]
.SideNav ::-webkit-scrollbar-thumb
background-color rgba(255, 255, 255, 0.3)

View File

@@ -24,7 +24,7 @@ export const DEFAULT_CONFIG = {
amaEnabled: true,
hotkey: {
toggleMain: OSX ? 'Command + Alt + L' : 'Super + Alt + E',
toggleMode: OSX ? 'Command + M' : 'Ctrl + M'
toggleMode: OSX ? 'Command + Option + M' : 'Ctrl + M'
},
ui: {
language: 'en',
@@ -65,7 +65,8 @@ export const DEFAULT_CONFIG = {
smartArrows: false,
allowCustomCSS: false,
customCSS: '',
sanitize: 'STRICT' // 'STRICT', 'ALLOW_STYLES', 'NONE'
sanitize: 'STRICT', // 'STRICT', 'ALLOW_STYLES', 'NONE'
lineThroughCheckbox: true
},
blog: {
type: 'wordpress', // Available value: wordpress, add more types in the future plz
@@ -147,6 +148,8 @@ function set (updates) {
document.body.setAttribute('data-theme', 'solarized-dark')
} else if (newConfig.ui.theme === 'monokai') {
document.body.setAttribute('data-theme', 'monokai')
} else if (newConfig.ui.theme === 'dracula') {
document.body.setAttribute('data-theme', 'dracula')
} else {
document.body.setAttribute('data-theme', 'default')
}
@@ -195,6 +198,7 @@ function rewriteHotkey (config) {
const keys = [...Object.keys(config.hotkey)]
keys.forEach(key => {
config.hotkey[key] = config.hotkey[key].replace(/Cmd/g, 'Command')
config.hotkey[key] = config.hotkey[key].replace(/Opt/g, 'Alt')
})
return config
}

View File

@@ -11,6 +11,118 @@ import i18n from 'browser/lib/i18n'
const STORAGE_FOLDER_PLACEHOLDER = ':storage'
const DESTINATION_FOLDER = 'attachments'
const PATH_SEPARATORS = escapeStringRegexp(path.posix.sep) + escapeStringRegexp(path.win32.sep)
/**
* @description
* Create a Image element to get the real size of image.
* @param {File} file the File object dropped.
* @returns {Promise<Image>} Image element created
*/
function getImage (file) {
return new Promise((resolve) => {
const reader = new FileReader()
const img = new Image()
img.onload = () => resolve(img)
reader.onload = e => {
img.src = e.target.result
}
reader.readAsDataURL(file)
})
}
/**
* @description
* Get the orientation info from iamges's EXIF data.
* case 1: The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.
* case 2: The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.
* case 3: The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.
* case 4: The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.
* case 5: The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.
* case 6: The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.
* case 7: The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.
* case 8: The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
* Other: reserved
* ref: http://sylvana.net/jpegcrop/exif_orientation.html
* @param {File} file the File object dropped.
* @returns {Promise<Number>} Orientation info
*/
function getOrientation (file) {
const getData = arrayBuffer => {
const view = new DataView(arrayBuffer)
// Not start with SOI(Start of image) Marker return fail value
if (view.getUint16(0, false) !== 0xFFD8) return -2
const length = view.byteLength
let offset = 2
while (offset < length) {
const marker = view.getUint16(offset, false)
offset += 2
// Loop and seed for APP1 Marker
if (marker === 0xFFE1) {
// return fail value if it isn't EXIF data
if (view.getUint32(offset += 2, false) !== 0x45786966) {
return -1
}
// Read TIFF header,
// First 2bytes defines byte align of TIFF data.
// If it is 0x4949="II", it means "Intel" type byte align.
// If it is 0x4d4d="MM", it means "Motorola" type byte align
const little = view.getUint16(offset += 6, false) === 0x4949
offset += view.getUint32(offset + 4, little)
const tags = view.getUint16(offset, little) // Get TAG number
offset += 2
for (let i = 0; i < tags; i++) {
// Loop to find Orientation TAG and return the value
if (view.getUint16(offset + (i * 12), little) === 0x0112) {
return view.getUint16(offset + (i * 12) + 8, little)
}
}
} else if ((marker & 0xFF00) !== 0xFF00) { // If not start with 0xFF, not a Marker
break
} else {
offset += view.getUint16(offset, false)
}
}
return -1
}
return new Promise((resolve) => {
const reader = new FileReader()
reader.onload = event => resolve(getData(event.target.result))
reader.readAsArrayBuffer(file.slice(0, 64 * 1024))
})
}
/**
* @description
* Rotate image file to correct direction.
* Create a canvas and draw the image with correct direction, then export to base64 format.
* @param {*} file the File object dropped.
* @return {String} Base64 encoded image.
*/
function fixRotate (file) {
return Promise.all([getImage(file), getOrientation(file)])
.then(([img, orientation]) => {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
if (orientation > 4 && orientation < 9) {
canvas.width = img.height
canvas.height = img.width
} else {
canvas.width = img.width
canvas.height = img.height
}
switch (orientation) {
case 2: ctx.transform(-1, 0, 0, 1, img.width, 0); break
case 3: ctx.transform(-1, 0, 0, -1, img.width, img.height); break
case 4: ctx.transform(1, 0, 0, -1, 0, img.height); break
case 5: ctx.transform(0, 1, 1, 0, 0, 0); break
case 6: ctx.transform(0, 1, -1, 0, img.height, 0); break
case 7: ctx.transform(0, -1, -1, 0, img.height, img.width); break
case 8: ctx.transform(0, -1, 1, 0, 0, img.width); break
default: break
}
ctx.drawImage(img, 0, 0)
return canvas.toDataURL()
})
}
/**
* @description
@@ -38,26 +150,34 @@ function copyAttachment (sourceFilePath, storageKey, noteKey, useRandomName = tr
}
try {
if (!fs.existsSync(sourceFilePath)) {
reject('source file does not exist')
const isBase64 = typeof sourceFilePath === 'object' && sourceFilePath.type === 'base64'
if (!fs.existsSync(sourceFilePath) && !isBase64) {
return reject('source file does not exist')
}
const targetStorage = findStorage.findStorage(storageKey)
const inputFileStream = fs.createReadStream(sourceFilePath)
let destinationName
if (useRandomName) {
destinationName = `${uniqueSlug()}${path.extname(sourceFilePath)}`
destinationName = `${uniqueSlug()}${path.extname(sourceFilePath.sourceFilePath || sourceFilePath)}`
} else {
destinationName = path.basename(sourceFilePath)
destinationName = path.basename(sourceFilePath.sourceFilePath || sourceFilePath)
}
const destinationDir = path.join(targetStorage.path, DESTINATION_FOLDER, noteKey)
createAttachmentDestinationFolder(targetStorage.path, noteKey)
const outputFile = fs.createWriteStream(path.join(destinationDir, destinationName))
inputFileStream.pipe(outputFile)
inputFileStream.on('end', () => {
resolve(destinationName)
})
if (isBase64) {
const base64Data = sourceFilePath.data.replace(/^data:image\/\w+;base64,/, '')
const dataBuffer = new Buffer(base64Data, 'base64')
outputFile.write(dataBuffer, () => {
resolve(destinationName)
})
} else {
const inputFileStream = fs.createReadStream(sourceFilePath)
inputFileStream.pipe(outputFile)
inputFileStream.on('end', () => {
resolve(destinationName)
})
}
} catch (e) {
return reject(e)
}
@@ -137,10 +257,17 @@ function handleAttachmentDrop (codeEditor, storageKey, noteKey, dropEvent) {
const filePath = file.path
const originalFileName = path.basename(filePath)
const fileType = file['type']
copyAttachment(filePath, storageKey, noteKey).then((fileName) => {
const showPreview = fileType.startsWith('image')
const imageMd = generateAttachmentMarkdown(originalFileName, path.join(STORAGE_FOLDER_PLACEHOLDER, noteKey, fileName), showPreview)
const isImage = fileType.startsWith('image')
let promise
if (isImage) {
promise = fixRotate(file).then(base64data => {
return copyAttachment({type: 'base64', data: base64data, sourceFilePath: filePath}, storageKey, noteKey)
})
} else {
promise = copyAttachment(filePath, storageKey, noteKey)
}
promise.then((fileName) => {
const imageMd = generateAttachmentMarkdown(originalFileName, path.join(STORAGE_FOLDER_PLACEHOLDER, noteKey, fileName), isImage)
codeEditor.insertAttachmentMd(imageMd)
})
}

View File

@@ -128,3 +128,29 @@ body[data-theme="monokai"]
.control-confirmButton
colorMonokaiPrimaryButton()
body[data-theme="dracula"]
.root
modalDracula()
width 500px
height 270px
overflow hidden
position relative
.header
background-color transparent
border-color $ui-dark-borderColor
color $ui-dracula-text-color
.control-folder-label
color $ui-dracula-text-color
.control-folder-input
border 1px solid $ui-input--create-folder-modal
color white
.description
color $ui-inactive-text-color
.control-confirmButton
colorDraculaPrimaryButton()

View File

@@ -97,3 +97,20 @@ body[data-theme="monokai"]
.description
color $ui-monokai-text-color
body[data-theme="dracula"]
.root
background-color transparent
.header
color $ui-dracula-text-color
.control-button
border-color $ui-dracula-borderColor
color $ui-dracula-text-color
background-color transparent
&:focus
colorDraculaPrimaryButton()
.description
color $ui-dracula-text-color

View File

@@ -43,7 +43,7 @@ class Blog extends React.Component {
this.handleSettingError = (err) => {
this.setState({BlogAlert: {
type: 'error',
message: err.message != null ? err.message : i18n.__('Error occurs!')
message: err.message != null ? err.message : i18n.__('An error occurred!')
}})
}
this.oldBlog = this.state.config.blog
@@ -70,7 +70,7 @@ class Blog extends React.Component {
this.props.haveToSave({
tab: 'Blog',
type: 'warning',
message: i18n.__('You have to save!')
message: i18n.__('Unsaved Changes!')
})
}
}

View File

@@ -68,9 +68,9 @@
:global
.alert
display inline-block
position absolute
top 60px
right 15px
position fixed
top 130px
right 100px
font-size 14px
.success
color #1EC38B
@@ -127,7 +127,7 @@ colorDarkControl()
border-color $ui-dark-borderColor
background-color $ui-dark-backgroundColor
color $ui-dark-text-color
colorSolarizedDarkControl()
border none
background-color $ui-solarized-dark-button-backgroundColor
@@ -138,6 +138,10 @@ colorMonokaiControl()
background-color $ui-monokai-button-backgroundColor
color $ui-monokai-text-color
colorDraculaControl()
border none
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
body[data-theme="dark"]
.root
@@ -165,27 +169,27 @@ body[data-theme="dark"]
.group-section-control
select, .group-section-control-input
colorDarkControl()
body[data-theme="solarized-dark"]
.root
color $ui-solarized-dark-text-color
.group-header
color $ui-solarized-dark-text-color
border-color $ui-solarized-dark-borderColor
border-color $ui-solarized-dark-borderColor
.group-header2
color $ui-solarized-dark-text-color
.group-section-control-input
border-color $ui-solarized-dark-borderColor
border-color $ui-solarized-dark-borderColor
.group-control
border-color $ui-solarized-dark-borderColor
border-color $ui-solarized-dark-borderColor
.group-control-leftButton
colorDarkDefaultButton()
border-color $ui-solarized-dark-borderColor
border-color $ui-solarized-dark-borderColor
.group-control-rightButton
colorSolarizedDarkPrimaryButton()
.group-hint
@@ -200,19 +204,19 @@ body[data-theme="monokai"]
.group-header
color $ui-monokai-text-color
border-color $ui-monokai-borderColor
border-color $ui-monokai-borderColor
.group-header2
color $ui-monokai-text-color
.group-section-control-input
border-color $ui-monokai-borderColor
border-color $ui-monokai-borderColor
.group-control
border-color $ui-monokai-borderColor
border-color $ui-monokai-borderColor
.group-control-leftButton
colorDarkDefaultButton()
border-color $ui-monokai-borderColor
border-color $ui-monokai-borderColor
.group-control-rightButton
colorMonokaiPrimaryButton()
.group-hint
@@ -220,3 +224,30 @@ body[data-theme="monokai"]
.group-section-control
select, .group-section-control-input
colorMonokaiControl()
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
.group-header
color $ui-dracula-text-color
border-color $ui-dracula-borderColor
.group-header2
color $ui-dracula-text-color
.group-section-control-input
border-color $ui-dracula-borderColor
.group-control
border-color $ui-dracula-borderColor
.group-control-leftButton
colorDarkDefaultButton()
border-color $ui-dracula-borderColor
.group-control-rightButton
colorDraculaPrimaryButton()
.group-hint
colorDraculaControl()
.group-section-control
select, .group-section-control-input
colorDraculaControl()

View File

@@ -23,18 +23,18 @@ class Crowdfunding extends React.Component {
return (
<div styleName='root'>
<div styleName='header'>{i18n.__('Crowdfunding')}</div>
<p>{i18n.__('Dear everyone,')}</p>
<p>{i18n.__('Dear Boostnote users,')}</p>
<br />
<p>{i18n.__('Thank you for using Boostnote!')}</p>
<p>{i18n.__('Boostnote is used in about 200 different countries and regions by an awesome community of developers.')}</p>
<br />
<p>{i18n.__('To continue supporting this growth, and to satisfy community expectations,')}</p>
<p>{i18n.__('To support our growing userbase, and satisfy community expectations,')}</p>
<p>{i18n.__('we would like to invest more time and resources in this project.')}</p>
<br />
<p>{i18n.__('If you like this project and see its potential, you can help by supporting us on OpenCollective!')}</p>
<p>{i18n.__('If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!')}</p>
<br />
<p>{i18n.__('Thanks,')}</p>
<p>{i18n.__('Boostnote maintainers')}</p>
<p>{i18n.__('The Boostnote Team')}</p>
<br />
<button styleName='cf-link'>
<a href='https://opencollective.com/boostnoteio' onClick={(e) => this.handleLinkClick(e)}>{i18n.__('Support via OpenCollective')}</a>

View File

@@ -29,7 +29,7 @@ p
body[data-theme="dark"]
p
color $ui-dark-text-color
body[data-theme="solarized-dark"]
.root
color $ui-solarized-dark-text-color
@@ -41,3 +41,9 @@ body[data-theme="monokai"]
color $ui-monokai-text-color
p
color $ui-monokai-text-color
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
p
color $ui-dracula-text-color

View File

@@ -2,6 +2,7 @@
height 35px
box-sizing border-box
padding 2.5px 15px
display flex
&:hover
background-color darken(white, 3%)
@@ -18,7 +19,10 @@
border-left solid 2px transparent
padding 0 10px
line-height 30px
float left
flex 1
white-space nowrap
text-overflow ellipsis
overflow hidden
.folderItem-left-danger
color $danger-color
font-weight bold
@@ -52,7 +56,8 @@
outline none
.folderItem-right
float right
-webkit-box-flex: 1
white-space nowrap
.folderItem-right-button
vertical-align middle
@@ -149,3 +154,26 @@ body[data-theme="monokai"]
.folderItem-right-dangerButton
colorMonokaiPrimaryButton()
body[data-theme="dracula"]
.folderItem
&:hover
background-color $ui-dracula-button-backgroundColor
.folderItem-left-danger
color $danger-color
.folderItem-left-key
color $ui-dark-inactive-text-color
.folderItem-left-colorButton
colorDraculaPrimaryButton()
.folderItem-right-button
colorDraculaPrimaryButton()
.folderItem-right-confirmButton
colorDraculaPrimaryButton()
.folderItem-right-dangerButton
colorDraculaPrimaryButton()

View File

@@ -30,7 +30,7 @@ class HotkeyTab extends React.Component {
this.handleSettingError = (err) => {
this.setState({keymapAlert: {
type: 'error',
message: err.message != null ? err.message : i18n.__('Error occurs!')
message: err.message != null ? err.message : i18n.__('An error occurred!')
}})
}
this.oldHotkey = this.state.config.hotkey
@@ -79,7 +79,7 @@ class HotkeyTab extends React.Component {
this.props.haveToSave({
tab: 'Hotkey',
type: 'warning',
message: i18n.__('You have to save!')
message: i18n.__('Unsaved Changes!')
})
}
}
@@ -117,7 +117,7 @@ class HotkeyTab extends React.Component {
</div>
</div>
<div styleName='group-section'>
<div styleName='group-section-label'>{i18n.__('Toggle editor mode')}</div>
<div styleName='group-section-label'>{i18n.__('Toggle Editor Mode')}</div>
<div styleName='group-section-control'>
<input styleName='group-section-control-input'
onChange={(e) => this.handleHotkeyChange(e)}

View File

@@ -60,7 +60,7 @@
body[data-theme="dark"]
.root
color alpha($tab--dark-text-color, 80%)
body[data-theme="solarized-dark"]
.root
@@ -75,3 +75,10 @@ body[data-theme="monokai"]
.list
a
color $ui-monokai-active-color
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
.list
a
color $ui-dracula-active-color

View File

@@ -90,7 +90,7 @@ body[data-theme="dark"]
background-color $dark-primary-button-background--active
&:hover
color white
body[data-theme="solarized-dark"]
.root
@@ -139,3 +139,27 @@ body[data-theme="monokai"]
background-color $ui-monokai-button--active-backgroundColor
&:hover
color white
body[data-theme="dracula"]
.root
background-color transparent
.top-bar
background-color transparent
border-color $ui-dracula-borderColor
p
color $ui-dracula-text-color
.nav
background-color transparent
border-color $ui-dracula-borderColor
.nav-button
background-color transparent
color $ui-dracula-text-color
&:hover
color $ui-dracula-text-color
.nav-button--active
@extend .nav-button
color $ui-dracula-button--active-color
background-color $ui-dracula-button--active-backgroundColor
&:hover
color #f8f8f2

View File

@@ -55,7 +55,11 @@ class SnippetList extends React.Component {
defineSnippetStyleName (snippet) {
const { currentSnippet } = this.props
if (currentSnippet == null) return
if (currentSnippet == null) {
return 'snippet-item'
}
if (currentSnippet.id === snippet.id) {
return 'snippet-item-selected'
} else {

View File

@@ -6,6 +6,9 @@ import i18n from 'browser/lib/i18n'
import dataApi from 'browser/main/lib/dataApi'
import SnippetList from './SnippetList'
import eventEmitter from 'browser/main/lib/eventEmitter'
import copy from 'copy-to-clipboard'
const path = require('path')
class SnippetTab extends React.Component {
constructor (props) {
@@ -16,6 +19,17 @@ class SnippetTab extends React.Component {
this.changeDelay = null
}
notify (title, options) {
if (global.process.platform === 'win32') {
options.icon = path.join(
'file://',
global.__dirname,
'../../resources/app.png'
)
}
return new window.Notification(title, options)
}
handleSnippetNameOrPrefixChange () {
clearTimeout(this.changeDelay)
this.changeDelay = setTimeout(() => {
@@ -27,12 +41,14 @@ class SnippetTab extends React.Component {
handleSnippetSelect (snippet) {
const { currentSnippet } = this.state
if (currentSnippet === null || currentSnippet.id !== snippet.id) {
dataApi.fetchSnippet(snippet.id).then(changedSnippet => {
// notify the snippet editor to load the content of the new snippet
this.snippetEditor.onSnippetChanged(changedSnippet)
this.setState({currentSnippet: changedSnippet})
})
if (snippet !== null) {
if (currentSnippet === null || currentSnippet.id !== snippet.id) {
dataApi.fetchSnippet(snippet.id).then(changedSnippet => {
// notify the snippet editor to load the content of the new snippet
this.snippetEditor.onSnippetChanged(changedSnippet)
this.setState({currentSnippet: changedSnippet})
})
}
}
}
@@ -54,6 +70,17 @@ class SnippetTab extends React.Component {
}
}
handleCopySnippet (e) {
const showCopyNotification = this.props.config.ui.showCopyNotification
copy(this.state.currentSnippet.content)
if (showCopyNotification) {
this.notify('Saved to Clipboard!', {
body: 'Paste it wherever you want!',
silent: true
})
}
}
render () {
const { config, storageKey } = this.props
const { currentSnippet } = this.state
@@ -70,6 +97,13 @@ class SnippetTab extends React.Component {
onSnippetDeleted={this.handleDeleteSnippet.bind(this)}
currentSnippet={currentSnippet} />
<div styleName='snippet-detail' style={{visibility: currentSnippet ? 'visible' : 'hidden'}}>
<div styleName='group-section'>
<div styleName='group-section-control'>
<button styleName='group-control-rightButton'
onClick={e => this.handleCopySnippet(e)}>{i18n.__('Copy')}
</button>
</div>
</div>
<div styleName='group-section'>
<div styleName='group-section-label'>{i18n.__('Snippet name')}</div>
<div styleName='group-section-control'>

View File

@@ -196,3 +196,19 @@ body[data-theme="monokai"]
color white
.group-control-button
colorMonokaiPrimaryButton()
body[data-theme="dracula"]
.snippets
background $ui-dracula-backgroundColor
.snippet-item
color #f8f8f2
&::after
background $ui-dracula-borderColor
&:hover
background darken($ui-dracula-backgroundColor, 5)
.snippet-item-selected
background darken($ui-dracula-backgroundColor, 5)
.snippet-detail
color #f8f8f2
.group-control-button
colorDraculaPrimaryButton()

View File

@@ -9,13 +9,17 @@
box-sizing border-box
border-bottom $default-border
margin-bottom 5px
display flex
.header-label
float left
cursor pointer
&:hover
.header-label-editButton
opacity 1
flex 1
white-space nowrap
text-overflow ellipsis
overflow hidden
.header-label-path
color $ui-inactive-text-color
@@ -38,8 +42,8 @@
outline none
.header-control
float right
-webkit-box-flex: 1
white-space nowrap
.header-control-button
width 30px
height 25px

View File

@@ -70,7 +70,7 @@ class StoragesTab extends React.Component {
})
return (
<div styleName='list'>
<div styleName='header'>{i18n.__('Storages')}</div>
<div styleName='header'>{i18n.__('Storage Locations')}</div>
{storageList.length > 0
? storageList
: <div styleName='list-empty'>{i18n.__('No storage found.')}</div>

View File

@@ -158,7 +158,7 @@ body[data-theme="dark"]
.addStorage-body-control-cancelButton
colorDarkDefaultButton()
border-color $ui-dark-borderColor
body[data-theme="solarized-dark"]
@@ -236,3 +236,41 @@ body[data-theme="monokai"]
.addStorage-body-control-cancelButton
colorDarkDefaultButton()
border-color $ui-monokai-borderColor
body[data-theme="dracula"]
.root
color $ui-dracula-text-color
.folderList-item
border-bottom $ui-dracula-borderColor
.folderList-empty
color $ui-dracula-text-color
.list-empty
color $ui-dracula-text-color
.list-control-addStorageButton
border-color $ui-dracula-button-backgroundColor
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
.addStorage-header
color $ui-dracula-text-color
border-color $ui-dracula-borderColor
.addStorage-body-section-name-input
border-color $$ui-dracula-borderColor
.addStorage-body-section-type-description
color $ui-dracula-text-color
.addStorage-body-section-path-button
colorPrimaryButton()
.addStorage-body-control
border-color $ui-dracula-borderColor
.addStorage-body-control-createButton
colorDarkPrimaryButton()
.addStorage-body-control-cancelButton
colorDarkDefaultButton()
border-color $ui-dracula-borderColor

View File

@@ -40,7 +40,7 @@ class UiTab extends React.Component {
this.handleSettingError = (err) => {
this.setState({UiAlert: {
type: 'error',
message: err.message != null ? err.message : i18n.__('Error occurs!')
message: err.message != null ? err.message : i18n.__('An error occurred!')
}})
}
ipc.addListener('APP_SETTING_DONE', this.handleSettingDone)
@@ -107,6 +107,7 @@ class UiTab extends React.Component {
smartArrows: this.refs.previewSmartArrows.checked,
sanitize: this.refs.previewSanitize.value,
allowCustomCSS: this.refs.previewAllowCustomCSS.checked,
lineThroughCheckbox: this.refs.lineThroughCheckbox.checked,
customCSS: this.customCSSCM.getCodeMirror().getValue()
}
}
@@ -125,7 +126,7 @@ class UiTab extends React.Component {
this.props.haveToSave({
tab: 'UI',
type: 'warning',
message: i18n.__('You have to save!')
message: i18n.__('Unsaved Changes!')
})
}
})
@@ -187,6 +188,7 @@ class UiTab extends React.Component {
<option value='white'>{i18n.__('White')}</option>
<option value='solarized-dark'>{i18n.__('Solarized Dark')}</option>
<option value='monokai'>{i18n.__('Monokai')}</option>
<option value='dracula'>{i18n.__('Dracula')}</option>
<option value='dark'>{i18n.__('Dark')}</option>
</select>
</div>
@@ -498,7 +500,7 @@ class UiTab extends React.Component {
</div>
</div>
<div styleName='group-section'>
<div styleName='group-section-label'>{i18n.__('Code block Theme')}</div>
<div styleName='group-section-label'>{i18n.__('Code Block Theme')}</div>
<div styleName='group-section-control'>
<select value={config.preview.codeBlockTheme}
ref='previewCodeBlockTheme'
@@ -512,6 +514,16 @@ class UiTab extends React.Component {
</select>
</div>
</div>
<div styleName='group-checkBoxSection'>
<label>
<input onChange={(e) => this.handleUIChange(e)}
checked={this.state.config.preview.lineThroughCheckbox}
ref='lineThroughCheckbox'
type='checkbox'
/>&nbsp;
{i18n.__('Allow line through checkbox')}
</label>
</div>
<div styleName='group-checkBoxSection'>
<label>
<input onChange={(e) => this.handleUIChange(e)}

View File

@@ -14,18 +14,18 @@
list-style none
padding 0
margin 0
border-radius 4px
margin .2em 0 0
margin .5rem 0 0
background-color $ui-noteList-backgroundColor
border 1px solid rgba(0,0,0,.3)
box-shadow .05em .2em .6em rgba(0,0,0,.2)
text-shadow none
&:empty,
&[hidden]
display none
&:before
content ""
position absolute
@@ -39,12 +39,12 @@
border-bottom 0
-webkit-transform rotate(45deg)
transform rotate(45deg)
li
position relative
padding 6px 18px 6px 10px
cursor pointer
li[aria-selected="true"]
background-color alpha($ui-button--active-backgroundColor, 40%)
color $ui-text-color
@@ -53,15 +53,15 @@ body[data-theme="dark"]
.TagSelect
.react-autosuggest__input
color $ui-dark-text-color
ul
border-color $ui-dark-borderColor
background-color $ui-dark-noteList-backgroundColor
color $ui-dark-text-color
&:before
background-color $ui-dark-noteList-backgroundColor
li[aria-selected="true"]
background-color $ui-dark-button--active-backgroundColor
color $ui-dark-text-color
@@ -70,32 +70,49 @@ body[data-theme="monokai"]
.TagSelect
.react-autosuggest__input
color $ui-monokai-text-color
ul
border-color $ui-monokai-borderColor
background-color $ui-monokai-noteList-backgroundColor
color $ui-monokai-text-color
&:before
background-color $ui-dark-noteList-backgroundColor
li[aria-selected="true"]
background-color $ui-monokai-button-backgroundColor
color $ui-monokai-text-color
body[data-theme="dracula"]
.TagSelect
.react-autosuggest__input
color $ui-dracula-text-color
ul
border-color $ui-dracula-borderColor
background-color $ui-dracula-noteList-backgroundColor
color $ui-dracula-text-color
&:before
background-color $ui-dark-noteList-backgroundColor
li[aria-selected="true"]
background-color $ui-dracula-button-backgroundColor
color $ui-dracula-text-color
body[data-theme="solarized-dark"]
.TagSelect
.react-autosuggest__input
color $ui-solarized-dark-text-color
ul
border-color $ui-solarized-dark-borderColor
background-color $ui-solarized-dark-noteList-backgroundColor
color $ui-solarized-dark-text-color
&:before
background-color $ui-solarized-dark-noteList-backgroundColor
li[aria-selected="true"]
background-color $ui-dark-button--active-backgroundColor
color $ui-solarized-dark-text-color
@@ -104,6 +121,6 @@ body[data-theme="white"]
.TagSelect
ul
background-color $ui-white-noteList-backgroundColor
li[aria-selected="true"]
background-color $ui-button--active-backgroundColor

View File

@@ -128,6 +128,16 @@ colorMonokaiPrimaryButton()
&:active:hover
background-color $dark-primary-button-background--active
colorDraculaPrimaryButton()
color $ui-dracula-text-color
background-color $ui-dracula-button-backgroundColor
border none
&:hover
background-color $ui-dracula-button--active-backgroundColor
&:active
&:active:hover
background-color $ui-dracula-button--active-backgroundColor
// Danger button(Brand color)
$danger-button-background = #c9302c
@@ -369,7 +379,7 @@ $ui-monokai-active-color = #f92672
$ui-monokai-borderColor = #373831
$ui-monokai-tag-backgroundColor = #f92672
$ui-monokai-tag-backgroundColor = #373831
$ui-monokai-button-backgroundColor = #373831
$ui-monokai-button--active-color = white
@@ -383,4 +393,30 @@ modalMonokai()
width 100%
background-color $ui-monokai-backgroundColor
overflow hidden
border-radius $modal-border-radius
/******* Dracula theme ********/
$ui-dracula-backgroundColor = #282a36
$ui-dracula-noteList-backgroundColor = #282a36
$ui-dracula-noteDetail-backgroundColor = #282a36
$ui-dracula-text-color = #f8f8f2
$ui-dracula-active-color = #bd93f9
$ui-dracula-borderColor = #44475a
$ui-dracula-tag-backgroundColor = #8be9fd
$ui-dracula-button-backgroundColor = #44475a
$ui-dracula-button--active-color = #f8f8f2
$ui-dracula-button--active-backgroundColor = #bd93f9
$ui-dracula-button--hover-backgroundColor = lighten($ui-dracula-backgroundColor, 10%)
$ui-dracula-button--focus-borderColor = lighten(#44475a, 25%)
modalDracula()
position relative
z-index $modal-z-index
width 100%
background-color $ui-dracula-backgroundColor
overflow hidden
border-radius $modal-border-radius

View File

@@ -1,18 +1,18 @@
# Contributing to Boostnote (English)
### When you open an issue of a bug report
There are no issue template. But there is a request.
### When you open an issue or a bug report
There is no issue template, but there is a request.
**Please paste screenshots of Boostnote with developer tool open**
**Please paste screenshots of Boostnote with the developer tool open**
Thank you for your help in advance.
Thank you in advance for your help.
### About copyright of Pull Request
### Concerning Copyright
If you make a pull request, It means you agree to transfer the copyright of the code changes to BoostIO.
By making a pull request you agree to transfer ownership of your code to BoostIO.
It doesn't mean Boostnote will become a paid app. If we want to earn some money, We will try other way, which is some kind of cloud storage, Mobile app integration or some SPECIAL features.
Because GPL v3 is too strict to be compatible with any other License, We thought this is needed to replace the license with much freer one(like BSD, MIT) somewhen.
This doesn't mean Boostnote will become a paid app. If we want to earn money, we will find other way. Potentially some kind of cloud storage, mobile app integration, or some premium features.
GPL v3 is too strict to be compatible with another license, so we thought it might be necessary to replace the license with a more open one (like BSD, MIT) eventually.
---

View File

@@ -0,0 +1,44 @@
.cm-table-row-even { background-color: rgb(242, 242, 242); }
.cm-s-3024-day.CodeMirror .cm-table-row-even { background-color: rgb(238, 237, 237); }
.cm-s-3024-night.CodeMirror .cm-table-row-even { background-color: rgb(30, 24, 21); }
.cm-s-abcdef.CodeMirror .cm-table-row-even { background-color: rgb(36, 39, 37); }
.cm-s-ambiance.CodeMirror .cm-table-row-even { background-color: rgb(242, 242, 242); }
.cm-s-base16-dark.CodeMirror .cm-table-row-even { background-color: rgb(41, 41, 41); }
.cm-s-base16-light.CodeMirror .cm-table-row-even { background-color: rgb(234, 234, 234); }
.cm-s-bespin.CodeMirror .cm-table-row-even { background-color: rgb(52, 45, 40); }
.cm-s-blackboard.CodeMirror .cm-table-row-even { background-color: rgb(36, 39, 55); }
.cm-s-cobalt.CodeMirror .cm-table-row-even { background-color: rgb(26, 56, 83); }
.cm-s-colorforth.CodeMirror .cm-table-row-even { background-color: rgb(25, 25, 25); }
.cm-s-darcula.CodeMirror .cm-table-row-even { background-color: rgb(56, 57, 59); }
.cm-s-dracula.CodeMirror .cm-table-row-even { background-color: rgb(61, 63, 73); }
.cm-s-duotone-dark.CodeMirror .cm-table-row-even { background-color: rgb(49, 45, 60); }
.cm-s-duotone-light.CodeMirror .cm-table-row-even { background-color: rgb(246, 243, 238); }
.cm-s-erlang-dark.CodeMirror .cm-table-row-even { background-color: rgb(26, 56, 83); }
.cm-s-gruvbox-dark.CodeMirror .cm-table-row-even { background-color: rgb(55, 53, 51); }
.cm-s-hopscotch.CodeMirror .cm-table-row-even { background-color: rgb(66, 58, 65); }
.cm-s-isotope.CodeMirror .cm-table-row-even { background-color: rgb(22, 22, 22); }
.cm-s-lesser-dark.CodeMirror .cm-table-row-even { background-color: rgb(58, 58, 57); }
.cm-s-liquibyte.CodeMirror .cm-table-row-even { background-color: rgb(26, 26, 26); }
.cm-s-lucario.CodeMirror .cm-table-row-even { background-color: rgb(64, 81, 96); }
.cm-s-material.CodeMirror .cm-table-row-even { background-color: rgb(58, 69, 74); }
.cm-s-mbo.CodeMirror .cm-table-row-even { background-color: rgb(65, 65, 63); }
.cm-s-midnight.CodeMirror .cm-table-row-even { background-color: rgb(34, 46, 63); }
.cm-s-monokai.CodeMirror .cm-table-row-even { background-color: rgb(60, 61, 55); }
.cm-s-neo.CodeMirror .cm-table-row-even { background-color: rgb(245, 245, 245); }
.cm-s-night.CodeMirror .cm-table-row-even { background-color: rgb(34, 25, 53); }
.cm-s-oceanic-next.CodeMirror .cm-table-row-even { background-color: rgb(68, 83, 89); }
.cm-s-paraiso-dark.CodeMirror .cm-table-row-even { background-color: rgb(61, 45, 59); }
.cm-s-paraiso-light.CodeMirror .cm-table-row-even { background-color: rgb(223, 224, 211); }
.cm-s-pastel-on-dark.CodeMirror .cm-table-row-even { background-color: rgb(54, 51, 49); }
.cm-s-railscasts.CodeMirror .cm-table-row-even { background-color: rgb(63, 63, 62); }
.cm-s-rubyblue.CodeMirror .cm-table-row-even { background-color: rgb(41, 58, 73); }
.cm-s-seti.CodeMirror .cm-table-row-even { background-color: rgb(40, 42, 43); }
.cm-s-shadowfox.CodeMirror .cm-table-row-even { background-color: rgb(56, 56, 59); }
.cm-s-solarized.CodeMirror .cm-table-row-even { background-color: rgb(242, 242, 242); }
.cm-s-the-matrix.CodeMirror .cm-table-row-even { background-color: rgb(0, 26, 0); }
.cm-s-tomorrow-night-bright.CodeMirror .cm-table-row-even { background-color: rgb(23, 23, 23); }
.cm-s-tomorrow-night-eighties.CodeMirror .cm-table-row-even { background-color: rgb(20, 20, 20); }
.cm-s-twilight.CodeMirror .cm-table-row-even { background-color: rgb(43, 43, 43); }
.cm-s-vibrant-ink.CodeMirror .cm-table-row-even { background-color: rgb(26, 26, 26); }
.cm-s-xq-dark.CodeMirror .cm-table-row-even { background-color: rgb(34, 25, 53); }
.cm-s-yeti.CodeMirror .cm-table-row-even { background-color: rgb(235, 232, 230); }

View File

@@ -0,0 +1,71 @@
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../codemirror/lib/codemirror"), require("../codemirror/mode/gfm/gfm"))
else if (typeof define == "function" && define.amd) // AMD
define(["../codemirror/lib/codemirror", "../codemirror/mode/gfm/gfm"], mod)
else // Plain browser env
mod(CodeMirror)
})(function(CodeMirror) {
'use strict'
CodeMirror.defineMode('bfm', function(config, gfmConfig) {
const bfmOverlay = {
startState() {
return {
inTable: false,
rowIndex: 0
}
},
copyState(s) {
return {
inTable: s.inTable,
rowIndex: s.rowIndex
}
},
token(stream, state) {
state.combineTokens = true
if (state.inTable) {
if (stream.match(/^\|/)) {
++state.rowIndex
stream.skipToEnd()
if (state.rowIndex === 1) {
return 'table table-separator'
} else if (state.rowIndex % 2 === 0) {
return 'table table-row table-row-even'
} else {
return 'table table-row table-row-odd'
}
} else {
state.inTable = false
stream.skipToEnd()
return null
}
} else if (stream.match(/^\|/)) {
state.inTable = true
state.rowIndex = 0
stream.skipToEnd()
return 'table table-header'
}
stream.skipToEnd()
return null
}
}
gfmConfig.name = 'gfm'
return CodeMirror.overlayMode(CodeMirror.getMode(config, gfmConfig), bfmOverlay)
})
CodeMirror.defineMIME('text/x-bfm', 'bfm')
CodeMirror.modeInfo.push({
name: "Boost Flavored Markdown",
mime: "text/x-bfm",
mode: "bfm"
})
})

View File

@@ -1,3 +1,4 @@
const fs = require('fs')
const path = require('path')
const ChildProcess = require('child_process')
const packager = require('electron-packager')
@@ -284,5 +285,48 @@ module.exports = function (grunt) {
}
})
grunt.registerTask('bfm', function () {
const Color = require('color')
const parseCSS = require('css').parse
const root = path.join(__dirname, 'node_modules/codemirror/theme/')
const colors = fs.readdirSync(root).map(file => {
const css = parseCSS(fs.readFileSync(path.join(root, file), 'utf8'))
const rules = css.stylesheet.rules.filter(rule => rule.selectors && /\b\.CodeMirror$/.test(rule.selectors[0]))
if (rules.length === 1) {
let bgColor = Color('white')
let fgColor = Color('black')
rules[0].declarations.forEach(declaration => {
if (declaration.property === 'background-color' || declaration.property === 'background') {
bgColor = Color(declaration.value.split(' ')[0])
} else if (declaration.property === 'color') {
const value = /^(.*?)(?:\s*!important)?$/.exec(declaration.value)[1]
let match = /^rgba\((.*?),\s*1\)$/.exec(value)
if (match) {
fgColor = Color(`rgb(${match[1]})`)
} else {
fgColor = Color(value)
}
}
})
if (bgColor.isLight()) {
bgColor = bgColor.mix(fgColor, 0.05)
} else {
bgColor = bgColor.mix(fgColor, 0.1)
}
return `${rules[0].selectors[0]} .cm-table-row-even { background-color: ${bgColor.rgb().string()}; }`
}
}).filter(value => !!value)
const defaultBgColor = Color('white').mix(Color('black'), 0.05)
fs.writeFileSync(path.join(__dirname, 'extra_scripts/codemirror/mode/bfm/bfm.css'), [`.cm-table-row-even { background-color: ${defaultBgColor.rgb().string()}; }`, ...colors].join('\n'), 'utf8')
})
grunt.registerTask('default', ['build'])
}

View File

@@ -10,6 +10,7 @@
<link rel="stylesheet" href="../node_modules/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="../node_modules/katex/dist/katex.min.css">
<link rel="stylesheet" href="../node_modules/codemirror/addon/dialog/dialog.css">
<link rel="stylesheet" href="../extra_scripts/codemirror/mode/bfm/bfm.css">
<title>Boostnote</title>
@@ -94,9 +95,13 @@
<script src="../node_modules/codemirror/keymap/vim.js"></script>
<script src="../node_modules/codemirror/keymap/emacs.js"></script>
<script src="../node_modules/codemirror/addon/runmode/runmode.js"></script>
<script src="../node_modules/codemirror/mode/xml/xml.js"></script>
<script src="../node_modules/codemirror/mode/markdown/markdown.js"></script>
<script src="../node_modules/codemirror/mode/gfm/gfm.js"></script>
<script src="../extra_scripts/boost/boostNewLineIndentContinueMarkdownList.js"></script>
<script src="../extra_scripts/codemirror/addon/hyperlink/hyperlink.js"></script>
<script src="../extra_scripts/codemirror/mode/bfm/bfm.js"></script>
<script src="../node_modules/codemirror/addon/edit/closebrackets.js"></script>
<script src="../node_modules/codemirror/addon/edit/matchbrackets.js"></script>
@@ -120,7 +125,7 @@
<script>
window._ = require('lodash')
</script>
<script src="../node_modules/js-sequence-diagrams/fucknpm/sequence-diagram-min.js"></script>
<script src="../node_modules/react/dist/react.min.js"></script>
<script src="../node_modules/react-dom/dist/react-dom.min.js"></script>

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Print",
"Your preferences for Boostnote": "Your preferences for Boostnote",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Add Storage Location",
"Add Folder": "Add Folder",
"Open Storage folder": "Open Storage folder",
@@ -55,7 +55,7 @@
"Preview": "Preview",
"Preview Font Size": "Preview Font Size",
"Preview Font Family": "Preview Font Family",
"Code block Theme": "Code block Theme",
"Code Block Theme": "Code Block Theme",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
"Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Dear everyone,",
"Dear Boostnote users,": "Dear Boostnote users,",
"Thank you for using Boostnote!": "Thank you for using Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
"To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
"To support our growing userbase, and satisfy community expectations,": "To support our growing userbase, and satisfy community expectations,",
"we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!",
"Thanks,": "Thanks,",
"Boostnote maintainers": "Boostnote maintainers",
"The Boostnote Team": "The Boostnote Team",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Language",
"English": "English",
@@ -141,7 +141,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "You have to save!",
"Unsaved Changes!": "Unsaved Changes!",
"Russian": "Russian",
"Command(⌘)": "Command(⌘)",
"Editor Rulers": "Editor Rulers",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Drucken",
"Your preferences for Boostnote": "Boostnote Einstellungen",
"Storages": "Speicherverwaltung",
"Storage Locations": "Speicherverwaltung",
"Add Storage Location": "Speicherort hinzufügen",
"Add Folder": "Ordner hinzufügen",
"Open Storage folder": "Speicherort öffnen",
@@ -55,7 +55,7 @@
"Preview": "Vorschau",
"Preview Font Size": "Vorschau Schriftgröße",
"Preview Font Family": "Vorschau Schriftart",
"Code block Theme": "Code-Block Theme",
"Code Block Theme": "Code-Block Theme",
"Allow preview to scroll past the last line": "Vorschau das Scrollen über das Ende hinaus erlauben",
"Show line numbers for preview code blocks": "Zeilennummern in Vorschau-Code-Blöcken anzeigen",
"LaTeX Inline Open Delimiter": "LaTeX Inline Beginn Kennzeichen",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "Du kannst wählen, ob du diese Option aktivieren oder daektivieren möchtest.",
"Enable analytics to help improve Boostnote": "Datenerhebung zur Verbesserung von Boostnote aktivieren",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Hallo,",
"Dear Boostnote users,": "Hallo,",
"Thank you for using Boostnote!": "Danke, dass du Boostnote verwendest.",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote wird in über 200 verschiedenen Ländern von einer großartigen Community von Entwicklern verwendet.",
"To continue supporting this growth, and to satisfy community expectations,": "Um die Erwartungen der Community weiterhin erfüllen zu können und die Verbreitung von Boostnote weiter voranzutreiben,",
"To support our growing userbase, and satisfy community expectations,": "Um die Erwartungen der Community weiterhin erfüllen zu können und die Verbreitung von Boostnote weiter voranzutreiben,",
"we would like to invest more time and resources in this project.": "würden wir gern mehr Zeit und Resourcen in dieses Projekt investieren.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Wenn dir dieses Projekt gefällt und du sein Potential erkennst, kannst du uns gern mit OpenCollective unterstützen!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Wenn dir dieses Projekt gefällt und du sein Potential erkennst, kannst du uns gern mit OpenCollective unterstützen!",
"Thanks,": "Vielen Dank,",
"Boostnote maintainers": "Dein Boostnote Team",
"The Boostnote Team": "Dein Boostnote Team",
"Support via OpenCollective": "Unterstützen mit OpenCollective",
"Language": "Sprache",
"English": "Englisch",
@@ -130,7 +130,7 @@
"Permanent Delete": "Dauerhaft löschen",
"Confirm note deletion": "Löschen bestätigen",
"This will permanently remove this note.": "Diese Notiz wird dauerhaft gelöscht.",
"You have to save!": "Speichern notwendig!",
"Unsaved Changes!": "Speichern notwendig!",
"Albanian": "Albanisch",
"Danish": "Dänisch",
"Japanese": "Japanisch",

View File

@@ -23,7 +23,7 @@
"Your preferences for Boostnote": "Your preferences for Boostnote",
"Help": "Help",
"Hide Help": "Hide Help",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Add Storage Location",
"Add Folder": "Add Folder",
"Select Folder": "Select Folder",
@@ -62,7 +62,7 @@
"Preview": "Preview",
"Preview Font Size": "Preview Font Size",
"Preview Font Family": "Preview Font Family",
"Code block Theme": "Code block Theme",
"Code Block Theme": "Code Block Theme",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -90,14 +90,14 @@
"You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
"Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Dear everyone,",
"Dear Boostnote users,": "Dear Boostnote users,",
"Thank you for using Boostnote!": "Thank you for using Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
"To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
"To support our growing userbase, and satisfy community expectations,": "To support our growing userbase, and satisfy community expectations,",
"we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!",
"Thanks,": "Thanks,",
"Boostnote maintainers": "Boostnote maintainers",
"The Boostnote Team": "The Boostnote Team",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Language",
"English": "English",
@@ -134,7 +134,7 @@
"Storage": "Storage",
"Hotkeys": "Hotkeys",
"Show/Hide Boostnote": "Show/Hide Boostnote",
"Toggle editor mode": "Toggle editor mode",
"Toggle Editor Mode": "Toggle Editor Mode",
"Restore": "Restore",
"Permanent Delete": "Permanent Delete",
"Confirm note deletion": "Confirm note deletion",
@@ -150,7 +150,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "You have to save!",
"Unsaved Changes!": "Unsaved Changes!",
"UserName": "UserName",
"Password": "Password",
"Russian": "Russian",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Imprimir",
"Your preferences for Boostnote": "Tus preferencias para Boostnote",
"Storages": "Almacenamientos",
"Storage Locations": "Almacenamientos",
"Add Storage Location": "Añadir ubicación de almacenamiento",
"Add Folder": "Añadir carpeta",
"Open Storage folder": "Abrir carpeta de almacenamiento",
@@ -55,7 +55,7 @@
"Preview": "Previsualizar",
"Preview Font Size": "Previsualizar tamaño de la fuente",
"Preview Font Family": "Previsualizar fuente",
"Code block Theme": "Tema de los bloques de código",
"Code Block Theme": "Tema de los bloques de código",
"Allow preview to scroll past the last line": "Permitir a la previsualización desplazarse más allá de la última línea",
"Show line numbers for preview code blocks": "Mostrar números de línea al previsualizar bloques de código",
"LaTeX Inline Open Delimiter": "Delimitador de apertura de LaTeX en línea",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "Puedes elegir activar o desactivar esta opción.",
"Enable analytics to help improve Boostnote": "Activar recopilación de datos para ayudar a mejorar Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Hola a todos,",
"Dear Boostnote users,": "Hola a todos,",
"Thank you for using Boostnote!": "¡Gracias por usar Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote es utilizado en alrededor de 200 países y regiones diferentes por una increíble comunidad de desarrolladores.",
"To continue supporting this growth, and to satisfy community expectations,": "Para continuar apoyando este crecimiento y satisfacer las expectativas de la comunidad,",
"To support our growing userbase, and satisfy community expectations,": "Para continuar apoyando este crecimiento y satisfacer las expectativas de la comunidad,",
"we would like to invest more time and resources in this project.": "nos gustaría invertir más tiempo y recursos en este proyecto.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Si te gusta este proyecto y ves su potencial, ¡puedes ayudar apoyándonos en OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Si te gusta este proyecto y ves su potencial, ¡puedes ayudar apoyándonos en OpenCollective!",
"Thanks,": "Gracias,",
"Boostnote maintainers": "Equipo de Boostnote",
"The Boostnote Team": "Equipo de Boostnote",
"Support via OpenCollective": "Contribuir vía OpenCollective",
"Language": "Idioma",
"English": "Inglés",
@@ -141,7 +141,7 @@
"Polish": "Polaco",
"Portuguese": "Portugués",
"Spanish": "Español",
"You have to save!": "¡Tienes que guardar!",
"Unsaved Changes!": "¡Tienes que guardar!",
"Russian": "Ruso",
"Command(⌘)": "Comando(⌘)",
"Editor Rulers": "Reglas del editor",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "پرینت",
"Your preferences for Boostnote": "تنظیمات شما برای boostnote",
"Storages": "ذخیره سازی",
"Storage Locations": "ذخیره سازی",
"Add Storage Location": "افزودن محل ذخیره سازی",
"Add Folder": "ساخت پوشه",
"Open Storage folder": "بازکردن پوشه ذخیره سازی",
@@ -55,7 +55,7 @@
"Preview": "پیش نمایش",
"Preview Font Size": "اندازه فونتِ پیش نمایش",
"Preview Font Family": " فونتِ پیش نمایش",
"Code block Theme": "تم بخش کد",
"Code Block Theme": "تم بخش کد",
"Allow preview to scroll past the last line": "اجازه بده پیش نمایش بعد از آخرین خط اسکرول کند.",
"Show line numbers for preview code blocks": "شماره خطوط در پیش نمایش را نمایش بده.",
"LaTeX Inline Open Delimiter": "جداکننده آغازین لاتکس خطی",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "میتوانید این گزینه را فعال یا غیرفعال کنید.",
"Enable analytics to help improve Boostnote":".تجزیه تحلیل داده ها را برای کمک به بهبود برنامه فعال کن",
"Crowdfunding": "جمع سپاری (سرمایه گذاری جمعی )",
"Dear everyone,": "عزیزان,",
"Dear Boostnote users,": "عزیزان,",
"Thank you for using Boostnote!": "از شما بخاطر استفاده از boostnote ممنونیم!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "در ۲۰۰ کشور مختلف دنیا مورد توسط جمعی از برنامه نویسان بی نظیر مورد استفاده قرار میگیرد. Boostnote",
"To continue supporting this growth, and to satisfy community expectations,": "برای حمایت از این رشد ، و برآورده شدن انتظارات کامینیتی,",
"To support our growing userbase, and satisfy community expectations,": "برای حمایت از این رشد ، و برآورده شدن انتظارات کامینیتی,",
"we would like to invest more time and resources in this project.": "ما می خواهیم زمان و منابع بیشتری را در این پروژه سرمایه گذاری کنیم.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "اگر این پروژه را دوست دارید و پتانسیلی در آن می‌بینید، میتوانید مارا در اوپن‌ کالکتیو حمایت کنید.",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "اگر این پروژه را دوست دارید و پتانسیلی در آن می‌بینید، میتوانید مارا در اوپن‌ کالکتیو حمایت کنید.",
"Thanks,": "با تشکر,",
"Boostnote maintainers": "Boostnote نگهدارندگان",
"The Boostnote Team": "Boostnote نگهدارندگان",
"Support via OpenCollective": "حمایت کنید OpenCollective از طریق",
"Language": "زبان",
"English": "انگلیسی",
@@ -142,7 +142,7 @@
"Polish": "لهستانی",
"Portuguese": "پرتغالی",
"Spanish": "اسپانیایی",
"You have to save!": "!باید ذخیره کنید",
"Unsaved Changes!": "!باید ذخیره کنید",
"UserName": "نام کاربری",
"Password": "رمز عبور",
"Russian": "روسی",
@@ -156,4 +156,4 @@
"Allow dangerous html tags": "تگ های خطرناک اچ‌ تی ام ال مجاز اند",
"Convert textual arrows to beautiful signs. ⚠ This will interfere with using HTML comments in your Markdown.": "Convert textual arrows to beautiful signs. ⚠ This will interfere with using HTML comments in your Markdown.",
"⚠ 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! ⚠"
}
}

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Imprimer",
"Your preferences for Boostnote": "Vos préférences pour Boostnote",
"Storages": "Stockages",
"Storage Locations": "Stockages",
"Add Storage Location": "Ajouter un espace de stockage",
"Add Folder": "Ajouter un dossier",
"Open Storage folder": "Ouvrir un dossier de stockage",
@@ -55,7 +55,7 @@
"Preview": "Aperçu",
"Preview Font Size": "Taille de police de l'aperçu",
"Preview Font Family": "Police de l'aperçu",
"Code block Theme": "Thème des blocs de code",
"Code Block Theme": "Thème des blocs de code",
"Show line numbers for preview code blocks": "Montrer les numéros de lignes dans les blocs de code dans l'aperçu",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
"LaTeX Inline Close Delimiter": "LaTeX Inline Close Delimiter",
@@ -82,14 +82,14 @@
"You can choose to enable or disable this option.": "Vous pouvez choisir d'activer/désactiver cette option.",
"Enable analytics to help improve Boostnote": "Activer la collecte de données anonymisées pour améliorer Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Cher utilisateur,",
"Dear Boostnote users,": "Cher utilisateur,",
"Thank you for using Boostnote!": "Merci d'utiliser Boostnote !",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote est utilisé dans plus de 200 pays et régions par une impressionnante communauté de développeurs.",
"To continue supporting this growth, and to satisfy community expectations,": "Afin de continuer à grandir, et de satisfaire les attentes de la communauté,",
"To support our growing userbase, and satisfy community expectations,": "Afin de continuer à grandir, et de satisfaire les attentes de la communauté,",
"we would like to invest more time and resources in this project.": "nous aimerions investir d'avantage de temps et de ressources dans ce proje.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Si vous aimez ce projet et que vous en voyez tout le potentiel, vous pouvez aider par un support sur OpenCollective !",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Si vous aimez ce projet et que vous en voyez tout le potentiel, vous pouvez aider par un support sur OpenCollective !",
"Thanks,": "Merci,",
"Boostnote maintainers": "Les mainteneurs de Boostnote",
"The Boostnote Team": "Les mainteneurs de Boostnote",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Langues",
"English": "Anglais",
@@ -140,7 +140,7 @@
"Polish": "Polonais",
"Portuguese": "Portugais",
"Spanish": "Espagnol",
"You have to save!": "Il faut sauvegarder !",
"Unsaved Changes!": "Il faut sauvegarder !",
"Russian": "Russe",
"Command(⌘)": "Command(⌘)",
"Editor Rulers": "Règles dans l'éditeur",

View File

@@ -23,7 +23,7 @@
"Your preferences for Boostnote": "Boostnote beállításaid",
"Help": "Súgó",
"Hide Help": "Súgó Elrejtése",
"Storages": "Tárolók",
"Storage Locations": "Tárolók",
"Add Storage Location": "Tároló Hozzáadása",
"Add Folder": "Könyvtár Hozzáadása",
"Select Folder": "Könyvtár Kiválasztása",
@@ -62,7 +62,7 @@
"Preview": "Megtekintés",
"Preview Font Size": "Megtekintés Betűmérete",
"Preview Font Family": "Megtekintés Betűtípusa",
"Code block Theme": "Kódblokk Témája",
"Code Block Theme": "Kódblokk Témája",
"Allow preview to scroll past the last line": "Megtekintésben az utolsó sor alá is lehessen görgetni",
"Show line numbers for preview code blocks": "Mutatassa a sorszámokat a megtekintett kódblokkokban",
"LaTeX Inline Open Delimiter": "LaTeX Inline Nyitó Határolója",
@@ -90,14 +90,14 @@
"You can choose to enable or disable this option.": "Kiválaszthatod, hogy engedélyezed, vagy tiltod ezt az opciót.",
"Enable analytics to help improve Boostnote": "Adatok elemzésének engedélyezése a Boostnote tökéletesítésének céljából",
"Crowdfunding": "Közösségi finanszírozás",
"Dear everyone,": "Kedves felhasználók!",
"Dear Boostnote users,": "Kedves felhasználók!",
"Thank you for using Boostnote!": "Köszönjük, hogy a Boostnote-ot használjátok!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "A Boostnote-ot több, mint 200 ország és régió fantasztikus fejlesztői használják.",
"To continue supporting this growth, and to satisfy community expectations,": "Hogy folytathassuk ezt a fejlődést és kielégíthessük a felhasználói elvárásokat,",
"To support our growing userbase, and satisfy community expectations,": "Hogy folytathassuk ezt a fejlődést és kielégíthessük a felhasználói elvárásokat,",
"we would like to invest more time and resources in this project.": "több időt és erőforrást szeretnénk a projektbe fektetni.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Ha tetszik a projekt és hasznosnak találod, te is segíthetsz ebben az OpenCollective-en keresztül küldött támogatásoddal.",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Ha tetszik a projekt és hasznosnak találod, te is segíthetsz ebben az OpenCollective-en keresztül küldött támogatásoddal.",
"Thanks,": "Köszönjük!",
"Boostnote maintainers": "A Boostnote csapata",
"The Boostnote Team": "A Boostnote csapata",
"Support via OpenCollective": "Támogatás Küldése",
"Language": "Nyelv",
"English": "English",
@@ -134,7 +134,7 @@
"Storage": "Tároló",
"Hotkeys": "Gyorsbillentyűk",
"Show/Hide Boostnote": "Boostnote Megjelenítése/Elrejtése",
"Toggle editor mode": "Szerkesztő mód váltása",
"Toggle Editor Mode": "Szerkesztő mód váltása",
"Restore": "Visszaállítás",
"Permanent Delete": "Végleges Törlés",
"Confirm note deletion": "Törlés megerősítése",
@@ -150,7 +150,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "Mentened kell!",
"Unsaved Changes!": "Mentened kell!",
"UserName": "FelhasznaloNev",
"Password": "Jelszo",
"Russian": "Russian",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Stampa",
"Your preferences for Boostnote": "Le tue preferenze per Boostnote",
"Storages": "Posizioni",
"Storage Locations": "Posizioni",
"Add Storage Location": "Aggiungi posizione",
"Add Folder": "Aggiungi cartella",
"Open Storage folder": "Apri cartella di memoria",
@@ -55,7 +55,7 @@
"Preview": "Anteprima",
"Preview Font Size": "Dimensione font nell'anteprima",
"Preview Font Family": "Famiglia del font dell'anteprima",
"Code block Theme": "Tema blocco di codice",
"Code Block Theme": "Tema blocco di codice",
"Allow preview to scroll past the last line": "Consenti scrolling oltre l'ultima linea",
"Show line numbers for preview code blocks": "Mostra numero di linea per i blocchi di codice nell'Anteprima",
"LaTeX Inline Open Delimiter": "Delimitatore inline per apertura LaTex",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "Puoi scegliere se attivare o disattivare questa opzione.",
"Enable analytics to help improve Boostnote": "Attiva raccolta dati per aiutare a migliorare Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Cari utenti,",
"Dear Boostnote users,": "Cari utenti,",
"Thank you for using Boostnote!": "Grazie per stare utilizzando Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote è usato in circa 200 Paesi da una fantastica community di sviluppatori.",
"To continue supporting this growth, and to satisfy community expectations,": "Per continuare a supportarne la crescita, e per soddisfare le aspettative della comunità,",
"To support our growing userbase, and satisfy community expectations,": "Per continuare a supportarne la crescita, e per soddisfare le aspettative della comunità,",
"we would like to invest more time and resources in this project.": "ci piacerebbe investire più tempo e risorse in questo progetto.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Se ti piace questo progetto e ci vedi del potenziale, puoi aiutarci dandodci supporto su OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Se ti piace questo progetto e ci vedi del potenziale, puoi aiutarci dandodci supporto su OpenCollective!",
"Thanks,": "Grazie,",
"Boostnote maintainers": "I mantainers di Boostnote",
"The Boostnote Team": "I mantainers di Boostnote",
"Support via OpenCollective": "Supporta su OpenCollective",
"Language": "Lingua",
"English": "Inglese",
@@ -142,7 +142,7 @@
"Polish": "Polacco",
"Portuguese": "Portoghese",
"Spanish": "Spagnolo",
"You have to save!": "Devi salvare!",
"Unsaved Changes!": "Devi salvare!",
"UserName": "UserName",
"Password": "Password",
"Russian": "Russo",

View File

@@ -23,7 +23,7 @@
"Your preferences for Boostnote": "Boostnoteの個人設定",
"Help": "ヘルプ",
"Hide Help": "ヘルプを隠す",
"Storages": "ストレージ",
"Storage Locations": "ストレージ",
"Add Storage Location": "ストレージロケーションを追加",
"Add Folder": "フォルダを追加",
"Select Folder": "フォルダを選択",
@@ -62,7 +62,7 @@
"Preview": "プレビュー",
"Preview Font Size": "プレビュー時フォントサイズ",
"Preview Font Family": "プレビュー時フォント",
"Code block Theme": "コードブロックのテーマ",
"Code Block Theme": "コードブロックのテーマ",
"Allow preview to scroll past the last line": "プレビュー時に最終行以降にスクロールできるようにする",
"Show line numbers for preview code blocks": "プレビュー時のコードブロック内に行番号を表示する",
"LaTeX Inline Open Delimiter": "LaTeX 開始デリミタ(インライン)",
@@ -90,14 +90,14 @@
"You can choose to enable or disable this option.": "このオプションは有効/無効を選択できます。",
"Enable analytics to help improve Boostnote": "Boostnote の機能向上のための解析機能を有効にする",
"Crowdfunding": "クラウドファンディング",
"Dear everyone,": "みなさまへ",
"Dear Boostnote users,": "みなさまへ",
"Thank you for using Boostnote!": "Boostnote を利用いただき、ありがとうございます!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote はおよそ 200 の国と地域において、開発者コミュニティを中心に利用されています。",
"To continue supporting this growth, and to satisfy community expectations,": "この成長を持続し、またコミュニティからの要望に答えるため、",
"To support our growing userbase, and satisfy community expectations,": "この成長を持続し、またコミュニティからの要望に答えるため、",
"we would like to invest more time and resources in this project.": "私達はこのプロジェクトにより多くの時間とリソースを投資したいと考えています。",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "もしあなたがこのプロジェクトとそのポテンシャルを気に入っていただけたのであれば、OpenCollective を通じて支援いただくことができます!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "もしあなたがこのプロジェクトとそのポテンシャルを気に入っていただけたのであれば、OpenCollective を通じて支援いただくことができます!",
"Thanks,": "ありがとうございます。",
"Boostnote maintainers": "Boostnote メンテナンスチーム",
"The Boostnote Team": "Boostnote メンテナンスチーム",
"Support via OpenCollective": "OpenCollective を通じて支援します",
"Language": "言語",
"English": "英語",
@@ -134,7 +134,7 @@
"Storage": "ストレージ",
"Hotkeys": "ホットキー",
"Show/Hide Boostnote": "Boostnote の表示/非表示",
"Toggle editor mode": "エディタモードの切替",
"Toggle Editor Mode": "エディタモードの切替",
"Restore": "リストア",
"Permanent Delete": "永久に削除",
"Confirm note deletion": "ノート削除確認",
@@ -150,7 +150,7 @@
"Polish": "ポーランド語",
"Portuguese": "ポルトガル語",
"Spanish": "スペイン語",
"You have to save!": "保存してください!",
"Unsaved Changes!": "保存してください!",
"UserName": "ユーザー名",
"Password": "パスワード",
"Russian": "ロシア語",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "인쇄",
"Your preferences for Boostnote": "Boostnote 설정",
"Storages": "저장소",
"Storage Locations": "저장소",
"Add Storage Location": "저장소 위치 추가",
"Add Folder": "폴더 추가",
"Open Storage folder": "저장소 위치 열기",
@@ -55,7 +55,7 @@
"Preview": "프리뷰",
"Preview Font Size": "프리뷰시 폰트 크기",
"Preview Font Family": "프리뷰시 폰트 종류",
"Code block Theme": "코드 블록 테마",
"Code Block Theme": "코드 블록 테마",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX 인라인 블록 열기 기호",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "사용 통계/분석 수집 여부는 직접 선택하실 수 있습니다.",
"Enable analytics to help improve Boostnote": "Boostnote 개선을 돕기위해 사용 통계/분석 수집 허가",
"Crowdfunding": "크라우드펀딩",
"Dear everyone,": "모두들에게,",
"Dear Boostnote users,": "모두들에게,",
"Thank you for using Boostnote!": "사용해주셔서 감사합니다!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote는 200여개의 국가에서 뛰어난 개발자들에게 사용되어지고 있습니다.",
"To continue supporting this growth, and to satisfy community expectations,": "성장을 계속하기 위해 그리고 커뮤니티의 기대를 만족시키기 위해서,",
"To support our growing userbase, and satisfy community expectations,": "성장을 계속하기 위해 그리고 커뮤니티의 기대를 만족시키기 위해서,",
"we would like to invest more time and resources in this project.": "저희도 시간과 자원을 더 쏟아붓고 싶습니다.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "만약 이 프로젝트가 마음에 들고 가능성이 보이신다면, 저희를 OpenCollective에서 도와주세요!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "만약 이 프로젝트가 마음에 들고 가능성이 보이신다면, 저희를 OpenCollective에서 도와주세요!",
"Thanks,": "감사합니다,",
"Boostnote maintainers": "Boostnote 메인테이너",
"The Boostnote Team": "Boostnote 메인테이너",
"Support via OpenCollective": "OpenCollective로 지원하기",
"Language": "언어(Language)",
"English": "English",
@@ -141,7 +141,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "저장해주세요!",
"Unsaved Changes!": "저장해주세요!",
"Russian": "Russian",
"Command(⌘)": "Command(⌘)",
"Delete Folder": "폴더 삭제",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Print",
"Your preferences for Boostnote": "Your preferences for Boostnote",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Add Storage Location",
"Add Folder": "Add Folder",
"Open Storage folder": "Open Storage folder",
@@ -55,7 +55,7 @@
"Preview": "Preview",
"Preview Font Size": "Preview Font Size",
"Preview Font Family": "Preview Font Family",
"Code block Theme": "Code block Theme",
"Code Block Theme": "Code Block Theme",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
"Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Dear everyone,",
"Dear Boostnote users,": "Dear Boostnote users,",
"Thank you for using Boostnote!": "Thank you for using Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
"To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
"To support our growing userbase, and satisfy community expectations,": "To support our growing userbase, and satisfy community expectations,",
"we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!",
"Thanks,": "Thanks,",
"Boostnote maintainers": "Boostnote maintainers",
"The Boostnote Team": "The Boostnote Team",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Language",
"English": "English",
@@ -141,7 +141,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "You have to save!",
"Unsaved Changes!": "Unsaved Changes!",
"Russian": "Russian",
"Editor Rulers": "Editor Rulers",
"Enable": "Enable",

View File

@@ -15,14 +15,14 @@
"FOLDER": "FOLDER",
"CREATION DATE": "DATA UTWORZENIA",
"NOTE LINK": "LINK NOTATKI",
"Toggle editor mode": "Przełączanie trybu edytora",
"Toggle Editor Mode": "Przełączanie trybu edytora",
".md": ".md",
".txt": ".txt",
".html": ".html",
"Print": "Drukuj",
"Help": "Pomoc",
"Your preferences for Boostnote": "Twoje ustawienia dla Boostnote",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Dodaj miejsce zapisu",
"Add Folder": "Dodaj Folder",
"Open Storage folder": "Otwórz folder zapisu",
@@ -61,7 +61,7 @@
"Enable smart quotes": "Włącz inteligentne cytowanie",
"Render newlines in Markdown paragraphs as <br>": "Dodawaj nowe linie w notatce jako znacznik <br>",
"Preview Font Family": "Czcionka",
"Code block Theme": "Styl bloku kodu",
"Code Block Theme": "Styl bloku kodu",
"Allow preview to scroll past the last line": "Pozwalaj podglądowi na przewijanie poza końcową linię",
"Show line numbers for preview code blocks": "Pokazuj numery lini dla podglądu bloków kodu",
"LaTeX Inline Open Delimiter": "Otwarcie liniowego ogranicznika LaTeX",
@@ -89,14 +89,14 @@
"You can choose to enable or disable this option.": "Możesz włączyć lub wyłączyć zbieranie danych tutaj:",
"Enable analytics to help improve Boostnote": "Zbieraj dane by pomóc w ulepszaniu Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Droga społeczności,",
"Dear Boostnote users,": "Droga społeczności,",
"Thank you for using Boostnote!": "Dziękujemy za używanie Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote jest używany w około 200 krajach i regionach przez wspaniałą społeczność programistów.",
"To continue supporting this growth, and to satisfy community expectations,": "Chcielibyśmy poświęcić więcej czasu na rozwój naszego projektu",
"To support our growing userbase, and satisfy community expectations,": "Chcielibyśmy poświęcić więcej czasu na rozwój naszego projektu",
"we would like to invest more time and resources in this project.": "aby popularność i satysfakcja naszej społeczności ciągle wzrastała.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Jeśli podoba Ci się naszy projekt i lubisz go używać, możesz wspomóc nasz przez OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Jeśli podoba Ci się naszy projekt i lubisz go używać, możesz wspomóc nasz przez OpenCollective!",
"Thanks,": "Dzięki,",
"Boostnote maintainers": "Kontrybutorzy Boostnote",
"The Boostnote Team": "Kontrybutorzy Boostnote",
"Support via OpenCollective": "Wspomóż przez OpenCollective",
"Language": "Język",
"English": "Angielski",
@@ -147,7 +147,7 @@
"Polish": "Polski",
"Portuguese": "Portugalski",
"Spanish": "Hiszpański",
"You have to save!": "Musisz zapisać!",
"Unsaved Changes!": "Musisz zapisać!",
"Russian": "Rosyjski",
"Editor Rulers": "Margines",
"Enable": "Włącz",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Imprimir",
"Your preferences for Boostnote": "Suas preferências para o Boostnote",
"Storages": "Armazenamentos",
"Storage Locations": "Armazenamentos",
"Add Storage Location": "Adicionar Local de Armazenamento",
"Add Folder": "Adicionar Pasta",
"Open Storage folder": "Abrir Local de Armazenamento",
@@ -55,7 +55,7 @@
"Preview": "Pré-Visualização",
"Preview Font Size": "Tamanho da Fonte da Pré-Visualização",
"Preview Font Family": "Família da Fonte da Pré-Visualização",
"Code block Theme": "Tema do Bloco de Código",
"Code Block Theme": "Tema do Bloco de Código",
"Allow preview to scroll past the last line": "Permitir à pré-visualização rolar além da última linha",
"Show line numbers for preview code blocks": "Mostrar os números das linhas na pré-visualização dos blocos de código",
"LaTeX Inline Open Delimiter": "Delimitador em Linha Aberto do LaTeX",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "Você pode optar por ativar ou desativar essa opção.",
"Enable analytics to help improve Boostnote": "Ativar técnicas analíticas para ajudar a melhorar o Boostnote",
"Crowdfunding": "Financiamento Coletivo",
"Dear everyone,": "Caros(as),",
"Dear Boostnote users,": "Caros(as),",
"Thank you for using Boostnote!": "Obrigado por usar o Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "O Boostnote é usado em cerca de 200 países e regiões diferentes por uma incrível comunidade de desenvolvedores.",
"To continue supporting this growth, and to satisfy community expectations,": "Para continuar apoiando o crescimento e satisfazer as expectativas da comunidade,",
"To support our growing userbase, and satisfy community expectations,": "Para continuar apoiando o crescimento e satisfazer as expectativas da comunidade,",
"we would like to invest more time and resources in this project.": "gostaríamos de investir mais tempo e recursos neste projeto.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Se você gosta deste projeto e vê o seu potencial, você pode nos ajudar apoiando-nos no OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Se você gosta deste projeto e vê o seu potencial, você pode nos ajudar apoiando-nos no OpenCollective!",
"Thanks,": "Obrigado,",
"Boostnote maintainers": "Mantenedores do Boostnote",
"The Boostnote Team": "Mantenedores do Boostnote",
"Support via OpenCollective": "Suporte via OpenCollective",
"Language": "Idioma",
"English": "Inglês",
@@ -141,7 +141,7 @@
"Polish": "Polonês",
"Portuguese": "Português (pt-BR)",
"Spanish": "Espanhol",
"You have to save!": "Você precisa salvar!",
"Unsaved Changes!": "Você precisa salvar!",
"Russian": "Russo",
"Editor Rulers": "Réguas do Editor",
"Enable": "Habilitado",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Print",
"Your preferences for Boostnote": "Your preferences for Boostnote",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Add Storage Location",
"Add Folder": "Add Folder",
"Open Storage folder": "Open Storage folder",
@@ -55,7 +55,7 @@
"Preview": "Preview",
"Preview Font Size": "Preview Font Size",
"Preview Font Family": "Preview Font Family",
"Code block Theme": "Code block Theme",
"Code Block Theme": "Code Block Theme",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -83,14 +83,14 @@
"You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
"Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Dear everyone,",
"Dear Boostnote users,": "Dear Boostnote users,",
"Thank you for using Boostnote!": "Thank you for using Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
"To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
"To support our growing userbase, and satisfy community expectations,": "To support our growing userbase, and satisfy community expectations,",
"we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!",
"Thanks,": "Thanks,",
"Boostnote maintainers": "Boostnote maintainers",
"The Boostnote Team": "The Boostnote Team",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Language",
"English": "English",
@@ -141,7 +141,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "You have to save!",
"Unsaved Changes!": "Unsaved Changes!",
"Russian": "Russian",
"Editor Rulers": "Editor Rulers",
"Enable": "Enable",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Print",
"Your preferences for Boostnote": "Настройки Boostnote",
"Storages": "Хранилища",
"Storage Locations": "Хранилища",
"Add Storage Location": "Добавить хранилище",
"Add Folder": "Добавить папку",
"Open Storage folder": "Открыть хранилище",
@@ -55,7 +55,7 @@
"Preview": "Preview",
"Preview Font Size": "Размер шрифта",
"Preview Font Family": "Шрифт",
"Code block Theme": "Тема оформления кода",
"Code Block Theme": "Тема оформления кода",
"Allow preview to scroll past the last line": "Разрешить прокрутку дальше последней строки в превью",
"Show line numbers for preview code blocks": "Показывать номера строк в блоках кода",
"LaTeX Inline Open Delimiter": "Символ начала inline записи в LaTeX",
@@ -82,14 +82,14 @@
"You can choose to enable or disable this option.": "Вы можете отказаться от передачи анонимной информации разработчикам.",
"Enable analytics to help improve Boostnote": "Отправлять анонимные данные, чтобы сделать Boostnote еще лучше",
"Crowdfunding": "Краудфандинг",
"Dear everyone,": "Привет,",
"Dear Boostnote users,": "Привет,",
"Thank you for using Boostnote!": "Спасибо за использование Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote используется в 200 странах и регионов дружным сообществом разработчиков.",
"To continue supporting this growth, and to satisfy community expectations,": "Чтобы продукт развивался и удовлетворял ожиданиям пользователей,",
"To support our growing userbase, and satisfy community expectations,": "Чтобы продукт развивался и удовлетворял ожиданиям пользователей,",
"we would like to invest more time and resources in this project.": "мы хотим выделять больше времени и ресурсов проекту.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Если вам нравится Boostnote и его сообщество, вы можете профинансировать проект на OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Если вам нравится Boostnote и его сообщество, вы можете профинансировать проект на OpenCollective!",
"Thanks,": "Спасибо,",
"Boostnote maintainers": "разработчики Boostnote",
"The Boostnote Team": "разработчики Boostnote",
"Support via OpenCollective": "Старница проекта на OpenCollective",
"Language": "Язык",
"English": "Английский",
@@ -140,7 +140,7 @@
"Polish": "Польский",
"Portuguese": "Португальский",
"Spanish": "Испанский",
"You have to save!": "Нужно сохранить!",
"Unsaved Changes!": "Нужно сохранить!",
"UserName": "Имя пользователя",
"Password": "Пароль",
"Russian": "Русский",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Print",
"Your preferences for Boostnote": "Your preferences for Boostnote",
"Storages": "Storages",
"Storage Locations": "Storage Locations",
"Add Storage Location": "Add Storage Location",
"Add Folder": "Add Folder",
"Open Storage folder": "Open Storage folder",
@@ -55,7 +55,7 @@
"Preview": "Preview",
"Preview Font Size": "Preview Font Size",
"Preview Font Family": "Preview Font Family",
"Code block Theme": "Code block Theme",
"Code Block Theme": "Code Block Theme",
"Allow preview to scroll past the last line": "Allow preview to scroll past the last line",
"Show line numbers for preview code blocks": "Show line numbers for preview code blocks",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -82,14 +82,14 @@
"You can choose to enable or disable this option.": "You can choose to enable or disable this option.",
"Enable analytics to help improve Boostnote": "Enable analytics to help improve Boostnote",
"Crowdfunding": "Crowdfunding",
"Dear everyone,": "Dear everyone,",
"Dear Boostnote users,": "Dear Boostnote users,",
"Thank you for using Boostnote!": "Thank you for using Boostnote!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote is used in about 200 different countries and regions by an awesome community of developers.",
"To continue supporting this growth, and to satisfy community expectations,": "To continue supporting this growth, and to satisfy community expectations,",
"To support our growing userbase, and satisfy community expectations,": "To support our growing userbase, and satisfy community expectations,",
"we would like to invest more time and resources in this project.": "we would like to invest more time and resources in this project.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "If you like this project and see its potential, you can help by supporting us on OpenCollective!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!",
"Thanks,": "Thanks,",
"Boostnote maintainers": "Boostnote maintainers",
"The Boostnote Team": "The Boostnote Team",
"Support via OpenCollective": "Support via OpenCollective",
"Language": "Language",
"English": "English",
@@ -140,7 +140,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "You have to save!",
"Unsaved Changes!": "Unsaved Changes!",
"Russian": "Russian",
"Editor Rulers": "Editor Rulers",
"Enable": "Enable",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "Yazdır",
"Your preferences for Boostnote": "Boostnote tercihleriniz",
"Storages": "Saklama Alanları",
"Storage Locations": "Saklama Alanları",
"Add Storage Location": "Saklama Yeri Ekle",
"Add Folder": "Dosya Ekle",
"Open Storage folder": "Saklama Alanı Dosyasını Aç",
@@ -55,7 +55,7 @@
"Preview": "Önizleme",
"Preview Font Size": "Yazı Büyüklüğünü Önizle",
"Preview Font Family": "Yazı Tipini Önizle",
"Code block Theme": "Kod bloğu Teması",
"Code Block Theme": "Kod bloğu Teması",
"Allow preview to scroll past the last line": "Önizlemenin son satırı geçmesine izin ver",
"Show line numbers for preview code blocks": "Kod bloklarının önizlemesinde satır numaralarını göster",
"LaTeX Inline Open Delimiter": "LaTeX Inline Open Delimiter",
@@ -82,14 +82,14 @@
"You can choose to enable or disable this option.": "Bu seçeneği etkinleştirmeyi veya devre dışı bırakmayı seçebilirsiniz.",
"Enable analytics to help improve Boostnote": "Boostnote'un geliştirilmesine katkıda bulunmak için analizleri etkinleştirin",
"Crowdfunding": "Kitle Fonlaması",
"Dear everyone,": "Sevgili herkes,",
"Dear Boostnote users,": "Sevgili herkes,",
"Thank you for using Boostnote!": "Boostnote'u kullandığınız için teşekkürler!",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "Boostnote, 200 farklı ülke ve bölgede, harika bir geliştirici topluluğu tarafından kullanılmaktadır.",
"To continue supporting this growth, and to satisfy community expectations,": "Bu büyümeyi desteklemeye devam etmek ve topluluk beklentilerini karşılamak için,",
"To support our growing userbase, and satisfy community expectations,": "Bu büyümeyi desteklemeye devam etmek ve topluluk beklentilerini karşılamak için,",
"we would like to invest more time and resources in this project.": "bu projeye daha fazla zaman ve kaynak yatırmak istiyoruz.",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "Bu projeyi beğeniyor ve potansiyel görüyorsanız, OpenCollective üzerinden bizi destekleyerek katkıda bulunabilirsiniz!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "Bu projeyi beğeniyor ve potansiyel görüyorsanız, OpenCollective üzerinden bizi destekleyerek katkıda bulunabilirsiniz!",
"Thanks,": "Teşekkürler,",
"Boostnote maintainers": "Boostnote'un bakımını yapanlar",
"The Boostnote Team": "Boostnote'un bakımını yapanlar",
"Support via OpenCollective": "OpenCollective aracılığıyla destekle",
"Language": "Dil",
"English": "İngilizce",
@@ -140,7 +140,7 @@
"Polish": "Lehçe",
"Portuguese": "Portekizce",
"Spanish": "İspanyolca",
"You have to save!": "Kaydetmelisiniz!",
"Unsaved Changes!": "Kaydetmelisiniz!",
"UserName": "KullanıcıAdı",
"Password": "Şifre",
"Russian": "Rusça",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "打印",
"Your preferences for Boostnote": "个性设置",
"Storages": "本地存储",
"Storage Locations": "本地存储",
"Add Storage Location": "添加一个本地存储位置",
"Add Folder": "新建文件夹",
"Open Storage folder": "打开本地存储文件夹",
@@ -56,7 +56,7 @@
"Preview": "预览",
"Preview Font Size": "预览字号",
"Preview Font Family": "预览字体",
"Code block Theme": "代码块主题",
"Code Block Theme": "代码块主题",
"Allow preview to scroll past the last line": "允许预览时滚动到最后一行",
"Show line numbers for preview code blocks": "在预览时显示行号",
"LaTeX Inline Open Delimiter": "LaTeX 单行开头分隔符",
@@ -84,14 +84,14 @@
"You can choose to enable or disable this option.": "你可以选择开启或不开启这个功能",
"Enable analytics to help improve Boostnote": "允许对数据进行分析,帮助我们改进 Boostnote",
"Crowdfunding": "众筹",
"Dear everyone,": "亲爱的用户:",
"Dear Boostnote users,": "亲爱的用户:",
"Thank you for using Boostnote!": "谢谢你使用 Boostnote",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "大约有200个不同的国家和地区的优秀开发者们都在使用 Boostnote",
"To continue supporting this growth, and to satisfy community expectations,": "为了继续支持这种发展,和满足社区的期待,",
"To support our growing userbase, and satisfy community expectations,": "为了继续支持这种发展,和满足社区的期待,",
"we would like to invest more time and resources in this project.": "我们非常愿意投入更多的时间和资源到这个项目中。",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "如果你喜欢这款软件并且看好它的潜力, 请在 OpenCollective 上支持我们!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "如果你喜欢这款软件并且看好它的潜力, 请在 OpenCollective 上支持我们!",
"Thanks,": "十分感谢!",
"Boostnote maintainers": "Boostnote 的维护人员",
"The Boostnote Team": "Boostnote 的维护人员",
"Support via OpenCollective": "在 OpenCollective 上支持我们",
"Language": "语言",
"English": "English",
@@ -143,7 +143,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "你必须保存一下!",
"Unsaved Changes!": "你必须保存一下!",
"Russian": "Russian",
"Editor Rulers": "Editor Rulers",
"Enable": "开启",

View File

@@ -20,7 +20,7 @@
".html": ".html",
"Print": "列印",
"Your preferences for Boostnote": "Boostnote 偏好設定",
"Storages": "儲存空間",
"Storage Locations": "儲存空間",
"Add Storage Location": "新增儲存位置",
"Add Folder": "新增資料夾",
"Open Storage folder": "開啟儲存資料夾",
@@ -55,7 +55,7 @@
"Preview": "預覽頁面",
"Preview Font Size": "預覽頁面字型大小",
"Preview Font Family": "預覽頁面字體",
"Code block Theme": "程式碼區塊主題",
"Code Block Theme": "程式碼區塊主題",
"Allow preview to scroll past the last line": "允許預覽頁面捲軸捲動超過最後一行",
"Show line numbers for preview code blocks": "在預覽頁面的程式碼區塊中顯示行號",
"LaTeX Inline Open Delimiter": "LaTeX 單行開頭符號",
@@ -82,14 +82,14 @@
"You can choose to enable or disable this option.": "你可以選擇啟用或停用這項功能",
"Enable analytics to help improve Boostnote": "允許數據分析以協助我們改進 Boostnote",
"Crowdfunding": "群眾募資",
"Dear everyone,": "親愛的用戶:",
"Dear Boostnote users,": "親愛的用戶:",
"Thank you for using Boostnote!": "謝謝你使用 Boostnote",
"Boostnote is used in about 200 different countries and regions by an awesome community of developers.": "大約有 200 個不同的國家和地區的優秀開發者們都在使用 Boostnote",
"To continue supporting this growth, and to satisfy community expectations,": "為了繼續支持這種發展,和滿足社群的期待,",
"To support our growing userbase, and satisfy community expectations,": "為了繼續支持這種發展,和滿足社群的期待,",
"we would like to invest more time and resources in this project.": "我們非常願意投入更多的時間和資源到這個專案中。",
"If you like this project and see its potential, you can help by supporting us on OpenCollective!": "如果你喜歡這款軟體並且看好它的潛力, 請在 OpenCollective 上支持我們!",
"If you use Boostnote and see its potential, help us out by supporting the project on OpenCollective!": "如果你喜歡這款軟體並且看好它的潛力, 請在 OpenCollective 上支持我們!",
"Thanks,": "十分感謝!",
"Boostnote maintainers": "Boostnote 的維護人員",
"The Boostnote Team": "Boostnote 的維護人員",
"Support via OpenCollective": "在 OpenCollective 上支持我們",
"Language": "語言",
"English": "English",
@@ -140,7 +140,7 @@
"Polish": "Polish",
"Portuguese": "Portuguese",
"Spanish": "Spanish",
"You have to save!": "你必須儲存一下!",
"Unsaved Changes!": "你必須儲存一下!",
"Russian": "Russian",
"Editor Rulers": "編輯器中顯示垂直尺規",
"Enable": "啟用",

View File

@@ -1,7 +1,7 @@
{
"name": "boost",
"productName": "Boostnote",
"version": "0.11.9",
"version": "0.11.10",
"main": "index.js",
"description": "Boostnote",
"license": "GPL-3.0",
@@ -53,11 +53,12 @@
"aws-sdk": "^2.48.0",
"aws-sdk-mobile-analytics": "^0.9.2",
"chart.js": "^2.7.2",
"codemirror": "^5.39.0",
"codemirror": "^5.40.2",
"codemirror-mode-elixir": "^1.1.1",
"electron-config": "^1.0.0",
"electron-gh-releases": "^2.0.2",
"escape-string-regexp": "^1.0.5",
"file-uri-to-path": "^1.0.0",
"file-url": "^2.0.2",
"filenamify": "^2.0.0",
"flowchart.js": "^1.6.5",
@@ -115,8 +116,10 @@
"babel-preset-react-hmre": "^1.0.1",
"babel-register": "^6.11.6",
"browser-env": "^3.2.5",
"color": "^3.0.0",
"concurrently": "^3.4.0",
"copy-to-clipboard": "^3.0.6",
"css": "^2.2.4",
"css-loader": "^0.19.0",
"devtron": "^1.1.0",
"dom-storage": "^2.0.2",

View File

@@ -1,10 +1,10 @@
:mega: The Boostnote team launches [IssueHunt](https://issuehunt.io/) for sustainable open-source ecosystem.
:mega: The Boostnote team uses [IssueHunt](https://issuehunt.io/) for a sustainable open-source ecosystem.
![Boostnote app screenshot](./resources/repository/top.png)
<h4 align="center">Note-taking app for programmers. </h4>
<h5 align="center">Apps available for Mac, Windows, Linux, Android and iOS.</h5>
<h5 align="center">Built with Electron, React + Redux, Webpack and CSSModules.</h5>
<h5 align="center">Apps available for Mac, Windows, Linux, Android, and iOS.</h5>
<h5 align="center">Built with Electron, React + Redux, Webpack, and CSSModules.</h5>
[![Build Status](https://travis-ci.org/BoostIO/Boostnote.svg?branch=master)](https://travis-ci.org/BoostIO/Boostnote)
@@ -12,16 +12,17 @@
- [Rokt33r](https://github.com/rokt33r)
- [Sosuke](https://github.com/sosukesuzuki)
- [Kazz](https://github.com/kazup01)
- [ZeroX-DG](https://github.com/ZeroX-DG)
## Contributors
Thank you to all the people who already contributed to Boostnote!
Thank you to all the people who have contributed to Boostnote!
<a href="https://github.com/BoostIO/Boostnote/graphs/contributors"><img src="https://opencollective.com/boostnoteio/contributors.svg?width=890" /></a>
## Supporting Boostnote
Boostnote is an open source project. It's an independent project with its ongoing development made possible entirely thanks to the support by these awesome backers.
Boostnote is an open source project. It's an independent project with its ongoing development made possible thanks to the support by our amazing backers.
Any issues on Boostnote can be funded by anyone and that money will be distributed to contributors and maintainers. If you'd like to join them, please consider:
Issues on Boostnote can be funded by anyone and the money will be distributed to contributors and maintainers. If you use Boostnote please consider becoming a backer:
[![issuehunt-image](https://github.com/BoostIO/issuehunt-materials/blob/master/issuehunt-badge@1x.png?raw=true)](https://issuehunt.io/repos/53266139)

View File

@@ -39,7 +39,7 @@ Generated by [AVA](https://ava.li).
`<ul>␊
<li class="taskListItem"><input type="checkbox" id="checkbox-2" /> Unchecked</li>␊
<li class="taskListItem"><input type="checkbox" checked id="checkbox-3" /> Checked</li>␊
<li class="taskListItem checked"><input type="checkbox" checked id="checkbox-3" /> Checked</li>␊
</ul>␊
`

View File

@@ -1803,9 +1803,9 @@ codemirror@^5.18.2, codemirror@^5.20.2:
version "5.38.0"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.38.0.tgz#26a9551446e51dbdde36aabe60f72469724fd332"
codemirror@^5.39.0:
version "5.39.0"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.39.0.tgz#4654f7d2f7e525e04a62e72d9482348ccb37dce5"
codemirror@^5.40.2:
version "5.40.2"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.40.2.tgz#f4a41fee2d84e679543591b3680af259d903330b"
coffee-script@^1.10.0, coffee-script@^1.12.4:
version "1.12.7"
@@ -1832,7 +1832,13 @@ color-convert@^1.3.0, color-convert@^1.9.0:
dependencies:
color-name "^1.1.1"
color-name@^1.0.0, color-name@^1.1.1:
color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
dependencies:
color-name "1.1.3"
color-name@1.1.3, color-name@^1.0.0, color-name@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
@@ -1842,6 +1848,13 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
color-string@^1.5.2:
version "1.5.3"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
color@^0.11.0:
version "0.11.4"
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
@@ -1850,6 +1863,13 @@ color@^0.11.0:
color-convert "^1.3.0"
color-string "^0.3.0"
color@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a"
dependencies:
color-convert "^1.9.1"
color-string "^1.5.2"
colormin@^1.0.5:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
@@ -2149,6 +2169,15 @@ css-selector-tokenizer@^0.5.0, css-selector-tokenizer@^0.5.1:
cssesc "^0.1.0"
fastparse "^1.1.1"
css@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929"
dependencies:
inherits "^2.0.3"
source-map "^0.6.1"
source-map-resolve "^0.5.2"
urix "^0.1.0"
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
@@ -3520,6 +3549,10 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
file-uri-to-path@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
file-url@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/file-url/-/file-url-2.0.2.tgz#e951784d79095127d3713029ab063f40818ca2ae"
@@ -4587,6 +4620,10 @@ is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -8043,6 +8080,12 @@ signale@^1.2.1:
figures "^2.0.0"
pkg-conf "^2.1.0"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
dependencies:
is-arrayish "^0.3.1"
single-line-log@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
@@ -8134,7 +8177,7 @@ source-list-map@^0.1.4, source-list-map@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
source-map-resolve@^0.5.0:
source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
dependencies: