import { isFn, hasOwn } from 'uni-shared' export const isComponent2 = xhs.canIUse('component2') export const mocks = ['$id'] export function initSpecialMethods (mpInstance) { if (!mpInstance.$vm) { return } let path = mpInstance.is || mpInstance.route if (!path) { return } if (path.indexOf('/') === 0) { path = path.substr(1) } const specialMethods = xhs.specialMethods && xhs.specialMethods[path] if (specialMethods) { specialMethods.forEach(method => { if (isFn(mpInstance.$vm[method])) { mpInstance[method] = function (event) { if (hasOwn(event, 'markerId')) { event.detail = typeof event.detail === 'object' ? event.detail : {} event.detail.markerId = event.markerId } // TODO normalizeEvent mpInstance.$vm[method](event) } } }) } } export const handleWrap = function (mp, destory) { const vueId = mp.props.vueId const list = (mp.props['data-event-list'] || '').split(',') list.forEach(eventName => { const key = `${eventName}${vueId}` if (destory) { delete this[key] } else { // TODO remove handleRef this[key] = function () { mp.props[eventName].apply(this, arguments) } } }) }