提交 bc25bf5e 编写于 作者: inkwalk's avatar inkwalk

feat(app): mediaQueryObserver

上级 fab3f14d
...@@ -2229,12 +2229,12 @@ var serviceContext = (function (vue) { ...@@ -2229,12 +2229,12 @@ var serviceContext = (function (vue) {
}, pageId, operateMapCallback); }, pageId, operateMapCallback);
} }
function getEventName(reqId) { function getEventName$1(reqId) {
const EVENT_NAME = 'IntersectionObserver'; const EVENT_NAME = 'IntersectionObserver';
return `${EVENT_NAME}.${reqId}`; return `${EVENT_NAME}.${reqId}`;
} }
function addIntersectionObserver({ reqId, component, options, callback }, _pageId) { function addIntersectionObserver({ reqId, component, options, callback }, _pageId) {
const eventName = getEventName(reqId); const eventName = getEventName$1(reqId);
UniServiceJSBridge.invokeViewMethod('addIntersectionObserver', { UniServiceJSBridge.invokeViewMethod('addIntersectionObserver', {
reqId, reqId,
component: component.$el.nodeId, component: component.$el.nodeId,
...@@ -2248,11 +2248,32 @@ var serviceContext = (function (vue) { ...@@ -2248,11 +2248,32 @@ var serviceContext = (function (vue) {
reqId, reqId,
component: component.$el.nodeId, component: component.$el.nodeId,
}, _pageId); }, _pageId);
UniServiceJSBridge.unsubscribe(getEventName$1(reqId));
}
function getEventName(reqId) {
const EVENT_NAME = 'MediaQueryObserver';
return `${EVENT_NAME}.${reqId}`;
}
function addMediaQueryObserver({ reqId, component, options, callback }, _pageId) {
const eventName = getEventName(reqId);
UniServiceJSBridge.invokeViewMethod('addMediaQueryObserver', {
reqId,
component: component.$el.nodeId,
options,
eventName,
}, _pageId);
UniServiceJSBridge.subscribe(eventName, callback);
}
function removeMediaQueryObserver({ reqId, component }, _pageId) {
UniServiceJSBridge.invokeViewMethod('removeMediaQueryObserver', {
reqId,
component: component.$el.nodeId,
// reqEnd: true
}, _pageId);
UniServiceJSBridge.unsubscribe(getEventName(reqId)); UniServiceJSBridge.unsubscribe(getEventName(reqId));
} }
function addMediaQueryObserver(args, pageId) { }
function removeMediaQueryObserver(args, pageId) { }
const TEMP_PATH$1 = ''; const TEMP_PATH$1 = '';
const API_UPX2PX = 'upx2px'; const API_UPX2PX = 'upx2px';
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
import {
AddMediaQueryObserverArgs,
RemoveMediaQueryObserverArgs,
} from '@dcloudio/uni-api'
export { getBaseSystemInfo } from '../service/api/base/getBaseSystemInfo' export { getBaseSystemInfo } from '../service/api/base/getBaseSystemInfo'
export { requestComponentInfo } from '../service/api/ui/requestComponentInfo' export { requestComponentInfo } from '../service/api/ui/requestComponentInfo'
export { getRealPath } from './getRealPath' export { getRealPath } from './getRealPath'
...@@ -14,14 +9,11 @@ export { ...@@ -14,14 +9,11 @@ export {
removeIntersectionObserver, removeIntersectionObserver,
} from '../service/api/ui/intersectionObserver' } from '../service/api/ui/intersectionObserver'
export function addMediaQueryObserver( export {
args: AddMediaQueryObserverArgs, addMediaQueryObserver,
pageId: number removeMediaQueryObserver,
) {} } from '../service/api/ui/mediaQueryObserver'
export function removeMediaQueryObserver(
args: RemoveMediaQueryObserverArgs,
pageId: number
) {}
export function saveImage( export function saveImage(
base64: string, base64: string,
dirname: string, dirname: string,
......
import {
AddMediaQueryObserverArgs,
RemoveMediaQueryObserverArgs,
} from '@dcloudio/uni-api'
function getEventName(reqId: number) {
const EVENT_NAME = 'MediaQueryObserver'
return `${EVENT_NAME}.${reqId}`
}
export function addMediaQueryObserver(
{ reqId, component, options, callback }: AddMediaQueryObserverArgs,
_pageId: number
) {
const eventName = getEventName(reqId)
UniServiceJSBridge.invokeViewMethod(
'addMediaQueryObserver',
{
reqId,
component: component.$el.nodeId,
options,
eventName,
},
_pageId
)
UniServiceJSBridge.subscribe(eventName, callback)
}
export function removeMediaQueryObserver(
{ reqId, component }: RemoveMediaQueryObserverArgs,
_pageId: number
) {
UniServiceJSBridge.invokeViewMethod(
'removeMediaQueryObserver',
{
reqId,
component: component.$el.nodeId,
},
_pageId
)
UniServiceJSBridge.unsubscribe(getEventName(reqId))
}
...@@ -14,6 +14,8 @@ import { requestComponentInfo } from '../../../../uni-h5/src/platform' ...@@ -14,6 +14,8 @@ import { requestComponentInfo } from '../../../../uni-h5/src/platform'
import { import {
addIntersectionObserver, addIntersectionObserver,
removeIntersectionObserver, removeIntersectionObserver,
addMediaQueryObserver,
removeMediaQueryObserver,
} from '../../../../uni-h5/src/platform' } from '../../../../uni-h5/src/platform'
import { loadFontFace } from './dom/font' import { loadFontFace } from './dom/font'
...@@ -49,6 +51,18 @@ export function initViewMethods() { ...@@ -49,6 +51,18 @@ export function initViewMethods() {
registerViewMethod(pageId, 'removeIntersectionObserver', (args) => { registerViewMethod(pageId, 'removeIntersectionObserver', (args) => {
removeIntersectionObserver(args) removeIntersectionObserver(args)
}) })
registerViewMethod(pageId, 'addMediaQueryObserver', (args) => {
addMediaQueryObserver(
extend({}, args, {
callback(res: any) {
UniViewJSBridge.publishHandler(args.eventName, res)
},
})
)
})
registerViewMethod(pageId, 'removeMediaQueryObserver', (args) => {
removeMediaQueryObserver(args)
})
registerViewMethod(pageId, API_PAGE_SCROLL_TO, pageScrollTo) registerViewMethod(pageId, API_PAGE_SCROLL_TO, pageScrollTo)
registerViewMethod(pageId, API_LOAD_FONT_FACE, loadFontFace) registerViewMethod(pageId, API_LOAD_FONT_FACE, loadFontFace)
} }
...@@ -45,7 +45,7 @@ function humpToLine(name: string) { ...@@ -45,7 +45,7 @@ function humpToLine(name: string) {
// 请求媒体查询对象 // 请求媒体查询对象
export function addMediaQueryObserver( export function addMediaQueryObserver(
{ reqId, component, options, callback }: AddMediaQueryObserverArgs, { reqId, component, options, callback }: AddMediaQueryObserverArgs,
_pageId: number _pageId?: number
) { ) {
// 创建一个媒体查询对象 // 创建一个媒体查询对象
const mediaQueryObserver = (mediaQueryObservers[reqId] = window.matchMedia( const mediaQueryObserver = (mediaQueryObservers[reqId] = window.matchMedia(
...@@ -61,7 +61,7 @@ export function addMediaQueryObserver( ...@@ -61,7 +61,7 @@ export function addMediaQueryObserver(
// 销毁媒体查询对象 // 销毁媒体查询对象
export function removeMediaQueryObserver( export function removeMediaQueryObserver(
{ reqId, component }: RemoveMediaQueryObserverArgs, { reqId, component }: RemoveMediaQueryObserverArgs,
_pageId: number _pageId?: number
) { ) {
const listener = listeners[reqId] const listener = listeners[reqId]
const mediaQueryObserver = mediaQueryObservers[reqId] const mediaQueryObserver = mediaQueryObservers[reqId]
......
...@@ -4044,7 +4044,7 @@ function createVueApp(rootComponent, rootProps = null) { ...@@ -4044,7 +4044,7 @@ function createVueApp(rootComponent, rootProps = null) {
function withModifiers() { } function withModifiers() { }
function createVNode$1() { } function createVNode$1() { }
function applyOptions(options, instance, publicThis) { function initHooks(options, instance, publicThis) {
options.mpType || publicThis.$mpType; options.mpType || publicThis.$mpType;
// 为了组件也可以监听部分生命周期,故不再判断mpType,统一添加on开头的生命周期 // 为了组件也可以监听部分生命周期,故不再判断mpType,统一添加on开头的生命周期
Object.keys(options).forEach((name) => { Object.keys(options).forEach((name) => {
...@@ -4057,6 +4057,10 @@ function applyOptions(options, instance, publicThis) { ...@@ -4057,6 +4057,10 @@ function applyOptions(options, instance, publicThis) {
}); });
} }
function applyOptions(options, instance, publicThis) {
initHooks(options, instance, publicThis);
}
function set(target, key, val) { function set(target, key, val) {
return (target[key] = val); return (target[key] = val);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册