Skip to content

Latest commit

ย 

History

History
93 lines (47 loc) ยท 2.61 KB

File metadata and controls

93 lines (47 loc) ยท 2.61 KB

๋ชจ๋ธ

์—๋””ํ„ฐ๋Š” ๋ Œ๋”๋ง ์˜์—ญ์— ํ‘œ์‹œ๋  ๊ธฐ๋ณธ Model ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ๋Š” src/el/editor/model/* ์—์„œ ํ™•์ธ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—๋””ํ„ฐ๋Š” ํ˜„์žฌ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ชจ๋ธ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐ

๋ชจ๋ธ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒ์† ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

BaseModel - ๋ชจ๋“  ๋ชจ๋ธ์˜ ๋ฒ ์ด์Šค ํด๋ž˜์Šค, ๋ฐ์ดํƒ€ ์ €์žฅ, ๋กœ๋“œ, ํ•˜์œ„ ๋ ˆ์ด์–ด ๊ด€๋ฆฌ

  • BaseAssetModel - ๊ฐœ๋ณ„ ๊ทธ๋ฆฌ๊ธฐ ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ธฐ๋ณธ ์—์…‹ ๊ด€๋ฆฌ
    • MovableModel - ํ™”๋ฉด์ƒ์— ๊ทธ๋ ค์งˆ ์ขŒํ‘œ์™€ ๋ ˆ์ด์•„์›ƒ์˜ ์œ„์น˜ ๊ด€๋ฆฌ
      • GroupModel - layout ์ƒํƒœ ๊ด€๋ฆฌ
        • DomModel - CSS ๋กœ ํ‘œํ˜„๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ ๊ด€๋ฆฌ

๋ชจ๋ธ ์ถ”๊ฐ€

๋ชจ๋ธ์€ ์—๋””ํ„ฐ์—์„œ ํ™•์žฅ(plugin)์„ ํ†ตํ•ด์„œ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” iframe ์ด๋ผ๋Š” itemType ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    class IFrameLayer extends Component { 
        ....
    }

    editor.registerComponent('iframe', IFrameLayer);

๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ชจ๋ธ

Project

ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ตœ์ƒ์œ„ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ํ•˜์œ„ ๋ Œ๋”๋ง ๋ชจ๋ธ ๊ณผ ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์—์…‹์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Artboard

ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ๋‹จ์œ„์˜ ํ‘œํ˜„ ์˜์—ญ์ž…๋‹ˆ๋‹ค.

RectLayer

CSS ๊ธฐ๋ฐ˜์˜ ์‚ฌ๊ฐํ˜•์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. clip-path, background-image, box-shadow ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

CircleLayer

๊ธฐ๋ณธ์ ์œผ๋กœ RectLayer ์™€ ๊ฐ™๊ณ  border-radius ๊ฐ€ ํ•ญ์ƒ 100% ์ธ ๊ฒƒ๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ImageLayer

์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

TextLayer

ํ…์ŠคํŠธ๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

TemplateLayer

๋ณต์žกํ•œ svg, html ํƒœ๊ทธ๋ฅผ ๋ชจ์•„์„œ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํ…œํ”Œ๋ฆฟ ํ˜•ํƒœ๋กœ ์†์„ฑ์„ ๋ฐ”๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SVGPathItem

svg path ๋ฅผ ๊ทธ๋ ค์ฃผ๋Š” ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.

SVGPolygonItem

svg ๊ธฐ๋ฐ˜์˜ ๋‹ค๊ฐํ˜•์„ ๊ทธ๋ ค์ฃผ๋Š” ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.

SVGStarItem

svg ๊ธฐ๋ฐ˜์˜ star ๋ฅผ ๊ทธ๋ ค์ฃผ๋Š” ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.

SVGTextPathItem

svg ๊ธฐ๋ฐ˜์˜ textpath ๋ฅผ ๊ทธ๋ ค์ฃผ๋Š” ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ path ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ path ์—๋””ํ„ฐ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BooleanPathItem

svg ๊ธฐ๋ฐ˜์˜ boolean path ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. boolean path ๊ธฐ๋Šฅ ์ž์ฒด๋Š” skia ์—”์ง„์—์„œ ๋ถ„๋ฆฌ๋œ pathkit.wasm ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„๋˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ ๊ธฐ๋ณธ ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ src/plugins/default-items/index.js ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.