You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
894 B
31 lines
894 B
|
|
// @ts-nocheck
|
|
import type { ComponentInternalInstance } from './vue'
|
|
import { getRect } from '@/uni_modules/lime-shared/getRect'
|
|
import { canIUseCanvas2d } from '@/uni_modules/lime-shared/canIUseCanvas2d'
|
|
export let isCanvas2d = canIUseCanvas2d()
|
|
|
|
export async function getCanvas(canvasId: string, options: {context: ComponentInternalInstance}) {
|
|
let { context } = options
|
|
// #ifdef MP || VUE2
|
|
if (context.proxy) context = context.proxy
|
|
// #endif
|
|
return getRect('#' + canvasId, {context, type: isCanvas2d ? 'fields': 'boundingClientRect'}).then(({node}) => {
|
|
if(node){
|
|
return node
|
|
} else {
|
|
isCanvas2d = false
|
|
const ctx = uni.createCanvasContext(canvasId, context)
|
|
return {
|
|
getContext(type: string) {
|
|
if(type == '2d') {
|
|
return ctx
|
|
}
|
|
},
|
|
}
|
|
// #ifdef H5
|
|
// canvas.value = context.proxy.$el.querySelector('#'+ canvasId)
|
|
// #endif
|
|
}
|
|
})
|
|
}
|
|
|