Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
genary
uni-app
提交
eca4097c
U
uni-app
项目概览
genary
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eca4097c
编写于
8月 05, 2021
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(App): IntersectionObserver
上级
bed042c2
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
809 addition
and
130 deletion
+809
-130
packages/uni-app-plus/dist/uni-app-service.es.js
packages/uni-app-plus/dist/uni-app-service.es.js
+99
-79
packages/uni-app-plus/dist/uni-app-view.umd.js
packages/uni-app-plus/dist/uni-app-view.umd.js
+640
-39
packages/uni-app-plus/src/platform/index.ts
packages/uni-app-plus/src/platform/index.ts
+5
-10
packages/uni-app-plus/src/service/api/ui/intersectionObserver.ts
...s/uni-app-plus/src/service/api/ui/intersectionObserver.ts
+42
-0
packages/uni-app-plus/src/view/framework/viewMethods.ts
packages/uni-app-plus/src/view/framework/viewMethods.ts
+17
-0
packages/uni-h5/src/platform/dom.ts
packages/uni-h5/src/platform/dom.ts
+4
-0
packages/uni-h5/src/service/api/ui/intersectionObserver.ts
packages/uni-h5/src/service/api/ui/intersectionObserver.ts
+2
-2
未找到文件。
packages/uni-app-plus/dist/uni-app-service.es.js
浏览文件 @
eca4097c
...
...
@@ -10,79 +10,79 @@ const __uniRoutes = instanceContext.__uniRoutes;
var serviceContext = (function (vue) {
'use strict';
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
// Use a lookup table to find the index.
var lookup = /*#__PURE__*/ (function () {
const lookup = new Uint8Array(256);
for (var i = 0; i < chars.length; i++) {
lookup[chars.charCodeAt(i)] = i;
}
return lookup
})();
function encode$3(arraybuffer) {
var bytes = new Uint8Array(arraybuffer),
i,
len = bytes.length,
base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
return base64
}
function decode$1(base64) {
var bufferLength = base64.length * 0.75,
len = base64.length,
i,
p = 0,
encoded1,
encoded2,
encoded3,
encoded4;
if (base64[base64.length - 1] === '=') {
bufferLength--;
if (base64[base64.length - 2] === '=') {
bufferLength--;
}
}
var arraybuffer = new ArrayBuffer(bufferLength),
bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i += 4) {
encoded1 = lookup[base64.charCodeAt(i)];
encoded2 = lookup[base64.charCodeAt(i + 1)];
encoded3 = lookup[base64.charCodeAt(i + 2)];
encoded4 = lookup[base64.charCodeAt(i + 3)];
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer
/*
* base64-arraybuffer
* https://github.com/niklasvh/base64-arraybuffer
*
* Copyright (c) 2012 Niklas von Hertzen
* Licensed under the MIT license.
*/
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
// Use a lookup table to find the index.
var lookup = /*#__PURE__*/ (function () {
const lookup = new Uint8Array(256);
for (var i = 0; i < chars.length; i++) {
lookup[chars.charCodeAt(i)] = i;
}
return lookup
})();
function encode$3(arraybuffer) {
var bytes = new Uint8Array(arraybuffer),
i,
len = bytes.length,
base64 = '';
for (i = 0; i < len; i += 3) {
base64 += chars[bytes[i] >> 2];
base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
base64 += chars[bytes[i + 2] & 63];
}
if (len % 3 === 2) {
base64 = base64.substring(0, base64.length - 1) + '=';
} else if (len % 3 === 1) {
base64 = base64.substring(0, base64.length - 2) + '==';
}
return base64
}
function decode$1(base64) {
var bufferLength = base64.length * 0.75,
len = base64.length,
i,
p = 0,
encoded1,
encoded2,
encoded3,
encoded4;
if (base64[base64.length - 1] === '=') {
bufferLength--;
if (base64[base64.length - 2] === '=') {
bufferLength--;
}
}
var arraybuffer = new ArrayBuffer(bufferLength),
bytes = new Uint8Array(arraybuffer);
for (i = 0; i < len; i += 4) {
encoded1 = lookup[base64.charCodeAt(i)];
encoded2 = lookup[base64.charCodeAt(i + 1)];
encoded3 = lookup[base64.charCodeAt(i + 2)];
encoded4 = lookup[base64.charCodeAt(i + 3)];
bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
}
return arraybuffer
}
/**
...
...
@@ -2222,8 +2222,28 @@ var serviceContext = (function (vue) {
}, pageId, operateMapCallback);
}
function addIntersectionObserver(args, pageId) { }
function removeIntersectionObserver(args, pageId) { }
function getEventName(reqId) {
const EVENT_NAME = 'IntersectionObserver';
return `${EVENT_NAME}.${reqId}`;
}
function addIntersectionObserver({ reqId, component, options, callback }, _pageId) {
const eventName = getEventName(reqId);
UniServiceJSBridge.invokeViewMethod('addIntersectionObserver', {
reqId,
component: component.$el.nodeId,
options,
eventName,
}, _pageId);
UniServiceJSBridge.subscribe(eventName, callback);
}
function removeIntersectionObserver({ reqId, component }, _pageId) {
UniServiceJSBridge.invokeViewMethod('removeIntersectionObserver', {
reqId,
component: component.$el.nodeId,
}, _pageId);
UniServiceJSBridge.unsubscribe(getEventName(reqId));
}
function addMediaQueryObserver(args, pageId) { }
function removeMediaQueryObserver(args, pageId) { }
const TEMP_PATH$1 = '';
...
...
@@ -6135,10 +6155,10 @@ var serviceContext = (function (vue) {
resolve();
}));
const onBluetoothDeviceFound = defineOnApi(API_ON_BLUETOOTH_DEVICE_FOUND, warpPlusEvent(() => plus.bluetooth.onBluetoothDeviceFound, API_ON_BLUETOOTH_DEVICE_FOUND));
const onBluetoothAdapterStateChange = defineOnApi(API_ON_BLUETOOTH_ADAPTER_STATE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBluetoothAdapterStateChange, API_ON_BLUETOOTH_ADAPTER_STATE_CHANGE));
const onBLEConnectionStateChange = defineOnApi(API_ON_BLE_CONNECTION_STATE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBLEConnectionStateChange, API_ON_BLE_CONNECTION_STATE_CHANGE));
const onBLECharacteristicValueChange = defineOnApi(API_ON_BLE_CHARACTERISTIC_VALUE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBLECharacteristicValueChange, API_ON_BLE_CHARACTERISTIC_VALUE_CHANGE));
const onBluetoothDeviceFound = defineOnApi(API_ON_BLUETOOTH_DEVICE_FOUND, warpPlusEvent(() => plus.bluetooth.onBluetoothDeviceFound
.bind(plus.bluetooth)
, API_ON_BLUETOOTH_DEVICE_FOUND));
const onBluetoothAdapterStateChange = defineOnApi(API_ON_BLUETOOTH_ADAPTER_STATE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBluetoothAdapterStateChange
.bind(plus.bluetooth)
, API_ON_BLUETOOTH_ADAPTER_STATE_CHANGE));
const onBLEConnectionStateChange = defineOnApi(API_ON_BLE_CONNECTION_STATE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBLEConnectionStateChange
.bind(plus.bluetooth)
, API_ON_BLE_CONNECTION_STATE_CHANGE));
const onBLECharacteristicValueChange = defineOnApi(API_ON_BLE_CHARACTERISTIC_VALUE_CHANGE, warpPlusEvent(() => plus.bluetooth.onBLECharacteristicValueChange
.bind(plus.bluetooth)
, API_ON_BLE_CHARACTERISTIC_VALUE_CHANGE));
const openBluetoothAdapter = defineAsyncApi('openBluetoothAdapter', warpPlusMethod(() => plus.bluetooth.openBluetoothAdapter.bind(plus.bluetooth)));
const closeBluetoothAdapter = defineAsyncApi('closeBluetoothAdapter', warpPlusMethod(() => plus.bluetooth.closeBluetoothAdapter.bind(plus.bluetooth)));
const getBluetoothAdapterState = defineAsyncApi('getBluetoothAdapterState', warpPlusMethod(() => plus.bluetooth.getBluetoothAdapterState));
...
...
packages/uni-app-plus/dist/uni-app-view.umd.js
浏览文件 @
eca4097c
此差异已折叠。
点击以展开。
packages/uni-app-plus/src/platform/index.ts
浏览文件 @
eca4097c
import
{
AddIntersectionObserverArgs
,
AddMediaQueryObserverArgs
,
RemoveIntersectionObserverArgs
,
RemoveMediaQueryObserverArgs
,
}
from
'
@dcloudio/uni-api
'
...
...
@@ -11,14 +9,11 @@ export { getRealPath } from './getRealPath'
export
{
operateVideoPlayer
}
from
'
../service/api/context/operateVideoPlayer
'
export
{
operateMap
}
from
'
../service/api/context/operateMap
'
export
function
addIntersectionObserver
(
args
:
AddIntersectionObserverArgs
,
pageId
:
number
)
{}
export
function
removeIntersectionObserver
(
args
:
RemoveIntersectionObserverArgs
,
pageId
:
number
)
{}
export
{
addIntersectionObserver
,
removeIntersectionObserver
,
}
from
'
../service/api/ui/intersectionObserver
'
export
function
addMediaQueryObserver
(
args
:
AddMediaQueryObserverArgs
,
pageId
:
number
...
...
packages/uni-app-plus/src/service/api/ui/intersectionObserver.ts
0 → 100644
浏览文件 @
eca4097c
import
{
AddIntersectionObserverArgs
,
RemoveIntersectionObserverArgs
,
}
from
'
@dcloudio/uni-api
'
function
getEventName
(
reqId
:
number
)
{
const
EVENT_NAME
=
'
IntersectionObserver
'
return
`
${
EVENT_NAME
}
.
${
reqId
}
`
}
export
function
addIntersectionObserver
(
{
reqId
,
component
,
options
,
callback
}:
AddIntersectionObserverArgs
,
_pageId
:
number
)
{
const
eventName
=
getEventName
(
reqId
)
UniServiceJSBridge
.
invokeViewMethod
(
'
addIntersectionObserver
'
,
{
reqId
,
component
:
component
.
$el
.
nodeId
,
options
,
eventName
,
},
_pageId
)
UniServiceJSBridge
.
subscribe
(
eventName
,
callback
)
}
export
function
removeIntersectionObserver
(
{
reqId
,
component
}:
RemoveIntersectionObserverArgs
,
_pageId
:
number
)
{
UniServiceJSBridge
.
invokeViewMethod
(
'
removeIntersectionObserver
'
,
{
reqId
,
component
:
component
.
$el
.
nodeId
,
},
_pageId
)
UniServiceJSBridge
.
unsubscribe
(
getEventName
(
reqId
))
}
packages/uni-app-plus/src/view/framework/viewMethods.ts
浏览文件 @
eca4097c
import
{
extend
}
from
'
@vue/shared
'
import
{
API_LOAD_FONT_FACE
,
API_PAGE_SCROLL_TO
,
...
...
@@ -10,6 +11,10 @@ import {
}
from
'
@dcloudio/uni-core
'
import
{
ComponentPublicInstance
}
from
'
vue
'
import
{
requestComponentInfo
}
from
'
../../../../uni-h5/src/platform
'
import
{
addIntersectionObserver
,
removeIntersectionObserver
,
}
from
'
../../../../uni-h5/src/platform
'
import
{
loadFontFace
}
from
'
./dom/font
'
import
{
onPageReady
,
pageScrollTo
}
from
'
./dom/page
'
...
...
@@ -32,6 +37,18 @@ export function initViewMethods() {
requestComponentInfo
(
pageVm
,
args
.
reqs
,
publish
)
}
)
registerViewMethod
(
pageId
,
'
addIntersectionObserver
'
,
(
args
)
=>
{
addIntersectionObserver
(
extend
({},
args
,
{
callback
(
res
:
any
)
{
UniViewJSBridge
.
publishHandler
(
args
.
eventName
,
res
)
},
})
)
})
registerViewMethod
(
pageId
,
'
removeIntersectionObserver
'
,
(
args
)
=>
{
removeIntersectionObserver
(
args
)
})
registerViewMethod
(
pageId
,
API_PAGE_SCROLL_TO
,
pageScrollTo
)
registerViewMethod
(
pageId
,
API_LOAD_FONT_FACE
,
loadFontFace
)
}
packages/uni-h5/src/platform/dom.ts
浏览文件 @
eca4097c
...
...
@@ -10,6 +10,10 @@ declare global {
}
export
function
findElem
(
vm
:
ComponentPublicInstance
)
{
if
(
__APP_VIEW__
)
{
// App 端,传入的是 nodeId
return
(
window
as
any
).
__$__
(
vm
).
$
}
return
vm
.
$el
}
...
...
packages/uni-h5/src/service/api/ui/intersectionObserver.ts
浏览文件 @
eca4097c
...
...
@@ -7,7 +7,7 @@ import { findElem } from '../../../platform/dom'
export
function
addIntersectionObserver
(
{
reqId
,
component
,
options
,
callback
}:
AddIntersectionObserverArgs
,
_pageId
:
number
_pageId
?
:
number
)
{
const
$el
=
findElem
(
component
)
;(
$el
.
__io
||
(
$el
.
__io
=
{}))[
reqId
]
=
requestComponentObserver
(
...
...
@@ -19,7 +19,7 @@ export function addIntersectionObserver(
export
function
removeIntersectionObserver
(
{
reqId
,
component
}:
RemoveIntersectionObserverArgs
,
_pageId
:
number
_pageId
?
:
number
)
{
const
$el
=
findElem
(
component
)
const
intersectionObserver
=
$el
.
__io
&&
$el
.
__io
[
reqId
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录