Skip to content

Instantly share code, notes, and snippets.

@omsharp
Forked from zhangshine/tinymce-react-nextjs.md
Created May 19, 2022 22:45
Show Gist options
  • Save omsharp/1c368c01bee5d80b7569d2deafb2c128 to your computer and use it in GitHub Desktop.
Save omsharp/1c368c01bee5d80b7569d2deafb2c128 to your computer and use it in GitHub Desktop.

Revisions

  1. @zhangshine zhangshine revised this gist Apr 30, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion tinymce-react-nextjs.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    1. Install
    1. Install (TinyMCE 5.x)
    ```shell script
    npm install --save tinymce @tinymce/tinymce-react copy-webpack-plugin
    ```
  2. @zhangshine zhangshine revised this gist Apr 30, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion tinymce-react-nextjs.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    npm install --save tinymce @tinymce/tinymce-react copy-webpack-plugin
    ```

    2. Copy static files(tinymce skins) to `public` folder. next.config.js
    2. Copy static files(tinymce skins) to `public` folder. Edit file `next.config.js`
    ```javascript
    const path = require('path');
    const webpack = require('webpack');
  3. @zhangshine zhangshine revised this gist Apr 30, 2020. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions tinymce-react-nextjs.md
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,9 @@
    - Install
    1. Install
    ```shell script
    npm install --save tinymce @tinymce/tinymce-react copy-webpack-plugin
    ```

    - Copy static files(tinymce skins) to `public` folder. next.config.js
    2. Copy static files(tinymce skins) to `public` folder. next.config.js
    ```javascript
    const path = require('path');
    const webpack = require('webpack');
    @@ -21,7 +21,7 @@ module.exports = {
    },
    }
    ```
    - React components file
    3. React components file
    ```javascript
    if(typeof window !== 'undefined'){
    require ('tinymce/tinymce');
    @@ -67,8 +67,8 @@ function AReactComponent(props) {
    alignleft aligncenter alignright alignjustify | \
    bullist numlist outdent indent | removeformat | \
    table | help',
    skin_url: '/assets/libs/tinymce/skins/ui/oxide',
    content_css: '/assets/libs/tinymce/skins/content/default/content.min.css'
    skin_url: '/assets/libs/tinymce/skins/ui/oxide', // Static files path(step 2)
    content_css: '/assets/libs/tinymce/skins/content/default/content.min.css' // Static files path(step 2)
    }}
    onEditorChange={props.handleOnEditorChange}
    />
  4. @zhangshine zhangshine created this gist Apr 30, 2020.
    77 changes: 77 additions & 0 deletions tinymce-react-nextjs.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    - Install
    ```shell script
    npm install --save tinymce @tinymce/tinymce-react copy-webpack-plugin
    ```

    - Copy static files(tinymce skins) to `public` folder. next.config.js
    ```javascript
    const path = require('path');
    const webpack = require('webpack');
    const CopyPlugin = require('copy-webpack-plugin');

    module.exports = {
    webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
    config.plugins.push(new CopyPlugin([
    { from: path.join(__dirname, 'node_modules/tinymce/skins'), to: path.join(__dirname, 'public/assets/libs/tinymce/skins') }, /// Copy to public folder
    ]));
    return config
    },
    webpackDevMiddleware: config => {
    return config
    },
    }
    ```
    - React components file
    ```javascript
    if(typeof window !== 'undefined'){
    require ('tinymce/tinymce');
    require ('tinymce/themes/silver');
    require ('tinymce/plugins/advlist');
    require ('tinymce/plugins/autolink');
    require ('tinymce/plugins/lists');
    require ('tinymce/plugins/link');
    require ('tinymce/plugins/image');
    require ('tinymce/plugins/charmap');
    require ('tinymce/plugins/print');
    require ('tinymce/plugins/preview');
    require ('tinymce/plugins/anchor');
    require ('tinymce/plugins/searchreplace');
    require ('tinymce/plugins/visualblocks');
    require ('tinymce/plugins/code');
    require ('tinymce/plugins/fullscreen');
    require ('tinymce/plugins/insertdatetime');
    require ('tinymce/plugins/media');
    require ('tinymce/plugins/table');
    require ('tinymce/plugins/paste');
    require ('tinymce/plugins/code');
    require ('tinymce/plugins/help');
    require ('tinymce/plugins/wordcount');
    }

    import {Editor} from '@tinymce/tinymce-react';

    function AReactComponent(props) {
    return (
    <Editor
    value={props.content}
    init={{
    height: 500,
    menubar: false,
    plugins: [
    'advlist autolink lists link image charmap print preview anchor',
    'searchreplace visualblocks code fullscreen',
    'insertdatetime media table paste code help wordcount'
    ],
    toolbar:
    'undo redo | formatselect | bold italic backcolor | \
    alignleft aligncenter alignright alignjustify | \
    bullist numlist outdent indent | removeformat | \
    table | help',
    skin_url: '/assets/libs/tinymce/skins/ui/oxide',
    content_css: '/assets/libs/tinymce/skins/content/default/content.min.css'
    }}
    onEditorChange={props.handleOnEditorChange}
    />
    );
    }
    ```