bar.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { getButtons } from "./buttons";
  2. import { likesDisabledState } from "./state";
  3. import { cLog } from "./utils";
  4. function createRateBar(likes, dislikes) {
  5. if (!likesDisabledState) {
  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) {
  14. (
  15. document.getElementById("menu-container") ||
  16. document.querySelector("ytm-slim-video-action-bar-renderer")
  17. ).insertAdjacentHTML(
  18. "beforeend",
  19. `
  20. <div class="ryd-tooltip" style="width: ${widthPx}px">
  21. <div class="ryd-tooltip-bar-container">
  22. <div
  23. id="ryd-bar-container"
  24. style="width: 100%; height: 2px;"
  25. >
  26. <div
  27. id="ryd-bar"
  28. style="width: ${widthPercent}%; height: 100%"
  29. ></div>
  30. </div>
  31. </div>
  32. <tp-yt-paper-tooltip position="top" id="ryd-dislike-tooltip" class="style-scope ytd-sentiment-bar-renderer" role="tooltip" tabindex="-1">
  33. <!--css-build:shady-->${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}
  34. </tp-yt-paper-tooltip>
  35. </div>
  36. `
  37. );
  38. } else {
  39. document.getElementById("ryd-bar-container").style.width = widthPx + "px";
  40. document.getElementById("ryd-bar").style.width = widthPercent + "%";
  41. document.querySelector(
  42. "#ryd-dislike-tooltip > #tooltip"
  43. ).innerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`;
  44. }
  45. } else {
  46. cLog("removing bar");
  47. let ratebar = document.getElementById("ryd-bar-container");
  48. ratebar.parentNode.removeChild(ratebar);
  49. }
  50. }
  51. export { createRateBar };