(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("iview", [], factory); else if(typeof exports === 'object') exports["iview"] = factory(); else root["iview"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var _assign = __webpack_require__(1); var _assign2 = _interopRequireDefault(_assign); var _keys = __webpack_require__(38); var _keys2 = _interopRequireDefault(_keys); var _affix = __webpack_require__(42); var _affix2 = _interopRequireDefault(_affix); var _alert = __webpack_require__(50); var _alert2 = _interopRequireDefault(_alert); var _backTop = __webpack_require__(59); var _backTop2 = _interopRequireDefault(_backTop); var _badge = __webpack_require__(63); var _badge2 = _interopRequireDefault(_badge); var _breadcrumb = __webpack_require__(67); var _breadcrumb2 = _interopRequireDefault(_breadcrumb); var _button = __webpack_require__(74); var _button2 = _interopRequireDefault(_button); var _card = __webpack_require__(81); var _card2 = _interopRequireDefault(_card); var _checkbox = __webpack_require__(85); var _checkbox2 = _interopRequireDefault(_checkbox); var _circle = __webpack_require__(92); var _circle2 = _interopRequireDefault(_circle); var _collapse = __webpack_require__(96); var _collapse2 = _interopRequireDefault(_collapse); var _icon = __webpack_require__(53); var _icon2 = _interopRequireDefault(_icon); var _input = __webpack_require__(103); var _input2 = _interopRequireDefault(_input); var _inputNumber = __webpack_require__(107); var _inputNumber2 = _interopRequireDefault(_inputNumber); var _loadingBar = __webpack_require__(111); var _loadingBar2 = _interopRequireDefault(_loadingBar); var _message = __webpack_require__(117); var _message2 = _interopRequireDefault(_message); var _modal = __webpack_require__(125); var _modal2 = _interopRequireDefault(_modal); var _notice = __webpack_require__(130); var _notice2 = _interopRequireDefault(_notice); var _page = __webpack_require__(131); var _page2 = _interopRequireDefault(_page); var _poptip = __webpack_require__(184); var _poptip2 = _interopRequireDefault(_poptip); var _progress = __webpack_require__(189); var _progress2 = _interopRequireDefault(_progress); var _radio = __webpack_require__(193); var _radio2 = _interopRequireDefault(_radio); var _slider = __webpack_require__(200); var _slider2 = _interopRequireDefault(_slider); var _spin = __webpack_require__(207); var _spin2 = _interopRequireDefault(_spin); var _steps = __webpack_require__(211); var _steps2 = _interopRequireDefault(_steps); var _switch = __webpack_require__(218); var _switch2 = _interopRequireDefault(_switch); var _tag = __webpack_require__(222); var _tag2 = _interopRequireDefault(_tag); var _timeline = __webpack_require__(226); var _timeline2 = _interopRequireDefault(_timeline); var _tooltip = __webpack_require__(233); var _tooltip2 = _interopRequireDefault(_tooltip); var _layout = __webpack_require__(234); var _select = __webpack_require__(241); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var iview = { Affix: _affix2.default, Alert: _alert2.default, BackTop: _backTop2.default, Badge: _badge2.default, Breadcrumb: _breadcrumb2.default, BreadcrumbItem: _breadcrumb2.default.Item, iButton: _button2.default, ButtonGroup: _button2.default.Group, Card: _card2.default, Checkbox: _checkbox2.default, CheckboxGroup: _checkbox2.default.Group, Circle: _circle2.default, iCol: _layout.Col, Collapse: _collapse2.default, Icon: _icon2.default, iInput: _input2.default, InputNumber: _inputNumber2.default, LoadingBar: _loadingBar2.default, Message: _message2.default, Modal: _modal2.default, Notice: _notice2.default, iOption: _select.Option, OptionGroup: _select.OptionGroup, Page: _page2.default, Panel: _collapse2.default.Panel, Poptip: _poptip2.default, Progress: _progress2.default, Radio: _radio2.default, RadioGroup: _radio2.default.Group, Row: _layout.Row, iSelect: _select.Select, Slider: _slider2.default, Spin: _spin2.default, Step: _steps2.default.Step, Steps: _steps2.default, Switch: _switch2.default, Tag: _tag2.default, Timeline: _timeline2.default, TimelineItem: _timeline2.default.Item, Tooltip: _tooltip2.default }; var install = function install(Vue) { (0, _keys2.default)(iview).forEach(function (key) { Vue.component(key, iview[key]); }); }; if (typeof window !== 'undefined' && window.Vue) { install(window.Vue); }; module.exports = (0, _assign2.default)(iview, { install: install }); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(2), __esModule: true }; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(3); module.exports = __webpack_require__(6).Object.assign; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { // 19.1.3.1 Object.assign(target, source) var $export = __webpack_require__(4); $export($export.S + $export.F, 'Object', {assign: __webpack_require__(19)}); /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(5) , core = __webpack_require__(6) , ctx = __webpack_require__(7) , hide = __webpack_require__(9) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }, /* 5 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, /* 6 */ /***/ function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(8); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }, /* 8 */ /***/ function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(10) , createDesc = __webpack_require__(18); module.exports = __webpack_require__(14) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { var anObject = __webpack_require__(11) , IE8_DOM_DEFINE = __webpack_require__(13) , toPrimitive = __webpack_require__(17) , dP = Object.defineProperty; exports.f = __webpack_require__(14) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(12); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, /* 12 */ /***/ function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(14) && !__webpack_require__(15)(function(){ return Object.defineProperty(__webpack_require__(16)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 14 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(15)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 15 */ /***/ function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(12) , document = __webpack_require__(5).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; /***/ }, /* 17 */ /***/ function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(12); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }, /* 18 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }, /* 19 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; // 19.1.2.1 Object.assign(target, source, ...) var getKeys = __webpack_require__(20) , gOPS = __webpack_require__(35) , pIE = __webpack_require__(36) , toObject = __webpack_require__(37) , IObject = __webpack_require__(24) , $assign = Object.assign; // should work with symbols and should have deterministic property order (V8 bug) module.exports = !$assign || __webpack_require__(15)(function(){ var A = {} , B = {} , S = Symbol() , K = 'abcdefghijklmnopqrst'; A[S] = 7; K.split('').forEach(function(k){ B[k] = k; }); return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; }) ? function assign(target, source){ // eslint-disable-line no-unused-vars var T = toObject(target) , aLen = arguments.length , index = 1 , getSymbols = gOPS.f , isEnum = pIE.f; while(aLen > index){ var S = IObject(arguments[index++]) , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) , length = keys.length , j = 0 , key; while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; } return T; } : $assign; /***/ }, /* 20 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(21) , enumBugKeys = __webpack_require__(34); module.exports = Object.keys || function keys(O){ return $keys(O, enumBugKeys); }; /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { var has = __webpack_require__(22) , toIObject = __webpack_require__(23) , arrayIndexOf = __webpack_require__(27)(false) , IE_PROTO = __webpack_require__(31)('IE_PROTO'); module.exports = function(object, names){ var O = toIObject(object) , i = 0 , result = [] , key; for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); // Don't enum bug & hidden keys while(names.length > i)if(has(O, key = names[i++])){ ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }, /* 22 */ /***/ function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(24) , defined = __webpack_require__(26); module.exports = function(it){ return IObject(defined(it)); }; /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(25); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }, /* 25 */ /***/ function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }, /* 26 */ /***/ function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(23) , toLength = __webpack_require__(28) , toIndex = __webpack_require__(30); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(29) , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }, /* 29 */ /***/ function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(29) , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { var shared = __webpack_require__(32)('keys') , uid = __webpack_require__(33); module.exports = function(key){ return shared[key] || (shared[key] = uid(key)); }; /***/ }, /* 32 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(5) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }, /* 33 */ /***/ function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }, /* 34 */ /***/ function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }, /* 35 */ /***/ function(module, exports) { exports.f = Object.getOwnPropertySymbols; /***/ }, /* 36 */ /***/ function(module, exports) { exports.f = {}.propertyIsEnumerable; /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(26); module.exports = function(it){ return Object(defined(it)); }; /***/ }, /* 38 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(39), __esModule: true }; /***/ }, /* 39 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(40); module.exports = __webpack_require__(6).Object.keys; /***/ }, /* 40 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(37) , $keys = __webpack_require__(20); __webpack_require__(41)('keys', function(){ return function keys(it){ return $keys(toObject(it)); }; }); /***/ }, /* 41 */ /***/ function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(4) , core = __webpack_require__(6) , fails = __webpack_require__(15); module.exports = function(KEY, exec){ var fn = (core.Object || {})[KEY] || Object[KEY] , exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); }; /***/ }, /* 42 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _affix = __webpack_require__(43); var _affix2 = _interopRequireDefault(_affix); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _affix2.default; /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(44) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\affix\\affix.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(49) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-e45ea8a6/affix.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-affix'; function getScroll(target, top) { var prop = top ? 'pageYOffset' : 'pageXOffset'; var method = top ? 'scrollTop' : 'scrollLeft'; var ret = target[prop]; if (typeof ret !== 'number') { ret = window.document.documentElement[method]; } return ret; } function getOffset(element) { var rect = element.getBoundingClientRect(); var scrollTop = getScroll(window, true); var scrollLeft = getScroll(window); var docEl = window.document.body; var clientTop = docEl.clientTop || 0; var clientLeft = docEl.clientLeft || 0; return { top: rect.top + scrollTop - clientTop, left: rect.left + scrollLeft - clientLeft }; } exports.default = { props: { offsetTop: { type: Number, default: 0 }, offsetBottom: { type: Number } }, data: function data() { return { affix: false, styles: {} }; }, computed: { offsetType: function offsetType() { var type = 'top'; if (this.offsetBottom >= 0) { type = 'bottom'; } return type; }, classes: function classes() { return [(0, _defineProperty3.default)({}, '' + prefixCls, this.affix)]; } }, ready: function ready() { window.addEventListener('scroll', this.handleScroll, false); window.addEventListener('resize', this.handleScroll, false); }, beforeDestroy: function beforeDestroy() { window.removeEventListener('scroll', this.handleScroll, false); window.removeEventListener('resize', this.handleScroll, false); }, methods: { handleScroll: function handleScroll() { var affix = this.affix; var scrollTop = getScroll(window, true); var elOffset = getOffset(this.$el); var windowHeight = window.innerHeight; var elHeight = this.$el.getElementsByTagName('div')[0].offsetHeight; if (elOffset.top - this.offsetTop < scrollTop && this.offsetType == 'top' && !affix) { this.affix = true; this.styles = { top: this.offsetTop + 'px', left: elOffset.left + 'px', width: this.$el.offsetWidth + 'px' }; this.$emit('on-change', true); } else if (elOffset.top - this.offsetTop > scrollTop && this.offsetType == 'top' && affix) { this.affix = false; this.styles = null; this.$emit('on-change', false); } if (elOffset.top + this.offsetBottom + elHeight > scrollTop + windowHeight && this.offsetType == 'bottom' && !affix) { this.affix = true; this.styles = { bottom: this.offsetBottom + 'px', left: elOffset.left + 'px', width: this.$el.offsetWidth + 'px' }; this.$emit('on-change', true); } else if (elOffset.top + this.offsetBottom + elHeight < scrollTop + windowHeight && this.offsetType == 'bottom' && affix) { this.affix = false; this.styles = null; this.$emit('on-change', false); } } } }; /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _defineProperty = __webpack_require__(46); var _defineProperty2 = _interopRequireDefault(_defineProperty); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = function (obj, key, value) { if (key in obj) { (0, _defineProperty2.default)(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }; /***/ }, /* 46 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(47), __esModule: true }; /***/ }, /* 47 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(48); var $Object = __webpack_require__(6).Object; module.exports = function defineProperty(it, key, desc){ return $Object.defineProperty(it, key, desc); }; /***/ }, /* 48 */ /***/ function(module, exports, __webpack_require__) { var $export = __webpack_require__(4); // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) $export($export.S + $export.F * !__webpack_require__(14), 'Object', {defineProperty: __webpack_require__(10).f}); /***/ }, /* 49 */ /***/ function(module, exports) { module.exports = "\n
\n
\n \n
\n
\n"; /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _alert = __webpack_require__(51); var _alert2 = _interopRequireDefault(_alert); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _alert2.default; /***/ }, /* 51 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(52) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\alert\\alert.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(58) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-25b075c5/alert.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _icon = __webpack_require__(53); var _icon2 = _interopRequireDefault(_icon); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-alert'; exports.default = { components: { Icon: _icon2.default }, props: { type: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['success', 'info', 'warning', 'error']); }, default: 'info' }, closable: { type: Boolean, default: false }, showIcon: { type: Boolean, default: false } }, data: function data() { return { closed: false, desc: false }; }, computed: { wrapClasses: function wrapClasses() { var _ref; return ['' + prefixCls, prefixCls + '-' + this.type, (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-with-icon', this.showIcon), (0, _defineProperty3.default)(_ref, prefixCls + '-with-desc', this.desc), _ref)]; }, messageClasses: function messageClasses() { return prefixCls + '-message'; }, descClasses: function descClasses() { return prefixCls + '-desc'; }, closeClasses: function closeClasses() { return prefixCls + '-close'; }, iconClasses: function iconClasses() { return prefixCls + '-icon'; }, iconType: function iconType() { var type = ''; switch (this.type) { case 'success': type = 'checkmark-circled'; break; case 'info': type = 'information-circled'; break; case 'warning': type = 'android-alert'; break; case 'error': type = 'close-circled'; break; } return type; } }, methods: { close: function close(e) { this.closed = true; this.$emit('on-close', e); } }, compiled: function compiled() { this.desc = this.$els.desc.innerHTML != ''; } }; /***/ }, /* 53 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _icon = __webpack_require__(54); var _icon2 = _interopRequireDefault(_icon); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _icon2.default; /***/ }, /* 54 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(55) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\icon\\icon.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(56) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-1f8d2525/icon.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 55 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixCls = 'ivu-icon'; exports.default = { props: { type: String, size: [Number, String] }, computed: { classes: function classes() { return prefixCls + ' ' + prefixCls + '-' + this.type; }, styles: function styles() { if (!!this.size) { return { 'font-size': this.size + 'px' }; } else { return {}; } } } }; /***/ }, /* 56 */ /***/ function(module, exports) { module.exports = "\n\n"; /***/ }, /* 57 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.oneOf = oneOf; exports.camelcaseToHyphen = camelcaseToHyphen; exports.getScrollBarSize = getScrollBarSize; function oneOf(value, validList) { for (var i = 0; i < validList.length; i++) { if (value === validList[i]) { return true; } } return false; } function camelcaseToHyphen(str) { return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); } var cached = void 0; function getScrollBarSize(fresh) { if (fresh || cached === undefined) { var inner = document.createElement('div'); inner.style.width = '100%'; inner.style.height = '200px'; var outer = document.createElement('div'); var outerStyle = outer.style; outerStyle.position = 'absolute'; outerStyle.top = 0; outerStyle.left = 0; outerStyle.pointerEvents = 'none'; outerStyle.visibility = 'hidden'; outerStyle.width = '200px'; outerStyle.height = '150px'; outerStyle.overflow = 'hidden'; outer.appendChild(inner); document.body.appendChild(outer); var widthContained = inner.offsetWidth; outer.style.overflow = 'scroll'; var widthScroll = inner.offsetWidth; if (widthContained === widthScroll) { widthScroll = outer.clientWidth; } document.body.removeChild(outer); cached = widthContained - widthScroll; } return cached; } /***/ }, /* 58 */ /***/ function(module, exports) { module.exports = "\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n"; /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _backTop = __webpack_require__(60); var _backTop2 = _interopRequireDefault(_backTop); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _backTop2.default; /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(61) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\back-top\\back-top.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(62) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-54b2df65/back-top.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 61 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-back-top'; function getScroll(target, top) { var prop = top ? 'pageYOffset' : 'pageXOffset'; var method = top ? 'scrollTop' : 'scrollLeft'; var ret = target[prop]; if (typeof ret !== 'number') { ret = window.document.documentElement[method]; } return ret; } exports.default = { props: { height: { type: Number, default: 400 }, bottom: { type: Number, default: 30 }, right: { type: Number, default: 30 } }, data: function data() { return { backTop: false }; }, ready: function ready() { window.addEventListener('scroll', this.handleScroll, false); window.addEventListener('resize', this.handleScroll, false); }, beforeDestroy: function beforeDestroy() { window.removeEventListener('scroll', this.handleScroll, false); window.removeEventListener('resize', this.handleScroll, false); }, computed: { classes: function classes() { return ['' + prefixCls, (0, _defineProperty3.default)({}, prefixCls + '-show', this.backTop)]; }, styles: function styles() { return { bottom: this.bottom + 'px', right: this.right + 'px' }; }, innerClasses: function innerClasses() { return prefixCls + '-inner'; } }, methods: { handleScroll: function handleScroll() { var backTop = this.backTop; var scrollTop = getScroll(window, true); if (this.height <= scrollTop && !backTop) { this.backTop = true; } else if (this.height > scrollTop && backTop) { this.backTop = false; } }, back: function back() { window.scrollTo(0, 0); this.$emit('on-click'); } } }; /***/ }, /* 62 */ /***/ function(module, exports) { module.exports = "\n
\n \n
\n \n
\n
\n
\n"; /***/ }, /* 63 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _badge = __webpack_require__(64); var _badge2 = _interopRequireDefault(_badge); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _badge2.default; /***/ }, /* 64 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(65) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\badge\\badge.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(66) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-b8dd9bda/badge.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 65 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-badge'; exports.default = { props: { count: [Number, String], dot: { type: Boolean, default: false }, overflowCount: { type: [Number, String], default: 99 }, class: String }, computed: { classes: function classes() { return '' + prefixCls; }, dotClasses: function dotClasses() { return prefixCls + '-dot'; }, countClasses: function countClasses() { var _ref; return [prefixCls + '-count', (_ref = {}, (0, _defineProperty3.default)(_ref, '' + this.class, !!this.class), (0, _defineProperty3.default)(_ref, prefixCls + '-count-alone', this.alone), _ref)]; }, finalCount: function finalCount() { return parseInt(this.count) >= parseInt(this.overflowCount) ? this.overflowCount + '+' : this.count; }, badge: function badge() { var status = false; if (this.count) { status = !(parseInt(this.count) === 0); } if (this.dot) { status = true; if (this.count) { if (parseInt(this.count) === 0) { status = false; } } } return status; } }, data: function data() { return { alone: false }; }, compiled: function compiled() { var child_length = this.$els.badge.children.length; if (child_length === 1) { this.alone = true; } } }; /***/ }, /* 66 */ /***/ function(module, exports) { module.exports = "\n\n \n \n\n\n \n {{ finalCount }}\n\n"; /***/ }, /* 67 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _breadcrumb = __webpack_require__(68); var _breadcrumb2 = _interopRequireDefault(_breadcrumb); var _breadcrumbItem = __webpack_require__(71); var _breadcrumbItem2 = _interopRequireDefault(_breadcrumbItem); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _breadcrumb2.default.Item = _breadcrumbItem2.default; exports.default = _breadcrumb2.default; /***/ }, /* 68 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(69) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\breadcrumb\\breadcrumb.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(70) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-6fc829b6/breadcrumb.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 69 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixCls = 'ivu-breadcrumb'; exports.default = { props: { separator: { type: String, default: '/' } }, computed: { classes: function classes() { return '' + prefixCls; } }, compiled: function compiled() { this.updateChildren(); }, methods: { updateChildren: function updateChildren() { var _this = this; this.$children.forEach(function (child) { child.separator = _this.separator; }); } }, watch: { separator: function separator() { this.updateChildren(); } } }; /***/ }, /* 70 */ /***/ function(module, exports) { module.exports = "\n
\n \n
\n"; /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(72) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\breadcrumb\\breadcrumb-item.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(73) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-493f06eb/breadcrumb-item.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 72 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixCls = 'ivu-breadcrumb-item'; exports.default = { props: { href: { type: String }, separator: { type: String, default: '/' } }, computed: { linkClasses: function linkClasses() { return prefixCls + '-link'; }, separatorClasses: function separatorClasses() { return prefixCls + '-separator'; } } }; /***/ }, /* 73 */ /***/ function(module, exports) { module.exports = "\n\n \n \n \n \n \n \n \n {{{ separator }}}\n \n\n"; /***/ }, /* 74 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _button = __webpack_require__(75); var _button2 = _interopRequireDefault(_button); var _buttonGroup = __webpack_require__(78); var _buttonGroup2 = _interopRequireDefault(_buttonGroup); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _button2.default.Group = _buttonGroup2.default; exports.default = _button2.default; /***/ }, /* 75 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(76) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\button\\button.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(77) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-9a708476/button.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 76 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _icon = __webpack_require__(53); var _icon2 = _interopRequireDefault(_icon); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-btn'; var iconPrefixCls = 'ivu-icon'; exports.default = { components: { Icon: _icon2.default }, props: { type: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['primary', 'ghost', 'dashed', 'text']); } }, shape: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['circle', 'circle-outline']); } }, size: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['small', 'large']); } }, loading: Boolean, disabled: Boolean, htmlType: { default: 'button', validator: function validator(value) { return (0, _assist.oneOf)(value, ['button', 'submit', 'reset']); } }, icon: String }, data: function data() { return { showSlot: true }; }, computed: { classes: function classes() { var _ref; return ['' + prefixCls, (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.type, !!this.type), (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.shape, !!this.shape), (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.size, !!this.size), (0, _defineProperty3.default)(_ref, prefixCls + '-loading', this.loading != null && this.loading), (0, _defineProperty3.default)(_ref, prefixCls + '-icon-only', !this.showSlot && (!!this.icon || this.loading)), _ref)]; }, loadingIconClasses: function loadingIconClasses() { return iconPrefixCls + ' ivu-load-loop ' + iconPrefixCls + '-load-c'; }, typeIconClasses: function typeIconClasses() { return ['' + iconPrefixCls, (0, _defineProperty3.default)({}, iconPrefixCls + '-' + this.icon, !!this.icon)]; } }, ready: function ready() { this.showSlot = this.$els.slot.innerHTML !== ''; } }; /***/ }, /* 77 */ /***/ function(module, exports) { module.exports = "\n\n"; /***/ }, /* 78 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(79) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\button\\button-group.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(80) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-192f2d12/button-group.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 79 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-btn-group'; exports.default = { props: { size: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['small', 'large']); } }, shape: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['circle', 'circle-outline']); } } }, computed: { classes: function classes() { var _ref; return ['' + prefixCls, (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.size, !!this.size), (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.shape, !!this.shape), _ref)]; } } }; /***/ }, /* 80 */ /***/ function(module, exports) { module.exports = "\n
\n \n
\n"; /***/ }, /* 81 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _card = __webpack_require__(82); var _card2 = _interopRequireDefault(_card); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _card2.default; /***/ }, /* 82 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(83) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\card\\card.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(84) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-4f3508f6/card.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 83 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-card'; exports.default = { props: { bordered: { type: Boolean, default: true }, disHover: { type: Boolean, default: false }, shadow: { type: Boolean, default: false } }, data: function data() { return { showHead: true, showExtra: true }; }, computed: { classes: function classes() { var _ref; return ['' + prefixCls, (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-bordered', this.bordered && !this.shadow), (0, _defineProperty3.default)(_ref, prefixCls + '-dis-hover', this.disHover || this.shadow), (0, _defineProperty3.default)(_ref, prefixCls + '-shadow', this.shadow), _ref)]; }, headClasses: function headClasses() { return prefixCls + '-head'; }, extraClasses: function extraClasses() { return prefixCls + '-extra'; }, bodyClasses: function bodyClasses() { return prefixCls + '-body'; } }, compiled: function compiled() { this.showHead = this.$els.head.innerHTML != ''; this.showExtra = this.$els.extra.innerHTML != ''; } }; /***/ }, /* 84 */ /***/ function(module, exports) { module.exports = "\n
\n
\n
\n
\n
\n"; /***/ }, /* 85 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _checkbox = __webpack_require__(86); var _checkbox2 = _interopRequireDefault(_checkbox); var _checkboxGroup = __webpack_require__(89); var _checkboxGroup2 = _interopRequireDefault(_checkboxGroup); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _checkbox2.default.Group = _checkboxGroup2.default; exports.default = _checkbox2.default; /***/ }, /* 86 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(87) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\checkbox\\checkbox.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(88) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-8b0b8436/checkbox.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 87 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-checkbox'; exports.default = { props: { disabled: { type: Boolean, default: false }, value: { type: [String, Number, Boolean] }, checked: { type: Boolean, default: false } }, data: function data() { return { model: [], selected: false, group: false }; }, computed: { wrapClasses: function wrapClasses() { var _ref; return [prefixCls + '-wrapper', (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-group-item', this.group), (0, _defineProperty3.default)(_ref, prefixCls + '-wrapper-checked', this.selected), (0, _defineProperty3.default)(_ref, prefixCls + '-wrapper-disabled', this.disabled), _ref)]; }, checkboxClasses: function checkboxClasses() { var _ref2; return ['' + prefixCls, (_ref2 = {}, (0, _defineProperty3.default)(_ref2, prefixCls + '-checked', this.selected), (0, _defineProperty3.default)(_ref2, prefixCls + '-disabled', this.disabled), _ref2)]; }, innerClasses: function innerClasses() { return prefixCls + '-inner'; }, inputClasses: function inputClasses() { return prefixCls + '-input'; } }, ready: function ready() { if (!this.group) { this.updateModel(); } }, methods: { change: function change(event) { if (this.disabled) { return false; } this.selected = event.target.checked; if (this.group) { this.$parent.change(this.model); } else { this.$emit('on-change', this.checked); } }, updateModel: function updateModel() { this.selected = this.checked; } }, watch: { checked: function checked() { this.updateModel(); } } }; /***/ }, /* 88 */ /***/ function(module, exports) { module.exports = "\n\n"; /***/ }, /* 89 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(90) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\checkbox\\checkbox-group.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(91) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-affb5cd2/checkbox-group.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 90 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixCls = 'ivu-checkbox-group'; exports.default = { props: { model: { type: Array, default: [] } }, computed: { classes: function classes() { return '' + prefixCls; } }, compiled: function compiled() { this.updateModel(true); }, methods: { updateModel: function updateModel(update) { var model = this.model; this.$children.forEach(function (child) { child.model = model; if (update) { child.selected = model.indexOf(child.value) >= 0; child.group = true; } }); }, change: function change(data) { this.model = data; this.$emit('on-change', data); } }, watch: { model: function model(val, oldVal) { if (val == oldVal) { this.updateModel(); } else { this.updateModel(true); } } } }; /***/ }, /* 91 */ /***/ function(module, exports) { module.exports = "\n
\n \n
\n"; /***/ }, /* 92 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _circle = __webpack_require__(93); var _circle2 = _interopRequireDefault(_circle); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _circle2.default; /***/ }, /* 93 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(94) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\circle\\circle.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(95) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-54ccb005/circle.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 94 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _assist = __webpack_require__(57); var prefixCls = 'ivu-chart-circle'; exports.default = { props: { percent: { type: Number, default: 0 }, size: { type: Number, default: 120 }, strokeWidth: { type: Number, default: 6 }, strokeColor: { type: String, default: '#2db7f5' }, strokeLinecap: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['square', 'round']); }, default: 'round' }, trailWidth: { type: Number, default: 5 }, trailColor: { type: String, default: '#eaeef2' } }, computed: { circleSize: function circleSize() { return { width: this.size + 'px', height: this.size + 'px' }; }, radius: function radius() { return 50 - this.strokeWidth / 2; }, pathString: function pathString() { return 'M 50,50 m 0,-' + this.radius + '\n a ' + this.radius + ',' + this.radius + ' 0 1 1 0,' + 2 * this.radius + '\n a ' + this.radius + ',' + this.radius + ' 0 1 1 0,-' + 2 * this.radius; }, len: function len() { return Math.PI * 2 * this.radius; }, pathStyle: function pathStyle() { return { 'stroke-dasharray': this.len + 'px ' + this.len + 'px', 'stroke-dashoffset': (100 - this.percent) / 100 * this.len + 'px', 'transition': 'stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease' }; }, wrapClasses: function wrapClasses() { return '' + prefixCls; }, innerClasses: function innerClasses() { return prefixCls + '-inner'; } } }; /***/ }, /* 95 */ /***/ function(module, exports) { module.exports = "\n
\n \n \n \n \n
\n \n
\n
\n"; /***/ }, /* 96 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _collapse = __webpack_require__(97); var _collapse2 = _interopRequireDefault(_collapse); var _panel = __webpack_require__(100); var _panel2 = _interopRequireDefault(_panel); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _collapse2.default.Panel = _panel2.default; exports.default = _collapse2.default; /***/ }, /* 97 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(98) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\collapse\\collapse.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(99) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-3e3de525/collapse.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 98 */ /***/ function(module, exports) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var prefixCls = 'ivu-collapse'; exports.default = { props: { accordion: { type: Boolean, default: false }, activeKey: { type: [Array, String] } }, computed: { classes: function classes() { return '' + prefixCls; } }, compiled: function compiled() { this.setActive(); }, methods: { setActive: function setActive() { var activeKey = this.getActiveKey(); this.$children.forEach(function (child, index) { var key = child.key || index.toString(); var isActive = false; if (self.accordion) { isActive = activeKey === key; } else { isActive = activeKey.indexOf(key) > -1; } child.isActive = isActive; child.index = index; }); }, getActiveKey: function getActiveKey() { var activeKey = this.activeKey || []; var accordion = this.accordion; if (!Array.isArray(activeKey)) { activeKey = [activeKey]; } if (accordion && activeKey.length > 1) { activeKey = [activeKey[0]]; } for (var i = 0; i < activeKey.length; i++) { activeKey[i] = activeKey[i].toString(); } return activeKey; }, toggle: function toggle(data) { var key = data.key.toString(); var newActiveKey = []; if (this.accordion) { if (!data.isActive) { newActiveKey.push(key); } } else { var activeKey = this.getActiveKey(); var keyIndex = activeKey.indexOf(key); if (data.isActive) { if (keyIndex > -1) { activeKey.splice(keyIndex, 1); } } else { if (keyIndex < 0) { activeKey.push(key); } } newActiveKey = activeKey; } this.activeKey = newActiveKey; this.$emit('on-change', newActiveKey); } }, watch: { activeKey: function activeKey() { this.setActive(); } } }; /***/ }, /* 99 */ /***/ function(module, exports) { module.exports = "\n
\n \n
\n"; /***/ }, /* 100 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(101) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\collapse\\panel.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(102) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-7af8693c/panel.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 101 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _icon = __webpack_require__(53); var _icon2 = _interopRequireDefault(_icon); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-collapse'; exports.default = { components: { Icon: _icon2.default }, props: { key: { type: String } }, data: function data() { return { index: 0, isActive: false }; }, computed: { itemClasses: function itemClasses() { return [prefixCls + '-item', (0, _defineProperty3.default)({}, prefixCls + '-item-active', this.isActive)]; }, headerClasses: function headerClasses() { return prefixCls + '-header'; }, concentClasses: function concentClasses() { return prefixCls + '-content'; }, boxClasses: function boxClasses() { return prefixCls + '-content-box'; } }, methods: { toggle: function toggle() { this.$parent.toggle({ key: this.key || this.index, isActive: this.isActive }); } } }; /***/ }, /* 102 */ /***/ function(module, exports) { module.exports = "\n
\n
\n \n \n
\n
\n
\n
\n
\n"; /***/ }, /* 103 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _input = __webpack_require__(104); var _input2 = _interopRequireDefault(_input); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _input2.default; /***/ }, /* 104 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(105) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\input\\input.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(106) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-68330bbe/input.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 105 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-input'; exports.default = { props: { type: { type: String, default: 'text' }, value: { type: [String, Number], default: '', twoWay: true }, placeholder: String, name: String, size: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['small', 'large']); } } }, data: function data() { return {}; }, computed: { classes: function classes() { return ['' + prefixCls, (0, _defineProperty3.default)({}, prefixCls + '-' + this.size, !!this.size)]; } } }; /***/ }, /* 106 */ /***/ function(module, exports) { module.exports = "\n\n"; /***/ }, /* 107 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _inputNumber = __webpack_require__(108); var _inputNumber2 = _interopRequireDefault(_inputNumber); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _inputNumber2.default; /***/ }, /* 108 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(109) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\input-number\\input-number.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(110) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-c12ba9f6/input-number.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 109 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-input-number'; var iconPrefixCls = 'ivu-icon'; function isValueNumber(value) { return (/(^-?[0-9]+\.{1}\d+$)|(^-?[1-9][0-9]*$)/.test(value + '') ); } function addNum(num1, num2) { var sq1, sq2, m; try { sq1 = num1.toString().split(".")[1].length; } catch (e) { sq1 = 0; } try { sq2 = num2.toString().split(".")[1].length; } catch (e) { sq2 = 0; } m = Math.pow(10, Math.max(sq1, sq2)); return (num1 * m + num2 * m) / m; } exports.default = { props: { max: { type: Number, default: Infinity }, min: { type: Number, default: -Infinity }, step: { type: Number, default: 1 }, value: { type: Number, default: 1 }, size: { validator: function validator(value) { return (0, _assist.oneOf)(value, ['small', 'large']); } }, disabled: { type: Boolean, default: false } }, data: function data() { return { focused: false, upDisabled: false, downDisabled: false }; }, computed: { wrapClasses: function wrapClasses() { var _ref; return ['' + prefixCls, (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-' + this.size, !!this.size), (0, _defineProperty3.default)(_ref, prefixCls + '-disabled', this.disabled), (0, _defineProperty3.default)(_ref, prefixCls + '-focused', this.focused), _ref)]; }, handlerClasses: function handlerClasses() { return prefixCls + '-handler-wrap'; }, upClasses: function upClasses() { return [prefixCls + '-handler', prefixCls + '-handler-up', (0, _defineProperty3.default)({}, prefixCls + '-handler-up-disabled', this.upDisabled)]; }, innerUpClasses: function innerUpClasses() { return prefixCls + '-handler-up-inner ' + iconPrefixCls + ' ' + iconPrefixCls + '-ios-arrow-up'; }, downClasses: function downClasses() { return [prefixCls + '-handler', prefixCls + '-handler-down', (0, _defineProperty3.default)({}, prefixCls + '-handler-down-disabled', this.downDisabled)]; }, innerDownClasses: function innerDownClasses() { return prefixCls + '-handler-down-inner ' + iconPrefixCls + ' ' + iconPrefixCls + '-ios-arrow-down'; }, inputWrapClasses: function inputWrapClasses() { return prefixCls + '-input-wrap'; }, inputClasses: function inputClasses() { return prefixCls + '-input'; } }, methods: { preventDefault: function preventDefault(e) { e.preventDefault(); }, up: function up() { if (this.upDisabled) { return false; } this.changeStep('up'); }, down: function down() { if (this.downDisabled) { return false; } this.changeStep('down'); }, changeStep: function changeStep(type) { if (this.disabled) { return false; } var val = Number(this.value); var step = Number(this.step); if (isNaN(val)) { return false; } if (type == 'up') { val = addNum(val, step); } else if (type == 'down') { val = addNum(val, -step); } this.setValue(val); }, setValue: function setValue(val) { var _this = this; this.$nextTick(function () { _this.value = val; }); this.$emit('on-change', val); }, focus: function focus() { this.focused = true; }, blur: function blur() { this.focused = false; }, keyDown: function keyDown(e) { if (e.keyCode === 38) { e.preventDefault(); this.up(); } else if (e.keyCode === 40) { e.preventDefault(); this.down(); } }, change: function change(event) { var val = event.target.value.trim(); var max = this.max; var min = this.min; if (isValueNumber(val)) { val = Number(val); this.value = val; if (val > max) { this.setValue(max); } else if (val < min) { this.setValue(min); } else { this.setValue(val); } } else { event.target.value = this.value; } }, changeVal: function changeVal(val) { if (isValueNumber(val) || val === 0) { val = Number(val); var step = this.step; this.upDisabled = val + step > this.max; this.downDisabled = val - step < this.min; } else { this.upDisabled = true; this.downDisabled = true; } } }, ready: function ready() { this.changeVal(this.value); }, watch: { value: function value(val) { this.changeVal(val); } } }; /***/ }, /* 110 */ /***/ function(module, exports) { module.exports = "\n
\n
\n \n \n \n \n \n \n
\n
\n \n
\n
\n"; /***/ }, /* 111 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _loadingBar = __webpack_require__(112); var _loadingBar2 = _interopRequireDefault(_loadingBar); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var loadingBarInstance = void 0; var color = 'primary'; var failedColor = 'error'; var height = 2; var timer = void 0; function getLoadingBarInstance() { loadingBarInstance = loadingBarInstance || _loadingBar2.default.newInstance({ color: color, failedColor: failedColor, height: height }); return loadingBarInstance; } function _update(options) { var instance = getLoadingBarInstance(); instance.update(options); } function hide() { setTimeout(function () { _update({ show: false }); setTimeout(function () { _update({ percent: 0 }); }, 200); }, 800); } function clearTimer() { if (timer) { clearInterval(timer); timer = null; } } exports.default = { start: function start() { var percent = 0; _update({ percent: percent, status: 'success', show: true }); timer = setInterval(function () { percent += Math.floor(Math.random() * 3 + 5); if (percent > 95) { clearTimer(); } _update({ percent: percent, status: 'success', show: true }); }, 200); }, update: function update(percent) { clearTimer(); _update({ percent: percent, status: 'success', show: true }); }, finish: function finish() { clearTimer(); _update({ percent: 100, status: 'success', show: true }); hide(); }, error: function error() { clearTimer(); _update({ percent: 100, status: 'error', show: true }); hide(); }, config: function config(options) { if (options.color) { color = options.color; } if (options.failedColor) { failedColor = options.failedColor; } if (options.height) { height = options.height; } }, destroy: function destroy() { clearTimer(); var instance = getLoadingBarInstance(); loadingBarInstance = null; instance.destroy(); } }; /***/ }, /* 112 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = __webpack_require__(38); var _keys2 = _interopRequireDefault(_keys); var _loadingBar = __webpack_require__(113); var _loadingBar2 = _interopRequireDefault(_loadingBar); var _vue = __webpack_require__(116); var _vue2 = _interopRequireDefault(_vue); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _loadingBar2.default.newInstance = function (properties) { var _props = properties || {}; var props = ''; (0, _keys2.default)(_props).forEach(function (prop) { props += ' :' + (0, _assist.camelcaseToHyphen)(prop) + '=' + prop; }); var div = document.createElement('div'); div.innerHTML = ''; document.body.appendChild(div); var loading_bar = new _vue2.default({ el: div, data: _props, components: { LoadingBar: _loadingBar2.default } }).$children[0]; return { update: function update(options) { if ('percent' in options) { loading_bar.percent = options.percent; } if (options.status) { loading_bar.status = options.status; } if ('show' in options) { loading_bar.show = options.show; } }, component: loading_bar, destroy: function destroy() { document.body.removeChild(div); } }; }; exports.default = _loadingBar2.default; /***/ }, /* 113 */ /***/ function(module, exports, __webpack_require__) { var __vue_script__, __vue_template__ var __vue_styles__ = {} __vue_script__ = __webpack_require__(114) if (__vue_script__ && __vue_script__.__esModule && Object.keys(__vue_script__).length > 1) { console.warn("[vue-loader] src\\components\\loading-bar\\loading-bar.vue: named exports in *.vue files are ignored.")} __vue_template__ = __webpack_require__(115) module.exports = __vue_script__ || {} if (module.exports.__esModule) module.exports = module.exports.default var __vue_options__ = typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports if (__vue_template__) { __vue_options__.template = __vue_template__ } if (!__vue_options__.computed) __vue_options__.computed = {} Object.keys(__vue_styles__).forEach(function (key) { var module = __vue_styles__[key] __vue_options__.computed[key] = function () { return module } }) if (false) {(function () { module.hot.accept() var hotAPI = require("vue-hot-reload-api") hotAPI.install(require("vue"), false) if (!hotAPI.compatible) return var id = "_v-f209aade/loading-bar.vue" if (!module.hot.data) { hotAPI.createRecord(id, module.exports) } else { hotAPI.update(id, module.exports, __vue_template__) } })()} /***/ }, /* 114 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__(45); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _assist = __webpack_require__(57); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var prefixCls = 'ivu-loading-bar'; exports.default = { props: { percent: { type: Number, default: 0 }, color: { type: String, default: 'primary' }, failedColor: { type: String, default: 'error' }, height: { type: Number, default: 2 }, status: { type: String, validator: function validator(value) { return (0, _assist.oneOf)(value, ['success', 'error']); }, default: 'success' }, show: { type: Boolean, default: false } }, computed: { classes: function classes() { return '' + prefixCls; }, innerClasses: function innerClasses() { var _ref; return [prefixCls + '-inner', (_ref = {}, (0, _defineProperty3.default)(_ref, prefixCls + '-inner-color-primary', this.color === 'primary' && this.status === 'success'), (0, _defineProperty3.default)(_ref, prefixCls + '-inner-failed-color-error', this.failedColor === 'error' && this.status === 'error'), _ref)]; }, outerStyles: function outerStyles() { return { height: this.height + 'px' }; }, styles: function styles() { var style = { width: this.percent + '%', height: this.height + 'px' }; if (this.color !== 'primary' && this.status === 'success') { style.backgroundColor = this.color; } if (this.failedColor !== 'error' && this.status === 'error') { style.backgroundColor = this.failedColor; } return style; } } }; /***/ }, /* 115 */ /***/ function(module, exports) { module.exports = "\n
\n
\n
\n"; /***/ }, /* 116 */ /***/ function(module, exports, __webpack_require__) { /*! * Vue.js v1.0.28 * (c) 2016 Evan You * Released under the MIT License. */ 'use strict'; function set(obj, key, val) { if (hasOwn(obj, key)) { obj[key] = val; return; } if (obj._isVue) { set(obj._data, key, val); return; } var ob = obj.__ob__; if (!ob) { obj[key] = val; return; } ob.convert(key, val); ob.dep.notify(); if (ob.vms) { var i = ob.vms.length; while (i--) { var vm = ob.vms[i]; vm._proxy(key); vm._digest(); } } return val; } /** * Delete a property and trigger change if necessary. * * @param {Object} obj * @param {String} key */ function del(obj, key) { if (!hasOwn(obj, key)) { return; } delete obj[key]; var ob = obj.__ob__; if (!ob) { if (obj._isVue) { delete obj._data[key]; obj._digest(); } return; } ob.dep.notify(); if (ob.vms) { var i = ob.vms.length; while (i--) { var vm = ob.vms[i]; vm._unproxy(key); vm._digest(); } } } var hasOwnProperty = Object.prototype.hasOwnProperty; /** * Check whether the object has the property. * * @param {Object} obj * @param {String} key * @return {Boolean} */ function hasOwn(obj, key) { return hasOwnProperty.call(obj, key); } /** * Check if an expression is a literal value. * * @param {String} exp * @return {Boolean} */ var literalValueRE = /^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/; function isLiteral(exp) { return literalValueRE.test(exp); } /** * Check if a string starts with $ or _ * * @param {String} str * @return {Boolean} */ function isReserved(str) { var c = (str + '').charCodeAt(0); return c === 0x24 || c === 0x5F; } /** * Guard text output, make sure undefined outputs * empty string * * @param {*} value * @return {String} */ function _toString(value) { return value == null ? '' : value.toString(); } /** * Check and convert possible numeric strings to numbers * before setting back to data * * @param {*} value * @return {*|Number} */ function toNumber(value) { if (typeof value !== 'string') { return value; } else { var parsed = Number(value); return isNaN(parsed) ? value : parsed; } } /** * Convert string boolean literals into real booleans. * * @param {*} value * @return {*|Boolean} */ function toBoolean(value) { return value === 'true' ? true : value === 'false' ? false : value; } /** * Strip quotes from a string * * @param {String} str * @return {String | false} */ function stripQuotes(str) { var a = str.charCodeAt(0); var b = str.charCodeAt(str.length - 1); return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str; } /** * Camelize a hyphen-delimited string. * * @param {String} str * @return {String} */ var camelizeRE = /-(\w)/g; function camelize(str) { return str.replace(camelizeRE, toUpper); } function toUpper(_, c) { return c ? c.toUpperCase() : ''; } /** * Hyphenate a camelCase string. * * @param {String} str * @return {String} */ var hyphenateRE = /([^-])([A-Z])/g; function hyphenate(str) { return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase(); } /** * Converts hyphen/underscore/slash delimitered names into * camelized classNames. * * e.g. my-component => MyComponent * some_else => SomeElse * some/comp => SomeComp * * @param {String} str * @return {String} */ var classifyRE = /(?:^|[-_\/])(\w)/g; function classify(str) { return str.replace(classifyRE, toUpper); } /** * Simple bind, faster than native * * @param {Function} fn * @param {Object} ctx * @return {Function} */ function bind(fn, ctx) { return function (a) { var l = arguments.length; return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx); }; } /** * Convert an Array-like object to a real Array. * * @param {Array-like} list * @param {Number} [start] - start index * @return {Array} */ function toArray(list, start) { start = start || 0; var i = list.length - start; var ret = new Array(i); while (i--) { ret[i] = list[i + start]; } return ret; } /** * Mix properties into target object. * * @param {Object} to * @param {Object} from */ function extend(to, from) { var keys = Object.keys(from); var i = keys.length; while (i--) { to[keys[i]] = from[keys[i]]; } return to; } /** * Quick object check - this is primarily used to tell * Objects from primitive values when we know the value * is a JSON-compliant type. * * @param {*} obj * @return {Boolean} */ function isObject(obj) { return obj !== null && typeof obj === 'object'; } /** * Strict object type check. Only returns true * for plain JavaScript objects. * * @param {*} obj * @return {Boolean} */ var toString = Object.prototype.toString; var OBJECT_STRING = '[object Object]'; function isPlainObject(obj) { return toString.call(obj) === OBJECT_STRING; } /** * Array type check. * * @param {*} obj * @return {Boolean} */ var isArray = Array.isArray; /** * Define a property. * * @param {Object} obj * @param {String} key * @param {*} val * @param {Boolean} [enumerable] */ function def(obj, key, val, enumerable) { Object.defineProperty(obj, key, { value: val, enumerable: !!enumerable, writable: true, configurable: true }); } /** * Debounce a function so it only gets called after the * input stops arriving after the given wait period. * * @param {Function} func * @param {Number} wait * @return {Function} - the debounced function */ function _debounce(func, wait) { var timeout, args, context, timestamp, result; var later = function later() { var last = Date.now() - timestamp; if (last < wait && last >= 0) { timeout = setTimeout(later, wait - last); } else { timeout = null; result = func.apply(context, args); if (!timeout) context = args = null; } }; return function () { context = this; args = arguments; timestamp = Date.now(); if (!timeout) { timeout = setTimeout(later, wait); } return result; }; } /** * Manual indexOf because it's slightly faster than * native. * * @param {Array} arr * @param {*} obj */ function indexOf(arr, obj) { var i = arr.length; while (i--) { if (arr[i] === obj) return i; } return -1; } /** * Make a cancellable version of an async callback. * * @param {Function} fn * @return {Function} */ function cancellable(fn) { var cb = function cb() { if (!cb.cancelled) { return fn.apply(this, arguments); } }; cb.cancel = function () { cb.cancelled = true; }; return cb; } /** * Check if two values are loosely equal - that is, * if they are plain objects, do they have the same shape? * * @param {*} a * @param {*} b * @return {Boolean} */ function looseEqual(a, b) { /* eslint-disable eqeqeq */ return a == b || (isObject(a) && isObject(b) ? JSON.stringify(a) === JSON.stringify(b) : false); /* eslint-enable eqeqeq */ } var hasProto = ('__proto__' in {}); // Browser environment sniffing var inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]'; // detect devtools var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; // UA sniffing for working around browser-specific quirks var UA = inBrowser && window.navigator.userAgent.toLowerCase(); var isIE = UA && UA.indexOf('trident') > 0; var isIE9 = UA && UA.indexOf('msie 9.0') > 0; var isAndroid = UA && UA.indexOf('android') > 0; var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); var transitionProp = undefined; var transitionEndEvent = undefined; var animationProp = undefined; var animationEndEvent = undefined; // Transition property/event sniffing if (inBrowser && !isIE9) { var isWebkitTrans = window.ontransitionend === undefined && window.onwebkittransitionend !== undefined; var isWebkitAnim = window.onanimationend === undefined && window.onwebkitanimationend !== undefined; transitionProp = isWebkitTrans ? 'WebkitTransition' : 'transition'; transitionEndEvent = isWebkitTrans ? 'webkitTransitionEnd' : 'transitionend'; animationProp = isWebkitAnim ? 'WebkitAnimation' : 'animation'; animationEndEvent = isWebkitAnim ? 'webkitAnimationEnd' : 'animationend'; } /* istanbul ignore next */ function isNative(Ctor) { return (/native code/.test(Ctor.toString()) ); } /** * Defer a task to execute it asynchronously. Ideally this * should be executed as a microtask, so we leverage * MutationObserver if it's available, and fallback to * setTimeout(0). * * @param {Function} cb * @param {Object} ctx */ var nextTick = (function () { var callbacks = []; var pending = false; var timerFunc = undefined; function nextTickHandler() { pending = false; var copies = callbacks.slice(0); callbacks.length = 0; for (var i = 0; i < copies.length; i++) { copies[i](); } } // the nextTick behavior leverages the microtask queue, which can be accessed // via either native Promise.then or MutationObserver. // MutationObserver has wider support, however it is seriously bugged in // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It // completely stops working after triggering a few times... so, if native // Promise is available, we will use it: /* istanbul ignore if */ if (typeof Promise !== 'undefined' && isNative(Promise)) { var p = Promise.resolve(); var noop = function noop() {}; timerFunc = function () { p.then(nextTickHandler); // in problematic UIWebViews, Promise.then doesn't completely break, but // it can get stuck in a weird state where callbacks are pushed into the // microtask queue but the queue isn't being flushed, until the browser // needs to do some other work, e.g. handle a timer. Therefore we can // "force" the microtask queue to be flushed by adding an empty timer. if (isIOS) setTimeout(noop); }; } else if (typeof MutationObserver !== 'undefined') { // use MutationObserver where native Promise is not available, // e.g. IE11, iOS7, Android 4.4 var counter = 1; var observer = new MutationObserver(nextTickHandler); var textNode = document.createTextNode(String(counter)); observer.observe(textNode, { characterData: true }); timerFunc = function () { counter = (counter + 1) % 2; textNode.data = String(counter); }; } else { // fallback to setTimeout /* istanbul ignore next */ timerFunc = setTimeout; } return function (cb, ctx) { var func = ctx ? function () { cb.call(ctx); } : cb; callbacks.push(func); if (pending) return; pending = true; timerFunc(nextTickHandler, 0); }; })(); var _Set = undefined; /* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { // use native Set when available. _Set = Set; } else { // a non-standard Set polyfill that only works with primitive keys. _Set = function () { this.set = Object.create(null); }; _Set.prototype.has = function (key) { return this.set[key] !== undefined; }; _Set.prototype.add = function (key) { this.set[key] = 1; }; _Set.prototype.clear = function () { this.set = Object.create(null); }; } function Cache(limit) { this.size = 0; this.limit = limit; this.head = this.tail = undefined; this._keymap = Object.create(null); } var p = Cache.prototype; /** * Put into the cache associated with . * Returns the entry which was removed to make room for * the new entry. Otherwise undefined is returned. * (i.e. if there was enough room already). * * @param {String} key * @param {*} value * @return {Entry|undefined} */ p.put = function (key, value) { var removed; var entry = this.get(key, true); if (!entry) { if (this.size === this.limit) { removed = this.shift(); } entry = { key: key }; this._keymap[key] = entry; if (this.tail) { this.tail.newer = entry; entry.older = this.tail; } else { this.head = entry; } this.tail = entry; this.size++; } entry.value = value; return removed; }; /** * Purge the least recently used (oldest) entry from the * cache. Returns the removed entry or undefined if the * cache was empty. */ p.shift = function () { var entry = this.head; if (entry) { this.head = this.head.newer; this.head.older = undefined; entry.newer = entry.older = undefined; this._keymap[entry.key] = undefined; this.size--; } return entry; }; /** * Get and register recent use of . Returns the value * associated with or undefined if not in cache. * * @param {String} key * @param {Boolean} returnEntry * @return {Entry|*} */ p.get = function (key, returnEntry) { var entry = this._keymap[key]; if (entry === undefined) return; if (entry === this.tail) { return returnEntry ? entry : entry.value; } // HEAD--------------TAIL // <.older .newer> // <--- add direction -- // A B C E if (entry.newer) { if (entry === this.head) { this.head = entry.newer; } entry.newer.older = entry.older; // C <-- E. } if (entry.older) { entry.older.newer = entry.newer; // C. --> E } entry.newer = undefined; // D --x entry.older = this.tail; // D. --> E if (this.tail) { this.tail.newer = entry; // E. <-- D } this.tail = entry; return returnEntry ? entry : entry.value; }; var cache$1 = new Cache(1000); var reservedArgRE = /^in$|^-?\d+/; /** * Parser state */ var str; var dir; var len; var index; var chr; var state; var startState = 0; var filterState = 1; var filterNameState = 2; var filterArgState = 3; var doubleChr = 0x22; var singleChr = 0x27; var pipeChr = 0x7C; var escapeChr = 0x5C; var spaceChr = 0x20; var expStartChr = { 0x5B: 1, 0x7B: 1, 0x28: 1 }; var expChrPair = { 0x5B: 0x5D, 0x7B: 0x7D, 0x28: 0x29 }; function peek() { return str.charCodeAt(index + 1); } function next() { return str.charCodeAt(++index); } function eof() { return index >= len; } function eatSpace() { while (peek() === spaceChr) { next(); } } function isStringStart(chr) { return chr === doubleChr || chr === singleChr; } function isExpStart(chr) { return expStartChr[chr]; } function isExpEnd(start, chr) { return expChrPair[start] === chr; } function parseString() { var stringQuote = next(); var chr; while (!eof()) { chr = next(); // escape char if (chr === escapeChr) { next(); } else if (chr === stringQuote) { break; } } } function parseSpecialExp(chr) { var inExp = 0; var startChr = chr; while (!eof()) { chr = peek(); if (isStringStart(chr)) { parseString(); continue; } if (startChr === chr) { inExp++; } if (isExpEnd(startChr, chr)) { inExp--; } next(); if (inExp === 0) { break; } } } /** * syntax: * expression | filterName [arg arg [| filterName arg arg]] */ function parseExpression() { var start = index; while (!eof()) { chr = peek(); if (isStringStart(chr)) { parseString(); } else if (isExpStart(chr)) { parseSpecialExp(chr); } else if (chr === pipeChr) { next(); chr = peek(); if (chr === pipeChr) { next(); } else { if (state === startState || state === filterArgState) { state = filterState; } break; } } else if (chr === spaceChr && (state === filterNameState || state === filterArgState)) { eatSpace(); break; } else { if (state === filterState) { state = filterNameState; } next(); } } return str.slice(start + 1, index) || null; } function parseFilterList() { var filters = []; while (!eof()) { filters.push(parseFilter()); } return filters; } function parseFilter() { var filter = {}; var args; state = filterState; filter.name = parseExpression().trim(); state = filterArgState; args = parseFilterArguments(); if (args.length) { filter.args = args; } return filter; } function parseFilterArguments() { var args = []; while (!eof() && state !== filterState) { var arg = parseExpression(); if (!arg) { break; } args.push(processFilterArg(arg)); } return args; } /** * Check if an argument is dynamic and strip quotes. * * @param {String} arg * @return {Object} */ function processFilterArg(arg) { if (reservedArgRE.test(arg)) { return { value: toNumber(arg), dynamic: false }; } else { var stripped = stripQuotes(arg); var dynamic = stripped === arg; return { value: dynamic ? arg : stripped, dynamic: dynamic }; } } /** * Parse a directive value and extract the expression * and its filters into a descriptor. * * Example: * * "a + 1 | uppercase" will yield: * { * expression: 'a + 1', * filters: [ * { name: 'uppercase', args: null } * ] * } * * @param {String} s * @return {Object} */ function parseDirective(s) { var hit = cache$1.get(s); if (hit) { return hit; } // reset parser state str = s; dir = {}; len = str.length; index = -1; chr = ''; state = startState; var filters; if (str.indexOf('|') < 0) { dir.expression = str.trim(); } else { dir.expression = parseExpression().trim(); filters = parseFilterList(); if (filters.length) { dir.filters = filters; } } cache$1.put(s, dir); return dir; } var directive = Object.freeze({ parseDirective: parseDirective }); var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; var cache = undefined; var tagRE = undefined; var htmlRE = undefined; /** * Escape a string so it can be used in a RegExp * constructor. * * @param {String} str */ function escapeRegex(str) { return str.replace(regexEscapeRE, '\\$&'); } function compileRegex() { var open = escapeRegex(config.delimiters[0]); var close = escapeRegex(config.delimiters[1]); var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]); var unsafeClose = escapeRegex(config.unsafeDelimiters[1]); tagRE = new RegExp(unsafeOpen + '((?:.|\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\n)+?)' + close, 'g'); htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\n)+?)' + unsafeClose + '$'); // reset cache cache = new Cache(1000); } /** * Parse a template text string into an array of tokens. * * @param {String} text * @return {Array | null} * - {String} type * - {String} value * - {Boolean} [html] * - {Boolean} [oneTime] */ function parseText(text) { if (!cache) { compileRegex(); } var hit = cache.get(text); if (hit) { return hit; } if (!tagRE.test(text)) { return null; } var tokens = []; var lastIndex = tagRE.lastIndex = 0; var match, index, html, value, first, oneTime; /* eslint-disable no-cond-assign */ while (match = tagRE.exec(text)) { /* eslint-enable no-cond-assign */ index = match.index; // push text token if (index > lastIndex) { tokens.push({ value: text.slice(lastIndex, index) }); } // tag token html = htmlRE.test(match[0]); value = html ? match[1] : match[2]; first = value.charCodeAt(0); oneTime = first === 42; // * value = oneTime ? value.slice(1) : value; tokens.push({ tag: true, value: value.trim(), html: html, oneTime: oneTime }); lastIndex = index + match[0].length; } if (lastIndex < text.length) { tokens.push({ value: text.slice(lastIndex) }); } cache.put(text, tokens); return tokens; } /** * Format a list of tokens into an expression. * e.g. tokens parsed from 'a {{b}} c' can be serialized * into one single expression as '"a " + b + " c"'. * * @param {Array} tokens * @param {Vue} [vm] * @return {String} */ function tokensToExp(tokens, vm) { if (tokens.length > 1) { return tokens.map(function (token) { return formatToken(token, vm); }).join('+'); } else { return formatToken(tokens[0], vm, true); } } /** * Format a single token. * * @param {Object} token * @param {Vue} [vm] * @param {Boolean} [single] * @return {String} */ function formatToken(token, vm, single) { return token.tag ? token.oneTime && vm ? '"' + vm.$eval(token.value) + '"' : inlineFilters(token.value, single) : '"' + token.value + '"'; } /** * For an attribute with multiple interpolation tags, * e.g. attr="some-{{thing | filter}}", in order to combine * the whole thing into a single watchable expression, we * have to inline those filters. This function does exactly * that. This is a bit hacky but it avoids heavy changes * to directive parser and watcher mechanism. * * @param {String} exp * @param {Boolean} single * @return {String} */ var filterRE = /[^|]\|[^|]/; function inlineFilters(exp, single) { if (!filterRE.test(exp)) { return single ? exp : '(' + exp + ')'; } else { var dir = parseDirective(exp); if (!dir.filters) { return '(' + exp + ')'; } else { return 'this._applyFilters(' + dir.expression + // value ',null,' + // oldValue (null for read) JSON.stringify(dir.filters) + // filter descriptors ',false)'; // write? } } } var text = Object.freeze({ compileRegex: compileRegex, parseText: parseText, tokensToExp: tokensToExp }); var delimiters = ['{{', '}}']; var unsafeDelimiters = ['{{{', '}}}']; var config = Object.defineProperties({ /** * Whether to print debug messages. * Also enables stack trace for warnings. * * @type {Boolean} */ debug: false, /** * Whether to suppress warnings. * * @type {Boolean} */ silent: false, /** * Whether to use async rendering. */ async: true, /** * Whether to warn against errors caught when evaluating * expressions. */ warnExpressionErrors: true, /** * Whether to allow devtools inspection. * Disabled by default in production builds. */ devtools: ("development") !== 'production', /** * Internal flag to indicate the delimiters have been * changed. * * @type {Boolean} */ _delimitersChanged: true, /** * List of asset types that a component can own. * * @type {Array} */ _assetTypes: ['component', 'directive', 'elementDirective', 'filter', 'transition', 'partial'], /** * prop binding modes */ _propBindingModes: { ONE_WAY: 0, TWO_WAY: 1, ONE_TIME: 2 }, /** * Max circular updates allowed in a batcher flush cycle. */ _maxUpdateCount: 100 }, { delimiters: { /** * Interpolation delimiters. Changing these would trigger * the text parser to re-compile the regular expressions. * * @type {Array} */ get: function get() { return delimiters; }, set: function set(val) { delimiters = val; compileRegex(); }, configurable: true, enumerable: true }, unsafeDelimiters: { get: function get() { return unsafeDelimiters; }, set: function set(val) { unsafeDelimiters = val; compileRegex(); }, configurable: true, enumerable: true } }); var warn = undefined; var formatComponentName = undefined; if (true) { (function () { var hasConsole = typeof console !== 'undefined'; warn = function (msg, vm) { if (hasConsole && !config.silent) { console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : '')); } }; formatComponentName = function (vm) { var name = vm._isVue ? vm.$options.name : vm.name; return name ? ' (found in component: <' + hyphenate(name) + '>)' : ''; }; })(); } /** * Append with transition. * * @param {Element} el * @param {Element} target * @param {Vue} vm * @param {Function} [cb] */ function appendWithTransition(el, target, vm, cb) { applyTransition(el, 1, function () { target.appendChild(el); }, vm, cb); } /** * InsertBefore with transition. * * @param {Element} el * @param {Element} target * @param {Vue} vm * @param {Function} [cb] */ function beforeWithTransition(el, target, vm, cb) { applyTransition(el, 1, function () { before(el, target); }, vm, cb); } /** * Remove with transition. * * @param {Element} el * @param {Vue} vm * @param {Function} [cb] */ function removeWithTransition(el, vm, cb) { applyTransition(el, -1, function () { remove(el); }, vm, cb); } /** * Apply transitions with an operation callback. * * @param {Element} el * @param {Number} direction * 1: enter * -1: leave * @param {Function} op - the actual DOM operation * @param {Vue} vm * @param {Function} [cb] */ function applyTransition(el, direction, op, vm, cb) { var transition = el.__v_trans; if (!transition || // skip if there are no js hooks and CSS transition is // not supported !transition.hooks && !transitionEndEvent || // skip transitions for initial compile !vm._isCompiled || // if the vm is being manipulated by a parent directive // during the parent's compilation phase, skip the // animation. vm.$parent && !vm.$parent._isCompiled) { op(); if (cb) cb(); return; } var action = direction > 0 ? 'enter' : 'leave'; transition[action](op, cb); } var transition = Object.freeze({ appendWithTransition: appendWithTransition, beforeWithTransition: beforeWithTransition, removeWithTransition: removeWithTransition, applyTransition: applyTransition }); /** * Query an element selector if it's not an element already. * * @param {String|Element} el * @return {Element} */ function query(el) { if (typeof el === 'string') { var selector = el; el = document.querySelector(el); if (!el) { ("development") !== 'production' && warn('Cannot find element: ' + selector); } } return el; } /** * Check if a node is in the document. * Note: document.documentElement.contains should work here * but always returns false for comment nodes in phantomjs, * making unit tests difficult. This is fixed by doing the * contains() check on the node's parentNode instead of * the node itself. * * @param {Node} node * @return {Boolean} */ function inDoc(node) { if (!node) return false; var doc = node.ownerDocument.documentElement; var parent = node.parentNode; return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent)); } /** * Get and remove an attribute from a node. * * @param {Node} node * @param {String} _attr */ function getAttr(node, _attr) { var val = node.getAttribute(_attr); if (val !== null) { node.removeAttribute(_attr); } return val; } /** * Get an attribute with colon or v-bind: prefix. * * @param {Node} node * @param {String} name * @return {String|null} */ function getBindAttr(node, name) { var val = getAttr(node, ':' + name); if (val === null) { val = getAttr(node, 'v-bind:' + name); } return val; } /** * Check the presence of a bind attribute. * * @param {Node} node * @param {String} name * @return {Boolean} */ function hasBindAttr(node, name) { return node.hasAttribute(name) || node.hasAttribute(':' + name) || node.hasAttribute('v-bind:' + name); } /** * Insert el before target * * @param {Element} el * @param {Element} target */ function before(el, target) { target.parentNode.insertBefore(el, target); } /** * Insert el after target * * @param {Element} el * @param {Element} target */ function after(el, target) { if (target.nextSibling) { before(el, target.nextSibling); } else { target.parentNode.appendChild(el); } } /** * Remove el from DOM * * @param {Element} el */ function remove(el) { el.parentNode.removeChild(el); } /** * Prepend el to target * * @param {Element} el * @param {Element} target */ function prepend(el, target) { if (target.firstChild) { before(el, target.firstChild); } else { target.appendChild(el); } } /** * Replace target with el * * @param {Element} target * @param {Element} el */ function replace(target, el) { var parent = target.parentNode; if (parent) { parent.replaceChild(el, target); } } /** * Add event listener shorthand. * * @param {Element} el * @param {String} event * @param {Function} cb * @param {Boolean} [useCapture] */ function on(el, event, cb, useCapture) { el.addEventListener(event, cb, useCapture); } /** * Remove event listener shorthand. * * @param {Element} el * @param {String} event * @param {Function} cb */ function off(el, event, cb) { el.removeEventListener(event, cb); } /** * For IE9 compat: when both class and :class are present * getAttribute('class') returns wrong value... * * @param {Element} el * @return {String} */ function getClass(el) { var classname = el.className; if (typeof classname === 'object') { classname = classname.baseVal || ''; } return classname; } /** * In IE9, setAttribute('class') will result in empty class * if the element also has the :class attribute; However in * PhantomJS, setting `className` does not work on SVG elements... * So we have to do a conditional check here. * * @param {Element} el * @param {String} cls */ function setClass(el, cls) { /* istanbul ignore if */ if (isIE9 && !/svg$/.test(el.namespaceURI)) { el.className = cls; } else { el.setAttribute('class', cls); } } /** * Add class with compatibility for IE & SVG * * @param {Element} el * @param {String} cls */ function addClass(el, cls) { if (el.classList) { el.classList.add(cls); } else { var cur = ' ' + getClass(el) + ' '; if (cur.indexOf(' ' + cls + ' ') < 0) { setClass(el, (cur + cls).trim()); } } } /** * Remove class with compatibility for IE & SVG * * @param {Element} el * @param {String} cls */ function removeClass(el, cls) { if (el.classList) { el.classList.remove(cls); } else { var cur = ' ' + getClass(el) + ' '; var tar = ' ' + cls + ' '; while (cur.indexOf(tar) >= 0) { cur = cur.replace(tar, ' '); } setClass(el, cur.trim()); } if (!el.className) { el.removeAttribute('class'); } } /** * Extract raw content inside an element into a temporary * container div * * @param {Element} el * @param {Boolean} asFragment * @return {Element|DocumentFragment} */ function extractContent(el, asFragment) { var child; var rawContent; /* istanbul ignore if */ if (isTemplate(el) && isFragment(el.content)) { el = el.content; } if (el.hasChildNodes()) { trimNode(el); rawContent = asFragment ? document.createDocumentFragment() : document.createElement('div'); /* eslint-disable no-cond-assign */ while (child = el.firstChild) { /* eslint-enable no-cond-assign */ rawContent.appendChild(child); } } return rawContent; } /** * Trim possible empty head/tail text and comment * nodes inside a parent. * * @param {Node} node */ function trimNode(node) { var child; /* eslint-disable no-sequences */ while ((child = node.firstChild, isTrimmable(child))) { node.removeChild(child); } while ((child = node.lastChild, isTrimmable(child))) { node.removeChild(child); } /* eslint-enable no-sequences */ } function isTrimmable(node) { return node && (node.nodeType === 3 && !node.data.trim() || node.nodeType === 8); } /** * Check if an element is a template tag. * Note if the template appears inside an SVG its tagName * will be in lowercase. * * @param {Element} el */ function isTemplate(el) { return el.tagName && el.tagName.toLowerCase() === 'template'; } /** * Create an "anchor" for performing dom insertion/removals. * This is used in a number of scenarios: * - fragment instance * - v-html * - v-if * - v-for * - component * * @param {String} content * @param {Boolean} persist - IE trashes empty textNodes on * cloneNode(true), so in certain * cases the anchor needs to be * non-empty to be persisted in * templates. * @return {Comment|Text} */ function createAnchor(content, persist) { var anchor = config.debug ? document.createComment(content) : document.createTextNode(persist ? ' ' : ''); anchor.__v_anchor = true; return anchor; } /** * Find a component ref attribute that starts with $. * * @param {Element} node * @return {String|undefined} */ var refRE = /^v-ref:/; function findRef(node) { if (node.hasAttributes()) { var attrs = node.attributes; for (var i = 0, l = attrs.length; i < l; i++) { var name = attrs[i].name; if (refRE.test(name)) { return camelize(name.replace(refRE, '')); } } } } /** * Map a function to a range of nodes . * * @param {Node} node * @param {Node} end * @param {Function} op */ function mapNodeRange(node, end, op) { var next; while (node !== end) { next = node.nextSibling; op(node); node = next; } op(end); } /** * Remove a range of nodes with transition, store * the nodes in a fragment with correct ordering, * and call callback when done. * * @param {Node} start * @param {Node} end * @param {Vue} vm * @param {DocumentFragment} frag * @param {Function} cb */ function removeNodeRange(start, end, vm, frag, cb) { var done = false; var removed = 0; var nodes = []; mapNodeRange(start, end, function (node) { if (node === end) done = true; nodes.push(node); removeWithTransition(node, vm, onRemoved); }); function onRemoved() { removed++; if (done && removed >= nodes.length) { for (var i = 0; i < nodes.length; i++) { frag.appendChild(nodes[i]); } cb && cb(); } } } /** * Check if a node is a DocumentFragment. * * @param {Node} node * @return {Boolean} */ function isFragment(node) { return node && node.nodeType === 11; } /** * Get outerHTML of elements, taking care * of SVG elements in IE as well. * * @param {Element} el * @return {String} */ function getOuterHTML(el) { if (el.outerHTML) { return el.outerHTML; } else { var container = document.createElement('div'); container.appendChild(el.cloneNode(true)); return container.innerHTML; } } var commonTagRE = /^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i; var reservedTagRE = /^(slot|partial|component)$/i; var isUnknownElement = undefined; if (true) { isUnknownElement = function (el, tag) { if (tag.indexOf('-') > -1) { // http://stackoverflow.com/a/28210364/1070244 return el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement; } else { return (/HTMLUnknownElement/.test(el.toString()) && // Chrome returns unknown for several HTML5 elements. // https://code.google.com/p/chromium/issues/detail?id=540526 // Firefox returns unknown for some "Interactive elements." !/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag) ); } }; } /** * Check if an element is a component, if yes return its * component id. * * @param {Element} el * @param {Object} options * @return {Object|undefined} */ function checkComponentAttr(el, options) { var tag = el.tagName.toLowerCase(); var hasAttrs = el.hasAttributes(); if (!commonTagRE.test(tag) && !reservedTagRE.test(tag)) { if (resolveAsset(options, 'components', tag)) { return { id: tag }; } else { var is = hasAttrs && getIsBinding(el, options); if (is) { return is; } else if (true) { var expectedTag = options._componentNameMap && options._componentNameMap[tag]; if (expectedTag) { warn('Unknown custom element: <' + tag + '> - ' + 'did you mean <' + expectedTag + '>? ' + 'HTML is case-insensitive, remember to use kebab-case in templates.'); } else if (isUnknownElement(el, tag)) { warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the "name" option.'); } } } } else if (hasAttrs) { return getIsBinding(el, options); } } /** * Get "is" binding from an element. * * @param {Element} el * @param {Object} options * @return {Object|undefined} */ function getIsBinding(el, options) { // dynamic syntax var exp = el.getAttribute('is'); if (exp != null) { if (resolveAsset(options, 'components', exp)) { el.removeAttribute('is'); return { id: exp }; } } else { exp = getBindAttr(el, 'is'); if (exp != null) { return { id: exp, dynamic: true }; } } } /** * Option overwriting strategies are functions that handle * how to merge a parent option value and a child option * value into the final value. * * All strategy functions follow the same signature: * * @param {*} parentVal * @param {*} childVal * @param {Vue} [vm] */ var strats = config.optionMergeStrategies = Object.create(null); /** * Helper that recursively merges two data objects together. */ function mergeData(to, from) { var key, toVal, fromVal; for (key in from) { toVal = to[key]; fromVal = from[key]; if (!hasOwn(to, key)) { set(to, key, fromVal); } else if (isObject(toVal) && isObject(fromVal)) { mergeData(toVal, fromVal); } } return to; } /** * Data */ strats.data = function (parentVal, childVal, vm) { if (!vm) { // in a Vue.extend merge, both should be functions if (!childVal) { return parentVal; } if (typeof childVal !== 'function') { ("development") !== 'production' && warn('The "data" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm); return parentVal; } if (!parentVal) { return childVal; } // when parentVal & childVal are both present, // we need to return a function that returns the // merged result of both functions... no need to // check if parentVal is a function here because // it has to be a function to pass previous merges. return function mergedDataFn() { return mergeData(childVal.call(this), parentVal.call(this)); }; } else if (parentVal || childVal) { return function mergedInstanceDataFn() { // instance merge var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal; var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined; if (instanceData) { return mergeData(instanceData, defaultData); } else { return defaultData; } }; } }; /** * El */ strats.el = function (parentVal, childVal, vm) { if (!vm && childVal && typeof childVal !== 'function') { ("development") !== 'production' && warn('The "el" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm); return; } var ret = childVal || parentVal; // invoke the element factory if this is instance merge return vm && typeof ret === 'function' ? ret.call(vm) : ret; }; /** * Hooks and param attributes are merged as arrays. */ strats.init = strats.created = strats.ready = strats.attached = strats.detached = strats.beforeCompile = strats.compiled = strats.beforeDestroy = strats.destroyed = strats.activate = function (parentVal, childVal) { return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal; }; /** * Assets * * When a vm is present (instance creation), we need to do * a three-way merge between constructor options, instance * options and parent options. */ function mergeAssets(parentVal, childVal) { var res = Object.create(parentVal || null); return childVal ? extend(res, guardArrayAssets(childVal)) : res; } config._assetTypes.forEach(function (type) { strats[type + 's'] = mergeAssets; }); /** * Events & Watchers. * * Events & watchers hashes should not overwrite one * another, so we merge them as arrays. */ strats.watch = strats.events = function (parentVal, childVal) { if (!childVal) return parentVal; if (!parentVal) return childVal; var ret = {}; extend(ret, parentVal); for (var key in childVal) { var parent = ret[key]; var child = childVal[key]; if (parent && !isArray(parent)) { parent = [parent]; } ret[key] = parent ? parent.concat(child) : [child]; } return ret; }; /** * Other object hashes. */ strats.props = strats.methods = strats.computed = function (parentVal, childVal) { if (!childVal) return parentVal; if (!parentVal) return childVal; var ret = Object.create(null); extend(ret, parentVal); extend(ret, childVal); return ret; }; /** * Default strategy. */ var defaultStrat = function defaultStrat(parentVal, childVal) { return childVal === undefined ? parentVal : childVal; }; /** * Make sure component options get converted to actual * constructors. * * @param {Object} options */ function guardComponents(options) { if (options.components) { var components = options.components = guardArrayAssets(options.components); var ids = Object.keys(components); var def; if (true) { var map = options._componentNameMap = {}; } for (var i = 0, l = ids.length; i < l; i++) { var key = ids[i]; if (commonTagRE.test(key) || reservedTagRE.test(key)) { ("development") !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key); continue; } // record a all lowercase <-> kebab-case mapping for // possible custom element case error warning if (true) { map[key.replace(/-/g, '').toLowerCase()] = hyphenate(key); } def = components[key]; if (isPlainObject(def)) { components[key] = Vue.extend(def); } } } } /** * Ensure all props option syntax are normalized into the * Object-based format. * * @param {Object} options */ function guardProps(options) { var props = options.props; var i, val; if (isArray(props)) { options.props = {}; i = props.length; while (i--) { val = props[i]; if (typeof val === 'string') { options.props[val] = null; } else if (val.name) { options.props[val.name] = val; } } } else if (isPlainObject(props)) { var keys = Object.keys(props); i = keys.length; while (i--) { val = props[keys[i]]; if (typeof val === 'function') { props[keys[i]] = { type: val }; } } } } /** * Guard an Array-format assets option and converted it * into the key-value Object format. * * @param {Object|Array} assets * @return {Object} */ function guardArrayAssets(assets) { if (isArray(assets)) { var res = {}; var i = assets.length; var asset; while (i--) { asset = assets[i]; var id = typeof asset === 'function' ? asset.options && asset.options.name || asset.id : asset.name || asset.id; if (!id) { ("development") !== 'production' && warn('Array-syntax assets must provide a "name" or "id" field.'); } else { res[id] = asset; } } return res; } return assets; } /** * Merge two option objects into a new one. * Core utility used in both instantiation and inheritance. * * @param {Object} parent * @param {Object} child * @param {Vue} [vm] - if vm is present, indicates this is * an instantiation merge. */ function mergeOptions(parent, child, vm) { guardComponents(child); guardProps(child); if (true) { if (child.propsData && !vm) { warn('propsData can only be used as an instantiation option.'); } } var options = {}; var key; if (child['extends']) { parent = typeof child['extends'] === 'function' ? mergeOptions(parent, child['extends'].options, vm) : mergeOptions(parent, child['extends'], vm); } if (child.mixins) { for (var i = 0, l = child.mixins.length; i < l; i++) { var mixin = child.mixins[i]; var mixinOptions = mixin.prototype instanceof Vue ? mixin.options : mixin; parent = mergeOptions(parent, mixinOptions, vm); } } for (key in parent) { mergeField(key); } for (key in child) { if (!hasOwn(parent, key)) { mergeField(key); } } function mergeField(key) { var strat = strats[key] || defaultStrat; options[key] = strat(parent[key], child[key], vm, key); } return options; } /** * Resolve an asset. * This function is used because child instances need access * to assets defined in its ancestor chain. * * @param {Object} options * @param {String} type * @param {String} id * @param {Boolean} warnMissing * @return {Object|Function} */ function resolveAsset(options, type, id, warnMissing) { /* istanbul ignore if */ if (typeof id !== 'string') { return; } var assets = options[type]; var camelizedId; var res = assets[id] || // camelCase ID assets[camelizedId = camelize(id)] || // Pascal Case ID assets[camelizedId.charAt(0).toUpperCase() + camelizedId.slice(1)]; if (("development") !== 'production' && warnMissing && !res) { warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options); } return res; } var uid$1 = 0; /** * A dep is an observable that can have multiple * directives subscribing to it. * * @constructor */ function Dep() { this.id = uid$1++; this.subs = []; } // the current target watcher being evaluated. // this is globally unique because there could be only one // watcher being evaluated at any time. Dep.target = null; /** * Add a directive subscriber. * * @param {Directive} sub */ Dep.prototype.addSub = function (sub) { this.subs.push(sub); }; /** * Remove a directive subscriber. * * @param {Directive} sub */ Dep.prototype.removeSub = function (sub) { this.subs.$remove(sub); }; /** * Add self as a dependency to the target watcher. */ Dep.prototype.depend = function () { Dep.target.addDep(this); }; /** * Notify all subscribers of a new value. */ Dep.prototype.notify = function () { // stablize the subscriber list first var subs = toArray(this.subs); for (var i = 0, l = subs.length; i < l; i++) { subs[i].update(); } }; var arrayProto = Array.prototype; var arrayMethods = Object.create(arrayProto) /** * Intercept mutating methods and emit events */ ;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) { // cache original method var original = arrayProto[method]; def(arrayMethods, method, function mutator() { // avoid leaking arguments: // http://jsperf.com/closure-with-arguments var i = arguments.length; var args = new Array(i); while (i--) { args[i] = arguments[i]; } var result = original.apply(this, args); var ob = this.__ob__; var inserted; switch (method) { case 'push': inserted = args; break; case 'unshift': inserted = args; break; case 'splice': inserted = args.slice(2); break; } if (inserted) ob.observeArray(inserted); // notify change ob.dep.notify(); return result; }); }); /** * Swap the element at the given index with a new value * and emits corresponding event. * * @param {Number} index * @param {*} val * @return {*} - replaced element */ def(arrayProto, '$set', function $set(index, val) { if (index >= this.length) { this.length = Number(index) + 1; } return this.splice(index, 1, val)[0]; }); /** * Convenience method to remove the element at given index or target element reference. * * @param {*} item */ def(arrayProto, '$remove', function $remove(item) { /* istanbul ignore if */ if (!this.length) return; var index = indexOf(this, item); if (index > -1) { return this.splice(index, 1); } }); var arrayKeys = Object.getOwnPropertyNames(arrayMethods); /** * By default, when a reactive property is set, the new value is * also converted to become reactive. However in certain cases, e.g. * v-for scope alias and props, we don't want to force conversion * because the value may be a nested value under a frozen data structure. * * So whenever we want to set a reactive property without forcing * conversion on the new value, we wrap that call inside this function. */ var shouldConvert = true; function withoutConversion(fn) { shouldConvert = false; fn(); shouldConvert = true; } /** * Observer class that are attached to each observed * object. Once attached, the observer converts target * object's property keys into getter/setters that * collect dependencies and dispatches updates. * * @param {Array|Object} value * @constructor */ function Observer(value) { this.value = value; this.dep = new Dep(); def(value, '__ob__', this); if (isArray(value)) { var augment = hasProto ? protoAugment : copyAugment; augment(value, arrayMethods, arrayKeys); this.observeArray(value); } else { this.walk(value); } } // Instance methods /** * Walk through each property and convert them into * getter/setters. This method should only be called when * value type is Object. * * @param {Object} obj */ Observer.prototype.walk = function (obj) { var keys = Object.keys(obj); for (var i = 0, l = keys.length; i < l; i++) { this.convert(keys[i], obj[keys[i]]); } }; /** * Observe a list of Array items. * * @param {Array} items */ Observer.prototype.observeArray = function (items) { for (var i = 0, l = items.length; i < l; i++) { observe(items[i]); } }; /** * Convert a property into getter/setter so we can emit * the events when the property is accessed/changed. * * @param {String} key * @param {*} val */ Observer.prototype.convert = function (key, val) { defineReactive(this.value, key, val); }; /** * Add an owner vm, so that when $set/$delete mutations * happen we can notify owner vms to proxy the keys and * digest the watchers. This is only called when the object * is observed as an instance's root $data. * * @param {Vue} vm */ Observer.prototype.addVm = function (vm) { (this.vms || (this.vms = [])).push(vm); }; /** * Remove an owner vm. This is called when the object is * swapped out as an instance's $data object. * * @param {Vue} vm */ Observer.prototype.removeVm = function (vm) { this.vms.$remove(vm); }; // helpers /** * Augment an target Object or Array by intercepting * the prototype chain using __proto__ * * @param {Object|Array} target * @param {Object} src */ function protoAugment(target, src) { /* eslint-disable no-proto */ target.__proto__ = src; /* eslint-enable no-proto */ } /** * Augment an target Object or Array by defining * hidden properties. * * @param {Object|Array} target * @param {Object} proto */ function copyAugment(target, src, keys) { for (var i = 0, l = keys.length; i < l; i++) { var key = keys[i]; def(target, key, src[key]); } } /** * Attempt to create an observer instance for a value, * returns the new observer if successfully observed, * or the existing observer if the value already has one. * * @param {*} value * @param {Vue} [vm] * @return {Observer|undefined} * @static */ function observe(value, vm) { if (!value || typeof value !== 'object') { return; } var ob; if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { ob = value.__ob__; } else if (shouldConvert && (isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) { ob = new Observer(value); } if (ob && vm) { ob.addVm(vm); } return ob; } /** * Define a reactive property on an Object. * * @param {Object} obj * @param {String} key * @param {*} val */ function defineReactive(obj, key, val) { var dep = new Dep(); var property = Object.getOwnPropertyDescriptor(obj, key); if (property && property.configurable === false) { return; } // cater for pre-defined getter/setters var getter = property && property.get; var setter = property && property.set; var childOb = observe(val); Object.defineProperty(obj, key, { enumerable: true, configurable: true, get: function reactiveGetter() { var value = getter ? getter.call(obj) : val; if (Dep.target) { dep.depend(); if (childOb) { childOb.dep.depend(); } if (isArray(value)) { for (var e, i = 0, l = value.length; i < l; i++) { e = value[i]; e && e.__ob__ && e.__ob__.dep.depend(); } } } return value; }, set: function reactiveSetter(newVal) { var value = getter ? getter.call(obj) : val; if (newVal === value) { return; } if (setter) { setter.call(obj, newVal); } else { val = newVal; } childOb = observe(newVal); dep.notify(); } }); } var util = Object.freeze({ defineReactive: defineReactive, set: set, del: del, hasOwn: hasOwn, isLiteral: isLiteral, isReserved: isReserved, _toString: _toString, toNumber: toNumber, toBoolean: toBoolean, stripQuotes: stripQuotes, camelize: camelize, hyphenate: hyphenate, classify: classify, bind: bind, toArray: toArray, extend: extend, isObject: isObject, isPlainObject: isPlainObject, def: def, debounce: _debounce, indexOf: indexOf, cancellable: cancellable, looseEqual: looseEqual, isArray: isArray, hasProto: hasProto, inBrowser: inBrowser, devtools: devtools, isIE: isIE, isIE9: isIE9, isAndroid: isAndroid, isIOS: isIOS, get transitionProp () { return transitionProp; }, get transitionEndEvent () { return transitionEndEvent; }, get animationProp () { return animationProp; }, get animationEndEvent () { return animationEndEvent; }, nextTick: nextTick, get _Set () { return _Set; }, query: query, inDoc: inDoc, getAttr: getAttr, getBindAttr: getBindAttr, hasBindAttr: hasBindAttr, before: before, after: after, remove: remove, prepend: prepend, replace: replace, on: on, off: off, setClass: setClass, addClass: addClass, removeClass: removeClass, extractContent: extractContent, trimNode: trimNode, isTemplate: isTemplate, createAnchor: createAnchor, findRef: findRef, mapNodeRange: mapNodeRange, removeNodeRange: removeNodeRange, isFragment: isFragment, getOuterHTML: getOuterHTML, mergeOptions: mergeOptions, resolveAsset: resolveAsset, checkComponentAttr: checkComponentAttr, commonTagRE: commonTagRE, reservedTagRE: reservedTagRE, get warn () { return warn; } }); var uid = 0; function initMixin (Vue) { /** * The main init sequence. This is called for every * instance, including ones that are created from extended * constructors. * * @param {Object} options - this options object should be * the result of merging class * options and the options passed * in to the constructor. */ Vue.prototype._init = function (options) { options = options || {}; this.$el = null; this.$parent = options.parent; this.$root = this.$parent ? this.$parent.$root : this; this.$children = []; this.$refs = {}; // child vm references this.$els = {}; // element references this._watchers = []; // all watchers as an array this._directives = []; // all directives // a uid this._uid = uid++; // a flag to avoid this being observed this._isVue = true; // events bookkeeping this._events = {}; // registered callbacks this._eventsCount = {}; // for $broadcast optimization // fragment instance properties this._isFragment = false; this._fragment = // @type {DocumentFragment} this._fragmentStart = // @type {Text|Comment} this._fragmentEnd = null; // @type {Text|Comment} // lifecycle state this._isCompiled = this._isDestroyed = this._isReady = this._isAttached = this._isBeingDestroyed = this._vForRemoving = false; this._unlinkFn = null; // context: // if this is a transcluded component, context // will be the common parent vm of this instance // and its host. this._context = options._context || this.$parent; // scope: // if this is inside an inline v-for, the scope // will be the intermediate scope created for this // repeat fragment. this is used for linking props // and container directives. this._scope = options._scope; // fragment: // if this instance is compiled inside a Fragment, it // needs to register itself as a child of that fragment // for attach/detach to work properly. this._frag = options._frag; if (this._frag) { this._frag.children.push(this); } // push self into parent / transclusion host if (this.$parent) { this.$parent.$children.push(this); } // merge options. options = this.$options = mergeOptions(this.constructor.options, options, this); // set ref this._updateRef(); // initialize data as empty object. // it will be filled up in _initData(). this._data = {}; // call init hook this._callHook('init'); // initialize data observation and scope inheritance. this._initState(); // setup event system and option events. this._initEvents(); // call created hook this._callHook('created'); // if `el` option is passed, start compilation. if (options.el) { this.$mount(options.el); } }; } var pathCache = new Cache(1000); // actions var APPEND = 0; var PUSH = 1; var INC_SUB_PATH_DEPTH = 2; var PUSH_SUB_PATH = 3; // states var BEFORE_PATH = 0; var IN_PATH = 1; var BEFORE_IDENT = 2; var IN_IDENT = 3; var IN_SUB_PATH = 4; var IN_SINGLE_QUOTE = 5; var IN_DOUBLE_QUOTE = 6; var AFTER_PATH = 7; var ERROR = 8; var pathStateMachine = []; pathStateMachine[BEFORE_PATH] = { 'ws': [BEFORE_PATH], 'ident': [IN_IDENT, APPEND], '[': [IN_SUB_PATH], 'eof': [AFTER_PATH] }; pathStateMachine[IN_PATH] = { 'ws': [IN_PATH], '.': [BEFORE_IDENT], '[': [IN_SUB_PATH], 'eof': [AFTER_PATH] }; pathStateMachine[BEFORE_IDENT] = { 'ws': [BEFORE_IDENT], 'ident': [IN_IDENT, APPEND] }; pathStateMachine[IN_IDENT] = { 'ident': [IN_IDENT, APPEND], '0': [IN_IDENT, APPEND], 'number': [IN_IDENT, APPEND], 'ws': [IN_PATH, PUSH], '.': [BEFORE_IDENT, PUSH], '[': [IN_SUB_PATH, PUSH], 'eof': [AFTER_PATH, PUSH] }; pathStateMachine[IN_SUB_PATH] = { "'": [IN_SINGLE_QUOTE, APPEND], '"': [IN_DOUBLE_QUOTE, APPEND], '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH], ']': [IN_PATH, PUSH_SUB_PATH], 'eof': ERROR, 'else': [IN_SUB_PATH, APPEND] }; pathStateMachine[IN_SINGLE_QUOTE] = { "'": [IN_SUB_PATH, APPEND], 'eof': ERROR, 'else': [IN_SINGLE_QUOTE, APPEND] }; pathStateMachine[IN_DOUBLE_QUOTE] = { '"': [IN_SUB_PATH, APPEND], 'eof': ERROR, 'else': [IN_DOUBLE_QUOTE, APPEND] }; /** * Determine the type of a character in a keypath. * * @param {Char} ch * @return {String} type */ function getPathCharType(ch) { if (ch === undefined) { return 'eof'; } var code = ch.charCodeAt(0); switch (code) { case 0x5B: // [ case 0x5D: // ] case 0x2E: // . case 0x22: // " case 0x27: // ' case 0x30: // 0 return ch; case 0x5F: // _ case 0x24: // $ return 'ident'; case 0x20: // Space case 0x09: // Tab case 0x0A: // Newline case 0x0D: // Return case 0xA0: // No-break space case 0xFEFF: // Byte Order Mark case 0x2028: // Line Separator case 0x2029: // Paragraph Separator return 'ws'; } // a-z, A-Z if (code >= 0x61 && code <= 0x7A || code >= 0x41 && code <= 0x5A) { return 'ident'; } // 1-9 if (code >= 0x31 && code <= 0x39) { return 'number'; } return 'else'; } /** * Format a subPath, return its plain form if it is * a literal string or number. Otherwise prepend the * dynamic indicator (*). * * @param {String} path * @return {String} */ function formatSubPath(path) { var trimmed = path.trim(); // invalid leading 0 if (path.charAt(0) === '0' && isNaN(path)) { return false; } return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed; } /** * Parse a string path into an array of segments * * @param {String} path * @return {Array|undefined} */ function parse(path) { var keys = []; var index = -1; var mode = BEFORE_PATH; var subPathDepth = 0; var c, newChar, key, type, transition, action, typeMap; var actions = []; actions[PUSH] = function () { if (key !== undefined) { keys.push(key); key = undefined; } }; actions[APPEND] = function () { if (key === undefined) { key = newChar; } else { key += newChar; } }; actions[INC_SUB_PATH_DEPTH] = function () { actions[APPEND](); subPathDepth++; }; actions[PUSH_SUB_PATH] = function () { if (subPathDepth > 0) { subPathDepth--; mode = IN_SUB_PATH; actions[APPEND](); } else { subPathDepth = 0; key = formatSubPath(key); if (key === false) { return false; } else { actions[PUSH](); } } }; function maybeUnescapeQuote() { var nextChar = path[index + 1]; if (mode === IN_SINGLE_QUOTE && nextChar === "'" || mode === IN_DOUBLE_QUOTE && nextChar === '"') { index++; newChar = '\\' + nextChar; actions[APPEND](); return true; } } while (mode != null) { index++; c = path[index]; if (c === '\\' && maybeUnescapeQuote()) { continue; } type = getPathCharType(c); typeMap = pathStateMachine[mode]; transition = typeMap[type] || typeMap['else'] || ERROR; if (transition === ERROR) { return; // parse error } mode = transition[0]; action = actions[transition[1]]; if (action) { newChar = transition[2]; newChar = newChar === undefined ? c : newChar; if (action() === false) { return; } } if (mode === AFTER_PATH) { keys.raw = path; return keys; } } } /** * External parse that check for a cache hit first * * @param {String} path * @return {Array|undefined} */ function parsePath(path) { var hit = pathCache.get(path); if (!hit) { hit = parse(path); if (hit) { pathCache.put(path, hit); } } return hit; } /** * Get from an object from a path string * * @param {Object} obj * @param {String} path */ function getPath(obj, path) { return parseExpression$1(path).get(obj); } /** * Warn against setting non-existent root path on a vm. */ var warnNonExistent; if (true) { warnNonExistent = function (path, vm) { warn('You are setting a non-existent path "' + path.raw + '" ' + 'on a vm instance. Consider pre-initializing the property ' + 'with the "data" option for more reliable reactivity ' + 'and better performance.', vm); }; } /** * Set on an object from a path * * @param {Object} obj * @param {String | Array} path * @param {*} val */ function setPath(obj, path, val) { var original = obj; if (typeof path === 'string') { path = parse(path); } if (!path || !isObject(obj)) { return false; } var last, key; for (var i = 0, l = path.length; i < l; i++) { last = obj; key = path[i]; if (key.charAt(0) === '*') { key = parseExpression$1(key.slice(1)).get.call(original, original); } if (i < l - 1) { obj = obj[key]; if (!isObject(obj)) { obj = {}; if (("development") !== 'production' && last._isVue) { warnNonExistent(path, last); } set(last, key, obj); } } else { if (isArray(obj)) { obj.$set(key, val); } else if (key in obj) { obj[key] = val; } else { if (("development") !== 'production' && obj._isVue) { warnNonExistent(path, obj); } set(obj, key, val); } } } return true; } var path = Object.freeze({ parsePath: parsePath, getPath: getPath, setPath: setPath }); var expressionCache = new Cache(1000); var allowedKeywords = 'Math,Date,this,true,false,null,undefined,Infinity,NaN,' + 'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,' + 'encodeURIComponent,parseInt,parseFloat'; var allowedKeywordsRE = new RegExp('^(' + allowedKeywords.replace(/,/g, '\\b|') + '\\b)'); // keywords that don't make sense inside expressions var improperKeywords = 'break,case,class,catch,const,continue,debugger,default,' + 'delete,do,else,export,extends,finally,for,function,if,' + 'import,in,instanceof,let,return,super,switch,throw,try,' + 'var,while,with,yield,enum,await,implements,package,' + 'protected,static,interface,private,public'; var improperKeywordsRE = new RegExp('^(' + improperKeywords.replace(/,/g, '\\b|') + '\\b)'); var wsRE = /\s/g; var newlineRE = /\n/g; var saveRE = /[\{,]\s*[\w\$_]+\s*:|('(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\"']|\\.)*`|`(?:[^`\\]|\\.)*`)|new |typeof |void /g; var restoreRE = /"(\d+)"/g; var pathTestRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/; var identRE = /[^\w$\.](?:[A-Za-z_$][\w$]*)/g; var literalValueRE$1 = /^(?:true|false|null|undefined|Infinity|NaN)$/; function noop() {} /** * Save / Rewrite / Restore * * When rewriting paths found in an expression, it is * possible for the same letter sequences to be found in * strings and Object literal property keys. Therefore we * remove and store these parts in a temporary array, and * restore them after the path rewrite. */ var saved = []; /** * Save replacer * * The save regex can match two possible cases: * 1. An opening object literal * 2. A string * If matched as a plain string, we need to escape its * newlines, since the string needs to be preserved when * generating the function body. * * @param {String} str * @param {String} isString - str if matched as a string * @return {String} - placeholder with index */ function save(str, isString) { var i = saved.length; saved[i] = isString ? str.replace(newlineRE, '\\n') : str; return '"' + i + '"'; } /** * Path rewrite replacer * * @param {String} raw * @return {String} */ function rewrite(raw) { var c = raw.charAt(0); var path = raw.slice(1); if (allowedKeywordsRE.test(path)) { return raw; } else { path = path.indexOf('"') > -1 ? path.replace(restoreRE, restore) : path; return c + 'scope.' + path; } } /** * Restore replacer * * @param {String} str * @param {String} i - matched save index * @return {String} */ function restore(str, i) { return saved[i]; } /** * Rewrite an expression, prefixing all path accessors with * `scope.` and generate getter/setter functions. * * @param {String} exp * @return {Function} */ function compileGetter(exp) { if (improperKeywordsRE.test(exp)) { ("development") !== 'production' && warn('Avoid using reserved keywords in expression: ' + exp); } // reset state saved.length = 0; // save strings and object literal keys var body = exp.replace(saveRE, save).replace(wsRE, ''); // rewrite all paths // pad 1 space here because the regex matches 1 extra char body = (' ' + body).replace(identRE, rewrite).replace(restoreRE, restore); return makeGetterFn(body); } /** * Build a getter function. Requires eval. * * We isolate the try/catch so it doesn't affect the * optimization of the parse function when it is not called. * * @param {String} body * @return {Function|undefined} */ function makeGetterFn(body) { try { /* eslint-disable no-new-func */ return new Function('scope', 'return ' + body + ';'); /* eslint-enable no-new-func */ } catch (e) { if (true) { /* istanbul ignore if */ if (e.toString().match(/unsafe-eval|CSP/)) { warn('It seems you are using the default build of Vue.js in an environment ' + 'with Content Security Policy that prohibits unsafe-eval. ' + 'Use the CSP-compliant build instead: ' + 'http://vuejs.org/guide/installation.html#CSP-compliant-build'); } else { warn('Invalid expression. ' + 'Generated function body: ' + body); } } return noop; } } /** * Compile a setter function for the expression. * * @param {String} exp * @return {Function|undefined} */ function compileSetter(exp) { var path = parsePath(exp); if (path) { return function (scope, val) { setPath(scope, path, val); }; } else { ("development") !== 'production' && warn('Invalid setter expression: ' + exp); } } /** * Parse an expression into re-written getter/setters. * * @param {String} exp * @param {Boolean} needSet * @return {Function} */ function parseExpression$1(exp, needSet) { exp = exp.trim(); // try cache var hit = expressionCache.get(exp); if (hit) { if (needSet && !hit.set) { hit.set = compileSetter(hit.exp); } return hit; } var res = { exp: exp }; res.get = isSimplePath(exp) && exp.indexOf('[') < 0 // optimized super simple getter ? makeGetterFn('scope.' + exp) // dynamic getter : compileGetter(exp); if (needSet) { res.set = compileSetter(exp); } expressionCache.put(exp, res); return res; } /** * Check if an expression is a simple path. * * @param {String} exp * @return {Boolean} */ function isSimplePath(exp) { return pathTestRE.test(exp) && // don't treat literal values as paths !literalValueRE$1.test(exp) && // Math constants e.g. Math.PI, Math.E etc. exp.slice(0, 5) !== 'Math.'; } var expression = Object.freeze({ parseExpression: parseExpression$1, isSimplePath: isSimplePath }); // we have two separate queues: one for directive updates // and one for user watcher registered via $watch(). // we want to guarantee directive updates to be called // before user watchers so that when user watchers are // triggered, the DOM would have already been in updated // state. var queue = []; var userQueue = []; var has = {}; var circular = {}; var waiting = false; /** * Reset the batcher's state. */ function resetBatcherState() { queue.length = 0; userQueue.length = 0; has = {}; circular = {}; waiting = false; } /** * Flush both queues and run the watchers. */ function flushBatcherQueue() { var _again = true; _function: while (_again) { _again = false; runBatcherQueue(queue); runBatcherQueue(userQueue); // user watchers triggered more watchers, // keep flushing until it depletes if (queue.length) { _again = true; continue _function; } // dev tool hook /* istanbul ignore if */ if (devtools && config.devtools) { devtools.emit('flush'); } resetBatcherState(); } } /** * Run the watchers in a single queue. * * @param {Array} queue */ function runBatcherQueue(queue) { // do not cache length because more watchers might be pushed // as we run existing watchers for (var i = 0; i < queue.length; i++) { var watcher = queue[i]; var id = watcher.id; has[id] = null; watcher.run(); // in dev build, check and stop circular updates. if (("development") !== 'production' && has[id] != null) { circular[id] = (circular[id] || 0) + 1; if (circular[id] > config._maxUpdateCount) { warn('You may have an infinite update loop for watcher ' + 'with expression "' + watcher.expression + '"', watcher.vm); break; } } } queue.length = 0; } /** * Push a watcher into the watcher queue. * Jobs with duplicate IDs will be skipped unless it's * pushed when the queue is being flushed. * * @param {Watcher} watcher * properties: * - {Number} id * - {Function} run */ function pushWatcher(watcher) { var id = watcher.id; if (has[id] == null) { // push watcher into appropriate queue var q = watcher.user ? userQueue : queue; has[id] = q.length; q.push(watcher); // queue the flush if (!waiting) { waiting = true; nextTick(flushBatcherQueue); } } } var uid$2 = 0; /** * A watcher parses an expression, collects dependencies, * and fires callback when the expression value changes. * This is used for both the $watch() api and directives. * * @param {Vue} vm * @param {String|Function} expOrFn * @param {Function} cb * @param {Object} options * - {Array} filters * - {Boolean} twoWay * - {Boolean} deep * - {Boolean} user * - {Boolean} sync * - {Boolean} lazy * - {Function} [preProcess] * - {Function} [postProcess] * @constructor */ function Watcher(vm, expOrFn, cb, options) { // mix in options if (options) { extend(this, options); } var isFn = typeof expOrFn === 'function'; this.vm = vm; vm._watchers.push(this); this.expression = expOrFn; this.cb = cb; this.id = ++uid$2; // uid for batching this.active = true; this.dirty = this.lazy; // for lazy watchers this.deps = []; this.newDeps = []; this.depIds = new _Set(); this.newDepIds = new _Set(); this.prevError = null; // for async error stacks // parse expression for getter/setter if (isFn) { this.getter = expOrFn; this.setter = undefined; } else { var res = parseExpression$1(expOrFn, this.twoWay); this.getter = res.get; this.setter = res.set; } this.value = this.lazy ? undefined : this.get(); // state for avoiding false triggers for deep and Array // watchers during vm._digest() this.queued = this.shallow = false; } /** * Evaluate the getter, and re-collect dependencies. */ Watcher.prototype.get = function () { this.beforeGet(); var scope = this.scope || this.vm; var value; try { value = this.getter.call(scope, scope); } catch (e) { if (("development") !== 'production' && config.warnExpressionErrors) { warn('Error when evaluating expression ' + '"' + this.expression + '": ' + e.toString(), this.vm); } } // "touch" every property so they are all tracked as // dependencies for deep watching if (this.deep) { traverse(value); } if (this.preProcess) { value = this.preProcess(value); } if (this.filters) { value = scope._applyFilters(value, null, this.filters, false); } if (this.postProcess) { value = this.postProcess(value); } this.afterGet(); return value; }; /** * Set the corresponding value with the setter. * * @param {*} value */ Watcher.prototype.set = function (value) { var scope = this.scope || this.vm; if (this.filters) { value = scope._applyFilters(value, this.value, this.filters, true); } try { this.setter.call(scope, scope, value); } catch (e) { if (("development") !== 'production' && config.warnExpressionErrors) { warn('Error when evaluating setter ' + '"' + this.expression + '": ' + e.toString(), this.vm); } } // two-way sync for v-for alias var forContext = scope.$forContext; if (forContext && forContext.alias === this.expression) { if (forContext.filters) { ("development") !== 'production' && warn('It seems you are using two-way binding on ' + 'a v-for alias (' + this.expression + '), and the ' + 'v-for has filters. This will not work properly. ' + 'Either remove the filters or use an array of ' + 'objects and bind to object properties instead.', this.vm); return; } forContext._withLock(function () { if (scope.$key) { // original is an object forContext.rawValue[scope.$key] = value; } else { forContext.rawValue.$set(scope.$index, value); } }); } }; /** * Prepare for dependency collection. */ Watcher.prototype.beforeGet = function () { Dep.target = this; }; /** * Add a dependency to this directive. * * @param {Dep} dep */ Watcher.prototype.addDep = function (dep) { var id = dep.id; if (!this.newDepIds.has(id)) { this.newDepIds.add(id); this.newDeps.push(dep); if (!this.depIds.has(id)) { dep.addSub(this); } } }; /** * Clean up for dependency collection. */ Watcher.prototype.afterGet = function () { Dep.target = null; var i = this.deps.length; while (i--) { var dep = this.deps[i]; if (!this.newDepIds.has(dep.id)) { dep.removeSub(this); } } var tmp = this.depIds; this.depIds = this.newDepIds; this.newDepIds = tmp; this.newDepIds.clear(); tmp = this.deps; this.deps = this.newDeps; this.newDeps = tmp; this.newDeps.length = 0; }; /** * Subscriber interface. * Will be called when a dependency changes. * * @param {Boolean} shallow */ Watcher.prototype.update = function (shallow) { if (this.lazy) { this.dirty = true; } else if (this.sync || !config.async) { this.run(); } else { // if queued, only overwrite shallow with non-shallow, // but not the other way around. this.shallow = this.queued ? shallow ? this.shallow : false : !!shallow; this.queued = true; // record before-push error stack in debug mode /* istanbul ignore if */ if (("development") !== 'production' && config.debug) { this.prevError = new Error('[vue] async stack trace'); } pushWatcher(this); } }; /** * Batcher job interface. * Will be called by the batcher. */ Watcher.prototype.run = function () { if (this.active) { var value = this.get(); if (value !== this.value || // Deep watchers and watchers on Object/Arrays should fire even // when the value is the same, because the value may // have mutated; but only do so if this is a // non-shallow update (caused by a vm digest). (isObject(value) || this.deep) && !this.shallow) { // set new value var oldValue = this.value; this.value = value; // in debug + async mode, when a watcher callbacks // throws, we also throw the saved before-push error // so the full cross-tick stack trace is available. var prevError = this.prevError; /* istanbul ignore if */ if (("development") !== 'production' && config.debug && prevError) { this.prevError = null; try { this.cb.call(this.vm, value, oldValue); } catch (e) { nextTick(function () { throw prevError; }, 0); throw e; } } else { this.cb.call(this.vm, value, oldValue); } } this.queued = this.shallow = false; } }; /** * Evaluate the value of the watcher. * This only gets called for lazy watchers. */ Watcher.prototype.evaluate = function () { // avoid overwriting another watcher that is being // collected. var current = Dep.target; this.value = this.get(); this.dirty = false; Dep.target = current; }; /** * Depend on all deps collected by this watcher. */ Watcher.prototype.depend = function () { var i = this.deps.length; while (i--) { this.deps[i].depend(); } }; /** * Remove self from all dependencies' subcriber list. */ Watcher.prototype.teardown = function () { if (this.active) { // remove self from vm's watcher list // this is a somewhat expensive operation so we skip it // if the vm is being destroyed or is performing a v-for // re-render (the watcher list is then filtered by v-for). if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) { this.vm._watchers.$remove(this); } var i = this.deps.length; while (i--) { this.deps[i].removeSub(this); } this.active = false; this.vm = this.cb = this.value = null; } }; /** * Recrusively traverse an object to evoke all converted * getters, so that every nested property inside the object * is collected as a "deep" dependency. * * @param {*} val */ var seenObjects = new _Set(); function traverse(val, seen) { var i = undefined, keys = undefined; if (!seen) { seen = seenObjects; seen.clear(); } var isA = isArray(val); var isO = isObject(val); if ((isA || isO) && Object.isExtensible(val)) { if (val.__ob__) { var depId = val.__ob__.dep.id; if (seen.has(depId)) { return; } else { seen.add(depId); } } if (isA) { i = val.length; while (i--) traverse(val[i], seen); } else if (isO) { keys = Object.keys(val); i = keys.length; while (i--) traverse(val[keys[i]], seen); } } } var text$1 = { bind: function bind() { this.attr = this.el.nodeType === 3 ? 'data' : 'textContent'; }, update: function update(value) { this.el[this.attr] = _toString(value); } }; var templateCache = new Cache(1000); var idSelectorCache = new Cache(1000); var map = { efault: [0, '', ''], legend: [1, '
', '
'], tr: [2, '', '
'], col: [2, '', '
'] }; map.td = map.th = [3, '', '
']; map.option = map.optgroup = [1, '']; map.thead = map.tbody = map.colgroup = map.caption = map.tfoot = [1, '', '
']; map.g = map.defs = map.symbol = map.use = map.image = map.text = map.circle = map.ellipse = map.line = map.path = map.polygon = map.polyline = map.rect = [1, '', '']; /** * Check if a node is a supported template node with a * DocumentFragment content. * * @param {Node} node * @return {Boolean} */ function isRealTemplate(node) { return isTemplate(node) && isFragment(node.content); } var tagRE$1 = /<([\w:-]+)/; var entityRE = /&#?\w+?;/; var commentRE = /