From 84450419c118e7854ffb8c18cb43013a323165ba Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Tue, 8 Nov 2022 22:39:00 +0100 Subject: [PATCH] scroll by mouse position --- .../map-item.component.tsx | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/renderer/components/maps-mangement-components/map-item.component.tsx b/src/renderer/components/maps-mangement-components/map-item.component.tsx index 3c10ee7d..1f293db6 100644 --- a/src/renderer/components/maps-mangement-components/map-item.component.tsx +++ b/src/renderer/components/maps-mangement-components/map-item.component.tsx @@ -6,6 +6,7 @@ import { LinkOpenerService } from "renderer/services/link-opener.service"; import { BsmLink } from "../shared/bsm-link.component"; import { BsmIcon } from "../svgs/bsm-icon.component"; import { BsmButton } from "../shared/bsm-button.component"; +import { MouseEventHandler } from "react"; export type MapItemProps = { hash: string, @@ -46,20 +47,38 @@ export function MapItem({hash, title, autor, coverUrl, songUrl, autorLink, mapId const colorPill = diffColors[diff] ?? ""; return ( -
  • +
  • {diff === "ExpertPlus" ? "Expert+" : diff}
  • ) } + const scrollDiffs = (e: React.MouseEvent) => { + + const el = e.currentTarget; + const rect = e.currentTarget.getBoundingClientRect(); + + console.log(el.scrollHeight - (el.scrollWidth - el.clientWidth)) + + let yProgress = (((e.clientX - rect.left) - ((el.clientWidth / el.scrollWidth) * 100)) / (rect.width)); + + yProgress = yProgress < 0 ? 0 : yProgress > 1 ? 1 : yProgress; + + e.currentTarget.scrollTo({left: e.currentTarget.scrollWidth * yProgress}) + } + + const resetScrollDiffs = (e: React.MouseEvent) => { + e.currentTarget.scrollTo({left: 0, behavior: "smooth"}); + } + return (
  • {title}

    {renderAutor()} -
      +
        {Array.from(diffs.entries()).map(([charac, diffs]) => diffs.map(diff => renderDiff(charac, diff)))}