From cd6afc8027994fc32cb9c1ae3946d21a43bb8370 Mon Sep 17 00:00:00 2001 From: qiang Date: Fri, 4 Sep 2020 10:48:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=8F=E7=A8=8B=E5=BA=8F=20CanvasCon?= =?UTF-8?q?text.measureText=20=E6=94=AF=E6=8C=81=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/uni-mp-alipay/src/api/protocols.ts | 2 +- packages/uni-mp-baidu/src/api/protocols.ts | 3 ++- packages/uni-mp-core/src/api/protocols.ts | 16 ++++++++++++++++ packages/uni-mp-core/src/index.ts | 3 ++- packages/uni-mp-qq/src/api/protocols.ts | 3 ++- packages/uni-mp-toutiao/src/api/protocols.ts | 6 +++++- packages/uni-mp-weixin/src/api/protocols.ts | 3 ++- .../uni-quickapp-webview/src/api/protocols.ts | 3 ++- yarn.lock | 8 ++++---- 10 files changed, 37 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 7c1f43163..64447703f 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 9cdc7cbf2..d1fc604ef 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 6fa7a963b..ccd49bfe4 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 b6ef21bfb..42f609f27 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 c9856e769..26edec925 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 4dffbdf34..f9af75a58 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 6e9429cec..6d9d83ace 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 4dffbdf34..f9af75a58 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 4dffbdf34..f9af75a58 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 ecf91fcc0..6de351096 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" -- GitLab