From 799c6c3f0f9d100c5a63f64bf58fc226f2638e35 Mon Sep 17 00:00:00 2001 From: cyril lopez Date: Thu, 28 Jun 2018 10:01:59 +0200 Subject: [PATCH] Remove webpack warnings and react-intl errors --- packages/strapi-helper-plugin/lib/src/app.js | 18 +- packages/strapi-helper-plugin/package.json | 2 +- .../admin/src/assets/icons/icon_barred.svg | 1 + .../admin/src/assets/icons/icon_bold.svg | 1 + .../src/assets/icons/icon_bullet-list.svg | 1 + .../src/assets/icons/icon_code-block.svg | 1 + .../admin/src/assets/icons/icon_italic.svg | 1 + .../admin/src/assets/icons/icon_link.svg | 1 + .../admin/src/assets/icons/icon_media.svg | 1 + .../src/assets/icons/icon_numbered-list.svg | 1 + .../src/assets/icons/icon_quote-block.svg | 1 + .../admin/src/assets/icons/icon_underline.svg | 1 + .../admin/src/components/InputJSON/index.js | 201 +++++ .../src/components/InputJSON/jsonlint.js | 424 ++++++++++ .../src/components/InputJSON/styles.scss | 40 + .../components/InputJSONWithErrors/index.js | 227 +++++ .../InputJSONWithErrors/styles.scss | 5 + .../components/Wysiwyg/componentsStyles.scss | 209 +++++ .../admin/src/components/Wysiwyg/constants.js | 98 +++ .../admin/src/components/Wysiwyg/converter.js | 19 + .../src/components/Wysiwyg/customSelect.js | 42 + .../admin/src/components/Wysiwyg/helpers.js | 116 +++ .../admin/src/components/Wysiwyg/image.js | 22 + .../admin/src/components/Wysiwyg/index.js | 792 ++++++++++++++++++ .../admin/src/components/Wysiwyg/link.js | 45 + .../src/components/Wysiwyg/previewControl.js | 29 + .../src/components/Wysiwyg/previewWysiwyg.js | 261 ++++++ .../src/components/Wysiwyg/strategies.js | 35 + .../admin/src/components/Wysiwyg/styles.scss | 115 +++ .../src/components/Wysiwyg/toggleMode.js | 36 + .../admin/src/components/Wysiwyg/utils.js | 74 ++ .../admin/src/components/Wysiwyg/video.js | 26 + .../components/WysiwygBottomControls/index.js | 57 ++ .../WysiwygBottomControls/styles.scss | 41 + .../src/components/WysiwygDropUpload/index.js | 26 + .../components/WysiwygDropUpload/styles.scss | 12 + .../src/components/WysiwygEditor/index.js | 27 + .../components/WysiwygInlineControls/index.js | 111 +++ .../WysiwygInlineControls/styles.scss | 123 +++ .../components/WysiwygWithErrors/Loadable.js | 7 + .../components/WysiwygWithErrors/Loader.js | 11 + .../src/components/WysiwygWithErrors/index.js | 222 +++++ .../components/WysiwygWithErrors/styles.scss | 24 + .../admin/src/containers/App/sagas.js | 3 +- .../admin/src/injectedComponents.js | 1 + .../package.json | 2 +- .../admin/src/injectedComponents.js | 1 + .../admin/src/injectedComponents.js | 1 + .../admin/src/injectedComponents.js | 1 + .../admin/src/injectedComponents.js | 1 + .../admin/src/injectedComponents.js | 1 + .../admin/src/translations/it.json | 1 + 52 files changed, 3508 insertions(+), 11 deletions(-) create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_barred.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bold.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bullet-list.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_code-block.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_italic.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_link.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_media.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_numbered-list.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_quote-block.svg create mode 100755 packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_underline.svg create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/InputJSON/jsonlint.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/InputJSON/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/InputJSONWithErrors/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/componentsStyles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/constants.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/converter.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/customSelect.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/helpers.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/image.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/link.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewControl.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/previewWysiwyg.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/strategies.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/toggleMode.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/utils.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/Wysiwyg/video.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygBottomControls/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygDropUpload/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygDropUpload/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygEditor/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygInlineControls/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/Loadable.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/Loader.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/index.js create mode 100644 packages/strapi-plugin-content-manager/admin/src/components/WysiwygWithErrors/styles.scss create mode 100644 packages/strapi-plugin-content-manager/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-content-type-builder/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-email/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-settings-manager/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-upload/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-users-permissions/admin/src/injectedComponents.js create mode 100644 packages/strapi-plugin-users-permissions/admin/src/translations/it.json diff --git a/packages/strapi-helper-plugin/lib/src/app.js b/packages/strapi-helper-plugin/lib/src/app.js index 69d124f6d7..cf962f451b 100755 --- a/packages/strapi-helper-plugin/lib/src/app.js +++ b/packages/strapi-helper-plugin/lib/src/app.js @@ -33,13 +33,15 @@ const tryRequireRoot = (source) => { const bootstrap = tryRequireRoot('bootstrap'); const pluginRequirements = tryRequireRoot('requirements'); -const layout = (() => { - try { - return require('../../../../config/layout.js'); // eslint-disable-line import/no-unresolved - } catch(err) { - return null; - } -})(); +// NOTE: I'm commenting this line for the moment since we don't use the layout in the other plugins anymore +// Initially it was developed for the content-manager but we acces the layout via a request instead of building it +// const layout = (() => { +// try { +// return require('../../../../config/layout.js'); // eslint-disable-line import/no-unresolved +// } catch(err) { +// return null; +// } +// })(); const injectedComponents = (() => { try { @@ -97,7 +99,7 @@ strapi.registerPlugin({ icon: pluginPkg.strapi.icon, id: pluginId, injectedComponents, - layout, + layout: null, leftMenuLinks: [], mainComponent: Comp, name: pluginPkg.strapi.name, diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json index 243515906b..2c94c21223 100755 --- a/packages/strapi-helper-plugin/package.json +++ b/packages/strapi-helper-plugin/package.json @@ -115,4 +115,4 @@ "webpack-hot-middleware": "^2.18.2", "whatwg-fetch": "^2.0.3" } -} +} \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_barred.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_barred.svg new file mode 100755 index 0000000000..2f3c7b9111 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_barred.svg @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bold.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bold.svg new file mode 100755 index 0000000000..cee3cf4011 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bold.svg @@ -0,0 +1 @@ +B \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bullet-list.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bullet-list.svg new file mode 100755 index 0000000000..6e060c39f5 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_bullet-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_code-block.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_code-block.svg new file mode 100755 index 0000000000..a47ca10058 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_code-block.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_italic.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_italic.svg new file mode 100755 index 0000000000..6181979e31 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_italic.svg @@ -0,0 +1 @@ +I \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_link.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_link.svg new file mode 100755 index 0000000000..53b6125367 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_media.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_media.svg new file mode 100755 index 0000000000..d7401730c7 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_media.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_numbered-list.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_numbered-list.svg new file mode 100755 index 0000000000..79c8091f86 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_numbered-list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_quote-block.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_quote-block.svg new file mode 100755 index 0000000000..62a7990e92 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_quote-block.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_underline.svg b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_underline.svg new file mode 100755 index 0000000000..7a9b8da4e1 --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/assets/icons/icon_underline.svg @@ -0,0 +1 @@ +U \ No newline at end of file diff --git a/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js b/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js new file mode 100644 index 0000000000..199287766e --- /dev/null +++ b/packages/strapi-plugin-content-manager/admin/src/components/InputJSON/index.js @@ -0,0 +1,201 @@ +/** + * + * InputJSON + * + */ + + +import React from 'react'; +import PropTypes from 'prop-types'; +import cm from 'codemirror'; +import 'codemirror/lib/codemirror.css'; +import 'codemirror/mode/javascript/javascript'; +import 'codemirror/addon/lint/lint'; +import 'codemirror/addon/lint/javascript-lint'; +import 'codemirror/addon/edit/closebrackets'; +import 'codemirror/addon/selection/mark-selection'; +import 'codemirror/theme/liquibyte.css'; +import 'codemirror/theme/xq-dark.css'; +import 'codemirror/theme/3024-day.css'; +import 'codemirror/theme/3024-night.css'; +import 'codemirror/theme/blackboard.css'; +import 'codemirror/theme/monokai.css'; +import 'codemirror/theme/cobalt.css'; + +import { isEmpty, isObject, trimStart } from 'lodash'; +import jsonlint from './jsonlint'; +import styles from './styles.scss'; + +const WAIT = 600; +const stringify = JSON.stringify; +const parse = JSON.parse; +const DEFAULT_THEME = 'monokai'; +const THEMES = ['blackboard', 'cobalt', 'monokai', '3024-day', '3024-night', 'liquibyte', 'xq-dark']; + +class InputJSON extends React.Component { + constructor(props) { + super(props); + this.editor = React.createRef(); + this.state = { error: false, markedText: null }; + } + + componentDidMount() { + // Init codemirror component + this.codeMirror = cm.fromTextArea(this.editor.current, { + autoCloseBrackets: true, + lineNumbers: true, + matchBrackets: true, + mode: 'application/json', + smartIndent: true, + styleSelectedText: true, + tabSize: 2, + theme: DEFAULT_THEME, + }); + this.codeMirror.on('change', this.handleChange); + this.codeMirror.on('blur', this.handleBlur); + + this.setSize(); + this.setInitValue(); + } + + componentDidUpdate(prevProps) { + if (isEmpty(prevProps.value) && !isEmpty(this.props.value) && !this.state.hasInitValue) { + this.setInitValue(); + } + } + + setInitValue = () => { + const { value } = this.props; + + if (isObject(value) && value !== null) { + try { + parse(stringify(value)); + this.setState({ hasInitValue: true }); + + return this.codeMirror.setValue(stringify(value, null, 2)); + } catch(err) { + + return this.setState({ error: true }); + } + } + } + + setSize = () => this.codeMirror.setSize('100%', 'auto'); + + setTheme = (theme) => this.codeMirror.setOption('theme', theme); + + getContentAtLine = (line) => this.codeMirror.getLine(line); + + getEditorOption = (opt) => this.codeMirror.getOption(opt); + + getValue = () => this.codeMirror.getValue(); + + markSelection = ({ message }) => { + let line = parseInt( + message + .split(':')[0] + .split('line ')[1], + 10, + ) - 1; + + let content = this.getContentAtLine(line); + + if (content === '{') { + line = line + 1; + content = this.getContentAtLine(line); + } + const chEnd = content.length; + const chStart = chEnd - trimStart(content, ' ').length; + const markedText = this.codeMirror.markText({ line, ch: chStart }, { line, ch: chEnd }, { className: styles.colored }); + this.setState({ markedText }); + } + + timer = null; + + handleBlur = ({ target }) => { + const { name, onBlur } = this.props; + + if (target === undefined) { // codemirror catches multiple events + onBlur({ + target: { + name, + type: 'json', + value: this.getValue(), + }, + }); + + } + } + + handleChange = () => { + const { hasInitValue } = this.state; + const { name, onChange } = this.props; + let value = this.codeMirror.getValue(); + + try { + value = parse(value); + } catch(err) { + // Silent + } + + // Update the parent + onChange({ + target: { + name, + value, + type: 'json', + }, + }); + + if (!hasInitValue) { + this.setState({ hasInitValue: true }); + } + + // Remove higlight error + if (this.state.markedText) { + this.state.markedText.clear(); + this.setState({ markedText: null, error: null }); + } + + clearTimeout(this.timer); + this.timer = setTimeout(() => this.testJSON(this.codeMirror.getValue()), WAIT); + } + + testJSON = (value) => { + try { + jsonlint.parse(value); + } catch(err) { + this.markSelection(err); + } + } + + render() { + if (this.state.error) { + return
error json
; + } + + return ( +
+