рд▓рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЪрдпрди 2 рдпреВрдЖрдИ рддрддреНрд╡ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдВ
рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдиреАрдЪреЗ рдкреВрд░рд╛ рдЙрддреНрддрд░ рдкрдврд╝реЗрдВ тЖУрдкреНрд░рд╢реНрди
рдореИрдВ grapesJS рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ ... рдорд╣рд╛рди рдЙрдкрдХрд░рдгред рдореЗрд░реЗ рдкрд╛рд╕ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╢реНрди рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ https://grapesjs.com/рдбреЙрдХреНрд╕/рдореЙрдбреНрдпреВрд▓/Traits.html#рдкрд░рд┐рднрд╛рд╖рд┐рдд-рдирдИ-рд╡рд┐рд╢реЗрд╖рддрд╛-рдкреНрд░рдХрд╛рд░ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ href рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реИред рдХреБрдЫ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ .... <рдПрдХрд╛рдзрд┐рдХ = "рдПрдХрд╛рдзрд┐рдХ" рдЪреБрдиреЗрдВ> <рд╡рд┐рдХрд▓реНрдк рдорд╛рди = "рд╡рд┐рдХрд▓реНрдк"></рд╡рд┐рдХрд▓реНрдк> ....... </рдЪрдпрди рдХрд░реЗрдВ> ! [Selection_208] (https://user-images.githubusercontent.com/25899228/121146044-d65f5980-c83f-11eb-9ae3-99537f0337ff.png) select2 рдЯреИрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди рдореБрдЭреЗ DOM рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ select2 рдШрдЯрдХ...
рдЬрд╡рд╛рдм (3)
рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
tagListElement.on('select2:select', e => this.onChange(e)); // onChange will trigger the onEvent properly
@artf рдзрдиреНрдпрд╡рд╛рдж
рдХреНрдпрд╛ рдЖрдк рдкреНрд░рд╢реНрди рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореБрдЭреЗ DOM рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ select2 рдШрдЯрдХ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП onPostRender/afterRender рдЬреИрд╕рд╛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП createInput рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рдХреБрдЫ
рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @iteniel ред [рдкреНрд░рд╢реНрди] рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрдврд╝рд┐рдпрд╛ рдкреНрд░рд╢реНрди: select2 UI рддрддреНрд╡ рдХреЛ рд▓рдХреНрд╖рдгреЛрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░реЗрдВред рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдИрд╡реЗрдВрдЯ-рд╕рдВрдЪрд╛рд▓рд┐рдд рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП GrapesJS рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ on() рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рд╡рд┐рдзрд┐ рджреЗ...
рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░
рдЗрд╕реА рддрд░рд╣ рдХреА рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реЛрдз рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдЕрдВрдХ #3447
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
1 - рдореИрдВрдиреЗ рдбреЗрдореЛ HTML рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдШрдЯрдХ рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ; 2 - рдФрд░ рдЕрдиреБрдорддрд┐ рджреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: 1; рдЖрдк рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ...
рдЕрдВрдХ #3463
рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдУрд╡рд░рдлреНрд▓реЛ рдЯреВрдЯ рдЧрдпрд╛
рдЪреЗрддрд╛рд╡рдиреА рдкрдврд╝реЗрдВ рдФрд░ рдЕрдЧрд▓реЗ 3 рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдлрд┐рд░ рд╕рдорд╕реНрдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВрдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ https://github.com/artf/grapes...
рдЕрдВрдХ #3287
рд░реИрдкрд░ рд╕реНрдЯрд╛рдЗрд▓
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ ЁЯТп рдХреЗ рд▓рд┐рдП @artf рдмрдзрд╛рдИ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд░реИрдкрд░ (рдмреЙ...
рдЕрдВрдХ #3713
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдШрдЯрдХреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдореБрдЭреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬрдм рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ...
рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ
рд╕рдорд╕реНрдпрд╛ рдХреАрд╡рд░реНрдб рдФрд░ рд▓реЗрдмрд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрдпреВрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рд╢рд┐рдк рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХреЗред
рд╕рд╢реБрд▓реНрдХ рдкреНрд▓рдЧрдЗрди рдЕрдиреБрд╢рдВрд╕рд╛рдПрдБ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИрдВ ...
рдУрдкрди-рд╕реЛрд░реНрд╕ GrapesJS рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ GitHub рдпрд╛ рд╣рдорд╛рд░реЗ рдореБрдлреНрдд рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдЪрд▓рд╛рдПрдВред
рдореБрдлреНрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТрдкреНрд░реАрдорд┐рдпрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдорд░реНрдерди, рдирд┐рдпрдорд┐рдд рдЕрдкрдбреЗрдЯ рдФрд░ рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢рд┐рдк рд╣реЛрддреЗ рд╣реИрдВ - рдПрдХреАрдХрд░рдг рдХрд╛рд░реНрдп рдХреЗ рджрд┐рдиреЛрдВ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред
рдкреНрд░реАрдорд┐рдпрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ тЖТрд╕рдВрдмрдВрдзрд┐рдд рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
рдПрдХ рд╣реА рд╡рд┐рд╖рдп рдкрд░ рдЧрд╣рди рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБред
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
2026 рдореЗрдВ SaaS рдкреЗрдЬ рдмрд┐рд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рдЦрд░реНрдЪ рдЖрддрд╛ рд╣реИ?
2026 рдореЗрдВ SaaS рдкреЗрдЬ рдмрд┐рд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рдЦрд░реНрдЪ рдЖрддрд╛ рд╣реИ? рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╡рд┐рдХрд╛рд╕ рд▓рд╛рдЧрдд, рд╕рдордпрд╕реАрдорд╛, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ GrapesJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
GrapesJS рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рдХреМрд╢рд▓: рдПрдЖрдИ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
рд╣рдордиреЗ GrapesJS рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рд╕реНрдХрд┐рд▓ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ - рдПрдХ рдореБрдлреНрдд, рдУрдкрди-рд╕реЛрд░реНрд╕ рдХреМрд╢рд▓ рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ GrapesJS
рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
Next.js, GrapesJS рдФрд░ AI SDK рдХреЗ рд╕рд╛рде AI-рдЕрд╕рд┐рд╕реНрдЯреЗрдб рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдЗрдВрдЬрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЕрдкрдиреЗ рд╕реНрдерд┐рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рдХреЛ Vercel AI SDK, AI рддрддреНрд╡реЛрдВ рдФрд░ Next.js рдХреЗ рд╕рд╛рде рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди, рдЬрдирд░реЗрдЯрд┐рд╡ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрджрд▓реЗрдВред
рдмреНрд░рд╛рдЙрдЬрд╝ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ
рд╕реАрдзреЗ рдмрд╛рдЬрд╝рд╛рд░ рдкрд░ рдкреНрд▓рдЧрдЗрди рд╢реНрд░реЗрдгреА рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЬрд╛рдПрдБред