├── .babelrc
├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── 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
├── debug.log
├── docs
├── index.html
└── static
│ ├── css
│ ├── app.adbcc170c68406fdb405040ea9cb125f.css
│ ├── app.adbcc170c68406fdb405040ea9cb125f.css.map
│ └── reset.css
│ └── js
│ ├── app.4ec2f887e7545730f097.js
│ ├── app.4ec2f887e7545730f097.js.map
│ ├── manifest.724539638ec662d7c1bd.js
│ ├── manifest.724539638ec662d7c1bd.js.map
│ ├── vendor.ad0126597edaa568edb3.js
│ └── vendor.ad0126597edaa568edb3.js.map
├── index.html
├── index.js
├── package.json
├── src
├── App.vue
├── components
│ └── Hello.vue
├── main.js
└── vue-dragdrag
│ └── vue-dragdrag.js
├── static
├── .gitkeep
└── css
│ └── reset.css
└── vue-cli-README.md
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015", { "modules": false }],
4 | "stage-2"
5 | ],
6 | "plugins": ["transform-runtime"],
7 | "comments": false,
8 | "env": {
9 | "test": {
10 | "plugins": [ "istanbul" ]
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 lfyfly
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-dragdrag
2 | vue2 拖拽指令。 vue2 drag directive.
3 |
4 | ## [文档和实例](http://lfyfly.gitee.io/vue-dragdrag/docs)
5 | [document](http://lfyfly.gitee.io/vue-dragdrag/docs)
6 |
7 | [vue-dragdrag github](https://github.com/lfyfly/vue-dragdrag)
8 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | // https://github.com/shelljs/shelljs
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | var ora = require('ora')
7 | var path = require('path')
8 | var chalk = require('chalk')
9 | var shell = require('shelljs')
10 | var webpack = require('webpack')
11 | var config = require('../config')
12 | var webpackConfig = require('./webpack.prod.conf')
13 |
14 | var spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
18 | shell.rm('-rf', assetsPath)
19 | shell.mkdir('-p', assetsPath)
20 | shell.config.silent = true
21 | shell.cp('-R', 'static/*', assetsPath)
22 | shell.config.silent = false
23 |
24 | webpack(webpackConfig, function (err, stats) {
25 | spinner.stop()
26 | if (err) throw err
27 | process.stdout.write(stats.toString({
28 | colors: true,
29 | modules: false,
30 | children: false,
31 | chunks: false,
32 | chunkModules: false
33 | }) + '\n\n')
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | var chalk = require('chalk')
2 | var semver = require('semver')
3 | var packageConfig = require('../package.json')
4 |
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 | name: 'npm',
17 | currentVersion: exec('npm --version'),
18 | versionRequirement: packageConfig.engines.npm
19 | }
20 | ]
21 |
22 | module.exports = function () {
23 | var warnings = []
24 | for (var i = 0; i < versionRequirements.length; i++) {
25 | var mod = versionRequirements[i]
26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
27 | warnings.push(mod.name + ': ' +
28 | chalk.red(mod.currentVersion) + ' should be ' +
29 | chalk.green(mod.versionRequirement)
30 | )
31 | }
32 | }
33 |
34 | if (warnings.length) {
35 | console.log('')
36 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
37 | console.log()
38 | for (var i = 0; i < warnings.length; i++) {
39 | var warning = warnings[i]
40 | console.log(' ' + warning)
41 | }
42 | console.log()
43 | process.exit(1)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/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: () => {}
33 | })
34 | // force page reload when html-webpack-plugin template changes
35 | compiler.plugin('compilation', function (compilation) {
36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
37 | hotMiddleware.publish({ action: 'reload' })
38 | cb()
39 | })
40 | })
41 |
42 | // proxy api requests
43 | Object.keys(proxyTable).forEach(function (context) {
44 | var options = proxyTable[context]
45 | if (typeof options === 'string') {
46 | options = { target: options }
47 | }
48 | app.use(proxyMiddleware(options.filter || context, options))
49 | })
50 |
51 | // handle fallback for HTML5 history API
52 | app.use(require('connect-history-api-fallback')())
53 |
54 | // serve webpack bundle output
55 | app.use(devMiddleware)
56 |
57 | // enable hot-reload and state-preserving
58 | // compilation error display
59 | app.use(hotMiddleware)
60 |
61 | // serve pure static assets
62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
63 | app.use(staticPath, express.static('./static'))
64 |
65 | var uri = 'http://localhost:' + port
66 |
67 | devMiddleware.waitUntilValid(function () {
68 | console.log('> Listening at ' + uri + '\n')
69 | })
70 |
71 | module.exports = app.listen(port, function (err) {
72 | if (err) {
73 | console.log(err)
74 | return
75 | }
76 |
77 | // when env is testing, don't need open it
78 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
79 | opn(uri)
80 | }
81 | })
82 |
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var config = require('../config')
3 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
4 |
5 | exports.assetsPath = function (_path) {
6 | var assetsSubDirectory = process.env.NODE_ENV === 'production'
7 | ? config.build.assetsSubDirectory
8 | : config.dev.assetsSubDirectory
9 | return path.posix.join(assetsSubDirectory, _path)
10 | }
11 |
12 | exports.cssLoaders = function (options) {
13 | options = options || {}
14 | var isProduction = process.env.NODE_ENV === 'production'
15 | var cssLoader = 'css' + (isProduction ? '?minimize' : '')
16 |
17 | // generate loader string to be used with extract text plugin
18 | function generateLoaders (loader) {
19 | var loaders = [cssLoader]
20 | if (loader) loaders.push(loader)
21 | var sourceLoader = loaders.map(function (loader) {
22 | var extraParamChar
23 | if (/\?/.test(loader)) {
24 | loader = loader.replace(/\?/, '-loader?')
25 | extraParamChar = '&'
26 | } else {
27 | loader = loader + '-loader'
28 | extraParamChar = '?'
29 | }
30 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '')
31 | })
32 |
33 | // Extract CSS when that option is specified
34 | // (which is the case during production build)
35 | if (options.extract) {
36 | return ExtractTextPlugin.extract({
37 | use: sourceLoader,
38 | fallback: 'vue-style-loader'
39 | })
40 | } else {
41 | return ['vue-style-loader'].concat(sourceLoader)
42 | }
43 | }
44 |
45 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html
46 | return {
47 | css: generateLoaders(),
48 | postcss: generateLoaders(),
49 | less: generateLoaders('less'),
50 | sass: generateLoaders('sass?indentedSyntax'),
51 | scss: generateLoaders('sass'),
52 | stylus: generateLoaders('stylus'),
53 | styl: generateLoaders('stylus')
54 | }
55 | }
56 |
57 | // Generate loaders for standalone style files (outside of .vue)
58 | exports.styleLoaders = function (options) {
59 | var output = []
60 | var loaders = exports.cssLoaders(options)
61 | for (var extension in loaders) {
62 | var loader = loaders[extension]
63 | output.push({
64 | test: new RegExp('\\.' + extension + '$'),
65 | loader: loader
66 | })
67 | }
68 | return output
69 | }
70 |
--------------------------------------------------------------------------------
/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 | loaders: utils.cssLoaders({
7 | sourceMap: isProduction
8 | ? config.build.productionSourceMap
9 | : config.dev.cssSourceMap,
10 | extract: isProduction
11 | }),
12 | postcss: [
13 | require('autoprefixer')({
14 | browsers: ['last 2 versions']
15 | })
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/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 |
6 | function resolve (dir) {
7 | return path.join(__dirname, '..', dir)
8 | }
9 |
10 | module.exports = {
11 | entry: {
12 | app: './src/main.js'
13 | },
14 | output: {
15 | path: config.build.assetsRoot,
16 | filename: '[name].js',
17 | publicPath: process.env.NODE_ENV === 'production'
18 | ? config.build.assetsPublicPath
19 | : config.dev.assetsPublicPath
20 | },
21 | resolve: {
22 | extensions: ['.js', '.vue', '.json'],
23 | modules: [
24 | resolve('src'),
25 | resolve('node_modules')
26 | ],
27 | alias: {
28 | 'vue$': 'vue/dist/vue.common.js',
29 | 'src': resolve('src'),
30 | 'assets': resolve('src/assets'),
31 | 'components': resolve('src/components')
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 | query: {
50 | limit: 10000,
51 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
52 | }
53 | },
54 | {
55 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
56 | loader: 'url-loader',
57 | query: {
58 | limit: 10000,
59 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
60 | }
61 | }
62 | ]
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/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 |
9 | // add hot-reload related code to entry chunks
10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) {
11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
12 | })
13 |
14 | module.exports = merge(baseWebpackConfig, {
15 | module: {
16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
17 | },
18 | // cheap-module-eval-source-map is faster for development
19 | devtool: '#cheap-module-eval-source-map',
20 | plugins: [
21 | new webpack.DefinePlugin({
22 | 'process.env': config.dev.env
23 | }),
24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
25 | new webpack.HotModuleReplacementPlugin(),
26 | new webpack.NoEmitOnErrorsPlugin(),
27 | // https://github.com/ampedandwired/html-webpack-plugin
28 | new HtmlWebpackPlugin({
29 | filename: 'index.html',
30 | template: 'index.html',
31 | inject: true
32 | }),
33 | new FriendlyErrorsPlugin()
34 | ]
35 | })
36 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path')
2 | var utils = require('./utils')
3 | var webpack = require('webpack')
4 | var config = require('../config')
5 | var merge = require('webpack-merge')
6 | var baseWebpackConfig = require('./webpack.base.conf')
7 | var HtmlWebpackPlugin = require('html-webpack-plugin')
8 | var ExtractTextPlugin = require('extract-text-webpack-plugin')
9 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
10 |
11 | var env = config.build.env
12 |
13 | var webpackConfig = merge(baseWebpackConfig, {
14 | module: {
15 | rules: utils.styleLoaders({
16 | sourceMap: config.build.productionSourceMap,
17 | extract: true
18 | })
19 | },
20 | devtool: config.build.productionSourceMap ? '#source-map' : false,
21 | output: {
22 | path: config.build.assetsRoot,
23 | filename: utils.assetsPath('js/[name].[chunkhash].js'),
24 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
25 | },
26 | plugins: [
27 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
28 | new webpack.DefinePlugin({
29 | 'process.env': env
30 | }),
31 | new webpack.optimize.UglifyJsPlugin({
32 | compress: {
33 | warnings: false
34 | },
35 | sourceMap: true
36 | }),
37 | // extract css into its own file
38 | new ExtractTextPlugin({
39 | filename: utils.assetsPath('css/[name].[contenthash].css')
40 | }),
41 | // Compress extracted CSS. We are using this plugin so that possible
42 | // duplicated CSS from different components can be deduped.
43 | new OptimizeCSSPlugin(),
44 | // generate dist index.html with correct asset hash for caching.
45 | // you can customize output by editing /index.html
46 | // see https://github.com/ampedandwired/html-webpack-plugin
47 | new HtmlWebpackPlugin({
48 | filename: config.build.index,
49 | template: 'index.html',
50 | inject: true,
51 | minify: {
52 | removeComments: true,
53 | collapseWhitespace: true,
54 | removeAttributeQuotes: true
55 | // more options:
56 | // https://github.com/kangax/html-minifier#options-quick-reference
57 | },
58 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin
59 | chunksSortMode: 'dependency'
60 | }),
61 | // split vendor js into its own file
62 | new webpack.optimize.CommonsChunkPlugin({
63 | name: 'vendor',
64 | minChunks: function (module, count) {
65 | // any required modules inside node_modules are extracted to vendor
66 | return (
67 | module.resource &&
68 | /\.js$/.test(module.resource) &&
69 | module.resource.indexOf(
70 | path.join(__dirname, '../node_modules')
71 | ) === 0
72 | )
73 | }
74 | }),
75 | // extract webpack runtime and module manifest to its own file in order to
76 | // prevent vendor hash from being updated whenever app bundle is updated
77 | new webpack.optimize.CommonsChunkPlugin({
78 | name: 'manifest',
79 | chunks: ['vendor']
80 | })
81 | ]
82 | })
83 |
84 | if (config.build.productionGzip) {
85 | var CompressionWebpackPlugin = require('compression-webpack-plugin')
86 |
87 | webpackConfig.plugins.push(
88 | new CompressionWebpackPlugin({
89 | asset: '[path].gz[query]',
90 | algorithm: 'gzip',
91 | test: new RegExp(
92 | '\\.(' +
93 | config.build.productionGzipExtensions.join('|') +
94 | ')$'
95 | ),
96 | threshold: 10240,
97 | minRatio: 0.8
98 | })
99 | )
100 | }
101 |
102 | if (config.build.bundleAnalyzerReport) {
103 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
104 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
105 | }
106 |
107 | module.exports = webpackConfig
108 |
--------------------------------------------------------------------------------
/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, '../dist/index.html'),
8 | assetsRoot: path.resolve(__dirname, '../dist'),
9 | assetsSubDirectory: 'static',
10 | assetsPublicPath: './',
11 | productionSourceMap: true,
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 | dev: {
25 | env: require('./dev.env'),
26 | port: 8080,
27 | autoOpenBrowser: true,
28 | assetsSubDirectory: 'static',
29 | assetsPublicPath: '/',
30 | proxyTable: {},
31 | // CSS Sourcemaps off by default because relative paths are "buggy"
32 | // with this option, according to the CSS-Loader README
33 | // (https://github.com/webpack/css-loader#sourcemaps)
34 | // In our experience, they generally work as expected,
35 | // just be aware of this issue when enabling this option.
36 | cssSourceMap: false
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | NODE_ENV: '"production"'
3 | }
4 |
--------------------------------------------------------------------------------
/debug.log:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lfyfly/vue-dragdrag/62dd2d2d6867bd678b2a7cf457d17ba665c91ac9/debug.log
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
vue_origin
--------------------------------------------------------------------------------
/docs/static/css/app.adbcc170c68406fdb405040ea9cb125f.css:
--------------------------------------------------------------------------------
1 | #app{width:800px;margin:0 auto}#app .container{border:1px solid;margin:20px;height:400px;text-align:center}#app .test1{width:100px;height:100px;line-height:100px;border:1px solid red;text-align:center}#app .test2,#app .test3{width:160px;height:50px;border:1px solid blue;text-align:center;line-height:50px}#app .test3{border:1px solid green}#app .test4{font-size:12px;width:260px;height:260px;border:1px solid #ccc;text-align:center;line-height:50px;color:#fff}#app .test4 .test4-drag{width:100%;height:50px;line-height:50px;background:#000;opacity:.5}#app .test4 .test4-content{font-size:40px;line-height:210px;height:210px;text-align:center;color:#000;width:100%}#app .test5{background:#ccc;height:140px;width:350px;line-height:140px}#app .test5,#app .test6{text-align:center;opacity:.7}#app .test6{width:400px;height:50px;line-height:50px;background:#ff0}h1[data-v-044b7e34]{color:red}
--------------------------------------------------------------------------------
/docs/static/css/app.adbcc170c68406fdb405040ea9cb125f.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack:///src/App.vue","webpack:///webpack:///src/components/Hello.vue"],"names":[],"mappings":"AACA,KACE,YACA,aAAe,CAEjB,gBACI,iBACA,YACA,aACA,iBAAmB,CAEvB,YACI,YACA,aACA,kBACA,qBACA,iBAAmB,CAEvB,wBAEI,YACA,YACA,sBACA,kBACA,gBAAkB,CAEtB,YACI,sBAAwB,CAE5B,YACI,eACA,YACA,aACA,sBACA,kBACA,iBACA,UAAa,CAEjB,wBACM,WACA,YACA,iBACA,gBACA,UAAY,CAElB,2BACM,eACA,kBACA,aACA,kBACA,WACA,UAAY,CAElB,YACI,gBACA,aACA,YACA,iBAAmB,CAIvB,wBAHI,kBACA,UAAY,CASf,YANG,YACA,YACA,iBAEA,eAAmB,CCjEvB,oBACE,SAAW","file":"static/css/app.adbcc170c68406fdb405040ea9cb125f.css","sourcesContent":["\n#app {\n width: 800px;\n margin: 0 auto;\n}\n#app .container {\n border: 1px solid;\n margin: 20px;\n height: 400px;\n text-align: center;\n}\n#app .test1 {\n width: 100px;\n height: 100px;\n line-height: 100px;\n border: 1px solid red;\n text-align: center;\n}\n#app .test2,\n #app .test3 {\n width: 160px;\n height: 50px;\n border: 1px solid blue;\n text-align: center;\n line-height: 50px;\n}\n#app .test3 {\n border: 1px solid green;\n}\n#app .test4 {\n font-size: 12px;\n width: 260px;\n height: 260px;\n border: 1px solid #ccc;\n text-align: center;\n line-height: 50px;\n color: white;\n}\n#app .test4 .test4-drag {\n width: 100%;\n height: 50px;\n line-height: 50px;\n background: black;\n opacity: .5;\n}\n#app .test4 .test4-content {\n font-size: 40px;\n line-height: 210px;\n height: 210px;\n text-align: center;\n color: black;\n width: 100%;\n}\n#app .test5 {\n background: #ccc;\n height: 140px;\n width: 350px;\n line-height: 140px;\n text-align: center;\n opacity: .7;\n}\n#app .test6 {\n width: 400px;\n height: 50px;\n line-height: 50px;\n text-align: center;\n background: yellow;\n opacity: .7;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/App.vue","\nh1[data-v-044b7e34] {\n color: red;\n}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/components/Hello.vue"],"sourceRoot":""}
--------------------------------------------------------------------------------
/docs/static/css/reset.css:
--------------------------------------------------------------------------------
1 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td { margin:0; padding:0; }
2 |
3 | body { color:#555; font-size:14px; font-family: Verdana, Arial, Helvetica, sans-serif; }
4 |
5 | a { color:#555; text-decoration:none; }
6 |
7 | li{list-style:none;}
8 |
9 | .clearfix:after {content: "."; display: block; height:0; clear:both; visibility: hidden;}
10 | .clearfix { *zoom:1; }
--------------------------------------------------------------------------------
/docs/static/js/app.4ec2f887e7545730f097.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([0,2],[,function(t,e,a){"use strict";var r={};r.install=function(t){t.directive("drag",{inserted:function(t,e){t.style.cursor=e.value&&e.value.cursor?e.value.cursor:"default";var a=e.value&&e.value.moveElId?document.getElementById(e.value.moveElId):t;a.style.position="absolute","static"===getComputedStyle(a.parentNode,null).position&&(a.parentNode.style.position="relative");var r=function(r){if(e.modifiers.shaow){var s=a.cloneNode(!0);a.style.opacity="0.5",a.parentNode.appendChild(s)}var v,i;e.modifiers.dragY||(v=r.clientX-a.offsetLeft),e.modifiers.dragX||(i=r.clientY-a.offsetTop);var o=function(r){r.preventDefault();var s=r.clientX-v,o=r.clientY-i,d=e.value&&e.value.dragOutX?a.offsetWidth-e.value.dragOutX:0;if(e.value&&e.value.dragOutY)var n=a.offsetHeight-e.value.dragOutY,l=t.offsetHeight-e.value.dragOutY;else var n=0,l=0;if(s<0-d?s=0-d:s>a.parentNode.clientWidth-a.offsetWidth+d&&(s=a.parentNode.clientWidth-a.offsetWidth+d),o<0-l?o=0-l:o>a.parentNode.clientHeight-a.offsetHeight+n&&(o=a.parentNode.clientHeight-a.offsetHeight+n),a.style.left=s+"px",a.style.top=o+"px",e.value&&e.value.ondrag){if("function"!=typeof e.value.ondrag)throw"ondrag: should be a function";e.value.ondrag(r,{left:s,top:o})}};document.addEventListener("mousemove",o);var d=function t(){s&&(a.style.opacity="1",s.parentNode.removeChild(s)),document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",t)};document.addEventListener("mouseup",d)};t.addEventListener("mousedown",r)}})},e.a=r},function(t,e,a){a(7);var r=a(0)(a(4),a(10),null,null);t.exports=r.exports},,function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(8),s=a.n(r);e.default={name:"app",data:function(){return{arr:[1111,2222,4444,5555]}},methods:{drag:function(t,e){console.log(t,e)}},components:{Hello:s.a}}},function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"hello",data:function(){return{msg:"this is hello.vue"}}}},function(t,e){},function(t,e){},function(t,e,a){a(6);var r=a(0)(a(5),a(9),"data-v-044b7e34",null);t.exports=r.exports},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"hello"}},[a("h1",[t._v(t._s(t.msg))])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{attrs:{id:"app"}},[a("h1",{staticStyle:{"margin-bottom":"50px"}},[t._v("vue2-draggable文档(document)")]),t._v(" "),t._m(0),t._v(" "),a("hr"),t._v(" "),t._m(1),t._v(" "),a("hr"),t._v(" "),a("h2",[t._v("三、实例展示")]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("容器内自由拖动")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag"}],staticClass:"test1"},[t._v("v-drag")])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("ondrag事件")]),t._v(" "),a("h4",{staticStyle:{color:"green"}},[t._v("源码: binding.value.ondrag(event, { left: left, top: top })")]),t._v(" "),a("h4",{staticStyle:{color:"green"}},[t._v("drag方法: drag(event,coordinate){ console.log(event, coordinate.left, coordinate.top) }")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag",value:{ondrag:t.drag},expression:"{ondrag:drag}"}],staticClass:"test1",staticStyle:{width:"400px"}},[t._v('v-drag="{ondrag:drag}"')])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("只能在容器内水平拖动")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag.dragX",modifiers:{dragX:!0}}],staticClass:"test2"},[t._v(" v-drag.dragX")])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("只能在容器内垂直拖动")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag.dragY",modifiers:{dragY:!0}}],staticClass:"test3"},[t._v("v-drag.dragY")])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("指定拖拽时鼠标样式,其值与cursor属性值一样")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag",value:{cursor:"move"},expression:"{cursor:'move'}"}],staticClass:"test5"},[t._v("v-drag=\"{cursor:'move'}\"")])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("moveElId为实际移动的元素的Id,默认拖动元素为自身")]),t._v(" "),a("div",{staticClass:"test4",attrs:{id:"test4-move"}},[a("div",{directives:[{name:"drag",rawName:"v-drag",value:{moveElId:"test4-move"},expression:"{moveElId:'test4-move'}"}],staticClass:"test4-drag"},[t._v("v-drag=\"{ moveElId: 'test4-move' }\"")]),t._v(" "),a("div",{staticClass:"test4-content"},[t._v("\n CONTENT\n ")])]),t._v(" "),a("pre",{staticStyle:{"text-align":"left"}},[t._v('\n \n
\n
v-drag="{ moveElId: \'test4-move\' }"
\n
\n CONTENT\n
\n
\n
\n\n ')])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v(".shaow 修饰符,实现和window桌面图标拖动的效果")]),t._v(" "),a("div",{staticClass:"test4",staticStyle:{width:"300px"},attrs:{id:"test4-move2"}},[a("div",{directives:[{name:"drag",rawName:"v-drag.shaow",value:{moveElId:"test4-move2"},expression:"{moveElId:'test4-move2'}",modifiers:{shaow:!0}}],staticClass:"test4-drag"},[t._v("v-drag.shaow=\"{ moveElId: 'test4-move2' }\"")]),t._v(" "),a("div",{staticClass:"test4-content"},[t._v("\n CONTENT\n ")])])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("允许拖出容器之外,但是设置保留值")]),t._v(" "),t._m(2),t._v(" "),t._m(3),t._v(" "),a("h4",{staticStyle:{color:"red"}},[t._v("dragOutX,dragOutX的值必须为数字类型")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag",value:{dragOutX:15,dragOutY:15},expression:"{dragOutX:15,dragOutY:15}"}],staticClass:"test5"},[t._v('v-drag="{dragOutX:15,dragOutY:15}"')])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("组合使用")]),t._v(" "),a("div",{directives:[{name:"drag",rawName:"v-drag.dragX",value:{dragOutX:60},expression:"{dragOutX:60}",modifiers:{dragX:!0}}],staticClass:"test6"},[t._v('v-drag.dragX="{dragOutX:60}"')])]),t._v(" "),a("div",{staticClass:"container"},[a("h4",[t._v("向上拖动时,可拖动区域不会被拖出去,但是样式需要限制为,可拖动区域在顶部,且宽度与外层相等")]),t._v(" "),a("div",{staticClass:"test4",staticStyle:{width:"400px"},attrs:{id:"test4-move3"}},[a("div",{directives:[{name:"drag",rawName:"v-drag.shaow",value:{moveElId:"test4-move3",dragOutX:15,dragOutY:15},expression:"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }",modifiers:{shaow:!0}}],staticClass:"test4-drag",staticStyle:{width:"400px"}},[t._v("v-drag=\"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\"")]),t._v(" "),a("div",{staticClass:"test4-content"},[t._v("\n CONTENT\n ")])])])])},staticRenderFns:[function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h2",[t._v("一、注意!")]),t._v(" "),a("p",[t._v("1.拖动的元素,指令会自动加上position:absolute;")]),t._v(" "),a("p",[t._v("2.如果父元素没有使用position定位,那么指令会自动给父元素加上position:relative;")]),t._v(" "),a("p",[t._v("3.默认元素是无法拖出容器之外的")]),t._v(" "),a("p",{staticStyle:{color:"red"}},[a("strong",[t._v("4.约定:拖动元素的父级必须是容器元素")])]),t._v(" "),a("p",{staticStyle:{color:"red"}},[a("strong",[t._v("5.为了避免父子margin重叠造成高度计算误差,不要对拖拽元素使用margin属性。(注意:如果容器已经BFC化的话就无视这条,例如设置了overflow:hidden)")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("h2",[t._v("二、如何使用")]),t._v(" "),a("h3",[t._v("安装")]),t._v(" "),a("p",{staticStyle:{color:"blue"}},[a("strong",[t._v("npm install vue-dragdrag --save-dev ")])]),t._v(" "),a("p",{staticStyle:{color:"blue"}},[a("strong",[t._v("import vueDragDrag from 'vue-dragdrag' ")])]),t._v(" "),a("p",{staticStyle:{color:"blue"}},[a("strong",[t._v("Vue.use(vueDragDrag)")])]),t._v(" "),a("h3",[t._v("vue指令使用")]),t._v(" "),a("p",{staticStyle:{color:"green"}},[a("strong",[t._v("")])])])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("h4",[t._v("{ dragOutX:15,dragOutY:15 }代表有"),a("strong",{staticStyle:{color:"red"}},[t._v("上下和左右")]),t._v("有15px的保留距离")])},function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("h4",[t._v("如果值设置成 { dragOutX:15 }代表"),a("strong",{staticStyle:{color:"red"}},[t._v("只有左右")]),t._v("15px的保留距离")])}]}},,,function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(3),s=a.n(r),v=a(2),i=a.n(v),o=a(1);console.log(o.a),s.a.use(o.a),new s.a({el:"#app",template:"",components:{App:i.a}})}],[13]);
2 | //# sourceMappingURL=app.4ec2f887e7545730f097.js.map
--------------------------------------------------------------------------------
/docs/static/js/app.4ec2f887e7545730f097.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///static/js/app.4ec2f887e7545730f097.js","webpack:///./src/vue-dragdrag/vue-dragdrag.js","webpack:///./src/App.vue","webpack:///App.vue","webpack:///Hello.vue","webpack:///./src/components/Hello.vue","webpack:///./src/components/Hello.vue?c470","webpack:///./src/App.vue?6e06","webpack:///./src/main.js"],"names":["webpackJsonp","module","__webpack_exports__","__webpack_require__","vueDragDrag","install","Vue","directive","inserted","el","binding","style","cursor","value","moveEl","moveElId","document","getElementById","position","getComputedStyle","parentNode","mouseDownFn","e","modifiers","shaow","newNode","cloneNode","opacity","appendChild","disX","disY","dragY","clientX","offsetLeft","dragX","clientY","offsetTop","mouseMoveFn","preventDefault","left","top","limitWidth","dragOutX","offsetWidth","dragOutY","limitHeigth","offsetHeight","limitHeigthTop","clientWidth","clientHeight","ondrag","addEventListener","mouseUpFn","removeChild","removeEventListener","exports","Component","Object","defineProperty","__WEBPACK_IMPORTED_MODULE_0__components_Hello__","__WEBPACK_IMPORTED_MODULE_0__components_Hello___default","n","name","data","arr","methods","drag","obj","console","log","components","Hello","a","msg","render","_vm","this","_h","$createElement","_c","_self","attrs","id","_v","_s","staticRenderFns","staticStyle","margin-bottom","_m","staticClass","directives","rawName","color","expression","width","text-align","__WEBPACK_IMPORTED_MODULE_0_vue__","__WEBPACK_IMPORTED_MODULE_0_vue___default","__WEBPACK_IMPORTED_MODULE_1__App__","__WEBPACK_IMPORTED_MODULE_1__App___default","__WEBPACK_IMPORTED_MODULE_2__vue_dragdrag_vue_dragdrag_js__","use","template","App"],"mappings":"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","file":"static/js/app.4ec2f887e7545730f097.js","sourcesContent":["webpackJsonp([0,2],[\n/* 0 */,\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\nvar vueDragDrag = {};\n\nvueDragDrag.install = function (Vue) {\n Vue.directive('drag', {\n inserted: function inserted(el, binding) {\n el.style.cursor = binding.value && binding.value.cursor ? binding.value.cursor : 'default';\n\n var moveEl = binding.value && binding.value.moveElId ? document.getElementById(binding.value.moveElId) : el;\n\n moveEl.style.position = 'absolute';\n\n if (getComputedStyle(moveEl.parentNode, null).position === 'static') {\n moveEl.parentNode.style.position = 'relative';\n }\n\n var mouseDownFn = function mouseDownFn(e) {\n if (binding.modifiers.shaow) {\n var newNode = moveEl.cloneNode(true);\n moveEl.style.opacity = '0.5';\n moveEl.parentNode.appendChild(newNode);\n }\n\n\n var disX, disY;\n if (!binding.modifiers.dragY) disX = e.clientX - moveEl.offsetLeft;\n if (!binding.modifiers.dragX) disY = e.clientY - moveEl.offsetTop;\n var mouseMoveFn = function mouseMoveFn(e) {\n e.preventDefault();\n var left = e.clientX - disX;\n var top = e.clientY - disY;\n\n var limitWidth = binding.value && binding.value.dragOutX ? moveEl.offsetWidth - binding.value.dragOutX : 0;\n\n if (binding.value && binding.value.dragOutY) {\n var limitHeigth = moveEl.offsetHeight - binding.value.dragOutY;\n\n var limitHeigthTop = el.offsetHeight - binding.value.dragOutY;\n } else {\n var limitHeigth = 0;\n var limitHeigthTop = 0;\n }\n\n if (left < 0 - limitWidth) {\n left = 0 - limitWidth;\n } else if (left > moveEl.parentNode.clientWidth - moveEl.offsetWidth + limitWidth) {\n left = moveEl.parentNode.clientWidth - moveEl.offsetWidth + limitWidth;\n }\n\n if (top < 0 - limitHeigthTop) {\n top = 0 - limitHeigthTop;\n } else if (top > moveEl.parentNode.clientHeight - moveEl.offsetHeight + limitHeigth) {\n top = moveEl.parentNode.clientHeight - moveEl.offsetHeight + limitHeigth;\n }\n moveEl.style.left = left + 'px';\n moveEl.style.top = top + 'px';\n\n if (binding.value && binding.value.ondrag) {\n if (typeof binding.value.ondrag != 'function') throw 'ondrag: should be a function';\n binding.value.ondrag(e, { left: left, top: top });\n }\n };\n\n document.addEventListener('mousemove', mouseMoveFn);\n\n var mouseUpFn = function mouseUpFn() {\n if (newNode) {\n moveEl.style.opacity = '1';\n newNode.parentNode.removeChild(newNode);\n }\n document.removeEventListener('mousemove', mouseMoveFn);\n document.removeEventListener('mouseup', mouseUpFn);\n };\n\n document.addEventListener('mouseup', mouseUpFn);\n };\n\n el.addEventListener('mousedown', mouseDownFn);\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = vueDragDrag;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(7)\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(4),\n /* template */\n __webpack_require__(10),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 3 */,\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Hello__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Hello___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_Hello__);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = {\n name: 'app',\n data: function data() {\n return {\n arr: [1111, 2222, 4444, 5555]\n };\n },\n\n methods: {\n drag: function drag(e, obj) {\n console.log(e, obj);\n }\n },\n components: {\n Hello: __WEBPACK_IMPORTED_MODULE_0__components_Hello___default.a\n }\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = {\n name: 'hello',\n data: function data() {\n return {\n msg: 'this is hello.vue'\n };\n }\n};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(6)\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(5),\n /* template */\n __webpack_require__(9),\n /* scopeId */\n \"data-v-044b7e34\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"hello\"\n }\n }, [_c('h1', [_vm._v(_vm._s(_vm.msg))])])\n},staticRenderFns: []}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('h1', {\n staticStyle: {\n \"margin-bottom\": \"50px\"\n }\n }, [_vm._v(\"vue2-draggable文档(document)\")]), _vm._v(\" \"), _vm._m(0), _vm._v(\" \"), _c('hr'), _vm._v(\" \"), _vm._m(1), _vm._v(\" \"), _c('hr'), _vm._v(\" \"), _c('h2', [_vm._v(\"三、实例展示\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"容器内自由拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\"\n }],\n staticClass: \"test1\"\n }, [_vm._v(\"v-drag\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"ondrag事件\")]), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_vm._v(\"源码: binding.value.ondrag(event, { left: left, top: top })\")]), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_vm._v(\"drag方法: drag(event,coordinate){ console.log(event, coordinate.left, coordinate.top) }\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n ondrag: _vm.drag\n }),\n expression: \"{ondrag:drag}\"\n }],\n staticClass: \"test1\",\n staticStyle: {\n \"width\": \"400px\"\n }\n }, [_vm._v(\"v-drag=\\\"{ondrag:drag}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"只能在容器内水平拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragX\",\n modifiers: {\n \"dragX\": true\n }\n }],\n staticClass: \"test2\"\n }, [_vm._v(\" v-drag.dragX\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"只能在容器内垂直拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragY\",\n modifiers: {\n \"dragY\": true\n }\n }],\n staticClass: \"test3\"\n }, [_vm._v(\"v-drag.dragY\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"指定拖拽时鼠标样式,其值与cursor属性值一样\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n cursor: 'move'\n }),\n expression: \"{cursor:'move'}\"\n }],\n staticClass: \"test5\"\n }, [_vm._v(\"v-drag=\\\"{cursor:'move'}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"moveElId为实际移动的元素的Id,默认拖动元素为自身\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n attrs: {\n \"id\": \"test4-move\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n moveElId: 'test4-move'\n }),\n expression: \"{moveElId:'test4-move'}\"\n }],\n staticClass: \"test4-drag\"\n }, [_vm._v(\"v-drag=\\\"{ moveElId: 'test4-move' }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])]), _vm._v(\" \"), _c('pre', {\n staticStyle: {\n \"text-align\": \"left\"\n }\n }, [_vm._v(\"\\n \\n
\\n
v-drag=\\\"{ moveElId: 'test4-move' }\\\"
\\n
\\n CONTENT\\n
\\n
\\n
\\n\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\".shaow 修饰符,实现和window桌面图标拖动的效果\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n staticStyle: {\n \"width\": \"300px\"\n },\n attrs: {\n \"id\": \"test4-move2\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.shaow\",\n value: ({\n moveElId: 'test4-move2'\n }),\n expression: \"{moveElId:'test4-move2'}\",\n modifiers: {\n \"shaow\": true\n }\n }],\n staticClass: \"test4-drag\"\n }, [_vm._v(\"v-drag.shaow=\\\"{ moveElId: 'test4-move2' }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"允许拖出容器之外,但是设置保留值\")]), _vm._v(\" \"), _vm._m(2), _vm._v(\" \"), _vm._m(3), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"dragOutX,dragOutX的值必须为数字类型\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n dragOutX: 15,\n dragOutY: 15\n }),\n expression: \"{dragOutX:15,dragOutY:15}\"\n }],\n staticClass: \"test5\"\n }, [_vm._v(\"v-drag=\\\"{dragOutX:15,dragOutY:15}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"组合使用\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragX\",\n value: ({\n dragOutX: 60\n }),\n expression: \"{dragOutX:60}\",\n modifiers: {\n \"dragX\": true\n }\n }],\n staticClass: \"test6\"\n }, [_vm._v(\"v-drag.dragX=\\\"{dragOutX:60}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"向上拖动时,可拖动区域不会被拖出去,但是样式需要限制为,可拖动区域在顶部,且宽度与外层相等\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n staticStyle: {\n \"width\": \"400px\"\n },\n attrs: {\n \"id\": \"test4-move3\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.shaow\",\n value: ({\n moveElId: 'test4-move3',\n dragOutX: 15,\n dragOutY: 15\n }),\n expression: \"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\",\n modifiers: {\n \"shaow\": true\n }\n }],\n staticClass: \"test4-drag\",\n staticStyle: {\n \"width\": \"400px\"\n }\n }, [_vm._v(\"v-drag=\\\"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])])])])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('h2', [_vm._v(\"一、注意!\")]), _vm._v(\" \"), _c('p', [_vm._v(\"1.拖动的元素,指令会自动加上position:absolute;\")]), _vm._v(\" \"), _c('p', [_vm._v(\"2.如果父元素没有使用position定位,那么指令会自动给父元素加上position:relative;\")]), _vm._v(\" \"), _c('p', [_vm._v(\"3.默认元素是无法拖出容器之外的\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_c('strong', [_vm._v(\"4.约定:拖动元素的父级必须是容器元素\")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_c('strong', [_vm._v(\"5.为了避免父子margin重叠造成高度计算误差,不要对拖拽元素使用margin属性。(注意:如果容器已经BFC化的话就无视这条,例如设置了overflow:hidden)\")])])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('h2', [_vm._v(\"二、如何使用\")]), _vm._v(\" \"), _c('h3', [_vm._v(\"安装\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"npm install vue-dragdrag --save-dev \")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"import vueDragDrag from 'vue-dragdrag' \")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"Vue.use(vueDragDrag)\")])]), _vm._v(\" \"), _c('h3', [_vm._v(\"vue指令使用\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_c('strong', [_vm._v(\"\")])])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('h4', [_vm._v(\"{ dragOutX:15,dragOutY:15 }代表有\"), _c('strong', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"上下和左右\")]), _vm._v(\"有15px的保留距离\")])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('h4', [_vm._v(\"如果值设置成 { dragOutX:15 }代表\"), _c('strong', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"只有左右\")]), _vm._v(\"15px的保留距离\")])\n}]}\n\n/***/ }),\n/* 11 */,\n/* 12 */,\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__App___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__App__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__vue_dragdrag_vue_dragdrag_js__ = __webpack_require__(1);\n\n\n\n\n\nconsole.log(__WEBPACK_IMPORTED_MODULE_2__vue_dragdrag_vue_dragdrag_js__[\"a\" /* default */]);\n__WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_2__vue_dragdrag_vue_dragdrag_js__[\"a\" /* default */]);\n\nnew __WEBPACK_IMPORTED_MODULE_0_vue___default.a({\n el: '#app',\n template: '',\n components: { App: __WEBPACK_IMPORTED_MODULE_1__App___default.a }\n});\n\n/***/ })\n],[13]);\n\n\n// WEBPACK FOOTER //\n// static/js/app.4ec2f887e7545730f097.js","\n// (function () {\nvar vueDragDrag = {}\n\nvueDragDrag.install = function (Vue) {\n Vue.directive('drag', {\n inserted: function (el, binding) {\n // 拖拽时的手势\n el.style.cursor = binding.value && binding.value.cursor ? binding.value.cursor : 'default'\n\n // 如果拖动元素非元素本身(el),传入id\n var moveEl = binding.value && binding.value.moveElId ? document.getElementById(binding.value.moveElId) : el\n // 为拖动元素添加绝对定位\n moveEl.style.position = 'absolute'\n\n // 如果容器为设置position属性,默认为 position = 'relative'\n if (getComputedStyle(moveEl.parentNode, null).position === 'static') {\n moveEl.parentNode.style.position = 'relative'\n }\n\n var mouseDownFn = function (e) {\n\n //.shaow---------- 复制节点,并且插入容器中原来位置\n if (binding.modifiers.shaow) {\n var newNode = moveEl.cloneNode(true)\n moveEl.style.opacity = '0.5'\n moveEl.parentNode.appendChild(newNode)\n }\n //----------\n\n\n var disX, disY\n if (!binding.modifiers.dragY) disX = e.clientX - moveEl.offsetLeft\n if (!binding.modifiers.dragX) disY = e.clientY - moveEl.offsetTop\n var mouseMoveFn = function (e) {\n e.preventDefault()\n var left = e.clientX - disX\n var top = e.clientY - disY\n\n // 可以拖出去的元素的剩余宽度\n // dragOutX\n var limitWidth = binding.value && binding.value.dragOutX ? moveEl.offsetWidth - binding.value.dragOutX : 0\n // dragOutY\n if (binding.value && binding.value.dragOutY) {\n var limitHeigth = moveEl.offsetHeight - binding.value.dragOutY\n // 防止可拖拽区域被拖出容器区域\n // 拖拽元素在顶部\n var limitHeigthTop = el.offsetHeight - binding.value.dragOutY\n } else {\n var limitHeigth = 0\n var limitHeigthTop = 0\n }\n\n\n if (left < 0 - limitWidth) {\n left = 0 - limitWidth\n }\n else if (left > moveEl.parentNode.clientWidth - moveEl.offsetWidth + limitWidth) {\n left = moveEl.parentNode.clientWidth - moveEl.offsetWidth + limitWidth\n }\n\n if (top < 0 - limitHeigthTop) {\n top = 0 - limitHeigthTop\n }\n else if (top > moveEl.parentNode.clientHeight - moveEl.offsetHeight + limitHeigth) {\n top = moveEl.parentNode.clientHeight - moveEl.offsetHeight + limitHeigth;\n }\n moveEl.style.left = left + 'px'\n moveEl.style.top = top + 'px'\n\n // 拖拽事件\n if (binding.value && binding.value.ondrag) {\n if (typeof binding.value.ondrag != 'function') throw 'ondrag: should be a function'\n binding.value.ondrag(e, { left: left, top: top })\n }\n\n }\n // mousemove\n document.addEventListener('mousemove', mouseMoveFn)\n\n var mouseUpFn = function () {\n\n // 移除临时shaow节点\n if (newNode) {\n moveEl.style.opacity = '1'\n newNode.parentNode.removeChild(newNode)\n }\n document.removeEventListener('mousemove', mouseMoveFn)\n document.removeEventListener('mouseup', mouseUpFn)\n }\n // mouseup\n document.addEventListener('mouseup', mouseUpFn)\n }\n\n // mousedown\n el.addEventListener('mousedown', mouseDownFn)\n\n }\n })\n}\n\n// 输出\n// if (typeof exports == \"object\") {\n// module.exports = vueDragDrag;\n// } else if (typeof define == \"function\" && define.amd) {\n// define([], function () {\n// return vueDragDrag\n// })\n// } else if (window.Vue) {\n// window.vueDragDrag = vueDragDrag;\n// Vue.use(vueDragDrag);\n// }\n// })();\nexport default vueDragDrag\n\n\n\n// WEBPACK FOOTER //\n// ./src/vue-dragdrag/vue-dragdrag.js","\n/* styles */\nrequire(\"!!./../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?minimize&sourceMap!./../node_modules/vue-loader/lib/style-rewriter?{\\\"id\\\":\\\"data-v-b87f08b8\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!sass-loader?sourceMap!./../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n\nvar Component = require(\"!./../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!./../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"),\n /* template */\n require(\"!!./../node_modules/vue-loader/lib/template-compiler?{\\\"id\\\":\\\"data-v-b87f08b8\\\"}!./../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = 2\n// module chunks = 0","\n \n
vue2-draggable文档(document)
\n
\n
一、注意!
\n
1.拖动的元素,指令会自动加上position:absolute;
\n
2.如果父元素没有使用position定位,那么指令会自动给父元素加上position:relative;
\n
3.默认元素是无法拖出容器之外的
\n
4.约定:拖动元素的父级必须是容器元素
\n
5.为了避免父子margin重叠造成高度计算误差,不要对拖拽元素使用margin属性。(注意:如果容器已经BFC化的话就无视这条,例如设置了overflow:hidden)
\n
\n
\n
\n
二、如何使用
\n
安装
\n
npm install vue-dragdrag --save-dev
\n
import vueDragDrag from 'vue-dragdrag'
\n
Vue.use(vueDragDrag)
\n
vue指令使用
\n
<div v-drag></div>
\n\n
\n
\n
三、实例展示
\n
\n\n
\n
ondrag事件
\n
源码: binding.value.ondrag(event, { left: left, top: top })
\n
drag方法: drag(event,coordinate){ console.log(event, coordinate.left, coordinate.top) }
\n
v-drag=\"{ondrag:drag}\"
\n
\n\n
\n
只能在容器内水平拖动
\n\n
v-drag.dragX
\n
\n
\n
只能在容器内垂直拖动
\n\n
v-drag.dragY
\n\n
\n
\n
指定拖拽时鼠标样式,其值与cursor属性值一样
\n\n
v-drag=\"{cursor:'move'}\"
\n\n
\n
\n
moveElId为实际移动的元素的Id,默认拖动元素为自身
\n
\n
v-drag=\"{ moveElId: 'test4-move' }\"
\n
\n CONTENT\n
\n
\n
\n <div class="container">\n <div class="test4"\n id="test4-move">\n <div class="test4-drag"\n v-drag="{moveElId:'test4-move'}">v-drag="{ moveElId: 'test4-move' }"</div>\n <div class="test4-content">\n CONTENT\n </div>\n </div>\n </div>\n\n
\n
\n
\n
.shaow 修饰符,实现和window桌面图标拖动的效果
\n
\n
v-drag.shaow=\"{ moveElId: 'test4-move2' }\"
\n
\n CONTENT\n
\n
\n\n
\n
\n
允许拖出容器之外,但是设置保留值
\n
{ dragOutX:15,dragOutY:15 }代表有上下和左右有15px的保留距离
\n
如果值设置成 { dragOutX:15 }代表只有左右15px的保留距离
\n
dragOutX,dragOutX的值必须为数字类型
\n\n
v-drag=\"{dragOutX:15,dragOutY:15}\"
\n
\n
\n
组合使用
\n
v-drag.dragX=\"{dragOutX:60}\"
\n
\n\n\n
\n
向上拖动时,可拖动区域不会被拖出去,但是样式需要限制为,可拖动区域在顶部,且宽度与外层相等
\n
\n
v-drag=\"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\"
\n
\n CONTENT\n
\n
\n\n
\n\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?644e5b19","\ndiv#hello\n h1 {{msg}}\n\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Hello.vue?5554c5fc","\n/* styles */\nrequire(\"!!./../../node_modules/extract-text-webpack-plugin/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?minimize&sourceMap!./../../node_modules/vue-loader/lib/style-rewriter?{\\\"id\\\":\\\"data-v-044b7e34\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":true}!sass-loader?sourceMap!./../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Hello.vue\")\n\nvar Component = require(\"!./../../node_modules/vue-loader/lib/component-normalizer\")(\n /* script */\n require(\"!!babel-loader!./../../node_modules/vue-loader/lib/selector?type=script&index=0!./Hello.vue\"),\n /* template */\n require(\"!!./../../node_modules/vue-loader/lib/template-compiler?{\\\"id\\\":\\\"data-v-044b7e34\\\"}!./../../node_modules/vue-loader/lib/template-loader?raw&engine=pug!./../../node_modules/vue-loader/lib/selector?type=template&index=0!./Hello.vue\"),\n /* scopeId */\n \"data-v-044b7e34\",\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Hello.vue\n// module id = 8\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"hello\"\n }\n }, [_c('h1', [_vm._v(_vm._s(_vm.msg))])])\n},staticRenderFns: []}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?{\"id\":\"data-v-044b7e34\"}!./~/vue-loader/lib/template-loader.js?raw&engine=pug!./~/vue-loader/lib/selector.js?type=template&index=0!./src/components/Hello.vue\n// module id = 9\n// module chunks = 0","module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n attrs: {\n \"id\": \"app\"\n }\n }, [_c('h1', {\n staticStyle: {\n \"margin-bottom\": \"50px\"\n }\n }, [_vm._v(\"vue2-draggable文档(document)\")]), _vm._v(\" \"), _vm._m(0), _vm._v(\" \"), _c('hr'), _vm._v(\" \"), _vm._m(1), _vm._v(\" \"), _c('hr'), _vm._v(\" \"), _c('h2', [_vm._v(\"三、实例展示\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"容器内自由拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\"\n }],\n staticClass: \"test1\"\n }, [_vm._v(\"v-drag\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"ondrag事件\")]), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_vm._v(\"源码: binding.value.ondrag(event, { left: left, top: top })\")]), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_vm._v(\"drag方法: drag(event,coordinate){ console.log(event, coordinate.left, coordinate.top) }\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n ondrag: _vm.drag\n }),\n expression: \"{ondrag:drag}\"\n }],\n staticClass: \"test1\",\n staticStyle: {\n \"width\": \"400px\"\n }\n }, [_vm._v(\"v-drag=\\\"{ondrag:drag}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"只能在容器内水平拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragX\",\n modifiers: {\n \"dragX\": true\n }\n }],\n staticClass: \"test2\"\n }, [_vm._v(\" v-drag.dragX\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"只能在容器内垂直拖动\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragY\",\n modifiers: {\n \"dragY\": true\n }\n }],\n staticClass: \"test3\"\n }, [_vm._v(\"v-drag.dragY\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"指定拖拽时鼠标样式,其值与cursor属性值一样\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n cursor: 'move'\n }),\n expression: \"{cursor:'move'}\"\n }],\n staticClass: \"test5\"\n }, [_vm._v(\"v-drag=\\\"{cursor:'move'}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"moveElId为实际移动的元素的Id,默认拖动元素为自身\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n attrs: {\n \"id\": \"test4-move\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n moveElId: 'test4-move'\n }),\n expression: \"{moveElId:'test4-move'}\"\n }],\n staticClass: \"test4-drag\"\n }, [_vm._v(\"v-drag=\\\"{ moveElId: 'test4-move' }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])]), _vm._v(\" \"), _c('pre', {\n staticStyle: {\n \"text-align\": \"left\"\n }\n }, [_vm._v(\"\\n \\n
\\n
v-drag=\\\"{ moveElId: 'test4-move' }\\\"
\\n
\\n CONTENT\\n
\\n
\\n
\\n\\n \")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\".shaow 修饰符,实现和window桌面图标拖动的效果\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n staticStyle: {\n \"width\": \"300px\"\n },\n attrs: {\n \"id\": \"test4-move2\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.shaow\",\n value: ({\n moveElId: 'test4-move2'\n }),\n expression: \"{moveElId:'test4-move2'}\",\n modifiers: {\n \"shaow\": true\n }\n }],\n staticClass: \"test4-drag\"\n }, [_vm._v(\"v-drag.shaow=\\\"{ moveElId: 'test4-move2' }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"允许拖出容器之外,但是设置保留值\")]), _vm._v(\" \"), _vm._m(2), _vm._v(\" \"), _vm._m(3), _vm._v(\" \"), _c('h4', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"dragOutX,dragOutX的值必须为数字类型\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag\",\n value: ({\n dragOutX: 15,\n dragOutY: 15\n }),\n expression: \"{dragOutX:15,dragOutY:15}\"\n }],\n staticClass: \"test5\"\n }, [_vm._v(\"v-drag=\\\"{dragOutX:15,dragOutY:15}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"组合使用\")]), _vm._v(\" \"), _c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.dragX\",\n value: ({\n dragOutX: 60\n }),\n expression: \"{dragOutX:60}\",\n modifiers: {\n \"dragX\": true\n }\n }],\n staticClass: \"test6\"\n }, [_vm._v(\"v-drag.dragX=\\\"{dragOutX:60}\\\"\")])]), _vm._v(\" \"), _c('div', {\n staticClass: \"container\"\n }, [_c('h4', [_vm._v(\"向上拖动时,可拖动区域不会被拖出去,但是样式需要限制为,可拖动区域在顶部,且宽度与外层相等\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4\",\n staticStyle: {\n \"width\": \"400px\"\n },\n attrs: {\n \"id\": \"test4-move3\"\n }\n }, [_c('div', {\n directives: [{\n name: \"drag\",\n rawName: \"v-drag.shaow\",\n value: ({\n moveElId: 'test4-move3',\n dragOutX: 15,\n dragOutY: 15\n }),\n expression: \"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\",\n modifiers: {\n \"shaow\": true\n }\n }],\n staticClass: \"test4-drag\",\n staticStyle: {\n \"width\": \"400px\"\n }\n }, [_vm._v(\"v-drag=\\\"{ moveElId: 'test4-move3',dragOutX:15,dragOutY:15 }\\\"\")]), _vm._v(\" \"), _c('div', {\n staticClass: \"test4-content\"\n }, [_vm._v(\"\\n CONTENT\\n \")])])])])\n},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('h2', [_vm._v(\"一、注意!\")]), _vm._v(\" \"), _c('p', [_vm._v(\"1.拖动的元素,指令会自动加上position:absolute;\")]), _vm._v(\" \"), _c('p', [_vm._v(\"2.如果父元素没有使用position定位,那么指令会自动给父元素加上position:relative;\")]), _vm._v(\" \"), _c('p', [_vm._v(\"3.默认元素是无法拖出容器之外的\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_c('strong', [_vm._v(\"4.约定:拖动元素的父级必须是容器元素\")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_c('strong', [_vm._v(\"5.为了避免父子margin重叠造成高度计算误差,不要对拖拽元素使用margin属性。(注意:如果容器已经BFC化的话就无视这条,例如设置了overflow:hidden)\")])])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [_c('h2', [_vm._v(\"二、如何使用\")]), _vm._v(\" \"), _c('h3', [_vm._v(\"安装\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"npm install vue-dragdrag --save-dev \")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"import vueDragDrag from 'vue-dragdrag' \")])]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"blue\"\n }\n }, [_c('strong', [_vm._v(\"Vue.use(vueDragDrag)\")])]), _vm._v(\" \"), _c('h3', [_vm._v(\"vue指令使用\")]), _vm._v(\" \"), _c('p', {\n staticStyle: {\n \"color\": \"green\"\n }\n }, [_c('strong', [_vm._v(\"\")])])])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('h4', [_vm._v(\"{ dragOutX:15,dragOutY:15 }代表有\"), _c('strong', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"上下和左右\")]), _vm._v(\"有15px的保留距离\")])\n},function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('h4', [_vm._v(\"如果值设置成 { dragOutX:15 }代表\"), _c('strong', {\n staticStyle: {\n \"color\": \"red\"\n }\n }, [_vm._v(\"只有左右\")]), _vm._v(\"15px的保留距离\")])\n}]}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/vue-loader/lib/template-compiler.js?{\"id\":\"data-v-b87f08b8\"}!./~/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = 10\n// module chunks = 0","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\n\nimport vueDragDrag from './vue-dragdrag/vue-dragdrag.js'\nconsole.log(vueDragDrag)\nVue.use(vueDragDrag)\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n template: '',\n components: { App }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}
--------------------------------------------------------------------------------
/docs/static/js/manifest.724539638ec662d7c1bd.js:
--------------------------------------------------------------------------------
1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,f,s=0,l=[];s-1)return e.splice(n,1)}}function a(e,t){return ai.call(e,t)}function s(e){return"string"==typeof e||"number"==typeof e}function c(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function u(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function l(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function f(e,t){for(var n in t)e[n]=t[n];return e}function p(e){return null!==e&&"object"==typeof e}function d(e){return pi.call(e)===di}function v(e){for(var t={},n=0;n1?l(n):n;for(var r=l(arguments,1),i=0,o=n.length;i=0&&Qi[n].id>e.id;)n--;Qi.splice(Math.max(n,no)+1,0,e)}else Qi.push(e);eo||(eo=!0,Si(Ae))}}function Se(e){oo.clear(),Te(e,oo)}function Te(e,t){var n,r,i=Array.isArray(e);if((i||p(e))&&Object.isExtensible(e)){if(e.__ob__){var o=e.__ob__.dep.id;if(t.has(o))return;t.add(o)}if(i)for(n=e.length;n--;)Te(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)Te(e[r[n]],t)}}function Ee(e){e._watchers=[];var t=e.$options;t.props&&je(e,t.props),t.methods&&Le(e,t.methods),t.data?Ie(e):O(e._data={},!0),t.computed&&Ne(e,t.computed),t.watch&&De(e,t.watch)}function je(e,t){var n=e.$options.propsData||{},r=e.$options._propKeys=Object.keys(t),i=!e.$parent;Pi.shouldConvert=i;for(var o=function(i){var o=r[i];S(e,o,U(o,t,n,e))},a=0;a-1:e.test(t)}function Ge(e,t){for(var n in e){var r=e[n];if(r){var i=We(r.componentOptions);i&&!t(i)&&(Ye(r),e[n]=null)}}}function Ye(e){e&&(e.componentInstance._inactive||xe(e.componentInstance,"deactivated"),e.componentInstance.$destroy())}function Qe(e){var t={};t.get=function(){return mi},Object.defineProperty(e,"config",t),e.util=Bi,e.set=T,e.delete=E,e.nextTick=Si,e.options=Object.create(null),mi._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,f(e.options.components,lo),Ve(e),Je(e),qe(e),Ke(e)}function Xe(e){for(var t=e.data,n=e,r=e;r.componentInstance;)r=r.componentInstance._vnode,r.data&&(t=et(r.data,t));for(;n=n.parent;)n.data&&(t=et(t,n.data));return tt(t)}function et(e,t){return{staticClass:nt(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function tt(e){var t=e.class,n=e.staticClass;return n||t?nt(n,rt(t)):""}function nt(e,t){return e?t?e+" "+t:e:t||""}function rt(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,i=e.length;r-1?Oo[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Oo[e]=/HTMLUnknownElement/.test(t.toString())}function at(e){if("string"==typeof e){if(e=document.querySelector(e),!e)return document.createElement("div")}return e}function st(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&"multiple"in t.data.attrs&&n.setAttribute("multiple","multiple"),n)}function ct(e,t){return document.createElementNS(wo[e],t)}function ut(e){return document.createTextNode(e)}function lt(e){return document.createComment(e)}function ft(e,t,n){e.insertBefore(t,n)}function pt(e,t){e.removeChild(t)}function dt(e,t){e.appendChild(t)}function vt(e){return e.parentNode}function ht(e){return e.nextSibling}function mt(e){return e.tagName}function gt(e,t){e.textContent=t}function yt(e,t,n){e.setAttribute(t,n)}function _t(e,t){var n=e.data.ref;if(n){var r=e.context,i=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?o(a[n],i):a[n]===i&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(i)<0?a[n].push(i):a[n]=[i]:a[n]=i}}function bt(e){return null==e}function $t(e){return null!=e}function wt(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function Ct(e,t,n){var r,i,o={};for(r=t;r<=n;++r)i=e[r].key,$t(i)&&(o[i]=r);return o}function xt(e){function t(e){return new Hi(O.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0===--n.listeners&&r(e)}return n.listeners=t,n}function r(e){var t=O.parentNode(e);t&&O.removeChild(t,e)}function o(e,t,n,r,i){if(e.isRootInsert=!i,!a(e,t,n,r)){var o=e.data,s=e.children,c=e.tag;$t(c)?(e.elm=e.ns?O.createElementNS(e.ns,c):O.createElement(c,e),v(e),f(e,s,t),$t(o)&&d(e,t),l(n,e.elm,r)):e.isComment?(e.elm=O.createComment(e.text),l(n,e.elm,r)):(e.elm=O.createTextNode(e.text),l(n,e.elm,r))}}function a(e,t,n,r){var i=e.data;if($t(i)){var o=$t(e.componentInstance)&&i.keepAlive;if($t(i=i.hook)&&$t(i=i.init)&&i(e,!1,n,r),$t(e.componentInstance))return c(e,t),o&&u(e,t,n,r),!0}}function c(e,t){e.data.pendingInsert&&t.push.apply(t,e.data.pendingInsert),e.elm=e.componentInstance.$el,p(e)?(d(e,t),v(e)):(_t(e),t.push(e))}function u(e,t,n,r){for(var i,o=e;o.componentInstance;)if(o=o.componentInstance._vnode,$t(i=o.data)&&$t(i=i.transition)){for(i=0;ip?(u=bt(n[m+1])?null:n[m+1].elm,h(e,u,n,f,m,r)):f>m&&g(e,t,l,p)}function b(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.componentInstance=e.componentInstance);var i,o=t.data,a=$t(o);a&&$t(i=o.hook)&&$t(i=i.prepatch)&&i(e,t);var s=t.elm=e.elm,c=e.children,u=t.children;if(a&&p(t)){for(i=0;i-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+e.getAttribute("class")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Jt(e,t){if(t&&t.trim())if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+e.getAttribute("class")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function qt(e){Xo(function(){Xo(e)})}function Kt(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),Vt(e,t)}function Wt(e,t){e._transitionClasses&&o(e._transitionClasses,t),Jt(e,t)}function Zt(e,t,n){var r=Gt(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Ko?Go:Qo,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=Ko,l=a,f=o.length):t===Wo?u>0&&(n=Wo,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?Ko:Wo:null,f=n?n===Ko?o.length:c.length:0);var p=n===Ko&&ea.test(r[Zo+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function Yt(e,t){for(;e.length1,I=n._enterCb=nn(function(){E&&(Wt(n,k),Wt(n,x)),I.cancelled?(E&&Wt(n,C),T&&T(n)):S&&S(n),n._enterCb=null});e.data.show||ie(e.data.hook||(e.data.hook={}),"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),O&&O(n,I)},"transition-insert"),A&&A(n),E&&(Kt(n,C),Kt(n,x),qt(function(){Kt(n,k),Wt(n,C),I.cancelled||j||Zt(n,o,I)})),e.data.show&&(t&&t(),O&&O(n,I)),E||j||I()}}}function en(e,t){function n(){g.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),l&&l(r),h&&(Kt(r,s),Kt(r,u),qt(function(){Kt(r,c),Wt(r,s),g.cancelled||m||Zt(r,a,g)})),f&&f(r,g),h||m||g())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var i=tn(e.data.transition);if(!i)return t();if(!r._leaveCb&&1===r.nodeType){var o=i.css,a=i.type,s=i.leaveClass,c=i.leaveToClass,u=i.leaveActiveClass,l=i.beforeLeave,f=i.leave,p=i.afterLeave,d=i.leaveCancelled,v=i.delayLeave,h=o!==!1&&!wi,m=f&&(f._length||f.length)>1,g=r._leaveCb=nn(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),h&&(Wt(r,c),Wt(r,u)),g.cancelled?(h&&Wt(r,s),d&&d(r)):(t(),p&&p(r)),r._leaveCb=null});v?v(n):n()}}function tn(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&f(t,ta(e.name||"v")),f(t,e),t}return"string"==typeof e?ta(e):void 0}}function nn(e){var t=!1;return function(){t||(t=!0,e())}}function rn(e,t){t.data.show||Xt(t)}function on(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s-1,a.selected!==o&&(a.selected=o);else if(g(sn(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function an(e,t){for(var n=0,r=t.length;n',n.innerHTML.indexOf(t)>0}function $n(e){return va=va||document.createElement("div"),va.innerHTML=e,va.textContent}function wn(e,t){return t&&(e=e.replace(ss,"\n")),e.replace(os,"<").replace(as,">").replace(cs,"&").replace(us,'"')}function Cn(e,t){function n(t){f+=t,e=e.substring(t)}function r(){var t=e.match(ka);if(t){var r={tagName:t[1],attrs:[],start:f};n(t[0].length);for(var i,o;!(i=e.match(Aa))&&(o=e.match(wa));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=f,r}}function i(e){var n=e.tagName,r=e.unarySlash;u&&("p"===s&&ya(n)&&o(s),ga(n)&&s===n&&o(n));for(var i=l(n)||"html"===n&&"head"===s||!!r,a=e.attrs.length,f=new Array(a),p=0;p=0&&c[i].lowerCasedTag!==o;i--);else i=0;if(i>=0){for(var a=c.length-1;a>=i;a--)t.end&&t.end(c[a].tag,n,r);c.length=i,s=i&&c[i-1].tag}else"br"===o?t.start&&t.start(e,[],!0,n,r):"p"===o&&(t.start&&t.start(e,[],!1,n,r),t.end&&t.end(e,n,r))}for(var a,s,c=[],u=t.expectHTML,l=t.isUnaryTag||vi,f=0;e;){if(a=e,s&&rs(s)){var p=s.toLowerCase(),d=is[p]||(is[p]=new RegExp("([\\s\\S]*?)("+p+"[^>]*>)","i")),v=0,h=e.replace(d,function(e,n,r){return v=r.length,"script"!==p&&"style"!==p&&"noscript"!==p&&(n=n.replace(//g,"$1").replace(//g,"$1")),t.chars&&t.chars(n),""});f+=e.length-h.length,e=h,o(p,f-v,f)}else{var m=e.indexOf("<");if(0===m){if(Ta.test(e)){var g=e.indexOf("-->");if(g>=0){n(g+3);continue}}if(Ea.test(e)){var y=e.indexOf("]>");if(y>=0){n(y+2);continue}}var _=e.match(Sa);if(_){n(_[0].length);continue}var b=e.match(Oa);if(b){var $=f;n(b[0].length),o(b[1],$,f);continue}var w=r();if(w){i(w);continue}}var C=void 0,x=void 0,k=void 0;if(m>0){for(x=e.slice(m);!(Oa.test(x)||ka.test(x)||Ta.test(x)||Ea.test(x)||(k=x.indexOf("<",1),k<0));)m+=k,x=e.slice(m);C=e.substring(0,m),n(m)}m<0&&(C=e,e=""),t.chars&&C&&t.chars(C)}if(e===a&&t.chars){t.chars(e);break}}o()}function xn(e){function t(){(a||(a=[])).push(e.slice(v,i).trim()),v=i+1}var n,r,i,o,a,s=!1,c=!1,u=!1,l=!1,f=0,p=0,d=0,v=0;for(i=0;i=0&&(m=e.charAt(h)," "===m);h--);m&&/[\w$]/.test(m)||(l=!0)}}else void 0===o?(v=i+1,o=e.slice(0,i).trim()):t();if(void 0===o?o=e.slice(0,i).trim():0!==v&&t(),a)for(i=0;ia&&o.push(JSON.stringify(e.slice(a,i)));var s=xn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a=Ia}function Rn(e){return 34===e||39===e}function Un(e){var t=1;for(Da=La;!Pn();)if(e=Dn(),Rn(e))Fn(e);else if(91===e&&t++,93===e&&t--,0===t){Pa=La;break}}function Fn(e){for(var t=e;!Pn()&&(e=Dn(),e!==t););}function Bn(e,t){Ra=t.warn||On,Ua=t.getTagNamespace||vi,Fa=t.mustUseProp||vi,Ba=t.isPreTag||vi,Ha=Sn(t.modules,"preTransformNode"),za=Sn(t.modules,"transformNode"),Va=Sn(t.modules,"postTransformNode"),Ja=t.delimiters;var n,r,i=[],o=t.preserveWhitespace!==!1,a=!1,s=!1;return Cn(e,{expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,shouldDecodeNewlines:t.shouldDecodeNewlines,start:function(e,o,c){function u(e){}var l=r&&r.ns||Ua(e);$i&&"svg"===l&&(o=or(o));var f={type:1,tag:e,attrsList:o,attrsMap:rr(o),parent:r,children:[]};l&&(f.ns=l),ir(f)&&!Ai()&&(f.forbidden=!0);for(var p=0;p-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),In(e,"click","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+t+"=$$a.concat($$v))}else{$$i>-1&&("+t+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+t+"=$$c}",null,!0)}function Kr(e,t,n){var r=n&&n.number,i=Nn(e,"value")||"null";i=r?"_n("+i+")":i,Tn(e,"checked","_q("+t+","+i+")"),In(e,"click",Gr(t,i),null,!0)}function Wr(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=o||$i&&"range"===r?"change":"input",u=!o&&"range"!==r,l="input"===e.tag||"textarea"===e.tag,f=l?"$event.target.value"+(s?".trim()":""):s?"(typeof $event === 'string' ? $event.trim() : $event)":"$event";f=a||"number"===r?"_n("+f+")":f;var p=Gr(t,f);l&&u&&(p="if($event.target.composing)return;"+p),Tn(e,"value",l?"_s("+t+")":"("+t+")"),In(e,c,p,null,!0),(s||a||"number"===r)&&In(e,"blur","$forceUpdate()")}function Zr(e,t,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})"+(null==e.attrsMap.multiple?"[0]":""),o=Gr(t,i);In(e,"change",o,null,!0)}function Gr(e,t){var n=Ln(e);return null===n.idx?e+"="+t:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+e+"="+t+"}else{$$exp.splice($$idx, 1, "+t+")}"}function Yr(e,t){t.value&&Tn(e,"textContent","_s("+t.value+")")}function Qr(e,t){t.value&&Tn(e,"innerHTML","_s("+t.value+")")}function Xr(e,t){return t=t?f(f({},Ms),t):Ms,Fr(e,t)}function ei(e,t,n){var r=(t&&t.warn||Ei,t&&t.delimiters?String(t.delimiters)+e:e);if(Ns[r])return Ns[r];var i={},o=Xr(e,t);i.render=ti(o.render);var a=o.staticRenderFns.length;i.staticRenderFns=new Array(a);for(var s=0;s0,Ci=bi&&bi.indexOf("edge/")>0,xi=bi&&bi.indexOf("android")>0,ki=bi&&/iphone|ipad|ipod|ios/.test(bi),Ai=function(){return void 0===ri&&(ri=!_i&&"undefined"!=typeof t&&"server"===t.process.env.VUE_ENV),ri},Oi=_i&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Si=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t1&&(t[n[0].trim()]=n[1].trim())}}),t}),Fo=/^--/,Bo=/\s*!important$/,Ho=function(e,t,n){Fo.test(t)?e.style.setProperty(t,n):Bo.test(n)?e.style.setProperty(t,n.replace(Bo,""),"important"):e.style[Vo(t)]=n},zo=["Webkit","Moz","ms"],Vo=c(function(e){if(po=po||document.createElement("div"),e=ci(e),"filter"!==e&&e in po.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n\/=]+)/,ba=/(?:=)/,$a=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],wa=new RegExp("^\\s*"+_a.source+"(?:\\s*("+ba.source+")\\s*(?:"+$a.join("|")+"))?"),Ca="[a-zA-Z_][\\w\\-\\.]*",xa="((?:"+Ca+"\\:)?"+Ca+")",ka=new RegExp("^<"+xa),Aa=/^\s*(\/?)>/,Oa=new RegExp("^<\\/"+xa+"[^>]*>"),Sa=/^]+>/i,Ta=/^
10 |