utils.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. module.exports = {
  2. /**
  3. * Parse second to 00:00 format
  4. *
  5. * @param {Number} second
  6. * @return {String} 00:00 format
  7. */
  8. secondToTime: (second) => {
  9. const add0 = (num) => num < 10 ? '0' + num : '' + num;
  10. const min = parseInt(second / 60);
  11. const sec = parseInt(second - min * 60);
  12. return add0(min) + ':' + add0(sec);
  13. },
  14. /**
  15. * control play progress
  16. */
  17. // get element's view position
  18. getElementViewLeft: (element) => {
  19. let actualLeft = element.offsetLeft;
  20. let current = element.offsetParent;
  21. const elementScrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft;
  22. if (!document.fullscreenElement && !document.mozFullScreenElement && !document.webkitFullscreenElement) {
  23. while (current !== null) {
  24. actualLeft += current.offsetLeft;
  25. current = current.offsetParent;
  26. }
  27. }
  28. else {
  29. while (current !== null && current !== element) {
  30. actualLeft += current.offsetLeft;
  31. current = current.offsetParent;
  32. }
  33. }
  34. return actualLeft - elementScrollLeft;
  35. },
  36. getScrollPosition () {
  37. return {
  38. left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,
  39. top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0
  40. };
  41. },
  42. setScrollPosition ({left = 0, top = 0}) {
  43. if (this.isFirefox) {
  44. document.documentElement.scrollLeft = left;
  45. document.documentElement.scrollTop = top;
  46. }
  47. else {
  48. window.scrollTo(left, top);
  49. }
  50. },
  51. /**
  52. * check if user is using mobile or not
  53. */
  54. isMobile: /mobile/i.test(window.navigator.userAgent),
  55. isFirefox: /firefox/i.test(window.navigator.userAgent),
  56. isChrome: /chrome/i.test(window.navigator.userAgent),
  57. storage: {
  58. set: (key, value) => {
  59. localStorage.setItem(key, value);
  60. },
  61. get: (key) => localStorage.getItem(key)
  62. }
  63. };