์๋ํฐ๋ ๋ ๋๋ง ์์ญ์ ํ์๋ ๊ธฐ๋ณธ Model ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ธฐ๋ณธ ๋ชจ๋ธ์ ๋ํ ๋ฆฌ์คํธ๋ src/el/editor/model/* ์์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.
์๋ํฐ๋ ํ์ฌ ์๋์ ๊ฐ์ ํํ๋ก ๋ชจ๋ธ์ ๊ด๋ฆฌํฉ๋๋ค.
๋ชจ๋ธ์ ์๋์ ๊ฐ์ ์์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
BaseModel - ๋ชจ๋ ๋ชจ๋ธ์ ๋ฒ ์ด์ค ํด๋์ค, ๋ฐ์ดํ ์ ์ฅ, ๋ก๋, ํ์ ๋ ์ด์ด ๊ด๋ฆฌ
- BaseAssetModel - ๊ฐ๋ณ ๊ทธ๋ฆฌ๊ธฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ๋ ๊ธฐ๋ณธ ์์
๊ด๋ฆฌ
- MovableModel - ํ๋ฉด์์ ๊ทธ๋ ค์ง ์ขํ์ ๋ ์ด์์์ ์์น ๊ด๋ฆฌ
- GroupModel - layout ์ํ ๊ด๋ฆฌ
- DomModel - CSS ๋ก ํํ๋๋ ์ฌ๋ฌ๊ฐ์ง ์์ฑ ๊ด๋ฆฌ
- GroupModel - layout ์ํ ๊ด๋ฆฌ
- MovableModel - ํ๋ฉด์์ ๊ทธ๋ ค์ง ์ขํ์ ๋ ์ด์์์ ์์น ๊ด๋ฆฌ
๋ชจ๋ธ์ ์๋ํฐ์์ ํ์ฅ(plugin)์ ํตํด์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์๋ ์ฝ๋๋ iframe ์ด๋ผ๋ itemType ์ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค.
class IFrameLayer extends Component {
....
}
editor.registerComponent('iframe', IFrameLayer);ํ๋์ ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ์ต์์ ๋ชจ๋ธ์ ๋๋ค. ํ์ ๋ ๋๋ง ๋ชจ๋ธ ๊ณผ ํ๋ก์ ํธ์์๋ง ์ฌ์ฉ๋๋ ์ฌ๋ฌ๊ฐ์ง ์์ ์ ๊ด๋ฆฌํฉ๋๋ค.
ํ๋์ ํ์ด์ง ๋จ์์ ํํ ์์ญ์ ๋๋ค.
CSS ๊ธฐ๋ฐ์ ์ฌ๊ฐํ์ ๊ทธ๋ฆฝ๋๋ค. clip-path, background-image, box-shadow ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์์ฑ์ ๊ฐ์ง๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก RectLayer ์ ๊ฐ๊ณ border-radius ๊ฐ ํญ์ 100% ์ธ ๊ฒ๋ง ๋ค๋ฆ ๋๋ค.
์ด๋ฏธ์ง ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ์ด๋ฏธ์ง๋ฅผ ํํํฉ๋๋ค.
ํ ์คํธ๋ฅผ ํํํฉ๋๋ค.
๋ณต์กํ svg, html ํ๊ทธ๋ฅผ ๋ชจ์์ ๋ ๋๋ง ํ ์ ์๋ ๋ ์ด์ด ์ ๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ํ ํ๋ฆฟ ํํ๋ก ์์ฑ์ ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
svg path ๋ฅผ ๊ทธ๋ ค์ฃผ๋ ๋ ์ด์ด์ ๋๋ค.
svg ๊ธฐ๋ฐ์ ๋ค๊ฐํ์ ๊ทธ๋ ค์ฃผ๋ ๋ ์ด์ด์ ๋๋ค.
svg ๊ธฐ๋ฐ์ star ๋ฅผ ๊ทธ๋ ค์ฃผ๋ ๋ ์ด์ด์ ๋๋ค.
svg ๊ธฐ๋ฐ์ textpath ๋ฅผ ๊ทธ๋ ค์ฃผ๋ ๋ ์ด์ด์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก path ์์ฑ์ ๊ฐ์ง๊ณ ์์ด์ path ์๋ํฐ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
svg ๊ธฐ๋ฐ์ boolean path ๋ฅผ ๊ตฌํํฉ๋๋ค. boolean path ๊ธฐ๋ฅ ์์ฒด๋ skia ์์ง์์ ๋ถ๋ฆฌ๋ pathkit.wasm ์ ์ฌ์ฉํด์ ๊ตฌํ๋์ด์ ธ ์์ต๋๋ค.
์ด์์ผ๋ก ๊ธฐ๋ณธ ๋ชจ๋ธ์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
๋ชจ๋ธ์ ํ์ฅํ๊ธฐ ์ํ ์์ธํ ์ฌํญ์ src/plugins/default-items/index.js ๋ฅผ ์ฐธ๊ณ ํ์ธ์.