Chrome 59ã«ã¢ããã°ã¬ãŒããããšãreact-dndã¯æ©èœããªããªããŸãã å°ã調ã¹ãŠã¿ããšãChromeã¯ããã©ãã°ãã€ãã³ããããªã¬ãŒããªããªã£ãããã§ããããã¯ã2çªç®ã®ã¢ã€ãã /æéããã©ãã°ããããšãããšãåå¿ãšèª€è§£ãæããŸãã
誰ããåãåé¡ãçµéšããŸããïŒ
ããã§ã¯ãããŸããã ããã¯å®å šã«ããŸãæ©èœããŸãã æ¡åŒµæ©èœãªãã§Chromeãå®è¡ããŠã¿ãŠãã ãã
@theTechie Windowsã®Macã§ãã§ãã¯ããŸãããïŒ Macã§ã¯æ£åžžã«åäœããŠããŸãã
Macã§ãã§ãã¯ããŸããã ç¹å®ã®ãã©ãããã©ãŒã ã«åé¡ããããŸããïŒ
@theTechieäœããã®çç±ã§ãreact-dndã¯éåžžã©ãããdragendããããªã¬ãŒããŸããã ç§ã¯ã«ããã«ãã·ã³ã§ãã¹ãããŸããã1å°ã®Macã§åãåé¡ãçºçãããã¹ãŠã®Windowsã§ãã®åé¡ãçºçããŸãã äœãèãã¯ãããŸããïŒ
Chromeäžã®è€æ°ã®ãã©ãããã©ãŒã Windows8.1 / Windows 7ãšãIE10ããã³IE11ã§ãã¹ãããŸãããããã§åé¡ãªãåäœããŸãã
@ hunterbmt-ã³ã³ãœãŒã«ã«ãšã©ãŒã衚瀺ãããŸããïŒ ã³ã³ããã¹ãã«å¿ããŠGIFãå ±æã§ããŸããïŒ
@theTechieç§ã¯
ãã©ãŠã¶ããã°ããããŠããªã¬ãŒããªãã£ãå Žåãããããããã®åŸã«ããã©ãã°ããæåã§ããªã¬ãŒããããšã§ä¿®æ£ããŸããã
ä»ã®äººããã®åé¡ã«å€±æãããã©ããã¯ããããŸããããã®å Žåã¯ãä¿®æ£ãreact-dndã«ç§»ãããšãã§ããŸãã
Chrome 59ã®å€æŽãã°ã確èªããŸããããäœãèŠã€ãããŸããã§ãããäœãæŽå¯ãããã°ãå ¥åãããã ããã°å¹žãã§ãã
@hunterbmtããã¯ããªãã®ã³ãŒãã«ç¹æã®ãã®ãããããªããšæããŸãã ç§ãreact-dndãè€æ°ã®ã€ã³ã¹ã¿ã³ã¹ã§äœ¿çšããŠããããããã¯ãã¹ãŠChrome59ã§æ£åžžã«åäœããŸãã
æ®å¿µãªããããªããããèµ·ããã®ããã話ãããããšã¯ã§ããŸããã ãã¶ããããã§ã³ãŒããå ±æããŠããããã°ãäœããèŠã€ããŠã¿ãããšãã§ããŸãã
Windowsã®Chrome59.0.3071.86ã§ãåãåé¡ãçºçããŸãã Firefoxã§ã¯æ£åžžã«åäœãã以åã®ChromeããŒãžã§ã³ã§ã¯æ£åžžã«åäœããŸããã package.jsonïŒ
{
"dependencies": {
"react-dnd": "2.1.4",
"react-dnd-html5-backend": "2.1.2",
}
}
çµæã¯2.4.0 / 2.4.1ãšåãã§ã
ãã®ããã¯ã§è§£æ±ºïŒ
const ModifiedBackend = (...args) => {
const instance = new HTML5Backend(...args);
// Fix Chrome 59 not sending a DragEnd after Drop, which other browsers do and react-dnd expects
const originalTopDrop = instance.handleTopDrop;
const originalTopDragEndCapture = instance.handleTopDragEndCapture;
let dragEndTimeout;
instance.handleTopDrop = (e, ...args) => {
dragEndTimeout = setTimeout(() => {
originalTopDragEndCapture(e, ...args);
}, 0);
originalTopDrop(e, ...args);
};
instance.handleTopDragEndCapture = (e, ...args) => {
clearTimeout(dragEndTimeout);
originalTopDragEndCapture(e, ...args);
};
return instance;
};
// Decorate root elements with this
export default DragDropContext(ModifiedBackend);
@awestrokeéåžžã«ãã䌌ãããã¯ã«ãªããŸãããããããã§ããªãé åã«ãã°ãããã©ãã°ã¢ã³ããããããããšåé¡ãçºçããŸããChromeã¯ããã©ãã°ã¢ã³ãããããªã¬ãŒã§ããããã¡ãããããããããããªã¬ãŒãããŸããã 暪ãã確èªããŠããããŸããïŒ
@hunterbmtããããã§ããªããšãªã¢ã«ããããããŠãåé¡ãããŸããã ã©ã®ã€ãã³ããããªã¬ãŒããããã¯ç¢ºèªããŠããŸããããreact-dndã¯ç Žæç¶æ ã«ãªã£ãŠããªãããããã¹ãŠãæ£åžžã«æ©èœããŠããããã§ãã
endDragãããªã¬ãŒããæ¡ä»¶ãåçŽåããããšã«ããããã®åé¡ãšæœåšçãªåé¡ãä¿®æ£ããPRãäœæããŸãã
https://github.com/react-dnd/react-dnd/pull/801
æ¯åã§ã¯ãããŸããããå Žåã«ãã£ãŠã¯åãåé¡ãçºçããŸããããšãã°ããã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
ãããããšãªã¢å
ã«ããããã§ãããŠã£ãžã§ãããããããŠã£ãžã§ãããããããããããšããã®ãããããšãªã¢ã¯ããã€ãã®htmlãã¬ã³ããªã³ã°ããŸãã ãããªãŠã£ãžã§ãããããããããããšãéžæãããšã iframe
ãã¬ã³ããªã³ã°ãããå£ããŠããã®åŸä»ã®ãŠã£ãžã§ããããã©ãã°ã§ããªããªããŸãïŒ dragend
ã€ãã³ãã¯çºçããŸããïŒã ãããããã®iframe
ãããã¹ããç»åã«çœ®ãæãããšãå®å
šã«æ£åžžã«æ©èœããChrome 59ããåã«æ©èœããä»ã®ãã©ãŠã¶ã§ãæ©èœããŸãã ChromeãŸãã¯react-dndïŒ
@rogyvoje ãdragendããããªã¬ãŒããã€ãã³ãã§Chromeãäœããå€æŽãããšæããŸãã ããå€ãã®æ
å ±ãæ€çŽ¢ããããšããŸããããã©ãã«ãããã«ã€ããŠèšåããŠããªãããã§ãã
ãšããã§ããdragstartãã®åŸã®ãmousemoveãã«äŸåããããšã¯ãã»ãšãã©ã®å Žåãdragendãã«äŸåããå Žåã«ãã£ãŠã¯ãmousemoveãïŒDOMããåé€ããããã©ãã°èŠçŽ ïŒãPRãšããŠäœ¿çšãããããæå³ãããç°¡åã§ãã
@hunterbmtè¬ã
ããããã©ãããã°npm / yarnãä»ããŠãã«ãªã¯ãšã¹ãã䜿çšã§ããŸããïŒ ããŒãžãããŠããªãããã§ãããééã£ãŠããã®ã§ããããïŒ ð
@rogyvojeããŒãžã§ã³ã®ä»£ããã«ãç§ã®ãã©ã³ããçŽæ¥æãããšãã§ãããšæããŸãã PRã¯ããŒãžãããŸããããreact-dndã¯ãŸã æ°ããããŒãžã§ã³ããªãªãŒã¹ãããŠããªããããreact-dnd npm / yarnããçŽæ¥ååŸããããšã¯ã§ããŸããã
@hunterbmt
ç§ã¯ãã®ããã«ãããããããšããŸããïŒ
npm install git+https://github.com/react-dnd/react-dnd.git#41eb8caa0bc106c9edf0d3ca628b49e70525090b
ãããããã°ã€ã³ç»é¢ã¯åžžã«ãããã¢ããããŸãð
ãã®ã¹ã¬ããã®èª°ããåé¡ã®åçŸå¯èœãªã±ãŒã¹ãæäŸã§ããŸããïŒ ç§ã䜿çšããŠããŸãreact-dnd
å€ãã®ããšãç§ã¯ã©ãåçŸæ§ã®ããã±ãŒã¹ãæã£ãŠããããšã¯éåžžã«èå³ãããã®ã§ãç§ã¯ãã¯ãã 59äžã®ä»»æã®åé¡ãç¹å®ããããšã¯ã§ããŸããreact-dnd
ã¯ããŒã 59ã¯çºçããŸããã®ã§ã倱æããdrag/drop
ã€ãã³ãã¯æ£ããã
åé¡ãããå Žåã¯ãããããåé¡ãèŠãæ¹ãç°¡åã«åçŸã§ããã¯ãã§ãã®ã§ãæéããããŠåçŸå¯èœãªã±ãŒã¹ãæçš¿ããŠã¿ãŠãã ããïŒgithubãªããžããªãããã«æçš¿ãããã³ãŒãã®å ŽåããããŸãïŒ https://codesandbox.io/ïŒãæå³ã®ããæ å ±ïŒOSãreact-dndã®ããŒãžã§ã³ãªã©ïŒãæäŸããŠã¿ãŠãã ããã thnksïŒ
@bjrmatosããã§ãç§ã¯1ã€äœæããŸãããããã¯ç§ã®å Žåã§ããã圹ç«ã€ããšãé¡ã£ãŠããŸãã
https://github.com/rogyvoje/react-dnd-chrome-59
Chrome59ãšçŸåšã®ã¢ããããŒãã§ãã¹ãããŸããã
ããŒãžã§ã³60.0.3112.78ïŒå
¬åŒãã«ãïŒïŒ64ãããïŒ
Windowsæ
å ±ã«ã€ããŠïŒ
OSåïŒMicrosoft Windows 10 Pro
OSããŒãžã§ã³ïŒ10.0.14393 N / Aãã«ã14393
Chromeã§ãã¹ãæžã¿ïŒããŒãžã§ã³55.0.2883.87ïŒ64ãããïŒïŒLinux / Mint 18ïŒã§ãå®å šã«åäœããŸã...
@rogyvoje thnksïŒ åŸã§èŠãŠãããŸããWindows7VMã§åé¡ãçºçãããã©ããã確èªããŸããããããã§ãªãå Žåã¯ãWindows10ã§å¥ã®VMãè©ŠããŠã¿ãŸãã
ããã«ã¡ã¯@rogyvojeç§ã¯ããªããããã«åãåé¡ãæ±ããŠãããšããªããèšã£ãããã«ææ°ã®ã¯ããŒã ãªãªãŒã¹ã§çŽæ¥ããªãã®ãªããžããªãè©ŠããŸããïŒããŒãžã§ã³60.0.3112.78ïŒå ¬åŒãã«ãïŒïŒ64ãããïŒ-Windows 10PROïŒãç§ã¯èŠãŸãããšã©ãŒã
ããã¯æåŸ ãããçµæã§ãããïŒ
åé¡ãåçŸããããã®ä»ã®æé ã¯ãããŸããïŒ
ïŒ yarn
ã䜿çšãã代ããã«ïŒ [email protected]
ã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŸããããããã«èšé²ããããã«ãã€ã³ã¹ããŒã«ãããŠããäŸåé¢ä¿ã®æ£ç¢ºãªããŒãžã§ã³ã瀺ããŸãã
泚ïŒç§ã¯Windows 10 PRO VMã䜿çšããŠããŸãïŒç§ã®ã¡ã€ã³OSã¯OSX El Capitanã§ãããChromeã®åé¡ã¯ååšããªãããïŒ
ãã¹ãŠã®Chromeæ¡åŒµæ©èœãç¡å¹ã«ããŠãåãçµæã«ãªããŸãã
@rogyvojeéå»ã®ã³ã¡ã³ããèªãã ã°ããã§ãæåã®ãã©ãã°ãæ©èœãããšèšãããã«ãåé¡ãåçŸã§ããŸããã誰ããCannot call hover after drop
ãšã©ãŒã衚瀺ãããŸãã
ãªããžããªã«æè¬ããŸããç§ã¯åé¡ãæãäžããŠãã¿ããªã幞ãã«ãã解決çãæ¢ããŸãã
ãã°ã確èªãããããã§ãïŒ https ïŒ
èšé²ãšããŠãChromeïŒ60ïŒMac OSïŒEl CapitanïŒã§ãåã
@bjrmatosçŽ æŽããããããªãããããããŸãåçŸã§ããŠããããã§ãð
次ã«äœãèµ·ãããããããªãã®ã§ãChrome 61ãåŸ
ã€å¿
èŠããããŸããïŒ ð
次ã«äœãèµ·ãããããããªãã®ã§ãChrome 61ãåŸ ã€å¿ èŠããããŸããïŒ
ãšã«ãããChrome 59ã60ã§react-dndãæ©èœãããçŽ æµãªããããèŠã€ããããšããŠããã®ã§ãåŸã§ããã«æŽæ°ãããã«æçš¿ããŸãð
ããã§åé¡ã¯è§£æ±ºãããšæããŸãã https://github.com/react-dnd/react-dnd/pull/820
ãã§ã«ããŒãžãããŠããŸããããªãªãŒã¹ãããŠããŸããã
ãã®åé¡ã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ææ°ã®Chromeã§ãŸã åé¡ãçºçããŠããŸã...
@ ms88privat ïŒ820ã¯äŸå€ã解決ããŸãããChromeã§ïŒç§ã¯67ã䜿çšããŠããŸãïŒiframeãã¬ã³ããªã³ã°ããããšãã«source.endDrag
ãåŒã³åºãããªããšããæåã®åé¡ã¯è§£æ±ºããŸããã
3.0ããåã§ã¯ã @ 0rvarã«ãã£ãŠæäŸãããåé¿çã䜿çšããŠããŸããããããå³å¯ãªTSåæå®ã§ã¯ãã€ã³ã¹ã¿ã³ã¹ã¡ãœãããŸãã¯ãã©ã€ããŒãã¯ã©ã¹ã¡ãœããããªãŒããŒã©ã€ãããããšã¯ã§ããŸããã
@rogyvojeã®ãã¹ããªããžããªã®Video.js
ã«endDragãè¿œå ããããšã§ããããåçŸã§ããŸãã
const source = {
beginDrag(props) {
return {
renderVideo: true
};
},
// Add end drag
endDrag(props, monitor) {
if (!monitor) return;
// Only gets called when the iframe is already rendered
console.log("endDrag");
}
};
åããŠãã©ãã°ãããšãã¯ãChromeã§ã¯endDrag
ã¯åŒã³åºãããŸããã
chromeå ã®ããŒãžã®iframeã«å«ãããšããªãŒãºããŸãïŒçŸåšãŸã§59ïŒ @ 0rvarã®ä¿®æ£ã¯ãã®å Žåãæ©èœããŸã
ããã¯ãæšæ¥ãªãªãŒã¹ãããchrome72ã§ä¿®æ£ãããŸããã
ãã®åé¡ã¯ãæè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«å€ããã®ãšããŠããŒã¯ãããŠããŸãã ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåã¯éããããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãã®ããã¯ã§è§£æ±ºïŒ