рдкреЗрдЬрдХрд┐рдЯ - рд╕реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб GrapesJS рд╕рд╛рдЗрдЯ рдмрд┐рд▓реНрдбрд░, рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрдЪрд╛ рдЧрдпрд╛ред рдЬрд▓реНрджреА рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЕрдВрдХ #2404ЁЯТм рдЙрддреНрддрд░ рджрд┐рдпрд╛рдЦреЛрд▓рд╛ рдЧрдпрд╛ 13 рдирд╡рдореНрдмрд░ 2019рджреНрд╡рд╛рд░рд╛ scott-coates3 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ

рдкреНрд░рд╢реНрди: рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ

рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░рджреНрд╡рд╛рд░рд╛ pouyamiralayiтЭд 1

рдХреНрдпрд╛ рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХреЛрдВ/рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ/рд╕реБрдирдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ? @scottccoates рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ: рдЪреАрдпрд░реНрд╕!

рдиреАрдЪреЗ рдкреВрд░рд╛ рдЙрддреНрддрд░ рдкрдврд╝реЗрдВ тЖУ

рдкреНрд░рд╢реНрди

рдХреНрдпрд╛ рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХреЛрдВ/рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ/рд╕реБрдирдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ? рд╢рд╛рдпрдж рдПрдХ рдШрдЯрдирд╛ рдЬрд┐рд╕рдХреА рдореИрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ? change:content рдЬреИрд╕рд╛ рдХреБрдЫ?

рдореИрдВ рдЕрдкрдиреЗ container рдШрдЯрдХ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рд▓рдХреНрд╖рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрджрд┐ рдмрдЪреНрдЪреЗ рдХрдВрдЯреЗрдирд░ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд▓рдХреНрд╖рдг рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ 1 рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

// in the view
this.el.bind("DOMSubtreeModified",function(){
  alert('changed');
});

рдЬрд╡рд╛рдм (3)

pouyamiralayiтАв 13 рдирд╡рдореНрдмрд░ 2019

рдХреНрдпрд╛ рдореЗрд░реЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХреЛрдВ/рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ/рд╕реБрдирдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ?

@scottccoates рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:

init(){ // inside your model
    this.listenTo(this.components().at(0),'change:prop-name', handler)
}

рдЪреАрдпрд░реНрд╕!

scott-coatesтАв 14 рдирд╡рдореНрдмрд░ 2019

@pouyamiralayi рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ/рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рдЖрдкреВрд░реНрддрд┐ рдХреА рд╣реИ рд╡рд╣ рдорджрдж рдХрд░реЗрдЧрд╛ рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

pouyamiralayiтАв 14 рдирд╡рдореНрдмрд░ 2019

@scottccoates рдпрд╣ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

 editor.on('component:add', model => console.log(model.parent().get('custom-name')))
 editor.on('component:remove', model => console.log(model.parent().get('custom-name')))

рдЪреАрдпрд░реНрд╕!

рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░

рдЗрд╕реА рддрд░рд╣ рдХреА рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реЛрдз рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдЕрдВрдХ #1995

рдмрд╛рдзреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдмрд╕ рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ)

рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдШрдЯрдХ рдореЗрдВ рдХреБрдЫ рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝реЗ рд╣реИрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдШрдЯрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛...

2 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 6 рдордИ 2020

рдЕрдВрдХ #1727

рдмрдЪреНрдЪреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо

рдореБрдЭреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЬрдм рдореИрдВ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реВрдВред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдп...

2 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 16 рдЬрдирд╡рд░реА 2020

рдЕрдВрдХ #1888

рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЕрдВрджрд░ рдХрд╕реНрдЯрдо HTML рдЬреЛрдбрд╝реЗрдВ

рдЖрдкрдХреЛ рдирдорд╕реНрдХрд╛рд░ рдореИрдВ HTML рдФрд░ CSS рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХреА рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо json рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП grapes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рди...

3 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2 рдЕрдкреНрд░реИрд▓ 2020

рдЕрдВрдХ #1908

рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'indexOf' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛

рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рдкрд┐рдЫрд▓рд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛: https://github.com/artf/grapesjs/issues/1772 рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрдкрдХреЗ...

3 рдЙрддреНрддрд░рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 27 рдорд╛рд░реНрдЪ 2020

рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ

рд╕рдорд╕реНрдпрд╛ рдХреАрд╡рд░реНрдб рдФрд░ рд▓реЗрдмрд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрдпреВрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рд╢рд┐рдк рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗред

рд╕рднреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рджреЗрдЦреЗрдВ

рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрди рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИрдВ ...

рдирд┐рдГрд╢реБрд▓реНрдХ рд╡рд┐рдХрд▓реНрдк

рдУрдкрди-рд╕реЛрд░реНрд╕ GrapesJS рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ GitHub рдпрд╛ рд╣рдорд╛рд░реЗ рдореБрдлреНрдд рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдЪрд▓рд╛рдПрдВред

рдореБрдлреНрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТ
рдкреНрд░реАрдорд┐рдпрдо рд╡рд┐рдХрд▓реНрдк

рдкреНрд░реАрдорд┐рдпрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдорд░реНрдерди, рдирд┐рдпрдорд┐рдд рдЕрдкрдбреЗрдЯ рдФрд░ рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢рд┐рдк рд╣реЛрддреЗ рд╣реИрдВ - рдПрдХреАрдХрд░рдг рдХрд╛рд░реНрдп рдХреЗ рджрд┐рдиреЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред

рдкреНрд░реАрдорд┐рдпрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТ

рдмреНрд░рд╛рдЙрдЬрд╝ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ

рд╕реАрдзреЗ рдмрд╛рдЬрд╝рд╛рд░ рдкрд░ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгреА рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЬрд╛рдПрдБред