From fc65d66703b6f9111364c5a8081d73973f916db6 Mon Sep 17 00:00:00 2001 From: lzxb <1340641314@qq.com> Date: Mon, 26 Jun 2017 22:35:49 +0800 Subject: [PATCH 1/3] fix:module names --- dist/vuet.js | 14 ++++---------- dist/vuet.js.map | 2 +- dist/vuet.min.js | 2 +- dist/vuet.min.js.map | 2 +- docs/zh-cn/instance-attr.md | 3 +++ src/rules/manual.js | 12 ++---------- src/vuet.js | 2 ++ test/unit/vuet.test.js | 28 ++++++++++++++++++++++++++++ 8 files changed, 42 insertions(+), 23 deletions(-) diff --git a/dist/vuet.js b/dist/vuet.js index a52b5af..92af366 100644 --- a/dist/vuet.js +++ b/dist/vuet.js @@ -393,16 +393,9 @@ var manual = { return (_$vuet2 = _this.$vuet).fetch.apply(_$vuet2, [path].concat(arg)); }; - if (name) { - this[name] = methods; - } else if (manuals.name) { - this[manuals.name] = methods; - } else { - var arr = path.split(this.$vuet._options.pathJoin); - var _name = '$' + arr[arr.length - 1]; - var $methods = this[_name] = {}; - Object.assign($methods, methods); - } + var newName = name || manuals.name || '$' + this.$vuet.store[path].__name__; + console.log(newName); + this[newName] = methods; } }; } @@ -644,6 +637,7 @@ var Vuet$1 = function () { } _this._options.modules[newPath] = item; _this.reset(newPath); + utils.set(_this.store[newPath], '__name__', k); } if (keys.indexOf(k) === -1 && utils.isObject(item)) { initModule(_path, item); diff --git a/dist/vuet.js.map b/dist/vuet.js.map index 6e5b107..2c56b71 100644 --- a/dist/vuet.js.map +++ b/dist/vuet.js.map @@ -1 +1 @@ -{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n if (name) {\n this[name] = methods\n } else if (manuals.name) {\n this[manuals.name] = methods\n } else {\n const arr = path.split(this.$vuet._options.pathJoin)\n const name = `$${arr[arr.length - 1]}`\n const $methods = this[name] = {}\n Object.assign($methods, methods)\n }\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","arr","split","pathJoin","$methods","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":";;;;;;AAAA,IAAMA,WAAWC,OAAOC,SAAP,CAAiBF,QAAlC;;AAEA,IAAMG,cAAc,CAAC,QAAD,EAAW,UAAX,EAAuB,QAAvB,EAAiC,WAAjC,EAA8C,MAA9C,CAApB;;AAEA,IAAMC,QAAQ;aAAA,yBACG;QACTC,MAAM,EAAV;QACMC,OAAOC,SAAb;QACIH,MAAMI,QAAN,CAAeF,KAAK,CAAL,CAAf,CAAJ,EAA6B;UACvBA,KAAK,CAAL,CAAJ,IAAeA,KAAKG,MAAL,GAAc,CAAd,GAAkBH,KAAK,CAAL,CAAlB,GAA4BA,KAAK,CAAL,CAA3C;KADF,MAEO,IAAIA,KAAK,CAAL,KAAWF,MAAMM,QAAN,CAAeJ,KAAK,CAAL,CAAf,CAAf,EAAwC;YACvCA,KAAK,CAAL,CAAN;;WAEKD,GAAP;GATU;KAAA,eAWPM,GAXO,EAWFC,GAXE,EAWGC,KAXH,EAWU;WACbC,cAAP,CAAsBH,GAAtB,EAA2BC,GAA3B,EAAgC;kBAAA;kBAElB,KAFkB;gBAGpB,IAHoB;oBAIhB;KAJhB;;CAZJ;;;AAsBAT,YAAYY,OAAZ,CAAoB,gBAAQ;MACpBC,0BAAwBC,IAAxB,MAAN;eACWA,IAAX,IAAqB,eAAO;WACnBjB,SAASkB,IAAT,CAAcP,GAAd,MAAuBK,UAA9B;GADF;CAFF,EAOA;;ACjCA,YAAe;OAAA,iBACNG,GADM,EACD;UACJ,IAAIC,KAAJ,aAAoBD,GAApB,CAAN;GAFW;MAAA,gBAIPA,GAJO,EAIF;QACLE,QAAQC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;aAClCC,OAAP,KAAmB,WAAnB,IAAkCA,QAAQC,IAAR,aAAuBN,GAAvB,CAAlC;;;CANN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACGA,IAAMO,QAAQ,oBAAd;AACA,IAAMC,UAAU,sBAAhB;;IAEMC;sBACSvB,GAAb,EAAkB;;;SACXwB,GAAL,GAAW,IAAX;SACKC,IAAL,GAAY,IAAZ;SACKC,IAAL,GAAY,IAAZ;SACKC,KAAL,GAAa,IAAb;SACKC,OAAL,GAAe,IAAf;SACKC,SAAL,CAAe7B,GAAf;SACK8B,QAAL;SACKC,SAAL;;;;;2BAEM/B,KAAK;WACN6B,SAAL,CAAe7B,GAAf;WACK8B,QAAL;;;;8BAES;WACJN,GAAL,CAASQ,mBAAT,CAA6B,QAA7B,EAAuC,KAAKC,YAA5C,EAA0D,KAA1D;;;;8BAESjC,KAAK;WACTwB,GAAL,GAAWxB,IAAIwB,GAAf;WACKC,IAAL,GAAYzB,IAAIyB,IAAhB;WACKC,IAAL,GAAY1B,IAAI0B,IAAJ,IAAY,IAAxB;WACKC,KAAL,GAAa3B,IAAI2B,KAAJ,IAAa,IAA1B;WACKC,OAAL,GAAe5B,IAAI4B,OAAJ,IAAeM,aAAalC,GAAb,CAA9B;eACSkC,YAAT,CAAuBlC,GAAvB,EAA4B;YACtB,CAACA,IAAI2B,KAAJ,CAAUQ,OAAf,EAAwB;eACjBC,GAAL,CAASpC,IAAI2B,KAAb,EAAoB,SAApB,EAA+B,EAA/B;;YAEE,CAAC3B,IAAI2B,KAAJ,CAAUQ,OAAV,CAAkBnC,IAAI0B,IAAtB,CAAL,EAAkC;eAC3BU,GAAL,CAASpC,IAAI2B,KAAJ,CAAUQ,OAAnB,EAA4BnC,IAAI0B,IAAhC,EAAsC,EAAEW,GAAG,CAAL,EAAQC,GAAG,CAAX,EAAtC;;;eAGKtC,IAAI2B,KAAJ,CAAUQ,OAAV,CAAkBnC,IAAI0B,IAAtB,CAAP;;;;;+BAGQ;UACFF,GADE,GACe,IADf,CACFA,GADE;UACGI,OADH,GACe,IADf,CACGA,OADH;;UAEN,eAAeJ,GAAf,IAAsBA,QAAQe,MAAlC,EAA0C;YACpCC,UAAJ,GAAiBZ,QAAQS,CAAzB;YACII,SAAJ,GAAgBb,QAAQU,CAAxB;OAFF,MAGO;YACDR,QAAJ,CAAaF,QAAQS,CAArB,EAAwBT,QAAQU,CAAhC;;;;;gCAGS;;;UACHd,GADG,GACK,IADL,CACHA,GADG;;UAELkB,aAAa,EAAnB;WACKT,YAAL,GAAoB,iBAAS;YACvBT,QAAQe,MAAZ,EAAoB;qBACPF,CAAX,GAAeE,OAAOI,WAAtB;qBACWL,CAAX,GAAeC,OAAOK,WAAtB;SAFF,MAGO;8BACuDC,MAAMC,MAD7D;cACGL,SADH,iBACGA,SADH;cACcD,UADd,iBACcA,UADd;cAC0BG,WAD1B,iBAC0BA,WAD1B;cACuCC,WADvC,iBACuCA,WADvC;;qBAEMP,CAAX,GAAeG,cAAcI,WAAd,IAA6BJ,UAA5C;qBACWF,CAAX,GAAeG,aAAaE,WAAb,IAA4BF,SAA3C;;YAEIlC,iBAAe,MAAKkB,IAApB,SAA4B,MAAKC,IAAvC;qBACa,MAAKnB,GAAL,CAAb;cACKA,GAAL,IAAYwC,WAAW,YAAM;iBACpBC,MAAP,CAAc,MAAKpB,OAAnB,EAA4Bc,UAA5B;iBACO,MAAKnC,GAAL,CAAP;SAFU,EAGT,EAHS,CAAZ;OAXF;UAgBI0C,gBAAJ,CAAqB,QAArB,EAA+B,KAAKhB,YAApC,EAAkD,KAAlD;;;;;;AAIJ,SAASiB,MAAT,CAAiBC,SAAjB,EAA4B;SACnBA,UAAUZ,MAAV,KAAqB,IAArB,IAA6BY,UAAUC,IAA9C;;;AAGF,SAASC,QAAT,CAAmBF,SAAnB,EAA8B;SACrBA,UAAUZ,MAAjB;;;AAGF,aAAe;UAAA,oBACHe,EADG,QACuBC,KADvB,EAC8B;QAA3BJ,SAA2B,QAA3BA,SAA2B;QAAhB3C,KAAgB,QAAhBA,KAAgB;;QACrC,OAAOA,MAAMiB,IAAb,KAAsB,QAA1B,EAAoC,OAAO+B,MAAMC,KAAN,CAAY,iDAAZ,CAAP;QAChCjD,MAAMiB,IAAN,KAAe,QAAnB,EAA6B,OAAO+B,MAAMC,KAAN,CAAY,gCAAZ,CAAP;QACzBP,OAAOC,SAAP,CAAJ,EAAuB;UACjB,OAAO3C,MAAMkB,IAAb,KAAsB,QAA1B,EAAoC,OAAO8B,MAAMC,KAAN,CAAY,iDAAZ,CAAP;SACjCpC,KAAH,IAAY,IAAIE,UAAJ,CAAe;aACpB+B,EADoB;cAEnB9C,MAAMiB,IAFa;cAGnBjB,MAAMkB,IAHa;eAIlB6B,MAAMG,OAAN,CAAcC,KAAd,CAAoBhC,KAApB,CAA0BnB,MAAMiB,IAAhC,CAJkB;iBAKhBjB,MAAM4C;OALL,CAAZ;;QAQEC,SAASF,SAAT,CAAJ,EAAyB;SACpB7B,OAAH,IAAc,IAAIC,UAAJ,CAAe;aACtBgB,MADsB;cAErB/B,MAAMiB,IAFe;cAGrB,QAHqB;eAIpB8B,MAAMG,OAAN,CAAcC,KAAd,CAAoBhC,KAApB,CAA0BnB,MAAMiB,IAAhC,CAJoB;iBAKlBjB,MAAM+B,MAAN,IAAgB;OALb,CAAd;;GAfS;kBAAA,4BAwBKe,EAxBL,SAwB+BC,KAxB/B,EAwBsC;QAA3BJ,SAA2B,SAA3BA,SAA2B;QAAhB3C,KAAgB,SAAhBA,KAAgB;;QAC7C0C,OAAOC,SAAP,CAAJ,EAAuB;SAClB9B,KAAH,EAAUuC,MAAV,CAAiB;aACVN,EADU;cAET9C,MAAMiB,IAFG;cAGTjB,MAAMkB,IAHG;eAIR6B,MAAMG,OAAN,CAAcC,KAAd,CAAoBhC,KAApB,CAA0BnB,MAAMiB,IAAhC,CAJQ;iBAKNjB,MAAM4C;OALjB;;QAQEC,SAASF,SAAT,CAAJ,EAAyB;SACpB7B,OAAH,EAAYsC,MAAZ,CAAmB;aACZrB,MADY;cAEX/B,MAAMiB,IAFK;cAGX,QAHW;eAIV8B,MAAMG,OAAN,CAAcC,KAAd,CAAoBhC,KAApB,CAA0BnB,MAAMiB,IAAhC,CAJU;iBAKRjB,MAAM+B,MAAN,IAAgB;OAL3B;;GAnCS;QAAA,kBA4CLe,EA5CK,SA4Cc;QAAbH,SAAa,SAAbA,SAAa;;QACrBD,OAAOC,SAAP,CAAJ,EAAuB;SAClB9B,KAAH,EAAUwC,OAAV;aACOP,GAAGjC,KAAH,CAAP;;QAEEgC,SAASF,SAAT,CAAJ,EAAyB;SACpB7B,OAAH,EAAYuC,OAAZ;aACOP,GAAGhC,OAAH,CAAP;;;CAnDN;;AC9EO,IAAIwC,OAAO,IAAX;;AAEP,AAAe,SAASC,OAAT,CAAkBC,GAAlB,EAAuB;MAChCD,QAAQE,SAAZ,EAAuB;UACfA,SAAR,GAAoB,IAApB;SACOD,GAAP;SACOvD,cAAP,CAAsBuD,IAAInE,SAA1B,EAAqC,OAArC,EAA8C;OAAA,iBACrC;aAAS,KAAKqE,KAAL,CAAWC,KAAlB;;GADX;MAGIC,KAAJ,CAAU;gBAAA,0BACQ;UACV,CAACrE,MAAMsE,WAAN,CAAkB,KAAKC,QAAL,CAAcC,IAAhC,CAAL,EAA4C;aACrCJ,KAAL,GAAa,KAAKG,QAAL,CAAcC,IAA3B;aACKJ,KAAL,CAAWK,KAAX,CAAiB,IAAjB;;KAJI;aAAA,uBAOK;UACP,CAACzE,MAAMsE,WAAN,CAAkB,KAAKC,QAAL,CAAcC,IAAhC,CAAL,EAA4C;aACrCJ,KAAL,GAAa,KAAKG,QAAL,CAAcC,IAA3B;aACKJ,KAAL,CAAWN,OAAX,CAAmB,IAAnB;;;GAVN;MAcIY,SAAJ,CAAc,aAAd,EAA6BC,MAA7B;;;AC1BF,WAAe;MAAA,sBACG;QAARjD,IAAQ,QAARA,IAAQ;;WACP;kBAAA,0BACW;aACTkC,KAAL,CAAWgB,KAAX,CAAiBlD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAvB;OAFG;eAAA,uBAIQ;aACNjB,KAAL,CAAWkB,KAAX,CAAiBpD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAvB;;KALJ;;CAFJ;;ACAA,aAAe;MAAA,sBACS;QAAdnD,IAAc,QAAdA,IAAc;QAARC,IAAQ,QAARA,IAAQ;;WACb;kBAAA,0BACW;;;oCACW,KAAKiC,KAAL,CAAWmB,QAAX,CAAoBC,OAApB,CAA4BtD,IAA5B,CADX,CACNuD,OADM;YACNA,OADM,yCACI,EADJ;;YAERC,UAAU,EAAhB;eACOC,IAAP,CAAYF,OAAZ,EAAqBtE,OAArB,CAA6B,aAAK;cAC1ByE,KAAKH,QAAQI,CAAR,CAAX;cACI,OAAOD,EAAP,KAAc,UAAlB,EAA8B;yBACjBC,CAAX,IAAkB,YAAY;gDAARC,GAAQ;mBAAA;;;qBACrBF,GAAGG,KAAH,CAASL,OAAT,GAAmB;uBACjB,MAAKtB,KAAL,CAAW4B,QAAX,CAAoB9D,IAApB,CADiB;yBAAA;sBAGlB,MAAKkC;eAHN,SAID0B,GAJC,EAAP;aADF;;SAHJ;gBAYQR,KAAR,GAAgB,YAAY;;;6CAARQ,GAAQ;eAAA;;;iBACnB,gBAAK1B,KAAL,EAAWkB,KAAX,gBAAiBpD,IAAjB,SAA0B4D,GAA1B,EAAP;SADF;gBAGQV,KAAR,GAAgB,YAAY;;;6CAARU,GAAQ;eAAA;;;iBACnB,iBAAK1B,KAAL,EAAWgB,KAAX,iBAAiBlD,IAAjB,SAA0B4D,GAA1B,EAAP;SADF;YAGI3D,IAAJ,EAAU;eACHA,IAAL,IAAauD,OAAb;SADF,MAEO,IAAID,QAAQtD,IAAZ,EAAkB;eAClBsD,QAAQtD,IAAb,IAAqBuD,OAArB;SADK,MAEA;cACCO,MAAM/D,KAAKgE,KAAL,CAAW,KAAK9B,KAAL,CAAWmB,QAAX,CAAoBY,QAA/B,CAAZ;cACMhE,cAAW8D,IAAIA,IAAIpF,MAAJ,GAAa,CAAjB,CAAjB;cACMuF,WAAW,KAAKjE,KAAL,IAAa,EAA9B;iBACOsB,MAAP,CAAc2C,QAAd,EAAwBV,OAAxB;;;KA9BN;;CAFJ;;ACAA,WAAe;MAAA,sBACG;QAARxD,IAAQ,QAARA,IAAQ;;WACP;kBAAA,0BACW;aACTkC,KAAL,CAAWgB,KAAX,CAAiBlD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAvB;;KAFJ;;CAFJ;;ACEA,IAAMlD,OAAO,MAAb;AACA,IAAMnB,aAAWmB,IAAX,OAAN;;AAEA,WAAe;MAAA,gBACP6C,IADO,EACD;UACJnC,GAAN,CAAUmC,IAAV,EAAgBhE,GAAhB,EAAqB,EAArB;WACO2E,IAAP,CAAYX,KAAK5C,KAAjB,EAAwBjB,OAAxB,CAAgC,aAAK;YAC7B0B,GAAN,CAAUmC,KAAKhE,GAAL,CAAV,EAAqB6E,CAArB,EAAwB,KAAxB;KADF;GAHW;MAAA,sBAOG;QAAR3D,IAAQ,QAARA,IAAQ;;WACP;kBAAA,0BACW;;;YACV,KAAKkC,KAAL,CAAWpD,GAAX,EAAgBkB,IAAhB,MAA0B,KAA9B,EAAqC;eAC9BkC,KAAL,CAAWgB,KAAX,CAAiBlD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAvB,EAA0CgB,IAA1C,CAA+C,YAAM;kBAC9CjC,KAAL,CAAWpD,GAAX,EAAgBkB,IAAhB,IAAwB,IAAxB;WADF;;;KAHN;;CARJ;;ACHO,IAAMoE,QAAQ,OAAd;AACP,AAAO,IAAMC,cAAYD,KAAZ,OAAN;;AAEP,YAAe;MAAA,gBACPtB,IADO,EACD;UACJnC,GAAN,CAAUmC,IAAV,EAAgBuB,IAAhB,EAAsB;gBACV,EADU;eAEX;KAFX;WAIOZ,IAAP,CAAYX,KAAK5C,KAAjB,EAAwBjB,OAAxB,CAAgC,gBAAQ;YAChC0B,GAAN,CAAUmC,KAAKuB,IAAL,EAAWC,QAArB,EAA+BtE,IAA/B,EAAqC,EAArC;YACMW,GAAN,CAAUmC,KAAKuB,IAAL,EAAWlE,OAArB,EAA8BH,IAA9B,EAAoC,EAApC;KAFF;GANW;MAAA,sBAWG;QAARA,IAAQ,QAARA,IAAQ;;;aAELuE,eAAT,CAA0BC,EAA1B,EAA8B;UACpB9D,OADoB,GACR8D,GAAGtC,KAAH,CAAShC,KAAT,CAAeF,IAAf,CADQ,CACpBU,OADoB;;UAExBA,OAAJ,EAAa;eACJ+C,IAAP,CAAY/C,OAAZ,EAAqBzB,OAArB,CAA6B,aAAK;kBACxB0E,CAAR,EAAW/C,CAAX,GAAe,CAAf;kBACQ+C,CAAR,EAAW9C,CAAX,GAAe,CAAf;kBACQ8C,CAAR,EAAWc,KAAX,GAAmB/D,QAAQiD,CAAR,EAAWc,KAAX,GAAmB,EAAE/D,QAAQiD,CAAR,EAAWc,KAAhC,GAAwC,CAA3D;SAHF;;;;;aASKC,aAAT,CAAwB5B,IAAxB,EAA8B;aACrBA,KAAKuB,IAAL,EAAWC,QAAX,CAAoBtE,IAApB,CAAP;;aAEO2E,aAAT,CAAwB7B,IAAxB,EAA8B8B,GAA9B,EAAmC;WAC5BP,IAAL,EAAWC,QAAX,CAAoBtE,IAApB,IAA4B4E,GAA5B;;aAEOC,SAAT,GAAoC;UAAhBhG,GAAgB,uEAAV,EAAU;UAANiG,IAAM;;UAC9B,OAAOA,IAAP,KAAgB,QAApB,EAA8B;eACrB,CAACA,IAAD,CAAP;;UAEIC,YAAY,SAAZA,SAAY,CAAClG,GAAD,EAAMmG,GAAN,EAAc;YACxBjB,MAAMiB,IAAIhB,KAAJ,CAAU,GAAV,CAAZ;YACI/E,OAAJ,CAAY,aAAK;gBACTJ,IAAI8E,CAAJ,CAAN;SADF;eAGO9E,GAAP;OALF;UAOMkF,MAAM,EAAZ;WACK9E,OAAL,CAAa,eAAO;YACdF,QAAQgG,UAAUlG,GAAV,EAAe+F,GAAf,CAAZ;YACI,CAACK,MAAMlG,KAAN,CAAL,EAAmB;kBACTmG,OAAOnG,KAAP,CAAR;;YAEEoG,IAAJ,CAASC,KAAKC,SAAL,CAAetG,KAAf,CAAT;OALF;aAOOgF,GAAP;;;aAGOuB,SAAT,CAAoBC,EAApB,EAAwBC,IAAxB,EAA8B;WACvB,IAAIC,IAAI,CAAb,EAAgBA,IAAIF,GAAG5G,MAAvB,EAA+B8G,GAA/B,EAAoC;YAC9BF,GAAGE,CAAH,MAAUD,KAAKC,CAAL,CAAd,EAAuB;iBACd,IAAP;;;aAGG,KAAP;;;WAGK;kBAAA,0BACW;;;oCACsB,KAAKvD,KAAL,CAAWmB,QAAX,CAAoBC,OAApB,CAA4BtD,IAA5B,CADtB,CACN0F,UADM;YACNA,UADM,yCACO,UADP;;YAERC,UAAUd,UAAU,KAAKe,MAAf,EAAuBF,UAAvB,CAAhB;YACMG,QAAQP,UAAUK,OAAV,EAAmBjB,cAAc,KAAKxC,KAAnB,CAAnB,CAAd;YACI2D,KAAJ,EAAW;eACJ3D,KAAL,CAAWkB,KAAX,CAAiBpD,IAAjB;wBACc,KAAKkC,KAAnB,EAA0ByD,OAA1B;0BACgB,IAAhB;;aAEGzD,KAAL,CAAWgB,KAAX,CAAiBlD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAiBuC,YAAYG,KAA7B,EAAvB,EAA6D,KAA7D,EAAoE1B,IAApE,CAAyE,UAAC2B,GAAD,EAAS;cAC5ER,UAAUK,OAAV,EAAmBd,UAAU,MAAKe,MAAf,EAAuBF,UAAvB,CAAnB,CAAJ,EAA4D;gBACvDxD,KAAL,CAAW6D,QAAX,CAAoB/F,IAApB,EAA0B8F,GAA1B;wBACc,MAAK5D,KAAnB,EAA0ByD,OAA1B;SAHF;OAVG;;aAgBE;gBACG;gBACA,IADA;iBAAA,mBAEGJ,EAFH,EAEOC,IAFP,EAEa;;;yCACmB,KAAKtD,KAAL,CAAWmB,QAAX,CAAoBC,OAApB,CAA4BtD,IAA5B,CADnB,CACT0F,UADS;gBACTA,UADS,0CACI,UADJ;;gBAEXC,UAAUd,UAAUU,EAAV,EAAcG,UAAd,CAAhB;gBACMM,YAAYnB,UAAUW,IAAV,EAAgBE,UAAhB,CAAlB;gBACMG,QAAQP,UAAUK,OAAV,EAAmBK,SAAnB,CAAd;gBACI,CAACH,KAAL,EAAY,OAAO,KAAP;iBACP3D,KAAL,CAAWgB,KAAX,CAAiBlD,IAAjB,EAAuB,EAAEmD,SAAS,IAAX,EAAiBuC,YAAYG,KAA7B,EAAvB,EAA6D1B,IAA7D,CAAkE,UAAC2B,GAAD,EAAS;kBACrER,UAAUK,OAAV,EAAmBd,UAAU,OAAKe,MAAf,EAAuBF,UAAvB,CAAnB,CAAJ,EAA4D;;qBAEvDxD,KAAL,CAAW6D,QAAX,CAAoB/F,IAApB,EAA0B8F,GAA1B;4BACc,OAAK5D,KAAnB,EAA0ByD,OAA1B;aAJF;;;;KAzBR;;CA9DJ;;ACCe,SAASrD,SAAT,CAAkBD,IAAlB,EAAwB4D,IAAxB,EAA8B;OAExCC,IADH,CACQ,MADR,EACgBC,IADhB,EAEGD,IAFH,CAEQ,QAFR,EAEkBE,MAFlB,EAGGF,IAHH,CAGQ,MAHR,EAGgBG,IAHhB,EAIGH,IAJH,CAIQ,MAJR,EAIgBI,IAJhB,EAKGJ,IALH,CAKQ,OALR,EAKiBK,KALjB;;;ICFmBN;gBACNO,OAAb,EAAsB;;;QAChB,CAACnE,IAAL,EAAW;YACHL,KAAN,CAAY,0DAAZ;;QAEE,OAAOyE,OAAP,KAAmB,WAAvB,EAAoC;YAC5BzE,KAAN,CAAY,kDAAZ;;QAEE,CAAC1D,MAAMM,QAAN,CAAe4H,OAAf,CAAL,EAA8B;YACtBxE,KAAN,CAAY,8BAAZ;;SAEGwE,OAAL,GAAeA,WAAW,EAA1B;SACKzG,GAAL,GAAW,IAAX;SACKG,KAAL,GAAa,EAAb;SACKwG,WAAL,GAAmB,EAAnB,CAboB;SAcfC,UAAL,GAAkB,EAAlB,CAdoB;SAefnC,EAAL,GAAU,IAAV;;;;;+BAEUd,IAAI;WACTgD,WAAL,CAAiBvB,IAAjB,CAAsBzB,EAAtB;aACO,IAAP;;;;8BAESA,IAAI;WACRiD,UAAL,CAAgBxB,IAAhB,CAAqBzB,EAArB;aACO,IAAP;;;;0BAEK3D,KAAK;;;UACN,KAAKA,GAAL,IAAY,CAACA,GAAjB,EAAsB;WACjBA,GAAL,GAAWA,GAAX;WACKyE,EAAL,GAAU,IAAInC,IAAJ,CAAS;cACX;iBACG,KAAKnC;;OAFN,CAAV;WAKKmD,QAAL;cACQ,SAASuD,IAAT,GAAiB;iBAAS,EAAP;SAD3B;kBAEY;SACP,KAAKJ,OAHV,EAIK;iBACQ;OALb;UAQM/C,OAAO,CAAC,MAAD,EAAS,OAAT,EAAkB,YAAlB,EAAgC,SAAhC,CAAb;UACQQ,QAjBE,GAiBW,KAAKZ,QAjBhB,CAiBFY,QAjBE;;UAkBJ4C,aAAa,SAAbA,UAAa,CAAC7G,IAAD,EAAOsD,OAAP,EAAmB;eAC7BG,IAAP,CAAYH,OAAZ,EAAqBrE,OAArB,CAA6B,aAAK;cAC1B6H,OAAOxD,QAAQK,CAAR,CAAb;cACMoD,oCAAY/G,IAAZ,IAAkB2D,CAAlB,EAAN;cACIrF,MAAM0I,UAAN,CAAiBF,KAAKF,IAAtB,CAAJ,EAAiC;gBAC3BK,UAAU,IAAd;gBACIhD,QAAJ,EAAc;wBACF8C,MAAMG,IAAN,CAAWjD,QAAX,CAAV;aADF,MAEO;wBACK,CAAC8C,MAAM,CAAN,CAAD,CAAV;mBACK,IAAItB,IAAI,CAAb,EAAgBA,IAAIsB,MAAMpI,MAA1B,EAAkC8G,GAAlC,EAAuC;wBAC7BN,IAAR,CAAa4B,MAAMtB,CAAN,EAAS0B,OAAT,CAAiB,OAAjB,EAA0B,UAACC,CAAD;yBAAOA,EAAEC,WAAF,EAAP;iBAA1B,CAAb;;wBAEQJ,QAAQC,IAAR,CAAa,EAAb,CAAV;;kBAEG7D,QAAL,CAAcC,OAAd,CAAsB2D,OAAtB,IAAiCH,IAAjC;kBACK1D,KAAL,CAAW6D,OAAX;;cAEExD,KAAK6D,OAAL,CAAa3D,CAAb,MAAoB,CAAC,CAArB,IAA0BrF,MAAMM,QAAN,CAAekI,IAAf,CAA9B,EAAoD;uBACvCC,KAAX,EAAkBD,IAAlB;;SAlBJ;OADF;iBAuBW,EAAX,EAAe,KAAKN,OAAL,CAAalD,OAA5B;mBACa,MAAb,EAAqB,IAArB;;;;6BAEQtD,MAAM;aACP,KAAKE,KAAL,CAAWF,IAAX,KAAoB,EAA3B;;;;6BAEQA,MAAMuH,UAAU;UACpB,CAACjJ,MAAMM,QAAN,CAAe2I,QAAf,CAAL,EAA+B,OAAO,IAAP;UAC3B,CAAC,KAAKrH,KAAL,CAAWF,IAAX,CAAL,EAAuB;aAChBW,GAAL,CAAS,KAAKT,KAAd,EAAqBF,IAArB,EAA2BuH,QAA3B;eACO,IAAP;;aAEKhG,MAAP,CAAc,KAAKrB,KAAL,CAAWF,IAAX,CAAd,EAAgCuH,QAAhC;aACO,IAAP;;;;0BAEKvH,MAAMwH,QAAQC,aAAa;;;UAC1BC,SAAS,KAAKrE,QAAL,CAAcC,OAAd,CAAsBtD,IAAtB,CAAf;UACI,OAAO0H,OAAOxE,KAAd,KAAwB,UAA5B,EAAwC,OAAOuD,QAAQkB,OAAR,CAAgB,KAAK7D,QAAL,CAAc9D,IAAd,CAAhB,CAAP;UAClC4G,OAAO;kBAAA;6BAEEY,MAAb,CAFW;eAGJ,KAAK1D,QAAL,CAAc9D,IAAd,CAHI;eAIJ,KAAKD,GAAL,CAAS6F,MAAT,IAAmB,EAJf;aAKN,KAAK7F;OALZ;UAOM6H,WAAW,SAAXA,QAAW,CAACC,IAAD,EAAkB;0CAARjE,GAAQ;aAAA;;;aAC5B,IAAI6B,IAAI,CAAb,EAAgBA,IAAI,OAAKoC,IAAL,EAAWlJ,MAA/B,EAAuC8G,GAAvC,EAA4C;cACtC,OAAKoC,IAAL,EAAWpC,CAAX,EAAc5B,KAAd,SAA0BD,GAA1B,CAAJ,EAAoC;mBAC3B,KAAP;;;OAHN;UAOIgE,SAAS,aAAT,EAAwBhB,IAAxB,MAAkC,KAAtC,EAA6C,OAAOH,QAAQkB,OAAR,CAAgBf,KAAKkB,KAArB,CAAP;aACtCJ,OAAOxE,KAAP,CAAa9D,IAAb,CAAkB,IAAlB,EAAwBwH,IAAxB,EACNzC,IADM,CACD,eAAO;YACPyD,SAAS,YAAT,EAAuB,IAAvB,EAA6BhB,IAA7B,EAAmCd,GAAnC,MAA4C,KAAhD,EAAuD,OAAOc,KAAKkB,KAAZ;YACnDL,gBAAgB,KAApB,EAA2B,OAAO3B,GAAP;eACtBC,QAAL,CAAc/F,IAAd,EAAoB8F,GAApB;eACOc,KAAKkB,KAAZ;OALK,EAONC,KAPM,CAOA,aAAK;YACNH,SAAS,YAAT,EAAuBI,CAAvB,EAA0BpB,IAA1B,MAAoC,KAAxC,EAA+C,OAAOH,QAAQkB,OAAR,CAAgBf,KAAKkB,KAArB,CAAP;eACxCrB,QAAQwB,MAAR,CAAeD,CAAf,CAAP;OATK,CAAP;;;;0BAYKhI,MAAM;UACL4G,OAAO,KAAKvD,QAAL,CAAcuD,IAAd,CAAmBxH,IAAnB,CAAwB,IAAxB,CAAb;UACMsI,SAAS,KAAKrE,QAAL,CAAcC,OAAd,CAAsBtD,IAAtB,CAAf;UACI1B,MAAM0I,UAAN,CAAiBU,OAAOd,IAAxB,CAAJ,EAAmC;eAC1BrF,MAAP,CAAcqF,IAAd,EAAoBc,OAAOd,IAAP,CAAYxH,IAAZ,CAAiB,IAAjB,EAAuBY,IAAvB,CAApB;;WAEG+F,QAAL,CAAc/F,IAAd,EAAoB4G,IAApB;aACO,IAAP;;;;8BAES;WACJpC,EAAL,CAAQ0D,QAAR;mBACa,SAAb,EAAwB,IAAxB;;;;;;AAIJ/J,OAAOoD,MAAP,CAAc0E,MAAd,EAAoB;WACT;WACA;GAFS;kBAAA;MAAA,gBAKZhG,IALY,EAKNiG,KALM,EAKA;QACZ,KAAKM,OAAL,CAAa2B,KAAb,CAAmBlI,IAAnB,CAAJ,EAA8B,OAAO,IAAP;SACzBuG,OAAL,CAAa2B,KAAb,CAAmBlI,IAAnB,IAA2BiG,KAA3B;iBACa,SAAb,EAAwB7D,IAAxB,EAA8B4D,MAA9B;WACO,IAAP;GATgB;UAAA,sBAWE;uCAAPmC,KAAO;WAAA;;;QACZ7J,MAAMD,MAAM+J,WAAN,CAAkBxE,KAAlB,CAAwB,IAAxB,EAA8BpF,SAA9B,CAAZ;QACM6J,WAAW,EAAjB;QACMC,UAAU,SAAVA,OAAU,CAACC,QAAD,EAAWC,GAAX,EAAmB;UAC3BN,QAAQlC,OAAKO,OAAL,CAAa2B,KAAb,CAAmBK,QAAnB,CAAd;UACI,OAAOC,GAAP,KAAe,QAAnB,EAA6B;iBAClBtD,IAAT,CAAcgD,MAAMjC,IAAN,CAAW,EAAElG,MAAMyI,GAAR,EAAX,CAAd;OADF,MAEO;iBACItD,IAAT,CAAcgD,MAAMjC,IAAN,CAAWuC,GAAX,CAAd;;KALJ;WAQOhF,IAAP,CAAYlF,GAAZ,EAAiBU,OAAjB,CAAyB,oBAAY;UAC7BwJ,MAAMlK,IAAIiK,QAAJ,CAAZ;UACIE,MAAMC,OAAN,CAAcF,GAAd,CAAJ,EAAwB;eACfA,IAAIxJ,OAAJ,CAAY,gBAAQ;kBACjBuJ,QAAR,EAAkB1B,IAAlB;SADK,CAAP;;cAIM0B,QAAR,EAAkBC,GAAlB;KAPF;WASO;cACGH;KADV;GA/BgB;YAAA,wBAmCJ;QACN/J,MAAMD,MAAM+J,WAAN,CAAkBxE,KAAlB,CAAwB,IAAxB,EAA8BpF,SAA9B,CAAZ;QACMmK,WAAW,EAAjB;WACOnF,IAAP,CAAYlF,GAAZ,EAAiBU,OAAjB,CAAyB,aAAK;UACtBe,OAAOzB,IAAIoF,CAAJ,CAAb;eACSA,CAAT,IAAc;WAAA,oBACL;iBACE,KAAKzB,KAAL,CAAWhC,KAAX,CAAiBF,IAAjB,CAAP;SAFU;WAAA,kBAIP4E,GAJO,EAIF;eACH1C,KAAL,CAAWhC,KAAX,CAAiBF,IAAjB,IAAyB4E,GAAzB;;OALJ;KAFF;WAWO,EAAEgE,kBAAF,EAAP;GAjDgB;KAAA,eAmDbC,MAnDa,EAmDLtK,GAnDK,EAmDA;QACZD,MAAM0I,UAAN,CAAiB6B,MAAjB,CAAJ,EAA8B;aACrBxG,IAAP,EAAa4D,MAAb,EAAmB1H,GAAnB;KADF,MAEO,IAAID,MAAM0I,UAAN,CAAiB6B,OAAOvG,OAAxB,CAAJ,EAAsC;aACpCA,OAAP,CAAeD,IAAf,EAAqB4D,MAArB,EAA2B1H,GAA3B;;WAEK,IAAP;;CAzDJ;;AA6DA,SAASuK,YAAT,CAAuBjB,IAAvB,EAAqC;MAC3BM,KAD2B,GACjBlC,OAAKO,OADY,CAC3B2B,KAD2B;;qCAALvE,GAAK;OAAA;;;OAE9B,IAAID,CAAT,IAAcwE,KAAd,EAAqB;QACf7J,MAAM0I,UAAN,CAAiBmB,MAAMxE,CAAN,EAASkE,IAAT,CAAjB,CAAJ,EAAsC;YAC9BlE,CAAN,EAASkE,IAAT,EAAehE,KAAf,CAAqBsE,MAAMxE,CAAN,CAArB,EAA+BC,GAA/B;;;;;AAKNqC,OAAK8C,GAAL,CAASZ,SAAT;;ACxMO,IAAMa,WAAW/C,OAAK+C,QAAL,CAAcC,IAAd,CAAmBhD,MAAnB,CAAjB;AACP,AAAO,IAAMiD,aAAajD,OAAKiD,UAAL,CAAgBD,IAAhB,CAAqBhD,MAArB,CAAnB,CAEP;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.store[path].__name__}`\n console.log(newName)\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n utils.set(this.store[newPath], '__name__', k)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","newName","__name__","log","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","arr","split","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","pathJoin","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vuet.min.js b/dist/vuet.min.js index 08aad75..f63350b 100644 --- a/dist/vuet.min.js +++ b/dist/vuet.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.Vuet=t.Vuet||{})}(this,function(t){"use strict";function e(t){return!0!==t.window||t.self}function n(t){return t.window}function r(t){r.installed||(r.installed=!0,g=t,Object.defineProperty(t.prototype,"$vuet",{get:function(){return this.$root._vuet}}),t.mixin({beforeCreate:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet._init(this))},destroyed:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet.destroy(this))}}),t.directive("vuet-scroll",m))}function o(t,e){e.rule("life",b).rule("manual",$).rule("need",w).rule("once",O).rule("route",k)}function i(t){for(var e=S.options.rules,n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var l={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},c=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var c={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n if (name) {\n this[name] = methods\n } else if (manuals.name) {\n this[manuals.name] = methods\n } else {\n const arr = path.split(this.$vuet._options.pathJoin)\n const name = `$${arr[arr.length - 1]}`\n const $methods = this[name] = {}\n Object.assign($methods, methods)\n }\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","arr","split","pathJoin","$methods","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","_this2","Promise","beforeHooks","afterHooks","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vuet.min.js","sources":["../src/directives/scroll.js","../src/install.js","../src/rules/index.js","../src/vuet.js","../src/utils.js","../src/debug.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/index.js"],"sourcesContent":["import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n utils.set(this.store[newPath], '__name__', k)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.store[path].__name__}`\n console.log(newName)\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","newName","__name__","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","split","arr","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","_this2","Promise","beforeHooks","afterHooks","pathJoin","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/docs/zh-cn/instance-attr.md b/docs/zh-cn/instance-attr.md index 7a65f39..6c3174d 100644 --- a/docs/zh-cn/instance-attr.md +++ b/docs/zh-cn/instance-attr.md @@ -26,6 +26,9 @@ - **vm** - 类型: `只读` - 描述: Vuet内部的Vue实例 +- **name** + - 类型: `只读` + - 描述: 存储了模块的原始名称,`vuet.names['path']`来获取,在开发一些插件时尤其有用 ### Vue组件内注入Vuet实例属性 ```javascript diff --git a/src/rules/manual.js b/src/rules/manual.js index 08c6db6..b067a2e 100644 --- a/src/rules/manual.js +++ b/src/rules/manual.js @@ -22,16 +22,8 @@ export default { methods.fetch = (...arg) => { return this.$vuet.fetch(path, ...arg) } - if (name) { - this[name] = methods - } else if (manuals.name) { - this[manuals.name] = methods - } else { - const arr = path.split(this.$vuet._options.pathJoin) - const name = `$${arr[arr.length - 1]}` - const $methods = this[name] = {} - Object.assign($methods, methods) - } + const newName = name || manuals.name || `$${this.$vuet.names[path]}` + this[newName] = methods } } } diff --git a/src/vuet.js b/src/vuet.js index d2e6926..1f2d17e 100644 --- a/src/vuet.js +++ b/src/vuet.js @@ -17,6 +17,7 @@ export default class Vuet { this.options = options || {} this.app = null this.store = {} + this.names = {} this.beforeHooks = [] // Before the request begins this.afterHooks = [] // After the request begins this.vm = null @@ -64,6 +65,7 @@ export default class Vuet { } this._options.modules[newPath] = item this.reset(newPath) + this.names[newPath] = k } if (keys.indexOf(k) === -1 && utils.isObject(item)) { initModule(_path, item) diff --git a/test/unit/vuet.test.js b/test/unit/vuet.test.js index 0b8131b..2a05804 100644 --- a/test/unit/vuet.test.js +++ b/test/unit/vuet.test.js @@ -322,3 +322,31 @@ test('pathJoin', t => { }) t.is(vm.$vuet, vuet) }) + +test('names', t => { + const vuet = new Vuet({ + modules: { + user: { + data () { + return {} + }, + self: { + data () { + return {} + } + } + } + } + }) + const vm = new Vue({ + vuet + }) + t.deepEqual(vuet.names, { + 'user': 'user', + 'userSelf': 'self' + }) + t.deepEqual(vm.$vuet.names, { + 'user': 'user', + 'userSelf': 'self' + }) +}) From 7cca9b38abfa24763e5e103db45fc02c667080f3 Mon Sep 17 00:00:00 2001 From: lzxb <1340641314@qq.com> Date: Mon, 26 Jun 2017 23:07:21 +0800 Subject: [PATCH 2/3] fix:setState --- dist/vuet.js | 26 ++++++++++++++++---------- dist/vuet.js.map | 2 +- dist/vuet.min.js | 2 +- dist/vuet.min.js.map | 2 +- docs/zh-cn/instance-function.md | 4 ++-- src/vuet.js | 19 ++++++++++++------- 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/dist/vuet.js b/dist/vuet.js index 92af366..7dad8a0 100644 --- a/dist/vuet.js +++ b/dist/vuet.js @@ -393,8 +393,7 @@ var manual = { return (_$vuet2 = _this.$vuet).fetch.apply(_$vuet2, [path].concat(arg)); }; - var newName = name || manuals.name || '$' + this.$vuet.store[path].__name__; - console.log(newName); + var newName = name || manuals.name || '$' + this.$vuet.names[path]; this[newName] = methods; } }; @@ -578,6 +577,7 @@ var Vuet$1 = function () { this.options = options || {}; this.app = null; this.store = {}; + this.names = {}; this.beforeHooks = []; // Before the request begins this.afterHooks = []; // After the request begins this.vm = null; @@ -637,7 +637,7 @@ var Vuet$1 = function () { } _this._options.modules[newPath] = item; _this.reset(newPath); - utils.set(_this.store[newPath], '__name__', k); + _this.names[newPath] = k; } if (keys.indexOf(k) === -1 && utils.isObject(item)) { initModule(_path, item); @@ -655,8 +655,8 @@ var Vuet$1 = function () { }, { key: 'setState', value: function setState(path, newState) { - if (!utils.isObject(newState)) return this; - if (!this.store[path]) { + if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this; + if (!this.store[path] || !utils.isObject(newState)) { _Vue.set(this.store, path, newState); return this; } @@ -702,12 +702,18 @@ var Vuet$1 = function () { }, { key: 'reset', value: function reset(path) { - var data = this._options.data.call(this); - var module = this._options.modules[path]; - if (utils.isFunction(module.data)) { - Object.assign(data, module.data.call(this, path)); + var baseData = this._options.data.call(this); + var data = this._options.modules[path].data; + + if (utils.isFunction(data)) { + var any = data.call(this, path); + if (utils.isObject(any)) { + Object.assign(baseData, any); + this.setState(path, baseData); + } else { + this.setState(path, any); + } } - this.setState(path, data); return this; } }, { diff --git a/dist/vuet.js.map b/dist/vuet.js.map index 2c56b71..a1d2856 100644 --- a/dist/vuet.js.map +++ b/dist/vuet.js.map @@ -1 +1 @@ -{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.store[path].__name__}`\n console.log(newName)\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n utils.set(this.store[newPath], '__name__', k)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","newName","__name__","log","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","arr","split","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","pathJoin","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","newName","names","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","arr","split","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","pathJoin","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","baseData","any","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vuet.min.js b/dist/vuet.min.js index f63350b..68a9007 100644 --- a/dist/vuet.min.js +++ b/dist/vuet.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.Vuet=t.Vuet||{})}(this,function(t){"use strict";function e(t){return!0!==t.window||t.self}function n(t){return t.window}function r(t){r.installed||(r.installed=!0,g=t,Object.defineProperty(t.prototype,"$vuet",{get:function(){return this.$root._vuet}}),t.mixin({beforeCreate:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet._init(this))},destroyed:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet.destroy(this))}}),t.directive("vuet-scroll",m))}function o(t,e){e.rule("life",b).rule("manual",$).rule("need",w).rule("once",O).rule("route",k)}function i(t){for(var e=S.options.rules,n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var c={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var c={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n utils.set(this.store[newPath], '__name__', k)\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (!utils.isObject(newState)) return this\n if (!this.store[path]) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const data = this._options.data.call(this)\n const module = this._options.modules[path]\n if (utils.isFunction(module.data)) {\n Object.assign(data, module.data.call(this, path))\n }\n this.setState(path, data)\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.store[path].__name__}`\n console.log(newName)\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","newName","__name__","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","split","arr","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","_this2","Promise","beforeHooks","afterHooks","pathJoin","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","any","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vuet.min.js","sources":["../src/directives/scroll.js","../src/install.js","../src/rules/index.js","../src/vuet.js","../src/utils.js","../src/debug.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/index.js"],"sourcesContent":["import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","names","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","split","arr","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","_this2","Promise","beforeHooks","afterHooks","pathJoin","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","baseData","any","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/docs/zh-cn/instance-function.md b/docs/zh-cn/instance-function.md index f224db2..1d22077 100644 --- a/docs/zh-cn/instance-function.md +++ b/docs/zh-cn/instance-function.md @@ -55,12 +55,12 @@ }) vuet.getState('myModule') // { count: 0 } ``` -- `setState(path: String, newState: Object)` +- `setState(path: String, newState: any)` - 参数: - `path` 模块的路径,必选参 - `newState` 新的状态,必选参 - 返回值: `this` - - 描述: 设置某个模块的状态 + - 描述: 设置某个模块的状态,设置的内容必须保证和模块的数据类型一致才有效,`Object`类型比较特殊,会和原来的对象进行浅合并 - 例子: ```javascript const vuet = new Vuet({ diff --git a/src/vuet.js b/src/vuet.js index 1f2d17e..80df988 100644 --- a/src/vuet.js +++ b/src/vuet.js @@ -79,8 +79,8 @@ export default class Vuet { return this.store[path] || {} } setState (path, newState) { - if (!utils.isObject(newState)) return this - if (!this.store[path]) { + if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this + if (!this.store[path] || !utils.isObject(newState)) { _Vue.set(this.store, path, newState) return this } @@ -118,12 +118,17 @@ export default class Vuet { }) } reset (path) { - const data = this._options.data.call(this) - const module = this._options.modules[path] - if (utils.isFunction(module.data)) { - Object.assign(data, module.data.call(this, path)) + const baseData = this._options.data.call(this) + const { data } = this._options.modules[path] + if (utils.isFunction(data)) { + const any = data.call(this, path) + if (utils.isObject(any)) { + Object.assign(baseData, any) + this.setState(path, baseData) + } else { + this.setState(path, any) + } } - this.setState(path, data) return this } destroy () { From dc27e780595d286ff9b6e59f1a89b6e88ec60bda Mon Sep 17 00:00:00 2001 From: lzxb <1340641314@qq.com> Date: Mon, 26 Jun 2017 23:27:59 +0800 Subject: [PATCH 3/3] releases:[0.2.3] --- dist/vuet.js | 24 +++++++++++++++++--- dist/vuet.js.map | 2 +- dist/vuet.min.js | 2 +- dist/vuet.min.js.map | 2 +- docs/zh-cn/global-rules.md | 4 ++-- examples/manual/App.vue | 46 +++++++++++++++++++------------------- examples/manual/vuet.js | 44 +++++++++++++----------------------- package.json | 2 +- src/rules/manual.js | 6 +++++ src/vuet.js | 2 +- 10 files changed, 73 insertions(+), 61 deletions(-) diff --git a/dist/vuet.js b/dist/vuet.js index 7dad8a0..5b7d2d4 100644 --- a/dist/vuet.js +++ b/dist/vuet.js @@ -384,14 +384,32 @@ var manual = { return (_$vuet = _this.$vuet).reset.apply(_$vuet, [path].concat(arg)); }; - methods.fetch = function () { + methods.getState = function () { var _$vuet2; for (var _len3 = arguments.length, arg = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { arg[_key3] = arguments[_key3]; } - return (_$vuet2 = _this.$vuet).fetch.apply(_$vuet2, [path].concat(arg)); + return (_$vuet2 = _this.$vuet).getState.apply(_$vuet2, [path].concat(arg)); + }; + methods.setState = function () { + var _$vuet3; + + for (var _len4 = arguments.length, arg = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + arg[_key4] = arguments[_key4]; + } + + return (_$vuet3 = _this.$vuet).setState.apply(_$vuet3, [path].concat(arg)); + }; + methods.fetch = function () { + var _$vuet4; + + for (var _len5 = arguments.length, arg = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + arg[_key5] = arguments[_key5]; + } + + return (_$vuet4 = _this.$vuet).fetch.apply(_$vuet4, [path].concat(arg)); }; var newName = name || manuals.name || '$' + this.$vuet.names[path]; this[newName] = methods; @@ -650,7 +668,7 @@ var Vuet$1 = function () { }, { key: 'getState', value: function getState(path) { - return this.store[path] || {}; + return this.store[path]; } }, { key: 'setState', diff --git a/dist/vuet.js.map b/dist/vuet.js.map index a1d2856..d3f0576 100644 --- a/dist/vuet.js.map +++ b/dist/vuet.js.map @@ -1 +1 @@ -{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","newName","names","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","arr","split","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","pathJoin","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","baseData","any","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vuet.js","sources":["../src/utils.js","../src/debug.js","../src/directives/scroll.js","../src/install.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/rules/index.js","../src/vuet.js","../src/index.js"],"sourcesContent":["const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.getState = (...arg) => {\n return this.$vuet.getState(path, ...arg)\n }\n methods.setState = (...arg) => {\n return this.$vuet.setState(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path]\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["toString","Object","prototype","typeStrings","utils","opt","args","arguments","isString","length","isObject","obj","key","value","defineProperty","forEach","typeString","type","call","msg","Error","process","env","NODE_ENV","console","warn","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","createScroll","$scroll","set","x","y","window","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","setTimeout","assign","addEventListener","isSelf","modifiers","self","isWindow","el","vnode","debug","error","context","$vuet","update","destroy","_Vue","install","Vue","installed","$root","_vuet","mixin","isUndefined","$options","vuet","_init","directive","scroll","fetch","current","reset","_options","modules","manuals","methods","keys","fn","k","arg","apply","getState","setState","newName","names","then","_name","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","arr","split","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","fromWatch","Vuet","rule","life","manual","need","once","route","options","Promise","beforeHooks","afterHooks","data","pathJoin","initModule","item","_path","isFunction","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","hook","state","catch","e","reject","baseData","any","$destroy","rules","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","callRuleHook","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vuet.min.js b/dist/vuet.min.js index 68a9007..74b1c23 100644 --- a/dist/vuet.min.js +++ b/dist/vuet.min.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.Vuet=t.Vuet||{})}(this,function(t){"use strict";function e(t){return!0!==t.window||t.self}function n(t){return t.window}function r(t){r.installed||(r.installed=!0,g=t,Object.defineProperty(t.prototype,"$vuet",{get:function(){return this.$root._vuet}}),t.mixin({beforeCreate:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet._init(this))},destroyed:function(){a.isUndefined(this.$options.vuet)||(this._vuet=this.$options.vuet,this._vuet.destroy(this))}}),t.directive("vuet-scroll",m))}function o(t,e){e.rule("life",b).rule("manual",$).rule("need",w).rule("once",_).rule("route",k)}function i(t){for(var e=S.options.rules,n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var c={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o1?n-1:0),o=1;o1?e[1]:e[0]:e[0]&&a.isObject(e[0])&&(t=e[0]),t},set:function(t,e,n){Object.defineProperty(t,e,{value:n,enumerable:!1,writable:!0,configurable:!1})}};u.forEach(function(t){var e="[object "+t+"]";a["is"+t]=function(t){return s.call(t)===e}});var c={error:function(t){throw new Error("[vuet] "+t)},warn:function(t){}},l=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},f=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=arguments[1];"string"==typeof e&&(e=[e]);var n=function(t,e){return e.split(".").forEach(function(e){t=t[e]}),t},r=[];return e.forEach(function(e){var o=n(t,e);isNaN(o)||(o=String(o)),r.push(JSON.stringify(o))}),r}function i(t,e){for(var n=0;n1?e-1:0),o=1;o {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path] || {}\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","names","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","split","arr","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","setState","fromWatch","_this2","Promise","beforeHooks","afterHooks","pathJoin","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","baseData","any","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vuet.min.js","sources":["../src/directives/scroll.js","../src/install.js","../src/rules/index.js","../src/vuet.js","../src/utils.js","../src/debug.js","../src/rules/life.js","../src/rules/manual.js","../src/rules/need.js","../src/rules/once.js","../src/rules/route.js","../src/index.js"],"sourcesContent":["import { _Vue } from '../install'\nimport debug from '../debug'\n\nconst _self = '__vuetScrollSelf__'\nconst _window = '__vuetScrollWindow__'\n\nclass VuetScroll {\n constructor (opt) {\n this.app = null\n this.path = null\n this.name = null\n this.store = null\n this.scrolls = null\n this.setOption(opt)\n this.scrollTo()\n this.subScroll()\n }\n update (opt) {\n this.setOption(opt)\n this.scrollTo()\n }\n destroy () {\n this.app.removeEventListener('scroll', this.subScrolling, false)\n }\n setOption (opt) {\n this.app = opt.app\n this.path = opt.path\n this.name = opt.name || null\n this.store = opt.store || null\n this.scrolls = opt.scrolls || createScroll(opt)\n function createScroll (opt) {\n if (!opt.store.$scroll) {\n _Vue.set(opt.store, '$scroll', {})\n }\n if (!opt.store.$scroll[opt.name]) {\n _Vue.set(opt.store.$scroll, opt.name, { x: 0, y: 0 })\n }\n\n return opt.store.$scroll[opt.name]\n }\n }\n scrollTo () {\n const { app, scrolls } = this\n if ('scrollTop' in app && app !== window) {\n app.scrollLeft = scrolls.x\n app.scrollTop = scrolls.y\n } else {\n app.scrollTo(scrolls.x, scrolls.y)\n }\n }\n subScroll () {\n const { app } = this\n const newScrolls = {}\n this.subScrolling = event => {\n if (app === window) {\n newScrolls.x = window.pageXOffset\n newScrolls.y = window.pageYOffset\n } else {\n const { scrollTop, scrollLeft, pageXOffset, pageYOffset } = event.target\n newScrolls.x = scrollLeft || pageYOffset || scrollLeft\n newScrolls.y = scrollTop || pageXOffset || scrollTop\n }\n const key = `timer-${this.path}-${this.name}`\n clearTimeout(this[key])\n this[key] = setTimeout(() => {\n Object.assign(this.scrolls, newScrolls)\n delete this[key]\n }, 10)\n }\n app.addEventListener('scroll', this.subScrolling, false)\n }\n}\n\nfunction isSelf (modifiers) {\n return modifiers.window !== true || modifiers.self\n}\n\nfunction isWindow (modifiers) {\n return modifiers.window\n}\n\nexport default {\n inserted (el, { modifiers, value }, vnode) {\n if (typeof value.path !== 'string') return debug.error('path is imperative parameter and is string type')\n if (value.path === 'window') return debug.error('name cannot be the window name')\n if (isSelf(modifiers)) {\n if (typeof value.name !== 'string') return debug.error('name is imperative parameter and is string type')\n el[_self] = new VuetScroll({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window] = new VuetScroll({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n componentUpdated (el, { modifiers, value }, vnode) {\n if (isSelf(modifiers)) {\n el[_self].update({\n app: el,\n path: value.path,\n name: value.name,\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.self\n })\n }\n if (isWindow(modifiers)) {\n el[_window].update({\n app: window,\n path: value.path,\n name: 'window',\n store: vnode.context.$vuet.store[value.path],\n scrolls: value.window || null\n })\n }\n },\n unbind (el, { modifiers }) {\n if (isSelf(modifiers)) {\n el[_self].destroy()\n delete el[_self]\n }\n if (isWindow(modifiers)) {\n el[_window].destroy()\n delete el[_window]\n }\n }\n}\n","import utils from './utils'\nimport scroll from './directives/scroll'\n\nexport let _Vue = null\n\nexport default function install (Vue) {\n if (install.installed) return\n install.installed = true\n _Vue = Vue\n Object.defineProperty(Vue.prototype, '$vuet', {\n get () { return this.$root._vuet }\n })\n Vue.mixin({\n beforeCreate () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet._init(this)\n }\n },\n destroyed () {\n if (!utils.isUndefined(this.$options.vuet)) {\n this._vuet = this.$options.vuet\n this._vuet.destroy(this)\n }\n }\n })\n Vue.directive('vuet-scroll', scroll)\n}\n","import life from './life'\nimport manual from './manual'\nimport need from './need'\nimport once from './once'\nimport route from './route'\n\nexport default function install (_Vue, Vuet) {\n Vuet\n .rule('life', life)\n .rule('manual', manual)\n .rule('need', need)\n .rule('once', once)\n .rule('route', route)\n}\n","import install, { _Vue } from './install'\nimport utils from './utils'\nimport debug from './debug'\nimport rules from './rules/index'\n\nexport default class Vuet {\n constructor (options) {\n if (!_Vue) {\n debug.error('must call Vue.use(Vuet) before creating a store instance')\n }\n if (typeof Promise === 'undefined') {\n debug.error('Vuet requires a Promise polyfill in this browser')\n }\n if (!utils.isObject(options)) {\n debug.error('Parameter is the object type')\n }\n this.options = options || {}\n this.app = null\n this.store = {}\n this.names = {}\n this.beforeHooks = [] // Before the request begins\n this.afterHooks = [] // After the request begins\n this.vm = null\n }\n beforeEach (fn) {\n this.beforeHooks.push(fn)\n return this\n }\n afterEach (fn) {\n this.afterHooks.push(fn)\n return this\n }\n _init (app) {\n if (this.app || !app) return\n this.app = app\n this.vm = new _Vue({\n data: {\n store: this.store\n }\n })\n this._options = {\n data: function data () { return {} },\n pathJoin: null,\n ...this.options,\n ...{\n modules: {}\n }\n }\n const keys = ['data', 'fetch', 'routeWatch', 'manuals']\n const { pathJoin } = this._options\n const initModule = (path, modules) => {\n Object.keys(modules).forEach(k => {\n const item = modules[k]\n const _path = [...path, k]\n if (utils.isFunction(item.data)) {\n let newPath = null\n if (pathJoin) {\n newPath = _path.join(pathJoin)\n } else {\n newPath = [_path[0]]\n for (let i = 1; i < _path.length; i++) {\n newPath.push(_path[i].replace(/^(\\w)/, (v) => v.toUpperCase()))\n }\n newPath = newPath.join('')\n }\n this._options.modules[newPath] = item\n this.reset(newPath)\n this.names[newPath] = k\n }\n if (keys.indexOf(k) === -1 && utils.isObject(item)) {\n initModule(_path, item)\n }\n })\n }\n initModule([], this.options.modules)\n callRuleHook('init', this)\n }\n getState (path) {\n return this.store[path]\n }\n setState (path, newState) {\n if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this\n if (!this.store[path] || !utils.isObject(newState)) {\n _Vue.set(this.store, path, newState)\n return this\n }\n Object.assign(this.store[path], newState)\n return this\n }\n fetch (path, params, setStateBtn) {\n const module = this._options.modules[path]\n if (typeof module.fetch !== 'function') return Promise.resolve(this.getState(path))\n const data = {\n path,\n params: { ...params },\n state: this.getState(path),\n route: this.app.$route || {},\n app: this.app\n }\n const callHook = (hook, ...arg) => {\n for (let i = 0; i < this[hook].length; i++) {\n if (this[hook][i].apply(this, arg)) {\n return false\n }\n }\n }\n if (callHook('beforeHooks', data) === false) return Promise.resolve(data.state)\n return module.fetch.call(this, data)\n .then(res => {\n if (callHook('afterHooks', null, data, res) === false) return data.state\n if (setStateBtn === false) return res\n this.setState(path, res)\n return data.state\n })\n .catch(e => {\n if (callHook('afterHooks', e, data) === false) return Promise.resolve(data.state)\n return Promise.reject(e)\n })\n }\n reset (path) {\n const baseData = this._options.data.call(this)\n const { data } = this._options.modules[path]\n if (utils.isFunction(data)) {\n const any = data.call(this, path)\n if (utils.isObject(any)) {\n Object.assign(baseData, any)\n this.setState(path, baseData)\n } else {\n this.setState(path, any)\n }\n }\n return this\n }\n destroy () {\n this.vm.$destroy()\n callRuleHook('destroy', this)\n }\n}\n\nObject.assign(Vuet, {\n options: {\n rules: {}\n },\n install,\n rule (name, rule) {\n if (this.options.rules[name]) return this\n this.options.rules[name] = rule\n callRuleHook('install', _Vue, Vuet)\n return this\n },\n mapRules (...paths) {\n const opt = utils.getArgMerge.apply(null, arguments)\n const vueRules = []\n const addRule = (ruleName, any) => {\n const rules = Vuet.options.rules[ruleName]\n if (typeof any === 'string') {\n vueRules.push(rules.rule({ path: any }))\n } else {\n vueRules.push(rules.rule(any))\n }\n }\n Object.keys(opt).forEach(ruleName => {\n const any = opt[ruleName]\n if (Array.isArray(any)) {\n return any.forEach(item => {\n addRule(ruleName, item)\n })\n }\n addRule(ruleName, any)\n })\n return {\n mixins: vueRules\n }\n },\n mapModules () {\n const opt = utils.getArgMerge.apply(null, arguments)\n const computed = {}\n Object.keys(opt).forEach(k => {\n const path = opt[k]\n computed[k] = {\n get () {\n return this.$vuet.store[path]\n },\n set (val) {\n this.$vuet.store[path] = val\n }\n }\n })\n return { computed }\n },\n use (plugin, opt) {\n if (utils.isFunction(plugin)) {\n plugin(_Vue, Vuet, opt)\n } else if (utils.isFunction(plugin.install)) {\n plugin.install(_Vue, Vuet, opt)\n }\n return this\n }\n})\n\nfunction callRuleHook (hook, ...arg) {\n const { rules } = Vuet.options\n for (let k in rules) {\n if (utils.isFunction(rules[k][hook])) {\n rules[k][hook].apply(rules[k], arg)\n }\n }\n}\n\nVuet.use(rules)\n","const toString = Object.prototype.toString\n// Cached type string\nconst typeStrings = ['Object', 'Function', 'String', 'Undefined', 'Null']\n\nconst utils = {\n getArgMerge () {\n let opt = {}\n const args = arguments\n if (utils.isString(args[0])) {\n opt[args[0]] = args.length > 1 ? args[1] : args[0]\n } else if (args[0] && utils.isObject(args[0])) {\n opt = args[0]\n }\n return opt\n },\n set (obj, key, value) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: false,\n writable: true,\n configurable: false\n })\n }\n}\n\n// Add isXXX function\ntypeStrings.forEach(type => {\n const typeString = `[object ${type}]`\n utils[`is${type}`] = obj => {\n return toString.call(obj) === typeString\n }\n})\n\nexport default utils\n","export default {\n error (msg) {\n throw new Error(`[vuet] ${msg}`)\n },\n warn (msg) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console !== 'undefined' && console.warn(`[vuet] ${msg}`)\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n },\n destroyed () {\n this.$vuet.reset(path, { current: this })\n }\n }\n }\n}\n","export default {\n rule ({ path, name }) {\n return {\n beforeCreate () {\n const { manuals = {} } = this.$vuet._options.modules[path]\n const methods = {}\n Object.keys(manuals).forEach(k => {\n const fn = manuals[k]\n if (typeof fn === 'function') {\n methods[`${k}`] = (...arg) => {\n return fn.apply(methods, [{\n state: this.$vuet.getState(path),\n vm: this,\n vuet: this.$vuet\n }, ...arg])\n }\n }\n })\n methods.reset = (...arg) => {\n return this.$vuet.reset(path, ...arg)\n }\n methods.getState = (...arg) => {\n return this.$vuet.getState(path, ...arg)\n }\n methods.setState = (...arg) => {\n return this.$vuet.setState(path, ...arg)\n }\n methods.fetch = (...arg) => {\n return this.$vuet.fetch(path, ...arg)\n }\n const newName = name || manuals.name || `$${this.$vuet.names[path]}`\n this[newName] = methods\n }\n }\n }\n}\n","export default {\n rule ({ path }) {\n return {\n beforeCreate () {\n this.$vuet.fetch(path, { current: this })\n }\n }\n }\n}\n","import utils from '../utils'\n\nconst name = 'once'\nconst key = `__${name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, key, {})\n Object.keys(vuet.store).forEach(k => {\n utils.set(vuet[key], k, false)\n })\n },\n rule ({ path }) {\n return {\n beforeCreate () {\n if (this.$vuet[key][path] === false) {\n this.$vuet.fetch(path, { current: this }).then(() => {\n this.$vuet[key][path] = true\n })\n }\n }\n }\n }\n}\n","import utils from '../utils'\n\nexport const _name = 'route'\nexport const _key = `__${_name}__`\n\nexport default {\n init (vuet) {\n utils.set(vuet, _key, {\n watchers: {},\n scrolls: {}\n })\n Object.keys(vuet.store).forEach(path => {\n utils.set(vuet[_key].watchers, path, [])\n utils.set(vuet[_key].scrolls, path, {})\n })\n },\n rule ({ path }) {\n // vuet-scroll\n function resetVuetScroll (vm) {\n const { $scroll } = vm.$vuet.store[path]\n if ($scroll) {\n Object.keys($scroll).forEach(k => {\n $scroll[k].x = 0\n $scroll[k].y = 0\n $scroll[k].count = $scroll[k].count ? ++$scroll[k].count : 0\n })\n }\n }\n\n // route-watch\n function getVuetWatchs (vuet) {\n return vuet[_key].watchers[path]\n }\n function setVuetWatchs (vuet, val) {\n vuet[_key].watchers[path] = val\n }\n function getWatchs (obj = {}, list) {\n if (typeof list === 'string') {\n list = [list]\n }\n const getObjVal = (obj, str) => {\n const arr = str.split('.')\n arr.forEach(k => {\n obj = obj[k]\n })\n return obj\n }\n const arr = []\n list.forEach(val => {\n let value = getObjVal(obj, val)\n if (!isNaN(value)) {\n value = String(value)\n }\n arr.push(JSON.stringify(value))\n })\n return arr\n }\n\n function diffWatch (to, from) {\n for (let i = 0; i < to.length; i++) {\n if (to[i] !== from[i]) {\n return true\n }\n }\n return false\n }\n\n return {\n beforeCreate () {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(this.$route, routeWatch)\n const watch = diffWatch(toWatch, getVuetWatchs(this.$vuet))\n if (watch) {\n this.$vuet.reset(path)\n setVuetWatchs(this.$vuet, toWatch)\n resetVuetScroll(this)\n }\n this.$vuet.fetch(path, { current: this, routeWatch: watch }, false).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n },\n watch: {\n $route: {\n deep: true,\n handler (to, from) {\n const { routeWatch = 'fullPath' } = this.$vuet._options.modules[path]\n const toWatch = getWatchs(to, routeWatch)\n const fromWatch = getWatchs(from, routeWatch)\n const watch = diffWatch(toWatch, fromWatch)\n if (!watch) return false\n this.$vuet.fetch(path, { current: this, routeWatch: watch }).then((res) => {\n if (diffWatch(toWatch, getWatchs(this.$route, routeWatch))) return\n resetVuetScroll(this)\n this.$vuet.setState(path, res)\n setVuetWatchs(this.$vuet, toWatch)\n })\n }\n }\n }\n }\n }\n}\n","import Vuet from './vuet'\n\nexport const mapRules = Vuet.mapRules.bind(Vuet)\nexport const mapModules = Vuet.mapModules.bind(Vuet)\n\nexport default Vuet\n"],"names":["isSelf","modifiers","window","self","isWindow","install","Vue","installed","defineProperty","prototype","this","$root","_vuet","mixin","utils","isUndefined","$options","vuet","_init","destroy","directive","scroll","_Vue","Vuet","rule","life","manual","need","once","route","callRuleHook","hook","rules","options","arg","k","isFunction","apply","toString","Object","typeStrings","opt","args","arguments","isString","length","isObject","obj","key","value","forEach","typeString","type","call","msg","Error","_self","_window","VuetScroll","app","path","name","store","scrolls","setOption","scrollTo","subScroll","removeEventListener","subScrolling","$scroll","set","x","y","scrollLeft","scrollTop","newScrolls","pageXOffset","pageYOffset","event","target","_this","setTimeout","assign","addEventListener","el","vnode","debug","error","context","$vuet","update","fetch","current","reset","_options","modules","manuals","methods","keys","fn","getState","setState","names","then","_key","watchers","resetVuetScroll","vm","count","getVuetWatchs","setVuetWatchs","val","getWatchs","list","getObjVal","str","split","arr","isNaN","String","push","JSON","stringify","diffWatch","to","from","i","routeWatch","toWatch","$route","watch","res","fromWatch","_this2","Promise","beforeHooks","afterHooks","pathJoin","initModule","item","_path","data","newPath","join","replace","v","toUpperCase","indexOf","newState","params","setStateBtn","module","resolve","callHook","state","catch","e","reject","baseData","any","$destroy","paths","getArgMerge","vueRules","addRule","ruleName","Array","isArray","computed","plugin","use","mapRules","bind","mapModules"],"mappings":"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"} \ No newline at end of file diff --git a/docs/zh-cn/global-rules.md b/docs/zh-cn/global-rules.md index 039ddd8..0a48a31 100644 --- a/docs/zh-cn/global-rules.md +++ b/docs/zh-cn/global-rules.md @@ -18,9 +18,10 @@ } }, manuals: { - // ... manual会自动加入fetch、reset两个方法,请参照Vuet的实例方法 + // ... manual会对fetch、reset、getState、setState方法进行一层封装,自动传入path参数,请参照Vuet的实例方法, plus ({ state, vm, vuet }) { state.count++ + // 或 this.setState({ count: count }) }, reduce ({ state, vm, vuet }) { state.count-- @@ -40,7 +41,6 @@ // manual: 'test' }) ``` - - 描述: 这是一种特殊的规则,它无法自动更新数据,它需要你手动调用时才会更新数据 - need - 描述: 每次都会在组件的`beforeCreate`钩子中调用一次更新 - once diff --git a/examples/manual/App.vue b/examples/manual/App.vue index 41e62b4..51a01a1 100644 --- a/examples/manual/App.vue +++ b/examples/manual/App.vue @@ -1,35 +1,35 @@ @@ -39,15 +39,15 @@ export default { mixins: [ mapModules({ - test1: 'test1', - test2: 'test2', - test3: 'test3' + count1: 'count1', + count2: 'count2', + count3: 'count3' }), mapRules({ manual: [ - { path: 'test1', name: 'Test1' }, - 'test2', - 'test3' + { path: 'count1', name: 'Count1' }, + 'count2', + 'count3' ] }) ] diff --git a/examples/manual/vuet.js b/examples/manual/vuet.js index d9f641d..ce752e9 100644 --- a/examples/manual/vuet.js +++ b/examples/manual/vuet.js @@ -5,64 +5,52 @@ Vue.use(Vuet) export default new Vuet({ modules: { - test1: { + count1: { data () { - return { - count: 0 - } + return 0 }, async fetch () { - return { - count: 100 - } + return 100 }, manuals: { plus ({ state }) { - state.count++ + this.setState(++state) }, reduce ({ state }) { - state.count-- + this.setState(--state) } } }, - test2: { + count2: { data () { - return { - count: 0 - } + return 0 }, async fetch () { - return { - count: 100 - } + return 100 }, manuals: { - name: 'test2s', + name: 'count2s', plus ({ state }) { - state.count++ + this.setState(++state) }, reduce ({ state }) { - state.count-- + this.setState(--state) } } }, - test3: { + count3: { data () { - return { - count: 0 - } + return 0 }, async fetch () { - return { - count: 100 - } + return 100 }, manuals: { plus ({ state }) { - state.count++ + this.setState(++state) }, reduce ({ state }) { - state.count-- + this.setState(--state) } } } diff --git a/package.json b/package.json index e6b60b6..7c357a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vuet", - "version": "0.2.2", + "version": "0.2.3", "description": "Vue state management plugin", "main": "dist/vuet.js", "scripts": { diff --git a/src/rules/manual.js b/src/rules/manual.js index b067a2e..68e4c1d 100644 --- a/src/rules/manual.js +++ b/src/rules/manual.js @@ -19,6 +19,12 @@ export default { methods.reset = (...arg) => { return this.$vuet.reset(path, ...arg) } + methods.getState = (...arg) => { + return this.$vuet.getState(path, ...arg) + } + methods.setState = (...arg) => { + return this.$vuet.setState(path, ...arg) + } methods.fetch = (...arg) => { return this.$vuet.fetch(path, ...arg) } diff --git a/src/vuet.js b/src/vuet.js index 80df988..729983b 100644 --- a/src/vuet.js +++ b/src/vuet.js @@ -76,7 +76,7 @@ export default class Vuet { callRuleHook('init', this) } getState (path) { - return this.store[path] || {} + return this.store[path] } setState (path, newState) { if (this.store[path] && Object.prototype.toString.call(this.store[path]) !== Object.prototype.toString.call(newState)) return this