Xterm.js: рдлрд╝реАрдЪрд░ рдЕрдиреБрд░реЛрдз: рдирд┐рд░реНрдпрд╛рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рд╕рд┐рддре░ 2016  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xtermjs/xterm.js

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ xterm.js рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рд╣рдо xterm.js рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдФрд░ рд╣рд▓реНрдХрд╛ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ xtermjs/xterm-react рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдПрдХ xterm-react npm рдореЙрдбреНрдпреВрд▓ рд╣реИрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ xterm.js рдХреЛ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реЛ рдХреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рджреГрд╢реНрдп рд╣реИред рд╣рдо xterm.js рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рдФрд░ рд╣рд▓реНрдХрд╛ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ xtermjs/xterm-react рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдПрдХ xterm-react npm рдореЙрдбреНрдпреВрд▓ рд╣реИрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдХреЗрд╡рд▓ xterm.js рдХреЛ рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡реЛ рдХреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╡рд╣ рдорд╣рд╛рди рд╣реЛрдЧрд╛ :)

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЦрд░рд╛рдм рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓реАрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ xtem.js рдбреАрдУрдПрдо рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреГрд╢реНрдп рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдореИрдВ рддрд░реНрдХ рдФрд░ рдбреАрдУрдПрдо рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдореИрдВ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ Terminal.UI рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ DOM рдХреЛ рдИрд╡реЗрдВрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ, рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред рдЯрд░реНрдорд┐рдирд▓ рдЯрд░реНрдорд┐рдирд▓.рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдХреАрдкреНрд░реЗрд╕ рдФрд░ рд╕реНрдХреНрд░реЙрд▓, рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдПрдХ рдкреВрд░реНрдг рдЕрд▓рдЧрд╛рд╡ рдХреНрд░рдо рдореЗрдВ рд╣реИред

рдореИрдВ рдЗрд╕ рдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдХреБрдЫ рдкреГрдердХреНрдХрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ: рдореБрд╕реНрдХрд╛рди:

@iMoses рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реА рдЧрдИ рдереАред рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЕрд▓рдЧрд╛рд╡ рдХреА рднреА рдорд╛рдВрдЧ рдХрд░рддрд╛ рд╣реИ: https://github.com/sourcelair/xterm.js/issues/266

рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдмрдВрдзрдиреАрдп рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдЪреНрдЫрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпреВрдкреЛрд░реНрдЯ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛

#285 рд╕реЗ рдЪрд░реНрдЪрд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИред

@iMoses рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреМрди рд╕реЗ рддрд░реАрдХреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реА рд╢рд╛рдЦрд╛ рджреЗрдВред

рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдореИрдВ open рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╡рд┐рдзрд┐ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреЛ рдХреБрдЫ рдореИрдВ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реВрдВрдЧрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрд░реЗ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рдореЗрдВ Interface.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реНрдпреВрдкреЛрд░реНрдЯ рдФрд░ рдХрдВрдкреЛрдЬрд┐рд╢рди рд╣реЗрд▓реНрдкрд░ рдореЗрдВ рдХреБрдЫ рднреА, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ :)

xterm.js рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдпреЗ рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдмреНрд▓рд░, рдлреЛрдХрд╕, рдмрд╛рдЗрдВрдб*, рдЗрдирд┐рдЯрдЧреНрд▓реЛрдмрд▓, рддреИрдпрд╛рд░рдХреЙрдкреАрдб рдЯреЗрдХреНрд╕реНрдЯрдлреЙрд░рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб, рдЗрдиреНрд╕рд░реНрдЯрд░реЛ, рдУрдкрди, рд▓реЛрдбрдПрдбрдСрди, рдирд╖реНрдЯ, рд░рд┐рдлреНрд░реЗрд╢, рдЕрдЯреИрдЪ рдХрд╕реНрдЯрдордХреЗрдбрд╛рдЙрдирд╣реИрдВрдбрд▓рд░, рдХреАрдбрд╛рдЙрди, рдХреАрдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди, рдХреАрдкреНрд░реЗрд╕, рдмреЗрд▓, рд░рджреНрдж рдХрд░реЗрдВред

'рдШрдВрдЯреА' рдФрд░ 'рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рдореЛрдб' рдХреЛ рдпреВрдЖрдИ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ UI рддрддреНрд╡ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП this.viewport рдФрд░ this.element рдХреЛ рд╕реАрдзреЗ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдордореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рдкреА.рдПрд╕.
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рд░реАрдЪ рдПрдХреНрд╕рдЯрд░реНрдо.рдЬреЗрдПрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХреНрд╕рдЯрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░ рджреВрдВрдЧрд╛, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдореИрдВ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдореВрд▓реА рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ refresh рдбреНрдпреВрд░ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░реЗ рди рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛред

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛

рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ https://github.com/sourcelair/xterm.js/issues/266 рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

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

рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рдИрд╡реЗрдВрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдорд╛рдЙрд╕ рдореВрд╡ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдорд╛рдЙрд╕ рд╕рдорд░реНрдерди рд╡рд╛рд▓рд╛ рдЯрд░реНрдорд┐рдирд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдорд╛рдЙрд╕ рдЗрд╡реЗрдВрдЯ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд▓реЛрдЧ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-xterm рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ npm рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ред
рдЖрдк рд╡рд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдореИрдВ рдЪрд╛рд╣реВрдВ рддреЛ рдореИрдВ рдЬреАрдердм рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
https://github.com/farfromrefug/react-xterm

рдзрдиреНрдпрд╡рд╛рдж @farfromrefug! рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо "рддрдмреБрд▓рд╛ рд░рд╕" рд╕реЗ рд╢реБрд░реВ рди рдХрд░реЗрдВред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдЗрдореЛ рджреНрд╡рд╛рд░рд╛ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдореИрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдПрдХ рдмрдВрдж рдореБрджреНрджреЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рдЧреБрд░реЗрдЬ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ xtermjs рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд░рд┐рдПрдХреНрдЯ рд░реЗрдВрдбрд░рд░ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХрдИ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ <text> , <line> , <br> ) рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд░реНрдорд┐рдирд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрдХреЗрдЬ рдПрдХ render(element, HTMLElement) рд╡рд┐рдзрд┐ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП DOM рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ <Terminal> рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рд░рд┐рдПрдХреНрдЯ-рдбреЛрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдШрдЯрдХ render рдкрджреНрдзрддрд┐ рдореЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХреАрдХрд░рдг рдЪрд╛рд╣рддрд╛ рд╣реИ:
https://github.com/alex-saunders/xterm-react-renderer

(рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ WIP рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд╕рдордп рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдкреНрд░рдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

@ рдПрд▓реЗрдХреНрд╕-рд╕реЙрдиреНрдбрд░реНрд╕ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдЧрд░ рд▓реЛрдЧ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ

рдирдорд╕реНрддреЗред рдореИрдВ рд▓рдЧрднрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛрдб рдХреЗ рдФрд░ "рдирдП" рд╣реБрдХ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдиреЛрдб-рдкреАрдЯреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдпреБрдЧреНрдорд┐рдд рд╣реИред рдореИрдВ рдЕрднреА рдХреЛрдИ рдХреЛрдб рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдмрдВрдж, рдЖрдВрддрд░рд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рднреА рдХреЛ рд╣реБрдХ-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдПрдХ рдирдпрд╛ рд╢реЙрдЯ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕