Skip to content

Latest commit

Β 

History

History
111 lines (66 loc) Β· 3.1 KB

File metadata and controls

111 lines (66 loc) Β· 3.1 KB

에디터 λ§Œλ“€κΈ°

이 λ¬Έμ„œλŠ” μ—λ””ν„°μ˜ κΈ°λ³ΈκΈ°λŠ₯ κ΅¬ν˜„ λ˜λŠ” ν™•μž₯을 μœ„ν•œ λ¬Έμ„œμž…λ‹ˆλ‹€.

에디터 μ‹œμž‘ν•˜κΈ°

에디터λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € ν”„λ‘œμ νŠΈλ₯Ό fork ν•΄μ£Όμ„Έμš”. 그런 λ‹€μŒ clone 을 λ°›μ•„μ„œ μ‹€ν–‰ν•΄μ€λ‹ˆλ‹€.

git clone https://github.com/easylogic/editor 
cd editor
npm install 
npm run dev 

λΉŒλ“œ μ‹œμŠ€ν…œ

λΉŒλ“œμ‹œμŠ€ν…œμ€ vitejs κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

총 3κ°€μ§€ ν˜•νƒœλ‘œ 싀행을 ν•©λ‹ˆλ‹€.

  • vite.config.js - 둜컬 개발용 μ„€μ •νŒŒμΌ
  • vite.dist.config.js - npm 배포용 μ„€μ •νŒŒμΌ
  • vite.prod.config.js - github pages 배포용 μ„€μ • 파일

ν…ŒμŠ€νŠΈ ν•˜κΈ°

ν”„λ‘œμ νŠΈλŠ” κ°„λ‹¨ν•˜κ²Œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

npm test 

λ‚΄λΆ€μ μœΌλ‘œλŠ” vitest λ₯Ό μ‚¬μš©ν•΄μ„œ ν…ŒμŠ€νŠΈ ν•©λ‹ˆλ‹€.

xxx.test.js ν˜•νƒœλ‘œ ν…ŒμŠ€νŠΈ νŒŒμΌμ„ μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€. (μ—¬κΈ°λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.)

Sapa 와 이벀트 μ‹œμŠ€ν…œ

Sapa λŠ” 에디터λ₯Ό κ°œλ°œν•˜κΈ° μœ„ν•œ UI μ‹œμŠ€ν…œκ³Ό 이벀트 μ‹œμŠ€ν…œμ΄ 합쳐져 μžˆλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.

Sapa 에 λŒ€ν•œ κ°„λž΅ν•œ μ†Œκ°œλŠ” μ—¬κΈ° λ₯Ό λ΄μ£Όμ„Έμš”. ν•œκΈ€μ€ 개발자, UI라이브러리λ₯Ό λ§Œλ“€λ‹€λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”.

기본적으둜 μ—λ””ν„°μ˜ λͺ¨λ“  UI 와 μ΄λ²€νŠΈλŠ” Sapa λ₯Ό ν†΅ν•΄μ„œ κ΅¬ν˜„λ˜μ–΄ μ§‘λ‹ˆλ‹€.

JS & JSX

μ—λ””ν„°λŠ” js νŒŒμΌμ„ μ‚¬μš©ν•΄μ„œ μž‘μ„±ν•  수 있고 λ•Œμ— λ”°λΌμ„œλŠ” jsx 문법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. jsx μ—μ„œ λ²ˆμ—­λœ ν…œν”Œλ¦Ώμ€ λͺ¨λ‘ html λ¬Έμžμ—΄λ‘œ λŒ€μ²΄λ©λ‹ˆλ‹€.

에디터 κΈ°λŠ₯ λ§Œλ“€κΈ°

이제 μ‹€μ œλ‘œ 에디터λ₯Ό ν™•μž₯ν•΄λ³Ό μ‹œκ°„μž…λ‹ˆλ‹€. μ—λ””ν„°λŠ” μ•„λž˜μ™€ 같은 λͺ‡κ°€μ§€ ν˜•νƒœλ‘œ ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ—λ””ν„°λŠ” 크게 λ Œλ”λ§ μ˜μ—­μ„ ν‘œν˜„ν•˜λŠ” λͺ¨λΈκ³Ό λ Œλ”λŸ¬ κ°€ μ‘΄μž¬ν•˜κ³  에디터 자체λ₯Ό κ΅¬μ„±ν•˜λŠ” μ˜μ—­μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

λ Œλ”λ§ μ˜μ—­

에디터 μ˜μ—­

μœ ν‹Έλ¦¬ν‹° μ˜μ—­

ν”ŒλŸ¬κ·ΈμΈ λ§Œλ“€κΈ°

μœ„μ— λ‚˜μ—΄ν•œ λͺ¨λ“  λ‚΄μš©λ“€μ€ ν”ŒλŸ¬κ·ΈμΈ ν˜•νƒœλ‘œ ν™•μž₯을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

src/plugins/ λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

ν”ŒλŸ¬κ·ΈμΈμ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” 여기을 μ°Έκ³ ν•˜μ„Έμš”.

μœ μš©ν•œ API λͺ¨μŒ

λ Œλ”λ§ λ ˆμ΄μ–΄ 속성 λ³€κ²½ν•˜κΈ°

editor.command('setAttributeForMulti', 'change property', editor.selection.packByValue({
    'background-color': 'red'
}))

this.command('setAttributeForMulti', 'change property', this.$selection.packByValue({
    'background-color': 'red'
}))

ν˜„μž¬ μ„ νƒλœ λ ˆμ΄μ–΄ μ–»μ–΄μ˜€κΈ°

const layer = editor.selection.current;

// or 
const layer = this.$selection.current;