@tarojs/plugin-platform-harmony-ets 4.0.0-beta.7 → 4.0.0-beta.71
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/dist/apis/base/system.ts +73 -20
- package/dist/apis/canvas/index.ts +10 -1
- package/dist/apis/device/clipboard.ts +16 -8
- package/dist/apis/framework/index.ts +1 -5
- package/dist/apis/index.ts +27 -17
- package/dist/apis/network/request.ts +5 -5
- package/dist/apis/route/index.ts +15 -0
- package/dist/apis/storage/index.ts +146 -78
- package/dist/apis/ui/animation/animation.ts +71 -29
- package/dist/apis/ui/background.ts +2 -1
- package/dist/apis/ui/interaction/index.ts +42 -59
- package/dist/apis/ui/navigation-bar/index.ts +1 -1
- package/dist/apis/ui/scroll/index.ts +1 -1
- package/dist/apis/utils/index.ts +1 -1
- package/dist/apis/wxml/IntersectionObserver.ts +18 -10
- package/dist/apis/wxml/index.ts +2 -0
- package/dist/apis/wxml/selectorQuery.ts +24 -11
- package/dist/components-harmony-ets/button.ets +48 -34
- package/dist/components-harmony-ets/canvas.ets +51 -0
- package/dist/components-harmony-ets/checkbox.ets +69 -61
- package/dist/components-harmony-ets/form.ets +51 -29
- package/dist/components-harmony-ets/icon.ets +31 -19
- package/dist/components-harmony-ets/image.ets +34 -14
- package/dist/components-harmony-ets/index.ets +92 -0
- package/dist/components-harmony-ets/innerHtml.ets +11 -6
- package/dist/components-harmony-ets/input.ets +45 -41
- package/dist/components-harmony-ets/label.ets +69 -42
- package/dist/components-harmony-ets/listView.ets +26 -0
- package/dist/components-harmony-ets/movableArea.ets +126 -0
- package/dist/components-harmony-ets/movableView.ets +77 -0
- package/dist/components-harmony-ets/navigationBar.ets +65 -0
- package/dist/components-harmony-ets/pageMeta.ets +94 -0
- package/dist/components-harmony-ets/picker.ets +42 -38
- package/dist/components-harmony-ets/progress.ets +52 -0
- package/dist/components-harmony-ets/pseudo.ets +80 -0
- package/dist/components-harmony-ets/radio.ets +71 -64
- package/dist/components-harmony-ets/richText.ets +14 -30
- package/dist/components-harmony-ets/scrollList.ets +94 -0
- package/dist/components-harmony-ets/scrollView.ets +61 -57
- package/dist/components-harmony-ets/slider.ets +15 -14
- package/dist/components-harmony-ets/stickySection.ets +42 -0
- package/dist/components-harmony-ets/style.ets +372 -130
- package/dist/components-harmony-ets/swiper.ets +61 -20
- package/dist/components-harmony-ets/switch.ets +30 -28
- package/dist/components-harmony-ets/{index.ts → tag.ts} +6 -0
- package/dist/components-harmony-ets/text.ets +135 -49
- package/dist/components-harmony-ets/textArea.ets +47 -35
- package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
- package/dist/components-harmony-ets/utils/DynamicCenter.ts +1 -1
- package/dist/components-harmony-ets/utils/flexManager.ets +49 -19
- package/dist/components-harmony-ets/utils/helper.ets +18 -5
- package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
- package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
- package/dist/components-harmony-ets/utils/index.ts +54 -50
- package/dist/components-harmony-ets/utils/styles.ets +170 -93
- package/dist/components-harmony-ets/video.ets +34 -21
- package/dist/components-harmony-ets/view.ets +63 -52
- package/dist/components-harmony-ets/webView.ets +40 -34
- package/dist/index.d.ts +152 -0
- package/dist/index.js +85 -42
- package/dist/index.js.map +1 -1
- package/dist/runtime-ets/bom/document.ts +6 -4
- package/dist/runtime-ets/bom/getComputedStyle.ts +2 -2
- package/dist/runtime-ets/bom/window.ts +7 -0
- package/dist/runtime-ets/current.ts +3 -0
- package/dist/runtime-ets/dom/bind.ts +28 -12
- package/dist/runtime-ets/dom/class-list.ts +2 -2
- package/dist/runtime-ets/dom/cssNesting.ts +409 -0
- package/dist/runtime-ets/dom/cssStyleDeclaration.ts +28 -42
- package/dist/runtime-ets/dom/document.ts +22 -8
- package/dist/runtime-ets/dom/element/canvas.ts +136 -0
- package/dist/runtime-ets/dom/element/element.ts +334 -58
- package/dist/runtime-ets/dom/element/form.ts +23 -26
- package/dist/runtime-ets/dom/element/index.ts +25 -2
- package/dist/runtime-ets/dom/element/movableArea.ts +11 -0
- package/dist/runtime-ets/dom/element/movableView.ts +209 -0
- package/dist/runtime-ets/dom/element/normal.ts +35 -8
- package/dist/runtime-ets/dom/element/progress.ts +11 -0
- package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
- package/dist/runtime-ets/dom/element/text.ts +1 -8
- package/dist/runtime-ets/dom/element/video.ts +5 -4
- package/dist/runtime-ets/dom/element/webView.ts +12 -5
- package/dist/runtime-ets/dom/event.ts +2 -4
- package/dist/runtime-ets/dom/eventTarget.ts +2 -3
- package/dist/runtime-ets/dom/node.ts +50 -29
- package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +416 -235
- package/dist/runtime-ets/dom/stylesheet/index.ts +29 -311
- package/dist/runtime-ets/dom/stylesheet/type.ts +49 -9
- package/dist/runtime-ets/dom/stylesheet/util.ts +33 -27
- package/dist/runtime-ets/index.ts +2 -1
- package/dist/runtime-ets/interface/event.ts +1 -1
- package/dist/runtime-ets/utils/index.ts +69 -13
- package/dist/runtime-ets/utils/info.ts +2 -2
- package/dist/runtime-framework/react/app.ts +7 -2
- package/dist/runtime-framework/react/hooks.ts +0 -1
- package/dist/runtime-framework/react/index.ts +0 -2
- package/dist/runtime-framework/react/native-page.ts +153 -77
- package/dist/runtime-framework/react/page.ts +3 -8
- package/dist/runtime-framework/solid/app.ts +25 -45
- package/dist/runtime-framework/solid/connect.ts +21 -3
- package/dist/runtime-framework/solid/hooks.ts +16 -11
- package/dist/runtime-framework/solid/index.ts +6 -2
- package/dist/runtime-framework/solid/page.ts +84 -30
- package/dist/runtime-framework/solid/reconciler/props.ts +70 -25
- package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
- package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
- package/dist/runtime-framework/solid/utils/index.ts +0 -2
- package/dist/runtime-utils.d.ts +827 -0
- package/dist/runtime-utils.js +435 -209
- package/dist/runtime-utils.js.map +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +435 -209
- package/dist/runtime.js.map +1 -1
- package/index.js +3 -1
- package/package.json +13 -13
- package/static/media/cancel.svg +1 -1
- package/static/media/circle.svg +1 -1
- package/static/media/clear.svg +1 -1
- package/static/media/download.svg +1 -1
- package/static/media/info.svg +1 -1
- package/static/media/info_circle.svg +1 -1
- package/static/media/search.svg +1 -1
- package/static/media/success.svg +1 -1
- package/static/media/success_no_circle.svg +1 -1
- package/static/media/warn.svg +1 -1
- package/types/harmony.d.ts +4 -0
- package/types/index.d.ts +4 -0
- /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
package/dist/runtime.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { isFunction, isString, isArray, isObject, isNull, isNumber, isUndefined, queryToJson, PLATFORM_TYPE, singleQuote, internalComponents, mergeReconciler, mergeInternalComponents } from '@tarojs/shared';
|
|
2
2
|
import _display from '@ohos.display';
|
|
3
|
-
import { Current, window, hooks, document as document$1, getPageScrollerOrNode, findChildNodeWithDFS, setNodeEventCallbackAndTriggerComponentUpdate, AREA_CHANGE_EVENT_NAME, disconnectEvent, VISIBLE_CHANGE_EVENT_NAME } from '@tarojs/runtime';
|
|
3
|
+
import { Current, window, eventSource, hooks, document as document$1, getPageScrollerOrNode, findChildNodeWithDFS, setNodeEventCallbackAndTriggerComponentUpdate, AREA_CHANGE_EVENT_NAME, disconnectEvent, VISIBLE_CHANGE_EVENT_NAME, getCurrentInstance } from '@tarojs/runtime';
|
|
4
4
|
import { eventCenter, Events, History } from '@tarojs/runtime/dist/runtime.esm';
|
|
5
|
+
import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
|
|
5
6
|
import deviceInfo from '@ohos.deviceInfo';
|
|
6
7
|
import i18n from '@ohos.i18n';
|
|
7
|
-
import deviceMethod from '@system.device';
|
|
8
8
|
import errorManager from '@ohos.app.ability.errorManager';
|
|
9
9
|
import sensor from '@ohos.sensor';
|
|
10
10
|
import batteryInfo, { BatteryChargeState } from '@ohos.batteryInfo';
|
|
11
11
|
import pasteboard from '@ohos.pasteboard';
|
|
12
|
+
import promptAction from '@ohos.promptAction';
|
|
12
13
|
import inputMethodEngine from '@ohos.inputMethodEngine';
|
|
13
14
|
import network from '@system.network';
|
|
14
15
|
import call from '@ohos.telephony.call';
|
|
@@ -28,11 +29,9 @@ import http from '@ohos.net.http';
|
|
|
28
29
|
import webSocket from '@ohos.net.webSocket';
|
|
29
30
|
import router from '@ohos.router';
|
|
30
31
|
import bundleManager from '@ohos.bundle.bundleManager';
|
|
31
|
-
import
|
|
32
|
-
import hilog from '@ohos.hilog';
|
|
32
|
+
import distributedKVStore from '@ohos.data.distributedKVStore';
|
|
33
33
|
import matrix4 from '@ohos.matrix4';
|
|
34
|
-
import
|
|
35
|
-
import { pxTransformHelper } from '@tarojs/taro';
|
|
34
|
+
import { pxTransformHelper as pxTransformHelper$1 } from '@tarojs/taro';
|
|
36
35
|
|
|
37
36
|
class MethodHandler {
|
|
38
37
|
constructor({ name, success, fail, complete }) {
|
|
@@ -186,7 +185,7 @@ function temporarilyNotSupport(name, recommended) {
|
|
|
186
185
|
return (option = {}, ...args) => {
|
|
187
186
|
const { success, fail, complete } = option;
|
|
188
187
|
const handle = new MethodHandler({ name, success, fail, complete });
|
|
189
|
-
let errMsg =
|
|
188
|
+
let errMsg = `暂时不支持 API ${name}`;
|
|
190
189
|
if (recommended) {
|
|
191
190
|
errMsg += `, 请使用 ${recommended}`;
|
|
192
191
|
}
|
|
@@ -266,16 +265,63 @@ const preloadWebview = /* @__PURE__ */ temporarilyNotSupport('preloadWebview');
|
|
|
266
265
|
const preloadSkylineView = /* @__PURE__ */ temporarilyNotSupport('preloadSkylineView');
|
|
267
266
|
const preloadAssets = /* @__PURE__ */ temporarilyNotSupport('preloadAssets');
|
|
268
267
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
let
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
268
|
+
let display$1;
|
|
269
|
+
let navigationIndicatorRect;
|
|
270
|
+
let safeArea = null;
|
|
271
|
+
let statusBarHeight;
|
|
272
|
+
let windowRect;
|
|
273
|
+
Current.contextPromise.then((context) => {
|
|
274
|
+
const win = window.__ohos.getLastWindow(context);
|
|
275
|
+
win.then(mainWindow => {
|
|
276
|
+
const topRect = mainWindow.getWindowAvoidArea(window.__ohos.AvoidAreaType.TYPE_SYSTEM).topRect;
|
|
277
|
+
navigationIndicatorRect = mainWindow.getWindowAvoidArea(window.__ohos.AvoidAreaType.TYPE_NAVIGATION_INDICATOR).bottomRect;
|
|
278
|
+
statusBarHeight = topRect.top + topRect.height;
|
|
279
|
+
windowRect = mainWindow.getWindowProperties().windowRect;
|
|
280
|
+
try {
|
|
281
|
+
display$1 = _display.getDefaultDisplaySync();
|
|
282
|
+
setSafeArea({
|
|
283
|
+
top: statusBarHeight,
|
|
284
|
+
left: 0,
|
|
285
|
+
right: display$1.width,
|
|
286
|
+
bottom: navigationIndicatorRect === null || navigationIndicatorRect === void 0 ? void 0 : navigationIndicatorRect.top
|
|
287
|
+
});
|
|
288
|
+
// @ts-ignore
|
|
289
|
+
display$1.getCutoutInfo((err, { boundingRects = [], waterfallDisplayAreaRects = {} } = {}) => {
|
|
290
|
+
var _a, _b, _c, _d, _e, _f;
|
|
291
|
+
if (err === null || err === void 0 ? void 0 : err.code) {
|
|
292
|
+
console.error('Failed to get cutout info', JSON.stringify(err));
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const top = Math.max(...boundingRects.map(rect => rect.top + rect.height), ((_a = waterfallDisplayAreaRects.top) === null || _a === void 0 ? void 0 : _a.top) + ((_b = waterfallDisplayAreaRects.top) === null || _b === void 0 ? void 0 : _b.height), statusBarHeight);
|
|
296
|
+
const bottom = Math.min(display$1.height - ((_c = waterfallDisplayAreaRects.bottom) === null || _c === void 0 ? void 0 : _c.top), navigationIndicatorRect === null || navigationIndicatorRect === void 0 ? void 0 : navigationIndicatorRect.top);
|
|
297
|
+
const left = ((_d = waterfallDisplayAreaRects.left) === null || _d === void 0 ? void 0 : _d.left) + ((_e = waterfallDisplayAreaRects.left) === null || _e === void 0 ? void 0 : _e.width);
|
|
298
|
+
const right = display$1.width - ((_f = waterfallDisplayAreaRects.right) === null || _f === void 0 ? void 0 : _f.left);
|
|
299
|
+
setSafeArea({
|
|
300
|
+
top,
|
|
301
|
+
left,
|
|
302
|
+
right,
|
|
303
|
+
bottom
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
catch (e) {
|
|
308
|
+
console.error('Failed to get display', e);
|
|
309
|
+
}
|
|
310
|
+
});
|
|
276
311
|
});
|
|
312
|
+
function setSafeArea({ top, left, right, bottom }) {
|
|
313
|
+
safeArea = {
|
|
314
|
+
top,
|
|
315
|
+
bottom,
|
|
316
|
+
left,
|
|
317
|
+
right,
|
|
318
|
+
height: bottom - top,
|
|
319
|
+
width: right - left,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
277
322
|
/* 同步版本 */
|
|
278
323
|
const getSystemInfoSync = function () {
|
|
324
|
+
var _a, _b;
|
|
279
325
|
const res = {};
|
|
280
326
|
res.SDKVersion = deviceInfo && deviceInfo.sdkApiVersion; // 客户端基础库版本 string
|
|
281
327
|
res.albumAuthorized = false; // 允许使用相册的开关(仅 iOS 有效) boolean
|
|
@@ -285,7 +331,7 @@ const getSystemInfoSync = function () {
|
|
|
285
331
|
res.cameraAuthorized = null; // 允许使用摄像头的开关 boolean
|
|
286
332
|
res.enableDebug = null; // 是否已打开调试 boolean
|
|
287
333
|
res.fontSizeSetting = null; // 用户字体大小(单位px) number
|
|
288
|
-
res.language = i18n
|
|
334
|
+
res.language = (_a = i18n === null || i18n === void 0 ? void 0 : i18n.getSystemLanguage) === null || _a === void 0 ? void 0 : _a.call(i18n); // string
|
|
289
335
|
res.locationAuthorized = null; // 定位的开关 boolean
|
|
290
336
|
res.locationEnabled = null; // 地理位置的系统开关 boolean
|
|
291
337
|
res.microphoneAuthorized = null; // 麦克风的开关 boolean
|
|
@@ -296,17 +342,18 @@ const getSystemInfoSync = function () {
|
|
|
296
342
|
res.notificationSoundAuthorized = false; // 通知带有声音的开关(仅 iOS 有效)boolean
|
|
297
343
|
res.phoneCalendarAuthorized = null; // 使用日历的开关 boolean
|
|
298
344
|
res.wifiEnabled = false; // Wi-Fi 的系统开关 boolean
|
|
299
|
-
res.pixelRatio =
|
|
300
|
-
res.platform = '
|
|
301
|
-
res.safeArea =
|
|
302
|
-
res.screenHeight = display
|
|
303
|
-
res.screenWidth = display
|
|
304
|
-
res.statusBarHeight =
|
|
305
|
-
res.system = deviceInfo
|
|
306
|
-
|
|
307
|
-
res.
|
|
308
|
-
res.windowHeight =
|
|
309
|
-
res.
|
|
345
|
+
res.pixelRatio = display$1 && display$1.densityPixels; // 设备像素比,number
|
|
346
|
+
res.platform = 'harmony'; // 客户端平台 string
|
|
347
|
+
res.safeArea = safeArea; // 在竖屏正方向下的安全区域 General.SafeAreaResult
|
|
348
|
+
res.screenHeight = display$1 === null || display$1 === void 0 ? void 0 : display$1.height; // 屏幕高度,单位px number
|
|
349
|
+
res.screenWidth = display$1 === null || display$1 === void 0 ? void 0 : display$1.width; // 屏幕宽度,单位px number
|
|
350
|
+
res.statusBarHeight = statusBarHeight; // 状态栏的高度,单位px number
|
|
351
|
+
res.system = deviceInfo === null || deviceInfo === void 0 ? void 0 : deviceInfo.osFullName; // 操作系统及版本 string
|
|
352
|
+
// Note: 更新配置时才能记录
|
|
353
|
+
res.theme = ((_b = AppStorage.get('__TARO_APP_CONFIG')) === null || _b === void 0 ? void 0 : _b.colorMode) === ConfigurationConstant.ColorMode.COLOR_MODE_DARK ? 'dark' : 'light'; // 系统当前主题,取值为light或dark 'light' | 'dark'
|
|
354
|
+
res.windowHeight = windowRect === null || windowRect === void 0 ? void 0 : windowRect.height; // 可使用窗口高度,单位px number
|
|
355
|
+
res.windowWidth = windowRect === null || windowRect === void 0 ? void 0 : windowRect.width; // 可使用窗口宽度,单位px number
|
|
356
|
+
res.version = deviceInfo === null || deviceInfo === void 0 ? void 0 : deviceInfo.displayVersion; // 版本号 string
|
|
310
357
|
return res;
|
|
311
358
|
};
|
|
312
359
|
/* 异步版本 */
|
|
@@ -412,7 +459,13 @@ const base64ToArrayBuffer = /* @__PURE__ */ temporarilyNotSupport('base64ToArray
|
|
|
412
459
|
/** 创建离屏 canvas 实例 */
|
|
413
460
|
const createOffscreenCanvas = /* @__PURE__ */ temporarilyNotSupport('createOffscreenCanvas');
|
|
414
461
|
/** 创建 canvas 的绘图上下文 CanvasContext 对象 */
|
|
415
|
-
|
|
462
|
+
|
|
463
|
+
const createCanvasContext = (canvasId) => {
|
|
464
|
+
const dom = eventSource.get(`canvasId-${canvasId}`);
|
|
465
|
+
// return dom as TaroCanvasElement
|
|
466
|
+
if (dom)
|
|
467
|
+
return dom.context;
|
|
468
|
+
};
|
|
416
469
|
/** 把当前画布指定区域的内容导出生成指定大小的图片 */
|
|
417
470
|
const canvasToTempFilePath = /* @__PURE__ */ temporarilyNotSupport('createOffscreenCanvas');
|
|
418
471
|
/** 将像素数据绘制到画布 */
|
|
@@ -606,8 +659,20 @@ const setClipboardData = function (options) {
|
|
|
606
659
|
}
|
|
607
660
|
return new Promise((resolve, reject) => {
|
|
608
661
|
const systemPasteboard = pasteboard.getSystemPasteboard();
|
|
609
|
-
const pasteData = pasteboard.
|
|
610
|
-
|
|
662
|
+
const pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, data);
|
|
663
|
+
try {
|
|
664
|
+
systemPasteboard.setDataSync(pasteData);
|
|
665
|
+
promptAction.showToast({
|
|
666
|
+
message: '内容已复制',
|
|
667
|
+
duration: 1500,
|
|
668
|
+
bottom: '50%',
|
|
669
|
+
showMode: 1 // 设置弹窗显示模式,显示在应用之上。
|
|
670
|
+
});
|
|
671
|
+
return handle.success({
|
|
672
|
+
data,
|
|
673
|
+
}, { resolve, reject });
|
|
674
|
+
}
|
|
675
|
+
catch (error) {
|
|
611
676
|
if (error) {
|
|
612
677
|
console.error('Failed to set PasteData. Cause: ' + JSON.stringify(error));
|
|
613
678
|
res = {
|
|
@@ -616,12 +681,7 @@ const setClipboardData = function (options) {
|
|
|
616
681
|
};
|
|
617
682
|
callAsyncFail(reject, res, options);
|
|
618
683
|
}
|
|
619
|
-
|
|
620
|
-
return handle.success({
|
|
621
|
-
data,
|
|
622
|
-
}, { resolve, reject });
|
|
623
|
-
}
|
|
624
|
-
});
|
|
684
|
+
}
|
|
625
685
|
});
|
|
626
686
|
};
|
|
627
687
|
/**
|
|
@@ -632,7 +692,7 @@ const getClipboardData = function (options) {
|
|
|
632
692
|
const handle = new MethodHandler({ name: 'getClipboardData', success, fail, complete });
|
|
633
693
|
return new Promise((resolve, reject) => {
|
|
634
694
|
const systemPasteboard = pasteboard.getSystemPasteboard();
|
|
635
|
-
systemPasteboard.
|
|
695
|
+
systemPasteboard.getData((error, pasteData) => {
|
|
636
696
|
if (error) {
|
|
637
697
|
console.error('Failed to obtain PasteData. Cause: ' + JSON.stringify(error));
|
|
638
698
|
return handle.fail({
|
|
@@ -1984,7 +2044,6 @@ function getEnv() {
|
|
|
1984
2044
|
}
|
|
1985
2045
|
// TODO
|
|
1986
2046
|
const getCurrentPages = () => [];
|
|
1987
|
-
const getCurrentInstance = () => Current;
|
|
1988
2047
|
const requirePlugin$1 = temporarilyNotSupport('requirePlugin');
|
|
1989
2048
|
|
|
1990
2049
|
// @ts-nocheck
|
|
@@ -2611,10 +2670,10 @@ const request = function (options) {
|
|
|
2611
2670
|
header['Content-Type'] = 'application/json';
|
|
2612
2671
|
}
|
|
2613
2672
|
// 检查 Header 是否有 Referer
|
|
2614
|
-
if (isUndefined(header.Referer)) {
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
}
|
|
2673
|
+
// if (isUndefined(header.Referer)) {
|
|
2674
|
+
// const error = { errMsg: 'request fail parameter error: the header doesn‘t support Referer property' }
|
|
2675
|
+
// callAsyncFail(reject, error, options)
|
|
2676
|
+
// }
|
|
2618
2677
|
// 检查 method 是否正确
|
|
2619
2678
|
if (method) {
|
|
2620
2679
|
if (!METHOD.includes(method)) {
|
|
@@ -3060,6 +3119,19 @@ function parseURL(raw = '') {
|
|
|
3060
3119
|
const [urlStr, queryStr = ''] = raw.split('?');
|
|
3061
3120
|
const query = queryToJson(queryStr);
|
|
3062
3121
|
let url = urlStr.replace(/^\//, '');
|
|
3122
|
+
// 处理相对路径
|
|
3123
|
+
if (url.indexOf('.') === 0) {
|
|
3124
|
+
const page = router.getState();
|
|
3125
|
+
const parts = page.path.split('/');
|
|
3126
|
+
parts.pop();
|
|
3127
|
+
url.split('/').forEach((item) => {
|
|
3128
|
+
if (item === '.') {
|
|
3129
|
+
return;
|
|
3130
|
+
}
|
|
3131
|
+
item === '..' ? parts.pop() : parts.push(item);
|
|
3132
|
+
});
|
|
3133
|
+
url = parts.join('/');
|
|
3134
|
+
}
|
|
3063
3135
|
if (isTabPage(url)) {
|
|
3064
3136
|
query.$page = url;
|
|
3065
3137
|
url = TARO_TABBAR_PAGE_PATH;
|
|
@@ -3177,113 +3249,172 @@ const getBackgroundFetchData = /* @__PURE__ */ temporarilyNotSupport('getBackgro
|
|
|
3177
3249
|
// 周期性更新
|
|
3178
3250
|
const createCacheManager = /* @__PURE__ */ temporarilyNotSupport('createCacheManager');
|
|
3179
3251
|
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3252
|
+
/**
|
|
3253
|
+
* 从API Version 6开始,该模块不再维护,可以使用模块@ohos.data.storage。在API Version 9后,推荐使用新模块@ohos.data.preferences。
|
|
3254
|
+
* https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-data-preferences-0000001427745052-V3
|
|
3255
|
+
*/
|
|
3256
|
+
let context;
|
|
3257
|
+
let kvManager;
|
|
3258
|
+
let kvStore;
|
|
3259
|
+
let kvStorePromise;
|
|
3260
|
+
Current.contextPromise.then((ctx) => {
|
|
3261
|
+
context = ctx;
|
|
3262
|
+
const kvManagerConfig = {
|
|
3263
|
+
context: context,
|
|
3264
|
+
bundleName: 'com.example.taro'
|
|
3265
|
+
};
|
|
3266
|
+
try {
|
|
3267
|
+
// 创建KVManager实例
|
|
3268
|
+
kvManager = distributedKVStore.createKVManager(kvManagerConfig);
|
|
3269
|
+
// 继续创建获取数据库
|
|
3270
|
+
const options = {
|
|
3271
|
+
createIfMissing: true,
|
|
3272
|
+
encrypt: false,
|
|
3273
|
+
backup: false,
|
|
3274
|
+
autoSync: false,
|
|
3275
|
+
// kvStoreType不填时,默认创建多设备协同数据库
|
|
3276
|
+
kvStoreType: distributedKVStore.KVStoreType.SINGLE_VERSION,
|
|
3277
|
+
// 多设备协同数据库:kvStoreType: distributedKVStore.KVStoreType.DEVICE_COLLABORATION,
|
|
3278
|
+
securityLevel: distributedKVStore.SecurityLevel.S1
|
|
3279
|
+
};
|
|
3280
|
+
const data = bundleManager.getBundleInfoForSelfSync(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);
|
|
3281
|
+
kvStorePromise = new Promise(resolve => {
|
|
3282
|
+
kvManager.getKVStore(`${data.appInfo.uid}Store`, options, (err, store) => {
|
|
3283
|
+
if (err) {
|
|
3284
|
+
console.error(`Failed to get KVStore: Code:${err.code},message:${err.message}`);
|
|
3285
|
+
return;
|
|
3286
|
+
}
|
|
3287
|
+
kvStore = store;
|
|
3288
|
+
// 请确保获取到键值数据库实例后,再进行相关数据操作
|
|
3289
|
+
resolve();
|
|
3290
|
+
});
|
|
3291
|
+
});
|
|
3292
|
+
}
|
|
3293
|
+
catch (e) {
|
|
3294
|
+
console.error(`Failed to create KVManager. Code:${e.code},message:${e.message}`);
|
|
3295
|
+
}
|
|
3296
|
+
return context;
|
|
3191
3297
|
});
|
|
3192
|
-
function getItem(key) {
|
|
3193
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
3194
|
-
try {
|
|
3195
|
-
const preferences = yield preferencesPromise;
|
|
3196
|
-
const item = yield preferences.get(key, null);
|
|
3197
|
-
return { result: true, data: item };
|
|
3198
|
-
}
|
|
3199
|
-
catch (error) {
|
|
3200
|
-
return { result: false };
|
|
3201
|
-
}
|
|
3202
|
-
});
|
|
3203
|
-
}
|
|
3204
3298
|
const storageSchema = {
|
|
3205
3299
|
key: 'String'
|
|
3206
3300
|
};
|
|
3207
|
-
function
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3301
|
+
function checkContextExist(api, isAsync = false) {
|
|
3302
|
+
if (!context) {
|
|
3303
|
+
const message = `${api} 调用失败,Taro 不支持过早地调用 ${api},请确保页面已经渲染完成再调用此 API`;
|
|
3304
|
+
if (isAsync) {
|
|
3305
|
+
return {
|
|
3306
|
+
isExist: false,
|
|
3307
|
+
error: Promise.reject(new Error(message))
|
|
3308
|
+
};
|
|
3211
3309
|
}
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
return
|
|
3310
|
+
else {
|
|
3311
|
+
console.warn(message);
|
|
3312
|
+
return {
|
|
3313
|
+
isExist: false,
|
|
3314
|
+
};
|
|
3215
3315
|
}
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3316
|
+
}
|
|
3317
|
+
return {
|
|
3318
|
+
isExist: true,
|
|
3319
|
+
};
|
|
3320
|
+
}
|
|
3321
|
+
function getStorage(options) {
|
|
3322
|
+
const name = 'getStorage';
|
|
3323
|
+
const { isExist, error } = checkContextExist(name, true);
|
|
3324
|
+
if (!isExist) {
|
|
3325
|
+
return error;
|
|
3326
|
+
}
|
|
3327
|
+
const { key, success, fail, complete } = options || {};
|
|
3328
|
+
const handle = new MethodHandler({ name, success, fail, complete });
|
|
3329
|
+
return new Promise((resolve, reject) => {
|
|
3330
|
+
kvStorePromise.then(() => {
|
|
3331
|
+
try {
|
|
3332
|
+
validateParams(name, options, storageSchema);
|
|
3221
3333
|
}
|
|
3222
|
-
|
|
3223
|
-
res
|
|
3224
|
-
|
|
3334
|
+
catch (error) {
|
|
3335
|
+
const res = { errMsg: error.message };
|
|
3336
|
+
return handle.fail(res, { resolve, reject });
|
|
3225
3337
|
}
|
|
3338
|
+
kvStore = kvStore;
|
|
3339
|
+
kvStore.get(key, (err, data) => {
|
|
3340
|
+
if (err) {
|
|
3341
|
+
handle.fail({ errMsg: `Failed to get data. Code:${err.code},message:${err.message}` }, { resolve, reject });
|
|
3342
|
+
return;
|
|
3343
|
+
}
|
|
3344
|
+
handle.success({ data }, { resolve, reject });
|
|
3345
|
+
});
|
|
3226
3346
|
});
|
|
3227
3347
|
});
|
|
3228
3348
|
}
|
|
3229
3349
|
function setStorage(options) {
|
|
3350
|
+
const name = 'setStorage';
|
|
3351
|
+
const { isExist, error } = checkContextExist(name, true);
|
|
3352
|
+
if (!isExist) {
|
|
3353
|
+
return error;
|
|
3354
|
+
}
|
|
3355
|
+
const { key, data, success, fail, complete } = options || {};
|
|
3356
|
+
const handle = new MethodHandler({ name, success, fail, complete });
|
|
3230
3357
|
return new Promise((resolve, reject) => {
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3358
|
+
kvStorePromise.then(() => {
|
|
3359
|
+
try {
|
|
3360
|
+
validateParams(name, options, storageSchema);
|
|
3361
|
+
}
|
|
3362
|
+
catch (error) {
|
|
3363
|
+
const res = { errMsg: error.message };
|
|
3364
|
+
return handle.fail(res, { resolve, reject });
|
|
3365
|
+
}
|
|
3366
|
+
kvStore = kvStore;
|
|
3367
|
+
kvStore.put(key, data, (err) => {
|
|
3368
|
+
if (err) {
|
|
3369
|
+
handle.fail({ errMsg: `Failed to put data. Code:${err.code},message:${err.message}` }, { resolve, reject });
|
|
3370
|
+
return;
|
|
3371
|
+
}
|
|
3372
|
+
handle.success({}, { resolve, reject });
|
|
3373
|
+
});
|
|
3374
|
+
});
|
|
3245
3375
|
});
|
|
3246
3376
|
}
|
|
3247
3377
|
function removeStorage(options) {
|
|
3378
|
+
const name = 'removeStorage';
|
|
3379
|
+
const { isExist, error } = checkContextExist(name, true);
|
|
3380
|
+
if (!isExist) {
|
|
3381
|
+
return error;
|
|
3382
|
+
}
|
|
3383
|
+
const { key, success, fail, complete } = options || {};
|
|
3384
|
+
const handle = new MethodHandler({ name, success, fail, complete });
|
|
3248
3385
|
return new Promise((resolve, reject) => {
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
}
|
|
3265
|
-
|
|
3266
|
-
return new Promise(resolve => {
|
|
3267
|
-
preferencesPromise.then((preferences) => __awaiter(this, void 0, void 0, function* () {
|
|
3268
|
-
yield preferences.clear();
|
|
3269
|
-
yield preferences.flush();
|
|
3270
|
-
const res = { errMsg: 'clearStorage:ok' };
|
|
3271
|
-
callAsyncSuccess(resolve, res, options);
|
|
3272
|
-
}));
|
|
3386
|
+
kvStorePromise.then(() => {
|
|
3387
|
+
try {
|
|
3388
|
+
validateParams(name, options, storageSchema);
|
|
3389
|
+
}
|
|
3390
|
+
catch (error) {
|
|
3391
|
+
const res = { errMsg: error.message };
|
|
3392
|
+
return handle.fail(res, { resolve, reject });
|
|
3393
|
+
}
|
|
3394
|
+
kvStore = kvStore;
|
|
3395
|
+
kvStore.delete(key, (err) => {
|
|
3396
|
+
if (err) {
|
|
3397
|
+
handle.fail({ errMsg: `Failed to delete data. Code:${err.code},message:${err.message}` }, { resolve, reject });
|
|
3398
|
+
return;
|
|
3399
|
+
}
|
|
3400
|
+
handle.success({}, { resolve, reject });
|
|
3401
|
+
});
|
|
3402
|
+
});
|
|
3273
3403
|
});
|
|
3274
3404
|
}
|
|
3275
3405
|
const getStorageInfoSync = temporarilyNotSupport('getStorageInfoSync');
|
|
3276
3406
|
const getStorageInfo = temporarilyNotSupport('getStorageInfo');
|
|
3277
|
-
const getStorageSync = temporarilyNotSupport('getStorageSync', 'getStorage');
|
|
3278
|
-
const setStorageSync = temporarilyNotSupport('setStorageSync', 'setStorage');
|
|
3279
|
-
const clearStorageSync = temporarilyNotSupport('clearStorageSync', 'clearStorage');
|
|
3280
|
-
const removeStorageSync = temporarilyNotSupport('removeStorageSync', 'removeStorage');
|
|
3281
3407
|
const createBufferURL = /* @__PURE__ */ temporarilyNotSupport('createBufferURL');
|
|
3282
3408
|
const revokeBufferURL = /* @__PURE__ */ temporarilyNotSupport('revokeBufferURL');
|
|
3283
3409
|
const batchSetStorageSync = /* @__PURE__ */ temporarilyNotSupport('batchSetStorageSync');
|
|
3284
3410
|
const batchSetStorage = /* @__PURE__ */ temporarilyNotSupport('batchSetStorage');
|
|
3285
3411
|
const batchGetStorageSync = /* @__PURE__ */ temporarilyNotSupport('batchGetStorageSync');
|
|
3286
3412
|
const batchGetStorage = /* @__PURE__ */ temporarilyNotSupport('batchGetStorage');
|
|
3413
|
+
const clearStorage = temporarilyNotSupport('clearStorage');
|
|
3414
|
+
const getStorageSync = temporarilyNotSupport('getStorageSync', 'getStorage');
|
|
3415
|
+
const setStorageSync = temporarilyNotSupport('setStorageSync', 'setStorage');
|
|
3416
|
+
const clearStorageSync = temporarilyNotSupport('clearStorageSync', 'clearStorage');
|
|
3417
|
+
const removeStorageSync = temporarilyNotSupport('removeStorageSync', 'removeStorage');
|
|
3287
3418
|
|
|
3288
3419
|
class Animation {
|
|
3289
3420
|
constructor({ duration = 400, delay = 0, timingFunction = 'linear', transformOrigin = '50% 50% 0', unit = 'px' } = {}) {
|
|
@@ -3316,6 +3447,9 @@ class Animation {
|
|
|
3316
3447
|
transformOrigin,
|
|
3317
3448
|
rule: Object.assign({}, this.rule)
|
|
3318
3449
|
});
|
|
3450
|
+
if (this.rule.transform) {
|
|
3451
|
+
this.rule.transform = Object.assign({}, this.rule.transform);
|
|
3452
|
+
}
|
|
3319
3453
|
return this;
|
|
3320
3454
|
}
|
|
3321
3455
|
matrix(a, b, c, d, tx, ty) {
|
|
@@ -3327,75 +3461,120 @@ class Animation {
|
|
|
3327
3461
|
return this;
|
|
3328
3462
|
}
|
|
3329
3463
|
rotate(angle) {
|
|
3330
|
-
this.rule.
|
|
3464
|
+
if (!this.rule.transform) {
|
|
3465
|
+
this.rule.transform = {};
|
|
3466
|
+
}
|
|
3467
|
+
this.rule.transform.Rotate = { x: 0, y: 0, z: 1, angle };
|
|
3331
3468
|
return this;
|
|
3332
3469
|
}
|
|
3333
3470
|
rotate3d(x, y, z, angle) {
|
|
3334
|
-
this.rule.
|
|
3471
|
+
if (!this.rule.transform) {
|
|
3472
|
+
this.rule.transform = {};
|
|
3473
|
+
}
|
|
3474
|
+
this.rule.transform.Rotate = { x, y, z, angle };
|
|
3335
3475
|
return this;
|
|
3336
3476
|
}
|
|
3337
3477
|
rotateX(angle) {
|
|
3338
|
-
this.rule.
|
|
3478
|
+
if (!this.rule.transform) {
|
|
3479
|
+
this.rule.transform = {};
|
|
3480
|
+
}
|
|
3481
|
+
this.rule.transform.Rotate = { x: 1, y: 0, z: 0, angle };
|
|
3339
3482
|
return this;
|
|
3340
3483
|
}
|
|
3341
3484
|
rotateY(angle) {
|
|
3342
|
-
this.rule.
|
|
3485
|
+
if (!this.rule.transform) {
|
|
3486
|
+
this.rule.transform = {};
|
|
3487
|
+
}
|
|
3488
|
+
this.rule.transform.Rotate = { x: 0, y: 1, z: 0, angle };
|
|
3343
3489
|
return this;
|
|
3344
3490
|
}
|
|
3345
3491
|
rotateZ(angle) {
|
|
3346
|
-
this.rule.
|
|
3492
|
+
if (!this.rule.transform) {
|
|
3493
|
+
this.rule.transform = {};
|
|
3494
|
+
}
|
|
3495
|
+
this.rule.transform.Rotate = { x: 0, y: 0, z: 1, angle };
|
|
3347
3496
|
return this;
|
|
3348
3497
|
}
|
|
3349
3498
|
scale(sx, sy) {
|
|
3350
|
-
this.rule.
|
|
3499
|
+
if (!this.rule.transform) {
|
|
3500
|
+
this.rule.transform = {};
|
|
3501
|
+
}
|
|
3502
|
+
this.rule.transform.Scale = { x: sx, y: isUndefined(sy) ? sx : sy };
|
|
3351
3503
|
return this;
|
|
3352
3504
|
}
|
|
3353
3505
|
scale3d(sx, sy, sz) {
|
|
3354
|
-
this.rule.
|
|
3506
|
+
if (!this.rule.transform) {
|
|
3507
|
+
this.rule.transform = {};
|
|
3508
|
+
}
|
|
3509
|
+
this.rule.transform.Scale = { x: sx, y: sy, z: sz };
|
|
3355
3510
|
return this;
|
|
3356
3511
|
}
|
|
3357
3512
|
scaleX(scale) {
|
|
3358
|
-
this.rule.
|
|
3513
|
+
if (!this.rule.transform) {
|
|
3514
|
+
this.rule.transform = {};
|
|
3515
|
+
}
|
|
3516
|
+
this.rule.transform.Scale = { x: scale };
|
|
3359
3517
|
return this;
|
|
3360
3518
|
}
|
|
3361
3519
|
scaleY(scale) {
|
|
3362
|
-
this.rule.
|
|
3520
|
+
if (!this.rule.transform) {
|
|
3521
|
+
this.rule.transform = {};
|
|
3522
|
+
}
|
|
3523
|
+
this.rule.transform.Scale = { y: scale };
|
|
3363
3524
|
return this;
|
|
3364
3525
|
}
|
|
3365
3526
|
scaleZ(scale) {
|
|
3366
|
-
this.rule.
|
|
3527
|
+
if (!this.rule.transform) {
|
|
3528
|
+
this.rule.transform = {};
|
|
3529
|
+
}
|
|
3530
|
+
this.rule.transform.Scale = { z: scale };
|
|
3367
3531
|
return this;
|
|
3368
3532
|
}
|
|
3369
3533
|
skew(ax, ay) {
|
|
3370
|
-
|
|
3534
|
+
temporarilyNotSupport('animation.skew:' + `${ax}, ${ay}`)(ax, ay);
|
|
3371
3535
|
return this;
|
|
3372
3536
|
}
|
|
3373
3537
|
skewX(angle) {
|
|
3374
|
-
|
|
3538
|
+
temporarilyNotSupport('animation.skewX:' + angle)(angle);
|
|
3375
3539
|
return this;
|
|
3376
3540
|
}
|
|
3377
3541
|
skewY(angle) {
|
|
3378
|
-
|
|
3542
|
+
temporarilyNotSupport('animation.skewY:' + angle)(angle);
|
|
3379
3543
|
return this;
|
|
3380
3544
|
}
|
|
3381
3545
|
translate(tx, ty) {
|
|
3382
|
-
this.rule.
|
|
3546
|
+
if (!this.rule.transform) {
|
|
3547
|
+
this.rule.transform = {};
|
|
3548
|
+
}
|
|
3549
|
+
this.rule.transform.Translate = { x: tx, y: ty };
|
|
3383
3550
|
return this;
|
|
3384
3551
|
}
|
|
3385
3552
|
translate3d(tx, ty, tz) {
|
|
3386
|
-
this.rule.
|
|
3553
|
+
if (!this.rule.transform) {
|
|
3554
|
+
this.rule.transform = {};
|
|
3555
|
+
}
|
|
3556
|
+
this.rule.transform.Translate = { x: tx, y: ty, z: tz };
|
|
3387
3557
|
return this;
|
|
3388
3558
|
}
|
|
3389
3559
|
translateX(translation) {
|
|
3390
|
-
this.rule.
|
|
3560
|
+
if (!this.rule.transform) {
|
|
3561
|
+
this.rule.transform = {};
|
|
3562
|
+
}
|
|
3563
|
+
this.rule.transform.Translate = { x: translation };
|
|
3391
3564
|
return this;
|
|
3392
3565
|
}
|
|
3393
3566
|
translateY(translation) {
|
|
3394
|
-
this.rule.
|
|
3567
|
+
if (!this.rule.transform) {
|
|
3568
|
+
this.rule.transform = {};
|
|
3569
|
+
}
|
|
3570
|
+
this.rule.transform.Translate = { y: translation };
|
|
3395
3571
|
return this;
|
|
3396
3572
|
}
|
|
3397
3573
|
translateZ(translation) {
|
|
3398
|
-
this.rule.
|
|
3574
|
+
if (!this.rule.transform) {
|
|
3575
|
+
this.rule.transform = {};
|
|
3576
|
+
}
|
|
3577
|
+
this.rule.transform.Translate = { z: translation };
|
|
3399
3578
|
return this;
|
|
3400
3579
|
}
|
|
3401
3580
|
opacity(value) {
|
|
@@ -3407,15 +3586,15 @@ class Animation {
|
|
|
3407
3586
|
return this;
|
|
3408
3587
|
}
|
|
3409
3588
|
width(value) {
|
|
3410
|
-
this.rule.
|
|
3589
|
+
this.rule.width = value;
|
|
3411
3590
|
return this;
|
|
3412
3591
|
}
|
|
3413
3592
|
height(value) {
|
|
3414
|
-
this.rule.
|
|
3593
|
+
this.rule.height = value;
|
|
3415
3594
|
return this;
|
|
3416
3595
|
}
|
|
3417
3596
|
left(value) {
|
|
3418
|
-
|
|
3597
|
+
this.rule.left = value;
|
|
3419
3598
|
return this;
|
|
3420
3599
|
}
|
|
3421
3600
|
right(value) {
|
|
@@ -3423,7 +3602,7 @@ class Animation {
|
|
|
3423
3602
|
return this;
|
|
3424
3603
|
}
|
|
3425
3604
|
top(value) {
|
|
3426
|
-
|
|
3605
|
+
this.rule.top = value;
|
|
3427
3606
|
return this;
|
|
3428
3607
|
}
|
|
3429
3608
|
bottom(value) {
|
|
@@ -3442,7 +3621,8 @@ function setBackgroundColor(options) {
|
|
|
3442
3621
|
const handle = new MethodHandler({ name: 'setBackgroundColor', success, fail, complete });
|
|
3443
3622
|
return new Promise((resolve, reject) => {
|
|
3444
3623
|
eventCenter.trigger('__taroPageStyle', {
|
|
3445
|
-
backgroundColor: options.
|
|
3624
|
+
backgroundColor: options.backgroundColorBottom || options.backgroundColor,
|
|
3625
|
+
backgroundColorContext: options.backgroundColorTop || options.backgroundColor
|
|
3446
3626
|
});
|
|
3447
3627
|
return handle.success({}, { resolve, reject });
|
|
3448
3628
|
});
|
|
@@ -3481,10 +3661,11 @@ function showToast(options) {
|
|
|
3481
3661
|
const res = { errMsg: error.message };
|
|
3482
3662
|
return callAsyncFail(reject, res, options);
|
|
3483
3663
|
}
|
|
3484
|
-
|
|
3664
|
+
promptAction.showToast({
|
|
3485
3665
|
message: options.title,
|
|
3486
3666
|
duration: options.duration,
|
|
3487
|
-
bottom: options.bottom
|
|
3667
|
+
bottom: options.bottom,
|
|
3668
|
+
showMode: 1 // 设置弹窗显示模式,显示在应用之上。
|
|
3488
3669
|
});
|
|
3489
3670
|
callAsyncSuccess(resolve, resCallback('showToast'), options);
|
|
3490
3671
|
});
|
|
@@ -3514,25 +3695,24 @@ function showModal(options) {
|
|
|
3514
3695
|
color: confirmColor
|
|
3515
3696
|
});
|
|
3516
3697
|
}
|
|
3517
|
-
return new Promise(resolve => {
|
|
3698
|
+
return new Promise((resolve, reject) => {
|
|
3518
3699
|
const modalOptions = {
|
|
3519
3700
|
title,
|
|
3520
3701
|
message: content,
|
|
3521
3702
|
buttons: buttons,
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
}
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
},
|
|
3530
|
-
// 鸿蒙没有失败方法,只有取消
|
|
3531
|
-
cancel: (_) => {
|
|
3703
|
+
};
|
|
3704
|
+
promptAction.showDialog(modalOptions, (error, data) => {
|
|
3705
|
+
if (error) {
|
|
3706
|
+
const res = { errMsg: error };
|
|
3707
|
+
callAsyncFail(reject, res, options);
|
|
3708
|
+
}
|
|
3709
|
+
if (data.index === 0 && showCancel) {
|
|
3532
3710
|
callAsyncSuccess(resolve, Object.assign(Object.assign({}, resCallback('showModal')), { confirm: false, cancel: true }), options);
|
|
3533
3711
|
}
|
|
3534
|
-
|
|
3535
|
-
|
|
3712
|
+
else {
|
|
3713
|
+
callAsyncSuccess(resolve, Object.assign(Object.assign({}, resCallback('showModal')), { confirm: true, cancel: false, content: null }), options);
|
|
3714
|
+
}
|
|
3715
|
+
});
|
|
3536
3716
|
});
|
|
3537
3717
|
}
|
|
3538
3718
|
const showActionSheetSchema = {
|
|
@@ -3563,28 +3743,18 @@ function showActionSheet(options) {
|
|
|
3563
3743
|
});
|
|
3564
3744
|
const actionSheetOptions = {
|
|
3565
3745
|
title,
|
|
3566
|
-
buttons
|
|
3567
|
-
success: (data) => {
|
|
3568
|
-
callAsyncSuccess(resolve, Object.assign(Object.assign({}, data), resCallback('showActionSheet')), options);
|
|
3569
|
-
},
|
|
3570
|
-
// 取消方法,并非失败
|
|
3571
|
-
fail: (data) => {
|
|
3572
|
-
callAsyncFail(reject, Object.assign(Object.assign({}, data), { errMsg: data.errMsg.replace('showActionMenu', 'showActionSheet') }), options);
|
|
3573
|
-
}
|
|
3746
|
+
buttons
|
|
3574
3747
|
};
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
message: '关闭中',
|
|
3582
|
-
duration: 10,
|
|
3583
|
-
bottom: '9999px'
|
|
3748
|
+
promptAction.showActionMenu(actionSheetOptions, (error, data) => {
|
|
3749
|
+
var _a;
|
|
3750
|
+
if (error) {
|
|
3751
|
+
callAsyncFail(reject, Object.assign(Object.assign({}, data), { errMsg: (_a = data.errMsg) === null || _a === void 0 ? void 0 : _a.replace('showActionMenu', 'showActionSheet') }), options);
|
|
3752
|
+
}
|
|
3753
|
+
callAsyncSuccess(resolve, Object.assign(Object.assign({}, data), resCallback('showActionSheet')), options);
|
|
3584
3754
|
});
|
|
3585
|
-
callAsyncSuccess(resolve, resCallback('hideToast'), options);
|
|
3586
3755
|
});
|
|
3587
3756
|
}
|
|
3757
|
+
const hideToast = /* @__PURE__ */ temporarilyNotSupport('hideToast');
|
|
3588
3758
|
const showLoading = temporarilyNotSupport('showLoading');
|
|
3589
3759
|
const hideLoading = temporarilyNotSupport('hideLoading');
|
|
3590
3760
|
const enableAlertBeforeUnload = /* @__PURE__ */ temporarilyNotSupport('enableAlertBeforeUnload');
|
|
@@ -3605,7 +3775,7 @@ const setNavigationBarTitle = function (options) {
|
|
|
3605
3775
|
};
|
|
3606
3776
|
const setNavigationBarColor = function (options) {
|
|
3607
3777
|
const { success, fail, complete } = options || {};
|
|
3608
|
-
const handle = new MethodHandler({ name: '
|
|
3778
|
+
const handle = new MethodHandler({ name: 'setNavigationBarColor', success, fail, complete });
|
|
3609
3779
|
return new Promise((resolve, reject) => {
|
|
3610
3780
|
eventCenter.trigger('__taroNavigationStyle', {
|
|
3611
3781
|
animation: options.animation,
|
|
@@ -3700,7 +3870,7 @@ const pageScrollTo = (options) => {
|
|
|
3700
3870
|
const taro = Current.taro;
|
|
3701
3871
|
const page = taro.getCurrentInstance().page;
|
|
3702
3872
|
let scrollValue = -1;
|
|
3703
|
-
let scroller = page.scroller;
|
|
3873
|
+
let scroller = getPageScrollerOrNode(page.scroller, page);
|
|
3704
3874
|
const currentPageNode = getPageScrollerOrNode(page.node, page);
|
|
3705
3875
|
if (scrollTop || typeof scrollTop === 'number') {
|
|
3706
3876
|
scrollValue = scrollTop;
|
|
@@ -3723,7 +3893,7 @@ const pageScrollTo = (options) => {
|
|
|
3723
3893
|
scroller = getPageScrollerOrNode(scroller, page);
|
|
3724
3894
|
const { yOffset } = scroller.currentOffset();
|
|
3725
3895
|
if (areaInfo) {
|
|
3726
|
-
scrollValue = areaInfo.globalPosition.y + yOffset + pxTransformHelper(offsetTop, 'px', true);
|
|
3896
|
+
scrollValue = areaInfo.globalPosition.y + yOffset + pxTransformHelper$1(offsetTop, 'px', true);
|
|
3727
3897
|
}
|
|
3728
3898
|
}
|
|
3729
3899
|
const { xOffset } = scroller.currentOffset();
|
|
@@ -3908,19 +4078,16 @@ class IntersectionObserver {
|
|
|
3908
4078
|
};
|
|
3909
4079
|
const taro = Current.taro;
|
|
3910
4080
|
const page = taro.getCurrentInstance().page;
|
|
3911
|
-
|
|
3912
|
-
this._component = component || currentPage;
|
|
4081
|
+
this._component = component || getPageScrollerOrNode(page === null || page === void 0 ? void 0 : page.node, page);
|
|
3913
4082
|
Object.assign(this._options, options);
|
|
3914
4083
|
}
|
|
3915
4084
|
disconnect() {
|
|
3916
|
-
|
|
3917
|
-
if (this._observerNodes) {
|
|
4085
|
+
if (this._observerNodes && this._component) {
|
|
3918
4086
|
if (this._observerNodes instanceof Array) {
|
|
3919
4087
|
this._observerNodes.forEach((n) => {
|
|
3920
|
-
var _a;
|
|
3921
4088
|
disconnectEvent(n, VISIBLE_CHANGE_EVENT_NAME);
|
|
3922
4089
|
// @ts-ignore
|
|
3923
|
-
|
|
4090
|
+
n._nodeInfo.thresholds = null;
|
|
3924
4091
|
});
|
|
3925
4092
|
}
|
|
3926
4093
|
else {
|
|
@@ -3928,35 +4095,40 @@ class IntersectionObserver {
|
|
|
3928
4095
|
// @ts-ignore
|
|
3929
4096
|
if (this._observerNodes._nodeInfo) {
|
|
3930
4097
|
// @ts-ignore
|
|
3931
|
-
|
|
4098
|
+
this._observerNodes._nodeInfo.thresholds = null;
|
|
3932
4099
|
}
|
|
3933
4100
|
}
|
|
3934
4101
|
}
|
|
3935
4102
|
}
|
|
3936
4103
|
observe(targetSelector, callback) {
|
|
3937
|
-
|
|
4104
|
+
if (!this._component)
|
|
4105
|
+
return;
|
|
3938
4106
|
const { observeAll, thresholds } = this._options;
|
|
3939
4107
|
const node = findChildNodeWithDFS(this._component, targetSelector, observeAll);
|
|
3940
4108
|
this._observerNodes = node;
|
|
3941
4109
|
if (node) {
|
|
3942
4110
|
if (node instanceof Array) {
|
|
3943
4111
|
node.forEach(n => {
|
|
3944
|
-
var _a;
|
|
3945
4112
|
// @ts-ignore
|
|
3946
|
-
|
|
4113
|
+
n._nodeInfo.thresholds = thresholds;
|
|
3947
4114
|
setNodeEventCallbackAndTriggerComponentUpdate(n, VISIBLE_CHANGE_EVENT_NAME, (isVisible, currentRatio) => {
|
|
3948
|
-
callback(this.handleResult(isVisible, currentRatio));
|
|
4115
|
+
callback(this.handleResult(isVisible, currentRatio, n));
|
|
3949
4116
|
});
|
|
3950
4117
|
});
|
|
3951
4118
|
}
|
|
3952
4119
|
else {
|
|
3953
4120
|
// @ts-ignore
|
|
3954
|
-
|
|
4121
|
+
node._nodeInfo.thresholds = thresholds;
|
|
3955
4122
|
setNodeEventCallbackAndTriggerComponentUpdate(node, VISIBLE_CHANGE_EVENT_NAME, (isVisible, currentRatio) => {
|
|
3956
|
-
callback(this.handleResult(isVisible, currentRatio));
|
|
4123
|
+
callback(this.handleResult(isVisible, currentRatio, node));
|
|
3957
4124
|
});
|
|
3958
4125
|
}
|
|
3959
4126
|
}
|
|
4127
|
+
else {
|
|
4128
|
+
callback({
|
|
4129
|
+
errMsg: 'IntersectionObserver.observe:fail cannot find the node for selector.'
|
|
4130
|
+
});
|
|
4131
|
+
}
|
|
3960
4132
|
}
|
|
3961
4133
|
relativeTo() {
|
|
3962
4134
|
temporarilyNotSupport('relativeTo')();
|
|
@@ -3967,8 +4139,10 @@ class IntersectionObserver {
|
|
|
3967
4139
|
return this;
|
|
3968
4140
|
}
|
|
3969
4141
|
// @ts-ignore
|
|
3970
|
-
handleResult(isVisible, currentRatio) {
|
|
4142
|
+
handleResult(isVisible, currentRatio, node) {
|
|
3971
4143
|
const result = {
|
|
4144
|
+
id: node.id,
|
|
4145
|
+
dataset: node.dataset,
|
|
3972
4146
|
intersectionRatio: currentRatio,
|
|
3973
4147
|
// TODO 未做,等待能拿到element的info信息
|
|
3974
4148
|
boundingClientRect: {
|
|
@@ -4176,9 +4350,12 @@ function filter(fields, dom) {
|
|
|
4176
4350
|
}
|
|
4177
4351
|
function querySelector(selector, selectAll) {
|
|
4178
4352
|
if (typeof selector === 'string') {
|
|
4179
|
-
return
|
|
4353
|
+
return selector.split(',').reduce((prev, current) => {
|
|
4354
|
+
const item = current.trim();
|
|
4355
|
+
return prev.concat(parseHandler(item, selectAll));
|
|
4356
|
+
}, []);
|
|
4180
4357
|
}
|
|
4181
|
-
return
|
|
4358
|
+
return [];
|
|
4182
4359
|
}
|
|
4183
4360
|
function queryBat(queue, cb) {
|
|
4184
4361
|
const result = [];
|
|
@@ -4189,19 +4366,29 @@ function queryBat(queue, cb) {
|
|
|
4189
4366
|
return null;
|
|
4190
4367
|
arr = [];
|
|
4191
4368
|
traversalDFSDom(element);
|
|
4192
|
-
queue.forEach(item => {
|
|
4369
|
+
queue.forEach((item) => {
|
|
4193
4370
|
const { selector, single, fields } = item;
|
|
4194
|
-
|
|
4195
|
-
|
|
4371
|
+
if (single) {
|
|
4372
|
+
const dom = querySelector(selector, !single)[0];
|
|
4196
4373
|
// eslint-disable-next-line no-async-promise-executor
|
|
4197
|
-
|
|
4374
|
+
result.push(new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
4198
4375
|
yield setNodeEventCallbackAndTriggerComponentUpdate(dom, AREA_CHANGE_EVENT_NAME, null, true);
|
|
4199
4376
|
resolve(filter(fields, dom));
|
|
4377
|
+
})));
|
|
4378
|
+
}
|
|
4379
|
+
else {
|
|
4380
|
+
const nodeList = querySelector(selector, !single);
|
|
4381
|
+
result.push(nodeList.map(dom => {
|
|
4382
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
4383
|
+
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
4384
|
+
yield setNodeEventCallbackAndTriggerComponentUpdate(dom, AREA_CHANGE_EVENT_NAME, null, true);
|
|
4385
|
+
resolve(filter(fields, dom));
|
|
4386
|
+
}));
|
|
4200
4387
|
}));
|
|
4201
|
-
}
|
|
4388
|
+
}
|
|
4202
4389
|
});
|
|
4203
4390
|
Promise.all(result.map(item => {
|
|
4204
|
-
return Promise.all(item);
|
|
4391
|
+
return item instanceof Array ? Promise.all(item) : item;
|
|
4205
4392
|
})).then(data => {
|
|
4206
4393
|
cb(data);
|
|
4207
4394
|
});
|
|
@@ -4280,6 +4467,7 @@ var apis = /*#__PURE__*/Object.freeze({
|
|
|
4280
4467
|
ENV_TYPE: ENV_TYPE,
|
|
4281
4468
|
Events: Events,
|
|
4282
4469
|
History: History,
|
|
4470
|
+
IntersectionObserver: IntersectionObserver,
|
|
4283
4471
|
addCard: addCard,
|
|
4284
4472
|
addFileToFavorites: addFileToFavorites,
|
|
4285
4473
|
addPhoneCalendar: addPhoneCalendar,
|
|
@@ -4669,7 +4857,7 @@ var apis = /*#__PURE__*/Object.freeze({
|
|
|
4669
4857
|
writeBLECharacteristicValue: writeBLECharacteristicValue
|
|
4670
4858
|
});
|
|
4671
4859
|
|
|
4672
|
-
Object.assign({}, apis);
|
|
4860
|
+
const taro = Object.assign({}, apis);
|
|
4673
4861
|
const requirePlugin = /* @__PURE__ */ permanentlyNotSupport('requirePlugin');
|
|
4674
4862
|
function initNativeApi(taro) {
|
|
4675
4863
|
Current.taro = taro;
|
|
@@ -4693,7 +4881,7 @@ const defaultBaseFontSize = 20;
|
|
|
4693
4881
|
const defaultUnitPrecision = 5;
|
|
4694
4882
|
const defaultTargetUnit = 'vp';
|
|
4695
4883
|
function getApp$1() {
|
|
4696
|
-
return Current.app;
|
|
4884
|
+
return Current.app || {};
|
|
4697
4885
|
}
|
|
4698
4886
|
function initPxTransform({ designWidth = defaultDesignWidth, deviceRatio = defaultDesignRatio, baseFontSize = defaultBaseFontSize, unitPrecision = defaultUnitPrecision, targetUnit = defaultTargetUnit }) {
|
|
4699
4887
|
const taro = Current.taro;
|
|
@@ -4707,19 +4895,56 @@ function initPxTransform({ designWidth = defaultDesignWidth, deviceRatio = defau
|
|
|
4707
4895
|
config.unitPrecision = unitPrecision;
|
|
4708
4896
|
}
|
|
4709
4897
|
}
|
|
4710
|
-
_display.getDefaultDisplaySync();
|
|
4898
|
+
const display = _display.getDefaultDisplaySync();
|
|
4899
|
+
let displayWidth = display.width;
|
|
4900
|
+
let ratioCache = false;
|
|
4901
|
+
let designWidthFunc;
|
|
4902
|
+
let designWidth = defaultDesignWidth;
|
|
4903
|
+
function getRatio(value) {
|
|
4904
|
+
var _a;
|
|
4905
|
+
// Note: 提前调用 display 可能无法获取正确值
|
|
4906
|
+
if (ratioCache === false || displayWidth !== display.width) {
|
|
4907
|
+
const config = ((_a = Current.taro) === null || _a === void 0 ? void 0 : _a.config) || {};
|
|
4908
|
+
if (!isFunction(designWidthFunc)) {
|
|
4909
|
+
designWidthFunc = isFunction(config.designWidth)
|
|
4910
|
+
? config.designWidth
|
|
4911
|
+
: () => config.designWidth;
|
|
4912
|
+
designWidth = designWidthFunc(value) || defaultDesignWidth;
|
|
4913
|
+
}
|
|
4914
|
+
displayWidth = display.width;
|
|
4915
|
+
ratioCache = Math.min(display.width, display.height) / designWidth;
|
|
4916
|
+
}
|
|
4917
|
+
return ratioCache;
|
|
4918
|
+
}
|
|
4919
|
+
// Note: 设置为 style 单位时会自动完成设计稿转换,设计开发者调用 API 时也许抹平差异,例如 pageScrollTo[option.offsetTop]
|
|
4920
|
+
function pxTransformHelper(size, unit, isNumber = false) {
|
|
4921
|
+
var _a;
|
|
4922
|
+
const config = ((_a = Current.taro) === null || _a === void 0 ? void 0 : _a.config) || {};
|
|
4923
|
+
const targetUnit = unit || config.targetUnit || defaultTargetUnit;
|
|
4924
|
+
if (targetUnit === 'PX') {
|
|
4925
|
+
return px2vp(size * display.scaledDensity) + 'vp';
|
|
4926
|
+
}
|
|
4927
|
+
const ratio = getRatio(size);
|
|
4928
|
+
let val = size * ratio;
|
|
4929
|
+
switch (targetUnit) {
|
|
4930
|
+
case 'vp':
|
|
4931
|
+
// Note: 在应用创建前调用无效
|
|
4932
|
+
val = px2vp(val);
|
|
4933
|
+
break;
|
|
4934
|
+
}
|
|
4935
|
+
return isNumber ? val : val + targetUnit;
|
|
4936
|
+
}
|
|
4711
4937
|
function pxTransform(size) {
|
|
4712
4938
|
var _a;
|
|
4713
4939
|
const config = ((_a = Current.taro) === null || _a === void 0 ? void 0 : _a.config) || {};
|
|
4714
4940
|
const targetUnit = config.targetUnit || defaultTargetUnit;
|
|
4715
|
-
|
|
4941
|
+
const val = size;
|
|
4716
4942
|
switch (targetUnit) {
|
|
4717
4943
|
case 'vp':
|
|
4718
|
-
|
|
4719
|
-
break;
|
|
4944
|
+
return pxTransformHelper(size, 'px');
|
|
4720
4945
|
// NOTE: 鸿蒙环境下 style 会自动完成设计稿转换,无需在方法内二次调整
|
|
4721
4946
|
}
|
|
4722
|
-
return val +
|
|
4947
|
+
return val + targetUnit;
|
|
4723
4948
|
}
|
|
4724
4949
|
function canIUseWebp() {
|
|
4725
4950
|
return true;
|
|
@@ -4733,6 +4958,7 @@ function getAppInfo() {
|
|
|
4733
4958
|
designWidth: config === null || config === void 0 ? void 0 : config.designWidth,
|
|
4734
4959
|
};
|
|
4735
4960
|
}
|
|
4961
|
+
initNativeApi(taro);
|
|
4736
4962
|
|
|
4737
4963
|
const components = {
|
|
4738
4964
|
Checkbox: {
|