2021-04-05 22:13:29 +00:00
|
|
|
import { extend, NOOP } from '@vue/shared'
|
|
|
|
import { PublicPropertiesMap } from '../componentPublicInstance'
|
2021-04-08 14:06:12 +00:00
|
|
|
import { getCompatChildren } from './instanceChildren'
|
2021-04-07 19:38:04 +00:00
|
|
|
import { assertCompatEnabled } from './compatConfig'
|
|
|
|
import { DeprecationTypes } from './deprecations'
|
2021-04-08 14:06:12 +00:00
|
|
|
import { off, on, once } from './instanceEventEmitter'
|
|
|
|
import { getCompatListeners } from './instanceListeners'
|
2021-04-05 22:13:29 +00:00
|
|
|
|
|
|
|
export function installCompatInstanceProperties(map: PublicPropertiesMap) {
|
|
|
|
const set = (target: any, key: any, val: any) => {
|
|
|
|
target[key] = val
|
|
|
|
}
|
|
|
|
|
|
|
|
const del = (target: any, key: any) => {
|
|
|
|
delete target[key]
|
|
|
|
}
|
|
|
|
|
|
|
|
extend(map, {
|
|
|
|
$set: () => {
|
2021-04-07 19:38:04 +00:00
|
|
|
assertCompatEnabled(DeprecationTypes.INSTANCE_SET)
|
2021-04-05 22:13:29 +00:00
|
|
|
return set
|
|
|
|
},
|
|
|
|
$delete: () => {
|
2021-04-07 19:38:04 +00:00
|
|
|
assertCompatEnabled(DeprecationTypes.INSTANCE_DELETE)
|
2021-04-05 22:13:29 +00:00
|
|
|
return del
|
|
|
|
},
|
|
|
|
$mount: i => {
|
2021-04-07 19:38:04 +00:00
|
|
|
assertCompatEnabled(DeprecationTypes.GLOBAL_MOUNT)
|
2021-04-05 22:13:29 +00:00
|
|
|
// root mount override from ./global.ts in installCompatMount
|
|
|
|
return i.ctx._compat_mount || NOOP
|
|
|
|
},
|
|
|
|
$destroy: i => {
|
2021-04-07 19:38:04 +00:00
|
|
|
assertCompatEnabled(DeprecationTypes.INSTANCE_DESTROY)
|
2021-04-05 22:13:29 +00:00
|
|
|
// root destroy override from ./global.ts in installCompatMount
|
|
|
|
return i.ctx._compat_destroy || NOOP
|
2021-04-06 19:58:12 +00:00
|
|
|
},
|
|
|
|
$on: i => on.bind(null, i),
|
|
|
|
$once: i => once.bind(null, i),
|
2021-04-06 20:51:11 +00:00
|
|
|
$off: i => off.bind(null, i),
|
2021-04-08 14:06:12 +00:00
|
|
|
$children: getCompatChildren,
|
|
|
|
$listeners: getCompatListeners
|
2021-04-05 22:13:29 +00:00
|
|
|
} as PublicPropertiesMap)
|
|
|
|
}
|