├── .babelrc ├── .gitignore ├── README.md ├── _config.yml ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist └── static │ ├── css │ └── app.bec4cd5a30128f7e5fffc5eceae9013e.css │ ├── fonts │ ├── feather.0b17bdf.eot │ ├── feather.34f9a3a.woff │ └── feather.ef0bf66.ttf │ ├── img │ └── feather.6335978.svg │ ├── js │ ├── app.38a024e9860e5b581ac6.js │ ├── manifest.2ae2e69a05c33dfc65f8.js │ └── vendor.821c21b50c9af3371e02.js │ ├── libs │ ├── download │ │ ├── Blob.js │ │ ├── FileSaver.js │ │ └── jszip.min.js │ └── webuploader │ │ ├── README.md │ │ ├── Uploader.swf │ │ ├── webuploader.css │ │ ├── webuploader.custom.js │ │ ├── webuploader.custom.min.js │ │ ├── webuploader.fis.js │ │ ├── webuploader.flashonly.js │ │ ├── webuploader.flashonly.min.js │ │ ├── webuploader.html5only.js │ │ ├── webuploader.html5only.min.js │ │ ├── webuploader.js │ │ ├── webuploader.min.js │ │ ├── webuploader.noimage.js │ │ ├── webuploader.noimage.min.js │ │ ├── webuploader.nolog.js │ │ ├── webuploader.nolog.min.js │ │ ├── webuploader.withoutimage.js │ │ └── webuploader.withoutimage.min.js │ └── tpl │ ├── js │ ├── body.js │ └── head.js │ ├── run1.html │ ├── run2.html │ ├── run3.html │ ├── run4.html │ ├── run5.html │ ├── run6.html │ ├── run7.html │ ├── run8.html │ ├── thematic.html │ └── zt │ └── base.css ├── index.html ├── libs ├── art-template │ └── template-web.js ├── dialogwindows │ ├── dialog-extends.js │ ├── dialog.js │ └── skins │ │ ├── facebook.css │ │ ├── icons │ │ ├── 32X32 │ │ │ ├── fail.png │ │ │ ├── hits.png │ │ │ ├── i.png │ │ │ └── succ.png │ │ ├── alert.gif │ │ ├── confirm.gif │ │ ├── discuz_bg.gif │ │ ├── error.gif │ │ ├── face-sad.png │ │ ├── face-smile.png │ │ ├── gb_tip_layer.png │ │ ├── gb_tip_layer_ie6.png │ │ ├── lhgcore.gif │ │ ├── loading.gif │ │ ├── prompt.gif │ │ ├── success.gif │ │ └── tips.gif │ │ ├── metro.css │ │ └── visualstudio.css ├── noty │ ├── jquery.noty.js │ ├── jquery.noty.min.js │ ├── noty.js │ ├── noty_demo.html │ └── themes │ │ ├── HzTheme.js │ │ ├── VsTheme.js │ │ ├── default.js │ │ └── vstheme2.js └── store │ └── store.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── src ├── App.vue ├── app.html ├── assets │ ├── css │ │ ├── common │ │ │ ├── common.css │ │ │ └── reset.css │ │ ├── fonts │ │ │ └── feather │ │ │ │ ├── css │ │ │ │ └── iconfont.css │ │ │ │ ├── feather.jpg │ │ │ │ ├── feather.sketch │ │ │ │ ├── fonts │ │ │ │ ├── feather.eot │ │ │ │ ├── feather.svg │ │ │ │ ├── feather.ttf │ │ │ │ └── feather.woff │ │ │ │ └── icons │ │ │ │ ├── activity.svg │ │ │ │ ├── airplay.svg │ │ │ │ ├── alert-circle.svg │ │ │ │ ├── alert-octagon.svg │ │ │ │ ├── alert-triangle.svg │ │ │ │ ├── align-center.svg │ │ │ │ ├── align-justify.svg │ │ │ │ ├── align-left.svg │ │ │ │ ├── align-right.svg │ │ │ │ ├── anchor.svg │ │ │ │ ├── aperture.svg │ │ │ │ ├── arrow-down-left.svg │ │ │ │ ├── arrow-down-right.svg │ │ │ │ ├── arrow-down.svg │ │ │ │ ├── arrow-left.svg │ │ │ │ ├── arrow-right.svg │ │ │ │ ├── arrow-up-left.svg │ │ │ │ ├── arrow-up-right.svg │ │ │ │ ├── arrow-up.svg │ │ │ │ ├── at-sign.svg │ │ │ │ ├── award.svg │ │ │ │ ├── bar-chart-2.svg │ │ │ │ ├── bar-chart.svg │ │ │ │ ├── battery-charging.svg │ │ │ │ ├── battery.svg │ │ │ │ ├── bell-off.svg │ │ │ │ ├── bell.svg │ │ │ │ ├── bluetooth.svg │ │ │ │ ├── bold.svg │ │ │ │ ├── book.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── box.svg │ │ │ │ ├── briefcase.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── camera-off.svg │ │ │ │ ├── camera.svg │ │ │ │ ├── cast.svg │ │ │ │ ├── check-circle.svg │ │ │ │ ├── check-square.svg │ │ │ │ ├── check.svg │ │ │ │ ├── chevron-down.svg │ │ │ │ ├── chevron-left.svg │ │ │ │ ├── chevron-right.svg │ │ │ │ ├── chevron-up.svg │ │ │ │ ├── chevrons-down.svg │ │ │ │ ├── chevrons-left.svg │ │ │ │ ├── chevrons-right.svg │ │ │ │ ├── chevrons-up.svg │ │ │ │ ├── chrome.svg │ │ │ │ ├── circle.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── clock.svg │ │ │ │ ├── cloud-drizzle.svg │ │ │ │ ├── cloud-lightning.svg │ │ │ │ ├── cloud-off.svg │ │ │ │ ├── cloud-rain.svg │ │ │ │ ├── cloud-snow.svg │ │ │ │ ├── cloud.svg │ │ │ │ ├── codepen.svg │ │ │ │ ├── command.svg │ │ │ │ ├── compass.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── corner-down-left.svg │ │ │ │ ├── corner-down-right.svg │ │ │ │ ├── corner-left-down.svg │ │ │ │ ├── corner-left-up.svg │ │ │ │ ├── corner-right-down.svg │ │ │ │ ├── corner-right-up.svg │ │ │ │ ├── corner-up-left.svg │ │ │ │ ├── corner-up-right.svg │ │ │ │ ├── cpu.svg │ │ │ │ ├── credit-card.svg │ │ │ │ ├── crop.svg │ │ │ │ ├── crosshair.svg │ │ │ │ ├── delete.svg │ │ │ │ ├── disc.svg │ │ │ │ ├── download-cloud.svg │ │ │ │ ├── download.svg │ │ │ │ ├── droplet.svg │ │ │ │ ├── edit-2.svg │ │ │ │ ├── edit-3.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── external-link.svg │ │ │ │ ├── eye-off.svg │ │ │ │ ├── eye.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── fast-forward.svg │ │ │ │ ├── feather.svg │ │ │ │ ├── file-minus.svg │ │ │ │ ├── file-plus.svg │ │ │ │ ├── file-text.svg │ │ │ │ ├── file.svg │ │ │ │ ├── film.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── folder.svg │ │ │ │ ├── github.svg │ │ │ │ ├── gitlab.svg │ │ │ │ ├── globe.svg │ │ │ │ ├── grid.svg │ │ │ │ ├── hash.svg │ │ │ │ ├── headphones.svg │ │ │ │ ├── heart-on.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── help-circle.svg │ │ │ │ ├── home.svg │ │ │ │ ├── image.svg │ │ │ │ ├── inbox.svg │ │ │ │ ├── info.svg │ │ │ │ ├── instagram.svg │ │ │ │ ├── italic.svg │ │ │ │ ├── layers.svg │ │ │ │ ├── layout.svg │ │ │ │ ├── life-buoy.svg │ │ │ │ ├── link-2.svg │ │ │ │ ├── link.svg │ │ │ │ ├── list.svg │ │ │ │ ├── loader.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── log-in.svg │ │ │ │ ├── log-out.svg │ │ │ │ ├── mail.svg │ │ │ │ ├── map-pin.svg │ │ │ │ ├── map.svg │ │ │ │ ├── maximize-2.svg │ │ │ │ ├── maximize.svg │ │ │ │ ├── menu.svg │ │ │ │ ├── message-circle.svg │ │ │ │ ├── message-square.svg │ │ │ │ ├── mic-off.svg │ │ │ │ ├── mic.svg │ │ │ │ ├── minimize-2.svg │ │ │ │ ├── minimize.svg │ │ │ │ ├── minus-circle.svg │ │ │ │ ├── minus-square.svg │ │ │ │ ├── minus.svg │ │ │ │ ├── monitor.svg │ │ │ │ ├── moon.svg │ │ │ │ ├── more-horizontal.svg │ │ │ │ ├── more-vertical.svg │ │ │ │ ├── move.svg │ │ │ │ ├── music.svg │ │ │ │ ├── navigation-2.svg │ │ │ │ ├── navigation.svg │ │ │ │ ├── octagon.svg │ │ │ │ ├── package.svg │ │ │ │ ├── paperclip.svg │ │ │ │ ├── pause-circle.svg │ │ │ │ ├── pause.svg │ │ │ │ ├── percent.svg │ │ │ │ ├── phone-call.svg │ │ │ │ ├── phone-forwarded.svg │ │ │ │ ├── phone-incoming.svg │ │ │ │ ├── phone-missed.svg │ │ │ │ ├── phone-off.svg │ │ │ │ ├── phone-outgoing.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── pie-chart.svg │ │ │ │ ├── play-circle.svg │ │ │ │ ├── play.svg │ │ │ │ ├── plus-circle.svg │ │ │ │ ├── plus-square.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── pocket.svg │ │ │ │ ├── power.svg │ │ │ │ ├── printer.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── refresh-ccw.svg │ │ │ │ ├── refresh-cw.svg │ │ │ │ ├── repeat.svg │ │ │ │ ├── rewind.svg │ │ │ │ ├── rotate-ccw.svg │ │ │ │ ├── rotate-cw.svg │ │ │ │ ├── save.svg │ │ │ │ ├── scissors.svg │ │ │ │ ├── search.svg │ │ │ │ ├── server.svg │ │ │ │ ├── settings.svg │ │ │ │ ├── share-2.svg │ │ │ │ ├── share.svg │ │ │ │ ├── shield.svg │ │ │ │ ├── shopping-cart.svg │ │ │ │ ├── shuffle.svg │ │ │ │ ├── sidebar.svg │ │ │ │ ├── skip-back.svg │ │ │ │ ├── skip-forward.svg │ │ │ │ ├── slack.svg │ │ │ │ ├── slash.svg │ │ │ │ ├── sliders.svg │ │ │ │ ├── smartphone.svg │ │ │ │ ├── speaker.svg │ │ │ │ ├── square.svg │ │ │ │ ├── star-on.svg │ │ │ │ ├── star.svg │ │ │ │ ├── stop-circle.svg │ │ │ │ ├── sun.svg │ │ │ │ ├── sunrise.svg │ │ │ │ ├── sunset.svg │ │ │ │ ├── tablet.svg │ │ │ │ ├── tag.svg │ │ │ │ ├── target.svg │ │ │ │ ├── thermometer.svg │ │ │ │ ├── thumbs-down.svg │ │ │ │ ├── thumbs-up.svg │ │ │ │ ├── toggle-left.svg │ │ │ │ ├── toggle-right.svg │ │ │ │ ├── trash-2.svg │ │ │ │ ├── trash.svg │ │ │ │ ├── trending-down.svg │ │ │ │ ├── trending-up.svg │ │ │ │ ├── triangle.svg │ │ │ │ ├── tv.svg │ │ │ │ ├── twitter.svg │ │ │ │ ├── type.svg │ │ │ │ ├── umbrella.svg │ │ │ │ ├── underline.svg │ │ │ │ ├── unlock.svg │ │ │ │ ├── upload-cloud.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── user-check.svg │ │ │ │ ├── user-minus.svg │ │ │ │ ├── user-plus.svg │ │ │ │ ├── user-x.svg │ │ │ │ ├── user.svg │ │ │ │ ├── users.svg │ │ │ │ ├── video-off.svg │ │ │ │ ├── video.svg │ │ │ │ ├── voicemail.svg │ │ │ │ ├── volume-1.svg │ │ │ │ ├── volume-2.svg │ │ │ │ ├── volume-x.svg │ │ │ │ ├── volume.svg │ │ │ │ ├── watch.svg │ │ │ │ ├── wifi-off.svg │ │ │ │ ├── wifi.svg │ │ │ │ ├── wind.svg │ │ │ │ ├── x-circle.svg │ │ │ │ ├── x-square.svg │ │ │ │ ├── x.svg │ │ │ │ ├── zap.svg │ │ │ │ ├── zoom-in.svg │ │ │ │ └── zoom-out.svg │ │ ├── index │ │ │ ├── common.css │ │ │ ├── content.css │ │ │ ├── footer.css │ │ │ ├── header.css │ │ │ ├── index.css │ │ │ └── other.css │ │ ├── plugins │ │ │ └── overflow.css │ │ ├── scss │ │ │ └── variable.scss │ │ ├── style.scss │ │ ├── theme │ │ │ ├── theme-black.scss │ │ │ ├── theme-blue.scss │ │ │ ├── theme-gray.scss │ │ │ └── themes.scss │ │ └── ui │ │ │ └── ui.css │ └── images │ │ ├── 01.png │ │ ├── 02.png │ │ ├── 03.png │ │ ├── 04.png │ │ ├── 05.png │ │ ├── 06.png │ │ ├── hd.png │ │ ├── sidebar-divider-dots.png │ │ ├── sidebar-divider-dots2.png │ │ └── yes.png ├── components │ ├── js │ │ ├── layout.js │ │ └── penSettingDialog.js │ ├── layout.vue │ └── penSettingDialog.vue ├── config │ └── index.js ├── main.js ├── router │ └── index.js └── vs │ ├── common │ └── AMDLoader.js │ ├── core │ └── index.js │ ├── dialogs │ └── index.js │ ├── download │ └── index.js │ ├── editor │ ├── index.js │ ├── layout.js │ ├── layoutViews.js │ └── resizeLayout.js │ ├── events │ └── index.js │ ├── plugins │ └── index.js │ ├── services │ └── index.js │ ├── store │ └── index.js │ ├── theme │ └── index.js │ ├── utils │ └── index.js │ └── vs.all.js └── static ├── libs ├── download │ ├── Blob.js │ ├── FileSaver.js │ └── jszip.min.js └── webuploader │ ├── README.md │ ├── Uploader.swf │ ├── webuploader.css │ ├── webuploader.custom.js │ ├── webuploader.custom.min.js │ ├── webuploader.fis.js │ ├── webuploader.flashonly.js │ ├── webuploader.flashonly.min.js │ ├── webuploader.html5only.js │ ├── webuploader.html5only.min.js │ ├── webuploader.js │ ├── webuploader.min.js │ ├── webuploader.noimage.js │ ├── webuploader.noimage.min.js │ ├── webuploader.nolog.js │ ├── webuploader.nolog.min.js │ ├── webuploader.withoutimage.js │ └── webuploader.withoutimage.min.js └── tpl ├── js ├── body.js └── head.js ├── run1.html ├── run2.html ├── run3.html ├── run4.html ├── run5.html ├── run6.html ├── run7.html ├── run8.html ├── thematic.html └── zt └── base.css /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | presets: ['es2015', 'stage-0'] 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-codepen 2 | > 线上访问地址 https://heqing0712.github.io/vue-codepen/ 3 | 4 | > 如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢! ^_^ 5 | 6 | > 这个是一个类似codepen的 vue项目,目前只实现了主要的前端部分,后端部分暂未实现,后期版本再跟进。 7 | 在线编辑器使用了 vscode 的web版编辑器 monaco-editor,因为vscode非常强大,相信后续扩展会更好一些。项目代码有些地方写得不友好的地方,还请大家指出来,一起去完善哦 ^_^。 8 | 9 | --- 10 | ##### 环境 11 | 1. node >= 4.0.0 12 | 2. npm >= 3.0.0 13 | 14 | 15 | ##### 技术栈 16 | 17 | > [vue](https://github.com/vuejs/vue) 18 | 19 | > [vue-resource](https://github.com/vuejs/vue-resource) 20 | 21 | > [webpack](http://webpack.github.io/docs/) 22 | 23 | > [monaco-editor](https://github.com/Microsoft/monaco-editor) 24 | 25 | > [es6-babel](https://babeljs.io/docs/learn-es2015/) 26 | 27 | --- 28 | ### 截图 29 | 30 | --- 31 | 32 | ![print](./src/assets/images/01.png) 33 | ![print](./src/assets/images/02.png) 34 | ![print](./src/assets/images/03.png) 35 | ![print](./src/assets/images/04.png) 36 | ![print](./src/assets/images/05.png) 37 | ![print](./src/assets/images/06.png) 38 | 39 | --- 40 | 41 | ### 安装 42 | 项目地址:(使用`git clone`) 43 | 44 | ```shell 45 | git clone https://github.com/heqing0712/vue-codepen.git 46 | ``` 47 | 48 | 通过`npm`安装本地服务第三方依赖模块(需要已安装[Node.js](https://nodejs.org/)),使用npm安装依赖模块可能会很慢,建议换成[cnpm](http://cnpmjs.org/) 49 | 50 | ```shell 51 | npm install -g cnpm --registry=http://registry.npm.taobao.org 52 | ``` 53 | 54 | ```bash 55 | # 安装依赖模块 56 | cnpm install 57 | 58 | # 启动服务 59 | npm run dev 60 | 61 | # 发布代码 62 | npm run build 63 | 64 | ``` 65 | 66 | ### 开发 67 | 68 | ### 目录结构 69 |
 70 | .
 71 | ├── README.md           
 72 | ├── dist                     // 项目build目录
 73 | ├── config                   // 环境变量和入口,出口配置
 74 | ├── libs                     // 参与打包的插件类库
 75 | ├── static                   // 静态资源目录
 76 | ├── build                    // 项目的配置文件目录
 77 | │   ├── build.js             // 打包的主入口
 78 | │   ├── check-version.js     // 检查输出打包库的版本
 79 | │   ├── dev-client.js        // 调试自动刷新配置
 80 | │   ├── dev-server.js        // 开发的服务配置
 81 | │   ├── utils.js             // 配置用到的工具类
 82 | │   ├── vue-loader.js        // vue文件加载配置
 83 | │   ├── webpack-base-conf.js // 基本的Webpack 配置文件
 84 | │   ├── webpack-dev-conf.js  // 开发的Webpack 配置文件
 85 | │   ├── webpack-prod-conf.js // 生产的Webpack 配置文件
 86 | 
 87 | ├── package.json             // 项目配置文件
 88 | ├── src                      // 生产目录
 89 | │   ├── assets               // css js 和图片资源
 90 | │   ├── components           // 各种组件
 91 | │   ├── config               // 项目配置
 92 | │   ├── router               // 项目路由 目前主要首页
 93 | │   ├── vs                   // vs编辑器主要文件夹
 94 | │   └── app.vue              // 根组件
 95 | │   └── main.js              // Webpack 预编译入口         
 96 | ├── index.html               // 项目入口文件
 97 | .
 98 | 
99 | 100 | 101 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | if (stats.hasErrors()) { 30 | console.log(chalk.red(' Build failed with errors.\n')) 31 | process.exit(1) 32 | } 33 | 34 | console.log(chalk.cyan(' Build complete.\n')) 35 | console.log(chalk.yellow( 36 | ' Tip: built files are meant to be served over an HTTP server.\n' + 37 | ' Opening index.html over file:// won\'t work.\n' 38 | )) 39 | }) 40 | }) 41 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | } 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: false, 33 | heartbeat: 2000 34 | }) 35 | // force page reload when html-webpack-plugin template changes 36 | compiler.plugin('compilation', function (compilation) { 37 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 38 | hotMiddleware.publish({ action: 'reload' }) 39 | cb() 40 | }) 41 | }) 42 | 43 | // proxy api requests 44 | Object.keys(proxyTable).forEach(function (context) { 45 | var options = proxyTable[context] 46 | if (typeof options === 'string') { 47 | options = { target: options } 48 | } 49 | app.use(proxyMiddleware(options.filter || context, options)) 50 | }) 51 | 52 | // handle fallback for HTML5 history API 53 | app.use(require('connect-history-api-fallback')()) 54 | 55 | // serve webpack bundle output 56 | app.use(devMiddleware) 57 | 58 | // enable hot-reload and state-preserving 59 | // compilation error display 60 | app.use(hotMiddleware) 61 | 62 | // serve pure static assets 63 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 64 | app.use(staticPath, express.static('./static')) 65 | 66 | var uri = 'http://localhost:' + port 67 | 68 | var _resolve 69 | var readyPromise = new Promise(resolve => { 70 | _resolve = resolve 71 | }) 72 | 73 | console.log('> Starting dev server...') 74 | 75 | devMiddleware.waitUntilValid(() => { 76 | console.log('> Listening at ' + uri + '\n') 77 | // when env is testing, don't need open it 78 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 79 | opn(uri) 80 | } 81 | _resolve() 82 | }) 83 | 84 | var server = app.listen(port) 85 | 86 | module.exports = { 87 | ready: readyPromise, 88 | close: () => { 89 | server.close() 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/build/utils.js -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | 7 | 8 | loaders: utils.cssLoaders({ 9 | sourceMap: isProduction 10 | ? config.build.productionSourceMap 11 | : config.dev.cssSourceMap, 12 | extract: isProduction 13 | }), 14 | 15 | 16 | transformToRequire: { 17 | video: 'src', 18 | source: 'src', 19 | img: 'src', 20 | image: 'xlink:href' 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | var rootPath = path.resolve(__dirname, '../') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | module.exports = { 12 | entry: { 13 | app: './src/main.js' 14 | }, 15 | output: { 16 | path: config.build.assetsRoot, 17 | filename: '[name].js', 18 | publicPath: process.env.NODE_ENV === 'production' 19 | ? config.build.assetsPublicPath 20 | : config.dev.assetsPublicPath 21 | }, 22 | resolve: { 23 | extensions: ['.js', '.vue', '.json'], 24 | alias: { 25 | '@': resolve('src'), 26 | jquery: "jquery/dist/jquery.min.js", 27 | vue: 'vue/dist/vue.min.js', 28 | dialog: path.resolve(rootPath, "./libs/dialogwindows/dialog.js"), 29 | noty: path.resolve(rootPath, "./libs/noty/noty.js"), 30 | store: path.resolve(rootPath, "./libs/store/store.js"), 31 | template: path.resolve(rootPath, "./libs/art-template/template-web.js") 32 | } 33 | }, 34 | module: { 35 | rules: [ 36 | { 37 | test: /\.vue$/, 38 | loader: 'vue-loader', 39 | options: vueLoaderConfig 40 | }, 41 | { 42 | test: /\.js$/, 43 | loader: 'babel-loader', 44 | include: [resolve('src'), resolve('test')] 45 | }, 46 | { 47 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 48 | loader: 'url-loader', 49 | options: { 50 | limit: 10000, 51 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 52 | } 53 | }, 54 | { 55 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 56 | loader: 'url-loader', 57 | options: { 58 | limit: 10000, 59 | name: utils.assetsPath('media/[name].[hash:7].[ext]') 60 | } 61 | }, 62 | { 63 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 64 | loader: 'url-loader', 65 | options: { 66 | limit: 10000, 67 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 68 | } 69 | } 70 | ] 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | var plugins = [ 9 | 10 | new webpack.DefinePlugin({ 11 | 'process.env': config.dev.env 12 | }), 13 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 14 | new webpack.HotModuleReplacementPlugin(), 15 | 16 | new webpack.NoEmitOnErrorsPlugin(), 17 | // https://github.com/ampedandwired/html-webpack-plugin 18 | 19 | 20 | new HtmlWebpackPlugin({ 21 | filename: 'index.html', 22 | template: 'src/app.html', 23 | inject: true 24 | }), 25 | 26 | new FriendlyErrorsPlugin() 27 | ]; 28 | 29 | 30 | // add hot-reload related code to entry chunks 31 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 32 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 33 | }) 34 | 35 | 36 | module.exports = merge(baseWebpackConfig, { 37 | module: { 38 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 39 | }, 40 | // cheap-module-eval-source-map is faster for development 41 | devtool: '#cheap-module-eval-source-map', 42 | plugins:plugins 43 | }) 44 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap:false, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | 25 | dev: { 26 | env: require('./dev.env'), 27 | port: 59458, 28 | autoOpenBrowser: true, 29 | assetsSubDirectory: 'static', 30 | assetsPublicPath: '/', 31 | proxyTable: { 32 | 33 | 34 | }, 35 | // CSS Sourcemaps off by default because relative paths are "buggy" 36 | // with this option, according to the CSS-Loader README 37 | // (https://github.com/webpack/css-loader#sourcemaps) 38 | // In our experience, they generally work as expected, 39 | // just be aware of this issue when enabling this option. 40 | cssSourceMap: true 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /dist/static/fonts/feather.0b17bdf.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/dist/static/fonts/feather.0b17bdf.eot -------------------------------------------------------------------------------- /dist/static/fonts/feather.34f9a3a.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/dist/static/fonts/feather.34f9a3a.woff -------------------------------------------------------------------------------- /dist/static/fonts/feather.ef0bf66.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/dist/static/fonts/feather.ef0bf66.ttf -------------------------------------------------------------------------------- /dist/static/js/manifest.2ae2e69a05c33dfc65f8.js: -------------------------------------------------------------------------------- 1 | !function(r){function n(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var e=window.webpackJsonp;window.webpackJsonp=function(o,u,c){for(var f,i,p,a=0,l=[];a" + datas.Js + "<\/script>"); 13 | } 14 | 15 | 16 | 17 | }()); -------------------------------------------------------------------------------- /dist/static/tpl/js/head.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var list; 3 | var datas = window.top.datas; 4 | var editorData = window.top.eidtorDatas; 5 | var cssBases = [ 6 | "", 7 | "https://necolas.github.io/normalize.css/7.0.0/normalize.css", 8 | "http://meyerweb.com/eric/tools/css/reset/reset200802.css" 9 | ]; 10 | 11 | if (datas.HtmlClassName) { 12 | 13 | document.getElementsByTagName("html")[0].className = datas.HtmlClassName; 14 | } 15 | 16 | if (datas.HtmlHeadStuff) { 17 | document.write(datas.HtmlHeadStuff); 18 | } 19 | 20 | if (datas.cssBase && cssBase[datas.cssBase]) { 21 | 22 | document.write(""); 23 | } 24 | 25 | 26 | document.write(" "); 27 | 28 | if (datas.CssExternal) { 29 | list = datas.CssExternal.split("\n"); 30 | for (var i = 0; i < list.length; i++) { 31 | document.write(""); 32 | } 33 | } 34 | 35 | if (datas.JsExternal) { 36 | 37 | list = datas.JsExternal.split("\n"); 38 | for (var i = 0; i < list.length; i++) { 39 | document.write(" 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dist/static/tpl/run2.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run3.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run4.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run5.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run6.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run7.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dist/static/tpl/run8.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | vue-codepen 在线编辑器
-------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/32X32/fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/32X32/fail.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/32X32/hits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/32X32/hits.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/32X32/i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/32X32/i.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/32X32/succ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/32X32/succ.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/alert.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/confirm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/confirm.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/discuz_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/discuz_bg.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/error.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/face-sad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/face-sad.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/face-smile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/face-smile.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/gb_tip_layer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/gb_tip_layer.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/gb_tip_layer_ie6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/gb_tip_layer_ie6.png -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/lhgcore.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/lhgcore.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/loading.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/prompt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/prompt.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/success.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/success.gif -------------------------------------------------------------------------------- /libs/dialogwindows/skins/icons/tips.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/libs/dialogwindows/skins/icons/tips.gif -------------------------------------------------------------------------------- /libs/noty/noty_demo.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 |
24 | 25 |
26 | 27 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /libs/store/store.js: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010-2016 Marcus Westin */ 2 | (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.store = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;odocument.w=window'),u.close(),c=u.w.frames[0].document,t=c.createElement("div")}catch(l){t=i.createElement("div"),c=i.body}var f=function(e){return function(){var n=Array.prototype.slice.call(arguments,0);n.unshift(t),c.appendChild(t),t.addBehavior("#default#userData"),t.load(o);var i=e.apply(r,n);return c.removeChild(t),i}},d=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),s=function(e){return e.replace(/^d/,"___$&").replace(d,"___")};r.set=f(function(e,t,n){return t=s(t),void 0===n?r.remove(t):(e.setAttribute(t,r.serialize(n)),e.save(o),n)}),r.get=f(function(e,t,n){t=s(t);var i=r.deserialize(e.getAttribute(t));return void 0===i?n:i}),r.remove=f(function(e,t){t=s(t),e.removeAttribute(t),e.save(o)}),r.clear=f(function(e){var t=e.XMLDocument.documentElement.attributes;e.load(o);for(var r=t.length-1;r>=0;r--)e.removeAttribute(t[r].name);e.save(o)}),r.getAll=function(e){var t={};return r.forEach(function(e,r){t[e]=r}),t},r.forEach=f(function(e,t){for(var n,i=e.XMLDocument.documentElement.attributes,o=0;n=i[o];++o)t(n.name,r.deserialize(e.getAttribute(n.name)))})}try{var v="__storejs__";r.set(v,v),r.get(v)!=v&&(r.disabled=!0),r.remove(v)}catch(l){r.disabled=!0}return r.enabled=!r.disabled,r}(); 5 | }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) 6 | },{}]},{},[1])(1) 7 | }); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-codepen", 3 | "version": "0.0.1", 4 | "description": "vue-codepen monaco-editor", 5 | "homepage": "https://github.com/heqing0712/vue-codepen", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "start": "webpack", 9 | "server": "webpack-dev-server --open", 10 | "dev": "node build/dev-server.js --open", 11 | "build": "node build/build.js", 12 | "devx": "node build/devx.js" 13 | }, 14 | "keywords": [ 15 | "vue-codepen monaco-editor web-editor" 16 | ], 17 | "author": "xiaohe", 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/heqing0712/vue-codepen.git" 21 | }, 22 | "license": "ISC", 23 | "devDependencies": { 24 | "autoprefixer": "^7.1.5", 25 | "babel-core": "^6.26.0", 26 | "babel-loader": "^7.1.2", 27 | "babel-preset-es2015": "^6.24.1", 28 | "babel-preset-stage-0": "^6.24.1", 29 | "babel-preset-stage-2": "^6.24.1", 30 | "babel-register": "^6.26.0", 31 | "connect-history-api-fallback": "^1.5.0", 32 | "copy-webpack-plugin": "^4.4.2", 33 | "cross-env": "^5.0.5", 34 | "css-loader": "^0.28.7", 35 | "eslint-friendly-formatter": "^3.0.0", 36 | "eventsource-polyfill": "^0.9.6", 37 | "express": "^4.16.2", 38 | "extract-text-webpack-plugin": "^3.0.1", 39 | "file-loader": "^1.1.5", 40 | "friendly-errors-webpack-plugin": "^1.6.1", 41 | "html-webpack-plugin": "^2.30.1", 42 | "http-proxy-middleware": "^0.17.4", 43 | "monaco-editor": "^0.10.1", 44 | "node-sass": "^4.7.1", 45 | "opn": "^5.2.0", 46 | "optimize-css-assets-webpack-plugin": "^3.2.0", 47 | "ora": "^2.0.0", 48 | "org": "^0.2.0", 49 | "postcss-loader": "^2.0.7", 50 | "sass-loader": "^6.0.6", 51 | "shelljs": "^0.8.1", 52 | "store": "^2.0.12", 53 | "style-loader": "^0.19.0", 54 | "url-loader": "^0.6.2", 55 | "vue": "^2.5.2", 56 | "vue-compiler": "^2.0.0", 57 | "vue-loader": "^13.3.0", 58 | "vue-resource": "^1.3.4", 59 | "vue-router": "^3.0.1", 60 | "vue-style-loader": "^3.0.3", 61 | "vue-template-compiler": "^2.5.2", 62 | "webpack": "^3.7.1", 63 | "webpack-dev-middleware": "^2.0.6", 64 | "webpack-dev-server": "^2.9.2", 65 | "webpack-hot-middleware": "^2.21.0", 66 | "webpack-merge": "^4.1.2" 67 | }, 68 | "dependencies": { 69 | "feather-icons": "^4.7.0", 70 | "jquery": "^3.2.1" 71 | }, 72 | "engines": { 73 | "node": ">= 4.0.0", 74 | "npm": ">= 3.0.0" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | plugins: [ 4 | require('autoprefixer') 5 | ] 6 | } -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | vue-codepen 在线编辑器 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/css/common/common.css: -------------------------------------------------------------------------------- 1 | /*common*/ 2 | .cf:before, .cf:after{content: "";display: table;} 3 | .cf:after{clear: both;} 4 | .cf{zoom: 1;} 5 | .clear{height: 0px;line-height: 0px;clear: both;font-size: 1px;} 6 | .ctl, .fl, .fc, .cnl{float: left;} 7 | .ctr, .fr, .cnr{float: right;} 8 | .ts{-moz-transition: all 0.3s ease;-webkit-transition: all 0.3s ease;-o-transition: all 0.3s ease;-ms-transition: all 0.3s ease;transition: all 0.3s ease;} 9 | .dl{display: inline-block;*display: inline;*zoom: 1;} 10 | .v-show,.show { display:block!important;} 11 | .v-hide,.hide { display:none!important;} 12 | .s-select {color:#999;font-weight:normal} 13 | -------------------------------------------------------------------------------- /src/assets/css/common/reset.css: -------------------------------------------------------------------------------- 1 | /*reset*/ 2 | div, html, body, p, ul, ol, li, a, form, img, table, td, h1, h2, h3, h4, h5, h6, blockquote, header, section, footer, aside, nav, article, figure, figcaption, dl, dt, dd{margin: 0;padding: 0;} 3 | header, section, footer, aside, nav, article, figure, figcaption{display: block;} 4 | table{border-collapse: collapse;} 5 | img{border: none;vertical-align: middle;} 6 | ul, li{list-style: none;} 7 | input:focus, textarea:focus{outline: none;} 8 | *{box-sizing: border-box;} 9 | html, body { 10 | width:100%; 11 | height:100%; 12 | overflow:hidden; 13 | } 14 | body ,input,textarea,select,button{ 15 | font-family:"Microsoft YaHei",Helvetia,"lucida Grande",Verdana,Arial; 16 | } 17 | body { 18 | font-size: 1rem; 19 | font-weight: 400; 20 | line-height: 1.45; 21 | } 22 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/feather.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/css/fonts/feather/feather.jpg -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/feather.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/css/fonts/feather/feather.sketch -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/fonts/feather.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/css/fonts/feather/fonts/feather.eot -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/fonts/feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/css/fonts/feather/fonts/feather.ttf -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/fonts/feather.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/css/fonts/feather/fonts/feather.woff -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/activity.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/airplay.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/alert-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/alert-octagon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/alert-triangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/align-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/align-justify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/align-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/align-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/anchor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/aperture.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-down-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-down-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-up-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/at-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/award.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bar-chart-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bar-chart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/battery-charging.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/battery.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bell-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bluetooth.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bold.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/book.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/bookmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/box.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/briefcase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/camera-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/camera.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cast.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/check-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/check-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevrons-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevrons-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevrons-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chevrons-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/chrome.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/clipboard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud-drizzle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud-lightning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud-rain.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud-snow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/codepen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/command.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/compass.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-down-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-down-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-left-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-left-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-right-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-right-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-up-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/corner-up-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/cpu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/credit-card.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/crop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/crosshair.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/delete.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/disc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/download-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/droplet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/edit-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/edit-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/edit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/external-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/eye-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/eye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/fast-forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/feather.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/file-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/file-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/file-text.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/file.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/film.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/filter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/flag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/gitlab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/globe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/grid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/hash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/headphones.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/heart-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | heart-on 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/heart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/help-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/home.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/inbox.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/info.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/layers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/layout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/life-buoy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/link-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/list.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/loader.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/log-in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/log-out.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/mail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/map-pin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/map.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/maximize-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/message-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/message-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/mic-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/mic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/minimize-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/minus-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/minus-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/monitor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/moon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/more-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/more-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/move.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/music.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/navigation-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/navigation.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/octagon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/package.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/paperclip.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/pause-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/percent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-call.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-forwarded.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-incoming.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-missed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone-outgoing.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/pie-chart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/play-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/plus-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/pocket.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/power.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/printer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/radio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/refresh-ccw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/refresh-cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/repeat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/rewind.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/rotate-ccw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/rotate-cw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/scissors.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/server.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/settings.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/share-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/share.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/shield.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/shopping-cart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/shuffle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/sidebar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/skip-back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/skip-forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/slack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/slash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/sliders.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/smartphone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/speaker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/star-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | star-on 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/star.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/stop-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/sun.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/sunrise.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/sunset.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/tablet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/tag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/target.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/thermometer.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/thumbs-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/thumbs-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/toggle-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/toggle-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/trash-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/trash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/trending-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/trending-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/triangle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/tv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/type.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/umbrella.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/unlock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/upload-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/user-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/user-minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/user-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/user-x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/user.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/users.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/video-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/voicemail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/volume-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/volume-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/volume-x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/volume.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/watch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/wifi-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/wifi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/wind.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/x-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/x-square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/zap.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/zoom-in.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/assets/css/fonts/feather/icons/zoom-out.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/assets/css/index/common.css: -------------------------------------------------------------------------------- 1 |  2 | /*layout*/ 3 | 4 | #app { 5 | width:100%; 6 | height:100%; 7 | } 8 | .editor-container { 9 | width:100%; 10 | height:100%; 11 | display:flex; 12 | display:-webkit-flex; 13 | flex-direction:column; 14 | } 15 | 16 | .set-box { 17 | padding:10px; 18 | } 19 | 20 | .form-item { 21 | padding:4px; 22 | } 23 | 24 | .selcls { 25 | width:100%; 26 | padding:4px; 27 | } 28 | -------------------------------------------------------------------------------- /src/assets/css/index/footer.css: -------------------------------------------------------------------------------- 1 |  2 | 3 | /*footer*/ 4 | .footer { 5 | background:#fff; 6 | border-top:1px solid #ddd ; 7 | height:40px; 8 | z-index:3; 9 | color:#555; 10 | } 11 | .footer .wrap { 12 | padding:0 15px; 13 | line-height:38px; 14 | font-size: 13px; 15 | color: #333; 16 | } 17 | 18 | .footer dl { 19 | float:left; 20 | margin-right:50px; 21 | } 22 | .footer dt, .footer dd { 23 | display:inline-block; 24 | } 25 | .footer dt { 26 | padding:0px 2px 0px 0px; 27 | } 28 | 29 | .footer .tags { 30 | display:inline-block; 31 | } 32 | .footer .tag { 33 | background: #eceff5; 34 | color: #a1a8af; 35 | font-size: 13px; 36 | font-weight: 300; 37 | line-height: 22px; 38 | padding: 0 8px; 39 | border-radius:3px; 40 | display: inline-block; 41 | margin-right:5px; 42 | } 43 | .footer .add { 44 | display:inline-block; 45 | text-decoration:none; 46 | line-height: 22px; 47 | border-radius:3px; 48 | font-size:20px; 49 | vertical-align:-2px; 50 | color:#999; 51 | outline:none; 52 | } 53 | 54 | .footer .add:hover { 55 | /*background:#379BE9; 56 | color:#fff;*/ 57 | color:#000; 58 | } 59 | .footer .version{ 60 | line-height:40px; 61 | text-align:right; 62 | padding-right:20px; 63 | float:right 64 | } 65 | -------------------------------------------------------------------------------- /src/assets/css/index/index.css: -------------------------------------------------------------------------------- 1 | @import "./common.css"; 2 | @import "./header.css"; 3 | @import "./content.css"; 4 | @import "./footer.css"; 5 | @import "./other.css"; -------------------------------------------------------------------------------- /src/assets/css/plugins/overflow.css: -------------------------------------------------------------------------------- 1 | /*vseditor overflow css*/ 2 | .context-view { 3 | z-index: 100!important; 4 | } 5 | .monaco-editor.vs .current-line, 6 | .monaco-editor .view-overlays .current-line { 7 | border:none!important; 8 | } 9 | 10 | .monaco-editor{ 11 | -webkit-tap-highlight-color: transparent; 12 | font-variant-ligatures: contextual; 13 | } 14 | 15 | .monaco-editor{ 16 | padding:0px 0px 0px 0px; 17 | } 18 | .resizing .monaco-editor .minimap-shadow-visible { 19 | display:none; 20 | } 21 | .monaco-editor .overflow-guard>.margin, 22 | .monaco-editor .lines-content 23 | { 24 | margin-top:5px; 25 | } 26 | 27 | .monaco-editor .line-numbers { 28 | color:#999!important; 29 | } -------------------------------------------------------------------------------- /src/assets/css/scss/variable.scss: -------------------------------------------------------------------------------- 1 |  2 | /* 3 | theme color 4 | */ 5 | $blue: #39506F; 6 | 7 | $gray: #E6E6E6; 8 | 9 | $black: #343436; -------------------------------------------------------------------------------- /src/assets/css/style.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | @import "./scss/variable.scss"; 3 | 4 | @import "./fonts/feather/css/iconfont.css"; 5 | 6 | 7 | 8 | /* 9 | * reset css 10 | */ 11 | @import "./common/reset.css"; 12 | 13 | /* 14 | * common css 15 | */ 16 | @import "./common/common.css"; 17 | 18 | 19 | /* 20 | * ui css 21 | */ 22 | @import "./ui/ui.css"; 23 | 24 | /* 25 | * index css 26 | */ 27 | @import "./index/index.css"; 28 | 29 | /* 30 | * plugin css 31 | */ 32 | @import "./plugins/overflow.css"; 33 | 34 | /* 35 | * theme css 36 | */ 37 | @import "./theme/themes.scss"; 38 | -------------------------------------------------------------------------------- /src/assets/css/theme/themes.scss: -------------------------------------------------------------------------------- 1 |  2 | @import "./theme-gray.scss"; 3 | 4 | @import "./theme-black.scss"; 5 | 6 | @import "./theme-blue.scss"; 7 | -------------------------------------------------------------------------------- /src/assets/images/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/01.png -------------------------------------------------------------------------------- /src/assets/images/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/02.png -------------------------------------------------------------------------------- /src/assets/images/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/03.png -------------------------------------------------------------------------------- /src/assets/images/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/04.png -------------------------------------------------------------------------------- /src/assets/images/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/05.png -------------------------------------------------------------------------------- /src/assets/images/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/06.png -------------------------------------------------------------------------------- /src/assets/images/hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/hd.png -------------------------------------------------------------------------------- /src/assets/images/sidebar-divider-dots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/sidebar-divider-dots.png -------------------------------------------------------------------------------- /src/assets/images/sidebar-divider-dots2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/sidebar-divider-dots2.png -------------------------------------------------------------------------------- /src/assets/images/yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/src/assets/images/yes.png -------------------------------------------------------------------------------- /src/components/js/penSettingDialog.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import store from 'store'; 3 | import vs from '../../vs/core'; 4 | 5 | let watch; 6 | let data = { 7 | 8 | HtmlDocType: 1, 9 | HtmlPreprocessor: 1, 10 | HtmlClassName: "", 11 | HtmlHeadStuff: "", 12 | CssPreprocessor: 1, 13 | CssBase: 1, 14 | CssVendorPrefix: "", 15 | CssExternal: "", 16 | JsPreprocessor: 1, 17 | JsExternal: "" 18 | }; 19 | 20 | 21 | 22 | function getByStore() { 23 | let val, name; 24 | 25 | for (let o in data) { 26 | name = 'vs-' + o; 27 | val = store.get(name); 28 | if (val !== undefined) { 29 | data[o] = val; 30 | } 31 | } 32 | } 33 | 34 | 35 | function makeWatchData() { 36 | 37 | let fns = {}; 38 | for (let o in data) { 39 | (function (o) { 40 | let name = 'vs-' +o; 41 | fns[o] = function (val, oval) { 42 | store.set(name, val); 43 | }; 44 | }(o)) 45 | } 46 | return fns; 47 | } 48 | 49 | 50 | 51 | getByStore(); 52 | watch = makeWatchData(); 53 | 54 | 55 | module.exports = { 56 | 57 | 58 | data() { 59 | 60 | return data; 61 | }, 62 | 63 | methods: { 64 | 65 | 66 | //快速添加引用 67 | quickAdd: function () { 68 | 69 | var i; 70 | var links; 71 | var $textarea; 72 | var $that = $(event.currentTarget); 73 | var link = $that.val(); 74 | 75 | if (link == "none") return; 76 | 77 | $textarea = $that.closest(".form-item").find("textarea"); 78 | links = $.trim($textarea.val()).split("\n"); 79 | 80 | for (i = 0; i < links.length; i++) { 81 | if (links[i] == link) return; 82 | if (links[i] == "") links.splice(i--, 1); 83 | } 84 | links.push(link); 85 | $textarea.val(links.join("\n")); 86 | data["JsExternal"] = $textarea.val(); 87 | }, 88 | 89 | //快速添加引用 90 | quickAdd2: function (event) { 91 | 92 | var i; 93 | var links; 94 | var $textarea; 95 | var $that = $(event.currentTarget); 96 | var link = $that.data("src"); 97 | 98 | $textarea = $that.closest(".form-item").find("textarea"); 99 | links = $.trim($textarea.val()).split("\n"); 100 | 101 | for (i = 0; i < links.length; i++) { 102 | if (links[i] == link) return; 103 | if (links[i] == "") links.splice(i--, 1); 104 | } 105 | links.push(link); 106 | $textarea.val(links.join("\n")); 107 | 108 | data["JsExternal"] = $textarea.val(); 109 | 110 | return false; 111 | 112 | }, 113 | 114 | }, 115 | 116 | watch: watch, 117 | 118 | 119 | created() { 120 | 121 | }, 122 | mounted() { 123 | vs.penSettingVue = this; 124 | vs.penSettingVueData = this._data; 125 | 126 | } 127 | } -------------------------------------------------------------------------------- /src/config/index.js: -------------------------------------------------------------------------------- 1 | import store from 'store'; 2 | var config = {}; 3 | var storeToken = "vs-"; 4 | 5 | config.staticPath = "./static/"; 6 | 7 | //为了发布到 github 可以预览打包的路径 8 | //config.staticPath = "./dist/static/"; 9 | 10 | config.storeToken = storeToken; 11 | 12 | //Vs Editor Url 13 | config.vsEditorUrl = 'https://as.alipayobjects.com/g/cicada/monaco-editor-mirror/0.10.1/min'; 14 | 15 | 16 | //loaderJs config 17 | config.requireJsConfig = { 18 | 19 | baseUrl:config.staticPath, 20 | 21 | paths: { 22 | vs: config.vsEditorUrl + '/vs' 23 | }, 24 | 25 | 'vs/nls': { 26 | availableLanguages: { 27 | '*': 'zh-cn' 28 | } 29 | } 30 | }; 31 | 32 | //loader JS url 33 | config.loaderJsUrl = `${config.requireJsConfig.paths.vs}/loader.js`; 34 | 35 | //requirejs 36 | config.requireJsUrl = 'https://cdn.bootcss.com/require.js/2.3.5/require.min.js'; 37 | 38 | //编辑器配置 39 | config.editor = { 40 | fontFamily: 'Monoid,Droid Sans Mono,"Microsoft YaHei",Helvetia,"lucida Grande",Verdana,Arial', 41 | fontSize: 20, 42 | theme: "vs" //vs-dark 43 | }; 44 | 45 | //主题配置 46 | config.themes = { 47 | 48 | "theme-gray":{ 49 | "theme":"vs" 50 | }, 51 | "theme-black":{ 52 | "theme":"vs-dark" 53 | }, 54 | "theme-blue":{ 55 | "theme":"vs" 56 | } 57 | }; 58 | 59 | //默认主题 60 | config.defaultTheme = "theme-blue"; 61 | 62 | 63 | 64 | //上传配置 65 | config.upload = { 66 | serverUrl: "/cdn/common/ueditor/net/controller.ashx?action=uploadpsd&fileFieldName=file&psd=true&t=", 67 | webuploaderUrl: "libs/webuploader/webuploader.html5only" 68 | }; 69 | 70 | //下载配置 71 | config.download = { 72 | BLOB_URL : "libs/download/Blob", 73 | FILESAVER_URL : "libs/download/FileSaver", 74 | JSZIP : "libs/download/jszip.min" 75 | }; 76 | 77 | 78 | module.exports = config; -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | //import "./main.css"; 2 | import './assets/css/style.scss'; 3 | import Vue from 'vue'; 4 | import App from './App.vue'; 5 | 6 | 7 | // 现在我们可以启动应用了! 8 | // 路由器会创建一个 App 实例,并且挂载到选择符 #app 匹配的元素上。 9 | const app = new Vue({ 10 | 11 | 12 | //渲染 13 | render: f => f(App), 14 | 15 | //初始化回调 16 | mounted: function () { 17 | 18 | //console.log("全部渲染完毕"); 19 | 20 | } 21 | 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /src/vs/common/AMDLoader.js: -------------------------------------------------------------------------------- 1 | import config from '../../config'; 2 | 3 | /* 4 | * AMD 模块化加载 5 | */ 6 | module.exports = function (callback) { 7 | 8 | if (typeof window.require === 'undefined') { 9 | const loaderScript = window.document.createElement('script'); 10 | loaderScript.type = 'text/javascript'; 11 | loaderScript.src = config.requireJsUrl; 12 | loaderScript.addEventListener('load', callback); 13 | window.document.body.appendChild(loaderScript); 14 | 15 | } else { 16 | callback(); 17 | } 18 | }; -------------------------------------------------------------------------------- /src/vs/core/index.js: -------------------------------------------------------------------------------- 1 |  2 | var vs = {}; 3 | vs.version = '0.0.1'; 4 | 5 | 6 | 7 | 8 | 9 | export default vs; -------------------------------------------------------------------------------- /src/vs/dialogs/index.js: -------------------------------------------------------------------------------- 1 |  2 | import vs from '../core'; 3 | import $ from 'jquery'; 4 | import dialog from 'dialog'; 5 | 6 | export function bindPageDialog() { 7 | 8 | var indexVue = vs.indexVue; 9 | 10 | $(document).bind("click", function (e) { 11 | 12 | var $target; 13 | 14 | if (indexVue.isShowViewBox) { 15 | 16 | $target = $(e.target); 17 | 18 | if (!$target.closest("#view-box").length && 19 | !$target.hasClass("view-btn")) { 20 | indexVue.hideViewBox(); 21 | } 22 | } 23 | }) 24 | }; 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/vs/events/index.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import store from 'store'; 3 | import vs from '../core'; 4 | import * as editor from '../editor'; 5 | import AMDLoader from '../common/AMDLoader'; 6 | import {bindPageDialog} from '../dialogs'; 7 | 8 | vs.init = function () { 9 | 10 | //页面弹窗事件 11 | bindPageDialog(); 12 | 13 | //页面编辑器布局事件 14 | editor.bindLayout(); 15 | 16 | //AMD 模块化js载入后在绑定的事件 17 | AMDLoader(function () { 18 | 19 | //绑定AMD模式下的jquery 20 | window.define('jquery', function () { 21 | return $; 22 | }) 23 | 24 | editor.bindEditor(); 25 | 26 | }); 27 | 28 | }; -------------------------------------------------------------------------------- /src/vs/plugins/index.js: -------------------------------------------------------------------------------- 1 | import vs from '../core'; 2 | import $ from 'jquery'; 3 | import dialog from 'dialog'; 4 | import noty from 'noty'; 5 | 6 | 7 | /* 8 | * Tab 模块切换组件 9 | */ 10 | export function tab(options) { 11 | 12 | options = $.extend({ 13 | navs: null, 14 | cts: null, 15 | activeCls: "active", 16 | startIndex: 0, 17 | clickFn: null, 18 | initFn: null 19 | 20 | }, options || {}); 21 | 22 | var fn = options.clickFn, 23 | cls = options.activeCls || "active"; 24 | 25 | options.navs.bind("click", function () { 26 | var $that = $(this), 27 | index = $that.index(); 28 | 29 | $that.addClass(cls).siblings().removeClass(cls); 30 | options.cts.eq(index).addClass(cls).siblings().removeClass(cls); 31 | 32 | if ($.isFunction(fn)) { 33 | if (!fn.call($that, index)) 34 | return false; 35 | } 36 | }); 37 | 38 | if (options.startIndex > 0) { 39 | options.navs.eq(options.startIndex).trigger("click"); 40 | } 41 | 42 | if ($.isFunction(options.initFn)) { 43 | options.initFn(); 44 | } 45 | 46 | 47 | }; 48 | 49 | 50 | //成功提示 51 | export function alertSuccess(txt) { 52 | 53 | noty({ 54 | text: txt, 55 | type: "success", 56 | timeout: 3000 57 | }); 58 | }; 59 | 60 | 61 | //失败提示 62 | export function alertFail(txt) { 63 | noty({ 64 | text: txt, 65 | type: "error", 66 | timeout: 3000 67 | }); 68 | }; 69 | 70 | /* 71 | * 绑定 noty提示 72 | */ 73 | if ($.noty) { 74 | 75 | $.extend(true, $.noty.defaults, { 76 | type: "alert", 77 | timeout: 60000, 78 | custom: $(window.top.document).find('body'), 79 | layout: "topCenter", 80 | maxVisible: 5, 81 | animation: { 82 | open: { 83 | height: "toggle" 84 | }, 85 | close: { 86 | height: "toggle" 87 | }, 88 | easing: "swing", 89 | speed: 200 90 | } 91 | }) 92 | } 93 | -------------------------------------------------------------------------------- /src/vs/services/index.js: -------------------------------------------------------------------------------- 1 | import $ from 'jquery'; 2 | import noty from 'noty'; 3 | 4 | 5 | 6 | /** 7 | * 获取一条数据 8 | * @param {number} 数据id 9 | * @param {function} 回调函数 10 | */ 11 | export function getModel(id, callback) { 12 | 13 | if (!id) { 14 | 15 | console && console.log("This id is error."); 16 | } 17 | 18 | $.ajax({ 19 | url: "/Vs/GetModel/" + id, 20 | type: "GET", 21 | dataType: "JSON", 22 | success: data=> { 23 | 24 | if ($.isFunction(callback)) { 25 | callback(data); 26 | } 27 | 28 | }, 29 | error: function (XMLHttpRequest, textStatus, errorThrown) { 30 | 31 | console && console.log(errorThrown); 32 | } 33 | }) 34 | 35 | }; 36 | 37 | 38 | 39 | /** 40 | * 保存model 41 | * @return {object} model 数据对象 42 | * @return {function} 回调函数 43 | */ 44 | export function saveModel(datas, callback) { 45 | 46 | if (!datas) return; 47 | 48 | var nt = noty({ 49 | text: "正在保存中...", 50 | type: "info", 51 | timeout: 100000 52 | }); 53 | 54 | $.ajax({ 55 | url: "/Vs/DoEdit/", 56 | type: "POST", 57 | dataType: "JSON", 58 | data: { datas: JSON.stringify(datas) }, 59 | 60 | success: data=> { 61 | 62 | nt.close(); 63 | 64 | if (data.status == 0) { 65 | 66 | noty({ 67 | text: "保存失败!", 68 | type: "error", 69 | timeout: 3000 70 | }); 71 | 72 | } 73 | else if (data.status == 1) { 74 | 75 | noty({ 76 | text: "保存成功!", 77 | type: "success", 78 | timeout: 3000 79 | }); 80 | } 81 | 82 | if ($.isFunction(callback)) { 83 | callback(data); 84 | } 85 | 86 | }, 87 | 88 | error: function (XMLHttpRequest, textStatus, errorThrown) { 89 | 90 | console && console.log(errorThrown); 91 | } 92 | }) 93 | 94 | }; 95 | 96 | 97 | /* 98 | * 将编辑器上的代码保存为html 99 | */ 100 | export function createRunHtml() { 101 | 102 | var htmlStr = ""; 103 | var pagePath = ""; 104 | var relativePagePath = ""; 105 | var pageName = store.get("vs-pagename"); 106 | 107 | if (!pageName) { 108 | relativePagePath = "tpl/html/" + pageName; 109 | pagePath = "/VsEditor/" + relativePagePath; 110 | } 111 | 112 | $.ajax({ 113 | url: "/Vs/CreateRunHtml/", 114 | type: "POST", 115 | data: { 116 | htmlStr: htmlStr, 117 | pagePath: pagePath 118 | }, 119 | dataType: "JSON", 120 | success:data=> { 121 | 122 | console.log(data); 123 | }, 124 | error: function (XMLHttpRequest, textStatus, errorThrown) { 125 | 126 | console && console.log(errorThrown); 127 | } 128 | }) 129 | 130 | }; 131 | 132 | -------------------------------------------------------------------------------- /src/vs/store/index.js: -------------------------------------------------------------------------------- 1 | import vs from '../core'; 2 | import store from 'store'; 3 | let storeName = "vseditor-v" + vs.version; 4 | let storeData = store.get(storeName); 5 | 6 | vs.storeData = storeData; 7 | 8 | 9 | //保存缓存 10 | vs.saveStore = function () { 11 | 12 | store.set(storeName, storeData); 13 | }; 14 | 15 | 16 | //获取缓存 17 | vs.getStore = function (name) { 18 | 19 | return storeData[name]; 20 | }; 21 | 22 | 23 | //设置缓存 24 | vs.setStore = function (name, val) { 25 | storeData[name] = val; 26 | vs.saveStore(); 27 | }; 28 | 29 | 30 | if (!storeData) { 31 | 32 | vs.storeData = storeData = {}; 33 | vs.saveStore(); 34 | } 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/vs/theme/index.js: -------------------------------------------------------------------------------- 1 |  2 | import config from '../../config' 3 | import store from 'store'; 4 | import $ from 'jquery'; 5 | 6 | let $body = $("body"); 7 | let editor = config.editor; 8 | let themes = config.themes; 9 | let defaultTheme = config.defaultTheme; 10 | let storeToken = config.storeToken; 11 | let themeToken = config.storeToken + "theme"; 12 | let isFirtSetTheme = true; 13 | 14 | 15 | 16 | export function getTheme() { 17 | 18 | let theme = store.get(themeToken); 19 | 20 | if (!theme && defaultTheme) { 21 | theme = defaultTheme ; 22 | } 23 | 24 | return theme; 25 | } 26 | 27 | 28 | export function setTheme(val, oval) { 29 | 30 | let thisThemeConfig ; 31 | 32 | if (!val) { 33 | val = getTheme(); 34 | } 35 | 36 | thisThemeConfig = themes[val]; 37 | 38 | if(val && thisThemeConfig) { 39 | if (oval) { 40 | $body.removeClass(oval) 41 | } 42 | 43 | $body.addClass(val) 44 | store.set(themeToken, val); 45 | 46 | if(thisThemeConfig.theme != editor.theme){ 47 | editor.theme = thisThemeConfig.theme; 48 | if(!isFirtSetTheme){ 49 | window.monaco.editor.setTheme(editor.theme); 50 | } 51 | } 52 | } 53 | 54 | if(isFirtSetTheme){ 55 | isFirtSetTheme = false; 56 | } 57 | 58 | 59 | } 60 | 61 | 62 | 63 | function getFontSize() { 64 | 65 | return store.get(storeToken + "fontSize"); 66 | } 67 | 68 | function setConfigFontSize() { 69 | 70 | var fontSize = getFontSize(); 71 | if (fontSize) { 72 | editor.fontSize = fontSize; 73 | } 74 | } 75 | 76 | export function setFontSize(val) { 77 | 78 | 79 | $(".margin-view-overlays,.view-lines").css("font-size", val+"px"); 80 | } 81 | 82 | 83 | 84 | export function setConfigByStore() { 85 | 86 | setTheme(); 87 | setConfigFontSize(); 88 | 89 | } 90 | 91 | -------------------------------------------------------------------------------- /src/vs/utils/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 获取URL参数 3 | * @return {String} name 参数名称 4 | * @return {string} 返回参数值 5 | */ 6 | export function getParam(name) { 7 | let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); 8 | let r = window.location.search.substr(1).match(reg); 9 | if (r) { 10 | return decodeURI(r[2]); 11 | } 12 | return null; 13 | }; 14 | 15 | 16 | /* 17 | * 获取head html 18 | */ 19 | export function getHeadHtml(s) { 20 | return (s || "") && (s = s.match(/([\s\S]*)<\/head>/)) && s[1] || ""; 21 | }; 22 | 23 | /* 24 | * 获取body html 25 | */ 26 | export function getBodyHtml(s) { 27 | return (s || "") && (s = s.match(/]*>([\s\S]*)<\/body>/)) && s[1] || ""; 28 | }; 29 | 30 | 31 | /* 32 | *获取页面的文档类型 33 | */ 34 | export function GetDocType(str) { 35 | 36 | if (!str) return null; 37 | 38 | var types = { 39 | "1": "", 40 | "2": "/strict.dtd", 41 | "3": "/loose.dtd", 42 | "4": "/frameset.dtd", 43 | "5": "/xhtml1-strict.dtd", 44 | "6": "/xhtml1-transitional.dtd", 45 | "7": "/xhtml1-frameset.dtd", 46 | "8": "/xhtml11.dtd" 47 | }; 48 | 49 | for (let s in types) { 50 | if (str.indexOf(types[s]) > -1) 51 | return s; 52 | } 53 | 54 | return null; 55 | }; 56 | -------------------------------------------------------------------------------- /src/vs/vs.all.js: -------------------------------------------------------------------------------- 1 | import vs from './core'; 2 | import './store'; 3 | import './events'; 4 | 5 | module.exports = vs; -------------------------------------------------------------------------------- /static/libs/webuploader/README.md: -------------------------------------------------------------------------------- 1 | 目录说明 2 | ======================== 3 | 4 | ```bash 5 | ├── Uploader.swf # SWF文件,当使用Flash运行时需要引入。 6 | ├ 7 | ├── webuploader.js # 完全版本。 8 | ├── webuploader.min.js # min版本 9 | ├ 10 | ├── webuploader.flashonly.js # 只有Flash实现的版本。 11 | ├── webuploader.flashonly.min.js # min版本 12 | ├ 13 | ├── webuploader.html5only.js # 只有Html5实现的版本。 14 | ├── webuploader.html5only.min.js # min版本 15 | ├ 16 | ├── webuploader.noimage.js # 去除图片处理的版本,包括HTML5和FLASH. 17 | ├── webuploader.noimage.min.js # min版本 18 | ├ 19 | ├── webuploader.custom.js # 自定义打包方案,请查看 Gruntfile.js,满足移动端使用。 20 | └── webuploader.custom.min.js # min版本 21 | ``` 22 | 23 | ## 示例 24 | 25 | 请把整个 Git 包下载下来放在 php 服务器下,因为默认提供的文件接受是用 php 编写的,打开 examples 页面便能查看示例效果。 -------------------------------------------------------------------------------- /static/libs/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/heqing0712/vue-codepen/4180ba65fede913f3e60e0eabc8680cc34f13aed/static/libs/webuploader/Uploader.swf -------------------------------------------------------------------------------- /static/libs/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .progress { 2 | height: 10px; 3 | margin-bottom: 10px; 4 | overflow: hidden; 5 | background-color: #f5f5f5; 6 | 7 | } 8 | 9 | .progress-bar { 10 | float: left; 11 | width: 0; 12 | height: 100%; 13 | font-size: 12px; 14 | line-height: 20px; 15 | color: #fff; 16 | text-align: center; 17 | background-color: #428bca; 18 | 19 | -webkit-transition: width .6s ease; 20 | transition: width .6s ease 21 | } 22 | 23 | .progress-striped .progress-bar { 24 | background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); 25 | background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent); 26 | background-size: 40px 40px 27 | } 28 | 29 | .progress.active .progress-bar { 30 | -webkit-animation: progress-bar-stripes 2s linear infinite; 31 | animation: progress-bar-stripes 2s linear infinite 32 | } 33 | 34 | 35 | .webuploader-container { 36 | position: relative; 37 | } 38 | .webuploader-element-invisible { 39 | position: absolute !important; 40 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 41 | clip: rect(1px,1px,1px,1px); 42 | } 43 | .webuploader-pick { 44 | position: relative; 45 | display: inline-block; 46 | cursor: pointer; 47 | background:#1593FF; 48 | line-height:36px; 49 | padding: 0px 25px; 50 | color: #fff; 51 | text-align: center; 52 | border-radius: 3px; 53 | overflow: hidden; 54 | } 55 | .webuploader-pick-hover { 56 | background:#1586e8; 57 | } 58 | 59 | .webuploader-pick-disable { 60 | opacity: 0.6; 61 | pointer-events:none; 62 | } 63 | 64 | -------------------------------------------------------------------------------- /static/tpl/js/body.js: -------------------------------------------------------------------------------- 1 |  2 | (function () { 3 | 4 | var datas = window.top.datas; 5 | var editorData = window.top.eidtorDatas; 6 | 7 | if (editorData.Html) { 8 | document.write(editorData.Html); 9 | } 10 | 11 | if (datas.Js) { 12 | document.write(" 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /static/tpl/run2.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run3.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run4.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run5.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run6.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run7.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /static/tpl/run8.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 运行结果 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | --------------------------------------------------------------------------------