@mpxjs/core 2.8.56 → 2.8.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/core/proxy.js +14 -2
- package/src/platform/builtInMixins/proxyEventMixin.js +13 -23
- package/src/platform/builtInMixins/proxyEventMixin.web.js +0 -6
- package/src/platform/builtInMixins/renderHelperMixin.js +7 -1
- package/src/platform/patch/ali/getDefaultOptions.js +9 -11
- package/src/platform/patch/wx/getDefaultOptions.js +9 -11
- package/src/vuePlugin.js +10 -15
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mpxjs/core",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.60",
|
|
4
4
|
"description": "mpx runtime core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"miniprogram",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"main": "src/index.js",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@mpxjs/utils": "^2.8.
|
|
22
|
+
"@mpxjs/utils": "^2.8.60",
|
|
23
23
|
"lodash": "^4.1.1",
|
|
24
24
|
"miniprogram-api-typings": "^3.10.0"
|
|
25
25
|
},
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"url": "https://github.com/didi/mpx/issues"
|
|
48
48
|
},
|
|
49
49
|
"sideEffects": false,
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "02a77bf602744c35703b2fdc27171edbec09edcb"
|
|
51
51
|
}
|
package/src/core/proxy.js
CHANGED
|
@@ -311,7 +311,16 @@ export default class MpxProxy {
|
|
|
311
311
|
watch (source, cb, options) {
|
|
312
312
|
const target = this.target
|
|
313
313
|
const getter = isString(source)
|
|
314
|
-
? () =>
|
|
314
|
+
? () => {
|
|
315
|
+
// for watch multi path string like 'a.b,c,d'
|
|
316
|
+
if (source.indexOf(',') > -1) {
|
|
317
|
+
return source.split(',').map(path => {
|
|
318
|
+
return getByPath(target, path.trim())
|
|
319
|
+
})
|
|
320
|
+
} else {
|
|
321
|
+
return getByPath(target, source)
|
|
322
|
+
}
|
|
323
|
+
}
|
|
315
324
|
: source.bind(target)
|
|
316
325
|
|
|
317
326
|
if (isObject(cb)) {
|
|
@@ -529,6 +538,9 @@ export default class MpxProxy {
|
|
|
529
538
|
initRender () {
|
|
530
539
|
if (this.options.__nativeRender__) return this.doRender()
|
|
531
540
|
|
|
541
|
+
const _i = this.target._i.bind(this.target)
|
|
542
|
+
const _c = this.target._c.bind(this.target)
|
|
543
|
+
const _r = this.target._r.bind(this.target)
|
|
532
544
|
const effect = this.effect = new ReactiveEffect(() => {
|
|
533
545
|
// pre render for props update
|
|
534
546
|
if (this.propsUpdatedFlag) {
|
|
@@ -537,7 +549,7 @@ export default class MpxProxy {
|
|
|
537
549
|
|
|
538
550
|
if (this.target.__injectedRender) {
|
|
539
551
|
try {
|
|
540
|
-
return this.target.__injectedRender()
|
|
552
|
+
return this.target.__injectedRender(_i, _c, _r)
|
|
541
553
|
} catch (e) {
|
|
542
554
|
warn('Failed to execute render function, degrade to full-set-data mode.', this.options.mpxFileResource, e)
|
|
543
555
|
this.render()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { setByPath, error, hasOwn } from '@mpxjs/utils'
|
|
1
|
+
import { setByPath, error, hasOwn, dash2hump } from '@mpxjs/utils'
|
|
2
2
|
import Mpx from '../../index'
|
|
3
3
|
|
|
4
4
|
const datasetReg = /^data-(.+)$/
|
|
@@ -36,6 +36,8 @@ export default function proxyEventMixin () {
|
|
|
36
36
|
if (type === 'begin' || type === 'end') {
|
|
37
37
|
// 地图的 regionchange 事件会派发 e.type 为 begin 和 end 的事件
|
|
38
38
|
fallbackType = 'regionchange'
|
|
39
|
+
} else if (/-([a-z])/.test(type)) {
|
|
40
|
+
fallbackType = dash2hump(type)
|
|
39
41
|
} else if (__mpx_mode__ === 'ali') {
|
|
40
42
|
fallbackType = type.replace(/^./, i => i.toLowerCase())
|
|
41
43
|
}
|
|
@@ -89,34 +91,22 @@ export default function proxyEventMixin () {
|
|
|
89
91
|
}
|
|
90
92
|
if (__mpx_mode__ === 'ali') {
|
|
91
93
|
Object.assign(methods, {
|
|
92
|
-
triggerEvent (eventName, eventDetail
|
|
94
|
+
triggerEvent (eventName, eventDetail) {
|
|
93
95
|
const handlerName = eventName.replace(/^./, matched => matched.toUpperCase()).replace(/-([a-z])/g, (match, p1) => p1.toUpperCase())
|
|
94
96
|
const handler = this.props && (this.props['on' + handlerName] || this.props['catch' + handlerName])
|
|
95
97
|
if (handler && typeof handler === 'function') {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
type: eventName,
|
|
106
|
-
timeStamp,
|
|
107
|
-
target: { id, dataset, targetDataset: dataset },
|
|
108
|
-
currentTarget: { id, dataset },
|
|
109
|
-
detail: eventDetail
|
|
110
|
-
}
|
|
98
|
+
const dataset = collectDataset(this.props)
|
|
99
|
+
const id = this.props.id || ''
|
|
100
|
+
const timeStamp = +new Date()
|
|
101
|
+
const eventObj = {
|
|
102
|
+
type: eventName,
|
|
103
|
+
timeStamp,
|
|
104
|
+
target: { id, dataset, targetDataset: dataset },
|
|
105
|
+
currentTarget: { id, dataset },
|
|
106
|
+
detail: eventDetail
|
|
111
107
|
}
|
|
112
108
|
handler.call(this, eventObj)
|
|
113
109
|
}
|
|
114
|
-
},
|
|
115
|
-
__proxyEvent (e) {
|
|
116
|
-
const eventName = e.type
|
|
117
|
-
// 保持和微信一致
|
|
118
|
-
e.target = e.currentTarget
|
|
119
|
-
this.triggerEvent(eventName, {}, e)
|
|
120
110
|
}
|
|
121
111
|
})
|
|
122
112
|
}
|
|
@@ -18,12 +18,6 @@ export default function proxyEventMixin () {
|
|
|
18
18
|
const originValue = valuePath.reduce((acc, cur) => acc[cur], $event.detail)
|
|
19
19
|
const value = filterMethod ? (innerFilter[filterMethod] ? innerFilter[filterMethod](originValue) : typeof this[filterMethod] === 'function' && this[filterMethod]) : originValue
|
|
20
20
|
setByPath(this, expr, value)
|
|
21
|
-
},
|
|
22
|
-
__proxyEvent (e) {
|
|
23
|
-
const type = e.type
|
|
24
|
-
// 保持和微信一致 target 和 currentTarget 相同
|
|
25
|
-
e.target = e.currentTarget
|
|
26
|
-
this.triggerEvent(type, {}, e)
|
|
27
21
|
}
|
|
28
22
|
}
|
|
29
23
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isObject } from '@mpxjs/utils'
|
|
1
|
+
import { isObject, getByPath, hasOwn } from '@mpxjs/utils'
|
|
2
2
|
|
|
3
3
|
export default function renderHelperMixin () {
|
|
4
4
|
return {
|
|
@@ -22,6 +22,12 @@ export default function renderHelperMixin () {
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
_c (key, value) {
|
|
25
|
+
if (hasOwn(this.__mpxProxy.renderData, key)) {
|
|
26
|
+
return this.__mpxProxy.renderData[key]
|
|
27
|
+
}
|
|
28
|
+
if (value === undefined) {
|
|
29
|
+
value = getByPath(this, key)
|
|
30
|
+
}
|
|
25
31
|
this.__mpxProxy.renderData[key] = value
|
|
26
32
|
return value
|
|
27
33
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import MpxProxy from '../../../core/proxy'
|
|
2
2
|
import builtInKeysMap from '../builtInKeysMap'
|
|
3
3
|
import mergeOptions from '../../../core/mergeOptions'
|
|
4
|
-
import { isFunction, error, diffAndCloneA, hasOwn } from '@mpxjs/utils'
|
|
4
|
+
import { isFunction, error, diffAndCloneA, hasOwn, noop } from '@mpxjs/utils'
|
|
5
5
|
|
|
6
6
|
function transformApiForProxy (context, currentInject) {
|
|
7
7
|
const rawSetData = context.setData.bind(context)
|
|
@@ -45,16 +45,14 @@ function transformApiForProxy (context, currentInject) {
|
|
|
45
45
|
}
|
|
46
46
|
})
|
|
47
47
|
if (currentInject) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
})
|
|
57
|
-
}
|
|
48
|
+
Object.defineProperties(context, {
|
|
49
|
+
__injectedRender: {
|
|
50
|
+
get () {
|
|
51
|
+
return currentInject.render || noop
|
|
52
|
+
},
|
|
53
|
+
configurable: false
|
|
54
|
+
}
|
|
55
|
+
})
|
|
58
56
|
if (currentInject.getRefsData) {
|
|
59
57
|
Object.defineProperties(context, {
|
|
60
58
|
__getRefsData: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { hasOwn } from '@mpxjs/utils'
|
|
1
|
+
import { hasOwn, noop } from '@mpxjs/utils'
|
|
2
2
|
import MpxProxy from '../../../core/proxy'
|
|
3
3
|
import builtInKeysMap from '../builtInKeysMap'
|
|
4
4
|
import mergeOptions from '../../../core/mergeOptions'
|
|
@@ -83,16 +83,14 @@ function transformApiForProxy (context, currentInject) {
|
|
|
83
83
|
|
|
84
84
|
// 绑定注入的render
|
|
85
85
|
if (currentInject) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
})
|
|
95
|
-
}
|
|
86
|
+
Object.defineProperties(context, {
|
|
87
|
+
__injectedRender: {
|
|
88
|
+
get () {
|
|
89
|
+
return currentInject.render || noop
|
|
90
|
+
},
|
|
91
|
+
configurable: false
|
|
92
|
+
}
|
|
93
|
+
})
|
|
96
94
|
if (currentInject.getRefsData) {
|
|
97
95
|
Object.defineProperties(context, {
|
|
98
96
|
__getRefsData: {
|
package/src/vuePlugin.js
CHANGED
|
@@ -16,22 +16,17 @@ function collectDataset (attrs) {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export default function install (Vue) {
|
|
19
|
-
Vue.prototype.triggerEvent = function (eventName, eventDetail
|
|
19
|
+
Vue.prototype.triggerEvent = function (eventName, eventDetail) {
|
|
20
20
|
let eventObj = {}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
timeStamp,
|
|
31
|
-
target: { id, dataset, targetDataset: dataset },
|
|
32
|
-
currentTarget: { id, dataset },
|
|
33
|
-
detail: eventDetail
|
|
34
|
-
}
|
|
21
|
+
const dataset = collectDataset(this.$attrs)
|
|
22
|
+
const id = this.$attrs.id || ''
|
|
23
|
+
const timeStamp = +new Date()
|
|
24
|
+
eventObj = {
|
|
25
|
+
type: eventName,
|
|
26
|
+
timeStamp,
|
|
27
|
+
target: { id, dataset, targetDataset: dataset },
|
|
28
|
+
currentTarget: { id, dataset },
|
|
29
|
+
detail: eventDetail
|
|
35
30
|
}
|
|
36
31
|
return this.$emit(eventName, eventObj)
|
|
37
32
|
}
|