@tarojs/taro-h5 4.0.1-alpha.1 → 4.0.1
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/api/base/index.js +1 -1
- package/dist/api/base/index.js.map +1 -1
- package/dist/api/base/system.js +2 -2
- package/dist/api/base/system.js.map +1 -1
- package/dist/api/base/weapp/app-event.js +2 -2
- package/dist/api/base/weapp/app-event.js.map +1 -1
- package/dist/api/canvas/CanvasContext.d.ts +1 -1
- package/dist/api/canvas/CanvasContext.js.map +1 -1
- package/dist/api/canvas/canvasGetImageData.js.map +1 -1
- package/dist/api/canvas/canvasPutImageData.js.map +1 -1
- package/dist/api/canvas/canvasToTempFilePath.js.map +1 -1
- package/dist/api/device/accelerometer.js.map +1 -1
- package/dist/api/device/battery.js +1 -1
- package/dist/api/device/battery.js.map +1 -1
- package/dist/api/device/calendar.js.map +1 -1
- package/dist/api/device/clipboard.js +2 -2
- package/dist/api/device/clipboard.js.map +1 -1
- package/dist/api/device/compass.js.map +1 -1
- package/dist/api/device/motion.js.map +1 -1
- package/dist/api/device/network.js.map +1 -1
- package/dist/api/device/phone.js.map +1 -1
- package/dist/api/device/sms.js.map +1 -1
- package/dist/api/device/vibrate.js.map +1 -1
- package/dist/api/location/chooseLocation.js +2 -2
- package/dist/api/location/chooseLocation.js.map +1 -1
- package/dist/api/location/getLocation.js +1 -1
- package/dist/api/location/getLocation.js.map +1 -1
- package/dist/api/location/locationChange.js.map +1 -1
- package/dist/api/location/style.scss.js +1 -1
- package/dist/api/media/audio/InnerAudioContext.js.map +1 -1
- package/dist/api/media/background-audio/BackgroundAudioManager.d.ts +1 -1
- package/dist/api/media/background-audio/BackgroundAudioManager.js.map +1 -1
- package/dist/api/media/image/chooseImage.js.map +1 -1
- package/dist/api/media/image/getImageInfo.js.map +1 -1
- package/dist/api/media/image/previewImage.js.map +1 -1
- package/dist/api/media/image/saveImageToPhotosAlbum.js.map +1 -1
- package/dist/api/media/video/chooseMedia.js +3 -3
- package/dist/api/media/video/chooseMedia.js.map +1 -1
- package/dist/api/media/video/chooseVideo.js.map +1 -1
- package/dist/api/media/video/getVideoInfo.js.map +1 -1
- package/dist/api/media/video/saveVideoToPhotosAlbum.js.map +1 -1
- package/dist/api/network/request/index.js.map +1 -1
- package/dist/api/network/upload.js.map +1 -1
- package/dist/api/network/utils.js +4 -4
- package/dist/api/network/utils.js.map +1 -1
- package/dist/api/network/websocket/index.js.map +1 -1
- package/dist/api/network/websocket/socketTask.js.map +1 -1
- package/dist/api/storage/index.js.map +1 -1
- package/dist/api/taro.js +0 -1
- package/dist/api/taro.js.map +1 -1
- package/dist/api/ui/animation/index.js.map +1 -1
- package/dist/api/ui/fonts.js.map +1 -1
- package/dist/api/ui/interaction/actionSheet.js.map +1 -1
- package/dist/api/ui/interaction/index.js +2 -2
- package/dist/api/ui/interaction/index.js.map +1 -1
- package/dist/api/ui/interaction/modal.js.map +1 -1
- package/dist/api/ui/interaction/toast.js.map +1 -1
- package/dist/api/ui/navigation-bar/index.js.map +1 -1
- package/dist/api/ui/scroll/index.js.map +1 -1
- package/dist/api/ui/tab-bar.js.map +1 -1
- package/dist/api/ui/window.js.map +1 -1
- package/dist/api/wxml/IntersectionObserver.js.map +1 -1
- package/dist/api/wxml/MediaQueryObserver.js.map +1 -1
- package/dist/api/wxml/selectorQuery.js.map +1 -1
- package/dist/index.cjs.d.ts +1 -1
- package/dist/index.cjs.js +16 -17
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.d.ts +1 -1
- package/dist/index.esm.js +19 -20
- package/dist/index.esm.js.map +1 -1
- package/dist/utils/animation.js.map +1 -1
- package/dist/utils/handler.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +28 -19
- /package/dist/node_modules/.pnpm/{style-inject@0.3.0 → registry.npmjs.org_style-inject@0.3.0}/node_modules/style-inject/dist/style-inject.es.js +0 -0
- /package/dist/node_modules/.pnpm/{style-inject@0.3.0 → registry.npmjs.org_style-inject@0.3.0}/node_modules/style-inject/dist/style-inject.es.js.map +0 -0
package/dist/api/base/index.js
CHANGED
|
@@ -14,7 +14,7 @@ const env = {
|
|
|
14
14
|
TARO_VERSION: process.env.TARO_VERSION,
|
|
15
15
|
};
|
|
16
16
|
// Note: 该方法由 taro-plugin-platform-h5 实现
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
function arrayBufferToBase64(arrayBuffer) {
|
|
19
19
|
return fromByteArray(arrayBuffer);
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/api/base/index.ts"],"sourcesContent":["import { fromByteArray, toByteArray } from 'base64-js'\n\nexport const env = {\n FRAMEWORK: process.env.FRAMEWORK,\n TARO_ENV: process.env.TARO_ENV,\n TARO_PLATFORM: process.env.TARO_PLATFORM,\n TARO_VERSION: process.env.TARO_VERSION,\n}\n\n// Note: 该方法由 taro-plugin-platform-h5 实现\n// export const canIUse = /* @__PURE__ */ temporarilyNotSupport('canIUse')\n\nexport function arrayBufferToBase64 (arrayBuffer: ArrayBuffer) {\n return fromByteArray(arrayBuffer as Uint8Array)\n}\n\nexport function base64ToArrayBuffer (base64: string) {\n return toByteArray(base64).buffer\n}\n\nexport * from './crypto'\nexport * from './debug'\nexport * from './performance'\nexport * from './system'\nexport * from './update'\nexport * from './weapp/app-event'\nexport * from './weapp/life-cycle'\n"],"names":[],"mappings":";;;;;;;;;AAEa,MAAA,GAAG,GAAG;AACjB,IAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;AAChC,IAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;AAC9B,IAAA,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;AACxC,IAAA,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;EACvC;AAED;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/api/base/index.ts"],"sourcesContent":["import { fromByteArray, toByteArray } from 'base64-js'\n\nexport const env = {\n FRAMEWORK: process.env.FRAMEWORK,\n TARO_ENV: process.env.TARO_ENV,\n TARO_PLATFORM: process.env.TARO_PLATFORM,\n TARO_VERSION: process.env.TARO_VERSION,\n}\n\n// Note: 该方法由 taro-plugin-platform-h5 实现\n// export const canIUse = /* @__PURE__ */ temporarilyNotSupport('canIUse')\n\nexport function arrayBufferToBase64 (arrayBuffer: ArrayBuffer) {\n return fromByteArray(arrayBuffer as Uint8Array)\n}\n\nexport function base64ToArrayBuffer (base64: string) {\n return toByteArray(base64).buffer\n}\n\nexport * from './crypto'\nexport * from './debug'\nexport * from './performance'\nexport * from './system'\nexport * from './update'\nexport * from './weapp/app-event'\nexport * from './weapp/life-cycle'\n"],"names":[],"mappings":";;;;;;;;;AAEa,MAAA,GAAG,GAAG;AACjB,IAAA,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;AAChC,IAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;AAC9B,IAAA,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;AACxC,IAAA,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;EACvC;AAED;AAC0E;AAEpE,SAAU,mBAAmB,CAAE,WAAwB,EAAA;AAC3D,IAAA,OAAO,aAAa,CAAC,WAAyB,CAAC,CAAA;AACjD,CAAC;AAEK,SAAU,mBAAmB,CAAE,MAAc,EAAA;AACjD,IAAA,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;AACnC;;;;"}
|
package/dist/api/base/system.js
CHANGED
|
@@ -159,7 +159,7 @@ const getSystemInfoSync = () => {
|
|
|
159
159
|
return info;
|
|
160
160
|
};
|
|
161
161
|
/** 获取系统信息 */
|
|
162
|
-
const getSystemInfoAsync = (
|
|
162
|
+
const getSystemInfoAsync = (options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
163
163
|
const { success, fail, complete } = options;
|
|
164
164
|
const handle = new MethodHandler({ name: 'getSystemInfoAsync', success, fail, complete });
|
|
165
165
|
try {
|
|
@@ -173,7 +173,7 @@ const getSystemInfoAsync = (...args_1) => __awaiter(void 0, [...args_1], void 0,
|
|
|
173
173
|
}
|
|
174
174
|
});
|
|
175
175
|
/** 获取系统信息 */
|
|
176
|
-
const getSystemInfo = (
|
|
176
|
+
const getSystemInfo = (options = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
177
177
|
const { success, fail, complete } = options;
|
|
178
178
|
const handle = new MethodHandler({ name: 'getSystemInfo', success, fail, complete });
|
|
179
179
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sources":["../../../src/api/base/system.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport platform from 'platform'\n\nimport { temporarilyNotSupport } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n/** 跳转系统蓝牙设置页 */\nexport const openSystemBluetoothSetting = /* @__PURE__ */ temporarilyNotSupport('openSystemBluetoothSetting')\n\n/** 跳转系统微信授权管理页 */\nexport const openAppAuthorizeSetting = /* @__PURE__ */ temporarilyNotSupport('openAppAuthorizeSetting')\n\n/** 获取窗口信息 */\nexport const getWindowInfo: typeof Taro.getWindowInfo = () => {\n const info: ReturnType<typeof Taro.getWindowInfo> = {\n /** 设备像素比 */\n pixelRatio: window.devicePixelRatio,\n /** 屏幕宽度,单位px */\n screenWidth: window.screen.width,\n /** 屏幕高度,单位px */\n screenHeight: window.screen.height,\n /** 可使用窗口宽度,单位px */\n windowWidth: document.documentElement.clientWidth,\n /** 可使用窗口高度,单位px */\n windowHeight: document.documentElement.clientHeight,\n /** 状态栏的高度,单位px */\n statusBarHeight: NaN,\n /** 在竖屏正方向下的安全区域 */\n safeArea: {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n }\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getSystemSetting: typeof Taro.getSystemSetting = () => {\n const isLandscape = window.screen.width >= window.screen.height\n const info: ReturnType<typeof Taro.getSystemSetting> = {\n /** 蓝牙的系统开关 */\n bluetoothEnabled: false,\n /** 地理位置的系统开关 */\n locationEnabled: false,\n /** Wi-Fi 的系统开关 */\n wifiEnabled: false,\n /** 设备方向 */\n deviceOrientation: isLandscape ? 'landscape' : 'portrait'\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getDeviceInfo: typeof Taro.getDeviceInfo = () => {\n const info: ReturnType<typeof Taro.getDeviceInfo> = {\n /** 应用二进制接口类型(仅 Android 支持) */\n abi: '',\n /** 设备二进制接口类型(仅 Android 支持) */\n deviceAbi: '',\n /** 设备性能等级(仅Android小游戏)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50) */\n benchmarkLevel: -1,\n /** 设备品牌 */\n brand: platform.manufacturer || 'unknown',\n /** 设备型号 */\n model: platform.product || 'unknown',\n /** 操作系统及版本 */\n system: platform.os?.toString() || 'unknown',\n /** 客户端平台 */\n platform: platform.os?.family || 'unknown',\n /** 设备二进制接口类型(仅 Android 支持) */\n CPUType: '',\n }\n\n return info\n}\n\n/** 获取微信APP基础信息 */\nexport const getAppBaseInfo: typeof Taro.getAppBaseInfo = () => {\n let isDarkMode = false\n if (window.matchMedia?.('(prefers-color-scheme: dark)').matches) {\n isDarkMode = true\n }\n\n const info: ReturnType<typeof Taro.getAppBaseInfo> = {\n /** 客户端基础库版本 */\n SDKVersion: '',\n /** 是否已打开调试。可通过右上角菜单或 [Taro.setEnableDebug](/docs/apis/base/debug/setEnableDebug) 打开调试。 */\n enableDebug: process.env.NODE_ENV !== 'production',\n /** 当前小程序运行的宿主环境 */\n // host: { appId: '' },\n /** 微信设置的语言 */\n language: navigator.language,\n /** 微信版本号 */\n version: '',\n /** 系统当前主题,取值为light或dark,全局配置\"darkmode\":true时才能获取,否则为 undefined (不支持小游戏) */\n theme: isDarkMode ? 'dark' : 'light'\n }\n\n return info\n}\n\n/** 获取微信APP授权设置 */\nexport const getAppAuthorizeSetting: typeof Taro.getAppAuthorizeSetting = () => {\n const info: ReturnType<typeof Taro.getAppAuthorizeSetting> = {\n /** 允许微信使用相册的开关(仅 iOS 有效) */\n albumAuthorized: 'not determined',\n /** 允许微信使用蓝牙的开关(仅 iOS 有效) */\n bluetoothAuthorized: 'not determined',\n /** 允许微信使用摄像头的开关 */\n cameraAuthorized: 'not determined',\n /** 允许微信使用定位的开关 */\n locationAuthorized: 'not determined',\n /** 定位准确度。true 表示模糊定位,false 表示精确定位(仅 iOS 有效) */\n locationReducedAccuracy: false,\n /** 允许微信使用麦克风的开关 */\n microphoneAuthorized: 'not determined',\n /** 允许微信通知的开关 */\n notificationAuthorized: 'not determined',\n /** 允许微信通知带有提醒的开关(仅 iOS 有效) */\n notificationAlertAuthorized: 'not determined',\n /** 允许微信通知带有标记的开关(仅 iOS 有效) */\n notificationBadgeAuthorized: 'not determined',\n /** 允许微信通知带有声音的开关(仅 iOS 有效) */\n notificationSoundAuthorized: 'not determined',\n /** 允许微信使用日历的开关 */\n phoneCalendarAuthorized: 'not determined'\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getSystemInfoSync: typeof Taro.getSystemInfoSync = () => {\n const windowInfo = getWindowInfo()\n const systemSetting = getSystemSetting()\n const deviceInfo: Taro.getDeviceInfo.Result = getDeviceInfo()\n const appBaseInfo = getAppBaseInfo()\n const appAuthorizeSetting = getAppAuthorizeSetting()\n delete deviceInfo.abi\n\n const info: ReturnType<typeof Taro.getSystemInfoSync> = {\n ...windowInfo,\n ...systemSetting,\n ...deviceInfo,\n ...appBaseInfo,\n /** 用户字体大小(单位px)。以微信客户端「我-设置-通用-字体大小」中的设置为准 */\n fontSizeSetting: NaN,\n /** 允许微信使用相册的开关(仅 iOS 有效) */\n albumAuthorized: appAuthorizeSetting.albumAuthorized === 'authorized',\n /** 允许微信使用摄像头的开关 */\n cameraAuthorized: appAuthorizeSetting.cameraAuthorized === 'authorized',\n /** 允许微信使用定位的开关 */\n locationAuthorized: appAuthorizeSetting.locationAuthorized === 'authorized',\n /** 允许微信使用麦克风的开关 */\n microphoneAuthorized: appAuthorizeSetting.microphoneAuthorized === 'authorized',\n /** 允许微信通知的开关 */\n notificationAuthorized: appAuthorizeSetting.notificationAuthorized === 'authorized',\n /** 允许微信通知带有提醒的开关(仅 iOS 有效) */\n notificationAlertAuthorized: appAuthorizeSetting.notificationAlertAuthorized === 'authorized',\n /** 允许微信通知带有标记的开关(仅 iOS 有效) */\n notificationBadgeAuthorized: appAuthorizeSetting.notificationBadgeAuthorized === 'authorized',\n /** 允许微信通知带有声音的开关(仅 iOS 有效) */\n notificationSoundAuthorized: appAuthorizeSetting.notificationSoundAuthorized === 'authorized',\n /** 允许微信使用日历的开关 */\n phoneCalendarAuthorized: appAuthorizeSetting.phoneCalendarAuthorized === 'authorized',\n /** `true` 表示模糊定位,`false` 表示精确定位,仅 iOS 支持 */\n locationReducedAccuracy: appAuthorizeSetting.locationReducedAccuracy,\n /** 小程序当前运行环境 */\n environment: ''\n }\n\n return info\n}\n\n/** 获取系统信息 */\nexport const getSystemInfoAsync: typeof Taro.getSystemInfoAsync = async (options = {}) => {\n const { success, fail, complete } = options\n const handle = new MethodHandler({ name: 'getSystemInfoAsync', success, fail, complete })\n\n try {\n const info = await getSystemInfoSync()\n return handle.success(info)\n } catch (error) {\n return handle.fail({\n errMsg: error\n })\n }\n}\n\n/** 获取系统信息 */\nexport const getSystemInfo: typeof Taro.getSystemInfo = async (options = {}) => {\n const { success, fail, complete } = options\n const handle = new MethodHandler({ name: 'getSystemInfo', success, fail, complete })\n\n try {\n const info = await getSystemInfoSync()\n return handle.success(info)\n } catch (error) {\n return handle.fail({\n errMsg: error\n })\n }\n}\n\nexport const getSkylineInfoSync = /* @__PURE__ */ temporarilyNotSupport('getSkylineInfoSync')\n\nexport const getSkylineInfo = /* @__PURE__ */ temporarilyNotSupport('getSkylineInfo')\n\nexport const getRendererUserAgent = /* @__PURE__ */ temporarilyNotSupport('getRendererUserAgent')\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system.js","sources":["../../../src/api/base/system.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport platform from 'platform'\n\nimport { temporarilyNotSupport } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n/** 跳转系统蓝牙设置页 */\nexport const openSystemBluetoothSetting = /* @__PURE__ */ temporarilyNotSupport('openSystemBluetoothSetting')\n\n/** 跳转系统微信授权管理页 */\nexport const openAppAuthorizeSetting = /* @__PURE__ */ temporarilyNotSupport('openAppAuthorizeSetting')\n\n/** 获取窗口信息 */\nexport const getWindowInfo: typeof Taro.getWindowInfo = () => {\n const info: ReturnType<typeof Taro.getWindowInfo> = {\n /** 设备像素比 */\n pixelRatio: window.devicePixelRatio,\n /** 屏幕宽度,单位px */\n screenWidth: window.screen.width,\n /** 屏幕高度,单位px */\n screenHeight: window.screen.height,\n /** 可使用窗口宽度,单位px */\n windowWidth: document.documentElement.clientWidth,\n /** 可使用窗口高度,单位px */\n windowHeight: document.documentElement.clientHeight,\n /** 状态栏的高度,单位px */\n statusBarHeight: NaN,\n /** 在竖屏正方向下的安全区域 */\n safeArea: {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n }\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getSystemSetting: typeof Taro.getSystemSetting = () => {\n const isLandscape = window.screen.width >= window.screen.height\n const info: ReturnType<typeof Taro.getSystemSetting> = {\n /** 蓝牙的系统开关 */\n bluetoothEnabled: false,\n /** 地理位置的系统开关 */\n locationEnabled: false,\n /** Wi-Fi 的系统开关 */\n wifiEnabled: false,\n /** 设备方向 */\n deviceOrientation: isLandscape ? 'landscape' : 'portrait'\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getDeviceInfo: typeof Taro.getDeviceInfo = () => {\n const info: ReturnType<typeof Taro.getDeviceInfo> = {\n /** 应用二进制接口类型(仅 Android 支持) */\n abi: '',\n /** 设备二进制接口类型(仅 Android 支持) */\n deviceAbi: '',\n /** 设备性能等级(仅Android小游戏)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50) */\n benchmarkLevel: -1,\n /** 设备品牌 */\n brand: platform.manufacturer || 'unknown',\n /** 设备型号 */\n model: platform.product || 'unknown',\n /** 操作系统及版本 */\n system: platform.os?.toString() || 'unknown',\n /** 客户端平台 */\n platform: platform.os?.family || 'unknown',\n /** 设备二进制接口类型(仅 Android 支持) */\n CPUType: '',\n }\n\n return info\n}\n\n/** 获取微信APP基础信息 */\nexport const getAppBaseInfo: typeof Taro.getAppBaseInfo = () => {\n let isDarkMode = false\n if (window.matchMedia?.('(prefers-color-scheme: dark)').matches) {\n isDarkMode = true\n }\n\n const info: ReturnType<typeof Taro.getAppBaseInfo> = {\n /** 客户端基础库版本 */\n SDKVersion: '',\n /** 是否已打开调试。可通过右上角菜单或 [Taro.setEnableDebug](/docs/apis/base/debug/setEnableDebug) 打开调试。 */\n enableDebug: process.env.NODE_ENV !== 'production',\n /** 当前小程序运行的宿主环境 */\n // host: { appId: '' },\n /** 微信设置的语言 */\n language: navigator.language,\n /** 微信版本号 */\n version: '',\n /** 系统当前主题,取值为light或dark,全局配置\"darkmode\":true时才能获取,否则为 undefined (不支持小游戏) */\n theme: isDarkMode ? 'dark' : 'light'\n }\n\n return info\n}\n\n/** 获取微信APP授权设置 */\nexport const getAppAuthorizeSetting: typeof Taro.getAppAuthorizeSetting = () => {\n const info: ReturnType<typeof Taro.getAppAuthorizeSetting> = {\n /** 允许微信使用相册的开关(仅 iOS 有效) */\n albumAuthorized: 'not determined',\n /** 允许微信使用蓝牙的开关(仅 iOS 有效) */\n bluetoothAuthorized: 'not determined',\n /** 允许微信使用摄像头的开关 */\n cameraAuthorized: 'not determined',\n /** 允许微信使用定位的开关 */\n locationAuthorized: 'not determined',\n /** 定位准确度。true 表示模糊定位,false 表示精确定位(仅 iOS 有效) */\n locationReducedAccuracy: false,\n /** 允许微信使用麦克风的开关 */\n microphoneAuthorized: 'not determined',\n /** 允许微信通知的开关 */\n notificationAuthorized: 'not determined',\n /** 允许微信通知带有提醒的开关(仅 iOS 有效) */\n notificationAlertAuthorized: 'not determined',\n /** 允许微信通知带有标记的开关(仅 iOS 有效) */\n notificationBadgeAuthorized: 'not determined',\n /** 允许微信通知带有声音的开关(仅 iOS 有效) */\n notificationSoundAuthorized: 'not determined',\n /** 允许微信使用日历的开关 */\n phoneCalendarAuthorized: 'not determined'\n }\n\n return info\n}\n\n/** 获取设备设置 */\nexport const getSystemInfoSync: typeof Taro.getSystemInfoSync = () => {\n const windowInfo = getWindowInfo()\n const systemSetting = getSystemSetting()\n const deviceInfo: Taro.getDeviceInfo.Result = getDeviceInfo()\n const appBaseInfo = getAppBaseInfo()\n const appAuthorizeSetting = getAppAuthorizeSetting()\n delete deviceInfo.abi\n\n const info: ReturnType<typeof Taro.getSystemInfoSync> = {\n ...windowInfo,\n ...systemSetting,\n ...deviceInfo,\n ...appBaseInfo,\n /** 用户字体大小(单位px)。以微信客户端「我-设置-通用-字体大小」中的设置为准 */\n fontSizeSetting: NaN,\n /** 允许微信使用相册的开关(仅 iOS 有效) */\n albumAuthorized: appAuthorizeSetting.albumAuthorized === 'authorized',\n /** 允许微信使用摄像头的开关 */\n cameraAuthorized: appAuthorizeSetting.cameraAuthorized === 'authorized',\n /** 允许微信使用定位的开关 */\n locationAuthorized: appAuthorizeSetting.locationAuthorized === 'authorized',\n /** 允许微信使用麦克风的开关 */\n microphoneAuthorized: appAuthorizeSetting.microphoneAuthorized === 'authorized',\n /** 允许微信通知的开关 */\n notificationAuthorized: appAuthorizeSetting.notificationAuthorized === 'authorized',\n /** 允许微信通知带有提醒的开关(仅 iOS 有效) */\n notificationAlertAuthorized: appAuthorizeSetting.notificationAlertAuthorized === 'authorized',\n /** 允许微信通知带有标记的开关(仅 iOS 有效) */\n notificationBadgeAuthorized: appAuthorizeSetting.notificationBadgeAuthorized === 'authorized',\n /** 允许微信通知带有声音的开关(仅 iOS 有效) */\n notificationSoundAuthorized: appAuthorizeSetting.notificationSoundAuthorized === 'authorized',\n /** 允许微信使用日历的开关 */\n phoneCalendarAuthorized: appAuthorizeSetting.phoneCalendarAuthorized === 'authorized',\n /** `true` 表示模糊定位,`false` 表示精确定位,仅 iOS 支持 */\n locationReducedAccuracy: appAuthorizeSetting.locationReducedAccuracy,\n /** 小程序当前运行环境 */\n environment: ''\n }\n\n return info\n}\n\n/** 获取系统信息 */\nexport const getSystemInfoAsync: typeof Taro.getSystemInfoAsync = async (options = {}) => {\n const { success, fail, complete } = options\n const handle = new MethodHandler({ name: 'getSystemInfoAsync', success, fail, complete })\n\n try {\n const info = await getSystemInfoSync()\n return handle.success(info)\n } catch (error) {\n return handle.fail({\n errMsg: error\n })\n }\n}\n\n/** 获取系统信息 */\nexport const getSystemInfo: typeof Taro.getSystemInfo = async (options = {}) => {\n const { success, fail, complete } = options\n const handle = new MethodHandler({ name: 'getSystemInfo', success, fail, complete })\n\n try {\n const info = await getSystemInfoSync()\n return handle.success(info)\n } catch (error) {\n return handle.fail({\n errMsg: error\n })\n }\n}\n\nexport const getSkylineInfoSync = /* @__PURE__ */ temporarilyNotSupport('getSkylineInfoSync')\n\nexport const getSkylineInfo = /* @__PURE__ */ temporarilyNotSupport('getSkylineInfo')\n\nexport const getRendererUserAgent = /* @__PURE__ */ temporarilyNotSupport('getRendererUserAgent')\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Taro from '@tarojs/api';
|
|
2
2
|
import isNil from 'lodash-es/isNil';
|
|
3
|
-
import
|
|
3
|
+
import { parse } from 'query-string';
|
|
4
4
|
import { temporarilyNotSupport } from '../../../utils/index.js';
|
|
5
5
|
import { CallbackManager } from '../../../utils/handler.js';
|
|
6
6
|
|
|
@@ -33,7 +33,7 @@ const getApp = () => {
|
|
|
33
33
|
/** 小程序切前台的路径 */
|
|
34
34
|
path: (path === null || path === void 0 ? void 0 : path.substring(0, path.indexOf('?'))) || '',
|
|
35
35
|
/** 小程序切前台的 query 参数 */
|
|
36
|
-
query:
|
|
36
|
+
query: parse(location.search),
|
|
37
37
|
/** 来源信息。 */
|
|
38
38
|
referrerInfo: {},
|
|
39
39
|
/** 小程序切前台的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-event.js","sources":["../../../../src/api/base/weapp/app-event.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport isNil from 'lodash-es/isNil'\nimport queryString from 'query-string'\n\nimport { temporarilyNotSupport } from '../../../utils'\nimport { CallbackManager } from '../../../utils/handler'\n\nconst unhandledRejectionCallbackManager = new CallbackManager<[Taro.onUnhandledRejection.Result]>()\nconst themeChangeCallbackManager = new CallbackManager<[Taro.onThemeChange.Result]>()\nconst pageNotFoundCallbackManager = new CallbackManager<[Taro.onPageNotFound.Result]>()\nconst errorCallbackManager = new CallbackManager<Parameters<Taro.onError.Callback>>()\nconst appShowCallbackManager = new CallbackManager<[Taro.onAppShow.CallbackResult]>()\nconst appHideCallbackManager = new CallbackManager<[Taro.onAppShow.CallbackResult]>()\n\nconst unhandledRejectionListener = (res: PromiseRejectionEvent) => {\n unhandledRejectionCallbackManager.trigger(res)\n}\n\nlet themeMatchMedia: MediaQueryList | null = null\nconst themeChangeListener = (res: MediaQueryListEvent) => {\n themeChangeCallbackManager.trigger({\n theme: res.matches ? 'dark' : 'light'\n })\n}\n\nconst pageNotFoundListener = (res: Taro.onPageNotFound.Result) => {\n pageNotFoundCallbackManager.trigger(res)\n}\n\nconst errorListener = (res: ErrorEvent) => {\n // @ts-ignore\n errorCallbackManager.trigger(res.stack || res.message || res)\n}\n\nconst getApp = () => {\n const path = Taro.Current.page?.path\n return {\n /** 小程序切前台的路径 */\n path: path?.substring(0, path.indexOf('?')) || '',\n /** 小程序切前台的 query 参数 */\n query: queryString.parse(location.search),\n /** 来源信息。 */\n referrerInfo: {},\n /** 小程序切前台的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html) */\n scene: 0,\n /** shareTicket,详见[获取更多转发信息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */\n shareTicket: ''\n }\n}\n\nconst appShowListener = () => {\n if (document.visibilityState !== 'hidden') {\n appShowCallbackManager.trigger(getApp())\n }\n}\n\nconst appHideListener = () => {\n if (document.visibilityState === 'hidden') {\n appHideCallbackManager.trigger(getApp())\n }\n}\n\n// 应用级事件\nexport const onUnhandledRejection: typeof Taro.onUnhandledRejection = callback => {\n unhandledRejectionCallbackManager.add(callback)\n if (unhandledRejectionCallbackManager.count() === 1) {\n window.addEventListener('unhandledrejection', unhandledRejectionListener)\n }\n}\n\nexport const onThemeChange: typeof Taro.onThemeChange = callback => {\n themeChangeCallbackManager.add(callback)\n if (themeChangeCallbackManager.count() === 1) {\n if (isNil(themeMatchMedia)) {\n themeMatchMedia = window.matchMedia('(prefers-color-scheme: light)')\n }\n themeMatchMedia!.addEventListener('change', themeChangeListener)\n }\n}\n\nexport const onPageNotFound: typeof Taro.onPageNotFound = callback => {\n pageNotFoundCallbackManager.add(callback)\n if (pageNotFoundCallbackManager.count() === 1) {\n Taro.eventCenter.on('__taroRouterNotFound', pageNotFoundListener)\n }\n}\n\nexport const onLazyLoadError = /* @__PURE__ */ temporarilyNotSupport('onLazyLoadError')\n\nexport const onError: typeof Taro.onError = callback => {\n errorCallbackManager.add(callback)\n if (errorCallbackManager.count() === 1) {\n window.addEventListener('error', errorListener)\n }\n}\n\nexport const onAudioInterruptionEnd = /* @__PURE__ */ temporarilyNotSupport('onAudioInterruptionEnd')\nexport const onAudioInterruptionBegin = /* @__PURE__ */ temporarilyNotSupport('onAudioInterruptionBegin')\n\nexport const onAppShow: typeof Taro.onAppShow = callback => {\n appShowCallbackManager.add(callback)\n if (appShowCallbackManager.count() === 1) {\n window.addEventListener('visibilitychange', appShowListener)\n }\n}\n\nexport const onAppHide: typeof Taro.onAppHide = callback => {\n appHideCallbackManager.add(callback)\n if (appHideCallbackManager.count() === 1) {\n window.addEventListener('visibilitychange', appHideListener)\n }\n}\n\nexport const offUnhandledRejection: typeof Taro.offUnhandledRejection = callback => {\n unhandledRejectionCallbackManager.remove(callback)\n if (unhandledRejectionCallbackManager.count() === 0) {\n window.removeEventListener('unhandledrejection', unhandledRejectionListener)\n }\n}\n\nexport const offThemeChange: typeof Taro.offThemeChange = callback => {\n themeChangeCallbackManager.remove(callback)\n if (themeChangeCallbackManager.count() === 0) {\n if (isNil(themeMatchMedia)) {\n themeMatchMedia = window.matchMedia('(prefers-color-scheme: light)')\n }\n themeMatchMedia!.removeEventListener('change', themeChangeListener)\n themeMatchMedia = null\n }\n}\n\nexport const offPageNotFound: typeof Taro.offPageNotFound = callback => {\n pageNotFoundCallbackManager.remove(callback)\n if (pageNotFoundCallbackManager.count() === 0) {\n Taro.eventCenter.off('__taroRouterNotFound', pageNotFoundListener)\n }\n}\n\nexport const offLazyLoadError = /* @__PURE__ */ temporarilyNotSupport('offLazyLoadError')\n\nexport const offError: typeof Taro.offError = callback => {\n errorCallbackManager.remove(callback)\n if (errorCallbackManager.count() === 0) {\n window.removeEventListener('error', errorListener)\n }\n}\n\nexport const offAudioInterruptionEnd = /* @__PURE__ */ temporarilyNotSupport('offAudioInterruptionEnd')\nexport const offAudioInterruptionBegin = /* @__PURE__ */ temporarilyNotSupport('offAudioInterruptionBegin')\n\nexport const offAppShow: typeof Taro.offAppShow = callback => {\n appShowCallbackManager.remove(callback)\n if (appShowCallbackManager.count() === 0) {\n window.removeEventListener('visibilitychange', appShowListener)\n }\n}\n\nexport const offAppHide: typeof Taro.offAppHide = callback => {\n appHideCallbackManager.remove(callback)\n if (appHideCallbackManager.count() === 0) {\n window.removeEventListener('visibilitychange', appHideListener)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-event.js","sources":["../../../../src/api/base/weapp/app-event.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport isNil from 'lodash-es/isNil'\nimport { parse } from 'query-string'\n\nimport { temporarilyNotSupport } from '../../../utils'\nimport { CallbackManager } from '../../../utils/handler'\n\nconst unhandledRejectionCallbackManager = new CallbackManager<[Taro.onUnhandledRejection.Result]>()\nconst themeChangeCallbackManager = new CallbackManager<[Taro.onThemeChange.Result]>()\nconst pageNotFoundCallbackManager = new CallbackManager<[Taro.onPageNotFound.Result]>()\nconst errorCallbackManager = new CallbackManager<Parameters<Taro.onError.Callback>>()\nconst appShowCallbackManager = new CallbackManager<[Taro.onAppShow.CallbackResult]>()\nconst appHideCallbackManager = new CallbackManager<[Taro.onAppShow.CallbackResult]>()\n\nconst unhandledRejectionListener = (res: PromiseRejectionEvent) => {\n unhandledRejectionCallbackManager.trigger(res)\n}\n\nlet themeMatchMedia: MediaQueryList | null = null\nconst themeChangeListener = (res: MediaQueryListEvent) => {\n themeChangeCallbackManager.trigger({\n theme: res.matches ? 'dark' : 'light'\n })\n}\n\nconst pageNotFoundListener = (res: Taro.onPageNotFound.Result) => {\n pageNotFoundCallbackManager.trigger(res)\n}\n\nconst errorListener = (res: ErrorEvent) => {\n // @ts-ignore\n errorCallbackManager.trigger(res.stack || res.message || res)\n}\n\nconst getApp = () => {\n const path = Taro.Current.page?.path\n return {\n /** 小程序切前台的路径 */\n path: path?.substring(0, path.indexOf('?')) || '',\n /** 小程序切前台的 query 参数 */\n query: parse(location.search),\n /** 来源信息。 */\n referrerInfo: {},\n /** 小程序切前台的[场景值](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html) */\n scene: 0,\n /** shareTicket,详见[获取更多转发信息](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) */\n shareTicket: ''\n }\n}\n\nconst appShowListener = () => {\n if (document.visibilityState !== 'hidden') {\n appShowCallbackManager.trigger(getApp())\n }\n}\n\nconst appHideListener = () => {\n if (document.visibilityState === 'hidden') {\n appHideCallbackManager.trigger(getApp())\n }\n}\n\n// 应用级事件\nexport const onUnhandledRejection: typeof Taro.onUnhandledRejection = callback => {\n unhandledRejectionCallbackManager.add(callback)\n if (unhandledRejectionCallbackManager.count() === 1) {\n window.addEventListener('unhandledrejection', unhandledRejectionListener)\n }\n}\n\nexport const onThemeChange: typeof Taro.onThemeChange = callback => {\n themeChangeCallbackManager.add(callback)\n if (themeChangeCallbackManager.count() === 1) {\n if (isNil(themeMatchMedia)) {\n themeMatchMedia = window.matchMedia('(prefers-color-scheme: light)')\n }\n themeMatchMedia.addEventListener('change', themeChangeListener)\n }\n}\n\nexport const onPageNotFound: typeof Taro.onPageNotFound = callback => {\n pageNotFoundCallbackManager.add(callback)\n if (pageNotFoundCallbackManager.count() === 1) {\n Taro.eventCenter.on('__taroRouterNotFound', pageNotFoundListener)\n }\n}\n\nexport const onLazyLoadError = /* @__PURE__ */ temporarilyNotSupport('onLazyLoadError')\n\nexport const onError: typeof Taro.onError = callback => {\n errorCallbackManager.add(callback)\n if (errorCallbackManager.count() === 1) {\n window.addEventListener('error', errorListener)\n }\n}\n\nexport const onAudioInterruptionEnd = /* @__PURE__ */ temporarilyNotSupport('onAudioInterruptionEnd')\nexport const onAudioInterruptionBegin = /* @__PURE__ */ temporarilyNotSupport('onAudioInterruptionBegin')\n\nexport const onAppShow: typeof Taro.onAppShow = callback => {\n appShowCallbackManager.add(callback)\n if (appShowCallbackManager.count() === 1) {\n window.addEventListener('visibilitychange', appShowListener)\n }\n}\n\nexport const onAppHide: typeof Taro.onAppHide = callback => {\n appHideCallbackManager.add(callback)\n if (appHideCallbackManager.count() === 1) {\n window.addEventListener('visibilitychange', appHideListener)\n }\n}\n\nexport const offUnhandledRejection: typeof Taro.offUnhandledRejection = callback => {\n unhandledRejectionCallbackManager.remove(callback)\n if (unhandledRejectionCallbackManager.count() === 0) {\n window.removeEventListener('unhandledrejection', unhandledRejectionListener)\n }\n}\n\nexport const offThemeChange: typeof Taro.offThemeChange = callback => {\n themeChangeCallbackManager.remove(callback)\n if (themeChangeCallbackManager.count() === 0) {\n if (isNil(themeMatchMedia)) {\n themeMatchMedia = window.matchMedia('(prefers-color-scheme: light)')\n }\n themeMatchMedia.removeEventListener('change', themeChangeListener)\n themeMatchMedia = null\n }\n}\n\nexport const offPageNotFound: typeof Taro.offPageNotFound = callback => {\n pageNotFoundCallbackManager.remove(callback)\n if (pageNotFoundCallbackManager.count() === 0) {\n Taro.eventCenter.off('__taroRouterNotFound', pageNotFoundListener)\n }\n}\n\nexport const offLazyLoadError = /* @__PURE__ */ temporarilyNotSupport('offLazyLoadError')\n\nexport const offError: typeof Taro.offError = callback => {\n errorCallbackManager.remove(callback)\n if (errorCallbackManager.count() === 0) {\n window.removeEventListener('error', errorListener)\n }\n}\n\nexport const offAudioInterruptionEnd = /* @__PURE__ */ temporarilyNotSupport('offAudioInterruptionEnd')\nexport const offAudioInterruptionBegin = /* @__PURE__ */ temporarilyNotSupport('offAudioInterruptionBegin')\n\nexport const offAppShow: typeof Taro.offAppShow = callback => {\n appShowCallbackManager.remove(callback)\n if (appShowCallbackManager.count() === 0) {\n window.removeEventListener('visibilitychange', appShowListener)\n }\n}\n\nexport const offAppHide: typeof Taro.offAppHide = callback => {\n appHideCallbackManager.remove(callback)\n if (appHideCallbackManager.count() === 0) {\n window.removeEventListener('visibilitychange', appHideListener)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasContext.js","sources":["../../../src/api/canvas/CanvasContext.ts"],"sourcesContent":["import Taro, { CanvasGradient } from '@tarojs/api'\n\ninterface IAction {\n func: (...arr: any[]) => void\n args: any[]\n}\n\nconst TextBaseLineMap: Record<keyof Taro.CanvasContext.TextBaseline, CanvasTextBaseline> = {\n top: 'top',\n bottom: 'bottom',\n middle: 'middle',\n normal: 'alphabetic',\n hanging: 'hanging',\n alphabetic: 'alphabetic',\n ideographic: 'ideographic'\n}\n\nexport class CanvasContext implements Taro.CanvasContext {\n __raw__: CanvasRenderingContext2D\n actions: IAction[] = []\n\n constructor (canvas, ctx) {\n this.canvas = canvas\n this.ctx = ctx\n }\n\n set ctx (e: CanvasRenderingContext2D) {\n this.__raw__ = e\n }\n\n get ctx () {\n return this.__raw__ || {}\n }\n\n canvas: HTMLCanvasElement\n\n protected emptyActions () {\n this.actions.length = 0\n }\n\n protected enqueueActions (func: IAction['func'], ...args) {\n this.actions.push({\n func,\n args\n })\n }\n\n set fillStyle (e) { this.enqueueActions(() => { this.ctx.fillStyle = e }) }\n get fillStyle () { return this.ctx.fillStyle as string }\n set font (e) { this.ctx.font = e }\n get font () { return this.ctx.font }\n set globalAlpha (e) { this.enqueueActions(() => { this.ctx.globalAlpha = e }) }\n get globalAlpha () { return this.ctx.globalAlpha }\n set globalCompositeOperation (e) { this.enqueueActions(() => { this.ctx.globalCompositeOperation = e }) }\n get globalCompositeOperation () { return this.ctx.globalCompositeOperation }\n set lineCap (e) { this.enqueueActions(() => { this.ctx.lineCap = e }) }\n get lineCap () { return this.ctx.lineCap }\n set lineDashOffset (e) { this.enqueueActions(() => { this.ctx.lineDashOffset = e }) }\n get lineDashOffset () { return this.ctx.lineDashOffset }\n set lineJoin (e) { this.enqueueActions(() => { this.ctx.lineJoin = e }) }\n get lineJoin () { return this.ctx.lineJoin }\n set lineWidth (e) { this.enqueueActions(() => { this.ctx.lineWidth = e }) }\n get lineWidth () { return this.ctx.lineWidth }\n set miterLimit (e) { this.enqueueActions(() => { this.ctx.miterLimit = e }) }\n get miterLimit () { return this.ctx.miterLimit }\n set shadowBlur (e) { this.enqueueActions(() => { this.ctx.shadowBlur = e }) }\n get shadowBlur () { return this.ctx.shadowBlur }\n set shadowColor (e) { this.enqueueActions(() => { this.ctx.shadowColor = e }) }\n get shadowColor () { return this.ctx.shadowColor }\n set shadowOffsetX (e) { this.enqueueActions(() => { this.ctx.shadowOffsetX = e }) }\n get shadowOffsetX () { return this.ctx.shadowOffsetX }\n set shadowOffsetY (e) { this.enqueueActions(() => { this.ctx.shadowOffsetY = e }) }\n get shadowOffsetY () { return this.ctx.shadowOffsetY }\n set strokeStyle (e) { this.enqueueActions(() => { this.ctx.strokeStyle = e }) }\n get strokeStyle () { return this.ctx.strokeStyle as string }\n /** 小程序文档中不包括 ↓↓↓ */\n set textAlign (e) { this.ctx.textAlign = e }\n get textAlign () { return this.ctx.textAlign }\n set textBaseline (e) { this.ctx.textBaseline = e }\n get textBaseline () { return this.ctx.textBaseline }\n set direction (e) { this.ctx.direction = e }\n get direction () { return this.ctx.direction }\n set imageSmoothingEnabled (e) { this.enqueueActions(() => { this.ctx.imageSmoothingEnabled = e }) }\n get imageSmoothingEnabled () { return this.ctx.imageSmoothingEnabled }\n set imageSmoothingQuality (e) { this.enqueueActions(() => { this.ctx.imageSmoothingQuality = e }) }\n get imageSmoothingQuality () { return this.ctx.imageSmoothingQuality }\n set filter (e) { this.enqueueActions(() => { this.ctx.filter = e }) }\n get filter () { return this.ctx.filter }\n /** 小程序文档中不包括 ↑↑↑ */\n\n arc (...args) { return this.enqueueActions(this.ctx.arc, ...args) }\n arcTo (...args) { return this.enqueueActions(this.ctx.arcTo, ...args) }\n beginPath (...args) { return this.enqueueActions(this.ctx.beginPath, ...args) }\n bezierCurveTo (...args) { return this.enqueueActions(this.ctx.bezierCurveTo, ...args) }\n clearRect (...args) { return this.enqueueActions(this.ctx.clearRect, ...args) }\n clip (...args) { return this.enqueueActions(this.ctx.clip, ...args) }\n closePath (...args) { return this.enqueueActions(this.ctx.closePath, ...args) }\n\n createPattern (imageResource: string, repetition: keyof Taro.CanvasContext.Repetition): CanvasPattern | null | Promise<CanvasPattern | null> {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<CanvasPattern | null>((resolve, reject) => {\n img.onload = () => {\n resolve(this.ctx.createPattern(img, repetition))\n }\n img.onerror = reject\n })\n }\n\n return this.ctx.createPattern(imageResource, repetition)\n }\n\n /**\n * 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。\n * @todo 每次 draw 都会读取 width 和 height\n */\n async draw (reserve?: boolean, callback?: (...args: any[]) => any): Promise<void> {\n try {\n if (!reserve) {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)\n }\n\n // 部分 action 是异步的\n for (const { func, args } of this.actions) {\n await func.apply(this.ctx, args)\n }\n\n this.emptyActions()\n callback && callback()\n } catch (e) {\n /* eslint-disable no-throw-literal */\n throw {\n errMsg: e.message\n }\n }\n }\n\n drawImage (imageResource: string, ...extra: any[]): void {\n type TExtra = [number, number]\n this.enqueueActions(() => {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<void>((resolve, reject) => {\n img.onload = () => {\n this.ctx.drawImage(img, ...extra as TExtra)\n resolve()\n }\n img.onerror = reject\n })\n }\n\n this.ctx.drawImage(imageResource, ...extra as TExtra)\n })\n }\n\n fill (...args) { return this.enqueueActions(this.ctx.fill, ...args) }\n fillRect (...args) { return this.enqueueActions(this.ctx.fillRect, ...args) }\n fillText (...args) { return this.enqueueActions(this.ctx.fillText, ...args) }\n lineTo (...args) { return this.enqueueActions(this.ctx.lineTo, ...args) }\n moveTo (...args) { return this.enqueueActions(this.ctx.moveTo, ...args) }\n quadraticCurveTo (...args) { return this.enqueueActions(this.ctx.quadraticCurveTo, ...args) }\n rect (...args) { return this.enqueueActions(this.ctx.rect, ...args) }\n // @ts-ignore\n reset () { return this.ctx.reset() }\n restore () { return this.ctx.restore() }\n rotate (...args) { return this.enqueueActions(this.ctx.rotate, ...args) }\n save () { return this.ctx.save() }\n scale (...args) { return this.enqueueActions(this.ctx.scale, ...args) }\n\n setFillStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.fillStyle = color })\n }\n\n setFontSize (fontSize: number): void {\n const arr = this.font.split(/\\s/)\n const idx = arr.findIndex(e => /^\\d+px$/.test(e))\n if (idx !== -1) {\n arr[idx] = `${fontSize}px`\n this.font = arr.join(' ')\n }\n }\n\n setGlobalAlpha (alpha: number): void {\n this.globalAlpha = alpha\n }\n\n setLineCap (lineCap: keyof Taro.CanvasContext.LineCap): void {\n this.lineCap = lineCap\n }\n\n setLineDash (pattern: number[], offset: number): void {\n this.enqueueActions(() => {\n this.ctx.setLineDash(pattern)\n this.ctx.lineDashOffset = offset\n })\n }\n\n setLineJoin (lineJoin: keyof Taro.CanvasContext.LineJoin): void {\n this.lineJoin = lineJoin\n }\n\n setLineWidth (lineWidth: number): void {\n this.lineWidth = lineWidth\n }\n\n setMiterLimit (miterLimit: number): void {\n this.miterLimit = miterLimit\n }\n\n setShadow (offsetX: number, offsetY: number, blur: number, color: string): void {\n this.enqueueActions(() => {\n this.ctx.shadowOffsetX = offsetX\n this.ctx.shadowOffsetY = offsetY\n this.ctx.shadowColor = color\n this.ctx.shadowBlur = blur\n })\n }\n\n setStrokeStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.strokeStyle = color })\n }\n\n setTextAlign (align: keyof Taro.CanvasContext.Align): void {\n this.textAlign = align\n }\n\n setTextBaseline (textBaseline: keyof Taro.CanvasContext.TextBaseline): void {\n this.textBaseline = TextBaseLineMap[textBaseline] || 'alphabetic'\n }\n\n setTransform (...args) { return this.enqueueActions(this.ctx.setTransform, ...args) }\n stroke (...args) { return this.enqueueActions(this.ctx.stroke, ...args) }\n strokeRect (...args) { return this.enqueueActions(this.ctx.strokeRect, ...args) }\n strokeText (...args) { return this.enqueueActions(this.ctx.strokeText, ...args) }\n transform (...args) { return this.enqueueActions(this.ctx.transform, ...args) }\n translate (...args) { return this.enqueueActions(this.ctx.translate, ...args) }\n\n measureText (text: string): TextMetrics {\n return this.ctx.measureText(text)\n }\n\n createCircularGradient (x: number, y: number, r: number): CanvasGradient {\n const radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, r)\n\n return radialGradient\n }\n\n createLinearGradient (x0: number, y0: number, x1: number, y1: number): CanvasGradient {\n return this.ctx.createLinearGradient(x0, y0, x1, y1)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CanvasContext.js","sources":["../../../src/api/canvas/CanvasContext.ts"],"sourcesContent":["import Taro, { CanvasGradient } from '@tarojs/api'\n\ninterface IAction {\n func: (...arr: any[]) => void\n args: any[]\n}\n\nconst TextBaseLineMap: Record<keyof Taro.CanvasContext.TextBaseline, CanvasTextBaseline> = {\n top: 'top',\n bottom: 'bottom',\n middle: 'middle',\n normal: 'alphabetic',\n hanging: 'hanging',\n alphabetic: 'alphabetic',\n ideographic: 'ideographic'\n}\n\nexport class CanvasContext implements Taro.CanvasContext {\n __raw__: CanvasRenderingContext2D\n actions: IAction[] = []\n\n constructor (canvas, ctx) {\n this.canvas = canvas\n this.ctx = ctx\n }\n\n set ctx (e: CanvasRenderingContext2D) {\n this.__raw__ = e\n }\n\n get ctx () {\n return this.__raw__ || {}\n }\n\n canvas: HTMLCanvasElement\n\n protected emptyActions () {\n this.actions.length = 0\n }\n\n protected enqueueActions (func: IAction['func'], ...args) {\n this.actions.push({\n func,\n args\n })\n }\n\n set fillStyle (e) { this.enqueueActions(() => { this.ctx.fillStyle = e }) }\n get fillStyle () { return this.ctx.fillStyle as string }\n set font (e) { this.ctx.font = e }\n get font () { return this.ctx.font }\n set globalAlpha (e) { this.enqueueActions(() => { this.ctx.globalAlpha = e }) }\n get globalAlpha () { return this.ctx.globalAlpha }\n set globalCompositeOperation (e) { this.enqueueActions(() => { this.ctx.globalCompositeOperation = e }) }\n get globalCompositeOperation () { return this.ctx.globalCompositeOperation }\n set lineCap (e) { this.enqueueActions(() => { this.ctx.lineCap = e }) }\n get lineCap () { return this.ctx.lineCap }\n set lineDashOffset (e) { this.enqueueActions(() => { this.ctx.lineDashOffset = e }) }\n get lineDashOffset () { return this.ctx.lineDashOffset }\n set lineJoin (e) { this.enqueueActions(() => { this.ctx.lineJoin = e }) }\n get lineJoin () { return this.ctx.lineJoin }\n set lineWidth (e) { this.enqueueActions(() => { this.ctx.lineWidth = e }) }\n get lineWidth () { return this.ctx.lineWidth }\n set miterLimit (e) { this.enqueueActions(() => { this.ctx.miterLimit = e }) }\n get miterLimit () { return this.ctx.miterLimit }\n set shadowBlur (e) { this.enqueueActions(() => { this.ctx.shadowBlur = e }) }\n get shadowBlur () { return this.ctx.shadowBlur }\n set shadowColor (e) { this.enqueueActions(() => { this.ctx.shadowColor = e }) }\n get shadowColor () { return this.ctx.shadowColor }\n set shadowOffsetX (e) { this.enqueueActions(() => { this.ctx.shadowOffsetX = e }) }\n get shadowOffsetX () { return this.ctx.shadowOffsetX }\n set shadowOffsetY (e) { this.enqueueActions(() => { this.ctx.shadowOffsetY = e }) }\n get shadowOffsetY () { return this.ctx.shadowOffsetY }\n set strokeStyle (e) { this.enqueueActions(() => { this.ctx.strokeStyle = e }) }\n get strokeStyle () { return this.ctx.strokeStyle as string }\n /** 小程序文档中不包括 ↓↓↓ */\n set textAlign (e) { this.ctx.textAlign = e }\n get textAlign () { return this.ctx.textAlign }\n set textBaseline (e) { this.ctx.textBaseline = e }\n get textBaseline () { return this.ctx.textBaseline }\n set direction (e) { this.ctx.direction = e }\n get direction () { return this.ctx.direction }\n set imageSmoothingEnabled (e) { this.enqueueActions(() => { this.ctx.imageSmoothingEnabled = e }) }\n get imageSmoothingEnabled () { return this.ctx.imageSmoothingEnabled }\n set imageSmoothingQuality (e) { this.enqueueActions(() => { this.ctx.imageSmoothingQuality = e }) }\n get imageSmoothingQuality () { return this.ctx.imageSmoothingQuality }\n set filter (e) { this.enqueueActions(() => { this.ctx.filter = e }) }\n get filter () { return this.ctx.filter }\n /** 小程序文档中不包括 ↑↑↑ */\n\n arc (...args) { return this.enqueueActions(this.ctx.arc, ...args) }\n arcTo (...args) { return this.enqueueActions(this.ctx.arcTo, ...args) }\n beginPath (...args) { return this.enqueueActions(this.ctx.beginPath, ...args) }\n bezierCurveTo (...args) { return this.enqueueActions(this.ctx.bezierCurveTo, ...args) }\n clearRect (...args) { return this.enqueueActions(this.ctx.clearRect, ...args) }\n clip (...args) { return this.enqueueActions(this.ctx.clip, ...args) }\n closePath (...args) { return this.enqueueActions(this.ctx.closePath, ...args) }\n\n createPattern (imageResource: string, repetition: keyof Taro.CanvasContext.Repetition): CanvasPattern | null | Promise<CanvasPattern | null> {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<CanvasPattern | null>((resolve, reject) => {\n img.onload = () => {\n resolve(this.ctx.createPattern(img, repetition))\n }\n img.onerror = reject\n })\n }\n\n return this.ctx.createPattern(imageResource, repetition)\n }\n\n /**\n * 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。\n * @todo 每次 draw 都会读取 width 和 height\n */\n async draw (reserve?: boolean, callback?: (...args: any[]) => any): Promise<void> {\n try {\n if (!reserve) {\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height)\n }\n\n // 部分 action 是异步的\n for (const { func, args } of this.actions) {\n await func.apply(this.ctx, args)\n }\n\n this.emptyActions()\n callback && callback()\n } catch (e) {\n /* eslint-disable no-throw-literal */\n throw {\n errMsg: e.message\n }\n }\n }\n\n drawImage (imageResource: string, ...extra: any[]): void {\n type TExtra = [number, number]\n this.enqueueActions(() => {\n // 需要转换为 Image\n if (typeof imageResource === 'string') {\n const img = new Image()\n img.src = imageResource\n return new Promise<void>((resolve, reject) => {\n img.onload = () => {\n this.ctx.drawImage(img, ...extra as TExtra)\n resolve()\n }\n img.onerror = reject\n })\n }\n\n this.ctx.drawImage(imageResource, ...extra as TExtra)\n })\n }\n\n fill (...args) { return this.enqueueActions(this.ctx.fill, ...args) }\n fillRect (...args) { return this.enqueueActions(this.ctx.fillRect, ...args) }\n fillText (...args) { return this.enqueueActions(this.ctx.fillText, ...args) }\n lineTo (...args) { return this.enqueueActions(this.ctx.lineTo, ...args) }\n moveTo (...args) { return this.enqueueActions(this.ctx.moveTo, ...args) }\n quadraticCurveTo (...args) { return this.enqueueActions(this.ctx.quadraticCurveTo, ...args) }\n rect (...args) { return this.enqueueActions(this.ctx.rect, ...args) }\n // @ts-ignore\n reset () { return this.ctx.reset() }\n restore () { return this.ctx.restore() }\n rotate (...args) { return this.enqueueActions(this.ctx.rotate, ...args) }\n save () { return this.ctx.save() }\n scale (...args) { return this.enqueueActions(this.ctx.scale, ...args) }\n\n setFillStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.fillStyle = color })\n }\n\n setFontSize (fontSize: number): void {\n const arr = this.font.split(/\\s/)\n const idx = arr.findIndex(e => /^\\d+px$/.test(e))\n if (idx !== -1) {\n arr[idx] = `${fontSize}px`\n this.font = arr.join(' ')\n }\n }\n\n setGlobalAlpha (alpha: number): void {\n this.globalAlpha = alpha\n }\n\n setLineCap (lineCap: keyof Taro.CanvasContext.LineCap): void {\n this.lineCap = lineCap\n }\n\n setLineDash (pattern: number[], offset: number): void {\n this.enqueueActions(() => {\n this.ctx.setLineDash(pattern)\n this.ctx.lineDashOffset = offset\n })\n }\n\n setLineJoin (lineJoin: keyof Taro.CanvasContext.LineJoin): void {\n this.lineJoin = lineJoin\n }\n\n setLineWidth (lineWidth: number): void {\n this.lineWidth = lineWidth\n }\n\n setMiterLimit (miterLimit: number): void {\n this.miterLimit = miterLimit\n }\n\n setShadow (offsetX: number, offsetY: number, blur: number, color: string): void {\n this.enqueueActions(() => {\n this.ctx.shadowOffsetX = offsetX\n this.ctx.shadowOffsetY = offsetY\n this.ctx.shadowColor = color\n this.ctx.shadowBlur = blur\n })\n }\n\n setStrokeStyle (color: string | CanvasGradient): void {\n this.enqueueActions(() => { this.ctx.strokeStyle = color })\n }\n\n setTextAlign (align: keyof Taro.CanvasContext.Align): void {\n this.textAlign = align\n }\n\n setTextBaseline (textBaseline: keyof Taro.CanvasContext.TextBaseline): void {\n this.textBaseline = TextBaseLineMap[textBaseline] || 'alphabetic'\n }\n\n setTransform (...args) { return this.enqueueActions(this.ctx.setTransform, ...args) }\n stroke (...args) { return this.enqueueActions(this.ctx.stroke, ...args) }\n strokeRect (...args) { return this.enqueueActions(this.ctx.strokeRect, ...args) }\n strokeText (...args) { return this.enqueueActions(this.ctx.strokeText, ...args) }\n transform (...args) { return this.enqueueActions(this.ctx.transform, ...args) }\n translate (...args) { return this.enqueueActions(this.ctx.translate, ...args) }\n\n measureText (text: string): TextMetrics {\n return this.ctx.measureText(text)\n }\n\n createCircularGradient (x: number, y: number, r: number): CanvasGradient {\n const radialGradient = this.ctx.createRadialGradient(x, y, 0, x, y, r)\n\n return radialGradient\n }\n\n createLinearGradient (x0: number, y0: number, x1: number, y1: number): CanvasGradient {\n return this.ctx.createLinearGradient(x0, y0, x1, y1)\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasGetImageData.js","sources":["../../../src/api/canvas/canvasGetImageData.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\n\r\nimport { findDOM } from '../../utils'\r\nimport { MethodHandler } from '../../utils/handler'\r\n\r\n/**\r\n * 获取 canvas 区域隐含的像素数据。\r\n */\r\nexport const canvasGetImageData: typeof Taro.canvasGetImageData = ({ canvasId, success, fail, complete, x, y, width, height }, inst) => {\r\n const handle = new MethodHandler({ name: 'canvasGetImageData', success, fail, complete })\r\n const el = findDOM(inst) as HTMLElement\r\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\r\n\r\n try {\r\n const ctx = canvas?.getContext('2d')\r\n // TODO ImageData => Uint8ClampedArray\r\n const data = ctx?.getImageData(x, y, width, height) as unknown as Uint8ClampedArray\r\n return handle.success({\r\n width,\r\n height,\r\n data\r\n })\r\n } catch (e) {\r\n return handle.fail({\r\n errMsg: e.message\r\n })\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAKA;;AAEG;AACU,MAAA,kBAAkB,GAAmC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,KAAI;AACrI,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzF,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"canvasGetImageData.js","sources":["../../../src/api/canvas/canvasGetImageData.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\n\r\nimport { findDOM } from '../../utils'\r\nimport { MethodHandler } from '../../utils/handler'\r\n\r\n/**\r\n * 获取 canvas 区域隐含的像素数据。\r\n */\r\nexport const canvasGetImageData: typeof Taro.canvasGetImageData = ({ canvasId, success, fail, complete, x, y, width, height }, inst) => {\r\n const handle = new MethodHandler({ name: 'canvasGetImageData', success, fail, complete })\r\n const el = findDOM(inst) as HTMLElement\r\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\r\n\r\n try {\r\n const ctx = canvas?.getContext('2d')\r\n // TODO ImageData => Uint8ClampedArray\r\n const data = ctx?.getImageData(x, y, width, height) as unknown as Uint8ClampedArray\r\n return handle.success({\r\n width,\r\n height,\r\n data\r\n })\r\n } catch (e) {\r\n return handle.fail({\r\n errMsg: e.message\r\n })\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAKA;;AAEG;AACU,MAAA,kBAAkB,GAAmC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,KAAI;AACrI,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzF,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;IAExF,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,UAAU,CAAC,IAAI,CAAC,CAAA;;AAEpC,QAAA,MAAM,IAAI,GAAG,GAAG,aAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAiC,CAAA;QACnF,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,KAAK;YACL,MAAM;YACN,IAAI;AACL,SAAA,CAAC,CAAA;AACH,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACV,OAAO,MAAM,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,CAAC,OAAO;AAClB,SAAA,CAAC,CAAA;AACH,KAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasPutImageData.js","sources":["../../../src/api/canvas/canvasPutImageData.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\n\r\nimport { findDOM } from '../../utils'\r\nimport { MethodHandler } from '../../utils/handler'\r\n\r\n/**\r\n * 将像素数据绘制到画布。在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 <canvas> 组件\r\n * @todo 暂未支持尺寸相关功能\r\n */\r\nexport const canvasPutImageData: typeof Taro.canvasPutImageData = ({ canvasId, data, x, y, success, fail, complete }, inst) => {\r\n const handle = new MethodHandler({ name: 'canvasPutImageData', success, fail, complete })\r\n const el = findDOM(inst) as HTMLElement\r\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\r\n\r\n try {\r\n const ctx = canvas.getContext('2d')\r\n // TODO Uint8ClampedArray => ImageData\r\n ctx?.putImageData(data as unknown as ImageData, x, y)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({\r\n errMsg: e.message\r\n })\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAKA;;;AAGG;MACU,kBAAkB,GAAmC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,KAAI;AAC5H,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzF,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"canvasPutImageData.js","sources":["../../../src/api/canvas/canvasPutImageData.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\n\r\nimport { findDOM } from '../../utils'\r\nimport { MethodHandler } from '../../utils/handler'\r\n\r\n/**\r\n * 将像素数据绘制到画布。在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 <canvas> 组件\r\n * @todo 暂未支持尺寸相关功能\r\n */\r\nexport const canvasPutImageData: typeof Taro.canvasPutImageData = ({ canvasId, data, x, y, success, fail, complete }, inst) => {\r\n const handle = new MethodHandler({ name: 'canvasPutImageData', success, fail, complete })\r\n const el = findDOM(inst) as HTMLElement\r\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\r\n\r\n try {\r\n const ctx = canvas.getContext('2d')\r\n // TODO Uint8ClampedArray => ImageData\r\n ctx?.putImageData(data as unknown as ImageData, x, y)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({\r\n errMsg: e.message\r\n })\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAKA;;;AAGG;MACU,kBAAkB,GAAmC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,KAAI;AAC5H,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACzF,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;IAExF,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;;AAEnC,QAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,YAAY,CAAC,IAA4B,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AACrD,QAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;AACxB,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACV,OAAO,MAAM,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,CAAC,OAAO;AAClB,SAAA,CAAC,CAAA;AACH,KAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvasToTempFilePath.js","sources":["../../../src/api/canvas/canvasToTempFilePath.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { findDOM } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n/**\n * 把当前画布指定区域的内容导出生成指定大小的图片。在 draw() 回调里调用该方法才能保证图片导出成功。\n * @todo 暂未支持尺寸相关功能\n */\nexport const canvasToTempFilePath: typeof Taro.canvasToTempFilePath = ({ canvasId, fileType, quality, success, fail, complete }, inst) => {\n const handle = new MethodHandler({ name: 'canvasToTempFilePath', success, fail, complete })\n const el = findDOM(inst) as HTMLElement\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\n\n try {\n const dataURL = canvas?.toDataURL(`image/${(fileType === 'jpg' ? 'jpeg' : fileType) || 'png'}`, quality)\n return handle.success({\n tempFilePath: dataURL\n })\n } catch (e) {\n return handle.fail({\n errMsg: e.message\n })\n }\n}\n"],"names":[],"mappings":";;;AAKA;;;AAGG;MACU,oBAAoB,GAAqC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,KAAI;AACvI,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC3F,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"canvasToTempFilePath.js","sources":["../../../src/api/canvas/canvasToTempFilePath.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { findDOM } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n/**\n * 把当前画布指定区域的内容导出生成指定大小的图片。在 draw() 回调里调用该方法才能保证图片导出成功。\n * @todo 暂未支持尺寸相关功能\n */\nexport const canvasToTempFilePath: typeof Taro.canvasToTempFilePath = ({ canvasId, fileType, quality, success, fail, complete }, inst) => {\n const handle = new MethodHandler({ name: 'canvasToTempFilePath', success, fail, complete })\n const el = findDOM(inst) as HTMLElement\n const canvas = el?.querySelector(`canvas[canvas-id=\"${canvasId}\"]`) as HTMLCanvasElement\n\n try {\n const dataURL = canvas?.toDataURL(`image/${(fileType === 'jpg' ? 'jpeg' : fileType) || 'png'}`, quality)\n return handle.success({\n tempFilePath: dataURL\n })\n } catch (e) {\n return handle.fail({\n errMsg: e.message\n })\n }\n}\n"],"names":[],"mappings":";;;AAKA;;;AAGG;MACU,oBAAoB,GAAqC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,KAAI;AACvI,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AAC3F,IAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAgB,CAAA;AACvC,IAAA,MAAM,MAAM,GAAG,EAAE,KAAA,IAAA,IAAF,EAAE,KAAF,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAE,CAAE,aAAa,CAAC,CAAA,kBAAA,EAAqB,QAAQ,CAAA,EAAA,CAAI,CAAsB,CAAA;IAExF,IAAI;AACF,QAAA,MAAM,OAAO,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,SAAS,CAAC,CAAS,MAAA,EAAA,CAAC,QAAQ,KAAK,KAAK,GAAG,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAA,CAAE,EAAE,OAAO,CAAC,CAAA;QACxG,OAAO,MAAM,CAAC,OAAO,CAAC;AACpB,YAAA,YAAY,EAAE,OAAO;AACtB,SAAA,CAAC,CAAA;AACH,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;QACV,OAAO,MAAM,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAC,CAAC,OAAO;AAClB,SAAA,CAAC,CAAA;AACH,KAAA;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accelerometer.js","sources":["../../../src/api/device/accelerometer.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet devicemotionListener\r\n\r\n/**\r\n * 停止监听加速度数据。\r\n */\r\nexport const stopAccelerometer: typeof Taro.stopAccelerometer = ({ success, fail, complete } = {}) => {\r\n const res: Partial<TaroGeneral.CallbackResult> = {}\r\n const handle = new MethodHandler({ name: 'stopAccelerometer', success, fail, complete })\r\n try {\r\n window.removeEventListener('devicemotion', devicemotionListener, true)\r\n return handle.success(res)\r\n } catch (e) {\r\n res.errMsg = e.message\r\n return handle.fail(res)\r\n }\r\n}\r\n\r\nconst INTERVAL_MAP = {\r\n game: {\r\n interval: 20,\r\n frequency: 50\r\n },\r\n ui: {\r\n interval: 60,\r\n frequency: 16.67\r\n },\r\n normal: {\r\n interval: 200,\r\n frequency: 5\r\n }\r\n}\r\n\r\n/**\r\n * 开始监听加速度数据。\r\n */\r\nexport const startAccelerometer: typeof Taro.startAccelerometer = ({ interval = 'normal', success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startAccelerometer', success, fail, complete })\r\n try {\r\n if (window.DeviceMotionEvent) {\r\n const intervalObj = INTERVAL_MAP[interval]\r\n if (devicemotionListener) {\r\n stopAccelerometer()\r\n }\r\n devicemotionListener = throttle((evt: DeviceMotionEvent) => {\r\n callbackManager.trigger({\r\n x: evt.acceleration?.x || 0,\r\n y: evt.acceleration?.y || 0,\r\n z: evt.acceleration?.z || 0\r\n })\r\n }, intervalObj.interval)\r\n window.addEventListener('devicemotion', devicemotionListener, true)\r\n } else {\r\n throw new Error('accelerometer is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听加速度数据事件。频率根据 Taro.startAccelerometer() 的 interval 参数。可使用 Taro.stopAccelerometer() 停止监听。\r\n */\r\nexport const onAccelerometerChange: typeof Taro.onAccelerometerChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听加速度数据事件,参数为空,则取消所有的事件监听\r\n */\r\nexport const offAccelerometerChange: typeof Taro.offAccelerometerChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":";;;AAKA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAC7C,IAAI,oBAAoB,CAAA;AAExB;;AAEG;AACI,MAAM,iBAAiB,GAAkC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAI;IACnG,MAAM,GAAG,GAAwC,EAAE,CAAA;AACnD,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"accelerometer.js","sources":["../../../src/api/device/accelerometer.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet devicemotionListener\r\n\r\n/**\r\n * 停止监听加速度数据。\r\n */\r\nexport const stopAccelerometer: typeof Taro.stopAccelerometer = ({ success, fail, complete } = {}) => {\r\n const res: Partial<TaroGeneral.CallbackResult> = {}\r\n const handle = new MethodHandler({ name: 'stopAccelerometer', success, fail, complete })\r\n try {\r\n window.removeEventListener('devicemotion', devicemotionListener, true)\r\n return handle.success(res)\r\n } catch (e) {\r\n res.errMsg = e.message\r\n return handle.fail(res)\r\n }\r\n}\r\n\r\nconst INTERVAL_MAP = {\r\n game: {\r\n interval: 20,\r\n frequency: 50\r\n },\r\n ui: {\r\n interval: 60,\r\n frequency: 16.67\r\n },\r\n normal: {\r\n interval: 200,\r\n frequency: 5\r\n }\r\n}\r\n\r\n/**\r\n * 开始监听加速度数据。\r\n */\r\nexport const startAccelerometer: typeof Taro.startAccelerometer = ({ interval = 'normal', success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startAccelerometer', success, fail, complete })\r\n try {\r\n if (window.DeviceMotionEvent) {\r\n const intervalObj = INTERVAL_MAP[interval]\r\n if (devicemotionListener) {\r\n stopAccelerometer()\r\n }\r\n devicemotionListener = throttle((evt: DeviceMotionEvent) => {\r\n callbackManager.trigger({\r\n x: evt.acceleration?.x || 0,\r\n y: evt.acceleration?.y || 0,\r\n z: evt.acceleration?.z || 0\r\n })\r\n }, intervalObj.interval)\r\n window.addEventListener('devicemotion', devicemotionListener, true)\r\n } else {\r\n throw new Error('accelerometer is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听加速度数据事件。频率根据 Taro.startAccelerometer() 的 interval 参数。可使用 Taro.stopAccelerometer() 停止监听。\r\n */\r\nexport const onAccelerometerChange: typeof Taro.onAccelerometerChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听加速度数据事件,参数为空,则取消所有的事件监听\r\n */\r\nexport const offAccelerometerChange: typeof Taro.offAccelerometerChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { MethodHandler } from '../../utils/handler.js';
|
|
|
5
5
|
// 电量
|
|
6
6
|
// Note: 浏览器标准下不支持,其他实现方案不准确,不建议开发者使用
|
|
7
7
|
const getBatteryInfoSync = /* @__PURE__ */ permanentlyNotSupport('getBatteryInfoSync');
|
|
8
|
-
const getBatteryInfo = (
|
|
8
|
+
const getBatteryInfo = ({ success, fail, complete } = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
9
9
|
var _a;
|
|
10
10
|
const handle = new MethodHandler({ name: 'getBatteryInfo', success, fail, complete });
|
|
11
11
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"battery.js","sources":["../../../src/api/device/battery.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { permanentlyNotSupport } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n// 电量\n\n// Note: 浏览器标准下不支持,其他实现方案不准确,不建议开发者使用\nexport const getBatteryInfoSync = /* @__PURE__ */ permanentlyNotSupport('getBatteryInfoSync')\n\nexport const getBatteryInfo: typeof Taro.getBatteryInfo = async ({ success, fail, complete } = {}) => {\n const handle = new MethodHandler({ name: 'getBatteryInfo', success, fail, complete })\n try {\n // @ts-ignore\n const battery = await navigator.getBattery?.()\n return handle.success({\n isCharging: battery.charging,\n level: Number(battery.level || 0) * 100\n })\n } catch (error) {\n return handle.fail({\n errMsg: error?.message || error\n })\n }\n}\n"],"names":[],"mappings":";;;;AAKA;AAEA;AACa,MAAA,kBAAkB,mBAAmB,qBAAqB,CAAC,oBAAoB,EAAC;AAEtF,MAAM,cAAc,GAA+B,
|
|
1
|
+
{"version":3,"file":"battery.js","sources":["../../../src/api/device/battery.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { permanentlyNotSupport } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\n// 电量\n\n// Note: 浏览器标准下不支持,其他实现方案不准确,不建议开发者使用\nexport const getBatteryInfoSync = /* @__PURE__ */ permanentlyNotSupport('getBatteryInfoSync')\n\nexport const getBatteryInfo: typeof Taro.getBatteryInfo = async ({ success, fail, complete } = {}) => {\n const handle = new MethodHandler({ name: 'getBatteryInfo', success, fail, complete })\n try {\n // @ts-ignore\n const battery = await navigator.getBattery?.()\n return handle.success({\n isCharging: battery.charging,\n level: Number(battery.level || 0) * 100\n })\n } catch (error) {\n return handle.fail({\n errMsg: error?.message || error\n })\n }\n}\n"],"names":[],"mappings":";;;;AAKA;AAEA;AACa,MAAA,kBAAkB,mBAAmB,qBAAqB,CAAC,oBAAoB,EAAC;AAEtF,MAAM,cAAc,GAA+B,CAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;AACnG,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrF,IAAI;;QAEF,MAAM,OAAO,GAAG,OAAM,CAAA,EAAA,GAAA,SAAS,CAAC,UAAU,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA;QAC9C,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG;AACxC,SAAA,CAAC,CAAA;AACH,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;QACd,OAAO,MAAM,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,KAAK;AAChC,SAAA,CAAC,CAAA;AACH,KAAA;AACH,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sources":["../../../src/api/device/calendar.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport * as ics from 'ics'\n\nimport { createDownload, getParameterError, shouldBeObject } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\nimport type { DateArray } from 'ics'\n\n// 日历\nexport const addPhoneRepeatCalendar: typeof Taro.addPhoneRepeatCalendar = (options) => {\n const methodName = 'addPhoneRepeatCalendar'\n // options must be an Object\n const isObject = shouldBeObject(options)\n if (!isObject.flag) {\n const res = { errMsg: `${methodName}:fail ${isObject.msg}` }\n console.error(res.errMsg)\n return Promise.reject(res)\n }\n\n const {\n title,\n startTime = new Date().getTime(),\n allDay = false,\n description = '',\n location = '',\n endTime,\n alarm = true,\n alarmOffset = 0,\n repeatInterval = 'month',\n repeatEndTime,\n success,\n fail,\n complete,\n } = options\n const handle = new MethodHandler({ name: methodName, success, fail, complete })\n if (typeof title !== 'string') {\n return handle.fail({\n errMsg: getParameterError({\n para: 'title',\n correct: 'String',\n wrong: title\n })\n })\n }\n\n const start = new Date(startTime)\n const end = new Date(endTime || startTime)\n if (!endTime && allDay) {\n end.setDate(end.getDate() + 1)\n }\n\n const interval = 1000 * 60 * 60 * 24\n let days = 1\n let repeat = 1\n if (repeatEndTime) {\n const repeatEnd = new Date(repeatEndTime)\n if (repeatEnd < start) {\n return handle.fail({\n errMsg: 'repeatEndTime must be greater than startTime'\n })\n }\n switch (repeatInterval) {\n case 'week':\n days = 7\n break\n case 'month':\n days = 30\n break\n case 'year':\n days = 365\n break\n default:\n }\n repeat = Math.ceil((repeatEnd.getTime() - start.getTime()) / (interval * days))\n }\n const { error, value } = ics.createEvent({\n title,\n start: parseTime2Array(start, allDay),\n description,\n location,\n end: parseTime2Array(end, allDay),\n alarms: alarm ? [{\n action: 'display',\n description,\n trigger: {\n before: true,\n seconds: alarmOffset,\n },\n duration: {\n days,\n },\n repeat,\n }] : [],\n })\n if (error || !value) {\n return handle.fail({\n errMsg: error?.message\n })\n }\n const url = URL.createObjectURL(new Blob([value]))\n createDownload(url, `${title}.ics`)\n return handle.success()\n}\n\nexport const addPhoneCalendar: typeof Taro.addPhoneCalendar = (options) => {\n const methodName = 'addPhoneCalendar'\n // options must be an Object\n const isObject = shouldBeObject(options)\n if (!isObject.flag) {\n const res = { errMsg: `${methodName}:fail ${isObject.msg}` }\n console.error(res.errMsg)\n return Promise.reject(res)\n }\n\n const {\n title,\n startTime = new Date().getTime(),\n allDay = false,\n description = '',\n location = '',\n endTime,\n alarm = true,\n alarmOffset = 0,\n success,\n fail,\n complete,\n } = options\n const handle = new MethodHandler({ name: methodName, success, fail, complete })\n if (typeof title !== 'string') {\n return handle.fail({\n errMsg: getParameterError({\n para: 'title',\n correct: 'String',\n wrong: title\n })\n })\n }\n\n const start = new Date(startTime)\n const end = new Date(endTime || startTime)\n if (!endTime && allDay) {\n end.setDate(end.getDate() + 1)\n }\n const { error, value } = ics.createEvent({\n title,\n start: parseTime2Array(start, allDay),\n description,\n location,\n end: parseTime2Array(end, allDay),\n alarms: alarm ? [{\n action: 'display',\n description,\n trigger: {\n before: true,\n seconds: alarmOffset,\n },\n }] : [],\n })\n if (error || !value) {\n return handle.fail({\n errMsg: error?.message\n })\n }\n const url = URL.createObjectURL(new Blob([value]))\n createDownload(url, `${title}.ics`)\n return handle.success()\n}\n\nfunction parseTime2Array (time: Date, allDay = false): DateArray {\n const t = new Date(time)\n const timeArr: DateArray = [\n t.getFullYear(),\n t.getMonth() + 1,\n t.getDate(),\n ]\n if (!allDay) {\n timeArr.push(t.getHours(), t.getMinutes())\n }\n return timeArr\n}\n"],"names":[],"mappings":";;;;;AAQA;AACa,MAAA,sBAAsB,GAAuC,CAAC,OAAO,KAAI;IACpF,MAAM,UAAU,GAAG,wBAAwB,CAAA;;AAE3C,IAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;AACxC,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,QAAA,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,CAAA,EAAG,UAAU,CAAA,MAAA,EAAS,QAAQ,CAAC,GAAG,CAAA,CAAE,EAAE,CAAA;AAC5D,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACzB,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"calendar.js","sources":["../../../src/api/device/calendar.ts"],"sourcesContent":["import Taro from '@tarojs/api'\nimport * as ics from 'ics'\n\nimport { createDownload, getParameterError, shouldBeObject } from '../../utils'\nimport { MethodHandler } from '../../utils/handler'\n\nimport type { DateArray } from 'ics'\n\n// 日历\nexport const addPhoneRepeatCalendar: typeof Taro.addPhoneRepeatCalendar = (options) => {\n const methodName = 'addPhoneRepeatCalendar'\n // options must be an Object\n const isObject = shouldBeObject(options)\n if (!isObject.flag) {\n const res = { errMsg: `${methodName}:fail ${isObject.msg}` }\n console.error(res.errMsg)\n return Promise.reject(res)\n }\n\n const {\n title,\n startTime = new Date().getTime(),\n allDay = false,\n description = '',\n location = '',\n endTime,\n alarm = true,\n alarmOffset = 0,\n repeatInterval = 'month',\n repeatEndTime,\n success,\n fail,\n complete,\n } = options\n const handle = new MethodHandler({ name: methodName, success, fail, complete })\n if (typeof title !== 'string') {\n return handle.fail({\n errMsg: getParameterError({\n para: 'title',\n correct: 'String',\n wrong: title\n })\n })\n }\n\n const start = new Date(startTime)\n const end = new Date(endTime || startTime)\n if (!endTime && allDay) {\n end.setDate(end.getDate() + 1)\n }\n\n const interval = 1000 * 60 * 60 * 24\n let days = 1\n let repeat = 1\n if (repeatEndTime) {\n const repeatEnd = new Date(repeatEndTime)\n if (repeatEnd < start) {\n return handle.fail({\n errMsg: 'repeatEndTime must be greater than startTime'\n })\n }\n switch (repeatInterval) {\n case 'week':\n days = 7\n break\n case 'month':\n days = 30\n break\n case 'year':\n days = 365\n break\n default:\n }\n repeat = Math.ceil((repeatEnd.getTime() - start.getTime()) / (interval * days))\n }\n const { error, value } = ics.createEvent({\n title,\n start: parseTime2Array(start, allDay),\n description,\n location,\n end: parseTime2Array(end, allDay),\n alarms: alarm ? [{\n action: 'display',\n description,\n trigger: {\n before: true,\n seconds: alarmOffset,\n },\n duration: {\n days,\n },\n repeat,\n }] : [],\n })\n if (error || !value) {\n return handle.fail({\n errMsg: error?.message\n })\n }\n const url = URL.createObjectURL(new Blob([value]))\n createDownload(url, `${title}.ics`)\n return handle.success()\n}\n\nexport const addPhoneCalendar: typeof Taro.addPhoneCalendar = (options) => {\n const methodName = 'addPhoneCalendar'\n // options must be an Object\n const isObject = shouldBeObject(options)\n if (!isObject.flag) {\n const res = { errMsg: `${methodName}:fail ${isObject.msg}` }\n console.error(res.errMsg)\n return Promise.reject(res)\n }\n\n const {\n title,\n startTime = new Date().getTime(),\n allDay = false,\n description = '',\n location = '',\n endTime,\n alarm = true,\n alarmOffset = 0,\n success,\n fail,\n complete,\n } = options\n const handle = new MethodHandler({ name: methodName, success, fail, complete })\n if (typeof title !== 'string') {\n return handle.fail({\n errMsg: getParameterError({\n para: 'title',\n correct: 'String',\n wrong: title\n })\n })\n }\n\n const start = new Date(startTime)\n const end = new Date(endTime || startTime)\n if (!endTime && allDay) {\n end.setDate(end.getDate() + 1)\n }\n const { error, value } = ics.createEvent({\n title,\n start: parseTime2Array(start, allDay),\n description,\n location,\n end: parseTime2Array(end, allDay),\n alarms: alarm ? [{\n action: 'display',\n description,\n trigger: {\n before: true,\n seconds: alarmOffset,\n },\n }] : [],\n })\n if (error || !value) {\n return handle.fail({\n errMsg: error?.message\n })\n }\n const url = URL.createObjectURL(new Blob([value]))\n createDownload(url, `${title}.ics`)\n return handle.success()\n}\n\nfunction parseTime2Array (time: Date, allDay = false): DateArray {\n const t = new Date(time)\n const timeArr: DateArray = [\n t.getFullYear(),\n t.getMonth() + 1,\n t.getDate(),\n ]\n if (!allDay) {\n timeArr.push(t.getHours(), t.getMinutes())\n }\n return timeArr\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ document.addEventListener('copy', () => {
|
|
|
23
23
|
/**
|
|
24
24
|
* 设置系统剪贴板的内容
|
|
25
25
|
*/
|
|
26
|
-
const setClipboardData = (
|
|
26
|
+
const setClipboardData = ({ data, success, fail, complete }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
27
|
const handle = new MethodHandler({ name: 'setClipboardData', success, fail, complete });
|
|
28
28
|
try {
|
|
29
29
|
setStorageSync(CLIPBOARD_STORAGE_NAME, data);
|
|
@@ -62,7 +62,7 @@ const setClipboardData = (_a) => __awaiter(void 0, [_a], void 0, function* ({ da
|
|
|
62
62
|
/**
|
|
63
63
|
* 获取系统剪贴板的内容
|
|
64
64
|
*/
|
|
65
|
-
const getClipboardData = (
|
|
65
|
+
const getClipboardData = ({ success, fail, complete } = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
66
|
const handle = new MethodHandler({ name: 'getClipboardData', success, fail, complete });
|
|
67
67
|
try {
|
|
68
68
|
const data = getStorageSync(CLIPBOARD_STORAGE_NAME);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sources":["../../../src/api/device/clipboard.ts"],"sourcesContent":["/**\r\n * 剪贴板部分的api参考了Chameleon项目的实现:\r\n *\r\n * setClipboardData: https://github.com/chameleon-team/chameleon-api/tree/master/src/interfaces/setClipBoardData\r\n * getClipboardData: https://github.com/chameleon-team/chameleon-api/tree/master/src/interfaces/getClipBoardData\r\n */\r\n\r\nimport Taro from '@tarojs/api'\r\nimport { isFunction } from '@tarojs/shared'\r\n\r\nimport { MethodHandler } from '../../utils/handler'\r\nimport { getStorageSync, setStorage, setStorageSync } from '../storage/index'\r\nimport { showToast } from '../ui/interaction'\r\n\r\nconst CLIPBOARD_STORAGE_NAME = 'taro_clipboard'\r\n\r\ndocument.addEventListener('copy', () => {\r\n setStorage({\r\n key: CLIPBOARD_STORAGE_NAME,\r\n data: window.getSelection()?.toString()\r\n }).catch(e => {\r\n console.error(e)\r\n })\r\n})\r\n\r\n/**\r\n * 设置系统剪贴板的内容\r\n */\r\nexport const setClipboardData: typeof Taro.setClipboardData = async ({ data, success, fail, complete }) => {\r\n const handle = new MethodHandler({ name: 'setClipboardData', success, fail, complete })\r\n try {\r\n setStorageSync(CLIPBOARD_STORAGE_NAME, data)\r\n /**\r\n * 已于 iPhone 6s Plus iOS 13.1.3 上的 Safari 测试通过\r\n * iOS < 10 的系统可能无法使用编程方式访问剪贴板,参考:\r\n * https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios/34046084\r\n */\r\n if (isFunction(document.execCommand)) {\r\n const textarea = document.createElement('textarea')\r\n textarea.readOnly = true\r\n textarea.value = data\r\n textarea.style.position = 'absolute'\r\n textarea.style.width = '100px'\r\n textarea.style.left = '-10000px'\r\n document.body.appendChild(textarea)\r\n textarea.select()\r\n textarea.setSelectionRange(0, textarea.value.length)\r\n document.execCommand('copy')\r\n document.body.removeChild(textarea)\r\n } else {\r\n throw new Error('Unsupported Function: \\'document.execCommand\\'.')\r\n }\r\n showToast({\r\n title: '内容已复制',\r\n icon: 'none',\r\n duration: 1500\r\n })\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 获取系统剪贴板的内容\r\n */\r\nexport const getClipboardData: typeof Taro.getClipboardData = async ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler<Taro.getClipboardData.SuccessCallbackOption>({ name: 'getClipboardData', success, fail, complete })\r\n try {\r\n const data: string = getStorageSync(CLIPBOARD_STORAGE_NAME)\r\n return handle.success({ data })\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AASH,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AAE/C,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;;AACrC,IAAA,UAAU,CAAC;AACT,QAAA,GAAG,EAAE,sBAAsB;QAC3B,IAAI,EAAE,MAAA,MAAM,CAAC,YAAY,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE;AACxC,KAAA,CAAC,CAAC,KAAK,CAAC,CAAC,IAAG;AACX,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClB,KAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF;;AAEG;AACI,MAAM,gBAAgB,GAAiC,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sources":["../../../src/api/device/clipboard.ts"],"sourcesContent":["/**\r\n * 剪贴板部分的api参考了Chameleon项目的实现:\r\n *\r\n * setClipboardData: https://github.com/chameleon-team/chameleon-api/tree/master/src/interfaces/setClipBoardData\r\n * getClipboardData: https://github.com/chameleon-team/chameleon-api/tree/master/src/interfaces/getClipBoardData\r\n */\r\n\r\nimport Taro from '@tarojs/api'\r\nimport { isFunction } from '@tarojs/shared'\r\n\r\nimport { MethodHandler } from '../../utils/handler'\r\nimport { getStorageSync, setStorage, setStorageSync } from '../storage/index'\r\nimport { showToast } from '../ui/interaction'\r\n\r\nconst CLIPBOARD_STORAGE_NAME = 'taro_clipboard'\r\n\r\ndocument.addEventListener('copy', () => {\r\n setStorage({\r\n key: CLIPBOARD_STORAGE_NAME,\r\n data: window.getSelection()?.toString()\r\n }).catch(e => {\r\n console.error(e)\r\n })\r\n})\r\n\r\n/**\r\n * 设置系统剪贴板的内容\r\n */\r\nexport const setClipboardData: typeof Taro.setClipboardData = async ({ data, success, fail, complete }) => {\r\n const handle = new MethodHandler({ name: 'setClipboardData', success, fail, complete })\r\n try {\r\n setStorageSync(CLIPBOARD_STORAGE_NAME, data)\r\n /**\r\n * 已于 iPhone 6s Plus iOS 13.1.3 上的 Safari 测试通过\r\n * iOS < 10 的系统可能无法使用编程方式访问剪贴板,参考:\r\n * https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios/34046084\r\n */\r\n if (isFunction(document.execCommand)) {\r\n const textarea = document.createElement('textarea')\r\n textarea.readOnly = true\r\n textarea.value = data\r\n textarea.style.position = 'absolute'\r\n textarea.style.width = '100px'\r\n textarea.style.left = '-10000px'\r\n document.body.appendChild(textarea)\r\n textarea.select()\r\n textarea.setSelectionRange(0, textarea.value.length)\r\n document.execCommand('copy')\r\n document.body.removeChild(textarea)\r\n } else {\r\n throw new Error('Unsupported Function: \\'document.execCommand\\'.')\r\n }\r\n showToast({\r\n title: '内容已复制',\r\n icon: 'none',\r\n duration: 1500\r\n })\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 获取系统剪贴板的内容\r\n */\r\nexport const getClipboardData: typeof Taro.getClipboardData = async ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler<Taro.getClipboardData.SuccessCallbackOption>({ name: 'getClipboardData', success, fail, complete })\r\n try {\r\n const data: string = getStorageSync(CLIPBOARD_STORAGE_NAME)\r\n return handle.success({ data })\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compass.js","sources":["../../../src/api/device/compass.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\nimport { getDeviceInfo } from '../base/system'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet compassListener\r\n\r\n/**\r\n * Note: 按系统类型获取对应绝对 orientation 事件名,因为安卓系统中直接监听 deviceorientation 事件得到的不是绝对 orientation\r\n */\r\nconst deviceorientationEventName = ['absolutedeviceorientation', 'deviceorientationabsolute', 'deviceorientation'].find(item => {\r\n if ('on' + item in window) {\r\n return item\r\n }\r\n}) || ''\r\n\r\n/**\r\n * 停止监听罗盘数据\r\n */\r\nexport const stopCompass: typeof Taro.stopCompass = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'stopCompass', success, fail, complete })\r\n try {\r\n window.removeEventListener(deviceorientationEventName, compassListener, true)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\nlet CompassChangeTrigger = false\r\n/**\r\n * 开始监听罗盘数据\r\n */\r\nexport const startCompass: typeof Taro.startCompass = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startCompass', success, fail, complete })\r\n try {\r\n if (deviceorientationEventName !== '') {\r\n if (compassListener) {\r\n stopCompass()\r\n }\r\n compassListener = throttle((evt: DeviceOrientationEvent) => {\r\n const isAndroid = getDeviceInfo().system === 'AndroidOS'\r\n if (isAndroid && !evt.absolute && !CompassChangeTrigger) {\r\n CompassChangeTrigger = true\r\n console.warn('Warning: In \\'onCompassChange\\', your browser is not supported to get the orientation relative to the earth, the orientation data will be related to the initial orientation of the device .')\r\n }\r\n const alpha = evt.alpha || 0\r\n /**\r\n * 由于平台差异,accuracy 在 iOS/Android 的值不同。\r\n * - iOS:accuracy 是一个 number 类型的值,表示相对于磁北极的偏差。0 表示设备指向磁北,90 表示指向东,180 表示指向南,依此类推。\r\n * - Android:accuracy 是一个 string 类型的枚举值。\r\n */\r\n const accuracy = isAndroid ? evt.absolute ? 'high' : 'medium' : alpha\r\n callbackManager.trigger({\r\n direction: 360 - alpha,\r\n accuracy: accuracy\r\n } as unknown as Parameters<typeof Taro.onCompassChange>[number])\r\n }, 5000)\r\n window.addEventListener(deviceorientationEventName, compassListener, true)\r\n } else {\r\n throw new Error('compass is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听罗盘数据变化事件。频率:5 次/秒,接口调用后会自动开始监听,可使用 wx.stopCompass 停止监听。\r\n */\r\nexport const onCompassChange: typeof Taro.onCompassChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听罗盘数据变化事件,参数为空,则取消所有的事件监听。\r\n */\r\nexport const offCompassChange: typeof Taro.offCompassChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":";;;;AAMA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAC7C,IAAI,eAAe,CAAA;AAEnB;;AAEG;AACH,MAAM,0BAA0B,GAAG,CAAC,2BAA2B,EAAE,2BAA2B,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,IAAG;AAC7H,IAAA,IAAI,IAAI,GAAG,IAAI,IAAI,MAAM,EAAE;AACzB,QAAA,OAAO,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"compass.js","sources":["../../../src/api/device/compass.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\nimport { getDeviceInfo } from '../base/system'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet compassListener\r\n\r\n/**\r\n * Note: 按系统类型获取对应绝对 orientation 事件名,因为安卓系统中直接监听 deviceorientation 事件得到的不是绝对 orientation\r\n */\r\nconst deviceorientationEventName = ['absolutedeviceorientation', 'deviceorientationabsolute', 'deviceorientation'].find(item => {\r\n if ('on' + item in window) {\r\n return item\r\n }\r\n}) || ''\r\n\r\n/**\r\n * 停止监听罗盘数据\r\n */\r\nexport const stopCompass: typeof Taro.stopCompass = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'stopCompass', success, fail, complete })\r\n try {\r\n window.removeEventListener(deviceorientationEventName, compassListener, true)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\nlet CompassChangeTrigger = false\r\n/**\r\n * 开始监听罗盘数据\r\n */\r\nexport const startCompass: typeof Taro.startCompass = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startCompass', success, fail, complete })\r\n try {\r\n if (deviceorientationEventName !== '') {\r\n if (compassListener) {\r\n stopCompass()\r\n }\r\n compassListener = throttle((evt: DeviceOrientationEvent) => {\r\n const isAndroid = getDeviceInfo().system === 'AndroidOS'\r\n if (isAndroid && !evt.absolute && !CompassChangeTrigger) {\r\n CompassChangeTrigger = true\r\n console.warn('Warning: In \\'onCompassChange\\', your browser is not supported to get the orientation relative to the earth, the orientation data will be related to the initial orientation of the device .')\r\n }\r\n const alpha = evt.alpha || 0\r\n /**\r\n * 由于平台差异,accuracy 在 iOS/Android 的值不同。\r\n * - iOS:accuracy 是一个 number 类型的值,表示相对于磁北极的偏差。0 表示设备指向磁北,90 表示指向东,180 表示指向南,依此类推。\r\n * - Android:accuracy 是一个 string 类型的枚举值。\r\n */\r\n const accuracy = isAndroid ? evt.absolute ? 'high' : 'medium' : alpha\r\n callbackManager.trigger({\r\n direction: 360 - alpha,\r\n accuracy: accuracy\r\n } as unknown as Parameters<typeof Taro.onCompassChange>[number])\r\n }, 5000)\r\n window.addEventListener(deviceorientationEventName, compassListener, true)\r\n } else {\r\n throw new Error('compass is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听罗盘数据变化事件。频率:5 次/秒,接口调用后会自动开始监听,可使用 wx.stopCompass 停止监听。\r\n */\r\nexport const onCompassChange: typeof Taro.onCompassChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听罗盘数据变化事件,参数为空,则取消所有的事件监听。\r\n */\r\nexport const offCompassChange: typeof Taro.offCompassChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"motion.js","sources":["../../../src/api/device/motion.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet deviceMotionListener\r\n\r\nconst INTERVAL_MAP = {\r\n game: {\r\n interval: 20,\r\n frequency: 50\r\n },\r\n ui: {\r\n interval: 60,\r\n frequency: 16.67\r\n },\r\n normal: {\r\n interval: 200,\r\n frequency: 5\r\n }\r\n}\r\n\r\n/**\r\n * 停止监听设备方向的变化。\r\n */\r\nexport const stopDeviceMotionListening: typeof Taro.stopDeviceMotionListening = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'stopDeviceMotionListening', success, fail, complete })\r\n try {\r\n window.removeEventListener('deviceorientation', deviceMotionListener, true)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 开始监听设备方向的变化。\r\n */\r\nexport const startDeviceMotionListening: typeof Taro.startDeviceMotionListening = ({ interval = 'normal', success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startDeviceMotionListening', success, fail, complete })\r\n try {\r\n const intervalObj = INTERVAL_MAP[interval]\r\n if (window.DeviceOrientationEvent) {\r\n if (deviceMotionListener) {\r\n stopDeviceMotionListening()\r\n }\r\n deviceMotionListener = throttle((evt: DeviceOrientationEvent) => {\r\n callbackManager.trigger({\r\n alpha: evt.alpha,\r\n beta: evt.beta,\r\n gamma: evt.gamma\r\n })\r\n }, intervalObj.interval)\r\n window.addEventListener('deviceorientation', deviceMotionListener, true)\r\n } else {\r\n throw new Error('deviceMotion is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听设备方向变化事件。\r\n */\r\nexport const onDeviceMotionChange: typeof Taro.onDeviceMotionChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听设备方向变化事件,参数为空,则取消所有的事件监听。\r\n */\r\nexport const offDeviceMotionChange: typeof Taro.offDeviceMotionChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":";;;AAKA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAC7C,IAAI,oBAAoB,CAAA;AAExB,MAAM,YAAY,GAAG;AACnB,IAAA,IAAI,EAAE;AACJ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,SAAS,EAAE,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,CAAC;AACb,KAAA;CACF,CAAA;AAED;;AAEG;AACI,MAAM,yBAAyB,GAA0C,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAI;AACnH,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"motion.js","sources":["../../../src/api/device/motion.ts"],"sourcesContent":["import Taro from '@tarojs/api'\r\nimport throttle from 'lodash-es/throttle'\r\n\r\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\r\n\r\nconst callbackManager = new CallbackManager()\r\nlet deviceMotionListener\r\n\r\nconst INTERVAL_MAP = {\r\n game: {\r\n interval: 20,\r\n frequency: 50\r\n },\r\n ui: {\r\n interval: 60,\r\n frequency: 16.67\r\n },\r\n normal: {\r\n interval: 200,\r\n frequency: 5\r\n }\r\n}\r\n\r\n/**\r\n * 停止监听设备方向的变化。\r\n */\r\nexport const stopDeviceMotionListening: typeof Taro.stopDeviceMotionListening = ({ success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'stopDeviceMotionListening', success, fail, complete })\r\n try {\r\n window.removeEventListener('deviceorientation', deviceMotionListener, true)\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 开始监听设备方向的变化。\r\n */\r\nexport const startDeviceMotionListening: typeof Taro.startDeviceMotionListening = ({ interval = 'normal', success, fail, complete } = {}) => {\r\n const handle = new MethodHandler({ name: 'startDeviceMotionListening', success, fail, complete })\r\n try {\r\n const intervalObj = INTERVAL_MAP[interval]\r\n if (window.DeviceOrientationEvent) {\r\n if (deviceMotionListener) {\r\n stopDeviceMotionListening()\r\n }\r\n deviceMotionListener = throttle((evt: DeviceOrientationEvent) => {\r\n callbackManager.trigger({\r\n alpha: evt.alpha,\r\n beta: evt.beta,\r\n gamma: evt.gamma\r\n })\r\n }, intervalObj.interval)\r\n window.addEventListener('deviceorientation', deviceMotionListener, true)\r\n } else {\r\n throw new Error('deviceMotion is not supported')\r\n }\r\n return handle.success()\r\n } catch (e) {\r\n return handle.fail({ errMsg: e.message })\r\n }\r\n}\r\n\r\n/**\r\n * 监听设备方向变化事件。\r\n */\r\nexport const onDeviceMotionChange: typeof Taro.onDeviceMotionChange = callback => {\r\n callbackManager.add(callback)\r\n}\r\n\r\n/**\r\n * 取消监听设备方向变化事件,参数为空,则取消所有的事件监听。\r\n */\r\nexport const offDeviceMotionChange: typeof Taro.offDeviceMotionChange = callback => {\r\n callbackManager.remove(callback)\r\n}\r\n"],"names":[],"mappings":";;;AAKA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAC7C,IAAI,oBAAoB,CAAA;AAExB,MAAM,YAAY,GAAG;AACnB,IAAA,IAAI,EAAE;AACJ,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,SAAS,EAAE,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,CAAC;AACb,KAAA;CACF,CAAA;AAED;;AAEG;AACI,MAAM,yBAAyB,GAA0C,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAI;AACnH,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAChG,IAAI;QACF,MAAM,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAA;AAC3E,QAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;AACxB,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAC1C,KAAA;AACH,EAAC;AAED;;AAEG;AACU,MAAA,0BAA0B,GAA2C,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAI;AAC1I,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjG,IAAI;AACF,QAAA,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,MAAM,CAAC,sBAAsB,EAAE;AACjC,YAAA,IAAI,oBAAoB,EAAE;AACxB,gBAAA,yBAAyB,EAAE,CAAA;AAC5B,aAAA;AACD,YAAA,oBAAoB,GAAG,QAAQ,CAAC,CAAC,GAA2B,KAAI;gBAC9D,eAAe,CAAC,OAAO,CAAC;oBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,KAAK;AACjB,iBAAA,CAAC,CAAA;AACJ,aAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;YACxB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAA;AACzE,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;AACjD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,OAAO,EAAE,CAAA;AACxB,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AAC1C,KAAA;AACH,EAAC;AAED;;AAEG;AACU,MAAA,oBAAoB,GAAqC,QAAQ,IAAG;AAC/E,IAAA,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC/B,EAAC;AAED;;AAEG;AACU,MAAA,qBAAqB,GAAsC,QAAQ,IAAG;AACjF,IAAA,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAClC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sources":["../../../src/api/device/network.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { temporarilyNotSupport } from '../../utils'\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\n\nfunction getConnection () {\n // @ts-ignore\n return navigator.connection || navigator.mozConnection || navigator.webkitConnection || navigator.msConnection\n}\n\nexport const getNetworkType: typeof Taro.getNetworkType = (options = {}) => {\n const connection = getConnection()\n const { success, fail, complete } = options\n const handle = new MethodHandler<Taro.getNetworkType.SuccessCallbackResult>({ name: 'getNetworkType', success, fail, complete })\n\n let networkType: keyof Taro.getNetworkType.NetworkType = 'unknown'\n // 浏览器不支持获取网络状态\n if (!connection) {\n return handle.success({ networkType })\n }\n\n // Supports only the navigator.connection.type value which doesn't match the latest spec.\n // https://www.davidbcalhoun.com/2010/using-navigator-connection-android/\n if (!isNaN(Number(connection.type))) {\n switch (connection.type) {\n // @ts-ignore\n case connection.WIFI:\n networkType = 'wifi'\n break\n // @ts-ignore\n case connection.CELL_3G:\n networkType = '3g'\n break\n // @ts-ignore\n case connection.CELL_2G:\n networkType = '2g'\n break\n default:\n // ETHERNET, UNKNOWN\n networkType = 'unknown'\n }\n } else if (connection.type) {\n // @ts-ignore\n networkType = connection.type // Only supports the type value.\n // @ts-ignore\n } else if (connection.effectiveType) {\n // @ts-ignore\n networkType = connection.effectiveType\n }\n\n return handle.success({ networkType })\n}\n\nconst networkStatusManager = new CallbackManager()\nconst networkStatusListener = async () => {\n const { networkType } = await getNetworkType()\n const isConnected = networkType !== 'none'\n const obj = { isConnected, networkType }\n networkStatusManager.trigger(obj)\n}\n\n/**\n * 在最近的八次网络请求中, 出现下列三个现象之一则判定弱网。\n * - 出现三次以上连接超时\n * - 出现三次 rtt 超过 400\n * - 出现三次以上的丢包\n * > 弱网事件通知规则是: 弱网状态变化时立即通知, 状态不变时 30s 内最多通知一次。\n */\nexport const onNetworkWeakChange = /* @__PURE__ */ temporarilyNotSupport('onNetworkWeakChange')\n\nexport const onNetworkStatusChange: typeof Taro.onNetworkStatusChange = callback => {\n networkStatusManager.add(callback)\n const connection = getConnection()\n if (connection && networkStatusManager.count() === 1) {\n connection.addEventListener('change', networkStatusListener)\n }\n}\n\nexport const offNetworkWeakChange = /* @__PURE__ */ temporarilyNotSupport('offNetworkWeakChange')\n\nexport const offNetworkStatusChange: typeof Taro.offNetworkStatusChange = callback => {\n networkStatusManager.remove(callback)\n\n const connection = getConnection()\n if (connection && networkStatusManager.count() === 0) {\n connection.removeEventListener('change', networkStatusListener)\n }\n}\n\nexport const getLocalIPAddress = /* @__PURE__ */ temporarilyNotSupport('getLocalIPAddress')\n"],"names":[],"mappings":";;;;AAKA,SAAS,aAAa,GAAA;;AAEpB,IAAA,OAAO,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,gBAAgB,IAAI,SAAS,CAAC,YAAY,CAAA;AAChH,CAAC;MAEY,cAAc,GAA+B,CAAC,OAAO,GAAG,EAAE,KAAI;AACzE,IAAA,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;AAC3C,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAA4C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAEhI,IAAI,WAAW,GAA0C,SAAS,CAAA;;IAElE,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"network.js","sources":["../../../src/api/device/network.ts"],"sourcesContent":["import Taro from '@tarojs/api'\n\nimport { temporarilyNotSupport } from '../../utils'\nimport { CallbackManager, MethodHandler } from '../../utils/handler'\n\nfunction getConnection () {\n // @ts-ignore\n return navigator.connection || navigator.mozConnection || navigator.webkitConnection || navigator.msConnection\n}\n\nexport const getNetworkType: typeof Taro.getNetworkType = (options = {}) => {\n const connection = getConnection()\n const { success, fail, complete } = options\n const handle = new MethodHandler<Taro.getNetworkType.SuccessCallbackResult>({ name: 'getNetworkType', success, fail, complete })\n\n let networkType: keyof Taro.getNetworkType.NetworkType = 'unknown'\n // 浏览器不支持获取网络状态\n if (!connection) {\n return handle.success({ networkType })\n }\n\n // Supports only the navigator.connection.type value which doesn't match the latest spec.\n // https://www.davidbcalhoun.com/2010/using-navigator-connection-android/\n if (!isNaN(Number(connection.type))) {\n switch (connection.type) {\n // @ts-ignore\n case connection.WIFI:\n networkType = 'wifi'\n break\n // @ts-ignore\n case connection.CELL_3G:\n networkType = '3g'\n break\n // @ts-ignore\n case connection.CELL_2G:\n networkType = '2g'\n break\n default:\n // ETHERNET, UNKNOWN\n networkType = 'unknown'\n }\n } else if (connection.type) {\n // @ts-ignore\n networkType = connection.type // Only supports the type value.\n // @ts-ignore\n } else if (connection.effectiveType) {\n // @ts-ignore\n networkType = connection.effectiveType\n }\n\n return handle.success({ networkType })\n}\n\nconst networkStatusManager = new CallbackManager()\nconst networkStatusListener = async () => {\n const { networkType } = await getNetworkType()\n const isConnected = networkType !== 'none'\n const obj = { isConnected, networkType }\n networkStatusManager.trigger(obj)\n}\n\n/**\n * 在最近的八次网络请求中, 出现下列三个现象之一则判定弱网。\n * - 出现三次以上连接超时\n * - 出现三次 rtt 超过 400\n * - 出现三次以上的丢包\n * > 弱网事件通知规则是: 弱网状态变化时立即通知, 状态不变时 30s 内最多通知一次。\n */\nexport const onNetworkWeakChange = /* @__PURE__ */ temporarilyNotSupport('onNetworkWeakChange')\n\nexport const onNetworkStatusChange: typeof Taro.onNetworkStatusChange = callback => {\n networkStatusManager.add(callback)\n const connection = getConnection()\n if (connection && networkStatusManager.count() === 1) {\n connection.addEventListener('change', networkStatusListener)\n }\n}\n\nexport const offNetworkWeakChange = /* @__PURE__ */ temporarilyNotSupport('offNetworkWeakChange')\n\nexport const offNetworkStatusChange: typeof Taro.offNetworkStatusChange = callback => {\n networkStatusManager.remove(callback)\n\n const connection = getConnection()\n if (connection && networkStatusManager.count() === 0) {\n connection.removeEventListener('change', networkStatusListener)\n }\n}\n\nexport const getLocalIPAddress = /* @__PURE__ */ temporarilyNotSupport('getLocalIPAddress')\n"],"names":[],"mappings":"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"}
|