diff --git a/package.json b/package.json index 7c1f4316306ce1e7a94399046cc13b3de3ac8d8d..64447703f91456a2f51968e75cd0d6aa935bf4ac 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "node": ">=10.0.0" }, "devDependencies": { - "@dcloudio/types": "^2.0.0", + "@dcloudio/types": "^2.0.6", "@ls-lint/ls-lint": "^1.8.0", "@microsoft/api-extractor": "^7.3.9", "@rollup/plugin-alias": "^3.1.1", diff --git a/packages/uni-mp-alipay/src/api/protocols.ts b/packages/uni-mp-alipay/src/api/protocols.ts index 9cdc7cbf233a19ca71fbd13c8bdacba4674a37de..d1fc604ef24b2f292382aab363ea07c241cb05eb 100644 --- a/packages/uni-mp-alipay/src/api/protocols.ts +++ b/packages/uni-mp-alipay/src/api/protocols.ts @@ -2,7 +2,7 @@ import { isPlainObject, isArray } from '@vue/shared' import { addSafeAreaInsets } from '@dcloudio/uni-mp-core' -export { redirectTo } from '@dcloudio/uni-mp-core' +export { redirectTo, createCanvasContext } from '@dcloudio/uni-mp-core' function handleNetworkInfo( fromRes: my.IGetNetworkTypeSuccessResult, diff --git a/packages/uni-mp-baidu/src/api/protocols.ts b/packages/uni-mp-baidu/src/api/protocols.ts index 6fa7a963b87c65d7f17a4ef62c1fd307ca09c7e6..ccd49bfe4253d8508e0d384be0ce6ebd366a2645 100644 --- a/packages/uni-mp-baidu/src/api/protocols.ts +++ b/packages/uni-mp-baidu/src/api/protocols.ts @@ -2,7 +2,8 @@ export { redirectTo, previewImage, getSystemInfo, - getSystemInfoSync + getSystemInfoSync, + createCanvasContext } from '@dcloudio/uni-mp-core' function createTodoMethod(contextName: string, methodName: string) { diff --git a/packages/uni-mp-core/src/api/protocols.ts b/packages/uni-mp-core/src/api/protocols.ts index b6ef21bfb88e071e792b68fca16f584cdce56796..42f609f274683ca14d2201806b7bbbfc0c96817c 100644 --- a/packages/uni-mp-core/src/api/protocols.ts +++ b/packages/uni-mp-core/src/api/protocols.ts @@ -102,3 +102,19 @@ export const getSystemInfo = { export const getSystemInfoSync = getSystemInfo export const redirectTo = {} + +export const createCanvasContext: MPProtocol = { + returnValue(fromRes: any, toRes: UniApp.CanvasContext) { + const measureText = fromRes.measureText + toRes.measureText = function( + text: string, + callback: (measureText: UniApp.CanvasTextMetrics) => void + ) { + const textMetrics = measureText.call(this, text) + if (typeof callback === 'function') { + setTimeout(() => callback(textMetrics), 0) + } + return textMetrics + } + } +} diff --git a/packages/uni-mp-core/src/index.ts b/packages/uni-mp-core/src/index.ts index c9856e7699188f81b1f9efc7bab6fc7b536bf79c..26edec92551a962f0c0e38003ed0342898cfe493 100644 --- a/packages/uni-mp-core/src/index.ts +++ b/packages/uni-mp-core/src/index.ts @@ -38,7 +38,8 @@ export { previewImage, getSystemInfo, getSystemInfoSync, - addSafeAreaInsets + addSafeAreaInsets, + createCanvasContext } from './api/protocols' // types export { MiniProgramAppOptions, MiniProgramAppInstance } from './runtime/app' diff --git a/packages/uni-mp-qq/src/api/protocols.ts b/packages/uni-mp-qq/src/api/protocols.ts index 4dffbdf34cbda7abd1cf06094db96695523f36ed..f9af75a58b60294f2a377a9d696caf338ee353e4 100644 --- a/packages/uni-mp-qq/src/api/protocols.ts +++ b/packages/uni-mp-qq/src/api/protocols.ts @@ -2,5 +2,6 @@ export { redirectTo, previewImage, getSystemInfo, - getSystemInfoSync + getSystemInfoSync, + createCanvasContext } from '@dcloudio/uni-mp-core' diff --git a/packages/uni-mp-toutiao/src/api/protocols.ts b/packages/uni-mp-toutiao/src/api/protocols.ts index 6e9429cec59ec5d8ca001a3875d7286e3efb60e8..6d9d83ace0298e46f2b1b2f7da85eb0da94988d0 100644 --- a/packages/uni-mp-toutiao/src/api/protocols.ts +++ b/packages/uni-mp-toutiao/src/api/protocols.ts @@ -1,4 +1,8 @@ -export { redirectTo, previewImage } from '@dcloudio/uni-mp-core' +export { + redirectTo, + previewImage, + createCanvasContext +} from '@dcloudio/uni-mp-core' export const chooseImage = { args: { sizeType: false diff --git a/packages/uni-mp-weixin/src/api/protocols.ts b/packages/uni-mp-weixin/src/api/protocols.ts index 4dffbdf34cbda7abd1cf06094db96695523f36ed..f9af75a58b60294f2a377a9d696caf338ee353e4 100644 --- a/packages/uni-mp-weixin/src/api/protocols.ts +++ b/packages/uni-mp-weixin/src/api/protocols.ts @@ -2,5 +2,6 @@ export { redirectTo, previewImage, getSystemInfo, - getSystemInfoSync + getSystemInfoSync, + createCanvasContext } from '@dcloudio/uni-mp-core' diff --git a/packages/uni-quickapp-webview/src/api/protocols.ts b/packages/uni-quickapp-webview/src/api/protocols.ts index 4dffbdf34cbda7abd1cf06094db96695523f36ed..f9af75a58b60294f2a377a9d696caf338ee353e4 100644 --- a/packages/uni-quickapp-webview/src/api/protocols.ts +++ b/packages/uni-quickapp-webview/src/api/protocols.ts @@ -2,5 +2,6 @@ export { redirectTo, previewImage, getSystemInfo, - getSystemInfoSync + getSystemInfoSync, + createCanvasContext } from '@dcloudio/uni-mp-core' diff --git a/yarn.lock b/yarn.lock index ecf91fcc0a400a61de5906b199e91aa5df1d2e73..6de351096f80e39daffebe33e4559bb6889b5b47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -271,10 +271,10 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@dcloudio/types@^2.0.0": - version "2.0.5" - resolved "https://registry.npmjs.org/@dcloudio/types/-/types-2.0.5.tgz#4a1e719775b53363945548d45535d5386ffaeaf9" - integrity sha512-4lNLAEECY5DEqfsnWIKR2T3lgZKvZIHEpljHVcBr28evbae7GA6pbUnitkEoA7o+yW3E83Sin0hwWBnBfb7B1A== +"@dcloudio/types@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@dcloudio/types/-/types-2.0.6.tgz#33daf724a58b593deef1294c210dad6509f1133d" + integrity sha512-ZOGaQMV2Xv8AtP2zBEURNVE62964fXZx1yCcMHRYxKPQtUzeOW0ZZVRkO6dxWLs/GE1GXTVJlJl/A9loLHqQOA== "@eslint/eslintrc@^0.1.0": version "0.1.0"