utils.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { PLATFORM } from "./global";
  2. /** 是否是base64本地地址 */
  3. export const isBaseUrl = (str) => {
  4. return /^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i.test(str);
  5. };
  6. /** 是否是小程序本地地址 */
  7. export const isTmpUrl = (str) => {
  8. return /http:\/\/temp\/wx/.test(str);
  9. };
  10. /** 是否是网络地址 */
  11. export const isNetworkUrl = (str) => {
  12. return /^(((ht|f)tps?):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?$/.test(str);
  13. };
  14. /** 对象target挂载到对象current */
  15. export const extendMount = (current, target, handle = (extend, target) => undefined) => {
  16. for (const key in target) {
  17. current[key] = handle(target[key].handle, target[key]) || target[key].handle;
  18. }
  19. };
  20. /** 处理构建配置 */
  21. export const handleBuildOpts = (options) => {
  22. let defaultOpts = {
  23. selector: '',
  24. componentThis: undefined,
  25. type2d: true,
  26. loading: false,
  27. debugging: false,
  28. loadingText: '绘制海报中...',
  29. createText: '生成图片中...',
  30. gcanvas: false
  31. };
  32. if (typeof options === "string") {
  33. defaultOpts.selector = options;
  34. }
  35. else {
  36. defaultOpts = Object.assign(Object.assign({}, defaultOpts), options);
  37. }
  38. const oldSelector = defaultOpts.selector;
  39. if (PLATFORM === 'mp-weixin' && defaultOpts.type2d) {
  40. defaultOpts.selector = '#' + defaultOpts.selector;
  41. }
  42. if (!PLATFORM) {
  43. console.error('注意! draw-poster未开启uni条件编译! 当环境是微信小程序将不会动态切换为type2d模式');
  44. console.error(`请在vue.config.js中的transpileDependencies中添加'uni-draw-poster'`);
  45. console.error(`或者可以在选择器字符串前缀中添加#来切换为type2d绘制`);
  46. defaultOpts.selector = oldSelector;
  47. }
  48. return defaultOpts;
  49. };