npm run dev
src/
some-node/
commands/
some-command.ts
index.ts
plugins/
some-plugin.ts
index.ts
schemas/
some-node.ts
index.ts
some-folders/
index.ts
- model
- schema
- mark: ν μ€νΈ μ€νμΌλ§ (μΌλΆμλ§ μ μ©νλ - κ΅΅κ², κΈ°μΈμ, λ°μ€ ...)
- attrs: λ Έλμ ꡬ쑰μ μμ± (μ 체 λ Έλμ μν₯)
- plugin
- command: μ¬μ¬μ© κ°λ₯ν ν΅μ¬ λ‘μ§ (λ Έλ μμ± λ±)
- schema
- state
- transaction
- view
μλν°μμ μ£Όμν κΈ°λ₯, 곡ν΅μΌλ‘ μ¬μ©ν μ μλ κΈ°λ₯μ λͺ¨μλ ν΄λ
schemas/layout.ts
, definitions/types.ts
μ°Έκ³
μ μνκ³ μ νλ μ€ν€λ§μ κ³΅ν΅ μ€νμΌ μμ±μ μΆκ°νκ³ μ νλ κ²½μ°
- μ€ν€λ§ μΈν°νμ΄μ€ μ μ μ
{Style}Attributes
μΈν°νμ΄μ€ μμ
interface SomeNodeAttributes extends MarginAttributes {
// ... λ€λ₯Έ μμ±
}
- λ
Έλ μ€ν νμ
μ μ μ
{Style}edNodeSpec
μΆκ°
type SomeNodeSpec = NodeSpec & MarginedNodeSpec;
// λλ
interface SomeNodeSpec extends NodeSpec, MarginedNodeSpec {
// ... λ€λ₯Έ μμ±
}
- μ€ν€λ§μ μ μ
const nodeSpec: SomeNodeSpec = {
// ...
attrs: {
// ...
marginTop: { default: 0 },
marginRight: { default: 0 },
marginBottom: { default: 0 },
marginLeft: { default: 0 },
},
// λ©νλ°μ΄ν°μ μ¬μ©ν μ€νμΌ μμ± λͺ
μν΄μΌν¨!
meta: {
applicableStyles: {
margin: true,
},
},
// parseDOM, toDOM μ μ ν μ²λ¦¬
parseDOM: [],
toDOM(node) {},
};