React-dnd: рдбреНрд░реИрдЧ рдкрд░ рдХреЛрдИ рдСрдЯреЛ-рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдХреНрддреВре░ 2016  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: react-dnd/react-dnd

рдкреНрд░рдЬрдирди рдХрд░рдирд╛ :
рдХреГрдкрдпрд╛ рд╕рдлрд╛рд░реА рдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (рд╢рд╛рдпрдж рдЖрдИрдИ) рдкрд░ рдЙрджрд╛рд╣рд░рдг рдкреГрд╖реНрда рдЦреЛрд▓реЗрдВ: https://gaearon.github.io/react-dnd/examples-sortable-simple.html
рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓реЗрдВ рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд╣рд░ рд╕реВрдЪреА рдХреЗ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рд░рдЦреЗрдВ, рдлрд┐рд░ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдкреГрд╖реНрда рдХреЛ рдбреНрд░реИрдЧ рдХреЗ рджреМрд░рд╛рди рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рд▓реЗрдХрд┐рди рдирд╣реАрдВред (рдХреНрд░реЛрдо рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЦреБрд▓реА рд╣реИред
рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкреНрд░рд╢реНрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред
http://stackoverflow.com/questions/16822920/scroll- while-using-html5-drag-and-drop

рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ:
рдХреГрдкрдпрд╛ рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ https://github.com/martindrapeau/jQueryDndPageScroll/blob/master/jquery.dnd_page_scroll.js

рд╕рд╛рде рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг
https://jsfiddle.net/0vv7fs63/2/

рдореИрдВ jQuery рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдмрд╕ рджреЛ div (рдкреГрд╖реНрда рдХреЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ) рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдбреНрд░реИрдЧ рдУрд╡рд░/рдЗрд╡реЗрдВрдЯ рджрд░реНрдЬ рдХрд░рдирд╛ рд╕реБрдирдирд╛, рдФрд░ рддрджрдиреБрд╕рд╛рд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА-рд╕реНрдХреНрд░реЙрд▓рдЬрд╝реЛрди рдЕрдм рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдИрдПрдордУ рдбреНрд░реИрдЧ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЛрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХрд╛ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ: https://github.com/azuqua/react-dnd-scrollzone
рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ @darthtrevino

рдХреГрдкрдпрд╛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЗрд╕рдХрд╛ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ? @nossila

@AsceticBoy рдореИрдВ рдЗрд╕рдХреЗ README рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реВрдЪреА рдХрдВрдЯреЗрдирд░ рдХреЛ рдбреНрд░реЙрдк рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рдкреНрд░рдпреБрдХреНрдд: findDOMNode(component).getBoundingClientRect()
рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд╕реВрдЪреА рдХрдВрдЯреЗрдирд░ рдХреЗ рджреЛрдиреЛрдВ рдУрд░ рдХрдм рдерд╛

рддрдм: listContainerDOMNode.scrollLeft += someValue
рд╕реВрдЪреА рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╕реВрдЪреА рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рд╣реИ рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЙрдЗрдВрдЯрд░ рд░рдЦрддрд╛ рд╣реИ рддреЛ рднреА рдХреЛрдИ рд╣реЛрд╡рд░ рдИрд╡реЗрдВрдЯ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЬрдм рд╕реВрдЪрдХ рдЕрднреА рднреА рд╕реВрдЪреА рдХрдВрдЯреЗрдирд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ?

@nossila ty! рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА-рд╕реНрдХреНрд░реЙрд▓рдЬрд╝реЛрди рдЖрдХрд░реНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ :)

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреБрд░рд╛рдирд╛ рдзрд╛рдЧрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ ...

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ react-dnd-scrollzone рдХреЛ WindowScroller react-virtualized рд╕реЗ рдЯрдВрдбреЗрдо рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ WindowScroller , AutoSizer рдФрд░ List рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ; рдФрд░ scrollzone рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ scrollElement рдХреЗ рд╕рд╛рде WindowScroller , рдЬрд╣рд╛рдВ react-dnd-scrollzone рд╕реЗрдЯ рдпрд╣ рддрддреНрд╡ рдпрд╣ рд▓рдкреЗрдЯрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрдЯреЗрдирд░ред рдореИрдВ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░реЙрд▓ рддрддреНрд╡ рдкреНрд░реЛрдк рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЛрд░реНрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА-рд╕реНрдХреНрд░реЙрд▓рдЬрд╝реЛрди рдЕрдм рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдИрдПрдордУ рдбреНрд░реИрдЧ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЛрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдиреАрдЪреЗ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ:

const autoScrollInSafari = (step = 4) => (fn) => {
  const inSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);

  if (inSafari) {
    return function (p, m, c) {
      const scrollDOM = document.querySelector('.your-scroll-dom-class');
      if (scrollDOM) {
        const cursor = m.getClientOffset();
        const rect = scrollDOM.getBoundingClientRect();
        if (cursor.y - rect.top < 50) scrollDOM.scrollTop -= step;
        if (rect.bottom - cursor.y < 50) scrollDOM.scrollTop += step;
        if (cursor.x - rect.left < 50) scrollDOM.scrollLeft -= step;
        if (rect.right - cursor.x < 50) scrollDOM.scrollLeft += step;
      }
      fn.apply(this, [p, m, c]);
    };
  }

  return fn;
};

const myDropSpec = {
  drop() {
    // your drop callback
  },
  hover: autoScrollInSafari((props, monitor, component) => {
    // your hover callback
  }),
}

рдЙрдордореАрдж рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреАред :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рд╕реНрдХреНрд░реЙрд▓рдЬрд╝реЛрди рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рдХрд╛рдВрдЯрд╛ (https://github.com/frontend-collective/frontend-collective-react-dnd-scrollzone) 7.0.2 рддрдХ рдФрд░ рд╕рд╣рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЗ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд░реЗ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред

./node_modules/frontend-collective-react-dnd-scrollzone/lib/index.js
Module not found: Can't resolve 'react-dnd/lib/DragDropContext' in 'X:\WSProjects\sonnys-queue\node_modules\frontend-collective-react-dnd-scrollzone\lib'

@Soundvessel рдЬреЛ react-dnd/lib/cjs/DragDropContext рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЗрд╕реЗ react-dnd рдХреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рд╕реЗ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛?

рд╕реНрдХреНрд░реЙрд▓рдЬрд╝реЛрди рдХрд╛ рдПрдХ рдЕрджреНрдпрддрди рдХрд╛рдВрдЯрд╛ (https://github.com/frontend-collective/frontend-collective-react-dnd-scrollzone) 7.0.2 рддрдХ рдФрд░ рд╕рд╣рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдХреЗ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд░реЗ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреНрд░реИрдЧрдбреНрд░реЙрдкрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред

./node_modules/frontend-collective-react-dnd-scrollzone/lib/index.js
Module not found: Can't resolve 'react-dnd/lib/DragDropContext' in 'X:\WSProjects\sonnys-queue\node_modules\frontend-collective-react-dnd-scrollzone\lib'

@Soundvessel рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реБрдЭрд╛рдП рдЧрдП @darthtrevino рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдерд╛?

рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛: https://gist.github.com/orlandovallejos/ed9c79dd67e96c25cfcc8f1008df9489

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

@orlandovallejos
рд╣реИрд▓реЛ, рдХреНрдпрд╛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? https://react-dnd.github.io/react-dnd/examples/sortable/stress-test

рдореИрдВрдиреЗ рдереЛрдбрд╝реА рдмрд╣реБрдд рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред

@MartinN3 рдпрд╣рд╛рдБ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореЗрд░рд╛ рджреЛрд╕реНрдд рд╣реИ: https://codesandbox.io/s/react-dnd-example-12-s3nnf

https://imgur.com/a/heuPO48

рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ, рдСрдлрд╕реЗрдЯ, рдбрд┐рд╡ рдХрдВрдЯреЗрдирд░ (рд╢рд╛рдпрдж 1 рд╕реЗ рдЕрдзрд┐рдХ), рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдЧрддрд┐ (PX_DIFF рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдлреАрдЪрд░ рдХреНрд░реЛрдо рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рдФрд░ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреАрдПрдирдбреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрд╡рдпрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛: https://gist.github.com/orlandovallejos/ed9c79dd67e96c25cfcc8f1008df9489

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рд╣реИред рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж :)

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

bebbi picture bebbi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rubayethossain picture rubayethossain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vickyvxr picture vickyvxr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gaearon picture gaearon  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

user1736 picture user1736  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ