@tarojs/taro-h5
Version:
Taro h5 framework
115 lines (112 loc) • 4.05 kB
JavaScript
import Taro from '@tarojs/api';
import { history, navigateBack, navigateTo, reLaunch, redirectTo, getCurrentPages, switchTab } from '@tarojs/router';
export { history } from '@tarojs/router';
import { isFunction, PLATFORM_TYPE } from '@tarojs/shared';
import './index.js';
import { permanentlyNotSupport } from '../utils/index.js';
import { getCurrentInstance, getApp } from './framework/index.js';
import { nextTick } from './ui/custom-component.js';
import { router } from './route/index.js';
import { worklet } from './ui/animation/worklet.js';
const { Behavior, getEnv, ENV_TYPE, Link, interceptors, interceptorify, Current, options, eventCenter, Events, preload } = Taro;
const taro = {
// @ts-ignore
Behavior,
getEnv,
ENV_TYPE,
Link,
interceptors,
interceptorify,
Current,
getCurrentInstance,
options,
nextTick,
eventCenter,
Events,
preload,
history,
navigateBack,
navigateTo,
reLaunch,
redirectTo,
getCurrentPages,
switchTab,
router,
worklet,
};
const requirePlugin = /* @__PURE__ */ permanentlyNotSupport('requirePlugin');
function getConfig() {
var _a;
if (this === null || this === void 0 ? void 0 : this.pxTransformConfig)
return this.pxTransformConfig;
return ((_a = taro).config || (_a.config = {}));
}
const defaultDesignWidth = 750;
const defaultDesignRatio = {
640: 2.34 / 2,
750: 1,
828: 1.81 / 2
};
const defaultBaseFontSize = 20;
const defaultUnitPrecision = 5;
const defaultTargetUnit = 'rem';
const initPxTransform = function ({ designWidth = defaultDesignWidth, deviceRatio = defaultDesignRatio, baseFontSize = defaultBaseFontSize, unitPrecision = defaultUnitPrecision, targetUnit = defaultTargetUnit }) {
const config = getConfig.call(this);
config.designWidth = designWidth;
config.deviceRatio = deviceRatio;
config.baseFontSize = baseFontSize;
config.targetUnit = targetUnit;
config.unitPrecision = unitPrecision;
};
const pxTransform = function (size = 0) {
const config = getConfig.call(this);
const baseFontSize = config.baseFontSize || defaultBaseFontSize;
const deviceRatio = config.deviceRatio || defaultDesignRatio;
const designWidth = ((input = 0) => isFunction(config.designWidth)
? config.designWidth(input)
: config.designWidth)(size);
if (!(designWidth in config.deviceRatio)) {
throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`);
}
const targetUnit = config.targetUnit || defaultTargetUnit;
const unitPrecision = config.unitPrecision || defaultUnitPrecision;
const formatSize = ~~size;
let rootValue = 1 / deviceRatio[designWidth];
switch (targetUnit) {
case 'vw':
rootValue = designWidth / 100;
break;
case 'px':
rootValue *= 2;
break;
default:
// rem
rootValue *= baseFontSize * 2;
}
let val = formatSize / rootValue;
if (unitPrecision >= 0 && unitPrecision <= 100) {
// Number(val): 0.50000 => 0.5
val = Number(val.toFixed(unitPrecision));
}
return val + targetUnit;
};
const canIUseWebp = function () {
const canvas = document.createElement('canvas');
return canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0;
};
const getAppInfo = function () {
const config = getConfig.call(this);
return {
platform: process.env.TARO_PLATFORM || PLATFORM_TYPE.WEB,
taroVersion: process.env.TARO_VERSION || 'unknown',
designWidth: config.designWidth,
};
};
taro.requirePlugin = requirePlugin;
taro.getApp = getApp;
taro.pxTransform = pxTransform;
taro.initPxTransform = initPxTransform;
taro.canIUseWebp = canIUseWebp;
taro.getAppInfo = getAppInfo;
export { Behavior, Current, ENV_TYPE, Events, Link, canIUseWebp, taro as default, eventCenter, getAppInfo, getEnv, initPxTransform, interceptorify, interceptors, options, preload, pxTransform, requirePlugin };
//# sourceMappingURL=taro.js.map