提交 7841edf4 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

feat: 字节小程序支持onUploadDouyinVideo生命周期#151113

上级 ba291491
...@@ -2230,17 +2230,17 @@ function updateListeners ( ...@@ -2230,17 +2230,17 @@ function updateListeners (
/* */ /* */
// fixed by xxxxxx (mp properties) // fixed by xxxxxx (mp properties)
function extractPropertiesFromVNodeData(data, Ctor, res, context) { function extractPropertiesFromVNodeData(data, Ctor, res, context) {
var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties; var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;
if (isUndef(propOptions)) { if (isUndef(propOptions)) {
return res return res
} }
var externalClasses = Ctor.options.mpOptions.externalClasses || []; var externalClasses = Ctor.options.mpOptions.externalClasses || [];
var attrs = data.attrs; var attrs = data.attrs;
var props = data.props; var props = data.props;
if (isDef(attrs) || isDef(props)) { if (isDef(attrs) || isDef(props)) {
for (var key in propOptions) { for (var key in propOptions) {
var altKey = hyphenate(key); var altKey = hyphenate(key);
var result = checkProp(res, props, key, altKey, true) || var result = checkProp(res, props, key, altKey, true) ||
checkProp(res, attrs, key, altKey, false); checkProp(res, attrs, key, altKey, false);
...@@ -2253,10 +2253,10 @@ function extractPropertiesFromVNodeData(data, Ctor, res, context) { ...@@ -2253,10 +2253,10 @@ function extractPropertiesFromVNodeData(data, Ctor, res, context) {
) { ) {
// 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串) // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)
res[key] = context[camelize(res[key])]; res[key] = context[camelize(res[key])];
} }
} }
} }
return res return res
} }
function extractPropsFromVNodeData ( function extractPropsFromVNodeData (
...@@ -5522,138 +5522,138 @@ function type(obj) { ...@@ -5522,138 +5522,138 @@ function type(obj) {
return Object.prototype.toString.call(obj) return Object.prototype.toString.call(obj)
} }
/* */ /* */
function flushCallbacks$1(vm) { function flushCallbacks$1(vm) {
if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) { if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
if (process.env.VUE_APP_DEBUG) { if (process.env.VUE_APP_DEBUG) {
var mpInstance = vm.$scope; var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid + console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']'); ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
} }
var copies = vm.__next_tick_callbacks.slice(0); var copies = vm.__next_tick_callbacks.slice(0);
vm.__next_tick_callbacks.length = 0; vm.__next_tick_callbacks.length = 0;
for (var i = 0; i < copies.length; i++) { for (var i = 0; i < copies.length; i++) {
copies[i](); copies[i]();
} }
} }
} }
function hasRenderWatcher(vm) { function hasRenderWatcher(vm) {
return queue.find(function (watcher) { return vm._watcher === watcher; }) return queue.find(function (watcher) { return vm._watcher === watcher; })
} }
function nextTick$1(vm, cb) { function nextTick$1(vm, cb) {
//1.nextTick 之前 已 setData 且 setData 还未回调完成 //1.nextTick 之前 已 setData 且 setData 还未回调完成
//2.nextTick 之前存在 render watcher //2.nextTick 之前存在 render watcher
if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) { if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
if(process.env.VUE_APP_DEBUG){ if(process.env.VUE_APP_DEBUG){
var mpInstance = vm.$scope; var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid + console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:nextVueTick'); ']:nextVueTick');
} }
return nextTick(cb, vm) return nextTick(cb, vm)
}else{ }else{
if(process.env.VUE_APP_DEBUG){ if(process.env.VUE_APP_DEBUG){
var mpInstance$1 = vm.$scope; var mpInstance$1 = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid + console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
']:nextMPTick'); ']:nextMPTick');
} }
} }
var _resolve; var _resolve;
if (!vm.__next_tick_callbacks) { if (!vm.__next_tick_callbacks) {
vm.__next_tick_callbacks = []; vm.__next_tick_callbacks = [];
} }
vm.__next_tick_callbacks.push(function () { vm.__next_tick_callbacks.push(function () {
if (cb) { if (cb) {
try { try {
cb.call(vm); cb.call(vm);
} catch (e) { } catch (e) {
handleError(e, vm, 'nextTick'); handleError(e, vm, 'nextTick');
} }
} else if (_resolve) { } else if (_resolve) {
_resolve(vm); _resolve(vm);
} }
}); });
// $flow-disable-line // $flow-disable-line
if (!cb && typeof Promise !== 'undefined') { if (!cb && typeof Promise !== 'undefined') {
return new Promise(function (resolve) { return new Promise(function (resolve) {
_resolve = resolve; _resolve = resolve;
}) })
} }
} }
/* */ /* */
function cloneWithData(vm) { function cloneWithData(vm) {
// 确保当前 vm 所有数据被同步 // 确保当前 vm 所有数据被同步
var ret = Object.create(null); var ret = Object.create(null);
var dataKeys = [].concat( var dataKeys = [].concat(
Object.keys(vm._data || {}), Object.keys(vm._data || {}),
Object.keys(vm._computedWatchers || {})); Object.keys(vm._computedWatchers || {}));
dataKeys.reduce(function(ret, key) { dataKeys.reduce(function(ret, key) {
ret[key] = vm[key]; ret[key] = vm[key];
return ret return ret
}, ret); }, ret);
// vue-composition-api // vue-composition-api
var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__; var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;
var rawBindings = compositionApiState && compositionApiState.rawBindings; var rawBindings = compositionApiState && compositionApiState.rawBindings;
if (rawBindings) { if (rawBindings) {
Object.keys(rawBindings).forEach(function (key) { Object.keys(rawBindings).forEach(function (key) {
ret[key] = vm[key]; ret[key] = vm[key];
}); });
} }
//TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据 //TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据
Object.assign(ret, vm.$mp.data || {}); Object.assign(ret, vm.$mp.data || {});
if ( if (
Array.isArray(vm.$options.behaviors) && Array.isArray(vm.$options.behaviors) &&
vm.$options.behaviors.indexOf('uni://form-field') !== -1 vm.$options.behaviors.indexOf('uni://form-field') !== -1
) { //form-field ) { //form-field
ret['name'] = vm.name; ret['name'] = vm.name;
ret['value'] = vm.value; ret['value'] = vm.value;
} }
return JSON.parse(JSON.stringify(ret)) return JSON.parse(JSON.stringify(ret))
} }
var patch = function(oldVnode, vnode) { var patch = function(oldVnode, vnode) {
var this$1 = this; var this$1 = this;
if (vnode === null) { //destroy if (vnode === null) { //destroy
return return
} }
if (this.mpType === 'page' || this.mpType === 'component') { if (this.mpType === 'page' || this.mpType === 'component') {
var mpInstance = this.$scope; var mpInstance = this.$scope;
var data = Object.create(null); var data = Object.create(null);
try { try {
data = cloneWithData(this); data = cloneWithData(this);
} catch (err) { } catch (err) {
console.error(err); console.error(err);
} }
data.__webviewId__ = mpInstance.data.__webviewId__; data.__webviewId__ = mpInstance.data.__webviewId__;
var mpData = Object.create(null); var mpData = Object.create(null);
Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据 Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据
mpData[key] = mpInstance.data[key]; mpData[key] = mpInstance.data[key];
}); });
var diffData = this.$shouldDiffData === false ? data : diff(data, mpData); var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
if (Object.keys(diffData).length) { if (Object.keys(diffData).length) {
if (process.env.VUE_APP_DEBUG) { if (process.env.VUE_APP_DEBUG) {
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid + console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
']差量更新', ']差量更新',
JSON.stringify(diffData)); JSON.stringify(diffData));
} }
this.__next_tick_pending = true; this.__next_tick_pending = true;
mpInstance.setData(diffData, function () { mpInstance.setData(diffData, function () {
this$1.__next_tick_pending = false; this$1.__next_tick_pending = false;
flushCallbacks$1(this$1); flushCallbacks$1(this$1);
}); });
} else { } else {
flushCallbacks$1(this); flushCallbacks$1(this);
} }
} }
}; };
/* */ /* */
...@@ -5794,252 +5794,253 @@ function normalizeStyleBinding (bindingStyle) { ...@@ -5794,252 +5794,253 @@ function normalizeStyleBinding (bindingStyle) {
return bindingStyle return bindingStyle
} }
/* */ /* */
var MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent']; var MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];
function getTarget(obj, path) { function getTarget(obj, path) {
var parts = path.split('.'); var parts = path.split('.');
var key = parts[0]; var key = parts[0];
if (key.indexOf('__$n') === 0) { //number index if (key.indexOf('__$n') === 0) { //number index
key = parseInt(key.replace('__$n', '')); key = parseInt(key.replace('__$n', ''));
} }
if (parts.length === 1) { if (parts.length === 1) {
return obj[key] return obj[key]
} }
return getTarget(obj[key], parts.slice(1).join('.')) return getTarget(obj[key], parts.slice(1).join('.'))
} }
function internalMixin(Vue) { function internalMixin(Vue) {
Vue.config.errorHandler = function(err, vm, info) { Vue.config.errorHandler = function(err, vm, info) {
Vue.util.warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); Vue.util.warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
console.error(err); console.error(err);
/* eslint-disable no-undef */ /* eslint-disable no-undef */
var app = typeof getApp === 'function' && getApp(); var app = typeof getApp === 'function' && getApp();
if (app && app.onError) { if (app && app.onError) {
app.onError(err); app.onError(err);
} }
}; };
var oldEmit = Vue.prototype.$emit; var oldEmit = Vue.prototype.$emit;
Vue.prototype.$emit = function(event) { Vue.prototype.$emit = function(event) {
if (this.$scope && event) { if (this.$scope && event) {
(this.$scope['_triggerEvent'] || this.$scope['triggerEvent']).call(this.$scope, event, { (this.$scope['_triggerEvent'] || this.$scope['triggerEvent']).call(this.$scope, event, {
__args__: toArray(arguments, 1) __args__: toArray(arguments, 1)
}); });
} }
return oldEmit.apply(this, arguments) return oldEmit.apply(this, arguments)
}; };
Vue.prototype.$nextTick = function(fn) { Vue.prototype.$nextTick = function(fn) {
return nextTick$1(this, fn) return nextTick$1(this, fn)
}; };
MP_METHODS.forEach(function (method) { MP_METHODS.forEach(function (method) {
Vue.prototype[method] = function(args) { Vue.prototype[method] = function(args) {
if (this.$scope && this.$scope[method]) { if (this.$scope && this.$scope[method]) {
return this.$scope[method](args) return this.$scope[method](args)
} }
// mp-alipay // mp-alipay
if (typeof my === 'undefined') { if (typeof my === 'undefined') {
return return
} }
if (method === 'createSelectorQuery') { if (method === 'createSelectorQuery') {
/* eslint-disable no-undef */ /* eslint-disable no-undef */
return my.createSelectorQuery(args) return my.createSelectorQuery(args)
} else if (method === 'createIntersectionObserver') { } else if (method === 'createIntersectionObserver') {
/* eslint-disable no-undef */ /* eslint-disable no-undef */
return my.createIntersectionObserver(args) return my.createIntersectionObserver(args)
} }
// TODO mp-alipay 暂不支持 selectAllComponents,selectComponent // TODO mp-alipay 暂不支持 selectAllComponents,selectComponent
}; };
}); });
Vue.prototype.__init_provide = initProvide; Vue.prototype.__init_provide = initProvide;
Vue.prototype.__init_injections = initInjections; Vue.prototype.__init_injections = initInjections;
Vue.prototype.__call_hook = function(hook, args) { Vue.prototype.__call_hook = function(hook, args) {
var vm = this; var vm = this;
// #7573 disable dep collection when invoking lifecycle hooks // #7573 disable dep collection when invoking lifecycle hooks
pushTarget(); pushTarget();
var handlers = vm.$options[hook]; var handlers = vm.$options[hook];
var info = hook + " hook"; var info = hook + " hook";
var ret; var ret;
if (handlers) { if (handlers) {
for (var i = 0, j = handlers.length; i < j; i++) { for (var i = 0, j = handlers.length; i < j; i++) {
ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info); ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);
} }
} }
if (vm._hasHookEvent) { if (vm._hasHookEvent) {
vm.$emit('hook:' + hook, args); vm.$emit('hook:' + hook, args);
} }
popTarget(); popTarget();
return ret return ret
}; };
Vue.prototype.__set_model = function(target, key, value, modifiers) { Vue.prototype.__set_model = function(target, key, value, modifiers) {
if (Array.isArray(modifiers)) { if (Array.isArray(modifiers)) {
if (modifiers.indexOf('trim') !== -1) { if (modifiers.indexOf('trim') !== -1) {
value = value.trim(); value = value.trim();
} }
if (modifiers.indexOf('number') !== -1) { if (modifiers.indexOf('number') !== -1) {
value = this._n(value); value = this._n(value);
} }
} }
if (!target) { if (!target) {
target = this; target = this;
} }
// 解决动态属性添加 // 解决动态属性添加
Vue.set(target, key, value); Vue.set(target, key, value);
}; };
Vue.prototype.__set_sync = function(target, key, value) { Vue.prototype.__set_sync = function(target, key, value) {
if (!target) { if (!target) {
target = this; target = this;
} }
// 解决动态属性添加 // 解决动态属性添加
Vue.set(target, key, value); Vue.set(target, key, value);
}; };
Vue.prototype.__get_orig = function(item) { Vue.prototype.__get_orig = function(item) {
if (isPlainObject(item)) { if (isPlainObject(item)) {
return item['$orig'] || item return item['$orig'] || item
} }
return item return item
}; };
Vue.prototype.__get_value = function(dataPath, target) { Vue.prototype.__get_value = function(dataPath, target) {
return getTarget(target || this, dataPath) return getTarget(target || this, dataPath)
}; };
Vue.prototype.__get_class = function(dynamicClass, staticClass) { Vue.prototype.__get_class = function(dynamicClass, staticClass) {
return renderClass(staticClass, dynamicClass) return renderClass(staticClass, dynamicClass)
}; };
Vue.prototype.__get_style = function(dynamicStyle, staticStyle) { Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {
if (!dynamicStyle && !staticStyle) { if (!dynamicStyle && !staticStyle) {
return '' return ''
} }
var dynamicStyleObj = normalizeStyleBinding(dynamicStyle); var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);
var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj; var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;
return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + ":" + (styleObj[name])); }).join(';') return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + ":" + (styleObj[name])); }).join(';')
}; };
Vue.prototype.__map = function(val, iteratee) { Vue.prototype.__map = function(val, iteratee) {
//TODO 暂不考虑 string //TODO 暂不考虑 string
var ret, i, l, keys, key; var ret, i, l, keys, key;
if (Array.isArray(val)) { if (Array.isArray(val)) {
ret = new Array(val.length); ret = new Array(val.length);
for (i = 0, l = val.length; i < l; i++) { for (i = 0, l = val.length; i < l; i++) {
ret[i] = iteratee(val[i], i); ret[i] = iteratee(val[i], i);
} }
return ret return ret
} else if (isObject(val)) { } else if (isObject(val)) {
keys = Object.keys(val); keys = Object.keys(val);
ret = Object.create(null); ret = Object.create(null);
for (i = 0, l = keys.length; i < l; i++) { for (i = 0, l = keys.length; i < l; i++) {
key = keys[i]; key = keys[i];
ret[key] = iteratee(val[key], key, i); ret[key] = iteratee(val[key], key, i);
} }
return ret return ret
} else if (typeof val === 'number') { } else if (typeof val === 'number') {
ret = new Array(val); ret = new Array(val);
for (i = 0, l = val; i < l; i++) { for (i = 0, l = val; i < l; i++) {
// 第一个参数暂时仍和小程序一致 // 第一个参数暂时仍和小程序一致
ret[i] = iteratee(i, i); ret[i] = iteratee(i, i);
} }
return ret return ret
} }
return [] return []
}; };
} }
/* */ /* */
var LIFECYCLE_HOOKS$1 = [ var LIFECYCLE_HOOKS$1 = [
//App //App
'onLaunch', 'onLaunch',
'onShow', 'onShow',
'onHide', 'onHide',
'onUniNViewMessage', 'onUniNViewMessage',
'onPageNotFound', 'onPageNotFound',
'onThemeChange', 'onThemeChange',
'onError', 'onError',
'onUnhandledRejection', 'onUnhandledRejection',
//Page //Page
'onInit', 'onInit',
'onLoad', 'onLoad',
// 'onShow', // 'onShow',
'onReady', 'onReady',
// 'onHide', // 'onHide',
'onUnload', 'onUnload',
'onPullDownRefresh', 'onPullDownRefresh',
'onReachBottom', 'onReachBottom',
'onTabItemTap', 'onTabItemTap',
'onAddToFavorites', 'onAddToFavorites',
'onShareTimeline', 'onShareTimeline',
'onShareAppMessage', 'onShareAppMessage',
'onResize', 'onResize',
'onPageScroll', 'onPageScroll',
'onNavigationBarButtonTap', 'onNavigationBarButtonTap',
'onBackPress', 'onBackPress',
'onNavigationBarSearchInputChanged', 'onNavigationBarSearchInputChanged',
'onNavigationBarSearchInputConfirmed', 'onNavigationBarSearchInputConfirmed',
'onNavigationBarSearchInputClicked', 'onNavigationBarSearchInputClicked',
//Component //Component
// 'onReady', // 兼容旧版本,应该移除该事件 // 'onReady', // 兼容旧版本,应该移除该事件
'onPageShow', 'onPageShow',
'onPageHide', 'onPageHide',
'onPageResize' 'onPageResize',
]; 'onUploadDouyinVideo'
function lifecycleMixin$1(Vue) { ];
function lifecycleMixin$1(Vue) {
//fixed vue-class-component
var oldExtend = Vue.extend; //fixed vue-class-component
Vue.extend = function(extendOptions) { var oldExtend = Vue.extend;
extendOptions = extendOptions || {}; Vue.extend = function(extendOptions) {
extendOptions = extendOptions || {};
var methods = extendOptions.methods;
if (methods) { var methods = extendOptions.methods;
Object.keys(methods).forEach(function (methodName) { if (methods) {
if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) { Object.keys(methods).forEach(function (methodName) {
extendOptions[methodName] = methods[methodName]; if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {
delete methods[methodName]; extendOptions[methodName] = methods[methodName];
} delete methods[methodName];
}); }
} });
}
return oldExtend.call(this, extendOptions)
}; return oldExtend.call(this, extendOptions)
};
var strategies = Vue.config.optionMergeStrategies;
var mergeHook = strategies.created; var strategies = Vue.config.optionMergeStrategies;
LIFECYCLE_HOOKS$1.forEach(function (hook) { var mergeHook = strategies.created;
strategies[hook] = mergeHook; LIFECYCLE_HOOKS$1.forEach(function (hook) {
}); strategies[hook] = mergeHook;
});
Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;
} Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;
}
/* */
/* */
// install platform patch function
Vue.prototype.__patch__ = patch; // install platform patch function
Vue.prototype.__patch__ = patch;
// public mount method
Vue.prototype.$mount = function( // public mount method
el , Vue.prototype.$mount = function(
hydrating el ,
) { hydrating
return mountComponent$1(this, el, hydrating) ) {
}; return mountComponent$1(this, el, hydrating)
};
lifecycleMixin$1(Vue);
lifecycleMixin$1(Vue);
internalMixin(Vue); internalMixin(Vue);
/* */ /* */
......
...@@ -87,12 +87,6 @@ function findHooks (vueOptions, hooks = []) { ...@@ -87,12 +87,6 @@ function findHooks (vueOptions, hooks = []) {
function initHook (mpOptions, hook, excludes) { function initHook (mpOptions, hook, excludes) {
if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) { if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
mpOptions[hook] = function (args) { mpOptions[hook] = function (args) {
if (
(__PLATFORM__ === 'mp-toutiao' || __PLATFORM__ === 'mp-lark') &&
hook === 'onError'
) {
return getApp().$vm.$callHook(hook, args)
}
return this.$vm && this.$vm.__call_hook(hook, args) return this.$vm && this.$vm.__call_hook(hook, args)
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册