bar.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { getButtons } from "./buttons";
  2. import { extConfig, isMobile, isLikesDisabled } from "./state";
  3. import { cLog, getColorFromTheme } from "./utils";
  4. function createRateBar(likes, dislikes) {
  5. if (!isLikesDisabled()) {
  6. let rateBar = document.getElementById("ryd-bar-container");
  7. const widthPx =
  8. getButtons().children[0].clientWidth +
  9. getButtons().children[1].clientWidth +
  10. 8;
  11. const widthPercent =
  12. likes + dislikes > 0 ? (likes / (likes + dislikes)) * 100 : 50;
  13. if (!rateBar && !isMobile()) {
  14. let colorLikeStyle = "";
  15. let colorDislikeStyle = "";
  16. if (extConfig.coloredBar) {
  17. colorLikeStyle = "; background-color: " + getColorFromTheme(true);
  18. colorDislikeStyle = "; background-color: " + getColorFromTheme(false);
  19. }
  20. (
  21. document.getElementById("menu-container") ||
  22. document.querySelector("ytm-slim-video-action-bar-renderer")
  23. ).insertAdjacentHTML(
  24. "beforeend",
  25. `
  26. <div class="ryd-tooltip" style="width: ${widthPx}px">
  27. <div class="ryd-tooltip-bar-container">
  28. <div
  29. id="ryd-bar-container"
  30. style="width: 100%; height: 2px;${colorDislikeStyle}"
  31. >
  32. <div
  33. id="ryd-bar"
  34. style="width: ${widthPercent}%; height: 100%${colorLikeStyle}"
  35. ></div>
  36. </div>
  37. </div>
  38. <tp-yt-paper-tooltip position="top" id="ryd-dislike-tooltip" class="style-scope ytd-sentiment-bar-renderer" role="tooltip" tabindex="-1">
  39. <!--css-build:shady-->${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}
  40. </tp-yt-paper-tooltip>
  41. </div>
  42. `
  43. );
  44. } else {
  45. document.getElementById("ryd-bar-container").style.width = widthPx + "px";
  46. document.getElementById("ryd-bar").style.width = widthPercent + "%";
  47. document.querySelector(
  48. "#ryd-dislike-tooltip > #tooltip"
  49. ).innerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`;
  50. if (extConfig.coloredBar) {
  51. document.getElementById("ryd-bar-container").style.backgroundColor =
  52. getColorFromTheme(false);
  53. document.getElementById("ryd-bar").style.backgroundColor =
  54. getColorFromTheme(true);
  55. }
  56. }
  57. } else {
  58. cLog("removing bar");
  59. let ratebar = document.getElementById("ryd-bar-container");
  60. if(ratebar) {
  61. ratebar.parentNode.removeChild(ratebar);
  62. }
  63. }
  64. }
  65. export { createRateBar };