dom.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. export const toRawType = (value) => toTypeString(value).slice(8, -1);
  2. export const normalizeUnitToStyle = (unit) => {
  3. if (unit === void 0) {
  4. return unit;
  5. } else if (toRawType(unit) === 'Number') {
  6. return unit ? ((unit <= 1) & (unit >= 0) ? 100 * unit + '%' : unit + 'px') : void 0;
  7. } else if (unit.includes('px')) {
  8. return normalizeUnitToStyle(parseFloat(unit));
  9. } else if (unit.includes('%')) {
  10. return normalizeUnitToStyle(parseFloat(unit) / 100);
  11. } else {
  12. return unit;
  13. }
  14. };
  15. export const os = (function () {
  16. const ua = navigator.userAgent;
  17. const isWindowsPhone = /(?:Windows Phone)/.test(ua);
  18. const isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone;
  19. const isAndroid = /(?:Android)/.test(ua);
  20. const isFireFox = /(?:Firefox)/.test(ua);
  21. // const isChrome = /(?:Chrome|CriOS)/.test(ua);
  22. const isTablet =
  23. /(?:iPad|PlayBook)/.test(ua) ||
  24. (isAndroid && !/(?:Mobile)/.test(ua)) ||
  25. (isFireFox && /(?:Tablet)/.test(ua));
  26. const isPhone = /(?:iPhone)/.test(ua) && !isTablet;
  27. const isPc = !isPhone && !isAndroid && !isSymbian;
  28. if (isPc && navigator.maxTouchPoints > 1) {
  29. isTablet = true;
  30. }
  31. return {
  32. isTablet: isTablet,
  33. isPhone: isPhone,
  34. isAndroid: isAndroid,
  35. isPc: isPc,
  36. };
  37. })();