import createCallbacks from 'uni-helpers/callbacks'
|
import {
|
getCurrentPageVm
|
} from '../../platform'
|
import {
|
checkInWindows
|
} from 'uni-helpers/windows'
|
const createMediaQueryObserverCallbacks = createCallbacks('requestMediaQueryObserver')
|
|
class ServiceMediaQueryObserver {
|
constructor (component, options) {
|
this.pageId = component.$page && component.$page.id
|
this.component = component._$id || component // app-plus 平台传输_$id
|
this.options = options
|
}
|
|
observe (options, callback) {
|
if (typeof callback !== 'function') {
|
return
|
}
|
this.options = options
|
|
this.reqId = createMediaQueryObserverCallbacks.push(callback)
|
|
UniServiceJSBridge.publishHandler('requestMediaQueryObserver', {
|
reqId: this.reqId,
|
component: this.component,
|
options: this.options
|
}, checkInWindows(this.component) ? this.component : this.pageId)
|
}
|
|
disconnect () {
|
UniServiceJSBridge.publishHandler('destroyMediaQueryObserver', {
|
reqId: this.reqId
|
}, checkInWindows(this.component) ? this.component : this.pageId)
|
}
|
}
|
|
export function createMediaQueryObserver (context, options) {
|
if (!context._isVue) {
|
options = context
|
context = null
|
}
|
if (context) {
|
return new ServiceMediaQueryObserver(context, options)
|
}
|
return new ServiceMediaQueryObserver(getCurrentPageVm('createMediaQueryObserver'), options)
|
}
|