diff --git a/.npmignore b/.npmignore
index 8b76359..e3c81af 100644
--- a/.npmignore
+++ b/.npmignore
@@ -9,4 +9,4 @@ test
.babelrc
.travis.yml
karma.conf.js
-webpack.config.js
\ No newline at end of file
+build
\ No newline at end of file
diff --git a/webpack.config.js b/build/webpack.base.conf.js
similarity index 65%
rename from webpack.config.js
rename to build/webpack.base.conf.js
index e5a18b4..0d6cd0c 100644
--- a/webpack.config.js
+++ b/build/webpack.base.conf.js
@@ -1,14 +1,9 @@
var webpack = require('webpack');
var path = require('path');
+var projectRoot = path.resolve(__dirname, '../')
+
module.exports = {
- entry: './src/index.js',
- output: {
- path: path.resolve(__dirname, 'dist'),
- filename: 'vue-tree-list.min.js',
- library: 'VueTreeList',
- libraryTarget: 'umd'
- },
module: {
loaders: [
{
@@ -18,7 +13,7 @@ module.exports = {
{
test: /\.js$/,
loader: 'babel',
- include: [path.join(__dirname, 'src')],
+ include: [path.join(projectRoot, 'src'), path.join(projectRoot, 'dev')],
exclude: /node_modules/
},
{
@@ -40,12 +35,5 @@ module.exports = {
browsers: ['iOS >= 7', 'Android >= 4.1']
})
]
- },
- plugins: [
- new webpack.optimize.UglifyJsPlugin({
- compress: {
- warnings: false
- }
- })
- ]
+ }
}
diff --git a/build/webpack.build.conf.js b/build/webpack.build.conf.js
new file mode 100644
index 0000000..1a43175
--- /dev/null
+++ b/build/webpack.build.conf.js
@@ -0,0 +1,16 @@
+var webpack = require('webpack')
+var merge = require('webpack-merge')
+var baseConfig = require('./webpack.base.conf')
+var path = require('path')
+
+var projectRoot = path.resolve(__dirname, '../')
+
+module.exports = merge(baseConfig, {
+ entry: './src/index.js',
+ output: {
+ path: path.resolve(projectRoot, 'dist'),
+ filename: 'vue-tree-list.min.js',
+ library: 'VueTreeList',
+ libraryTarget: 'umd'
+ }
+})
diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js
new file mode 100644
index 0000000..612ad9d
--- /dev/null
+++ b/build/webpack.dev.conf.js
@@ -0,0 +1,28 @@
+var webpack = require('webpack')
+var merge = require('webpack-merge')
+var HtmlWebpackPlugin = require('html-webpack-plugin')
+var baseConfig = require('./webpack.base.conf')
+var path = require('path')
+
+var projectRoot = path.resolve(__dirname, '../')
+
+module.exports = merge(baseConfig, {
+ entry: './dev/index.js',
+ devServer: {
+ historyApiFallback: true,
+ noInfo: true,
+ overlay: true,
+ open: true,
+ hot: true,
+ inline: true
+ },
+ devtool: '#eval-source-map',
+ plugins: [
+ new HtmlWebpackPlugin({
+ template: './dev/index.html',
+ filename: 'index.html',
+ inject: true
+ }),
+ new webpack.HotModuleReplacementPlugin()
+ ]
+})
\ No newline at end of file
diff --git a/dev/App.vue b/dev/App.vue
new file mode 100644
index 0000000..2f4b9b2
--- /dev/null
+++ b/dev/App.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ {{newTree}}
+
+
+
+
diff --git a/dev/index.html b/dev/index.html
new file mode 100644
index 0000000..dbd5b88
--- /dev/null
+++ b/dev/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+ vue-date-range
+
+
+
+
+
\ No newline at end of file
diff --git a/dev/index.js b/dev/index.js
new file mode 100644
index 0000000..b56b2f8
--- /dev/null
+++ b/dev/index.js
@@ -0,0 +1,9 @@
+/**
+ * Created by ayou on 18/3/7.
+ */
+import Vue from 'vue'
+import App from './App.vue'
+
+new Vue({
+ render: h => h(App)
+}).$mount('#app')
\ No newline at end of file
diff --git a/dist/vue-tree-list.min.js b/dist/vue-tree-list.min.js
index 40e04e2..989d575 100644
--- a/dist/vue-tree-list.min.js
+++ b/dist/vue-tree-list.min.js
@@ -1 +1,1071 @@
-!function(A,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueTreeList=e():A.VueTreeList=e()}(this,function(){return function(A){function e(i){if(t[i])return t[i].exports;var M=t[i]={exports:{},id:i,loaded:!1};return A[i].call(M.exports,M,M.exports,e),M.loaded=!0,M.exports}var t={};return e.m=A,e.c=t,e.p="",e(0)}([function(A,e,t){"use strict";e.VueTreeList=t(1),e.TreeNode=t(13).TreeNode,e.Tree=t(13).Tree},function(A,e,t){t(2);var i=t(11)(t(12),t(15),"data-v-f6d9fc8a",null);A.exports=i.exports},function(A,e,t){var i=t(3);"string"==typeof i&&(i=[[A.id,i,""]]),i.locals&&(A.exports=i.locals);t(9)("c9ed4450",i,!0)},function(A,e,t){e=A.exports=t(4)(),e.push([A.id,"@font-face{font-family:icomoon;src:url("+t(5)+");src:url("+t(5)+'#iefix) format("embedded-opentype"),url('+t(6)+') format("truetype"),url('+t(7)+') format("woff"),url('+t(8)+'#icomoon) format("svg");font-weight:400;font-style:normal}.vue-tree-icon[data-v-f6d9fc8a]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.vue-tree-icon.item-icon[data-v-f6d9fc8a]{margin-right:4px}.vue-tree-icon.item-icon[data-v-f6d9fc8a]:hover{color:inherit}.vue-tree-icon[data-v-f6d9fc8a]:hover{color:blue}.icon-file[data-v-f6d9fc8a]:before{content:"\\E906"}.icon-folder[data-v-f6d9fc8a]:before{content:"\\E907"}.icon-caret-down[data-v-f6d9fc8a]:before{content:"\\E900"}.icon-caret-right[data-v-f6d9fc8a]:before{content:"\\E901"}.icon-edit[data-v-f6d9fc8a]:before{content:"\\E902"}.icon-folder-plus-e[data-v-f6d9fc8a]:before{content:"\\E903"}.icon-plus[data-v-f6d9fc8a]:before{content:"\\E904"}.icon-trash[data-v-f6d9fc8a]:before{content:"\\E905"}.border[data-v-f6d9fc8a]{height:5px}.border.up[data-v-f6d9fc8a]{margin-top:-5px}.border.bottom[data-v-f6d9fc8a],.border.up[data-v-f6d9fc8a]{background-color:transparent}.border.active[data-v-f6d9fc8a]{border-bottom:3px dashed blue}.tree-node[data-v-f6d9fc8a]{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;padding:5px 0 5px 1rem}.tree-node .input[data-v-f6d9fc8a]{border:none;max-width:150px;border-bottom:1px solid blue}.tree-node[data-v-f6d9fc8a]:hover{background-color:#f0f0f0}.tree-node.active[data-v-f6d9fc8a]{outline:2px dashed pink}.tree-node .caret[data-v-f6d9fc8a]{margin-left:-1rem}.tree-node .operation[data-v-f6d9fc8a]{margin-left:2rem;letter-spacing:1px}.item[data-v-f6d9fc8a]{cursor:pointer}.tree-margin[data-v-f6d9fc8a]{margin-left:2em}',""])},function(A,e){A.exports=function(){var A=[];return A.toString=function(){for(var A=[],e=0;et.parts.length&&(i.parts.length=t.parts.length)}else{for(var o=[],M=0;M0&&this.initNode(o,n.children),A.addChildren(o)}},e.Tree=t,e.TreeNode=M},function(A,e){"use strict";var t;e.addHandler=function(A,e,i){t=i,A.addEventListener?A.addEventListener(e,i,!1):A.attachEvent?A.attachEvent("on"+e,i):A["on"+e]=i},e.removeHandler=function(A,e){A.removeEventListener?A.removeEventListener(e,t,!1):A.detachEvent?A.detachEvent("on"+e,t):A["on"+e]=null}},function(A,e){A.exports={render:function(){var A=this,e=A.$createElement,t=A._self._c||e;return t("div",["root"!==A.model.name?t("div",[t("div",{staticClass:"border up",class:{active:A.isDragEnterUp},on:{drop:A.dropUp,dragenter:A.dragEnterUp,dragover:A.dragOverUp,dragleave:A.dragLeaveUp}}),A._v(" "),t("div",{staticClass:"tree-node",class:{active:A.isDragEnterNode},attrs:{id:A.model.id,draggable:!A.model.dragDisabled},on:{dragstart:A.dragStart,dragover:A.dragOver,dragenter:A.dragEnter,dragleave:A.dragLeave,drop:A.drop,dragend:A.dragEnd,mouseover:A.mouseOver,mouseout:A.mouseOut,click:function(e){e.stopPropagation(),A.click(e)}}},[A.model.children&&A.model.children.length>0?t("span",{staticClass:"caret icon is-small"},[t("i",{staticClass:"vue-tree-icon",class:A.caretClass,on:{click:function(e){e.preventDefault(),e.stopPropagation(),A.toggle(e)}}})]):A._e(),A._v(" "),A.model.isLeaf?t("span",[A._t("leafNodeIcon",[t("i",{staticClass:"vue-tree-icon item-icon icon-file"})])],2):t("span",[A._t("treeNodeIcon",[t("i",{staticClass:"vue-tree-icon item-icon icon-folder"})])],2),A._v(" "),A.editable?t("input",{ref:"nodeInput",staticClass:"vue-tree-input",attrs:{type:"text"},domProps:{value:A.model.name},on:{input:A.updateName,blur:A.setUnEditable}}):t("div",{staticClass:"node-content"},[A._v("\n "+A._s(A.model.name)+"\n ")]),A._v(" "),t("div",{directives:[{name:"show",rawName:"v-show",value:A.isHover,expression:"isHover"}],staticClass:"operation"},[A.model.isLeaf?A._e():t("span",{attrs:{title:"add tree node"},on:{click:function(e){e.stopPropagation(),e.preventDefault(),A.addChild(!1)}}},[A._t("addTreeNode",[t("i",{staticClass:"vue-tree-icon icon-folder-plus-e"})])],2),A._v(" "),A.model.isLeaf?A._e():t("span",{attrs:{title:"add tree node"},on:{click:function(e){e.stopPropagation(),e.preventDefault(),A.addChild(!0)}}},[A._t("addLeafNode",[t("i",{staticClass:"vue-tree-icon icon-plus"})])],2),A._v(" "),t("span",{attrs:{title:"edit"},on:{click:function(e){e.stopPropagation(),e.preventDefault(),A.setEditable(e)}}},[A._t("edit",[t("i",{staticClass:"vue-tree-icon icon-edit"})])],2),A._v(" "),t("span",{attrs:{title:"delete"},on:{click:function(e){e.stopPropagation(),e.preventDefault(),A.delNode(e)}}},[A._t("edit",[t("i",{staticClass:"vue-tree-icon icon-trash"})])],2)])]),A._v(" "),A.model.children&&A.model.children.length>0&&A.expanded?t("div",{staticClass:"border bottom",class:{active:A.isDragEnterBottom},on:{drop:A.dropBottom,dragenter:A.dragEnterBottom,dragover:A.dragOverBottom,dragleave:A.dragLeaveBottom}}):A._e()]):A._e(),A._v(" "),A.isFolder?t("div",{directives:[{name:"show",rawName:"v-show",value:A.expanded,expression:"expanded"}],class:{"tree-margin":"root"!==A.model.name}},A._l(A.model.children,function(e){return t("item",{key:e.id,attrs:{"default-tree-node-name":A.defaultTreeNodeName,"default-leaf-node-name":A.defaultLeafNodeName,model:e}})})):A._e()])},staticRenderFns:[]}}])});
\ No newline at end of file
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["VueTreeList"] = factory();
+ else
+ root["VueTreeList"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ exports.VueTreeList = __webpack_require__(1);
+ exports.TreeNode = __webpack_require__(13).TreeNode;
+ exports.Tree = __webpack_require__(13).Tree;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+ /* styles */
+ __webpack_require__(2)
+
+ var Component = __webpack_require__(11)(
+ /* script */
+ __webpack_require__(12),
+ /* template */
+ __webpack_require__(15),
+ /* scopeId */
+ "data-v-f6d9fc8a",
+ /* cssModules */
+ null
+ )
+ Component.options.__file = "/Users/ayou/Workspace/vue-tree/src/VueTreeList.vue"
+ if (Component.esModule && Object.keys(Component.esModule).some(function (key) {return key !== "default" && key !== "__esModule"})) {console.error("named exports are not supported in *.vue files.")}
+ if (Component.options.functional) {console.error("[vue-loader] VueTreeList.vue: functional components are not supported with templates, they should use render functions.")}
+
+ /* hot reload */
+ if (false) {(function () {
+ var hotAPI = require("vue-hot-reload-api")
+ hotAPI.install(require("vue"), false)
+ if (!hotAPI.compatible) return
+ module.hot.accept()
+ if (!module.hot.data) {
+ hotAPI.createRecord("data-v-f6d9fc8a", Component.options)
+ } else {
+ hotAPI.reload("data-v-f6d9fc8a", Component.options)
+ }
+ })()}
+
+ module.exports = Component.exports
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ // style-loader: Adds some css to the DOM by adding a