import React, { PropTypes } from 'react' import CSSModules from 'browser/lib/CSSModules' import styles from './NoteDetail.styl' import MarkdownPreview from 'browser/components/MarkdownPreview' import MarkdownEditor from 'browser/components/MarkdownEditor' import CodeEditor from 'browser/components/CodeEditor' import modes from 'browser/lib/modes' const electron = require('electron') const { clipboard } = electron const path = require('path') function notify (title, options) { if (process.platform === 'win32') { options.icon = path.join('file://', global.__dirname, '../../resources/app.png') } return new window.Notification(title, options) } class NoteDetail extends React.Component { constructor (props) { super(props) this.state = { snippetIndex: 0 } } componentWillReceiveProps (nextProps) { if (nextProps.note !== this.props.note) { this.setState({ snippetIndex: 0 }, () => { if (nextProps.note.type === 'SNIPPET_NOTE') { nextProps.note.snippets.forEach((snippet, index) => { this.refs['code-' + index].reload() }) } }) } } selectPriorSnippet () { let { note } = this.props if (note.type === 'SNIPPET_NOTE' && note.snippets.length > 1) { this.setState({ snippetIndex: (this.state.snippetIndex + note.snippets.length - 1) % note.snippets.length }) } } selectNextSnippet () { let { note } = this.props if (note.type === 'SNIPPET_NOTE' && note.snippets.length > 1) { this.setState({ snippetIndex: (this.state.snippetIndex + 1) % note.snippets.length }) } } saveToClipboard () { let { note } = this.props if (note.type === 'MARKDOWN_NOTE') { clipboard.writeText(note.content) } else { clipboard.writeText(note.snippets[this.state.snippetIndex].content) } notify('Saved to Clipboard!', { body: 'Paste it wherever you want!', silent: true }) } handleTabButtonClick (e, index) { this.setState({ snippetIndex: index }) } render () { let { note, config } = this.props if (note == null) { return (
) } let editorFontSize = parseInt(config.editor.fontSize, 10) if (!(editorFontSize > 0 && editorFontSize < 101)) editorFontSize = 14 let editorIndentSize = parseInt(config.editor.indentSize, 10) if (!(editorFontSize > 0 && editorFontSize < 132)) editorIndentSize = 4 if (note.type === 'SNIPPET_NOTE') { let tabList = note.snippets.map((snippet, index) => { let isActive = this.state.snippetIndex === index return
}) let viewList = note.snippets.map((snippet, index) => { let isActive = this.state.snippetIndex === index let mode = snippet.mode === 'text' ? null : modes.filter((mode) => mode.name === snippet.mode)[0] return
{snippet.mode === 'markdown' ? : }
}) return (