|
- webpackJsonp([0],[
- /* 0 */,
- /* 1 */,
- /* 2 */,
- /* 3 */,
- /* 4 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var bind = __webpack_require__(78);
-
- /*global toString:true*/
-
- // utils is a library of generic helper functions non-specific to axios
-
- var toString = Object.prototype.toString;
-
- /**
- * Determine if a value is an Array
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Array, otherwise false
- */
- function isArray(val) {
- return toString.call(val) === '[object Array]';
- }
-
- /**
- * Determine if a value is an ArrayBuffer
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an ArrayBuffer, otherwise false
- */
- function isArrayBuffer(val) {
- return toString.call(val) === '[object ArrayBuffer]';
- }
-
- /**
- * Determine if a value is a FormData
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an FormData, otherwise false
- */
- function isFormData(val) {
- return (typeof FormData !== 'undefined') && (val instanceof FormData);
- }
-
- /**
- * Determine if a value is a view on an ArrayBuffer
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
- */
- function isArrayBufferView(val) {
- var result;
- if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
- result = ArrayBuffer.isView(val);
- } else {
- result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
- }
- return result;
- }
-
- /**
- * Determine if a value is a String
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a String, otherwise false
- */
- function isString(val) {
- return typeof val === 'string';
- }
-
- /**
- * Determine if a value is a Number
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Number, otherwise false
- */
- function isNumber(val) {
- return typeof val === 'number';
- }
-
- /**
- * Determine if a value is undefined
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if the value is undefined, otherwise false
- */
- function isUndefined(val) {
- return typeof val === 'undefined';
- }
-
- /**
- * Determine if a value is an Object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is an Object, otherwise false
- */
- function isObject(val) {
- return val !== null && typeof val === 'object';
- }
-
- /**
- * Determine if a value is a Date
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Date, otherwise false
- */
- function isDate(val) {
- return toString.call(val) === '[object Date]';
- }
-
- /**
- * Determine if a value is a File
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a File, otherwise false
- */
- function isFile(val) {
- return toString.call(val) === '[object File]';
- }
-
- /**
- * Determine if a value is a Blob
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Blob, otherwise false
- */
- function isBlob(val) {
- return toString.call(val) === '[object Blob]';
- }
-
- /**
- * Determine if a value is a Function
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Function, otherwise false
- */
- function isFunction(val) {
- return toString.call(val) === '[object Function]';
- }
-
- /**
- * Determine if a value is a Stream
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a Stream, otherwise false
- */
- function isStream(val) {
- return isObject(val) && isFunction(val.pipe);
- }
-
- /**
- * Determine if a value is a URLSearchParams object
- *
- * @param {Object} val The value to test
- * @returns {boolean} True if value is a URLSearchParams object, otherwise false
- */
- function isURLSearchParams(val) {
- return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
- }
-
- /**
- * Trim excess whitespace off the beginning and end of a string
- *
- * @param {String} str The String to trim
- * @returns {String} The String freed of excess whitespace
- */
- function trim(str) {
- return str.replace(/^\s*/, '').replace(/\s*$/, '');
- }
-
- /**
- * Determine if we're running in a standard browser environment
- *
- * This allows axios to run in a web worker, and react-native.
- * Both environments support XMLHttpRequest, but not fully standard globals.
- *
- * web workers:
- * typeof window -> undefined
- * typeof document -> undefined
- *
- * react-native:
- * typeof document.createElement -> undefined
- */
- function isStandardBrowserEnv() {
- return (
- typeof window !== 'undefined' &&
- typeof document !== 'undefined' &&
- typeof document.createElement === 'function'
- );
- }
-
- /**
- * Iterate over an Array or an Object invoking a function for each item.
- *
- * If `obj` is an Array callback will be called passing
- * the value, index, and complete array for each item.
- *
- * If 'obj' is an Object callback will be called passing
- * the value, key, and complete object for each property.
- *
- * @param {Object|Array} obj The object to iterate
- * @param {Function} fn The callback to invoke for each item
- */
- function forEach(obj, fn) {
- // Don't bother if no value provided
- if (obj === null || typeof obj === 'undefined') {
- return;
- }
-
- // Force an array if not already something iterable
- if (typeof obj !== 'object' && !isArray(obj)) {
- /*eslint no-param-reassign:0*/
- obj = [obj];
- }
-
- if (isArray(obj)) {
- // Iterate over array values
- for (var i = 0, l = obj.length; i < l; i++) {
- fn.call(null, obj[i], i, obj);
- }
- } else {
- // Iterate over object keys
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
- fn.call(null, obj[key], key, obj);
- }
- }
- }
- }
-
- /**
- * Accepts varargs expecting each argument to be an object, then
- * immutably merges the properties of each object and returns result.
- *
- * When multiple objects contain the same key the later object in
- * the arguments list will take precedence.
- *
- * Example:
- *
- * ```js
- * var result = merge({foo: 123}, {foo: 456});
- * console.log(result.foo); // outputs 456
- * ```
- *
- * @param {Object} obj1 Object to merge
- * @returns {Object} Result of all merge properties
- */
- function merge(/* obj1, obj2, obj3, ... */) {
- var result = {};
- function assignValue(val, key) {
- if (typeof result[key] === 'object' && typeof val === 'object') {
- result[key] = merge(result[key], val);
- } else {
- result[key] = val;
- }
- }
-
- for (var i = 0, l = arguments.length; i < l; i++) {
- forEach(arguments[i], assignValue);
- }
- return result;
- }
-
- /**
- * Extends object a by mutably adding to it the properties of object b.
- *
- * @param {Object} a The object to be extended
- * @param {Object} b The object to copy properties from
- * @param {Object} thisArg The object to bind function to
- * @return {Object} The resulting value of object a
- */
- function extend(a, b, thisArg) {
- forEach(b, function assignValue(val, key) {
- if (thisArg && typeof val === 'function') {
- a[key] = bind(val, thisArg);
- } else {
- a[key] = val;
- }
- });
- return a;
- }
-
- module.exports = {
- isArray: isArray,
- isArrayBuffer: isArrayBuffer,
- isFormData: isFormData,
- isArrayBufferView: isArrayBufferView,
- isString: isString,
- isNumber: isNumber,
- isObject: isObject,
- isUndefined: isUndefined,
- isDate: isDate,
- isFile: isFile,
- isBlob: isBlob,
- isFunction: isFunction,
- isStream: isStream,
- isURLSearchParams: isURLSearchParams,
- isStandardBrowserEnv: isStandardBrowserEnv,
- forEach: forEach,
- merge: merge,
- extend: extend,
- trim: trim
- };
-
-
- /***/ },
- /* 5 */
- /***/ function(module, exports, __webpack_require__) {
-
- var store = __webpack_require__(100)('wks')
- , uid = __webpack_require__(104)
- , Symbol = __webpack_require__(6).Symbol
- , USE_SYMBOL = typeof Symbol == 'function';
-
- var $exports = module.exports = function(name){
- return store[name] || (store[name] =
- USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
- };
-
- $exports.store = store;
-
- /***/ },
- /* 6 */
- /***/ 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
-
- /***/ },
- /* 7 */,
- /* 8 */
- /***/ function(module, exports) {
-
- var core = module.exports = {version: '2.4.0'};
- if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
-
- /***/ },
- /* 9 */,
- /* 10 */,
- /* 11 */
- /***/ function(module, exports, __webpack_require__) {
-
- /**
- * vuex v2.0.0
- * (c) 2016 Evan You
- * @license MIT
- */
- (function (global, factory) {
- true ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global.Vuex = factory());
- }(this, (function () { 'use strict';
-
- var devtoolHook =
- typeof window !== 'undefined' &&
- window.__VUE_DEVTOOLS_GLOBAL_HOOK__
-
- function devtoolPlugin (store) {
- if (!devtoolHook) { return }
-
- store._devtoolHook = devtoolHook
-
- devtoolHook.emit('vuex:init', store)
-
- devtoolHook.on('vuex:travel-to-state', function (targetState) {
- store.replaceState(targetState)
- })
-
- store.subscribe(function (mutation, state) {
- devtoolHook.emit('vuex:mutation', mutation, state)
- })
- }
-
- function applyMixin (Vue) {
- var version = Number(Vue.version.split('.')[0])
-
- if (version >= 2) {
- var usesInit = Vue.config._lifecycleHooks.indexOf('init') > -1
- Vue.mixin(usesInit ? { init: vuexInit } : { beforeCreate: vuexInit })
- } else {
- // override init and inject vuex init procedure
- // for 1.x backwards compatibility.
- var _init = Vue.prototype._init
- Vue.prototype._init = function (options) {
- if ( options === void 0 ) options = {};
-
- options.init = options.init
- ? [vuexInit].concat(options.init)
- : vuexInit
- _init.call(this, options)
- }
- }
-
- /**
- * Vuex init hook, injected into each instances init hooks list.
- */
-
- function vuexInit () {
- var options = this.$options
- // store injection
- if (options.store) {
- this.$store = options.store
- } else if (options.parent && options.parent.$store) {
- this.$store = options.parent.$store
- }
- }
- }
-
- function mapState (states) {
- var res = {}
- normalizeMap(states).forEach(function (ref) {
- var key = ref.key;
- var val = ref.val;
-
- res[key] = function mappedState () {
- return typeof val === 'function'
- ? val.call(this, this.$store.state, this.$store.getters)
- : this.$store.state[val]
- }
- })
- return res
- }
-
- function mapMutations (mutations) {
- var res = {}
- normalizeMap(mutations).forEach(function (ref) {
- var key = ref.key;
- var val = ref.val;
-
- res[key] = function mappedMutation () {
- var args = [], len = arguments.length;
- while ( len-- ) args[ len ] = arguments[ len ];
-
- return this.$store.commit.apply(this.$store, [val].concat(args))
- }
- })
- return res
- }
-
- function mapGetters (getters) {
- var res = {}
- normalizeMap(getters).forEach(function (ref) {
- var key = ref.key;
- var val = ref.val;
-
- res[key] = function mappedGetter () {
- if (!(val in this.$store.getters)) {
- console.error(("[vuex] unknown getter: " + val))
- }
- return this.$store.getters[val]
- }
- })
- return res
- }
-
- function mapActions (actions) {
- var res = {}
- normalizeMap(actions).forEach(function (ref) {
- var key = ref.key;
- var val = ref.val;
-
- res[key] = function mappedAction () {
- var args = [], len = arguments.length;
- while ( len-- ) args[ len ] = arguments[ len ];
-
- return this.$store.dispatch.apply(this.$store, [val].concat(args))
- }
- })
- return res
- }
-
- function normalizeMap (map) {
- return Array.isArray(map)
- ? map.map(function (key) { return ({ key: key, val: key }); })
- : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })
- }
-
- function isObject (obj) {
- return obj !== null && typeof obj === 'object'
- }
-
- function isPromise (val) {
- return val && typeof val.then === 'function'
- }
-
- function assert (condition, msg) {
- if (!condition) { throw new Error(("[vuex] " + msg)) }
- }
-
- var Vue // bind on install
-
- var Store = function Store (options) {
- var this$1 = this;
- if ( options === void 0 ) options = {};
-
- assert(Vue, "must call Vue.use(Vuex) before creating a store instance.")
- assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.")
-
- var state = options.state; if ( state === void 0 ) state = {};
- var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];
- var strict = options.strict; if ( strict === void 0 ) strict = false;
-
- // store internal state
- this._options = options
- this._committing = false
- this._actions = Object.create(null)
- this._mutations = Object.create(null)
- this._wrappedGetters = Object.create(null)
- this._runtimeModules = Object.create(null)
- this._subscribers = []
- this._watcherVM = new Vue()
-
- // bind commit and dispatch to self
- var store = this
- var ref = this;
- var dispatch = ref.dispatch;
- var commit = ref.commit;
- this.dispatch = function boundDispatch (type, payload) {
- return dispatch.call(store, type, payload)
- }
- this.commit = function boundCommit (type, payload, options) {
- return commit.call(store, type, payload, options)
- }
-
- // strict mode
- this.strict = strict
-
- // init root module.
- // this also recursively registers all sub-modules
- // and collects all module getters inside this._wrappedGetters
- installModule(this, state, [], options)
-
- // initialize the store vm, which is responsible for the reactivity
- // (also registers _wrappedGetters as computed properties)
- resetStoreVM(this, state)
-
- // apply plugins
- plugins.concat(devtoolPlugin).forEach(function (plugin) { return plugin(this$1); })
- };
-
- var prototypeAccessors = { state: {} };
-
- prototypeAccessors.state.get = function () {
- return this._vm.state
- };
-
- prototypeAccessors.state.set = function (v) {
- assert(false, "Use store.replaceState() to explicit replace store state.")
- };
-
- Store.prototype.commit = function commit (type, payload, options) {
- var this$1 = this;
-
- // check object-style commit
- if (isObject(type) && type.type) {
- options = payload
- payload = type
- type = type.type
- }
- var mutation = { type: type, payload: payload }
- var entry = this._mutations[type]
- if (!entry) {
- console.error(("[vuex] unknown mutation type: " + type))
- return
- }
- this._withCommit(function () {
- entry.forEach(function commitIterator (handler) {
- handler(payload)
- })
- })
- if (!options || !options.silent) {
- this._subscribers.forEach(function (sub) { return sub(mutation, this$1.state); })
- }
- };
-
- Store.prototype.dispatch = function dispatch (type, payload) {
- // check object-style dispatch
- if (isObject(type) && type.type) {
- payload = type
- type = type.type
- }
- var entry = this._actions[type]
- if (!entry) {
- console.error(("[vuex] unknown action type: " + type))
- return
- }
- return entry.length > 1
- ? Promise.all(entry.map(function (handler) { return handler(payload); }))
- : entry[0](payload)
- };
-
- Store.prototype.subscribe = function subscribe (fn) {
- var subs = this._subscribers
- if (subs.indexOf(fn) < 0) {
- subs.push(fn)
- }
- return function () {
- var i = subs.indexOf(fn)
- if (i > -1) {
- subs.splice(i, 1)
- }
- }
- };
-
- Store.prototype.watch = function watch (getter, cb, options) {
- var this$1 = this;
-
- assert(typeof getter === 'function', "store.watch only accepts a function.")
- return this._watcherVM.$watch(function () { return getter(this$1.state); }, cb, options)
- };
-
- Store.prototype.replaceState = function replaceState (state) {
- var this$1 = this;
-
- this._withCommit(function () {
- this$1._vm.state = state
- })
- };
-
- Store.prototype.registerModule = function registerModule (path, module) {
- if (typeof path === 'string') { path = [path] }
- assert(Array.isArray(path), "module path must be a string or an Array.")
- this._runtimeModules[path.join('.')] = module
- installModule(this, this.state, path, module)
- // reset store to update getters...
- resetStoreVM(this, this.state)
- };
-
- Store.prototype.unregisterModule = function unregisterModule (path) {
- var this$1 = this;
-
- if (typeof path === 'string') { path = [path] }
- assert(Array.isArray(path), "module path must be a string or an Array.")
- delete this._runtimeModules[path.join('.')]
- this._withCommit(function () {
- var parentState = getNestedState(this$1.state, path.slice(0, -1))
- Vue.delete(parentState, path[path.length - 1])
- })
- resetStore(this)
- };
-
- Store.prototype.hotUpdate = function hotUpdate (newOptions) {
- updateModule(this._options, newOptions)
- resetStore(this)
- };
-
- Store.prototype._withCommit = function _withCommit (fn) {
- var committing = this._committing
- this._committing = true
- fn()
- this._committing = committing
- };
-
- Object.defineProperties( Store.prototype, prototypeAccessors );
-
- function updateModule (targetModule, newModule) {
- if (newModule.actions) {
- targetModule.actions = newModule.actions
- }
- if (newModule.mutations) {
- targetModule.mutations = newModule.mutations
- }
- if (newModule.getters) {
- targetModule.getters = newModule.getters
- }
- if (newModule.modules) {
- for (var key in newModule.modules) {
- if (!(targetModule.modules && targetModule.modules[key])) {
- console.warn(
- "[vuex] trying to add a new module '" + key + "' on hot reloading, " +
- 'manual reload is needed'
- )
- return
- }
- updateModule(targetModule.modules[key], newModule.modules[key])
- }
- }
- }
-
- function resetStore (store) {
- store._actions = Object.create(null)
- store._mutations = Object.create(null)
- store._wrappedGetters = Object.create(null)
- var state = store.state
- // init root module
- installModule(store, state, [], store._options, true)
- // init all runtime modules
- Object.keys(store._runtimeModules).forEach(function (key) {
- installModule(store, state, key.split('.'), store._runtimeModules[key], true)
- })
- // reset vm
- resetStoreVM(store, state)
- }
-
- function resetStoreVM (store, state) {
- var oldVm = store._vm
-
- // bind store public getters
- store.getters = {}
- var wrappedGetters = store._wrappedGetters
- var computed = {}
- Object.keys(wrappedGetters).forEach(function (key) {
- var fn = wrappedGetters[key]
- // use computed to leverage its lazy-caching mechanism
- computed[key] = function () { return fn(store); }
- Object.defineProperty(store.getters, key, {
- get: function () { return store._vm[key]; }
- })
- })
-
- // use a Vue instance to store the state tree
- // suppress warnings just in case the user has added
- // some funky global mixins
- var silent = Vue.config.silent
- Vue.config.silent = true
- store._vm = new Vue({
- data: { state: state },
- computed: computed
- })
- Vue.config.silent = silent
-
- // enable strict mode for new vm
- if (store.strict) {
- enableStrictMode(store)
- }
-
- if (oldVm) {
- // dispatch changes in all subscribed watchers
- // to force getter re-evaluation.
- store._withCommit(function () {
- oldVm.state = null
- })
- Vue.nextTick(function () { return oldVm.$destroy(); })
- }
- }
-
- function installModule (store, rootState, path, module, hot) {
- var isRoot = !path.length
- var state = module.state;
- var actions = module.actions;
- var mutations = module.mutations;
- var getters = module.getters;
- var modules = module.modules;
-
- // set state
- if (!isRoot && !hot) {
- var parentState = getNestedState(rootState, path.slice(0, -1))
- var moduleName = path[path.length - 1]
- store._withCommit(function () {
- Vue.set(parentState, moduleName, state || {})
- })
- }
-
- if (mutations) {
- Object.keys(mutations).forEach(function (key) {
- registerMutation(store, key, mutations[key], path)
- })
- }
-
- if (actions) {
- Object.keys(actions).forEach(function (key) {
- registerAction(store, key, actions[key], path)
- })
- }
-
- if (getters) {
- wrapGetters(store, getters, path)
- }
-
- if (modules) {
- Object.keys(modules).forEach(function (key) {
- installModule(store, rootState, path.concat(key), modules[key], hot)
- })
- }
- }
-
- function registerMutation (store, type, handler, path) {
- if ( path === void 0 ) path = [];
-
- var entry = store._mutations[type] || (store._mutations[type] = [])
- entry.push(function wrappedMutationHandler (payload) {
- handler(getNestedState(store.state, path), payload)
- })
- }
-
- function registerAction (store, type, handler, path) {
- if ( path === void 0 ) path = [];
-
- var entry = store._actions[type] || (store._actions[type] = [])
- var dispatch = store.dispatch;
- var commit = store.commit;
- entry.push(function wrappedActionHandler (payload, cb) {
- var res = handler({
- dispatch: dispatch,
- commit: commit,
- getters: store.getters,
- state: getNestedState(store.state, path),
- rootState: store.state
- }, payload, cb)
- if (!isPromise(res)) {
- res = Promise.resolve(res)
- }
- if (store._devtoolHook) {
- return res.catch(function (err) {
- store._devtoolHook.emit('vuex:error', err)
- throw err
- })
- } else {
- return res
- }
- })
- }
-
- function wrapGetters (store, moduleGetters, modulePath) {
- Object.keys(moduleGetters).forEach(function (getterKey) {
- var rawGetter = moduleGetters[getterKey]
- if (store._wrappedGetters[getterKey]) {
- console.error(("[vuex] duplicate getter key: " + getterKey))
- return
- }
- store._wrappedGetters[getterKey] = function wrappedGetter (store) {
- return rawGetter(
- getNestedState(store.state, modulePath), // local state
- store.getters, // getters
- store.state // root state
- )
- }
- })
- }
-
- function enableStrictMode (store) {
- store._vm.$watch('state', function () {
- assert(store._committing, "Do not mutate vuex store state outside mutation handlers.")
- }, { deep: true, sync: true })
- }
-
- function getNestedState (state, path) {
- return path.length
- ? path.reduce(function (state, key) { return state[key]; }, state)
- : state
- }
-
- function install (_Vue) {
- if (Vue) {
- console.error(
- '[vuex] already installed. Vue.use(Vuex) should be called only once.'
- )
- return
- }
- Vue = _Vue
- applyMixin(Vue)
- }
-
- // auto install in dist mode
- if (typeof window !== 'undefined' && window.Vue) {
- install(window.Vue)
- }
-
- var index = {
- Store: Store,
- install: install,
- mapState: mapState,
- mapMutations: mapMutations,
- mapGetters: mapGetters,
- mapActions: mapActions
- }
-
- return index;
-
- })));
-
- /***/ },
- /* 12 */,
- /* 13 */
- /***/ function(module, exports, __webpack_require__) {
-
- var isObject = __webpack_require__(42);
- module.exports = function(it){
- if(!isObject(it))throw TypeError(it + ' is not an object!');
- return it;
- };
-
- /***/ },
- /* 14 */
- /***/ function(module, exports, __webpack_require__) {
-
- // Thank's IE8 for his funny defineProperty
- module.exports = !__webpack_require__(55)(function(){
- return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
- });
-
- /***/ },
- /* 15 */
- /***/ function(module, exports, __webpack_require__) {
-
- var dP = __webpack_require__(28)
- , createDesc = __webpack_require__(99);
- 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;
- };
-
- /***/ },
- /* 16 */,
- /* 17 */
- /***/ function(module, exports) {
-
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- // css base code, injected by the css-loader
- module.exports = function() {
- var list = [];
-
- // return the list of modules as css string
- list.toString = function toString() {
- var result = [];
- for(var i = 0; i < this.length; i++) {
- var item = this[i];
- if(item[2]) {
- result.push("@media " + item[2] + "{" + item[1] + "}");
- } else {
- result.push(item[1]);
- }
- }
- return result.join("");
- };
-
- // import a list of modules into the list
- list.i = function(modules, mediaQuery) {
- if(typeof modules === "string")
- modules = [[null, modules, ""]];
- var alreadyImportedModules = {};
- for(var i = 0; i < this.length; i++) {
- var id = this[i][0];
- if(typeof id === "number")
- alreadyImportedModules[id] = true;
- }
- for(i = 0; i < modules.length; i++) {
- var item = modules[i];
- // skip already imported module
- // this implementation is not 100% perfect for weird media query combinations
- // when a module is imported multiple times with different media queries.
- // I hope this will never occur (Hey this way we have smaller bundles)
- if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
- if(mediaQuery && !item[2]) {
- item[2] = mediaQuery;
- } else if(mediaQuery) {
- item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
- }
- list.push(item);
- }
- }
- };
- return list;
- };
-
-
- /***/ },
- /* 18 */,
- /* 19 */,
- /* 20 */
- /***/ function(module, exports) {
-
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- var stylesInDom = {},
- memoize = function(fn) {
- var memo;
- return function () {
- if (typeof memo === "undefined") memo = fn.apply(this, arguments);
- return memo;
- };
- },
- isOldIE = memoize(function() {
- return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase());
- }),
- getHeadElement = memoize(function () {
- return document.head || document.getElementsByTagName("head")[0];
- }),
- singletonElement = null,
- singletonCounter = 0,
- styleElementsInsertedAtTop = [];
-
- module.exports = function(list, options) {
- if(typeof DEBUG !== "undefined" && DEBUG) {
- if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
- }
-
- options = options || {};
- // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
- // tags it will allow on a page
- if (typeof options.singleton === "undefined") options.singleton = isOldIE();
-
- // By default, add <style> tags to the bottom of <head>.
- if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
-
- var styles = listToStyles(list);
- addStylesToDom(styles, options);
-
- return function update(newList) {
- var mayRemove = [];
- for(var i = 0; i < styles.length; i++) {
- var item = styles[i];
- var domStyle = stylesInDom[item.id];
- domStyle.refs--;
- mayRemove.push(domStyle);
- }
- if(newList) {
- var newStyles = listToStyles(newList);
- addStylesToDom(newStyles, options);
- }
- for(var i = 0; i < mayRemove.length; i++) {
- var domStyle = mayRemove[i];
- if(domStyle.refs === 0) {
- for(var j = 0; j < domStyle.parts.length; j++)
- domStyle.parts[j]();
- delete stylesInDom[domStyle.id];
- }
- }
- };
- }
-
- function addStylesToDom(styles, options) {
- for(var i = 0; i < styles.length; i++) {
- var item = styles[i];
- var domStyle = stylesInDom[item.id];
- if(domStyle) {
- domStyle.refs++;
- for(var j = 0; j < domStyle.parts.length; j++) {
- domStyle.parts[j](item.parts[j]);
- }
- for(; j < item.parts.length; j++) {
- domStyle.parts.push(addStyle(item.parts[j], options));
- }
- } else {
- var parts = [];
- for(var j = 0; j < item.parts.length; j++) {
- parts.push(addStyle(item.parts[j], options));
- }
- stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
- }
- }
- }
-
- function listToStyles(list) {
- var styles = [];
- var newStyles = {};
- for(var i = 0; i < list.length; i++) {
- var item = list[i];
- var id = item[0];
- var css = item[1];
- var media = item[2];
- var sourceMap = item[3];
- var part = {css: css, media: media, sourceMap: sourceMap};
- if(!newStyles[id])
- styles.push(newStyles[id] = {id: id, parts: [part]});
- else
- newStyles[id].parts.push(part);
- }
- return styles;
- }
-
- function insertStyleElement(options, styleElement) {
- var head = getHeadElement();
- var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
- if (options.insertAt === "top") {
- if(!lastStyleElementInsertedAtTop) {
- head.insertBefore(styleElement, head.firstChild);
- } else if(lastStyleElementInsertedAtTop.nextSibling) {
- head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
- } else {
- head.appendChild(styleElement);
- }
- styleElementsInsertedAtTop.push(styleElement);
- } else if (options.insertAt === "bottom") {
- head.appendChild(styleElement);
- } else {
- throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
- }
- }
-
- function removeStyleElement(styleElement) {
- styleElement.parentNode.removeChild(styleElement);
- var idx = styleElementsInsertedAtTop.indexOf(styleElement);
- if(idx >= 0) {
- styleElementsInsertedAtTop.splice(idx, 1);
- }
- }
-
- function createStyleElement(options) {
- var styleElement = document.createElement("style");
- styleElement.type = "text/css";
- insertStyleElement(options, styleElement);
- return styleElement;
- }
-
- function addStyle(obj, options) {
- var styleElement, update, remove;
-
- if (options.singleton) {
- var styleIndex = singletonCounter++;
- styleElement = singletonElement || (singletonElement = createStyleElement(options));
- update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
- remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
- } else {
- styleElement = createStyleElement(options);
- update = applyToTag.bind(null, styleElement);
- remove = function() {
- removeStyleElement(styleElement);
- };
- }
-
- update(obj);
-
- return function updateStyle(newObj) {
- if(newObj) {
- if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
- return;
- update(obj = newObj);
- } else {
- remove();
- }
- };
- }
-
- var replaceText = (function () {
- var textStore = [];
-
- return function (index, replacement) {
- textStore[index] = replacement;
- return textStore.filter(Boolean).join('\n');
- };
- })();
-
- function applyToSingletonTag(styleElement, index, remove, obj) {
- var css = remove ? "" : obj.css;
-
- if (styleElement.styleSheet) {
- styleElement.styleSheet.cssText = replaceText(index, css);
- } else {
- var cssNode = document.createTextNode(css);
- var childNodes = styleElement.childNodes;
- if (childNodes[index]) styleElement.removeChild(childNodes[index]);
- if (childNodes.length) {
- styleElement.insertBefore(cssNode, childNodes[index]);
- } else {
- styleElement.appendChild(cssNode);
- }
- }
- }
-
- function applyToTag(styleElement, obj) {
- var css = obj.css;
- var media = obj.media;
- var sourceMap = obj.sourceMap;
-
- if (media) {
- styleElement.setAttribute("media", media);
- }
-
- if (sourceMap) {
- // https://developer.chrome.com/devtools/docs/javascript-debugging
- // this makes source maps inside style tags work properly in Chrome
- css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */';
- // http://stackoverflow.com/a/26603875
- css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
- }
-
- if (styleElement.styleSheet) {
- styleElement.styleSheet.cssText = css;
- } else {
- while(styleElement.firstChild) {
- styleElement.removeChild(styleElement.firstChild);
- }
- styleElement.appendChild(document.createTextNode(css));
- }
- }
-
-
- /***/ },
- /* 21 */,
- /* 22 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.TOKEN_KEY = exports.LOCAL_STORAGE_KEY = undefined;
-
- var _defineProperty2 = __webpack_require__(164);
-
- var _defineProperty3 = _interopRequireDefault(_defineProperty2);
-
- var _stringify = __webpack_require__(163);
-
- var _stringify2 = _interopRequireDefault(_stringify);
-
- var _assign = __webpack_require__(48);
-
- var _assign2 = _interopRequireDefault(_assign);
-
- var _classCallCheck2 = __webpack_require__(23);
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = __webpack_require__(24);
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- var _token = __webpack_require__(160);
-
- var _token2 = _interopRequireDefault(_token);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var LOCAL_STORAGE_KEY = exports.LOCAL_STORAGE_KEY = 'lesspass';
- var TOKEN_KEY = exports.TOKEN_KEY = 'jwt';
-
- var Storage = function () {
- function Storage() {
- var storage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.localStorage;
- (0, _classCallCheck3.default)(this, Storage);
-
- this.storage = storage;
- }
-
- (0, _createClass3.default)(Storage, [{
- key: '_getLocalStorage',
- value: function _getLocalStorage() {
- return JSON.parse(this.storage.getItem(LOCAL_STORAGE_KEY) || '{}');
- }
- }, {
- key: 'json',
- value: function json() {
- var defaultStorage = {
- baseURL: 'https://lesspass.com',
- timeout: 5000
- };
- var localStorage = this._getLocalStorage();
- return (0, _assign2.default)(defaultStorage, localStorage);
- }
- }, {
- key: 'save',
- value: function save(data) {
- var newData = (0, _assign2.default)(this._getLocalStorage(), data);
- this.storage.setItem(LOCAL_STORAGE_KEY, (0, _stringify2.default)(newData));
- }
- }, {
- key: 'clear',
- value: function clear() {
- this.storage.clear();
- }
- }, {
- key: 'getToken',
- value: function getToken() {
- var storage = this.json();
- if (TOKEN_KEY in storage) {
- return new _token2.default(storage[TOKEN_KEY]);
- }
- return new _token2.default();
- }
- }, {
- key: 'saveToken',
- value: function saveToken(token) {
- this.save((0, _defineProperty3.default)({}, TOKEN_KEY, token));
- }
- }]);
- return Storage;
- }();
-
- exports.default = Storage;
-
- /***/ },
- /* 23 */
- /***/ function(module, exports) {
-
- "use strict";
- "use strict";
-
- exports.__esModule = true;
-
- exports.default = function (instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- };
-
- /***/ },
- /* 24 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- "use strict";
-
- exports.__esModule = true;
-
- var _defineProperty = __webpack_require__(80);
-
- var _defineProperty2 = _interopRequireDefault(_defineProperty);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = function () {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- (0, _defineProperty2.default)(target, descriptor.key, descriptor);
- }
- }
-
- return function (Constructor, protoProps, staticProps) {
- if (protoProps) defineProperties(Constructor.prototype, protoProps);
- if (staticProps) defineProperties(Constructor, staticProps);
- return Constructor;
- };
- }();
-
- /***/ },
- /* 25 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- "use strict";
-
- exports.__esModule = true;
-
- var _assign = __webpack_require__(48);
-
- var _assign2 = _interopRequireDefault(_assign);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = _assign2.default || function (target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
-
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
- }
- }
- }
-
- return target;
- };
-
- /***/ },
- /* 26 */,
- /* 27 */
- /***/ function(module, exports) {
-
- module.exports = {};
-
- /***/ },
- /* 28 */
- /***/ function(module, exports, __webpack_require__) {
-
- var anObject = __webpack_require__(13)
- , IE8_DOM_DEFINE = __webpack_require__(185)
- , toPrimitive = __webpack_require__(206)
- , 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;
- };
-
- /***/ },
- /* 29 */,
- /* 30 */,
- /* 31 */,
- /* 32 */,
- /* 33 */,
- /* 34 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _promise = __webpack_require__(81);
-
- var _promise2 = _interopRequireDefault(_promise);
-
- var _classCallCheck2 = __webpack_require__(23);
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = __webpack_require__(24);
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- var _axios = __webpack_require__(72);
-
- var _axios2 = _interopRequireDefault(_axios);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var Auth = function () {
- function Auth(storage) {
- (0, _classCallCheck3.default)(this, Auth);
-
- this.user = {
- authenticated: false
- };
- this.storage = storage;
- }
-
- (0, _createClass3.default)(Auth, [{
- key: 'isAuthenticated',
- value: function isAuthenticated() {
- var token = this.storage.getToken();
- if (token.stillValid()) {
- this.user.authenticated = true;
- return true;
- }
- this.user.authenticated = false;
- return false;
- }
- }, {
- key: 'isGuest',
- value: function isGuest() {
- return !this.isAuthenticated();
- }
- }, {
- key: 'logout',
- value: function logout() {
- var _this = this;
-
- return new _promise2.default(function (resolve) {
- _this.storage.clear();
- _this.user.authenticated = false;
- resolve();
- });
- }
- }, {
- key: 'login',
- value: function login(user, baseURL) {
- var _this2 = this;
-
- var config = this.storage.json();
- if (baseURL) {
- config.baseURL = baseURL;
- }
- return Auth._requestToken(user, config).then(function (token) {
- _this2.storage.saveToken(token);
- });
- }
- }, {
- key: 'refreshToken',
- value: function refreshToken() {
- var _this3 = this;
-
- var config = this.storage.json();
- var token = this.storage.getToken();
- return Auth._requestNewToken({ token: token.name }, config).then(function (token) {
- _this3.storage.saveToken(token);
- });
- }
- }, {
- key: 'register',
- value: function register(user, baseURL) {
- var config = this.storage.json();
- if (baseURL) {
- config.baseURL = baseURL;
- }
- return _axios2.default.post('/api/auth/register/', user, config).then(function (response) {
- return response.data;
- });
- }
- }, {
- key: 'resetPassword',
- value: function resetPassword(email, baseURL) {
- var config = this.storage.json();
- if (baseURL) {
- config.baseURL = baseURL;
- }
- return _axios2.default.post('/api/auth/password/reset/', email, config);
- }
- }, {
- key: 'confirmResetPassword',
- value: function confirmResetPassword(password, baseURL) {
- var config = this.storage.json();
- if (baseURL) {
- config.baseURL = baseURL;
- }
- return _axios2.default.post('/api/auth/password/reset/confirm/', password, config);
- }
- }], [{
- key: '_requestToken',
- value: function _requestToken(user) {
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.post('/api/tokens/auth/', user, config).then(function (response) {
- return response.data.token;
- });
- }
- }, {
- key: '_requestNewToken',
- value: function _requestNewToken(token) {
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.post('/api/tokens/refresh/', token, config).then(function (response) {
- return response.data.token;
- });
- }
- }]);
- return Auth;
- }();
-
- exports.default = Auth;
-
- /***/ },
- /* 35 */,
- /* 36 */,
- /* 37 */,
- /* 38 */
- /***/ function(module, exports) {
-
- var toString = {}.toString;
-
- module.exports = function(it){
- return toString.call(it).slice(8, -1);
- };
-
- /***/ },
- /* 39 */
- /***/ function(module, exports, __webpack_require__) {
-
- // optional / simple context binding
- var aFunction = __webpack_require__(52);
- 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);
- };
- };
-
- /***/ },
- /* 40 */
- /***/ function(module, exports, __webpack_require__) {
-
- var global = __webpack_require__(6)
- , core = __webpack_require__(8)
- , ctx = __webpack_require__(39)
- , hide = __webpack_require__(15)
- , 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;
-
- /***/ },
- /* 41 */
- /***/ function(module, exports) {
-
- var hasOwnProperty = {}.hasOwnProperty;
- module.exports = function(it, key){
- return hasOwnProperty.call(it, key);
- };
-
- /***/ },
- /* 42 */
- /***/ function(module, exports) {
-
- module.exports = function(it){
- return typeof it === 'object' ? it !== null : typeof it === 'function';
- };
-
- /***/ },
- /* 43 */,
- /* 44 */,
- /* 45 */,
- /* 46 */,
- /* 47 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {/*!
- * Vue.js v2.0.3
- * (c) 2014-2016 Evan You
- * Released under the MIT License.
- */
- 'use strict';
-
- /* */
-
- /**
- * Convert a value to a string that is actually rendered.
- */
- function _toString (val) {
- return val == null
- ? ''
- : typeof val === 'object'
- ? JSON.stringify(val, null, 2)
- : String(val)
- }
-
- /**
- * Convert a input value to a number for persistence.
- * If the conversion fails, return original string.
- */
- function toNumber (val) {
- var n = parseFloat(val, 10);
- return (n || n === 0) ? n : val
- }
-
- /**
- * Make a map and return a function for checking if a key
- * is in that map.
- */
- function makeMap (
- str,
- expectsLowerCase
- ) {
- var map = Object.create(null);
- var list = str.split(',');
- for (var i = 0; i < list.length; i++) {
- map[list[i]] = true;
- }
- return expectsLowerCase
- ? function (val) { return map[val.toLowerCase()]; }
- : function (val) { return map[val]; }
- }
-
- /**
- * Check if a tag is a built-in tag.
- */
- var isBuiltInTag = makeMap('slot,component', true);
-
- /**
- * Remove an item from an array
- */
- function remove$1 (arr, item) {
- if (arr.length) {
- var index = arr.indexOf(item);
- if (index > -1) {
- return arr.splice(index, 1)
- }
- }
- }
-
- /**
- * Check whether the object has the property.
- */
- var hasOwnProperty = Object.prototype.hasOwnProperty;
- function hasOwn (obj, key) {
- return hasOwnProperty.call(obj, key)
- }
-
- /**
- * Check if value is primitive
- */
- function isPrimitive (value) {
- return typeof value === 'string' || typeof value === 'number'
- }
-
- /**
- * Create a cached version of a pure function.
- */
- function cached (fn) {
- var cache = Object.create(null);
- return function cachedFn (str) {
- var hit = cache[str];
- return hit || (cache[str] = fn(str))
- }
- }
-
- /**
- * Camelize a hyphen-delmited string.
- */
- var camelizeRE = /-(\w)/g;
- var camelize = cached(function (str) {
- return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
- });
-
- /**
- * Capitalize a string.
- */
- var capitalize = cached(function (str) {
- return str.charAt(0).toUpperCase() + str.slice(1)
- });
-
- /**
- * Hyphenate a camelCase string.
- */
- var hyphenateRE = /([^-])([A-Z])/g;
- var hyphenate = cached(function (str) {
- return str
- .replace(hyphenateRE, '$1-$2')
- .replace(hyphenateRE, '$1-$2')
- .toLowerCase()
- });
-
- /**
- * Simple bind, faster than native
- */
- function bind$1 (fn, ctx) {
- function boundFn (a) {
- var l = arguments.length;
- return l
- ? l > 1
- ? fn.apply(ctx, arguments)
- : fn.call(ctx, a)
- : fn.call(ctx)
- }
- // record original fn length
- boundFn._length = fn.length;
- return boundFn
- }
-
- /**
- * Convert an Array-like object to a real 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.
- */
- function extend (to, _from) {
- for (var key in _from) {
- to[key] = _from[key];
- }
- 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.
- */
- function isObject (obj) {
- return obj !== null && typeof obj === 'object'
- }
-
- /**
- * Strict object type check. Only returns true
- * for plain JavaScript objects.
- */
- var toString = Object.prototype.toString;
- var OBJECT_STRING = '[object Object]';
- function isPlainObject (obj) {
- return toString.call(obj) === OBJECT_STRING
- }
-
- /**
- * Merge an Array of Objects into a single Object.
- */
- function toObject (arr) {
- var res = {};
- for (var i = 0; i < arr.length; i++) {
- if (arr[i]) {
- extend(res, arr[i]);
- }
- }
- return res
- }
-
- /**
- * Perform no operation.
- */
- function noop () {}
-
- /**
- * Always return false.
- */
- var no = function () { return false; };
-
- /**
- * Generate a static keys string from compiler modules.
- */
- function genStaticKeys (modules) {
- return modules.reduce(function (keys, m) {
- return keys.concat(m.staticKeys || [])
- }, []).join(',')
- }
-
- /**
- * Check if two values are loosely equal - that is,
- * if they are plain objects, do they have the same shape?
- */
- function looseEqual (a, b) {
- /* eslint-disable eqeqeq */
- return a == b || (
- isObject(a) && isObject(b)
- ? JSON.stringify(a) === JSON.stringify(b)
- : false
- )
- /* eslint-enable eqeqeq */
- }
-
- function looseIndexOf (arr, val) {
- for (var i = 0; i < arr.length; i++) {
- if (looseEqual(arr[i], val)) { return i }
- }
- return -1
- }
-
- /* */
-
- var config = {
- /**
- * Option merge strategies (used in core/util/options)
- */
- optionMergeStrategies: Object.create(null),
-
- /**
- * Whether to suppress warnings.
- */
- silent: false,
-
- /**
- * Whether to enable devtools
- */
- devtools: process.env.NODE_ENV !== 'production',
-
- /**
- * Error handler for watcher errors
- */
- errorHandler: null,
-
- /**
- * Ignore certain custom elements
- */
- ignoredElements: null,
-
- /**
- * Custom user key aliases for v-on
- */
- keyCodes: Object.create(null),
-
- /**
- * Check if a tag is reserved so that it cannot be registered as a
- * component. This is platform-dependent and may be overwritten.
- */
- isReservedTag: no,
-
- /**
- * Check if a tag is an unknown element.
- * Platform-dependent.
- */
- isUnknownElement: no,
-
- /**
- * Get the namespace of an element
- */
- getTagNamespace: noop,
-
- /**
- * Check if an attribute must be bound using property, e.g. value
- * Platform-dependent.
- */
- mustUseProp: no,
-
- /**
- * List of asset types that a component can own.
- */
- _assetTypes: [
- 'component',
- 'directive',
- 'filter'
- ],
-
- /**
- * List of lifecycle hooks.
- */
- _lifecycleHooks: [
- 'beforeCreate',
- 'created',
- 'beforeMount',
- 'mounted',
- 'beforeUpdate',
- 'updated',
- 'beforeDestroy',
- 'destroyed',
- 'activated',
- 'deactivated'
- ],
-
- /**
- * Max circular updates allowed in a scheduler flush cycle.
- */
- _maxUpdateCount: 100,
-
- /**
- * Server rendering?
- */
- _isServer: process.env.VUE_ENV === 'server'
- };
-
- /* */
-
- /**
- * Check if a string starts with $ or _
- */
- function isReserved (str) {
- var c = (str + '').charCodeAt(0);
- return c === 0x24 || c === 0x5F
- }
-
- /**
- * Define a property.
- */
- function def (obj, key, val, enumerable) {
- Object.defineProperty(obj, key, {
- value: val,
- enumerable: !!enumerable,
- writable: true,
- configurable: true
- });
- }
-
- /**
- * Parse simple path.
- */
- var bailRE = /[^\w\.\$]/;
- function parsePath (path) {
- if (bailRE.test(path)) {
- return
- } else {
- var segments = path.split('.');
- return function (obj) {
- for (var i = 0; i < segments.length; i++) {
- if (!obj) { return }
- obj = obj[segments[i]];
- }
- return obj
- }
- }
- }
-
- /* */
- /* globals MutationObserver */
-
- // can we use __proto__?
- var hasProto = '__proto__' in {};
-
- // Browser environment sniffing
- var inBrowser =
- typeof window !== 'undefined' &&
- Object.prototype.toString.call(window) !== '[object Object]';
-
- var UA = inBrowser && window.navigator.userAgent.toLowerCase();
- var isIE = UA && /msie|trident/.test(UA);
- var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
- var isEdge = UA && UA.indexOf('edge/') > 0;
- var isAndroid = UA && UA.indexOf('android') > 0;
- var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
-
- // detect devtools
- var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
-
- /* istanbul ignore next */
- function isNative (Ctor) {
- return /native code/.test(Ctor.toString())
- }
-
- /**
- * Defer a task to execute it asynchronously.
- */
- var nextTick = (function () {
- var callbacks = [];
- var pending = false;
- var timerFunc;
-
- 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();
- 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' && (
- isNative(MutationObserver) ||
- // PhantomJS and iOS 7.x
- MutationObserver.toString() === '[object MutationObserverConstructor]'
- )) {
- // use MutationObserver where native Promise is not available,
- // e.g. PhantomJS 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 = function () {
- setTimeout(nextTickHandler, 0);
- };
- }
-
- return function queueNextTick (cb, ctx) {
- var func = ctx
- ? function () { cb.call(ctx); }
- : cb;
- callbacks.push(func);
- if (!pending) {
- pending = true;
- timerFunc();
- }
- }
- })();
-
- var _Set;
- /* 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 () {
- function Set () {
- this.set = Object.create(null);
- }
- Set.prototype.has = function has (key) {
- return this.set[key] !== undefined
- };
- Set.prototype.add = function add (key) {
- this.set[key] = 1;
- };
- Set.prototype.clear = function clear () {
- this.set = Object.create(null);
- };
-
- return Set;
- }());
- }
-
- /* not type checking this file because flow doesn't play well with Proxy */
-
- var hasProxy;
- var proxyHandlers;
- var initProxy;
-
- if (process.env.NODE_ENV !== 'production') {
- var allowedGlobals = makeMap(
- 'Infinity,undefined,NaN,isFinite,isNaN,' +
- 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
- 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
- 'require' // for Webpack/Browserify
- );
-
- hasProxy =
- typeof Proxy !== 'undefined' &&
- Proxy.toString().match(/native code/);
-
- proxyHandlers = {
- has: function has (target, key) {
- var has = key in target;
- var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
- if (!has && !isAllowed) {
- warn(
- "Property or method \"" + key + "\" is not defined on the instance but " +
- "referenced during render. Make sure to declare reactive data " +
- "properties in the data option.",
- target
- );
- }
- return has || !isAllowed
- }
- };
-
- initProxy = function initProxy (vm) {
- if (hasProxy) {
- vm._renderProxy = new Proxy(vm, proxyHandlers);
- } else {
- vm._renderProxy = vm;
- }
- };
- }
-
- /* */
-
-
- var uid$2 = 0;
-
- /**
- * A dep is an observable that can have multiple
- * directives subscribing to it.
- */
- var Dep = function Dep () {
- this.id = uid$2++;
- this.subs = [];
- };
-
- Dep.prototype.addSub = function addSub (sub) {
- this.subs.push(sub);
- };
-
- Dep.prototype.removeSub = function removeSub (sub) {
- remove$1(this.subs, sub);
- };
-
- Dep.prototype.depend = function depend () {
- if (Dep.target) {
- Dep.target.addDep(this);
- }
- };
-
- Dep.prototype.notify = function notify () {
- // stablize the subscriber list first
- var subs = this.subs.slice();
- for (var i = 0, l = subs.length; i < l; i++) {
- subs[i].update();
- }
- };
-
- // 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;
- var targetStack = [];
-
- function pushTarget (_target) {
- if (Dep.target) { targetStack.push(Dep.target); }
- Dep.target = _target;
- }
-
- function popTarget () {
- Dep.target = targetStack.pop();
- }
-
- /* */
-
-
- var queue = [];
- var has$1 = {};
- var circular = {};
- var waiting = false;
- var flushing = false;
- var index = 0;
-
- /**
- * Reset the scheduler's state.
- */
- function resetSchedulerState () {
- queue.length = 0;
- has$1 = {};
- if (process.env.NODE_ENV !== 'production') {
- circular = {};
- }
- waiting = flushing = false;
- }
-
- /**
- * Flush both queues and run the watchers.
- */
- function flushSchedulerQueue () {
- flushing = true;
-
- // Sort queue before flush.
- // This ensures that:
- // 1. Components are updated from parent to child. (because parent is always
- // created before the child)
- // 2. A component's user watchers are run before its render watcher (because
- // user watchers are created before the render watcher)
- // 3. If a component is destroyed during a parent component's watcher run,
- // its watchers can be skipped.
- queue.sort(function (a, b) { return a.id - b.id; });
-
- // do not cache length because more watchers might be pushed
- // as we run existing watchers
- for (index = 0; index < queue.length; index++) {
- var watcher = queue[index];
- var id = watcher.id;
- has$1[id] = null;
- watcher.run();
- // in dev build, check and stop circular updates.
- if (process.env.NODE_ENV !== 'production' && has$1[id] != null) {
- circular[id] = (circular[id] || 0) + 1;
- if (circular[id] > config._maxUpdateCount) {
- warn(
- 'You may have an infinite update loop ' + (
- watcher.user
- ? ("in watcher with expression \"" + (watcher.expression) + "\"")
- : "in a component render function."
- ),
- watcher.vm
- );
- break
- }
- }
- }
-
- // devtool hook
- /* istanbul ignore if */
- if (devtools && config.devtools) {
- devtools.emit('flush');
- }
-
- resetSchedulerState();
- }
-
- /**
- * Push a watcher into the watcher queue.
- * Jobs with duplicate IDs will be skipped unless it's
- * pushed when the queue is being flushed.
- */
- function queueWatcher (watcher) {
- var id = watcher.id;
- if (has$1[id] == null) {
- has$1[id] = true;
- if (!flushing) {
- queue.push(watcher);
- } else {
- // if already flushing, splice the watcher based on its id
- // if already past its id, it will be run next immediately.
- var i = queue.length - 1;
- while (i >= 0 && queue[i].id > watcher.id) {
- i--;
- }
- queue.splice(Math.max(i, index) + 1, 0, watcher);
- }
- // queue the flush
- if (!waiting) {
- waiting = true;
- nextTick(flushSchedulerQueue);
- }
- }
- }
-
- /* */
-
- var uid$1 = 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.
- */
- var Watcher = function Watcher (
- vm,
- expOrFn,
- cb,
- options
- ) {
- if ( options === void 0 ) options = {};
-
- this.vm = vm;
- vm._watchers.push(this);
- // options
- this.deep = !!options.deep;
- this.user = !!options.user;
- this.lazy = !!options.lazy;
- this.sync = !!options.sync;
- this.expression = expOrFn.toString();
- this.cb = cb;
- this.id = ++uid$1; // 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();
- // parse expression for getter
- if (typeof expOrFn === 'function') {
- this.getter = expOrFn;
- } else {
- this.getter = parsePath(expOrFn);
- if (!this.getter) {
- this.getter = function () {};
- process.env.NODE_ENV !== 'production' && warn(
- "Failed watching path: \"" + expOrFn + "\" " +
- 'Watcher only accepts simple dot-delimited paths. ' +
- 'For full control, use a function instead.',
- vm
- );
- }
- }
- this.value = this.lazy
- ? undefined
- : this.get();
- };
-
- /**
- * Evaluate the getter, and re-collect dependencies.
- */
- Watcher.prototype.get = function get () {
- pushTarget(this);
- var value = this.getter.call(this.vm, this.vm);
- // "touch" every property so they are all tracked as
- // dependencies for deep watching
- if (this.deep) {
- traverse(value);
- }
- popTarget();
- this.cleanupDeps();
- return value
- };
-
- /**
- * Add a dependency to this directive.
- */
- Watcher.prototype.addDep = function addDep (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.cleanupDeps = function cleanupDeps () {
- var this$1 = this;
-
- var i = this.deps.length;
- while (i--) {
- var dep = this$1.deps[i];
- if (!this$1.newDepIds.has(dep.id)) {
- dep.removeSub(this$1);
- }
- }
- 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.
- */
- Watcher.prototype.update = function update () {
- /* istanbul ignore else */
- if (this.lazy) {
- this.dirty = true;
- } else if (this.sync) {
- this.run();
- } else {
- queueWatcher(this);
- }
- };
-
- /**
- * Scheduler job interface.
- * Will be called by the scheduler.
- */
- Watcher.prototype.run = function run () {
- 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.
- isObject(value) ||
- this.deep
- ) {
- // set new value
- var oldValue = this.value;
- this.value = value;
- if (this.user) {
- try {
- this.cb.call(this.vm, value, oldValue);
- } catch (e) {
- process.env.NODE_ENV !== 'production' && warn(
- ("Error in watcher \"" + (this.expression) + "\""),
- this.vm
- );
- /* istanbul ignore else */
- if (config.errorHandler) {
- config.errorHandler.call(null, e, this.vm);
- } else {
- throw e
- }
- }
- } else {
- this.cb.call(this.vm, value, oldValue);
- }
- }
- }
- };
-
- /**
- * Evaluate the value of the watcher.
- * This only gets called for lazy watchers.
- */
- Watcher.prototype.evaluate = function evaluate () {
- this.value = this.get();
- this.dirty = false;
- };
-
- /**
- * Depend on all deps collected by this watcher.
- */
- Watcher.prototype.depend = function depend () {
- var this$1 = this;
-
- var i = this.deps.length;
- while (i--) {
- this$1.deps[i].depend();
- }
- };
-
- /**
- * Remove self from all dependencies' subcriber list.
- */
- Watcher.prototype.teardown = function teardown () {
- var this$1 = this;
-
- 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) {
- remove$1(this.vm._watchers, this);
- }
- var i = this.deps.length;
- while (i--) {
- this$1.deps[i].removeSub(this$1);
- }
- this.active = false;
- }
- };
-
- /**
- * Recursively traverse an object to evoke all converted
- * getters, so that every nested property inside the object
- * is collected as a "deep" dependency.
- */
- var seenObjects = new _Set();
- function traverse (val, seen) {
- var i, keys;
- if (!seen) {
- seen = seenObjects;
- seen.clear();
- }
- var isA = Array.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); }
- }
- }
- }
-
- /*
- * not type checking this file because flow doesn't play well with
- * dynamically accessing methods on Array prototype
- */
-
- var arrayProto = Array.prototype;
- var arrayMethods = Object.create(arrayProto);[
- 'push',
- 'pop',
- 'shift',
- 'unshift',
- 'splice',
- 'sort',
- 'reverse'
- ]
- .forEach(function (method) {
- // cache original method
- var original = arrayProto[method];
- def(arrayMethods, method, function mutator () {
- var arguments$1 = arguments;
-
- // avoid leaking arguments:
- // http://jsperf.com/closure-with-arguments
- var i = arguments.length;
- var args = new Array(i);
- while (i--) {
- args[i] = arguments$1[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
- });
- });
-
- /* */
-
- var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
-
- /**
- * By default, when a reactive property is set, the new value is
- * also converted to become reactive. However when passing down props,
- * we don't want to force conversion because the value may be a nested value
- * under a frozen data structure. Converting it would defeat the optimization.
- */
- var observerState = {
- shouldConvert: true,
- isSettingProps: false
- };
-
- /**
- * 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.
- */
- var Observer = function Observer (value) {
- this.value = value;
- this.dep = new Dep();
- this.vmCount = 0;
- def(value, '__ob__', this);
- if (Array.isArray(value)) {
- var augment = hasProto
- ? protoAugment
- : copyAugment;
- augment(value, arrayMethods, arrayKeys);
- this.observeArray(value);
- } else {
- this.walk(value);
- }
- };
-
- /**
- * Walk through each property and convert them into
- * getter/setters. This method should only be called when
- * value type is Object.
- */
- Observer.prototype.walk = function walk (obj) {
- var keys = Object.keys(obj);
- for (var i = 0; i < keys.length; i++) {
- defineReactive$$1(obj, keys[i], obj[keys[i]]);
- }
- };
-
- /**
- * Observe a list of Array items.
- */
- Observer.prototype.observeArray = function observeArray (items) {
- for (var i = 0, l = items.length; i < l; i++) {
- observe(items[i]);
- }
- };
-
- // helpers
-
- /**
- * Augment an target Object or Array by intercepting
- * the prototype chain using __proto__
- */
- 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.
- *
- * istanbul ignore next
- */
- 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.
- */
- function observe (value) {
- if (!isObject(value)) {
- return
- }
- var ob;
- if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
- ob = value.__ob__;
- } else if (
- observerState.shouldConvert &&
- !config._isServer &&
- (Array.isArray(value) || isPlainObject(value)) &&
- Object.isExtensible(value) &&
- !value._isVue
- ) {
- ob = new Observer(value);
- }
- return ob
- }
-
- /**
- * Define a reactive property on an Object.
- */
- function defineReactive$$1 (
- obj,
- key,
- val,
- customSetter
- ) {
- 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 (Array.isArray(value)) {
- dependArray(value);
- }
- }
- return value
- },
- set: function reactiveSetter (newVal) {
- var value = getter ? getter.call(obj) : val;
- if (newVal === value) {
- return
- }
- if (process.env.NODE_ENV !== 'production' && customSetter) {
- customSetter();
- }
- if (setter) {
- setter.call(obj, newVal);
- } else {
- val = newVal;
- }
- childOb = observe(newVal);
- dep.notify();
- }
- });
- }
-
- /**
- * Set a property on an object. Adds the new property and
- * triggers change notification if the property doesn't
- * already exist.
- */
- function set (obj, key, val) {
- if (Array.isArray(obj)) {
- obj.splice(key, 1, val);
- return val
- }
- if (hasOwn(obj, key)) {
- obj[key] = val;
- return
- }
- var ob = obj.__ob__;
- if (obj._isVue || (ob && ob.vmCount)) {
- process.env.NODE_ENV !== 'production' && warn(
- 'Avoid adding reactive properties to a Vue instance or its root $data ' +
- 'at runtime - declare it upfront in the data option.'
- );
- return
- }
- if (!ob) {
- obj[key] = val;
- return
- }
- defineReactive$$1(ob.value, key, val);
- ob.dep.notify();
- return val
- }
-
- /**
- * Delete a property and trigger change if necessary.
- */
- function del (obj, key) {
- var ob = obj.__ob__;
- if (obj._isVue || (ob && ob.vmCount)) {
- process.env.NODE_ENV !== 'production' && warn(
- 'Avoid deleting properties on a Vue instance or its root $data ' +
- '- just set it to null.'
- );
- return
- }
- if (!hasOwn(obj, key)) {
- return
- }
- delete obj[key];
- if (!ob) {
- return
- }
- ob.dep.notify();
- }
-
- /**
- * Collect dependencies on array elements when the array is touched, since
- * we cannot intercept array element access like property getters.
- */
- function dependArray (value) {
- for (var e = void 0, i = 0, l = value.length; i < l; i++) {
- e = value[i];
- e && e.__ob__ && e.__ob__.dep.depend();
- if (Array.isArray(e)) {
- dependArray(e);
- }
- }
- }
-
- /* */
-
- function initState (vm) {
- vm._watchers = [];
- initProps(vm);
- initData(vm);
- initComputed(vm);
- initMethods(vm);
- initWatch(vm);
- }
-
- function initProps (vm) {
- var props = vm.$options.props;
- if (props) {
- var propsData = vm.$options.propsData || {};
- var keys = vm.$options._propKeys = Object.keys(props);
- var isRoot = !vm.$parent;
- // root instance props should be converted
- observerState.shouldConvert = isRoot;
- var loop = function ( i ) {
- var key = keys[i];
- /* istanbul ignore else */
- if (process.env.NODE_ENV !== 'production') {
- defineReactive$$1(vm, key, validateProp(key, props, propsData, vm), function () {
- if (vm.$parent && !observerState.isSettingProps) {
- warn(
- "Avoid mutating a prop directly since the value will be " +
- "overwritten whenever the parent component re-renders. " +
- "Instead, use a data or computed property based on the prop's " +
- "value. Prop being mutated: \"" + key + "\"",
- vm
- );
- }
- });
- } else {
- defineReactive$$1(vm, key, validateProp(key, props, propsData, vm));
- }
- };
-
- for (var i = 0; i < keys.length; i++) loop( i );
- observerState.shouldConvert = true;
- }
- }
-
- function initData (vm) {
- var data = vm.$options.data;
- data = vm._data = typeof data === 'function'
- ? data.call(vm)
- : data || {};
- if (!isPlainObject(data)) {
- data = {};
- process.env.NODE_ENV !== 'production' && warn(
- 'data functions should return an object.',
- vm
- );
- }
- // proxy data on instance
- var keys = Object.keys(data);
- var props = vm.$options.props;
- var i = keys.length;
- while (i--) {
- if (props && hasOwn(props, keys[i])) {
- process.env.NODE_ENV !== 'production' && warn(
- "The data property \"" + (keys[i]) + "\" is already declared as a prop. " +
- "Use prop default value instead.",
- vm
- );
- } else {
- proxy(vm, keys[i]);
- }
- }
- // observe data
- observe(data);
- data.__ob__ && data.__ob__.vmCount++;
- }
-
- var computedSharedDefinition = {
- enumerable: true,
- configurable: true,
- get: noop,
- set: noop
- };
-
- function initComputed (vm) {
- var computed = vm.$options.computed;
- if (computed) {
- for (var key in computed) {
- var userDef = computed[key];
- if (typeof userDef === 'function') {
- computedSharedDefinition.get = makeComputedGetter(userDef, vm);
- computedSharedDefinition.set = noop;
- } else {
- computedSharedDefinition.get = userDef.get
- ? userDef.cache !== false
- ? makeComputedGetter(userDef.get, vm)
- : bind$1(userDef.get, vm)
- : noop;
- computedSharedDefinition.set = userDef.set
- ? bind$1(userDef.set, vm)
- : noop;
- }
- Object.defineProperty(vm, key, computedSharedDefinition);
- }
- }
- }
-
- function makeComputedGetter (getter, owner) {
- var watcher = new Watcher(owner, getter, noop, {
- lazy: true
- });
- return function computedGetter () {
- if (watcher.dirty) {
- watcher.evaluate();
- }
- if (Dep.target) {
- watcher.depend();
- }
- return watcher.value
- }
- }
-
- function initMethods (vm) {
- var methods = vm.$options.methods;
- if (methods) {
- for (var key in methods) {
- vm[key] = methods[key] == null ? noop : bind$1(methods[key], vm);
- if (process.env.NODE_ENV !== 'production' && methods[key] == null) {
- warn(
- "method \"" + key + "\" has an undefined value in the component definition. " +
- "Did you reference the function correctly?",
- vm
- );
- }
- }
- }
- }
-
- function initWatch (vm) {
- var watch = vm.$options.watch;
- if (watch) {
- for (var key in watch) {
- var handler = watch[key];
- if (Array.isArray(handler)) {
- for (var i = 0; i < handler.length; i++) {
- createWatcher(vm, key, handler[i]);
- }
- } else {
- createWatcher(vm, key, handler);
- }
- }
- }
- }
-
- function createWatcher (vm, key, handler) {
- var options;
- if (isPlainObject(handler)) {
- options = handler;
- handler = handler.handler;
- }
- if (typeof handler === 'string') {
- handler = vm[handler];
- }
- vm.$watch(key, handler, options);
- }
-
- function stateMixin (Vue) {
- // flow somehow has problems with directly declared definition object
- // when using Object.defineProperty, so we have to procedurally build up
- // the object here.
- var dataDef = {};
- dataDef.get = function () {
- return this._data
- };
- if (process.env.NODE_ENV !== 'production') {
- dataDef.set = function (newData) {
- warn(
- 'Avoid replacing instance root $data. ' +
- 'Use nested data properties instead.',
- this
- );
- };
- }
- Object.defineProperty(Vue.prototype, '$data', dataDef);
-
- Vue.prototype.$set = set;
- Vue.prototype.$delete = del;
-
- Vue.prototype.$watch = function (
- expOrFn,
- cb,
- options
- ) {
- var vm = this;
- options = options || {};
- options.user = true;
- var watcher = new Watcher(vm, expOrFn, cb, options);
- if (options.immediate) {
- cb.call(vm, watcher.value);
- }
- return function unwatchFn () {
- watcher.teardown();
- }
- };
- }
-
- function proxy (vm, key) {
- if (!isReserved(key)) {
- Object.defineProperty(vm, key, {
- configurable: true,
- enumerable: true,
- get: function proxyGetter () {
- return vm._data[key]
- },
- set: function proxySetter (val) {
- vm._data[key] = val;
- }
- });
- }
- }
-
- /* */
-
- var VNode = function VNode (
- tag,
- data,
- children,
- text,
- elm,
- ns,
- context,
- componentOptions
- ) {
- this.tag = tag;
- this.data = data;
- this.children = children;
- this.text = text;
- this.elm = elm;
- this.ns = ns;
- this.context = context;
- this.functionalContext = undefined;
- this.key = data && data.key;
- this.componentOptions = componentOptions;
- this.child = undefined;
- this.parent = undefined;
- this.raw = false;
- this.isStatic = false;
- this.isRootInsert = true;
- this.isComment = false;
- this.isCloned = false;
- };
-
- var emptyVNode = function () {
- var node = new VNode();
- node.text = '';
- node.isComment = true;
- return node
- };
-
- // optimized shallow clone
- // used for static nodes and slot nodes because they may be reused across
- // multiple renders, cloning them avoids errors when DOM manipulations rely
- // on their elm reference.
- function cloneVNode (vnode) {
- var cloned = new VNode(
- vnode.tag,
- vnode.data,
- vnode.children,
- vnode.text,
- vnode.elm,
- vnode.ns,
- vnode.context,
- vnode.componentOptions
- );
- cloned.isStatic = vnode.isStatic;
- cloned.key = vnode.key;
- cloned.isCloned = true;
- return cloned
- }
-
- function cloneVNodes (vnodes) {
- var res = new Array(vnodes.length);
- for (var i = 0; i < vnodes.length; i++) {
- res[i] = cloneVNode(vnodes[i]);
- }
- return res
- }
-
- /* */
-
- function mergeVNodeHook (def, hookKey, hook, key) {
- key = key + hookKey;
- var injectedHash = def.__injected || (def.__injected = {});
- if (!injectedHash[key]) {
- injectedHash[key] = true;
- var oldHook = def[hookKey];
- if (oldHook) {
- def[hookKey] = function () {
- oldHook.apply(this, arguments);
- hook.apply(this, arguments);
- };
- } else {
- def[hookKey] = hook;
- }
- }
- }
-
- /* */
-
- function updateListeners (
- on,
- oldOn,
- add,
- remove$$1,
- vm
- ) {
- var name, cur, old, fn, event, capture;
- for (name in on) {
- cur = on[name];
- old = oldOn[name];
- if (!cur) {
- process.env.NODE_ENV !== 'production' && warn(
- "Invalid handler for event \"" + name + "\": got " + String(cur),
- vm
- );
- } else if (!old) {
- capture = name.charAt(0) === '!';
- event = capture ? name.slice(1) : name;
- if (Array.isArray(cur)) {
- add(event, (cur.invoker = arrInvoker(cur)), capture);
- } else {
- if (!cur.invoker) {
- fn = cur;
- cur = on[name] = {};
- cur.fn = fn;
- cur.invoker = fnInvoker(cur);
- }
- add(event, cur.invoker, capture);
- }
- } else if (cur !== old) {
- if (Array.isArray(old)) {
- old.length = cur.length;
- for (var i = 0; i < old.length; i++) { old[i] = cur[i]; }
- on[name] = old;
- } else {
- old.fn = cur;
- on[name] = old;
- }
- }
- }
- for (name in oldOn) {
- if (!on[name]) {
- event = name.charAt(0) === '!' ? name.slice(1) : name;
- remove$$1(event, oldOn[name].invoker);
- }
- }
- }
-
- function arrInvoker (arr) {
- return function (ev) {
- var arguments$1 = arguments;
-
- var single = arguments.length === 1;
- for (var i = 0; i < arr.length; i++) {
- single ? arr[i](ev) : arr[i].apply(null, arguments$1);
- }
- }
- }
-
- function fnInvoker (o) {
- return function (ev) {
- var single = arguments.length === 1;
- single ? o.fn(ev) : o.fn.apply(null, arguments);
- }
- }
-
- /* */
-
- function normalizeChildren (
- children,
- ns,
- nestedIndex
- ) {
- if (isPrimitive(children)) {
- return [createTextVNode(children)]
- }
- if (Array.isArray(children)) {
- var res = [];
- for (var i = 0, l = children.length; i < l; i++) {
- var c = children[i];
- var last = res[res.length - 1];
- // nested
- if (Array.isArray(c)) {
- res.push.apply(res, normalizeChildren(c, ns, ((nestedIndex || '') + "_" + i)));
- } else if (isPrimitive(c)) {
- if (last && last.text) {
- last.text += String(c);
- } else if (c !== '') {
- // convert primitive to vnode
- res.push(createTextVNode(c));
- }
- } else if (c instanceof VNode) {
- if (c.text && last && last.text) {
- last.text += c.text;
- } else {
- // inherit parent namespace
- if (ns) {
- applyNS(c, ns);
- }
- // default key for nested array children (likely generated by v-for)
- if (c.tag && c.key == null && nestedIndex != null) {
- c.key = "__vlist" + nestedIndex + "_" + i + "__";
- }
- res.push(c);
- }
- }
- }
- return res
- }
- }
-
- function createTextVNode (val) {
- return new VNode(undefined, undefined, undefined, String(val))
- }
-
- function applyNS (vnode, ns) {
- if (vnode.tag && !vnode.ns) {
- vnode.ns = ns;
- if (vnode.children) {
- for (var i = 0, l = vnode.children.length; i < l; i++) {
- applyNS(vnode.children[i], ns);
- }
- }
- }
- }
-
- /* */
-
- function getFirstComponentChild (children) {
- return children && children.filter(function (c) { return c && c.componentOptions; })[0]
- }
-
- /* */
-
- var activeInstance = null;
-
- function initLifecycle (vm) {
- var options = vm.$options;
-
- // locate first non-abstract parent
- var parent = options.parent;
- if (parent && !options.abstract) {
- while (parent.$options.abstract && parent.$parent) {
- parent = parent.$parent;
- }
- parent.$children.push(vm);
- }
-
- vm.$parent = parent;
- vm.$root = parent ? parent.$root : vm;
-
- vm.$children = [];
- vm.$refs = {};
-
- vm._watcher = null;
- vm._inactive = false;
- vm._isMounted = false;
- vm._isDestroyed = false;
- vm._isBeingDestroyed = false;
- }
-
- function lifecycleMixin (Vue) {
- Vue.prototype._mount = function (
- el,
- hydrating
- ) {
- var vm = this;
- vm.$el = el;
- if (!vm.$options.render) {
- vm.$options.render = emptyVNode;
- if (process.env.NODE_ENV !== 'production') {
- /* istanbul ignore if */
- if (vm.$options.template) {
- warn(
- 'You are using the runtime-only build of Vue where the template ' +
- 'option is not available. Either pre-compile the templates into ' +
- 'render functions, or use the compiler-included build.',
- vm
- );
- } else {
- warn(
- 'Failed to mount component: template or render function not defined.',
- vm
- );
- }
- }
- }
- callHook(vm, 'beforeMount');
- vm._watcher = new Watcher(vm, function () {
- vm._update(vm._render(), hydrating);
- }, noop);
- hydrating = false;
- // manually mounted instance, call mounted on self
- // mounted is called for render-created child components in its inserted hook
- if (vm.$vnode == null) {
- vm._isMounted = true;
- callHook(vm, 'mounted');
- }
- return vm
- };
-
- Vue.prototype._update = function (vnode, hydrating) {
- var vm = this;
- if (vm._isMounted) {
- callHook(vm, 'beforeUpdate');
- }
- var prevEl = vm.$el;
- var prevActiveInstance = activeInstance;
- activeInstance = vm;
- var prevVnode = vm._vnode;
- vm._vnode = vnode;
- if (!prevVnode) {
- // Vue.prototype.__patch__ is injected in entry points
- // based on the rendering backend used.
- vm.$el = vm.__patch__(vm.$el, vnode, hydrating);
- } else {
- vm.$el = vm.__patch__(prevVnode, vnode);
- }
- activeInstance = prevActiveInstance;
- // update __vue__ reference
- if (prevEl) {
- prevEl.__vue__ = null;
- }
- if (vm.$el) {
- vm.$el.__vue__ = vm;
- }
- // if parent is an HOC, update its $el as well
- if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
- vm.$parent.$el = vm.$el;
- }
- if (vm._isMounted) {
- callHook(vm, 'updated');
- }
- };
-
- Vue.prototype._updateFromParent = function (
- propsData,
- listeners,
- parentVnode,
- renderChildren
- ) {
- var vm = this;
- var hasChildren = !!(vm.$options._renderChildren || renderChildren);
- vm.$options._parentVnode = parentVnode;
- vm.$options._renderChildren = renderChildren;
- // update props
- if (propsData && vm.$options.props) {
- observerState.shouldConvert = false;
- if (process.env.NODE_ENV !== 'production') {
- observerState.isSettingProps = true;
- }
- var propKeys = vm.$options._propKeys || [];
- for (var i = 0; i < propKeys.length; i++) {
- var key = propKeys[i];
- vm[key] = validateProp(key, vm.$options.props, propsData, vm);
- }
- observerState.shouldConvert = true;
- if (process.env.NODE_ENV !== 'production') {
- observerState.isSettingProps = false;
- }
- }
- // update listeners
- if (listeners) {
- var oldListeners = vm.$options._parentListeners;
- vm.$options._parentListeners = listeners;
- vm._updateListeners(listeners, oldListeners);
- }
- // resolve slots + force update if has children
- if (hasChildren) {
- vm.$slots = resolveSlots(renderChildren, vm._renderContext);
- vm.$forceUpdate();
- }
- };
-
- Vue.prototype.$forceUpdate = function () {
- var vm = this;
- if (vm._watcher) {
- vm._watcher.update();
- }
- };
-
- Vue.prototype.$destroy = function () {
- var vm = this;
- if (vm._isBeingDestroyed) {
- return
- }
- callHook(vm, 'beforeDestroy');
- vm._isBeingDestroyed = true;
- // remove self from parent
- var parent = vm.$parent;
- if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
- remove$1(parent.$children, vm);
- }
- // teardown watchers
- if (vm._watcher) {
- vm._watcher.teardown();
- }
- var i = vm._watchers.length;
- while (i--) {
- vm._watchers[i].teardown();
- }
- // remove reference from data ob
- // frozen object may not have observer.
- if (vm._data.__ob__) {
- vm._data.__ob__.vmCount--;
- }
- // call the last hook...
- vm._isDestroyed = true;
- callHook(vm, 'destroyed');
- // turn off all instance listeners.
- vm.$off();
- // remove __vue__ reference
- if (vm.$el) {
- vm.$el.__vue__ = null;
- }
- // invoke destroy hooks on current rendered tree
- vm.__patch__(vm._vnode, null);
- };
- }
-
- function callHook (vm, hook) {
- var handlers = vm.$options[hook];
- if (handlers) {
- for (var i = 0, j = handlers.length; i < j; i++) {
- handlers[i].call(vm);
- }
- }
- vm.$emit('hook:' + hook);
- }
-
- /* */
-
- var hooks = { init: init, prepatch: prepatch, insert: insert, destroy: destroy$1 };
- var hooksToMerge = Object.keys(hooks);
-
- function createComponent (
- Ctor,
- data,
- context,
- children,
- tag
- ) {
- if (!Ctor) {
- return
- }
-
- if (isObject(Ctor)) {
- Ctor = Vue$2.extend(Ctor);
- }
-
- if (typeof Ctor !== 'function') {
- if (process.env.NODE_ENV !== 'production') {
- warn(("Invalid Component definition: " + (String(Ctor))), context);
- }
- return
- }
-
- // async component
- if (!Ctor.cid) {
- if (Ctor.resolved) {
- Ctor = Ctor.resolved;
- } else {
- Ctor = resolveAsyncComponent(Ctor, function () {
- // it's ok to queue this on every render because
- // $forceUpdate is buffered by the scheduler.
- context.$forceUpdate();
- });
- if (!Ctor) {
- // return nothing if this is indeed an async component
- // wait for the callback to trigger parent update.
- return
- }
- }
- }
-
- data = data || {};
-
- // extract props
- var propsData = extractProps(data, Ctor);
-
- // functional component
- if (Ctor.options.functional) {
- return createFunctionalComponent(Ctor, propsData, data, context, children)
- }
-
- // extract listeners, since these needs to be treated as
- // child component listeners instead of DOM listeners
- var listeners = data.on;
- // replace with listeners with .native modifier
- data.on = data.nativeOn;
-
- if (Ctor.options.abstract) {
- // abstract components do not keep anything
- // other than props & listeners
- data = {};
- }
-
- // merge component management hooks onto the placeholder node
- mergeHooks(data);
-
- // return a placeholder vnode
- var name = Ctor.options.name || tag;
- var vnode = new VNode(
- ("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
- data, undefined, undefined, undefined, undefined, context,
- { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }
- );
- return vnode
- }
-
- function createFunctionalComponent (
- Ctor,
- propsData,
- data,
- context,
- children
- ) {
- var props = {};
- var propOptions = Ctor.options.props;
- if (propOptions) {
- for (var key in propOptions) {
- props[key] = validateProp(key, propOptions, propsData);
- }
- }
- var vnode = Ctor.options.render.call(
- null,
- // ensure the createElement function in functional components
- // gets a unique context - this is necessary for correct named slot check
- bind$1(createElement, { _self: Object.create(context) }),
- {
- props: props,
- data: data,
- parent: context,
- children: normalizeChildren(children),
- slots: function () { return resolveSlots(children, context); }
- }
- );
- if (vnode instanceof VNode) {
- vnode.functionalContext = context;
- if (data.slot) {
- (vnode.data || (vnode.data = {})).slot = data.slot;
- }
- }
- return vnode
- }
-
- function createComponentInstanceForVnode (
- vnode, // we know it's MountedComponentVNode but flow doesn't
- parent // activeInstance in lifecycle state
- ) {
- var vnodeComponentOptions = vnode.componentOptions;
- var options = {
- _isComponent: true,
- parent: parent,
- propsData: vnodeComponentOptions.propsData,
- _componentTag: vnodeComponentOptions.tag,
- _parentVnode: vnode,
- _parentListeners: vnodeComponentOptions.listeners,
- _renderChildren: vnodeComponentOptions.children
- };
- // check inline-template render functions
- var inlineTemplate = vnode.data.inlineTemplate;
- if (inlineTemplate) {
- options.render = inlineTemplate.render;
- options.staticRenderFns = inlineTemplate.staticRenderFns;
- }
- return new vnodeComponentOptions.Ctor(options)
- }
-
- function init (vnode, hydrating) {
- if (!vnode.child || vnode.child._isDestroyed) {
- var child = vnode.child = createComponentInstanceForVnode(vnode, activeInstance);
- child.$mount(hydrating ? vnode.elm : undefined, hydrating);
- }
- }
-
- function prepatch (
- oldVnode,
- vnode
- ) {
- var options = vnode.componentOptions;
- var child = vnode.child = oldVnode.child;
- child._updateFromParent(
- options.propsData, // updated props
- options.listeners, // updated listeners
- vnode, // new parent vnode
- options.children // new children
- );
- }
-
- function insert (vnode) {
- if (!vnode.child._isMounted) {
- vnode.child._isMounted = true;
- callHook(vnode.child, 'mounted');
- }
- if (vnode.data.keepAlive) {
- vnode.child._inactive = false;
- callHook(vnode.child, 'activated');
- }
- }
-
- function destroy$1 (vnode) {
- if (!vnode.child._isDestroyed) {
- if (!vnode.data.keepAlive) {
- vnode.child.$destroy();
- } else {
- vnode.child._inactive = true;
- callHook(vnode.child, 'deactivated');
- }
- }
- }
-
- function resolveAsyncComponent (
- factory,
- cb
- ) {
- if (factory.requested) {
- // pool callbacks
- factory.pendingCallbacks.push(cb);
- } else {
- factory.requested = true;
- var cbs = factory.pendingCallbacks = [cb];
- var sync = true;
-
- var resolve = function (res) {
- if (isObject(res)) {
- res = Vue$2.extend(res);
- }
- // cache resolved
- factory.resolved = res;
- // invoke callbacks only if this is not a synchronous resolve
- // (async resolves are shimmed as synchronous during SSR)
- if (!sync) {
- for (var i = 0, l = cbs.length; i < l; i++) {
- cbs[i](res);
- }
- }
- };
-
- var reject = function (reason) {
- process.env.NODE_ENV !== 'production' && warn(
- "Failed to resolve async component: " + (String(factory)) +
- (reason ? ("\nReason: " + reason) : '')
- );
- };
-
- var res = factory(resolve, reject);
-
- // handle promise
- if (res && typeof res.then === 'function' && !factory.resolved) {
- res.then(resolve, reject);
- }
-
- sync = false;
- // return in case resolved synchronously
- return factory.resolved
- }
- }
-
- function extractProps (data, Ctor) {
- // we are only extrating raw values here.
- // validation and default values are handled in the child
- // component itself.
- var propOptions = Ctor.options.props;
- if (!propOptions) {
- return
- }
- var res = {};
- var attrs = data.attrs;
- var props = data.props;
- var domProps = data.domProps;
- if (attrs || props || domProps) {
- for (var key in propOptions) {
- var altKey = hyphenate(key);
- checkProp(res, props, key, altKey, true) ||
- checkProp(res, attrs, key, altKey) ||
- checkProp(res, domProps, key, altKey);
- }
- }
- return res
- }
-
- function checkProp (
- res,
- hash,
- key,
- altKey,
- preserve
- ) {
- if (hash) {
- if (hasOwn(hash, key)) {
- res[key] = hash[key];
- if (!preserve) {
- delete hash[key];
- }
- return true
- } else if (hasOwn(hash, altKey)) {
- res[key] = hash[altKey];
- if (!preserve) {
- delete hash[altKey];
- }
- return true
- }
- }
- return false
- }
-
- function mergeHooks (data) {
- if (!data.hook) {
- data.hook = {};
- }
- for (var i = 0; i < hooksToMerge.length; i++) {
- var key = hooksToMerge[i];
- var fromParent = data.hook[key];
- var ours = hooks[key];
- data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;
- }
- }
-
- function mergeHook$1 (a, b) {
- // since all hooks have at most two args, use fixed args
- // to avoid having to use fn.apply().
- return function (_, __) {
- a(_, __);
- b(_, __);
- }
- }
-
- /* */
-
- // wrapper function for providing a more flexible interface
- // without getting yelled at by flow
- function createElement (
- tag,
- data,
- children
- ) {
- if (data && (Array.isArray(data) || typeof data !== 'object')) {
- children = data;
- data = undefined;
- }
- // make sure to use real instance instead of proxy as context
- return _createElement(this._self, tag, data, children)
- }
-
- function _createElement (
- context,
- tag,
- data,
- children
- ) {
- if (data && data.__ob__) {
- process.env.NODE_ENV !== 'production' && warn(
- "Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
- 'Always create fresh vnode data objects in each render!',
- context
- );
- return
- }
- if (!tag) {
- // in case of component :is set to falsy value
- return emptyVNode()
- }
- if (typeof tag === 'string') {
- var Ctor;
- var ns = config.getTagNamespace(tag);
- if (config.isReservedTag(tag)) {
- // platform built-in elements
- return new VNode(
- tag, data, normalizeChildren(children, ns),
- undefined, undefined, ns, context
- )
- } else if ((Ctor = resolveAsset(context.$options, 'components', tag))) {
- // component
- return createComponent(Ctor, data, context, children, tag)
- } else {
- // unknown or unlisted namespaced elements
- // check at runtime because it may get assigned a namespace when its
- // parent normalizes children
- return new VNode(
- tag, data, normalizeChildren(children, ns),
- undefined, undefined, ns, context
- )
- }
- } else {
- // direct component options / constructor
- return createComponent(tag, data, context, children)
- }
- }
-
- /* */
-
- function initRender (vm) {
- vm.$vnode = null; // the placeholder node in parent tree
- vm._vnode = null; // the root of the child tree
- vm._staticTrees = null;
- vm._renderContext = vm.$options._parentVnode && vm.$options._parentVnode.context;
- vm.$slots = resolveSlots(vm.$options._renderChildren, vm._renderContext);
- // bind the public createElement fn to this instance
- // so that we get proper render context inside it.
- vm.$createElement = bind$1(createElement, vm);
- if (vm.$options.el) {
- vm.$mount(vm.$options.el);
- }
- }
-
- function renderMixin (Vue) {
- Vue.prototype.$nextTick = function (fn) {
- nextTick(fn, this);
- };
-
- Vue.prototype._render = function () {
- var vm = this;
- var ref = vm.$options;
- var render = ref.render;
- var staticRenderFns = ref.staticRenderFns;
- var _parentVnode = ref._parentVnode;
-
- if (vm._isMounted) {
- // clone slot nodes on re-renders
- for (var key in vm.$slots) {
- vm.$slots[key] = cloneVNodes(vm.$slots[key]);
- }
- }
-
- if (staticRenderFns && !vm._staticTrees) {
- vm._staticTrees = [];
- }
- // set parent vnode. this allows render functions to have access
- // to the data on the placeholder node.
- vm.$vnode = _parentVnode;
- // render self
- var vnode;
- try {
- vnode = render.call(vm._renderProxy, vm.$createElement);
- } catch (e) {
- if (process.env.NODE_ENV !== 'production') {
- warn(("Error when rendering " + (formatComponentName(vm)) + ":"));
- }
- /* istanbul ignore else */
- if (config.errorHandler) {
- config.errorHandler.call(null, e, vm);
- } else {
- if (config._isServer) {
- throw e
- } else {
- setTimeout(function () { throw e }, 0);
- }
- }
- // return previous vnode to prevent render error causing blank component
- vnode = vm._vnode;
- }
- // return empty vnode in case the render function errored out
- if (!(vnode instanceof VNode)) {
- if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {
- warn(
- 'Multiple root nodes returned from render function. Render function ' +
- 'should return a single root node.',
- vm
- );
- }
- vnode = emptyVNode();
- }
- // set parent
- vnode.parent = _parentVnode;
- return vnode
- };
-
- // shorthands used in render functions
- Vue.prototype._h = createElement;
- // toString for mustaches
- Vue.prototype._s = _toString;
- // number conversion
- Vue.prototype._n = toNumber;
- // empty vnode
- Vue.prototype._e = emptyVNode;
- // loose equal
- Vue.prototype._q = looseEqual;
- // loose indexOf
- Vue.prototype._i = looseIndexOf;
-
- // render static tree by index
- Vue.prototype._m = function renderStatic (
- index,
- isInFor
- ) {
- var tree = this._staticTrees[index];
- // if has already-rendered static tree and not inside v-for,
- // we can reuse the same tree by doing a shallow clone.
- if (tree && !isInFor) {
- return Array.isArray(tree)
- ? cloneVNodes(tree)
- : cloneVNode(tree)
- }
- // otherwise, render a fresh tree.
- tree = this._staticTrees[index] = this.$options.staticRenderFns[index].call(this._renderProxy);
- if (Array.isArray(tree)) {
- for (var i = 0; i < tree.length; i++) {
- if (typeof tree[i] !== 'string') {
- tree[i].isStatic = true;
- tree[i].key = "__static__" + index + "_" + i;
- }
- }
- } else {
- tree.isStatic = true;
- tree.key = "__static__" + index;
- }
- return tree
- };
-
- // filter resolution helper
- var identity = function (_) { return _; };
- Vue.prototype._f = function resolveFilter (id) {
- return resolveAsset(this.$options, 'filters', id, true) || identity
- };
-
- // render v-for
- Vue.prototype._l = function renderList (
- val,
- render
- ) {
- var ret, i, l, keys, key;
- if (Array.isArray(val)) {
- ret = new Array(val.length);
- for (i = 0, l = val.length; i < l; i++) {
- ret[i] = render(val[i], i);
- }
- } else if (typeof val === 'number') {
- ret = new Array(val);
- for (i = 0; i < val; i++) {
- ret[i] = render(i + 1, i);
- }
- } else if (isObject(val)) {
- keys = Object.keys(val);
- ret = new Array(keys.length);
- for (i = 0, l = keys.length; i < l; i++) {
- key = keys[i];
- ret[i] = render(val[key], key, i);
- }
- }
- return ret
- };
-
- // renderSlot
- Vue.prototype._t = function (
- name,
- fallback
- ) {
- var slotNodes = this.$slots[name];
- // warn duplicate slot usage
- if (slotNodes && process.env.NODE_ENV !== 'production') {
- slotNodes._rendered && warn(
- "Duplicate presence of slot \"" + name + "\" found in the same render tree " +
- "- this will likely cause render errors.",
- this
- );
- slotNodes._rendered = true;
- }
- return slotNodes || fallback
- };
-
- // apply v-bind object
- Vue.prototype._b = function bindProps (
- data,
- value,
- asProp
- ) {
- if (value) {
- if (!isObject(value)) {
- process.env.NODE_ENV !== 'production' && warn(
- 'v-bind without argument expects an Object or Array value',
- this
- );
- } else {
- if (Array.isArray(value)) {
- value = toObject(value);
- }
- for (var key in value) {
- if (key === 'class' || key === 'style') {
- data[key] = value[key];
- } else {
- var hash = asProp || config.mustUseProp(key)
- ? data.domProps || (data.domProps = {})
- : data.attrs || (data.attrs = {});
- hash[key] = value[key];
- }
- }
- }
- }
- return data
- };
-
- // expose v-on keyCodes
- Vue.prototype._k = function getKeyCodes (key) {
- return config.keyCodes[key]
- };
- }
-
- function resolveSlots (
- renderChildren,
- context
- ) {
- var slots = {};
- if (!renderChildren) {
- return slots
- }
- var children = normalizeChildren(renderChildren) || [];
- var defaultSlot = [];
- var name, child;
- for (var i = 0, l = children.length; i < l; i++) {
- child = children[i];
- // named slots should only be respected if the vnode was rendered in the
- // same context.
- if ((child.context === context || child.functionalContext === context) &&
- child.data && (name = child.data.slot)) {
- var slot = (slots[name] || (slots[name] = []));
- if (child.tag === 'template') {
- slot.push.apply(slot, child.children);
- } else {
- slot.push(child);
- }
- } else {
- defaultSlot.push(child);
- }
- }
- // ignore single whitespace
- if (defaultSlot.length && !(
- defaultSlot.length === 1 &&
- (defaultSlot[0].text === ' ' || defaultSlot[0].isComment)
- )) {
- slots.default = defaultSlot;
- }
- return slots
- }
-
- /* */
-
- function initEvents (vm) {
- vm._events = Object.create(null);
- // init parent attached events
- var listeners = vm.$options._parentListeners;
- var on = bind$1(vm.$on, vm);
- var off = bind$1(vm.$off, vm);
- vm._updateListeners = function (listeners, oldListeners) {
- updateListeners(listeners, oldListeners || {}, on, off, vm);
- };
- if (listeners) {
- vm._updateListeners(listeners);
- }
- }
-
- function eventsMixin (Vue) {
- Vue.prototype.$on = function (event, fn) {
- var vm = this;(vm._events[event] || (vm._events[event] = [])).push(fn);
- return vm
- };
-
- Vue.prototype.$once = function (event, fn) {
- var vm = this;
- function on () {
- vm.$off(event, on);
- fn.apply(vm, arguments);
- }
- on.fn = fn;
- vm.$on(event, on);
- return vm
- };
-
- Vue.prototype.$off = function (event, fn) {
- var vm = this;
- // all
- if (!arguments.length) {
- vm._events = Object.create(null);
- return vm
- }
- // specific event
- var cbs = vm._events[event];
- if (!cbs) {
- return vm
- }
- if (arguments.length === 1) {
- vm._events[event] = null;
- return vm
- }
- // specific handler
- var cb;
- var i = cbs.length;
- while (i--) {
- cb = cbs[i];
- if (cb === fn || cb.fn === fn) {
- cbs.splice(i, 1);
- break
- }
- }
- return vm
- };
-
- Vue.prototype.$emit = function (event) {
- var vm = this;
- var cbs = vm._events[event];
- if (cbs) {
- cbs = cbs.length > 1 ? toArray(cbs) : cbs;
- var args = toArray(arguments, 1);
- for (var i = 0, l = cbs.length; i < l; i++) {
- cbs[i].apply(vm, args);
- }
- }
- return vm
- };
- }
-
- /* */
-
- var uid = 0;
-
- function initMixin (Vue) {
- Vue.prototype._init = function (options) {
- var vm = this;
- // a uid
- vm._uid = uid++;
- // a flag to avoid this being observed
- vm._isVue = true;
- // merge options
- if (options && options._isComponent) {
- // optimize internal component instantiation
- // since dynamic options merging is pretty slow, and none of the
- // internal component options needs special treatment.
- initInternalComponent(vm, options);
- } else {
- vm.$options = mergeOptions(
- resolveConstructorOptions(vm),
- options || {},
- vm
- );
- }
- /* istanbul ignore else */
- if (process.env.NODE_ENV !== 'production') {
- initProxy(vm);
- } else {
- vm._renderProxy = vm;
- }
- // expose real self
- vm._self = vm;
- initLifecycle(vm);
- initEvents(vm);
- callHook(vm, 'beforeCreate');
- initState(vm);
- callHook(vm, 'created');
- initRender(vm);
- };
-
- function initInternalComponent (vm, options) {
- var opts = vm.$options = Object.create(resolveConstructorOptions(vm));
- // doing this because it's faster than dynamic enumeration.
- opts.parent = options.parent;
- opts.propsData = options.propsData;
- opts._parentVnode = options._parentVnode;
- opts._parentListeners = options._parentListeners;
- opts._renderChildren = options._renderChildren;
- opts._componentTag = options._componentTag;
- if (options.render) {
- opts.render = options.render;
- opts.staticRenderFns = options.staticRenderFns;
- }
- }
-
- function resolveConstructorOptions (vm) {
- var Ctor = vm.constructor;
- var options = Ctor.options;
- if (Ctor.super) {
- var superOptions = Ctor.super.options;
- var cachedSuperOptions = Ctor.superOptions;
- if (superOptions !== cachedSuperOptions) {
- // super option changed
- Ctor.superOptions = superOptions;
- options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
- if (options.name) {
- options.components[options.name] = Ctor;
- }
- }
- }
- return options
- }
- }
-
- function Vue$2 (options) {
- if (process.env.NODE_ENV !== 'production' &&
- !(this instanceof Vue$2)) {
- warn('Vue is a constructor and should be called with the `new` keyword');
- }
- this._init(options);
- }
-
- initMixin(Vue$2);
- stateMixin(Vue$2);
- eventsMixin(Vue$2);
- lifecycleMixin(Vue$2);
- renderMixin(Vue$2);
-
- var warn = noop;
- var formatComponentName;
-
- if (process.env.NODE_ENV !== 'production') {
- var hasConsole = typeof console !== 'undefined';
-
- warn = function (msg, vm) {
- if (hasConsole && (!config.silent)) {
- console.error("[Vue warn]: " + msg + " " + (
- vm ? formatLocation(formatComponentName(vm)) : ''
- ));
- }
- };
-
- formatComponentName = function (vm) {
- if (vm.$root === vm) {
- return 'root instance'
- }
- var name = vm._isVue
- ? vm.$options.name || vm.$options._componentTag
- : vm.name;
- return (
- (name ? ("component <" + name + ">") : "anonymous component") +
- (vm._isVue && vm.$options.__file ? (" at " + (vm.$options.__file)) : '')
- )
- };
-
- var formatLocation = function (str) {
- if (str === 'anonymous component') {
- str += " - use the \"name\" option for better debugging messages.";
- }
- return ("\n(found in " + str + ")")
- };
- }
-
- /* */
-
- /**
- * Option overwriting strategies are functions that handle
- * how to merge a parent option value and a child option
- * value into the final value.
- */
- var strats = config.optionMergeStrategies;
-
- /**
- * Options with restrictions
- */
- if (process.env.NODE_ENV !== 'production') {
- strats.el = strats.propsData = function (parent, child, vm, key) {
- if (!vm) {
- warn(
- "option \"" + key + "\" can only be used during instance " +
- 'creation with the `new` keyword.'
- );
- }
- return defaultStrat(parent, child)
- };
- }
-
- /**
- * 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') {
- process.env.NODE_ENV !== '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
- }
- }
- }
- };
-
- /**
- * Hooks and param attributes are merged as arrays.
- */
- function mergeHook (
- parentVal,
- childVal
- ) {
- return childVal
- ? parentVal
- ? parentVal.concat(childVal)
- : Array.isArray(childVal)
- ? childVal
- : [childVal]
- : parentVal
- }
-
- config._lifecycleHooks.forEach(function (hook) {
- strats[hook] = mergeHook;
- });
-
- /**
- * 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, childVal)
- : res
- }
-
- config._assetTypes.forEach(function (type) {
- strats[type + 's'] = mergeAssets;
- });
-
- /**
- * Watchers.
- *
- * Watchers hashes should not overwrite one
- * another, so we merge them as arrays.
- */
- strats.watch = function (parentVal, childVal) {
- /* istanbul ignore if */
- 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 && !Array.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 (parentVal, childVal) {
- return childVal === undefined
- ? parentVal
- : childVal
- };
-
- /**
- * Make sure component options get converted to actual
- * constructors.
- */
- function normalizeComponents (options) {
- if (options.components) {
- var components = options.components;
- var def;
- for (var key in components) {
- var lower = key.toLowerCase();
- if (isBuiltInTag(lower) || config.isReservedTag(lower)) {
- process.env.NODE_ENV !== 'production' && warn(
- 'Do not use built-in or reserved HTML elements as component ' +
- 'id: ' + key
- );
- continue
- }
- def = components[key];
- if (isPlainObject(def)) {
- components[key] = Vue$2.extend(def);
- }
- }
- }
- }
-
- /**
- * Ensure all props option syntax are normalized into the
- * Object-based format.
- */
- function normalizeProps (options) {
- var props = options.props;
- if (!props) { return }
- var res = {};
- var i, val, name;
- if (Array.isArray(props)) {
- i = props.length;
- while (i--) {
- val = props[i];
- if (typeof val === 'string') {
- name = camelize(val);
- res[name] = { type: null };
- } else if (process.env.NODE_ENV !== 'production') {
- warn('props must be strings when using array syntax.');
- }
- }
- } else if (isPlainObject(props)) {
- for (var key in props) {
- val = props[key];
- name = camelize(key);
- res[name] = isPlainObject(val)
- ? val
- : { type: val };
- }
- }
- options.props = res;
- }
-
- /**
- * Normalize raw function directives into object format.
- */
- function normalizeDirectives (options) {
- var dirs = options.directives;
- if (dirs) {
- for (var key in dirs) {
- var def = dirs[key];
- if (typeof def === 'function') {
- dirs[key] = { bind: def, update: def };
- }
- }
- }
- }
-
- /**
- * Merge two option objects into a new one.
- * Core utility used in both instantiation and inheritance.
- */
- function mergeOptions (
- parent,
- child,
- vm
- ) {
- normalizeComponents(child);
- normalizeProps(child);
- normalizeDirectives(child);
- var extendsFrom = child.extends;
- if (extendsFrom) {
- parent = typeof extendsFrom === 'function'
- ? mergeOptions(parent, extendsFrom.options, vm)
- : mergeOptions(parent, extendsFrom, vm);
- }
- if (child.mixins) {
- for (var i = 0, l = child.mixins.length; i < l; i++) {
- var mixin = child.mixins[i];
- if (mixin.prototype instanceof Vue$2) {
- mixin = mixin.options;
- }
- parent = mergeOptions(parent, mixin, vm);
- }
- }
- var options = {};
- var key;
- 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.
- */
- function resolveAsset (
- options,
- type,
- id,
- warnMissing
- ) {
- /* istanbul ignore if */
- if (typeof id !== 'string') {
- return
- }
- var assets = options[type];
- var res = assets[id] ||
- // camelCase ID
- assets[camelize(id)] ||
- // Pascal Case ID
- assets[capitalize(camelize(id))];
- if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {
- warn(
- 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
- options
- );
- }
- return res
- }
-
- /* */
-
- function validateProp (
- key,
- propOptions,
- propsData,
- vm
- ) {
- var prop = propOptions[key];
- var absent = !hasOwn(propsData, key);
- var value = propsData[key];
- // handle boolean props
- if (isBooleanType(prop.type)) {
- if (absent && !hasOwn(prop, 'default')) {
- value = false;
- } else if (value === '' || value === hyphenate(key)) {
- value = true;
- }
- }
- // check default value
- if (value === undefined) {
- value = getPropDefaultValue(vm, prop, key);
- // since the default value is a fresh copy,
- // make sure to observe it.
- var prevShouldConvert = observerState.shouldConvert;
- observerState.shouldConvert = true;
- observe(value);
- observerState.shouldConvert = prevShouldConvert;
- }
- if (process.env.NODE_ENV !== 'production') {
- assertProp(prop, key, value, vm, absent);
- }
- return value
- }
-
- /**
- * Get the default value of a prop.
- */
- function getPropDefaultValue (vm, prop, name) {
- // no default, return undefined
- if (!hasOwn(prop, 'default')) {
- return undefined
- }
- var def = prop.default;
- // warn against non-factory defaults for Object & Array
- if (isObject(def)) {
- process.env.NODE_ENV !== 'production' && warn(
- 'Invalid default value for prop "' + name + '": ' +
- 'Props with type Object/Array must use a factory function ' +
- 'to return the default value.',
- vm
- );
- }
- // call factory function for non-Function types
- return typeof def === 'function' && prop.type !== Function
- ? def.call(vm)
- : def
- }
-
- /**
- * Assert whether a prop is valid.
- */
- function assertProp (
- prop,
- name,
- value,
- vm,
- absent
- ) {
- if (prop.required && absent) {
- warn(
- 'Missing required prop: "' + name + '"',
- vm
- );
- return
- }
- if (value == null && !prop.required) {
- return
- }
- var type = prop.type;
- var valid = !type || type === true;
- var expectedTypes = [];
- if (type) {
- if (!Array.isArray(type)) {
- type = [type];
- }
- for (var i = 0; i < type.length && !valid; i++) {
- var assertedType = assertType(value, type[i]);
- expectedTypes.push(assertedType.expectedType);
- valid = assertedType.valid;
- }
- }
- if (!valid) {
- warn(
- 'Invalid prop: type check failed for prop "' + name + '".' +
- ' Expected ' + expectedTypes.map(capitalize).join(', ') +
- ', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',
- vm
- );
- return
- }
- var validator = prop.validator;
- if (validator) {
- if (!validator(value)) {
- warn(
- 'Invalid prop: custom validator check failed for prop "' + name + '".',
- vm
- );
- }
- }
- }
-
- /**
- * Assert the type of a value
- */
- function assertType (value, type) {
- var valid;
- var expectedType = getType(type);
- if (expectedType === 'String') {
- valid = typeof value === (expectedType = 'string');
- } else if (expectedType === 'Number') {
- valid = typeof value === (expectedType = 'number');
- } else if (expectedType === 'Boolean') {
- valid = typeof value === (expectedType = 'boolean');
- } else if (expectedType === 'Function') {
- valid = typeof value === (expectedType = 'function');
- } else if (expectedType === 'Object') {
- valid = isPlainObject(value);
- } else if (expectedType === 'Array') {
- valid = Array.isArray(value);
- } else {
- valid = value instanceof type;
- }
- return {
- valid: valid,
- expectedType: expectedType
- }
- }
-
- /**
- * Use function string name to check built-in types,
- * because a simple equality check will fail when running
- * across different vms / iframes.
- */
- function getType (fn) {
- var match = fn && fn.toString().match(/^\s*function (\w+)/);
- return match && match[1]
- }
-
- function isBooleanType (fn) {
- if (!Array.isArray(fn)) {
- return getType(fn) === 'Boolean'
- }
- for (var i = 0, len = fn.length; i < len; i++) {
- if (getType(fn[i]) === 'Boolean') {
- return true
- }
- }
- /* istanbul ignore next */
- return false
- }
-
-
-
- var util = Object.freeze({
- defineReactive: defineReactive$$1,
- _toString: _toString,
- toNumber: toNumber,
- makeMap: makeMap,
- isBuiltInTag: isBuiltInTag,
- remove: remove$1,
- hasOwn: hasOwn,
- isPrimitive: isPrimitive,
- cached: cached,
- camelize: camelize,
- capitalize: capitalize,
- hyphenate: hyphenate,
- bind: bind$1,
- toArray: toArray,
- extend: extend,
- isObject: isObject,
- isPlainObject: isPlainObject,
- toObject: toObject,
- noop: noop,
- no: no,
- genStaticKeys: genStaticKeys,
- looseEqual: looseEqual,
- looseIndexOf: looseIndexOf,
- isReserved: isReserved,
- def: def,
- parsePath: parsePath,
- hasProto: hasProto,
- inBrowser: inBrowser,
- UA: UA,
- isIE: isIE,
- isIE9: isIE9,
- isEdge: isEdge,
- isAndroid: isAndroid,
- isIOS: isIOS,
- devtools: devtools,
- nextTick: nextTick,
- get _Set () { return _Set; },
- mergeOptions: mergeOptions,
- resolveAsset: resolveAsset,
- get warn () { return warn; },
- get formatComponentName () { return formatComponentName; },
- validateProp: validateProp
- });
-
- /* */
-
- function initUse (Vue) {
- Vue.use = function (plugin) {
- /* istanbul ignore if */
- if (plugin.installed) {
- return
- }
- // additional parameters
- var args = toArray(arguments, 1);
- args.unshift(this);
- if (typeof plugin.install === 'function') {
- plugin.install.apply(plugin, args);
- } else {
- plugin.apply(null, args);
- }
- plugin.installed = true;
- return this
- };
- }
-
- /* */
-
- function initMixin$1 (Vue) {
- Vue.mixin = function (mixin) {
- Vue.options = mergeOptions(Vue.options, mixin);
- };
- }
-
- /* */
-
- function initExtend (Vue) {
- /**
- * Each instance constructor, including Vue, has a unique
- * cid. This enables us to create wrapped "child
- * constructors" for prototypal inheritance and cache them.
- */
- Vue.cid = 0;
- var cid = 1;
-
- /**
- * Class inheritance
- */
- Vue.extend = function (extendOptions) {
- extendOptions = extendOptions || {};
- var Super = this;
- var isFirstExtend = Super.cid === 0;
- if (isFirstExtend && extendOptions._Ctor) {
- return extendOptions._Ctor
- }
- var name = extendOptions.name || Super.options.name;
- if (process.env.NODE_ENV !== 'production') {
- if (!/^[a-zA-Z][\w-]*$/.test(name)) {
- warn(
- 'Invalid component name: "' + name + '". Component names ' +
- 'can only contain alphanumeric characaters and the hyphen.'
- );
- name = null;
- }
- }
- var Sub = function VueComponent (options) {
- this._init(options);
- };
- Sub.prototype = Object.create(Super.prototype);
- Sub.prototype.constructor = Sub;
- Sub.cid = cid++;
- Sub.options = mergeOptions(
- Super.options,
- extendOptions
- );
- Sub['super'] = Super;
- // allow further extension
- Sub.extend = Super.extend;
- // create asset registers, so extended classes
- // can have their private assets too.
- config._assetTypes.forEach(function (type) {
- Sub[type] = Super[type];
- });
- // enable recursive self-lookup
- if (name) {
- Sub.options.components[name] = Sub;
- }
- // keep a reference to the super options at extension time.
- // later at instantiation we can check if Super's options have
- // been updated.
- Sub.superOptions = Super.options;
- Sub.extendOptions = extendOptions;
- // cache constructor
- if (isFirstExtend) {
- extendOptions._Ctor = Sub;
- }
- return Sub
- };
- }
-
- /* */
-
- function initAssetRegisters (Vue) {
- /**
- * Create asset registration methods.
- */
- config._assetTypes.forEach(function (type) {
- Vue[type] = function (
- id,
- definition
- ) {
- if (!definition) {
- return this.options[type + 's'][id]
- } else {
- /* istanbul ignore if */
- if (process.env.NODE_ENV !== 'production') {
- if (type === 'component' && config.isReservedTag(id)) {
- warn(
- 'Do not use built-in or reserved HTML elements as component ' +
- 'id: ' + id
- );
- }
- }
- if (type === 'component' && isPlainObject(definition)) {
- definition.name = definition.name || id;
- definition = Vue.extend(definition);
- }
- if (type === 'directive' && typeof definition === 'function') {
- definition = { bind: definition, update: definition };
- }
- this.options[type + 's'][id] = definition;
- return definition
- }
- };
- });
- }
-
- var KeepAlive = {
- name: 'keep-alive',
- abstract: true,
- created: function created () {
- this.cache = Object.create(null);
- },
- render: function render () {
- var vnode = getFirstComponentChild(this.$slots.default);
- if (vnode && vnode.componentOptions) {
- var opts = vnode.componentOptions;
- var key = vnode.key == null
- // same constructor may get registered as different local components
- // so cid alone is not enough (#3269)
- ? opts.Ctor.cid + '::' + opts.tag
- : vnode.key;
- if (this.cache[key]) {
- vnode.child = this.cache[key].child;
- } else {
- this.cache[key] = vnode;
- }
- vnode.data.keepAlive = true;
- }
- return vnode
- },
- destroyed: function destroyed () {
- var this$1 = this;
-
- for (var key in this.cache) {
- var vnode = this$1.cache[key];
- callHook(vnode.child, 'deactivated');
- vnode.child.$destroy();
- }
- }
- };
-
- var builtInComponents = {
- KeepAlive: KeepAlive
- };
-
- /* */
-
- function initGlobalAPI (Vue) {
- // config
- var configDef = {};
- configDef.get = function () { return config; };
- if (process.env.NODE_ENV !== 'production') {
- configDef.set = function () {
- warn(
- 'Do not replace the Vue.config object, set individual fields instead.'
- );
- };
- }
- Object.defineProperty(Vue, 'config', configDef);
- Vue.util = util;
- Vue.set = set;
- Vue.delete = del;
- Vue.nextTick = nextTick;
-
- Vue.options = Object.create(null);
- config._assetTypes.forEach(function (type) {
- Vue.options[type + 's'] = Object.create(null);
- });
-
- extend(Vue.options.components, builtInComponents);
-
- initUse(Vue);
- initMixin$1(Vue);
- initExtend(Vue);
- initAssetRegisters(Vue);
- }
-
- initGlobalAPI(Vue$2);
-
- Object.defineProperty(Vue$2.prototype, '$isServer', {
- get: function () { return config._isServer; }
- });
-
- Vue$2.version = '2.0.3';
-
- /* */
-
- // attributes that should be using props for binding
- var mustUseProp = makeMap('value,selected,checked,muted');
-
- var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
-
- var isBooleanAttr = makeMap(
- 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
- 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
- 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
- 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
- 'required,reversed,scoped,seamless,selected,sortable,translate,' +
- 'truespeed,typemustmatch,visible'
- );
-
- var isAttr = makeMap(
- 'accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' +
- 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' +
- 'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,' +
- 'name,contenteditable,contextmenu,controls,coords,data,datetime,default,' +
- 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,' +
- 'form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,' +
- 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
- 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
- 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +
- 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' +
- 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' +
- 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' +
- 'target,title,type,usemap,value,width,wrap'
- );
-
-
-
- var xlinkNS = 'http://www.w3.org/1999/xlink';
-
- var isXlink = function (name) {
- return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
- };
-
- var getXlinkProp = function (name) {
- return isXlink(name) ? name.slice(6, name.length) : ''
- };
-
- var isFalsyAttrValue = function (val) {
- return val == null || val === false
- };
-
- /* */
-
- function genClassForVnode (vnode) {
- var data = vnode.data;
- var parentNode = vnode;
- var childNode = vnode;
- while (childNode.child) {
- childNode = childNode.child._vnode;
- if (childNode.data) {
- data = mergeClassData(childNode.data, data);
- }
- }
- while ((parentNode = parentNode.parent)) {
- if (parentNode.data) {
- data = mergeClassData(data, parentNode.data);
- }
- }
- return genClassFromData(data)
- }
-
- function mergeClassData (child, parent) {
- return {
- staticClass: concat(child.staticClass, parent.staticClass),
- class: child.class
- ? [child.class, parent.class]
- : parent.class
- }
- }
-
- function genClassFromData (data) {
- var dynamicClass = data.class;
- var staticClass = data.staticClass;
- if (staticClass || dynamicClass) {
- return concat(staticClass, stringifyClass(dynamicClass))
- }
- /* istanbul ignore next */
- return ''
- }
-
- function concat (a, b) {
- return a ? b ? (a + ' ' + b) : a : (b || '')
- }
-
- function stringifyClass (value) {
- var res = '';
- if (!value) {
- return res
- }
- if (typeof value === 'string') {
- return value
- }
- if (Array.isArray(value)) {
- var stringified;
- for (var i = 0, l = value.length; i < l; i++) {
- if (value[i]) {
- if ((stringified = stringifyClass(value[i]))) {
- res += stringified + ' ';
- }
- }
- }
- return res.slice(0, -1)
- }
- if (isObject(value)) {
- for (var key in value) {
- if (value[key]) { res += key + ' '; }
- }
- return res.slice(0, -1)
- }
- /* istanbul ignore next */
- return res
- }
-
- /* */
-
- var namespaceMap = {
- svg: 'http://www.w3.org/2000/svg',
- math: 'http://www.w3.org/1998/Math/MathML'
- };
-
- var isHTMLTag = makeMap(
- 'html,body,base,head,link,meta,style,title,' +
- 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
- 'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' +
- 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
- 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
- 'embed,object,param,source,canvas,script,noscript,del,ins,' +
- 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
- 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
- 'output,progress,select,textarea,' +
- 'details,dialog,menu,menuitem,summary,' +
- 'content,element,shadow,template'
- );
-
- var isUnaryTag = makeMap(
- 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +
- 'link,meta,param,source,track,wbr',
- true
- );
-
- // Elements that you can, intentionally, leave open
- // (and which close themselves)
- var canBeLeftOpenTag = makeMap(
- 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source',
- true
- );
-
- // HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
- // Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
- var isNonPhrasingTag = makeMap(
- 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +
- 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +
- 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +
- 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +
- 'title,tr,track',
- true
- );
-
- // this map is intentionally selective, only covering SVG elements that may
- // contain child elements.
- var isSVG = makeMap(
- 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font,' +
- 'font-face,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
- 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
- true
- );
-
-
-
- var isReservedTag = function (tag) {
- return isHTMLTag(tag) || isSVG(tag)
- };
-
- function getTagNamespace (tag) {
- if (isSVG(tag)) {
- return 'svg'
- }
- // basic support for MathML
- // note it doesn't support other MathML elements being component roots
- if (tag === 'math') {
- return 'math'
- }
- }
-
- var unknownElementCache = Object.create(null);
- function isUnknownElement (tag) {
- /* istanbul ignore if */
- if (!inBrowser) {
- return true
- }
- if (isReservedTag(tag)) {
- return false
- }
- tag = tag.toLowerCase();
- /* istanbul ignore if */
- if (unknownElementCache[tag] != null) {
- return unknownElementCache[tag]
- }
- var el = document.createElement(tag);
- if (tag.indexOf('-') > -1) {
- // http://stackoverflow.com/a/28210364/1070244
- return (unknownElementCache[tag] = (
- el.constructor === window.HTMLUnknownElement ||
- el.constructor === window.HTMLElement
- ))
- } else {
- return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
- }
- }
-
- /* */
-
- /**
- * Query an element selector if it's not an element already.
- */
- function query (el) {
- if (typeof el === 'string') {
- var selector = el;
- el = document.querySelector(el);
- if (!el) {
- process.env.NODE_ENV !== 'production' && warn(
- 'Cannot find element: ' + selector
- );
- return document.createElement('div')
- }
- }
- return el
- }
-
- /* */
-
- function createElement$1 (tagName, vnode) {
- var elm = document.createElement(tagName);
- if (tagName !== 'select') {
- return elm
- }
- if (vnode.data && vnode.data.attrs && 'multiple' in vnode.data.attrs) {
- elm.setAttribute('multiple', 'multiple');
- }
- return elm
- }
-
- function createElementNS (namespace, tagName) {
- return document.createElementNS(namespaceMap[namespace], tagName)
- }
-
- function createTextNode (text) {
- return document.createTextNode(text)
- }
-
- function createComment (text) {
- return document.createComment(text)
- }
-
- function insertBefore (parentNode, newNode, referenceNode) {
- parentNode.insertBefore(newNode, referenceNode);
- }
-
- function removeChild (node, child) {
- node.removeChild(child);
- }
-
- function appendChild (node, child) {
- node.appendChild(child);
- }
-
- function parentNode (node) {
- return node.parentNode
- }
-
- function nextSibling (node) {
- return node.nextSibling
- }
-
- function tagName (node) {
- return node.tagName
- }
-
- function setTextContent (node, text) {
- node.textContent = text;
- }
-
- function childNodes (node) {
- return node.childNodes
- }
-
- function setAttribute (node, key, val) {
- node.setAttribute(key, val);
- }
-
-
- var nodeOps = Object.freeze({
- createElement: createElement$1,
- createElementNS: createElementNS,
- createTextNode: createTextNode,
- createComment: createComment,
- insertBefore: insertBefore,
- removeChild: removeChild,
- appendChild: appendChild,
- parentNode: parentNode,
- nextSibling: nextSibling,
- tagName: tagName,
- setTextContent: setTextContent,
- childNodes: childNodes,
- setAttribute: setAttribute
- });
-
- /* */
-
- var ref = {
- create: function create (_, vnode) {
- registerRef(vnode);
- },
- update: function update (oldVnode, vnode) {
- if (oldVnode.data.ref !== vnode.data.ref) {
- registerRef(oldVnode, true);
- registerRef(vnode);
- }
- },
- destroy: function destroy (vnode) {
- registerRef(vnode, true);
- }
- };
-
- function registerRef (vnode, isRemoval) {
- var key = vnode.data.ref;
- if (!key) { return }
-
- var vm = vnode.context;
- var ref = vnode.child || vnode.elm;
- var refs = vm.$refs;
- if (isRemoval) {
- if (Array.isArray(refs[key])) {
- remove$1(refs[key], ref);
- } else if (refs[key] === ref) {
- refs[key] = undefined;
- }
- } else {
- if (vnode.data.refInFor) {
- if (Array.isArray(refs[key])) {
- refs[key].push(ref);
- } else {
- refs[key] = [ref];
- }
- } else {
- refs[key] = ref;
- }
- }
- }
-
- /**
- * Virtual DOM patching algorithm based on Snabbdom by
- * Simon Friis Vindum (@paldepind)
- * Licensed under the MIT License
- * https://github.com/paldepind/snabbdom/blob/master/LICENSE
- *
- * modified by Evan You (@yyx990803)
- *
-
- /*
- * Not type-checking this because this file is perf-critical and the cost
- * of making flow understand it is not worth it.
- */
-
- var emptyNode = new VNode('', {}, []);
-
- var hooks$1 = ['create', 'update', 'remove', 'destroy'];
-
- function isUndef (s) {
- return s == null
- }
-
- function isDef (s) {
- return s != null
- }
-
- function sameVnode (vnode1, vnode2) {
- return (
- vnode1.key === vnode2.key &&
- vnode1.tag === vnode2.tag &&
- vnode1.isComment === vnode2.isComment &&
- !vnode1.data === !vnode2.data
- )
- }
-
- function createKeyToOldIdx (children, beginIdx, endIdx) {
- var i, key;
- var map = {};
- for (i = beginIdx; i <= endIdx; ++i) {
- key = children[i].key;
- if (isDef(key)) { map[key] = i; }
- }
- return map
- }
-
- function createPatchFunction (backend) {
- var i, j;
- var cbs = {};
-
- var modules = backend.modules;
- var nodeOps = backend.nodeOps;
-
- for (i = 0; i < hooks$1.length; ++i) {
- cbs[hooks$1[i]] = [];
- for (j = 0; j < modules.length; ++j) {
- if (modules[j][hooks$1[i]] !== undefined) { cbs[hooks$1[i]].push(modules[j][hooks$1[i]]); }
- }
- }
-
- function emptyNodeAt (elm) {
- return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
- }
-
- function createRmCb (childElm, listeners) {
- function remove$$1 () {
- if (--remove$$1.listeners === 0) {
- removeElement(childElm);
- }
- }
- remove$$1.listeners = listeners;
- return remove$$1
- }
-
- function removeElement (el) {
- var parent = nodeOps.parentNode(el);
- nodeOps.removeChild(parent, el);
- }
-
- function createElm (vnode, insertedVnodeQueue, nested) {
- var i;
- var data = vnode.data;
- vnode.isRootInsert = !nested;
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode); }
- // after calling the init hook, if the vnode is a child component
- // it should've created a child instance and mounted it. the child
- // component also has set the placeholder vnode's elm.
- // in that case we can just return the element and be done.
- if (isDef(i = vnode.child)) {
- initComponent(vnode, insertedVnodeQueue);
- return vnode.elm
- }
- }
- var children = vnode.children;
- var tag = vnode.tag;
- if (isDef(tag)) {
- if (process.env.NODE_ENV !== 'production') {
- if (
- !vnode.ns &&
- !(config.ignoredElements && config.ignoredElements.indexOf(tag) > -1) &&
- config.isUnknownElement(tag)
- ) {
- warn(
- 'Unknown custom element: <' + tag + '> - did you ' +
- 'register the component correctly? For recursive components, ' +
- 'make sure to provide the "name" option.',
- vnode.context
- );
- }
- }
- vnode.elm = vnode.ns
- ? nodeOps.createElementNS(vnode.ns, tag)
- : nodeOps.createElement(tag, vnode);
- setScope(vnode);
- createChildren(vnode, children, insertedVnodeQueue);
- if (isDef(data)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- }
- } else if (vnode.isComment) {
- vnode.elm = nodeOps.createComment(vnode.text);
- } else {
- vnode.elm = nodeOps.createTextNode(vnode.text);
- }
- return vnode.elm
- }
-
- function createChildren (vnode, children, insertedVnodeQueue) {
- if (Array.isArray(children)) {
- for (var i = 0; i < children.length; ++i) {
- nodeOps.appendChild(vnode.elm, createElm(children[i], insertedVnodeQueue, true));
- }
- } else if (isPrimitive(vnode.text)) {
- nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));
- }
- }
-
- function isPatchable (vnode) {
- while (vnode.child) {
- vnode = vnode.child._vnode;
- }
- return isDef(vnode.tag)
- }
-
- function invokeCreateHooks (vnode, insertedVnodeQueue) {
- for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
- cbs.create[i$1](emptyNode, vnode);
- }
- i = vnode.data.hook; // Reuse variable
- if (isDef(i)) {
- if (i.create) { i.create(emptyNode, vnode); }
- if (i.insert) { insertedVnodeQueue.push(vnode); }
- }
- }
-
- function initComponent (vnode, insertedVnodeQueue) {
- if (vnode.data.pendingInsert) {
- insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
- }
- vnode.elm = vnode.child.$el;
- if (isPatchable(vnode)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- setScope(vnode);
- } else {
- // empty component root.
- // skip all element-related modules except for ref (#3455)
- registerRef(vnode);
- // make sure to invoke the insert hook
- insertedVnodeQueue.push(vnode);
- }
- }
-
- // set scope id attribute for scoped CSS.
- // this is implemented as a special case to avoid the overhead
- // of going through the normal attribute patching process.
- function setScope (vnode) {
- var i;
- if (isDef(i = vnode.context) && isDef(i = i.$options._scopeId)) {
- nodeOps.setAttribute(vnode.elm, i, '');
- }
- if (isDef(i = activeInstance) &&
- i !== vnode.context &&
- isDef(i = i.$options._scopeId)) {
- nodeOps.setAttribute(vnode.elm, i, '');
- }
- }
-
- function addVnodes (parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {
- for (; startIdx <= endIdx; ++startIdx) {
- nodeOps.insertBefore(parentElm, createElm(vnodes[startIdx], insertedVnodeQueue), before);
- }
- }
-
- function invokeDestroyHook (vnode) {
- var i, j;
- var data = vnode.data;
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
- for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
- }
- if (isDef(i = vnode.children)) {
- for (j = 0; j < vnode.children.length; ++j) {
- invokeDestroyHook(vnode.children[j]);
- }
- }
- }
-
- function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
- for (; startIdx <= endIdx; ++startIdx) {
- var ch = vnodes[startIdx];
- if (isDef(ch)) {
- if (isDef(ch.tag)) {
- removeAndInvokeRemoveHook(ch);
- invokeDestroyHook(ch);
- } else { // Text node
- nodeOps.removeChild(parentElm, ch.elm);
- }
- }
- }
- }
-
- function removeAndInvokeRemoveHook (vnode, rm) {
- if (rm || isDef(vnode.data)) {
- var listeners = cbs.remove.length + 1;
- if (!rm) {
- // directly removing
- rm = createRmCb(vnode.elm, listeners);
- } else {
- // we have a recursively passed down rm callback
- // increase the listeners count
- rm.listeners += listeners;
- }
- // recursively invoke hooks on child component root node
- if (isDef(i = vnode.child) && isDef(i = i._vnode) && isDef(i.data)) {
- removeAndInvokeRemoveHook(i, rm);
- }
- for (i = 0; i < cbs.remove.length; ++i) {
- cbs.remove[i](vnode, rm);
- }
- if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
- i(vnode, rm);
- } else {
- rm();
- }
- } else {
- removeElement(vnode.elm);
- }
- }
-
- function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
- var oldStartIdx = 0;
- var newStartIdx = 0;
- var oldEndIdx = oldCh.length - 1;
- var oldStartVnode = oldCh[0];
- var oldEndVnode = oldCh[oldEndIdx];
- var newEndIdx = newCh.length - 1;
- var newStartVnode = newCh[0];
- var newEndVnode = newCh[newEndIdx];
- var oldKeyToIdx, idxInOld, elmToMove, before;
-
- // removeOnly is a special flag used only by <transition-group>
- // to ensure removed elements stay in correct relative positions
- // during leaving transitions
- var canMove = !removeOnly;
-
- while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
- if (isUndef(oldStartVnode)) {
- oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
- } else if (isUndef(oldEndVnode)) {
- oldEndVnode = oldCh[--oldEndIdx];
- } else if (sameVnode(oldStartVnode, newStartVnode)) {
- patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
- oldStartVnode = oldCh[++oldStartIdx];
- newStartVnode = newCh[++newStartIdx];
- } else if (sameVnode(oldEndVnode, newEndVnode)) {
- patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
- oldEndVnode = oldCh[--oldEndIdx];
- newEndVnode = newCh[--newEndIdx];
- } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
- patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
- canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
- oldStartVnode = oldCh[++oldStartIdx];
- newEndVnode = newCh[--newEndIdx];
- } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
- patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
- canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
- oldEndVnode = oldCh[--oldEndIdx];
- newStartVnode = newCh[++newStartIdx];
- } else {
- if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
- idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;
- if (isUndef(idxInOld)) { // New element
- nodeOps.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- } else {
- elmToMove = oldCh[idxInOld];
- /* istanbul ignore if */
- if (process.env.NODE_ENV !== 'production' && !elmToMove) {
- warn(
- 'It seems there are duplicate keys that is causing an update error. ' +
- 'Make sure each v-for item has a unique key.'
- );
- }
- if (elmToMove.tag !== newStartVnode.tag) {
- // same key but different element. treat as new element
- nodeOps.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- } else {
- patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);
- oldCh[idxInOld] = undefined;
- canMove && nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);
- newStartVnode = newCh[++newStartIdx];
- }
- }
- }
- }
- if (oldStartIdx > oldEndIdx) {
- before = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
- addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
- } else if (newStartIdx > newEndIdx) {
- removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
- }
- }
-
- function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
- if (oldVnode === vnode) {
- return
- }
- // reuse element for static trees.
- // note we only do this if the vnode is cloned -
- // if the new node is not cloned it means the render functions have been
- // reset by the hot-reload-api and we need to do a proper re-render.
- if (vnode.isStatic &&
- oldVnode.isStatic &&
- vnode.key === oldVnode.key &&
- vnode.isCloned) {
- vnode.elm = oldVnode.elm;
- return
- }
- var i;
- var data = vnode.data;
- var hasData = isDef(data);
- if (hasData && isDef(i = data.hook) && isDef(i = i.prepatch)) {
- i(oldVnode, vnode);
- }
- var elm = vnode.elm = oldVnode.elm;
- var oldCh = oldVnode.children;
- var ch = vnode.children;
- if (hasData && isPatchable(vnode)) {
- for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
- if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
- }
- if (isUndef(vnode.text)) {
- if (isDef(oldCh) && isDef(ch)) {
- if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
- } else if (isDef(ch)) {
- if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
- addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
- } else if (isDef(oldCh)) {
- removeVnodes(elm, oldCh, 0, oldCh.length - 1);
- } else if (isDef(oldVnode.text)) {
- nodeOps.setTextContent(elm, '');
- }
- } else if (oldVnode.text !== vnode.text) {
- nodeOps.setTextContent(elm, vnode.text);
- }
- if (hasData) {
- if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
- }
- }
-
- function invokeInsertHook (vnode, queue, initial) {
- // delay insert hooks for component root nodes, invoke them after the
- // element is really inserted
- if (initial && vnode.parent) {
- vnode.parent.data.pendingInsert = queue;
- } else {
- for (var i = 0; i < queue.length; ++i) {
- queue[i].data.hook.insert(queue[i]);
- }
- }
- }
-
- var bailed = false;
- function hydrate (elm, vnode, insertedVnodeQueue) {
- if (process.env.NODE_ENV !== 'production') {
- if (!assertNodeMatch(elm, vnode)) {
- return false
- }
- }
- vnode.elm = elm;
- var tag = vnode.tag;
- var data = vnode.data;
- var children = vnode.children;
- if (isDef(data)) {
- if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
- if (isDef(i = vnode.child)) {
- // child component. it should have hydrated its own tree.
- initComponent(vnode, insertedVnodeQueue);
- return true
- }
- }
- if (isDef(tag)) {
- if (isDef(children)) {
- var childNodes = nodeOps.childNodes(elm);
- // empty element, allow client to pick up and populate children
- if (!childNodes.length) {
- createChildren(vnode, children, insertedVnodeQueue);
- } else {
- var childrenMatch = true;
- if (childNodes.length !== children.length) {
- childrenMatch = false;
- } else {
- for (var i$1 = 0; i$1 < children.length; i$1++) {
- if (!hydrate(childNodes[i$1], children[i$1], insertedVnodeQueue)) {
- childrenMatch = false;
- break
- }
- }
- }
- if (!childrenMatch) {
- if (process.env.NODE_ENV !== 'production' &&
- typeof console !== 'undefined' &&
- !bailed) {
- bailed = true;
- console.warn('Parent: ', elm);
- console.warn('Mismatching childNodes vs. VNodes: ', childNodes, children);
- }
- return false
- }
- }
- }
- if (isDef(data)) {
- invokeCreateHooks(vnode, insertedVnodeQueue);
- }
- }
- return true
- }
-
- function assertNodeMatch (node, vnode) {
- if (vnode.tag) {
- return (
- vnode.tag.indexOf('vue-component') === 0 ||
- vnode.tag === nodeOps.tagName(node).toLowerCase()
- )
- } else {
- return _toString(vnode.text) === node.data
- }
- }
-
- return function patch (oldVnode, vnode, hydrating, removeOnly) {
- if (!vnode) {
- if (oldVnode) { invokeDestroyHook(oldVnode); }
- return
- }
-
- var elm, parent;
- var isInitialPatch = false;
- var insertedVnodeQueue = [];
-
- if (!oldVnode) {
- // empty mount, create new root element
- isInitialPatch = true;
- createElm(vnode, insertedVnodeQueue);
- } else {
- var isRealElement = isDef(oldVnode.nodeType);
- if (!isRealElement && sameVnode(oldVnode, vnode)) {
- patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
- } else {
- if (isRealElement) {
- // mounting to a real element
- // check if this is server-rendered content and if we can perform
- // a successful hydration.
- if (oldVnode.nodeType === 1 && oldVnode.hasAttribute('server-rendered')) {
- oldVnode.removeAttribute('server-rendered');
- hydrating = true;
- }
- if (hydrating) {
- if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
- invokeInsertHook(vnode, insertedVnodeQueue, true);
- return oldVnode
- } else if (process.env.NODE_ENV !== 'production') {
- warn(
- 'The client-side rendered virtual DOM tree is not matching ' +
- 'server-rendered content. This is likely caused by incorrect ' +
- 'HTML markup, for example nesting block-level elements inside ' +
- '<p>, or missing <tbody>. Bailing hydration and performing ' +
- 'full client-side render.'
- );
- }
- }
- // either not server-rendered, or hydration failed.
- // create an empty node and replace it
- oldVnode = emptyNodeAt(oldVnode);
- }
- elm = oldVnode.elm;
- parent = nodeOps.parentNode(elm);
-
- createElm(vnode, insertedVnodeQueue);
-
- // component root element replaced.
- // update parent placeholder node element.
- if (vnode.parent) {
- vnode.parent.elm = vnode.elm;
- if (isPatchable(vnode)) {
- for (var i = 0; i < cbs.create.length; ++i) {
- cbs.create[i](emptyNode, vnode.parent);
- }
- }
- }
-
- if (parent !== null) {
- nodeOps.insertBefore(parent, vnode.elm, nodeOps.nextSibling(elm));
- removeVnodes(parent, [oldVnode], 0, 0);
- } else if (isDef(oldVnode.tag)) {
- invokeDestroyHook(oldVnode);
- }
- }
- }
-
- invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
- return vnode.elm
- }
- }
-
- /* */
-
- var directives = {
- create: updateDirectives,
- update: updateDirectives,
- destroy: function unbindDirectives (vnode) {
- updateDirectives(vnode, emptyNode);
- }
- };
-
- function updateDirectives (
- oldVnode,
- vnode
- ) {
- if (!oldVnode.data.directives && !vnode.data.directives) {
- return
- }
- var isCreate = oldVnode === emptyNode;
- var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
- var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
-
- var dirsWithInsert = [];
- var dirsWithPostpatch = [];
-
- var key, oldDir, dir;
- for (key in newDirs) {
- oldDir = oldDirs[key];
- dir = newDirs[key];
- if (!oldDir) {
- // new directive, bind
- callHook$1(dir, 'bind', vnode, oldVnode);
- if (dir.def && dir.def.inserted) {
- dirsWithInsert.push(dir);
- }
- } else {
- // existing directive, update
- dir.oldValue = oldDir.value;
- callHook$1(dir, 'update', vnode, oldVnode);
- if (dir.def && dir.def.componentUpdated) {
- dirsWithPostpatch.push(dir);
- }
- }
- }
-
- if (dirsWithInsert.length) {
- var callInsert = function () {
- dirsWithInsert.forEach(function (dir) {
- callHook$1(dir, 'inserted', vnode, oldVnode);
- });
- };
- if (isCreate) {
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert, 'dir-insert');
- } else {
- callInsert();
- }
- }
-
- if (dirsWithPostpatch.length) {
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {
- dirsWithPostpatch.forEach(function (dir) {
- callHook$1(dir, 'componentUpdated', vnode, oldVnode);
- });
- }, 'dir-postpatch');
- }
-
- if (!isCreate) {
- for (key in oldDirs) {
- if (!newDirs[key]) {
- // no longer present, unbind
- callHook$1(oldDirs[key], 'unbind', oldVnode);
- }
- }
- }
- }
-
- var emptyModifiers = Object.create(null);
-
- function normalizeDirectives$1 (
- dirs,
- vm
- ) {
- var res = Object.create(null);
- if (!dirs) {
- return res
- }
- var i, dir;
- for (i = 0; i < dirs.length; i++) {
- dir = dirs[i];
- if (!dir.modifiers) {
- dir.modifiers = emptyModifiers;
- }
- res[getRawDirName(dir)] = dir;
- dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
- }
- return res
- }
-
- function getRawDirName (dir) {
- return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
- }
-
- function callHook$1 (dir, hook, vnode, oldVnode) {
- var fn = dir.def && dir.def[hook];
- if (fn) {
- fn(vnode.elm, dir, vnode, oldVnode);
- }
- }
-
- var baseModules = [
- ref,
- directives
- ];
-
- /* */
-
- function updateAttrs (oldVnode, vnode) {
- if (!oldVnode.data.attrs && !vnode.data.attrs) {
- return
- }
- var key, cur, old;
- var elm = vnode.elm;
- var oldAttrs = oldVnode.data.attrs || {};
- var attrs = vnode.data.attrs || {};
- // clone observed objects, as the user probably wants to mutate it
- if (attrs.__ob__) {
- attrs = vnode.data.attrs = extend({}, attrs);
- }
-
- for (key in attrs) {
- cur = attrs[key];
- old = oldAttrs[key];
- if (old !== cur) {
- setAttr(elm, key, cur);
- }
- }
- for (key in oldAttrs) {
- if (attrs[key] == null) {
- if (isXlink(key)) {
- elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
- } else if (!isEnumeratedAttr(key)) {
- elm.removeAttribute(key);
- }
- }
- }
- }
-
- function setAttr (el, key, value) {
- if (isBooleanAttr(key)) {
- // set attribute for blank value
- // e.g. <option disabled>Select one</option>
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- } else {
- el.setAttribute(key, key);
- }
- } else if (isEnumeratedAttr(key)) {
- el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
- } else if (isXlink(key)) {
- if (isFalsyAttrValue(value)) {
- el.removeAttributeNS(xlinkNS, getXlinkProp(key));
- } else {
- el.setAttributeNS(xlinkNS, key, value);
- }
- } else {
- if (isFalsyAttrValue(value)) {
- el.removeAttribute(key);
- } else {
- el.setAttribute(key, value);
- }
- }
- }
-
- var attrs = {
- create: updateAttrs,
- update: updateAttrs
- };
-
- /* */
-
- function updateClass (oldVnode, vnode) {
- var el = vnode.elm;
- var data = vnode.data;
- var oldData = oldVnode.data;
- if (!data.staticClass && !data.class &&
- (!oldData || (!oldData.staticClass && !oldData.class))) {
- return
- }
-
- var cls = genClassForVnode(vnode);
-
- // handle transition classes
- var transitionClass = el._transitionClasses;
- if (transitionClass) {
- cls = concat(cls, stringifyClass(transitionClass));
- }
-
- // set the class
- if (cls !== el._prevClass) {
- el.setAttribute('class', cls);
- el._prevClass = cls;
- }
- }
-
- var klass = {
- create: updateClass,
- update: updateClass
- };
-
- // skip type checking this file because we need to attach private properties
- // to elements
-
- function updateDOMListeners (oldVnode, vnode) {
- if (!oldVnode.data.on && !vnode.data.on) {
- return
- }
- var on = vnode.data.on || {};
- var oldOn = oldVnode.data.on || {};
- var add = vnode.elm._v_add || (vnode.elm._v_add = function (event, handler, capture) {
- vnode.elm.addEventListener(event, handler, capture);
- });
- var remove = vnode.elm._v_remove || (vnode.elm._v_remove = function (event, handler) {
- vnode.elm.removeEventListener(event, handler);
- });
- updateListeners(on, oldOn, add, remove, vnode.context);
- }
-
- var events = {
- create: updateDOMListeners,
- update: updateDOMListeners
- };
-
- /* */
-
- function updateDOMProps (oldVnode, vnode) {
- if (!oldVnode.data.domProps && !vnode.data.domProps) {
- return
- }
- var key, cur;
- var elm = vnode.elm;
- var oldProps = oldVnode.data.domProps || {};
- var props = vnode.data.domProps || {};
- // clone observed objects, as the user probably wants to mutate it
- if (props.__ob__) {
- props = vnode.data.domProps = extend({}, props);
- }
-
- for (key in oldProps) {
- if (props[key] == null) {
- elm[key] = undefined;
- }
- }
- for (key in props) {
- // ignore children if the node has textContent or innerHTML,
- // as these will throw away existing DOM nodes and cause removal errors
- // on subsequent patches (#3360)
- if ((key === 'textContent' || key === 'innerHTML') && vnode.children) {
- vnode.children.length = 0;
- }
- cur = props[key];
- if (key === 'value') {
- // store value as _value as well since
- // non-string values will be stringified
- elm._value = cur;
- // avoid resetting cursor position when value is the same
- var strCur = cur == null ? '' : String(cur);
- if (elm.value !== strCur && !elm.composing) {
- elm.value = strCur;
- }
- } else {
- elm[key] = cur;
- }
- }
- }
-
- var domProps = {
- create: updateDOMProps,
- update: updateDOMProps
- };
-
- /* */
-
- var prefixes = ['Webkit', 'Moz', 'ms'];
-
- var testEl;
- var normalize = cached(function (prop) {
- testEl = testEl || document.createElement('div');
- prop = camelize(prop);
- if (prop !== 'filter' && (prop in testEl.style)) {
- return prop
- }
- var upper = prop.charAt(0).toUpperCase() + prop.slice(1);
- for (var i = 0; i < prefixes.length; i++) {
- var prefixed = prefixes[i] + upper;
- if (prefixed in testEl.style) {
- return prefixed
- }
- }
- });
-
- function updateStyle (oldVnode, vnode) {
- if ((!oldVnode.data || !oldVnode.data.style) && !vnode.data.style) {
- return
- }
- var cur, name;
- var el = vnode.elm;
- var oldStyle = oldVnode.data.style || {};
- var style = vnode.data.style || {};
-
- // handle string
- if (typeof style === 'string') {
- el.style.cssText = style;
- return
- }
-
- var needClone = style.__ob__;
-
- // handle array syntax
- if (Array.isArray(style)) {
- style = vnode.data.style = toObject(style);
- }
-
- // clone the style for future updates,
- // in case the user mutates the style object in-place.
- if (needClone) {
- style = vnode.data.style = extend({}, style);
- }
-
- for (name in oldStyle) {
- if (style[name] == null) {
- el.style[normalize(name)] = '';
- }
- }
- for (name in style) {
- cur = style[name];
- if (cur !== oldStyle[name]) {
- // ie9 setting to null has no effect, must use empty string
- el.style[normalize(name)] = cur == null ? '' : cur;
- }
- }
- }
-
- var style = {
- create: updateStyle,
- update: updateStyle
- };
-
- /* */
-
- /**
- * Add class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function addClass (el, cls) {
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
- } else {
- el.classList.add(cls);
- }
- } else {
- var cur = ' ' + el.getAttribute('class') + ' ';
- if (cur.indexOf(' ' + cls + ' ') < 0) {
- el.setAttribute('class', (cur + cls).trim());
- }
- }
- }
-
- /**
- * Remove class with compatibility for SVG since classList is not supported on
- * SVG elements in IE
- */
- function removeClass (el, cls) {
- /* istanbul ignore else */
- if (el.classList) {
- if (cls.indexOf(' ') > -1) {
- cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
- } else {
- el.classList.remove(cls);
- }
- } else {
- var cur = ' ' + el.getAttribute('class') + ' ';
- var tar = ' ' + cls + ' ';
- while (cur.indexOf(tar) >= 0) {
- cur = cur.replace(tar, ' ');
- }
- el.setAttribute('class', cur.trim());
- }
- }
-
- /* */
-
- var hasTransition = inBrowser && !isIE9;
- var TRANSITION = 'transition';
- var ANIMATION = 'animation';
-
- // Transition property/event sniffing
- var transitionProp = 'transition';
- var transitionEndEvent = 'transitionend';
- var animationProp = 'animation';
- var animationEndEvent = 'animationend';
- if (hasTransition) {
- /* istanbul ignore if */
- if (window.ontransitionend === undefined &&
- window.onwebkittransitionend !== undefined) {
- transitionProp = 'WebkitTransition';
- transitionEndEvent = 'webkitTransitionEnd';
- }
- if (window.onanimationend === undefined &&
- window.onwebkitanimationend !== undefined) {
- animationProp = 'WebkitAnimation';
- animationEndEvent = 'webkitAnimationEnd';
- }
- }
-
- var raf = (inBrowser && window.requestAnimationFrame) || setTimeout;
- function nextFrame (fn) {
- raf(function () {
- raf(fn);
- });
- }
-
- function addTransitionClass (el, cls) {
- (el._transitionClasses || (el._transitionClasses = [])).push(cls);
- addClass(el, cls);
- }
-
- function removeTransitionClass (el, cls) {
- if (el._transitionClasses) {
- remove$1(el._transitionClasses, cls);
- }
- removeClass(el, cls);
- }
-
- function whenTransitionEnds (
- el,
- expectedType,
- cb
- ) {
- var ref = getTransitionInfo(el, expectedType);
- var type = ref.type;
- var timeout = ref.timeout;
- var propCount = ref.propCount;
- if (!type) { return cb() }
- var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
- var ended = 0;
- var end = function () {
- el.removeEventListener(event, onEnd);
- cb();
- };
- var onEnd = function (e) {
- if (e.target === el) {
- if (++ended >= propCount) {
- end();
- }
- }
- };
- setTimeout(function () {
- if (ended < propCount) {
- end();
- }
- }, timeout + 1);
- el.addEventListener(event, onEnd);
- }
-
- var transformRE = /\b(transform|all)(,|$)/;
-
- function getTransitionInfo (el, expectedType) {
- var styles = window.getComputedStyle(el);
- var transitioneDelays = styles[transitionProp + 'Delay'].split(', ');
- var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
- var transitionTimeout = getTimeout(transitioneDelays, transitionDurations);
- var animationDelays = styles[animationProp + 'Delay'].split(', ');
- var animationDurations = styles[animationProp + 'Duration'].split(', ');
- var animationTimeout = getTimeout(animationDelays, animationDurations);
-
- var type;
- var timeout = 0;
- var propCount = 0;
- /* istanbul ignore if */
- if (expectedType === TRANSITION) {
- if (transitionTimeout > 0) {
- type = TRANSITION;
- timeout = transitionTimeout;
- propCount = transitionDurations.length;
- }
- } else if (expectedType === ANIMATION) {
- if (animationTimeout > 0) {
- type = ANIMATION;
- timeout = animationTimeout;
- propCount = animationDurations.length;
- }
- } else {
- timeout = Math.max(transitionTimeout, animationTimeout);
- type = timeout > 0
- ? transitionTimeout > animationTimeout
- ? TRANSITION
- : ANIMATION
- : null;
- propCount = type
- ? type === TRANSITION
- ? transitionDurations.length
- : animationDurations.length
- : 0;
- }
- var hasTransform =
- type === TRANSITION &&
- transformRE.test(styles[transitionProp + 'Property']);
- return {
- type: type,
- timeout: timeout,
- propCount: propCount,
- hasTransform: hasTransform
- }
- }
-
- function getTimeout (delays, durations) {
- return Math.max.apply(null, durations.map(function (d, i) {
- return toMs(d) + toMs(delays[i])
- }))
- }
-
- function toMs (s) {
- return Number(s.slice(0, -1)) * 1000
- }
-
- /* */
-
- function enter (vnode) {
- var el = vnode.elm;
-
- // call leave callback now
- if (el._leaveCb) {
- el._leaveCb.cancelled = true;
- el._leaveCb();
- }
-
- var data = resolveTransition(vnode.data.transition);
- if (!data) {
- return
- }
-
- /* istanbul ignore if */
- if (el._enterCb || el.nodeType !== 1) {
- return
- }
-
- var css = data.css;
- var type = data.type;
- var enterClass = data.enterClass;
- var enterActiveClass = data.enterActiveClass;
- var appearClass = data.appearClass;
- var appearActiveClass = data.appearActiveClass;
- var beforeEnter = data.beforeEnter;
- var enter = data.enter;
- var afterEnter = data.afterEnter;
- var enterCancelled = data.enterCancelled;
- var beforeAppear = data.beforeAppear;
- var appear = data.appear;
- var afterAppear = data.afterAppear;
- var appearCancelled = data.appearCancelled;
-
- // activeInstance will always be the <transition> component managing this
- // transition. One edge case to check is when the <transition> is placed
- // as the root node of a child component. In that case we need to check
- // <transition>'s parent for appear check.
- var transitionNode = activeInstance.$vnode;
- var context = transitionNode && transitionNode.parent
- ? transitionNode.parent.context
- : activeInstance;
-
- var isAppear = !context._isMounted || !vnode.isRootInsert;
-
- if (isAppear && !appear && appear !== '') {
- return
- }
-
- var startClass = isAppear ? appearClass : enterClass;
- var activeClass = isAppear ? appearActiveClass : enterActiveClass;
- var beforeEnterHook = isAppear ? (beforeAppear || beforeEnter) : beforeEnter;
- var enterHook = isAppear ? (typeof appear === 'function' ? appear : enter) : enter;
- var afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter;
- var enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled;
-
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl =
- enterHook &&
- // enterHook may be a bound method which exposes
- // the length of original fn as _length
- (enterHook._length || enterHook.length) > 1;
-
- var cb = el._enterCb = once(function () {
- if (expectsCSS) {
- removeTransitionClass(el, activeClass);
- }
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, startClass);
- }
- enterCancelledHook && enterCancelledHook(el);
- } else {
- afterEnterHook && afterEnterHook(el);
- }
- el._enterCb = null;
- });
-
- if (!vnode.data.show) {
- // remove pending leave element on enter by injecting an insert hook
- mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {
- var parent = el.parentNode;
- var pendingNode = parent && parent._pending && parent._pending[vnode.key];
- if (pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb) {
- pendingNode.elm._leaveCb();
- }
- enterHook && enterHook(el, cb);
- }, 'transition-insert');
- }
-
- // start enter transition
- beforeEnterHook && beforeEnterHook(el);
- if (expectsCSS) {
- addTransitionClass(el, startClass);
- addTransitionClass(el, activeClass);
- nextFrame(function () {
- removeTransitionClass(el, startClass);
- if (!cb.cancelled && !userWantsControl) {
- whenTransitionEnds(el, type, cb);
- }
- });
- }
-
- if (vnode.data.show) {
- enterHook && enterHook(el, cb);
- }
-
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
-
- function leave (vnode, rm) {
- var el = vnode.elm;
-
- // call enter callback now
- if (el._enterCb) {
- el._enterCb.cancelled = true;
- el._enterCb();
- }
-
- var data = resolveTransition(vnode.data.transition);
- if (!data) {
- return rm()
- }
-
- /* istanbul ignore if */
- if (el._leaveCb || el.nodeType !== 1) {
- return
- }
-
- var css = data.css;
- var type = data.type;
- var leaveClass = data.leaveClass;
- var leaveActiveClass = data.leaveActiveClass;
- var beforeLeave = data.beforeLeave;
- var leave = data.leave;
- var afterLeave = data.afterLeave;
- var leaveCancelled = data.leaveCancelled;
- var delayLeave = data.delayLeave;
-
- var expectsCSS = css !== false && !isIE9;
- var userWantsControl =
- leave &&
- // leave hook may be a bound method which exposes
- // the length of original fn as _length
- (leave._length || leave.length) > 1;
-
- var cb = el._leaveCb = once(function () {
- if (el.parentNode && el.parentNode._pending) {
- el.parentNode._pending[vnode.key] = null;
- }
- if (expectsCSS) {
- removeTransitionClass(el, leaveActiveClass);
- }
- if (cb.cancelled) {
- if (expectsCSS) {
- removeTransitionClass(el, leaveClass);
- }
- leaveCancelled && leaveCancelled(el);
- } else {
- rm();
- afterLeave && afterLeave(el);
- }
- el._leaveCb = null;
- });
-
- if (delayLeave) {
- delayLeave(performLeave);
- } else {
- performLeave();
- }
-
- function performLeave () {
- // the delayed leave may have already been cancelled
- if (cb.cancelled) {
- return
- }
- // record leaving element
- if (!vnode.data.show) {
- (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;
- }
- beforeLeave && beforeLeave(el);
- if (expectsCSS) {
- addTransitionClass(el, leaveClass);
- addTransitionClass(el, leaveActiveClass);
- nextFrame(function () {
- removeTransitionClass(el, leaveClass);
- if (!cb.cancelled && !userWantsControl) {
- whenTransitionEnds(el, type, cb);
- }
- });
- }
- leave && leave(el, cb);
- if (!expectsCSS && !userWantsControl) {
- cb();
- }
- }
- }
-
- function resolveTransition (def$$1) {
- if (!def$$1) {
- return
- }
- /* istanbul ignore else */
- if (typeof def$$1 === 'object') {
- var res = {};
- if (def$$1.css !== false) {
- extend(res, autoCssTransition(def$$1.name || 'v'));
- }
- extend(res, def$$1);
- return res
- } else if (typeof def$$1 === 'string') {
- return autoCssTransition(def$$1)
- }
- }
-
- var autoCssTransition = cached(function (name) {
- return {
- enterClass: (name + "-enter"),
- leaveClass: (name + "-leave"),
- appearClass: (name + "-enter"),
- enterActiveClass: (name + "-enter-active"),
- leaveActiveClass: (name + "-leave-active"),
- appearActiveClass: (name + "-enter-active")
- }
- });
-
- function once (fn) {
- var called = false;
- return function () {
- if (!called) {
- called = true;
- fn();
- }
- }
- }
-
- var transition = inBrowser ? {
- create: function create (_, vnode) {
- if (!vnode.data.show) {
- enter(vnode);
- }
- },
- remove: function remove (vnode, rm) {
- /* istanbul ignore else */
- if (!vnode.data.show) {
- leave(vnode, rm);
- } else {
- rm();
- }
- }
- } : {};
-
- var platformModules = [
- attrs,
- klass,
- events,
- domProps,
- style,
- transition
- ];
-
- /* */
-
- // the directive module should be applied last, after all
- // built-in modules have been applied.
- var modules = platformModules.concat(baseModules);
-
- var patch$1 = createPatchFunction({ nodeOps: nodeOps, modules: modules });
-
- /**
- * Not type checking this file because flow doesn't like attaching
- * properties to Elements.
- */
-
- var modelableTagRE = /^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_\-]*)?$/;
-
- /* istanbul ignore if */
- if (isIE9) {
- // http://www.matts411.com/post/internet-explorer-9-oninput/
- document.addEventListener('selectionchange', function () {
- var el = document.activeElement;
- if (el && el.vmodel) {
- trigger(el, 'input');
- }
- });
- }
-
- var model = {
- inserted: function inserted (el, binding, vnode) {
- if (process.env.NODE_ENV !== 'production') {
- if (!modelableTagRE.test(vnode.tag)) {
- warn(
- "v-model is not supported on element type: <" + (vnode.tag) + ">. " +
- 'If you are working with contenteditable, it\'s recommended to ' +
- 'wrap a library dedicated for that purpose inside a custom component.',
- vnode.context
- );
- }
- }
- if (vnode.tag === 'select') {
- var cb = function () {
- setSelected(el, binding, vnode.context);
- };
- cb();
- /* istanbul ignore if */
- if (isIE || isEdge) {
- setTimeout(cb, 0);
- }
- } else if (
- (vnode.tag === 'textarea' || el.type === 'text') &&
- !binding.modifiers.lazy
- ) {
- if (!isAndroid) {
- el.addEventListener('compositionstart', onCompositionStart);
- el.addEventListener('compositionend', onCompositionEnd);
- }
- /* istanbul ignore if */
- if (isIE9) {
- el.vmodel = true;
- }
- }
- },
- componentUpdated: function componentUpdated (el, binding, vnode) {
- if (vnode.tag === 'select') {
- setSelected(el, binding, vnode.context);
- // in case the options rendered by v-for have changed,
- // it's possible that the value is out-of-sync with the rendered options.
- // detect such cases and filter out values that no longer has a matchig
- // option in the DOM.
- var needReset = el.multiple
- ? binding.value.some(function (v) { return hasNoMatchingOption(v, el.options); })
- : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, el.options);
- if (needReset) {
- trigger(el, 'change');
- }
- }
- }
- };
-
- function setSelected (el, binding, vm) {
- var value = binding.value;
- var isMultiple = el.multiple;
- if (isMultiple && !Array.isArray(value)) {
- process.env.NODE_ENV !== 'production' && warn(
- "<select multiple v-model=\"" + (binding.expression) + "\"> " +
- "expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
- vm
- );
- return
- }
- var selected, option;
- for (var i = 0, l = el.options.length; i < l; i++) {
- option = el.options[i];
- if (isMultiple) {
- selected = looseIndexOf(value, getValue(option)) > -1;
- if (option.selected !== selected) {
- option.selected = selected;
- }
- } else {
- if (looseEqual(getValue(option), value)) {
- if (el.selectedIndex !== i) {
- el.selectedIndex = i;
- }
- return
- }
- }
- }
- if (!isMultiple) {
- el.selectedIndex = -1;
- }
- }
-
- function hasNoMatchingOption (value, options) {
- for (var i = 0, l = options.length; i < l; i++) {
- if (looseEqual(getValue(options[i]), value)) {
- return false
- }
- }
- return true
- }
-
- function getValue (option) {
- return '_value' in option
- ? option._value
- : option.value
- }
-
- function onCompositionStart (e) {
- e.target.composing = true;
- }
-
- function onCompositionEnd (e) {
- e.target.composing = false;
- trigger(e.target, 'input');
- }
-
- function trigger (el, type) {
- var e = document.createEvent('HTMLEvents');
- e.initEvent(type, true, true);
- el.dispatchEvent(e);
- }
-
- /* */
-
- // recursively search for possible transition defined inside the component root
- function locateNode (vnode) {
- return vnode.child && (!vnode.data || !vnode.data.transition)
- ? locateNode(vnode.child._vnode)
- : vnode
- }
-
- var show = {
- bind: function bind (el, ref, vnode) {
- var value = ref.value;
-
- vnode = locateNode(vnode);
- var transition = vnode.data && vnode.data.transition;
- if (value && transition && !isIE9) {
- enter(vnode);
- }
- var originalDisplay = el.style.display === 'none' ? '' : el.style.display;
- el.style.display = value ? originalDisplay : 'none';
- el.__vOriginalDisplay = originalDisplay;
- },
- update: function update (el, ref, vnode) {
- var value = ref.value;
- var oldValue = ref.oldValue;
-
- /* istanbul ignore if */
- if (value === oldValue) { return }
- vnode = locateNode(vnode);
- var transition = vnode.data && vnode.data.transition;
- if (transition && !isIE9) {
- if (value) {
- enter(vnode);
- el.style.display = el.__vOriginalDisplay;
- } else {
- leave(vnode, function () {
- el.style.display = 'none';
- });
- }
- } else {
- el.style.display = value ? el.__vOriginalDisplay : 'none';
- }
- }
- };
-
- var platformDirectives = {
- model: model,
- show: show
- };
-
- /* */
-
- // Provides transition support for a single element/component.
- // supports transition mode (out-in / in-out)
-
- var transitionProps = {
- name: String,
- appear: Boolean,
- css: Boolean,
- mode: String,
- type: String,
- enterClass: String,
- leaveClass: String,
- enterActiveClass: String,
- leaveActiveClass: String,
- appearClass: String,
- appearActiveClass: String
- };
-
- // in case the child is also an abstract component, e.g. <keep-alive>
- // we want to recrusively retrieve the real component to be rendered
- function getRealChild (vnode) {
- var compOptions = vnode && vnode.componentOptions;
- if (compOptions && compOptions.Ctor.options.abstract) {
- return getRealChild(getFirstComponentChild(compOptions.children))
- } else {
- return vnode
- }
- }
-
- function extractTransitionData (comp) {
- var data = {};
- var options = comp.$options;
- // props
- for (var key in options.propsData) {
- data[key] = comp[key];
- }
- // events.
- // extract listeners and pass them directly to the transition methods
- var listeners = options._parentListeners;
- for (var key$1 in listeners) {
- data[camelize(key$1)] = listeners[key$1].fn;
- }
- return data
- }
-
- function placeholder (h, rawChild) {
- return /\d-keep-alive$/.test(rawChild.tag)
- ? h('keep-alive')
- : null
- }
-
- function hasParentTransition (vnode) {
- while ((vnode = vnode.parent)) {
- if (vnode.data.transition) {
- return true
- }
- }
- }
-
- var Transition = {
- name: 'transition',
- props: transitionProps,
- abstract: true,
- render: function render (h) {
- var this$1 = this;
-
- var children = this.$slots.default;
- if (!children) {
- return
- }
-
- // filter out text nodes (possible whitespaces)
- children = children.filter(function (c) { return c.tag; });
- /* istanbul ignore if */
- if (!children.length) {
- return
- }
-
- // warn multiple elements
- if (process.env.NODE_ENV !== 'production' && children.length > 1) {
- warn(
- '<transition> can only be used on a single element. Use ' +
- '<transition-group> for lists.',
- this.$parent
- );
- }
-
- var mode = this.mode;
-
- // warn invalid mode
- if (process.env.NODE_ENV !== 'production' &&
- mode && mode !== 'in-out' && mode !== 'out-in') {
- warn(
- 'invalid <transition> mode: ' + mode,
- this.$parent
- );
- }
-
- var rawChild = children[0];
-
- // if this is a component root node and the component's
- // parent container node also has transition, skip.
- if (hasParentTransition(this.$vnode)) {
- return rawChild
- }
-
- // apply transition data to child
- // use getRealChild() to ignore abstract components e.g. keep-alive
- var child = getRealChild(rawChild);
- /* istanbul ignore if */
- if (!child) {
- return rawChild
- }
-
- if (this._leaving) {
- return placeholder(h, rawChild)
- }
-
- var key = child.key = child.key == null || child.isStatic
- ? ("__v" + (child.tag + this._uid) + "__")
- : child.key;
- var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
- var oldRawChild = this._vnode;
- var oldChild = getRealChild(oldRawChild);
-
- // mark v-show
- // so that the transition module can hand over the control to the directive
- if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {
- child.data.show = true;
- }
-
- if (oldChild && oldChild.data && oldChild.key !== key) {
- // replace old child transition data with fresh one
- // important for dynamic transitions!
- var oldData = oldChild.data.transition = extend({}, data);
-
- // handle transition mode
- if (mode === 'out-in') {
- // return placeholder node and queue update when leave finishes
- this._leaving = true;
- mergeVNodeHook(oldData, 'afterLeave', function () {
- this$1._leaving = false;
- this$1.$forceUpdate();
- }, key);
- return placeholder(h, rawChild)
- } else if (mode === 'in-out') {
- var delayedLeave;
- var performLeave = function () { delayedLeave(); };
- mergeVNodeHook(data, 'afterEnter', performLeave, key);
- mergeVNodeHook(data, 'enterCancelled', performLeave, key);
- mergeVNodeHook(oldData, 'delayLeave', function (leave) {
- delayedLeave = leave;
- }, key);
- }
- }
-
- return rawChild
- }
- };
-
- /* */
-
- // Provides transition support for list items.
- // supports move transitions using the FLIP technique.
-
- // Because the vdom's children update algorithm is "unstable" - i.e.
- // it doesn't guarantee the relative positioning of removed elements,
- // we force transition-group to update its children into two passes:
- // in the first pass, we remove all nodes that need to be removed,
- // triggering their leaving transition; in the second pass, we insert/move
- // into the final disired state. This way in the second pass removed
- // nodes will remain where they should be.
-
- var props = extend({
- tag: String,
- moveClass: String
- }, transitionProps);
-
- delete props.mode;
-
- var TransitionGroup = {
- props: props,
-
- render: function render (h) {
- var tag = this.tag || this.$vnode.data.tag || 'span';
- var map = Object.create(null);
- var prevChildren = this.prevChildren = this.children;
- var rawChildren = this.$slots.default || [];
- var children = this.children = [];
- var transitionData = extractTransitionData(this);
-
- for (var i = 0; i < rawChildren.length; i++) {
- var c = rawChildren[i];
- if (c.tag) {
- if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
- children.push(c);
- map[c.key] = c
- ;(c.data || (c.data = {})).transition = transitionData;
- } else if (process.env.NODE_ENV !== 'production') {
- var opts = c.componentOptions;
- var name = opts
- ? (opts.Ctor.options.name || opts.tag)
- : c.tag;
- warn(("<transition-group> children must be keyed: <" + name + ">"));
- }
- }
- }
-
- if (prevChildren) {
- var kept = [];
- var removed = [];
- for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
- var c$1 = prevChildren[i$1];
- c$1.data.transition = transitionData;
- c$1.data.pos = c$1.elm.getBoundingClientRect();
- if (map[c$1.key]) {
- kept.push(c$1);
- } else {
- removed.push(c$1);
- }
- }
- this.kept = h(tag, null, kept);
- this.removed = removed;
- }
-
- return h(tag, null, children)
- },
-
- beforeUpdate: function beforeUpdate () {
- // force removing pass
- this.__patch__(
- this._vnode,
- this.kept,
- false, // hydrating
- true // removeOnly (!important, avoids unnecessary moves)
- );
- this._vnode = this.kept;
- },
-
- updated: function updated () {
- var children = this.prevChildren;
- var moveClass = this.moveClass || (this.name + '-move');
- if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
- return
- }
-
- // we divide the work into three loops to avoid mixing DOM reads and writes
- // in each iteration - which helps prevent layout thrashing.
- children.forEach(callPendingCbs);
- children.forEach(recordPosition);
- children.forEach(applyTranslation);
-
- // force reflow to put everything in position
- var f = document.body.offsetHeight; // eslint-disable-line
-
- children.forEach(function (c) {
- if (c.data.moved) {
- var el = c.elm;
- var s = el.style;
- addTransitionClass(el, moveClass);
- s.transform = s.WebkitTransform = s.transitionDuration = '';
- el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
- if (!e || /transform$/.test(e.propertyName)) {
- el.removeEventListener(transitionEndEvent, cb);
- el._moveCb = null;
- removeTransitionClass(el, moveClass);
- }
- });
- }
- });
- },
-
- methods: {
- hasMove: function hasMove (el, moveClass) {
- /* istanbul ignore if */
- if (!hasTransition) {
- return false
- }
- if (this._hasMove != null) {
- return this._hasMove
- }
- addTransitionClass(el, moveClass);
- var info = getTransitionInfo(el);
- removeTransitionClass(el, moveClass);
- return (this._hasMove = info.hasTransform)
- }
- }
- };
-
- function callPendingCbs (c) {
- /* istanbul ignore if */
- if (c.elm._moveCb) {
- c.elm._moveCb();
- }
- /* istanbul ignore if */
- if (c.elm._enterCb) {
- c.elm._enterCb();
- }
- }
-
- function recordPosition (c) {
- c.data.newPos = c.elm.getBoundingClientRect();
- }
-
- function applyTranslation (c) {
- var oldPos = c.data.pos;
- var newPos = c.data.newPos;
- var dx = oldPos.left - newPos.left;
- var dy = oldPos.top - newPos.top;
- if (dx || dy) {
- c.data.moved = true;
- var s = c.elm.style;
- s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
- s.transitionDuration = '0s';
- }
- }
-
- var platformComponents = {
- Transition: Transition,
- TransitionGroup: TransitionGroup
- };
-
- /* */
-
- // install platform specific utils
- Vue$2.config.isUnknownElement = isUnknownElement;
- Vue$2.config.isReservedTag = isReservedTag;
- Vue$2.config.getTagNamespace = getTagNamespace;
- Vue$2.config.mustUseProp = mustUseProp;
-
- // install platform runtime directives & components
- extend(Vue$2.options.directives, platformDirectives);
- extend(Vue$2.options.components, platformComponents);
-
- // install platform patch function
- Vue$2.prototype.__patch__ = config._isServer ? noop : patch$1;
-
- // wrap mount
- Vue$2.prototype.$mount = function (
- el,
- hydrating
- ) {
- el = el && !config._isServer ? query(el) : undefined;
- return this._mount(el, hydrating)
- };
-
- // devtools global hook
- /* istanbul ignore next */
- setTimeout(function () {
- if (config.devtools) {
- if (devtools) {
- devtools.emit('init', Vue$2);
- } else if (
- process.env.NODE_ENV !== 'production' &&
- inBrowser && /Chrome\/\d+/.test(window.navigator.userAgent)
- ) {
- console.log(
- 'Download the Vue Devtools for a better development experience:\n' +
- 'https://github.com/vuejs/vue-devtools'
- );
- }
- }
- }, 0);
-
- module.exports = Vue$2;
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
-
- /***/ },
- /* 48 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = { "default": __webpack_require__(178), __esModule: true };
-
- /***/ },
- /* 49 */,
- /* 50 */,
- /* 51 */,
- /* 52 */
- /***/ function(module, exports) {
-
- module.exports = function(it){
- if(typeof it != 'function')throw TypeError(it + ' is not a function!');
- return it;
- };
-
- /***/ },
- /* 53 */
- /***/ 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;
- };
-
- /***/ },
- /* 54 */
- /***/ function(module, exports, __webpack_require__) {
-
- var isObject = __webpack_require__(42)
- , document = __webpack_require__(6).document
- // in old IE typeof document.createElement is 'object'
- , is = isObject(document) && isObject(document.createElement);
- module.exports = function(it){
- return is ? document.createElement(it) : {};
- };
-
- /***/ },
- /* 55 */
- /***/ function(module, exports) {
-
- module.exports = function(exec){
- try {
- return !!exec();
- } catch(e){
- return true;
- }
- };
-
- /***/ },
- /* 56 */
- /***/ function(module, exports, __webpack_require__) {
-
- var def = __webpack_require__(28).f
- , has = __webpack_require__(41)
- , TAG = __webpack_require__(5)('toStringTag');
-
- module.exports = function(it, tag, stat){
- if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
- };
-
- /***/ },
- /* 57 */
- /***/ function(module, exports, __webpack_require__) {
-
- var shared = __webpack_require__(100)('keys')
- , uid = __webpack_require__(104);
- module.exports = function(key){
- return shared[key] || (shared[key] = uid(key));
- };
-
- /***/ },
- /* 58 */
- /***/ 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);
- };
-
- /***/ },
- /* 59 */
- /***/ function(module, exports, __webpack_require__) {
-
- // to indexed object, toObject with fallback for non-array-like ES3 strings
- var IObject = __webpack_require__(95)
- , defined = __webpack_require__(53);
- module.exports = function(it){
- return IObject(defined(it));
- };
-
- /***/ },
- /* 60 */,
- /* 61 */,
- /* 62 */,
- /* 63 */,
- /* 64 */,
- /* 65 */,
- /* 66 */,
- /* 67 */,
- /* 68 */,
- /* 69 */,
- /* 70 */,
- /* 71 */,
- /* 72 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(133);
-
- /***/ },
- /* 73 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
-
- var utils = __webpack_require__(4);
- var settle = __webpack_require__(139);
- var buildURL = __webpack_require__(142);
- var parseHeaders = __webpack_require__(148);
- var isURLSameOrigin = __webpack_require__(146);
- var createError = __webpack_require__(76);
- var btoa = (typeof window !== 'undefined' && window.btoa) || __webpack_require__(141);
-
- module.exports = function xhrAdapter(config) {
- return new Promise(function dispatchXhrRequest(resolve, reject) {
- var requestData = config.data;
- var requestHeaders = config.headers;
-
- if (utils.isFormData(requestData)) {
- delete requestHeaders['Content-Type']; // Let the browser set it
- }
-
- var request = new XMLHttpRequest();
- var loadEvent = 'onreadystatechange';
- var xDomain = false;
-
- // For IE 8/9 CORS support
- // Only supports POST and GET calls and doesn't returns the response headers.
- // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.
- if (process.env.NODE_ENV !== 'test' &&
- typeof window !== 'undefined' &&
- window.XDomainRequest && !('withCredentials' in request) &&
- !isURLSameOrigin(config.url)) {
- request = new window.XDomainRequest();
- loadEvent = 'onload';
- xDomain = true;
- request.onprogress = function handleProgress() {};
- request.ontimeout = function handleTimeout() {};
- }
-
- // HTTP basic authentication
- if (config.auth) {
- var username = config.auth.username || '';
- var password = config.auth.password || '';
- requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
- }
-
- request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);
-
- // Set the request timeout in MS
- request.timeout = config.timeout;
-
- // Listen for ready state
- request[loadEvent] = function handleLoad() {
- if (!request || (request.readyState !== 4 && !xDomain)) {
- return;
- }
-
- // The request errored out and we didn't get a response, this will be
- // handled by onerror instead
- // With one exception: request that using file: protocol, most browsers
- // will return status as 0 even though it's a successful request
- if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
- return;
- }
-
- // Prepare the response
- var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
- var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;
- var response = {
- data: responseData,
- // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)
- status: request.status === 1223 ? 204 : request.status,
- statusText: request.status === 1223 ? 'No Content' : request.statusText,
- headers: responseHeaders,
- config: config,
- request: request
- };
-
- settle(resolve, reject, response);
-
- // Clean up request
- request = null;
- };
-
- // Handle low level network errors
- request.onerror = function handleError() {
- // Real errors are hidden from us by the browser
- // onerror should only fire if it's a network error
- reject(createError('Network Error', config));
-
- // Clean up request
- request = null;
- };
-
- // Handle timeout
- request.ontimeout = function handleTimeout() {
- reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED'));
-
- // Clean up request
- request = null;
- };
-
- // Add xsrf header
- // This is only done if running in a standard browser environment.
- // Specifically not if we're in a web worker, or react-native.
- if (utils.isStandardBrowserEnv()) {
- var cookies = __webpack_require__(144);
-
- // Add xsrf header
- var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?
- cookies.read(config.xsrfCookieName) :
- undefined;
-
- if (xsrfValue) {
- requestHeaders[config.xsrfHeaderName] = xsrfValue;
- }
- }
-
- // Add headers to the request
- if ('setRequestHeader' in request) {
- utils.forEach(requestHeaders, function setRequestHeader(val, key) {
- if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
- // Remove Content-Type if data is undefined
- delete requestHeaders[key];
- } else {
- // Otherwise add header to the request
- request.setRequestHeader(key, val);
- }
- });
- }
-
- // Add withCredentials to request if needed
- if (config.withCredentials) {
- request.withCredentials = true;
- }
-
- // Add responseType to request if needed
- if (config.responseType) {
- try {
- request.responseType = config.responseType;
- } catch (e) {
- if (request.responseType !== 'json') {
- throw e;
- }
- }
- }
-
- // Handle progress if needed
- if (typeof config.onDownloadProgress === 'function') {
- request.addEventListener('progress', config.onDownloadProgress);
- }
-
- // Not all browsers support upload events
- if (typeof config.onUploadProgress === 'function' && request.upload) {
- request.upload.addEventListener('progress', config.onUploadProgress);
- }
-
- if (config.cancelToken) {
- // Handle cancellation
- config.cancelToken.promise.then(function onCanceled(cancel) {
- if (!request) {
- return;
- }
-
- request.abort();
- reject(cancel);
- // Clean up request
- request = null;
- });
- }
-
- if (requestData === undefined) {
- requestData = null;
- }
-
- // Send the request
- request.send(requestData);
- });
- };
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
-
- /***/ },
- /* 74 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- /**
- * A `Cancel` is an object that is thrown when an operation is canceled.
- *
- * @class
- * @param {string=} message The message.
- */
- function Cancel(message) {
- this.message = message;
- }
-
- Cancel.prototype.toString = function toString() {
- return 'Cancel' + (this.message ? ': ' + this.message : '');
- };
-
- Cancel.prototype.__CANCEL__ = true;
-
- module.exports = Cancel;
-
-
- /***/ },
- /* 75 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- module.exports = function isCancel(value) {
- return !!(value && value.__CANCEL__);
- };
-
-
- /***/ },
- /* 76 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var enhanceError = __webpack_require__(138);
-
- /**
- * Create an Error with the specified message, config, error code, and response.
- *
- * @param {string} message The error message.
- * @param {Object} config The config.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- @ @param {Object} [response] The response.
- * @returns {Error} The created error.
- */
- module.exports = function createError(message, config, code, response) {
- var error = new Error(message);
- return enhanceError(error, config, code, response);
- };
-
-
- /***/ },
- /* 77 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(process) {'use strict';
-
- var utils = __webpack_require__(4);
- var normalizeHeaderName = __webpack_require__(147);
-
- var PROTECTION_PREFIX = /^\)\]\}',?\n/;
- var DEFAULT_CONTENT_TYPE = {
- 'Content-Type': 'application/x-www-form-urlencoded'
- };
-
- function setContentTypeIfUnset(headers, value) {
- if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
- headers['Content-Type'] = value;
- }
- }
-
- function getDefaultAdapter() {
- var adapter;
- if (typeof XMLHttpRequest !== 'undefined') {
- // For browsers use XHR adapter
- adapter = __webpack_require__(73);
- } else if (typeof process !== 'undefined') {
- // For node use HTTP adapter
- adapter = __webpack_require__(73);
- }
- return adapter;
- }
-
- module.exports = {
- adapter: getDefaultAdapter(),
-
- transformRequest: [function transformRequest(data, headers) {
- normalizeHeaderName(headers, 'Content-Type');
- if (utils.isFormData(data) ||
- utils.isArrayBuffer(data) ||
- utils.isStream(data) ||
- utils.isFile(data) ||
- utils.isBlob(data)
- ) {
- return data;
- }
- if (utils.isArrayBufferView(data)) {
- return data.buffer;
- }
- if (utils.isURLSearchParams(data)) {
- setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
- return data.toString();
- }
- if (utils.isObject(data)) {
- setContentTypeIfUnset(headers, 'application/json;charset=utf-8');
- return JSON.stringify(data);
- }
- return data;
- }],
-
- transformResponse: [function transformResponse(data) {
- /*eslint no-param-reassign:0*/
- if (typeof data === 'string') {
- data = data.replace(PROTECTION_PREFIX, '');
- try {
- data = JSON.parse(data);
- } catch (e) { /* Ignore */ }
- }
- return data;
- }],
-
- headers: {
- common: {
- 'Accept': 'application/json, text/plain, */*'
- },
- patch: utils.merge(DEFAULT_CONTENT_TYPE),
- post: utils.merge(DEFAULT_CONTENT_TYPE),
- put: utils.merge(DEFAULT_CONTENT_TYPE)
- },
-
- timeout: 0,
-
- xsrfCookieName: 'XSRF-TOKEN',
- xsrfHeaderName: 'X-XSRF-TOKEN',
-
- maxContentLength: -1,
-
- validateStatus: function validateStatus(status) {
- return status >= 200 && status < 300;
- }
- };
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
-
- /***/ },
- /* 78 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- module.exports = function bind(fn, thisArg) {
- return function wrap() {
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
- return fn.apply(thisArg, args);
- };
- };
-
-
- /***/ },
- /* 79 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _classCallCheck2 = __webpack_require__(23);
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = __webpack_require__(24);
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var Password = function () {
- function Password(password) {
- (0, _classCallCheck3.default)(this, Password);
-
- this.password = password;
- this.options = {
- uppercase: password.uppercase,
- lowercase: password.lowercase,
- numbers: password.numbers,
- symbols: password.symbols,
- length: password.length,
- counter: password.counter
- };
- }
-
- (0, _createClass3.default)(Password, [{
- key: "isNewPassword",
- value: function isNewPassword(passwords) {
- var _this = this;
-
- var isNew = true;
- passwords.forEach(function (pwd) {
- if (pwd.site === _this.password.site && pwd.login === _this.password.login) {
- isNew = false;
- }
- });
- return isNew;
- }
- }, {
- key: "json",
- value: function json() {
- return this.password;
- }
- }]);
- return Password;
- }();
-
- exports.default = Password;
-
- /***/ },
- /* 80 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = { "default": __webpack_require__(179), __esModule: true };
-
- /***/ },
- /* 81 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = { "default": __webpack_require__(180), __esModule: true };
-
- /***/ },
- /* 82 */,
- /* 83 */,
- /* 84 */,
- /* 85 */,
- /* 86 */,
- /* 87 */,
- /* 88 */,
- /* 89 */,
- /* 90 */,
- /* 91 */,
- /* 92 */
- /***/ function(module, exports, __webpack_require__) {
-
- // getting tag from 19.1.3.6 Object.prototype.toString()
- var cof = __webpack_require__(38)
- , TAG = __webpack_require__(5)('toStringTag')
- // ES3 wrong here
- , ARG = cof(function(){ return arguments; }()) == 'Arguments';
-
- // fallback for IE11 Script Access Denied error
- var tryGet = function(it, key){
- try {
- return it[key];
- } catch(e){ /* empty */ }
- };
-
- module.exports = function(it){
- var O, T, B;
- return it === undefined ? 'Undefined' : it === null ? 'Null'
- // @@toStringTag case
- : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
- // builtinTag case
- : ARG ? cof(O)
- // ES3 arguments fallback
- : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
- };
-
- /***/ },
- /* 93 */
- /***/ function(module, exports) {
-
- // IE 8- don't enum bug keys
- module.exports = (
- 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
- ).split(',');
-
- /***/ },
- /* 94 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(6).document && document.documentElement;
-
- /***/ },
- /* 95 */
- /***/ function(module, exports, __webpack_require__) {
-
- // fallback for non-array-like ES3 and non-enumerable old V8 strings
- var cof = __webpack_require__(38);
- module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
- return cof(it) == 'String' ? it.split('') : Object(it);
- };
-
- /***/ },
- /* 96 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var LIBRARY = __webpack_require__(97)
- , $export = __webpack_require__(40)
- , redefine = __webpack_require__(201)
- , hide = __webpack_require__(15)
- , has = __webpack_require__(41)
- , Iterators = __webpack_require__(27)
- , $iterCreate = __webpack_require__(189)
- , setToStringTag = __webpack_require__(56)
- , getPrototypeOf = __webpack_require__(197)
- , ITERATOR = __webpack_require__(5)('iterator')
- , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
- , FF_ITERATOR = '@@iterator'
- , KEYS = 'keys'
- , VALUES = 'values';
-
- var returnThis = function(){ return this; };
-
- module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
- $iterCreate(Constructor, NAME, next);
- var getMethod = function(kind){
- if(!BUGGY && kind in proto)return proto[kind];
- switch(kind){
- case KEYS: return function keys(){ return new Constructor(this, kind); };
- case VALUES: return function values(){ return new Constructor(this, kind); };
- } return function entries(){ return new Constructor(this, kind); };
- };
- var TAG = NAME + ' Iterator'
- , DEF_VALUES = DEFAULT == VALUES
- , VALUES_BUG = false
- , proto = Base.prototype
- , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
- , $default = $native || getMethod(DEFAULT)
- , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
- , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
- , methods, key, IteratorPrototype;
- // Fix native
- if($anyNative){
- IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
- if(IteratorPrototype !== Object.prototype){
- // Set @@toStringTag to native iterators
- setToStringTag(IteratorPrototype, TAG, true);
- // fix for some old engines
- if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
- }
- }
- // fix Array#{values, @@iterator}.name in V8 / FF
- if(DEF_VALUES && $native && $native.name !== VALUES){
- VALUES_BUG = true;
- $default = function values(){ return $native.call(this); };
- }
- // Define iterator
- if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
- hide(proto, ITERATOR, $default);
- }
- // Plug for library
- Iterators[NAME] = $default;
- Iterators[TAG] = returnThis;
- if(DEFAULT){
- methods = {
- values: DEF_VALUES ? $default : getMethod(VALUES),
- keys: IS_SET ? $default : getMethod(KEYS),
- entries: $entries
- };
- if(FORCED)for(key in methods){
- if(!(key in proto))redefine(proto, key, methods[key]);
- } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
- }
- return methods;
- };
-
- /***/ },
- /* 97 */
- /***/ function(module, exports) {
-
- module.exports = true;
-
- /***/ },
- /* 98 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 19.1.2.14 / 15.2.3.14 Object.keys(O)
- var $keys = __webpack_require__(198)
- , enumBugKeys = __webpack_require__(93);
-
- module.exports = Object.keys || function keys(O){
- return $keys(O, enumBugKeys);
- };
-
- /***/ },
- /* 99 */
- /***/ function(module, exports) {
-
- module.exports = function(bitmap, value){
- return {
- enumerable : !(bitmap & 1),
- configurable: !(bitmap & 2),
- writable : !(bitmap & 4),
- value : value
- };
- };
-
- /***/ },
- /* 100 */
- /***/ function(module, exports, __webpack_require__) {
-
- var global = __webpack_require__(6)
- , SHARED = '__core-js_shared__'
- , store = global[SHARED] || (global[SHARED] = {});
- module.exports = function(key){
- return store[key] || (store[key] = {});
- };
-
- /***/ },
- /* 101 */
- /***/ function(module, exports, __webpack_require__) {
-
- var ctx = __webpack_require__(39)
- , invoke = __webpack_require__(186)
- , html = __webpack_require__(94)
- , cel = __webpack_require__(54)
- , global = __webpack_require__(6)
- , process = global.process
- , setTask = global.setImmediate
- , clearTask = global.clearImmediate
- , MessageChannel = global.MessageChannel
- , counter = 0
- , queue = {}
- , ONREADYSTATECHANGE = 'onreadystatechange'
- , defer, channel, port;
- var run = function(){
- var id = +this;
- if(queue.hasOwnProperty(id)){
- var fn = queue[id];
- delete queue[id];
- fn();
- }
- };
- var listener = function(event){
- run.call(event.data);
- };
- // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
- if(!setTask || !clearTask){
- setTask = function setImmediate(fn){
- var args = [], i = 1;
- while(arguments.length > i)args.push(arguments[i++]);
- queue[++counter] = function(){
- invoke(typeof fn == 'function' ? fn : Function(fn), args);
- };
- defer(counter);
- return counter;
- };
- clearTask = function clearImmediate(id){
- delete queue[id];
- };
- // Node.js 0.8-
- if(__webpack_require__(38)(process) == 'process'){
- defer = function(id){
- process.nextTick(ctx(run, id, 1));
- };
- // Browsers with MessageChannel, includes WebWorkers
- } else if(MessageChannel){
- channel = new MessageChannel;
- port = channel.port2;
- channel.port1.onmessage = listener;
- defer = ctx(port.postMessage, port, 1);
- // Browsers with postMessage, skip WebWorkers
- // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
- } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
- defer = function(id){
- global.postMessage(id + '', '*');
- };
- global.addEventListener('message', listener, false);
- // IE8-
- } else if(ONREADYSTATECHANGE in cel('script')){
- defer = function(id){
- html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
- html.removeChild(this);
- run.call(id);
- };
- };
- // Rest old browsers
- } else {
- defer = function(id){
- setTimeout(ctx(run, id, 1), 0);
- };
- }
- }
- module.exports = {
- set: setTask,
- clear: clearTask
- };
-
- /***/ },
- /* 102 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 7.1.15 ToLength
- var toInteger = __webpack_require__(58)
- , min = Math.min;
- module.exports = function(it){
- return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
- };
-
- /***/ },
- /* 103 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 7.1.13 ToObject(argument)
- var defined = __webpack_require__(53);
- module.exports = function(it){
- return Object(defined(it));
- };
-
- /***/ },
- /* 104 */
- /***/ function(module, exports) {
-
- var id = 0
- , px = Math.random();
- module.exports = function(key){
- return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
- };
-
- /***/ },
- /* 105 */,
- /* 106 */,
- /* 107 */,
- /* 108 */,
- /* 109 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var _crypto = __webpack_require__(67);
-
- var _crypto2 = _interopRequireDefault(_crypto);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- module.exports = {
- encryptLogin: _encryptLogin,
- renderPassword: _renderPassword,
- createFingerprint: createFingerprint,
- _deriveEncryptedLogin: _deriveEncryptedLogin,
- _getPasswordTemplate: _getPasswordTemplate,
- _prettyPrint: _prettyPrint,
- _string2charCodes: _string2charCodes,
- _getCharType: _getCharType,
- _getPasswordChar: _getPasswordChar,
- _createHmac: _createHmac
- };
-
- function _encryptLogin(login, masterPassword) {
- return new Promise(function (resolve, reject) {
- if (!login || !masterPassword) {
- reject('login and master password parameters could not be empty');
- }
- var iterations = 8192;
- var keylen = 32;
- _crypto2.default.pbkdf2(masterPassword, login, iterations, keylen, 'sha256', function (error, key) {
- if (error) {
- reject('error in pbkdf2');
- } else {
- resolve(key.toString('hex'));
- }
- });
- });
- }
-
- function _renderPassword(encryptedLogin, site, passwordOptions) {
- return _deriveEncryptedLogin(encryptedLogin, site, passwordOptions).then(function (derivedEncryptedLogin) {
- var template = _getPasswordTemplate(passwordOptions);
- return _prettyPrint(derivedEncryptedLogin, template);
- });
- }
-
- function _createHmac(encryptedLogin, salt) {
- return new Promise(function (resolve) {
- resolve(_crypto2.default.createHmac('sha256', encryptedLogin).update(salt).digest('hex'));
- });
- }
-
- function _deriveEncryptedLogin(encryptedLogin, site) {
- var passwordOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { length: 12, counter: 1 };
-
- var salt = site + passwordOptions.counter.toString();
- return _createHmac(encryptedLogin, salt).then(function (derivedHash) {
- return derivedHash.substring(0, passwordOptions.length);
- });
- }
-
- function _getPasswordTemplate(passwordTypes) {
- var templates = {
- lowercase: 'vc',
- uppercase: 'VC',
- numbers: 'n',
- symbols: 's'
- };
- var template = '';
- for (var templateKey in templates) {
- if (passwordTypes.hasOwnProperty(templateKey) && passwordTypes[templateKey]) {
- template += templates[templateKey];
- }
- }
- return template;
- }
-
- function _prettyPrint(hash, template) {
- var password = '';
-
- _string2charCodes(hash).forEach(function (charCode, index) {
- var charType = _getCharType(template, index);
- password += _getPasswordChar(charType, charCode);
- });
- return password;
- }
-
- function _string2charCodes(text) {
- var charCodes = [];
- for (var i = 0; i < text.length; i++) {
- charCodes.push(text.charCodeAt(i));
- }
- return charCodes;
- }
-
- function _getCharType(template, index) {
- return template[index % template.length];
- }
-
- function _getPasswordChar(charType, index) {
- var passwordsChars = {
- V: 'AEIOUY',
- C: 'BCDFGHJKLMNPQRSTVWXZ',
- v: 'aeiouy',
- c: 'bcdfghjklmnpqrstvwxz',
- A: 'AEIOUYBCDFGHJKLMNPQRSTVWXZ',
- a: 'AEIOUYaeiouyBCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz',
- n: '0123456789',
- s: '@&%?,=[]_:-+*$#!\'^~;()/.',
- x: 'AEIOUYaeiouyBCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz0123456789@&%?,=[]_:-+*$#!\'^~;()/.'
- };
- var passwordChar = passwordsChars[charType];
- return passwordChar[index % passwordChar.length];
- }
-
- function createFingerprint(str) {
- return new Promise(function (resolve) {
- resolve(_crypto2.default.createHmac('sha256', str).digest('hex'));
- });
- }
-
- /***/ },
- /* 110 */,
- /* 111 */,
- /* 112 */,
- /* 113 */,
- /* 114 */,
- /* 115 */,
- /* 116 */,
- /* 117 */,
- /* 118 */,
- /* 119 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _vue = __webpack_require__(47);
-
- var _vue2 = _interopRequireDefault(_vue);
-
- var _vueRouter = __webpack_require__(303);
-
- var _vueRouter2 = _interopRequireDefault(_vueRouter);
-
- var _PasswordGenerator = __webpack_require__(289);
-
- var _PasswordGenerator2 = _interopRequireDefault(_PasswordGenerator);
-
- var _Login = __webpack_require__(288);
-
- var _Login2 = _interopRequireDefault(_Login);
-
- var _PasswordReset = __webpack_require__(290);
-
- var _PasswordReset2 = _interopRequireDefault(_PasswordReset);
-
- var _PasswordResetConfirm = __webpack_require__(291);
-
- var _PasswordResetConfirm2 = _interopRequireDefault(_PasswordResetConfirm);
-
- var _Passwords = __webpack_require__(292);
-
- var _Passwords2 = _interopRequireDefault(_Passwords);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- _vue2.default.use(_vueRouter2.default);
-
- var routes = [{ path: '/', name: 'home', component: _PasswordGenerator2.default }, { path: '/login', name: 'login', component: _Login2.default }, { path: '/passwords/', name: 'passwords', component: _Passwords2.default }, { path: '/passwords/:id', name: 'password', component: _PasswordGenerator2.default }, { path: '/password/reset', name: 'passwordReset', component: _PasswordReset2.default }, { path: '/password/reset/confirm/:uid/:token', name: 'passwordResetConfirm', component: _PasswordResetConfirm2.default }];
-
- var router = new _vueRouter2.default({
- routes: routes
- });
-
- exports.default = router;
-
- /***/ },
- /* 120 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _assign = __webpack_require__(48);
-
- var _assign2 = _interopRequireDefault(_assign);
-
- var _extends2 = __webpack_require__(25);
-
- var _extends3 = _interopRequireDefault(_extends2);
-
- var _vue = __webpack_require__(47);
-
- var _vue2 = _interopRequireDefault(_vue);
-
- var _vuex = __webpack_require__(11);
-
- var _vuex2 = _interopRequireDefault(_vuex);
-
- var _auth = __webpack_require__(34);
-
- var _auth2 = _interopRequireDefault(_auth);
-
- var _http = __webpack_require__(159);
-
- var _http2 = _interopRequireDefault(_http);
-
- var _storage = __webpack_require__(22);
-
- var _storage2 = _interopRequireDefault(_storage);
-
- var _password = __webpack_require__(79);
-
- var _password2 = _interopRequireDefault(_password);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- _vue2.default.use(_vuex2.default);
-
- var storage = new _storage2.default();
- var auth = new _auth2.default(storage);
- var PasswordsAPI = new _http2.default('passwords', storage);
-
- var defaultPassword = {
- id: '',
- site: '',
- login: '',
- uppercase: true,
- lowercase: true,
- numbers: true,
- symbols: true,
- length: 12,
- counter: 1
- };
-
- var state = {
- authenticated: auth.isAuthenticated(),
- email: '',
- passwordStatus: 'CLEAN',
- passwords: [],
- baseURL: 'https://lesspass.com',
- password: (0, _extends3.default)({}, defaultPassword)
- };
-
- var mutations = {
- LOGOUT: function LOGOUT(state) {
- state.authenticated = false;
- },
- USER_AUTHENTICATED: function USER_AUTHENTICATED(state, user) {
- state.authenticated = true;
- state.email = user.email;
- },
- SET_PASSWORDS: function SET_PASSWORDS(state, passwords) {
- state.passwords = passwords;
- },
- SET_PASSWORD: function SET_PASSWORD(state, _ref) {
- var password = _ref.password;
-
- state.password = password;
- },
- DELETE_PASSWORD: function DELETE_PASSWORD(state, _ref2) {
- var id = _ref2.id;
-
- var passwords = state.passwords;
- state.passwords = passwords.filter(function (password) {
- return password.id !== id;
- });
-
- if (state.password.id === id) {
- state.password = state.defaultPassword;
- }
- },
- PASSWORD_CLEAN: function PASSWORD_CLEAN(state) {
- setTimeout(function () {
- state.passwordStatus = 'CLEAN';
- }, 5000);
- },
- CHANGE_PASSWORD_STATUS: function CHANGE_PASSWORD_STATUS(state, status) {
- state.passwordStatus = status;
- },
- SET_DEFAULT_PASSWORD: function SET_DEFAULT_PASSWORD(state) {
- state.password = (0, _assign2.default)({}, defaultPassword);
- },
- UPDATE_SITE: function UPDATE_SITE(state, _ref3) {
- var site = _ref3.site;
-
- state.password.site = site;
- },
- UPDATE_BASE_URL: function UPDATE_BASE_URL(state, _ref4) {
- var baseURL = _ref4.baseURL;
-
- state.baseURL = baseURL;
- },
- UPDATE_EMAIL: function UPDATE_EMAIL(state, _ref5) {
- var email = _ref5.email;
-
- state.email = email;
- }
- };
-
- var actions = {
- USER_AUTHENTICATED: function USER_AUTHENTICATED(_ref6, user) {
- var commit = _ref6.commit;
- return commit('USER_AUTHENTICATED', user);
- },
- LOGOUT: function LOGOUT(_ref7) {
- var commit = _ref7.commit;
-
- auth.logout();
- commit('LOGOUT');
- },
- SAVE_OR_UPDATE_PASSWORD: function SAVE_OR_UPDATE_PASSWORD(_ref8) {
- var commit = _ref8.commit,
- state = _ref8.state,
- dispatch = _ref8.dispatch;
-
- var password = new _password2.default(state.password);
-
- if (password.isNewPassword(state.passwords)) {
- PasswordsAPI.create(password.json()).then(function () {
- commit('CHANGE_PASSWORD_STATUS', 'CREATED');
- commit('PASSWORD_CLEAN');
- dispatch('FETCH_PASSWORDS');
- });
- } else {
- PasswordsAPI.update(password.json()).then(function () {
- commit('CHANGE_PASSWORD_STATUS', 'UPDATED');
- commit('PASSWORD_CLEAN');
- dispatch('FETCH_PASSWORDS');
- });
- }
- },
- REFRESH_TOKEN: function REFRESH_TOKEN(_ref9) {
- var commit = _ref9.commit;
-
- if (auth.isAuthenticated()) {
- auth.refreshToken().catch(function () {
- commit('LOGOUT');
- });
- }
- },
- PASSWORD_CHANGE: function PASSWORD_CHANGE(_ref10, _ref11) {
- var commit = _ref10.commit;
- var password = _ref11.password;
-
- commit('SET_PASSWORD', { password: password });
- },
-
- PASSWORD_GENERATED: function PASSWORD_GENERATED(_ref12) {
- var commit = _ref12.commit;
-
- commit('CHANGE_PASSWORD_STATUS', 'DIRTY');
- },
- FETCH_PASSWORDS: function FETCH_PASSWORDS(_ref13) {
- var commit = _ref13.commit;
-
- if (auth.isAuthenticated()) {
- PasswordsAPI.all().then(function (response) {
- return commit('SET_PASSWORDS', response.data.results);
- });
- }
- },
- FETCH_PASSWORD: function FETCH_PASSWORD(_ref14, _ref15) {
- var commit = _ref14.commit;
- var id = _ref15.id;
-
- PasswordsAPI.get({ id: id }).then(function (response) {
- return commit('SET_PASSWORD', { password: response.data });
- });
- },
- DELETE_PASSWORD: function DELETE_PASSWORD(_ref16, _ref17) {
- var commit = _ref16.commit;
- var id = _ref17.id;
-
- PasswordsAPI.remove({ id: id }).then(function () {
- commit('DELETE_PASSWORD', { id: id });
- });
- },
- LOAD_DEFAULT_PASSWORD: function LOAD_DEFAULT_PASSWORD(_ref18) {
- var commit = _ref18.commit;
-
- commit('SET_DEFAULT_PASSWORD');
- }
- };
-
- var getters = {
- passwords: function passwords(state) {
- return state.passwords;
- },
- password: function password(state) {
- return state.password;
- },
- isAuthenticated: function isAuthenticated(state) {
- return state.authenticated;
- },
- isGuest: function isGuest(state) {
- return !state.authenticated;
- },
- passwordStatus: function passwordStatus(state) {
- return state.passwordStatus;
- },
- email: function email(state) {
- return state.email;
- }
- };
-
- exports.default = new _vuex2.default.Store({
- state: (0, _assign2.default)(state, storage.json()),
- getters: getters,
- actions: actions,
- mutations: mutations
- });
-
- /***/ },
- /* 121 */
- /***/ function(module, exports) {
-
- // removed by extract-text-webpack-plugin
-
- /***/ },
- /* 122 */
- 121,
- /* 123 */
- 121,
- /* 124 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(307)
-
- /* script */
- __vue_exports__ = __webpack_require__(150)
-
- /* template */
- var __vue_template__ = __webpack_require__(298)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 125 */,
- /* 126 */,
- /* 127 */,
- /* 128 */,
- /* 129 */,
- /* 130 */,
- /* 131 */,
- /* 132 */,
- /* 133 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
- var bind = __webpack_require__(78);
- var Axios = __webpack_require__(135);
-
- /**
- * Create an instance of Axios
- *
- * @param {Object} defaultConfig The default config for the instance
- * @return {Axios} A new instance of Axios
- */
- function createInstance(defaultConfig) {
- var context = new Axios(defaultConfig);
- var instance = bind(Axios.prototype.request, context);
-
- // Copy axios.prototype to instance
- utils.extend(instance, Axios.prototype, context);
-
- // Copy context to instance
- utils.extend(instance, context);
-
- return instance;
- }
-
- // Create the default instance to be exported
- var axios = createInstance();
-
- // Expose Axios class to allow class inheritance
- axios.Axios = Axios;
-
- // Factory for creating new instances
- axios.create = function create(defaultConfig) {
- return createInstance(defaultConfig);
- };
-
- // Expose Cancel & CancelToken
- axios.Cancel = __webpack_require__(74);
- axios.CancelToken = __webpack_require__(134);
- axios.isCancel = __webpack_require__(75);
-
- // Expose all/spread
- axios.all = function all(promises) {
- return Promise.all(promises);
- };
- axios.spread = __webpack_require__(149);
-
- module.exports = axios;
-
- // Allow use of default import syntax in TypeScript
- module.exports.default = axios;
-
-
- /***/ },
- /* 134 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var Cancel = __webpack_require__(74);
-
- /**
- * A `CancelToken` is an object that can be used to request cancellation of an operation.
- *
- * @class
- * @param {Function} executor The executor function.
- */
- function CancelToken(executor) {
- if (typeof executor !== 'function') {
- throw new TypeError('executor must be a function.');
- }
-
- var resolvePromise;
- this.promise = new Promise(function promiseExecutor(resolve) {
- resolvePromise = resolve;
- });
-
- var token = this;
- executor(function cancel(message) {
- if (token.reason) {
- // Cancellation has already been requested
- return;
- }
-
- token.reason = new Cancel(message);
- resolvePromise(token.reason);
- });
- }
-
- /**
- * Throws a `Cancel` if cancellation has been requested.
- */
- CancelToken.prototype.throwIfRequested = function throwIfRequested() {
- if (this.reason) {
- throw this.reason;
- }
- };
-
- /**
- * Returns an object that contains a new `CancelToken` and a function that, when called,
- * cancels the `CancelToken`.
- */
- CancelToken.source = function source() {
- var cancel;
- var token = new CancelToken(function executor(c) {
- cancel = c;
- });
- return {
- token: token,
- cancel: cancel
- };
- };
-
- module.exports = CancelToken;
-
-
- /***/ },
- /* 135 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var defaults = __webpack_require__(77);
- var utils = __webpack_require__(4);
- var InterceptorManager = __webpack_require__(136);
- var dispatchRequest = __webpack_require__(137);
- var isAbsoluteURL = __webpack_require__(145);
- var combineURLs = __webpack_require__(143);
-
- /**
- * Create a new instance of Axios
- *
- * @param {Object} defaultConfig The default config for the instance
- */
- function Axios(defaultConfig) {
- this.defaults = utils.merge(defaults, defaultConfig);
- this.interceptors = {
- request: new InterceptorManager(),
- response: new InterceptorManager()
- };
- }
-
- /**
- * Dispatch a request
- *
- * @param {Object} config The config specific for this request (merged with this.defaults)
- */
- Axios.prototype.request = function request(config) {
- /*eslint no-param-reassign:0*/
- // Allow for axios('example/url'[, config]) a la fetch API
- if (typeof config === 'string') {
- config = utils.merge({
- url: arguments[0]
- }, arguments[1]);
- }
-
- config = utils.merge(defaults, this.defaults, { method: 'get' }, config);
-
- // Support baseURL config
- if (config.baseURL && !isAbsoluteURL(config.url)) {
- config.url = combineURLs(config.baseURL, config.url);
- }
-
- // Hook up interceptors middleware
- var chain = [dispatchRequest, undefined];
- var promise = Promise.resolve(config);
-
- this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
- chain.unshift(interceptor.fulfilled, interceptor.rejected);
- });
-
- this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
- chain.push(interceptor.fulfilled, interceptor.rejected);
- });
-
- while (chain.length) {
- promise = promise.then(chain.shift(), chain.shift());
- }
-
- return promise;
- };
-
- // Provide aliases for supported request methods
- utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, config) {
- return this.request(utils.merge(config || {}, {
- method: method,
- url: url
- }));
- };
- });
-
- utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
- /*eslint func-names:0*/
- Axios.prototype[method] = function(url, data, config) {
- return this.request(utils.merge(config || {}, {
- method: method,
- url: url,
- data: data
- }));
- };
- });
-
- module.exports = Axios;
-
-
- /***/ },
- /* 136 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- function InterceptorManager() {
- this.handlers = [];
- }
-
- /**
- * Add a new interceptor to the stack
- *
- * @param {Function} fulfilled The function to handle `then` for a `Promise`
- * @param {Function} rejected The function to handle `reject` for a `Promise`
- *
- * @return {Number} An ID used to remove interceptor later
- */
- InterceptorManager.prototype.use = function use(fulfilled, rejected) {
- this.handlers.push({
- fulfilled: fulfilled,
- rejected: rejected
- });
- return this.handlers.length - 1;
- };
-
- /**
- * Remove an interceptor from the stack
- *
- * @param {Number} id The ID that was returned by `use`
- */
- InterceptorManager.prototype.eject = function eject(id) {
- if (this.handlers[id]) {
- this.handlers[id] = null;
- }
- };
-
- /**
- * Iterate over all the registered interceptors
- *
- * This method is particularly useful for skipping over any
- * interceptors that may have become `null` calling `eject`.
- *
- * @param {Function} fn The function to call for each interceptor
- */
- InterceptorManager.prototype.forEach = function forEach(fn) {
- utils.forEach(this.handlers, function forEachHandler(h) {
- if (h !== null) {
- fn(h);
- }
- });
- };
-
- module.exports = InterceptorManager;
-
-
- /***/ },
- /* 137 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
- var transformData = __webpack_require__(140);
- var isCancel = __webpack_require__(75);
- var defaults = __webpack_require__(77);
-
- /**
- * Throws a `Cancel` if cancellation has been requested.
- */
- function throwIfCancellationRequested(config) {
- if (config.cancelToken) {
- config.cancelToken.throwIfRequested();
- }
- }
-
- /**
- * Dispatch a request to the server using the configured adapter.
- *
- * @param {object} config The config that is to be used for the request
- * @returns {Promise} The Promise to be fulfilled
- */
- module.exports = function dispatchRequest(config) {
- throwIfCancellationRequested(config);
-
- // Ensure headers exist
- config.headers = config.headers || {};
-
- // Transform request data
- config.data = transformData(
- config.data,
- config.headers,
- config.transformRequest
- );
-
- // Flatten headers
- config.headers = utils.merge(
- config.headers.common || {},
- config.headers[config.method] || {},
- config.headers || {}
- );
-
- utils.forEach(
- ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
- function cleanHeaderConfig(method) {
- delete config.headers[method];
- }
- );
-
- var adapter = config.adapter || defaults.adapter;
-
- return adapter(config).then(function onAdapterResolution(response) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- response.data = transformData(
- response.data,
- response.headers,
- config.transformResponse
- );
-
- return response;
- }, function onAdapterRejection(reason) {
- if (!isCancel(reason)) {
- throwIfCancellationRequested(config);
-
- // Transform response data
- if (reason && reason.response) {
- reason.response.data = transformData(
- reason.response.data,
- reason.response.headers,
- config.transformResponse
- );
- }
- }
-
- return Promise.reject(reason);
- });
- };
-
-
- /***/ },
- /* 138 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- /**
- * Update an Error with the specified config, error code, and response.
- *
- * @param {Error} error The error to update.
- * @param {Object} config The config.
- * @param {string} [code] The error code (for example, 'ECONNABORTED').
- @ @param {Object} [response] The response.
- * @returns {Error} The error.
- */
- module.exports = function enhanceError(error, config, code, response) {
- error.config = config;
- if (code) {
- error.code = code;
- }
- error.response = response;
- return error;
- };
-
-
- /***/ },
- /* 139 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var createError = __webpack_require__(76);
-
- /**
- * Resolve or reject a Promise based on response status.
- *
- * @param {Function} resolve A function that resolves the promise.
- * @param {Function} reject A function that rejects the promise.
- * @param {object} response The response.
- */
- module.exports = function settle(resolve, reject, response) {
- var validateStatus = response.config.validateStatus;
- // Note: status is not exposed by XDomainRequest
- if (!response.status || !validateStatus || validateStatus(response.status)) {
- resolve(response);
- } else {
- reject(createError(
- 'Request failed with status code ' + response.status,
- response.config,
- null,
- response
- ));
- }
- };
-
-
- /***/ },
- /* 140 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- /**
- * Transform the data for a request or a response
- *
- * @param {Object|String} data The data to be transformed
- * @param {Array} headers The headers for the request or response
- * @param {Array|Function} fns A single function or Array of functions
- * @returns {*} The resulting transformed data
- */
- module.exports = function transformData(data, headers, fns) {
- /*eslint no-param-reassign:0*/
- utils.forEach(fns, function transform(fn) {
- data = fn(data, headers);
- });
-
- return data;
- };
-
-
- /***/ },
- /* 141 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- // btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js
-
- var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
-
- function E() {
- this.message = 'String contains an invalid character';
- }
- E.prototype = new Error;
- E.prototype.code = 5;
- E.prototype.name = 'InvalidCharacterError';
-
- function btoa(input) {
- var str = String(input);
- var output = '';
- for (
- // initialize result and counter
- var block, charCode, idx = 0, map = chars;
- // if the next str index does not exist:
- // change the mapping table to "="
- // check if d has no fractional digits
- str.charAt(idx | 0) || (map = '=', idx % 1);
- // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
- output += map.charAt(63 & block >> 8 - idx % 1 * 8)
- ) {
- charCode = str.charCodeAt(idx += 3 / 4);
- if (charCode > 0xFF) {
- throw new E();
- }
- block = block << 8 | charCode;
- }
- return output;
- }
-
- module.exports = btoa;
-
-
- /***/ },
- /* 142 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- function encode(val) {
- return encodeURIComponent(val).
- replace(/%40/gi, '@').
- replace(/%3A/gi, ':').
- replace(/%24/g, '$').
- replace(/%2C/gi, ',').
- replace(/%20/g, '+').
- replace(/%5B/gi, '[').
- replace(/%5D/gi, ']');
- }
-
- /**
- * Build a URL by appending params to the end
- *
- * @param {string} url The base of the url (e.g., http://www.google.com)
- * @param {object} [params] The params to be appended
- * @returns {string} The formatted url
- */
- module.exports = function buildURL(url, params, paramsSerializer) {
- /*eslint no-param-reassign:0*/
- if (!params) {
- return url;
- }
-
- var serializedParams;
- if (paramsSerializer) {
- serializedParams = paramsSerializer(params);
- } else if (utils.isURLSearchParams(params)) {
- serializedParams = params.toString();
- } else {
- var parts = [];
-
- utils.forEach(params, function serialize(val, key) {
- if (val === null || typeof val === 'undefined') {
- return;
- }
-
- if (utils.isArray(val)) {
- key = key + '[]';
- }
-
- if (!utils.isArray(val)) {
- val = [val];
- }
-
- utils.forEach(val, function parseValue(v) {
- if (utils.isDate(v)) {
- v = v.toISOString();
- } else if (utils.isObject(v)) {
- v = JSON.stringify(v);
- }
- parts.push(encode(key) + '=' + encode(v));
- });
- });
-
- serializedParams = parts.join('&');
- }
-
- if (serializedParams) {
- url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
- }
-
- return url;
- };
-
-
- /***/ },
- /* 143 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- /**
- * Creates a new URL by combining the specified URLs
- *
- * @param {string} baseURL The base URL
- * @param {string} relativeURL The relative URL
- * @returns {string} The combined URL
- */
- module.exports = function combineURLs(baseURL, relativeURL) {
- return baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '');
- };
-
-
- /***/ },
- /* 144 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- module.exports = (
- utils.isStandardBrowserEnv() ?
-
- // Standard browser envs support document.cookie
- (function standardBrowserEnv() {
- return {
- write: function write(name, value, expires, path, domain, secure) {
- var cookie = [];
- cookie.push(name + '=' + encodeURIComponent(value));
-
- if (utils.isNumber(expires)) {
- cookie.push('expires=' + new Date(expires).toGMTString());
- }
-
- if (utils.isString(path)) {
- cookie.push('path=' + path);
- }
-
- if (utils.isString(domain)) {
- cookie.push('domain=' + domain);
- }
-
- if (secure === true) {
- cookie.push('secure');
- }
-
- document.cookie = cookie.join('; ');
- },
-
- read: function read(name) {
- var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
- return (match ? decodeURIComponent(match[3]) : null);
- },
-
- remove: function remove(name) {
- this.write(name, '', Date.now() - 86400000);
- }
- };
- })() :
-
- // Non standard browser env (web workers, react-native) lack needed support.
- (function nonStandardBrowserEnv() {
- return {
- write: function write() {},
- read: function read() { return null; },
- remove: function remove() {}
- };
- })()
- );
-
-
- /***/ },
- /* 145 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- /**
- * Determines whether the specified URL is absolute
- *
- * @param {string} url The URL to test
- * @returns {boolean} True if the specified URL is absolute, otherwise false
- */
- module.exports = function isAbsoluteURL(url) {
- // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
- // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
- // by any combination of letters, digits, plus, period, or hyphen.
- return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
- };
-
-
- /***/ },
- /* 146 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- module.exports = (
- utils.isStandardBrowserEnv() ?
-
- // Standard browser envs have full support of the APIs needed to test
- // whether the request URL is of the same origin as current location.
- (function standardBrowserEnv() {
- var msie = /(msie|trident)/i.test(navigator.userAgent);
- var urlParsingNode = document.createElement('a');
- var originURL;
-
- /**
- * Parse a URL to discover it's components
- *
- * @param {String} url The URL to be parsed
- * @returns {Object}
- */
- function resolveURL(url) {
- var href = url;
-
- if (msie) {
- // IE needs attribute set twice to normalize properties
- urlParsingNode.setAttribute('href', href);
- href = urlParsingNode.href;
- }
-
- urlParsingNode.setAttribute('href', href);
-
- // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
- return {
- href: urlParsingNode.href,
- protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
- host: urlParsingNode.host,
- search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
- hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
- hostname: urlParsingNode.hostname,
- port: urlParsingNode.port,
- pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
- urlParsingNode.pathname :
- '/' + urlParsingNode.pathname
- };
- }
-
- originURL = resolveURL(window.location.href);
-
- /**
- * Determine if a URL shares the same origin as the current location
- *
- * @param {String} requestURL The URL to test
- * @returns {boolean} True if URL shares the same origin, otherwise false
- */
- return function isURLSameOrigin(requestURL) {
- var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
- return (parsed.protocol === originURL.protocol &&
- parsed.host === originURL.host);
- };
- })() :
-
- // Non standard browser envs (web workers, react-native) lack needed support.
- (function nonStandardBrowserEnv() {
- return function isURLSameOrigin() {
- return true;
- };
- })()
- );
-
-
- /***/ },
- /* 147 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- module.exports = function normalizeHeaderName(headers, normalizedName) {
- utils.forEach(headers, function processHeader(value, name) {
- if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
- headers[normalizedName] = value;
- delete headers[name];
- }
- });
- };
-
-
- /***/ },
- /* 148 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var utils = __webpack_require__(4);
-
- /**
- * Parse headers into an object
- *
- * ```
- * Date: Wed, 27 Aug 2014 08:58:49 GMT
- * Content-Type: application/json
- * Connection: keep-alive
- * Transfer-Encoding: chunked
- * ```
- *
- * @param {String} headers Headers needing to be parsed
- * @returns {Object} Headers parsed into an object
- */
- module.exports = function parseHeaders(headers) {
- var parsed = {};
- var key;
- var val;
- var i;
-
- if (!headers) { return parsed; }
-
- utils.forEach(headers.split('\n'), function parser(line) {
- i = line.indexOf(':');
- key = utils.trim(line.substr(0, i)).toLowerCase();
- val = utils.trim(line.substr(i + 1));
-
- if (key) {
- parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
- }
- });
-
- return parsed;
- };
-
-
- /***/ },
- /* 149 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- /**
- * Syntactic sugar for invoking a function and expanding an array for arguments.
- *
- * Common use case would be to use `Function.prototype.apply`.
- *
- * ```js
- * function f(x, y, z) {}
- * var args = [1, 2, 3];
- * f.apply(null, args);
- * ```
- *
- * With `spread` this example can be re-written.
- *
- * ```js
- * spread(function(x, y, z) {})([1, 2, 3]);
- * ```
- *
- * @param {Function} callback
- * @returns {Function}
- */
- module.exports = function spread(callback) {
- return function wrap(arr) {
- return callback.apply(null, arr);
- };
- };
-
-
- /***/ },
- /* 150 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _Menu = __webpack_require__(286);
-
- var _Menu2 = _interopRequireDefault(_Menu);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = {
- name: 'LessPass',
- components: {
- 'lesspass-menu': _Menu2.default
- },
- created: function created() {
- var _this = this;
-
- var fiveMinutes = 1000 * 60 * 5;
- this.$store.dispatch('REFRESH_TOKEN');
- setInterval(function () {
- _this.$store.dispatch('REFRESH_TOKEN');
- }, fiveMinutes);
- }
- };
-
- /***/ },
- /* 151 */
- /***/ function(module, exports) {
-
- "use strict";
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = {
- data: function data() {
- return {
- pending: false
- };
- },
-
- props: {
- action: { type: Function, required: true },
- text: { type: String, required: true },
- object: { type: Object, required: true }
- },
- methods: {
- confirm: function (_confirm) {
- function confirm() {
- return _confirm.apply(this, arguments);
- }
-
- confirm.toString = function () {
- return _confirm.toString();
- };
-
- return confirm;
- }(function () {
- this.pending = true;
- var response = confirm(this.text);
- if (response == true) {
- this.action(this.object);
- }
- })
- }
- };
-
- /***/ },
- /* 152 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _lesspass = __webpack_require__(109);
-
- var _lesspass2 = _interopRequireDefault(_lesspass);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = {
- data: function data() {
- return {
- icon1: '',
- icon2: '',
- icon3: '',
- color1: '',
- color2: '',
- color3: ''
- };
- },
-
- props: ['fingerprint'],
- watch: {
- fingerprint: function fingerprint(newFingerprint) {
- var _this = this;
-
- if (!newFingerprint) {
- return;
- }
- _lesspass2.default.createFingerprint(newFingerprint).then(function (sha256) {
- var hash1 = sha256.substring(0, 6);
- var hash2 = sha256.substring(6, 12);
- var hash3 = sha256.substring(12, 18);
- _this.icon1 = _this.getIcon(hash1);
- _this.icon2 = _this.getIcon(hash2);
- _this.icon3 = _this.getIcon(hash3);
- _this.color1 = _this.getColor(hash1);
- _this.color2 = _this.getColor(hash2);
- _this.color3 = _this.getColor(hash3);
- });
- }
- },
- methods: {
- getColor: function getColor(color) {
- var colors = ['#000000', '#074750', '#009191', '#FF6CB6', '#FFB5DA', '#490092', '#006CDB', '#B66DFF', '#6DB5FE', '#B5DAFE', '#920000', '#924900', '#DB6D00', '#24FE23'];
- var index = parseInt(color, 16) % colors.length;
- return colors[index];
- },
- getIcon: function getIcon(hash) {
- var icons = ['fa-hashtag', 'fa-heart', 'fa-hotel', 'fa-university', 'fa-plug', 'fa-ambulance', 'fa-bus', 'fa-car', 'fa-plane', 'fa-rocket', 'fa-ship', 'fa-subway', 'fa-truck', 'fa-jpy', 'fa-eur', 'fa-btc', 'fa-usd', 'fa-gbp', 'fa-archive', 'fa-area-chart', 'fa-bed', 'fa-beer', 'fa-bell', 'fa-binoculars', 'fa-birthday-cake', 'fa-bomb', 'fa-briefcase', 'fa-bug', 'fa-camera', 'fa-cart-plus', 'fa-certificate', 'fa-coffee', 'fa-cloud', 'fa-coffee', 'fa-comment', 'fa-cube', 'fa-cutlery', 'fa-database', 'fa-diamond', 'fa-exclamation-circle', 'fa-eye', 'fa-flag', 'fa-flask', 'fa-futbol-o', 'fa-gamepad', 'fa-graduation-cap'];
- var index = parseInt(hash, 16) % icons.length;
- return icons[index];
- }
- }
- };
-
- /***/ },
- /* 153 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _vuex = __webpack_require__(11);
-
- exports.default = {
- methods: {
- logout: function logout() {
- this.$store.dispatch('LOGOUT');
- this.$router.push({ name: 'home' });
- },
- saveOrUpdatePassword: function saveOrUpdatePassword() {
- this.$store.dispatch('SAVE_OR_UPDATE_PASSWORD');
- }
- },
- computed: (0, _vuex.mapGetters)(['isAuthenticated', 'isGuest', 'email', 'passwordStatus'])
- };
-
- /***/ },
- /* 154 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _extends2 = __webpack_require__(25);
-
- var _extends3 = _interopRequireDefault(_extends2);
-
- var _auth = __webpack_require__(34);
-
- var _auth2 = _interopRequireDefault(_auth);
-
- var _storage = __webpack_require__(22);
-
- var _storage2 = _interopRequireDefault(_storage);
-
- var _vuex = __webpack_require__(11);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var defaultErrors = {
- userNameAlreadyExist: false,
- baseURLRequired: false,
- emailRequired: false,
- passwordRequired: false
- };
-
- exports.default = {
- data: function data() {
- var storage = new _storage2.default();
- var auth = new _auth2.default(storage);
- return {
- auth: auth,
- storage: storage,
- password: '',
- showError: false,
- errorMessage: '',
- loadingRegister: false,
- loadingSignIn: false,
- errors: (0, _extends3.default)({}, defaultErrors)
- };
- },
-
- methods: {
- noErrors: function noErrors() {
- return !(this.errors.userNameAlreadyExist || this.errors.emailRequired || this.errors.passwordRequired || this.errors.baseURLRequired || this.showError);
- },
- formIsValid: function formIsValid() {
- this.cleanErrors();
- var formIsValid = true;
- if (!this.email) {
- this.errors.emailRequired = true;
- formIsValid = false;
- }
- if (!this.password) {
- this.errors.passwordRequired = true;
- formIsValid = false;
- }
- if (!this.baseURL) {
- this.errors.baseURLRequired = true;
- formIsValid = false;
- }
- return formIsValid;
- },
- cleanErrors: function cleanErrors() {
- this.loadingRegister = false;
- this.loadingSignIn = false;
- this.showError = false;
- this.errorMessage = '';
- this.errors = (0, _extends3.default)({}, defaultErrors);
- },
- signIn: function signIn() {
- var _this = this;
-
- if (this.formIsValid()) {
- (function () {
- _this.loadingSignIn = true;
- var email = _this.email;
- var password = _this.password;
- var baseURL = _this.baseURL;
- _this.auth.login({ email: email, password: password }, baseURL).then(function () {
- _this.loadingSignIn = false;
- _this.storage.save({ baseURL: baseURL, email: email });
- _this.$store.dispatch('USER_AUTHENTICATED', { email: email });
- _this.$router.push({ name: 'home' });
- }).catch(function (err) {
- _this.cleanErrors();
- if (err.response === undefined) {
- if (baseURL === "https://lesspass.com") {
- _this.showErrorMessage();
- } else {
- _this.showErrorMessage('Your LessPass Database is not running');
- }
- } else if (err.response.status === 400) {
- _this.showErrorMessage('Your email and/or password is not good. Do you have an account ?');
- } else {
- _this.showErrorMessage();
- }
- });
- })();
- }
- },
- register: function register() {
- var _this2 = this;
-
- if (this.formIsValid()) {
- this.loadingRegister = true;
- var email = this.email;
- var password = this.password;
- var baseURL = this.baseURL;
- this.auth.register({ email: email, password: password }, baseURL).then(function () {
- _this2.loadingRegister = false;
- _this2.signIn();
- }).catch(function (err) {
- _this2.cleanErrors();
- if (err.response && err.response.data.email[0].indexOf('already exists') !== -1) {
- _this2.errors.userNameAlreadyExist = true;
- } else {
- _this2.showErrorMessage();
- }
- });
- }
- },
- showErrorMessage: function showErrorMessage() {
- var errorMessage = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Oops! Something went wrong. Retry in a few minutes.';
-
- this.errorMessage = errorMessage;
- this.showError = true;
- }
- },
- computed: {
- baseURL: {
- get: function get() {
- return this.$store.state.baseURL;
- },
- set: function set(baseURL) {
- this.$store.commit('UPDATE_BASE_URL', { baseURL: baseURL });
- }
- },
- email: {
- get: function get() {
- return this.$store.state.email;
- },
- set: function set(email) {
- this.$store.commit('UPDATE_EMAIL', { email: email });
- }
- }
- }
- };
-
- /***/ },
- /* 155 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _extends2 = __webpack_require__(25);
-
- var _extends3 = _interopRequireDefault(_extends2);
-
- var _lesspass = __webpack_require__(109);
-
- var _lesspass2 = _interopRequireDefault(_lesspass);
-
- var _vuex = __webpack_require__(11);
-
- var _clipboard = __webpack_require__(176);
-
- var _clipboard2 = _interopRequireDefault(_clipboard);
-
- var _lodash = __webpack_require__(261);
-
- var _lodash2 = _interopRequireDefault(_lodash);
-
- var _tooltip = __webpack_require__(161);
-
- var _password = __webpack_require__(79);
-
- var _password2 = _interopRequireDefault(_password);
-
- var _urlParser = __webpack_require__(162);
-
- var _RemoveAutoComplete = __webpack_require__(287);
-
- var _RemoveAutoComplete2 = _interopRequireDefault(_RemoveAutoComplete);
-
- var _Fingerprint = __webpack_require__(285);
-
- var _Fingerprint2 = _interopRequireDefault(_Fingerprint);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function fetchPasswords(store) {
- return store.dispatch('FETCH_PASSWORDS');
- }
-
- exports.default = {
- name: 'password-generator-view',
- components: {
- RemoveAutoComplete: _RemoveAutoComplete2.default,
- Fingerprint: _Fingerprint2.default
- },
- computed: (0, _vuex.mapGetters)(['passwords', 'password']),
- preFetch: fetchPasswords,
- beforeMount: function beforeMount() {
- var _this = this;
-
- var id = this.$route.params.id;
- if (id) {
- this.$store.dispatch('FETCH_PASSWORD', { id: id });
- } else {
- fetchPasswords(this.$store);
- }
-
- (0, _urlParser.getSite)().then(function (site) {
- if (site) {
- _this.$store.commit('UPDATE_SITE', { site: site });
- }
- });
-
- var clipboard = new _clipboard2.default('#copyPasswordButton');
- clipboard.on('success', function (event) {
- if (event.text) {
- (0, _tooltip.showTooltip)(event.trigger, 'copied !');
- }
- });
- },
- data: function data() {
- return {
- masterPassword: '',
- encryptedLogin: '',
- generatedPassword: '',
- cleanTimeout: null
- };
- },
-
- watch: {
- 'password.site': function passwordSite(newValue) {
- var values = newValue.split(" | ");
- if (values.length === 2) {
- var site = values[0];
- var login = values[1];
- var passwords = this.passwords;
- for (var i = 0; i < passwords.length; i++) {
- var password = passwords[i];
- if (password.site === site && password.login === login) {
- this.$store.dispatch('PASSWORD_CHANGE', { password: (0, _extends3.default)({}, password) });
- this.$refs.masterPassword.focus();
- break;
- }
- }
- return site;
- }
- return newValue;
- },
- 'password.login': function passwordLogin() {
- this.encryptedLogin = '';
- this.encryptLogin();
- },
- 'masterPassword': function masterPassword() {
- this.encryptedLogin = '';
- this.encryptLogin();
- },
- 'generatedPassword': function generatedPassword() {
- this.cleanFormInSeconds(30);
- },
- 'encryptedLogin': function encryptedLogin() {
- var _this2 = this;
-
- if (!this.encryptedLogin || !this.password.site) {
- this.generatedPassword = '';
- return;
- }
- var password = new _password2.default(this.password);
- _lesspass2.default.renderPassword(this.encryptedLogin, this.password.site, password.options).then(function (generatedPassword) {
- _this2.$store.dispatch('PASSWORD_GENERATED');
- _this2.generatedPassword = generatedPassword;
- });
- }
- },
- methods: {
- encryptLogin: (0, _lodash2.default)(function () {
- var _this3 = this;
-
- if (this.password.login && this.masterPassword) {
- _lesspass2.default.encryptLogin(this.password.login, this.masterPassword).then(function (encryptedLogin) {
- _this3.encryptedLogin = encryptedLogin;
- });
- }
- }, 500),
- showMasterPassword: function showMasterPassword() {
- if (this.$refs.masterPassword.type === 'password') {
- this.$refs.masterPassword.type = 'text';
- } else {
- this.$refs.masterPassword.type = 'password';
- }
- },
- cleanFormInSeconds: function cleanFormInSeconds(seconds) {
- var _this4 = this;
-
- clearTimeout(this.cleanTimeout);
- this.cleanTimeout = setTimeout(function () {
- _this4.masterPassword = '';
- _this4.encryptedLogin = '';
- _this4.generatedPassword = '';
- }, 1000 * seconds);
- }
- }
- };
-
- /***/ },
- /* 156 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _auth = __webpack_require__(34);
-
- var _auth2 = _interopRequireDefault(_auth);
-
- var _storage = __webpack_require__(22);
-
- var _storage2 = _interopRequireDefault(_storage);
-
- var _vuex = __webpack_require__(11);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = {
- data: function data() {
- var storage = new _storage2.default();
- var auth = new _auth2.default(storage);
- return {
- auth: auth,
- storage: storage,
- email: '',
- emailRequired: false,
- showError: false,
- loading: false,
- successMessage: false
- };
- },
-
- methods: {
- cleanErrors: function cleanErrors() {
- this.loading = false;
- this.emailRequired = false;
- this.showError = false;
- this.successMessage = false;
- },
- noErrors: function noErrors() {
- return !(this.emailRequired || this.showError);
- },
- resetPassword: function resetPassword() {
- var _this = this;
-
- this.cleanErrors();
- if (!this.email) {
- this.emailRequired = true;
- return;
- }
- this.loading = true;
- this.auth.resetPassword({ email: this.email }).then(function () {
- _this.cleanErrors();
- _this.successMessage = true;
- }).catch(function () {
- _this.cleanErrors();
- _this.showError = true;
- });
- }
- }
- };
-
- /***/ },
- /* 157 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _auth = __webpack_require__(34);
-
- var _auth2 = _interopRequireDefault(_auth);
-
- var _storage = __webpack_require__(22);
-
- var _storage2 = _interopRequireDefault(_storage);
-
- var _vuex = __webpack_require__(11);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- exports.default = {
- data: function data() {
- var storage = new _storage2.default();
- var auth = new _auth2.default(storage);
- return {
- auth: auth,
- storage: storage,
- new_password: '',
- passwordRequired: false,
- showError: false,
- successMessage: false,
- errorMessage: 'Oops! Something went wrong. Retry in a few minutes.'
- };
- },
-
- methods: {
- cleanErrors: function cleanErrors() {
- this.passwordRequired = false;
- this.showError = false;
- this.successMessage = false;
- },
- noErrors: function noErrors() {
- return !(this.passwordRequired || this.showError);
- },
- resetPasswordConfirm: function resetPasswordConfirm() {
- var _this = this;
-
- this.cleanErrors();
- if (!this.new_password) {
- this.passwordRequired = true;
- return;
- }
- this.auth.confirmResetPassword({
- uid: this.$route.params.uid,
- token: this.$route.params.token,
- new_password: this.new_password
- }).then(function () {
- _this.successMessage = true;
- }).catch(function (err) {
- if (err.response.status === 400) {
- _this.errorMessage = 'This password reset link become invalid.';
- }
- _this.showError = true;
- });
- }
- }
- };
-
- /***/ },
- /* 158 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _extends2 = __webpack_require__(25);
-
- var _extends3 = _interopRequireDefault(_extends2);
-
- var _DeleteButton = __webpack_require__(284);
-
- var _DeleteButton2 = _interopRequireDefault(_DeleteButton);
-
- var _vuex = __webpack_require__(11);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function fetchPasswords(store) {
- return store.dispatch('FETCH_PASSWORDS');
- }
-
- exports.default = {
- name: 'passwords-view',
- data: function data() {
- return {
- searchQuery: ''
- };
- },
-
- components: { DeleteButton: _DeleteButton2.default },
- computed: (0, _extends3.default)({}, (0, _vuex.mapGetters)(['passwords', 'email']), {
- filteredPasswords: function filteredPasswords() {
- var _this = this;
-
- return this.passwords.filter(function (password) {
- return password.site.indexOf(_this.searchQuery) > -1 || password.login.indexOf(_this.searchQuery) > -1;
- });
- }
- }),
- preFetch: fetchPasswords,
- beforeMount: function beforeMount() {
- fetchPasswords(this.$store);
- },
-
- methods: {
- deletePassword: function deletePassword(password) {
- return this.$store.dispatch('DELETE_PASSWORD', { id: password.id });
- }
- }
- };
-
- /***/ },
- /* 159 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _extends2 = __webpack_require__(25);
-
- var _extends3 = _interopRequireDefault(_extends2);
-
- var _classCallCheck2 = __webpack_require__(23);
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = __webpack_require__(24);
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- var _axios = __webpack_require__(72);
-
- var _axios2 = _interopRequireDefault(_axios);
-
- var _storage = __webpack_require__(22);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var HTTP = function () {
- function HTTP(resource, storage) {
- (0, _classCallCheck3.default)(this, HTTP);
-
- this.storage = storage;
- this.resource = resource;
- }
-
- (0, _createClass3.default)(HTTP, [{
- key: 'getRequestConfig',
- value: function getRequestConfig() {
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- var config = this.storage.json();
- return (0, _extends3.default)({}, params, {
- baseURL: config.baseURL,
- headers: { Authorization: 'JWT ' + config[_storage.TOKEN_KEY] }
- });
- }
- }, {
- key: 'create',
- value: function create(resource) {
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.post('/api/' + this.resource + '/', resource, this.getRequestConfig(params));
- }
- }, {
- key: 'all',
- value: function all() {
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- return _axios2.default.get('/api/' + this.resource + '/', this.getRequestConfig(params));
- }
- }, {
- key: 'get',
- value: function get(resource) {
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.get('/api/' + this.resource + '/' + resource.id + '/', this.getRequestConfig(params));
- }
- }, {
- key: 'update',
- value: function update(resource) {
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.put('/api/' + this.resource + '/' + resource.id + '/', resource, this.getRequestConfig(params));
- }
- }, {
- key: 'remove',
- value: function remove(resource) {
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- return _axios2.default.delete('/api/' + this.resource + '/' + resource.id + '/', this.getRequestConfig(params));
- }
- }]);
- return HTTP;
- }();
-
- exports.default = HTTP;
-
- /***/ },
- /* 160 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.TOKEN_KEY = undefined;
-
- var _classCallCheck2 = __webpack_require__(23);
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = __webpack_require__(24);
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- var _jwtDecode = __webpack_require__(260);
-
- var _jwtDecode2 = _interopRequireDefault(_jwtDecode);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var TOKEN_KEY = exports.TOKEN_KEY = 'jwt';
-
- var Token = function () {
- function Token(tokenName) {
- (0, _classCallCheck3.default)(this, Token);
-
- this.name = tokenName;
- }
-
- (0, _createClass3.default)(Token, [{
- key: 'stillValid',
- value: function stillValid() {
- var now = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
-
- try {
- return this._expirationDateSuperiorTo(now);
- } catch (err) {
- return false;
- }
- }
- }, {
- key: 'expiresInMinutes',
- value: function expiresInMinutes(minutes) {
- var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();
-
- try {
- var nowPlusDuration = new Date(now.getTime() + minutes * 60000);
- return this._expirationDateInferiorTo(nowPlusDuration);
- } catch (err) {
- return false;
- }
- }
- }, {
- key: '_expirationDateInferiorTo',
- value: function _expirationDateInferiorTo(date) {
- var expireDate = this._getTokenExpirationDate();
- return expireDate < date;
- }
- }, {
- key: '_expirationDateSuperiorTo',
- value: function _expirationDateSuperiorTo(date) {
- return !this._expirationDateInferiorTo(date);
- }
- }, {
- key: '_getTokenExpirationDate',
- value: function _getTokenExpirationDate() {
- var decodedToken = (0, _jwtDecode2.default)(this.name);
- return new Date(decodedToken.exp * 1000);
- }
- }]);
- return Token;
- }();
-
- exports.default = Token;
-
- /***/ },
- /* 161 */
- /***/ function(module, exports) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.showTooltip = showTooltip;
- function showTooltip(elem, msg) {
- var classNames = elem.className;
- elem.setAttribute('class', classNames + ' hint--top');
- elem.setAttribute('aria-label', msg);
- setTimeout(function () {
- elem.setAttribute('class', classNames);
- }, 2000);
- }
-
- /***/ },
- /* 162 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getSite = exports.getCurrentUrl = exports.isWebExtension = exports._ipIsValid = exports.getDomainName = undefined;
-
- var _promise = __webpack_require__(81);
-
- var _promise2 = _interopRequireDefault(_promise);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _ipIsValid(ipAddress) {
- return Boolean(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipAddress));
- }
-
- function getDomainName(urlStr) {
- var matches = urlStr.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
- return matches && matches[1];
- }
-
- function isWebExtension() {
- if (typeof chrome !== 'undefined' && typeof chrome.tabs !== 'undefined') {
- return typeof chrome.tabs.query === 'function';
- }
- return false;
- }
-
- function getCurrentUrl() {
- return new _promise2.default(function (resolve) {
- chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
- resolve(tabs[0].url);
- });
- });
- }
-
- function getSite() {
- if (isWebExtension()) {
- return getCurrentUrl().then(function (currentUrl) {
- return getDomainName(currentUrl);
- });
- }
- return new _promise2.default(function (resolve) {
- resolve('');
- });
- }
-
- exports.getDomainName = getDomainName;
- exports._ipIsValid = _ipIsValid;
- exports.isWebExtension = isWebExtension;
- exports.getCurrentUrl = getCurrentUrl;
- exports.getSite = getSite;
-
- /***/ },
- /* 163 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = { "default": __webpack_require__(177), __esModule: true };
-
- /***/ },
- /* 164 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- "use strict";
-
- exports.__esModule = true;
-
- var _defineProperty = __webpack_require__(80);
-
- 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;
- };
-
- /***/ },
- /* 165 */,
- /* 166 */,
- /* 167 */,
- /* 168 */,
- /* 169 */,
- /* 170 */,
- /* 171 */,
- /* 172 */,
- /* 173 */,
- /* 174 */,
- /* 175 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(275)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else if (typeof exports !== "undefined") {
- factory(module, require('select'));
- } else {
- var mod = {
- exports: {}
- };
- factory(mod, global.select);
- global.clipboardAction = mod.exports;
- }
- })(this, function (module, _select) {
- 'use strict';
-
- var _select2 = _interopRequireDefault(_select);
-
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- default: obj
- };
- }
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
- return typeof obj;
- } : function (obj) {
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
- };
-
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
-
- var _createClass = function () {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
- }
-
- return function (Constructor, protoProps, staticProps) {
- if (protoProps) defineProperties(Constructor.prototype, protoProps);
- if (staticProps) defineProperties(Constructor, staticProps);
- return Constructor;
- };
- }();
-
- var ClipboardAction = function () {
- /**
- * @param {Object} options
- */
- function ClipboardAction(options) {
- _classCallCheck(this, ClipboardAction);
-
- this.resolveOptions(options);
- this.initSelection();
- }
-
- /**
- * Defines base properties passed from constructor.
- * @param {Object} options
- */
-
-
- _createClass(ClipboardAction, [{
- key: 'resolveOptions',
- value: function resolveOptions() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- this.action = options.action;
- this.emitter = options.emitter;
- this.target = options.target;
- this.text = options.text;
- this.trigger = options.trigger;
-
- this.selectedText = '';
- }
- }, {
- key: 'initSelection',
- value: function initSelection() {
- if (this.text) {
- this.selectFake();
- } else if (this.target) {
- this.selectTarget();
- }
- }
- }, {
- key: 'selectFake',
- value: function selectFake() {
- var _this = this;
-
- var isRTL = document.documentElement.getAttribute('dir') == 'rtl';
-
- this.removeFake();
-
- this.fakeHandlerCallback = function () {
- return _this.removeFake();
- };
- this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true;
-
- this.fakeElem = document.createElement('textarea');
- // Prevent zooming on iOS
- this.fakeElem.style.fontSize = '12pt';
- // Reset box model
- this.fakeElem.style.border = '0';
- this.fakeElem.style.padding = '0';
- this.fakeElem.style.margin = '0';
- // Move element out of screen horizontally
- this.fakeElem.style.position = 'absolute';
- this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
- // Move element to the same position vertically
- var yPosition = window.pageYOffset || document.documentElement.scrollTop;
- this.fakeElem.addEventListener('focus', window.scrollTo(0, yPosition));
- this.fakeElem.style.top = yPosition + 'px';
-
- this.fakeElem.setAttribute('readonly', '');
- this.fakeElem.value = this.text;
-
- document.body.appendChild(this.fakeElem);
-
- this.selectedText = (0, _select2.default)(this.fakeElem);
- this.copyText();
- }
- }, {
- key: 'removeFake',
- value: function removeFake() {
- if (this.fakeHandler) {
- document.body.removeEventListener('click', this.fakeHandlerCallback);
- this.fakeHandler = null;
- this.fakeHandlerCallback = null;
- }
-
- if (this.fakeElem) {
- document.body.removeChild(this.fakeElem);
- this.fakeElem = null;
- }
- }
- }, {
- key: 'selectTarget',
- value: function selectTarget() {
- this.selectedText = (0, _select2.default)(this.target);
- this.copyText();
- }
- }, {
- key: 'copyText',
- value: function copyText() {
- var succeeded = void 0;
-
- try {
- succeeded = document.execCommand(this.action);
- } catch (err) {
- succeeded = false;
- }
-
- this.handleResult(succeeded);
- }
- }, {
- key: 'handleResult',
- value: function handleResult(succeeded) {
- this.emitter.emit(succeeded ? 'success' : 'error', {
- action: this.action,
- text: this.selectedText,
- trigger: this.trigger,
- clearSelection: this.clearSelection.bind(this)
- });
- }
- }, {
- key: 'clearSelection',
- value: function clearSelection() {
- if (this.target) {
- this.target.blur();
- }
-
- window.getSelection().removeAllRanges();
- }
- }, {
- key: 'destroy',
- value: function destroy() {
- this.removeFake();
- }
- }, {
- key: 'action',
- set: function set() {
- var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';
-
- this._action = action;
-
- if (this._action !== 'copy' && this._action !== 'cut') {
- throw new Error('Invalid "action" value, use either "copy" or "cut"');
- }
- },
- get: function get() {
- return this._action;
- }
- }, {
- key: 'target',
- set: function set(target) {
- if (target !== undefined) {
- if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {
- if (this.action === 'copy' && target.hasAttribute('disabled')) {
- throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
- }
-
- if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {
- throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
- }
-
- this._target = target;
- } else {
- throw new Error('Invalid "target" value, use a valid Element');
- }
- }
- },
- get: function get() {
- return this._target;
- }
- }]);
-
- return ClipboardAction;
- }();
-
- module.exports = ClipboardAction;
- });
-
- /***/ },
- /* 176 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, __webpack_require__(175), __webpack_require__(281), __webpack_require__(247)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else if (typeof exports !== "undefined") {
- factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));
- } else {
- var mod = {
- exports: {}
- };
- factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);
- global.clipboard = mod.exports;
- }
- })(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {
- 'use strict';
-
- var _clipboardAction2 = _interopRequireDefault(_clipboardAction);
-
- var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);
-
- var _goodListener2 = _interopRequireDefault(_goodListener);
-
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- default: obj
- };
- }
-
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
- }
-
- var _createClass = function () {
- function defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
- }
-
- return function (Constructor, protoProps, staticProps) {
- if (protoProps) defineProperties(Constructor.prototype, protoProps);
- if (staticProps) defineProperties(Constructor, staticProps);
- return Constructor;
- };
- }();
-
- function _possibleConstructorReturn(self, call) {
- if (!self) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return call && (typeof call === "object" || typeof call === "function") ? call : self;
- }
-
- function _inherits(subClass, superClass) {
- if (typeof superClass !== "function" && superClass !== null) {
- throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
- }
-
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
- }
-
- var Clipboard = function (_Emitter) {
- _inherits(Clipboard, _Emitter);
-
- /**
- * @param {String|HTMLElement|HTMLCollection|NodeList} trigger
- * @param {Object} options
- */
- function Clipboard(trigger, options) {
- _classCallCheck(this, Clipboard);
-
- var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));
-
- _this.resolveOptions(options);
- _this.listenClick(trigger);
- return _this;
- }
-
- /**
- * Defines if attributes would be resolved using internal setter functions
- * or custom functions that were passed in the constructor.
- * @param {Object} options
- */
-
-
- _createClass(Clipboard, [{
- key: 'resolveOptions',
- value: function resolveOptions() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
- this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
- this.text = typeof options.text === 'function' ? options.text : this.defaultText;
- }
- }, {
- key: 'listenClick',
- value: function listenClick(trigger) {
- var _this2 = this;
-
- this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {
- return _this2.onClick(e);
- });
- }
- }, {
- key: 'onClick',
- value: function onClick(e) {
- var trigger = e.delegateTarget || e.currentTarget;
-
- if (this.clipboardAction) {
- this.clipboardAction = null;
- }
-
- this.clipboardAction = new _clipboardAction2.default({
- action: this.action(trigger),
- target: this.target(trigger),
- text: this.text(trigger),
- trigger: trigger,
- emitter: this
- });
- }
- }, {
- key: 'defaultAction',
- value: function defaultAction(trigger) {
- return getAttributeValue('action', trigger);
- }
- }, {
- key: 'defaultTarget',
- value: function defaultTarget(trigger) {
- var selector = getAttributeValue('target', trigger);
-
- if (selector) {
- return document.querySelector(selector);
- }
- }
- }, {
- key: 'defaultText',
- value: function defaultText(trigger) {
- return getAttributeValue('text', trigger);
- }
- }, {
- key: 'destroy',
- value: function destroy() {
- this.listener.destroy();
-
- if (this.clipboardAction) {
- this.clipboardAction.destroy();
- this.clipboardAction = null;
- }
- }
- }]);
-
- return Clipboard;
- }(_tinyEmitter2.default);
-
- /**
- * Helper function to retrieve attribute value.
- * @param {String} suffix
- * @param {Element} element
- */
- function getAttributeValue(suffix, element) {
- var attribute = 'data-clipboard-' + suffix;
-
- if (!element.hasAttribute(attribute)) {
- return;
- }
-
- return element.getAttribute(attribute);
- }
-
- module.exports = Clipboard;
- });
-
- /***/ },
- /* 177 */
- /***/ function(module, exports, __webpack_require__) {
-
- var core = __webpack_require__(8)
- , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
- module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
- return $JSON.stringify.apply($JSON, arguments);
- };
-
- /***/ },
- /* 178 */
- /***/ function(module, exports, __webpack_require__) {
-
- __webpack_require__(209);
- module.exports = __webpack_require__(8).Object.assign;
-
- /***/ },
- /* 179 */
- /***/ function(module, exports, __webpack_require__) {
-
- __webpack_require__(210);
- var $Object = __webpack_require__(8).Object;
- module.exports = function defineProperty(it, key, desc){
- return $Object.defineProperty(it, key, desc);
- };
-
- /***/ },
- /* 180 */
- /***/ function(module, exports, __webpack_require__) {
-
- __webpack_require__(211);
- __webpack_require__(213);
- __webpack_require__(214);
- __webpack_require__(212);
- module.exports = __webpack_require__(8).Promise;
-
- /***/ },
- /* 181 */
- /***/ function(module, exports) {
-
- module.exports = function(){ /* empty */ };
-
- /***/ },
- /* 182 */
- /***/ function(module, exports) {
-
- module.exports = function(it, Constructor, name, forbiddenField){
- if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
- throw TypeError(name + ': incorrect invocation!');
- } return it;
- };
-
- /***/ },
- /* 183 */
- /***/ function(module, exports, __webpack_require__) {
-
- // false -> Array#indexOf
- // true -> Array#includes
- var toIObject = __webpack_require__(59)
- , toLength = __webpack_require__(102)
- , toIndex = __webpack_require__(205);
- 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;
- };
- };
-
- /***/ },
- /* 184 */
- /***/ function(module, exports, __webpack_require__) {
-
- var ctx = __webpack_require__(39)
- , call = __webpack_require__(188)
- , isArrayIter = __webpack_require__(187)
- , anObject = __webpack_require__(13)
- , toLength = __webpack_require__(102)
- , getIterFn = __webpack_require__(207)
- , BREAK = {}
- , RETURN = {};
- var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){
- var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
- , f = ctx(fn, that, entries ? 2 : 1)
- , index = 0
- , length, step, iterator, result;
- if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
- // fast case for arrays with default iterator
- if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
- result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
- if(result === BREAK || result === RETURN)return result;
- } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
- result = call(iterator, f, step.value, entries);
- if(result === BREAK || result === RETURN)return result;
- }
- };
- exports.BREAK = BREAK;
- exports.RETURN = RETURN;
-
- /***/ },
- /* 185 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = !__webpack_require__(14) && !__webpack_require__(55)(function(){
- return Object.defineProperty(__webpack_require__(54)('div'), 'a', {get: function(){ return 7; }}).a != 7;
- });
-
- /***/ },
- /* 186 */
- /***/ function(module, exports) {
-
- // fast apply, http://jsperf.lnkit.com/fast-apply/5
- module.exports = function(fn, args, that){
- var un = that === undefined;
- switch(args.length){
- case 0: return un ? fn()
- : fn.call(that);
- case 1: return un ? fn(args[0])
- : fn.call(that, args[0]);
- case 2: return un ? fn(args[0], args[1])
- : fn.call(that, args[0], args[1]);
- case 3: return un ? fn(args[0], args[1], args[2])
- : fn.call(that, args[0], args[1], args[2]);
- case 4: return un ? fn(args[0], args[1], args[2], args[3])
- : fn.call(that, args[0], args[1], args[2], args[3]);
- } return fn.apply(that, args);
- };
-
- /***/ },
- /* 187 */
- /***/ function(module, exports, __webpack_require__) {
-
- // check on default Array iterator
- var Iterators = __webpack_require__(27)
- , ITERATOR = __webpack_require__(5)('iterator')
- , ArrayProto = Array.prototype;
-
- module.exports = function(it){
- return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
- };
-
- /***/ },
- /* 188 */
- /***/ function(module, exports, __webpack_require__) {
-
- // call something on iterator step with safe closing on error
- var anObject = __webpack_require__(13);
- module.exports = function(iterator, fn, value, entries){
- try {
- return entries ? fn(anObject(value)[0], value[1]) : fn(value);
- // 7.4.6 IteratorClose(iterator, completion)
- } catch(e){
- var ret = iterator['return'];
- if(ret !== undefined)anObject(ret.call(iterator));
- throw e;
- }
- };
-
- /***/ },
- /* 189 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var create = __webpack_require__(194)
- , descriptor = __webpack_require__(99)
- , setToStringTag = __webpack_require__(56)
- , IteratorPrototype = {};
-
- // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
- __webpack_require__(15)(IteratorPrototype, __webpack_require__(5)('iterator'), function(){ return this; });
-
- module.exports = function(Constructor, NAME, next){
- Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
- setToStringTag(Constructor, NAME + ' Iterator');
- };
-
- /***/ },
- /* 190 */
- /***/ function(module, exports, __webpack_require__) {
-
- var ITERATOR = __webpack_require__(5)('iterator')
- , SAFE_CLOSING = false;
-
- try {
- var riter = [7][ITERATOR]();
- riter['return'] = function(){ SAFE_CLOSING = true; };
- Array.from(riter, function(){ throw 2; });
- } catch(e){ /* empty */ }
-
- module.exports = function(exec, skipClosing){
- if(!skipClosing && !SAFE_CLOSING)return false;
- var safe = false;
- try {
- var arr = [7]
- , iter = arr[ITERATOR]();
- iter.next = function(){ return {done: safe = true}; };
- arr[ITERATOR] = function(){ return iter; };
- exec(arr);
- } catch(e){ /* empty */ }
- return safe;
- };
-
- /***/ },
- /* 191 */
- /***/ function(module, exports) {
-
- module.exports = function(done, value){
- return {value: value, done: !!done};
- };
-
- /***/ },
- /* 192 */
- /***/ function(module, exports, __webpack_require__) {
-
- var global = __webpack_require__(6)
- , macrotask = __webpack_require__(101).set
- , Observer = global.MutationObserver || global.WebKitMutationObserver
- , process = global.process
- , Promise = global.Promise
- , isNode = __webpack_require__(38)(process) == 'process';
-
- module.exports = function(){
- var head, last, notify;
-
- var flush = function(){
- var parent, fn;
- if(isNode && (parent = process.domain))parent.exit();
- while(head){
- fn = head.fn;
- head = head.next;
- try {
- fn();
- } catch(e){
- if(head)notify();
- else last = undefined;
- throw e;
- }
- } last = undefined;
- if(parent)parent.enter();
- };
-
- // Node.js
- if(isNode){
- notify = function(){
- process.nextTick(flush);
- };
- // browsers with MutationObserver
- } else if(Observer){
- var toggle = true
- , node = document.createTextNode('');
- new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
- notify = function(){
- node.data = toggle = !toggle;
- };
- // environments with maybe non-completely correct, but existent Promise
- } else if(Promise && Promise.resolve){
- var promise = Promise.resolve();
- notify = function(){
- promise.then(flush);
- };
- // for other environments - macrotask based on:
- // - setImmediate
- // - MessageChannel
- // - window.postMessag
- // - onreadystatechange
- // - setTimeout
- } else {
- notify = function(){
- // strange IE + webpack dev server bug - use .call(global)
- macrotask.call(global, flush);
- };
- }
-
- return function(fn){
- var task = {fn: fn, next: undefined};
- if(last)last.next = task;
- if(!head){
- head = task;
- notify();
- } last = task;
- };
- };
-
- /***/ },
- /* 193 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- // 19.1.2.1 Object.assign(target, source, ...)
- var getKeys = __webpack_require__(98)
- , gOPS = __webpack_require__(196)
- , pIE = __webpack_require__(199)
- , toObject = __webpack_require__(103)
- , IObject = __webpack_require__(95)
- , $assign = Object.assign;
-
- // should work with symbols and should have deterministic property order (V8 bug)
- module.exports = !$assign || __webpack_require__(55)(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;
-
- /***/ },
- /* 194 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
- var anObject = __webpack_require__(13)
- , dPs = __webpack_require__(195)
- , enumBugKeys = __webpack_require__(93)
- , IE_PROTO = __webpack_require__(57)('IE_PROTO')
- , Empty = function(){ /* empty */ }
- , PROTOTYPE = 'prototype';
-
- // Create object with fake `null` prototype: use iframe Object with cleared prototype
- var createDict = function(){
- // Thrash, waste and sodomy: IE GC bug
- var iframe = __webpack_require__(54)('iframe')
- , i = enumBugKeys.length
- , lt = '<'
- , gt = '>'
- , iframeDocument;
- iframe.style.display = 'none';
- __webpack_require__(94).appendChild(iframe);
- iframe.src = 'javascript:'; // eslint-disable-line no-script-url
- // createDict = iframe.contentWindow.Object;
- // html.removeChild(iframe);
- iframeDocument = iframe.contentWindow.document;
- iframeDocument.open();
- iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
- iframeDocument.close();
- createDict = iframeDocument.F;
- while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]];
- return createDict();
- };
-
- module.exports = Object.create || function create(O, Properties){
- var result;
- if(O !== null){
- Empty[PROTOTYPE] = anObject(O);
- result = new Empty;
- Empty[PROTOTYPE] = null;
- // add "__proto__" for Object.getPrototypeOf polyfill
- result[IE_PROTO] = O;
- } else result = createDict();
- return Properties === undefined ? result : dPs(result, Properties);
- };
-
-
- /***/ },
- /* 195 */
- /***/ function(module, exports, __webpack_require__) {
-
- var dP = __webpack_require__(28)
- , anObject = __webpack_require__(13)
- , getKeys = __webpack_require__(98);
-
- module.exports = __webpack_require__(14) ? Object.defineProperties : function defineProperties(O, Properties){
- anObject(O);
- var keys = getKeys(Properties)
- , length = keys.length
- , i = 0
- , P;
- while(length > i)dP.f(O, P = keys[i++], Properties[P]);
- return O;
- };
-
- /***/ },
- /* 196 */
- /***/ function(module, exports) {
-
- exports.f = Object.getOwnPropertySymbols;
-
- /***/ },
- /* 197 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
- var has = __webpack_require__(41)
- , toObject = __webpack_require__(103)
- , IE_PROTO = __webpack_require__(57)('IE_PROTO')
- , ObjectProto = Object.prototype;
-
- module.exports = Object.getPrototypeOf || function(O){
- O = toObject(O);
- if(has(O, IE_PROTO))return O[IE_PROTO];
- if(typeof O.constructor == 'function' && O instanceof O.constructor){
- return O.constructor.prototype;
- } return O instanceof Object ? ObjectProto : null;
- };
-
- /***/ },
- /* 198 */
- /***/ function(module, exports, __webpack_require__) {
-
- var has = __webpack_require__(41)
- , toIObject = __webpack_require__(59)
- , arrayIndexOf = __webpack_require__(183)(false)
- , IE_PROTO = __webpack_require__(57)('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;
- };
-
- /***/ },
- /* 199 */
- /***/ function(module, exports) {
-
- exports.f = {}.propertyIsEnumerable;
-
- /***/ },
- /* 200 */
- /***/ function(module, exports, __webpack_require__) {
-
- var hide = __webpack_require__(15);
- module.exports = function(target, src, safe){
- for(var key in src){
- if(safe && target[key])target[key] = src[key];
- else hide(target, key, src[key]);
- } return target;
- };
-
- /***/ },
- /* 201 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(15);
-
- /***/ },
- /* 202 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var global = __webpack_require__(6)
- , core = __webpack_require__(8)
- , dP = __webpack_require__(28)
- , DESCRIPTORS = __webpack_require__(14)
- , SPECIES = __webpack_require__(5)('species');
-
- module.exports = function(KEY){
- var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
- if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
- configurable: true,
- get: function(){ return this; }
- });
- };
-
- /***/ },
- /* 203 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 7.3.20 SpeciesConstructor(O, defaultConstructor)
- var anObject = __webpack_require__(13)
- , aFunction = __webpack_require__(52)
- , SPECIES = __webpack_require__(5)('species');
- module.exports = function(O, D){
- var C = anObject(O).constructor, S;
- return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
- };
-
- /***/ },
- /* 204 */
- /***/ function(module, exports, __webpack_require__) {
-
- var toInteger = __webpack_require__(58)
- , defined = __webpack_require__(53);
- // true -> String#at
- // false -> String#codePointAt
- module.exports = function(TO_STRING){
- return function(that, pos){
- var s = String(defined(that))
- , i = toInteger(pos)
- , l = s.length
- , a, b;
- if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
- a = s.charCodeAt(i);
- return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
- ? TO_STRING ? s.charAt(i) : a
- : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
- };
- };
-
- /***/ },
- /* 205 */
- /***/ function(module, exports, __webpack_require__) {
-
- var toInteger = __webpack_require__(58)
- , max = Math.max
- , min = Math.min;
- module.exports = function(index, length){
- index = toInteger(index);
- return index < 0 ? max(index + length, 0) : min(index, length);
- };
-
- /***/ },
- /* 206 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 7.1.1 ToPrimitive(input [, PreferredType])
- var isObject = __webpack_require__(42);
- // 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");
- };
-
- /***/ },
- /* 207 */
- /***/ function(module, exports, __webpack_require__) {
-
- var classof = __webpack_require__(92)
- , ITERATOR = __webpack_require__(5)('iterator')
- , Iterators = __webpack_require__(27);
- module.exports = __webpack_require__(8).getIteratorMethod = function(it){
- if(it != undefined)return it[ITERATOR]
- || it['@@iterator']
- || Iterators[classof(it)];
- };
-
- /***/ },
- /* 208 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var addToUnscopables = __webpack_require__(181)
- , step = __webpack_require__(191)
- , Iterators = __webpack_require__(27)
- , toIObject = __webpack_require__(59);
-
- // 22.1.3.4 Array.prototype.entries()
- // 22.1.3.13 Array.prototype.keys()
- // 22.1.3.29 Array.prototype.values()
- // 22.1.3.30 Array.prototype[@@iterator]()
- module.exports = __webpack_require__(96)(Array, 'Array', function(iterated, kind){
- this._t = toIObject(iterated); // target
- this._i = 0; // next index
- this._k = kind; // kind
- // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
- }, function(){
- var O = this._t
- , kind = this._k
- , index = this._i++;
- if(!O || index >= O.length){
- this._t = undefined;
- return step(1);
- }
- if(kind == 'keys' )return step(0, index);
- if(kind == 'values')return step(0, O[index]);
- return step(0, [index, O[index]]);
- }, 'values');
-
- // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
- Iterators.Arguments = Iterators.Array;
-
- addToUnscopables('keys');
- addToUnscopables('values');
- addToUnscopables('entries');
-
- /***/ },
- /* 209 */
- /***/ function(module, exports, __webpack_require__) {
-
- // 19.1.3.1 Object.assign(target, source)
- var $export = __webpack_require__(40);
-
- $export($export.S + $export.F, 'Object', {assign: __webpack_require__(193)});
-
- /***/ },
- /* 210 */
- /***/ function(module, exports, __webpack_require__) {
-
- var $export = __webpack_require__(40);
- // 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__(28).f});
-
- /***/ },
- /* 211 */
- /***/ function(module, exports) {
-
-
-
- /***/ },
- /* 212 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var LIBRARY = __webpack_require__(97)
- , global = __webpack_require__(6)
- , ctx = __webpack_require__(39)
- , classof = __webpack_require__(92)
- , $export = __webpack_require__(40)
- , isObject = __webpack_require__(42)
- , aFunction = __webpack_require__(52)
- , anInstance = __webpack_require__(182)
- , forOf = __webpack_require__(184)
- , speciesConstructor = __webpack_require__(203)
- , task = __webpack_require__(101).set
- , microtask = __webpack_require__(192)()
- , PROMISE = 'Promise'
- , TypeError = global.TypeError
- , process = global.process
- , $Promise = global[PROMISE]
- , process = global.process
- , isNode = classof(process) == 'process'
- , empty = function(){ /* empty */ }
- , Internal, GenericPromiseCapability, Wrapper;
-
- var USE_NATIVE = !!function(){
- try {
- // correct subclassing with @@species support
- var promise = $Promise.resolve(1)
- , FakePromise = (promise.constructor = {})[__webpack_require__(5)('species')] = function(exec){ exec(empty, empty); };
- // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
- return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
- } catch(e){ /* empty */ }
- }();
-
- // helpers
- var sameConstructor = function(a, b){
- // with library wrapper special case
- return a === b || a === $Promise && b === Wrapper;
- };
- var isThenable = function(it){
- var then;
- return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
- };
- var newPromiseCapability = function(C){
- return sameConstructor($Promise, C)
- ? new PromiseCapability(C)
- : new GenericPromiseCapability(C);
- };
- var PromiseCapability = GenericPromiseCapability = function(C){
- var resolve, reject;
- this.promise = new C(function($$resolve, $$reject){
- if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
- resolve = $$resolve;
- reject = $$reject;
- });
- this.resolve = aFunction(resolve);
- this.reject = aFunction(reject);
- };
- var perform = function(exec){
- try {
- exec();
- } catch(e){
- return {error: e};
- }
- };
- var notify = function(promise, isReject){
- if(promise._n)return;
- promise._n = true;
- var chain = promise._c;
- microtask(function(){
- var value = promise._v
- , ok = promise._s == 1
- , i = 0;
- var run = function(reaction){
- var handler = ok ? reaction.ok : reaction.fail
- , resolve = reaction.resolve
- , reject = reaction.reject
- , domain = reaction.domain
- , result, then;
- try {
- if(handler){
- if(!ok){
- if(promise._h == 2)onHandleUnhandled(promise);
- promise._h = 1;
- }
- if(handler === true)result = value;
- else {
- if(domain)domain.enter();
- result = handler(value);
- if(domain)domain.exit();
- }
- if(result === reaction.promise){
- reject(TypeError('Promise-chain cycle'));
- } else if(then = isThenable(result)){
- then.call(result, resolve, reject);
- } else resolve(result);
- } else reject(value);
- } catch(e){
- reject(e);
- }
- };
- while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
- promise._c = [];
- promise._n = false;
- if(isReject && !promise._h)onUnhandled(promise);
- });
- };
- var onUnhandled = function(promise){
- task.call(global, function(){
- var value = promise._v
- , abrupt, handler, console;
- if(isUnhandled(promise)){
- abrupt = perform(function(){
- if(isNode){
- process.emit('unhandledRejection', value, promise);
- } else if(handler = global.onunhandledrejection){
- handler({promise: promise, reason: value});
- } else if((console = global.console) && console.error){
- console.error('Unhandled promise rejection', value);
- }
- });
- // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
- promise._h = isNode || isUnhandled(promise) ? 2 : 1;
- } promise._a = undefined;
- if(abrupt)throw abrupt.error;
- });
- };
- var isUnhandled = function(promise){
- if(promise._h == 1)return false;
- var chain = promise._a || promise._c
- , i = 0
- , reaction;
- while(chain.length > i){
- reaction = chain[i++];
- if(reaction.fail || !isUnhandled(reaction.promise))return false;
- } return true;
- };
- var onHandleUnhandled = function(promise){
- task.call(global, function(){
- var handler;
- if(isNode){
- process.emit('rejectionHandled', promise);
- } else if(handler = global.onrejectionhandled){
- handler({promise: promise, reason: promise._v});
- }
- });
- };
- var $reject = function(value){
- var promise = this;
- if(promise._d)return;
- promise._d = true;
- promise = promise._w || promise; // unwrap
- promise._v = value;
- promise._s = 2;
- if(!promise._a)promise._a = promise._c.slice();
- notify(promise, true);
- };
- var $resolve = function(value){
- var promise = this
- , then;
- if(promise._d)return;
- promise._d = true;
- promise = promise._w || promise; // unwrap
- try {
- if(promise === value)throw TypeError("Promise can't be resolved itself");
- if(then = isThenable(value)){
- microtask(function(){
- var wrapper = {_w: promise, _d: false}; // wrap
- try {
- then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
- } catch(e){
- $reject.call(wrapper, e);
- }
- });
- } else {
- promise._v = value;
- promise._s = 1;
- notify(promise, false);
- }
- } catch(e){
- $reject.call({_w: promise, _d: false}, e); // wrap
- }
- };
-
- // constructor polyfill
- if(!USE_NATIVE){
- // 25.4.3.1 Promise(executor)
- $Promise = function Promise(executor){
- anInstance(this, $Promise, PROMISE, '_h');
- aFunction(executor);
- Internal.call(this);
- try {
- executor(ctx($resolve, this, 1), ctx($reject, this, 1));
- } catch(err){
- $reject.call(this, err);
- }
- };
- Internal = function Promise(executor){
- this._c = []; // <- awaiting reactions
- this._a = undefined; // <- checked in isUnhandled reactions
- this._s = 0; // <- state
- this._d = false; // <- done
- this._v = undefined; // <- value
- this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
- this._n = false; // <- notify
- };
- Internal.prototype = __webpack_require__(200)($Promise.prototype, {
- // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
- then: function then(onFulfilled, onRejected){
- var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
- reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
- reaction.fail = typeof onRejected == 'function' && onRejected;
- reaction.domain = isNode ? process.domain : undefined;
- this._c.push(reaction);
- if(this._a)this._a.push(reaction);
- if(this._s)notify(this, false);
- return reaction.promise;
- },
- // 25.4.5.1 Promise.prototype.catch(onRejected)
- 'catch': function(onRejected){
- return this.then(undefined, onRejected);
- }
- });
- PromiseCapability = function(){
- var promise = new Internal;
- this.promise = promise;
- this.resolve = ctx($resolve, promise, 1);
- this.reject = ctx($reject, promise, 1);
- };
- }
-
- $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
- __webpack_require__(56)($Promise, PROMISE);
- __webpack_require__(202)(PROMISE);
- Wrapper = __webpack_require__(8)[PROMISE];
-
- // statics
- $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
- // 25.4.4.5 Promise.reject(r)
- reject: function reject(r){
- var capability = newPromiseCapability(this)
- , $$reject = capability.reject;
- $$reject(r);
- return capability.promise;
- }
- });
- $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
- // 25.4.4.6 Promise.resolve(x)
- resolve: function resolve(x){
- // instanceof instead of internal slot check because we should fix it without replacement native Promise core
- if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
- var capability = newPromiseCapability(this)
- , $$resolve = capability.resolve;
- $$resolve(x);
- return capability.promise;
- }
- });
- $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(190)(function(iter){
- $Promise.all(iter)['catch'](empty);
- })), PROMISE, {
- // 25.4.4.1 Promise.all(iterable)
- all: function all(iterable){
- var C = this
- , capability = newPromiseCapability(C)
- , resolve = capability.resolve
- , reject = capability.reject;
- var abrupt = perform(function(){
- var values = []
- , index = 0
- , remaining = 1;
- forOf(iterable, false, function(promise){
- var $index = index++
- , alreadyCalled = false;
- values.push(undefined);
- remaining++;
- C.resolve(promise).then(function(value){
- if(alreadyCalled)return;
- alreadyCalled = true;
- values[$index] = value;
- --remaining || resolve(values);
- }, reject);
- });
- --remaining || resolve(values);
- });
- if(abrupt)reject(abrupt.error);
- return capability.promise;
- },
- // 25.4.4.4 Promise.race(iterable)
- race: function race(iterable){
- var C = this
- , capability = newPromiseCapability(C)
- , reject = capability.reject;
- var abrupt = perform(function(){
- forOf(iterable, false, function(promise){
- C.resolve(promise).then(capability.resolve, reject);
- });
- });
- if(abrupt)reject(abrupt.error);
- return capability.promise;
- }
- });
-
- /***/ },
- /* 213 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
- var $at = __webpack_require__(204)(true);
-
- // 21.1.3.27 String.prototype[@@iterator]()
- __webpack_require__(96)(String, 'String', function(iterated){
- this._t = String(iterated); // target
- this._i = 0; // next index
- // 21.1.5.2.1 %StringIteratorPrototype%.next()
- }, function(){
- var O = this._t
- , index = this._i
- , point;
- if(index >= O.length)return {value: undefined, done: true};
- point = $at(O, index);
- this._i += point.length;
- return {value: point, done: false};
- });
-
- /***/ },
- /* 214 */
- /***/ function(module, exports, __webpack_require__) {
-
- __webpack_require__(208);
- var global = __webpack_require__(6)
- , hide = __webpack_require__(15)
- , Iterators = __webpack_require__(27)
- , TO_STRING_TAG = __webpack_require__(5)('toStringTag');
-
- for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
- var NAME = collections[i]
- , Collection = global[NAME]
- , proto = Collection && Collection.prototype;
- if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
- Iterators[NAME] = Iterators.Array;
- }
-
- /***/ },
- /* 215 */,
- /* 216 */,
- /* 217 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n#fingerprint {\n min-width: 90px;\n text-align: center;\n background-color: transparent;\n color: white;\n}\n#fingerprint i {\n color: black;\n position: relative;\n padding: 0;\n text-shadow: 1px 1px 0 white;\n font-size: 1.3em;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 218 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n#passwords {\n max-height: 320px;\n overflow-y: scroll;\n overflow-x: hidden;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 219 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n#password-generator {\n color: #555;\n}\n.inner-addon i {\n position: absolute;\n padding: 10px;\n pointer-events: none;\n z-index: 10;\n}\n.inner-addon {\n position: relative;\n}\n.left-addon i {\n left: 0;\n}\n.right-addon i {\n right: 0;\n}\n.left-addon input {\n padding-left: 30px;\n}\n.right-addon input {\n padding-right: 30px;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 220 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n#lesspass .white-link {\n color: white;\n}\n#lesspass .white-link:hover, #lesspass .white-link:focus, #lesspass .white-link:active {\n text-decoration: none;\n color: white;\n}\n#lesspass, #lesspass * {\n border-radius: 0 !important;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 221 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n.fa-white {\n color: #ffffff;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 222 */
- /***/ function(module, exports, __webpack_require__) {
-
- exports = module.exports = __webpack_require__(17)();
- // imports
-
-
- // module
- exports.push([module.i, "\n.card-header-dark {\n background-color: #555;\n border-color: #555;\n color: #FFF;\n}\n.grey-link {\n color: #373a3c;\n text-decoration: none;\n}\n.grey-link:hover, .grey-link:focus, .grey-link:active {\n color: #373a3c;\n text-decoration: none;\n}\n.white-link {\n color: white;\n}\n.white-link:hover, .white-link:focus, .white-link:active {\n text-decoration: none;\n color: white;\n}\n.fa-clickable {\n cursor: pointer;\n}\n", ""]);
-
- // exports
-
-
- /***/ },
- /* 223 */
- /***/ function(module, exports) {
-
- /**
- * A polyfill for Element.matches()
- */
- if (Element && !Element.prototype.matches) {
- var proto = Element.prototype;
-
- proto.matches = proto.matchesSelector ||
- proto.mozMatchesSelector ||
- proto.msMatchesSelector ||
- proto.oMatchesSelector ||
- proto.webkitMatchesSelector;
- }
-
- /**
- * Finds the closest parent that matches a selector.
- *
- * @param {Element} element
- * @param {String} selector
- * @return {Function}
- */
- function closest (element, selector) {
- while (element && element !== document) {
- if (element.matches(selector)) return element;
- element = element.parentNode;
- }
- }
-
- module.exports = closest;
-
-
- /***/ },
- /* 224 */
- /***/ function(module, exports, __webpack_require__) {
-
- var closest = __webpack_require__(223);
-
- /**
- * Delegates event to a selector.
- *
- * @param {Element} element
- * @param {String} selector
- * @param {String} type
- * @param {Function} callback
- * @param {Boolean} useCapture
- * @return {Object}
- */
- function delegate(element, selector, type, callback, useCapture) {
- var listenerFn = listener.apply(this, arguments);
-
- element.addEventListener(type, listenerFn, useCapture);
-
- return {
- destroy: function() {
- element.removeEventListener(type, listenerFn, useCapture);
- }
- }
- }
-
- /**
- * Finds closest match and invokes callback.
- *
- * @param {Element} element
- * @param {String} selector
- * @param {String} type
- * @param {Function} callback
- * @return {Function}
- */
- function listener(element, selector, type, callback) {
- return function(e) {
- e.delegateTarget = closest(e.target, selector);
-
- if (e.delegateTarget) {
- callback.call(element, e);
- }
- }
- }
-
- module.exports = delegate;
-
-
- /***/ },
- /* 225 */,
- /* 226 */,
- /* 227 */,
- /* 228 */,
- /* 229 */,
- /* 230 */,
- /* 231 */,
- /* 232 */,
- /* 233 */,
- /* 234 */,
- /* 235 */,
- /* 236 */,
- /* 237 */,
- /* 238 */,
- /* 239 */,
- /* 240 */,
- /* 241 */,
- /* 242 */,
- /* 243 */,
- /* 244 */,
- /* 245 */,
- /* 246 */
- /***/ function(module, exports) {
-
- /**
- * Check if argument is a HTML element.
- *
- * @param {Object} value
- * @return {Boolean}
- */
- exports.node = function(value) {
- return value !== undefined
- && value instanceof HTMLElement
- && value.nodeType === 1;
- };
-
- /**
- * Check if argument is a list of HTML elements.
- *
- * @param {Object} value
- * @return {Boolean}
- */
- exports.nodeList = function(value) {
- var type = Object.prototype.toString.call(value);
-
- return value !== undefined
- && (type === '[object NodeList]' || type === '[object HTMLCollection]')
- && ('length' in value)
- && (value.length === 0 || exports.node(value[0]));
- };
-
- /**
- * Check if argument is a string.
- *
- * @param {Object} value
- * @return {Boolean}
- */
- exports.string = function(value) {
- return typeof value === 'string'
- || value instanceof String;
- };
-
- /**
- * Check if argument is a function.
- *
- * @param {Object} value
- * @return {Boolean}
- */
- exports.fn = function(value) {
- var type = Object.prototype.toString.call(value);
-
- return type === '[object Function]';
- };
-
-
- /***/ },
- /* 247 */
- /***/ function(module, exports, __webpack_require__) {
-
- var is = __webpack_require__(246);
- var delegate = __webpack_require__(224);
-
- /**
- * Validates all params and calls the right
- * listener function based on its target type.
- *
- * @param {String|HTMLElement|HTMLCollection|NodeList} target
- * @param {String} type
- * @param {Function} callback
- * @return {Object}
- */
- function listen(target, type, callback) {
- if (!target && !type && !callback) {
- throw new Error('Missing required arguments');
- }
-
- if (!is.string(type)) {
- throw new TypeError('Second argument must be a String');
- }
-
- if (!is.fn(callback)) {
- throw new TypeError('Third argument must be a Function');
- }
-
- if (is.node(target)) {
- return listenNode(target, type, callback);
- }
- else if (is.nodeList(target)) {
- return listenNodeList(target, type, callback);
- }
- else if (is.string(target)) {
- return listenSelector(target, type, callback);
- }
- else {
- throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');
- }
- }
-
- /**
- * Adds an event listener to a HTML element
- * and returns a remove listener function.
- *
- * @param {HTMLElement} node
- * @param {String} type
- * @param {Function} callback
- * @return {Object}
- */
- function listenNode(node, type, callback) {
- node.addEventListener(type, callback);
-
- return {
- destroy: function() {
- node.removeEventListener(type, callback);
- }
- }
- }
-
- /**
- * Add an event listener to a list of HTML elements
- * and returns a remove listener function.
- *
- * @param {NodeList|HTMLCollection} nodeList
- * @param {String} type
- * @param {Function} callback
- * @return {Object}
- */
- function listenNodeList(nodeList, type, callback) {
- Array.prototype.forEach.call(nodeList, function(node) {
- node.addEventListener(type, callback);
- });
-
- return {
- destroy: function() {
- Array.prototype.forEach.call(nodeList, function(node) {
- node.removeEventListener(type, callback);
- });
- }
- }
- }
-
- /**
- * Add an event listener to a selector
- * and returns a remove listener function.
- *
- * @param {String} selector
- * @param {String} type
- * @param {Function} callback
- * @return {Object}
- */
- function listenSelector(selector, type, callback) {
- return delegate(document.body, selector, type, callback);
- }
-
- module.exports = listen;
-
-
- /***/ },
- /* 248 */,
- /* 249 */,
- /* 250 */,
- /* 251 */,
- /* 252 */,
- /* 253 */,
- /* 254 */,
- /* 255 */,
- /* 256 */,
- /* 257 */,
- /* 258 */
- /***/ function(module, exports) {
-
- /**
- * The code was extracted from:
- * https://github.com/davidchambers/Base64.js
- */
-
- var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
-
- function InvalidCharacterError(message) {
- this.message = message;
- }
-
- InvalidCharacterError.prototype = new Error();
- InvalidCharacterError.prototype.name = 'InvalidCharacterError';
-
- function polyfill (input) {
- var str = String(input).replace(/=+$/, '');
- if (str.length % 4 == 1) {
- throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
- }
- for (
- // initialize result and counters
- var bc = 0, bs, buffer, idx = 0, output = '';
- // get next character
- buffer = str.charAt(idx++);
- // character found in table? initialize bit storage and add its ascii value;
- ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
- // and if not first of each 4 characters,
- // convert the first 8 bits to one ascii character
- bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
- ) {
- // try to find character in table (0-63, not found => -1)
- buffer = chars.indexOf(buffer);
- }
- return output;
- }
-
-
- module.exports = typeof window !== 'undefined' && window.atob && window.atob.bind(window) || polyfill;
-
-
- /***/ },
- /* 259 */
- /***/ function(module, exports, __webpack_require__) {
-
- var atob = __webpack_require__(258);
-
- function b64DecodeUnicode(str) {
- return decodeURIComponent(atob(str).replace(/(.)/g, function (m, p) {
- var code = p.charCodeAt(0).toString(16).toUpperCase();
- if (code.length < 2) {
- code = '0' + code;
- }
- return '%' + code;
- }));
- }
-
- module.exports = function(str) {
- var output = str.replace(/-/g, "+").replace(/_/g, "/");
- switch (output.length % 4) {
- case 0:
- break;
- case 2:
- output += "==";
- break;
- case 3:
- output += "=";
- break;
- default:
- throw "Illegal base64url string!";
- }
-
- try{
- return b64DecodeUnicode(output);
- } catch (err) {
- return atob(output);
- }
- };
-
-
- /***/ },
- /* 260 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var base64_url_decode = __webpack_require__(259);
-
- module.exports = function (token,options) {
- if (typeof token !== 'string') {
- throw new Error('Invalid token specified');
- }
-
- options = options || {};
- var pos = options.header === true ? 0 : 1;
- return JSON.parse(base64_url_decode(token.split('.')[pos]));
- };
-
-
- /***/ },
- /* 261 */
- /***/ function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(global) {/**
- * lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors <https://jquery.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
- /** Used as the `TypeError` message for "Functions" methods. */
- var FUNC_ERROR_TEXT = 'Expected a function';
-
- /** Used as references for various `Number` constants. */
- var NAN = 0 / 0;
-
- /** `Object#toString` result references. */
- var symbolTag = '[object Symbol]';
-
- /** Used to match leading and trailing whitespace. */
- var reTrim = /^\s+|\s+$/g;
-
- /** Used to detect bad signed hexadecimal string values. */
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
- /** Used to detect binary string values. */
- var reIsBinary = /^0b[01]+$/i;
-
- /** Used to detect octal string values. */
- var reIsOctal = /^0o[0-7]+$/i;
-
- /** Built-in method references without a dependency on `root`. */
- var freeParseInt = parseInt;
-
- /** Detect free variable `global` from Node.js. */
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
- /** Detect free variable `self`. */
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
- /** Used as a reference to the global object. */
- var root = freeGlobal || freeSelf || Function('return this')();
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var objectToString = objectProto.toString;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeMax = Math.max,
- nativeMin = Math.min;
-
- /**
- * Gets the timestamp of the number of milliseconds that have elapsed since
- * the Unix epoch (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Date
- * @returns {number} Returns the timestamp.
- * @example
- *
- * _.defer(function(stamp) {
- * console.log(_.now() - stamp);
- * }, _.now());
- * // => Logs the number of milliseconds it took for the deferred invocation.
- */
- var now = function() {
- return root.Date.now();
- };
-
- /**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed `func` invocations and a `flush` method to immediately invoke them.
- * Provide `options` to indicate whether `func` should be invoked on the
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
- * with the last arguments provided to the debounced function. Subsequent
- * calls to the debounced function return the result of the last `func`
- * invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the debounced function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=false]
- * Specify invoking on the leading edge of the timeout.
- * @param {number} [options.maxWait]
- * The maximum time `func` is allowed to be delayed before it's invoked.
- * @param {boolean} [options.trailing=true]
- * Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // Avoid costly calculations while the window size is in flux.
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
- * 'leading': true,
- * 'trailing': false
- * }));
- *
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', debounced);
- *
- * // Cancel the trailing debounced invocation.
- * jQuery(window).on('popstate', debounced.cancel);
- */
- function debounce(func, wait, options) {
- var lastArgs,
- lastThis,
- maxWait,
- result,
- timerId,
- lastCallTime,
- lastInvokeTime = 0,
- leading = false,
- maxing = false,
- trailing = true;
-
- if (typeof func != 'function') {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- wait = toNumber(wait) || 0;
- if (isObject(options)) {
- leading = !!options.leading;
- maxing = 'maxWait' in options;
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
- trailing = 'trailing' in options ? !!options.trailing : trailing;
- }
-
- function invokeFunc(time) {
- var args = lastArgs,
- thisArg = lastThis;
-
- lastArgs = lastThis = undefined;
- lastInvokeTime = time;
- result = func.apply(thisArg, args);
- return result;
- }
-
- function leadingEdge(time) {
- // Reset any `maxWait` timer.
- lastInvokeTime = time;
- // Start the timer for the trailing edge.
- timerId = setTimeout(timerExpired, wait);
- // Invoke the leading edge.
- return leading ? invokeFunc(time) : result;
- }
-
- function remainingWait(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime,
- result = wait - timeSinceLastCall;
-
- return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;
- }
-
- function shouldInvoke(time) {
- var timeSinceLastCall = time - lastCallTime,
- timeSinceLastInvoke = time - lastInvokeTime;
-
- // Either this is the first call, activity has stopped and we're at the
- // trailing edge, the system time has gone backwards and we're treating
- // it as the trailing edge, or we've hit the `maxWait` limit.
- return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
- (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
- }
-
- function timerExpired() {
- var time = now();
- if (shouldInvoke(time)) {
- return trailingEdge(time);
- }
- // Restart the timer.
- timerId = setTimeout(timerExpired, remainingWait(time));
- }
-
- function trailingEdge(time) {
- timerId = undefined;
-
- // Only invoke if we have `lastArgs` which means `func` has been
- // debounced at least once.
- if (trailing && lastArgs) {
- return invokeFunc(time);
- }
- lastArgs = lastThis = undefined;
- return result;
- }
-
- function cancel() {
- if (timerId !== undefined) {
- clearTimeout(timerId);
- }
- lastInvokeTime = 0;
- lastArgs = lastCallTime = lastThis = timerId = undefined;
- }
-
- function flush() {
- return timerId === undefined ? result : trailingEdge(now());
- }
-
- function debounced() {
- var time = now(),
- isInvoking = shouldInvoke(time);
-
- lastArgs = arguments;
- lastThis = this;
- lastCallTime = time;
-
- if (isInvoking) {
- if (timerId === undefined) {
- return leadingEdge(lastCallTime);
- }
- if (maxing) {
- // Handle invocations in a tight loop.
- timerId = setTimeout(timerExpired, wait);
- return invokeFunc(lastCallTime);
- }
- }
- if (timerId === undefined) {
- timerId = setTimeout(timerExpired, wait);
- }
- return result;
- }
- debounced.cancel = cancel;
- debounced.flush = flush;
- return debounced;
- }
-
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
- }
-
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return !!value && typeof value == 'object';
- }
-
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && objectToString.call(value) == symbolTag);
- }
-
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
- }
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
- }
-
- module.exports = debounce;
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32)))
-
- /***/ },
- /* 262 */,
- /* 263 */,
- /* 264 */,
- /* 265 */,
- /* 266 */,
- /* 267 */,
- /* 268 */,
- /* 269 */,
- /* 270 */,
- /* 271 */,
- /* 272 */,
- /* 273 */,
- /* 274 */,
- /* 275 */
- /***/ function(module, exports) {
-
- function select(element) {
- var selectedText;
-
- if (element.nodeName === 'SELECT') {
- element.focus();
-
- selectedText = element.value;
- }
- else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
- element.focus();
- element.setSelectionRange(0, element.value.length);
-
- selectedText = element.value;
- }
- else {
- if (element.hasAttribute('contenteditable')) {
- element.focus();
- }
-
- var selection = window.getSelection();
- var range = document.createRange();
-
- range.selectNodeContents(element);
- selection.removeAllRanges();
- selection.addRange(range);
-
- selectedText = selection.toString();
- }
-
- return selectedText;
- }
-
- module.exports = select;
-
-
- /***/ },
- /* 276 */,
- /* 277 */,
- /* 278 */,
- /* 279 */,
- /* 280 */,
- /* 281 */
- /***/ function(module, exports) {
-
- function E () {
- // Keep this empty so it's easier to inherit from
- // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
- }
-
- E.prototype = {
- on: function (name, callback, ctx) {
- var e = this.e || (this.e = {});
-
- (e[name] || (e[name] = [])).push({
- fn: callback,
- ctx: ctx
- });
-
- return this;
- },
-
- once: function (name, callback, ctx) {
- var self = this;
- function listener () {
- self.off(name, listener);
- callback.apply(ctx, arguments);
- };
-
- listener._ = callback
- return this.on(name, listener, ctx);
- },
-
- emit: function (name) {
- var data = [].slice.call(arguments, 1);
- var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
- var i = 0;
- var len = evtArr.length;
-
- for (i; i < len; i++) {
- evtArr[i].fn.apply(evtArr[i].ctx, data);
- }
-
- return this;
- },
-
- off: function (name, callback) {
- var e = this.e || (this.e = {});
- var evts = e[name];
- var liveEvents = [];
-
- if (evts && callback) {
- for (var i = 0, len = evts.length; i < len; i++) {
- if (evts[i].fn !== callback && evts[i].fn._ !== callback)
- liveEvents.push(evts[i]);
- }
- }
-
- // Remove event from queue to prevent memory leak
- // Suggested by https://github.com/lazd
- // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
-
- (liveEvents.length)
- ? e[name] = liveEvents
- : delete e[name];
-
- return this;
- }
- };
-
- module.exports = E;
-
-
- /***/ },
- /* 282 */,
- /* 283 */,
- /* 284 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(308)
-
- /* script */
- __vue_exports__ = __webpack_require__(151)
-
- /* template */
- var __vue_template__ = __webpack_require__(300)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 285 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(304)
-
- /* script */
- __vue_exports__ = __webpack_require__(152)
-
- /* template */
- var __vue_template__ = __webpack_require__(295)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 286 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(309)
-
- /* script */
- __vue_exports__ = __webpack_require__(153)
-
- /* template */
- var __vue_template__ = __webpack_require__(302)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 287 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* template */
- var __vue_template__ = __webpack_require__(293)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 288 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* script */
- __vue_exports__ = __webpack_require__(154)
-
- /* template */
- var __vue_template__ = __webpack_require__(294)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 289 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(306)
-
- /* script */
- __vue_exports__ = __webpack_require__(155)
-
- /* template */
- var __vue_template__ = __webpack_require__(297)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 290 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* script */
- __vue_exports__ = __webpack_require__(156)
-
- /* template */
- var __vue_template__ = __webpack_require__(299)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 291 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* script */
- __vue_exports__ = __webpack_require__(157)
-
- /* template */
- var __vue_template__ = __webpack_require__(301)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 292 */
- /***/ function(module, exports, __webpack_require__) {
-
- var __vue_exports__, __vue_options__
-
- /* styles */
- __webpack_require__(305)
-
- /* script */
- __vue_exports__ = __webpack_require__(158)
-
- /* template */
- var __vue_template__ = __webpack_require__(296)
- __vue_options__ = __vue_exports__ = __vue_exports__ || {}
- if (
- typeof __vue_exports__.default === "object" ||
- typeof __vue_exports__.default === "function"
- ) {
- __vue_options__ = __vue_exports__ = __vue_exports__.default
- }
- if (typeof __vue_options__ === "function") {
- __vue_options__ = __vue_options__.options
- }
-
- __vue_options__.render = __vue_template__.render
- __vue_options__.staticRenderFns = __vue_template__.staticRenderFns
-
- module.exports = __vue_exports__
-
-
- /***/ },
- /* 293 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _m(0)
- }},staticRenderFns: [function (){with(this) {
- return _h('div', {
- attrs: {
- "style": "display: none;"
- }
- }, [_h('label', {
- attrs: {
- "for": "username"
- }
- }, [_h('input', {
- attrs: {
- "type": "text",
- "id": "username",
- "name": "username",
- "autocomplete": "username"
- }
- })]), " ", _h('label', {
- attrs: {
- "for": "password"
- }
- }, [_h('input', {
- attrs: {
- "type": "password",
- "id": "password",
- "name": "password",
- "autocomplete": "current-password"
- }
- })])])
- }}]}
-
- /***/ },
- /* 294 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('form', [(showError) ? _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12 text-muted text-danger"
- }, ["\n " + _s(errorMessage) + "\n "])]) : _e(), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(0), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (email),
- expression: "email"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "email",
- "name": "login",
- "type": "email",
- "placeholder": "Email",
- "required": ""
- },
- domProps: {
- "value": _s(email)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- email = $event.target.value
- }
- }
- }), " ", _h('small', {
- staticClass: "form-text text-muted text-danger"
- }, [(errors.userNameAlreadyExist) ? _h('span', ["Someone already use that username. Do you want to sign in ?"]) : _e(), " ", (errors.emailRequired) ? _h('span', ["An email is required"]) : _e()])])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(1), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password),
- expression: "password"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "password",
- "name": "password",
- "type": "password",
- "required": "",
- "placeholder": "LessPass password"
- },
- domProps: {
- "value": _s(password)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- password = $event.target.value
- }
- }
- }), " ", _h('small', {
- staticClass: "form-text text-muted"
- }, [(noErrors()) ? _h('span', {
- staticClass: "text-warning"
- }, ["Do not use your master password here"]) : _e(), " ", (errors.passwordRequired) ? _h('span', {
- staticClass: "text-danger"
- }, ["A password is required"]) : _e()])])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12 hint--bottom",
- attrs: {
- "aria-label": "You can use your self hosted LessPass Database"
- }
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(2), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (baseURL),
- expression: "baseURL"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "baseURL",
- "type": "text",
- "placeholder": "LessPass Database (https://...)"
- },
- domProps: {
- "value": _s(baseURL)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- baseURL = $event.target.value
- }
- }
- }), " ", _h('small', {
- staticClass: "form-text text-muted"
- }, [(noErrors()) ? _h('span', ["You can use your self hosted LessPass Database"]) : _e(), " ", (errors.baseURLRequired) ? _h('span', {
- staticClass: "text-danger"
- }, ["\n A LessPass database url is required\n "]) : _e()])])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('button', {
- staticClass: "btn btn-primary",
- attrs: {
- "id": "signInButton",
- "type": "button"
- },
- on: {
- "click": signIn
- }
- }, [(loadingSignIn) ? _h('span', [_m(3)]) : _e(), "\n Sign In\n "]), " ", _h('button', {
- staticClass: "btn btn-secondary",
- attrs: {
- "id": "registerButton",
- "type": "button"
- },
- on: {
- "click": register
- }
- }, [(loadingRegister) ? _h('span', [_m(4)]) : _e(), "\n Register\n "])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('router-link', {
- attrs: {
- "to": {
- name: 'passwordReset'
- }
- }
- }, ["\n Forgot you password ?\n "])])])])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-user"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-lock"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-globe"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-spinner fa-pulse fa-fw"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-spinner fa-pulse fa-fw"
- })
- }}]}
-
- /***/ },
- /* 295 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return (fingerprint) ? _h('span', {
- staticClass: "input-group-btn"
- }, [_h('button', {
- staticClass: "btn",
- attrs: {
- "id": "fingerprint",
- "type": "button",
- "tabindex": "-1"
- }
- }, [_h('small', {
- staticClass: "hint--left",
- attrs: {
- "aria-label": "master password fingerprint"
- }
- }, [_h('i', {
- staticClass: "fa fa-fw",
- class: [icon1],
- style: ({
- color: color1
- })
- }), " ", _h('i', {
- staticClass: "fa fa-fw",
- class: [icon2],
- style: ({
- color: color2
- })
- }), " ", _h('i', {
- staticClass: "fa fa-fw",
- class: [icon3],
- style: ({
- color: color3
- })
- })])])]) : _e()
- }},staticRenderFns: []}
-
- /***/ },
- /* 296 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('div', [_h('form', [_h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-sm-7"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(0), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (searchQuery),
- expression: "searchQuery"
- }],
- staticClass: "form-control",
- attrs: {
- "name": "search",
- "placeholder": "Search"
- },
- domProps: {
- "value": _s(searchQuery)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- searchQuery = $event.target.value
- }
- }
- })])])])]), " ", _h('div', {
- staticClass: "row",
- attrs: {
- "id": "passwords"
- }
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('table', {
- staticClass: "table"
- }, [_h('tbody', [(passwords.length === 0) ? _h('tr', [_h('td', ["\n You don't have any passwords saved in your database.\n ", _m(1), " ", _h('router-link', {
- attrs: {
- "to": {
- name: 'home'
- }
- }
- }, ["Would you like to create one ?"])])]) : _e(), " ", _l((passwords), function(password) {
- return _h('tr', [_h('td', [_h('router-link', {
- attrs: {
- "to": {
- name: 'password',
- params: {
- id: password.id
- }
- }
- }
- }, ["\n " + _s(password.site) + "\n "]), " ", _m(2, true), "\n " + _s(password.login) + "\n "]), " ", _h('td', {
- staticClass: "text-xs-right"
- }, [_h('delete-button', {
- attrs: {
- "action": deletePassword,
- "object": password,
- "text": "Are you sure you want to delete this password ?"
- }
- })])])
- })])])])])])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-search"
- })
- }},function (){with(this) {
- return _h('br')
- }},function (){with(this) {
- return _h('br')
- }}]}
-
- /***/ },
- /* 297 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('form', {
- attrs: {
- "id": "password-generator"
- }
- }, [_h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(0), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.site),
- expression: "password.site"
- }],
- ref: "site",
- staticClass: "form-control",
- attrs: {
- "id": "site",
- "name": "site",
- "type": "text",
- "placeholder": "Site",
- "list": "savedSites",
- "autocorrect": "off",
- "autocapitalize": "none"
- },
- domProps: {
- "value": _s(password.site)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- password.site = $event.target.value
- }
- }
- }), " ", _h('datalist', {
- attrs: {
- "id": "savedSites"
- }
- }, [_l((passwords), function(pwd) {
- return _h('option', ["\n " + _s(pwd.site) + " | " + _s(pwd.login) + "\n "])
- })])])])]), " ", _h('remove-auto-complete'), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(1), " ", _m(2), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.login),
- expression: "password.login"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "login",
- "name": "login",
- "type": "text",
- "placeholder": "Login",
- "autocomplete": "off",
- "autocorrect": "off",
- "autocapitalize": "none"
- },
- domProps: {
- "value": _s(password.login)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- password.login = $event.target.value
- }
- }
- })])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon input-group"
- }, [_m(3), " ", _m(4), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (masterPassword),
- expression: "masterPassword"
- }],
- ref: "masterPassword",
- staticClass: "form-control",
- attrs: {
- "id": "masterPassword",
- "name": "masterPassword",
- "type": "password",
- "placeholder": "Master password",
- "autocomplete": "new-password",
- "autocorrect": "off",
- "autocapitalize": "none"
- },
- domProps: {
- "value": _s(masterPassword)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- masterPassword = $event.target.value
- }
- }
- }), " ", _h('fingerprint', {
- attrs: {
- "fingerprint": masterPassword
- },
- nativeOn: {
- "click": function($event) {
- showMasterPassword($event)
- }
- }
- })])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "input-group"
- }, [_m(5), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (generatedPassword),
- expression: "generatedPassword"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "generatedPassword",
- "name": "generatedPassword",
- "type": "text",
- "tabindex": "-1",
- "readonly": ""
- },
- domProps: {
- "value": _s(generatedPassword)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- generatedPassword = $event.target.value
- }
- }
- }), " ", _h('span', {
- staticClass: "input-group-btn"
- }, [_h('button', {
- staticClass: "btn-copy btn btn-primary",
- attrs: {
- "id": "copyPasswordButton",
- "disabled": !generatedPassword,
- "type": "button",
- "data-clipboard-target": "#generatedPassword"
- },
- on: {
- "click": function($event) {
- cleanFormInSeconds(10)
- }
- }
- }, [_m(6), " Copy\n "])])])])]), " ", _m(7), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('label', {
- staticClass: "form-check-inline"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.lowercase),
- expression: "password.lowercase"
- }],
- staticClass: "form-check-input",
- attrs: {
- "type": "checkbox",
- "id": "lowercase"
- },
- domProps: {
- "checked": Array.isArray(password.lowercase) ? _i(password.lowercase, null) > -1 : _q(password.lowercase, true)
- },
- on: {
- "change": function($event) {
- var $$a = password.lowercase,
- $$el = $event.target,
- $$c = $$el.checked ? (true) : (false);
- if (Array.isArray($$a)) {
- var $$v = null,
- $$i = _i($$a, $$v);
- if ($$c) {
- $$i < 0 && (password.lowercase = $$a.concat($$v))
- } else {
- $$i > -1 && (password.lowercase = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
- }
- } else {
- password.lowercase = $$c
- }
- }
- }
- }), " abc\n "]), " ", _h('label', {
- staticClass: "form-check-inline"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.uppercase),
- expression: "password.uppercase"
- }],
- staticClass: "form-check-input",
- attrs: {
- "type": "checkbox",
- "id": "uppercase"
- },
- domProps: {
- "checked": Array.isArray(password.uppercase) ? _i(password.uppercase, null) > -1 : _q(password.uppercase, true)
- },
- on: {
- "change": function($event) {
- var $$a = password.uppercase,
- $$el = $event.target,
- $$c = $$el.checked ? (true) : (false);
- if (Array.isArray($$a)) {
- var $$v = null,
- $$i = _i($$a, $$v);
- if ($$c) {
- $$i < 0 && (password.uppercase = $$a.concat($$v))
- } else {
- $$i > -1 && (password.uppercase = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
- }
- } else {
- password.uppercase = $$c
- }
- }
- }
- }), " ABC\n "]), " ", _h('label', {
- staticClass: "form-check-inline"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.numbers),
- expression: "password.numbers"
- }],
- staticClass: "form-check-input",
- attrs: {
- "type": "checkbox",
- "id": "numbers"
- },
- domProps: {
- "checked": Array.isArray(password.numbers) ? _i(password.numbers, null) > -1 : _q(password.numbers, true)
- },
- on: {
- "change": function($event) {
- var $$a = password.numbers,
- $$el = $event.target,
- $$c = $$el.checked ? (true) : (false);
- if (Array.isArray($$a)) {
- var $$v = null,
- $$i = _i($$a, $$v);
- if ($$c) {
- $$i < 0 && (password.numbers = $$a.concat($$v))
- } else {
- $$i > -1 && (password.numbers = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
- }
- } else {
- password.numbers = $$c
- }
- }
- }
- }), "\n 123\n "]), " ", _h('label', {
- staticClass: "form-check-inline"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.symbols),
- expression: "password.symbols"
- }],
- staticClass: "form-check-input",
- attrs: {
- "type": "checkbox",
- "id": "symbols"
- },
- domProps: {
- "checked": Array.isArray(password.symbols) ? _i(password.symbols, null) > -1 : _q(password.symbols, true)
- },
- on: {
- "change": function($event) {
- var $$a = password.symbols,
- $$el = $event.target,
- $$c = $$el.checked ? (true) : (false);
- if (Array.isArray($$a)) {
- var $$v = null,
- $$i = _i($$a, $$v);
- if ($$c) {
- $$i < 0 && (password.symbols = $$a.concat($$v))
- } else {
- $$i > -1 && (password.symbols = $$a.slice(0, $$i).concat($$a.slice($$i + 1)))
- }
- } else {
- password.symbols = $$c
- }
- }
- }
- }), "\n %!@\n "])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_m(8), " ", _h('div', {
- staticClass: "col-xs-3 pl-0"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.length),
- expression: "password.length"
- }],
- staticClass: "form-control",
- attrs: {
- "type": "number",
- "id": "passwordLength",
- "min": "6"
- },
- domProps: {
- "value": _s(password.length)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- password.length = _n($event.target.value)
- }
- }
- })]), " ", _m(9), " ", _h('div', {
- staticClass: "col-xs-3 pl-0"
- }, [_h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (password.counter),
- expression: "password.counter"
- }],
- staticClass: "form-control",
- attrs: {
- "type": "number",
- "id": "passwordCounter",
- "min": "1"
- },
- domProps: {
- "value": _s(password.counter)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- password.counter = _n($event.target.value)
- }
- }
- })])])])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-globe"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-user"
- })
- }},function (){with(this) {
- return _h('label', {
- staticClass: "sr-only",
- attrs: {
- "for": "login"
- }
- }, ["Login"])
- }},function (){with(this) {
- return _h('label', {
- staticClass: "sr-only",
- attrs: {
- "for": "masterPassword"
- }
- }, ["Password"])
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-lock"
- })
- }},function (){with(this) {
- return _h('label', {
- staticClass: "sr-only",
- attrs: {
- "for": "generatedPassword"
- }
- }, ["Password Generated"])
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-clipboard white"
- })
- }},function (){with(this) {
- return _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, ["\n Password options\n ", _h('hr', {
- attrs: {
- "style": "margin:0;"
- }
- })])])
- }},function (){with(this) {
- return _h('label', {
- staticClass: "col-xs-3 col-form-label",
- attrs: {
- "for": "passwordLength"
- }
- }, ["Length"])
- }},function (){with(this) {
- return _h('label', {
- staticClass: "col-xs-3 col-form-label",
- attrs: {
- "for": "passwordCounter"
- }
- }, ["Counter"])
- }}]}
-
- /***/ },
- /* 298 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('div', {
- staticClass: "card",
- attrs: {
- "id": "lesspass",
- "style": "border:none;"
- }
- }, [_h('lesspass-menu'), " ", _h('div', {
- staticClass: "card-block",
- attrs: {
- "style": "min-height: 400px;"
- }
- }, [_h('router-view')])])
- }},staticRenderFns: []}
-
- /***/ },
- /* 299 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('form', {
- on: {
- "submit": function($event) {
- $event.preventDefault();
- resetPassword($event)
- }
- }
- }, [(showError) ? _h('div', {
- staticClass: "form-group row"
- }, [_m(0)]) : _e(), " ", (successMessage) ? _h('div', {
- staticClass: "form-group row"
- }, [_m(1)]) : _e(), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(2), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (email),
- expression: "email"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "email",
- "name": "email",
- "type": "email",
- "placeholder": "Email"
- },
- domProps: {
- "value": _s(email)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- email = $event.target.value
- }
- }
- }), " ", _h('small', {
- staticClass: "form-text text-muted text-danger"
- }, [(emailRequired) ? _h('span', ["An email is required"]) : _e()])])])]), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('button', {
- staticClass: "btn btn-primary",
- attrs: {
- "id": "loginButton",
- "type": "submit"
- }
- }, [(loading) ? _h('span', [_m(3)]) : _e(), "\n Send me a reset link\n "])])])])
- }},staticRenderFns: [function (){with(this) {
- return _h('div', {
- staticClass: "col-xs-12 text-muted text-danger"
- }, ["\n Oops! Something went wrong. Retry in a few minutes.\n "])
- }},function (){with(this) {
- return _h('div', {
- staticClass: "col-xs-12 text-muted text-success"
- }, ["\n If a matching account was found an email was sent to allow you to reset your password.\n "])
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-user"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-spinner fa-pulse fa-fw"
- })
- }}]}
-
- /***/ },
- /* 300 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('div', {
- attrs: {
- "id": "delete-button"
- }
- }, [_h('button', {
- staticClass: "btn btn-danger",
- attrs: {
- "type": "button"
- },
- on: {
- "click": confirm
- }
- }, [_m(0)])])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa-white fa fa-trash"
- })
- }}]}
-
- /***/ },
- /* 301 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('form', {
- on: {
- "submit": function($event) {
- $event.preventDefault();
- resetPasswordConfirm($event)
- }
- }
- }, [(showError) ? _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12 text-muted text-danger"
- }, ["\n " + _s(errorMessage) + "\n "])]) : _e(), " ", (successMessage) ? _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12 text-muted text-success"
- }, ["\n You're password was reset successfully.\n ", _h('router-link', {
- attrs: {
- "to": {
- name: 'login'
- }
- }
- }, ["Do you want to login ?"])])]) : _e(), " ", _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('div', {
- staticClass: "inner-addon left-addon"
- }, [_m(0), " ", _h('input', {
- directives: [{
- name: "model",
- rawName: "v-model",
- value: (new_password),
- expression: "new_password"
- }],
- staticClass: "form-control",
- attrs: {
- "id": "new-password",
- "name": "new-password",
- "type": "password",
- "autocomplete": "new-password",
- "placeholder": "New Password"
- },
- domProps: {
- "value": _s(new_password)
- },
- on: {
- "input": function($event) {
- if ($event.target.composing) return;
- new_password = $event.target.value
- }
- }
- }), " ", _h('small', {
- staticClass: "form-text text-muted text-danger"
- }, [(passwordRequired) ? _h('span', ["A password is required"]) : _e()])])])]), " ", _m(1)])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-lock"
- })
- }},function (){with(this) {
- return _h('div', {
- staticClass: "form-group row"
- }, [_h('div', {
- staticClass: "col-xs-12"
- }, [_h('button', {
- staticClass: "btn btn-primary",
- attrs: {
- "id": "loginButton",
- "type": "submit"
- }
- }, ["\n Reset my password\n "])])])
- }}]}
-
- /***/ },
- /* 302 */
- /***/ function(module, exports) {
-
- module.exports={render:function (){with(this) {
- return _h('div', {
- attrs: {
- "id": "menu"
- }
- }, [_h('div', {
- directives: [{
- name: "show",
- rawName: "v-show",
- value: (isAuthenticated),
- expression: "isAuthenticated"
- }],
- staticClass: "card-header"
- }, [_h('div', {
- staticClass: "row"
- }, [_h('div', {
- staticClass: "col-xs-6"
- }, [_h('router-link', {
- staticClass: "grey-link",
- attrs: {
- "to": {
- name: 'home'
- }
- }
- }, ["LessPass"]), " ", _h('span', {
- staticClass: " hint--right",
- attrs: {
- "aria-label": "Save password"
- },
- on: {
- "click": saveOrUpdatePassword
- }
- }, [(passwordStatus == 'DIRTY') ? _h('i', {
- staticClass: "fa fa-save ml-1 fa-clickable"
- }) : _e()]), " ", (passwordStatus == 'CREATED') ? _h('span', {
- staticClass: "text-success"
- }, [_m(0), " saved\n "]) : _e(), " ", (passwordStatus == 'UPDATED') ? _h('span', {
- staticClass: "text-success"
- }, [_m(1), " updated\n "]) : _e()]), " ", _h('div', {
- staticClass: "col-xs-6 text-xs-right"
- }, [_h('router-link', {
- staticClass: "grey-link ml-1",
- attrs: {
- "to": {
- name: 'passwords'
- }
- }
- }, [_m(2)]), " ", _h('button', {
- staticClass: "grey-link ml-1 btn btn-link p-0 m-0",
- attrs: {
- "type": "button"
- },
- on: {
- "click": logout
- }
- }, [_m(3)])])])]), " ", _h('div', {
- directives: [{
- name: "show",
- rawName: "v-show",
- value: (isGuest),
- expression: "isGuest"
- }],
- staticClass: "card-header card-header-dark"
- }, [_h('div', {
- staticClass: "row"
- }, [_h('div', {
- staticClass: "index-header"
- }, [_h('div', {
- staticClass: "col-xs-6"
- }, [_h('router-link', {
- staticClass: "white-link",
- attrs: {
- "to": {
- name: 'home'
- }
- }
- }, ["LessPass"])]), " ", _h('div', {
- staticClass: "col-xs-6 text-xs-right"
- }, [_h('router-link', {
- staticClass: "white-link",
- attrs: {
- "to": {
- name: 'login'
- }
- }
- }, [_m(4)])])])])])])
- }},staticRenderFns: [function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-check ml-1 text-success"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-check ml-1 text-success"
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-key",
- attrs: {
- "aria-hidden": "true"
- }
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-sign-out",
- attrs: {
- "aria-hidden": "true"
- }
- })
- }},function (){with(this) {
- return _h('i', {
- staticClass: "fa fa-user-secret white",
- attrs: {
- "aria-hidden": "true"
- }
- })
- }}]}
-
- /***/ },
- /* 303 */
- /***/ function(module, exports, __webpack_require__) {
-
- /**
- * vue-router v2.0.1
- * (c) 2016 Evan You
- * @license MIT
- */
- (function (global, factory) {
- true ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global.VueRouter = factory());
- }(this, (function () { 'use strict';
-
- var View = {
- name: 'router-view',
- functional: true,
- props: {
- name: {
- type: String,
- default: 'default'
- }
- },
- render: function render (h, ref) {
- var props = ref.props;
- var children = ref.children;
- var parent = ref.parent;
- var data = ref.data;
-
- data.routerView = true
-
- var route = parent.$route
- var cache = parent._routerViewCache || (parent._routerViewCache = {})
- var depth = 0
- var inactive = false
-
- while (parent) {
- if (parent.$vnode && parent.$vnode.data.routerView) {
- depth++
- }
- if (parent._inactive) {
- inactive = true
- }
- parent = parent.$parent
- }
-
- data.routerViewDepth = depth
- var matched = route.matched[depth]
- if (!matched) {
- return h()
- }
-
- var name = props.name
- var component = inactive
- ? cache[name]
- : (cache[name] = matched.components[name])
-
- if (!inactive) {
- var hooks = data.hook || (data.hook = {})
- hooks.init = function (vnode) {
- matched.instances[name] = vnode.child
- }
- hooks.destroy = function (vnode) {
- if (matched.instances[name] === vnode.child) {
- matched.instances[name] = undefined
- }
- }
- }
-
- return h(component, data, children)
- }
- }
-
- /* */
-
- function resolvePath (
- relative,
- base,
- append
- ) {
- if (relative.charAt(0) === '/') {
- return relative
- }
-
- if (relative.charAt(0) === '?' || relative.charAt(0) === '#') {
- return base + relative
- }
-
- var stack = base.split('/')
-
- // remove trailing segment if:
- // - not appending
- // - appending to trailing slash (last segment is empty)
- if (!append || !stack[stack.length - 1]) {
- stack.pop()
- }
-
- // resolve relative path
- var segments = relative.replace(/^\//, '').split('/')
- for (var i = 0; i < segments.length; i++) {
- var segment = segments[i]
- if (segment === '.') {
- continue
- } else if (segment === '..') {
- stack.pop()
- } else {
- stack.push(segment)
- }
- }
-
- // ensure leading slash
- if (stack[0] !== '') {
- stack.unshift('')
- }
-
- return stack.join('/')
- }
-
- function parsePath (path) {
- var hash = ''
- var query = ''
-
- var hashIndex = path.indexOf('#')
- if (hashIndex >= 0) {
- hash = path.slice(hashIndex)
- path = path.slice(0, hashIndex)
- }
-
- var queryIndex = path.indexOf('?')
- if (queryIndex >= 0) {
- query = path.slice(queryIndex + 1)
- path = path.slice(0, queryIndex)
- }
-
- return {
- path: path,
- query: query,
- hash: hash
- }
- }
-
- function cleanPath (path) {
- return path.replace(/\/\//g, '/')
- }
-
- /* */
-
- function assert (condition, message) {
- if (!condition) {
- throw new Error(("[vue-router] " + message))
- }
- }
-
- function warn (condition, message) {
- if (!condition) {
- typeof console !== 'undefined' && console.warn(("[vue-router] " + message))
- }
- }
-
- /* */
-
- var encode = encodeURIComponent
- var decode = decodeURIComponent
-
- function resolveQuery (
- query,
- extraQuery
- ) {
- if ( extraQuery === void 0 ) extraQuery = {};
-
- if (query) {
- var parsedQuery
- try {
- parsedQuery = parseQuery(query)
- } catch (e) {
- warn(false, e.message)
- parsedQuery = {}
- }
- for (var key in extraQuery) {
- parsedQuery[key] = extraQuery[key]
- }
- return parsedQuery
- } else {
- return extraQuery
- }
- }
-
- function parseQuery (query) {
- var res = Object.create(null)
-
- query = query.trim().replace(/^(\?|#|&)/, '')
-
- if (!query) {
- return res
- }
-
- query.split('&').forEach(function (param) {
- var parts = param.replace(/\+/g, ' ').split('=')
- var key = decode(parts.shift())
- var val = parts.length > 0
- ? decode(parts.join('='))
- : null
-
- if (res[key] === undefined) {
- res[key] = val
- } else if (Array.isArray(res[key])) {
- res[key].push(val)
- } else {
- res[key] = [res[key], val]
- }
- })
-
- return res
- }
-
- function stringifyQuery (obj) {
- var res = obj ? Object.keys(obj).sort().map(function (key) {
- var val = obj[key]
-
- if (val === undefined) {
- return ''
- }
-
- if (val === null) {
- return encode(key)
- }
-
- if (Array.isArray(val)) {
- var result = []
- val.slice().forEach(function (val2) {
- if (val2 === undefined) {
- return
- }
- if (val2 === null) {
- result.push(encode(key))
- } else {
- result.push(encode(key) + '=' + encode(val2))
- }
- })
- return result.join('&')
- }
-
- return encode(key) + '=' + encode(val)
- }).filter(function (x) { return x.length > 0; }).join('&') : null
- return res ? ("?" + res) : ''
- }
-
- /* */
-
- function createRoute (
- record,
- location,
- redirectedFrom
- ) {
- var route = {
- name: location.name || (record && record.name),
- meta: (record && record.meta) || {},
- path: location.path || '/',
- hash: location.hash || '',
- query: location.query || {},
- params: location.params || {},
- fullPath: getFullPath(location),
- matched: record ? formatMatch(record) : []
- }
- if (redirectedFrom) {
- route.redirectedFrom = getFullPath(redirectedFrom)
- }
- return Object.freeze(route)
- }
-
- // the starting route that represents the initial state
- var START = createRoute(null, {
- path: '/'
- })
-
- function formatMatch (record) {
- var res = []
- while (record) {
- res.unshift(record)
- record = record.parent
- }
- return res
- }
-
- function getFullPath (ref) {
- var path = ref.path;
- var query = ref.query; if ( query === void 0 ) query = {};
- var hash = ref.hash; if ( hash === void 0 ) hash = '';
-
- return (path || '/') + stringifyQuery(query) + hash
- }
-
- var trailingSlashRE = /\/$/
- function isSameRoute (a, b) {
- if (b === START) {
- return a === b
- } else if (!b) {
- return false
- } else if (a.path && b.path) {
- return (
- a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&
- a.hash === b.hash &&
- isObjectEqual(a.query, b.query)
- )
- } else if (a.name && b.name) {
- return (
- a.name === b.name &&
- a.hash === b.hash &&
- isObjectEqual(a.query, b.query) &&
- isObjectEqual(a.params, b.params)
- )
- } else {
- return false
- }
- }
-
- function isObjectEqual (a, b) {
- if ( a === void 0 ) a = {};
- if ( b === void 0 ) b = {};
-
- var aKeys = Object.keys(a)
- var bKeys = Object.keys(b)
- if (aKeys.length !== bKeys.length) {
- return false
- }
- return aKeys.every(function (key) { return String(a[key]) === String(b[key]); })
- }
-
- function isIncludedRoute (current, target) {
- return (
- current.path.indexOf(target.path) === 0 &&
- (!target.hash || current.hash === target.hash) &&
- queryIncludes(current.query, target.query)
- )
- }
-
- function queryIncludes (current, target) {
- for (var key in target) {
- if (!(key in current)) {
- return false
- }
- }
- return true
- }
-
- /* */
-
- function normalizeLocation (
- raw,
- current,
- append
- ) {
- var next = typeof raw === 'string' ? { path: raw } : raw
- if (next.name || next._normalized) {
- return next
- }
-
- var parsedPath = parsePath(next.path || '')
- var basePath = (current && current.path) || '/'
- var path = parsedPath.path
- ? resolvePath(parsedPath.path, basePath, append)
- : (current && current.path) || '/'
- var query = resolveQuery(parsedPath.query, next.query)
- var hash = next.hash || parsedPath.hash
- if (hash && hash.charAt(0) !== '#') {
- hash = "#" + hash
- }
-
- return {
- _normalized: true,
- path: path,
- query: query,
- hash: hash
- }
- }
-
- /* */
-
- // work around weird flow bug
- var toTypes = [String, Object]
-
- var Link = {
- name: 'router-link',
- props: {
- to: {
- type: toTypes,
- required: true
- },
- tag: {
- type: String,
- default: 'a'
- },
- exact: Boolean,
- append: Boolean,
- replace: Boolean,
- activeClass: String
- },
- render: function render (h) {
- var this$1 = this;
-
- var router = this.$router
- var current = this.$route
- var to = normalizeLocation(this.to, current, this.append)
- var resolved = router.match(to)
- var fullPath = resolved.redirectedFrom || resolved.fullPath
- var base = router.history.base
- var href = base ? cleanPath(base + fullPath) : fullPath
- var classes = {}
- var activeClass = this.activeClass || router.options.linkActiveClass || 'router-link-active'
- var compareTarget = to.path ? createRoute(null, to) : resolved
- classes[activeClass] = this.exact
- ? isSameRoute(current, compareTarget)
- : isIncludedRoute(current, compareTarget)
-
- var on = {
- click: function (e) {
- // don't redirect with control keys
- /* istanbul ignore if */
- if (e.metaKey || e.ctrlKey || e.shiftKey) { return }
- // don't redirect when preventDefault called
- /* istanbul ignore if */
- if (e.defaultPrevented) { return }
- // don't redirect on right click
- /* istanbul ignore if */
- if (e.button !== 0) { return }
- e.preventDefault()
- if (this$1.replace) {
- router.replace(to)
- } else {
- router.push(to)
- }
- }
- }
-
- var data = {
- class: classes
- }
-
- if (this.tag === 'a') {
- data.on = on
- data.attrs = { href: href }
- } else {
- // find the first <a> child and apply listener and href
- var a = findAnchor(this.$slots.default)
- if (a) {
- var aData = a.data || (a.data = {})
- aData.on = on
- var aAttrs = aData.attrs || (aData.attrs = {})
- aAttrs.href = href
- } else {
- // doesn't have <a> child, apply listener to self
- data.on = on
- }
- }
-
- return h(this.tag, data, this.$slots.default)
- }
- }
-
- function findAnchor (children) {
- if (children) {
- var child
- for (var i = 0; i < children.length; i++) {
- child = children[i]
- if (child.tag === 'a') {
- return child
- }
- if (child.children && (child = findAnchor(child.children))) {
- return child
- }
- }
- }
- }
-
- function install (Vue) {
- if (install.installed) { return }
- install.installed = true
-
- Object.defineProperty(Vue.prototype, '$router', {
- get: function get () { return this.$root._router }
- })
-
- Object.defineProperty(Vue.prototype, '$route', {
- get: function get$1 () { return this.$root._route }
- })
-
- Vue.mixin({
- beforeCreate: function beforeCreate () {
- if (this.$options.router) {
- this._router = this.$options.router
- this._router.init(this)
- Vue.util.defineReactive(this, '_route', this._router.history.current)
- }
- }
- })
-
- Vue.component('router-view', View)
- Vue.component('router-link', Link)
- }
-
- var __moduleExports = Array.isArray || function (arr) {
- return Object.prototype.toString.call(arr) == '[object Array]';
- };
-
- var isarray = __moduleExports
-
- /**
- * Expose `pathToRegexp`.
- */
- var index = pathToRegexp
- var parse_1 = parse
- var compile_1 = compile
- var tokensToFunction_1 = tokensToFunction
- var tokensToRegExp_1 = tokensToRegExp
-
- /**
- * The main path matching regexp utility.
- *
- * @type {RegExp}
- */
- var PATH_REGEXP = new RegExp([
- // Match escaped characters that would otherwise appear in future matches.
- // This allows the user to escape special characters that won't transform.
- '(\\\\.)',
- // Match Express-style parameters and un-named parameters with a prefix
- // and optional suffixes. Matches appear as:
- //
- // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined]
- // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined]
- // "/*" => ["/", undefined, undefined, undefined, undefined, "*"]
- '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'
- ].join('|'), 'g')
-
- /**
- * Parse a string for the raw tokens.
- *
- * @param {string} str
- * @return {!Array}
- */
- function parse (str) {
- var tokens = []
- var key = 0
- var index = 0
- var path = ''
- var res
-
- while ((res = PATH_REGEXP.exec(str)) != null) {
- var m = res[0]
- var escaped = res[1]
- var offset = res.index
- path += str.slice(index, offset)
- index = offset + m.length
-
- // Ignore already escaped sequences.
- if (escaped) {
- path += escaped[1]
- continue
- }
-
- var next = str[index]
- var prefix = res[2]
- var name = res[3]
- var capture = res[4]
- var group = res[5]
- var modifier = res[6]
- var asterisk = res[7]
-
- // Push the current path onto the tokens.
- if (path) {
- tokens.push(path)
- path = ''
- }
-
- var partial = prefix != null && next != null && next !== prefix
- var repeat = modifier === '+' || modifier === '*'
- var optional = modifier === '?' || modifier === '*'
- var delimiter = res[2] || '/'
- var pattern = capture || group || (asterisk ? '.*' : '[^' + delimiter + ']+?')
-
- tokens.push({
- name: name || key++,
- prefix: prefix || '',
- delimiter: delimiter,
- optional: optional,
- repeat: repeat,
- partial: partial,
- asterisk: !!asterisk,
- pattern: escapeGroup(pattern)
- })
- }
-
- // Match any characters still remaining.
- if (index < str.length) {
- path += str.substr(index)
- }
-
- // If the path exists, push it onto the end.
- if (path) {
- tokens.push(path)
- }
-
- return tokens
- }
-
- /**
- * Compile a string to a template function for the path.
- *
- * @param {string} str
- * @return {!function(Object=, Object=)}
- */
- function compile (str) {
- return tokensToFunction(parse(str))
- }
-
- /**
- * Prettier encoding of URI path segments.
- *
- * @param {string}
- * @return {string}
- */
- function encodeURIComponentPretty (str) {
- return encodeURI(str).replace(/[\/?#]/g, function (c) {
- return '%' + c.charCodeAt(0).toString(16).toUpperCase()
- })
- }
-
- /**
- * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.
- *
- * @param {string}
- * @return {string}
- */
- function encodeAsterisk (str) {
- return encodeURI(str).replace(/[?#]/g, function (c) {
- return '%' + c.charCodeAt(0).toString(16).toUpperCase()
- })
- }
-
- /**
- * Expose a method for transforming tokens into the path function.
- */
- function tokensToFunction (tokens) {
- // Compile all the tokens into regexps.
- var matches = new Array(tokens.length)
-
- // Compile all the patterns before compilation.
- for (var i = 0; i < tokens.length; i++) {
- if (typeof tokens[i] === 'object') {
- matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')
- }
- }
-
- return function (obj, opts) {
- var path = ''
- var data = obj || {}
- var options = opts || {}
- var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent
-
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i]
-
- if (typeof token === 'string') {
- path += token
-
- continue
- }
-
- var value = data[token.name]
- var segment
-
- if (value == null) {
- if (token.optional) {
- // Prepend partial segment prefixes.
- if (token.partial) {
- path += token.prefix
- }
-
- continue
- } else {
- throw new TypeError('Expected "' + token.name + '" to be defined')
- }
- }
-
- if (isarray(value)) {
- if (!token.repeat) {
- throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`')
- }
-
- if (value.length === 0) {
- if (token.optional) {
- continue
- } else {
- throw new TypeError('Expected "' + token.name + '" to not be empty')
- }
- }
-
- for (var j = 0; j < value.length; j++) {
- segment = encode(value[j])
-
- if (!matches[i].test(segment)) {
- throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`')
- }
-
- path += (j === 0 ? token.prefix : token.delimiter) + segment
- }
-
- continue
- }
-
- segment = token.asterisk ? encodeAsterisk(value) : encode(value)
-
- if (!matches[i].test(segment)) {
- throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"')
- }
-
- path += token.prefix + segment
- }
-
- return path
- }
- }
-
- /**
- * Escape a regular expression string.
- *
- * @param {string} str
- * @return {string}
- */
- function escapeString (str) {
- return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1')
- }
-
- /**
- * Escape the capturing group by escaping special characters and meaning.
- *
- * @param {string} group
- * @return {string}
- */
- function escapeGroup (group) {
- return group.replace(/([=!:$\/()])/g, '\\$1')
- }
-
- /**
- * Attach the keys as a property of the regexp.
- *
- * @param {!RegExp} re
- * @param {Array} keys
- * @return {!RegExp}
- */
- function attachKeys (re, keys) {
- re.keys = keys
- return re
- }
-
- /**
- * Get the flags for a regexp from the options.
- *
- * @param {Object} options
- * @return {string}
- */
- function flags (options) {
- return options.sensitive ? '' : 'i'
- }
-
- /**
- * Pull out keys from a regexp.
- *
- * @param {!RegExp} path
- * @param {!Array} keys
- * @return {!RegExp}
- */
- function regexpToRegexp (path, keys) {
- // Use a negative lookahead to match only capturing groups.
- var groups = path.source.match(/\((?!\?)/g)
-
- if (groups) {
- for (var i = 0; i < groups.length; i++) {
- keys.push({
- name: i,
- prefix: null,
- delimiter: null,
- optional: false,
- repeat: false,
- partial: false,
- asterisk: false,
- pattern: null
- })
- }
- }
-
- return attachKeys(path, keys)
- }
-
- /**
- * Transform an array into a regexp.
- *
- * @param {!Array} path
- * @param {Array} keys
- * @param {!Object} options
- * @return {!RegExp}
- */
- function arrayToRegexp (path, keys, options) {
- var parts = []
-
- for (var i = 0; i < path.length; i++) {
- parts.push(pathToRegexp(path[i], keys, options).source)
- }
-
- var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))
-
- return attachKeys(regexp, keys)
- }
-
- /**
- * Create a path regexp from string input.
- *
- * @param {string} path
- * @param {!Array} keys
- * @param {!Object} options
- * @return {!RegExp}
- */
- function stringToRegexp (path, keys, options) {
- var tokens = parse(path)
- var re = tokensToRegExp(tokens, options)
-
- // Attach keys back to the regexp.
- for (var i = 0; i < tokens.length; i++) {
- if (typeof tokens[i] !== 'string') {
- keys.push(tokens[i])
- }
- }
-
- return attachKeys(re, keys)
- }
-
- /**
- * Expose a function for taking tokens and returning a RegExp.
- *
- * @param {!Array} tokens
- * @param {Object=} options
- * @return {!RegExp}
- */
- function tokensToRegExp (tokens, options) {
- options = options || {}
-
- var strict = options.strict
- var end = options.end !== false
- var route = ''
- var lastToken = tokens[tokens.length - 1]
- var endsWithSlash = typeof lastToken === 'string' && /\/$/.test(lastToken)
-
- // Iterate over the tokens and create our regexp string.
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i]
-
- if (typeof token === 'string') {
- route += escapeString(token)
- } else {
- var prefix = escapeString(token.prefix)
- var capture = '(?:' + token.pattern + ')'
-
- if (token.repeat) {
- capture += '(?:' + prefix + capture + ')*'
- }
-
- if (token.optional) {
- if (!token.partial) {
- capture = '(?:' + prefix + '(' + capture + '))?'
- } else {
- capture = prefix + '(' + capture + ')?'
- }
- } else {
- capture = prefix + '(' + capture + ')'
- }
-
- route += capture
- }
- }
-
- // In non-strict mode we allow a slash at the end of match. If the path to
- // match already ends with a slash, we remove it for consistency. The slash
- // is valid at the end of a path match, not in the middle. This is important
- // in non-ending mode, where "/test/" shouldn't match "/test//route".
- if (!strict) {
- route = (endsWithSlash ? route.slice(0, -2) : route) + '(?:\\/(?=$))?'
- }
-
- if (end) {
- route += '$'
- } else {
- // In non-ending mode, we need the capturing groups to match as much as
- // possible by using a positive lookahead to the end or next path segment.
- route += strict && endsWithSlash ? '' : '(?=\\/|$)'
- }
-
- return new RegExp('^' + route, flags(options))
- }
-
- /**
- * Normalize the given path string, returning a regular expression.
- *
- * An empty array can be passed in for the keys, which will hold the
- * placeholder key descriptions. For example, using `/user/:id`, `keys` will
- * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
- *
- * @param {(string|RegExp|Array)} path
- * @param {(Array|Object)=} keys
- * @param {Object=} options
- * @return {!RegExp}
- */
- function pathToRegexp (path, keys, options) {
- keys = keys || []
-
- if (!isarray(keys)) {
- options = /** @type {!Object} */ (keys)
- keys = []
- } else if (!options) {
- options = {}
- }
-
- if (path instanceof RegExp) {
- return regexpToRegexp(path, /** @type {!Array} */ (keys))
- }
-
- if (isarray(path)) {
- return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)
- }
-
- return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)
- }
-
- index.parse = parse_1;
- index.compile = compile_1;
- index.tokensToFunction = tokensToFunction_1;
- index.tokensToRegExp = tokensToRegExp_1;
-
- /* */
-
- function createRouteMap (routes) {
- var pathMap = Object.create(null)
- var nameMap = Object.create(null)
-
- routes.forEach(function (route) {
- addRouteRecord(pathMap, nameMap, route)
- })
-
- return {
- pathMap: pathMap,
- nameMap: nameMap
- }
- }
-
- function addRouteRecord (
- pathMap,
- nameMap,
- route,
- parent,
- matchAs
- ) {
- var path = route.path;
- var name = route.name;
- assert(path != null, "\"path\" is required in a route configuration.")
-
- var record = {
- path: normalizePath(path, parent),
- components: route.components || { default: route.component },
- instances: {},
- name: name,
- parent: parent,
- matchAs: matchAs,
- redirect: route.redirect,
- beforeEnter: route.beforeEnter,
- meta: route.meta || {}
- }
-
- if (route.children) {
- // Warn if route is named and has a default child route.
- // If users navigate to this route by name, the default child will
- // not be rendered (GH Issue #629)
- if (false) {}
- route.children.forEach(function (child) {
- addRouteRecord(pathMap, nameMap, child, record)
- })
- }
-
- if (route.alias) {
- if (Array.isArray(route.alias)) {
- route.alias.forEach(function (alias) {
- addRouteRecord(pathMap, nameMap, { path: alias }, parent, record.path)
- })
- } else {
- addRouteRecord(pathMap, nameMap, { path: route.alias }, parent, record.path)
- }
- }
-
- pathMap[record.path] = record
- if (name) { nameMap[name] = record }
- }
-
- function normalizePath (path, parent) {
- path = path.replace(/\/$/, '')
- if (path[0] === '/') { return path }
- if (parent == null) { return path }
- return cleanPath(((parent.path) + "/" + path))
- }
-
- /* */
-
- var regexpCache = Object.create(null)
-
- var regexpCompileCache = Object.create(null)
-
- function createMatcher (routes) {
- var ref = createRouteMap(routes);
- var pathMap = ref.pathMap;
- var nameMap = ref.nameMap;
-
- function match (
- raw,
- currentRoute,
- redirectedFrom
- ) {
- var location = normalizeLocation(raw, currentRoute)
- var name = location.name;
-
- if (name) {
- var record = nameMap[name]
- if (record) {
- location.path = fillParams(record.path, location.params, ("named route \"" + name + "\""))
- return _createRoute(record, location, redirectedFrom)
- }
- } else if (location.path) {
- location.params = {}
- for (var path in pathMap) {
- if (matchRoute(path, location.params, location.path)) {
- return _createRoute(pathMap[path], location, redirectedFrom)
- }
- }
- }
- // no match
- return _createRoute(null, location)
- }
-
- function redirect (
- record,
- location
- ) {
- var originalRedirect = record.redirect
- var redirect = typeof originalRedirect === 'function'
- ? originalRedirect(createRoute(record, location))
- : originalRedirect
-
- if (typeof redirect === 'string') {
- redirect = { path: redirect }
- }
-
- if (!redirect || typeof redirect !== 'object') {
- warn(false, ("invalid redirect option: " + (JSON.stringify(redirect))))
- return _createRoute(null, location)
- }
-
- var re = redirect
- var name = re.name;
- var path = re.path;
- var query = location.query;
- var hash = location.hash;
- var params = location.params;
- query = re.hasOwnProperty('query') ? re.query : query
- hash = re.hasOwnProperty('hash') ? re.hash : hash
- params = re.hasOwnProperty('params') ? re.params : params
-
- if (name) {
- // resolved named direct
- var targetRecord = nameMap[name]
- assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found."))
- return match({
- _normalized: true,
- name: name,
- query: query,
- hash: hash,
- params: params
- }, undefined, location)
- } else if (path) {
- // 1. resolve relative redirect
- var rawPath = resolveRecordPath(path, record)
- // 2. resolve params
- var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\""))
- // 3. rematch with existing query and hash
- return match({
- _normalized: true,
- path: resolvedPath,
- query: query,
- hash: hash
- }, undefined, location)
- } else {
- warn(false, ("invalid redirect option: " + (JSON.stringify(redirect))))
- return _createRoute(null, location)
- }
- }
-
- function alias (
- record,
- location,
- matchAs
- ) {
- var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\""))
- var aliasedMatch = match({
- _normalized: true,
- path: aliasedPath
- })
- if (aliasedMatch) {
- var matched = aliasedMatch.matched
- var aliasedRecord = matched[matched.length - 1]
- location.params = aliasedMatch.params
- return _createRoute(aliasedRecord, location)
- }
- return _createRoute(null, location)
- }
-
- function _createRoute (
- record,
- location,
- redirectedFrom
- ) {
- if (record && record.redirect) {
- return redirect(record, redirectedFrom || location)
- }
- if (record && record.matchAs) {
- return alias(record, location, record.matchAs)
- }
- return createRoute(record, location, redirectedFrom)
- }
-
- return match
- }
-
- function matchRoute (
- path,
- params,
- pathname
- ) {
- var keys, regexp
- var hit = regexpCache[path]
- if (hit) {
- keys = hit.keys
- regexp = hit.regexp
- } else {
- keys = []
- regexp = index(path, keys)
- regexpCache[path] = { keys: keys, regexp: regexp }
- }
- var m = pathname.match(regexp)
-
- if (!m) {
- return false
- } else if (!params) {
- return true
- }
-
- for (var i = 1, len = m.length; i < len; ++i) {
- var key = keys[i - 1]
- var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i]
- if (key) { params[key.name] = val }
- }
-
- return true
- }
-
- function fillParams (
- path,
- params,
- routeMsg
- ) {
- try {
- var filler =
- regexpCompileCache[path] ||
- (regexpCompileCache[path] = index.compile(path))
- return filler(params || {}, { pretty: true })
- } catch (e) {
- assert(false, ("missing param for " + routeMsg + ": " + (e.message)))
- return ''
- }
- }
-
- function resolveRecordPath (path, record) {
- return resolvePath(path, record.parent ? record.parent.path : '/', true)
- }
-
- /* */
-
- var inBrowser = typeof window !== 'undefined'
-
- var supportsHistory = inBrowser && (function () {
- var ua = window.navigator.userAgent
-
- if (
- (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
- ua.indexOf('Mobile Safari') !== -1 &&
- ua.indexOf('Chrome') === -1 &&
- ua.indexOf('Windows Phone') === -1
- ) {
- return false
- }
-
- return window.history && 'pushState' in window.history
- })()
-
- /* */
-
- function runQueue (queue, fn, cb) {
- var step = function (index) {
- if (index >= queue.length) {
- cb()
- } else {
- if (queue[index]) {
- fn(queue[index], function () {
- step(index + 1)
- })
- } else {
- step(index + 1)
- }
- }
- }
- step(0)
- }
-
- /* */
-
-
- var History = function History (router, base) {
- this.router = router
- this.base = normalizeBase(base)
- // start with a route object that stands for "nowhere"
- this.current = START
- this.pending = null
- };
-
- History.prototype.listen = function listen (cb) {
- this.cb = cb
- };
-
- History.prototype.transitionTo = function transitionTo (location, cb) {
- var this$1 = this;
-
- var route = this.router.match(location, this.current)
- this.confirmTransition(route, function () {
- this$1.updateRoute(route)
- cb && cb(route)
- this$1.ensureURL()
- })
- };
-
- History.prototype.confirmTransition = function confirmTransition (route, cb) {
- var this$1 = this;
-
- var current = this.current
- if (isSameRoute(route, current)) {
- this.ensureURL()
- return
- }
-
- var ref = resolveQueue(this.current.matched, route.matched);
- var deactivated = ref.deactivated;
- var activated = ref.activated;
-
- var queue = [].concat(
- // in-component leave guards
- extractLeaveGuards(deactivated),
- // global before hooks
- this.router.beforeHooks,
- // enter guards
- activated.map(function (m) { return m.beforeEnter; }),
- // async components
- resolveAsyncComponents(activated)
- )
-
- this.pending = route
- var iterator = function (hook, next) {
- if (this$1.pending !== route) { return }
- hook(route, current, function (to) {
- if (to === false) {
- // next(false) -> abort navigation, ensure current URL
- this$1.ensureURL()
- } else if (typeof to === 'string' || typeof to === 'object') {
- // next('/') or next({ path: '/' }) -> redirect
- this$1.push(to)
- } else {
- // confirm transition and pass on the value
- next(to)
- }
- })
- }
-
- runQueue(queue, iterator, function () {
- var postEnterCbs = []
- var enterGuards = extractEnterGuards(activated, postEnterCbs, function () {
- return this$1.current === route
- })
- // wait until async components are resolved before
- // extracting in-component enter guards
- runQueue(enterGuards, iterator, function () {
- if (this$1.pending === route) {
- this$1.pending = null
- cb(route)
- this$1.router.app.$nextTick(function () {
- postEnterCbs.forEach(function (cb) { return cb(); })
- })
- }
- })
- })
- };
-
- History.prototype.updateRoute = function updateRoute (route) {
- var prev = this.current
- this.current = route
- this.cb && this.cb(route)
- this.router.afterHooks.forEach(function (hook) {
- hook && hook(route, prev)
- })
- };
-
- function normalizeBase (base) {
- if (!base) {
- if (inBrowser) {
- // respect <base> tag
- var baseEl = document.querySelector('base')
- base = baseEl ? baseEl.getAttribute('href') : '/'
- } else {
- base = '/'
- }
- }
- // make sure there's the starting slash
- if (base.charAt(0) !== '/') {
- base = '/' + base
- }
- // remove trailing slash
- return base.replace(/\/$/, '')
- }
-
- function resolveQueue (
- current,
- next
- ) {
- var i
- var max = Math.max(current.length, next.length)
- for (i = 0; i < max; i++) {
- if (current[i] !== next[i]) {
- break
- }
- }
- return {
- activated: next.slice(i),
- deactivated: current.slice(i)
- }
- }
-
- function extractLeaveGuards (matched) {
- return flatMapComponents(matched, function (def, instance) {
- var guard = def && def.beforeRouteLeave
- if (guard) {
- return function routeLeaveGuard () {
- return guard.apply(instance, arguments)
- }
- }
- }).reverse()
- }
-
- function extractEnterGuards (
- matched,
- cbs,
- isValid
- ) {
- return flatMapComponents(matched, function (def, _, match, key) {
- var guard = def && def.beforeRouteEnter
- if (guard) {
- return function routeEnterGuard (to, from, next) {
- return guard(to, from, function (cb) {
- next(cb)
- if (typeof cb === 'function') {
- cbs.push(function () {
- // #750
- // if a router-view is wrapped with an out-in transition,
- // the instance may not have been registered at this time.
- // we will need to poll for registration until current route
- // is no longer valid.
- poll(cb, match.instances, key, isValid)
- })
- }
- })
- }
- }
- })
- }
-
- function poll (cb, instances, key, isValid) {
- if (instances[key]) {
- cb(instances[key])
- } else if (isValid()) {
- setTimeout(function () {
- poll(cb, instances, key, isValid)
- }, 16)
- }
- }
-
- function resolveAsyncComponents (matched) {
- return flatMapComponents(matched, function (def, _, match, key) {
- // if it's a function and doesn't have Vue options attached,
- // assume it's an async component resolve function.
- // we are not using Vue's default async resolving mechanism because
- // we want to halt the navigation until the incoming component has been
- // resolved.
- if (typeof def === 'function' && !def.options) {
- return function (to, from, next) {
- var resolve = function (resolvedDef) {
- match.components[key] = resolvedDef
- next()
- }
-
- var reject = function (reason) {
- warn(false, ("Failed to resolve async component " + key + ": " + reason))
- next(false)
- }
-
- var res = def(resolve, reject)
- if (res && typeof res.then === 'function') {
- res.then(resolve, reject)
- }
- }
- }
- })
- }
-
- function flatMapComponents (
- matched,
- fn
- ) {
- return Array.prototype.concat.apply([], matched.map(function (m) {
- return Object.keys(m.components).map(function (key) { return fn(
- m.components[key],
- m.instances[key],
- m, key
- ); })
- }))
- }
-
- /* */
-
- function saveScrollPosition (key) {
- if (!key) { return }
- window.sessionStorage.setItem(key, JSON.stringify({
- x: window.pageXOffset,
- y: window.pageYOffset
- }))
- }
-
- function getScrollPosition (key) {
- if (!key) { return }
- return JSON.parse(window.sessionStorage.getItem(key))
- }
-
- function getElementPosition (el) {
- var docRect = document.documentElement.getBoundingClientRect()
- var elRect = el.getBoundingClientRect()
- return {
- x: elRect.left - docRect.left,
- y: elRect.top - docRect.top
- }
- }
-
- function isValidPosition (obj) {
- return isNumber(obj.x) || isNumber(obj.y)
- }
-
- function normalizePosition (obj) {
- return {
- x: isNumber(obj.x) ? obj.x : window.pageXOffset,
- y: isNumber(obj.y) ? obj.y : window.pageYOffset
- }
- }
-
- function isNumber (v) {
- return typeof v === 'number'
- }
-
- /* */
-
-
- var genKey = function () { return String(Date.now()); }
- var _key = genKey()
-
- var HTML5History = (function (History) {
- function HTML5History (router, base) {
- var this$1 = this;
-
- History.call(this, router, base)
-
- this.transitionTo(getLocation(this.base))
-
- var expectScroll = router.options.scrollBehavior
- window.addEventListener('popstate', function (e) {
- _key = e.state && e.state.key
- var current = this$1.current
- this$1.transitionTo(getLocation(this$1.base), function (next) {
- if (expectScroll) {
- this$1.handleScroll(next, current, true)
- }
- })
- })
-
- if (expectScroll) {
- window.addEventListener('scroll', function () {
- saveScrollPosition(_key)
- })
- }
- }
-
- if ( History ) HTML5History.__proto__ = History;
- HTML5History.prototype = Object.create( History && History.prototype );
- HTML5History.prototype.constructor = HTML5History;
-
- HTML5History.prototype.go = function go (n) {
- window.history.go(n)
- };
-
- HTML5History.prototype.push = function push (location) {
- var this$1 = this;
-
- var current = this.current
- this.transitionTo(location, function (route) {
- pushState(cleanPath(this$1.base + route.fullPath))
- this$1.handleScroll(route, current, false)
- })
- };
-
- HTML5History.prototype.replace = function replace (location) {
- var this$1 = this;
-
- var current = this.current
- this.transitionTo(location, function (route) {
- replaceState(cleanPath(this$1.base + route.fullPath))
- this$1.handleScroll(route, current, false)
- })
- };
-
- HTML5History.prototype.ensureURL = function ensureURL () {
- if (getLocation(this.base) !== this.current.fullPath) {
- replaceState(cleanPath(this.base + this.current.fullPath))
- }
- };
-
- HTML5History.prototype.handleScroll = function handleScroll (to, from, isPop) {
- var router = this.router
- if (!router.app) {
- return
- }
-
- var behavior = router.options.scrollBehavior
- if (!behavior) {
- return
- }
- assert(typeof behavior === 'function', "scrollBehavior must be a function")
-
- // wait until re-render finishes before scrolling
- router.app.$nextTick(function () {
- var position = getScrollPosition(_key)
- var shouldScroll = behavior(to, from, isPop ? position : null)
- if (!shouldScroll) {
- return
- }
- var isObject = typeof shouldScroll === 'object'
- if (isObject && typeof shouldScroll.selector === 'string') {
- var el = document.querySelector(shouldScroll.selector)
- if (el) {
- position = getElementPosition(el)
- } else if (isValidPosition(shouldScroll)) {
- position = normalizePosition(shouldScroll)
- }
- } else if (isObject && isValidPosition(shouldScroll)) {
- position = normalizePosition(shouldScroll)
- }
-
- if (position) {
- window.scrollTo(position.x, position.y)
- }
- })
- };
-
- return HTML5History;
- }(History));
-
- function getLocation (base) {
- var path = window.location.pathname
- if (base && path.indexOf(base) === 0) {
- path = path.slice(base.length)
- }
- return (path || '/') + window.location.search + window.location.hash
- }
-
- function pushState (url, replace) {
- // try...catch the pushState call to get around Safari
- // DOM Exception 18 where it limits to 100 pushState calls
- var history = window.history
- try {
- if (replace) {
- history.replaceState({ key: _key }, '', url)
- } else {
- _key = genKey()
- history.pushState({ key: _key }, '', url)
- }
- saveScrollPosition(_key)
- } catch (e) {
- window.location[replace ? 'assign' : 'replace'](url)
- }
- }
-
- function replaceState (url) {
- pushState(url, true)
- }
-
- /* */
-
-
- var HashHistory = (function (History) {
- function HashHistory (router, base, fallback) {
- var this$1 = this;
-
- History.call(this, router, base)
-
- // check history fallback deeplinking
- if (fallback && this.checkFallback()) {
- return
- }
-
- ensureSlash()
- this.transitionTo(getHash(), function () {
- window.addEventListener('hashchange', function () {
- this$1.onHashChange()
- })
- })
- }
-
- if ( History ) HashHistory.__proto__ = History;
- HashHistory.prototype = Object.create( History && History.prototype );
- HashHistory.prototype.constructor = HashHistory;
-
- HashHistory.prototype.checkFallback = function checkFallback () {
- var location = getLocation(this.base)
- if (!/^\/#/.test(location)) {
- window.location.replace(
- cleanPath(this.base + '/#' + location)
- )
- return true
- }
- };
-
- HashHistory.prototype.onHashChange = function onHashChange () {
- if (!ensureSlash()) {
- return
- }
- this.transitionTo(getHash(), function (route) {
- replaceHash(route.fullPath)
- })
- };
-
- HashHistory.prototype.push = function push (location) {
- this.transitionTo(location, function (route) {
- pushHash(route.fullPath)
- })
- };
-
- HashHistory.prototype.replace = function replace (location) {
- this.transitionTo(location, function (route) {
- replaceHash(route.fullPath)
- })
- };
-
- HashHistory.prototype.go = function go (n) {
- window.history.go(n)
- };
-
- HashHistory.prototype.ensureURL = function ensureURL () {
- if (getHash() !== this.current.fullPath) {
- replaceHash(this.current.fullPath)
- }
- };
-
- return HashHistory;
- }(History));
-
- function ensureSlash () {
- var path = getHash()
- if (path.charAt(0) === '/') {
- return true
- }
- replaceHash('/' + path)
- return false
- }
-
- function getHash () {
- // We can't use window.location.hash here because it's not
- // consistent across browsers - Firefox will pre-decode it!
- var href = window.location.href
- var index = href.indexOf('#')
- return index === -1 ? '' : href.slice(index + 1)
- }
-
- function pushHash (path) {
- window.location.hash = path
- }
-
- function replaceHash (path) {
- var i = window.location.href.indexOf('#')
- window.location.replace(
- window.location.href.slice(0, i >= 0 ? i : 0) + '#' + path
- )
- }
-
- /* */
-
-
- var AbstractHistory = (function (History) {
- function AbstractHistory (router) {
- History.call(this, router)
- this.stack = []
- this.index = -1
- }
-
- if ( History ) AbstractHistory.__proto__ = History;
- AbstractHistory.prototype = Object.create( History && History.prototype );
- AbstractHistory.prototype.constructor = AbstractHistory;
-
- AbstractHistory.prototype.push = function push (location) {
- var this$1 = this;
-
- this.transitionTo(location, function (route) {
- this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route)
- this$1.index++
- })
- };
-
- AbstractHistory.prototype.replace = function replace (location) {
- var this$1 = this;
-
- this.transitionTo(location, function (route) {
- this$1.stack = this$1.stack.slice(0, this$1.index).concat(route)
- })
- };
-
- AbstractHistory.prototype.go = function go (n) {
- var this$1 = this;
-
- var targetIndex = this.index + n
- if (targetIndex < 0 || targetIndex >= this.stack.length) {
- return
- }
- var route = this.stack[targetIndex]
- this.confirmTransition(route, function () {
- this$1.index = targetIndex
- this$1.updateRoute(route)
- })
- };
-
- AbstractHistory.prototype.ensureURL = function ensureURL () {
- // noop
- };
-
- return AbstractHistory;
- }(History));
-
- /* */
-
- var VueRouter = function VueRouter (options) {
- if ( options === void 0 ) options = {};
-
- this.app = null
- this.options = options
- this.beforeHooks = []
- this.afterHooks = []
- this.match = createMatcher(options.routes || [])
-
- var mode = options.mode || 'hash'
- this.fallback = mode === 'history' && !supportsHistory
- if (this.fallback) {
- mode = 'hash'
- }
- if (!inBrowser) {
- mode = 'abstract'
- }
- this.mode = mode
- };
-
- var prototypeAccessors = { currentRoute: {} };
-
- prototypeAccessors.currentRoute.get = function () {
- return this.history && this.history.current
- };
-
- VueRouter.prototype.init = function init (app /* Vue component instance */) {
- var this$1 = this;
-
- assert(
- install.installed,
- "not installed. Make sure to call `Vue.use(VueRouter)` " +
- "before creating root instance."
- )
-
- this.app = app
-
- var ref = this;
- var mode = ref.mode;
- var options = ref.options;
- var fallback = ref.fallback;
- switch (mode) {
- case 'history':
- this.history = new HTML5History(this, options.base)
- break
- case 'hash':
- this.history = new HashHistory(this, options.base, fallback)
- break
- case 'abstract':
- this.history = new AbstractHistory(this)
- break
- default:
- assert(false, ("invalid mode: " + mode))
- }
-
- this.history.listen(function (route) {
- this$1.app._route = route
- })
- };
-
- VueRouter.prototype.beforeEach = function beforeEach (fn) {
- this.beforeHooks.push(fn)
- };
-
- VueRouter.prototype.afterEach = function afterEach (fn) {
- this.afterHooks.push(fn)
- };
-
- VueRouter.prototype.push = function push (location) {
- this.history.push(location)
- };
-
- VueRouter.prototype.replace = function replace (location) {
- this.history.replace(location)
- };
-
- VueRouter.prototype.go = function go (n) {
- this.history.go(n)
- };
-
- VueRouter.prototype.back = function back () {
- this.go(-1)
- };
-
- VueRouter.prototype.forward = function forward () {
- this.go(1)
- };
-
- VueRouter.prototype.getMatchedComponents = function getMatchedComponents () {
- if (!this.currentRoute) {
- return []
- }
- return [].concat.apply([], this.currentRoute.matched.map(function (m) {
- return Object.keys(m.components).map(function (key) {
- return m.components[key]
- })
- }))
- };
-
- Object.defineProperties( VueRouter.prototype, prototypeAccessors );
-
- VueRouter.install = install
-
- if (inBrowser && window.Vue) {
- window.Vue.use(VueRouter)
- }
-
- return VueRouter;
-
- })));
-
- /***/ },
- /* 304 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(217);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-28c275d9!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Fingerprint.vue", function() {
- var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-28c275d9!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Fingerprint.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 305 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(218);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-3e659d19!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Passwords.vue", function() {
- var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-3e659d19!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Passwords.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 306 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(219);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-4e146d4e!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./PasswordGenerator.vue", function() {
- var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-4e146d4e!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./PasswordGenerator.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 307 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(220);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-7d2a5ef8!./../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./LessPass.vue", function() {
- var newContent = require("!!./../node_modules/css-loader/index.js!./../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-7d2a5ef8!./../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./LessPass.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 308 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(221);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-e2e1cfd0!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./DeleteButton.vue", function() {
- var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-e2e1cfd0!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./DeleteButton.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 309 */
- /***/ function(module, exports, __webpack_require__) {
-
- // style-loader: Adds some css to the DOM by adding a <style> tag
-
- // load the styles
- var content = __webpack_require__(222);
- if(typeof content === 'string') content = [[module.i, content, '']];
- // add the styles to the DOM
- var update = __webpack_require__(20)(content, {});
- if(content.locals) module.exports = content.locals;
- // Hot Module Replacement
- if(false) {
- // When the styles change, update the <style> tags
- if(!content.locals) {
- module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-eabada8c!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Menu.vue", function() {
- var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-eabada8c!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Menu.vue");
- if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
- update(newContent);
- });
- }
- // When the module is disposed, remove the <style> tags
- module.hot.dispose(function() { update(); });
- }
-
- /***/ },
- /* 310 */,
- /* 311 */,
- /* 312 */,
- /* 313 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- 'use strict';
-
- var _vue = __webpack_require__(47);
-
- var _vue2 = _interopRequireDefault(_vue);
-
- __webpack_require__(121);
-
- __webpack_require__(122);
-
- __webpack_require__(123);
-
- var _LessPass = __webpack_require__(124);
-
- var _LessPass2 = _interopRequireDefault(_LessPass);
-
- var _store = __webpack_require__(120);
-
- var _store2 = _interopRequireDefault(_store);
-
- var _router = __webpack_require__(119);
-
- var _router2 = _interopRequireDefault(_router);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- new _vue2.default({
- el: '#lesspass',
- store: _store2.default,
- router: _router2.default,
- render: function render(h) {
- return h(_LessPass2.default);
- }
- });
-
- /***/ }
- ],[313]);
|