├── .gitignore ├── images └── logo.png ├── src ├── images │ ├── mode.png │ ├── ok.png │ ├── close.png │ ├── close2.png │ ├── return.png │ ├── add-left.png │ ├── add-right.png │ ├── icon-br.png │ ├── mode │ │ ├── br.png │ │ ├── link.png │ │ ├── list.png │ │ ├── text.png │ │ └── image.png │ ├── text │ │ ├── bold.png │ │ ├── size.png │ │ ├── color.png │ │ ├── italic.png │ │ ├── colorBlue.png │ │ ├── colorGrey.png │ │ ├── colorPink.png │ │ ├── colorRed.png │ │ ├── underline.png │ │ ├── colorBlack.png │ │ ├── colorGreen.png │ │ ├── colorYellow.png │ │ ├── sizeBigger.png │ │ └── sizeSmaller.png │ ├── image │ │ ├── biger.png │ │ ├── setting.png │ │ ├── smaller.png │ │ ├── upload.png │ │ ├── top-align.png │ │ ├── bottom-align.png │ │ ├── middle-align.png │ │ └── vertical-align.png │ ├── list │ │ ├── newLi.png │ │ ├── add-top.png │ │ ├── setting.png │ │ └── add-bottom.png │ └── link │ │ ├── link-left.png │ │ ├── setting.png │ │ ├── cancel-link.png │ │ └── link-right.png ├── medit.css └── medit.js ├── test ├── contentEditableFocus.html └── ajaxImageUpload.html ├── webpack.config.dev.js ├── webpack.config.min.js ├── package.json ├── demo └── index.html └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | demo -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/images/logo.png -------------------------------------------------------------------------------- /src/images/mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode.png -------------------------------------------------------------------------------- /src/images/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/ok.png -------------------------------------------------------------------------------- /src/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/close.png -------------------------------------------------------------------------------- /src/images/close2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/close2.png -------------------------------------------------------------------------------- /src/images/return.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/return.png -------------------------------------------------------------------------------- /src/images/add-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/add-left.png -------------------------------------------------------------------------------- /src/images/add-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/add-right.png -------------------------------------------------------------------------------- /src/images/icon-br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/icon-br.png -------------------------------------------------------------------------------- /src/images/mode/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode/br.png -------------------------------------------------------------------------------- /src/images/mode/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode/link.png -------------------------------------------------------------------------------- /src/images/mode/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode/list.png -------------------------------------------------------------------------------- /src/images/mode/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode/text.png -------------------------------------------------------------------------------- /src/images/text/bold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/bold.png -------------------------------------------------------------------------------- /src/images/text/size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/size.png -------------------------------------------------------------------------------- /src/images/image/biger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/biger.png -------------------------------------------------------------------------------- /src/images/list/newLi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/list/newLi.png -------------------------------------------------------------------------------- /src/images/mode/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/mode/image.png -------------------------------------------------------------------------------- /src/images/text/color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/color.png -------------------------------------------------------------------------------- /src/images/text/italic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/italic.png -------------------------------------------------------------------------------- /src/images/image/setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/setting.png -------------------------------------------------------------------------------- /src/images/image/smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/smaller.png -------------------------------------------------------------------------------- /src/images/image/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/upload.png -------------------------------------------------------------------------------- /src/images/link/link-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/link/link-left.png -------------------------------------------------------------------------------- /src/images/link/setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/link/setting.png -------------------------------------------------------------------------------- /src/images/list/add-top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/list/add-top.png -------------------------------------------------------------------------------- /src/images/list/setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/list/setting.png -------------------------------------------------------------------------------- /src/images/text/colorBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorBlue.png -------------------------------------------------------------------------------- /src/images/text/colorGrey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorGrey.png -------------------------------------------------------------------------------- /src/images/text/colorPink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorPink.png -------------------------------------------------------------------------------- /src/images/text/colorRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorRed.png -------------------------------------------------------------------------------- /src/images/text/underline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/underline.png -------------------------------------------------------------------------------- /src/images/image/top-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/top-align.png -------------------------------------------------------------------------------- /src/images/link/cancel-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/link/cancel-link.png -------------------------------------------------------------------------------- /src/images/link/link-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/link/link-right.png -------------------------------------------------------------------------------- /src/images/list/add-bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/list/add-bottom.png -------------------------------------------------------------------------------- /src/images/text/colorBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorBlack.png -------------------------------------------------------------------------------- /src/images/text/colorGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorGreen.png -------------------------------------------------------------------------------- /src/images/text/colorYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/colorYellow.png -------------------------------------------------------------------------------- /src/images/text/sizeBigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/sizeBigger.png -------------------------------------------------------------------------------- /src/images/text/sizeSmaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/text/sizeSmaller.png -------------------------------------------------------------------------------- /src/images/image/bottom-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/bottom-align.png -------------------------------------------------------------------------------- /src/images/image/middle-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/middle-align.png -------------------------------------------------------------------------------- /src/images/image/vertical-align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/echosoar/medit/HEAD/src/images/image/vertical-align.png -------------------------------------------------------------------------------- /test/contentEditableFocus.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | Focus 13 | -------------------------------------------------------------------------------- /test/ajaxImageUpload.html: -------------------------------------------------------------------------------- 1 |
4 | -------------------------------------------------------------------------------- /webpack.config.dev.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var webpack = require('webpack') 3 | var autoprefixer = require('autoprefixer') 4 | var precss = require('precss') 5 | var CopyWebpackPlugin = require('copy-webpack-plugin'); 6 | 7 | module.exports = { 8 | entry: { 9 | "medit.min": './src/medit.js' 10 | }, 11 | output: { 12 | path: path.join(__dirname, 'build'), 13 | filename: '[name].js' 14 | }, 15 | plugins: [], 16 | resolve: { 17 | alias: { 18 | medit: path.resolve(__dirname, 'src') 19 | }, 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | module: { 23 | loaders: [ 24 | { 25 | test: /\.jsx?$/, 26 | loader: 'babel', 27 | include: [ 28 | path.resolve(__dirname, 'src') 29 | ] 30 | }, 31 | { test : /\.css$/, loaders: ['style-loader', 'css-loader', 'resolve-url-loader']}, 32 | { test: /\.scss$/, loaders: ['style-loader', 'css-loader?modules&localIdentName=[local]-[hash:base64:5]', 'postcss-loader', 'sass-loader'] }, 33 | { test: /\.(ttf|eot|woff|woff2|otf|svg)/, loader: 'file-loader?name=./font/[name].[ext]' }, 34 | { test: /\.json$/, loader: 'file-loader?name=./json/[name].json' }, 35 | { test: /\.(png|jpg|jpeg|gif)$/, loader: 'url-loader?limit=100000&name=./images/[name].[ext]' } 36 | ] 37 | }, 38 | postcss: function () { 39 | return [autoprefixer({ browsers: ['> 1%', 'IE 9'] }), precss] 40 | }, 41 | plugins: [ 42 | new CopyWebpackPlugin([{context:'./src/images/', from:'**/*', to:'images'}]) 43 | ] 44 | } -------------------------------------------------------------------------------- /webpack.config.min.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var webpack = require('webpack') 3 | var autoprefixer = require('autoprefixer') 4 | var precss = require('precss') 5 | var CopyWebpackPlugin = require('copy-webpack-plugin'); 6 | 7 | module.exports = { 8 | entry: { 9 | "medit.min": './src/medit.js' 10 | }, 11 | output: { 12 | path: path.join(__dirname, 'build'), 13 | filename: '[name].js' 14 | }, 15 | plugins: [], 16 | resolve: { 17 | alias: { 18 | medit: path.resolve(__dirname, 'src') 19 | }, 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | module: { 23 | loaders: [ 24 | { 25 | test: /\.jsx?$/, 26 | loader: 'babel', 27 | include: [ 28 | path.resolve(__dirname, 'src') 29 | ] 30 | }, 31 | { test : /\.css$/, loaders: ['style-loader', 'css-loader', 'resolve-url-loader']}, 32 | { test: /\.scss$/, loaders: ['style-loader', 'css-loader?modules&localIdentName=[local]-[hash:base64:5]', 'postcss-loader', 'sass-loader'] }, 33 | { test: /\.(ttf|eot|woff|woff2|otf|svg)/, loader: 'file-loader?name=./font/[name].[ext]' }, 34 | { test: /\.json$/, loader: 'file-loader?name=./json/[name].json' }, 35 | { test: /\.(png|jpg|jpeg|gif)$/, loader: 'url-loader?limit=100000&name=./images/[name].[ext]' } 36 | ] 37 | }, 38 | postcss: function () { 39 | return [autoprefixer({ browsers: ['> 1%', 'IE 9'] }), precss] 40 | }, 41 | plugins: [ 42 | new webpack.optimize.UglifyJsPlugin(), 43 | new CopyWebpackPlugin([{context:'./src/images/', from:'**/*', to:'images'}]) 44 | ] 45 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "medit", 3 | "version": "1.0.0", 4 | "description": "A creative WYSIWYG rich text editor for mobile device.", 5 | "main": "medit.js", 6 | "scripts": { 7 | "dev": "webpack --config webpack.config.dev.js --watch", 8 | "build": "webpack --config webpack.config.min.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/echosoar/medit.git" 13 | }, 14 | "keywords": [ 15 | "WYSIWYG", 16 | "mobile", 17 | "rich", 18 | "text", 19 | "editor" 20 | ], 21 | "author": "echosoar", 22 | "license": "ISC", 23 | "bugs": { 24 | "url": "https://github.com/echosoar/medit/issues" 25 | }, 26 | "homepage": "https://medit.js.org", 27 | "devDependencies": { 28 | "babel-plugin-transform-es2015-classes": "^6.18.0", 29 | "copy-webpack-plugin": "^4.0.1", 30 | "eslint": "~3.4.0", 31 | "eslint-plugin-babel": "^3.2.0", 32 | "eslint-plugin-react": "~4.2.3", 33 | "optimist": "^0.6.1", 34 | "resolve-url-loader": "^1.6.1", 35 | "url-loader": "~0.5.7", 36 | "webpack": "~1.12.14" 37 | }, 38 | "dependencies": { 39 | "autoprefixer": "~6.3.4", 40 | "babel-core": "^6.14.0", 41 | "babel-eslint": "^6.1.2", 42 | "babel-loader": "~6.2.4", 43 | "babel-plugin-transform-object-rest-spread": "~6.6.5", 44 | "babel-polyfill": "^6.3.14", 45 | "babel-preset-es2015": "^6.14.0", 46 | "css-loader": "~0.23.1", 47 | "file-loader": "~0.8.5", 48 | "less": "~2.6.1", 49 | "less-loader": "~2.2.2", 50 | "loader-utils": "~0.2.12", 51 | "md5": "~2.0.0", 52 | "node-sass": "^3.6.0", 53 | "postcss-loader": "~0.8.2", 54 | "precss": "~1.4.0", 55 | "sass-loader": "^3.2.0", 56 | "style-loader": "~0.13.0" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 35 | 36 | 37 |