lilishop-uniapp/js_sdk/u-draw-poster/utils/utils.js

50 lines
1.9 KiB
JavaScript

import { PLATFORM } from "./global";
/** 是否是base64本地地址 */
export const isBaseUrl = (str) => {
return /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i.test(str);
};
/** 是否是小程序本地地址 */
export const isTmpUrl = (str) => {
return /http:\/\/temp\/wx/.test(str);
};
/** 是否是网络地址 */
export const isNetworkUrl = (str) => {
return /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/.test(str);
};
/** 对象target挂载到对象current */
export const extendMount = (current, target, handle = (extend, target) => undefined) => {
for (const key in target) {
current[key] = handle(target[key].handle, target[key]) || target[key].handle;
}
};
/** 处理构建配置 */
export const handleBuildOpts = (options) => {
let defaultOpts = {
selector: '',
componentThis: undefined,
type2d: true,
loading: false,
debugging: false,
loadingText: '绘制海报中...',
createText: '生成图片中...',
gcanvas: false
};
if (typeof options === "string") {
defaultOpts.selector = options;
}
else {
defaultOpts = Object.assign(Object.assign({}, defaultOpts), options);
}
const oldSelector = defaultOpts.selector;
if (PLATFORM === 'mp-weixin' && defaultOpts.type2d) {
defaultOpts.selector = '#' + defaultOpts.selector;
}
if (!PLATFORM) {
console.error('注意! draw-poster未开启uni条件编译! 当环境是微信小程序将不会动态切换为type2d模式');
console.error(`请在vue.config.js中的transpileDependencies中添加'uni-draw-poster'`);
console.error(`或者可以在选择器字符串前缀中添加#来切换为type2d绘制`);
defaultOpts.selector = oldSelector;
}
return defaultOpts;
};