From 4bb72b9f6d2a56fc6bd67f4248fcabfcc8166493 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 17 Jul 2020 18:52:24 +0200 Subject: refactor annotation and paragraph types --- .../views/paragraph/components/paragraph.types.js | 62 ---------------------- .../paragraph/components/paragraphTypes/index.js | 16 ++++++ .../paragraphTypes/paragraphTypes.text.js | 36 +++++++++++++ .../paragraphTypes/paragraphTypes.video.js | 19 +++++++ 4 files changed, 71 insertions(+), 62 deletions(-) delete mode 100644 animism-align/frontend/views/paragraph/components/paragraph.types.js create mode 100644 animism-align/frontend/views/paragraph/components/paragraphTypes/index.js create mode 100644 animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.text.js create mode 100644 animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.video.js (limited to 'animism-align/frontend/views/paragraph/components') diff --git a/animism-align/frontend/views/paragraph/components/paragraph.types.js b/animism-align/frontend/views/paragraph/components/paragraph.types.js deleted file mode 100644 index fe8158a..0000000 --- a/animism-align/frontend/views/paragraph/components/paragraph.types.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Component } from 'react' -import VimeoPlayer from '@u-wave/react-vimeo' - -import actions from '../../../actions' - -export const Paragraph = ({ paragraph, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { - let className = paragraph.type - if (className !== 'paragraph') className += ' paragraph' - if (selectedParagraph) className += ' selected' - return ( -
onDoubleClick(e, paragraph)} - > - {paragraph.annotations.map(annotation => ( - onAnnotationClick(e, paragraph, annotation)} - > - {' '}{annotation.text}{' '} - - ))} -
- ) -} - -export const ParagraphHeader = ({ paragraph, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { - let className = selectedParagraph ? 'header selected' : 'header' - const text = paragraph.annotations.map(annotation => annotation.text).join(' ') - return ( -
onDoubleClick(e, paragraph)} - > - {text} -
- ) -} - -export const MediaVideo = ({ paragraph, media, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { - if (!media.lookup) return
- const className = selectedParagraph ? 'media selected' : 'media' - const annotation = paragraph.annotations[0] - const item = media.lookup[annotation.settings.media_id] - if (!item) return
Media not found: {annotation.settings.media_id}
- return ( -
onDoubleClick(e, paragraph)} - > - -
- ) -} - -export const ParagraphElementLookup = { - paragraph: React.memo(Paragraph), - blockquote: React.memo(Paragraph), - header: React.memo(ParagraphHeader), - video: React.memo(MediaVideo), -} diff --git a/animism-align/frontend/views/paragraph/components/paragraphTypes/index.js b/animism-align/frontend/views/paragraph/components/paragraphTypes/index.js new file mode 100644 index 0000000..990c911 --- /dev/null +++ b/animism-align/frontend/views/paragraph/components/paragraphTypes/index.js @@ -0,0 +1,16 @@ +import React from 'react' + +import { + Paragraph, ParagraphHeader +} from './paragraphTypes.text' + +import { + MediaVideo +} from './paragraphTypes.video' + +export const ParagraphElementLookup = { + paragraph: React.memo(Paragraph), + blockquote: React.memo(Paragraph), + header: React.memo(ParagraphHeader), + video: React.memo(MediaVideo), +} diff --git a/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.text.js b/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.text.js new file mode 100644 index 0000000..5f8dbc3 --- /dev/null +++ b/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.text.js @@ -0,0 +1,36 @@ +import React, { Component } from 'react' + +export const Paragraph = ({ paragraph, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { + let className = paragraph.type + if (className !== 'paragraph') className += ' paragraph' + if (selectedParagraph) className += ' selected' + return ( +
onDoubleClick(e, paragraph)} + > + {paragraph.annotations.map(annotation => ( + onAnnotationClick(e, paragraph, annotation)} + > + {' '}{annotation.text}{' '} + + ))} +
+ ) +} + +export const ParagraphHeader = ({ paragraph, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { + let className = selectedParagraph ? 'header selected' : 'header' + const text = paragraph.annotations.map(annotation => annotation.text).join(' ') + return ( +
onDoubleClick(e, paragraph)} + > + {text} +
+ ) +} diff --git a/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.video.js b/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.video.js new file mode 100644 index 0000000..8e224f3 --- /dev/null +++ b/animism-align/frontend/views/paragraph/components/paragraphTypes/paragraphTypes.video.js @@ -0,0 +1,19 @@ +import React, { Component } from 'react' + +import VimeoPlayer from '@u-wave/react-vimeo' + +export const MediaVideo = ({ paragraph, media, selectedParagraph, selectedAnnotation, onAnnotationClick, onDoubleClick }) => { + if (!media.lookup) return
+ const className = selectedParagraph ? 'media selected' : 'media' + const annotation = paragraph.annotations[0] + const item = media.lookup[annotation.settings.media_id] + if (!item) return
Media not found: {annotation.settings.media_id}
+ return ( +
onDoubleClick(e, paragraph)} + > + +
+ ) +} -- cgit v1.2.3-70-g09d2