Skip to content

Week1

Compare
Choose a tag to compare
@wooojini wooojini released this 26 Nov 13:15
· 103 commits to master since this release
f6abfaf
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]>