publish: omiv v0.1.0

This commit is contained in:
dntzhang 2019-10-02 18:23:52 +08:00
parent 510a8c9163
commit 29c4d4c7d5
17 changed files with 50 additions and 413 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,15 +1,14 @@
/**
* omiv v2.0.2 http://omijs.org
* omiv v0.1.0 http://omijs.org
* Observable store system for JavaScript apps.
* By dntzhang https://github.com/dntzhang
* Github: https://github.com/Tencent/omi
* MIT Licensed.
*/
(function (React,Vue,Vuex) {
(function (Vue,Vuex) {
'use strict';
React = React && React.hasOwnProperty('default') ? React['default'] : React;
Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;
Vuex = Vuex && Vuex.hasOwnProperty('default') ? Vuex['default'] : Vuex;
@ -293,104 +292,12 @@
return mpPath;
}
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
Vue.use(Vuex);
var components = [];
var updateSelfComponents = [];
var isSelf = false;
var currentComponent = null;
function $(options) {
if (options.store) {
$.store = options.store;
obaa($.store.data, function (prop, val, old, path) {
var patch = {};
patch[fixPath(path + '-' + prop)] = true;
components.forEach(function (component) {
if (component.__$updatePath_ && needUpdate(patch, component.__$updatePath_)) {
component.setState({ __$id_: component.state.__$id_++ });
isSelf = false;
}
});
updateSelfComponents.forEach(function (component) {
if (component.__$updateSelfPath_ && needUpdate(patch, component.__$updateSelfPath_)) {
component.setState({ __$id_: component.state.__$id_++ });
isSelf = true;
currentComponent = component;
}
});
});
}
var updatePath = options.use && getPath(options.use);
var updateSelfPath = options.useSelf && getPath(options.useSelf);
return function (_React$Component) {
_inherits(_class2, _React$Component);
function _class2(props) {
_classCallCheck(this, _class2);
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
_this.state = {
__$id_: 0
};
if (updatePath) {
components.push(_this);
_this.__$updatePath_ = updatePath;
}
if (updateSelfPath) {
updateSelfComponents.push(_this);
_this.__$updateSelfPath_ = updateSelfPath;
}
return _this;
}
_class2.prototype.shouldComponentUpdate = function shouldComponentUpdate() {
if (currentComponent === this) return true;
return !isSelf;
};
_class2.prototype.componentWillUnmount = function componentWillUnmount() {
for (var i = 0, len = components.length; i < len; i++) {
if (components[i] === this) {
components.splice(i, 1);
break;
}
}
for (var _i = 0, _len = updateSelfComponents.length; _i < _len; _i++) {
if (updateSelfComponents[_i] === this) {
updateSelfComponents.splice(_i, 1);
break;
}
}
};
_class2.prototype.render = function render() {
return options.render.apply(this, arguments);
};
return _class2;
}(React.Component);
}
Vue.use(Vuex);
var components$1 = [];
var updateSelfComponents$1 = [];
function $v(options) {
var beforeCreate = options.beforeCreate;
var destroyed = options.destroyed;
@ -401,19 +308,19 @@
options.beforeCreate = function () {
if (use) {
this.__$updatePath_ = getPath(use);
components$1.push(this);
components.push(this);
}
if (useSelf) {
this.__$updateSelfPath_ = getPath(useSelf);
updateSelfComponents$1.push(this);
updateSelfComponents.push(this);
}
beforeCreate && beforeCreate.apply(this, arguments);
};
options.destroyed = function () {
for (var i = 0, len = components$1.length; i < len; i++) {
if (components$1[i] === this) {
components$1.splice(i, 1);
for (var i = 0, len = components.length; i < len; i++) {
if (components[i] === this) {
components.splice(i, 1);
break;
}
}
@ -432,7 +339,7 @@
return options;
}
$v.render = function (comp, renderTo, store) {
$.render = function (comp, renderTo, store) {
Vue.config.productionTip = false;
@ -447,13 +354,13 @@
var patch = {};
patch[fixPath(path + '-' + prop)] = true;
components$1.forEach(function (component) {
components.forEach(function (component) {
if (component.__$updatePath_ && needUpdate(patch, component.__$updatePath_)) {
recUpdate(component);
}
});
updateSelfComponents$1.forEach(function (component) {
updateSelfComponents.forEach(function (component) {
if (component.__$updateSelfPath_ && needUpdate(patch, component.__$updateSelfPath_)) {
component.$forceUpdate();
}
@ -468,8 +375,8 @@
});
}
var Omiv = { $: $, $v: $v };
var Omiv = { $: $ };
if (typeof module != 'undefined') module.exports = Omiv;else self.Omiv = Omiv;
}(React,Vue,Vuex));
}(Vue,Vuex));
//# sourceMappingURL=omiv.dev.js.map

1
packages/omiv/dist/omiv.dev.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,11 @@
/**
* omiv v2.0.2 http://omijs.org
* omiv v0.1.0 http://omijs.org
* Observable store system for JavaScript apps.
* By dntzhang https://github.com/dntzhang
* Github: https://github.com/Tencent/omi
* MIT Licensed.
*/
import React from 'react';
import Vue from 'vue';
import Vuex from 'vuex';
@ -290,104 +289,12 @@ function fixPath(path) {
return mpPath;
}
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
Vue.use(Vuex);
var components = [];
var updateSelfComponents = [];
var isSelf = false;
var currentComponent = null;
function $(options) {
if (options.store) {
$.store = options.store;
obaa($.store.data, function (prop, val, old, path) {
var patch = {};
patch[fixPath(path + '-' + prop)] = true;
components.forEach(function (component) {
if (component.__$updatePath_ && needUpdate(patch, component.__$updatePath_)) {
component.setState({ __$id_: component.state.__$id_++ });
isSelf = false;
}
});
updateSelfComponents.forEach(function (component) {
if (component.__$updateSelfPath_ && needUpdate(patch, component.__$updateSelfPath_)) {
component.setState({ __$id_: component.state.__$id_++ });
isSelf = true;
currentComponent = component;
}
});
});
}
var updatePath = options.use && getPath(options.use);
var updateSelfPath = options.useSelf && getPath(options.useSelf);
return function (_React$Component) {
_inherits(_class2, _React$Component);
function _class2(props) {
_classCallCheck(this, _class2);
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
_this.state = {
__$id_: 0
};
if (updatePath) {
components.push(_this);
_this.__$updatePath_ = updatePath;
}
if (updateSelfPath) {
updateSelfComponents.push(_this);
_this.__$updateSelfPath_ = updateSelfPath;
}
return _this;
}
_class2.prototype.shouldComponentUpdate = function shouldComponentUpdate() {
if (currentComponent === this) return true;
return !isSelf;
};
_class2.prototype.componentWillUnmount = function componentWillUnmount() {
for (var i = 0, len = components.length; i < len; i++) {
if (components[i] === this) {
components.splice(i, 1);
break;
}
}
for (var _i = 0, _len = updateSelfComponents.length; _i < _len; _i++) {
if (updateSelfComponents[_i] === this) {
updateSelfComponents.splice(_i, 1);
break;
}
}
};
_class2.prototype.render = function render() {
return options.render.apply(this, arguments);
};
return _class2;
}(React.Component);
}
Vue.use(Vuex);
var components$1 = [];
var updateSelfComponents$1 = [];
function $v(options) {
var beforeCreate = options.beforeCreate;
var destroyed = options.destroyed;
@ -398,19 +305,19 @@ function $v(options) {
options.beforeCreate = function () {
if (use) {
this.__$updatePath_ = getPath(use);
components$1.push(this);
components.push(this);
}
if (useSelf) {
this.__$updateSelfPath_ = getPath(useSelf);
updateSelfComponents$1.push(this);
updateSelfComponents.push(this);
}
beforeCreate && beforeCreate.apply(this, arguments);
};
options.destroyed = function () {
for (var i = 0, len = components$1.length; i < len; i++) {
if (components$1[i] === this) {
components$1.splice(i, 1);
for (var i = 0, len = components.length; i < len; i++) {
if (components[i] === this) {
components.splice(i, 1);
break;
}
}
@ -429,7 +336,7 @@ function $v(options) {
return options;
}
$v.render = function (comp, renderTo, store) {
$.render = function (comp, renderTo, store) {
Vue.config.productionTip = false;
@ -444,13 +351,13 @@ $v.render = function (comp, renderTo, store) {
var patch = {};
patch[fixPath(path + '-' + prop)] = true;
components$1.forEach(function (component) {
components.forEach(function (component) {
if (component.__$updatePath_ && needUpdate(patch, component.__$updatePath_)) {
recUpdate(component);
}
});
updateSelfComponents$1.forEach(function (component) {
updateSelfComponents.forEach(function (component) {
if (component.__$updateSelfPath_ && needUpdate(patch, component.__$updateSelfPath_)) {
component.$forceUpdate();
}
@ -465,8 +372,8 @@ function recUpdate(root) {
});
}
var omiv = { $: $, $v: $v };
var omiv = { $: $ };
export default omiv;
export { $, $v };
export { $ };
//# sourceMappingURL=omiv.esm.js.map

1
packages/omiv/dist/omiv.esm.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
!function(React, Vue, Vuex) {
!function(Vue, Vuex) {
'use strict';
function obaa(target, arr, callback) {
var eventPropArr = [];
@ -158,90 +158,7 @@
});
return mpPath;
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
}
function _possibleConstructorReturn(self, call) {
if (!self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return call && ("object" == typeof call || "function" == typeof call) ? call : self;
}
function _inherits(subClass, superClass) {
if ("function" != typeof superClass && null !== superClass) throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
enumerable: !1,
writable: !0,
configurable: !0
}
});
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
}
function $(options) {
if (options.store) {
$.store = options.store;
obaa($.store.data, function(prop, val, old, path) {
var patch = {};
patch[fixPath(path + '-' + prop)] = !0;
components.forEach(function(component) {
if (component.W && needUpdate(patch, component.W)) {
component.setState({
X: component.state.X++
});
isSelf = !1;
}
});
updateSelfComponents.forEach(function(component) {
if (component.Y && needUpdate(patch, component.Y)) {
component.setState({
X: component.state.X++
});
isSelf = !0;
currentComponent = component;
}
});
});
}
var updatePath = options.use && getPath(options.use);
var updateSelfPath = options.useSelf && getPath(options.useSelf);
return function(_React$Component) {
function _class2(props) {
_classCallCheck(this, _class2);
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
_this.state = {
X: 0
};
if (updatePath) {
components.push(_this);
_this.W = updatePath;
}
if (updateSelfPath) {
updateSelfComponents.push(_this);
_this.Y = updateSelfPath;
}
return _this;
}
_inherits(_class2, _React$Component);
_class2.prototype.shouldComponentUpdate = function() {
if (currentComponent === this) return !0; else return !isSelf;
};
_class2.prototype.componentWillUnmount = function() {
for (var i = 0, len = components.length; i < len; i++) if (components[i] === this) {
components.splice(i, 1);
break;
}
for (var _i = 0, _len = updateSelfComponents.length; _i < _len; _i++) if (updateSelfComponents[_i] === this) {
updateSelfComponents.splice(_i, 1);
break;
}
};
_class2.prototype.render = function() {
return options.render.apply(this, arguments);
};
return _class2;
}(React.Component);
}
function $v(options) {
var beforeCreate = options.beforeCreate;
var destroyed = options.destroyed;
var use = options.use;
@ -250,17 +167,17 @@
options.beforeCreate = function() {
if (use) {
this.W = getPath(use);
components$1.push(this);
components.push(this);
}
if (useSelf) {
this.Y = getPath(useSelf);
updateSelfComponents$1.push(this);
updateSelfComponents.push(this);
}
beforeCreate && beforeCreate.apply(this, arguments);
};
options.destroyed = function() {
for (var i = 0, len = components$1.length; i < len; i++) if (components$1[i] === this) {
components$1.splice(i, 1);
for (var i = 0, len = components.length; i < len; i++) if (components[i] === this) {
components.splice(i, 1);
break;
}
destroyed && destroyed.apply(this, arguments);
@ -279,7 +196,6 @@
recUpdate(child);
});
}
React = React && React.hasOwnProperty('default') ? React.default : React;
Vue = Vue && Vue.hasOwnProperty('default') ? Vue.default : Vue;
Vuex = Vuex && Vuex.hasOwnProperty('default') ? Vuex.default : Vuex;
var triggerStr = [ 'concat', 'copyWithin', 'fill', 'pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', 'size' ].join(',');
@ -294,14 +210,10 @@
Array.prototype.size = function(length) {
this.length = length;
};
Vue.use(Vuex);
var components = [];
var updateSelfComponents = [];
var isSelf = !1;
var currentComponent = null;
Vue.use(Vuex);
var components$1 = [];
var updateSelfComponents$1 = [];
$v.render = function(comp, renderTo, store) {
$.render = function(comp, renderTo, store) {
Vue.config.productionTip = !1;
new Vue({
render: function(h) {
@ -312,18 +224,17 @@
obaa(store.data, function(prop, val, old, path) {
var patch = {};
patch[fixPath(path + '-' + prop)] = !0;
components$1.forEach(function(component) {
components.forEach(function(component) {
if (component.W && needUpdate(patch, component.W)) recUpdate(component);
});
updateSelfComponents$1.forEach(function(component) {
updateSelfComponents.forEach(function(component) {
if (component.Y && needUpdate(patch, component.Y)) component.$forceUpdate();
});
});
};
var Omiv = {
$: $,
$v: $v
$: $
};
if ('undefined' != typeof module) module.exports = Omiv; else self.Omiv = Omiv;
}(React, Vue, Vuex);
}(Vue, Vuex);
//# sourceMappingURL=omiv.js.map

1
packages/omiv/dist/omiv.js.map vendored Normal file

File diff suppressed because one or more lines are too long

2
packages/omiv/dist/omiv.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
!function(t,r){"use strict";function e(t,r,e){var i=[];f(t)&&(0===t.length&&(t.S={T:t,U:"#"}),n(t,t));for(var c in t)t.hasOwnProperty(c)&&(e?f(r)&&s(r,c)?(i.push(c),o(t,c,null,t)):a(r)&&c===r&&(i.push(c),o(t,c,null,t)):(i.push(c),o(t,c,null,t)));t.V||(t.V=[]),t.V.push({all:!e,propChanged:e||r,eventPropArr:i})}function n(t,r){E.forEach(function(e){t[e]=function(){var t=Array.prototype.slice.call(this,0),n=Array.prototype[e].apply(this,Array.prototype.slice.call(arguments));if(RegExp("\\b"+e+"\\b").test(A)){for(var u in this)this.hasOwnProperty(u)&&!c(this[u])&&o(this,u,this.S.U,r);i("Array-"+e,this,t,this,this.S.U,r)}return n},t["pure"+e.substring(0,1).toUpperCase()+e.substring(1)]=function(){return Array.prototype[e].apply(this,Array.prototype.slice.call(arguments))}})}function o(t,r,e,i){if("__o_"!==r&&!c(t[r])){t.S||(t.S={T:i}),t.S.U=void 0!==e&&null!==e?e:"#";var u=t.S[r]=t[r];if("object"==typeof u){f(u)&&(n(u,i),0===u.length&&(u.S||(u.S={}),u.S.U=void 0!==e&&null!==e?e+"-"+r:"#-"+r));for(var a in u)u.hasOwnProperty(a)&&o(u,a,t.S.U+"-"+r,i)}}}function i(t,r,e,n,i,c){if(r!==e&&(!u(r)||!u(e))&&c.V)for(var f=p(t,i),a=0,l=c.V.length;a<l;a++){var h=c.V[a];(h.all||s(h.eventPropArr,f)||0===f.indexOf("Array-"))&&h.propChanged.call(n,t,r,e,i)}0!==t.indexOf("Array-")&&"object"==typeof r&&o(n,t,n.S.U,c)}function c(t){return"[object Function]"===Object.prototype.toString.call(t)}function u(t){return"number"==typeof t&&isNaN(t)}function f(t){return"[object Array]"===Object.prototype.toString.call(t)}function a(t){return"string"==typeof t}function s(t,r){for(var e=t.length;--e>-1;)if(r===t[e])return!0;return!1}function p(t,r){return"#"===r?t:r.split("-")[1]}function l(t){if("[object Array]"===Object.prototype.toString.call(t)){var r={};return t.forEach(function(t){if("string"==typeof t)r[t]=!0;else{var e=t[Object.keys(t)[0]];"string"==typeof e?r[e]=!0:"string"==typeof e[0]?r[e[0]]=!0:e[0].forEach(function(t){return r[t]=!0})}}),r}return h(t)}function h(t){var r={};return y(t,r),r}function y(t,r){Object.keys(t).forEach(function(e){r[e]=!0;var n=Object.prototype.toString.call(t[e]);"[object Object]"===n?d(t[e],e,r):"[object Array]"===n&&v(t[e],e,r)})}function d(t,r,e){Object.keys(t).forEach(function(n){e[r+"."+n]=!0,delete e[r];var o=Object.prototype.toString.call(t[n]);"[object Object]"===o?d(t[n],r+"."+n,e):"[object Array]"===o&&v(t[n],r+"."+n,e)})}function v(t,r,e){t.forEach(function(t,n){e[r+"["+n+"]"]=!0,delete e[r];var o=Object.prototype.toString.call(t);"[object Object]"===o?d(t,r+"["+n+"]",e):"[object Array]"===o&&v(t,r+"["+n+"]",e)})}function b(t,r){for(var e in t){if(r[e])return!0;for(var n in r)if(g(e,n))return!0}return!1}function g(t,r){if(0===t.indexOf(r)){var e=t.substr(r.length,1);if("["===e||"."===e)return!0}return!1}function S(t){var r="";return t.replace("#-","").split("-").forEach(function(t,e){e?isNaN(+t)?r+="."+t:r+="["+t+"]":r+=t}),r}function j(t){var r=t.beforeCreate,e=t.destroyed,n=t.use,o=t.useSelf;return t.computed=t.computed||{},t.beforeCreate=function(){n&&(this.W=l(n),U.push(this)),o&&(this.Y=l(o),m.push(this)),r&&r.apply(this,arguments)},t.destroyed=function(){for(var t=0,r=U.length;t<r;t++)if(U[t]===this){U.splice(t,1);break}e&&e.apply(this,arguments)},t.computed.state=function(){return this.$store.data},t.computed.store=function(){return this.$store},t}function O(t){t.$forceUpdate(),t.$children.forEach(function(t){O(t)})}t=t&&t.hasOwnProperty("default")?t.default:t,r=r&&r.hasOwnProperty("default")?r.default:r;var A="concat,copyWithin,fill,pop,push,reverse,shift,sort,splice,unshift,size",E=["concat","copyWithin","entries","every","fill","filter","find","findIndex","forEach","includes","indexOf","join","keys","lastIndexOf","map","pop","push","reduce","reduceRight","reverse","shift","slice","some","sort","splice","toLocaleString","toString","unshift","values","size"];e.add=function(t,r){o(t,r,t.S.U,t.S.T)},e.set=function(t,r,e){o(t,r,t.S.U,t.S.T),t[r]=e},Array.prototype.size=function(t){this.length=t},t.use(r);var U=[],m=[];j.render=function(r,n,o){t.config.productionTip=!1,new t({render:function(t){return t(r)},store:o}).$mount(n),e(o.data,function(t,r,e,n){var o={};o[S(n+"-"+t)]=!0,U.forEach(function(t){t.W&&b(o,t.W)&&O(t)}),m.forEach(function(t){t.Y&&b(o,t.Y)&&t.$forceUpdate()})})};var x={$:j};"undefined"!=typeof module?module.exports=x:self.Omiv=x}(Vue,Vuex);
//# sourceMappingURL=omiv.min.js.map

1
packages/omiv/dist/omiv.min.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
import { $ } from './react'
import { $v } from './vue'
export default { $, $v }
export { $, $v }

View File

@ -0,0 +1,6 @@
import { $ } from './vue'
export default { $ }
export { $ }

View File

@ -1,87 +0,0 @@
import React from 'react'
import { obaa } from './obaa'
import { getPath, needUpdate, fixPath } from './path'
const components = []
const updateSelfComponents = []
let isSelf = false
let currentComponent = null
export function $(options) {
if (options.store) {
$.store = options.store
obaa($.store.data, (prop, val, old, path) => {
const patch = {}
patch[fixPath(path + '-' + prop)] = true
components.forEach(component => {
if (
component.__$updatePath_ &&
needUpdate(patch, component.__$updatePath_)
) {
component.setState({ __$id_: component.state.__$id_++ })
isSelf = false
}
})
updateSelfComponents.forEach(component => {
if (
component.__$updateSelfPath_ &&
needUpdate(patch, component.__$updateSelfPath_)
) {
component.setState({ __$id_: component.state.__$id_++ })
isSelf = true
currentComponent = component
}
})
})
}
const updatePath = options.use && getPath(options.use)
const updateSelfPath = options.useSelf && getPath(options.useSelf)
return class extends React.Component {
state = {
__$id_: 0
}
constructor(props) {
super(props)
if (updatePath) {
components.push(this)
this.__$updatePath_ = updatePath
}
if (updateSelfPath) {
updateSelfComponents.push(this)
this.__$updateSelfPath_ = updateSelfPath
}
}
shouldComponentUpdate() {
if (currentComponent === this) return true
return !isSelf
}
componentWillUnmount() {
for (let i = 0, len = components.length; i < len; i++) {
if (components[i] === this) {
components.splice(i, 1)
break
}
}
for (let i = 0, len = updateSelfComponents.length; i < len; i++) {
if (updateSelfComponents[i] === this) {
updateSelfComponents.splice(i, 1)
break
}
}
}
render() {
return options.render.apply(this, arguments)
}
}
}

View File

@ -10,7 +10,7 @@ Vue.use(Vuex)
const components = []
const updateSelfComponents = []
export function $v(options) {
export function $(options) {
const beforeCreate = options.beforeCreate
const destroyed = options.destroyed
@ -53,7 +53,7 @@ export function $v(options) {
}
$v.render = function (comp, renderTo, store) {
$.render = function (comp, renderTo, store) {
Vue.config.productionTip = false