From fb38de60d35cd4bcda60b68dab09db22838f5a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Mon, 1 Aug 2016 16:41:55 -0300 Subject: [PATCH 01/29] draftjs out, slate in --- package.json | 7 +- src/components/Widgets/MarkdownControl.js | 234 ++++++++++++++++++++-- 2 files changed, 215 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index b6f2bec3..cd998587 100644 --- a/package.json +++ b/package.json @@ -69,14 +69,13 @@ "bricks.js": "^1.7.0", "commonmark": "^0.24.0", "commonmark-react-renderer": "^4.1.2", - "draft-js": "^0.7.0", - "draft-js-export-markdown": "^0.2.0", - "draft-js-import-markdown": "^0.1.6", "fuzzy": "^0.1.1", "js-base64": "^2.1.9", "json-loader": "^0.5.4", "localforage": "^1.4.2", "lodash": "^4.13.1", - "pluralize": "^3.0.0" + "pluralize": "^3.0.0", + "slate": "^0.10.1", + "slate-markdown-serializer": "^0.1.2" } } diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 20210b9f..59c911d4 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,44 +1,234 @@ import React, { PropTypes } from 'react'; -import { Editor, EditorState, RichUtils } from 'draft-js'; -import { stateToMarkdown } from 'draft-js-export-markdown'; -import { stateFromMarkdown } from 'draft-js-import-markdown'; +import { Editor } from 'slate'; +import Markdown from 'slate-markdown-serializer'; +const markdown = new Markdown(); -export default class MarkdownControl extends React.Component { + +/* + * Slate Render Configuration + */ + +// Define the default node type. +const DEFAULT_NODE = 'paragraph'; + +// Local node renderers. +const NODES = { + 'block-quote': (props) =>
{props.children}
, + 'bulleted-list': props => , + 'heading1': props =>

{props.children}

, + 'heading2': props =>

{props.children}

, + 'list-item': props =>
  • {props.children}
  • , + 'paragraph': props =>

    {props.children}

    , + 'link': (props) => { + const { data } = props.node; + const href = data.get('href'); + return {props.children}; + }, + 'image': (props) => { + const { node, state } = props; + const src = node.data.get('src'); + return ( + + ); + } +}; + +// Local mark renderers. +const MARKS = { + bold: { + fontWeight: 'bold' + }, + italic: { + fontStyle: 'italic' + }, + code: { + fontFamily: 'monospace', + backgroundColor: '#eee', + padding: '3px', + borderRadius: '4px' + } +}; + +class MarkdownControl extends React.Component { constructor(props) { super(props); this.state = { - editorState: EditorState.createWithContent(stateFromMarkdown(props.value || '')) + state: markdown.deserialize(props.value || '') }; + + this.hasMark = this.hasMark.bind(this); + this.hasBlock = this.hasBlock.bind(this); this.handleChange = this.handleChange.bind(this); - this.handleKeyCommand = this.handleKeyCommand.bind(this); + this.handleDocumentChange = this.handleDocumentChange.bind(this); + this.onClickMark = this.onClickMark.bind(this); + this.onClickBlock = this.onClickBlock.bind(this); + this.renderToolbar = this.renderToolbar.bind(this); + this.renderMarkButton = this.renderMarkButton.bind(this); + this.renderBlockButton = this.renderBlockButton.bind(this); + this.renderNode = this.renderNode.bind(this); + this.renderMark = this.renderMark.bind(this); } - handleChange(editorState) { - const content = editorState.getCurrentContent(); - this.setState({ editorState }); - this.props.onChange(stateToMarkdown(content)); + /* + * Used to set toolbar buttons to active state + */ + hasMark(type) { + const { state } = this.state; + return state.marks.some(mark => mark.type == type); + } + hasBlock(type) { + const { state } = this.state; + return state.blocks.some(node => node.type == type); } - handleKeyCommand(command) { - const newState = RichUtils.handleKeyCommand(this.state.editorState, command); - if (newState) { - this.handleChange(newState); - return true; + /* + * Slate keeps track of selections, scroll position etc. + * So, onChange gets dispatched on every interaction (click, arrows, everything...) + * It also have an onDocumentChange, that get's dispached only when the actual + * content changes + */ + handleChange(state) { + this.setState({ state }); + } + + handleDocumentChange(document, state) { + this.props.onChange(markdown.serialize(state)); + } + + + /* + * Toggle marks / blocks when button is clicked + */ + onClickMark(e, type) { + e.preventDefault(); + let { state } = this.state; + + state = state + .transform() + .toggleMark(type) + .apply(); + + this.setState({ state }); + } + + onClickBlock(e, type) { + e.preventDefault(); + let { state } = this.state; + let transform = state.transform(); + const { document } = state; + + // Handle everything but list buttons. + if (type != 'bulleted-list' && type != 'numbered-list') { + const isActive = this.hasBlock(type); + const isList = this.hasBlock('list-item'); + + if (isList) { + transform = transform + .setBlock(isActive ? DEFAULT_NODE : type) + .unwrapBlock('bulleted-list') + .unwrapBlock('numbered-list'); + } + + else { + transform = transform + .setBlock(isActive ? DEFAULT_NODE : type); + } } - return false; + + // Handle the extra wrapping required for list buttons. + else { + const isList = this.hasBlock('list-item'); + const isType = state.blocks.some((block) => { + return !!document.getClosest(block, parent => parent.type == type); + }); + + if (isList && isType) { + transform = transform + .setBlock(DEFAULT_NODE) + .unwrapBlock('bulleted-list'); + } else if (isList) { + transform = transform + .unwrapBlock(type == 'bulleted-list') + .wrapBlock(type); + } else { + transform = transform + .setBlock('list-item') + .wrapBlock(type); + } + } + + state = transform.apply(); + this.setState({ state }); + } + + renderToolbar() { + return ( +
    + {this.renderMarkButton('bold', 'b')} + {this.renderMarkButton('italic', 'i')} + {this.renderMarkButton('code', 'code')} + {this.renderBlockButton('heading1', 'h1')} + {this.renderBlockButton('heading2', 'h2')} + {this.renderBlockButton('block-quote', 'blockquote')} + {this.renderBlockButton('bulleted-list', 'ul')} + +
    + ); + } + + renderMarkButton(type, icon) { + const isActive = this.hasMark(type); + const onMouseDown = e => this.onClickMark(e, type); + + return ( + + ); + } + + renderBlockButton(type, icon) { + const isActive = this.hasBlock(type); + const onMouseDown = e => this.onClickBlock(e, type); + + return ( + + ); + } + + /* + * Return renderers for Slate + */ + renderNode(node) { + return NODES[node.type]; + } + renderMark(mark) { + return MARKS[mark.type]; } render() { - const { editorState } = this.state; return ( - ); +
    + {this.renderToolbar()} +
    + +
    +
    + ); } } +export default MarkdownControl; + MarkdownControl.propTypes = { onChange: PropTypes.func.isRequired, value: PropTypes.node, From b1a56f60cda6817e699ad4b2ab4dd780d541a6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Tue, 2 Aug 2016 16:17:37 -0300 Subject: [PATCH 02/29] Custom block components + soft break handling --- src/components/Widgets/MarkdownControl.js | 49 +++++++++---- .../Widgets/MarkdownControlElements/Block.css | 71 +++++++++++++++++++ .../Widgets/MarkdownControlElements/Block.js | 32 +++++++++ 3 files changed, 140 insertions(+), 12 deletions(-) create mode 100644 src/components/Widgets/MarkdownControlElements/Block.css create mode 100644 src/components/Widgets/MarkdownControlElements/Block.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 59c911d4..aac1d894 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,9 +1,10 @@ import React, { PropTypes } from 'react'; -import { Editor } from 'slate'; +import { Editor, Plain } from 'slate'; import Markdown from 'slate-markdown-serializer'; +import Block from './MarkdownControlElements/Block'; +import { Icon } from '../UI'; + const markdown = new Markdown(); - - /* * Slate Render Configuration */ @@ -13,16 +14,20 @@ const DEFAULT_NODE = 'paragraph'; // Local node renderers. const NODES = { - 'block-quote': (props) =>
    {props.children}
    , - 'bulleted-list': props =>
      {props.children}
    , - 'heading1': props =>

    {props.children}

    , - 'heading2': props =>

    {props.children}

    , + 'block-quote': (props) => {props.children}, + 'bulleted-list': props =>
      {props.children}
    , + 'heading1': props => {props.children}, + 'heading2': props => {props.children}, + 'heading3': props => {props.children}, + 'heading4': props => {props.children}, + 'heading5': props => {props.children}, + 'heading6': props => {props.children}, 'list-item': props =>
  • {props.children}
  • , - 'paragraph': props =>

    {props.children}

    , + 'paragraph': props => {props.children}, 'link': (props) => { const { data } = props.node; const href = data.get('href'); - return {props.children}; + return {props.children}; }, 'image': (props) => { const { node, state } = props; @@ -52,8 +57,9 @@ const MARKS = { class MarkdownControl extends React.Component { constructor(props) { super(props); + this.blockEdit = false; this.state = { - state: markdown.deserialize(props.value || '') + state: props.value ? markdown.deserialize(props.value) : Plain.deserialize('') }; this.hasMark = this.hasMark.bind(this); @@ -62,6 +68,7 @@ class MarkdownControl extends React.Component { this.handleDocumentChange = this.handleDocumentChange.bind(this); this.onClickMark = this.onClickMark.bind(this); this.onClickBlock = this.onClickBlock.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); this.renderToolbar = this.renderToolbar.bind(this); this.renderMarkButton = this.renderMarkButton.bind(this); this.renderBlockButton = this.renderBlockButton.bind(this); @@ -88,7 +95,11 @@ class MarkdownControl extends React.Component { * content changes */ handleChange(state) { - this.setState({ state }); + if (this.blockEdit) { + this.blockEdit = false; + } else { + this.setState({ state }); + } } handleDocumentChange(document, state) { @@ -100,7 +111,6 @@ class MarkdownControl extends React.Component { * Toggle marks / blocks when button is clicked */ onClickMark(e, type) { - e.preventDefault(); let { state } = this.state; state = state @@ -111,6 +121,19 @@ class MarkdownControl extends React.Component { this.setState({ state }); } + handleKeyDown(evt) { + if (evt.shiftKey && evt.key === 'Enter') { + this.blockEdit = true; + let { state } = this.state; + state = state + .transform() + .insertText(' \n') + .apply(); + + this.setState({ state }); + } + } + onClickBlock(e, type) { e.preventDefault(); let { state } = this.state; @@ -167,6 +190,7 @@ class MarkdownControl extends React.Component { {this.renderMarkButton('bold', 'b')} {this.renderMarkButton('italic', 'i')} {this.renderMarkButton('code', 'code')} + {this.renderMarkButton('linebreak', 'break')} {this.renderBlockButton('heading1', 'h1')} {this.renderBlockButton('heading2', 'h2')} {this.renderBlockButton('block-quote', 'blockquote')} @@ -219,6 +243,7 @@ class MarkdownControl extends React.Component { renderNode={this.renderNode} renderMark={this.renderMark} onChange={this.handleChange} + onKeyDown={this.handleKeyDown} onDocumentChange={this.handleDocumentChange} /> diff --git a/src/components/Widgets/MarkdownControlElements/Block.css b/src/components/Widgets/MarkdownControlElements/Block.css new file mode 100644 index 00000000..df0af926 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/Block.css @@ -0,0 +1,71 @@ +.root { + border: dotted 1px #ddd; + position: relative; + margin: 9px 0 15px 0; +} + + +.type:after { + content: attr(data-type); + font-size: 10px; + color: #aaa; + position: absolute; + top : -7px;; + margin-left: 1em; + padding: 0 3px; + display: inline; + background-color: #fafafa; + pointer-events: none; +} + +.body { + padding: 8px; +} + +.body img{ + max-width: 100%; + height: auto; +} + +.Paragraph { + +} + +.Heading1, .Heading2, .Heading3, .Heading4, .Heading5, .Heading6 { + margin: 0; + font-weight: bold +} + +.Heading1 { + font-size: 1.2em; +} + +.Heading2 { + font-size: 1.15em; +} + +.Heading3 { + font-size: 1.1em; +} + +.Heading4 { + font-size: 1.07em; +} + +.Heading5 { + font-size: 1.05em; +} + +.Heading6 { + font-size: 1.03em; +} + +.blockquote { + padding-left: 5px; + border-left: solid 3px #ccc; +} + +.body ul { + padding-left: 20px; + margin: 0; +} diff --git a/src/components/Widgets/MarkdownControlElements/Block.js b/src/components/Widgets/MarkdownControlElements/Block.js new file mode 100644 index 00000000..462165c4 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/Block.js @@ -0,0 +1,32 @@ +import React, { PropTypes } from 'react'; +import styles from './Block.css'; + +const AVAILABLE_TYPES = [ + 'Paragraph', + 'Heading1', + 'Heading2', + 'Heading3', + 'Heading4', + 'Heading5', + 'Heading6', + 'ul', + 'blockquote' +]; + +export function Block({ type, children }) { + return ( +
    +
    +
    + {children} +
    +
    + ); +} + +Block.propTypes = { + children: PropTypes.node.isRequired, + type: PropTypes.oneOf(AVAILABLE_TYPES).isRequired +}; + +export default Block; From 08d5110d3a41a8dece06cc9ff35240dd097a8c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Tue, 2 Aug 2016 23:25:45 -0300 Subject: [PATCH 03/29] Hover menu --- package.json | 2 + src/components/Widgets/MarkdownControl.css | 39 ++++++++ src/components/Widgets/MarkdownControl.js | 106 +++++++++++++++------ 3 files changed, 116 insertions(+), 31 deletions(-) create mode 100644 src/components/Widgets/MarkdownControl.css diff --git a/package.json b/package.json index cd998587..c3297e4d 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,8 @@ "localforage": "^1.4.2", "lodash": "^4.13.1", "pluralize": "^3.0.0", + "react-portal": "^2.2.1", + "selection-position": "^1.0.0", "slate": "^0.10.1", "slate-markdown-serializer": "^0.1.2" } diff --git a/src/components/Widgets/MarkdownControl.css b/src/components/Widgets/MarkdownControl.css new file mode 100644 index 00000000..c87888af --- /dev/null +++ b/src/components/Widgets/MarkdownControl.css @@ -0,0 +1,39 @@ + +.button { + color: #ccc; + cursor: pointer; +} + +.button[data-active="true"] { + color: black; +} + + +.menu > * { + display: inline-block; +} + +.menu > * + * { + margin-left: 10px; +} + +.hoverMenu { + padding: 8px 7px 6px; + position: absolute; + z-index: 1; + top: -10000px; + left: -10000px; + margin-top: -6px; + opacity: 0; + background-color: #222; + border-radius: 4px; + transition: opacity .75s; +} + +.hoverMenu .button { + color: #aaa; +} + +.hoverMenu .button[data-active="true"] { + color: #fff; +} diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index aac1d894..c971a4eb 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -2,7 +2,10 @@ import React, { PropTypes } from 'react'; import { Editor, Plain } from 'slate'; import Markdown from 'slate-markdown-serializer'; import Block from './MarkdownControlElements/Block'; +import Portal from 'react-portal'; +import position from 'selection-position'; import { Icon } from '../UI'; +import styles from './MarkdownControl.css'; const markdown = new Markdown(); /* @@ -69,13 +72,26 @@ class MarkdownControl extends React.Component { this.onClickMark = this.onClickMark.bind(this); this.onClickBlock = this.onClickBlock.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); - this.renderToolbar = this.renderToolbar.bind(this); + this.renderMenu = this.renderMenu.bind(this); this.renderMarkButton = this.renderMarkButton.bind(this); this.renderBlockButton = this.renderBlockButton.bind(this); this.renderNode = this.renderNode.bind(this); this.renderMark = this.renderMark.bind(this); + this.onOpen = this.onOpen.bind(this); + this.updateMenu = this.updateMenu.bind(this); } + /* + * On update, update the menu. + */ + componentDidMount() { + this.updateMenu(); + } + componentDidUpdate() { + this.updateMenu(); + } + + /* * Used to set toolbar buttons to active state */ @@ -184,20 +200,30 @@ class MarkdownControl extends React.Component { this.setState({ state }); } - renderToolbar() { - return ( -
    - {this.renderMarkButton('bold', 'b')} - {this.renderMarkButton('italic', 'i')} - {this.renderMarkButton('code', 'code')} - {this.renderMarkButton('linebreak', 'break')} - {this.renderBlockButton('heading1', 'h1')} - {this.renderBlockButton('heading2', 'h2')} - {this.renderBlockButton('block-quote', 'blockquote')} - {this.renderBlockButton('bulleted-list', 'ul')} + /* + * When the portal opens, cache the menu element. + */ + onOpen(portal) { + this.setState({ menu: portal.firstChild }); + } -
    - ); + renderMenu() { + const { state } = this.state + const isOpen = state.isExpanded && state.isFocused + return ( + +
    + {this.renderMarkButton('bold', 'b')} + {this.renderMarkButton('italic', 'i')} + {this.renderMarkButton('underlined', 'u')} + {this.renderMarkButton('code', 'code')} + {this.renderBlockButton('heading1', 'h1')} + {this.renderBlockButton('heading2', 'h2')} + {this.renderBlockButton('block-quote', 'blockquote')} + {this.renderBlockButton('bulleted-list', 'ul')} +
    +
    + ) } renderMarkButton(type, icon) { @@ -205,9 +231,9 @@ class MarkdownControl extends React.Component { const onMouseDown = e => this.onClickMark(e, type); return ( - + ); } @@ -216,9 +242,9 @@ class MarkdownControl extends React.Component { const onMouseDown = e => this.onClickBlock(e, type); return ( - + + {icon} + ); } @@ -232,21 +258,39 @@ class MarkdownControl extends React.Component { return MARKS[mark.type]; } + /* + * Update the menu's absolute position. + */ + + updateMenu() { + const { menu, state } = this.state; + if (!menu) return; + + if (state.isBlurred || state.isCollapsed) { + menu.removeAttribute('style'); + return; + } + + const rect = position(); + menu.style.opacity = 1; + menu.style.top = `${rect.top + window.scrollY - menu.offsetHeight}px`; + menu.style.left = `${rect.left + window.scrollX - menu.offsetWidth / 2 + rect.width / 2}px`; + } + + render() { return (
    - {this.renderToolbar()} -
    - -
    + {this.renderMenu()} +
    ); } From a16a8ff20d5901eaacdee6c46a3801a94b17c7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 3 Aug 2016 10:30:42 -0300 Subject: [PATCH 04/29] Small refactor --- src/components/Widgets/MarkdownControl.js | 86 ++++--------------- .../MarkdownControlElements/localRenderers.js | 50 +++++++++++ 2 files changed, 68 insertions(+), 68 deletions(-) create mode 100644 src/components/Widgets/MarkdownControlElements/localRenderers.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index c971a4eb..fe16e77a 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,62 +1,16 @@ import React, { PropTypes } from 'react'; import { Editor, Plain } from 'slate'; -import Markdown from 'slate-markdown-serializer'; -import Block from './MarkdownControlElements/Block'; import Portal from 'react-portal'; import position from 'selection-position'; -import { Icon } from '../UI'; +import Markdown from 'slate-markdown-serializer'; +import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; import styles from './MarkdownControl.css'; const markdown = new Markdown(); -/* + +/** * Slate Render Configuration */ - -// Define the default node type. -const DEFAULT_NODE = 'paragraph'; - -// Local node renderers. -const NODES = { - 'block-quote': (props) => {props.children}, - 'bulleted-list': props =>
      {props.children}
    , - 'heading1': props => {props.children}, - 'heading2': props => {props.children}, - 'heading3': props => {props.children}, - 'heading4': props => {props.children}, - 'heading5': props => {props.children}, - 'heading6': props => {props.children}, - 'list-item': props =>
  • {props.children}
  • , - 'paragraph': props => {props.children}, - 'link': (props) => { - const { data } = props.node; - const href = data.get('href'); - return {props.children}; - }, - 'image': (props) => { - const { node, state } = props; - const src = node.data.get('src'); - return ( - - ); - } -}; - -// Local mark renderers. -const MARKS = { - bold: { - fontWeight: 'bold' - }, - italic: { - fontStyle: 'italic' - }, - code: { - fontFamily: 'monospace', - backgroundColor: '#eee', - padding: '3px', - borderRadius: '4px' - } -}; - class MarkdownControl extends React.Component { constructor(props) { super(props); @@ -77,22 +31,22 @@ class MarkdownControl extends React.Component { this.renderBlockButton = this.renderBlockButton.bind(this); this.renderNode = this.renderNode.bind(this); this.renderMark = this.renderMark.bind(this); - this.onOpen = this.onOpen.bind(this); + this.handleOpen = this.handleOpen.bind(this); this.updateMenu = this.updateMenu.bind(this); } - /* + /** * On update, update the menu. */ componentDidMount() { this.updateMenu(); } + componentDidUpdate() { this.updateMenu(); } - - /* + /** * Used to set toolbar buttons to active state */ hasMark(type) { @@ -104,7 +58,7 @@ class MarkdownControl extends React.Component { return state.blocks.some(node => node.type == type); } - /* + /** * Slate keeps track of selections, scroll position etc. * So, onChange gets dispatched on every interaction (click, arrows, everything...) * It also have an onDocumentChange, that get's dispached only when the actual @@ -122,8 +76,7 @@ class MarkdownControl extends React.Component { this.props.onChange(markdown.serialize(state)); } - - /* + /** * Toggle marks / blocks when button is clicked */ onClickMark(e, type) { @@ -200,22 +153,21 @@ class MarkdownControl extends React.Component { this.setState({ state }); } - /* + /** * When the portal opens, cache the menu element. */ - onOpen(portal) { + handleOpen(portal) { this.setState({ menu: portal.firstChild }); } renderMenu() { - const { state } = this.state - const isOpen = state.isExpanded && state.isFocused + const { state } = this.state; + const isOpen = state.isExpanded && state.isFocused; return ( - +
    {this.renderMarkButton('bold', 'b')} {this.renderMarkButton('italic', 'i')} - {this.renderMarkButton('underlined', 'u')} {this.renderMarkButton('code', 'code')} {this.renderBlockButton('heading1', 'h1')} {this.renderBlockButton('heading2', 'h2')} @@ -223,7 +175,7 @@ class MarkdownControl extends React.Component { {this.renderBlockButton('bulleted-list', 'ul')}
    - ) + ); } renderMarkButton(type, icon) { @@ -248,7 +200,7 @@ class MarkdownControl extends React.Component { ); } - /* + /** * Return renderers for Slate */ renderNode(node) { @@ -258,10 +210,9 @@ class MarkdownControl extends React.Component { return MARKS[mark.type]; } - /* + /** * Update the menu's absolute position. */ - updateMenu() { const { menu, state } = this.state; if (!menu) return; @@ -277,7 +228,6 @@ class MarkdownControl extends React.Component { menu.style.left = `${rect.left + window.scrollX - menu.offsetWidth / 2 + rect.width / 2}px`; } - render() { return (
    diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js new file mode 100644 index 00000000..7e955067 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -0,0 +1,50 @@ +import React from 'react'; +import Block from './Block'; +import { Icon } from '../../UI'; + +/* eslint react/prop-types: 0, react/no-multi-comp: 0 */ + +// Define the default node type. +export const DEFAULT_NODE = 'paragraph'; + +// Local node renderers. +export const NODES = { + 'block-quote': (props) => {props.children}, + 'bulleted-list': props =>
      {props.children}
    , + 'heading1': props => {props.children}, + 'heading2': props => {props.children}, + 'heading3': props => {props.children}, + 'heading4': props => {props.children}, + 'heading5': props => {props.children}, + 'heading6': props => {props.children}, + 'list-item': props =>
  • {props.children}
  • , + 'paragraph': props => {props.children}, + 'link': (props) => { + const { data } = props.node; + const href = data.get('href'); + return {props.children}; + }, + 'image': (props) => { + const { node } = props; + const src = node.data.get('src'); + return ( + + ); + } +}; + +// Local mark renderers. +export const MARKS = { + bold: { + fontWeight: 'bold' + }, + italic: { + fontStyle: 'italic' + }, + code: { + fontFamily: 'monospace', + backgroundColor: '#eee', + padding: '3px', + borderRadius: '4px' + } +}; From 246861a3104a772a7f1fede7af066de3326121a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 3 Aug 2016 11:40:58 -0300 Subject: [PATCH 05/29] Added text editor icons from font awesome --- src/components/UI/icon/Icon.css | 627 ++++++++++++---------- src/components/UI/icon/Icon.js | 9 +- src/components/UI/icon/entypo.eot | Bin 76038 -> 0 bytes src/components/UI/icon/entypo.svg | 834 ----------------------------- src/components/UI/icon/entypo.ttf | Bin 75800 -> 0 bytes src/components/UI/icon/entypo.woff | Bin 45152 -> 0 bytes src/components/UI/icon/icons.eot | Bin 0 -> 80704 bytes src/components/UI/icon/icons.svg | 634 ++++++++++++++++++++++ src/components/UI/icon/icons.ttf | Bin 0 -> 80548 bytes src/components/UI/icon/icons.woff | Bin 0 -> 48676 bytes src/components/UI/icon/icons.woff2 | Bin 0 -> 39912 bytes src/components/stories/Icon.js | 32 +- 12 files changed, 1005 insertions(+), 1131 deletions(-) delete mode 100644 src/components/UI/icon/entypo.eot delete mode 100644 src/components/UI/icon/entypo.svg delete mode 100644 src/components/UI/icon/entypo.ttf delete mode 100644 src/components/UI/icon/entypo.woff create mode 100755 src/components/UI/icon/icons.eot create mode 100755 src/components/UI/icon/icons.svg create mode 100755 src/components/UI/icon/icons.ttf create mode 100755 src/components/UI/icon/icons.woff create mode 100755 src/components/UI/icon/icons.woff2 diff --git a/src/components/UI/icon/Icon.css b/src/components/UI/icon/Icon.css index 5fcd9fe9..43465e3f 100644 --- a/src/components/UI/icon/Icon.css +++ b/src/components/UI/icon/Icon.css @@ -1,305 +1,346 @@ @charset "UTF-8"; +/* The icons font contains the complete entypo set + font awesome editor icons */ + @font-face { - font-family: 'entypo'; - src: url('./entypo.eot'); - src: url('./entypo.eot?#iefix') format('embedded-opentype'), - url('./entypo.woff') format('woff'), - url('./entypo.ttf') format('truetype'), - url('./entypo.svg#entypo') format('svg'); - font-weight: normal; font-style: normal; + font-family: 'icons'; + src: url('./icons.eot'); + src: url('./icons.eot#iefix') format('embedded-opentype'), + url('./icons.woff2') format('woff2'), + url('./icons.woff') format('woff'), + url('./icons.ttf') format('truetype'), + url('./icons.svg#icons') format('svg'); + font-weight: normal; + font-style: normal; } .root { - font-family: entypo; + font-family: 'icons'; font-style: normal; + font-weight: normal; + speak: none; display: inline-block; - width: 1.1em; + width: 1em; margin-right: .1em; text-align: center; + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.note:before { content: "\266a"; } /* '\266a' */ -.note-beamed:before { content: "\266b"; } /* '\266b' */ -.music:before { content: "🎵"; } /* '\1f3b5' */ -.search:before { content: "🔍"; } /* '\1f50d' */ -.flashlight:before { content: "🔦"; } /* '\1f526' */ -.mail:before { content: "\2709"; } /* '\2709' */ -.heart:before { content: "\2665"; } /* '\2665' */ -.heart-empty:before { content: "\2661"; } /* '\2661' */ -.star:before { content: "\2605"; } /* '\2605' */ -.star-empty:before { content: "\2606"; } /* '\2606' */ -.user:before { content: "👤"; } /* '\1f464' */ -.users:before { content: "👥"; } /* '\1f465' */ -.user-add:before { content: "\e700"; } /* '\e700' */ -.video:before { content: "🎬"; } /* '\1f3ac' */ -.picture:before { content: "🌄"; } /* '\1f304' */ -.camera:before { content: "📷"; } /* '\1f4f7' */ -.layout:before { content: "\268f"; } /* '\268f' */ -.menu:before { content: "\2630"; } /* '\2630' */ -.check:before { content: "\2713"; } /* '\2713' */ -.cancel:before { content: "\2715"; } /* '\2715' */ -.cancel-circled:before { content: "\2716"; } /* '\2716' */ -.cancel-squared:before { content: "\274e"; } /* '\274e' */ -.plus:before { content: "\2b"; } /* '\2b' */ -.plus-circled:before { content: "\2795"; } /* '\2795' */ -.plus-squared:before { content: "\229e"; } /* '\229e' */ -.minus:before { content: "\2d"; } /* '\2d' */ -.minus-circled:before { content: "\2796"; } /* '\2796' */ -.minus-squared:before { content: "\229f"; } /* '\229f' */ -.help:before { content: "\2753"; } /* '\2753' */ -.help-circled:before { content: "\e704"; } /* '\e704' */ -.info:before { content: "\2139"; } /* '\2139' */ -.info-circled:before { content: "\e705"; } /* '\e705' */ -.back:before { content: "🔙"; } /* '\1f519' */ -.home:before { content: "\2302"; } /* '\2302' */ -.link:before { content: "🔗"; } /* '\1f517' */ -.attach:before { content: "📎"; } /* '\1f4ce' */ -.lock:before { content: "🔒"; } /* '\1f512' */ -.lock-open:before { content: "🔓"; } /* '\1f513' */ -.eye:before { content: "\e70a"; } /* '\e70a' */ -.tag:before { content: "\e70c"; } /* '\e70c' */ -.bookmark:before { content: "🔖"; } /* '\1f516' */ -.bookmarks:before { content: "📑"; } /* '\1f4d1' */ -.flag:before { content: "\2691"; } /* '\2691' */ -.thumbs-up:before { content: "👍"; } /* '\1f44d' */ -.thumbs-down:before { content: "👎"; } /* '\1f44e' */ -.download:before { content: "📥"; } /* '\1f4e5' */ -.upload:before { content: "📤"; } /* '\1f4e4' */ -.upload-cloud:before { content: "\e711"; } /* '\e711' */ -.reply:before { content: "\e712"; } /* '\e712' */ -.reply-all:before { content: "\e713"; } /* '\e713' */ -.forward:before { content: "\27a6"; } /* '\27a6' */ -.quote:before { content: "\275e"; } /* '\275e' */ -.code:before { content: "\e714"; } /* '\e714' */ -.export:before { content: "\e715"; } /* '\e715' */ -.pencil:before { content: "\270e"; } /* '\270e' */ -.feather:before { content: "\2712"; } /* '\2712' */ -.print:before { content: "\e716"; } /* '\e716' */ -.retweet:before { content: "\e717"; } /* '\e717' */ -.keyboard:before { content: "\2328"; } /* '\2328' */ -.comment:before { content: "\e718"; } /* '\e718' */ -.chat:before { content: "\e720"; } /* '\e720' */ -.bell:before { content: "🔔"; } /* '\1f514' */ -.attention:before { content: "\26a0"; } /* '\26a0' */ -.alert:before { content: "💥"; } /* '\1f4a5' */ -.vcard:before { content: "\e722"; } /* '\e722' */ -.address:before { content: "\e723"; } /* '\e723' */ -.location:before { content: "\e724"; } /* '\e724' */ -.map:before { content: "\e727"; } /* '\e727' */ -.direction:before { content: "\27a2"; } /* '\27a2' */ -.compass:before { content: "\e728"; } /* '\e728' */ -.cup:before { content: "\2615"; } /* '\2615' */ -.trash:before { content: "\e729"; } /* '\e729' */ -.doc:before { content: "\e730"; } /* '\e730' */ -.docs:before { content: "\e736"; } /* '\e736' */ -.doc-landscape:before { content: "\e737"; } /* '\e737' */ -.doc-text:before { content: "📄"; } /* '\1f4c4' */ -.doc-text-inv:before { content: "\e731"; } /* '\e731' */ -.newspaper:before { content: "📰"; } /* '\1f4f0' */ -.book-open:before { content: "📖"; } /* '\1f4d6' */ -.book:before { content: "📕"; } /* '\1f4d5' */ -.folder:before { content: "📁"; } /* '\1f4c1' */ -.archive:before { content: "\e738"; } /* '\e738' */ -.box:before { content: "📦"; } /* '\1f4e6' */ -.rss:before { content: "\e73a"; } /* '\e73a' */ -.phone:before { content: "📞"; } /* '\1f4de' */ -.cog:before { content: "\2699"; } /* '\2699' */ -.tools:before { content: "\2692"; } /* '\2692' */ -.share:before { content: "\e73c"; } /* '\e73c' */ -.shareable:before { content: "\e73e"; } /* '\e73e' */ -.basket:before { content: "\e73d"; } /* '\e73d' */ -.bag:before { content: "👜"; } /* '\1f45c' */ -.calendar:before { content: "📅"; } /* '\1f4c5' */ -.login:before { content: "\e740"; } /* '\e740' */ -.logout:before { content: "\e741"; } /* '\e741' */ -.mic:before { content: "🎤"; } /* '\1f3a4' */ -.mute:before { content: "🔇"; } /* '\1f507' */ -.sound:before { content: "🔊"; } /* '\1f50a' */ -.volume:before { content: "\e742"; } /* '\e742' */ -.clock:before { content: "🕔"; } /* '\1f554' */ -.hourglass:before { content: "\23f3"; } /* '\23f3' */ -.lamp:before { content: "💡"; } /* '\1f4a1' */ -.light-down:before { content: "🔅"; } /* '\1f505' */ -.light-up:before { content: "🔆"; } /* '\1f506' */ -.adjust:before { content: "\25d1"; } /* '\25d1' */ -.block:before { content: "🚫"; } /* '\1f6ab' */ -.resize-full:before { content: "\e744"; } /* '\e744' */ -.resize-small:before { content: "\e746"; } /* '\e746' */ -.popup:before { content: "\e74c"; } /* '\e74c' */ -.publish:before { content: "\e74d"; } /* '\e74d' */ -.window:before { content: "\e74e"; } /* '\e74e' */ -.arrow-combo:before { content: "\e74f"; } /* '\e74f' */ -.down-circled:before { content: "\e758"; } /* '\e758' */ -.left-circled:before { content: "\e759"; } /* '\e759' */ -.right-circled:before { content: "\e75a"; } /* '\e75a' */ -.up-circled:before { content: "\e75b"; } /* '\e75b' */ -.down-open:before { content: "\e75c"; } /* '\e75c' */ -.left-open:before { content: "\e75d"; } /* '\e75d' */ -.right-open:before { content: "\e75e"; } /* '\e75e' */ -.up-open:before { content: "\e75f"; } /* '\e75f' */ -.down-open-mini:before { content: "\e760"; } /* '\e760' */ -.left-open-mini:before { content: "\e761"; } /* '\e761' */ -.right-open-mini:before { content: "\e762"; } /* '\e762' */ -.up-open-mini:before { content: "\e763"; } /* '\e763' */ -.down-open-big:before { content: "\e764"; } /* '\e764' */ -.left-open-big:before { content: "\e765"; } /* '\e765' */ -.right-open-big:before { content: "\e766"; } /* '\e766' */ -.up-open-big:before { content: "\e767"; } /* '\e767' */ -.down:before { content: "\2b07"; } /* '\2b07' */ -.left:before { content: "\2b05"; } /* '\2b05' */ -.right:before { content: "\27a1"; } /* '\27a1' */ -.up:before { content: "\2b06"; } /* '\2b06' */ -.down-dir:before { content: "\25be"; } /* '\25be' */ -.left-dir:before { content: "\25c2"; } /* '\25c2' */ -.right-dir:before { content: "\25b8"; } /* '\25b8' */ -.up-dir:before { content: "\25b4"; } /* '\25b4' */ -.down-bold:before { content: "\e4b0"; } /* '\e4b0' */ -.left-bold:before { content: "\e4ad"; } /* '\e4ad' */ -.right-bold:before { content: "\e4ae"; } /* '\e4ae' */ -.up-bold:before { content: "\e4af"; } /* '\e4af' */ -.down-thin:before { content: "\2193"; } /* '\2193' */ -.left-thin:before { content: "\2190"; } /* '\2190' */ -.right-thin:before { content: "\2192"; } /* '\2192' */ -.up-thin:before { content: "\2191"; } /* '\2191' */ -.ccw:before { content: "\27f2"; } /* '\27f2' */ -.cw:before { content: "\27f3"; } /* '\27f3' */ -.arrows-ccw:before { content: "🔄"; } /* '\1f504' */ -.level-down:before { content: "\21b3"; } /* '\21b3' */ -.level-up:before { content: "\21b0"; } /* '\21b0' */ -.shuffle:before { content: "🔀"; } /* '\1f500' */ -.loop:before { content: "🔁"; } /* '\1f501' */ -.switch:before { content: "\21c6"; } /* '\21c6' */ -.play:before { content: "\25b6"; } /* '\25b6' */ -.stop:before { content: "\25a0"; } /* '\25a0' */ -.pause:before { content: "\2389"; } /* '\2389' */ -.record:before { content: "\26ab"; } /* '\26ab' */ -.to-end:before { content: "\23ed"; } /* '\23ed' */ -.to-start:before { content: "\23ee"; } /* '\23ee' */ -.fast-forward:before { content: "\23e9"; } /* '\23e9' */ -.fast-backward:before { content: "\23ea"; } /* '\23ea' */ -.progress-0:before { content: "\e768"; } /* '\e768' */ -.progress-1:before { content: "\e769"; } /* '\e769' */ -.progress-2:before { content: "\e76a"; } /* '\e76a' */ -.progress-3:before { content: "\e76b"; } /* '\e76b' */ -.target:before { content: "🎯"; } /* '\1f3af' */ -.palette:before { content: "🎨"; } /* '\1f3a8' */ -.list:before { content: "\e005"; } /* '\e005' */ -.list-add:before { content: "\e003"; } /* '\e003' */ -.signal:before { content: "📶"; } /* '\1f4f6' */ -.trophy:before { content: "🏆"; } /* '\1f3c6' */ -.battery:before { content: "🔋"; } /* '\1f50b' */ -.back-in-time:before { content: "\e771"; } /* '\e771' */ -.monitor:before { content: "💻"; } /* '\1f4bb' */ -.mobile:before { content: "📱"; } /* '\1f4f1' */ -.network:before { content: "\e776"; } /* '\e776' */ -.cd:before { content: "💿"; } /* '\1f4bf' */ -.inbox:before { content: "\e777"; } /* '\e777' */ -.install:before { content: "\e778"; } /* '\e778' */ -.globe:before { content: "🌎"; } /* '\1f30e' */ -.cloud:before { content: "\2601"; } /* '\2601' */ -.cloud-thunder:before { content: "\26c8"; } /* '\26c8' */ -.flash:before { content: "\26a1"; } /* '\26a1' */ -.moon:before { content: "\263d"; } /* '\263d' */ -.flight:before { content: "\2708"; } /* '\2708' */ -.paper-plane:before { content: "\e79b"; } /* '\e79b' */ -.leaf:before { content: "🍂"; } /* '\1f342' */ -.lifebuoy:before { content: "\e788"; } /* '\e788' */ -.mouse:before { content: "\e789"; } /* '\e789' */ -.briefcase:before { content: "💼"; } /* '\1f4bc' */ -.suitcase:before { content: "\e78e"; } /* '\e78e' */ -.dot:before { content: "\e78b"; } /* '\e78b' */ -.dot-2:before { content: "\e78c"; } /* '\e78c' */ -.dot-3:before { content: "\e78d"; } /* '\e78d' */ -.brush:before { content: "\e79a"; } /* '\e79a' */ -.magnet:before { content: "\e7a1"; } /* '\e7a1' */ -.infinity:before { content: "\221e"; } /* '\221e' */ -.erase:before { content: "\232b"; } /* '\232b' */ -.chart-pie:before { content: "\e751"; } /* '\e751' */ -.chart-line:before { content: "📈"; } /* '\1f4c8' */ -.chart-bar:before { content: "📊"; } /* '\1f4ca' */ -.chart-area:before { content: "🔾"; } /* '\1f53e' */ -.tape:before { content: "\2707"; } /* '\2707' */ -.graduation-cap:before { content: "🎓"; } /* '\1f393' */ -.language:before { content: "\e752"; } /* '\e752' */ -.ticket:before { content: "🎫"; } /* '\1f3ab' */ -.water:before { content: "💦"; } /* '\1f4a6' */ -.droplet:before { content: "💧"; } /* '\1f4a7' */ -.air:before { content: "\e753"; } /* '\e753' */ -.credit-card:before { content: "💳"; } /* '\1f4b3' */ -.floppy:before { content: "💾"; } /* '\1f4be' */ -.clipboard:before { content: "📋"; } /* '\1f4cb' */ -.megaphone:before { content: "📣"; } /* '\1f4e3' */ -.database:before { content: "\e754"; } /* '\e754' */ -.drive:before { content: "\e755"; } /* '\e755' */ -.bucket:before { content: "\e756"; } /* '\e756' */ -.thermometer:before { content: "\e757"; } /* '\e757' */ -.key:before { content: "🔑"; } /* '\1f511' */ -.flow-cascade:before { content: "\e790"; } /* '\e790' */ -.flow-branch:before { content: "\e791"; } /* '\e791' */ -.flow-tree:before { content: "\e792"; } /* '\e792' */ -.flow-line:before { content: "\e793"; } /* '\e793' */ -.flow-parallel:before { content: "\e794"; } /* '\e794' */ -.rocket:before { content: "🚀"; } /* '\1f680' */ -.gauge:before { content: "\e7a2"; } /* '\e7a2' */ -.traffic-cone:before { content: "\e7a3"; } /* '\e7a3' */ -.cc:before { content: "\e7a5"; } /* '\e7a5' */ -.cc-by:before { content: "\e7a6"; } /* '\e7a6' */ -.cc-nc:before { content: "\e7a7"; } /* '\e7a7' */ -.cc-nc-eu:before { content: "\e7a8"; } /* '\e7a8' */ -.cc-nc-jp:before { content: "\e7a9"; } /* '\e7a9' */ -.cc-sa:before { content: "\e7aa"; } /* '\e7aa' */ -.cc-nd:before { content: "\e7ab"; } /* '\e7ab' */ -.cc-pd:before { content: "\e7ac"; } /* '\e7ac' */ -.cc-zero:before { content: "\e7ad"; } /* '\e7ad' */ -.cc-share:before { content: "\e7ae"; } /* '\e7ae' */ -.cc-remix:before { content: "\e7af"; } /* '\e7af' */ -.github:before { content: "\f300"; } /* '\f300' */ -.github-circled:before { content: "\f301"; } /* '\f301' */ -.flickr:before { content: "\f303"; } /* '\f303' */ -.flickr-circled:before { content: "\f304"; } /* '\f304' */ -.vimeo:before { content: "\f306"; } /* '\f306' */ -.vimeo-circled:before { content: "\f307"; } /* '\f307' */ -.twitter:before { content: "\f309"; } /* '\f309' */ -.twitter-circled:before { content: "\f30a"; } /* '\f30a' */ -.facebook:before { content: "\f30c"; } /* '\f30c' */ -.facebook-circled:before { content: "\f30d"; } /* '\f30d' */ -.facebook-squared:before { content: "\f30e"; } /* '\f30e' */ -.gplus:before { content: "\f30f"; } /* '\f30f' */ -.gplus-circled:before { content: "\f310"; } /* '\f310' */ -.pinterest:before { content: "\f312"; } /* '\f312' */ -.pinterest-circled:before { content: "\f313"; } /* '\f313' */ -.tumblr:before { content: "\f315"; } /* '\f315' */ -.tumblr-circled:before { content: "\f316"; } /* '\f316' */ -.linkedin:before { content: "\f318"; } /* '\f318' */ -.linkedin-circled:before { content: "\f319"; } /* '\f319' */ -.dribbble:before { content: "\f31b"; } /* '\f31b' */ -.dribbble-circled:before { content: "\f31c"; } /* '\f31c' */ -.stumbleupon:before { content: "\f31e"; } /* '\f31e' */ -.stumbleupon-circled:before { content: "\f31f"; } /* '\f31f' */ -.lastfm:before { content: "\f321"; } /* '\f321' */ -.lastfm-circled:before { content: "\f322"; } /* '\f322' */ -.rdio:before { content: "\f324"; } /* '\f324' */ -.rdio-circled:before { content: "\f325"; } /* '\f325' */ -.spotify:before { content: "\f327"; } /* '\f327' */ -.spotify-circled:before { content: "\f328"; } /* '\f328' */ -.qq:before { content: "\f32a"; } /* '\f32a' */ -.instagrem:before { content: "\f32d"; } /* '\f32d' */ -.dropbox:before { content: "\f330"; } /* '\f330' */ -.evernote:before { content: "\f333"; } /* '\f333' */ -.flattr:before { content: "\f336"; } /* '\f336' */ -.skype:before { content: "\f339"; } /* '\f339' */ -.skype-circled:before { content: "\f33a"; } /* '\f33a' */ -.renren:before { content: "\f33c"; } /* '\f33c' */ -.sina-weibo:before { content: "\f33f"; } /* '\f33f' */ -.paypal:before { content: "\f342"; } /* '\f342' */ -.picasa:before { content: "\f345"; } /* '\f345' */ -.soundcloud:before { content: "\f348"; } /* '\f348' */ -.mixi:before { content: "\f34b"; } /* '\f34b' */ -.behance:before { content: "\f34e"; } /* '\f34e' */ -.google-circles:before { content: "\f351"; } /* '\f351' */ -.vkontakte:before { content: "\f354"; } /* '\f354' */ -.smashing:before { content: "\f357"; } /* '\f357' */ -.sweden:before { content: "\f601"; } /* '\f601' */ -.db-shape:before { content: "\f600"; } /* '\f600' */ -.logo-db:before { content: "\f603"; } /* '\f603' */ +.bold:before { content: '\e800'; } /* '' */ +.italic:before { content: '\e801'; } /* '' */ +.list:before { content: '\e802'; } /* '' */ +.font:before { content: '\e803'; } /* '' */ +.text-height:before { content: '\e804'; } /* '' */ +.text-width:before { content: '\e805'; } /* '' */ +.align-left:before { content: '\e806'; } /* '' */ +.align-center:before { content: '\e807'; } /* '' */ +.align-right:before { content: '\e808'; } /* '' */ +.align-justify:before { content: '\e809'; } /* '' */ +.indent-left:before { content: '\e80a'; } /* '' */ +.indent-right:before { content: '\e80b'; } /* '' */ +.note:before { content: '\e80c'; } /* '' */ +.note-beamed:before { content: '\e80d'; } /* '' */ +.music:before { content: '\e80e'; } /* '' */ +.search:before { content: '\e80f'; } /* '' */ +.flashlight:before { content: '\e810'; } /* '' */ +.mail:before { content: '\e811'; } /* '' */ +.heart:before { content: '\e812'; } /* '' */ +.heart-empty:before { content: '\e813'; } /* '' */ +.star:before { content: '\e814'; } /* '' */ +.star-empty:before { content: '\e815'; } /* '' */ +.user:before { content: '\e816'; } /* '' */ +.users:before { content: '\e817'; } /* '' */ +.user-add:before { content: '\e818'; } /* '' */ +.video:before { content: '\e819'; } /* '' */ +.picture:before { content: '\e81a'; } /* '' */ +.camera:before { content: '\e81b'; } /* '' */ +.layout:before { content: '\e81c'; } /* '' */ +.menu:before { content: '\e81d'; } /* '' */ +.check:before { content: '\e81e'; } /* '' */ +.cancel:before { content: '\e81f'; } /* '' */ +.leaf:before { content: '\e820'; } /* '' */ +.lifebuoy:before { content: '\e821'; } /* '' */ +.water:before { content: '\e822'; } /* '' */ +.droplet:before { content: '\e823'; } /* '' */ +.cc:before { content: '\e824'; } /* '' */ +.cc-by:before { content: '\e825'; } /* '' */ +.lamp:before { content: '\e826'; } /* '' */ +.light-down:before { content: '\e827'; } /* '' */ +.light-up:before { content: '\e828'; } /* '' */ +.adjust:before { content: '\e829'; } /* '' */ +.block:before { content: '\e82a'; } /* '' */ +.resize-full:before { content: '\e82b'; } /* '' */ +.resize-small:before { content: '\e82c'; } /* '' */ +.popup:before { content: '\e82d'; } /* '' */ +.publish:before { content: '\e82e'; } /* '' */ +.window:before { content: '\e82f'; } /* '' */ +.arrow-combo:before { content: '\e830'; } /* '' */ +.down-circled:before { content: '\e831'; } /* '' */ +.left-circled:before { content: '\e832'; } /* '' */ +.right-circled:before { content: '\e833'; } /* '' */ +.up-circled:before { content: '\e834'; } /* '' */ +.down-open:before { content: '\e835'; } /* '' */ +.left-open:before { content: '\e836'; } /* '' */ +.right-open:before { content: '\e837'; } /* '' */ +.up-open:before { content: '\e838'; } /* '' */ +.down-open-mini:before { content: '\e839'; } /* '' */ +.left-open-mini:before { content: '\e83a'; } /* '' */ +.right-open-mini:before { content: '\e83b'; } /* '' */ +.up-open-mini:before { content: '\e83c'; } /* '' */ +.down-open-big:before { content: '\e83d'; } /* '' */ +.left-open-big:before { content: '\e83e'; } /* '' */ +.right-open-big:before { content: '\e83f'; } /* '' */ +.up-open-big:before { content: '\e840'; } /* '' */ +.down:before { content: '\e841'; } /* '' */ +.left:before { content: '\e842'; } /* '' */ +.right:before { content: '\e843'; } /* '' */ +.up:before { content: '\e844'; } /* '' */ +.down-dir:before { content: '\e845'; } /* '' */ +.left-dir:before { content: '\e846'; } /* '' */ +.right-dir:before { content: '\e847'; } /* '' */ +.up-dir:before { content: '\e848'; } /* '' */ +.down-bold:before { content: '\e849'; } /* '' */ +.left-bold:before { content: '\e84a'; } /* '' */ +.right-bold:before { content: '\e84b'; } /* '' */ +.up-bold:before { content: '\e84c'; } /* '' */ +.down-thin:before { content: '\e84d'; } /* '' */ +.left-thin:before { content: '\e84e'; } /* '' */ +.right-thin:before { content: '\e84f'; } /* '' */ +.up-thin:before { content: '\e850'; } /* '' */ +.ccw:before { content: '\e851'; } /* '' */ +.cw:before { content: '\e852'; } /* '' */ +.arrows-ccw:before { content: '\e853'; } /* '' */ +.level-down:before { content: '\e854'; } /* '' */ +.level-up:before { content: '\e855'; } /* '' */ +.shuffle:before { content: '\e856'; } /* '' */ +.loop:before { content: '\e857'; } /* '' */ +.switch:before { content: '\e858'; } /* '' */ +.play:before { content: '\e859'; } /* '' */ +.stop:before { content: '\e85a'; } /* '' */ +.pause:before { content: '\e85b'; } /* '' */ +.record:before { content: '\e85c'; } /* '' */ +.to-end:before { content: '\e85d'; } /* '' */ +.to-start:before { content: '\e85e'; } /* '' */ +.fast-forward:before { content: '\e85f'; } /* '' */ +.fast-backward:before { content: '\e860'; } /* '' */ +.progress-0:before { content: '\e861'; } /* '' */ +.progress-1:before { content: '\e862'; } /* '' */ +.progress-2:before { content: '\e863'; } /* '' */ +.progress-3:before { content: '\e864'; } /* '' */ +.target:before { content: '\e865'; } /* '' */ +.palette:before { content: '\e866'; } /* '' */ +.list-1:before { content: '\e867'; } /* '' */ +.list-add:before { content: '\e868'; } /* '' */ +.signal:before { content: '\e869'; } /* '' */ +.trophy:before { content: '\e86a'; } /* '' */ +.battery:before { content: '\e86b'; } /* '' */ +.back-in-time:before { content: '\e86c'; } /* '' */ +.monitor:before { content: '\e86d'; } /* '' */ +.mobile:before { content: '\e86e'; } /* '' */ +.network:before { content: '\e86f'; } /* '' */ +.cd:before { content: '\e870'; } /* '' */ +.inbox:before { content: '\e871'; } /* '' */ +.install:before { content: '\e872'; } /* '' */ +.globe:before { content: '\e873'; } /* '' */ +.cloud:before { content: '\e874'; } /* '' */ +.cloud-thunder:before { content: '\e875'; } /* '' */ +.flash:before { content: '\e876'; } /* '' */ +.moon:before { content: '\e877'; } /* '' */ +.mouse:before { content: '\e878'; } /* '' */ +.briefcase:before { content: '\e879'; } /* '' */ +.suitcase:before { content: '\e87a'; } /* '' */ +.dot:before { content: '\e87b'; } /* '' */ +.dot-2:before { content: '\e87c'; } /* '' */ +.dot-3:before { content: '\e87d'; } /* '' */ +.brush:before { content: '\e87e'; } /* '' */ +.magnet:before { content: '\e87f'; } /* '' */ +.infinity:before { content: '\e880'; } /* '' */ +.erase:before { content: '\e881'; } /* '' */ +.chart-pie:before { content: '\e882'; } /* '' */ +.chart-line:before { content: '\e883'; } /* '' */ +.chart-bar:before { content: '\e884'; } /* '' */ +.chart-area:before { content: '\e885'; } /* '' */ +.tape:before { content: '\e886'; } /* '' */ +.graduation-cap:before { content: '\e887'; } /* '' */ +.air:before { content: '\e888'; } /* '' */ +.credit-card:before { content: '\e889'; } /* '' */ +.floppy:before { content: '\e88a'; } /* '' */ +.clipboard:before { content: '\e88b'; } /* '' */ +.megaphone:before { content: '\e88c'; } /* '' */ +.database:before { content: '\e88d'; } /* '' */ +.drive:before { content: '\e88e'; } /* '' */ +.bucket:before { content: '\e88f'; } /* '' */ +.thermometer:before { content: '\e890'; } /* '' */ +.key:before { content: '\e891'; } /* '' */ +.flow-cascade:before { content: '\e892'; } /* '' */ +.flow-branch:before { content: '\e893'; } /* '' */ +.flow-tree:before { content: '\e894'; } /* '' */ +.flow-line:before { content: '\e895'; } /* '' */ +.flow-parallel:before { content: '\e896'; } /* '' */ +.rocket:before { content: '\e897'; } /* '' */ +.cc-nc:before { content: '\e898'; } /* '' */ +.cc-nc-eu:before { content: '\e899'; } /* '' */ +.cc-nc-jp:before { content: '\e89a'; } /* '' */ +.cc-sa:before { content: '\e89b'; } /* '' */ +.cc-nd:before { content: '\e89c'; } /* '' */ +.cc-pd:before { content: '\e89d'; } /* '' */ +.cc-zero:before { content: '\e89e'; } /* '' */ +.cc-share:before { content: '\e89f'; } /* '' */ +.cc-remix:before { content: '\e8a0'; } /* '' */ +.flight:before { content: '\e8a1'; } /* '' */ +.paper-plane:before { content: '\e8a2'; } /* '' */ +.language:before { content: '\e8a3'; } /* '' */ +.ticket:before { content: '\e8a4'; } /* '' */ +.gauge:before { content: '\e8a5'; } /* '' */ +.traffic-cone:before { content: '\e8a6'; } /* '' */ +.cancel-circled:before { content: '\e8a7'; } /* '' */ +.cancel-squared:before { content: '\e8a8'; } /* '' */ +.plus:before { content: '\e8a9'; } /* '' */ +.plus-circled:before { content: '\e8aa'; } /* '' */ +.plus-squared:before { content: '\e8ab'; } /* '' */ +.minus:before { content: '\e8ac'; } /* '' */ +.minus-circled:before { content: '\e8ad'; } /* '' */ +.minus-squared:before { content: '\e8ae'; } /* '' */ +.help:before { content: '\e8af'; } /* '' */ +.help-circled:before { content: '\e8b0'; } /* '' */ +.info:before { content: '\e8b1'; } /* '' */ +.info-circled:before { content: '\e8b2'; } /* '' */ +.back:before { content: '\e8b3'; } /* '' */ +.home:before { content: '\e8b4'; } /* '' */ +.link:before { content: '\e8b5'; } /* '' */ +.attach:before { content: '\e8b6'; } /* '' */ +.lock:before { content: '\e8b7'; } /* '' */ +.lock-open:before { content: '\e8b8'; } /* '' */ +.eye:before { content: '\e8b9'; } /* '' */ +.tag:before { content: '\e8ba'; } /* '' */ +.bookmark:before { content: '\e8bb'; } /* '' */ +.bookmarks:before { content: '\e8bc'; } /* '' */ +.flag:before { content: '\e8bd'; } /* '' */ +.thumbs-up:before { content: '\e8be'; } /* '' */ +.thumbs-down:before { content: '\e8bf'; } /* '' */ +.download:before { content: '\e8c0'; } /* '' */ +.upload:before { content: '\e8c1'; } /* '' */ +.upload-cloud:before { content: '\e8c2'; } /* '' */ +.reply:before { content: '\e8c3'; } /* '' */ +.reply-all:before { content: '\e8c4'; } /* '' */ +.forward:before { content: '\e8c5'; } /* '' */ +.quote:before { content: '\e8c6'; } /* '' */ +.code:before { content: '\e8c7'; } /* '' */ +.export:before { content: '\e8c8'; } /* '' */ +.pencil:before { content: '\e8c9'; } /* '' */ +.feather:before { content: '\e8ca'; } /* '' */ +.print:before { content: '\e8cb'; } /* '' */ +.retweet:before { content: '\e8cc'; } /* '' */ +.keyboard:before { content: '\e8cd'; } /* '' */ +.comment:before { content: '\e8ce'; } /* '' */ +.chat:before { content: '\e8cf'; } /* '' */ +.bell:before { content: '\e8d0'; } /* '' */ +.attention:before { content: '\e8d1'; } /* '' */ +.alert:before { content: '\e8d2'; } /* '' */ +.vcard:before { content: '\e8d3'; } /* '' */ +.address:before { content: '\e8d4'; } /* '' */ +.location:before { content: '\e8d5'; } /* '' */ +.map:before { content: '\e8d6'; } /* '' */ +.direction:before { content: '\e8d7'; } /* '' */ +.compass:before { content: '\e8d8'; } /* '' */ +.cup:before { content: '\e8d9'; } /* '' */ +.trash:before { content: '\e8da'; } /* '' */ +.doc:before { content: '\e8db'; } /* '' */ +.docs:before { content: '\e8dc'; } /* '' */ +.doc-landscape:before { content: '\e8dd'; } /* '' */ +.doc-text:before { content: '\e8de'; } /* '' */ +.doc-text-inv:before { content: '\e8df'; } /* '' */ +.newspaper:before { content: '\e8e0'; } /* '' */ +.book-open:before { content: '\e8e1'; } /* '' */ +.book:before { content: '\e8e2'; } /* '' */ +.folder:before { content: '\e8e3'; } /* '' */ +.archive:before { content: '\e8e4'; } /* '' */ +.box:before { content: '\e8e5'; } /* '' */ +.rss:before { content: '\e8e6'; } /* '' */ +.phone:before { content: '\e8e7'; } /* '' */ +.cog:before { content: '\e8e8'; } /* '' */ +.tools:before { content: '\e8e9'; } /* '' */ +.share:before { content: '\e8ea'; } /* '' */ +.shareable:before { content: '\e8eb'; } /* '' */ +.basket:before { content: '\e8ec'; } /* '' */ +.bag:before { content: '\e8ed'; } /* '' */ +.calendar:before { content: '\e8ee'; } /* '' */ +.login:before { content: '\e8ef'; } /* '' */ +.logout:before { content: '\e8f0'; } /* '' */ +.mic:before { content: '\e8f1'; } /* '' */ +.mute:before { content: '\e8f2'; } /* '' */ +.sound:before { content: '\e8f3'; } /* '' */ +.volume:before { content: '\e8f4'; } /* '' */ +.clock:before { content: '\e8f5'; } /* '' */ +.hourglass:before { content: '\e8f6'; } /* '' */ +.link-alt:before { content: '\e8f7'; } /* '' */ +.h1:before { content: '\e8f8'; } /* '' */ +.h2:before { content: '\e8f9'; } /* '' */ +.list-bullet:before { content: '\f0ca'; } /* '' */ +.list-numbered:before { content: '\f0cb'; } /* '' */ +.strike:before { content: '\f0cc'; } /* '' */ +.underline:before { content: '\f0cd'; } /* '' */ +.table:before { content: '\f0ce'; } /* '' */ +.quote-left:before { content: '\f10d'; } /* '' */ +.quote-right:before { content: '\f10e'; } /* '' */ +.code-alt:before { content: '\f121'; } /* '' */ +.unlink:before { content: '\f127'; } /* '' */ +.superscript:before { content: '\f12b'; } /* '' */ +.subscript:before { content: '\f12c'; } /* '' */ +.header:before { content: '\f1dc'; } /* '' */ +.paragraph:before { content: '\f1dd'; } /* '' */ +.github:before { content: '\f300'; } /* '' */ +.github-circled:before { content: '\f301'; } /* '' */ +.flickr:before { content: '\f303'; } /* '' */ +.flickr-circled:before { content: '\f304'; } /* '' */ +.vimeo:before { content: '\f306'; } /* '' */ +.vimeo-circled:before { content: '\f307'; } /* '' */ +.twitter:before { content: '\f309'; } /* '' */ +.twitter-circled:before { content: '\f30a'; } /* '' */ +.facebook:before { content: '\f30c'; } /* '' */ +.facebook-circled:before { content: '\f30d'; } /* '' */ +.facebook-squared:before { content: '\f30e'; } /* '' */ +.gplus:before { content: '\f30f'; } /* '' */ +.gplus-circled:before { content: '\f310'; } /* '' */ +.pinterest:before { content: '\f312'; } /* '' */ +.pinterest-circled:before { content: '\f313'; } /* '' */ +.tumblr:before { content: '\f315'; } /* '' */ +.tumblr-circled:before { content: '\f316'; } /* '' */ +.linkedin:before { content: '\f318'; } /* '' */ +.linkedin-circled:before { content: '\f319'; } /* '' */ +.dribbble:before { content: '\f31b'; } /* '' */ +.dribbble-circled:before { content: '\f31c'; } /* '' */ +.stumbleupon:before { content: '\f31e'; } /* '' */ +.stumbleupon-circled:before { content: '\f31f'; } /* '' */ +.lastfm:before { content: '\f321'; } /* '' */ +.lastfm-circled:before { content: '\f322'; } /* '' */ +.rdio:before { content: '\f324'; } /* '' */ +.rdio-circled:before { content: '\f325'; } /* '' */ +.spotify:before { content: '\f327'; } /* '' */ +.spotify-circled:before { content: '\f328'; } /* '' */ +.qq:before { content: '\f32a'; } /* '' */ +.instagram:before { content: '\f32d'; } /* '' */ +.dropbox:before { content: '\f330'; } /* '' */ +.evernote:before { content: '\f333'; } /* '' */ +.flattr:before { content: '\f336'; } /* '' */ +.skype:before { content: '\f339'; } /* '' */ +.skype-circled:before { content: '\f33a'; } /* '' */ +.renren:before { content: '\f33c'; } /* '' */ +.sina-weibo:before { content: '\f33f'; } /* '' */ +.paypal:before { content: '\f342'; } /* '' */ +.picasa:before { content: '\f345'; } /* '' */ +.soundcloud:before { content: '\f348'; } /* '' */ +.mixi:before { content: '\f34b'; } /* '' */ +.behance:before { content: '\f34e'; } /* '' */ +.google-circles:before { content: '\f351'; } /* '' */ +.vkontakte:before { content: '\f354'; } /* '' */ +.smashing:before { content: '\f357'; } /* '' */ +.db-shape:before { content: '\f600'; } /* '' */ +.sweden:before { content: '\f601'; } /* '' */ +.logo-db:before { content: '\f603'; } /* '' */ diff --git a/src/components/UI/icon/Icon.js b/src/components/UI/icon/Icon.js index 07a56d47..6104c9ab 100644 --- a/src/components/UI/icon/Icon.js +++ b/src/components/UI/icon/Icon.js @@ -2,6 +2,11 @@ import React from 'react'; import styles from './Icon.css'; const availableIcons = [ + // Font Awesome Editor Icons + 'bold', 'italic', 'list', 'font', 'text-height', 'text-width', 'align-left', 'align-center', 'align-right', + 'align-justify', 'indent-left', 'indent-right', 'list-bullet', 'list-numbered', 'strike', 'underline', 'table', + 'superscript', 'subscript', 'header', 'h1', 'h2', 'paragraph', 'link', 'unlink', 'quote-left', 'quote-right', 'code', + // Entypo 'note', 'note-beamed', 'music', 'search', @@ -23,7 +28,7 @@ const availableIcons = [ 'info', 'info-circled', 'back', 'home', - 'link', + 'link-alt', 'attach', 'lock', 'lock-open', 'eye', @@ -33,7 +38,7 @@ const availableIcons = [ 'thumbs-up', 'thumbs-down', 'download', 'upload', 'upload-cloud', 'reply', 'reply-all', 'forward', 'quote', - 'code', + 'code-alt', 'export', 'pencil', 'feather', diff --git a/src/components/UI/icon/entypo.eot b/src/components/UI/icon/entypo.eot deleted file mode 100644 index 41f223e4d55b12d38f44219dae418788255d28f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76038 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

    xDhQti{gox-vfDw6I&pn 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%0DV)U14mgZ7+(aCBzjSvx zY&F`#274N|AN#~??QO|07PX7VH-X5V>Fg5BtxsU*^H0RVXkgCBQDcZ6<7R8Pc4p{klLI^FCc1003b)f|n@=joJr=o7v*Jd0O zDTsP((5Xo-0byr`z+IC5ng<{J{11<)Z++pR?{jJ5O-UNr`X{%nUd^SQuPmBSum2;t zPyOZ5??3bf9y)UL!3Te)`Xy=6Evvu$N1s{!%IN2Anot*E@gkk`n4H5NvhdR}WLyw8 zAo(9#X^AZ?W!mcuJOvHA5X6gMF=MXEvB6Tp6{zz6(1Ms})uMs{ve50C7S-c}E9 z-Z`>EeH^EG?i-;Y1PXiK-Ofbz;z8=`p#i<=tL@47;TzgO8o2z*q zPn5UrTBRNz*^a9E>gwH4q_>ao?5bTO=#OTz)b?)jASU_h8eHv>FbtJbV&2I!G~EjY zCeEP#!=QlehtNdWYlKyT(RK{P8)<7WTH|SFFw&W+IKM_s-C9}1TfzuH={XQ8#l}vW zPRh5F(|lqdIg0YVBNR@lt`(6VJM!Hl>RJkAM?`o5O-Jv^j!b(l2H-Jo#TqajHrF&~ zT4+CIg%p}|8D!~)T$5W5l1<95pg&h20|ZRm2=(7!m92(W2e-itXM-6I8eJFi$-wHt zhR`i5lWkTKVkp{;%yA;b3q3xc%QYpYl(PTe0n^g|NdLy(Go_*y#2C0xrJ#L1k|6L` zmA^y=$RkJ3zJBy5b=Blove+#rFj6n2BNLBH!|JW4MxPlyCC6zGEU5DQMYRZ3UK+~x z-lO=lir43?7kx+GRgdw)yOTK5{LD^x)H3Kz8(US2y5Mi75DbcdBwtU!r-WP~E#}q+ z?96VaSQ)()CP$M=YQ=;@j;!1YT8AJ47aX2rh7gV)p!Sg_JKC&rirGg5`3E$24`E{p zR)`o}v;~uf2e<`+gL|AvO3nIr)lncfpM70U5*nnFTK~14FRynxt#$n~YNr(LC7UzN zA8lV9a{XbqIEbX$?zNbhkRPVZPV61)L3Yi1Z>gPcy~SU6OJ1ZtGO?AfQFq`uG(RSF zE)R6B>uNzw=fb`ZK9dJ}mtE7lVAre7L<}aBuF08#T`IKX7${%Z)(L!qk^#x2Tjyh_ zfPrDA5FgVvv6-rT<+5?1e0hA7CsV#y`C4>r^)2dgXkRDSKL7mM10SJ%eG(s1znWh> zc<@D{g$sQlJA4c_X-70dJKH(z2yN%YdHcd#FE?_XJ_Pr!tZi5cT*3H7qA6w^rQp$+ zV-}z*l!AxL=l~UBs;608@ZdN&h|V7;2cYN%V%D))4YncuhNdRocR$~B|9wysdA{Bg zDgVO3gD>nM)$-t>d+|B+$T299q8r0&pMPQ9fs6V;I&hf!0N0IFk< z>vav-AW2Syg$j%oA}&HODd9t)E{|Kev1dtF?ra*ou zxLPmd&bkUb`tro9)O;yCc}Xb9Vg!yoGQ92ujM0b3Ac)ss$0x?Ln6;qat$^29v6D7N zVg}kR^F#x2U6Eh~e*pAeNj6Bdkyu?>K$nQ5XdH+ifyk&7@+gdN&|hg7@P91`9lov{ zc*-fHU-?ozqMp)50e$I*8b3<<{B%K1YtE0sLG_gMBcda^jy@hb^aAyRY#ax$U;GCM zu=3R?bsTLbZ`64c2XqPAh7oO`uxau?Nps$I7u;_vN~Y=X;iinD@W)TM-6xPGkj*~( zY&MIEcy2FWDBXk6E!41o2bO+3If`G`msJ$#FIqr!hXZt1+X;dkS(L=8y_Y&)<=h@> zz|+6`T|B)*c|%eDjZ5pWeNW-=a|PJe-ckHPCBF3c=efh~`U!c+3TdMda8X=-7 zfSfBr!C>%kL*Ouq&=XI*6$k`F2SfN53wp}wda{eFHwA%>pSc%mydsfF^KaGHQ9vW=Tjp(%00d)u#_}?;)(4 zTfrZft9$7=$d~^Qz4ZUjVs^ z_yg*_d=p=x?(y<@eBMFz?L)ue*)(7AT-v-s+XaB0Enb0TiryriZI*V2(BtT_c$aABDE}7; ztIQNWDezb~1;gu~;QvCB2NE(N`)a@0$iE^{1UTj|8jtzwYUTVZbY1EvIc4(MQ}2_A zuIiwd1zeWS+)??3txxdAH%1}l${v`R#nZ5h>j=cM>^yWlZqlppu z7t+x0JC|suK>V?D+7n04oZ0i#-d}s}lrbV4Vti=7rQa}*GIbBG^xi~Bdh6uLk-bmt zIdeulcWR&iJN%IvgdJYcV{E-XtUZco_uRMS?@1@1mk!nxXr++3;crAxnr3;f1T2V2 z1c68rnu@kl6a}t*jC2GU8fRDll(NqHagRX!rZM61+zf3C7BxYQ+wYG@#px6#- z9_)Xqx)xOpp#9jqxx~M*@6HYSP0u{DUBC3&KcM!m8XUOo;eGGEyHEOH{rbmWeDO0^ zFFCN~?gPE^hu-CjgFYz%3%8lUx~SID($a0|ezhdax=WU1S=QB-WkaOqQ3W4j0o9g--0iLII0qeBz&so@i)VhQEG1kM^nO|a618h)hc|Pk62ST zdWgg#myCN6DafXP4patPDG>xVPfMB;0Y*c#03IS{wP|4x$;>IxDp+s~Pb$)4fbkB< z5uO%Q zX>RVg{@Cnn{>B#TLypAg+NsE;OY;-6v-ceo$||jCHGj>eOOY>ps>`HSPfka8p(koP zV+*A=-q#y({H41sl|Fpo!i?^|y{ZAxXdSD+ICJ5`;kjWuuhmj=42??;SmqPZPe*Fz zg-jnp8_8=dXN7f*^baIzTQD@lx=2_mbTAr=cy+@;g#m=BL8Z+W5X{T5L9A^+6?^~^ z^qW^-y~OW5^#bpMU+PE9FBNL-CZ5$xm+r&kVdzZ?3As@hn167HW-4Y5VmUNZ3z#fG z3s7cM5MSMbiOWPQ-e&eF{RI<p`DT|CQO% z%=66-bNyG;4%W}C-hlzJe~ke=7qSlYG4;UEi$HBKZ%>eK9vP|kjz$vPOZO7EdOp;$qwXEFe@3^py;L`>pWQ$ zq5GCv$+jq=4eTN%=@jC~#A-aiUvqn5Q8?=l8=o1)*K>#Ho9jdP=6CdZ!~a=ne7*eL zBg(t@IkelOKt8hDrWc7nYH7RFOJAszx1eeFxtg0@6F7Oq>GwOiS!$nA^J}BU%f0Qj zpehNyGTA)b+a89~|zv zS6)F_bm{X^PU1BS_(t-8TzN|JgXZCVlXDUqPl-fg#Iyn6UU0kp?$3$Gr0PW<@vM-? zA9~zhzk=sQY+y-$5>_<;+%a~|tMg1yHc2r+oA>L;YQG+MriPf_?zE*um0G3 z@BQtkH*b<&d{Nr8`O`z6*|b@D=_P6Nrq2w49)kYL&Aj*CuMC?v9T_^ZX|v&_myC27 zK4E<6CDtA@@_YUP_4P={0f%ZL9tQ8T-Aa37$jMRKA~G##-ZJTr6DIueik_7;PeywX zkI5)9(oslhe`p&<6L$AJW`=_|zzt&%B zNg>rgoeuE5N0M=qIlL;<+!6|#Jkdxj`d1I$c4#gt&ZIu$yB(E!NHngJr54 zHNg+ovK_z`G_g85!$SkLo+@flc6U@#iAZ}i)8cc7n?g$~>sV>D)FxgqqZ*Km@vvx& z6f>l>Ht1uL&H$y2+8bl1bRO5!8;u?)6Ep(=0?KIksB^#$@mFN=0mK2qM}{?{cfc&R zcpkh}j?|+BPa|f(?Cdx6S8m%vZJzoQS6(lizbe<|S$=2~?P(kuf5X^ckslO$AXMS5 zTEflxt+SNRwx!)EcQO%=hC>15Z#OONGm6%gBpuwONdAI{xz(gq8;~SH0Uhd=RwLtP zMUUZxIuT(xn1YS|LJVrL%}d)K0Yl0M%cCNIzj$qs+eeMBzd=Qcxb&5C<+uD#&7Af7 z&(1tG|L~Q!x%5KaqJ<8bdCHF~>DQHRpngCu-ajH=Ob<_UGZx~0lB3ZGMJZj#s=3J|L8-Nwk^LeNFDW75NP$OY%pzE*F^Qo1(~O~<0k)DBGys;R z#S%lXXn<3R12Ie4T5-Z$sqtkv3kGl&Kn(eRQBX2bsXVpm-AzN4vz1E^z5bsc9J=-F zpB%dM8o{ytdgz(D{h6Ut3mFjyHf_;h{r^-gy1>q4Vd5`TCsW&j2z zbkqiF@4B(t3gC4+K)aT3+7%ftLvpM^W_pZ zq}Y%vX>pIUH|&;Xg4Zqra3Ite$dAycXmdAeh{2BzNhhjHJY~ZGmjiGVgdbg|B6$~! zhm|)Qos*f)>R2#1n9cOnwoc!Z$qofuCaRs8NvHAY>`O0a$J^C+irIDlFngWLYIR*F zALjpuy1ji}R=ksc-EREKbVnvu2#0h1>Lzy};`Npy0e6$SKNkvg#xfn#UoqOZY~&G9mo`pz;GiWN|AUbGthi;FsQK$5D(9S ztR);SA(k1&r6GS{@>zzH{mtRfWL-LT;>0oT-N{h6xj#Al;C-WHQ|2H>(71Wl%Co z7kZ+x-ri9P>5{J2@UJvuKip9>6V-#;Mf`7w{t46z!vSo0;ZV@2fegU%;E>9QNwSDr zKp>ma`%pFo!B`p4)!1xU4^b!?I@0^Rr(fDMLiLRS1JdimSbC<=vPSP^h(lojCMsb(?u z?)aNi9V_e7b)SvA6-TUHR!fym1lHe74r$UcU%{Bx3?=zkqB?&EpPqk1_D{^A?$I#j zBIp80`y&hiX;VwF0~EQ;drAAlGR54JS1pz@v?xqTBn`vj#sbC(S$3F-bXZ)$OEDt0 z1uUc8S*9oF{+U$f`aP7n@Pap$^m)?hpAjX6a=4Ow?_ILRmEZ_@Z_?*rd&3i1&9SRNcBN`WDi zG2PH&f)>In#;kkH%Q#-(z;MYnq{)_9PAuil5^PD0wJ5)X>|v74?0r`27gqwGjH}f# z6|xygWrG}3v0KQ0h$3W2t2d4;30!?e7UEmJmv1ev-n>E-dP^pQtK4Jj&&2_N@po1x z#}4lw+2l!hZxf7>UXNe$Y;84ySRuqmE!`dMw~O`8=|O2wBQ?7o`r3DRz0lX^u4QL* zH|#rAf7@W=jT`n=O8fqt`+4W^npCvSY*w4HoxtdA*MxRMlgP9Lv|)I^1wa3@%pCi|LTof#ZKYmA)8B=lNIZO z+JU6>_y$=HT)||ZN;=hZGoga8tPv9iAVRP)3?ofCpmy*XbUjYULx(j^2NpGMz%3L@ zCfhQY#S1-~r)rcFx*T6Ie|l4IZ3=0ixRY6Nr}ACChE)+)9I7F+Jc7C)#0qUkU0TSb zHRmN{dnKW+0NbzPQ4EYd80}^-hwwuTGgt?BEILr(-IRPW)p`5at663nHa?QzEV|2* z${Wdm;Bn3)1+c*=pI5$ng+pGGP_-C#=$(FE@H_p}0Wnd3{n=gfZ|rLD%7ZX-NT!kx zB-Aa2ZF;BEztOKv>JA>%%*+4*M7?Nv|0l|a_`gNlQ;OB#uZsqn8^|$}MzvtC@*I-e zc<8%g5l%0x2B5;&UJk8V-pkQQv|hwPmIMe6UulpHTedpviiYD@2)0rT4Hcn&aKxan zf>Yk@)`j@6W4;rdEFq2av@Y_6caE{mmEshbii*&RFoMKur1H9?aYMxBnEeH1AG`nkR!}^Jy zYTHa^CKNE}MS*cw&Ln=*G%wUNFZABpb)W1j;IGbq!tY?S3Az&uP12SW=<-;c zC9)&nUS>XiBuJ2sgmV`(CMZrMtVj+aX#&BC41B}%4r6v>zu+y-VYt{wkV+!|urv#3 z7|eo0jR@tyeT(4B|8)1dPlIFHV6X(#2A9hLH%O@0XEJj-w<|g||1+IZZIs%x>ZYKz zD`_$0jk=IY%&B$FTA#_OI{0UC!R{0)f?&0dnum3R)uTH-TU^Psaurh99X$W%4}9;{ z`cLk=@6}g0&;Ph7>DI&yKznl>G>LF1RpY`D|GJ)Z;FizdQyfaUbT zi{;E$mj1n<1g(J#wO7(ghOQuuk%ek%FMHSawGEvnT<<3PW5O zi26Z`!7iD&IlE0j4ezurX0%F9jnZ^bvTJnqom7Vd*jVmyWdK?wVgP0@umLXSD4|u# z@(U=p07Sy_T8@{6_-YaCJ6pGis?A$Bwzu=*8HA{|s8rwlrg}!0{%`80$&GY9iD)?gZJKO zw+$ClN8eY}A3oaJa^y=7-}v(zzx2>&Jei~QQ|~K|wibtM_8S-Oe=qdp0*eJ(vAx1~ zAm{m#x<;B?!2zORXv)ASqFjlZQ+JX}1zSyw`N3cdK#T&p2vq>v4XrFWx}vgy;j0|a zyYfo#th4@rbi?qPxS%r3d5>H;KwLTpE*zQpF=v(BQLVnotB)l@v3mW-GlxO(_0&@{ z47ZGetZJjt9_uq{2f=-x!v+}Maskw{X zv-96Ra|ihOe*hvH&HNv$u|YM>G18;3uI`-(WXEv4UGfU zx!^1*$J8Mu$<8=Tevjk~x0 zk!6|8`Vum z=^YlnMLkf75FNmsH<%3K9FU~JFws6!O?kau16~BIXdc@KjTo}BkhzLwj}asn7v3Z) z6jG&$3I%%yQK6vvfwwmD!F$1l2u_6G=Vr8%MuWY4k$gzdZ$KeJ!h*C?#EF$bMo_8- zr2#q^J3}!JatZG5>Ydp4RNK!uA)RaUA;2Bi;MV-zDInt-m$HrAr>q{Mni0k;%z(GqQdv=RFXgS2IxkJ1DXd zjf4VJkC1#{$ag@Wg4Ih)k&WJF6a`U-TL9+ggJA360$2dBme6;taGW5ujl3V|zQzmY zB*JcpD;HF9LNBnwpDMc*V@gW-ar3?{W~7s zQ7v|r%Wv@~n1i9h|9l311uFpjC+4mE&u254*?zaXU)Ga;q4+1D*7Oun{T*YqHs;Wj z-B+K<)cUAqAop4=lkV?NXKH8_M%$$L1-}~i)gq%E@n+^R0&4*<6zCm_H#6@Ki#Ovj zAO|Q0L2akfE!G8(X+d^=q3!ULt=m%TYs=KQ*D|$%RHnA@owY4EP50x#=Dy+=$|u?P z618-hJXW422UxM?wvmO@g8s+Ggs;Ptrc?I)i=BVv0jPzM#kR_iBDb0zWx9_$y`?rV zH9!yafj(I1i-lvOPu@SS{LjiPBJfcK5Zv;Ptp(nBal@vhQCS8eF_-E1GJhH52RTz^ zrQh|r_HC<0F|y%{zNm#43zDSV>v`tSZ;foyXsj!OCiP(C$Xjpwo{HMnrrINuR?z5c z1+jZ-lK)fBkKR5I85E776(&))Iryn_Pc@OR^Zj$m0rk|pPT?Q&@h~CN| zVTE>1pamc>XtzhtDG^Pel0YQJ0H*rxo zhatL~LGKtx$}hG@->belVo_$^Vt7UGNb;ylGx4dzyt!UCgCvR$hwbNlg4zF|{j3B| zN0XkrV78vQ1^>=i%}+U>lDeI`0(0pC&O%<$)`VSw?<(qmKWd#Z;grylJrePzSc;cCx@sjqO!&#pXpaPV&K4-Ot& zd3Pdl_e$=mp7q7z!2^3IdwVwQJ#esCT>tsvy85rj$2rZqVsV{3e~1v{e*wc`h6L)a zA#93dATwto1VpPW*zsI8D*`rLP?jWU1y0!f#%!lHEGY&8i78{K^ISPzj;rHpWXqLZ z$}cmoUnt&Ef4aGun{0`56T?T3F8;7OA#nToxP*uPpMP`Y&ZEP3-Z^~q&XJ=>+1dvW z(?*0qRoDqTY8tA2j46Ys3_77NVzPg@tRX3f3q2gf?p`M2m31-?3DcnCcx#oj$d*pez~V`e67y37)a~+ofE@pyV|5ck53`o+h7(JEV44t-pF( z7q-Ma@3~{|az1@qQs*8QB;FVZye;Y8GLCCh%GbDa^KUw{PJR^BbJAnnkXe-6vHGcq z`!P1R8$525!QjQ*c0-CNh~*3wm<(Er4sLv+Ez_c%ZCJ204JarDKM5^X1SmM#!s!GD z#O>rQy)n0G%LxM-qg-;r%HpD$=)9x()x-;nzxK=ZOi|6W{)Qint9*=|{N^`c)}p-RCh%Y^@J;mJ4lumy8!h zD;QNGt?mzG%TV~f4V7o1e-eHW^EktkZXGXCR%F?Le1|BE9gqgI3KdbP6jWiiohy@; z#njeV8DbsTb>Jto6x_SbZWF4z^cL)^0)ERcDiN=ii`3t(R_i;E;&7%~<<7X>WA)cu z0}<{hI8IH*A(dLK1Kp{`6y=BR)x@1XO_N>MrO_Ky5uc_d7Fqpn!7mIx5(xa%7&HD< zKBRX=>d9MH);!Lb+TmQc{-8%tnk4EM%0GQu`A@*NR}}qMR!W9c}4In4-HT%)Z;RXhk{0E5#(zPS=Jo?9v`AkRYd4bUS#1 zdKITLT(@OYKS&z2LAV8RHEJ2bNuiWLNGb6W zGmt`TKqv_cv5pQA31a{`VFL9T>8=d0RuFhO}aWM=zf*0TgE;E!^8Ej0Y zd@KdTcJ%RIP}6)@DK*N+c$DbTJ*w0EEM3j`LL(eVBR#!-O=SL8#(a-1Axw$6 z^I2Y;5;R}uH9K_29vmL#@5t(S|E|?5)^FY3$3uClUhJG0X>HettGXs@Ir9uqNJfKS zi3)XlMGdc+b*k$BmuY>jUlgTx_}84%L!$M3?5p1md>RzX=g#tiVB|fT`tuNzzh-*K zapkv_Ih=)oR;ku>ffl52nXp7Le#ux!OQ6ztl-RBmO#q!Dt{B9{7@fwBLJNVDMYszV zJ)7m^HsUBRjx0usw`0b$ye?5I{P$`Odc8gip=qXzCz2Iu6o0|R=25#ZSv8L0Q@GeT>YN|tPQeSYr(S1m*@L!>1L2kc zhu2Ef0WYSL0l(8BVc%vM_dx@Ma$764hMbUu7KSU4#56<{&8KCMbXv<+S=S&f5HLcv zMjdv6y-9B0EAK^@oQsPe`sK0fg7zYyEuu;vFWQ5=`q*_V{W4Jg7L=LDJW{GR*&0k zq_OOPT8zjS64@!z!XlE$I6y>FfP{ctre?7dIKk+(j8R|k=}@XB{YOnB2|dIA{ruzm1kzy_Y6!$qv24eN?*74rH)F9_z^F1UURq4FIlNcD zly^FVEly+7>a^O;=3Gvxv^m@SkwjqsP~2cN8qC%&CjtS7GraIJh#MyYagWQzTP*R$ zHNimr$AOqRWmvetRJqN1N`t&OJBiG!G;g-iQA_232JPGAfICFhfcGxSui+SEPj(pQW_*8=7co(Fy27t zt?j<@JtBN7jW03)1@Q0tO>!WExgnU}opBoi7eF);9Po;+BEyL~kl9S<_?>qUoDuaK z=zQU?AI4%*jgk4C{!9L<-(Q{fU!sHmF#GN2p9kbXVp!dGfz^EjybAB;-dE5SOa3js zkagnMQ5W&&z}^$0W1?m?A>spm6RXi>a)P>p)%EJcmaZaDhl&eec7R|VeM_#bMt(gJ z1>lENW1eggIrh_7s)W;VEkGp@fMYC(&U}=biTWvg<^iHeNL2Zlt)+edFupX%Gf%X3 zKQ_;(6}WAF`)__@_XB(?%f>yZk1zoZ-lI4|*euzD1j~)FXeun68Tz~InM2Hm0Q_|K>$uf~F3Ll*6<8m=0mP`-x5U_;a?Z`5Xe!ANuT3&Wlk zt;deyzbZqxt;_Frg+-s&Ci-+vqg_fE&3b*{&W)3aP?J-sPG`?nD^u`I8obveyv@iK z=B1|fX?L^wmxmG1F}r;}wcvC2rF4>{2}yRluFyGZ5Cku;L$;V&?T+|6+Kq+IQb#hE z4vpGu&wk?$2P6q}S1JIeadH{^DebAX~t$#p~r(H10OcLw_L}0Z5pIh=?<1JKfqFT0U zF~F{bR>1%D?Cvk#KYOEA75a~Fz8E&{y5UO??b>Y&e)osp4Xf)=$33S>4;y(=#%ox-XYNa@ACK`Lo`J^bLr`k__f2q#>7y68)^)(3-? zzzy(a{qL(DOT}X8M~7GaQ92e&J-UjUP5SKS!b+8{J+tDD-pw7I9r)LIs{T)(cUwIk z6hiQLtg0sU^vc#s>prjaTDmv*FG07%=Wqub2lN8*)utfNtk95ZH7OMIdhEbSimZ-Z z+SjCq;DX-}y@NSUQum|qK`hhJ4~vH>t);SsNW+~DC9}BWa7~akgtCN>_l}+Z@#(SN z#8bAGV?#6jxtaXxnIUc_e8;*2r%xYPcSo3eKIgZ;_sq;tWy;JQtUqYlTp40=%JTl4 z(xL2!2Q90B54OFHJQG^vtt|%MNTZCKcw$3^DGYB91`6f=pkle4@e*DvN+gD;;Qv>4 z*T9NHL$ik9C{S5u4YXT;2}7&4bK@iBbNz2F2c0QFM@=iwT~ zAJ$@=V$I0V%D!4}Pgf^!y=lbh!l3}wD?{xL*m;T+m$IOBH#!ZxN+09YWN7Fmm87TQ zmI@Gkz%55RpjLoqi)JpWJ0WWXXFB-JbTqR8I8=aN7Z^$KAu3SZn}n1JY7TxBF`VFx zwn{og^dzPjpc_=^q^(=v8!a*KiNnrNzy$VYe`Bw$v>=!}gR7d^ zW88msV>&gwYUirqv9td1##^Z{UhJ#1COeb!@8B2aC-=A5tMHER@X*ZANU7Mz{U9`& z8yd=uh7OJm(|hKZ#)dh7OMFoMnz=r9Xl;G(AMpxRn0*P>&(EQsdH9V9x44dSK-P_o z3=a;hKrfdH+4g3i4Hy&32(7e+P}k2W!kHLEw`d?1mS3M{@(U+i@ z0IUEEPSmeDlLYE(9mUhkNCMRIL;@FMr%0ey#0k$wCrt9neNA(Y?T(9mT`VB2Bks8J znqbz5Ok8;bF&KOZB@BuMC98_cCakS7UD5TnEAPq5Vg^!)F>p@fC+stG$xPD!7=Hzh4a^>bm+<-`iiB( zeHgfTt30I>{0|p~EZ%sBCcix0Aq7nDKc{#f^W6pkn4%nd_)me9X!fEQF+3F%FDpTD zL0F%M1jnXLfDiQlBIE3GmogIu@G;A9Tz73P(V;b5+~DE3XYQDE%C@LvEOkKYV!L&6Qq3y?T= z=ECA6MaYH;(g1hx89)$p;Q7}Y3{IymWzEF>&HBW#J$|oV>2a$-C~j9<+y!@gbY<}`VB^BEuF5Voj>br3VL*Ijil2U3@WR}Vb(YM_urE+wD>gx75y5KGpgW* zD-8Fq_qRy)4c}PtxqeP^W@?#CAn0QHyuu1U{8QKwBbZI)nkL^t924Y+kJ~ZyJs|Ak zu&?45_z3U@sea3RJxr;A_Mk*b2?Ul1Lk_6|#ZN|_6F)X{1;-$Ed`j}xr{D=@xiRP; z{?iwX(%yZ|xu>(S`Vjxn$^WvtXDH(P(_6vxfRDv3X65t=P;!WH9taLE&yNcsfqVTO zjadIh{hy0dGgCc(rb?^+@hgv6r-ZwX{)OIewy8~m(ZGH8(I2TC8nZ@HYXpPP;;{O@ ze7kO1!(_sv${#2L(C560oMId0#X>WNR_Ao+v!I$$4U-b@1h;7XKXF0|NBb(%00Tw;iW?^cEP zqg16`&9FYDa@@uJbL9p-Q1Yt2{tNwmDod2t?;b4Zj!61=^9#JIHCjIt-5af+jtPn9 zo#SKgj9tSypXbg8Tg2IH%!_}q?5x-leDQ%$D6}_SKWff9o_9K*w-?N#)%I{G6mGAM zF2y8Mjpl-4t>UJdZ|&&nRfGLi)MF^*h(R5>bB&tKBu7>at?Vp!WFuh>)F@{9$n=A# znW=~RC6aC>LB>G5EE;}Sv56>YjFJe*_9bKCDrKBGI|4Y=X)OM{Fq>3(Pxb*WnPMbd zKfbE-H>wG1r>!LrTd`(!&&Fu4C0yl(Qih6UMWPmo#bVXTNYxVVZE4{@w!kxYcs$_` zTkLE5YUBNZ$P)>FOKU7LxFQw9tBG(Mmd6#mw+cH?5E0t%)B-4Wt^l)eA{?>@?E&%^ z1G8%+{|!X3idD6tiiIl`oE8GQjZzL_SDw|G@=M4 zA%+tmo)DH1=|BYvSIPHLfTaJ*jZjcG{|WCTd&vrTYF8m9>koO}#Pk+j%7opnV z$$jsU%TJs=h<|6FxGeh|7O?XvSO))E^HT}J!G3aS7IIW@-S0D|OevY|mtnpv=*R1O zk;PUkq2Oa*xh)xVi@dfqKq<1p2=kGlBAFT}Fa&Q^0%%AnYQZs;7X8eV8wLHms0Coj zUu7c0S9!z7e+xXI7(@CRW%2j?9vTA;Y(rWPa(^@30*eO@COJ9)!GRzs9Ck!NR3;!j z#ScU^HlI=%K1(3-@Y-RgLSLS1GS#+KyP~L$!!PF}h}C^~!--FIZ|oCfgbZ zldRv1IJdRIbXPKK$f1GF4SpLsur#XWJ+6d?3U}z0?xsX`CZ$;X0)L9C zmi7AL7N~Z?WxTA*FYy`Oo#^hlZ+86Z8NDewkj`4mD~}GM8g`l+Mqxeb_^0!yMd$E= zl|^?lQ;X=t&U-b>JHGBl#kkJS>L3=?=Dl%C!anWalI*R-=CTFW?L&I+gnNrUt+Tp2 zm&hclHIu+@f2tOXMimN*43vr;?a@Ruv9#)z-72pr>hoFDcQgtbeGk?Y3cd#*>%mNm zK6gSX3P_w@r_t#(nC4KAz?fycG7<*BE!9{8@avki7%O;>klfaA@=~|+aPCsK(}B?i zE${XPqR}!K1TeeF?@kryRB^Rq=`4@u!9kfv3gxnXuAi`8e&Xiy9gp03=*SW2K#5E5 z5$}A_jNaY^K7}|Nx z{@jm45b;aquMeoQPQ`z%`J0bCBa; zYv@q+rwyWCfHIDrgP|ej6{1!vLe^`bkZIUNhD!;%DI`9`kycIeKZX-6^hRX-(IEmU zw0`M5;koNO*b1N+jc~x z9bEux&WMMlO7Hldk-_v;cLQ$Itq<**+_r6M!>X0nPEBWXBP0CeM{WvN_E+RUA_g0V z76%q(;<9i#H4cs4gc{y5LmYWBdKK6_p`5^_sRYPZEJ8uSYb2yW5MU%pqXTLN01B#- z2sn`leGmN$trPvr)D;xG0(TRrFqR784{UmU+?M)T_Wz-)xAD%2pH1+Zk8IV_Ic30- zs3Mc!Lwj9!7d$f=gc$9{xG65LN@~|=IiG_*-Ps!Pno+k%FhmrRV z=sV?60DmPOJsJZ*w?*_GPY}vyh))o!@z?%vdisac^>?P!dYfU7FvXjw zP;H6cMI$qL3tv8iIv#@YaPv{cpps-#SR&x9Dfhy85r(X5Fks z53i1;{+4^}(y>dI{8t?$?sc7cR&UYR>u2;HMQ;P{WW3qAG)LS zUOszAso)sZ^VX1H<@qgB)4azY@b8ICMtJEXJB{|MA0lt-9iTQk6sr}Jiruw9IcLNU zKe>KM11~8e@DujVfKnc@@KJwlV4t*lT=Y5in@|x ziq~qu`G|_K(Y_UEK|YpiOEGK0<8lIiViRp_KcKp)YgblbC9dx8?L^P>L73NCCG87f zFI~PNkn+laP#A%a+7L*DU-f=a%YMHbG64}n^n{2Uw0Qf_?C(xNrxco%^*ldrcd2c~Wg>+fp9apIUv^+7ou4HDIz$Em;8R=VO9W zX-p5<+7j+U)@Vef$Jq0mxLwGF_JsOucDt=F*`Y)eWLtK=OcN)MeTSin-vq@kn&G)NG-wgXPMT><*`WcUjnEnUeJN@oIIv z%ArOoqeV)5Kofc%#iM(APWi=_`|h6&b`_#}<7c(rvOOaDbuBAb z6)P=G@VxqTdbLK^x*<6{>bh-qY~0Cbp8ML9LpCmycKf)m8SD{bP7LeArB1z6N=)Br z-sAJ>_2))+WbW!IW!mq;Q!&h>^83I{8lZ?*Y5+WY+;UHomp#^+u#>F=4T@KELew*q z5+OzjwS?SlI$WhNlMOQ*Eu~af5^sDwgIsgHnx=+;x+EV0(5>!5q(~4aWOl;8E z;XhU(wtzfiLRn%91ivn6pz_q0;W98t@Or@@5!EcbN{yz0#5l``9(Yzs!n5D9gh%g` zl}|>ys?|I1`jf}+w)*bgUE6NaHhJ7DHb%0Op0E6qc=Ni6Ql;0nqFm&UbSB-$4u5K5 z{Ukrmk8}#6VfPSk7b-LD?cY&b-DCSJQlLMk0d?T=G40~MS@S3qCE(Jts827~##`{) zFis1SwOf$qV1`?>3k{6H@XaLQ6A<832aW_xCUBDpNW2%7DgeXOO7I1e$E>mbD8*3A zQVbz7ut#FU(`wNr=odP`5SE!yw*Ic)LH73V^CeC+WZTDo2?1r%lHc!JYTJL?7m&k% zeC+>*Z`jOCgXK~SgpD*=*oFbo<#b^4z>b3$vK{dXHq{Wl!9)W>aM_xAxf!5Iztr5~ zOUBFmr&b%&9&0*aLIB&gvSX!lVC@|be_%PG@`Qo2hRmX`Gsataaa)tCqgmp^;6md2 z6UlS4ln}u<2Vk8AfHNPenTZd#k)jWjDe0FP_|&-o1?4*7(Nl25_yX0Dga-hGIDtZm zoddE1M>!q?r)V=OhO{E|Ca@*zy_lM%b8SlXt_-!hx#_oJ|-Xcp5kqb0gUWfC(gxfJ*f^ zg$oitAK>Y^VuAzQ2C5XU$euOqVE%Tvz5o}Jd%eE@3-@tut}>jij*d=EPg{oJDqmhD-o}c>h9C$x@cuK}wks!kEd4PnMr3pr~D$YhVAf#j4C#B z##$Q8T3Ll+)5fU{lj|q08DBTHcGb$B(caN)wWAx?W#Z9r5R8YCN(o-fHRnm<%-T3L z9vcBpPN`Q0H&Yoh$XB%*;s%w+!0}XsFHTgX0BqA^8gUlNT4$~yqgD^^OUwXmoYSea zI`oB!Q<)L%f`0`rOrsGQ;;7h3hlu2@-S|6wl~$q4|69L{>4dRj8A}o~1zR|ojHnt( z;4)cBq+<%f0ooLSs6<2-t-_9oGlJSFi4;tfl>j8`#Arn{+^cy97Y^{o740MKp*5qI z$GiwT4#sk`a|7!I=sjJ-?VYv!<{@kM4T7-u?pUiJjQ2)#x`fr_3j||2O)_cqb5EQ) zwGBU)iKPtO&vb>#)8QM9jIv8yv?wzN-gx~~-Cd5?MW@Pyfy;U_vvol+>8FZFUi zJd$+n^yGR>1qvPvBStwmfCy%1 zDVs?pJ$=4DsY!C%EPAaCXRBwvVQ5>7Bv^+Lciq_Gl3;IkDW@6g~ zlM4bKSeH!xt0=z?SH$92&3W!WYOGFO(kf~sUkcLdN+Htyn$}>o;IW4yf;lng3%LWi zv?$p56Fz5z+drBe#ZUbef0F0hT7pGB6Vh;({Ux#5+!Wvf%PhBkvwtw1b)klQC{wWu zf+Uz6&F$%e%e$@BX*F{G(?S#VgFIakBkN&tAqp;91igY4i&zM#&!4`@B%EwlUwHwwe+EWvfApmsNE{n zWM#P3tAbOhIK12LK)Q0z^o|Ep8KcVL;B6;G)y&N2&c0{$Y`ONUu9(yA(!6kF<2BjC z?Y{7io4OPEzMf4k-<=z*xkOBF+PCJKi47>&Cazz-cB`v7($XIO?ui}SE!I;Hp1=Qo zBr_X~X6)Td>=`|>HG9aOsdUMD0NFFGo!KVnttD*#e2~l;m}U*@k%hcSn}-R>FEMH4 zUEk(p?I-aJa~;5FbcLKaMMvr!vf|}GLd##O5d36fi=g{ZrGgJ{EF*t?#}01!g}M(P3>;+ z*bjfG(L0*sgF}^q+2-|QW^nz-BHM~9e)8bY*4vu&_RNFJ#>)WT&eJs*Fyu`p_VXq; z>LfCoU%TK*?hip%gQFY4W58XJz{p?%#DorH4~8G$A9yc8gf4FbBphWTbQ)JRv(mh^ zfvep_S^PwIAwjZSc-V@K9_rypiJFrz>FH$m3-L`^8|#$jUx(K3Zq09$0cCA4s)Mt8(uVC10b>0%@3Pi;PAuOl=GdCK*_J3bZCo5gk<(FT4 zk;@6^bVBvm-h(ghT-hwX#6OoTm0MHA;@{1m;?C}znVNaiDn}K@GpN=oY4* zF5nj|jD_L#TF7Qq0OONJj(#YJ5Cx)x{1*}C`9WFo#7J}FYl6@Vo z)A+h?9!ljy~uovV%?TevwaMhYkw@()TGrG zaK%Xa_cK}{ z*%LijRM-DWBc9@R-uh5SYTdvW`sy_*W{Yxls1|$254Z69J~uk%t|oN*4~Ny8G}c^g z+?Xl2ztF4-&ECNMc*EXiA^zaC<1Nun%C@tbfi339_Z-helNe0QTp&G-sdwKM}9f#d?H zW6HIwd4(3nTa&{ksF62Mb+@-X)sa&J!ngUOzB6IBn1W?>v-;0%M`WJi5)vntQ@*-`_M|x)7)05Y2cm~bXKOL5YNV&@LJ>)(=}^* zTQm|3P~AJ5g$R$x$6ZS%AjIKzX{8LzU=DI80O12N2o(IK9wqk)c>!4Jx&m_*Vh24+ zJ0OlM%v3_G(gIzUXg&(r5(mAlf*OY~I|!f_n4s(- zX!qy@DD(C(&eh~kLnjoK{rA@|zw)2Rne*!R>Yv@x@AHHT{aXeLo4DUhd3=S?KzpX2 ze-^~D^~9e8Y$VhH1YNYO|6!nNM6 zayp61C_bA-(g_G_rD~ml7R)yCPQeBy@DbJu1z1tUjZlzq^~midpAYVb3K*oW%09Fx z^93^Fh2R9Bx1oCUNG6l_0@ni45dA{k0_G1Pj-^7bL|j?s{wP$Ny=ipq__}>Jca|fO z?4yUr#*SCIH(oRzRIi`tA362&dk0sxL=!3<9hcW{U2HM}MQ!fO7=!|s>Q{o$*#bwh#xzHo% zp)wjz$V=8A=qBn6X6m6c$U}pED?vMjVusHQX@fL7u=+6@D11qqq8yAMr#oqNvJVgq zW8s&D3E+s)_J+;Pi7l~cp=}Pfn~75zgj)`L_3;C@9JuB2Qe^Ggp_Ud;)6mMH!jMV( z%)P2p6mck8WlkN?Rn2X#O4L_!1oE4uBrkZ128=U1!uihOR=FHpZP>_Y~` z)Q{JsG{%(hcA|jzp{$D*!Y(M79WYN>JLDL{m3RW~LeqXZ@)Kmp#SecB4)>4yoNV$h z6$MJ@1lSu8o1y-}u;aC>h{0zo0qY;R63YhMTeL~$)$6h8^+r}2%<+~8Ot$fZU0rA9 z_+=wpub9(L72qM<$q|p$))MYB+KmUqxry;gWo}$)hn7e&@pH<%;6F8Dmu`iPIsiT` zFxwCG*Lthnc-KJKaad|7=BViFK~g;v1sHMx;ByFh^bICGEH|=pWFkDsJt*oB`edn* zSwj0{jP^i9-iAS^cpHnk(Yx#w%>guNS}{x=;XYJ9%5P|6s_u z(qN1U&6b!hBuQ0U{Wfvd*g1^3u++y$wH;bfk!etIu_g@;^sVTrf@=#IR1L3kJ8cO4 zy^T&oXVD^I294ZX%(9`-6m=I?NyGV9puS%G7~*{BYkcmvceS_nNx!Y(ep)s>Ia^G% zWPBp>@CeI?#}5UT7VF~pV0zwm?cU4h4+GNp>i4|Q*MH&HsGI-g8y=%Eu)F@wLm{0m zax%Gs3;^EJK69J0( z(+8{SX1}H~Yjk_g)Z%enB&ZJgEA~L>j+lGIWJ)UG$G0J$*to)7pHSUm?p;mYq-cBp zE6OL~b0GeKZpA*u!!_yp>vnA4wqKMH1$I3q7DDLMF$EYRx5eHx#HIJo-9NeV>aw1WJ@oM&^N83s|=cPIO@ zNI1f~2brjbaG)P0lCZHl;GV}GiXWn3#5f>Vlhq!=&EyUUZ!$k^%b$X0nC?BGo{$tt=%aaTd3k#erM$1PfQPS2~3uE?Xo;C`#r0VAzd zZ#Ok-)R9gU7xMqvH~+&rjb`oE?dwN3bGLozJ8|v$lPP~$hkOU4)I6N#t@Sj%UvGeJ zo2&J8!1&OZMRmL+i9VlIZ!()b9y5?1Hm^_AA;*m3K5~sZ2ap*Zi2Youh0rtbt`!T} zwj{B2!e`@*xWX2*q(ivM!P%KzO`hg;)f|tIaS%XijaF=fMx)ZHI32uE!1jp9Ov0*$ z;;VvrK+bHvLdR24!e(?zK8DOZw>XPdlw%0`3Q3+#06-X8$o+d;L8K10O(E@8gW*ldr6L6k#Wrr$S zBt?(vJLPknI$BmnU8-QT48V2UOZ9hN<{zD_U#ed^B#JuW^cew}`01DGZ@>I9=YOVt zxqiBS`5Df4UKu-m@$CFdW0@CT$c*vAJ@*KF?d-+V^S^%fzKa*{d-f#BYts84Q|gof z>}{JA+mS;8F5)fIlM};3y{MZ910X^9BQ6Ibv;*7#5MQ;Mw!-S!zM0ptW;q!^fAOp|~# z0bc-KqrL_Pn)n@%0SWbo+;pT3({7jte?O^!t_5Fr9E`E_NBR#r#H3E+2-T6`jkX3g z240YZfmCj|89`HH&Pb*07 zwr$((For5~V|-$Bi`mT!FKSX=Pef3uzzb$pS&WvXP9@gez6Z|>{PPhXXO7yQziZF^ zxxB}|KW?}2L%b&npvv8-fT%VUEORE4J#_0Wv5+vV*{+>1szWwo{hTicJQ)B|=mVmL z7rBh{=}&uQeNE;uGAROzuTj+s42%ulL#Uk4Lu9{LzXkhhKnF?e0ofS35n?2Wm5BQh zIz$C@2-|D1-NH8p+%~OQ6@1F1nb3g*_~1w1gaIdD+vPv@HndF3@R}opL_<>~jXhds zuW1Mzh~V^a-@U*&x##Myg2GSOX5GeJyiosXeVFS+nhd@E+Y21fv~alSj`HSXwF~u~ z^&fDZ@~cbq1Wbp05}2rF)Q`Hk=G=Y5_N^N?4D=y-*^bV!fE$oJtF>#uQ3*N=jmn2R zLph^DFbGJ(W@Y`Lp^!Z^G>A6%KWIK;4$D**gpAQ*H$-m{+8Js)9heI%N^VlJKPaVa zL3L--3+k#TPjk&)Fmt?3CR|KhHrI?rXl*%FM#N1WF+>3p6Uw^wh~pkiIjXle4c=L#dGLd_RU zWe2sZnl09m?69wiQ(NqIPpq1#Z5yjrefR8rG@#)$&u7xrk(<_zCN%ea?%N&h)oP~H z7H)C53=WksqBFa#cB>mC@>0xW3%cE?hv&47b`_&>i_^$kbylM9u%65$cDtl2(9#YJwM z;Z)k2AQd2PxPzP?X@?LXDxDVT21*^!O)xJJ4PjOV2fQi|o_QY02O7NyZh8Z!h5%Bt zjR~qe{Ju1RdJwPCFzZo&8`E8+17HVh&Qsdxp5Ok3O0f0)yM1Hrrr+bs6uchU3!l7w zvM$S}YGYo>00#=8Qt%Y26KPM(gqA1a@(Ic|S@{pk{dqPvk8y_>rZN7f3-LeZcNyF) z`2?ILZk?#163;qwaw;B=NLE`SR5hs#0@Ai4&VWwB-}QQXb}yJ%N~8 z)R}BLofVw>cB9d(wV70!jME2KnFPn3QO!3k^8ng6c85{!bM|50xv@JQHHBv%77&V{ z{qYp^jW(^L^tY%KrJOx4*d#7QF4Xa$aIG=0COw% zMQ(KD)BE@D`x=+r{qq~1O(sKM+qZx3?SIS*U;fOed+z?)Q%CP=e(zjo=fP*5;a=fF z&37Gr>gz`-V6E7wxTj`Kpk8=eD&Cdof~YgAk zJ|OH^E7%0EI6Fr<0fUvYFf70hOB zXzJvmp?w$BV{l`V_+znnQr#&y3k|4*o+70`11hDm^18c@{^eJXeCFh}+c!=6R0cCj z0%n>-=b`#bXEgfF)9;R7qt{&E9x>Y^sAcT**- z-mX%*H5&55+k`qADlO*A05a$(rU#1^K4R))FpjdFMhy~S1Vtd8AgBNrqcgIr#}gWZ!xfKJ*cES@-H}iY zX|gBK{Ds(*8gV^4W_4Jx8q9F;tlMqa2hd|>C-}-qO++s>p$EJ!3ULNy3ly)36;_Uh zQV3M`t0-i@ik2LySbZwFuq?xLg`s*NB7s^U&?70{@ML{Xx__UMJ66BAV$IC-(53^P zXXYQ?b!$<2n;$EF=g{O-m7lGj%4Sdeu+#h=mvAN$)mQFVw>r6{ero)fRR7H@JB~?u zQ0`M5YPp_(Ug5wzXoaV5wc=#Wzk1a`AGGKac&1a(PpJ@&i?Ohy>Lm8L+TJX-IJ6T76leRWS-9*j^xLrrDvCNOz7QB?~q5 zaD@u9m;O@rybhL1GR6~Iu_oL3}N*i5ibA?!7f~;v; z*`%OEJ9MI8Gzy~5Jmr=ow{eqCr}IhE0gWc0+hVnFqNp-hH8rCYZQpcE{yFe~~L*AafSuhz+`7003xRBrG#;V&lA^!h?Rgvoml|K)=g=+FUh zllifL825}ySw{Z>Do%yu$y6qScZAEZ#Nx0`=*YTCh{$#Z!p~%P6#w7iu01}A!g!(r^lX7FLV#x&As-7kQJSDLVyhj3=;Tp5|R)E0|o&G6GCIhbrstm*J%lH z-Nq%faVaG$>^L@cT{m?ahdPd%I4*S^LS5H&T^hTN;}U|8erI<^*ooUFe^oFyzn%Tf zcV55W?(95%<83Lw+GE386fe9O=5x7}p;Gu`O-$pOeK>wevFtmJ>O1cE&Ue4`nU&Xs z-+VActT5kMfrEC_!2)+Lcq zKgD{9GOVnlCwke?P!(4B@+F@`!$ZR>uDu4fdGIg}b6Xnx+zXtP=dP@;s;|I{QE`x? zN{-R(4NyUDg7S)0&uWZiYZ$V@Hi^=hQe2Q%P@IQlbxJwk?BA;3;8`4vhU(;BcO}>k z04a1}e>()+9Qd!q^1g!NQmi`1F6=^e0Xk-w6NbIGJTxv3DulT>Y|Q1}{6fEjznnZ~ zJ8`UQZfQYjZo#jf4aHt+!{X+Jzg8|v+`a!_<+pllrmmH8i)2_R!h04FXLHEA6LVph z0LQctR<>cf3@=Wci-vwzHJa*BikEc$ODi5bv6O~Bv$3i*SIs^XuX6=lIM;A%41(S_UE^;E1%6Oj z&{5r?+wE^$LCdR;Y*^JXkeAcm(b^te?a=J%UD<4Ndrg~7z5l6pXEmuOXj{TRJkSu= zVX3*SVz|RcYG?bB#jci#MYUhiJf)S)RYSekUB~5DtXHVSIyb(5bupf!xAithBaP@{ z4RITLJxM*XIEppQ0bgTtV{>ga-W`s@eEu|D-qKX>;-d*3SSchJ*x_$iYz|Q{W`%)x z*sj1lH@?$3i7l?;_+va-KBhaw*C$wKJV5*Tu!5=RP<7ZLMDG@z7JC9?5<$L6hWBOo zPz06^qtd}>wp$zT4GTkN>i1vD+#@6xD;rljE7Y*-Rzv1?cM?CjrG9MgS zy?4TScsj9q*(b|Z&OBTGxtq4YUdW<#WRRn~!?(EG?_2b6Q%$v}$yw9H`zd@(&{}I# zh<8*A-cWPB*i_2TKxk`itaG+hH&>xQi|=8=Gt`>Rk=tT>p}7*Bxx`+R_lRH!Zq$8+29jzK92>JYbxVPkiF}3z4w8Y#?~o1#<>scE=j% zt0zy4U?!p|=HV@hXH_)9twz|!U^TlqyMz4M%k8#1>zvshdhhaqcFM`Vq|P=}K6fd5 z^b&K{T_Qib^c(a*4%06UERw7 zS=>W^N0lc}W-nyl9vv~L!loJ7A7?L|T(^!Yslu>yYK!_q+b~wsdtnb$S6X{>YGB>n z*XxS;eJ;~DRbiphnBb-~a;>$yJeigfLVLG4?C4_Q;qJhxO4hfJ)5cGTH=8`y^uUJI ztciFK5pYWlEWCG3?^gYVRO+_V`%|?qbZzZjR_*NQ+#KpZp!OthaMw2mvr8<$_t2{# zoO#XlJvj$@yZc-H%};1FRoI%Q{`A5{G}Uyv*|&UI|GM1ubn>jdxxw9;+)#H8o_>?7 z^<4G^P%ZtjisqcN&Aj!vTlMboMK_mr|5Pcmy~(Tj`EM@%+Pn`dzqX&DHuwrBJXOs< z#IdcpvPD^s&t&}Ber6(B_bi5b+NyZakFUlWn^JXLxC!)RB1)<4m{Msw3V*+F_rd4x zj8d9|_XT&hcTK;X(^#)jYT`Vpxad9Hn}X~4WuK>Gdt51{w=Cbb1O8E^%;f#Hz(9UX z{Bt-%>n?=#n>-dCFmaEkX{O8bX!7#B)>yQ8-GO*#l}3?Ai^qz~amsAxQNAx@;{)=} zomwGqczMs^`djdw@OfTv`kKiDnqQlFMS9|1sqH7QM99+zzbvzv2bmtfw-0G@UpVy- zKtBL?LMgX#8g-&xXJVF_xFTOXFSa-wk0C!|;(O z-j-&$kyo?6z+=iq2tKd7J(e@&2(rX^KI}|cdsmq+znPZ6l5!{IhnE+cU4}L+=XE4; zc>bXYrI7kk+t=aF;68ZO6-uS#Q7++n1osdQIk5P7Uh3D?6TF&W}1V z{Vxk&gqv-`@9&30x+YJ%<(ql_a9k0`ECa%&Z`K*-L;INVpHKoO9uKR7>w%N`fRD9y zmTYsH*I|yR7sqHOWf;#U@=7aU!1spL?}TcstX zYf2w3D=Rx#u9n|fejWw^CMu3PavZ&mQp-?I-d=-ht`Dd51k3U zAFc^^g>MKS3?B=h3BSXftcy*v!|W;cGJA_%jyNM-ku8xUk*6c)qs37@x;}a;mLJQ+ zj>KM!PsAUKzn`dqt%w7OM-p%7&H9LbkN#p(OWu}zrK_*&;YGcRp6%}LKDT&$@$)@e z&w*>Et~t@$(R=t4PxrOMik^@Vg z9_ko6IAknsSbBWfk!9KC2baHo?K9UswxW2&o)wo?&a8ZX)y%3h!>z-wtlqz7c+KhS zr>=i(?G0$U-<-~9nVT}F$7;sz8CN&5je9n} zJQ14IHx+L>G_6dJOux7J(3a4a%b)z-*7VjFZW+GiwQarIUfjNAN7t?XTi@K-x2t9s zjPLCJ-X7Jc=0ada%TeaF6?n>S6* zXzi(m8ViM)Hoi~mAKSKha;w(2bN9x{fo(JUc5J_Pa$@uDThiON&7`;Q+%&1NU`XrI zta~8B;Q;>g=vL6$$(_44Z{Mbc!L~@7nVA~fJ+pm!^EM>2Clu5dYJn*&Fo^U*T41LZ z!|$$1GaV(RY*%(D`(PJ*v$6>~I-~IQ(J6dwX!s%wVLbx_H4Y99H9w|o1K*^w6<2+T zvs>ASs{w@0fMW-+uEq5Pcy?p0OB&bw4)=EgebU4X0#(E6F6|@ntdKC$3&8PTnfiy( z*8*dwvJ3beSp%Piwg~hL{!Jl=yWwv~Nj95l^U~}=ib3=jd6@#>;lG3UZbup(;!ST4$)FtM$741x{g-RN?Jw3w3^n? z^|Y4O(Fl#wdfGrY(2aBx-Aox8qjB0u6EsOvw27u^Gi{+y(pI{Kw$XOlLAPR3a2L(c zZrVe8={DL&`{{P9>;DuTq)*c!`VBnS@1Q&Bvve2zCf!ZHMYHrdx`*zi`!Ex8Km9g6 zK%b}Iq2I-sY+s-w^hJ7*evcla-^YaWm*`>oLpn-drepL+^vCoSdW8Ojj? zuk1T9_eomL^1Ip4BEIr2;7RJjl z5r$LPF{ce%_gJWdvET)2iCW5!(uK_c2h3kqsZO<8tx;=Lm+H1}+PZJYblCEk<%KLS zVtG-^i&5mJsKAQ~yr{s7 z3cRSmiwV4#z>5jIn81q(yqLg)Whk?rV*)QG@L~clF7V<4FD~$~kKK$H7kF`j7Z-SO zffpBeaeeYT_jXUP9m{1YSbmB?MkV;OPQS7kIkB(*>R`@N|Kv3p`!m z=>ks|cu9em6nII2mlSwOftM6`Nr9IXcu9emOy&#u4M`#_2_}h%B%+dtNg^(Zgd}uH zNaV0Y4ol>)L=H>jutW|^e6ME|KFBIWCdo5;-oBv9Haly0}D+OXP$^ zPDtd0L{3QLghWnAPDo^3BI^=am&m$A)+Mqok#&izOJrRl>k>IBk&_ZR zDUp*BIVq8o5;-Z6lM*>8k);lze`r+{dX|z9$Sfp~Sx6wWkU(Z3fy_bznS}&03yD1A z5Jv$hb&yFNWKsv2)Ilb7kVze6QU{sTK_+#ONgZTT2bt7CCUuZW9b{4mnbbihb&yFN zWKsv2)Ilb7kVze6QU{sTK_+#ONgZTT2bt7CCUuZW9b{4mnbbihb&yFNWKsv2)Ilb7 zkVze6QU{sTK_+#ONgZTT2eDRDw1w0`CUuZW9b{4mnbbihb&yFNWKsv2)IppRB9NsH zGO2@1>L8Ok$fOQ3se?@FAd@=Cqz*EvgG}lm<{d;@QU{sTK_+#ONgZTT2bt7Crt=k* z7@59u#T=iw+Ox+DpP~4*2}8?Fc@1Ud$mD3iAOvW}Gb@dp*7Zitz=jcz*W;cY(TtTV zM?6OFs9Q61PU)kgnvp*+Hes~$%lrY&!1{iV5#k)rtQ^s%wAtA)jT=_UAVlN$3ON<$ zR6OI(z!ZnuP<*4KB5fqD`i(qqpJ9hnxJw!K)T$99FXcOh5~MPHhI6tGd^SJsX-HBX z*l5tec&0yKS~A+etapqT#!Opr^ZXf_8)c9w8nzbiSU=+C`sZ?U2Mihm zZTB0L(KMqVwUpNh2yfr0QOK``aaD+`fRV=&Gt`zok*~P|&~t_OG05rF0F1Q2k<-#Q zJF6idhP}h%MFNsW$<6q{Fz<~by+Nchm@y8GUoF?1qBy+$2Bi$8=M-#ap$Y;Xc-_rT7;#CeY2UlJk{rJLf#7eMy~IFH2)aj>fQtM^q0cDn2pGkFO&dg=$m;fv>0WL2`jKA@bn|EnWcE-MMsbHhRUtE9B_GPy zFWf5iYcZr9Fv|RjVYAv4q9N1cq~d(cl-&LvuRe!E&5^5ezt)W$NUjX3bW9Hz75-p# zcffFb%w1IEMsQU6=Tybnq6M`V+#qk?DF5f0RxXc=cu+;?1ki2xg$la8p3$p_Xtruz91UsYwu<6-yHUy-GuX)Y z_TgUIiwg6h^#ew&S$gD56?LPm83}6Lcvx8SBrD`<<=I=1nIYUAGiYF=cihrkuc%LC zCt$clVkudn8UAcS0c4%K{a!7|OP+=<2lGq}6X!`6T#9^0m-!IDNB_7cLmH(3xM# zJDMtJ6rl)hW_@y5lhqGFf=X&Z$h%d_X8&A19w_rNDJ$v!l)AxRPtbVvas}`9>Tb`6 z8r?H0GUD}fc`%xg?G|2k*$nNxxE|hCJWC?q^CfKJB^*E^k6##W z;QCFf4phLb7zEejBIq}2=D9ohg~=TDbC9LM(sRngkPAfQIq1VF_Yq~alhf3 zXHD=6lT|k<&YCnS&f4Y2&m!@JGrH!VZg@5=dqR0`cw~;~zR@T1F;%%y!^5N>?*i|R ZQ#tK<1H=7K(3Q^`Irq-xVt`Rm{u{OU##{gZ diff --git a/src/components/UI/icon/entypo.svg b/src/components/UI/icon/entypo.svg deleted file mode 100644 index 86b3b308..00000000 --- a/src/components/UI/icon/entypo.svg +++ /dev/null @@ -1,834 +0,0 @@ - - - - -Created by FontForge 20110222 at Sun Nov 11 15:34:13 2012 - By Vitaly,,, -Copyright (C) 2012 by Daniel Bruce - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/UI/icon/entypo.ttf b/src/components/UI/icon/entypo.ttf deleted file mode 100644 index 331ea3a1bc84b9d20d2b9eaf3b8a08c32428f01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75800 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 J1pq_<003+=_cH(h diff --git a/src/components/UI/icon/icons.eot b/src/components/UI/icon/icons.eot new file mode 100755 index 0000000000000000000000000000000000000000..f496249cb172d5b22f1e9cb2c5fd98172edd1f5c GIT binary patch literal 80704 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 literal 0 HcmV?d00001 diff --git a/src/components/UI/icon/icons.svg b/src/components/UI/icon/icons.svg new file mode 100755 index 00000000..bf34e1b6 --- /dev/null +++ b/src/components/UI/icon/icons.svg @@ -0,0 +1,634 @@ + + + +Copyright (C) 2016 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/UI/icon/icons.ttf b/src/components/UI/icon/icons.ttf new file mode 100755 index 0000000000000000000000000000000000000000..12436508d3eb2166e89cbf98f40b5f126a3b63d9 GIT binary patch literal 80548 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

    k}e5Z$6gl#kUwguWRGsPGl#%Vm1G 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

      QqHxQ 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ü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 YYN+dQ#t+qUli)*Id7tx46|wQ5wgYO+69 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 z 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

      0=<9E;A8cD&!CIm%me3npPkqh|Xqo84U-+o~EN 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 z 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 literal 0 HcmV?d00001 diff --git a/src/components/stories/Icon.js b/src/components/stories/Icon.js index eb36f842..207daf60 100644 --- a/src/components/stories/Icon.js +++ b/src/components/stories/Icon.js @@ -11,6 +11,34 @@ const style = { storiesOf('Icon', module) .add('Default View', () => (

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,7 +73,7 @@ storiesOf('Icon', module) - + @@ -63,7 +91,7 @@ storiesOf('Icon', module) - + From d7c7ba4cdc035f22b433aca8bd604f58669cff27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 3 Aug 2016 12:02:10 -0300 Subject: [PATCH 06/29] Icons for hover menu --- src/components/Widgets/MarkdownControl.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index fe16e77a..13e02dca 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -4,6 +4,7 @@ import Portal from 'react-portal'; import position from 'selection-position'; import Markdown from 'slate-markdown-serializer'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; +import { Icon } from '../UI'; import styles from './MarkdownControl.css'; const markdown = new Markdown(); @@ -166,13 +167,13 @@ class MarkdownControl extends React.Component { return (
      - {this.renderMarkButton('bold', 'b')} - {this.renderMarkButton('italic', 'i')} + {this.renderMarkButton('bold', 'bold')} + {this.renderMarkButton('italic', 'italic')} {this.renderMarkButton('code', 'code')} {this.renderBlockButton('heading1', 'h1')} {this.renderBlockButton('heading2', 'h2')} - {this.renderBlockButton('block-quote', 'blockquote')} - {this.renderBlockButton('bulleted-list', 'ul')} + {this.renderBlockButton('block-quote', 'quote-left')} + {this.renderBlockButton('bulleted-list', 'list-bullet')}
      ); @@ -184,7 +185,7 @@ class MarkdownControl extends React.Component { return ( - {icon} + ); } @@ -195,7 +196,7 @@ class MarkdownControl extends React.Component { return ( - {icon} + ); } From 62d6ece75843bfce9d9a1b62f4404a186402b080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 3 Aug 2016 18:39:00 -0300 Subject: [PATCH 07/29] Floating button to add different block types --- src/components/Widgets/MarkdownControl.js | 34 +++++++++++++++++-- .../MarkdownControlElements/AddBlock.css | 10 ++++++ .../MarkdownControlElements/AddBlock.js | 13 +++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/components/Widgets/MarkdownControlElements/AddBlock.css create mode 100644 src/components/Widgets/MarkdownControlElements/AddBlock.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 13e02dca..15daa406 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -4,6 +4,7 @@ import Portal from 'react-portal'; import position from 'selection-position'; import Markdown from 'slate-markdown-serializer'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; +import AddBlock from './MarkdownControlElements/AddBlock'; import { Icon } from '../UI'; import styles from './MarkdownControl.css'; @@ -17,17 +18,22 @@ class MarkdownControl extends React.Component { super(props); this.blockEdit = false; this.state = { - state: props.value ? markdown.deserialize(props.value) : Plain.deserialize('') + state: props.value ? markdown.deserialize(props.value) : Plain.deserialize(''), + addBlockButton:{ + show: false + } }; this.hasMark = this.hasMark.bind(this); this.hasBlock = this.hasBlock.bind(this); this.handleChange = this.handleChange.bind(this); this.handleDocumentChange = this.handleDocumentChange.bind(this); + this.maybeShowBlockAddButton = this.maybeShowBlockAddButton.bind(this); this.onClickMark = this.onClickMark.bind(this); this.onClickBlock = this.onClickBlock.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.renderMenu = this.renderMenu.bind(this); + this.renderAddBlock = this.renderAddBlock.bind(this); this.renderMarkButton = this.renderMarkButton.bind(this); this.renderBlockButton = this.renderBlockButton.bind(this); this.renderNode = this.renderNode.bind(this); @@ -69,7 +75,8 @@ class MarkdownControl extends React.Component { if (this.blockEdit) { this.blockEdit = false; } else { - this.setState({ state }); + + this.setState({ state }, this.maybeShowBlockAddButton); } } @@ -77,6 +84,22 @@ class MarkdownControl extends React.Component { this.props.onChange(markdown.serialize(state)); } + maybeShowBlockAddButton() { + if (this.state.state.blocks.get(0).isEmpty) { + const rect = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`)[0].getBoundingClientRect(); + this.setState({ addBlockButton: { + show: true, + top: rect.top + window.scrollY + 2, + left: rect.left + window.scrollX - 28 + } }); + + } else { + this.setState({ addBlockButton: { + show: false + } }); + } + } + /** * Toggle marks / blocks when button is clicked */ @@ -179,6 +202,12 @@ class MarkdownControl extends React.Component { ); } + renderAddBlock() { + return ( + this.state.addBlockButton.show ? : null + ); + } + renderMarkButton(type, icon) { const isActive = this.hasMark(type); const onMouseDown = e => this.onClickMark(e, type); @@ -233,6 +262,7 @@ class MarkdownControl extends React.Component { return (
      {this.renderMenu()} + {this.renderAddBlock()} + ); +} From 36a344f34a84cd77d2fa21cded143222e655345f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 4 Aug 2016 15:49:43 -0300 Subject: [PATCH 08/29] refactor: moved styles menu to external component --- .eslintrc | 1 - src/components/Widgets/MarkdownControl.js | 153 ++++++------------ .../Widgets/MarkdownControlElements/Block.js | 2 +- .../MarkdownControlElements/StylesMenu.css | 39 +++++ .../MarkdownControlElements/StylesMenu.js | 127 +++++++++++++++ .../MarkdownControlElements/localRenderers.js | 2 +- 6 files changed, 213 insertions(+), 111 deletions(-) create mode 100644 src/components/Widgets/MarkdownControlElements/StylesMenu.css create mode 100644 src/components/Widgets/MarkdownControlElements/StylesMenu.js diff --git a/.eslintrc b/.eslintrc index 99f891d9..b2c61e21 100644 --- a/.eslintrc +++ b/.eslintrc @@ -97,7 +97,6 @@ rules: react/jsx-no-duplicate-props: 1 react/jsx-no-undef: 1 react/jsx-pascal-case: 1 - react/jsx-sort-prop-types: 1 react/jsx-uses-react: 1 react/jsx-uses-vars: 1 react/no-danger: 1 diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 15daa406..76e8727f 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,12 +1,10 @@ import React, { PropTypes } from 'react'; import { Editor, Plain } from 'slate'; -import Portal from 'react-portal'; import position from 'selection-position'; import Markdown from 'slate-markdown-serializer'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; +import StylesMenu from './MarkdownControlElements/StylesMenu'; import AddBlock from './MarkdownControlElements/AddBlock'; -import { Icon } from '../UI'; -import styles from './MarkdownControl.css'; const markdown = new Markdown(); @@ -17,6 +15,13 @@ class MarkdownControl extends React.Component { constructor(props) { super(props); this.blockEdit = false; + this.stylesMenuPosition = { + top: 0, + left: 0, + width: 0, + height: 0 + }; + this.state = { state: props.value ? markdown.deserialize(props.value) : Plain.deserialize(''), addBlockButton:{ @@ -24,46 +29,17 @@ class MarkdownControl extends React.Component { } }; - this.hasMark = this.hasMark.bind(this); - this.hasBlock = this.hasBlock.bind(this); this.handleChange = this.handleChange.bind(this); this.handleDocumentChange = this.handleDocumentChange.bind(this); this.maybeShowBlockAddButton = this.maybeShowBlockAddButton.bind(this); - this.onClickMark = this.onClickMark.bind(this); - this.onClickBlock = this.onClickBlock.bind(this); + this.handleMarkStyleClick = this.handleMarkStyleClick.bind(this); + this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); - this.renderMenu = this.renderMenu.bind(this); this.renderAddBlock = this.renderAddBlock.bind(this); - this.renderMarkButton = this.renderMarkButton.bind(this); - this.renderBlockButton = this.renderBlockButton.bind(this); this.renderNode = this.renderNode.bind(this); this.renderMark = this.renderMark.bind(this); - this.handleOpen = this.handleOpen.bind(this); - this.updateMenu = this.updateMenu.bind(this); } - /** - * On update, update the menu. - */ - componentDidMount() { - this.updateMenu(); - } - - componentDidUpdate() { - this.updateMenu(); - } - - /** - * Used to set toolbar buttons to active state - */ - hasMark(type) { - const { state } = this.state; - return state.marks.some(mark => mark.type == type); - } - hasBlock(type) { - const { state } = this.state; - return state.blocks.some(node => node.type == type); - } /** * Slate keeps track of selections, scroll position etc. @@ -103,7 +79,7 @@ class MarkdownControl extends React.Component { /** * Toggle marks / blocks when button is clicked */ - onClickMark(e, type) { + handleMarkStyleClick(type) { let { state } = this.state; state = state @@ -114,29 +90,13 @@ class MarkdownControl extends React.Component { this.setState({ state }); } - handleKeyDown(evt) { - if (evt.shiftKey && evt.key === 'Enter') { - this.blockEdit = true; - let { state } = this.state; - state = state - .transform() - .insertText(' \n') - .apply(); - - this.setState({ state }); - } - } - - onClickBlock(e, type) { - e.preventDefault(); + handleBlockStyleClick(type, isActive, isList) { let { state } = this.state; let transform = state.transform(); const { document } = state; // Handle everything but list buttons. if (type != 'bulleted-list' && type != 'numbered-list') { - const isActive = this.hasBlock(type); - const isList = this.hasBlock('list-item'); if (isList) { transform = transform @@ -153,7 +113,6 @@ class MarkdownControl extends React.Component { // Handle the extra wrapping required for list buttons. else { - const isList = this.hasBlock('list-item'); const isType = state.blocks.some((block) => { return !!document.getClosest(block, parent => parent.type == type); }); @@ -177,29 +136,17 @@ class MarkdownControl extends React.Component { this.setState({ state }); } - /** - * When the portal opens, cache the menu element. - */ - handleOpen(portal) { - this.setState({ menu: portal.firstChild }); - } + handleKeyDown(evt) { + if (evt.shiftKey && evt.key === 'Enter') { + this.blockEdit = true; + let { state } = this.state; + state = state + .transform() + .insertText(' \n') + .apply(); - renderMenu() { - const { state } = this.state; - const isOpen = state.isExpanded && state.isFocused; - return ( - -
      - {this.renderMarkButton('bold', 'bold')} - {this.renderMarkButton('italic', 'italic')} - {this.renderMarkButton('code', 'code')} - {this.renderBlockButton('heading1', 'h1')} - {this.renderBlockButton('heading2', 'h2')} - {this.renderBlockButton('block-quote', 'quote-left')} - {this.renderBlockButton('bulleted-list', 'list-bullet')} -
      -
      - ); + this.setState({ state }); + } } renderAddBlock() { @@ -208,28 +155,6 @@ class MarkdownControl extends React.Component { ); } - renderMarkButton(type, icon) { - const isActive = this.hasMark(type); - const onMouseDown = e => this.onClickMark(e, type); - - return ( - - - - ); - } - - renderBlockButton(type, icon) { - const isActive = this.hasBlock(type); - const onMouseDown = e => this.onClickBlock(e, type); - - return ( - - - - ); - } - /** * Return renderers for Slate */ @@ -243,25 +168,37 @@ class MarkdownControl extends React.Component { /** * Update the menu's absolute position. */ - updateMenu() { - const { menu, state } = this.state; - if (!menu) return; + renderStylesMenu() { + const { state } = this.state; + const rect = position(); - if (state.isBlurred || state.isCollapsed) { - menu.removeAttribute('style'); - return; + const isOpen = !(state.isBlurred || state.isCollapsed); + + if (isOpen) { + this.stylesMenuPosition = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + width: rect.width, + height: rect.height + }; } - const rect = position(); - menu.style.opacity = 1; - menu.style.top = `${rect.top + window.scrollY - menu.offsetHeight}px`; - menu.style.left = `${rect.left + window.scrollX - menu.offsetWidth / 2 + rect.width / 2}px`; + return ( + + ); } render() { return (
      - {this.renderMenu()} + {this.renderStylesMenu()} {this.renderAddBlock()} * { + display: inline-block; +} + +.menu > * + * { + margin-left: 10px; +} + +.hoverMenu { + padding: 8px 7px 6px; + position: absolute; + z-index: 1; + top: -10000px; + left: -10000px; + margin-top: -6px; + opacity: 0; + background-color: #222; + border-radius: 4px; + transition: opacity .75s; +} + +.hoverMenu .button { + color: #aaa; +} + +.hoverMenu .button[data-active="true"] { + color: #fff; +} diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.js b/src/components/Widgets/MarkdownControlElements/StylesMenu.js new file mode 100644 index 00000000..cdce2dd1 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/StylesMenu.js @@ -0,0 +1,127 @@ +import React, { Component, PropTypes } from 'react'; +import Portal from 'react-portal'; +import { Icon } from '../../UI'; +import styles from './StylesMenu.css'; + +export default class StylesMenu extends Component { + + constructor(props) { + super(props); + + this.state = { + menu: null + }; + + this.hasMark = this.hasMark.bind(this); + this.hasBlock = this.hasBlock.bind(this); + this.renderMarkButton = this.renderMarkButton.bind(this); + this.renderBlockButton = this.renderBlockButton.bind(this); + this.updateMenuPosition = this.updateMenuPosition.bind(this); + this.handleMarkClick = this.handleMarkClick.bind(this); + this.handleBlockClick = this.handleBlockClick.bind(this); + this.handleOpen = this.handleOpen.bind(this); + } + + /** + * On update, update the menu. + */ + componentDidMount() { + this.updateMenuPosition(); + } + + componentDidUpdate() { + this.updateMenuPosition(); + } + + updateMenuPosition() { + const { menu } = this.state; + const { position } = this.props; + if (!menu) return; + + menu.style.opacity = 1; + menu.style.top = `${position.top - menu.offsetHeight}px`; + menu.style.left = `${position.left - menu.offsetWidth / 2 + position.width / 2}px`; + } + + /** + * Used to set toolbar buttons to active state + */ + hasMark(type) { + const { marks } = this.props; + return marks.some(mark => mark.type == type); + } + hasBlock(type) { + console.log(type); + const { blocks } = this.props; + return blocks.some(node => node.type == type); + } + + handleMarkClick(e, type) { + e.preventDefault(); + this.props.onClickMark(type); + } + + renderMarkButton(type, icon) { + const isActive = this.hasMark(type); + const onMouseDown = e => this.handleMarkClick(e, type); + return ( + + + + ); + } + + handleBlockClick(e, type) { + e.preventDefault(); + const isActive = this.hasBlock(type); + const isList = this.hasBlock('list-item'); + this.props.onClickBlock(type, isActive, isList); + } + + renderBlockButton(type, icon) { + const isActive = this.hasBlock(type); + const onMouseDown = e => this.handleBlockClick(e, type); + return ( + + + + ); + } + + /** + * When the portal opens, cache the menu element. + */ + handleOpen(portal) { + this.setState({ menu: portal.firstChild }); + } + + render() { + const { isOpen } = this.props; + return ( + +
      + {this.renderMarkButton('bold', 'bold')} + {this.renderMarkButton('italic', 'italic')} + {this.renderMarkButton('code', 'code')} + {this.renderBlockButton('heading1', 'h1')} + {this.renderBlockButton('heading2', 'h2')} + {this.renderBlockButton('block-quote', 'quote-left')} + {this.renderBlockButton('bulleted-list', 'list-bullet')} +
      +
      + ); + } + +} + +StylesMenu.propTypes = { + isOpen: PropTypes.bool.isRequired, + position: PropTypes.shape({ + top: PropTypes.number.isRequired, + left: PropTypes.number.isRequired + }), + marks: PropTypes.object.isRequired, + blocks: PropTypes.object.isRequired, + onClickBlock: PropTypes.func.isRequired, + onClickMark: PropTypes.func.isRequired +}; diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index 7e955067..a931c9a7 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -10,7 +10,7 @@ export const DEFAULT_NODE = 'paragraph'; // Local node renderers. export const NODES = { 'block-quote': (props) => {props.children}, - 'bulleted-list': props =>
        {props.children}
      , + 'bulleted-list': props =>
        {props.children}
      , 'heading1': props => {props.children}, 'heading2': props => {props.children}, 'heading3': props => {props.children}, From 2334862083b4f273f22a38eeeae5d9d5634adc9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 4 Aug 2016 16:00:56 -0300 Subject: [PATCH 09/29] Bugfix verifying list items block --- .../Widgets/MarkdownControlElements/StylesMenu.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.js b/src/components/Widgets/MarkdownControlElements/StylesMenu.js index cdce2dd1..368f44a1 100644 --- a/src/components/Widgets/MarkdownControlElements/StylesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/StylesMenu.js @@ -51,7 +51,6 @@ export default class StylesMenu extends Component { return marks.some(mark => mark.type == type); } hasBlock(type) { - console.log(type); const { blocks } = this.props; return blocks.some(node => node.type == type); } @@ -78,8 +77,10 @@ export default class StylesMenu extends Component { this.props.onClickBlock(type, isActive, isList); } - renderBlockButton(type, icon) { - const isActive = this.hasBlock(type); + renderBlockButton(type, icon, checkType) { + checkType = checkType || type; + console.log(checkType) + const isActive = this.hasBlock(checkType); const onMouseDown = e => this.handleBlockClick(e, type); return ( @@ -106,7 +107,7 @@ export default class StylesMenu extends Component { {this.renderBlockButton('heading1', 'h1')} {this.renderBlockButton('heading2', 'h2')} {this.renderBlockButton('block-quote', 'quote-left')} - {this.renderBlockButton('bulleted-list', 'list-bullet')} + {this.renderBlockButton('bulleted-list', 'list-bullet', 'list-item')}
      ); From baf388039ef06579b7ac511bd222bb02659a9f49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Fri, 5 Aug 2016 13:19:31 -0300 Subject: [PATCH 10/29] Block menu implementation --- package.json | 4 +- src/components/UI/icon/Icon.css | 18 ++- src/components/UI/icon/Icon.js | 11 +- src/components/UI/icon/icons.eot | Bin 80704 -> 83416 bytes src/components/UI/icon/icons.svg | 52 ++++---- src/components/UI/icon/icons.ttf | Bin 80548 -> 83260 bytes src/components/UI/icon/icons.woff | Bin 48676 -> 50404 bytes src/components/UI/icon/icons.woff2 | Bin 39912 -> 41316 bytes src/components/Widgets/MarkdownControl.js | 113 ++++++++++-------- .../MarkdownControlElements/AddBlock.css | 10 -- .../MarkdownControlElements/AddBlock.js | 13 -- .../MarkdownControlElements/BlockStatic.css | 14 +++ .../MarkdownControlElements/BlockStatic.js | 19 +++ .../BlockTypesMenu.css | 28 +++++ .../MarkdownControlElements/BlockTypesMenu.js | 104 ++++++++++++++++ .../MarkdownControlElements/StylesMenu.js | 1 - .../MarkdownControlElements/localRenderers.js | 2 + src/components/stories/Icon.js | 2 + 18 files changed, 288 insertions(+), 103 deletions(-) delete mode 100644 src/components/Widgets/MarkdownControlElements/AddBlock.css delete mode 100644 src/components/Widgets/MarkdownControlElements/AddBlock.js create mode 100644 src/components/Widgets/MarkdownControlElements/BlockStatic.css create mode 100644 src/components/Widgets/MarkdownControlElements/BlockStatic.js create mode 100644 src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css create mode 100644 src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js diff --git a/package.json b/package.json index c3297e4d..837264bb 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "pluralize": "^3.0.0", "react-portal": "^2.2.1", "selection-position": "^1.0.0", - "slate": "^0.10.1", - "slate-markdown-serializer": "^0.1.2" + "slate": "^0.11.0", + "slate-markdown-serializer": "^0.1.3" } } diff --git a/src/components/UI/icon/Icon.css b/src/components/UI/icon/Icon.css index 43465e3f..af041851 100644 --- a/src/components/UI/icon/Icon.css +++ b/src/components/UI/icon/Icon.css @@ -57,8 +57,8 @@ .user:before { content: '\e816'; } /* '' */ .users:before { content: '\e817'; } /* '' */ .user-add:before { content: '\e818'; } /* '' */ -.video:before { content: '\e819'; } /* '' */ -.picture:before { content: '\e81a'; } /* '' */ +.video-alt:before { content: '\e819'; } /* '' */ +.picture-alt:before { content: '\e81a'; } /* '' */ .camera:before { content: '\e81b'; } /* '' */ .layout:before { content: '\e81c'; } /* '' */ .menu:before { content: '\e81d'; } /* '' */ @@ -130,12 +130,12 @@ .fast-forward:before { content: '\e85f'; } /* '' */ .fast-backward:before { content: '\e860'; } /* '' */ .progress-0:before { content: '\e861'; } /* '' */ -.progress-1:before { content: '\e862'; } /* '' */ +.progress-alt:before { content: '\e862'; } /* '' */ .progress-2:before { content: '\e863'; } /* '' */ .progress-3:before { content: '\e864'; } /* '' */ .target:before { content: '\e865'; } /* '' */ .palette:before { content: '\e866'; } /* '' */ -.list-1:before { content: '\e867'; } /* '' */ +.list-alt:before { content: '\e867'; } /* '' */ .list-add:before { content: '\e868'; } /* '' */ .signal:before { content: '\e869'; } /* '' */ .trophy:before { content: '\e86a'; } /* '' */ @@ -280,16 +280,22 @@ .clock:before { content: '\e8f5'; } /* '' */ .hourglass:before { content: '\e8f6'; } /* '' */ .link-alt:before { content: '\e8f7'; } /* '' */ -.h1:before { content: '\e8f8'; } /* '' */ -.h2:before { content: '\e8f9'; } /* '' */ +.video:before { content: '\e8f8'; } /* '' */ +.h1:before { content: '\e8f9'; } /* '' */ +.picture:before { content: '\e8fa'; } /* '' */ +.scissors:before { content: '\e8fb'; } /* '' */ +.h2:before { content: '\e8fc'; } /* '' */ .list-bullet:before { content: '\f0ca'; } /* '' */ .list-numbered:before { content: '\f0cb'; } /* '' */ .strike:before { content: '\f0cc'; } /* '' */ .underline:before { content: '\f0cd'; } /* '' */ .table:before { content: '\f0ce'; } /* '' */ +.columns:before { content: '\f0db'; } /* '' */ +.paste:before { content: '\f0ea'; } /* '' */ .quote-left:before { content: '\f10d'; } /* '' */ .quote-right:before { content: '\f10e'; } /* '' */ .code-alt:before { content: '\f121'; } /* '' */ +.crop:before { content: '\f125'; } /* '' */ .unlink:before { content: '\f127'; } /* '' */ .superscript:before { content: '\f12b'; } /* '' */ .subscript:before { content: '\f12c'; } /* '' */ diff --git a/src/components/UI/icon/Icon.js b/src/components/UI/icon/Icon.js index 6104c9ab..a084f9ec 100644 --- a/src/components/UI/icon/Icon.js +++ b/src/components/UI/icon/Icon.js @@ -6,6 +6,7 @@ const availableIcons = [ 'bold', 'italic', 'list', 'font', 'text-height', 'text-width', 'align-left', 'align-center', 'align-right', 'align-justify', 'indent-left', 'indent-right', 'list-bullet', 'list-numbered', 'strike', 'underline', 'table', 'superscript', 'subscript', 'header', 'h1', 'h2', 'paragraph', 'link', 'unlink', 'quote-left', 'quote-right', 'code', + 'picture','video', // Entypo 'note', 'note-beamed', 'music', @@ -15,8 +16,8 @@ const availableIcons = [ 'heart', 'heart-empty', 'star', 'star-empty', 'user', 'users', 'user-add', - 'video', - 'picture', + 'video-alt', + 'picture-alt', 'camera', 'layout', 'menu', @@ -196,8 +197,10 @@ const iconPropType = (props, propName) => { } }; -export default function Icon({ style, className = '', type }) { - return ; +const noop = function() {}; + +export default function Icon({ style, className = '', type, onClick = noop}) { + return ; } Icon.propTypes = { diff --git a/src/components/UI/icon/icons.eot b/src/components/UI/icon/icons.eot index f496249cb172d5b22f1e9cb2c5fd98172edd1f5c..76ace2d0bd7c7dfb0804fe2a22f1b33c8b198122 100755 GIT binary patch delta 7288 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 - + - + - + - + - + @@ -500,37 +500,49 @@ - + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + diff --git a/src/components/UI/icon/icons.ttf b/src/components/UI/icon/icons.ttf index 12436508d3eb2166e89cbf98f40b5f126a3b63d9..f764608b50ec2b9bc8025a61901484bf367cb880 100755 GIT binary patch delta 7293 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 delta 4610 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 K2~QRHbbklOiu;HF diff --git a/src/components/UI/icon/icons.woff b/src/components/UI/icon/icons.woff index 6d4e3ef3861a4c9b0fdab89ed44fd9d700873edb..c7c398285b2536f33b1110a601d93ed04660ff81 100755 GIT binary patch delta 48025 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
      edTX2n2+K9BuA^q5|f?4Oj< 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ü#H?8C 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 diff --git a/src/components/UI/icon/icons.woff2 b/src/components/UI/icon/icons.woff2 index 1324aee65e434b5df12c5a83d1f63ae1e9fa6ca8..08903e524822b34094bde226524d050525a11d5f 100755 GIT binary patch literal 41316 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 literal 39912 zcmb4}Lv$q!u&raelXPs`Nk<*qww;`GY}>YN+dQ#t+qUli)*Id7tx46|wQ5wgYO+69 zc`+6cP>}y3^ArU6zXZx%^j{tQ|F!?8|L?$4fl>o0#epG$O|e6TfeQ+R32br%y4iasq)Mf()jH&frAwhtftvv4`4f(X9`fci$MD9Z7}&V1nU7r_~MOnu`TTgM-|7 z-mm@q{PdD&j^@9FevlF6(Ob`*b4b*n#0vp%@)b9ph=pbGg!qPaEPF`{K6GzUotodY5NT(+QaWuslAu zRlz{}?OT37NP$olSf#CbhkZeLr{P8k3XOSjtD9;$C-poK6PnFeqwkrF<>r^xrh+k2 zYcllHM)WZ(${$>6bY{8lP9(k_*7@Ui>a_ybg z;qiOPm5j72V0xIObT#NFg02p*8Yz}dm>f|89)}Mw~-(O zQMc{@4JMKwLhG1>$Jo7tsICAL*=Z$LDNAG24*`9bz4%-93Xc62{`pm~4~>F~iW-k1 zgn|l-7Eopo#Y{n*gd&BYXk7J%Z55th#lBO*A**a$oe#{A|0SDfV_e<5*j$oXvZc3T zqI=K?JYh*vwm#-*903pM3oyloL*F&6D|XQGF$w>QzxJ75K@XLZL!hU$G?s`sbP{uf z+40;-2NXIv+=cZkp!M&rEhZ9w8hD1dUjIDdDS~2fl`dowt?D17@{@bh0Cp~>Hd0Jx z8chFY=FZn}5>2i0-$SBk+gh5R4Epai#=2!H4$Mot_Njgcmj}X04Z@=uq%J&81#Z8R z5H2q^y(BUG6-KGU2wD~0j@`Pqb%0rQIG11*#o~PdX$)L#QHLu2`OL_DLAb+}fMWW5 z0OP`aWs-&zg0|7gu86Cob)xl>UB4MKp-80b`tpNTA@dYcM}vc=(h07uR1=kMsim|? zid&uV;NSlC1%=RHAa}keU~=L1xjQwut`Zv^2Ks z9jwXS=?Ef73f&}%zi$8Im#ydzuthW)5Jr3PHR!B&CA<7+nq+xM|M}}z(NaVx&#AXv z2VIzxa6#1^VI85MAe#<{64iaR*AY7CO_Z-}2^>KLPx#hn|DTy+wsiNxgot0}z zKSWX~ZGk0#V*Frly=dXFbv0&^x!5t4s_aRgEAjiZ zS5hRuRMW(egcSh<{NeQHAcxpn8)V`d&;6H1#2?7b&r&OQ$i8@S)5s>(Z8q5o^ZBgS z(8%FL2Zk%VslDMJ#ZhEGbWn)~0Vxi_aXtT}ZU})ju(JXV0F!QY5Xx3pLrQ-@igj_fp1z&Xaaqn+6=qmfP*~xvDMY}GL~wU!TlaWaXgsH>w72P zQriyr5fp)|3yatB*C?61p9$(NUe&^1gA>T(aKy&*7sDRP=9K3nFd=HMu!^8B$MC?IG z&LK?P1yGGeRGfuauEkuu31SUNW*muXF3D~@4RTFQbX<+NZ_RvseS`cT2S7-)l9bw& zs+Vx5)H)Zgo}dTk+*q=weoriUG;UoXk1V_;R9<9mbbf>m6jILUb$L8o50*0S_$#VK>l(i=jD>BYWb6O50GC%W zH;lzEqjc-FF9|$>IrZw7_#eQYdi_g6XrRBn0v=u{FyCGSk3bw4Z?A%fKLV_`*TEyC z1cuuyW#N?q%k8zY2+V=$_G(%9C%|@ly)44tz+iht9lTUvvAw1afjThRUR4Kw1=wt_ zt3${MjJ8+a#A^js+iPzUxB|27)i?29fZg``n}o=~z&izAyjWo2odz#~JTUQ2g%^JY z*m$SIOUMX}yi@AJs|8lxX>}3&17_Z-b>ZItJMZ+m2nm6qcZyzkxxmspO)mm{VCtQ! z7yb^g^-kA|@Gmg-PWcnB7g&3z{Yl^p%)L|p#Qy>I-svMeBq(6g2&tCAI_DF!1*gnn zato=S!g?DLAq2-WVNwjJq`^8G64M1I*I{xDsI9_!?h)YyC)!~$2nEsZX|4z51R)PlhVMld#QckZ@}bIjEw!*~{rstG&w8EX-&dHP@*(!x1X z4*B#6f|73}Pn|-i_8@Cco9mayZ{b2@JBCx^E?vgA-_x>?Sv+WWOTu%lZ?ErDx!;s` z!XSb>_DMx6zH{EbvOYdhUjK$J|LT{0Fp<#zR2;-Umb%PyL4Sd-*M+(U;PHYud+nj- zvECW|M*jOe(=|PJX7Qu!bewVh>u%cC$*CN*v_bji>~DEaUJ`3gcd>QDDxC<2+A4ez zLE86wA=9>zZC!H?yHvr@x`LeZ0*LfjUaMP9f_RYEXhO>N>iA}K5QLJ@&J^r00j!v0 zZ6l6lT*^5XKX{^U6YS$}_(!Vagj zqEmEx(>^ap1&YXLHv%7$0G;98Qu{7BF>!sx9$_2cu?=P0t?ZrlkM}70^5l7o2_Ee6 z-R(P*+Dxb=QfJ)_LCA{d-BUkkzWohve+WO#liT56kCG6{-BC26d4*8?9;LlSbYVBn z<#=U##I3~vhNH?x$FzulGPh1~&vpJv=oUiwvTVXK3lbEy0>Pao!V-2DiViv3FkmvO zf=*a}67o>HA-F;96+*^p556Da&ZUGomlmuh2rH+m4`CH8o6f@(szKonAb=3{!({me z9QFNpMv?76qz4#`2iR)TKHju_NI-WVtykoVLLL-~1qciq1OyH!STv|Vg`a@3Kpr;H zKIg0ljiICNG1qdQr){5W6f>c|0w3NaK%Z5825er$7{BozNT5v08KAOuu6dt3MIA|- zwu!weNGle?g{Lo!Or0|fr5vT@^ES&J)PW`It7OQt*+l7lwH9HH`*3F=R1aOpyJu|~ z`n=v@?wbMT?s1L|tw16!%8Fy0pbX zUY)Nsw5FM7Jp1VO*s~W}+*o$ZPMv8Fg4Bm({(te;EFTk;-$oLlVx9_lgjZFOr{VTge zxvA$9?@GG9R^{PH>Z;Yj7;?~KBz}-c=7SwJWJjt;=#JwOGJdU3jahL`Wl?n=$&Jsj`I!t32l?ocR$^wKSnaBu3JP(Jg zt^^coF(Awt&)*}?Z5yPB*=$4|OzSM&E;~~h7G|?A1#>MyS1@2h3dR=tGYVgw=JG8V z!u1Gc6A|XJUCDHZk*tj|bl1mk^(dCGU_X=udKBfG+q`q66>UjA{xh8gl?BpGHOEGL zds{~DT34}}cdh61?aQS;cheKlRH?uw%emr6UO_aI)Gp0iWo z!b{+lab>7*l&iyu!YmSq5Uw6W+c)lyQ?oNPdN_mL;~-NK))BVn`MzeQs0|C5()bkw z$qp()I1{hLypq4#cjlON$#iIsIFy0C|2BS2q|p*+Xha#V5^1IwE6x3>=V$8|bjA}83HmwD8Hv<^5qfya*|K_yx;r_n5mTSTv*FMp zLP@fWkqO&X5eWAM`>2gj)Dn-mpk^^QlOfW)C^In|h-G~WmE`mTz_TIE^qVN9iU*Or zKx%_i7G@GZRL|NLzKND+@IpasfS%farv^%g4HKa;i*~%c;aH5FjL0x02^<{pCE&SF zeaQwBu4#B}(GvY`ZnXl8CFha*SyfDPS&3&QdO@fZfkNq$UbOLy#XgvhCN;E1LwvRb zNVu+OQ{N1Bz;^7hm=p_w3g)3-0nYs)h5oQy09Z<|mla|iV_-Fhue+UI_X|=3?affr zfNb>1TEm?b3TG0#u-O`7CTu1s4RENT;#K$m@=;aDf>w%UY^R5mRP?kS!=eKi1(r_1@mOgyvsWqO)-t`Yz8A*NteR`QB(f7%I{87odw&RFM&akt&ux!ZwKlRm7oAih+quZw90d;7db z*W#jc?1&6@*PyNtC=tqo?K7ib7sKw0#qO{R>c*Z7TJ&Uf128dOl7z1~xEg)NFmm&@ew@ z6KoL}EC241qssAp)o-m@s?~Dym@{-8*0mF)Y^B-0^@^7$KIG1zyjP-Y8w1Bk zAsgcJUo8B#IGFzEG5wdGCM%>r{FWqHi#(pxp;t~@263m=A9~_YZ6I3vYIq1+ z%c@u8I+6uCW;>j1sI{xnhTgziFdW{A%`xPKo6$Td9CgDrLPOHu zfg4~s+!*6X9-Au9l~4UwrRZGt%{cv7`>@7rMY=jE@(iv_MH6iNj7G=M!x=(+y0eA2$J-|E*^RLZgd7DhS zs8~)>YL*Q#{p?Y#I!mq#P4X>PYkS#BWqTBRPN}+++w^pClnRM@2ZotcvcBl}aKpL7 zCEO+gkupZL5f{NW1}>37W52Z^NXh}XS06$*^(c|S{=y)#=`yq;rK8p^mtzxSaU+7g z=QcIoD6<{8`@K3S498II5cGZo51vtkxqC0l9OAjU_;~zQ+zbR4a<|b@sxF!iSl;|T zGS7>Z6?g2-wqr$gZzlP>18p28Z0X42S%vE8ua?*7)aYX()4wkqqDhRjP02q_M~KMI z%8l{nsm2mYPe^+W#1t$sPRtN7EsSY00-~NZI95jv_dLmjoQGbrM-OkqhkF^H&u^BD z2s?bN*0bWi*q{Fi#And1LTntbnX?^y;9!cCB-ubl#hH|d1Bu&E=}xMTa>TJ zFYTd}A*qp)3J8>XwB=pxc>cH4oP!Ey8w5uVl-WTS<{DTw^pQB0k!AFv(OHZ%ah1A? zc_qQL&MM!=MSes7fK|6&M_A)NRpW;nxDynC>;5Ry@hS8kmxNl73w(w)f_O&%d`=IN zFHSiuz>2KY~gA>vS|MFg?z__H7@rvueuuxz-{+fs-*8y%)_g!}K3aW$C;x1}Ou z-}$Qx`pwk>5rl}|bum^2qcUh}py~k&5q?u1Vy4U_fB6BmNeP~MQEDFB_O%y;v^lHq z-$$OU1Ul|in-IK5E_)_hdY-Hahw??uLL=F>c`5@{$9XBD;FtAE=WcH;Fwk_0WkDa| zm@MDmJTP6ths1cgHW*PnhePR!0jof$p{Nm(ppKCv@O0kI+B>+-`P3;a&7WnNvIrLa z5xO@srp)>sTHhW`` zK`>4yu*~`^eN}NtoY1m%rLxsQ!y(w36s|Nd^q=$K2-`%cgmyxA%A>oy&;kvVUr7qC zur`r%rf+tu+&Q)1>^c#s><(Qcl6nqT8?Q9HMSz~wy8A}%2|?;kB2oM+;j^M@=3X5g zx3Xm~d+pN)@9%eCjlSY1A2gF*7i7MYWfAdgiYZusE20B6RY|e}L68oKN!ayQA$-a$ zRT-?AT{V;4-OSfFyJ7$Qdtp}C;E`ma!YDOKuIF7dH~S@2$1*-9S{HpPY$ZulNcbuA zbWy(22)=OwWt}jV!_rn|Q!YY#Il8_^#SXu1^s6gsz!0&InB6bqK-2?PnjqrtYRDJ8l%@z8LEC?th{p#?PY zMS-aN<%Z7qCt{7N5S{PQg&N$3`LXUC0=eL#!(wz zJ-JhNEXkFZQaI|hbuBl%tJ=;_dvj=vxNBMMgvLSlH7@RpV1Xw=go^JLsODQ`*?DYQvupPHEs zHnorPhOr1k;az*cMg}1X_}`3WuP^j_5uxiK*1oZD2I)$nDzRJSWb$QC6*eE zkX&big4;BpH1xtxZMfNH@8mJ!=W!I3<{RrNj z7(E+S84(8GJJf*8O<1chDkx?X@UoO%ybII9?2~m6k2j~yR{F;^7+rv^ZoJpX_@~sL zb>k=I_uVh(EAx?(C^>k51n36Iy`ik_M&_u2N8zfOxk(;3v*?Sp3g$gTks#OnrvVPG zp#vWWYp#s^%5+vDfjl~qlEvFMpPbsIX{jOm)b+G5DYv8GZkIoJ-=DY*9>VE{rC3`4 zCW!=+h!QSq1pFzF?qZ)-KL#b9R`NQ=ZUJl9V*|(-n)tiDrOfi_n9Ml3d=BEEW{r_p z0)SSV@=>aGQBtXTu8fwW!HL;Yw9C>|gakguRBiaOgr7Ye3v9kiR%l;GHkk+I=LAmI!a+`LoF^ORT}y8APDsC zYdXm9Jsum8IaTujQ+{3@>##0x8(p#Tfpq?EK`Xh_ttyQo83@EbPv#ts2oVEm>e}V> z3Vf~n^Bh@BUVu4Y8SdbrDOAV7u z9uooRRiXeO%yM_#OHTxEF(6apFEoG6?V9vVhWZU)N&P6iA!>N1S z{j6!kP<==w!0!(}q%9l#a5?RyZ&{D+q_#C%U+uVtn{LpI*CWhqzDGkDN7m2?`WtzZ z_0QoIgsEe_2j@wL;NQ)tg+6#vSACbBTq^nLf%Z%P#ylp_^mk(?Hex4u>^5OO>L<6_ zJan9saH~HsD!yN=AF?@&ILKI@76MP|id{JISbce@zuz~}RiA>sCrxH6?7mN?&lq6f zjQp29K%?;|x?%{8+4$bdOEVyIkM&`?3;L7VB-EFyGS3K!EDM~Pcd@Y_CDF@5nbh<_ z<}^vAbYYXH?D0|-neT-9<&SapAD(kl%48opcaIbFa-_^b>63*f_MuCUlPL{G)L=}G z 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

      0=<9E;A8cD&!CIm%me3npPkqh|Xqo84U-+o~EN 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 z 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 diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 76e8727f..d3251a92 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -4,7 +4,7 @@ import position from 'selection-position'; import Markdown from 'slate-markdown-serializer'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; import StylesMenu from './MarkdownControlElements/StylesMenu'; -import AddBlock from './MarkdownControlElements/AddBlock'; +import BlockTypesMenu from './MarkdownControlElements/BlockTypesMenu'; const markdown = new Markdown(); @@ -15,27 +15,33 @@ class MarkdownControl extends React.Component { constructor(props) { super(props); this.blockEdit = false; - this.stylesMenuPosition = { - top: 0, - left: 0, - width: 0, - height: 0 + this.menuPositions = { + stylesMenu: { + top: 0, + left: 0, + width: 0, + height: 0 + }, + blockTypesMenu: { + top: 0, + left: 0, + width: 0, + height: 0 + } }; this.state = { - state: props.value ? markdown.deserialize(props.value) : Plain.deserialize(''), - addBlockButton:{ - show: false - } + state: props.value ? markdown.deserialize(props.value) : Plain.deserialize('') }; this.handleChange = this.handleChange.bind(this); this.handleDocumentChange = this.handleDocumentChange.bind(this); - this.maybeShowBlockAddButton = this.maybeShowBlockAddButton.bind(this); this.handleMarkStyleClick = this.handleMarkStyleClick.bind(this); this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); + this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); - this.renderAddBlock = this.renderAddBlock.bind(this); + this.calculateMenuPositions = this.calculateMenuPositions.bind(this); + this.renderBlockTypesMenu = this.renderBlockTypesMenu.bind(this); this.renderNode = this.renderNode.bind(this); this.renderMark = this.renderMark.bind(this); } @@ -52,7 +58,7 @@ class MarkdownControl extends React.Component { this.blockEdit = false; } else { - this.setState({ state }, this.maybeShowBlockAddButton); + this.setState({ state }, this.calculateMenuPositions); } } @@ -60,19 +66,27 @@ class MarkdownControl extends React.Component { this.props.onChange(markdown.serialize(state)); } - maybeShowBlockAddButton() { - if (this.state.state.blocks.get(0).isEmpty) { - const rect = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`)[0].getBoundingClientRect(); - this.setState({ addBlockButton: { - show: true, - top: rect.top + window.scrollY + 2, - left: rect.left + window.scrollX - 28 - } }); + /** + * All menu positions are calculated accessing dom elements + * That's why calculateMenuPositions is called on handleChange's setState callback + */ + calculateMenuPositions() { + const rect1 = position(); + this.menuPositions.stylesMenu = { + top: rect1.top + window.scrollY, + left: rect1.left + window.scrollX, + width: rect1.width, + height: rect1.height + }; - } else { - this.setState({ addBlockButton: { - show: false - } }); + const blockElement = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`); + if (blockElement.length > 0) { + const rect2 = blockElement[0].getBoundingClientRect(); + this.menuPositions.blockTypesMenu = { + top: rect2.top + window.scrollY, + left: rect2.left + window.scrollX + }; + this.forceUpdate(); } } @@ -136,6 +150,18 @@ class MarkdownControl extends React.Component { this.setState({ state }); } + handleBlockTypeClick(type) { + let { state } = this.state; + + state = state + .transform() + .setBlock(type) + .splitBlock() + .setBlock(DEFAULT_NODE) + .apply(); + this.setState({ state }, this.calculateMenuPositions); + } + handleKeyDown(evt) { if (evt.shiftKey && evt.key === 'Enter') { this.blockEdit = true; @@ -149,12 +175,6 @@ class MarkdownControl extends React.Component { } } - renderAddBlock() { - return ( - this.state.addBlockButton.show ? : null - ); - } - /** * Return renderers for Slate */ @@ -165,28 +185,27 @@ class MarkdownControl extends React.Component { return MARKS[mark.type]; } - /** - * Update the menu's absolute position. - */ + renderBlockTypesMenu() { + const currentBlock = this.state.state.blocks.get(0); + const isOpen = (currentBlock.isEmpty && currentBlock.type !== 'list-item' && currentBlock.type !== 'horizontal-rule'); + + return ( + + ); + } + renderStylesMenu() { const { state } = this.state; - const rect = position(); - const isOpen = !(state.isBlurred || state.isCollapsed); - if (isOpen) { - this.stylesMenuPosition = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX, - width: rect.width, - height: rect.height - }; - } - return ( {this.renderStylesMenu()} - {this.renderAddBlock()} + {this.renderBlockTypesMenu()} - ); -} diff --git a/src/components/Widgets/MarkdownControlElements/BlockStatic.css b/src/components/Widgets/MarkdownControlElements/BlockStatic.css new file mode 100644 index 00000000..dcae85a0 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/BlockStatic.css @@ -0,0 +1,14 @@ +.divider { + +} + +.divider:before { + font-family: Georgia,Cambria,"Times New Roman",Times,serif; + font-size: 28px; + letter-spacing: .6em; + content: '...'; + color: rgba(0,0,0,.6); + position: relative; + top: -12px; + margin-left: calc(50% - 60px); +} diff --git a/src/components/Widgets/MarkdownControlElements/BlockStatic.js b/src/components/Widgets/MarkdownControlElements/BlockStatic.js new file mode 100644 index 00000000..9242e9b3 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/BlockStatic.js @@ -0,0 +1,19 @@ +import React, { PropTypes } from 'react'; +import styles from './BlockStatic.css'; + +const AVAILABLE_TYPES = [ + 'divider' +]; + +export function BlockStatic({ type, children }) { + return ( +

      {children}
      + ); +} + +BlockStatic.propTypes = { + children: PropTypes.node.isRequired, + type: PropTypes.oneOf(AVAILABLE_TYPES).isRequired +}; + +export default BlockStatic; diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css new file mode 100644 index 00000000..5f5226cb --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css @@ -0,0 +1,28 @@ +.root { + position: absolute; +} + +.button { + margin-top: 2px; + color: #ddd; + transition: color 0.5s ease; + cursor: pointer; +} +.button:hover { + color: #aaa; +} + +.menu { + position: absolute; + top: -5px; + left: 20px; + height: 32px; + white-space: nowrap; + background-color: rgba(126, 126, 126, 0.1); +} + +.icon { + margin: 8px; + cursor: pointer; + color: #555; +} diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js new file mode 100644 index 00000000..a040a3e2 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js @@ -0,0 +1,104 @@ +import React, { Component, PropTypes } from 'react'; +import Portal from 'react-portal'; +import { Icon } from '../../UI'; +import styles from './BlockTypesMenu.css'; + +export default class BlockTypesMenu extends Component { + constructor(props) { + super(props); + + this.state = { + expanded: false, + menu: null + }; + + this.updateMenuPosition = this.updateMenuPosition.bind(this); + this.toggleMenu = this.toggleMenu.bind(this); + this.handleOpen = this.handleOpen.bind(this); + this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.renderBlockTypeButton = this.renderBlockTypeButton.bind(this); + } + + /** + * On update, update the menu. + */ + componentDidMount() { + this.updateMenuPosition(); + } + + componentWillUpdate() { + if (this.state.expanded) { + this.setState({ expanded: false }); + } + } + + componentDidUpdate() { + this.updateMenuPosition(); + } + + updateMenuPosition() { + const { menu } = this.state; + const { position } = this.props; + if (!menu) return; + + menu.style.opacity = 1; + menu.style.top = `${position.top}px`; + menu.style.left = `${position.left - menu.offsetWidth * 2}px`; + + } + + toggleMenu() { + this.setState({ expanded: !this.state.expanded }); + } + + handleBlockTypeClick(e, type) { + this.props.onClickBlock(type, false, false); + } + + renderBlockTypeButton(type, icon) { + const onClick = e => this.handleBlockTypeClick(e, type); + return ( + + ); + } + + renderMenu() { + if (this.state.expanded) { + return ( +
      + {this.renderBlockTypeButton('horizontal-rule', 'dot-3')} +
      + ); + } else { + return null; + } + } + + /** + * When the portal opens, cache the menu element. + */ + handleOpen(portal) { + this.setState({ menu: portal.firstChild }); + } + + render() { + const { isOpen } = this.props; + return ( + +
      + + {this.renderMenu()} +
      +
      + ); + } +} + +BlockTypesMenu.propTypes = { + isOpen: PropTypes.bool.isRequired, + position: PropTypes.shape({ + top: PropTypes.number.isRequired, + left: PropTypes.number.isRequired + }), + onClickBlock: PropTypes.func.isRequired +}; diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.js b/src/components/Widgets/MarkdownControlElements/StylesMenu.js index 368f44a1..12e27a3b 100644 --- a/src/components/Widgets/MarkdownControlElements/StylesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/StylesMenu.js @@ -79,7 +79,6 @@ export default class StylesMenu extends Component { renderBlockButton(type, icon, checkType) { checkType = checkType || type; - console.log(checkType) const isActive = this.hasBlock(checkType); const onMouseDown = e => this.handleBlockClick(e, type); return ( diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index a931c9a7..1ab11ab5 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -1,5 +1,6 @@ import React from 'react'; import Block from './Block'; +import BlockStatic from './BlockStatic'; import { Icon } from '../../UI'; /* eslint react/prop-types: 0, react/no-multi-comp: 0 */ @@ -19,6 +20,7 @@ export const NODES = { 'heading6': props => {props.children}, 'list-item': props =>
    1. {props.children}
    2. , 'paragraph': props => {props.children}, + 'horizontal-rule': props => {props.children}, 'link': (props) => { const { data } = props.node; const href = data.get('href'); diff --git a/src/components/stories/Icon.js b/src/components/stories/Icon.js index 207daf60..50668a74 100644 --- a/src/components/stories/Icon.js +++ b/src/components/stories/Icon.js @@ -39,6 +39,8 @@ storiesOf('Icon', module) + + From 72b8e14f078d8585f176c8ec93d3c0abc420e4a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Sat, 6 Aug 2016 18:09:41 -0300 Subject: [PATCH 11/29] updated rules --- .eslintrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.eslintrc b/.eslintrc index b2c61e21..c10de0c1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -46,6 +46,7 @@ rules: # https://github.com/eslint/eslint/tree/master/docs/rules#best-practices no-fallthrough: 2 no-redeclare: 2 + no-constant-condition: 2 # Stylistic Issues # https://github.com/eslint/eslint/tree/master/docs/rules#stylistic-issues @@ -60,18 +61,17 @@ rules: object-curly-spacing: [1, "always"] quotes: [2, "single", "avoid-escape"] semi: 2 - space-after-keywords: 2 + keyword-spacing: 2 space-before-blocks: [2, "always"] space-before-function-paren: [2, "never"] space-in-parens: [2, "never"] space-infix-ops: 2 - space-return-throw-case: 2 space-unary-ops: 2 # ECMAScript 6 # http://eslint.org/docs/rules/#ecmascript-6 arrow-spacing: [2, {"before": true, "after": true}] - no-arrow-condition: 2 + no-confusing-arrow: 2 prefer-const: 2 # Strict Mode From 5fa551dcb2054644caf69cde9b284eabf061a8ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Sat, 6 Aug 2016 18:16:30 -0300 Subject: [PATCH 12/29] Add/Remove link --- package.json | 2 +- src/components/Widgets/MarkdownControl.js | 39 +++++++++++++++++++ .../MarkdownControlElements/StylesMenu.js | 26 ++++++++++++- .../MarkdownControlElements/localRenderers.js | 3 +- 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 837264bb..07a6fb79 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,6 @@ "react-portal": "^2.2.1", "selection-position": "^1.0.0", "slate": "^0.11.0", - "slate-markdown-serializer": "^0.1.3" + "slate-markdown-serializer": "^0.1.5" } } diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index d3251a92..15f27905 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -38,6 +38,7 @@ class MarkdownControl extends React.Component { this.handleDocumentChange = this.handleDocumentChange.bind(this); this.handleMarkStyleClick = this.handleMarkStyleClick.bind(this); this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); + this.handleInlineClick = this.handleInlineClick.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.calculateMenuPositions = this.calculateMenuPositions.bind(this); @@ -150,6 +151,42 @@ class MarkdownControl extends React.Component { this.setState({ state }); } + /** + * When clicking a link, if the selection has a link in it, remove the link. + * Otherwise, add a new link with an href and text. + * + * @param {Event} e + */ + + handleInlineClick(type, isActive) { + let { state } = this.state; + + if (type === 'link') { + if (!state.isExpanded) return; + + if (isActive) { + state = state + .transform() + .unwrapInline('link') + .apply(); + } + + else { + const href = window.prompt('Enter the URL of the link:', 'http://www.'); + state = state + .transform() + .wrapInline({ + type: 'link', + data: { href } + }) + .collapseToEnd() + .apply(); + } + } + this.setState({ state }); + } + + handleBlockTypeClick(type) { let { state } = this.state; @@ -208,7 +245,9 @@ class MarkdownControl extends React.Component { position={this.menuPositions.stylesMenu} marks={this.state.state.marks} blocks={this.state.state.blocks} + inlines={this.state.state.inlines} onClickMark={this.handleMarkStyleClick} + onClickInline={this.handleInlineClick} onClickBlock={this.handleBlockStyleClick} /> ); diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.js b/src/components/Widgets/MarkdownControlElements/StylesMenu.js index 12e27a3b..017ecfd3 100644 --- a/src/components/Widgets/MarkdownControlElements/StylesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/StylesMenu.js @@ -16,8 +16,10 @@ export default class StylesMenu extends Component { this.hasBlock = this.hasBlock.bind(this); this.renderMarkButton = this.renderMarkButton.bind(this); this.renderBlockButton = this.renderBlockButton.bind(this); + this.renderLinkButton = this.renderLinkButton.bind(this); this.updateMenuPosition = this.updateMenuPosition.bind(this); this.handleMarkClick = this.handleMarkClick.bind(this); + this.handleInlineClick = this.handleInlineClick.bind(this); this.handleBlockClick = this.handleBlockClick.bind(this); this.handleOpen = this.handleOpen.bind(this); } @@ -54,6 +56,10 @@ export default class StylesMenu extends Component { const { blocks } = this.props; return blocks.some(node => node.type == type); } + hasLinks(type) { + const { inlines } = this.props; + return inlines.some(inline => inline.type == 'link'); + } handleMarkClick(e, type) { e.preventDefault(); @@ -70,6 +76,21 @@ export default class StylesMenu extends Component { ); } + handleInlineClick(e, type, isActive) { + e.preventDefault(); + this.props.onClickInline(type, isActive); + } + + renderLinkButton() { + const isActive = this.hasLinks(); + const onMouseDown = e => this.handleInlineClick(e, 'link', isActive); + return ( + + + + ); + } + handleBlockClick(e, type) { e.preventDefault(); const isActive = this.hasBlock(type); @@ -103,6 +124,7 @@ export default class StylesMenu extends Component { {this.renderMarkButton('bold', 'bold')} {this.renderMarkButton('italic', 'italic')} {this.renderMarkButton('code', 'code')} + {this.renderLinkButton()} {this.renderBlockButton('heading1', 'h1')} {this.renderBlockButton('heading2', 'h2')} {this.renderBlockButton('block-quote', 'quote-left')} @@ -122,6 +144,8 @@ StylesMenu.propTypes = { }), marks: PropTypes.object.isRequired, blocks: PropTypes.object.isRequired, + inlines: PropTypes.object.isRequired, onClickBlock: PropTypes.func.isRequired, - onClickMark: PropTypes.func.isRequired + onClickMark: PropTypes.func.isRequired, + onClickInline: PropTypes.func.isRequired }; diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index 1ab11ab5..32974536 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -1,7 +1,6 @@ import React from 'react'; import Block from './Block'; import BlockStatic from './BlockStatic'; -import { Icon } from '../../UI'; /* eslint react/prop-types: 0, react/no-multi-comp: 0 */ @@ -24,7 +23,7 @@ export const NODES = { 'link': (props) => { const { data } = props.node; const href = data.get('href'); - return
      {props.children}; + return {props.children}; }, 'image': (props) => { const { node } = props; From 669cfe3e8c018871e2f95d05caeb8061844652bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Sat, 6 Aug 2016 18:55:02 -0300 Subject: [PATCH 13/29] slate version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 07a6fb79..4b84871d 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "pluralize": "^3.0.0", "react-portal": "^2.2.1", "selection-position": "^1.0.0", - "slate": "^0.11.0", + "slate": "^0.11.2", "slate-markdown-serializer": "^0.1.5" } } From 095b70890eee6160520deffb4cbeddceaa6e456a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Sat, 6 Aug 2016 18:57:24 -0300 Subject: [PATCH 14/29] Better approach to creating new paragraph after new block type --- src/components/Widgets/MarkdownControl.js | 27 ++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 15f27905..8631ce99 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -47,7 +47,6 @@ class MarkdownControl extends React.Component { this.renderMark = this.renderMark.bind(this); } - /** * Slate keeps track of selections, scroll position etc. * So, onChange gets dispatched on every interaction (click, arrows, everything...) @@ -58,7 +57,6 @@ class MarkdownControl extends React.Component { if (this.blockEdit) { this.blockEdit = false; } else { - this.setState({ state }, this.calculateMenuPositions); } } @@ -89,6 +87,7 @@ class MarkdownControl extends React.Component { }; this.forceUpdate(); } + } /** @@ -191,12 +190,24 @@ class MarkdownControl extends React.Component { let { state } = this.state; state = state - .transform() - .setBlock(type) - .splitBlock() - .setBlock(DEFAULT_NODE) - .apply(); - this.setState({ state }, this.calculateMenuPositions); + .transform() + .insertBlock(type) + .apply(); + + this.setState({ state }, () => { + const blocks = this.state.state.document.getBlocks(); + const last = blocks.last(); + const normalized = state + .transform() + .focus() + .collapseToEndOf(last) + .splitBlock() + .setBlock(DEFAULT_NODE) + .apply({ + snapshot: false + }); + this.setState({ state:normalized }); + }); } handleKeyDown(evt) { From 3b1590be728d86f56a33ea05a682eb1c0c56037a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Mon, 8 Aug 2016 11:57:49 -0300 Subject: [PATCH 15/29] Editor: Performance improvement --- src/components/Widgets/MarkdownControl.js | 53 +++++++++++-------- .../MarkdownControlElements/BlockStatic.css | 14 ----- .../MarkdownControlElements/BlockStatic.js | 19 ------- .../localRenderers.css | 3 ++ .../MarkdownControlElements/localRenderers.js | 11 +++- 5 files changed, 42 insertions(+), 58 deletions(-) delete mode 100644 src/components/Widgets/MarkdownControlElements/BlockStatic.css delete mode 100644 src/components/Widgets/MarkdownControlElements/BlockStatic.js create mode 100644 src/components/Widgets/MarkdownControlElements/localRenderers.css diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 8631ce99..4f41f969 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,4 +1,5 @@ import React, { PropTypes } from 'react'; +import _ from 'lodash'; import { Editor, Plain } from 'slate'; import position from 'selection-position'; import Markdown from 'slate-markdown-serializer'; @@ -41,7 +42,8 @@ class MarkdownControl extends React.Component { this.handleInlineClick = this.handleInlineClick.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); - this.calculateMenuPositions = this.calculateMenuPositions.bind(this); + this.calculateHoverMenuPosition = _.throttle(this.calculateHoverMenuPosition.bind(this), 100); + this.calculateBlockMenuPosition = _.throttle(this.calculateBlockMenuPosition.bind(this), 100); this.renderBlockTypesMenu = this.renderBlockTypesMenu.bind(this); this.renderNode = this.renderNode.bind(this); this.renderMark = this.renderMark.bind(this); @@ -57,7 +59,8 @@ class MarkdownControl extends React.Component { if (this.blockEdit) { this.blockEdit = false; } else { - this.setState({ state }, this.calculateMenuPositions); + this.calculateHoverMenuPosition(); + this.setState({ state }, this.calculateBlockMenuPosition); } } @@ -65,29 +68,30 @@ class MarkdownControl extends React.Component { this.props.onChange(markdown.serialize(state)); } - /** - * All menu positions are calculated accessing dom elements - * That's why calculateMenuPositions is called on handleChange's setState callback - */ - calculateMenuPositions() { - const rect1 = position(); + calculateHoverMenuPosition() { + const rect = position(); this.menuPositions.stylesMenu = { - top: rect1.top + window.scrollY, - left: rect1.left + window.scrollX, - width: rect1.width, - height: rect1.height + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + width: rect.width, + height: rect.height }; + } - const blockElement = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`); - if (blockElement.length > 0) { - const rect2 = blockElement[0].getBoundingClientRect(); - this.menuPositions.blockTypesMenu = { - top: rect2.top + window.scrollY, - left: rect2.left + window.scrollX - }; - this.forceUpdate(); + calculateBlockMenuPosition() { + // Don't bother calculating position if block is not empty + if (this.state.state.blocks.get(0).isEmpty) { + const blockElement = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`); + if (blockElement.length > 0) { + const rect = blockElement[0].getBoundingClientRect(); + this.menuPositions.blockTypesMenu = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX + }; + // Force re-render so the menu is positioned on these new coordinates + this.forceUpdate(); + } } - } /** @@ -191,7 +195,10 @@ class MarkdownControl extends React.Component { state = state .transform() - .insertBlock(type) + .insertBlock({ + type: type, + isVoid: true + }) .apply(); this.setState({ state }, () => { @@ -235,7 +242,7 @@ class MarkdownControl extends React.Component { renderBlockTypesMenu() { const currentBlock = this.state.state.blocks.get(0); - const isOpen = (currentBlock.isEmpty && currentBlock.type !== 'list-item' && currentBlock.type !== 'horizontal-rule'); + const isOpen = (currentBlock.isEmpty && currentBlock.type !== 'horizontal-rule'); return ( {children}

      - ); -} - -BlockStatic.propTypes = { - children: PropTypes.node.isRequired, - type: PropTypes.oneOf(AVAILABLE_TYPES).isRequired -}; - -export default BlockStatic; diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.css b/src/components/Widgets/MarkdownControlElements/localRenderers.css new file mode 100644 index 00000000..4ceb194b --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.css @@ -0,0 +1,3 @@ +.active { + box-shadow: 0 0 0 2px blue; +} diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index 32974536..d6a133af 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -1,6 +1,6 @@ import React from 'react'; import Block from './Block'; -import BlockStatic from './BlockStatic'; +import styles from './localRenderers.css' /* eslint react/prop-types: 0, react/no-multi-comp: 0 */ @@ -19,7 +19,14 @@ export const NODES = { 'heading6': props => {props.children}, 'list-item': props =>
    3. {props.children}
    4. , 'paragraph': props => {props.children}, - 'horizontal-rule': props => {props.children}, + 'horizontal-rule': props => { + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; + return ( +
      + ); + }, 'link': (props) => { const { data } = props.node; const href = data.get('href'); From efddf7440465bcc7b0baf3f9ad6d89e36630f601 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Mon, 8 Aug 2016 18:51:53 -0300 Subject: [PATCH 16/29] Image Uploads --- src/components/Widgets/MarkdownControl.css | 40 +-------- src/components/Widgets/MarkdownControl.js | 88 +++++++++++++++---- .../BlockTypesMenu.css | 4 + .../MarkdownControlElements/BlockTypesMenu.js | 43 ++++++++- .../localRenderers.css | 3 - .../MarkdownControlElements/localRenderers.js | 2 +- 6 files changed, 118 insertions(+), 62 deletions(-) delete mode 100644 src/components/Widgets/MarkdownControlElements/localRenderers.css diff --git a/src/components/Widgets/MarkdownControl.css b/src/components/Widgets/MarkdownControl.css index c87888af..352e12a3 100644 --- a/src/components/Widgets/MarkdownControl.css +++ b/src/components/Widgets/MarkdownControl.css @@ -1,39 +1,3 @@ - -.button { - color: #ccc; - cursor: pointer; -} - -.button[data-active="true"] { - color: black; -} - - -.menu > * { - display: inline-block; -} - -.menu > * + * { - margin-left: 10px; -} - -.hoverMenu { - padding: 8px 7px 6px; - position: absolute; - z-index: 1; - top: -10000px; - left: -10000px; - margin-top: -6px; - opacity: 0; - background-color: #222; - border-radius: 4px; - transition: opacity .75s; -} - -.hoverMenu .button { - color: #aaa; -} - -.hoverMenu .button[data-active="true"] { - color: #fff; +.active { + box-shadow: 0 0 0 2px blue; } diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 4f41f969..26c576c4 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -6,8 +6,7 @@ import Markdown from 'slate-markdown-serializer'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; import StylesMenu from './MarkdownControlElements/StylesMenu'; import BlockTypesMenu from './MarkdownControlElements/BlockTypesMenu'; - -const markdown = new Markdown(); +import styles from './MarkdownControl.css'; /** * Slate Render Configuration @@ -15,6 +14,13 @@ const markdown = new Markdown(); class MarkdownControl extends React.Component { constructor(props) { super(props); + + this.customMarkdownSerialize = this.customMarkdownSerialize.bind(this); + this.markdown = new Markdown({ rules: [{ serialize: this.customMarkdownSerialize }] }); + + this.customImageNodeRenderer = this.customImageNodeRenderer.bind(this); + NODES['image'] = this.customImageNodeRenderer; + this.blockEdit = false; this.menuPositions = { stylesMenu: { @@ -32,7 +38,7 @@ class MarkdownControl extends React.Component { }; this.state = { - state: props.value ? markdown.deserialize(props.value) : Plain.deserialize('') + state: props.value ? this.markdown.deserialize(props.value) : Plain.deserialize('') }; this.handleChange = this.handleChange.bind(this); @@ -41,6 +47,8 @@ class MarkdownControl extends React.Component { this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); this.handleInlineClick = this.handleInlineClick.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.handleImageClick = this.handleImageClick.bind(this); + this.focusAndAddParagraph = this.focusAndAddParagraph.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.calculateHoverMenuPosition = _.throttle(this.calculateHoverMenuPosition.bind(this), 100); this.calculateBlockMenuPosition = _.throttle(this.calculateBlockMenuPosition.bind(this), 100); @@ -49,6 +57,28 @@ class MarkdownControl extends React.Component { this.renderMark = this.renderMark.bind(this); } + + /** + * The two custom methods customMarkdownSerialize and customImageNodeRenderer make sure that + * both Markdown serializer and Node renderers have access to getMedia with the latest state. + */ + customMarkdownSerialize(obj, children) { + if (obj.kind === 'block' && obj.type === 'image') { + const src = this.props.getMedia(obj.getIn(['data', 'src'])); + const alt = obj.getIn(['data', 'alt']) || ''; + return `![${alt}](${src})`; + } + } + customImageNodeRenderer(editorProps) { + const { node, state } = editorProps; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; + const src = node.data.get('src'); + return ( + + ); + } + /** * Slate keeps track of selections, scroll position etc. * So, onChange gets dispatched on every interaction (click, arrows, everything...) @@ -65,7 +95,7 @@ class MarkdownControl extends React.Component { } handleDocumentChange(document, state) { - this.props.onChange(markdown.serialize(state)); + this.props.onChange(this.markdown.serialize(state)); } calculateHoverMenuPosition() { @@ -201,22 +231,41 @@ class MarkdownControl extends React.Component { }) .apply(); - this.setState({ state }, () => { - const blocks = this.state.state.document.getBlocks(); - const last = blocks.last(); - const normalized = state - .transform() - .focus() - .collapseToEndOf(last) - .splitBlock() - .setBlock(DEFAULT_NODE) - .apply({ - snapshot: false - }); - this.setState({ state:normalized }); - }); + this.setState({ state }, this.focusAndAddParagraph); } + handleImageClick(mediaProxy) { + let { state } = this.state; + this.props.onAddMedia(mediaProxy); + state = state + .transform() + .insertBlock({ + type: 'image', + isVoid: true, + data: { src: mediaProxy.path } + }) + .apply(); + + this.setState({ state }, this.focusAndAddParagraph); + } + + focusAndAddParagraph() { + const { state } = this.state; + const blocks = state.document.getBlocks(); + const last = blocks.last(); + const normalized = state + .transform() + .focus() + .collapseToEndOf(last) + .splitBlock() + .setBlock(DEFAULT_NODE) + .apply({ + snapshot: false + }); + this.setState({ state:normalized }); + } + + handleKeyDown(evt) { if (evt.shiftKey && evt.key === 'Enter') { this.blockEdit = true; @@ -249,6 +298,7 @@ class MarkdownControl extends React.Component { isOpen={isOpen} position={this.menuPositions.blockTypesMenu} onClickBlock={this.handleBlockTypeClick} + onClickImage={this.handleImageClick} /> ); } @@ -294,5 +344,7 @@ export default MarkdownControl; MarkdownControl.propTypes = { onChange: PropTypes.func.isRequired, + onAddMedia: PropTypes.func.isRequired, + getMedia: PropTypes.func.isRequired, value: PropTypes.node, }; diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css index 5f5226cb..9868af79 100644 --- a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css +++ b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css @@ -26,3 +26,7 @@ cursor: pointer; color: #555; } + +.input { + display: none; +} diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js index a040a3e2..a05a155e 100644 --- a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js @@ -1,6 +1,7 @@ import React, { Component, PropTypes } from 'react'; import Portal from 'react-portal'; import { Icon } from '../../UI'; +import MediaProxy from '../../../valueObjects/MediaProxy'; import styles from './BlockTypesMenu.css'; export default class BlockTypesMenu extends Component { @@ -16,6 +17,8 @@ export default class BlockTypesMenu extends Component { this.toggleMenu = this.toggleMenu.bind(this); this.handleOpen = this.handleOpen.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.handleFileUploadClick = this.handleFileUploadClick.bind(this); + this.handleFileUploadChange = this.handleFileUploadChange.bind(this); this.renderBlockTypeButton = this.renderBlockTypeButton.bind(this); } @@ -52,9 +55,36 @@ export default class BlockTypesMenu extends Component { } handleBlockTypeClick(e, type) { - this.props.onClickBlock(type, false, false); + this.props.onClickBlock(type); } + handleFileUploadClick() { + this._fileInput.click(); + } + + handleFileUploadChange(e) { + e.stopPropagation(); + e.preventDefault(); + + const fileList = e.dataTransfer ? e.dataTransfer.files : e.target.files; + const files = [...fileList]; + const imageType = /^image\//; + + // Iterate through the list of files and return the first image on the list + const file = files.find((currentFile) => { + if (imageType.test(currentFile.type)) { + return currentFile; + } + }); + + if (file) { + const mediaProxy = new MediaProxy(file.name, file); + this.props.onClickImage(mediaProxy); + } + + } + + renderBlockTypeButton(type, icon) { const onClick = e => this.handleBlockTypeClick(e, type); return ( @@ -67,6 +97,14 @@ export default class BlockTypesMenu extends Component { return (
      {this.renderBlockTypeButton('horizontal-rule', 'dot-3')} + + this._fileInput = el} + />
      ); } else { @@ -100,5 +138,6 @@ BlockTypesMenu.propTypes = { top: PropTypes.number.isRequired, left: PropTypes.number.isRequired }), - onClickBlock: PropTypes.func.isRequired + onClickBlock: PropTypes.func.isRequired, + onClickImage: PropTypes.func.isRequired }; diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.css b/src/components/Widgets/MarkdownControlElements/localRenderers.css deleted file mode 100644 index 4ceb194b..00000000 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.css +++ /dev/null @@ -1,3 +0,0 @@ -.active { - box-shadow: 0 0 0 2px blue; -} diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index d6a133af..951d1685 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -1,6 +1,6 @@ import React from 'react'; import Block from './Block'; -import styles from './localRenderers.css' +import styles from '../MarkdownControl.css'; /* eslint react/prop-types: 0, react/no-multi-comp: 0 */ From 5a4fe3c214688f5b6abb832ba4fdb347c476700f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 10 Aug 2016 18:59:56 -0300 Subject: [PATCH 17/29] changed markdown serializer --- package.json | 4 +- src/components/Widgets/MarkdownControl.js | 86 ++++++++++++------- .../MarkdownControlElements/BlockTypesMenu.js | 2 +- .../MarkdownControlElements/StylesMenu.js | 14 +-- .../MarkdownControlElements/localRenderers.js | 26 +++--- .../Widgets/MarkdownControlElements/syntax.js | 77 +++++++++++++++++ 6 files changed, 155 insertions(+), 54 deletions(-) create mode 100644 src/components/Widgets/MarkdownControlElements/syntax.js diff --git a/package.json b/package.json index 4b84871d..30d972c6 100644 --- a/package.json +++ b/package.json @@ -74,10 +74,10 @@ "json-loader": "^0.5.4", "localforage": "^1.4.2", "lodash": "^4.13.1", + "markup-it": "git+https://github.com/cassiozen/markup-it.git", "pluralize": "^3.0.0", "react-portal": "^2.2.1", "selection-position": "^1.0.0", - "slate": "^0.11.2", - "slate-markdown-serializer": "^0.1.5" + "slate": "^0.12.2" } } diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 26c576c4..dee24487 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,8 +1,9 @@ import React, { PropTypes } from 'react'; import _ from 'lodash'; -import { Editor, Plain } from 'slate'; +import { Editor, Raw } from 'slate'; import position from 'selection-position'; -import Markdown from 'slate-markdown-serializer'; +import MarkupIt, { SlateUtils } from 'markup-it'; +import getSyntax from './MarkdownControlElements/syntax'; import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; import StylesMenu from './MarkdownControlElements/StylesMenu'; import BlockTypesMenu from './MarkdownControlElements/BlockTypesMenu'; @@ -15,11 +16,12 @@ class MarkdownControl extends React.Component { constructor(props) { super(props); - this.customMarkdownSerialize = this.customMarkdownSerialize.bind(this); - this.markdown = new Markdown({ rules: [{ serialize: this.customMarkdownSerialize }] }); + this.getMedia = this.getMedia.bind(this); + const MarkdownSyntax = getSyntax(this.getMedia); + this.markdown = new MarkupIt(MarkdownSyntax); this.customImageNodeRenderer = this.customImageNodeRenderer.bind(this); - NODES['image'] = this.customImageNodeRenderer; + NODES['mediaproxy'] = this.customImageNodeRenderer; this.blockEdit = false; this.menuPositions = { @@ -37,8 +39,29 @@ class MarkdownControl extends React.Component { } }; + let rawJson; + if (props.value !== undefined) { + // Parse the markdown + const content = this.markdown.toContent(props.value); + // Convert the content to JSON + rawJson = SlateUtils.encode(content); + } else { + rawJson = { + nodes: [ + { kind: 'block', + type: 'paragraph', + nodes: [{ + kind: 'text', + ranges: [{ + text: '' + }] + }] + } + ] + }; + } this.state = { - state: props.value ? this.markdown.deserialize(props.value) : Plain.deserialize('') + state: Raw.deserialize(rawJson, { terse: true }) }; this.handleChange = this.handleChange.bind(this); @@ -57,18 +80,13 @@ class MarkdownControl extends React.Component { this.renderMark = this.renderMark.bind(this); } + getMedia(src) { + return this.props.getMedia(src); + } /** - * The two custom methods customMarkdownSerialize and customImageNodeRenderer make sure that - * both Markdown serializer and Node renderers have access to getMedia with the latest state. + * Custom local renderer for image proxy. */ - customMarkdownSerialize(obj, children) { - if (obj.kind === 'block' && obj.type === 'image') { - const src = this.props.getMedia(obj.getIn(['data', 'src'])); - const alt = obj.getIn(['data', 'alt']) || ''; - return `![${alt}](${src})`; - } - } customImageNodeRenderer(editorProps) { const { node, state } = editorProps; const isFocused = state.selection.hasEdgeIn(node); @@ -95,7 +113,9 @@ class MarkdownControl extends React.Component { } handleDocumentChange(document, state) { - this.props.onChange(this.markdown.serialize(state)); + const rawJson = Raw.serialize(state, { terse: true }); + const content = SlateUtils.decode(rawJson); + this.props.onChange(this.markdown.toText(content)); } calculateHoverMenuPosition() { @@ -144,13 +164,13 @@ class MarkdownControl extends React.Component { const { document } = state; // Handle everything but list buttons. - if (type != 'bulleted-list' && type != 'numbered-list') { + if (type != 'unordered_list' && type != 'ordered_list') { if (isList) { transform = transform .setBlock(isActive ? DEFAULT_NODE : type) - .unwrapBlock('bulleted-list') - .unwrapBlock('numbered-list'); + .unwrapBlock('unordered_list') + .unwrapBlock('ordered_list'); } else { @@ -168,14 +188,14 @@ class MarkdownControl extends React.Component { if (isList && isType) { transform = transform .setBlock(DEFAULT_NODE) - .unwrapBlock('bulleted-list'); + .unwrapBlock('unordered_list'); } else if (isList) { transform = transform - .unwrapBlock(type == 'bulleted-list') + .unwrapBlock(type == 'unordered_list') .wrapBlock(type); } else { transform = transform - .setBlock('list-item') + .setBlock('list_item') .wrapBlock(type); } } @@ -237,16 +257,20 @@ class MarkdownControl extends React.Component { handleImageClick(mediaProxy) { let { state } = this.state; this.props.onAddMedia(mediaProxy); - state = state - .transform() - .insertBlock({ - type: 'image', - isVoid: true, - data: { src: mediaProxy.path } - }) - .apply(); - this.setState({ state }, this.focusAndAddParagraph); + state = state + .transform() + .insertInline({ + type: 'mediaproxy', + isVoid: true, + data: { src: mediaProxy.path } + }) + .collapseToEnd() + .insertBlock(DEFAULT_NODE) + .focus() + .apply(); + + this.setState({ state }); } focusAndAddParagraph() { diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js index a05a155e..5337668f 100644 --- a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js @@ -96,7 +96,7 @@ export default class BlockTypesMenu extends Component { if (this.state.expanded) { return (
      - {this.renderBlockTypeButton('horizontal-rule', 'dot-3')} + {this.renderBlockTypeButton('hr', 'dot-3')}
      - {this.renderMarkButton('bold', 'bold')} - {this.renderMarkButton('italic', 'italic')} - {this.renderMarkButton('code', 'code')} + {this.renderMarkButton('BOLD', 'bold')} + {this.renderMarkButton('ITALIC', 'italic')} + {this.renderMarkButton('CODE', 'code')} {this.renderLinkButton()} - {this.renderBlockButton('heading1', 'h1')} - {this.renderBlockButton('heading2', 'h2')} - {this.renderBlockButton('block-quote', 'quote-left')} - {this.renderBlockButton('bulleted-list', 'list-bullet', 'list-item')} + {this.renderBlockButton('header_one', 'h1')} + {this.renderBlockButton('header_two', 'h2')} + {this.renderBlockButton('blockquote', 'quote-left')} + {this.renderBlockButton('unordered_list', 'list-bullet', 'list_item')}
      ); diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index 951d1685..c16fb908 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -9,17 +9,17 @@ export const DEFAULT_NODE = 'paragraph'; // Local node renderers. export const NODES = { - 'block-quote': (props) => {props.children}, - 'bulleted-list': props =>
        {props.children}
      , - 'heading1': props => {props.children}, - 'heading2': props => {props.children}, - 'heading3': props => {props.children}, - 'heading4': props => {props.children}, - 'heading5': props => {props.children}, - 'heading6': props => {props.children}, - 'list-item': props =>
    5. {props.children}
    6. , + 'blockquote': (props) => {props.children}, + 'unordered_list': props =>
        {props.children}
      , + 'header_one': props => {props.children}, + 'header_two': props => {props.children}, + 'header_three': props => {props.children}, + 'header_four': props => {props.children}, + 'header_five': props => {props.children}, + 'header_six': props => {props.children}, + 'list_item': props =>
    7. {props.children}
    8. , 'paragraph': props => {props.children}, - 'horizontal-rule': props => { + 'hr': props => { const { node, state } = props; const isFocused = state.selection.hasEdgeIn(node); const className = isFocused ? styles.active : null; @@ -43,13 +43,13 @@ export const NODES = { // Local mark renderers. export const MARKS = { - bold: { + BOLD: { fontWeight: 'bold' }, - italic: { + ITALIC: { fontStyle: 'italic' }, - code: { + CODE: { fontFamily: 'monospace', backgroundColor: '#eee', padding: '3px', diff --git a/src/components/Widgets/MarkdownControlElements/syntax.js b/src/components/Widgets/MarkdownControlElements/syntax.js new file mode 100644 index 00000000..6a9a6984 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/syntax.js @@ -0,0 +1,77 @@ +import Immutable from 'immutable'; +import MarkupIt from 'markup-it'; +import markdownSyntax from 'markup-it/syntaxes/markdown'; +import reInline from 'markup-it/syntaxes/markdown/re/inline'; + + +/** + * Test if a link input is an image + * @param {String} raw + * @return {Boolean} + */ +function isImage(raw) { + return raw.charAt(0) === '!'; +} + +export default function getSyntax(getMedia) { + const customImageRule = MarkupIt.Rule('mediaproxy') + .regExp(reInline.link, function(state, match) { + if (!isImage(match[0])) { + return; + } + + var imgData = Immutable.Map({ + alt: match[1], + src: getMedia(match[2]), + title: match[3] + }).filter(Boolean); + + return { + data: imgData + }; + }) + .regExp(reInline.reflink, function(state, match) { + if (!isImage(match[0])) { + return; + } + + var refId = (match[2] || match[1]); + return { + data: { ref: refId } + }; + }) + .regExp(reInline.nolink, function(state, match) { + if (!isImage(match[0])) { + return; + } + + var refId = (match[2] || match[1]); + return { + data: { ref: refId } + }; + }) + .regExp(reInline.reffn, function(state, match) { + if (!isImage(match[0])) { + return; + } + + var refId = match[1]; + return { + data: { ref: refId } + }; + }) + .toText(function(state, token) { + var data = token.getData(); + var alt = data.get('alt', ''); + var src = getMedia(data.get('src', '')); + var title = data.get('title', ''); + + if (title) { + return '![' + alt + '](' + src + ' "' + title + '")'; + } else { + return '![' + alt + '](' + src + ')'; + } + }); + + return markdownSyntax.addInlineRules(customImageRule); +} From 2e40e12f18a1b53df6774822e01c677cfb19e286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 11 Aug 2016 10:57:24 -0300 Subject: [PATCH 18/29] Make images selectable on editor --- .../Widgets/MarkdownControlElements/localRenderers.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/localRenderers.js index c16fb908..b23b3d85 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/localRenderers.js @@ -33,10 +33,12 @@ export const NODES = { return {props.children}; }, 'image': (props) => { - const { node } = props; + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; const src = node.data.get('src'); return ( - + ); } }; From 7405ae8f633ca57f966650453635ec7c7b3ff22a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 11 Aug 2016 11:27:09 -0300 Subject: [PATCH 19/29] Refactored the markdown visual/block editor into it's own component --- src/components/Widgets/MarkdownControl.js | 365 +----------------- .../{ => VisualEditor}/Block.css | 0 .../{ => VisualEditor}/Block.js | 0 .../{ => VisualEditor}/BlockTypesMenu.css | 0 .../{ => VisualEditor}/BlockTypesMenu.js | 4 +- .../{ => VisualEditor}/StylesMenu.css | 0 .../{ => VisualEditor}/StylesMenu.js | 2 +- .../VisualEditor/index.css} | 0 .../VisualEditor/index.js | 361 +++++++++++++++++ .../{ => VisualEditor}/localRenderers.js | 2 +- .../MarkdownControlElements/constants.js | 13 + 11 files changed, 386 insertions(+), 361 deletions(-) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/Block.css (100%) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/Block.js (100%) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/BlockTypesMenu.css (100%) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/BlockTypesMenu.js (97%) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/StylesMenu.css (100%) rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/StylesMenu.js (99%) rename src/components/Widgets/{MarkdownControl.css => MarkdownControlElements/VisualEditor/index.css} (100%) create mode 100644 src/components/Widgets/MarkdownControlElements/VisualEditor/index.js rename src/components/Widgets/MarkdownControlElements/{ => VisualEditor}/localRenderers.js (97%) create mode 100644 src/components/Widgets/MarkdownControlElements/constants.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index dee24487..f27285c0 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,365 +1,16 @@ import React, { PropTypes } from 'react'; -import _ from 'lodash'; -import { Editor, Raw } from 'slate'; -import position from 'selection-position'; -import MarkupIt, { SlateUtils } from 'markup-it'; -import getSyntax from './MarkdownControlElements/syntax'; -import { DEFAULT_NODE, NODES, MARKS } from './MarkdownControlElements/localRenderers'; -import StylesMenu from './MarkdownControlElements/StylesMenu'; -import BlockTypesMenu from './MarkdownControlElements/BlockTypesMenu'; -import styles from './MarkdownControl.css'; +import VisualEditor from './MarkdownControlElements/VisualEditor'; -/** - * Slate Render Configuration - */ class MarkdownControl extends React.Component { - constructor(props) { - super(props); - - this.getMedia = this.getMedia.bind(this); - const MarkdownSyntax = getSyntax(this.getMedia); - this.markdown = new MarkupIt(MarkdownSyntax); - - this.customImageNodeRenderer = this.customImageNodeRenderer.bind(this); - NODES['mediaproxy'] = this.customImageNodeRenderer; - - this.blockEdit = false; - this.menuPositions = { - stylesMenu: { - top: 0, - left: 0, - width: 0, - height: 0 - }, - blockTypesMenu: { - top: 0, - left: 0, - width: 0, - height: 0 - } - }; - - let rawJson; - if (props.value !== undefined) { - // Parse the markdown - const content = this.markdown.toContent(props.value); - // Convert the content to JSON - rawJson = SlateUtils.encode(content); - } else { - rawJson = { - nodes: [ - { kind: 'block', - type: 'paragraph', - nodes: [{ - kind: 'text', - ranges: [{ - text: '' - }] - }] - } - ] - }; - } - this.state = { - state: Raw.deserialize(rawJson, { terse: true }) - }; - - this.handleChange = this.handleChange.bind(this); - this.handleDocumentChange = this.handleDocumentChange.bind(this); - this.handleMarkStyleClick = this.handleMarkStyleClick.bind(this); - this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); - this.handleInlineClick = this.handleInlineClick.bind(this); - this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); - this.handleImageClick = this.handleImageClick.bind(this); - this.focusAndAddParagraph = this.focusAndAddParagraph.bind(this); - this.handleKeyDown = this.handleKeyDown.bind(this); - this.calculateHoverMenuPosition = _.throttle(this.calculateHoverMenuPosition.bind(this), 100); - this.calculateBlockMenuPosition = _.throttle(this.calculateBlockMenuPosition.bind(this), 100); - this.renderBlockTypesMenu = this.renderBlockTypesMenu.bind(this); - this.renderNode = this.renderNode.bind(this); - this.renderMark = this.renderMark.bind(this); - } - - getMedia(src) { - return this.props.getMedia(src); - } - - /** - * Custom local renderer for image proxy. - */ - customImageNodeRenderer(editorProps) { - const { node, state } = editorProps; - const isFocused = state.selection.hasEdgeIn(node); - const className = isFocused ? styles.active : null; - const src = node.data.get('src'); - return ( - - ); - } - - /** - * Slate keeps track of selections, scroll position etc. - * So, onChange gets dispatched on every interaction (click, arrows, everything...) - * It also have an onDocumentChange, that get's dispached only when the actual - * content changes - */ - handleChange(state) { - if (this.blockEdit) { - this.blockEdit = false; - } else { - this.calculateHoverMenuPosition(); - this.setState({ state }, this.calculateBlockMenuPosition); - } - } - - handleDocumentChange(document, state) { - const rawJson = Raw.serialize(state, { terse: true }); - const content = SlateUtils.decode(rawJson); - this.props.onChange(this.markdown.toText(content)); - } - - calculateHoverMenuPosition() { - const rect = position(); - this.menuPositions.stylesMenu = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX, - width: rect.width, - height: rect.height - }; - } - - calculateBlockMenuPosition() { - // Don't bother calculating position if block is not empty - if (this.state.state.blocks.get(0).isEmpty) { - const blockElement = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`); - if (blockElement.length > 0) { - const rect = blockElement[0].getBoundingClientRect(); - this.menuPositions.blockTypesMenu = { - top: rect.top + window.scrollY, - left: rect.left + window.scrollX - }; - // Force re-render so the menu is positioned on these new coordinates - this.forceUpdate(); - } - } - } - - /** - * Toggle marks / blocks when button is clicked - */ - handleMarkStyleClick(type) { - let { state } = this.state; - - state = state - .transform() - .toggleMark(type) - .apply(); - - this.setState({ state }); - } - - handleBlockStyleClick(type, isActive, isList) { - let { state } = this.state; - let transform = state.transform(); - const { document } = state; - - // Handle everything but list buttons. - if (type != 'unordered_list' && type != 'ordered_list') { - - if (isList) { - transform = transform - .setBlock(isActive ? DEFAULT_NODE : type) - .unwrapBlock('unordered_list') - .unwrapBlock('ordered_list'); - } - - else { - transform = transform - .setBlock(isActive ? DEFAULT_NODE : type); - } - } - - // Handle the extra wrapping required for list buttons. - else { - const isType = state.blocks.some((block) => { - return !!document.getClosest(block, parent => parent.type == type); - }); - - if (isList && isType) { - transform = transform - .setBlock(DEFAULT_NODE) - .unwrapBlock('unordered_list'); - } else if (isList) { - transform = transform - .unwrapBlock(type == 'unordered_list') - .wrapBlock(type); - } else { - transform = transform - .setBlock('list_item') - .wrapBlock(type); - } - } - - state = transform.apply(); - this.setState({ state }); - } - - /** - * When clicking a link, if the selection has a link in it, remove the link. - * Otherwise, add a new link with an href and text. - * - * @param {Event} e - */ - - handleInlineClick(type, isActive) { - let { state } = this.state; - - if (type === 'link') { - if (!state.isExpanded) return; - - if (isActive) { - state = state - .transform() - .unwrapInline('link') - .apply(); - } - - else { - const href = window.prompt('Enter the URL of the link:', 'http://www.'); - state = state - .transform() - .wrapInline({ - type: 'link', - data: { href } - }) - .collapseToEnd() - .apply(); - } - } - this.setState({ state }); - } - - - handleBlockTypeClick(type) { - let { state } = this.state; - - state = state - .transform() - .insertBlock({ - type: type, - isVoid: true - }) - .apply(); - - this.setState({ state }, this.focusAndAddParagraph); - } - - handleImageClick(mediaProxy) { - let { state } = this.state; - this.props.onAddMedia(mediaProxy); - - state = state - .transform() - .insertInline({ - type: 'mediaproxy', - isVoid: true, - data: { src: mediaProxy.path } - }) - .collapseToEnd() - .insertBlock(DEFAULT_NODE) - .focus() - .apply(); - - this.setState({ state }); - } - - focusAndAddParagraph() { - const { state } = this.state; - const blocks = state.document.getBlocks(); - const last = blocks.last(); - const normalized = state - .transform() - .focus() - .collapseToEndOf(last) - .splitBlock() - .setBlock(DEFAULT_NODE) - .apply({ - snapshot: false - }); - this.setState({ state:normalized }); - } - - - handleKeyDown(evt) { - if (evt.shiftKey && evt.key === 'Enter') { - this.blockEdit = true; - let { state } = this.state; - state = state - .transform() - .insertText(' \n') - .apply(); - - this.setState({ state }); - } - } - - /** - * Return renderers for Slate - */ - renderNode(node) { - return NODES[node.type]; - } - renderMark(mark) { - return MARKS[mark.type]; - } - - renderBlockTypesMenu() { - const currentBlock = this.state.state.blocks.get(0); - const isOpen = (currentBlock.isEmpty && currentBlock.type !== 'horizontal-rule'); - - return ( - - ); - } - - renderStylesMenu() { - const { state } = this.state; - const isOpen = !(state.isBlurred || state.isCollapsed); - - return ( - - ); - } - render() { + const { onChange, onAddMedia, getMedia, value } = this.props; return ( -
      - {this.renderStylesMenu()} - {this.renderBlockTypesMenu()} - -
      + ); } } diff --git a/src/components/Widgets/MarkdownControlElements/Block.css b/src/components/Widgets/MarkdownControlElements/VisualEditor/Block.css similarity index 100% rename from src/components/Widgets/MarkdownControlElements/Block.css rename to src/components/Widgets/MarkdownControlElements/VisualEditor/Block.css diff --git a/src/components/Widgets/MarkdownControlElements/Block.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/Block.js similarity index 100% rename from src/components/Widgets/MarkdownControlElements/Block.js rename to src/components/Widgets/MarkdownControlElements/VisualEditor/Block.js diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.css similarity index 100% rename from src/components/Widgets/MarkdownControlElements/BlockTypesMenu.css rename to src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.css diff --git a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js similarity index 97% rename from src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js rename to src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js index 5337668f..0912ce60 100644 --- a/src/components/Widgets/MarkdownControlElements/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js @@ -1,7 +1,7 @@ import React, { Component, PropTypes } from 'react'; import Portal from 'react-portal'; -import { Icon } from '../../UI'; -import MediaProxy from '../../../valueObjects/MediaProxy'; +import { Icon } from '../../../UI'; +import MediaProxy from '../../../../valueObjects/MediaProxy'; import styles from './BlockTypesMenu.css'; export default class BlockTypesMenu extends Component { diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.css b/src/components/Widgets/MarkdownControlElements/VisualEditor/StylesMenu.css similarity index 100% rename from src/components/Widgets/MarkdownControlElements/StylesMenu.css rename to src/components/Widgets/MarkdownControlElements/VisualEditor/StylesMenu.css diff --git a/src/components/Widgets/MarkdownControlElements/StylesMenu.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/StylesMenu.js similarity index 99% rename from src/components/Widgets/MarkdownControlElements/StylesMenu.js rename to src/components/Widgets/MarkdownControlElements/VisualEditor/StylesMenu.js index b077a5e5..f2aafc3e 100644 --- a/src/components/Widgets/MarkdownControlElements/StylesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/StylesMenu.js @@ -1,6 +1,6 @@ import React, { Component, PropTypes } from 'react'; import Portal from 'react-portal'; -import { Icon } from '../../UI'; +import { Icon } from '../../../UI'; import styles from './StylesMenu.css'; export default class StylesMenu extends Component { diff --git a/src/components/Widgets/MarkdownControl.css b/src/components/Widgets/MarkdownControlElements/VisualEditor/index.css similarity index 100% rename from src/components/Widgets/MarkdownControl.css rename to src/components/Widgets/MarkdownControlElements/VisualEditor/index.css diff --git a/src/components/Widgets/MarkdownControlElements/VisualEditor/index.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/index.js new file mode 100644 index 00000000..33dea48d --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/index.js @@ -0,0 +1,361 @@ +import React, { PropTypes } from 'react'; +import _ from 'lodash'; +import { Editor, Raw } from 'slate'; +import position from 'selection-position'; +import MarkupIt, { SlateUtils } from 'markup-it'; +import getSyntax from '../syntax'; +import { emptyParagraphBlock } from '../constants'; +import { DEFAULT_NODE, NODES, MARKS } from './localRenderers'; +import StylesMenu from './StylesMenu'; +import BlockTypesMenu from './BlockTypesMenu'; +import styles from './index.css'; + +/** + * Slate Render Configuration + */ +class VisualEditor extends React.Component { + constructor(props) { + super(props); + + this.getMedia = this.getMedia.bind(this); + const MarkdownSyntax = getSyntax(this.getMedia); + this.markdown = new MarkupIt(MarkdownSyntax); + + this.customImageNodeRenderer = this.customImageNodeRenderer.bind(this); + NODES['mediaproxy'] = this.customImageNodeRenderer; + + this.blockEdit = false; + this.menuPositions = { + stylesMenu: { + top: 0, + left: 0, + width: 0, + height: 0 + }, + blockTypesMenu: { + top: 0, + left: 0, + width: 0, + height: 0 + } + }; + + let rawJson; + if (props.value !== undefined) { + const content = this.markdown.toContent(props.value); + rawJson = SlateUtils.encode(content); + } else { + rawJson = emptyParagraphBlock; + } + this.state = { + state: Raw.deserialize(rawJson, { terse: true }) + }; + + this.handleChange = this.handleChange.bind(this); + this.handleDocumentChange = this.handleDocumentChange.bind(this); + this.handleMarkStyleClick = this.handleMarkStyleClick.bind(this); + this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); + this.handleInlineClick = this.handleInlineClick.bind(this); + this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.handleImageClick = this.handleImageClick.bind(this); + this.focusAndAddParagraph = this.focusAndAddParagraph.bind(this); + this.handleKeyDown = this.handleKeyDown.bind(this); + this.calculateHoverMenuPosition = _.throttle(this.calculateHoverMenuPosition.bind(this), 30); + this.calculateBlockMenuPosition = _.throttle(this.calculateBlockMenuPosition.bind(this), 100); + this.renderBlockTypesMenu = this.renderBlockTypesMenu.bind(this); + this.renderNode = this.renderNode.bind(this); + this.renderMark = this.renderMark.bind(this); + } + + getMedia(src) { + return this.props.getMedia(src); + } + + /** + * Custom local renderer for image proxy. + */ + customImageNodeRenderer(editorProps) { + const { node, state } = editorProps; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; + const src = node.data.get('src'); + return ( + + ); + } + + /** + * Slate keeps track of selections, scroll position etc. + * So, onChange gets dispatched on every interaction (click, arrows, everything...) + * It also have an onDocumentChange, that get's dispached only when the actual + * content changes + */ + handleChange(state) { + if (this.blockEdit) { + this.blockEdit = false; + } else { + this.calculateHoverMenuPosition(); + this.setState({ state }, this.calculateBlockMenuPosition); + } + } + + handleDocumentChange(document, state) { + const rawJson = Raw.serialize(state, { terse: true }); + const content = SlateUtils.decode(rawJson); + this.props.onChange(this.markdown.toText(content)); + } + + calculateHoverMenuPosition() { + const rect = position(); + this.menuPositions.stylesMenu = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX, + width: rect.width, + height: rect.height + }; + } + + calculateBlockMenuPosition() { + // Don't bother calculating position if block is not empty + if (this.state.state.blocks.get(0).isEmpty) { + const blockElement = document.querySelectorAll(`[data-key='${this.state.state.selection.focusKey}']`); + if (blockElement.length > 0) { + const rect = blockElement[0].getBoundingClientRect(); + this.menuPositions.blockTypesMenu = { + top: rect.top + window.scrollY, + left: rect.left + window.scrollX + }; + // Force re-render so the menu is positioned on these new coordinates + this.forceUpdate(); + } + } + } + + /** + * Toggle marks / blocks when button is clicked + */ + handleMarkStyleClick(type) { + let { state } = this.state; + + state = state + .transform() + .toggleMark(type) + .apply(); + + this.setState({ state }); + } + + handleBlockStyleClick(type, isActive, isList) { + let { state } = this.state; + let transform = state.transform(); + const { document } = state; + + // Handle everything but list buttons. + if (type != 'unordered_list' && type != 'ordered_list') { + + if (isList) { + transform = transform + .setBlock(isActive ? DEFAULT_NODE : type) + .unwrapBlock('unordered_list') + .unwrapBlock('ordered_list'); + } + + else { + transform = transform + .setBlock(isActive ? DEFAULT_NODE : type); + } + } + + // Handle the extra wrapping required for list buttons. + else { + const isType = state.blocks.some((block) => { + return !!document.getClosest(block, parent => parent.type == type); + }); + + if (isList && isType) { + transform = transform + .setBlock(DEFAULT_NODE) + .unwrapBlock('unordered_list'); + } else if (isList) { + transform = transform + .unwrapBlock(type == 'unordered_list') + .wrapBlock(type); + } else { + transform = transform + .setBlock('list_item') + .wrapBlock(type); + } + } + + state = transform.apply(); + this.setState({ state }); + } + + /** + * When clicking a link, if the selection has a link in it, remove the link. + * Otherwise, add a new link with an href and text. + * + * @param {Event} e + */ + + handleInlineClick(type, isActive) { + let { state } = this.state; + + if (type === 'link') { + if (!state.isExpanded) return; + + if (isActive) { + state = state + .transform() + .unwrapInline('link') + .apply(); + } + + else { + const href = window.prompt('Enter the URL of the link:', 'http://www.'); + state = state + .transform() + .wrapInline({ + type: 'link', + data: { href } + }) + .collapseToEnd() + .apply(); + } + } + this.setState({ state }); + } + + + handleBlockTypeClick(type) { + let { state } = this.state; + + state = state + .transform() + .insertBlock({ + type: type, + isVoid: true + }) + .apply(); + + this.setState({ state }, this.focusAndAddParagraph); + } + + handleImageClick(mediaProxy) { + let { state } = this.state; + this.props.onAddMedia(mediaProxy); + + state = state + .transform() + .insertInline({ + type: 'mediaproxy', + isVoid: true, + data: { src: mediaProxy.path } + }) + .collapseToEnd() + .insertBlock(DEFAULT_NODE) + .focus() + .apply(); + + this.setState({ state }); + } + + focusAndAddParagraph() { + const { state } = this.state; + const blocks = state.document.getBlocks(); + const last = blocks.last(); + const normalized = state + .transform() + .focus() + .collapseToEndOf(last) + .splitBlock() + .setBlock(DEFAULT_NODE) + .apply({ + snapshot: false + }); + this.setState({ state:normalized }); + } + + + handleKeyDown(evt) { + if (evt.shiftKey && evt.key === 'Enter') { + this.blockEdit = true; + let { state } = this.state; + state = state + .transform() + .insertText(' \n') + .apply(); + + this.setState({ state }); + } + } + + /** + * Return renderers for Slate + */ + renderNode(node) { + return NODES[node.type]; + } + renderMark(mark) { + return MARKS[mark.type]; + } + + renderBlockTypesMenu() { + const currentBlock = this.state.state.blocks.get(0); + const isOpen = (this.props.value !== undefined && currentBlock.isEmpty && currentBlock.type !== 'horizontal-rule'); + + return ( + + ); + } + + renderStylesMenu() { + const { state } = this.state; + const isOpen = !(state.isBlurred || state.isCollapsed); + + return ( + + ); + } + + render() { + return ( +
      + {this.renderStylesMenu()} + {this.renderBlockTypesMenu()} + +
      + ); + } +} + +export default VisualEditor; + +VisualEditor.propTypes = { + onChange: PropTypes.func.isRequired, + onAddMedia: PropTypes.func.isRequired, + getMedia: PropTypes.func.isRequired, + value: PropTypes.node, +}; diff --git a/src/components/Widgets/MarkdownControlElements/localRenderers.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/localRenderers.js similarity index 97% rename from src/components/Widgets/MarkdownControlElements/localRenderers.js rename to src/components/Widgets/MarkdownControlElements/VisualEditor/localRenderers.js index b23b3d85..2dfac7d2 100644 --- a/src/components/Widgets/MarkdownControlElements/localRenderers.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/localRenderers.js @@ -1,6 +1,6 @@ import React from 'react'; import Block from './Block'; -import styles from '../MarkdownControl.css'; +import styles from './index.css'; /* eslint react/prop-types: 0, react/no-multi-comp: 0 */ diff --git a/src/components/Widgets/MarkdownControlElements/constants.js b/src/components/Widgets/MarkdownControlElements/constants.js new file mode 100644 index 00000000..74779111 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/constants.js @@ -0,0 +1,13 @@ +export const emptyParagraphBlock = { + nodes: [ + { kind: 'block', + type: 'paragraph', + nodes: [{ + kind: 'text', + ranges: [{ + text: '' + }] + }] + } + ] +}; From 994d969247292ddf5a706b76b40de77ee99ffbda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 11 Aug 2016 17:06:01 -0300 Subject: [PATCH 20/29] Raw text editor (with markdown highlight) --- package.json | 1 + .../RawEditor/index.css | 0 .../RawEditor/index.js | 122 ++++++++++++++++++ .../RawEditor/prismMarkdown.js | 116 +++++++++++++++++ 4 files changed, 239 insertions(+) create mode 100644 src/components/Widgets/MarkdownControlElements/RawEditor/index.css create mode 100644 src/components/Widgets/MarkdownControlElements/RawEditor/index.js create mode 100644 src/components/Widgets/MarkdownControlElements/RawEditor/prismMarkdown.js diff --git a/package.json b/package.json index 30d972c6..c91c9083 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "lodash": "^4.13.1", "markup-it": "git+https://github.com/cassiozen/markup-it.git", "pluralize": "^3.0.0", + "prismjs": "^1.5.1", "react-portal": "^2.2.1", "selection-position": "^1.0.0", "slate": "^0.12.2" diff --git a/src/components/Widgets/MarkdownControlElements/RawEditor/index.css b/src/components/Widgets/MarkdownControlElements/RawEditor/index.css new file mode 100644 index 00000000..e69de29b diff --git a/src/components/Widgets/MarkdownControlElements/RawEditor/index.js b/src/components/Widgets/MarkdownControlElements/RawEditor/index.js new file mode 100644 index 00000000..2cabeaa0 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/RawEditor/index.js @@ -0,0 +1,122 @@ +import React, { PropTypes } from 'react'; +import { Editor, Plain, Mark } from 'slate'; +import Prism from 'prismjs'; +import marks from './prismMarkdown'; +import styles from './index.css'; + +const MARKS = { + 'highlight-comment': { + opacity: '0.33' + }, + 'highlight-important': { + fontWeight: 'bold', + color: '#006', + }, + 'highlight-keyword': { + fontWeight: 'bold', + color: '#006', + }, + 'highlight-url': { + color: '#006', + }, + 'highlight-punctuation': { + color: '#006', + } +}; + +Prism.languages.markdown = Prism.languages.extend('markup', {}); +Prism.languages.insertBefore('markdown', 'prolog', marks); +Prism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']); +Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.languages.markdown['url']); +Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']); +Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']); + +class RawEditor extends React.Component { + + constructor(props) { + super(props); + + const content = props.value ? Plain.deserialize(props.value) : Plain.deserialize(''); + + this.state = { + state: content + }; + + this.handleChange = this.handleChange.bind(this); + this.handleDocumentChange = this.handleDocumentChange.bind(this); + this.renderMark = this.renderMark.bind(this); + this.renderDecorations = this.renderDecorations.bind(this); + + } + + /** + * Slate keeps track of selections, scroll position etc. + * So, onChange gets dispatched on every interaction (click, arrows, everything...) + * It also have an onDocumentChange, that get's dispached only when the actual + * content changes + */ + handleChange(state) { + this.setState({ state }); + } + + handleDocumentChange(document, state) { + const content = Plain.serialize(state, { terse: true }); + this.props.onChange(content); + } + + renderMark(mark) { + return MARKS[mark.type] || {}; + } + + renderDecorations(text, block) { + let characters = text.characters.asMutable(); + const string = text.text; + const grammar = Prism.languages.markdown; + const tokens = Prism.tokenize(string, grammar); + let offset = 0; + + for (const token of tokens) { + if (typeof token == 'string') { + offset += token.length; + continue; + } + + const length = offset + token.matchedStr.length; + const name = token.alias || token.type; + const type = `highlight-${name}`; + + for (let i = offset; i < length; i++) { + let char = characters.get(i); + let { marks } = char; + marks = marks.add(Mark.create({ type })); + char = char.merge({ marks }); + characters = characters.set(i, char); + } + + offset = length; + } + + return characters.asImmutable(); + } + + + render() { + return ( + + ); + } +} + +export default RawEditor; + +RawEditor.propTypes = { + onChange: PropTypes.func.isRequired, + value: PropTypes.node, +}; diff --git a/src/components/Widgets/MarkdownControlElements/RawEditor/prismMarkdown.js b/src/components/Widgets/MarkdownControlElements/RawEditor/prismMarkdown.js new file mode 100644 index 00000000..1ea5e5d3 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/RawEditor/prismMarkdown.js @@ -0,0 +1,116 @@ +const marks = { + 'blockquote': { + // > ... + pattern: /^>(?:[\t ]*>)*/m, + alias: 'punctuation' + }, + 'code': [ + { + // Prefixed by 4 spaces or 1 tab + pattern: /^(?: {4}|\t).+/m, + alias: 'keyword' + }, + { + // `code` + // ``code`` + pattern: /``.+?``|`[^`\n]+`/, + alias: 'keyword' + } + ], + 'title': [ + { + // title 1 + // ======= + + // title 2 + // ------- + pattern: /\w+.*(?:\r?\n|\r)(?:==+|--+)/, + alias: 'important', + inside: { + punctuation: /==+$|--+$/ + } + }, + { + // # title 1 + // ###### title 6 + pattern: /(^\s*)#+.+/m, + lookbehind: true, + alias: 'important', + inside: { + punctuation: /^#+|#+$/ + } + } + ], + 'hr': { + // *** + // --- + // * * * + // ----------- + pattern: /(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m, + lookbehind: true, + alias: 'punctuation' + }, + 'list': { + // * item + // + item + // - item + // 1. item + pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, + lookbehind: true, + alias: 'punctuation' + }, + 'url-reference': { + // [id]: http://example.com "Optional title" + // [id]: http://example.com 'Optional title' + // [id]: http://example.com (Optional title) + // [id]: "Optional title" + pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, + inside: { + 'variable': { + pattern: /^(!?\[)[^\]]+/, + lookbehind: true + }, + 'string': /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/, + 'punctuation': /^[\[\]!:]|[<>]/ + }, + alias: 'url' + }, + 'bold': { + // **strong** + // __strong__ + + // Allow only one line break + pattern: /(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, + lookbehind: true, + inside: { + 'punctuation': /^\*\*|^__|\*\*$|__$/ + } + }, + 'italic': { + // *em* + // _em_ + + // Allow only one line break + pattern: /(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, + lookbehind: true, + inside: { + 'punctuation': /^[*_]|[*_]$/ + } + }, + 'url': { + // [example](http://example.com "Optional title") + // [example] [id] + pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/, + inside: { + 'variable': { + pattern: /(!?\[)[^\]]+(?=\]$)/, + lookbehind: true + }, + 'string': { + pattern: /"(?:\\.|[^"\\])*"(?=\)$)/ + } + } + } +}; + +export default marks; From 474abd8f7894b5d690616d8e25992390169ea772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 11 Aug 2016 18:21:32 -0300 Subject: [PATCH 21/29] Markdown editor switching --- src/actions/editor.js | 8 +++ src/components/Widgets/MarkdownControl.js | 64 ++++++++++++++++++++--- src/reducers/editor.js | 14 +++++ src/reducers/index.js | 2 + 4 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 src/actions/editor.js create mode 100644 src/reducers/editor.js diff --git a/src/actions/editor.js b/src/actions/editor.js new file mode 100644 index 00000000..c9e35448 --- /dev/null +++ b/src/actions/editor.js @@ -0,0 +1,8 @@ +export const SWITCH_VISUAL_MODE = 'SWITCH_VISUAL_MODE'; + +export function switchVisualMode(useVisualMode) { + return { + type: SWITCH_VISUAL_MODE, + payload: useVisualMode + }; +} diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index f27285c0..0e7e9850 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,16 +1,59 @@ import React, { PropTypes } from 'react'; +import RawEditor from './MarkdownControlElements/RawEditor'; import VisualEditor from './MarkdownControlElements/VisualEditor'; +import { connect } from 'react-redux'; +import { switchVisualMode } from '../../actions/editor'; class MarkdownControl extends React.Component { + constructor(props){ + super(props); + this.useVisualEditor = this.useVisualEditor.bind(this); + this.useRawEditor = this.useRawEditor.bind(this); + } + + useVisualEditor(){ + this.props.switchVisualMode(true); + } + + useRawEditor(){ + this.props.switchVisualMode(false); + } + + renderEditor() { + const { editor, onChange, onAddMedia, getMedia, value } = this.props; + if (editor.get('useVisualMode')) { + return ( +
      + + +
      + ); + } else { + return ( +
      + + +
      + ); + } + } + render() { - const { onChange, onAddMedia, getMedia, value } = this.props; return ( - +
      + + { this.renderEditor() } +
      ); } } @@ -18,8 +61,15 @@ class MarkdownControl extends React.Component { export default MarkdownControl; MarkdownControl.propTypes = { + editor: PropTypes.object.isRequired, onChange: PropTypes.func.isRequired, onAddMedia: PropTypes.func.isRequired, getMedia: PropTypes.func.isRequired, + switchVisualMode: PropTypes.func.isRequired, value: PropTypes.node, }; + +export default connect( + state => ({ editor: state.editor }), + { switchVisualMode } +)(MarkdownControl); diff --git a/src/reducers/editor.js b/src/reducers/editor.js new file mode 100644 index 00000000..2273e708 --- /dev/null +++ b/src/reducers/editor.js @@ -0,0 +1,14 @@ +import { Map } from 'immutable'; +import { SWITCH_VISUAL_MODE } from '../actions/editor'; + +const editor = (state = Map({ useVisualMode: true }), action) => { + switch (action.type) { + case SWITCH_VISUAL_MODE: + return Map({ useVisualMode: action.payload }); + + default: + return state; + } +}; + +export default editor; diff --git a/src/reducers/index.js b/src/reducers/index.js index ecdac295..f7199111 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -1,5 +1,6 @@ import auth from './auth'; import config from './config'; +import editor from './editor'; import entries, * as fromEntries from './entries'; import entryDraft from './entryDraft'; import collections from './collections'; @@ -9,6 +10,7 @@ const reducers = { auth, config, collections, + editor, entries, entryDraft, medias From dea734ec21994335d2f6ba76a2fb214735fe5691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 17 Aug 2016 09:52:06 -0300 Subject: [PATCH 22/29] updated slate version --- src/components/Widgets/MarkdownControl.js | 7 +- .../RawEditor/index.js | 119 +++++++++--------- .../VisualEditor/index.js | 19 +-- .../VisualEditor/localRenderers.js | 60 --------- .../VisualEditor/schema.js | 65 ++++++++++ 5 files changed, 133 insertions(+), 137 deletions(-) delete mode 100644 src/components/Widgets/MarkdownControlElements/VisualEditor/localRenderers.js create mode 100644 src/components/Widgets/MarkdownControlElements/VisualEditor/schema.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index 0e7e9850..a4c6f22a 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -5,17 +5,17 @@ import { connect } from 'react-redux'; import { switchVisualMode } from '../../actions/editor'; class MarkdownControl extends React.Component { - constructor(props){ + constructor(props) { super(props); this.useVisualEditor = this.useVisualEditor.bind(this); this.useRawEditor = this.useRawEditor.bind(this); } - useVisualEditor(){ + useVisualEditor() { this.props.switchVisualMode(true); } - useRawEditor(){ + useRawEditor() { this.props.switchVisualMode(false); } @@ -29,6 +29,7 @@ class MarkdownControl extends React.Component { onChange={onChange} onAddMedia={onAddMedia} getMedia={getMedia} + registeredComponents={editor.get('registeredComponents')} value={value} />
      diff --git a/src/components/Widgets/MarkdownControlElements/RawEditor/index.js b/src/components/Widgets/MarkdownControlElements/RawEditor/index.js index 2cabeaa0..175f2471 100644 --- a/src/components/Widgets/MarkdownControlElements/RawEditor/index.js +++ b/src/components/Widgets/MarkdownControlElements/RawEditor/index.js @@ -4,25 +4,6 @@ import Prism from 'prismjs'; import marks from './prismMarkdown'; import styles from './index.css'; -const MARKS = { - 'highlight-comment': { - opacity: '0.33' - }, - 'highlight-important': { - fontWeight: 'bold', - color: '#006', - }, - 'highlight-keyword': { - fontWeight: 'bold', - color: '#006', - }, - 'highlight-url': { - color: '#006', - }, - 'highlight-punctuation': { - color: '#006', - } -}; Prism.languages.markdown = Prism.languages.extend('markup', {}); Prism.languages.insertBefore('markdown', 'prolog', marks); @@ -31,6 +12,66 @@ Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.langua Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.languages.markdown['italic']); Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.languages.markdown['bold']); +function renderDecorations(text, block) { + let characters = text.characters.asMutable(); + const string = text.text; + const grammar = Prism.languages.markdown; + const tokens = Prism.tokenize(string, grammar); + let offset = 0; + + for (const token of tokens) { + if (typeof token == 'string') { + offset += token.length; + continue; + } + + const length = offset + token.matchedStr.length; + const name = token.alias || token.type; + const type = `highlight-${name}`; + + for (let i = offset; i < length; i++) { + let char = characters.get(i); + let { marks } = char; + marks = marks.add(Mark.create({ type })); + char = char.merge({ marks }); + characters = characters.set(i, char); + } + + offset = length; + } + + return characters.asImmutable(); +} + + +const SCHEMA = { + rules: [ + { + match: (object) => object.kind == 'block', + decorate: renderDecorations + } + ], + marks: { + 'highlight-comment': { + opacity: '0.33' + }, + 'highlight-important': { + fontWeight: 'bold', + color: '#006', + }, + 'highlight-keyword': { + fontWeight: 'bold', + color: '#006', + }, + 'highlight-url': { + color: '#006', + }, + 'highlight-punctuation': { + color: '#006', + } + } +}; + class RawEditor extends React.Component { constructor(props) { @@ -44,8 +85,6 @@ class RawEditor extends React.Component { this.handleChange = this.handleChange.bind(this); this.handleDocumentChange = this.handleDocumentChange.bind(this); - this.renderMark = this.renderMark.bind(this); - this.renderDecorations = this.renderDecorations.bind(this); } @@ -64,48 +103,12 @@ class RawEditor extends React.Component { this.props.onChange(content); } - renderMark(mark) { - return MARKS[mark.type] || {}; - } - - renderDecorations(text, block) { - let characters = text.characters.asMutable(); - const string = text.text; - const grammar = Prism.languages.markdown; - const tokens = Prism.tokenize(string, grammar); - let offset = 0; - - for (const token of tokens) { - if (typeof token == 'string') { - offset += token.length; - continue; - } - - const length = offset + token.matchedStr.length; - const name = token.alias || token.type; - const type = `highlight-${name}`; - - for (let i = offset; i < length; i++) { - let char = characters.get(i); - let { marks } = char; - marks = marks.add(Mark.create({ type })); - char = char.merge({ marks }); - characters = characters.set(i, char); - } - - offset = length; - } - - return characters.asImmutable(); - } - - render() { return ( {props.children}, - 'unordered_list': props =>
        {props.children}
      , - 'header_one': props => {props.children}, - 'header_two': props => {props.children}, - 'header_three': props => {props.children}, - 'header_four': props => {props.children}, - 'header_five': props => {props.children}, - 'header_six': props => {props.children}, - 'list_item': props =>
    9. {props.children}
    10. , - 'paragraph': props => {props.children}, - 'hr': props => { - const { node, state } = props; - const isFocused = state.selection.hasEdgeIn(node); - const className = isFocused ? styles.active : null; - return ( -
      - ); - }, - 'link': (props) => { - const { data } = props.node; - const href = data.get('href'); - return {props.children}; - }, - 'image': (props) => { - const { node, state } = props; - const isFocused = state.selection.hasEdgeIn(node); - const className = isFocused ? styles.active : null; - const src = node.data.get('src'); - return ( - - ); - } -}; - -// Local mark renderers. -export const MARKS = { - BOLD: { - fontWeight: 'bold' - }, - ITALIC: { - fontStyle: 'italic' - }, - CODE: { - fontFamily: 'monospace', - backgroundColor: '#eee', - padding: '3px', - borderRadius: '4px' - } -}; diff --git a/src/components/Widgets/MarkdownControlElements/VisualEditor/schema.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/schema.js new file mode 100644 index 00000000..ea00ade2 --- /dev/null +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/schema.js @@ -0,0 +1,65 @@ +import React from 'react'; +import Block from './Block'; +import styles from './index.css'; + +/* eslint react/prop-types: 0, react/no-multi-comp: 0 */ + +// Define the default node type. +export const DEFAULT_NODE = 'paragraph'; + +/** + * Define a schema. + * + * @type {Object} + */ + +export const SCHEMA = { + nodes: { + 'blockquote': (props) => {props.children}, + 'unordered_list': props =>
        {props.children}
      , + 'header_one': props => {props.children}, + 'header_two': props => {props.children}, + 'header_three': props => {props.children}, + 'header_four': props => {props.children}, + 'header_five': props => {props.children}, + 'header_six': props => {props.children}, + 'list_item': props =>
    11. {props.children}
    12. , + 'paragraph': props => {props.children}, + 'hr': props => { + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; + return ( +
      + ); + }, + 'link': (props) => { + const { data } = props.node; + const href = data.get('href'); + return {props.children}; + }, + 'image': (props) => { + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? styles.active : null; + const src = node.data.get('src'); + return ( + + ); + } + }, + marks: { + BOLD: { + fontWeight: 'bold' + }, + ITALIC: { + fontStyle: 'italic' + }, + CODE: { + fontFamily: 'monospace', + backgroundColor: '#eee', + padding: '3px', + borderRadius: '4px' + } + } +} From a0a24ebf72f8af53aa6bc6473c1d62cd5ac33c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Wed, 17 Aug 2016 09:52:17 -0300 Subject: [PATCH 23/29] plugin architecture --- package.json | 4 ++-- src/actions/editor.js | 8 ++++++++ src/index.js | 3 +++ src/plugins/index.js | 40 ++++++++++++++++++++++++++++++++++++++++ src/reducers/editor.js | 11 ++++++----- 5 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 src/plugins/index.js diff --git a/package.json b/package.json index c91c9083..5afdd2bf 100644 --- a/package.json +++ b/package.json @@ -74,11 +74,11 @@ "json-loader": "^0.5.4", "localforage": "^1.4.2", "lodash": "^4.13.1", - "markup-it": "git+https://github.com/cassiozen/markup-it.git", + "markup-it": "git+https://github.com/GitbookIO/markup-it.git", "pluralize": "^3.0.0", "prismjs": "^1.5.1", "react-portal": "^2.2.1", "selection-position": "^1.0.0", - "slate": "^0.12.2" + "slate": "^0.13.5" } } diff --git a/src/actions/editor.js b/src/actions/editor.js index c9e35448..fe26c1af 100644 --- a/src/actions/editor.js +++ b/src/actions/editor.js @@ -1,4 +1,5 @@ export const SWITCH_VISUAL_MODE = 'SWITCH_VISUAL_MODE'; +export const REGISTER_COMPONENT = 'REGISTER_COMPONENT'; export function switchVisualMode(useVisualMode) { return { @@ -6,3 +7,10 @@ export function switchVisualMode(useVisualMode) { payload: useVisualMode }; } + +export function registerComponent(options) { + return { + type: REGISTER_COMPONENT, + payload: options + }; +} diff --git a/src/index.js b/src/index.js index 508b38f0..55c88e99 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import { Router } from 'react-router'; import configureStore from './store/configureStore'; import routes from './routing/routes'; import history, { syncHistory } from './routing/history'; +import { initPluginAPI } from './plugins'; import 'file?name=index.html!../example/index.html'; import './index.css'; @@ -13,6 +14,8 @@ const store = configureStore(); // Create an enhanced history that syncs navigation events with the store syncHistory(store); +initPluginAPI(store); + const el = document.createElement('div'); el.id = 'root'; document.body.appendChild(el); diff --git a/src/plugins/index.js b/src/plugins/index.js new file mode 100644 index 00000000..fffb9412 --- /dev/null +++ b/src/plugins/index.js @@ -0,0 +1,40 @@ +import { registerComponent } from '../actions/editor'; + +let storeRef; +const requiredEditorComponentProperties = ['label', 'fields', 'detect', 'fromBlock', 'toBlock']; + +const checkConfigKeys = (config, requiredProps) => { + for (var i = requiredProps.length; i--;) { + if (!config.hasOwnProperty(requiredProps[i])) return false; + } + return true; +}; + +const wrap = (func) => function() { + func.apply(null, arguments); +}; + +function CMS() { + this.registerEditorComponent = (config) => { + if (checkConfigKeys(config, requiredEditorComponentProperties)) { + const configObj = { + label: config.label || 'unnamed', + icon: config.icon || 'exclamation-triangle', + fields: config.fields, + detect: wrap(config.detect), + fromBlock: wrap(config.fromBlock), + toBlock: wrap(config.toBlock), + toPreview: config.toPreview ? wrap(config.toPreview) : wrap(config.toBlock) + }; + storeRef.dispatch(registerComponent(configObj)); + } else { + const label = config.label || 'unnamed'; + window.console && console.error(`The provided component configuration for ${label} is incorrect.`); + } + }; +} + +export const initPluginAPI = (store) => { + storeRef = store; + window.CMS = new CMS(); +}; diff --git a/src/reducers/editor.js b/src/reducers/editor.js index 2273e708..9a6c2936 100644 --- a/src/reducers/editor.js +++ b/src/reducers/editor.js @@ -1,11 +1,12 @@ -import { Map } from 'immutable'; -import { SWITCH_VISUAL_MODE } from '../actions/editor'; +import { Map, List } from 'immutable'; +import { SWITCH_VISUAL_MODE, REGISTER_COMPONENT } from '../actions/editor'; -const editor = (state = Map({ useVisualMode: true }), action) => { +const editor = (state = Map({ useVisualMode: true, registeredComponents: List() }), action) => { switch (action.type) { case SWITCH_VISUAL_MODE: - return Map({ useVisualMode: action.payload }); - + return state.setIn(['useVisualMode'], action.payload); + case REGISTER_COMPONENT: + return state.updateIn(['registeredComponents'], list => list.push(action.payload)); default: return state; } From d22a4da057343ee081a3e7401f3deae9b6404210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 09:09:24 -0300 Subject: [PATCH 24/29] Using custom markup-it (temporarily) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5afdd2bf..8ecbec91 100644 --- a/package.json +++ b/package.json @@ -74,11 +74,11 @@ "json-loader": "^0.5.4", "localforage": "^1.4.2", "lodash": "^4.13.1", - "markup-it": "git+https://github.com/GitbookIO/markup-it.git", + "markup-it": "git+https://github.com/cassiozen/markup-it.git", "pluralize": "^3.0.0", "prismjs": "^1.5.1", "react-portal": "^2.2.1", "selection-position": "^1.0.0", - "slate": "^0.13.5" + "slate": "^0.13.6" } } From 986e36c137c6f6804e41bd5e583b523b7ce1cca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 09:09:54 -0300 Subject: [PATCH 25/29] Pass plugins via context instead of using Redux store --- src/actions/editor.js | 8 ----- src/index.js | 10 +++--- src/plugins/index.js | 80 ++++++++++++++++++++++++++---------------- src/reducers/editor.js | 8 ++--- 4 files changed, 58 insertions(+), 48 deletions(-) diff --git a/src/actions/editor.js b/src/actions/editor.js index fe26c1af..c9e35448 100644 --- a/src/actions/editor.js +++ b/src/actions/editor.js @@ -1,5 +1,4 @@ export const SWITCH_VISUAL_MODE = 'SWITCH_VISUAL_MODE'; -export const REGISTER_COMPONENT = 'REGISTER_COMPONENT'; export function switchVisualMode(useVisualMode) { return { @@ -7,10 +6,3 @@ export function switchVisualMode(useVisualMode) { payload: useVisualMode }; } - -export function registerComponent(options) { - return { - type: REGISTER_COMPONENT, - payload: options - }; -} diff --git a/src/index.js b/src/index.js index 55c88e99..13dc95ca 100644 --- a/src/index.js +++ b/src/index.js @@ -14,7 +14,7 @@ const store = configureStore(); // Create an enhanced history that syncs navigation events with the store syncHistory(store); -initPluginAPI(store); +const Plugin = initPluginAPI(); const el = document.createElement('div'); el.id = 'root'; @@ -22,8 +22,10 @@ document.body.appendChild(el); render(( - - {routes} - + + + {routes} + + ), el); diff --git a/src/plugins/index.js b/src/plugins/index.js index fffb9412..485a0c4c 100644 --- a/src/plugins/index.js +++ b/src/plugins/index.js @@ -1,40 +1,58 @@ -import { registerComponent } from '../actions/editor'; +import { Component, PropTypes, Children } from 'react'; +import { List, Record } from 'immutable'; +import _ from 'lodash'; -let storeRef; -const requiredEditorComponentProperties = ['label', 'fields', 'detect', 'fromBlock', 'toBlock']; +const plugins = { editor: List() }; -const checkConfigKeys = (config, requiredProps) => { - for (var i = requiredProps.length; i--;) { - if (!config.hasOwnProperty(requiredProps[i])) return false; - } - return true; -}; - -const wrap = (func) => function() { - func.apply(null, arguments); -}; +const catchesNothing = /.^/; +const EditorComponent = Record({ + id: null, + label: 'unnamed component', + icon: 'exclamation-triangle', + fields: [], + pattern: catchesNothing, + fromBlock: function(match) { return {}; }, + toBlock: function(attributes) { return 'Plugin'; }, + toPreview: function(attributes) { return 'Plugin'; } +}); function CMS() { this.registerEditorComponent = (config) => { - if (checkConfigKeys(config, requiredEditorComponentProperties)) { - const configObj = { - label: config.label || 'unnamed', - icon: config.icon || 'exclamation-triangle', - fields: config.fields, - detect: wrap(config.detect), - fromBlock: wrap(config.fromBlock), - toBlock: wrap(config.toBlock), - toPreview: config.toPreview ? wrap(config.toPreview) : wrap(config.toBlock) - }; - storeRef.dispatch(registerComponent(configObj)); - } else { - const label = config.label || 'unnamed'; - window.console && console.error(`The provided component configuration for ${label} is incorrect.`); - } + const configObj = new EditorComponent({ + id: config.id || config.label.replace(/[^A-Z0-9]+/ig, '_'), + label: config.label, + icon: config.icon, + fields: config.fields, + pattern: config.pattern, + fromBlock: _.isFunction(config.fromBlock) ? config.fromBlock.bind(null) : null, + toBlock: _.isFunction(config.toBlock) ? config.toBlock.bind(null) : null, + toPreview: _.isFunction(config.toPreview) ? config.toPreview.bind(null) : config.toBlock.bind(null) + }); + + plugins.editor = plugins.editor.push(configObj); }; } -export const initPluginAPI = (store) => { - storeRef = store; - window.CMS = new CMS(); + +class Plugin extends Component { + getChildContext() { + return { plugins: plugins }; + } + + render() { + return Children.only(this.props.children); + } +} + +Plugin.propTypes = { + children: PropTypes.element.isRequired +}; +Plugin.childContextTypes = { + plugins: PropTypes.object +}; + + +export const initPluginAPI = () => { + window.CMS = new CMS(); + return Plugin; }; diff --git a/src/reducers/editor.js b/src/reducers/editor.js index 9a6c2936..4917befb 100644 --- a/src/reducers/editor.js +++ b/src/reducers/editor.js @@ -1,12 +1,10 @@ -import { Map, List } from 'immutable'; -import { SWITCH_VISUAL_MODE, REGISTER_COMPONENT } from '../actions/editor'; +import { Map } from 'immutable'; +import { SWITCH_VISUAL_MODE } from '../actions/editor'; -const editor = (state = Map({ useVisualMode: true, registeredComponents: List() }), action) => { +const editor = (state = Map({ useVisualMode: true }), action) => { switch (action.type) { case SWITCH_VISUAL_MODE: return state.setIn(['useVisualMode'], action.payload); - case REGISTER_COMPONENT: - return state.updateIn(['registeredComponents'], list => list.push(action.payload)); default: return state; } From ae52a14cb13357d09f4230d4dd39d85cff8dd86d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 10:51:38 -0300 Subject: [PATCH 26/29] plugin parsing for rich text editors --- src/components/Widgets/MarkdownControl.js | 13 +++- .../VisualEditor/BlockTypesMenu.js | 5 +- .../VisualEditor/index.js | 11 ++- src/components/Widgets/richText.js | 69 +++++++++++++++++++ 4 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 src/components/Widgets/richText.js diff --git a/src/components/Widgets/MarkdownControl.js b/src/components/Widgets/MarkdownControl.js index a4c6f22a..a315cb80 100644 --- a/src/components/Widgets/MarkdownControl.js +++ b/src/components/Widgets/MarkdownControl.js @@ -1,16 +1,21 @@ import React, { PropTypes } from 'react'; import RawEditor from './MarkdownControlElements/RawEditor'; import VisualEditor from './MarkdownControlElements/VisualEditor'; +import { processEditorPlugins } from './richText'; import { connect } from 'react-redux'; import { switchVisualMode } from '../../actions/editor'; class MarkdownControl extends React.Component { - constructor(props) { - super(props); + constructor(props, context) { + super(props, context); this.useVisualEditor = this.useVisualEditor.bind(this); this.useRawEditor = this.useRawEditor.bind(this); } + componentWillMount() { + processEditorPlugins(this.context.plugins.editor); + } + useVisualEditor() { this.props.switchVisualMode(true); } @@ -70,6 +75,10 @@ MarkdownControl.propTypes = { value: PropTypes.node, }; +MarkdownControl.contextTypes = { + plugins: PropTypes.object, +}; + export default connect( state => ({ editor: state.editor }), { switchVisualMode } diff --git a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js index 0912ce60..946b486e 100644 --- a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js @@ -88,15 +88,17 @@ export default class BlockTypesMenu extends Component { renderBlockTypeButton(type, icon) { const onClick = e => this.handleBlockTypeClick(e, type); return ( - + ); } renderMenu() { + const { plugins } = this.props; if (this.state.expanded) { return (
      {this.renderBlockTypeButton('hr', 'dot-3')} + {plugins.map(plugin => this.renderBlockTypeButton(plugin.id, plugin.icon))} { + const markdownRule = MarkupIt.Rule(plugin.id) + .regExp(plugin.pattern, function(state, match) { return plugin.fromBlock(match); }) + .toText(function(state, token) { return plugin.toBlock(token.getData()); }); + + const htmlRule = MarkupIt.Rule(plugin.id) + .regExp(plugin.pattern, function(state, match) { return plugin.fromBlock(match); }) + .toText(function(state, token) { return plugin.toPreview(token.getData()); }); + + const nodeRenderer = (props) => { + /* eslint react/prop-types: 0 */ + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? 'plugin active' : 'plugin'; + return ( +
      + +
      + ); + }; + + augmentedMarkdownSyntax.addInlineRules(markdownRule); + augmentedHTMLSyntax.addInlineRules(htmlRule); + nodes[plugin.id] = nodeRenderer; + }); + + processedPlugins = plugins; +} + +function getPlugins() { + return processedPlugins.map(plugin => ( + { id: plugin.id, icon: plugin.icon } + )).toArray(); +} + +function getNodes() { + return nodes; +} + +function getSyntaxes() { + return { markdown: augmentedMarkdownSyntax, html:augmentedHTMLSyntax }; +} + +export { processEditorPlugins, getNodes, getSyntaxes, getPlugins }; From e52ccc0dbc3ce00fcb2f01269e2f910619d16978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 15:13:22 -0300 Subject: [PATCH 27/29] Editor plugin architecture skeleton --- example/index.html | 17 ++++ .../VisualEditor/BlockTypesMenu.js | 21 ++++- .../VisualEditor/index.css | 23 ++++++ .../VisualEditor/index.js | 40 ++++++---- .../Widgets/MarkdownControlElements/syntax.js | 77 ------------------- src/components/Widgets/richText.js | 75 +++++++++++++++--- 6 files changed, 148 insertions(+), 105 deletions(-) delete mode 100644 src/components/Widgets/MarkdownControlElements/syntax.js diff --git a/example/index.html b/example/index.html index 2d910b39..4389ed9d 100644 --- a/example/index.html +++ b/example/index.html @@ -68,5 +68,22 @@ + diff --git a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js index 946b486e..9fb9d149 100644 --- a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js @@ -17,9 +17,11 @@ export default class BlockTypesMenu extends Component { this.toggleMenu = this.toggleMenu.bind(this); this.handleOpen = this.handleOpen.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.handlePluginClick = this.handlePluginClick.bind(this); this.handleFileUploadClick = this.handleFileUploadClick.bind(this); this.handleFileUploadChange = this.handleFileUploadChange.bind(this); this.renderBlockTypeButton = this.renderBlockTypeButton.bind(this); + this.renderPluginButton = this.renderPluginButton.bind(this); } /** @@ -58,6 +60,14 @@ export default class BlockTypesMenu extends Component { this.props.onClickBlock(type); } + handlePluginClick(e, plugin) { + const data = {}; + plugin.fields.forEach(field => { + data[field] = window.prompt(field); + }); + this.props.onClickPlugin(plugin.id, data); + } + handleFileUploadClick() { this._fileInput.click(); } @@ -84,7 +94,6 @@ export default class BlockTypesMenu extends Component { } - renderBlockTypeButton(type, icon) { const onClick = e => this.handleBlockTypeClick(e, type); return ( @@ -92,13 +101,20 @@ export default class BlockTypesMenu extends Component { ); } + renderPluginButton(plugin) { + const onClick = e => this.handlePluginClick(e, plugin); + return ( + + ); + } + renderMenu() { const { plugins } = this.props; if (this.state.expanded) { return (
      {this.renderBlockTypeButton('hr', 'dot-3')} - {plugins.map(plugin => this.renderBlockTypeButton(plugin.id, plugin.icon))} + {plugins.map(plugin => this.renderPluginButton(plugin))} plugin.id)); } else { rawJson = emptyParagraphBlock; } @@ -53,6 +56,7 @@ class VisualEditor extends React.Component { this.handleBlockStyleClick = this.handleBlockStyleClick.bind(this); this.handleInlineClick = this.handleInlineClick.bind(this); this.handleBlockTypeClick = this.handleBlockTypeClick.bind(this); + this.handlePluginClick = this.handlePluginClick.bind(this); this.handleImageClick = this.handleImageClick.bind(this); this.focusAndAddParagraph = this.focusAndAddParagraph.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); @@ -65,19 +69,6 @@ class VisualEditor extends React.Component { return this.props.getMedia(src); } - /** - * Custom local renderer for image proxy. - */ - customImageNodeRenderer(editorProps) { - const { node, state } = editorProps; - const isFocused = state.selection.hasEdgeIn(node); - const className = isFocused ? styles.active : null; - const src = node.data.get('src'); - return ( - - ); - } - /** * Slate keeps track of selections, scroll position etc. * So, onChange gets dispatched on every interaction (click, arrows, everything...) @@ -235,6 +226,24 @@ class VisualEditor extends React.Component { this.setState({ state }, this.focusAndAddParagraph); } + handlePluginClick(type, data) { + let { state } = this.state; + + state = state + .transform() + .insertInline({ + type: type, + data: data, + isVoid: true + }) + .collapseToEnd() + .insertBlock(DEFAULT_NODE) + .focus() + .apply(); + + this.setState({ state }); + } + handleImageClick(mediaProxy) { let { state } = this.state; this.props.onAddMedia(mediaProxy); @@ -294,6 +303,7 @@ class VisualEditor extends React.Component { plugins={getPlugins()} position={this.menuPositions.blockTypesMenu} onClickBlock={this.handleBlockTypeClick} + onClickPlugin={this.handlePluginClick} onClickImage={this.handleImageClick} /> ); diff --git a/src/components/Widgets/MarkdownControlElements/syntax.js b/src/components/Widgets/MarkdownControlElements/syntax.js deleted file mode 100644 index 6a9a6984..00000000 --- a/src/components/Widgets/MarkdownControlElements/syntax.js +++ /dev/null @@ -1,77 +0,0 @@ -import Immutable from 'immutable'; -import MarkupIt from 'markup-it'; -import markdownSyntax from 'markup-it/syntaxes/markdown'; -import reInline from 'markup-it/syntaxes/markdown/re/inline'; - - -/** - * Test if a link input is an image - * @param {String} raw - * @return {Boolean} - */ -function isImage(raw) { - return raw.charAt(0) === '!'; -} - -export default function getSyntax(getMedia) { - const customImageRule = MarkupIt.Rule('mediaproxy') - .regExp(reInline.link, function(state, match) { - if (!isImage(match[0])) { - return; - } - - var imgData = Immutable.Map({ - alt: match[1], - src: getMedia(match[2]), - title: match[3] - }).filter(Boolean); - - return { - data: imgData - }; - }) - .regExp(reInline.reflink, function(state, match) { - if (!isImage(match[0])) { - return; - } - - var refId = (match[2] || match[1]); - return { - data: { ref: refId } - }; - }) - .regExp(reInline.nolink, function(state, match) { - if (!isImage(match[0])) { - return; - } - - var refId = (match[2] || match[1]); - return { - data: { ref: refId } - }; - }) - .regExp(reInline.reffn, function(state, match) { - if (!isImage(match[0])) { - return; - } - - var refId = match[1]; - return { - data: { ref: refId } - }; - }) - .toText(function(state, token) { - var data = token.getData(); - var alt = data.get('alt', ''); - var src = getMedia(data.get('src', '')); - var title = data.get('title', ''); - - if (title) { - return '![' + alt + '](' + src + ' "' + title + '")'; - } else { - return '![' + alt + '](' + src + ')'; - } - }); - - return markdownSyntax.addInlineRules(customImageRule); -} diff --git a/src/components/Widgets/richText.js b/src/components/Widgets/richText.js index bb11631d..0b8b6856 100644 --- a/src/components/Widgets/richText.js +++ b/src/components/Widgets/richText.js @@ -1,8 +1,10 @@ +/* eslint react/prop-types: 0, react/no-multi-comp: 0 */ import React from 'react'; -import { List } from 'immutable'; +import { List, Map } from 'immutable'; import MarkupIt from 'markup-it'; import markdownSyntax from 'markup-it/syntaxes/markdown'; import htmlSyntax from 'markup-it/syntaxes/html'; +import reInline from 'markup-it/syntaxes/markdown/re/inline'; import { Icon } from '../UI'; /* @@ -15,8 +17,8 @@ let processedPlugins = List([]); const nodes = {}; -const augmentedMarkdownSyntax = markdownSyntax; -const augmentedHTMLSyntax = htmlSyntax; +let augmentedMarkdownSyntax = markdownSyntax; +let augmentedHTMLSyntax = htmlSyntax; function processEditorPlugins(plugins) { // Since the plugin list is immutable, a simple comparisson is enough @@ -25,36 +27,86 @@ function processEditorPlugins(plugins) { plugins.forEach(plugin => { const markdownRule = MarkupIt.Rule(plugin.id) - .regExp(plugin.pattern, function(state, match) { return plugin.fromBlock(match); }) - .toText(function(state, token) { return plugin.toBlock(token.getData()); }); + .regExp(plugin.pattern, function(state, match) { + return { data: plugin.fromBlock(match) }; + }) + .toText(function(state, token) { return plugin.toBlock(token.getData().toObject()) + '\n\n'; }); const htmlRule = MarkupIt.Rule(plugin.id) .regExp(plugin.pattern, function(state, match) { return plugin.fromBlock(match); }) .toText(function(state, token) { return plugin.toPreview(token.getData()); }); const nodeRenderer = (props) => { - /* eslint react/prop-types: 0 */ const { node, state } = props; const isFocused = state.selection.hasEdgeIn(node); const className = isFocused ? 'plugin active' : 'plugin'; return (
      - +
      +
      + { plugin.fields.map(field => `${field}: “${node.data.get(field)}”`) } +
      + +
      ); }; - augmentedMarkdownSyntax.addInlineRules(markdownRule); - augmentedHTMLSyntax.addInlineRules(htmlRule); + augmentedMarkdownSyntax = augmentedMarkdownSyntax.addInlineRules(markdownRule); + augmentedHTMLSyntax = augmentedHTMLSyntax.addInlineRules(htmlRule); nodes[plugin.id] = nodeRenderer; }); processedPlugins = plugins; } +function processMediaProxyPlugins(getMedia) { + const customImageRule = MarkupIt.Rule('mediaproxy') + .regExp(reInline.link, function(state, match) { + if (match[0].charAt(0) !== '!') { + // Return if this is not an image + return; + } + + var imgData = Map({ + alt: match[1], + src: getMedia(match[2]), + title: match[3] + }).filter(Boolean); + + return { + data: imgData + }; + }) + .toText(function(state, token) { + var data = token.getData(); + var alt = data.get('alt', ''); + var src = getMedia(data.get('src', '')); + var title = data.get('title', ''); + + if (title) { + return '![' + alt + '](' + src + ' "' + title + '")'; + } else { + return '![' + alt + '](' + src + ')'; + } + }); + + nodes['mediaproxy'] = (props) => { + /* eslint react/prop-types: 0 */ + const { node, state } = props; + const isFocused = state.selection.hasEdgeIn(node); + const className = isFocused ? 'active' : null; + const src = node.data.get('src'); + return ( + + ); + }; + augmentedMarkdownSyntax = augmentedMarkdownSyntax.addInlineRules(customImageRule); +} + function getPlugins() { return processedPlugins.map(plugin => ( - { id: plugin.id, icon: plugin.icon } + { id: plugin.id, icon: plugin.icon, fields: plugin.fields } )).toArray(); } @@ -62,7 +114,8 @@ function getNodes() { return nodes; } -function getSyntaxes() { +function getSyntaxes(getMedia) { + processMediaProxyPlugins(getMedia); return { markdown: augmentedMarkdownSyntax, html:augmentedHTMLSyntax }; } From 95fdba9953e47667c4209cf7d3b18cd6562aa686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 15:30:28 -0300 Subject: [PATCH 28/29] plugin fields have with distinct name and label --- example/index.html | 6 +++--- .../MarkdownControlElements/VisualEditor/BlockTypesMenu.js | 2 +- src/components/Widgets/richText.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/example/index.html b/example/index.html index 4389ed9d..5b7a299d 100644 --- a/example/index.html +++ b/example/index.html @@ -73,15 +73,15 @@ id: "youtube", label: "Youtube", icon: 'video', - fields: ['video-id'], + fields: [{name: 'id', label: 'Youtube Video ID'}], pattern: /^{{<\s?youtube (\S+)\s?>}}/, fromBlock: function(match) { return { - "video-id": match[1] + id: match[1] }; }, toBlock: function(obj) { - return '{{< youtube ' + obj['video-id'] + ' >}}'; + return '{{< youtube ' + obj.id + ' >}}'; } }) diff --git a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js index 9fb9d149..0855d40b 100644 --- a/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js +++ b/src/components/Widgets/MarkdownControlElements/VisualEditor/BlockTypesMenu.js @@ -63,7 +63,7 @@ export default class BlockTypesMenu extends Component { handlePluginClick(e, plugin) { const data = {}; plugin.fields.forEach(field => { - data[field] = window.prompt(field); + data[field.name] = window.prompt(field.label); }); this.props.onClickPlugin(plugin.id, data); } diff --git a/src/components/Widgets/richText.js b/src/components/Widgets/richText.js index 0b8b6856..7879edb0 100644 --- a/src/components/Widgets/richText.js +++ b/src/components/Widgets/richText.js @@ -44,7 +44,7 @@ function processEditorPlugins(plugins) {
      - { plugin.fields.map(field => `${field}: “${node.data.get(field)}”`) } + { plugin.fields.map(field => `${field.label}: “${node.data.get(field.name)}”`) }
      From b4f3a38bd5dd4584ac94a485490007d598975c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A1ssio=20Zen?= Date: Thu, 18 Aug 2016 17:26:01 -0300 Subject: [PATCH 29/29] Preview using MarkupIt --- example/index.html | 5 ++ package.json | 2 - src/components/Widgets/MarkdownPreview.js | 22 ++++-- src/components/Widgets/richText.js | 82 +++++++++++++---------- 4 files changed, 66 insertions(+), 45 deletions(-) diff --git a/example/index.html b/example/index.html index 5b7a299d..aa1c14e8 100644 --- a/example/index.html +++ b/example/index.html @@ -82,6 +82,11 @@ }, toBlock: function(obj) { return '{{< youtube ' + obj.id + ' >}}'; + }, + toPreview: function(obj) { + return ( + 'Youtube Video' + ); } }) diff --git a/package.json b/package.json index 8ecbec91..05201017 100644 --- a/package.json +++ b/package.json @@ -67,8 +67,6 @@ }, "dependencies": { "bricks.js": "^1.7.0", - "commonmark": "^0.24.0", - "commonmark-react-renderer": "^4.1.2", "fuzzy": "^0.1.1", "js-base64": "^2.1.9", "json-loader": "^0.5.4", diff --git a/src/components/Widgets/MarkdownPreview.js b/src/components/Widgets/MarkdownPreview.js index 37fe084a..f9f0021c 100644 --- a/src/components/Widgets/MarkdownPreview.js +++ b/src/components/Widgets/MarkdownPreview.js @@ -1,17 +1,25 @@ import React, { PropTypes } from 'react'; -import CommonMark from 'commonmark'; -import ReactRenderer from 'commonmark-react-renderer'; - -const parser = new CommonMark.Parser(); -const renderer = new ReactRenderer(); +import MarkupIt from 'markup-it'; +import { getSyntaxes } from './richText'; export default class MarkdownPreview extends React.Component { + + constructor(props) { + super(props); + + const { markdown, html } = getSyntaxes(); + this.markdown = new MarkupIt(markdown); + this.html = new MarkupIt(html); + } render() { const { value } = this.props; if (value == null) { return null; } + const content = this.markdown.toContent(value); + const contentHtml = { __html: this.html.toText(content) }; - const ast = parser.parse(value); - return React.createElement.apply(React, ['div', {}].concat(renderer.render(ast))); + return ( +
      + ); } } diff --git a/src/components/Widgets/richText.js b/src/components/Widgets/richText.js index 7879edb0..08a8331c 100644 --- a/src/components/Widgets/richText.js +++ b/src/components/Widgets/richText.js @@ -26,15 +26,17 @@ function processEditorPlugins(plugins) { if (plugins === processedPlugins) return; plugins.forEach(plugin => { - const markdownRule = MarkupIt.Rule(plugin.id) - .regExp(plugin.pattern, function(state, match) { - return { data: plugin.fromBlock(match) }; - }) - .toText(function(state, token) { return plugin.toBlock(token.getData().toObject()) + '\n\n'; }); + const basicRule = MarkupIt.Rule(plugin.id).regExp(plugin.pattern, (state, match) => ( + { data: plugin.fromBlock(match) } + )); - const htmlRule = MarkupIt.Rule(plugin.id) - .regExp(plugin.pattern, function(state, match) { return plugin.fromBlock(match); }) - .toText(function(state, token) { return plugin.toPreview(token.getData()); }); + const markdownRule = basicRule.toText((state, token) => ( + plugin.toBlock(token.getData().toObject()) + '\n\n' + )); + + const htmlRule = basicRule.toText((state, token) => ( + plugin.toPreview(token.getData().toObject()) + )); const nodeRenderer = (props) => { const { node, state } = props; @@ -61,35 +63,40 @@ function processEditorPlugins(plugins) { } function processMediaProxyPlugins(getMedia) { - const customImageRule = MarkupIt.Rule('mediaproxy') - .regExp(reInline.link, function(state, match) { - if (match[0].charAt(0) !== '!') { - // Return if this is not an image - return; - } + const mediaProxyRule = MarkupIt.Rule('mediaproxy').regExp(reInline.link, (state, match) => { + if (match[0].charAt(0) !== '!') { + // Return if this is not an image + return; + } - var imgData = Map({ - alt: match[1], - src: getMedia(match[2]), - title: match[3] - }).filter(Boolean); + var imgData = Map({ + alt: match[1], + src: match[2], + title: match[3] + }).filter(Boolean); - return { - data: imgData - }; - }) - .toText(function(state, token) { - var data = token.getData(); - var alt = data.get('alt', ''); - var src = getMedia(data.get('src', '')); - var title = data.get('title', ''); + return { + data: imgData + }; + }); + const mediaProxyMarkdownRule = mediaProxyRule.toText((state, token) => { + var data = token.getData(); + var alt = data.get('alt', ''); + var src = getMedia(data.get('src', '')); + var title = data.get('title', ''); - if (title) { - return '![' + alt + '](' + src + ' "' + title + '")'; - } else { - return '![' + alt + '](' + src + ')'; - } - }); + if (title) { + return '![' + alt + '](' + src + ' "' + title + '")'; + } else { + return '![' + alt + '](' + src + ')'; + } + }); + const mediaProxyHTMLRule = mediaProxyRule.toText((state, token) => { + var data = token.getData(); + var alt = data.get('alt', ''); + var src = data.get('src', ''); + return `${alt}`; + }); nodes['mediaproxy'] = (props) => { /* eslint react/prop-types: 0 */ @@ -101,7 +108,8 @@ function processMediaProxyPlugins(getMedia) { ); }; - augmentedMarkdownSyntax = augmentedMarkdownSyntax.addInlineRules(customImageRule); + augmentedMarkdownSyntax = augmentedMarkdownSyntax.addInlineRules(mediaProxyMarkdownRule); + augmentedHTMLSyntax = augmentedHTMLSyntax.addInlineRules(mediaProxyHTMLRule); } function getPlugins() { @@ -115,7 +123,9 @@ function getNodes() { } function getSyntaxes(getMedia) { - processMediaProxyPlugins(getMedia); + if (getMedia) { + processMediaProxyPlugins(getMedia); + } return { markdown: augmentedMarkdownSyntax, html:augmentedHTMLSyntax }; }