рдЕрдкреЗрдХреНрд╖рд┐рдд: DOM рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ: DOM рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЕрдЯрдХ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛:
рдЬрдм рддрдХ рдЖрдк DevTools рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ "рд╕реНрдЯрд┐рдХ" рд░рд╣реЗрдЧрд╛ред
рдЯреАрдмреАрдПрдЪ рдпрд╣ рдореЗрд░реЗ рдорди рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдПрд▓рд┐рдореЗрдВрдЯ рдкреИрдирд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдореВрд▓ рддрддреНрд╡ рдпрд╛ рддреЛ рдордВрдбрд░рд╛рдпрд╛ рдпрд╛ рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред 1
рдпрджрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ, рддреЛ рд╣рдо Tree
рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдСрдЯреЛ-рд╣рд╛рдЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рдереЗ ...
https://github.com/facebook/react/blob/95bd7aad7daa80c381faa3215c80b0906ab5ead5/packages/react-devtools-seden/derc/devtools/views/Compenders/Tree.js#L207 -L223223
... рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП hideAfterTimeout: true
рдЬреИрд╕реЗ SelectedElement
рдХрд░рддрд╛ рд╣реИ ...
https://github.com/facebook/react/blob/95bd7aad7daa80c381faa3215c80b0906ab5ead5/packages/react-devtools-seden/derc/devtools/views/Compords/SelectedElement.js#L7575-8989
1 рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓ рддрддреНрд╡ рдкреИрдирд▓ рдорд╛рдЙрд╕ рд╕реЗ "рдЕрдЯрдХ" рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдорд╛рдЙрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗ? рд╢рд╛рдпрдж рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЗрд╕рдХреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдирд╣реАрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рдмреАрдЪ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╕рдВрдЧрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкрд░ рдЕрдЯрдХ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИред
рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХрд╛ рдкреИрдирд▓ рдорд╛рдЙрд╕ рдХреЛ "рдЕрдЯрдХ" рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдореБрджреНрджрд╛ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рд╣реИред :-) рддреЛ рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИред рдореИрдВ рд╣рд░ рджрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВред
... рднреА HideAfterTimeout рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рд╕рдЪ рд╣реИ рдЬреИрд╕реЗ SelectElement рдХрд░рддрд╛ рд╣реИ ...
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред рддреЛ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЛ рдмрджрддрд░ рдмрдирд╛рдХрд░ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ ,
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ "рдпрджрд┐ рдореИрдВ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ рддреЛ" рдЬреИрд╕реЗ рдХрд┐рдирд╛рд░реЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╣рд░ рд╕рдордп рдирд╣реАрдВ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдВ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рдХреЛ рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдВ (рдЕрд╕рдВрдЧрдд рд░реВрдк рд╕реЗ рдорд╛рдЙрд╕рдЖрдЙрдЯ рдкрд░ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ) рд╣рд░ рджрд┐рди рдХрдИ рдмрд╛рд░ред
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЖрдзрд╛ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рд░рд┐рдореЛрдЯ рдЖрдЗрдбрд┐рдпрд╛ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЖрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рдЧреАред рдЪрд▓реЛ рдЯреНрд╡рд┐рдЯрд░ рдкреВрдЫреЛред https://twitter.com/dan_abramov/status/1222178476817633282
рдореИрдВрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдореВрд╡ рдореВрд╡рдореЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ DOM рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП devtools рд╕реЛрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХреАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рд╕реНрдерд╛рди рднрдХреНрддреЛрдВ рдХрд╛ рдЕрджреНрдпрддрди рд╣реЛрд╡рд░ рд░рд╛рдЬреНрдп рдЙрдирдХреЗ _onmousemove рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрджрд▓реЗ рдореЗрдВ _highlightTreeElement рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рд╣реИред
рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ ( _onfocusout
, _onmouseleave
, _ondragstart
, рдФрд░ _reset
) SDK.OverlayModel.hideDOMNodeHighlight()
рдмреБрд▓рд╛рддреА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╣рдЯрд╛рддрд╛ рд╣реИ рдореБрдЦреНрдп рдкреГрд╖реНрда рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВред
EDIT: рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЗрдЯрдордЯреИрдЯрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди onMouseMove
рдФрд░ onMouseLeave
рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рдзреНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдИрд╡реЗрдВрдЯ devtools рдЕрд╡рд▓реЛрдХрди рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЕрдзрд┐рдХ рдлреЛрдХрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдореВрд╡ рдореВрд╡рдореЗрдВрдЯ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ DOM рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП devtools рд╕реЛрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рдХреАред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рд╕реНрдерд╛рди рднрдХреНрддреЛрдВ рдХрд╛ рдЕрджреНрдпрддрди рд╣реЛрд╡рд░ рд░рд╛рдЬреНрдп рдЙрдирдХреЗ _onmousemove рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрджрд▓реЗ рдореЗрдВ _highlightTreeElement рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рд╣реИред
рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ (
_onfocusout
,_onmouseleave
,_ondragstart
, рдФрд░_reset
)SDK.OverlayModel.hideDOMNodeHighlight()
рдмреБрд▓рд╛рддреА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╣рдЯрд╛рддрд╛ рд╣реИ рдореБрдЦреНрдп рдкреГрд╖реНрда рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдВредEDIT: рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЗрдЯрдордЯреИрдЯрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
onMouseMove
рдФрд░onMouseLeave
рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рдзреНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдИрд╡реЗрдВрдЯ devtools рдЕрд╡рд▓реЛрдХрди рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЕрдзрд┐рдХ рдлреЛрдХрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред