lunit-io / insight-viewer

medical image viewer component for React
https://insight-viewer.lunit.io
MIT License
34 stars 6 forks source link

VIEWER-125 / apply useRef to useViewport image, element parameter #381

Closed LTakhyunKim closed 1 year ago

LTakhyunKim commented 1 year ago

πŸ“ Description

이전 useViewport Renewal PR 을 톡해 μΆ”κ°€λœ hook 의 μ‚¬μš©μ„±μ„ κ°œμ„ ν–ˆμŠ΅λ‹ˆλ‹€.

useViewport image, element parameter λ₯Ό Ref 둜 κ΄€λ¦¬ν•˜μ—¬ 이 두 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” μͺ½μ—μ„œ image, element 에 λŒ€ν•œ λ””νŽœλ˜μ‹œλ₯Ό μ œκ±°ν•˜λŠ” λ°©ν–₯으둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. (이와 λ™μ‹œμ— ν•œ 번만 μ„ μ–Έν•˜λŠ” function 은 useViewport hook 외뢀에 μ„ μ–Έν–ˆμŠ΅λ‹ˆλ‹€.)

이전 κ΅¬μ‘°λŠ” image, element, fitScale option κ³Ό return function κ°„ μ»€ν”Œλ§μ΄ μ‘΄μž¬ν•˜λ©°, 이에 λŒ€ν•œ 싱크λ₯Ό μ‚¬μš©ν•˜λŠ” μͺ½μ—μ„œ μ‹ κ²½μ¨μ•Όν–ˆμŠ΅λ‹ˆλ‹€. (parameter 에 μžˆλŠ” fitScale 을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λŠ” 것도 ν•΄λ‹Ή μ΄μŠˆμ— 영ν–₯을 μ€λ‹ˆλ‹€.)

ν˜„μž¬ κ΅¬μ‘°λŠ” viewport 와 κ΄€λ ¨λœ λ‚΄μš©μ€ setState 의 prevState λ₯Ό ν™œμš©ν•˜μ—¬ 이전보닀 μ•ˆμ •κ° 있게 값을 μ„œλΉ™ν•˜μ—¬ parameter 와 관계없이 μ•ˆμ •λœ 값을 μ „λ‹¬ν•œλ‹€λŠ” 보μž₯이 λ©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ κ°œμ„ ν•˜λŠ” μ΄μœ λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. ν˜„μž¬ useViewport hook λ‚΄ ν•¨μˆ˜λŠ” return value 에 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

이 κ³Όμ •μ—μ„œ 이전 κ΅¬μ‘°λŠ” 라이브러리 μ‚¬μš©μž μž…μž₯에선 μ΅œμ‹ μ˜ 값이 반영된 setViewport function μ—¬λΆ€λ₯Ό 보μž₯ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. (fitScale, image, element 등에 λŒ€ν•œ λ””νŽœλ˜μ‹œκ°€ μ „λΆ€ κ±Έλ €μžˆμœΌλ―€λ‘œ.) 이 κ΅¬μ‘°λŠ” 라이브러리 μ‚¬μš©μž μž…μž₯μ—μ„œ κΉŒλ‹€λ‘œμš΄ 이슈둜 μž‘μš©ν•  수 μžˆμœΌλ―€λ‘œ 처음 ν•œ 번만 생성 -> 라이브러리 μ‚¬μš©μžλŠ” 처음 ν•œ 번만 μƒμ„±λœ function 을 μ‚¬μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. (μœ„ function 은 항상 μ΄μ „μ˜ 값을 μ°Έμ‘°ν•˜λ©°, image, element λŠ” ref λ₯Ό 톡해 μ΅œμ‹  값을 μ°Έμ‘°)

βœ”οΈ PR Type

What kind of change does this PR introduce?

🎯 Current behavior

return value 쀑 setViewport λŠ” image, element, fitScale 에 λŒ€ν•œ λ””νŽœλ˜μŠ€λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€.

Issue Number: https://lunit.atlassian.net/browse/VIEWER-125

πŸš€ New behavior

useViewport hook image, element parameter λ₯Ό useRef 둜 감싼 ν›„ ν•΄λ‹Ή 값을 μ‚¬μš©ν•©λ‹ˆλ‹€. 이와 ν•¨κ»˜ getDefaultViewport function 을 useViewport 외뢀에 μ„ μ–Έν•©λ‹ˆλ‹€. 4f6b2f6

getViewportWithFitScaleOption function 을 useViewport 외뢀에 μ„ μ–Έν•©λ‹ˆλ‹€. 47738b3

μ™ΈλΆ€λ‘œ μ„ μ–Έν•œ function 및 image, element Ref 값을 μ μš©ν•©λ‹ˆλ‹€. 456a324

Interaction image2 Docs μ—μ„œ ν΄λ‘œμ € 이슈둜 인해 μ‚­μ œν•œ useInteraction hook 을 λ³΅κ΅¬ν–ˆμŠ΅λ‹ˆλ‹€. 31a4ed0 (ν•΄λ‹Ή 이슈 처리둜 ν΄λ‘œμ € μ΄μŠˆλ„ ν•¨κ»˜ ν•΄κ²°λ©λ‹ˆλ‹€. https://lunit.atlassian.net/browse/VIEWER-123)

πŸ’£ Is this a breaking change?

github-actions[bot] commented 1 year ago

preview: https://insight-viewer--pr-381.f.lunit.io/

deminoth commented 1 year ago

@LTakhyunKim 이미지 λ°”λ€Œμ—ˆμ„ λ•Œ viewport 리셋 λ˜λŠ” μœ μ§€μ™€ κ΄€λ ¨λœ λ™μž‘μ€ μ—¬κΈ°μ—μ„œ μ΄μ–΄μ„œ μž‘μ—…λ˜λ‚˜μš”?

LTakhyunKim commented 1 year ago

이미지 λ°”λ€Œμ—ˆμ„ λ•Œ viewport 리셋 λ˜λŠ” μœ μ§€μ™€ κ΄€λ ¨λœ λ™μž‘μ€ μ—¬κΈ°μ—μ„œ μ΄μ–΄μ„œ μž‘μ—…λ˜λ‚˜μš”?

λ³„λ„μ˜ PR μ—μ„œ μž‘μ—…ν•  μ˜ˆμ •μž…λ‹ˆλ‹€. κ°œμ„ λœ useViewport hook λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λΈŒλžœμΉ˜μ—μ„œ ν•¨κ»˜ 적용 ν›„ PR 올리고자 ν•©λ‹ˆλ‹€.