You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
99 KiB
1 line
99 KiB
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 8069a4384ee7dbbd0656","webpack:///slide-verify.js","webpack:///./src/assets/icon_light.png","webpack:///src/lib/slide-verify.vue","webpack:///./src/lib/index.js","webpack:///./src/lib/slide-verify.vue","webpack:///./src/lib/slide-verify.vue?6f75","webpack:///./src/lib/slide-verify.vue?2fa9","webpack:///./node_modules/css-loader/lib/url/escape.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-loader/lib/component-normalizer.js","webpack:///./src/lib/slide-verify.vue?fa6a"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","moduleId","installedModules","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","sum","x","y","square","props","type","Number","default","r","w","h","sliderText","String","accuracy","show","Boolean","imgs","Array","data","containerActive","containerSuccess","containerFail","canvasCtx","blockCtx","block","block_x","undefined","block_y","L","img","originX","originY","isMouseDown","trail","sliderLeft","sliderMaskWidth","success","loadBlock","timestamp","mounted","init","methods","initDom","initImg","bindEvents","$refs","canvas","getContext","drawBlock","getRandomNumberByRange","draw","ctx","beginPath","moveTo","arc","PI","lineTo","lineWidth","fillStyle","strokeStyle","stroke","operation","globalCompositeOperation","createImg","crossOrigin","onload","onerror","src","getRandomImg","len","Math","round","random","end","start","refresh","reset","$emit","sliderDown","event","clientX","clientY","Date","touchStartEvent","e","changedTouches","pageX","pageY","document","addEventListener","handleMoveEvent","handleMoveEndEvent","Promise","lastTime","leading","nowTime","remainTime","timer","clearTimeout","resultCallback","result","resolve","trailing","setTimeout","getTime","_throttle","cancel","moveX","style","left","blockLeft","push","moveY","spliced","TuringTest","verify","abs","average","stddev","clearRect","width","destroyed","removeEventListener","plugins","install","Vue","component","SlideVerify","window","use","injectStyle","ssrContext","normalizeComponent","__vue_styles__","Component","content","locals","escape","url","test","slice","replace","cssWithMappingToString","item","useSourceMap","cssMapping","btoa","sourceMapping","toComment","concat","sources","map","source","sourceRoot","join","sourceMap","unescape","encodeURIComponent","JSON","stringify","list","toString","mediaQuery","alreadyImportedModules","length","id","addStylesToDom","styles","domStyle","stylesInDom","refs","j","parts","addStyle","createStyleElement","styleElement","createElement","head","appendChild","obj","update","remove","querySelector","ssrIdKey","isProduction","noop","parentNode","removeChild","isOldIE","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","bind","applyToTag","newObj","css","media","index","styleSheet","cssText","replaceText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","options","ssrId","firstChild","hasDocument","DEBUG","Error","listToStyles","getElementsByTagName","navigator","userAgent","toLowerCase","parentId","_isProduction","_options","newList","mayRemove","textStore","replacement","filter","newStyles","part","rawScriptExports","compiledTemplate","functionalTemplate","injectStyles","scopeId","moduleIdentifier","esModule","scriptExports","render","staticRenderFns","_compiled","functional","_scopeId","hook","context","$vnode","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","existing","beforeCreate","_injectStyles","_vm","_h","$createElement","_c","_self","staticClass","attrs","class","_v","ref","on","_e","$event","_s","esExports"],"mappings":"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","file":"slide-verify.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SlideVerify\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlideVerify\"] = factory();\n\telse\n\t\troot[\"SlideVerify\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8069a4384ee7dbbd0656","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SlideVerify\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SlideVerify\"] = factory();\n\telse\n\t\troot[\"SlideVerify\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAHXCAMAAADusXjuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURQAAAGdtcwAAAAAAAAAAAAAAAAAAABmR+gECAgAAAAAAAAAAAAAAAAAAAAAAAPf49QAAAAAAAAAAAAAAAAAAALLS/QICAgEBAf///wAAAGS1/P///////wAAAP///xyS+gAAAN3q/pWbof///6Gqs////wAAAAAAACCV+v///zef+5LL/Xq2+woKCkVJTZWdppefqAIDAv///////////5WdpqvX/Z/R/Vyx/KDS/Zyjq5mhqpefqP///2ltcGdtczub+pafqP///0VJTY2hp5WdpgAAAGdtc////0Gk+3e//P///////yDIrvBnZ////8zQ1P////////b39P///6Kqsv///////5WdppefqP////T18pWdppWdpiDIrubw/gICAvb39P///yDIriaX+pWdpUan+5rP/R4eHr2+u////////////5Wdpv///////5WdpuHi3/Lz8Git+8nf/Wdtc/////////Dx7v///9LS0JWdpiDIrvBnZ/BnZ77Z/ZWdppWdppWdpuDh3uzt6q6vrZWdpmdtc+rr6dPU0cvLydbX1JWdpkVJTZnF/O71/vf6//BnZ2dtc////////9LT0Ovs6ru8uZWdppWdppWdpjM0M5WdppWdppWdplSl+/BnZ+bn5O7v7AMDA6Gqs2dtc////77g/v///6TT/bfc/Vau+3vA/P///////4TE/P///////////6bU/f///////7W2szIzMozI/P///2y5/P///y6b+pWdpoq+/KbM/JWdpv///////////yDIriDIrqGqs2dtc6Gqs6Gqs6Gqs////2dtc0VJTZWdpmdtc////x0dHZWdptPl/kVJTSDIriDIrmdtc6iopsDBvvX282FmaWdtc5Wdpv///yDIriDIrvBnZ2dtc6Gqs6Gqs6Gqs2dtc2dtc2dtc2dtc/BnZ35+ffBnZ0VJTWdtc2dtc2dtc35+ff///2dtc9/g3oOKkp6nsL3CyP7//v///6Gqs/f49fBnZyDIrmdtc0VJTdgAqpkAAAD5dFJOUwDMDxgGBArMAQIMDhYDB5kFEwkVHeUfHHgU2tgZEafMIvJD5Oc+GxrNk9Ll2SZF6wge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\"\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar PI = Math.PI;\n\nfunction sum(x, y) {\n return x + y;\n}\n\nfunction square(x) {\n return x * x;\n}\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n name: \"SlideVerify\",\n props: {\n // block length\n l: {\n type: Number,\n default: 42\n },\n // block radius\n r: {\n type: Number,\n default: 10\n },\n // canvas width\n w: {\n type: Number,\n default: 310\n },\n // canvas height\n h: {\n type: Number,\n default: 155\n },\n sliderText: {\n type: String,\n default: \"Slide filled right\"\n },\n accuracy: {\n type: Number,\n default: 5 // 若为 -1 则不进行机器判断\n },\n show: {\n type: Boolean,\n default: true\n },\n imgs: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n containerActive: false, // container active class\n containerSuccess: false, // container success class\n containerFail: false, // container fail class\n canvasCtx: null,\n blockCtx: null,\n block: null,\n block_x: undefined, // container random position\n block_y: undefined,\n L: this.l + this.r * 2 + 3, // block real length\n img: undefined,\n originX: undefined,\n originY: undefined,\n isMouseDown: false,\n trail: [],\n sliderLeft: 0, // block right offset\n sliderMaskWidth: 0, // mask width,\n success: false, // Bug Fixes 修复了验证成功后还能滑动\n loadBlock: true, // Features 图片加载提示,防止图片没加载完就开始验证\n timestamp: null\n };\n },\n mounted: function mounted() {\n this.init();\n },\n\n methods: {\n init: function init() {\n this.initDom();\n this.initImg();\n this.bindEvents();\n },\n initDom: function initDom() {\n this.block = this.$refs.block;\n this.canvasCtx = this.$refs.canvas.getContext(\"2d\");\n this.blockCtx = this.block.getContext(\"2d\");\n },\n initImg: function initImg() {\n var _this = this;\n\n var img = this.createImg(function () {\n // 图片加载完关闭遮蔽罩\n _this.loadBlock = false;\n _this.drawBlock();\n _this.canvasCtx.drawImage(img, 0, 0, _this.w, _this.h);\n _this.blockCtx.drawImage(img, 0, 0, _this.w, _this.h);\n var x = _this.block_x,\n y = _this.block_y,\n r = _this.r,\n L = _this.L;\n\n var _y = y - r * 2 - 1;\n var ImageData = _this.blockCtx.getImageData(x, _y, L, L);\n _this.block.width = L;\n _this.blockCtx.putImageData(ImageData, 0, _y);\n });\n this.img = img;\n },\n drawBlock: function drawBlock() {\n this.block_x = this.getRandomNumberByRange(this.L + 10, this.w - (this.L + 10));\n this.block_y = this.getRandomNumberByRange(10 + this.r * 2, this.h - (this.L + 10));\n this.draw(this.canvasCtx, this.block_x, this.block_y, \"fill\");\n this.draw(this.blockCtx, this.block_x, this.block_y, \"clip\");\n },\n draw: function draw(ctx, x, y, operation) {\n var l = this.l,\n r = this.r;\n\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);\n ctx.lineTo(x + l, y);\n ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);\n ctx.lineTo(x + l, y + l);\n ctx.lineTo(x, y + l);\n ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);\n ctx.lineTo(x, y);\n ctx.lineWidth = 2;\n ctx.fillStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.strokeStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.stroke();\n ctx[operation]();\n // Bug Fixes 修复了火狐和ie显示问题\n ctx.globalCompositeOperation = \"destination-over\";\n },\n createImg: function createImg(onload) {\n var _this2 = this;\n\n var img = document.createElement(\"img\");\n img.crossOrigin = \"Anonymous\";\n img.onload = onload;\n img.onerror = function () {\n img.src = _this2.getRandomImg();\n };\n img.src = this.getRandomImg();\n return img;\n },\n\n // 随机生成img src\n getRandomImg: function getRandomImg() {\n // return require('../assets/img.jpg')\n var len = this.imgs.length;\n return len > 0 ? this.imgs[this.getRandomNumberByRange(0, len - 1)] : // \"https://bing.ioliu.cn/v1/rand?w=300&h=150\";\n \"https://source.unsplash.com/300x150/?book,library\";\n // \"https://api.dujin.org/pic/fengjing\";\n },\n getRandomNumberByRange: function getRandomNumberByRange(start, end) {\n return Math.round(Math.random() * (end - start) + start);\n },\n refresh: function refresh() {\n this.reset();\n this.$emit(\"refresh\");\n },\n sliderDown: function sliderDown(event) {\n if (this.success) return;\n this.originX = event.clientX;\n this.originY = event.clientY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n touchStartEvent: function touchStartEvent(e) {\n if (this.success) return;\n this.originX = e.changedTouches[0].pageX;\n this.originY = e.changedTouches[0].pageY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n bindEvents: function bindEvents() {\n document.addEventListener(\"mousemove\", this.handleMoveEvent);\n document.addEventListener(\"mouseup\", this.handleMoveEndEvent);\n },\n\n // 处理函数抽离\n handleMoveEvent: throttle(function (e) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"mouse\";\n\n if (!this.isMouseDown) return false;\n var moveX = type === \"mouse\" ? e.clientX - this.originX : e.changedTouches[0].pageX - this.originX;\n var moveY = type === \"mouse\" ? e.clientY - this.originY : e.changedTouches[0].pageY - this.originY;\n if (moveX < 0 || moveX + 38 >= this.w) return false;\n this.sliderLeft = moveX + \"px\";\n var blockLeft = (this.w - 40 - 20) / (this.w - 40) * moveX;\n this.block.style.left = blockLeft + \"px\";\n\n this.containerActive = true; // add active\n this.sliderMaskWidth = moveX + \"px\";\n this.trail.push(moveY);\n }),\n handleMoveEndEvent: function handleMoveEndEvent(e) {\n var _this3 = this;\n\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"mouse\";\n\n if (!this.isMouseDown) return false;\n this.isMouseDown = false;\n if (type === \"mouse\" && e.clientX === this.originX || type === \"touch\" && e.changedTouches[0].pageX === this.originX) return false;\n this.containerActive = false; // remove active\n this.timestamp = +new Date() - this.timestamp;\n\n var _verify = this.verify(),\n spliced = _verify.spliced,\n TuringTest = _verify.TuringTest;\n\n if (spliced) {\n if (this.accuracy === -1) {\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n return;\n }\n if (TuringTest) {\n // succ\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n } else {\n this.containerFail = true;\n this.$emit(\"again\");\n }\n } else {\n this.containerFail = true;\n this.$emit(\"fail\");\n setTimeout(function () {\n _this3.reset();\n }, 1000);\n }\n },\n verify: function verify() {\n var arr = this.trail; // drag y move distance\n var average = arr.reduce(sum) / arr.length; // average\n var deviations = arr.map(function (x) {\n return x - average;\n }); // deviation array\n var stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length); // standard deviation\n var left = parseInt(this.block.style.left);\n var accuracy = this.accuracy <= 1 ? 1 : this.accuracy > 10 ? 10 : this.accuracy;\n return {\n spliced: Math.abs(left - this.block_x) <= accuracy,\n TuringTest: average !== stddev // equal => not person operate\n };\n },\n reset: function reset() {\n this.success = false;\n this.containerActive = false;\n this.containerSuccess = false;\n this.containerFail = false;\n this.sliderLeft = 0;\n this.block.style.left = 0;\n this.sliderMaskWidth = 0;\n // canvas\n var w = this.w,\n h = this.h;\n\n this.canvasCtx.clearRect(0, 0, w, h);\n this.blockCtx.clearRect(0, 0, w, h);\n this.block.width = w;\n\n // generate img\n this.img.src = this.getRandomImg();\n this.$emit(\"fulfilled\");\n }\n },\n destroyed: function destroyed() {\n document.removeEventListener(\"mousemove\", this.handleMoveEvent);\n document.removeEventListener(\"mouseup\", this.handleMoveEndEvent);\n }\n});\n\nfunction throttle(fn) {\n var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { leading: true, trailing: true };\n var leading = options.leading,\n trailing = options.trailing,\n resultCallback = options.resultCallback;\n\n var lastTime = 0;\n var timer = null;\n\n var _throttle = function _throttle() {\n var _this4 = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new Promise(function (resolve, reject) {\n var nowTime = new Date().getTime();\n if (!lastTime && !leading) lastTime = nowTime;\n\n var remainTime = interval - (nowTime - lastTime);\n if (remainTime <= 0) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n var result = fn.apply(_this4, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n lastTime = nowTime;\n return;\n }\n\n if (trailing && !timer) {\n timer = setTimeout(function () {\n timer = null;\n lastTime = !leading ? 0 : new Date().getTime();\n var result = fn.apply(_this4, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n }, remainTime);\n }\n });\n };\n\n _throttle.cancel = function () {\n if (timer) clearTimeout(timer);\n timer = null;\n lastTime = 0;\n };\n\n return _throttle;\n}\n\n/***/ }),\n/* 2 */\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__slide_verify_vue__ = __webpack_require__(3);\n\n\nvar plugins = {\n install: function install(Vue) {\n Vue.component(__WEBPACK_IMPORTED_MODULE_0__slide_verify_vue__[\"a\" /* default */].name, __WEBPACK_IMPORTED_MODULE_0__slide_verify_vue__[\"a\" /* default */]);\n }\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(__WEBPACK_IMPORTED_MODULE_0__slide_verify_vue__[\"a\" /* default */]);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (plugins);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_slide_verify_vue__ = __webpack_require__(1);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7b054e17_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_slide_verify_vue__ = __webpack_require__(11);\nfunction injectStyle (ssrContext) {\n __webpack_require__(4)\n}\nvar normalizeComponent = __webpack_require__(10)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7b054e17\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_slide_verify_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_7b054e17_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_slide_verify_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(5);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(8)(\"404e9c1d\", content, true, {});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(6);\nexports = module.exports = __webpack_require__(7)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".slide-verify[data-v-7b054e17]{position:relative}.slider-verify-loading[data-v-7b054e17]{position:absolute;top:0;right:0;left:0;bottom:0;background:hsla(0,0%,100%,.9);z-index:999;animation:loading-data-v-7b054e17 1.5s infinite}@keyframes loading-data-v-7b054e17{0%{opacity:.7}to{opacity:1}}.slide-verify-block[data-v-7b054e17]{position:absolute;left:0;top:0}.slide-verify-refresh-icon[data-v-7b054e17]{position:absolute;right:0;top:0;width:34px;height:34px;cursor:pointer;background:url(\" + escape(__webpack_require__(0)) + \") 0 -437px;background-size:34px 471px}.slide-verify-slider[data-v-7b054e17]{position:relative;text-align:center;width:100%;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.slide-verify-slider-mask[data-v-7b054e17]{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.slide-verify-slider-mask-item[data-v-7b054e17]{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px rgba(0,0,0,.3);cursor:pointer;transition:background .2s linear}.slide-verify-slider-mask-item[data-v-7b054e17]:hover{background:#1991fa}.slide-verify-slider-mask-item:hover .slide-verify-slider-mask-item-icon[data-v-7b054e17]{background-position:0 -13px}.slide-verify-slider-mask-item-icon[data-v-7b054e17]{position:absolute;top:15px;left:13px;width:14px;height:12px;background:url(\" + escape(__webpack_require__(0)) + \") 0 -26px;background-size:34px 471px}.container-active .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #1991fa}.container-active .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border-width:1px}.container-success .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.container-success .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border:1px solid #52ccba;background-color:#d2f4ef}.container-success .slide-verify-slider-mask-item-icon[data-v-7b054e17]{background-position:0 0!important}.container-fail .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.container-fail .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.container-fail .slide-verify-slider-mask-item-icon[data-v-7b054e17]{top:14px;background-position:0 -82px!important}.container-active .slide-verify-slider-text[data-v-7b054e17],.container-fail .slide-verify-slider-text[data-v-7b054e17],.container-success .slide-verify-slider-text[data-v-7b054e17]{display:none}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(9)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"slide-verify\",style:({ width: _vm.w + 'px' }),attrs:{\"id\":\"slideVerify\",\"onselectstart\":\"return false;\"}},[_c('div',{class:{ 'slider-verify-loading': _vm.loadBlock }}),_vm._v(\" \"),_c('canvas',{ref:\"canvas\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),_vm._v(\" \"),(_vm.show)?_c('div',{staticClass:\"slide-verify-refresh-icon\",on:{\"click\":_vm.refresh}}):_vm._e(),_vm._v(\" \"),_c('canvas',{ref:\"block\",staticClass:\"slide-verify-block\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),_vm._v(\" \"),_c('div',{staticClass:\"slide-verify-slider\",class:{\n 'container-active': _vm.containerActive,\n 'container-success': _vm.containerSuccess,\n 'container-fail': _vm.containerFail\n }},[_c('div',{staticClass:\"slide-verify-slider-mask\",style:({ width: _vm.sliderMaskWidth })},[_c('div',{staticClass:\"slide-verify-slider-mask-item\",style:({ left: _vm.sliderLeft }),on:{\"mousedown\":_vm.sliderDown,\"touchstart\":_vm.touchStartEvent,\"touchmove\":function($event){return _vm.handleMoveEvent($event, 'touch')},\"touchend\":function($event){return _vm.handleMoveEndEvent($event, 'touch')}}},[_c('div',{staticClass:\"slide-verify-slider-mask-item-icon\"})])]),_vm._v(\" \"),_c('span',{staticClass:\"slide-verify-slider-text\"},[_vm._v(_vm._s(_vm.sliderText))])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// slide-verify.js","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAHXCAMAAADusXjuAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURQAAAGdtcwAAAAAAAAAAAAAAAAAAABmR+gECAgAAAAAAAAAAAAAAAAAAAAAAAPf49QAAAAAAAAAAAAAAAAAAALLS/QICAgEBAf///wAAAGS1/P///////wAAAP///xyS+gAAAN3q/pWbof///6Gqs////wAAAAAAACCV+v///zef+5LL/Xq2+woKCkVJTZWdppefqAIDAv///////////5WdpqvX/Z/R/Vyx/KDS/Zyjq5mhqpefqP///2ltcGdtczub+pafqP///0VJTY2hp5WdpgAAAGdtc////0Gk+3e//P///////yDIrvBnZ////8zQ1P////////b39P///6Kqsv///////5WdppefqP////T18pWdppWdpiDIrubw/gICAvb39P///yDIriaX+pWdpUan+5rP/R4eHr2+u////////////5Wdpv///////5WdpuHi3/Lz8Git+8nf/Wdtc/////////Dx7v///9LS0JWdpiDIrvBnZ/BnZ77Z/ZWdppWdppWdpuDh3uzt6q6vrZWdpmdtc+rr6dPU0cvLydbX1JWdpkVJTZnF/O71/vf6//BnZ2dtc////////9LT0Ovs6ru8uZWdppWdppWdpjM0M5WdppWdppWdplSl+/BnZ+bn5O7v7AMDA6Gqs2dtc////77g/v///6TT/bfc/Vau+3vA/P///////4TE/P///////////6bU/f///////7W2szIzMozI/P///2y5/P///y6b+pWdpoq+/KbM/JWdpv///////////yDIriDIrqGqs2dtc6Gqs6Gqs6Gqs////2dtc0VJTZWdpmdtc////x0dHZWdptPl/kVJTSDIriDIrmdtc6iopsDBvvX282FmaWdtc5Wdpv///yDIriDIrvBnZ2dtc6Gqs6Gqs6Gqs2dtc2dtc2dtc2dtc/BnZ35+ffBnZ0VJTWdtc2dtc2dtc35+ff///2dtc9/g3oOKkp6nsL3CyP7//v///6Gqs/f49fBnZyDIrmdtc0VJTdgAqpkAAAD5dFJOUwDMDxgGBArMAQIMDhYDB5kFEwkVHeUfHHgU2tgZEafMIvJD5Oc+GxrNk9Ll2SZF6wgeuJWKBern2ecCKBbdOcTPPfnsETIgD8XU3yDLCoH7AY4P+RVJhtUiGx3mSHm/9SmWNgfOT9XmIVgHuR9Z9EVxmtzW7LALI4uwfae3kIrpC+FncYlH1rmzamaBjD3f+fyLyk0vYYVUz/OFHZW9ntLzfssv/gqY7nvo7NffbF/hHls56G+iSybjftzp0LHc4rfO0Ty4p+7AecaT8HLUYCBJHP3vefL3o15qlC6Nx8KyeOme9lSkam2nFndNdTx4iJEzUhs/O+UL41+/HMAAAAwESURBVHja7Zl5fFNVFsdT0iSleW3SJk0oGkwCJAIJJGhcktJFm4hSa6EsrdBpq9YBFagUZBuHUqCyVMCFfZPF2fcFZoZh0xEBERFcUXFfZl/+u6TOzLn3LXlJ3r0v6EeoMz2fD/al79t7lnvOL/c9NZqEXfnMaA3brrwCPaNKXHHlFyXOT7pTbY0qNOpOFS/jJwGjEgdm1CIFRi0XzfiqIyrEJbbR58epIedRlRozriojZjTNgcxGf1HkIoLJINwMks6gdJfMyspuUUX+naXG3JKVEVNGcyCzsi+KXEQwGYSbQdIZlO4rtxeHCxfDX6Qhj97MM8NvHq5hMyyCZ9gEZl5RITSaV/7zigoxXHUVHMejTIaPlMWIuTAYqbp/ffGy7/TGKcKFezENqRjBM+4Rbg2bYRE8wyYw06BCaDQNZxpUCDesMkWFcEt50QkNkxFzYTAbxVwqOnvUt6zm7udefU+F+Nbnn7+mSnz+rirxjdvTb7z32rv8b+/+A4XQvCr8/nYqoXmOv8MghAgqGYTAvMoiBIZJMLJNqvtrz93eA/ZfOKmyzsz8SZV5ZiYn1Z5zmgUvQsyss/skJkMiHc9ihFxYzBEhUmAmUZCR4rl7fNX5y90M1U9VixcPU5D3u7vJrW93d3dTkD91EwYT1VRPmMHEY4xouok9xoxYlSBxdD+sSjAZEmk1i6nm46hmJP2UECkwT9H8iBvwl/ere4A4jDs9cfSMqrFP0B4nZo49cof47HNk7EwlRLg/iv95hxKCH5wmnh6neWjmxCq4VkZeEC9r1JGHmMgoMWI6gljITQiFE6uMUkJAfp5UKe01CF2rgtyF0Iy55Or0/hdGKTPzBaGbux+hsRS9HIjQ/n/VnAbimYcoruYCg/YjpmqOn08SHjmeFfPgATPmz+wRB5unSz/9oOz1k6W0Z6jSk68/nsXb45+dLFVC+PuPzxF+KiHw+w8+KX0avH3yOlwrI9LzZA4VeV4Km4nMESJmIFkspCwrK5xYZY4SAjdfUint37KyPlVB3oKs+WVKH3l+jjLzNkTwR/j50iNZWScpD9Jw65HSnFL48dnTFFf4z7PwP7IYZZ23ScL/YD5Qv/X3srdLL3/jThh0gWGDJgDCJIAB5MIFlg9y9+uJTBhESiAVS/gkRwbxJRBM+nSRSAaO/veqCxb46MTxQXv2DDp+4qOAIlJ/4mii146eqE9Hjn144cLxYxUl4XBJxbHjey58eCwNObrn40gihMjHe46mIZFIcpzC569jdTMY2AzG/jJYe8vmAxsXL+7c1tXSrgjUb+5cDDYCbNOmEVvr0oBA68bOzoUd0ZJQqCTaenjTpk2bAylLLOzs3Cz7w7qtm85sTFoosm3j4ZRmiHaeWRyVrXH4ne2Vqa5Ltp2RxbH9na2h9PhDmpqweN3xzkLlJMNhganfti2iXKiaUKiGXLRuo76UCgVIAIEDh+tpSE0ggJepONxF35NAO16m9UALHQm14xp3HYjQkXAlznX7gUo6UlOJby5cGGI0SAZISQn8Z+tChqMwQRq2M8IN1WPk1HbGm7r2euwiur2VEUodTjrQtbWE6qeujuz19K3T6Yvwf13S1UXZx0AkIhSkpatVsTThSEQMIdS6+VRYofh10Yj068qGzdND6WtEo7JRqm9t6EhJqz1aEU3q6MqOhtYplfJAKyqiKeMYqmhtbW2JlgTC4UBlXcUUd0VdeniV7o6OjlOnpk+f3tIyxR1pp9SyogUT7mh9+PKeqX7W7/6BN824YmS/MRTg2QGJ/4s34Fkl4lq4c33/oVffc2//65HSw9t9QxAadpVBsKuGIXTNfekPff0NMrsBmDQvtxqS7NYUX88idIMhxWCdwTJkABom3vH5dghXw9CABPEAQkKkh9ZCMmfL+ZgRekBC+qEbhb90NRYtQqiI/3Aj6pd4dSVl0wb/FiEX/6E/GikhA9FQWZyL0Gz+YigaKHuevjpBlK9FPv7qanSTIlLeiBYZ0hGZIyBmi9dyR/dL4cqJpHClpDHh8/na0pMeI5bOx3eLSyzdGPkG3EZ+u6OI2Gry4Tb5BmgGI/T71G28NXkbNUPQdanIdWhI8jtIlNhr3n6Jfp3ylP/zlI6BzvxFavNORN+VET9C6CfpE/Ad9H2J+CFC31MYkicR+qlA3PMDyguJHyN0r5jMNZRxHCtkDpM2l/blNB9dD8RvEHqCOvYzEWzE7xD6FUMa+iH0TYQmMuUDJjul7gpva357V4947/H/q3XyDlfUuiKSso+ldUVojcvlamNpXZEohXStS0KUtQ7Hsma1gaV1q10uEOeDTK3D8ozOsrSOd+ZiaJ3h0A6Db42SwEtaB07AGssZWmc4eNblOsQTvVrXq3W9WndZtY6XGANL6+DYhkSEonUGQ+MaCaGc64rQQQlR1ro2OLFJiLLWNa4pV0YkR6CpPjhy+crpWucSNtpH17o2ONQlVlHWOmyy0ilpHQmoqFfrerWuV+u+aq0r9wnTStW61TjjRUytKzpbNBuh1Sytw04axVMQ9Rm2fI34gEp5hl3kWru2iKl1WKfWqjzDGmQnsi9zrtshPekyznVrdzDPdbN7z3W9WterdZfmXFfepqJ1sxvFoae+r5PeSlG17mBbUQKhaZ0Mob2vkyG093UUJANHcq2jhJtIus03GzX6fKpaJxzsKFq3mn9h16t1vVp3CS0nyRTv9+2bl6cjlpfXt28aRwCdOTuft2yzhMmWyNNl5xfq9blger2+MD8bY5gSl4AVAMg19nFg62MEDiizxPBLAOBwFBRbLJbi4gKCFebjhXLIIjzhKLBwWmxe+MdZChy5emAwAm4wYXQUc1tWLp9cWztr+cp9tqDdyzmMwOTlEDdmTFi0K2fFBZv1pt+5axfnyC3M5hEd9mJ5+UG4tcq9b597FaAPNsXjHksffb4uBy+SXZjrKNY+GK9dYLOCxZz+BbVx+AMrLJOv68svYizgVsZrp1ntEKnXGvM3vVEL7mxaAckzwyKWLZPjC6weLcdZOG/Q2dS0IAnJhli5FfFZU+1arhhKw3liu0jQQREBP30KtMvjq6xeIIy5fRycnSC7+FhyMIKDnRx327UWqBZsg4Pz2JxOp81rceglxKKtjU/1cAWQZDYJ3hO02excgVGP65KKmHEJLFoPZGcRSic4miU6yseV5rSef05eWgyImUfk4UK74N3SelbFl5NFYRtTk4aOAcJrnxVfgbdRR5BE6ey4B3BLeD0L4pO3YLcESdkADgP2abXxdcWJjU7aRrvHY7cG8Tby+eWRpiPLODihGaYKzfAyTpn4SbQUJ2+plVAA0nNC6wqNaeG2rMCNOXn5ii0cIbJ14gDw7W2U2pv0NiHyxFFLGRI8IsZcQvRNDGPyqMEI6YUZytHQBraQXyJp7pPHPmmcmeJx8RLU8+RQpzOD6XQ0OSRlKQSDypjNunQ5hB3Ih+Iawfj65qfJobiP2BxkH/E2yeUQ9ifRDaAPMP/GxGbjfiFqiGfDGgwGbUFoYTww0N6SHGKiWGufumzJvOZzS5dM8PudMTz1uaIc6vgxti5bahJsaUtT086dHkEZAIHuhjWC60ym9dNK/f7SaetNpjd3m0wxraAv/KhpretMzRv8ICtOf9PuN86Z3jSZnJ5iIww1WQREx77M1OyGACBYZ9Pu3X9uBnd+q8VYaBa0rkA7dZ5pgzMGmq312mCZ3W8QhOtDEPDj4Lx7Tev9sSBOlfPG/DtJ0DIE+1limuYE6YKKgdLFCLITx1KIwzUX4mDnmUpjVi1US693WDwgzk1Nfpu2gM/IjEMJNpv8MTsW0Xzs1w4iTz7rZcg5EckmRYIvAqcNFtXn50mOlgqOeN2F74G35q3TykVVChfG3Yh3KxibZlqCv4+IHCYlDSlBR3itNud6017sV1LMROmw1nmsttgG07yXcSi8HCZtgNVuByDmbjYtw/oubHTSNsbAnM4N50zrPJwg3mIzWLzBFfJmWAHpCeKdaCmvvKWWWbUWqS+lxrRAY+6Fxmyet2TvVOErQyaHZqG9sSwHiYbz3/VyOTTzQ8Jx/IxgwSwUVVdp1GSCmSSH8oHV6/PJgSJNDvmxJ+OcnRhVtnhkLkH/BUTDFxXJeg2PAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/icon_light.png\n// module id = 0\n// module chunks = 0","<template>\n <div\n class=\"slide-verify\"\n :style=\"{ width: w + 'px' }\"\n id=\"slideVerify\"\n onselectstart=\"return false;\"\n >\n <!-- 图片加载遮蔽罩 -->\n <div :class=\"{ 'slider-verify-loading': loadBlock }\"></div>\n <canvas :width=\"w\" :height=\"h\" ref=\"canvas\"></canvas>\n <div v-if=\"show\" @click=\"refresh\" class=\"slide-verify-refresh-icon\"></div>\n <canvas\n :width=\"w\"\n :height=\"h\"\n ref=\"block\"\n class=\"slide-verify-block\"\n ></canvas>\n <!-- container -->\n <div\n class=\"slide-verify-slider\"\n :class=\"{\n 'container-active': containerActive,\n 'container-success': containerSuccess,\n 'container-fail': containerFail\n }\"\n >\n <div class=\"slide-verify-slider-mask\" :style=\"{ width: sliderMaskWidth }\">\n <!-- slider -->\n <div\n @mousedown=\"sliderDown\"\n @touchstart=\"touchStartEvent\"\n @touchmove=\"handleMoveEvent($event, 'touch')\"\n @touchend=\"handleMoveEndEvent($event, 'touch')\"\n class=\"slide-verify-slider-mask-item\"\n :style=\"{ left: sliderLeft }\"\n >\n <div class=\"slide-verify-slider-mask-item-icon\"></div>\n </div>\n </div>\n <span class=\"slide-verify-slider-text\">{{ sliderText }}</span>\n </div>\n </div>\n</template>\n<script>\nconst PI = Math.PI;\n\nfunction sum(x, y) {\n return x + y;\n}\n\nfunction square(x) {\n return x * x;\n}\nexport default {\n name: \"SlideVerify\",\n props: {\n // block length\n l: {\n type: Number,\n default: 42\n },\n // block radius\n r: {\n type: Number,\n default: 10\n },\n // canvas width\n w: {\n type: Number,\n default: 310\n },\n // canvas height\n h: {\n type: Number,\n default: 155\n },\n sliderText: {\n type: String,\n default: \"Slide filled right\"\n },\n accuracy: {\n type: Number,\n default: 5 // 若为 -1 则不进行机器判断\n },\n show: {\n type: Boolean,\n default: true\n },\n imgs: {\n type: Array,\n default: () => []\n }\n },\n data() {\n return {\n containerActive: false, // container active class\n containerSuccess: false, // container success class\n containerFail: false, // container fail class\n canvasCtx: null,\n blockCtx: null,\n block: null,\n block_x: undefined, // container random position\n block_y: undefined,\n L: this.l + this.r * 2 + 3, // block real length\n img: undefined,\n originX: undefined,\n originY: undefined,\n isMouseDown: false,\n trail: [],\n sliderLeft: 0, // block right offset\n sliderMaskWidth: 0, // mask width,\n success: false, // Bug Fixes 修复了验证成功后还能滑动\n loadBlock: true, // Features 图片加载提示,防止图片没加载完就开始验证\n timestamp: null\n };\n },\n mounted() {\n this.init();\n },\n methods: {\n init() {\n this.initDom();\n this.initImg();\n this.bindEvents();\n },\n initDom() {\n this.block = this.$refs.block;\n this.canvasCtx = this.$refs.canvas.getContext(\"2d\");\n this.blockCtx = this.block.getContext(\"2d\");\n },\n initImg() {\n const img = this.createImg(() => {\n // 图片加载完关闭遮蔽罩\n this.loadBlock = false;\n this.drawBlock();\n this.canvasCtx.drawImage(img, 0, 0, this.w, this.h);\n this.blockCtx.drawImage(img, 0, 0, this.w, this.h);\n let { block_x: x, block_y: y, r, L } = this;\n let _y = y - r * 2 - 1;\n let ImageData = this.blockCtx.getImageData(x, _y, L, L);\n this.block.width = L;\n this.blockCtx.putImageData(ImageData, 0, _y);\n });\n this.img = img;\n },\n drawBlock() {\n this.block_x = this.getRandomNumberByRange(\n this.L + 10,\n this.w - (this.L + 10)\n );\n this.block_y = this.getRandomNumberByRange(\n 10 + this.r * 2,\n this.h - (this.L + 10)\n );\n this.draw(this.canvasCtx, this.block_x, this.block_y, \"fill\");\n this.draw(this.blockCtx, this.block_x, this.block_y, \"clip\");\n },\n draw(ctx, x, y, operation) {\n let { l, r } = this;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);\n ctx.lineTo(x + l, y);\n ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);\n ctx.lineTo(x + l, y + l);\n ctx.lineTo(x, y + l);\n ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);\n ctx.lineTo(x, y);\n ctx.lineWidth = 2;\n ctx.fillStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.strokeStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.stroke();\n ctx[operation]();\n // Bug Fixes 修复了火狐和ie显示问题\n ctx.globalCompositeOperation = \"destination-over\";\n },\n createImg(onload) {\n const img = document.createElement(\"img\");\n img.crossOrigin = \"Anonymous\";\n img.onload = onload;\n img.onerror = () => {\n img.src = this.getRandomImg();\n };\n img.src = this.getRandomImg();\n return img;\n },\n // 随机生成img src\n getRandomImg() {\n // return require('../assets/img.jpg')\n const len = this.imgs.length;\n return len > 0\n ? this.imgs[this.getRandomNumberByRange(0, len - 1)]\n : // \"https://bing.ioliu.cn/v1/rand?w=300&h=150\";\n \"https://source.unsplash.com/300x150/?book,library\";\n // \"https://api.dujin.org/pic/fengjing\";\n },\n getRandomNumberByRange(start, end) {\n return Math.round(Math.random() * (end - start) + start);\n },\n refresh() {\n this.reset();\n this.$emit(\"refresh\");\n },\n sliderDown(event) {\n if (this.success) return;\n this.originX = event.clientX;\n this.originY = event.clientY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n touchStartEvent(e) {\n if (this.success) return;\n this.originX = e.changedTouches[0].pageX;\n this.originY = e.changedTouches[0].pageY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n bindEvents() {\n document.addEventListener(\"mousemove\", this.handleMoveEvent);\n document.addEventListener(\"mouseup\", this.handleMoveEndEvent);\n },\n // 处理函数抽离\n handleMoveEvent: throttle(function(e, type = \"mouse\") {\n if (!this.isMouseDown) return false;\n const moveX =\n type === \"mouse\"\n ? e.clientX - this.originX\n : e.changedTouches[0].pageX - this.originX;\n const moveY =\n type === \"mouse\"\n ? e.clientY - this.originY\n : e.changedTouches[0].pageY - this.originY;\n if (moveX < 0 || moveX + 38 >= this.w) return false;\n this.sliderLeft = moveX + \"px\";\n let blockLeft = ((this.w - 40 - 20) / (this.w - 40)) * moveX;\n this.block.style.left = blockLeft + \"px\";\n\n this.containerActive = true; // add active\n this.sliderMaskWidth = moveX + \"px\";\n this.trail.push(moveY);\n }),\n handleMoveEndEvent(e, type = \"mouse\") {\n if (!this.isMouseDown) return false;\n this.isMouseDown = false;\n if (\n (type === \"mouse\" && e.clientX === this.originX) ||\n (type === \"touch\" && e.changedTouches[0].pageX === this.originX)\n )\n return false;\n this.containerActive = false; // remove active\n this.timestamp = +new Date() - this.timestamp;\n\n const { spliced, TuringTest } = this.verify();\n if (spliced) {\n if (this.accuracy === -1) {\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n return;\n }\n if (TuringTest) {\n // succ\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n } else {\n this.containerFail = true;\n this.$emit(\"again\");\n }\n } else {\n this.containerFail = true;\n this.$emit(\"fail\");\n setTimeout(() => {\n this.reset();\n }, 1000);\n }\n },\n verify() {\n const arr = this.trail; // drag y move distance\n const average = arr.reduce(sum) / arr.length; // average\n const deviations = arr.map(x => x - average); // deviation array\n const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length); // standard deviation\n const left = parseInt(this.block.style.left);\n const accuracy =\n this.accuracy <= 1 ? 1 : this.accuracy > 10 ? 10 : this.accuracy;\n return {\n spliced: Math.abs(left - this.block_x) <= accuracy,\n TuringTest: average !== stddev // equal => not person operate\n };\n },\n reset() {\n this.success = false;\n this.containerActive = false;\n this.containerSuccess = false;\n this.containerFail = false;\n this.sliderLeft = 0;\n this.block.style.left = 0;\n this.sliderMaskWidth = 0;\n // canvas\n let { w, h } = this;\n this.canvasCtx.clearRect(0, 0, w, h);\n this.blockCtx.clearRect(0, 0, w, h);\n this.block.width = w;\n\n // generate img\n this.img.src = this.getRandomImg();\n this.$emit(\"fulfilled\");\n }\n },\n destroyed() {\n document.removeEventListener(\"mousemove\", this.handleMoveEvent);\n document.removeEventListener(\"mouseup\", this.handleMoveEndEvent);\n }\n};\n\nfunction throttle(\n fn,\n interval = 50,\n options = { leading: true, trailing: true }\n) {\n const { leading, trailing, resultCallback } = options;\n let lastTime = 0;\n let timer = null;\n\n const _throttle = function(...args) {\n return new Promise((resolve, reject) => {\n const nowTime = new Date().getTime();\n if (!lastTime && !leading) lastTime = nowTime;\n\n const remainTime = interval - (nowTime - lastTime);\n if (remainTime <= 0) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n const result = fn.apply(this, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n lastTime = nowTime;\n return;\n }\n\n if (trailing && !timer) {\n timer = setTimeout(() => {\n timer = null;\n lastTime = !leading ? 0 : new Date().getTime();\n const result = fn.apply(this, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n }, remainTime);\n }\n });\n };\n\n _throttle.cancel = function() {\n if (timer) clearTimeout(timer);\n timer = null;\n lastTime = 0;\n };\n\n return _throttle;\n}\n</script>\n<style scoped>\n.slide-verify {\n position: relative;\n}\n\n/* 图片加载样式 */\n.slider-verify-loading {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n z-index: 999;\n animation: loading 1.5s infinite;\n}\n\n@keyframes loading {\n 0% {\n opacity: 0.7;\n }\n 100% {\n opacity: 9;\n }\n}\n\n.slide-verify-block {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.slide-verify-refresh-icon {\n position: absolute;\n right: 0;\n top: 0;\n width: 34px;\n height: 34px;\n cursor: pointer;\n background: url(\"../assets/icon_light.png\") 0 -437px;\n background-size: 34px 471px;\n}\n\n.slide-verify-slider {\n position: relative;\n text-align: center;\n width: 100%;\n height: 40px;\n line-height: 40px;\n margin-top: 15px;\n background: #f7f9fa;\n color: #45494c;\n border: 1px solid #e4e7eb;\n}\n\n.slide-verify-slider-mask {\n position: absolute;\n left: 0;\n top: 0;\n height: 40px;\n border: 0 solid #1991fa;\n background: #d1e9fe;\n}\n\n.slide-verify-slider-mask-item {\n position: absolute;\n top: 0;\n left: 0;\n width: 40px;\n height: 40px;\n background: #fff;\n box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);\n cursor: pointer;\n transition: background 0.2s linear;\n}\n\n.slide-verify-slider-mask-item:hover {\n background: #1991fa;\n}\n\n.slide-verify-slider-mask-item:hover .slide-verify-slider-mask-item-icon {\n background-position: 0 -13px;\n}\n\n.slide-verify-slider-mask-item-icon {\n position: absolute;\n top: 15px;\n left: 13px;\n width: 14px;\n height: 12px;\n background: url(\"../assets/icon_light.png\") 0 -26px;\n background-size: 34px 471px;\n}\n.container-active .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #1991fa;\n}\n\n.container-active .slide-verify-slider-mask {\n height: 38px;\n border-width: 1px;\n}\n\n.container-success .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #52ccba;\n background-color: #52ccba !important;\n}\n\n.container-success .slide-verify-slider-mask {\n height: 38px;\n border: 1px solid #52ccba;\n background-color: #d2f4ef;\n}\n\n.container-success .slide-verify-slider-mask-item-icon {\n background-position: 0 0 !important;\n}\n\n.container-fail .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #f57a7a;\n background-color: #f57a7a !important;\n}\n\n.container-fail .slide-verify-slider-mask {\n height: 38px;\n border: 1px solid #f57a7a;\n background-color: #fce1e1;\n}\n\n.container-fail .slide-verify-slider-mask-item-icon {\n top: 14px;\n background-position: 0 -82px !important;\n}\n\n.container-active .slide-verify-slider-text,\n.container-success .slide-verify-slider-text,\n.container-fail .slide-verify-slider-text {\n display: none;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/lib/slide-verify.vue","import SlideVerify from './slide-verify.vue'\r\n\r\nconst plugins = {\r\n install(Vue) {\r\n Vue.component(SlideVerify.name, SlideVerify)\r\n }\r\n}\r\n\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n window.Vue.use(SlideVerify)\r\n}\r\n\r\nexport default plugins\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/index.js","function injectStyle (ssrContext) {\n require(\"!!vue-style-loader!css-loader?minimize!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7b054e17\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./slide-verify.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./slide-verify.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./slide-verify.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7b054e17\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./slide-verify.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7b054e17\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/lib/slide-verify.vue\n// module id = 3\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js?minimize!../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7b054e17\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./slide-verify.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\")(\"404e9c1d\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader!./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7b054e17\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/lib/slide-verify.vue\n// module id = 4\n// module chunks = 0","var escape = require(\"../../node_modules/css-loader/lib/url/escape.js\");\nexports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".slide-verify[data-v-7b054e17]{position:relative}.slider-verify-loading[data-v-7b054e17]{position:absolute;top:0;right:0;left:0;bottom:0;background:hsla(0,0%,100%,.9);z-index:999;animation:loading-data-v-7b054e17 1.5s infinite}@keyframes loading-data-v-7b054e17{0%{opacity:.7}to{opacity:1}}.slide-verify-block[data-v-7b054e17]{position:absolute;left:0;top:0}.slide-verify-refresh-icon[data-v-7b054e17]{position:absolute;right:0;top:0;width:34px;height:34px;cursor:pointer;background:url(\" + escape(require(\"../assets/icon_light.png\")) + \") 0 -437px;background-size:34px 471px}.slide-verify-slider[data-v-7b054e17]{position:relative;text-align:center;width:100%;height:40px;line-height:40px;margin-top:15px;background:#f7f9fa;color:#45494c;border:1px solid #e4e7eb}.slide-verify-slider-mask[data-v-7b054e17]{position:absolute;left:0;top:0;height:40px;border:0 solid #1991fa;background:#d1e9fe}.slide-verify-slider-mask-item[data-v-7b054e17]{position:absolute;top:0;left:0;width:40px;height:40px;background:#fff;box-shadow:0 0 3px rgba(0,0,0,.3);cursor:pointer;transition:background .2s linear}.slide-verify-slider-mask-item[data-v-7b054e17]:hover{background:#1991fa}.slide-verify-slider-mask-item:hover .slide-verify-slider-mask-item-icon[data-v-7b054e17]{background-position:0 -13px}.slide-verify-slider-mask-item-icon[data-v-7b054e17]{position:absolute;top:15px;left:13px;width:14px;height:12px;background:url(\" + escape(require(\"../assets/icon_light.png\")) + \") 0 -26px;background-size:34px 471px}.container-active .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #1991fa}.container-active .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border-width:1px}.container-success .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #52ccba;background-color:#52ccba!important}.container-success .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border:1px solid #52ccba;background-color:#d2f4ef}.container-success .slide-verify-slider-mask-item-icon[data-v-7b054e17]{background-position:0 0!important}.container-fail .slide-verify-slider-mask-item[data-v-7b054e17]{height:38px;top:-1px;border:1px solid #f57a7a;background-color:#f57a7a!important}.container-fail .slide-verify-slider-mask[data-v-7b054e17]{height:38px;border:1px solid #f57a7a;background-color:#fce1e1}.container-fail .slide-verify-slider-mask-item-icon[data-v-7b054e17]{top:14px;background-position:0 -82px!important}.container-active .slide-verify-slider-text[data-v-7b054e17],.container-fail .slide-verify-slider-text[data-v-7b054e17],.container-success .slide-verify-slider-text[data-v-7b054e17]{display:none}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?minimize!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-7b054e17\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/lib/slide-verify.vue\n// module id = 5\n// module chunks = 0","module.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/url/escape.js\n// module id = 6\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 7\n// module chunks = 0","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = require('./listToStyles')\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/addStylesClient.js\n// module id = 8\n// module chunks = 0","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/listToStyles.js\n// module id = 9\n// module chunks = 0","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/component-normalizer.js\n// module id = 10\n// module chunks = 0","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"slide-verify\",style:({ width: _vm.w + 'px' }),attrs:{\"id\":\"slideVerify\",\"onselectstart\":\"return false;\"}},[_c('div',{class:{ 'slider-verify-loading': _vm.loadBlock }}),_vm._v(\" \"),_c('canvas',{ref:\"canvas\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),_vm._v(\" \"),(_vm.show)?_c('div',{staticClass:\"slide-verify-refresh-icon\",on:{\"click\":_vm.refresh}}):_vm._e(),_vm._v(\" \"),_c('canvas',{ref:\"block\",staticClass:\"slide-verify-block\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),_vm._v(\" \"),_c('div',{staticClass:\"slide-verify-slider\",class:{\n 'container-active': _vm.containerActive,\n 'container-success': _vm.containerSuccess,\n 'container-fail': _vm.containerFail\n }},[_c('div',{staticClass:\"slide-verify-slider-mask\",style:({ width: _vm.sliderMaskWidth })},[_c('div',{staticClass:\"slide-verify-slider-mask-item\",style:({ left: _vm.sliderLeft }),on:{\"mousedown\":_vm.sliderDown,\"touchstart\":_vm.touchStartEvent,\"touchmove\":function($event){return _vm.handleMoveEvent($event, 'touch')},\"touchend\":function($event){return _vm.handleMoveEndEvent($event, 'touch')}}},[_c('div',{staticClass:\"slide-verify-slider-mask-item-icon\"})])]),_vm._v(\" \"),_c('span',{staticClass:\"slide-verify-slider-text\"},[_vm._v(_vm._s(_vm.sliderText))])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7b054e17\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/lib/slide-verify.vue\n// module id = 11\n// module chunks = 0"],"sourceRoot":""} |