Releases: boostcamp-2020/Project14-A-Web-Audio-Editor
Releases ยท boostcamp-2020/Project14-A-Web-Audio-Editor
Week5
Week5
fix: [FE] style ์์ ๋ฐ AddEffectCommand,Compressor, Fade in/out ๋ฒ๊ทธ ํด๊ฒฐ style ์์ ๋ฐ AddEffectCommand,Compressor, Fade in/out ๋ฒ๊ทธ ํด๊ฒฐ
Week5
Week5
deploy: 5์ฃผ์ฐจ ์ต์ข ๋ฐฐํฌ 5์ฃผ์ฐจ ์ต์ข ๋ฐฐํฌ
Week4
fix: [FE] ์คํฌ๋กค ๊ด๋ จ ๋ฒ๊ทธ ๋ฐ ์ค ๊ด๋ จ marker ์์น ๋ฒ๊ทธ ํด๊ฒฐ (#163) * fix: [FE] EditTools delete๋ฒํผ ๋นํ์ฑํ ๋ฒ๊ทธ ํด๊ฒฐ - 0๊ฐ์ 2๊ฐ ์ด์์ผ ๊ฒฝ์ผ๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ถ๊ฐํ์ฌ ํด๊ฒฐ * fix: [FE] ํธ๋ ์ถ๊ฐ/์ ๊ฑฐ ๊ด๋ จ ์คํฌ๋กค ๋ฒ๊ทธ ํด๊ฒฐ - ํธ๋ ์ถ๊ฐ/์ ๊ฑฐ๋ฅผ ํ ๋ marker์ height๋ฅผ ์กฐ์ ํ์ฌ ํด๊ฒฐ * fix: [FE] ์ค ์ธ/์์ ๊ด๋ จ ๋ง์ปค ์์น ๋ฒ๊ทธ ํด๊ฒฐ * style: [FE] AudioTrack ์์ฐ๋ ์์ฑ ์ญ์ - maxTrackPlayTime ์ญ์
Week3
deploy: Week3 ๋ฐฐํฌ (#133) * Update README.md * feat: [FE] ์ค๋์ค ์ ์ง, ๊ตฌ๊ฐ ๊ฑด๋๋ฐ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ (#98) * feat : [FE] Audio Stop ๊ตฌํ - ์ ์ง ๋ฒํผ์ ๋๋ฅด๋ฉด ์ค๋์ค ์ฌ์์ด ์ ์ง๋จ - ๋ง์ปค์ ์์น๊ฐ 0์ผ๋ก ์ด๋ - ์ฌ์์๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ - controller์ setMarkerWidthToZero ๋ฉ์๋ ์ถ๊ฐ - store์ setMarkerWidthToZero ๋ฉ์๋ ์ถ๊ฐ - storetype์ผ๋ก current_position_zero_channel ์ถ๊ฐ - Marker๋ ํด๋น ์ฑ๋์ subscribeํด ๋ง์ปค ์์น๋ฅผ 0์ผ๋ก ์ด๊ธฐํํจ * chore : [FE] ๊ณต๋ฐฑ ์ญ์ - enter๊ฐ ๋ ๋ฒ ๋ค์ด๊ฐ ๋ถ๋ถ ์ญ์ * feat : [FE] ๊ฑด๋๋ด ์๊ฐ์ด ์์์ผ ๋ ์ฒ๋ฆฌ - markerTime์ด ์์๊ฐ ๋์ ๋ 0์ผ๋ก ๋ณ๊ฒฝ - playTime์ด ์์๊ฐ ๋์ด์์ ๋ ์ฌ๊ณ์ฐ * feat : [FE] ๋ง์ปค์ ์์น๊ฐ ์์์ผ ๋ ์ฒ๋ฆฌ - ๋ง์ปค๊ฐ ์์ง์ธ ์์น๊ฐ ์์๊ฐ ๋์ด์ ํ์ฌ ์์น์ ๊ณ์ฐ ์ ์์๊ฐ ๋์ ๋ 0์ผ๋ก ๊ฐ ์ ์ฉ * feat : [FE] ๊ตฌ๊ฐ ๊ฑด๋๋ฐ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - ๊ตฌ๊ฐ ๊ฑด๋๋ฐ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - quantum์ 3์ผ๋ก ์ค์ - ์์ผ๋ก ๊ฑด๋๋ฐ๊ธฐ, ๋ค๋ก ๊ฑด๋๋ฐ๊ธฐ ๊ฐ๋ฅ - markerTime ๋ณ๊ฒฝ์ audioContext.currentTime์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ setInterval์์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณํ๊ฒ ํ๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ - setInterval์ด ๊ฑด๋๋ฐ๊ธฐ์์๋ ํ์ํ์ฌ ๋ฐ๋ก ํจ์๋ก ๋ถ๋ฆฌํด ์ฌ์ฉ * chore : [FE] ์ฃผ์ ์ญ์ - ์ฃผ์์ ๋ช ๊ฐ ์ญ์ ํ์ต๋๋ค. - ์ดํด๊ฐ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ๋ค์ ์ฃผ์์ ์์ง ์ญ์ ํ์ง ์์์ต๋๋ค. * feat : [FE] ๋งจ ์์ผ๋ก ๊ฑด๋๋ฐ๊ธฐ - ๊ธฐ์กด์ stop, play ๊ธฐ๋ฅ์ ํธ์ถํ์ฌ ๋งจ ์์ผ๋ก ๊ฑด๋๋ธ ์ ์๋๋ก ๊ตฌํ - stop์ ํ์ ๋ delay๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ setTimeout ๋ด์์ play๋ฅผ ํธ์ถํ๋๋ก ํจ * feat : [FE] marker position ํด๋ฆญ์ผ๋ก ๋ณ๊ฒฝ ์ ์ฌ์ ์ํ ์์น ์ ์ - MarkerEventUtil์ clickMarkerListener์์ play ํจ์๋ฅผ ํธ์ถฉํ๋ฉด ๋จ. - ์์ง play ํจ์๋ฅผ ๋ค๋ฅธ ๊ณณ์์ ํธ์ถํ ์ ์์ด์ ์์น๋ฅผ ์ก์๋๊ธฐ๋ง ํจ. * fix : [FE] FastRewind ์์ ์์ ์ค๋ฅ ์์ - fastRewind๊ฐ 0์ดํ๋ก ๋์ ๋ waitTime ์๊ฐ์ด ์ ๋๋ก ๊ณ์ฐ์ด ์๋์ด delay๊ฐ ์๊น - markerTime - QUANTUM์ด ์์๊ฐ ๋์ ๋ waitTime์ 0์ผ๋ก ์ค์ . * refactor : [FE] ๋ณ์ ์ด๋ฆ ๋ณ๊ฒฝ๊ณผ ์ฃผ์ ์ญ์ - when, offset, duration ๋ณ์ ์ด๋ฆ์ waitTime, audioStartTime, playDuration์ผ๋ก ๋ณ๊ฒฝ - ์ฃผ์ ์ญ์ close #23, close #25 * feat: [FE] ๊ตฌ๊ฐ ํธ์ง๊ธฐ๋ฅ(์๋ผ๋ด๊ธฐ, ๋ถ์ฌ๋ฃ๊ธฐ, ๊ตฌ๊ฐ ์๋ฅด๊ธฐ) ๊ตฌํ (#101) * refactor: [FE] auto increment ์ด๊ธฐ๊ฐ 1๋ก ์์ - clipBoard์ ์ ์ฅ๋๋ TrackSection๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํ์ฌ auto increment์ ์ด๊ธฐ๊ฐ์ 1๋ก ์์ * refactor: [FE] DeleteCommand CopyUtil ์ ์ฉ - CopyUtil๋ก deleteList์ ์ ์ฅํ๋๋ก ์์ * refactor: [FE] CopyUtil ํ๋ผ๋ฏธํฐ ์์ - ํ๋ผ๋ฏธํฐ๋ก id ์ ๋ณด๋ฅผ ๋ฐ๋๋ก ์์ ํ์ต๋๋ค. - ๊ธฐ์กด์๋ clipBoard์ ์ ์ฅํ๋ ์ฉ๋๋ก ๋ง๋ค์์ง๋ง DelelteCommand์์๋ id ์ ๋ณด๊ฐ ํ์ํด์ ํ๋ผ๋ฏธํฐ๋ก ์ถ๊ฐํ์ต๋๋ค. * feat: [FE] controller cutCommand() ๊ตฌํ - ๊ธฐ์กด์ ๊ตฌํํ copy์ delete ๊ธฐ๋ฅ์ ํฉ์ณ์ cutCommand ํจ์๋ฅผ ๊ตฌํํ์ต๋๋ค. - ์๋ผ๋ด๊ธฐ๋ ์น์ ์ 1๊ฐ ์ ํํ์ ๋๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ setClipBoard()์ return๊ฐ์ boolean์ผ๋ก ์์ ํ์ฌ ์ ํจ์ฑ ์ฒดํฌ๋ฅผ ํ์ต๋๋ค. * feat: [FE] EditTools ์๋ผ๋ด๊ธฐ ์ด๋ฒคํธ ๋ฑ๋ก - ์ ํํ ๊ตฌ๊ฐ ์๋ผ๋ด๊ธฐ ๊ธฐ๋ฅ์ ์ํ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ์ต๋๋ค. * feat: [FE] ์๋ผ๋ด๊ธฐ ๋จ์ถํค ๊ตฌํ - 1๊ฐ์ ๊ตฌ๊ฐ์ ์ ํํ๊ณ ctrl + X ๋ฅผ ๋๋ฅด๋ฉด cutCommand()๊ฐ ์คํ๋๋๋ก ๊ตฌํํ์ต๋๋ค. * feat: [FE] icons์ iconInfo ์ถ๊ฐ - IconButton์ ๋ํ hover ๊ธฐ๋ฅ์ ์ํด ์์ด์ฝ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๋ iconInfo๋ฅผ ๊ตฌํํ์ต๋๋ค. - iconInfo๋ iconType์ ๋ํ ์์ธ์ ๋ณด๋ฅผ ์๋ ค์ค๋๋ค. * style: [FE] hover์ icon ์์ธ์ ๋ณด๊ฐ ๋์ค๋๋ก style ์ ์ฉ - visibility ์์ฑ์ ์ด์ฉํ์ฌ hover์์ ์์ด์ฝ์ ๋ํ ์ ๋ณด๊ฐ ๋์ค๋๋ก style ์ ์ฉํ์ต๋๋ค. - transition-delay๋ก 0.3์ด ํ์ ์ ๋ณด๊ฐ ๋์ค๋๋ก ํ์ต๋๋ค. * feat: [FE] ์์์์น, ์ข ๋ฃ์์น ์ด๋ ๋จ์ถํค ์ถ๊ฐ - ์์์์น๋ก ์ด๋์ '[', ์ข ๋ฃ์์น๋ก ์ด๋์ ']' ํค๋ก ๋์ํ๋๋ก keyType๊ณผ keyDown ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. * refactor: [FE] publish ๋น ์ธ์๊ฐ ๋ช ์์ ์ผ๋ก ํํ - ๋น ์ธ์๋ฅผ ๋๊ธฐ๋ ๊ฒฝ์ฐ null๋ก ํํ * refacot: [FE] Command ํด๋์ค index์์ exportํ๋๋ก ๋ณ๊ฒฝ - importํ๊ธฐ ์ฝ๊ฒ index.js์์ export ๊ด๋ฆฌ * feat: [FE] CopyUtil copyTrack ํจ์ ๊ตฌํ - Track์ deep copyํ๊ธฐ ์ํ ํจ์ ๊ตฌํ * refactor: [FE] store setTrack, setTrackSection ์์ - setTrack์ ํ๋ผ๋ฏธํฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ๋ณ๊ฒฝ - newTrack์ id๊ฐ์ด ์ด๋ฏธ TrackList์ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ๋ง ๋ณ๊ฒฝ - ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ TrackList์ ์๋ก ์ถ๊ฐ - setTrackSection - clipBoard์ ๋ณต์ฌ๋ trackSection์ 0์ ๊ฐ์ ๊ฐ์ง๋ฏ๋ก ์๋ก id๊ฐ์ ๋ณ๊ฒฝ - undo์์ ๊ทธ์ ์ ์ ์ฅ๋ ์ํ ๊ทธ๋๋ก ๋ณ๊ฒฝํด์ผ ๋๊ธฐ ๋๋ฌธ์ trackSection id๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉ * feat: [FE] controller pasteCommand ํจ์ ๊ตฌํ - ๋ถ์ฌ๋ฃ๊ธฐ๋ ํ์ฌ clipBoard์ ๋ณต์ฌ๋ ๊ตฌ๊ฐ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ํ์ฌ๋ 1๊ฐ์ ๊ตฌ๊ฐ์ ์ ํํ ๊ฒฝ์ฐ์๋ง ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์์ต๋๋ค. - ์ถํ ๋ง์ปค์์น ๊ด๋ จํด์ ๋ถ์ฌ๋ฃ๊ธฐ ๊ธฐ๋ฅ ๋ฆฌํฉํ ๋ง ํ์ - pasteCommand()์ ๋ํ ์ค๋ช - 1) focusList์ ๊ธธ์ด๊ฐ 1์ธ์ง ํ์ธํฉ๋๋ค. - 2) ๋ถ์ฌ๋ฃ๊ธฐ์ ๋์์ด ๋๋ track๊ณผ clipBoard๋ฅผ deep copyํฉ๋๋ค. - 3) copySection์ trackStartTime์ ํ์ฌ focusํ trackSection์ endTime์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. - 4) PasteCommand์ ์ธ์๋ก ๋๊ฒจ์ค๋๋ค. * feat: [FE] PasteCommand ํด๋์ค ๊ตฌํ - beforeTrack์ execute๊ฐ ์คํ๋๊ธฐ ์ ์ ์ฅํ๋ ์ํ๊ฐ์ ๋๋ค. - execute() - 1) track๊ณผ section์ ์ ๋ณด๋ฅผ deep copyํฉ๋๋ค. - 2) track์์ newSection์ด ์ข ๋ฃ๋๋ ์์ ์ธ endTime์ ๊ตฌํฉ๋๋ค. - 3) newSection์ ์ข ๋ฃ์๊ฐ ์ ์ ์์ํ๋ section์ด ์๋์ง findIndex๋ฅผ ํตํด index๋ฅผ ๊ตฌํฉ๋๋ค. - 4-1) firstDelayIndex๊ฐ -1์ด ์๋๋ผ๋ฉด (์กด์ฌ) - endTime์์ ํด๋น section์ ์์์๊ฐ์ ๋นผ์ ์ผ๋ง๋ delayTime์ ๊ตฌํฉ๋๋ค. - firstDelayIndex์ ๊ทธ ๋ค์ ์กด์ฌํ๋ section๋ค์ trackStartTime์ delayTime์ ๋ํด์ค๋๋ค. - 4-2) firstDelayIndex๊ฐ -1์ธ ๊ฒฝ์ฐ (์กด์ฌx) - ๋ฐ๋ก ํธ๋์ newSection์ ์ถ๊ฐํฉ๋๋ค. - undo() - ์ ์ฅ๋ beforeTrack์ deep copyํ์ฌ setTrack์ผ๋ก ๋ฎ์ด์์ฐ๊ณ publishํฉ๋๋ค. * feat: [FE] EditTools ๋ถ์ฌ๋ฃ๊ธฐ ์ด๋ฒคํธ ๋ฑ๋ก - ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์ํ click ์ด๋ฒคํธ ๋ฑ๋ก * feat: [FE] ๋ถ์ฌ๋ฃ๊ธฐ ๋จ์ถํค ๊ธฐ๋ฅ ๊ตฌํ - ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌ๋ ์ํ์์ ctrl + v ๋ฅผ ๋๋ฅด๋ฉด ๋ถ์ฌ๋ฃ๊ธฐ ๊ธฐ๋ฅ์ด ์คํ๋๋๋ก ๊ตฌํ * style: [FE] PlayBarUtil ์ฃผ์ ์ถ๊ฐ - ๋์ค์ ๋ฆฌํฉํ ๋ง์ ์ํ ์ฃผ์์ถ๊ฐ - PR mergeํ๋ฉด์ ์ง์ฐ๊ฒ ์ต๋๋ค * feat: [FE] SplitCommand ๊ตฌํ - ๊ตฌ๊ฐ ์๋ฅด๊ธฐ ๊ธฐ๋ฅ์ ์ํ SplitCommand ๊ตฌํ - ํด๋ฆญํ ๊ณณ์ ์๊ฐ๊ณผ ํด๋ฆญํ trackSection์ trackStartTime์ผ๋ก splitTime์ ๊ตฌํ์ต๋๋ค. - splitTime์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์น์ ์ ์์ฑํ์ฌ ๊ธฐ์กด์ trackSection์ ์ง์ฐ๊ณ ์๋ก track์ ์ถ๊ฐํ์ต๋๋ค. - ๊ธฐ์ค์ด ๋๋ element๋ audi-main-audio-track-container div๋ก ์ค์ ํ์ต๋๋ค. * feat: [FE] AudioTrackSection ์ปดํฌ๋ํธ click ์ด๋ฒคํธ ๋ถ๊ธฐ์ฒ๋ฆฌ - cursorMode์ ๋ฐ๋ผ focus๋๊ฑฐ๋ split ํ๋๋ก ์กฐ๊ฑด๋ฌธ์ ์ถ๊ฐํ์ต๋๋ค * feat: [FE] controller splitCommand() ๊ตฌํ - SplitCommand๋ฅผ ์คํํ๋ ํจ์๋ฅผ ๊ตฌํํ์ต๋๋ค. - getTrack์ ์์ฃผ ์ฐ์ผ ๊ฒ ๊ฐ์์ ๊ตฌํํ์ต๋๋ค. * feat: [FE] AudioTrack ์๋ฅด๊ธฐ ๋ชจ๋ ์ปคํธ๋ผ์ธ ๊ตฌํ - Track ๋ณ๋ก cut-line ๊ด๋ฆฌํ๋๋ก ๊ตฌํํ์ต๋๋ค. - ํ์์๋ class="hide"๋ก ๋์ด์๋ค๊ฐ cursorMode๊ฐ cut์ผ ๋, trackSection์ mousemove ์ด๋ฒคํธ๋ก hide๊ฐ ํด์ฒด๋ฉ๋๋ค. * feat: [FE] EventType mouseout ์ถ๊ฐ - ๋ง์ฐ์ค๊ฐ canvas ๋ฐ์ผ๋ก ๋๊ฐ์ ๋ cut-line์ด ๋ค์ hide ๋๋๋ก mouseout ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. * feat: [FE] AudioTrackSection mousemove, mouseout ์ด๋ฒคํธ ๊ตฌํ - TrackSection์์์ cursorMode๊ฐ ์๋ฅด๊ธฐ ๋ชจ๋์ผ ๊ฒฝ์ฐ ๋ง์ฐ์ค ์ปค์ ์์น์ ๋ฐ๋ผ cut-line์ด ๋์ค๋๋ก ๊ตฌํํ์ต๋๋ค. - mouseout์ ์ปค์๊ฐ TrackSection ๋ฐ ๋๊ฐ์ ๊ฒฝ์ฐ ๋ค์ hideํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ๋๋ค. * style: [FE] image cursor ์์น ์กฐ์ - ์ปคํธ๋ผ์ธ๊ณผ ๋ง์ฐ์ค ์ปค์์ ์์น์ ์ฑํฌ๊ฐ ์ ๋ง์ง ์์์ ์์ ํ์ต๋๋ค. close #65, close #68, close #73, close #99, close #100 * feat: [FE] ์ฌ์๋ฐ ๋ง์ปค ๋๋๊ทธ๋ก ์ด๋ํ๊ธฐ ๊ตฌํ (#102) * feat: [FE] PlayBarMarkerBlurZone ์ปดํฌ๋ํธ ๊ตฌํ - ์ฌ์๋ฐ ๋ง์ปค๋ฅผ ์์ง์ผ์ ๋ฐ๊นฅ ์์ญ์ ์์ ๋ฐ๊พธ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ์ต๋๋ค. * style: [FE] PlayBarMarkerBlurZone style ๊ตฌํ - PlayBarMarkerBlurZone style์ ์ ์ฉํ์ต๋๋ค. * style: [FE] PlayBarMarker style ์์ - cursor: pointer๋ฅผ ์ถ๊ฐํ์ต๋๋ค - z-index: 4๋ฅผ ์ถ๊ฐํ์ต๋๋ค. * feat: [FE] playbarMarker ๋๋๊ทธ ์ด๋ฒคํธ ์ถ๊ฐ - ์ฌ์๋ฐ ๋ง์ปค๊ฐ ๋๋๊ทธ๋ก ์์ง์ด๋๋ก ํ์ต๋๋ค. - ๋๋๊ทธ์ ๋ฐ๊นฅ ์์ญ์ ์์ด ๋ค์ด๊ฐ๋๋ก ๊ตฌํํ์ต๋๋ค. * feat: [FE] playbar-event-zone ์ถ๊ฐ - ์ฌ์๋ฐ ์ด๋ฒคํธ๊ฐ ์ ์ฉ๋๋ ์์ญ์ ๋ํ css ์ค์ * feat: [FE] eventType ์ถ๊ฐ - PLAYBAR_EVENT_ZONE_DROP eventkey ์ถ๊ฐ * feat: [FE] ์ฌ์๋ฐ ๋๋ธํด๋ฆญ์ ๋ฐ๊นฅ์์ญ ์ ์ง์ - ๋๋ธํด๋ฆญ ํ์๋๋ ๋ฐ๊นฅ ์์ญ์ ์์ด ๋ณ๊ฒฝ๋๋๋ก ์์ ํ์ต๋๋ค. Co-authored-by: Woojin Shin <[email protected]> * refactor: [FE] AudioTrack Scroll ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ์ฝ๋๋ฆฌํฉํ ๋ง (#103) * feat: [FE] store ํธ๋ ์ต๋ ๋๋น ์ฌ์ด์ฆ ์ถ๊ฐ - ํธ๋์ ์ต๋ ๋๋น ์ฌ์ด์ฆ๋ก ๋ชจ๋ ํธ๋์ ๋๋น์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ์ฌ ์ ์ฒด ํธ๋์ ์คํฌ๋กคํ๊ธฐ ์ํด store์ ์ต๋ ํธ๋ ๋๋น์ฌ์ด์ฆ ์ถ๊ฐ - ์ปจํธ๋กค๋ฌ๋ฅผ ํตํด ์ต๋ ํธ๋ ๋๋น์ฌ์ด์ฆ๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๋๋ก ์ธํฐํ์ด์ค ์ถ๊ฐ * feat: [FE] eventType์ mouseup, mousemove ์ด๋ฒคํธ ์ถ๊ฐ - Zoombar ๋ง์ฐ์ค ์ด๋ฒคํธ๋ฅผ ์ํ ์ด๋ฒคํธ ์ถ๊ฐ * feat: [FE] ZoomBar ์ปดํฌ๋ํธ ์ ์ - ํธ๋ ์ฌ์ด์ฆ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ฌ์ด์ฆ๊ฐ ๋ณํ๋๋ก ์ ์ - ํธ๋ ์ฌ์ด์ฆ์ ๋ฐ๋ผ ์คํฌ๋กคํ๋ px๊ฐ์ด ๋ณํ๋๋ก ์ ์ * feat: [FE] Main ์ปดํฌ๋ํธ์ ํธ๋ ์คํฌ๋กค ์์ญ ์ถ๊ฐ - Zoombar ์ปดํฌ๋ํธ๋ก ์คํฌ๋กค ํ๊ธฐ์ํ ์์ญ ์ถ๊ฐ * refactor: [FE] AudioTrack, AudioTrackSection ์คํฌ๋กค ๊ฐ๋ฅํ๋๋ก ์์ - ํธ๋์ ๋๋น์ฌ์ด์ฆ๋ฅผ ์ต๋ ํธ๋์ ๋๋น ์ฌ์ด์ฆ๋ก ๋ชจ๋ ๋ณ๊ฒฝํ๋๋ก ์์ - ํธ๋์์ญ์ overflowํ๋ฉด ์คํฌ๋กค์ด ๊ฐ๋ฅํ๋๋ก ์์ - ํธ๋์ ๋๋น์ฌ์ด์ฆ๊ฐ ๋ณํ๋ฉด store์ ๋๊ธฐํ ํ๋๋ก ์์ * refactor: [FE] ์ฝ๋ ๋ฆฌํฉํ ๋ง ๋ฐ ๋ฒ๊ทธ์์ - ํธ๋์ ๋ด์ฉ์ด ์๋ ๊ฒฝ์ฐ์ Drag&Drop ๋ฉ์ธ์ง๊ฐ ๋ํ๋๋๋ก ์์ - Zoombar EventType ์ถ๊ฐ * style: [FE] ๋ฉ์ธ ํ์ด์ง ๋ ์ด์์ ์์ - ๋ฉ์ธ ํ์ด์ง ๋ ธํธ๋ถ, ๋ฐ์คํฌํ ํ๋ฉด ๋ ์ด์์ ๊นจ์ง๋ ์คํ์ผ ์์ * refactor: [FE] ๋ฃจํธ ์ปดํฌ๋ํธ ์ด๋ฒคํธ delegation ์ฒ๋ฆฌ ์ถ๊ฐ - ๋ฃจํธ์์ ์ด๋ฒคํธ ์คํ์ delegation์ ์ ์ฉํ ๋ถ๋ชจ ํ๊ทธ๋ฅผ ์ฐพ์์ ์ด๋ฒคํธ๋ฅผ ์คํํ๋๋ก ์ฝ๋ ์์ * feat: [FE] TrackOptionType ์ ์ - TrackOption ์ปดํฌ๋ํธ OptionType ์ ์ * feat: [FE] AudioTrackOptionClick EventKey ์ ์ - AudioTrackOption ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ด๋ฒคํธ ํค ์ ์ * feat: [FE] AudioTrackOption ์ปดํฌ๋ํธ ์ ์ - AudioTrack์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๊ฐ ๋ฉ์ธํ์ด์ง๊ฐ ์ถ๊ฐ๋๋๋ก ์ ์ - Event Delegation์ผ๋ก event-key๋ฅผ ์ฐพ์ ์ ์๋๋ก ์์ * feat: [FE] AudioTrackMenu ์ปดํฌ๋ํธ ์ ์ * style: [FE] ๋ฉ์ธํ์ด์ง ๋ ์ด์์ ์กฐ์ - ํค๋ ๋ ์ด์์ ๋ฐ์คํฌํ, ๋ ธํธ๋ถ์ ๋ฐ๋ผ ์กฐ์ close #10, close #12 * feat: [FE] compressor ์ ์ฒด ํธ๋ ์์ถ ๊ธฐ๋ฅ ๊ตฌํ (#116) * fix: [FE] PasteCommand trackStartTime ๋ฒ๊ทธ ํด๊ฒฐ - paste๋ TrackSection์ trackStartTime์ ๊ฐ์ด ์ด์ํ๊ฒ ์ ์ฅ๋๋ ๋ฒ๊ทธ ๋ฐ๊ฒฌ - delayTime์ ๊ตฌํ ๋ trackStartTime์ด ์๋๋ผ audioStartTime์ผ๋ก ๊ตฌํด์ ๋ฒ๊ทธ ๋ฐ์ํ์์ - audioStartTime -> trackStartTime์ผ๋ก ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐ * refactor: [FE] ๋ชจ๋ ํธ๋ mergeํ์ฌ saveํ๋๋ก ๋ณ๊ฒฝ - ํ์ผ ์์ฑ ๋จ๊ณ - 1) getTrackArrayBuffer()๋ก ํด๋น ํธ๋์ ํ๋์ ArrayBuffer๋ก ์์ฑํฉ๋๋ค. - 2) for๋ฌธ์ผ๋ก ๋ชจ๋ ํธ๋์ ArrayBuffer๋ฅผ ๋ฐฐ์ด์ ๋ด์์ค๋๋ค. - 3) ๋ชจ๋ ํธ๋์ ArrayBuffer๊ฐ ๋ด๊ธด arrayBufferList๋ฅผ mergeTrackArrayBuffer()๋ก merge์์ผ์ค๋๋ค. - 4) merge๋ buffer๋ฅผ ChannelDataToWave()๋ก wavBuffer๋ก ๋ง๋ค์ด์ค๋๋ค. - 5-1) wav๋ก ์ ์ฅ - wavBuffer๋ฅผ file๋ก ์์ฑํ๊ณ ๋ฒํผ์ href๋ฅผ ๋ณ๊ฒฝ - 5-2) mp3๋ก ์ ์ฅ - wavBuffer๋ฅผ lamejs ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก mp3๋ก encoding ํ ํ์ file๋ก ์์ฑํ์ฌ href ๋ณ๊ฒฝ * fix: [FE] Paste ์ดํ ์ ํ๊ตฌ๊ฐ ํ ๋๋ฆฌ ์ด๊ธฐํ ๋ฒ๊ทธ - setSection์ผ๋ก ๋ฆฌ๋ ๋๋ง ๋๋ฉด์ focus๋ ๊ตฌ๊ฐ์ border style์ ๋จน์ธ class๊ฐ ์ฌ๋ผ์ง๋ ๋ฌธ์ ๋ฐ์ - trackSection ์ปดํฌ๋ํธ์์ initState()๋ก focusList์ section๊ณผ ๋์ผํ id๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด focusInfo์ element๋ฅผ ๊ฐฑ์ ํ๊ณ , classList.add('focused-section')๋ฅผ ํด์คฌ์ต๋๋ค. * feat: [FE] EditorMenu ์ปดํฌ๋ํธ init ๊ตฌํ - ๋ชจ๋ ํธ๋์ trackSection์ด ํ๋๋ ์์ผ๋ฉด ์ ์ฅํ๊ธฐ ๋ฒํผ์ ๋นํ์ฑํ ์์ผฐ์ต๋๋ค. - init์์ ๋ชจ๋ track์ trackSectionList์ ๊ธธ์ด๋ฅผ ํ์ธํ์ต๋๋ค. * feat: [FE] store publish ์ถ๊ฐ - EditorMenu์ ๋ฆฌ๋ ๋๋ง์ ์ํ publish ์ถ๊ฐ * feat: [FE] controller getSourceList() ๊ตฌํ - ๋ชจ๋ sourceList๋ฅผ ์กฐํํ ์ ์๋ ํจ์ ๊ตฌํ * refactor: [FE] SourceDowload saveFile ์ธ์ ๋ณ๊ฒฝ - ๊ธฐ์กด์ test์ฉ์ผ๋ก ์ฌ์ฉํ๋ audioํ์ผ์ ์ ๊ฑฐํ๊ณ ์ธ์๋ฅผ compressorObject๋ง ๋๊ฒจ์ฃผ๋๋ก ์์ * refactor: [FE] compressor emptyTime ์ญ์ - ์ค๋ ์คํฌ๋ผ๋ ์ค๋ช ํ๋ฉด์ ๊นจ๋ฌ์๋๋ฐ emptyTime์ด ํ์๊ฐ ์์ด์ ์ญ์ ํ์ต๋๋ค. - ๊ตฌํ ์ด๊ธฐ์ ์ฌ์ฉํ๊ณ ๋ก์ง์ด ๋ณ๊ฒฝ๋์ด emptyTime์ด ํ์๊ฐ ์์ด์ ์ญ์ - start()์ ์ฒซ๋ฒ์งธ ์ธ์๋ก trackStartTime์ ๋๊ฒจ์ฃผ๋ฉด์ ํ์๊ฐ ์์ด์ก์ต๋๋ค. * feat: [FE] ๋ณํ ์๋ฃ๋ ํ์ผ๋ช ๋ณ๊ฒฝ ๊ธฐ๋ฅ ๊ตฌํ - ํ์ผ์ ๋ณํ ์๋ฃํ ์ํ์์ ๊ธฐ์กด์๋ ํ์ฅ์๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ๋ชจ๋ฌ์ฐฝ์ ๋ซ์ผ๋ฉด ์ด๊ธฐํ๋ฉ๋๋ค. - ํ์ง๋ง ๋ณํ ์๋ฃ๋ ์ํ์์ ํ์ผ๋ช ์ ๋ฐ๊ฟ ๋๋ ์ด๊ธฐํ ๋๋ฉด ๋๋ฌด ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํด์ download์ ์ ์ฅ๋ ํ์ผ๋ช ๋ง ๋ณ๊ฒฝ๋๋๋ก ๊ตฌํํ์ต๋๋ค. * refactor: [FE] compressor getTrackArrayBuffer ์๋ ๊ฐ์ - ๊ธฐ์กด์๋ for๋ฌธ์ผ๋ก ๋ชจ๋ ์น์ ์ ์ฑ๋๋ฐ์ดํฐ๋ฅผ ๋งค๋ฒ index 0๋ถํฐ ๊ณ์ ๋ํ๋ ์์ผ๋ก ๊ตฌํํ์ต๋๋ค. - offset ๋ณ์๋ฅผ ๋ฌ์ ๊ทธ์ ์ ์ ์ฅํ๋ index๋ ๊ฑด๋๋ธ ์ ์๋๋ก ๋ณ๊ฒฝํ์ต๋๋ค. * style: [FE] compressor ๊ณต๋ฐฑ ์ ๊ฑฐ - ๋ถํ์ํ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ์ต๋๋ค. * refactor: [FE] EffectState ์ปดํฌ๋ํธ ๊ตฌํ & PlayBarUtil / controller/ store ํจ์๋ช , ๋ณ์๋ช ๋ฆฌํฉํ ๋ง (#118) * feat: [FE] EffectState ์ปดํฌ๋ํธ ์ ์ - ๊ตฌ๊ฐ์ด ์ ํ๋๋ฉด ํด๋น ๊ตฌ๊ฐ์ ์ ์ฉ๋ effect ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌํํ์ต๋๋ค. * style: [FE] SectionEffectList style ์ ์ฉ - SectionEffectList ์ปดํฌ๋ํธ์ style์ ์ง์ ํ์ต๋๋ค. * feat: [FE] SectionEffectList์ ๊ด๋ จ๋ Util ์์ฑ - hideEffectList๋ section ์ ํ์ ํ์ง ์์์๋ EffectList๋ฅผ ์จ๊ธฐ๊ณ SourceList๋ฅผ ๋ณด์ฌ์ฃผ๋ ํจ์์ ๋๋ค. - showEffectList๋ section ์ ํ์ ํ์ ๋ EffectList๋ฅผ ๋ณด์ฌ์ฃผ๊ณ SourceList๋ฅผ ์จ๊ธฐ๋ ํจ์์ ๋๋ค. * feat: [FE] SourceList ์จ๊น/ํ์ ํจ์ ์ถ๊ฐ - section์ ํฌ์ปค์ค๊ฐ ์์ ๊ฒฝ์ฐ sourcelist๊ฐ ๋ณด์ด์ง ์๋๋ก ํ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. - section์ ํฌ์ปค์ค๊ฐ ์์ ๊ฒฝ์ฐ sourcelist๊ฐ ๋ณด์ด๋๋ก ํ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. * feat: [FE] SectionEffectList ์ปดํฌ๋ํธ Sidebar์ ์ถ๊ฐ - Sidebar ์ปดํฌ๋ํธ์ SectionEffectList ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์์ต๋๋ค. * feat: [FE] focus๋ฅผ ์ค๋ SectionEffectList ์จ๊น/ํ์ ์ค์ - addFocus์ SectionEffectList๊ฐ ๋ณด์ด๋๋ก ๋ก์ง ์์ฑ - removeFocus, resetFocus์ SectionEffectList๊ฐ ์จ๊ฒจ์ง๋๋ก ๋ก์ง ์์ฑ * feat: [FE] EffectListType ์ค์ - EffectListType์ ์ค์ ํ์ต๋๋ค. * feat: [FE] eventType ์ถ๊ฐ - EffectList Modal ์ฐฝ์ ์ฌ๋ ์ด๋ฒคํธํ์ ์ค์ ํ์ต๋๋ค. * refactor: [FE] setMarkerWidthToZero ๊ด๋ จ ํจ์ ์ญ์ - setMarkerWidth์ ํจ์ ์ธ์ 0์ ๋ฃ์ด์ฃผ๋ฉด ๋ง์ปค์ ์์น๊ฐ ์ด๊ธฐํ ๋๋๋กํ์ต๋๋ค. - ๋ฐ๋ผ์ ๊ฐ์ ์ญํ ์ ํ๋ setMarkerWidthToZero ํจ์๋ ํ์๊ฐ ์๋ค๊ณ ์๊ฐ๋์ด ์ญ์ ํ์ต๋๋ค. * refactor: [FE] store state ๋ณ์๋ช ๋ณ๊ฒฝ - ์๊ฐ์ string์ผ๋ก ๋ํ๋ด๋ ๋ณ์๋ ~~StringTime์ผ๋ก ํ๊ธฐํ์ต๋๋ค. - ์๊ฐ์ ์ด๋จ์๋ก ๋ํ๋ด๋ ๋ณ์๋ ~~NumberTime์ผ๋ก ํ๊ธฐํ์ต๋๋ค. * refactor: [FE] TimeUtil ํ์ผ ์์ฑ - PlayBarUtil์์ ์๊ฐ๊ณผ ๊ด๋ จ๋ ํจ์๋ค์ ๋ถ๋ฆฌํ์ต๋๋ค. - getSplitTime์ ์ด๋จ์๋ก ์ ์๋ ์๊ฐ์ ๋ถ, ์ด, ๋ฐ๋ฆฌ์ด๋ก ๋ถํดํด์ฃผ๋ ํจ์์ ๋๋ค. - getStringPlayBarTime์ ์ฌ์๋ฐ ๋๊ธ์ ๋ํ๋ด์ฃผ๋ ํจ์์ ๋๋ค. - getNumberTime์ ๋ง์ฐ์ค ์์น๋ฅผ ์ด๋จ์ ์๊ฐ์ผ๋ก ๋ํ๋ด์ฃผ๋ ํจ์์ ๋๋ค. - getStringTime์ ์ด๋จ์ ์๊ฐ์ ๋ฌธ์๋ก ๋ํ๋ด์ฃผ๋ ํจ์์ ๋๋ค. ex) '05:11:236' * refactor: [FE] setCursorStringTime ํจ์ ๋ด์ฉ ๋ณ๊ฒฝ - ํจ์ ์ด๋ฆ๊ณผ ๋ง๋ ๋ก์ง์ผ๋ก ์์ ํ์ต๋๋ค. ํจ์ ์ธ์๋ก string ํ์์ ์๊ฐ์ ๋ฐ์์ค๊ณ ๋ฐ๋ก ์๋ก์ด stringTime์ state์ ๋ฃ์ด์คฌ์ต๋๋ค. - ๊ทธ ์ธ ์๋ชป ๋ณ๊ฒฝ๋ state ๋ณ์๋ช ๋ค์ ์์ ํ๊ณ ๊ทธ์ ๋ง๋ ํจ์๋ค๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ต๋๋ค. * refactor: [FE] controller ํจ์๋ช ๋ณ๊ฒฝ - resetPlayTime ํจ์๋ฅผ changeMarkerPlayStringTime์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. - ํด๋น ํจ์๋ ์ฌ์๋ฐ๋ฅผ ํด๋ฆญํ์ ๊ฒฝ์ฐ ๋ง์ปค์ ์๊ฐ์ ๋ณ๊ฒฝํด์ฃผ๋ ํจ์์ ๋๋ค. * refactor: [FE] PlayBarUtil ํ์ผ๋ช ๋ณ๊ฒฝ - WidthUtil๋ก ์ด๋ฆ ๋ณ๊ฒฝํ์ต๋๋ค. - ๋๋น๋ฅผ ๊ตฌํ๋ ํจ์๋ค์ด ๋ชจ์ฌ์์ต๋๋ค. * refactor: [FE] ํจ์๋ช ๋ณ๊ฒฝ - ๋ฆฌํฉํ ๋งํ ํจ์๋ก ๊ต์ฒดํ์ต๋๋ค. * refactor: [FE] ์ผ์ชฝ ์ฌ์๋ฐ ๋ง์ปค ์์น ์์ - 100%์ด๋ ์์น๋ฅผ 99.3%๋ก ๋ฐ๊ฟจ์ต๋๋ค. - ์๋ง ํ๋ก์ ํธ๊ฐ ๊ฑฐ์ ๋ค ์์ฑ๋๋ฉด ๋ ๋ค์ ๋ฐ๋ ๊ฒ ๊ฐ์ต๋๋ค. * refactor: [FE] getNumberTime ๋ช ํํ ๋ณ์๋ช ์ผ๋ก ์์ - calculateTimeOfCursorPosition ํจ์๋ช ์ผ๋ก ์ด๋ฆ์ ๋ฐ๊พธ์ด ๋ฌด์จ ์ญํ ์ ํ๋์ง ๋ช ํํ๊ฒ ์์ฑํ์ต๋๋ค. Co-authored-by: Woojin Shin <[email protected]> close #117 * refactor: [FE] ๊ตฌ๊ฐ ๋๋๊ธฐ ๋ฒ๊ทธ ์์ ๋ฐ ์ฝ๋ ๋ฆฌํฉํ ๋ง (#115) * refactor: [FE] SplitCommand ์ฝ๋ ๋ฆฌํฉํ ๋ง - excute ํจ์ ์์ ํจ์๋จ์๋ก ๋ถ๋ฆฌ - PlayBarUtil์ PlayBar์ ๊ด๋ จ๋์ด ๋ณด์ด๋๋ฐ ์น์ ์ ๋๋๋ ์ปค๋งจ๋์์ ์ฌ์ฉ๋์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ , PlayBarUtil์ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ด ํ์ํ๋ฏ๋ก ํด๋น ๋ถ๋ถ์ ์ญ์ ํ๊ณ , ํ์ํ ๋ก์ง๋ถ๋ถ๋ง ์ถ๊ฐํ๋๋ก ์์ (์ถํ ๊ณตํต ์ ํธ์ด ๋ง๋ค์ด์ง๋ฉด ์์ ํ์) - ํธ๋ ์น์ ์ ๋๋ ๋, ํํ์ด ์ด์ํ๊ฒ ๋๋์ด์ง๋ ๋ฒ๊ทธ ์์ . trackStartTime, channelStartTime ์ค์ ๋ก์ง ์์ ํ์ฌ ํด๊ฒฐ * refactor: [FE] AudioTrackSection ๋ฆฌํฉํ ๋ง - ํ์ ๊ด๋ฆฌ๋ฅผ ์ํ SectionDataType ๋ถ๋ฆฌ - CursorMode๋ฅผ subscribeํ์ฌ ์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋๋๋ก ์์ - ํจ์ ๋ค์ด๋ฐ ๋ช ํํ๊ฒ ๋ณ๊ฒฝ ๋ฐ ์์ ํจ์ ๋จ์๋ก ๋ถ๋ฆฌ * refactor: [FE] AudioTrack ๋ฆฌํฉํ ๋ง - TrackSection ๋ชจ๋ธ parsedChannel ์ ๋ณด ์ญ์ - ์์ค๋ฆฌ์คํธ์์ ๋๋๊ทธ์ค๋๋์ผ๋ก ์๋ก์ด ํธ๋์ ์ถ๊ฐํ ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ปจํธ๋กค๋ฌ๋ก ์ด๋ * refactor: [FE] EditTools ๋ฆฌํฉํ ๋ง - ํจ์ ๋ค์ด๋ฐ ๋ช ํํ๊ฒ ๋ณ๊ฒฝ * refactor: [FE] Controller ๋ฆฌํฉํ ๋ง - getSectionData ํจ์ ๊ฐ๋ ์ฑ ํฅ์ ๋ฐ ์ ์ง๋ณด์๋ฅผ ์ํด ํจ์ํ์ผ๋ก ๊ธฐ๋ฅ๋จ์๋ก ๋ถ๋ฆฌ * fix: [FE] ๋จธ์ง๊ณผ์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ ์์ (#119) - PlaybackTools ๋ฆฌ๋ ๋๋ง์ ํตํ ํ๋กํผํฐ ์ฐธ์กฐ ๋ฌธ์ ํด๊ฒฐ - Controller ํจ์ getSourceBySourceId ์ถ๊ฐ, SpliCommand ์์ ์ฌํญ ๋ฐ์ * feat: [FE] AudioMeter ์ปดํฌ๋ํธ ๊ตฌํ (#120) * feat: [FE] AudioUtil getDecibel() ๊ตฌํ - analyser์ getFloatTimeDomainData๋ฅผ Decibel๋ก ๋ณํํ๋ ํจ์ ๊ตฌํ * feat: [FE] AudioMeter ์ปดํฌ๋ํธ ๊ตฌํ - ํ์ฌ ์ฌ์์ค์ธ volume์ ๋ฐ๋ผ ๋ฐ์ํ๋ AudioMeter ์ปดํฌ๋ํธ ๊ตฌํ - ์ต๋ -72๊น์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ตฌํํ๊ณ , ๋ฐฑ๋ถ์จ๋ก ๋ค๋ฅธ gradient ์ปฌ๋ฌ๋ฅผ ๋จน์์ต๋๋ค. - ์คํฌ๋กค ๊ธฐ๋ฅ์ด ๋ค ๊ตฌํ๋๋ฉด ๋์ค์ canvas๋ก ๋ฐ์ํ์ผ๋ก ๊ตฌํํด๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค. * style: [FE] AudioMeter style ์ ์ฉ - decibel-Marekr๋ decibel์ด 100%๋ฅผ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์ํด -10px ํ์ต๋๋ค. * feat: [FE] components/index.js, Main.js์ AudioMeter ์ ์ฉ - index.js์ Main ์ปดํฌ๋ํธ์ AudioMeter ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํ์ต๋๋ค. * feat: [FE] PlayBackTools์ setInterval ์์ - setInterval๋ก ์ฌ์์ค์ธ ์ค๋์ค ์ ๋ณด๋ก AudioMeter์ style์ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝํ๋๋ก ๊ตฌํ - ๋์ค์ AudioContext๋ฅผ ๋ฐ๋ก store์์ ๊ด๋ฆฌํ๋๋ก ์์ ํด์ผ ๋ ๊ฒ ๊ฐ์ต๋๋ค. - ํ์ฌ ๊ฑด๋๋ฐ๊ธฐ๋ก audioContext๊ฐ ๋ณ๊ฒฝ๋๋ฉด AudioMeter์ ์ ์ฉ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์ด์ store ๋ฆฌํฉํ ๋ง์ด ๋๋๋ฉด ํด๊ฒฐํ๊ฒ ์ต๋๋ค. Co-authored-by: Woojin Shin <[email protected]> close #17 * feat: [FE] ๊ตฌ๊ฐ ์ด๋ํ๊ธฐ (๋๋๊ทธ ์ค ๋๋กญ) ๊ธฐ๋ฅ ๊ตฌํ (#122) * feat: [FE] MoveCommand ์์ฑ - ๋๋๊ทธํ์ฌ trackSection์ ์ด๋ํ ์ ์๋ MoveCommand๋ฅผ ์์ฑํ์ต๋๋ค. - dragstart ํ ๋์ ์ปค์ ์๊ฐ์์ trackStartTime์ ๋นผ์ค ์ฐจ์ด๋ฅผ ๊ตฌํฉ๋๋ค. - ๊ทธ๋ฐ ํ drop์์ ์ปค์ ์๊ฐ์์ ๋นผ์ค ์ฐจ์ด๋ฅผ ๋ค์ ๋นผ์ค๊ฒ newTrackStartTime์ ๋๋ค. - checkEnterTrack์ ์์ง ๋ฏธ๊ตฌํ ํจ์์ ๋๋ค! * feat: [FE] audioTrack ๊ด๋ จ eventType ์์ฑ - AUDIO_TRACK_MULTIPLE๊ณผ AUDIO_TRACK_AREA_MULTIPLE ํ์ ์ ๋ง๋ค์์ต๋๋ค. * refactor: [FE] ์ฌ์ฉ๋์ง ์๋ ๋ณ์ ์ญ์ - ๋์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ณ์๋ฅผ ์ญ์ ํ์ต๋๋ค. * feat: [FE] ๋๋น์ ์ฐจ๊ฐ ํญ์ ์์๊ฐ ๋๋๋ก ์์ - ๋๋น์ ์ฐจ๊ฐ ํญ์ ์์๊ฐ ๋๋๋ก Math.abs ํจ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค. * feat: [FE] drop ์ด๋ฒคํธ ์์ฑ - dropAudioTrackListener - ํ์ฌ ์ปค์์ ์์น๋ฅผ ๊ตฌํฉ๋๋ค. - ์ปค์ ์์น์ ์๊ฐ๊ฐ์ ๊ตฌํฉ๋๋ค. - ํ์ํ ์ธ์๋ค์ moveCommand์ ๋๊ฒจ์ค๋๋ค. - audio-track-area์ data-track-id๋ฅผ ์ถ๊ฐํด์คฌ์ต๋๋ค. * feat: [FE] dragstart ์ด๋ฒคํธ ํจ์ ์์ฑ - ๋๋๊ทธ๊ฐ ์์ํ ๋ ํด๋น ํจ์๊ฐ ์๋ํ๋๋ก ํ์ต๋๋ค. - ๋๋๊ทธ ์์์ ์ปค์ ์์น๋ฅผ ๊ตฌํ๊ณ ๊ทธ๋์ ์๊ฐ๊ฐ์ ๊ตฌํ์ต๋๋ค. - ๊ทธ๋ฐ๋ค ํ์ํ ๋ณ์๋ค์ dataTransfer๋ฅผ ํตํด ์ ๋ฌํด์คฌ์ต๋๋ค. * feat: [FE] moveCommand ํจ์ ์ถ๊ฐ - moveCommand๋ฅผ ์คํํด์ฃผ๋ ํจ์๋ฅผ ์์ฑํ์ต๋๋ค. - getSource์ getTrackSection ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. - ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋๊ฐ ์์ด ๋ถ๋ฆฌํ์ฌ ๋ง๋ค์์ต๋๋ค. * fix: [FE] ์คํฌ๋กค ๊ธฐ๋ฅ ์ถ๊ฐ๋ก ๋ฐ์ํ ๋ฒ๊ทธ ์์ (#121) * feat: [FE] ํธ๋ ํํ ๋์ ์ธ ์ฌ์ด์ฆ ๋ณ๊ฒฝ ์ ์ฉ - ํธ๋ ํํ์ ๋ธ๋ผ์ฐ์ ์ ์ฌ์ด์ฆ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ณํ๋๋ก ๊ตฌํ * feat: [FE] store maxTrackPlayTime ์ ์ - ์ฌ์๋ฐ์ ์๊ฐ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋ฉํฐํธ๋์์ ์ต๋ ์ฌ์์๊ฐ์ store์ ์ ์ * feat: [FE] Controller maxTrackPlayTime ๋ณ๊ฒฝ ํจ์ ์ถ๊ฐ - ์ต๋ ํธ๋ ์ฌ์์๊ฐ ์ ๋ฐ์ดํธํ๊ธฐ์ํ changeMaxTrackPlayTime ํจ์ ์ถ๊ฐ * refactor: [FE] ํธ๋ ์์ญ ๋ฐ์ํ ์ฌ์ด์ฆ ์ ์ฉ - AudioTrack ์ปดํฌ๋ํธ์ ํธ๋ ์์ญ์ ์ต๋ ํธ๋ ์ฌ์ด์ฆ์ ๋ฐ๋ผ ๋ฐ์ํ ์ผ๋ก ๋ฆฌ์ฌ์ด์ง ์ ์ฉ * refactor: [FE] ๋ฉ์ธ์ปดํฌ๋ํธ ํธ๋ ์คํฌ๋กค ์์ญ ์์ - ํธ๋ ์คํฌ๋กค ์์ญ์ ์ฌ์๋ฐ๋ ํฌํจํ๋๋ก ์์ * refactor: [FE] ์ฌ์๋ฐ ๋์ ์ฌ์ด์ฆ ๋ณ๊ฒฝ ์ ์ฉ ๋ฐ ์ฝ๋๋ฆฌํฉํ ๋ง - ํธ๋์ ์ต๋์ฌ์ด์ฆ ๋ฐ ์ต๋์ฌ์์๊ฐ์ ๋ฐ๋ผ ์ฌ์๋ฐ๊ฐ ๋์ ์ผ๋ก ๋ ๋๋ง๋๋๋ก ์์ - ๋ณ์ ๋ฐ ํจ์ ๋ค์ด๋ฐ์ ๋ช ํํ๊ฒ ๋ณ๊ฒฝ * style: [FE] TimeInfo ๋ฐ์ํ ์ฌ์ด์ฆ ๋ณ๊ฒฝ * feat: [FE] store currentScrollAmount ์ ์ - ์คํฌ๋กค์ ๋ฐ๋ฅธ ์ฌ์๋ฐ ์ปค์ ์๊ฐ ์ฑํฌ๋ฅผ ๋ง์ถ๊ธฐ์ํด ์คํฌ๋กคํ ์(pixel) ์ํ์ ์ง ์ถ๊ฐ * refactor: [FE] ZoomBar ํ์ฌ ์คํฌ๋กค์์ ์ํ์ ์ง ํ๋๋ก ์์ - ํ์ฌ ์คํฌ๋กค์์ ์ํ์ ์งํ๊ธฐ ์ํด ZoomBar์์ Controller๋ฅผ ํ์ฉํ์ฌ ์คํฌ๋กค์ ์คํฌ๋กค์์ store์ ์ ๋ฐ์ดํธ * refactor: [FE] TimeUtil / WidthUtil ๋ฆฌํฉํ ๋ง - ํธ๋์ ์ฌ์์๊ฐ ๋ณ๊ฒฝ์ ๋ฐ๋ผ ์ปค์ ์๊ฐ๊ณ์ฐ์ ์ํด ์ฌ์์๊ฐ์ 300์ด ๊ณ ์ ์ด ์๋ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋๋ก ์์ - ๋ณ์ ๋ฐ ํจ์ ๋ค์ด๋ฐ ๋ช ํํ๊ฒ ์์ - Util ์ฝ๋ ์์ ์ผ๋ก ์ธํ Util ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฐ ์ปดํฌ๋ํธ ์ฝ๋ ์์ * refactor: [FE] ์ฌ์๋ฐ playTime ๋ฐ์ํ ์ฌ์ด์ฆ ์ ์ฉ - ๋ธ๋ผ์ฐ์ ์ฌ์ด์ฆ์ ๋ฐ๋ผ ์ฌ์๋ฐ์ playTime ๋ฐ์ํ์ผ๋ก ์ฌ์ด์ฆ ์กฐ์ - playTime์ด ๋ฐ์ํ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด์ ์ปค์ ํ์ ๊ณ์ฐ๋ ๋ณ๊ฒฝ๋ ์ฌ์ด์ฆ์ ๋ง๊ฒ ๋ณด์ฌ์ฃผ๋๋ก ์์ * fix: [FE] ํธ๋์น์ cutLine ์คํฌ๋กค์ ๋ฐ๋ผ ์์น ์กฐ์ - ์คํฌ๋กค์ ํธ๋์น์ ์ cutLine์ด ์์น๊ฐ ์กฐ์ ๋์ง ์๋ ๋ฒ๊ทธ ์์ * refactor: [FE] SplitCommand ๋๋๊ธฐ ๋ก์ง ์์ - splitCommand ๋๋๊ธฐ ๋ก์ง ๋์ ๋ฒ๊ทธ ์์ ์ค * fix: [FE] ์ค๋์ค ๋ฏธํฐ ์ถ๋ ฅ ๋ฒ๊ทธ ์์ (#123) - ์์ ์ฌ์์ ์ค๋์ค๋ฏธํฐ ์ถ๋ ฅ ๋ฒ๊ทธ ์์ - ํจ์ ์ด๋ฆ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ค๋ฅ ํด๊ฒฐ * feat: [FE] ๋จ์ถํค ๊ธฐ๋ฅ, ์ฌ์ ์ค ์ปค์ ํด๋ฆญ ์ ์ํ๋ ์์น์์ ์์, solo/mute ๊ธฐ๋ฅ ์ ์ฉ (#124) * chore : [FE] audioStartTime ์ญ์ ์ channelStartTime ์ฌ์ฉ - trackSection์์ audioStartTime์ ์ญ์ ํ์ต๋๋ค. - channelStartTime์ ์ฌ์ฉํ๋๋ก ๋ณ๊ฒฝํ์ต๋๋ค. * chore : [FE] ์ฃผ์ ์ญ์ - subscribe ๋ถ๋ถ์ ์ฃผ์์ ์ญ์ ํ์ต๋๋ค. * feat : [FE] ์ฑ๋ ์ญ์ ๋ฐ ์ถ๊ฐ์ solo, mute ๊ด๋ จ - CURRENT_POSITION_ZERO_CHANNEL ์ญ์ - play, pause ์์ด์ฝ ๋ณ๊ฒฝ์ ์ํ PLAY_OR_PAUSE_CHANNEL ์ถ๊ฐ - solo ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ SOLO_CHANNEL ์ถ๊ฐ - solo, mute ํด๋ฆญ ์ ์์ ๋ณ๊ฒฝ * feat : [FE] play/pause ์์ด์ฝ ๋ณ๊ฒฝ, solo ์ํ ๋ฉ์๋ ์ถ๊ฐ - changePlayPauseIcon์ผ๋ก ์ํ์ ๋ฐ๋ผ ์์ด์ฝ ๋ณ๊ฒฝ - soloPlay๋ก ์ ์ฒด solo ์ ํ ์ํ ๋ณ๊ฒฝ * feat : [FE] ๋จ์ถํค ํจ์ ์ ์ - Controller์ ๋จ์ถํค์์ ์ฌ์ฉํ ํจ์ ์ ์. - playbackTool์ ํจ์๋ฅผ ํธ์ถํ๋ค. * feat : [FE] ์ฌ์ ์ค ์ปค์๋ก ํด๋ฆญํ ๊ณณ์์ ๋ฐ๋ก ์ฌ์ - ์ฌ์ ์ค์ ์ปค์๋ก ํด๋ฆญํ ๋ง์ปค ์์น์์ ๋ค์ ์ฌ์ํ ์ ์๋ audioCursorPlay ํจ์ ํธ์ถ. - play ํจ์๊ฐ ํธ์ถ๋จ. * chore : [FE] updateMarkerPosition ๊ณ ๋ ค์ฌํญ - ํจ์๊ฐ ๋ฐ์์จ ๊ฐ์ด 0์ผ ๋ 0์ผ๋ก ๊ฐ์ ๋ฐ๊พธ๊ณ 0์ด ์๋ ๋๋ ์ด์ ๊ฐ์ ๋ํด๋๊ฐ๋ ํ์. - ์ค๋ฅธ์ชฝ ๋์ผ๋ก ์ฎ๊ธธ ๋๋ ๋ํด๋๊ฐ๋ ๋ฐฉ์์ด ๋์ด ์์ ์ด ํ์. ํ์ฌ ๋ง์ง๋ง ์์น ๊ด๋ จํด์ ์คํฌ๋กค๊ณผ ๊ด๋ จํด ์์ ์ด ํ์ํด๋ณด์ฌ ๋ฉ๋ชจ๋ง ํด ๋ . * feat : [FE] PlaybackTools ๊ธฐ๋ฅ๊ด๋ จ ๋ถ๋ถ ์ด๋ - PlaybackToolClass๋ก ์ฎ๊ฒจ controller์์ ์ฌ์ฉํ ์ ์๋๋ก ํจ. - ์ ์ง์ ๋ฐ๋ณต์ ์ ์ธํ ๋ชจ๋ ํค๋ ๋จ์ถํค๋ก ์ฌ์ฉํ ์ ์์. - mute, solo์ ๋ํ ์ ๋ณด๋ฅผ ์ง์ญ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์. * feat : [FE] ๋ฐ๋ณต๋ฒํผ ํด๋ฆญ์ ์์ ๋ณํ - ๋ฐ๋ณต ๋ฒํผ ํด๋ฆญ ์ ์์ ๋ณํ - ํ ๋ฒ ํด๋ฆญ ์ ์ด๋ก์, ๋ค์ ํด๋ฆญ ์ ํฐ์์ผ๋ก ๋์์ด. - store์ isRepeat ์ถ๊ฐ - playbackTools์์ IS_REPEAT_CHANNEL์ ๊ตฌ๋ ์ค. - isRepeat ๊ฐ์ ๋ณ๊ฒฝํ ๋ publish ๋์ด ์ํ ์ ๋ฌ. * feat : [FE] ๋ฐ๋ณต ์ฌ์ ๋ฒํผ ํด๋ฆญ์ ์์ ์์น ๋ณ๊ฒฝ - ๋ฐ๋ณต์ฌ์ ๋ฒํผ ํด๋ฆญ ์ ์์ ์์น๊ฐ ๋ณ๊ฒฝ๋๋๋ก ํ์ต๋๋ค. - ์ฌ์, ์ผ์์ ์ง ๋ฒํผ ํด๋ฆญ ์ ๋ฐ๋ณต์ฌ์ ๋ฒํผ์ ์์์ด ์ด๊ธฐํ๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. * style : [FE] ๋ฐ๋ณต ์ฌ์ ๋ฒํผ green color - ํด๋ฆญ ์ green color๋ก ๋ณ๊ฒฝ๋๋๋ก scss์ class๋ฅผ ์ถ๊ฐ. * chore : [FE] ์ฃผ์ ์ญ์ - PlaybackTools์์ ๊ณ ๋ฏผํ๋ ํ์ ์ด ๋ด๊ธด ์ฃผ์์ ์ง์ ์ต๋๋ค. * refactor : [FE] Handler Listener๋ก ๋ณ๊ฒฝ - AudioTrackOption์์ Handler๋ก ์ฐ์ธ ๋ถ๋ถ์ Listener๋ก ๋ณ๊ฒฝํ์ต๋๋ค. Co-authored-by: Woojin Shin <[email protected]> close #109, close #108, close #106, close #104 * fix: [FE] Marker ์ด๋ ๋ฐ AudioMeter ๋ฒ๊ทธ ํด๊ฒฐ (#125) - ๋ณ๊ฒฝ๋ ํจ์ ์ ์ฉ(๋ค์ด๋ฐ, ์ธ์) - PlaybackToolsClass์ ๋ชจ๋ํ๋ก AudioMeter ๊ด๋ จ ์ญ์ ๋ ๋ก์ง ์ถ๊ฐ * Update README.md * refactor: [FE] Solo ๋ค์ค ์ ํํ ์ ์๋๋ก ์์ , ์ค๋์ค ๋ฏธํฐ ๋ฉ์ถค ํ์ ์์ (#126) * refactor : [FE] ๋ณ์ ๋ช ์์ - ret์ผ๋ก ์ฌ์ฉํด์ ๋ช ํํ์ง ์์๋ ๋ณ์ ๋ช ์ ์์ ํ์ต๋๋ค. * feat : [FE] Solo ๋ค์ค ์ ํ ๊ธฐ๋ฅ - Solo ๊ธฐ๋ฅ์ ๋ค์ค์ ํ ํ ์ ์๋๋ก ์์ . - Solo ๋ฒํผ์ด ๋๋ฆฐ ๊ฒฝ์ฐ ์ฌ์๋จ. ๋๋ฆฌ์ง ์์ ํธ๋์ ์ฌ์ ์๋จ. * fix : [FE] ์ค๋์ค ๋ฏธํฐ ๋ฉ์ถค ๋ฌธ์ ํด๊ฒฐ - createAndConnectAnalyser ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ค์ ์ฌ์ํ ๋๋ง๋ค ํธ์ถ. - ์๋กญ๊ฒ analyser๋ฅผ ๋ง๋ค๊ณ connect ํด ์ค. * refactor : [FE] !=๋ฅผ !==๋ก ๋ณ๊ฒฝ - ๋ช ํํ๊ฒ !== ์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. * refactor : [FE] repeat ๋ฒํผ ํด๋ฆญ ์ ์ ๋ณ๊ฒฝ๋ก์ง ์์ - channel์ ์ฌ์ฉํ์ง ์์ ์ญ์ . - ๊ด๋ จํ๋ ์ฌ๋ฌ ํจ์ ์ญ์ . - store์ isRepeat ๊ฐ์ ํ์ธํด render ์์ ๊ทธ๋ ค์ฃผ๋ ํ์์ผ๋ก ๋ณ๊ฒฝ. * feat: [FE] ์ค๋์ค ๊ตฌ๊ฐ ์ด๋ ๊ตฌํ, ์์ค๋ฆฌ์คํธ ํํ ์ถ๊ฐ ๋ฆฌํฉํ ๋ง (#128) * feat: [FE] SectionDragStartData Model ๊ตฌํ - DragStart ์ด๋ฒคํธ์์ transferData ๋์ store์์ ์ํ๊ด๋ฆฌ๋ฅผ ์ํ SectionDragStartData Model ๊ตฌํ - dragover์์ getData๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ์ถ๊ฐ - SectionDragStartData์๋ TrackSection, dragstart ๋น์ ์ปค์ ์์น, x์ขํ ๊ฐ ๊ณ์ฐ์ ์ํ offsetLeft๊ฐ ๋ด๊ฒจ ์์ต๋๋ค. * refactor: [FE] MoveCommand ์ ํจ์ฑ๊ฒ์ฌ ์กฐ๊ฑด ๋ณ๊ฒฝ ๋ฐ ๋ชจ๋ํ - ๊ธฐ์กด์ ์กฐ๊ฑด๋ฌธ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํด์ ์์ ํ์ต๋๋ค. - ๊ตฌ๊ฐ ์ด๋ํ๊ธฐ์์ ์ด๋ํ ์ ์๋ ์์น์ธ์ง ํ๋จํ๋ checkEnterTrack() ํจ์๋ฅผ ValidUtil๋ก ๋ชจ๋ํ ์์ผฐ์ต๋๋ค. * refactor: [FE] TRACK_CHANEL ์ฑ๋ publish ์ญ์ - ํ์์๋ publish ์ฝ๋๋ฅผ ์ญ์ ํ์ต๋๋ค. * feat: [FE] SectionDragStartData storeType ์ถ๊ฐ * refactor: [FE] ๋จ์ถํค ์ค๋ช ์์ - redo์ undo์ ๋จ์ถํค ์ ๋ณด๊ฐ ๋ค๋ฐ๊ปด์ ์์ ํ์ต๋๋ค.... * feat: [FE] ValidUtil export ์ถ๊ฐ, eventType ์ถ๊ฐ - ๊ตฌ๊ฐ ์ด๋ํ ๋ ์์์ ์ํ AUDIO_TRACK_AFTERIMAGE_DROP :ใ EventType ์ถ๊ฐ * style: [FE] AudioMeter console.log ์ ๊ฑฐ * style: [FE] AudioTrack ์์ํจ๊ณผ style ์ ์ฉ - ๋ถ๋ชจ์์์ padding๊ฐ์ ๋ง์ถฐ์ top๊ณผ height๋ฅผ ์กฐ์ ํ์ต๋๋ค. - padding๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด height์ top๋ ๋ณ๊ฒฝ๋์ผ ํฉ๋๋ค. * feat: [FE] AudioTrack ์น์ ์ ์๊ฐ์ ๋ง๋ ์์น ์ ์ฉ - initPosition() ํจ์๋ก TrackSection๋ค์ ์์น๋ฅผ ์๊ฐ์ ๋ง๊ฒ ๋ณ๊ฒฝ - prevEndOffset์ ๋ฐ๋ก ์ section์ ๋ง์ง๋ง ์์น๋ฅผ ๋ํ๋ด๋๋ฐ ์ด๊ธฐ๊ฐ์ 0 - preEndOffset๊ณผ ํ์ฌ section์ trackStartTime์ ์ฐจ์ด ๋งํผ ์ด๋น px ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํด์ ๊ณฑํด์ margin-left์ ์ ์ฉํ์ต๋๋ค. - afterimage - ์ค๋์ค ๊ตฌ๊ฐ์ AudioTrack์ dragํ์ ๋ ์ฎ๊ธธ ์ ์๋ ์์น๋ฉด ์์์ด ๋จ๋๋ก ๊ตฌํํ์ต๋๋ค. - dragover, dragenter, dragleave๋ก ์์์ left๊ฐ๊ณผ width๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ display์์ฑ์ ๋ค๋ฅด๊ฒ ์ ์ฉํ์ต๋๋ค. * style: [FE] AudioTrackSetion style ์์ - ์๋ฆฐ ๊ตฌ๊ฐ๋ผ๋ฆฌ ๊ตฌ๋ถ์ด ๋์ง ์์์ border๋ฅผ ์ถ๊ฐํ์ต๋๋ค. * feat: [FE] AudioTrackSection drag ์ด๋ฒคํธ ์ ์ฉ - ๊ธฐ์กด์ dragstart ํ์ ๋ dataTransfer๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ฐ dragover ์ด๋ฒคํธ์์๋ getData๋ฅผ ํ ์ ์์ด์ store์์ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ์ฅํ๋๋ก ์์ ํ์ต๋๋ค. - afterimage๋ฅผ ์ํ dragover ์ด๋ฒคํธ ์ถ๊ฐ - drag์์ ์์ ์์ drop์ด ์๋๋ ๋ฌธ์ ๋ก drop ์ด๋ฒคํธ๋ ์ถ๊ฐํ์ต๋๋ค. * style: [FE] IconButton ์ปดํฌ๋ํธ์ cursor:pointer ์คํ์ผ ์ ์ฉ - IconButton ์ปดํฌ๋ํธ๋ ๊ธฐ๋ณธ์ผ๋ก cursor:pointer๋ก ๋๋๋ก ์์ ํ์ต๋๋ค. * feat: [FE] SectionDragStartData ์์ฑ์ ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ - ์์ค๋ฆฌ์คํธ์์ ๋๋๊ทธํ ๊ฒฝ์ฐ์๋ prevCursorTime์ด ์์ด์ null ํ์ ์ถ๊ฐ * refactor: [FE] DragUtil ๊ตฌํ - ๊ตฌ๊ฐ ์ด๋ํ ๋ dragover, drop์์ ์ค๋ณต๋๋ ์ฝ๋ ๋ชจ๋ํ ์์ผฐ์ต๋๋ค. * refactor: [FE] SectionEffectList render() ์์ - IconButton ์ปค์คํ ์๋ฆฌ๋จผํธ ์ฌ์ฉ * refactor: [FE] SourceList ๋๋๊ทธ์ค ๋๋กญ ๊ด๋ จ ํจ์ ์ถ๊ฐ - addTrackSectionFromSource()๋ฅผ ์ญ์ ํ๊ณ ํ์ฌ ๋ฐฉ์์ ๋ง๊ฒ ์๋ก์ด ํจ์๋ค์ ์ถ๊ฐํ์ต๋๋ค. - moveCommand()์ ํ๋ผ๋ฏธํฐ๋ฅผ sectionId -> trackSection์ผ๋ก ์์ ํ์ต๋๋ค. - ํ์ฌ ์คํฌ๋กค ์๊ฐ๊ณผ ์์น๋ฅผ ๊ตฌํ ์ ์๋ getCurrentScrollAmount, getCurrentScrollTime ํจ์ ๊ตฌํ * refactor: [FE] SourceList MoveCommand ํ์์ผ๋ก ๋ณ๊ฒฝ - SouceList์์๋ ๊ตฌ๊ฐ ์ด๋ ๊ธฐ๋ฅ์ฒ๋ผ ๋์ํ๋๋ก ๋ก์ง์ ์์ ํ์ต๋๋ค. * refactor: [FE] PasteCommand, SplitCommand TRACK_CHANNEL ์ฑ๋ ์ถ๊ฐ - ์ฌ์๊ด๋ จ๋ ์ฝ๋๋ผ๊ณ ๋ค์ด์ ์ง์ ๋ TRACK_CHANNEL ์ฑ๋์ ๋ค์ ์ถ๊ฐํ์ต๋๋ค. * refactor: [FE] MoveCommand SourceList ๊ด๋ จ ์กฐ๊ฑด๋ฌธ ์ถ๊ฐ - SourceList์์ drag๋ SectionDragStartData๋ trackSection์ id๊ฐ์ด 0์ผ๋ก ์ ์ฅ๋์ด ์์ด์ ์กฐ๊ฑด๋ฌธ์ผ๋ก removeSection์ ์คํํ๋๋ก ์์ ํ์ต๋๋ค. close #70 * feat: [FE] ํธ๋ ์ถ๊ฐํ๊ธฐ ์ปค๋งจ๋ ๊ตฌํ ๋ฐ ๋ฉ์ธํ์ด์ง ๋ฆฌํฉํ ๋ง (#127) * fix: [FE] ์คํฌ๋กค์ ๊ตฌ๊ฐ ๋๋๊ธฐ ๋ฒ๊ทธ ์์ - ์คํฌ๋กค์ ๊ตฌ๊ฐ ๋๋๊ธฐํ๋ฉด ์คํฌ๋กค ์์น๊ฐ ๋ฐ์๋์ง ์์ ์ค์๋ ํ๋ ๋ฒ๊ทธ ์์ * style: [FE] ๋ฉ์ธํ์ด์ง ๋ ์ด์์ ๋ฐ ๋ฐ์ํ ์คํ์ผ ์์ - ZoomBar, AudioMeter ์์น ์กฐ์ - ๋ฉ์ธํ์ด์ง ๋ ์ด์์ ๋ฐ์ํ ์ฌ์ด์ฆ ์กฐ์ * refactor: [FE] iconButton ์ด๋ฒคํธ ์์ ์ฒ๋ฆฌํ๋๋ก ์์ - ๊ธฐ์กด์ ์ด๋ฒคํธ ํค๋ฅผ ํ์ ์ปดํฌ๋ํธ์ ๋ชจ๋ ์ ๋ฌํด์ผํ๋ ๋ฐฉ์์์ ์ด๋ฒคํธ ์์ ๋ฐฉ์์ผ๋ก ์์ด์ฝ ๋ฒํผ ์์ * refactor: [FE] command ๋ฆฌํฉํ ๋ง - command ๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ ๊ด๋ จ ์๋ฌ ๋ฐ์ ์ด์ ํด๊ฒฐ - ๋ชจ๋์ ๋ด๋ณด๋ผ ๋ export default๋ก ๋ด๋ณด๋ด์ ์ฐธ์กฐํ๋ ๊ณณ์์ destructureํด์ ์ฌ์ฉํ ์ ์๋๋ก ์์ - Command ์ธํฐํ์ด์ค ๋ค์ด๋ฐ ๋ณ๊ฒฝ * refactor: [FE] Main ์ปดํฌ๋ํธ ๋ฆฌํฉํ ๋ง - ์ฝ๋ ์ ์ง๋ณด์ ๋ฐ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํด Main ์ปดํฌ๋ํธ๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉ์ผ๋ก ๋ถ๋ฆฌ * style: [FE] Main ์ปดํฌ๋ํธ ๋ถ๋ฆฌ๋ก ์ธํ ์คํ์ผ ์์ - ๋ณธ๋ฌธ ๋ด์ฉ * feat: [FE] ์ด๋ฒคํธ ํ์ ์ ์ ์ถ๊ฐ - TrackAddMenu click ์ด๋ฒคํธ ํค ์ถ๊ฐ - TrackScroll List scroll ์ด๋ฒคํธ ํค ์ถ๊ฐ ๋ฐ scroll ์ด๋ฒคํธ ์ถ๊ฐ * refactor: [FE] Main ์ปดํฌ๋ํธ์์ TrackList, TrackOptionList ๋ถ๋ฆฌ - ํธ๋ ์ถ๊ฐ๋ก ์ธํ ์ ์ฒด ๋ ๋๋ง์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฆฌ๋ ๋๋ง์ด ํ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌ - ์ปดํฌ๋ํธ ๋ถ๋ฆฌ๋ก ์ธํ ์คํ์ผ ์์ * feat: [FE] StoreType ์ถ๊ฐ ์ ์ - trackList ์ ๋ฐ์ดํธ๋ก ์ ๋ณด๋ฅผ ์ํ TRACK_LIST_CHANNEL ์ถ๊ฐ * feat: [FE] AddTrackCommand ์ ์ - ํธ๋ ์ถ๊ฐํ๊ธฐ ์ปค๋งจ๋ ์ ์ - excute, undo์ ํธ๋์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๊ณ , TRACK_LIST_CHANNEL์ publishํ์ฌ trackList ๋ณ๊ฒฝ๋ด์ฉ์ ๋ ๋๋ง ํ๋๋ก ๊ตฌํ * feat: [FE] CommandController ์ ์ - Command ๊ด๋ จ ์์ ์ ์ํํ๋ CommandController ์ ์ - ๊ธฐ์กด Controller์ ์ญํ ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ Command ๊ด๋ จ ์ฑ ์์ CommandController๋ก ๋ถ๋ฆฌ * feat: [FE] AudioTrackMenu ํธ๋ ์ถ๊ฐํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - ํธ๋ ์ถ๊ฐํ๊ธฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด AddTrackCommand๋ฅผ ์คํํ๋๋ก ๊ตฌํ - ํธ๋ ์ถ๊ฐํ๊ธฐ๋ก ์ธํ ํธ๋ ๋ฆฌ๋ ๋๋ง์ ํธ๋ ๋ฆฌ์ฌ์ด์ฆ ๋ก์ง ๋ณ๊ฒฝ * refactor: [FE] Controller ๋ฆฌํฉํ ๋ง - Controller์์ Command ๊ด๋ จ ํจ์ CommandController๋ก ์ด๋ * fix: [FE] ํธ๋ ๋๋๊ธฐ redo์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฉ์ถ๋ ๋ฒ๊ทธ ํด๊ฒฐ - ์์ฑ์ํจ์ ๋ด์์ element๋ฅผ ํ๋ฒ ์ฐธ์กฐํ๊ณ , ์ดํ์ ๋ฆฌ๋ ๋๋ง์ ํตํด ์ฐธ์กฐ๋ฅผ ์์ด๋ฒ๋ ค์ ๋ฐ์ํ๋ ๋ฌธ์ ํด๊ฒฐ * fix: [FE] ํธ๋ ์ด๋ํ๊ธฐ ๋ฐ ์ฌ์๋ฒํผ ๋ฏธ๋์ ๋ฒ๊ทธ ์์ (#129) - ์ต์ด ์์ค์์ ํธ๋์ผ๋ก ๋๋๊ทธ์ค๋๋ํ ๋, ์์น๊ฐ์ ์ฐพ์ง ๋ชปํ๋ ๋ฒ๊ทธ๋ฅผ initPosition์์น ๋ฐ trackWidth ์ฌ๊ณ์ฐ์ ํตํด ๋ฒ๊ทธ ์์ - playBackTools์์ ์์ด์ฝ ๋ฒํผ delegation ์ ์ฉํ์ฌ ๋ฒ๊ทธ ์์ * feat: [FE] ํธ๋ ์ถ๊ฐํ๊ธฐ ์ปค๋งจ๋ ์์ ๋ฐ ํธ๋ ์ญ์ ํ๊ธฐ ์ปค๋งจ๋ ๊ตฌํ (#132) * refactor: [FE] ํธ๋ ์ถ๊ฐํ๊ธฐ ์ปค๋งจ๋ trackIndex๋ฅผ ๊ณ ๋ คํ์ฌ ๋ก์ง ๋ณ๊ฒฝ - store์ ํธ๋ ๋ฆฌ์คํธ, ํธ๋ ์ธ๋ฑ์ค ์ค์ ํจ์ ์ ์ - controller์ ํธ๋ ๋ฆฌ์คํธ์์ pop๊ณผ ๋์์ ํธ๋ ์ธ๋ฑ์ค๋ ์ด๊ธฐํ ํด์ฃผ๋ ํจ์ ์ ์ - AddTrackCommand ์ธ๋ฑ์ค๋ฅผ ๊ณ ๋ คํ์ฌ excute, redo ๋ก์ง ๋ณ๊ฒฝ * refactor: [FE] CommandController ์คํ ์์ - CommandController ์คํ ์์ ๋ฐ deleteTrackCommand ์คํ ํจ์ ์ถ๊ฐ * feat: [FE] Controller ํธ๋๋ฆฌ์คํธ push, popํจ์ ์ ์ - ํธ๋ ์ถ๊ฐํ๊ธฐ, ์ญ์ ํ๊ธฐ ์ ์ธ๋ฑ์ค๋ฅผ ๊ณ ๋ คํ๊ธฐ ์ํด ํธ๋๋ฆฌ์คํธ pop, push ํจ์ ์ ์ * feat: [FE] ํธ๋ ์ญ์ ํ๊ธฐ ์ปค๋งจ๋ ์ ์ - ํธ๋์ ์ญ์ ํ๋ ์ปค๋งจ๋ ์ ์ * feat: [FE] ํธ๋ ์ต์ ๋ฉ๋ด ์ญ์ ํ๊ธฐ ๋ฒํผ ๊ธฐ๋ฅ ํ์ฑํ - ์ญ์ ํ๊ธฐ ๋ฒํผ ํด๋ฆญ ์ deleteTrackCommand ์คํํ๋๋ก ๋ฆฌ์ค๋ ์ถ๊ฐ * feat: [FE] Controller ํธ๋ ์ ๊ฑฐ, ํธ๋ ์ฝ์ ์ ์ - ํธ๋ ๋ฆฌ์คํธ์์ ํธ๋ ID๋ก ์๋ณ๋๋ ํธ๋์ ์ ๊ฑฐํ๋ ํจ์ ์ ์ - ํธ๋ ๋ฆฌ์คํธ์์ ์ฝ์ ํ๊ณ ์ ํ๋ ์ธ๋ฑ์ค ๊ฐ์ ํตํด ํด๋น ์์น์ ์ฝ์ ํด์ฃผ๋ ํจ์ ์ ์ * refactor: [FE] ํธ๋ ์ญ์ ํ๊ธฐ ์ปค๋งจ๋ ๋ก์ง ๋ณ๊ฒฝ - ํธ๋ ์ญ์ ํ๊ธฐ ์ปค๋งจ๋ ๋ก์ง์ delete option ํด๋ฆญ ์ ํด๋น ํธ๋์ ์ญ์ ํ๋๋ก ๋ก์ง ๋ณ๊ฒฝ * fix: [FE] ํธ๋ ์ญ์ ํ๊ธฐ ์ปค๋งจ๋ undo ์ค์๋ ๋ฒ๊ทธ ํด๊ฒฐ - Controller insertTrack ๋ก์ง์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ฌ ์ ์์น์ ์ฝ์ ๋๋๋ก ์ฝ๋ ์์ * refactor: [FE] ํธ๋ ์ญ์ ํ๊ธฐ alert ๋ฉ์์ง ์ถ๊ฐ - ํธ๋์ด ์ต์ 3๊ฐ ์ด์ ์กด์ฌํ๋๋ก ํธ๋ ์ญ์ ์ alert ๋ฉ์์ง ์ถ๊ฐ close #110 * feat: [FE] ๋ง์ปค ์ข ๋ฃ์์ ์ด๋ ๋ฐ ์ค๋์ค ๋ฐ๋ณต ์ฌ์ ๊ตฌํ, ์์ผ๋ก ๊ฑด๋๋ฐ๊ธฐ ๋ฒ๊ทธ ์์ (#131) * feat : [FE] ์ํ๋ ์๊ฐ์ผ๋ก ๋ง์ปค ์ฎ๊ธฐ๊ธฐ ์ํด setMarkerWidth ์์ - ๋งจ ๋ง์ง๋ง ๊ฑด๋๋ฐ๊ธฐ, loop์ ๋ง์ปค๋ฅผ ์ํ๋ ์๊ฐ์ผ๋ก ์ด๋ํ๊ธฐ ์ํจ - number ๋ฐฐ์ด์ ๋๊ฒผ์ ๋ ๋ ๋ฒ์งธ ๊ฐ์ด 1์ด๋ฉด ์ฒซ๋ฒ์งธ ๊ฐ์ผ๋ก ํ ๋นํ๋๋ก ์์ . * feat : [FE] ๋งจ ๋ค๋ก ๊ฑด๋๋ฐ๊ธฐ์ ๋ง์ปค์ด๋, loop ๊ตฌํ - ๋งจ ๋ค๋ก ๊ฑด๋๋ฐ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง์ ์๋ ๋ง์ปค ์๊ฐ์ผ๋ก ์ด๋. - ๊ตฌ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด AudioTrack์ ์๋ calculateTrackWidth ํจ์๋ฅผ ๋ณต์ฌํด ๊ฐ์ ธ์์ ์ฌ์ฉํ๋๋ฐ ํ์ ๋ฐ๋ก ๋นผ๊ฑฐ๋ ํด์ผํ ๊ฒ. - loop๋ isRepeat์ ์ํ์ markerTime์ ์์น๋ฅผ ๊ณ์ํด์ ํ๋จํด ๋์ํ๋๋ก ํจ. - loop๊ฐ ๋ผ์์ง ์์ ๋๋ ๋ง์ง๋ง ์๊ฐ์์ ๋ฉ์ถค. - loop์ผ ๋๋ ๋ง์ง๋ง ์๊ฐ์์ ๋ค์ ์ฒ์์ผ๋ก ๋์๊ฐ. ํ์ loop์ start์ endTime์ ์ง์ ํ ์ ์๊ฒ ๋๋ฉด ์์ ํ์. close #24, close #29, close #111 * fix: [FE] ํธ๋ ์ ํ๊ธฐ๋ฅ ๊ตฌํ, ์ข์ฐ ๋จ์ถํค ๋ฒ๊ทธ ์์ , backend ํ๊ฒฝ ์ญ์ (#130) * refactor: [FE] ์ฌ์์ค์ command ์คํ ์๋๋๋ก ์์ - isPause๋ฅผ ํ์ธํ์ฌ ์ฌ์์ค์ command๊ฐ ์คํ๋์ง ์๋๋ก ๋ณ๊ฒฝ - CommandControllers์ executeMoveCommand() ์ถ๊ฐ - excute -> execute๋ก ๋ณ๊ฒฝ * refactor: [FE] moveCommand -> CommandController๋ก ๋ณ๊ฒฝ * style: [FE] excute -> execute๋ก ๋ณ๊ฒฝ - excute -> execute๋ก ๋ณ๊ฒฝ * refactor: [FE] left, right ๋จ์ถํค preventDefault() ์ค์ - left, right keydown์ ์คํฌ๋กค์ด ์์ง์ด๋ ๋ฌธ์ ํด๊ฒฐ * feat: [FE] ํธ๋ ์ ํ๊ธฐ๋ฅ ๊ตฌํ - ํธ๋์ ์๋ฌด ๊ตฌ๊ฐ๋ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ํธ๋์ ์ ํํด์ ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ์ ์๋ ๊ธฐ๋ฅ ๊ตฌํ - AudioTrack ์ปดํฌ๋ํธ์ track-select-line ์๋ฆฌ๋จผํธ๋ฅผ ์ถ๊ฐํด์ ํ์ฌ store์ SelectTrackData๋ฅผ ํ์ธํ์ฌ left, display ์์ฑ์ ๋ณ๊ฒฝ - SelectTrackData๋ ์ด๋ค ํธ๋์ ์กด์ฌํ๋์ง ํ์ธํ๊ธฐ ์ํ trackId, paste command ํ ๋ ํ์ํ trackStartTime์ธ selectedTime์ด ์ ์ฅ๋์ด ์์ต๋๋ค. - ํธ๋ ์ ํ์ focus ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ ์ด๊ธฐํ ๋๋๋ก ๊ตฌํํ๊ณ , ํธ๋์์ญ์ด ์๋ ๋ค๋ฅธ focusList reset ๊ตฌ์ญ์ ํด๋ฆญํ ๋๋ ์ด๊ธฐํ๋ฉ๋๋ค. * refactor: [FE] PasteCommand์ ํธ๋์ ํ ๊ด๋ จ ์กฐ๊ฑด๋ฌธ ์ถ๊ฐ - ์ ํ๋ ๊ตฌ๊ฐ์ด 1๊ฐ์ด๊ฑฐ๋ ํธ๋์ ์ ํํ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ๊ตฌํํ์ต๋๋ค. * feat: [FE] selectTrackData๊ด๋ จ controller, store ์์ - ํธ๋์ ํ ๊ด๋ จ SelectTrackData ๊ด๋ จ ํจ์๋ค์ ์ถ๊ฐํ์ต๋๋ค. - focus ์ ํ ๊ธฐ๋ฅ ๊ด๋ จํ์ฌ ์กฐ๊ฑด์ ๋ฐ๋ผ selectTrackData๊ฐ reset๋๋๋ก ์์ ํ์ต๋๋ค. * chore: [BE] backend ํ๊ฒฝ ์ญ์ - ํ๋ก์ ํธ ์ค๊ณ ๋ณ๊ฒฝ์ผ๋ก ์ธํ backend ํ๊ฒฝ ์ญ์ Co-authored-by: Woojin Shin <[email protected]> close #7 * Update README.md * Update README.md Co-authored-by: Woojin Shin <[email protected]> Co-authored-by: pieisland <[email protected]> Co-authored-by: Jeongeun-Choi <[email protected]>
Week2
Week1
deploy: 1์ฃผ์ฐจ ๋ฐฐํฌ (#56) * ์๋ฒ ์ ์ ํ์ผ ์๋น์ค ์ถ๊ฐ (#40) * chore: [FE] ์นํฉ ๋น๋ ๊ฒฝ๋ก ์์ ์นํฉ ๋น๋ ๊ฒฝ๋ก๋ฅผ ๋ฐฑ์๋ ์ ์ ํ์ผ ๊ฒฝ๋ก๋ก ์์ * chore: [BE] ์๋ฒ ์ ์ ํ์ผ ๋ฏธ๋ค์จ์ด ๋ฑ๋ก ์ ์ ํ์ผ ์์ฒญ์ ์๋ตํ ์ ์๋๋ก ๋ฏธ๋ค์จ์ด ๋ฑ๋ก close #38 * Update README.md * Modal ์ปดํฌ๋ํธ ๊ตฌํ (#41) * feat: [FE] Modal Close Event ๊ตฌํ Modal ๋ฐฐ๊ฒฝํ๋ฉด์ ๋๋ฅด๊ฑฐ๋ ์ทจ์ ๋ฒํผ์ ๋๋ ธ์๋ Modal ์ฐฝ์ด ๋ซํ๋ ํจ์๋ฅผ ๊ตฌํํ์ต๋๋ค. * style: [FE] Modal Style ์ถ๊ฐ - Modal conent๊ฐ ์ ์ค์์ ์ค๋๋ก ๊ตฌํํ์ต๋๋ค. - ์์ฃผ ์ฐ์ผ ๊ฒ ๊ฐ์ ์์์ ๋ฐ๋ก ๋ณ์๋ก ๋์์ต๋๋ค. * style: [FE] Modal-content์ display ์ถ๊ฐ class ์ด๋ฆ์ด modal-content์ธ ์์ญ์ display๋ฅผ ์ถ๊ฐํ์ฌ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ ํ๋๋กํ์ต๋๋ค. * style: [FE] Modal buttons css ์ถ๊ฐ Modal buttons css ๋ด์ฉ ์ถ๊ฐํ์ต๋๋ค. * style: [FE] ์ค๋ณต๋ border ์ญ์ ์ค๋ณต๋ boorder๋ฅผ ์ญ์ ํ์ต๋๋ค. * style: [FE] css ์ ๋ ฌ css ์ ๋ ฌ์ ํ์ต๋๋ค. * fix: [FE] Modal ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ ๊ณ ๋ คํ์ฌ ๋ค์ ์์ฑ - modal์ title๊ณผ type์ ๋ฐ์ ์ ์์ต๋๋ค. - modalContents์ ๋ฐ์ type์ ๋ฃ์ด ์ค ์ ์์ต๋๋ค. - modal-buttons์๋ type์ ๋ฃ์ด์ค์ผํฉ๋๋ค. * feat: [FE] ModalContents Object ์์ฑ - modal์์ ๋ฐ์ type์ ํค๋ก ์ค์ ํด์ค๋ค. - ํค๊ฐ์ modal ์์ ๋ฃ์ ์ปดํฌ๋ํธ๋ฅผ ๋ฃ์ด์ค๋๋ค. * style: class name ์ถ๊ฐ ํ์ํ class name์ ์ถ๊ฐํ์ต๋๋ค. * feat: [FE] Modal buttons ๋ถ๋ฆฌ - ํ๋ ์ฝ๋ฉ์ ํ์ฌ ๊ฐ ๋ชจ๋ฌ์ type์ ๋ง๊ฒ ์ถ๋ ฅ๋๋ ๋ฒํผ์ ๋ง๋ค์์ต๋๋ค. * feat: attributeChangedCallback ํจ์ ์ถ๊ฐ attributeChangedCallback ํจ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค. close #37 * feat: [FE] Sidebar Source List ์ปดํฌ๋ํธ ์ ์ (#42) * <feat>: [FE] Sidebar ์ปดํฌ๋ํธ - sidebar ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ต๋๋ค. - source list์ ์ฌ์์๊ฐ ์ ๋ณด, ๋จ์ถํค ์ ๋ณด ๋ฑ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ๋๋ค. * <style>: [FE] Sidebar ์ปดํฌ๋ํธ - sidebar ์ปดํฌ๋ํธ์ ์คํ์ผ์ ์ง์ ํ์ต๋๋ค. * <feat>: [FE] SourceList ์ปดํฌ๋ํธ - sourcelist ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ต๋๋ค. - ๊ฐ๋ณ source ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆด ์ ์ ๋ณด๊ฐ ๋ํ๋ฉ๋๋ค. * style: [FE] SourceList ์ปดํฌ๋ํธ - sourcelist ์ปดํฌ๋ํธ์ ์คํ์ผ์ ์ง์ ํ์ต๋๋ค. close #14 * feat: [FE] Sidebar TimeInfo ์ปดํฌ๋ํธ ์ ์ (#43) * <feat>: [FE] Sidebar ์ปดํฌ๋ํธ - sidebar ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ต๋๋ค. - source list์ ์ฌ์์๊ฐ ์ ๋ณด, ๋จ์ถํค ์ ๋ณด ๋ฑ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ๋๋ค. * <style>: [FE] Sidebar ์ปดํฌ๋ํธ - sidebar ์ปดํฌ๋ํธ์ ์คํ์ผ์ ์ง์ ํ์ต๋๋ค. * <feat>: [FE] SourceList ์ปดํฌ๋ํธ - sourcelist ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ต๋๋ค. - ๊ฐ๋ณ source ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆด ์ ์ ๋ณด๊ฐ ๋ํ๋ฉ๋๋ค. * style: [FE] SourceList ์ปดํฌ๋ํธ - sourcelist ์ปดํฌ๋ํธ์ ์คํ์ผ์ ์ง์ ํ์ต๋๋ค. * feat: [FE] TimeInfo ์ปดํฌ๋ํธ ์ ์ - timeinfo ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ์ต๋๋ค. - playTime, totalTime, cursorTime์ 00.00.000 ์ผ๋ก ์ง์ ํด๋์์ต๋๋ค. - string์ผ๋ก ํ์ฌ ๋ณํ์ด ํ์ํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค. * style: [FE] TimeInfo ์ปดํฌ๋ํธ ์ ์ - timeinfo ์ปดํฌ๋ํธ์ style์ ์ง์ ํ์ต๋๋ค. * style: [FE] Sidebar style ์์ - sidebar์ timeinfo๋ฅผ ์ถ๊ฐํ๋ฉด์ css๋ฅผ ์์ ํ์ต๋๋ค. * refactor: [FE] scss ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ ๋ฐ ์คํ์ผ ์ ๋ ฌ - scss ํ์ผ ์ด๋ฆ์ ๋ชจ๋ style.scss๋ก ๋ณ๊ฒฝํ์ต๋๋ค. - ์คํ์ผ ์ ๋ ฌ์ ํ์ต๋๋ค. * refactor: [FE] ์คํ์ผ import ์ด๋ฆ ๋ณ๊ฒฝ๊ณผ ๋ฆฌ๋ทฐ ์ ์ฉ - scss ํ์ผ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด์ import ํ๋ ๋ถ๋ถ์ ๋ณ๊ฒฝํ์ต๋๋ค. - ๋ฆฌ๋ทฐ ๋ด์ฉ์ ์ ์ฉํ์ต๋๋ค. - sourceList๋ฅผ ํ๋์ string์ผ๋ก ๋ฌถ๋ ๋ถ๋ถ์ ๋ณ๋์ ํจ์๋ก ๋ถ๋ฆฌ - forEach ๋์ reducer ์ฌ์ฉ Co-authored-by: Woojin Shin <[email protected]> close #6 * feat: [FE] Source Upload Form ์ปดํฌ๋ํธ ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ (#44) * feat: [FE] Modal Close Event ๊ตฌํ - ๋ณธ๋ฌธ ๋ด์ฉ Modal ๋ฐฐ๊ฒฝํ๋ฉด์ ๋๋ฅด๊ฑฐ๋ ์ทจ์ ๋ฒํผ์ ๋๋ ธ์๋ Modal ์ฐฝ์ด ๋ซํ๋ ํจ์๋ฅผ ๊ตฌํํ์ต๋๋ค. * style: [FE] Modal Style ์ถ๊ฐ - ๋ณธ๋ฌธ ๋ด์ฉ - Modal conent๊ฐ ์ ์ค์์ ์ค๋๋ก ๊ตฌํํ์ต๋๋ค. - ์์ฃผ ์ฐ์ผ ๊ฒ ๊ฐ์ ์์์ ๋ฐ๋ก ๋ณ์๋ก ๋์์ต๋๋ค. * feat: [FE] source-upload-form ์ปดํฌ๋ํธ ์์ฑ - ๋ณธ๋ฌธ ๋ด์ฉ - ๋๋๊ทธ ์ค ๋๋กญ์ผ๋ก ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. - Click or Drag and Drop ํ ์คํธ๋ฅผ ๋๋ฌ๋ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. * style: [FE] source-upload-form style - ๋ณธ๋ฌธ ๋ด์ฉ source-uplaod-form๊ณผ ๊ด๋ จ๋ style์ ์์ฑํ์ต๋๋ค. * feat: [FE] Analyzer ์ปดํฌ๋ํธ ์์ฑ - ๋ณธ๋ฌธ ๋ด์ฉ ArrayBuffer๋ฅผ ๋ฐ์์ AudioBuffer๋ก ๋ณํ์์ผ์ฃผ๋ ๋ฉ์๋๊ฐ ์์ฑ๋์ด ์๋ค. * style: [FE] Style ์์ฑ ์ ๊ฑฐ - ๋ณธ๋ฌธ ๋ด์ฉ Modal ๊ด๋ จ css๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. * fix: [FE] console.log ์ญ์ - ๋ณธ๋ฌธ ๋ด์ฉ console.log ์ญ์ ํ์ต๋๋ค. * style: [FE] css ์ ๋ ฌ - ๋ณธ๋ฌธ ๋ด์ฉ css ์ ๋ ฌ์ ํ์ต๋๋ค! * fix: [FE] ์ฝ๋ ๋ถ๋ฆฌ - ๋ณธ๋ฌธ ๋ด์ฉ - initDOM ํจ์๋ฅผ ๋ง๋ค์ด DOM์ ํ์ํ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. - initEvent ํจ์๋ฅผ ๋ง๋ค์ด Event๋ฅผ ๋ฑ๋กํ๋ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. * refactor: ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ญ์ - ๋ณธ๋ฌธ ๋ด์ฉ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ญ์ ํ์ต๋๋ค. Co-authored-by: Woojin Shin <[email protected]> close #4, close #21 * feat: [FE] Header ์ปดํฌ๋ํธ ๊ตฌํ (#45) * feat: [FE] Logo ์ปดํฌ๋ํธ ๊ตฌํ - README์ ์๋ AUDI ๋ก๊ณ svg๋ก ๋ณํํ์ - svg ํ๊ทธ๋ก ๋ ๋๋ง, color ์์ฑ์ผ๋ก ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅ - #1 * feat: [FE] IconButton ์ปดํฌ๋ํธ ๊ตฌํ - iconSet์ ๋ชจ๋ icontype ์ ๋ฆฌ - color, size, icontype์ ์์ฑ๊ฐ์ผ๋ก ์ค์ ์ฌ์ฉ - blade icontype๋ง viewBox ๊ฐ์ ๋ค๋ฅด๊ฒ ์ค์ - ๋ณธ๋ฌธ ๋ด์ฉ #2 * feat: [FE] EditorMenu ์ปดํฌ๋ํธ ๊ตฌํ - IconButton ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ - file, edit, play, user ์์ผ๋ก tool ๋ชจ์๋ - play-tools ๊ฐ์ ๊ฒฝ์ฐ ์์ด์ฝ ์์๋ฅผ audiomass๋ฅผ ์ฐธ๊ณ ํ์ - ๋ณธ๋ฌธ ๋ด์ฉ #3 * feat: [FE] Header ์ปดํฌ๋ํธ ๊ตฌํ - Logo, EditorMenu ์ปดํฌ๋ํธ๋ก ๊ตฌํ - ๋ณธ๋ฌธ ๋ด์ฉ * feat: [FE] icontype record_on ์ถ๊ฐ - ๋ น์ ์งํ์ค ์ํ ์์ด์ฝ ์ถ๊ฐ * refactor: [FE] iconSet -> icons๋ก ํ์ผ๋ช ๋ณ๊ฒฝ - Set์ด๋ผ๋ ๋จ์ด๊ฐ ์๋ง๋๊ฒ ๊ฐ์์ iconSet์์ icons๋ก ํ์ผ๋ช ๋ณ๊ฒฝ * refactor: [FE] scss ์ ๋ ฌ - scss ์ ๋ ฌ ๋์ ํ์ -์ฐธ๊ณ : https://webdesign.tutsplus.com/articles/outside-in-ordering-css-properties-by-importance--cms-21685 * style: EOL ์ถ๊ฐ ๋ฐ ์ฃผ์ ์ ๊ฑฐ - ์์คํ์ผ ๋งจ ๋ง์ง๋ง์ ๊ณต๋ฐฑ ์ถ๊ฐ - ์ฃผ์์ ๊ฑฐ * refactor: [FE] EditorMen ๋ด๋ถ ์ปดํฌ๋ํธ ๋ชจ๋ํ - ๋ฐ๋ก state๋ฅผ ๊ด๋ฆฌํด์ผ ๋ ๊ฒ ๊ฐ์์ EditTools, PlaybackTools ์ปดํฌ๋ํธ ๋ชจ๋ํ - ๋ชจ๋ ๋ฒํผ์ icontype๊ณผ ๋์ผํ id๊ฐ์ ์์ฑ์ผ๋ก ์คฌ์ #3 * refactor: [FE] PlaybackTools ์ปดํฌ๋ํธ ๊ตฌํ - EditorMenu์์ ์ฌ์ฉ๋๋ ์ฌ์๊ด๋ จ ๋๊ตฌ๋ค์ ๋ชจ๋ํ ์ํด - ๋ชจ๋ icon-button์๋ icontype๊ณผ ๋์ผํ id๊ฐ์ ์คฌ์ - ๋ณธ๋ฌธ ๋ด์ฉ * refactor: [FE] EditTools ์ปดํฌ๋ํธ ๊ตฌํ - EditorMenu ์ปดํฌ๋ํธ์์ ์ฌ์ฉ๋๋ ํธ์ง๊ด๋ จ ๋๊ตฌ๋ค ๋ชจ๋ํ - ๋ชจ๋ icon-button์ icontype๊ณผ ๋์ผํ id๋ฅผ ๋ฃ์์ * feat: [FE] components index.js์ EditTools, PlaybackTools import - ๋ฐ๋ก ๋ชจ๋ํ ์ํจ EditTools, PlaybackTools ์ปดํฌ๋ํธ ์ ์ฉ * style: [FE] scss ์ ๋ ฌ๋ฐฉ์ ๋ณ๊ฒฝ - justify-content๋ display:flex์ ๊ด๋ จ์๋ค๊ณ ํ๋จํ์ฌ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ณ๊ฒฝ * style: [FE] icontype camelcase ์ ์ฉ - ์ค๋ค์ดํฌ ์ผ์ด์ค -> ์นด๋ฉ์ผ์ด์ค๋ก ๋ณ๊ฒฝ * style: [FE] index-> ์ปดํฌ๋ํธ ๋ช ์ผ๋ก ๋ณ๊ฒฝ - ๊ฐ๋ฐ๋์ค ๋ณด๊ธฐ ๋ถํธํด์ ์ปดํฌ๋ํธ ๋ช ์ผ๋ก ๋ณ๊ฒฝ - ๋ณธ๋ฌธ ๋ด์ฉ * feat: [FE] AudioTrack ์ปดํฌ๋ํธ ์ ์ (#46) * chore: [FE] babel ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ์นํฉ ์ค์ ์ถ๊ฐ - async/await ๋ฑ polyfil์ด ํ์ํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๊ธฐ ์ํด babel ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ์นํฉ babel์ค์ ์ถ๊ฐ * feat: [FE] AudioTrack ์ปดํฌ๋ํธ ์ ์ - AudioBuffer์ ํํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ํํ ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ ๊ตฌํ - ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ฌ์ด์ฆ ์กฐ์ ์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌํ * refactor: [FE] AudioTrack ์ฌ์ด์ฆ ์กฐ์ ์ถ๊ฐ - ์์ ์ปดํฌ๋ํธ์์ height ์์ฑ ๊ฐ์ผ๋ก ์ฌ์ด์ฆ ์กฐ์ ๊ฐ๋ฅํ๋๋ก ์์ * refactor: [FE] ํ ์คํธ ์ฝ๋ ์ญ์ - ์ค๋์ค ํ์ผ ์ ๋ณด ์ฐธ์กฐ๋ฅผ ์ํ input ์ฒ๋ฆฌ ์ฝ๋ ์ญ์ * style: [FE] CSS ์ฐ์ ์์ ์ ๋ ฌ - CSS ํ๋กํผํฐ ์ฐ์ ์์์ ๋ฐ๋ฅธ ์ ๋ ฌ ์ํ * refactor: [FE] ์ฝ๋ ๋ฆฌํฉํ ๋ง - ๋ถํ์ํ ํ ์คํธ ์ฝ๋ ์ญ์ close #18, close #36 * feat: [FE]๋ฉ์ธํ๋ฉด ๋ ์ด์์ ๊ตฌ์ฑ (#48) * chore: [FE] ์นํฉ ๊ฒฝ๋ก alias ์ถ๊ฐ * style: [FE] ๊ณตํต ์คํ์ผ ๋ถ๋ฆฌ - ๊ณตํต์ผ๋ก ์ฌ์ฉ๋ reset, variables, common ํ์ผ ์ถ๊ฐ * refactor: [FE] ๋ฉ์ธํ๋ฉด ๋ ์ด์์ ๊ตฌ์ฑ - ๋ฉ์ธํ๋ฉด ๋ ์ด์์ ์ค์ (ํค๋, ์ฌ์ด๋ ๋ฉ๋ด, ์ค๋์ค ํํ) - ์ ์ฒด์ ์ธ ํ์ผ ๋ค์ด๋ฐ ๋ณ๊ฒฝ close #47 * refactor: [FE] IconButton hover ํจ๊ณผ ์ถ๊ฐ (#50) * feat: [FE] IconButton hover fill ๋ณ๊ฒฝ - hover๋ก fill ์์ ๋ณ๊ฒฝํ๋๋ก scss ์ถ๊ฐ - user-menu์ ๊ฒฝ์ฐ๋ hover์ ์์ ๋ณ๊ฒฝ ๋ง์๋จ์ * feat: [FE] variable์ ์ด๋ก์ ์คํ์ผ๋ณ์ ์ถ๊ฐ - prototype์์ ์ฌ์ฉํ ์ด๋ก์ ๋ณ์๋ก ์ถ๊ฐ * refactor: [FE] Sidebar ์์ (#49) * style: [FE] Sidebar style ์์ - Sidebar style์ ์์ ํ์ต๋๋ค. - css๋ฅผ ๊ธฐํ์๋๋ก ๊ณ ์ณค์ต๋๋ค. - sidebar์ width ๊ฐ์ pixel๋ก ์ฃผ์ด ์๊ฐ ๊ฐ์ด ๋น ์ ธ๋๊ฐ์ง ์๋๋ก ํ์ต๋๋ค. - border-radius ๊ฐ์ 5px ์คฌ์ต๋๋ค. * refactor: [FE] ๋ณ์ ์์ - private ๋ณ์๋ก ์์ ํ์ต๋๋ค. - time ๊ฐ์ ๋ฉค๋ฒ๋ณ์๋ก ๊ฐ์ง๋๋ก ๋ฐ๊ฟจ์ต๋๋ค. * feat: [FE] SourceUploadModal๊ณผ Header ์ฐ๊ฒฐ (#51) * feat: [FE] App์ source-modal-form ๋ฑ๋ก source-modal-form ๋ฑ๋กํ์ต๋๋ค. * style: [FE] display ๊ฐ ์์ display: flex์์ display: none์ผ๋ก ์์ ํ์ต๋๋ค. * feat: [FE] modal์ id ๋ณ๊ฒฝ id๊ฐ modal์ด๋๊ฑธ this.type์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. * feat: [FE] this.addEventListener ์์ this๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. * feat: [FE] Header์ SourceUploadForm ์ฐ๊ฒฐ ์์ค ๋ถ๋ฌ์ค๊ธฐ ์์ด์ฝ์ ๋๋ฅด๋ฉด ํด๋น ๋ชจ๋ฌ์ฐฝ์ด ๋จ๋๋ก ์ฐ๊ฒฐํ์ต๋๋ค! * feat: [FE] Analyzer์ audioFileName ์ ์ฅ Analyzer์ audioFileName๋ ์ ์ฅ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์์ต๋๋ค. * EffectList ์ปดํฌ๋ํธ ์ ์ ๋ฐ ๋ฃจํธ ์ปดํฌ๋ํธ์์ ๋ชจ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ตฌํ (#53) * refactor: [FE] modalContentType ์ ์ - ์ฌ์ฌ์ฉ์ ์ํด์ modal์ ์ปจํ ์ธ ๋ฅผ ๋ฐ๊พธ๋ ๋ถ๋ถ์ ํ์ ์ ์ ์ * refactor: [FE] ModalButtonType ์ ์ - ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ์ฑ์ ๊ณ ๋ คํ ModalButtonType ์ ์ * style: [FE] SourceUploadForm ์คํ์ผ ์์ - Form ๋ชจ๋ฌ์ฐฝ ์ค์๋ฐฐ์น - ์ฌ์ฉ์ฑ์ ํฅ์์ํค๊ธฐ์ฐํด ์์ค๋ถ๋ฌ์ค๊ธฐ ํด๋ฆญ์์ญ ํธ๋ฒํจ๊ณผ * refactor: [FE] Modal ์คํ์ผ ์์ ๋ฐ ๋ค์ด๋ฐ ๋ณ๊ฒฝ - ํ์ค์นผ์ผ์ด์ค ํ์์ผ๋ก ๋ค์ด๋ฐ ๋ณ๊ฒฝ - ๋ชจ๋ฌ ์ปจํ ์ธ ์ค์ ๋ฐฐ์น ๋ฐ ๋ ์ด์์ ์ฌ์กฐ์ * feat: [FE] EffectList ์ปดํฌ๋ํธ ์ ์ - Modal ์ปดํฌ๋ํธ์์ ํ์ ์ ์ ํํด์ ํ์ฉํ ์ ์๋๋ก EffectList ์ปดํฌ๋ํธ ์ ์ * refactor: [FE] Modal ์ปดํฌ๋ํธ ๋ฆฌํฉํ ๋ง - ModalType์ ๋ชจ๋ ํ๋์ ํ์ผ๋ก ์ ๋ฆฌ - Modal ๋ด๋ถ ์ฝ๋๋ฅผ ํจ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ฆฌํฉํ ๋ง * chore: [FE] ํ์ ์คํฌ๋ฆฝํธ alias ์ค์ ์ถ๊ฐ - TS์์ alias ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ์ค์ ์ถ๊ฐ * feat: [FE] ๋ฃจํธ ์ปดํฌ๋ํธ์์ ๋ชจ๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ตฌํ - ๋ฃจํธ ์ปดํฌ๋ํธ์์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์์ * feat: [FE] ๋ฃจํธ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ฑ๋ก ์ ํธ ๊ตฌํ - ํ์ ์ปดํฌ๋ํธ์์ ๋ฃจํธ ์ปดํฌ๋ํธ์ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ ์ ์๋๋ก ์ ํธ ํจ์ ๊ตฌํ * feat: [FE] ์ด๋ฒคํธ ๊ด๋ จ ํ์ ์ ์ - ๋ฃจํธ์์ ์ด๋ฒคํธ ๋ฑ๋ก๊ด๋ จ ํ์ ์ ์ * refactor: [FE] Modal ์ปดํฌ๋ํธ ๋ฃจํธ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๋๋ก ์์ - ๋ฃจํธ ์ปดํฌ๋ํธ์ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋ฑ๋ก * refactor: [FE] ์ฝ๋ ๋ฆฌํฉํ ๋ง - ์ ์ฒด์ ์ธ ํจ์ ๋ฆฌํด ํ์ ์ถ๊ฐ * refactor: [FE] EventDataType ์คํ์์ - ํ์ ์ ์์ ;์ ,๋ก ์์ฑํ ๋ถ๋ถ ์์ close #20 * ํธ์งํ์ผ ์ ์ฅํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ (#54) * feat: [FE] ํ์ผ์ ์ฅ ๊ธฐ๋ฅ ๊ตฌํ - AurrayBuffer, quality(0~1), fileName์ ์ธ์๋ก wavํ์ผ์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ ๊ตฌํ - ์ : 0.5 , ์ค : 0.75, ๊ณ : 1 ๋ก ์ค์ - ์์ถ์ด ๋๋๋ฉด downloadModal์ฐฝ aํ๊ทธ์ ๋ค์ด๋ก๋ ๋งํฌ ์์ฑ - wav, mp3 ํ์ผ์ ์ฐจ์ด์ ์ ์์ง์ธ๊ฒ ๊ฐ์ - wave ํ์ผ : ๋ฌด์์ค ์์, ๋ณดํต ํธ์งํ ๋ ์ฌ์ฉ - mp3 ํ์ผ : ์์ถ์ํจ ์์, ๋ฌด์์ค ์์๋ณด๋จ ์์ง์ด ๋ํ์ง๋ง ์ฉ๋์ด ์ ์ #22 * feat: [FE] EventType์ keyup ์ถ๊ฐ - inputํ๊ทธ๋ก ๋ฒํผ disabled ๋จน์ผ ๋ ํ์ํด์ ์ถ๊ฐํ์ * refactor: [FE] util, components index์ import ์ถ๊ฐ - ํ์ผ ์ ์ฅ๊ธฐ๋ฅ util์ ์ถ๊ฐ - SourceDownload Component ์ถ๊ฐ * refactor: [FE] modal download ํ์ ์ถ๊ฐ - ํ์ผ ์ ์ฅํ๋ modal ์ปดํฌ๋ํธ๋ฅผ ์ํ downloadํ์ ์ถ๊ฐ * style: [FE] SourceDownload ์ปดํฌ๋ํธ scss ์ถ๊ฐ - ๋ชจ๋ฌ ๋ฒํผ์ aํ๊ทธ๋ฅผ ๊ฐ์ธ์ scss๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉ์์ผฐ์ต๋๋ค. #22 * feat: [FE] SourceDownload ์ปดํฌ๋ํธ ๊ตฌํ - keyup ์ด๋ฒคํธ๋ก ํ์ผ์ด๋ฆ์ด ์์ ์ disabled ๋๋๋ก ์ฒ๋ฆฌํ์ต๋๋ค. - ํ์ผ ์์ถ์ค์๋ disabled ๋๋๋ก ์ฒ๋ฆฌํ์ต๋๋ค. - ์ด๋ฒคํธ๋ ์ผ๋จ test์ฉ์ผ๋ก๋ง ์ ์ฉํ๊ณ , ๋ฃจํธ์์ ๊ด๋ฆฌํ๋๋ก ๋ฆฌํฉํ ๋ง์ด ํ์ํฉ๋๋ค... #22 close #22 * feat: [FE] pub/sub ํจํด ํ์ฉ Store ๊ตฌํ ๋ฐ ์์ค ๋ถ๋ฌ์ค๊ธฐ ๊ธฐ๋ฅ ์ฐ๋ (#55) * feat: [FE] Store ํ์ ์ ์ - Store ๊ธฐ๋ณธ ํ์ ์ ์ * feat: [FE] StoreChannel ๊ตฌํ - StoreChannel pub/sub ํจํด์ ์ ์ฉํ์ฌ ๊ตฌํ - StoreChannelType ์ ์ * feat: [FE] Store alias ์ค์ ์ถ๊ฐ - Store alias ์ค์ TS ์ค์ ํ์ผ, ์นํฉ ์ค์ ํ์ผ์ ์ถ๊ฐ * style: [FE] hide ์์ฑ important๋ก ์์ * feat: [FE] StoreChannelType ์ ์ - StoreChannel ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํ ํ์ ์ ์ * feat: [FE] FileUtil ์์ฑ - File๊ด๋ จ ์ฒ๋ฆฌ ํจ์๋ฅผ ๋ชจ๋ํํ Util ์์ฑ * feat: [FE] AudioUtil ์ถ๊ฐ - Audio ๊ด๋ จ ์์ ํจ์๋ฅผ ๋ชจ๋ํํ AudioUtil ๊ตฌํ * refactor: [FE] ์ฝ๋ ๋ฆฌํฉํ ๋ง - ๋ถํ์ํ ํ์ผ ์ ๊ฑฐ - ๋ถํ์ํ ์ด๋ฒคํธ ํ์ ์ ๊ฑฐ * feat: [FE] Source ๋ชจ๋ธ ์ ์ - ์ค๋์ค ํ์ผ ์์ค์ ๋ชจ๋ธ์ ์ * feat: [FE] pub/sub ํจํด ํ์ฉ Store ๊ตฌํ - Store์์ state๋ฅผ ์ ์งํ๊ณ , immutableํ๊ฒ ๋ณ๊ฒฝ๋๋๋ก ์์ - StoreChannel์์ Store๊ฐ publishํ ๋ฐ์ดํฐ๋ฅผ notifyํ๋๋ก ๊ตฌํ * feat: [FE] cotroller ์ ์ - Store์ ์ ๊ทผํ๊ธฐ ์ ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ ์ปจํธ๋กค๋ฌ ์ ์ - ๋น์ฆ๋์ค ๋ก์ง ์ํ ํ, Store์ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ * refacrtor: [FE] Modal ์ปดํฌ๋ํธ ์์ฑ ๋ณ๊ฒฝ - Modal ์ปดํฌ๋ํธ ์์ฑ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ฝ๋ ์์ * refactor: [FE] Modal ์ปดํฌ๋ํธ ์ด๋ฒคํธ ์ถ๊ฐ - ๋ชจ๋ฌ ์ฐฝ close ์ด๋ฒคํธ๋ฅผ ๋ฃจํธ์ ๋ฑ๋ก * refactor: [FE] ์๋ํฐ ๋ฉ๋ด ์์ค๋ถ๋ฌ์ค๊ธฐ ๋ฒ๊ทธ ์์ - ์์ค๋ถ๋ฌ์ค๊ธฐ ๋ชจ๋ฌ ์ฐฝ ๋์๊ด๋ จ ์์ (์์๋ก Dom ์์น๋ฅผ ํด์ ํด๊ฒฐ, ์ถํ ์ด์๋ฅผ ํตํด ์์ ์์ ) * feat: [FE] ์์ค ๋ถ๋ฌ์ค๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ - ์์ค๋ถ๋ฌ์ค๊ธฐ๋ฅผ ํตํด ํ์ผ์ ์ ๋ก๋ํ ํ, Store์ ์ ์ฅ - Store์ ์ ์ฅ ํ, observer๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ * feat: [FE] SourceUploadForm ์์ - ์ด๋ฒคํธ ๋ฑ๋ก์ ๋ฃจํธ์์ ์ฒ๋ฆฌํ๋๋ก ์์ * refactor: [FE] ModalButtonContent์ eventKey ๋ฑ๋ก - eventKey ๋ฑ๋ก close#39, close#31, close#32, close#33, close#34 Co-authored-by: Jeongeun-Choi <[email protected]> Co-authored-by: pieisland <[email protected]> Co-authored-by: Songwonseok <[email protected]>