UNPKG

wsemi

Version:

A support package for web developer.

870 lines (671 loc) 49.4 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>domDrag.mjs - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <script src="scripts/nav.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav > <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="wsemi.html">wsemi</a><ul class='methods'><li data-type='method'><a href="wsemi.html#.ab2blob">ab2blob</a></li><li data-type='method'><a href="wsemi.html#.ab2u8arr">ab2u8arr</a></li><li data-type='method'><a href="wsemi.html#.addExcelWorksheetFromData">addExcelWorksheetFromData</a></li><li data-type='method'><a href="wsemi.html#.addMonth">addMonth</a></li><li data-type='method'><a href="wsemi.html#.aes2str">aes2str</a></li><li data-type='method'><a href="wsemi.html#.alive">alive</a></li><li data-type='method'><a href="wsemi.html#.arr2dt">arr2dt</a></li><li data-type='method'><a href="wsemi.html#.arrAccum">arrAccum</a></li><li data-type='method'><a href="wsemi.html#.arrAdd">arrAdd</a></li><li data-type='method'><a href="wsemi.html#.arrAt">arrAt</a></li><li data-type='method'><a href="wsemi.html#.arrDiff">arrDiff</a></li><li data-type='method'><a href="wsemi.html#.arrFilterByKeywords">arrFilterByKeywords</a></li><li data-type='method'><a href="wsemi.html#.arrFilterByNum">arrFilterByNum</a></li><li data-type='method'><a href="wsemi.html#.arrFilterByPnum">arrFilterByPnum</a></li><li data-type='method'><a href="wsemi.html#.arrFilterByPnumAndToLog">arrFilterByPnumAndToLog</a></li><li data-type='method'><a href="wsemi.html#.arrFind">arrFind</a></li><li data-type='method'><a href="wsemi.html#.arrGroupByMaxmin">arrGroupByMaxmin</a></li><li data-type='method'><a href="wsemi.html#.arrHas">arrHas</a></li><li data-type='method'><a href="wsemi.html#.arrInsert">arrInsert</a></li><li data-type='method'><a href="wsemi.html#.arrLookupByMaxmin">arrLookupByMaxmin</a></li><li data-type='method'><a href="wsemi.html#.arrMax">arrMax</a></li><li data-type='method'><a href="wsemi.html#.arrMin">arrMin</a></li><li data-type='method'><a href="wsemi.html#.arrMulti">arrMulti</a></li><li data-type='method'><a href="wsemi.html#.arrNorm">arrNorm</a></li><li data-type='method'><a href="wsemi.html#.arrProduct">arrProduct</a></li><li data-type='method'><a href="wsemi.html#.arrReduce">arrReduce</a></li><li data-type='method'><a href="wsemi.html#.arrSep">arrSep</a></li><li data-type='method'><a href="wsemi.html#.arrSort">arrSort</a></li><li data-type='method'><a href="wsemi.html#.asind">asind</a></li><li data-type='method'><a href="wsemi.html#.atan2d">atan2d</a></li><li data-type='method'><a href="wsemi.html#.atand">atand</a></li><li data-type='method'><a href="wsemi.html#.attstr">attstr</a></li><li data-type='method'><a href="wsemi.html#.b642obj">b642obj</a></li><li data-type='method'><a href="wsemi.html#.b642str">b642str</a></li><li data-type='method'><a href="wsemi.html#.b642u16arr">b642u16arr</a></li><li data-type='method'><a href="wsemi.html#.b642u8arr">b642u8arr</a></li><li data-type='method'><a href="wsemi.html#.binstr">binstr</a></li><li data-type='method'><a href="wsemi.html#.blob2ab">blob2ab</a></li><li data-type='method'><a href="wsemi.html#.blob2b64">blob2b64</a></li><li data-type='method'><a href="wsemi.html#.blob2str">blob2str</a></li><li data-type='method'><a href="wsemi.html#.blob2u8arr">blob2u8arr</a></li><li data-type='method'><a href="wsemi.html#.blobs2b64s">blobs2b64s</a></li><li data-type='method'><a href="wsemi.html#.blobs2u8arrs">blobs2u8arrs</a></li><li data-type='method'><a href="wsemi.html#.bodyLog">bodyLog</a></li><li data-type='method'><a href="wsemi.html#.browserView">browserView</a></li><li data-type='method'><a href="wsemi.html#.browserViewFromBlob">browserViewFromBlob</a></li><li data-type='method'><a href="wsemi.html#.browserViewFromText">browserViewFromText</a></li><li data-type='method'><a href="wsemi.html#.browserViewFromU8arr">browserViewFromU8arr</a></li><li data-type='method'><a href="wsemi.html#.bs2u8arr">bs2u8arr</a></li><li data-type='method'><a href="wsemi.html#.bufRead">bufRead</a></li><li data-type='method'><a href="wsemi.html#.bufReadDbl">bufReadDbl</a></li><li data-type='method'><a href="wsemi.html#.bufWrite">bufWrite</a></li><li data-type='method'><a href="wsemi.html#.bufWriteDbl">bufWriteDbl</a></li><li data-type='method'><a href="wsemi.html#.cache">cache</a></li><li data-type='method'><a href="wsemi.html#.cbol">cbol</a></li><li data-type='method'><a href="wsemi.html#.cdbl">cdbl</a></li><li data-type='method'><a href="wsemi.html#.cfilesize">cfilesize</a></li><li data-type='method'><a href="wsemi.html#.cfinancial">cfinancial</a></li><li data-type='method'><a href="wsemi.html#.cint">cint</a></li><li data-type='method'><a href="wsemi.html#.clearXSS">clearXSS</a></li><li data-type='method'><a href="wsemi.html#.color">color</a></li><li data-type='method'><a href="wsemi.html#.composeToTree">composeToTree</a></li><li data-type='method'><a href="wsemi.html#.convertToTree">convertToTree</a></li><li data-type='method'><a href="wsemi.html#.copyStrToClipboard">copyStrToClipboard</a></li><li data-type='method'><a href="wsemi.html#.cosd">cosd</a></li><li data-type='method'><a href="wsemi.html#.cotd">cotd</a></li><li data-type='method'><a href="wsemi.html#.createExcelWorkbook">createExcelWorkbook</a></li><li data-type='method'><a href="wsemi.html#.cscd">cscd</a></li><li data-type='method'><a href="wsemi.html#.cstr">cstr</a></li><li data-type='method'><a href="wsemi.html#.day2cht">day2cht</a></li><li data-type='method'><a href="wsemi.html#.debounce">debounce</a></li><li data-type='method'><a href="wsemi.html#.delay">delay</a></li><li data-type='method'><a href="wsemi.html#.dig">dig</a></li><li data-type='method'><a href="wsemi.html#.digExp">digExp</a></li><li data-type='method'><a href="wsemi.html#.domAlert">domAlert</a></li><li data-type='method'><a href="wsemi.html#.domAppend">domAppend</a></li><li data-type='method'><a href="wsemi.html#.domCancelEvent">domCancelEvent</a></li><li data-type='method'><a href="wsemi.html#.domCompareText">domCompareText</a></li><li data-type='method'><a href="wsemi.html#.domCompareTextDyn">domCompareTextDyn</a></li><li data-type='method'><a href="wsemi.html#.domConvertToPic">domConvertToPic</a></li><li data-type='method'><a href="wsemi.html#.domConvertToPicDyn">domConvertToPicDyn</a></li><li data-type='method'><a href="wsemi.html#.domDetect">domDetect</a></li><li data-type='method'><a href="wsemi.html#.domDrag">domDrag</a></li><li data-type='method'><a href="wsemi.html#.domDragBarAndScroll">domDragBarAndScroll</a></li><li data-type='method'><a href="wsemi.html#.domDragPreview">domDragPreview</a></li><li data-type='method'><a href="wsemi.html#.domDropFiles">domDropFiles</a></li><li data-type='method'><a href="wsemi.html#.domElementsFromPoint">domElementsFromPoint</a></li><li data-type='method'><a href="wsemi.html#.domFadeIn">domFadeIn</a></li><li data-type='method'><a href="wsemi.html#.domFadeOut">domFadeOut</a></li><li data-type='method'><a href="wsemi.html#.domFind">domFind</a></li><li data-type='method'><a href="wsemi.html#.domFinds">domFinds</a></li><li data-type='method'><a href="wsemi.html#.domGetAttr">domGetAttr</a></li><li data-type='method'><a href="wsemi.html#.domGetBoudRect">domGetBoudRect</a></li><li data-type='method'><a href="wsemi.html#.domGetBoudRectRefSelf">domGetBoudRectRefSelf</a></li><li data-type='method'><a href="wsemi.html#.domGetFileAccept">domGetFileAccept</a></li><li data-type='method'><a href="wsemi.html#.domGetFiles">domGetFiles</a></li><li data-type='method'><a href="wsemi.html#.domGetParents">domGetParents</a></li><li data-type='method'><a href="wsemi.html#.domGetPointFromEvent">domGetPointFromEvent</a></li><li data-type='method'><a href="wsemi.html#.domGetScrollableParent">domGetScrollableParent</a></li><li data-type='method'><a href="wsemi.html#.domGetWindowSize">domGetWindowSize</a></li><li data-type='method'><a href="wsemi.html#.domIsClientXYIn">domIsClientXYIn</a></li><li data-type='method'><a href="wsemi.html#.domIsFocused">domIsFocused</a></li><li data-type='method'><a href="wsemi.html#.domIsVisible">domIsVisible</a></li><li data-type='method'><a href="wsemi.html#.domPrepend">domPrepend</a></li><li data-type='method'><a href="wsemi.html#.domRemove">domRemove</a></li><li data-type='method'><a href="wsemi.html#.domRenderMarkdownMind">domRenderMarkdownMind</a></li><li data-type='method'><a href="wsemi.html#.domRenderMarkdownMindDyn">domRenderMarkdownMindDyn</a></li><li data-type='method'><a href="wsemi.html#.domRipple">domRipple</a></li><li data-type='method'><a href="wsemi.html#.domScrollIntoView">domScrollIntoView</a></li><li data-type='method'><a href="wsemi.html#.domScrollTo">domScrollTo</a></li><li data-type='method'><a href="wsemi.html#.domShowImages">domShowImages</a></li><li data-type='method'><a href="wsemi.html#.domShowImagesDyn">domShowImagesDyn</a></li><li data-type='method'><a href="wsemi.html#.domShowInputAndGetFiles">domShowInputAndGetFiles</a></li><li data-type='method'><a href="wsemi.html#.domShowInputAndGetFilesU8Arrs">domShowInputAndGetFilesU8Arrs</a></li><li data-type='method'><a href="wsemi.html#.domTooltip">domTooltip</a></li><li data-type='method'><a href="wsemi.html#.domTriggerEvent">domTriggerEvent</a></li><li data-type='method'><a href="wsemi.html#.domVirtualCreate">domVirtualCreate</a></li><li data-type='method'><a href="wsemi.html#.domVirtualCreateQueue">domVirtualCreateQueue</a></li><li data-type='method'><a href="wsemi.html#.downloadExcelFileFromData">downloadExcelFileFromData</a></li><li data-type='method'><a href="wsemi.html#.downloadExcelFileFromDataDyn">downloadExcelFileFromDataDyn</a></li><li data-type='method'><a href="wsemi.html#.downloadFileFromB64">downloadFileFromB64</a></li><li data-type='method'><a href="wsemi.html#.downloadFileFromBlob">downloadFileFromBlob</a></li><li data-type='method'><a href="wsemi.html#.downloadFileFromText">downloadFileFromText</a></li><li data-type='method'><a href="wsemi.html#.downloadFileFromU8Arr">downloadFileFromU8Arr</a></li><li data-type='method'><a href="wsemi.html#.dtmapping">dtmapping</a></li><li data-type='method'><a href="wsemi.html#.dtpick">dtpick</a></li><li data-type='method'><a href="wsemi.html#.evem">evem</a></li><li data-type='method'><a href="wsemi.html#.execProcess">execProcess</a></li><li data-type='method'><a href="wsemi.html#.execScript">execScript</a></li><li data-type='method'><a href="wsemi.html#.f2c">f2c</a></li><li data-type='method'><a href="wsemi.html#.filepathToTree">filepathToTree</a></li><li data-type='method'><a href="wsemi.html#.files2data">files2data</a></li><li data-type='method'><a href="wsemi.html#.flattenToConn">flattenToConn</a></li><li data-type='method'><a href="wsemi.html#.flattenTree">flattenTree</a></li><li data-type='method'><a href="wsemi.html#.fsCleanFolder">fsCleanFolder</a></li><li data-type='method'><a href="wsemi.html#.fsCopyFolder">fsCopyFolder</a></li><li data-type='method'><a href="wsemi.html#.fsCreateFile">fsCreateFile</a></li><li data-type='method'><a href="wsemi.html#.fsCreateFolder">fsCreateFolder</a></li><li data-type='method'><a href="wsemi.html#.fsDeleteFile">fsDeleteFile</a></li><li data-type='method'><a href="wsemi.html#.fsDeleteFolder">fsDeleteFolder</a></li><li data-type='method'><a href="wsemi.html#.fsEvem">fsEvem</a></li><li data-type='method'><a href="wsemi.html#.fsGetFilesInFolder">fsGetFilesInFolder</a></li><li data-type='method'><a href="wsemi.html#.fsGetFoldersInFolder">fsGetFoldersInFolder</a></li><li data-type='method'><a href="wsemi.html#.fsIsFile">fsIsFile</a></li><li data-type='method'><a href="wsemi.html#.fsIsFolder">fsIsFolder</a></li><li data-type='method'><a href="wsemi.html#.fsReadText">fsReadText</a></li><li data-type='method'><a href="wsemi.html#.fsRenameFile">fsRenameFile</a></li><li data-type='method'><a href="wsemi.html#.fsRenameFolder">fsRenameFolder</a></li><li data-type='method'><a href="wsemi.html#.fsTreeFolder">fsTreeFolder</a></li><li data-type='method'><a href="wsemi.html#.fsWatchFile">fsWatchFile</a></li><li data-type='method'><a href="wsemi.html#.fsWriteText">fsWriteText</a></li><li data-type='method'><a href="wsemi.html#.genGradientColor">genGradientColor</a></li><li data-type='method'><a href="wsemi.html#.genID">genID</a></li><li data-type='method'><a href="wsemi.html#.genPm">genPm</a></li><li data-type='method'><a href="wsemi.html#.getBufferSize">getBufferSize</a></li><li data-type='method'><a href="wsemi.html#.getClearPathName">getClearPathName</a></li><li data-type='method'><a href="wsemi.html#.getCsvStrFromData">getCsvStrFromData</a></li><li data-type='method'><a href="wsemi.html#.getDataFromExcelFileU8Arr">getDataFromExcelFileU8Arr</a></li><li data-type='method'><a href="wsemi.html#.getDataFromExcelFileU8ArrDyn">getDataFromExcelFileU8ArrDyn</a></li><li data-type='method'><a href="wsemi.html#.getDirName">getDirName</a></li><li data-type='method'><a href="wsemi.html#.getEnv">getEnv</a></li><li data-type='method'><a href="wsemi.html#.getExcelU8ArrFromData">getExcelU8ArrFromData</a></li><li data-type='method'><a href="wsemi.html#.getExcelU8ArrFromWorkbook">getExcelU8ArrFromWorkbook</a></li><li data-type='method'><a href="wsemi.html#.getExcelWorkbookFromData">getExcelWorkbookFromData</a></li><li data-type='method'><a href="wsemi.html#.getExcelWorkbookFromWorksheet">getExcelWorkbookFromWorksheet</a></li><li data-type='method'><a href="wsemi.html#.getExcelWorksheetFromData">getExcelWorksheetFromData</a></li><li data-type='method'><a href="wsemi.html#.getFileAccept">getFileAccept</a></li><li data-type='method'><a href="wsemi.html#.getFileName">getFileName</a></li><li data-type='method'><a href="wsemi.html#.getFileTrueName">getFileTrueName</a></li><li data-type='method'><a href="wsemi.html#.getGlobal">getGlobal</a></li><li data-type='method'><a href="wsemi.html#.getObjSize">getObjSize</a></li><li data-type='method'><a href="wsemi.html#.getTimeBetween">getTimeBetween</a></li><li data-type='method'><a href="wsemi.html#.getTimeFromUnit">getTimeFromUnit</a></li><li data-type='method'><a href="wsemi.html#.getTimeObject">getTimeObject</a></li><li data-type='method'><a href="wsemi.html#.getTimeRange">getTimeRange</a></li><li data-type='method'><a href="wsemi.html#.getUserAgent">getUserAgent</a></li><li data-type='method'><a href="wsemi.html#.getUserAgentDyn">getUserAgentDyn</a></li><li data-type='method'><a href="wsemi.html#.getltdtkeys">getltdtkeys</a></li><li data-type='method'><a href="wsemi.html#.haskey">haskey</a></li><li data-type='method'><a href="wsemi.html#.html2pic">html2pic</a></li><li data-type='method'><a href="wsemi.html#.html2picDyn">html2picDyn</a></li><li data-type='method'><a href="wsemi.html#.html2str">html2str</a></li><li data-type='method'><a href="wsemi.html#.html2strDyn">html2strDyn</a></li><li data-type='method'><a href="wsemi.html#.htmlDecode">htmlDecode</a></li><li data-type='method'><a href="wsemi.html#.htmlEncode">htmlEncode</a></li><li data-type='method'><a href="wsemi.html#.importResources">importResources</a></li><li data-type='method'><a href="wsemi.html#.interp1">interp1</a></li><li data-type='method'><a href="wsemi.html#.isDev">isDev</a></li><li data-type='method'><a href="wsemi.html#.isEle">isEle</a></li><li data-type='method'><a href="wsemi.html#.isEleExistByID">isEleExistByID</a></li><li data-type='method'><a href="wsemi.html#.isEmail">isEmail</a></li><li data-type='method'><a href="wsemi.html#.isIE">isIE</a></li><li data-type='method'><a href="wsemi.html#.isNarrow">isNarrow</a></li><li data-type='method'><a href="wsemi.html#.isStrHasCapital">isStrHasCapital</a></li><li data-type='method'><a href="wsemi.html#.isStrHasLowerCase">isStrHasLowerCase</a></li><li data-type='method'><a href="wsemi.html#.isStrHasNumber">isStrHasNumber</a></li><li data-type='method'><a href="wsemi.html#.isUserIdentify">isUserIdentify</a></li><li data-type='method'><a href="wsemi.html#.isUserName">isUserName</a></li><li data-type='method'><a href="wsemi.html#.isUserPW">isUserPW</a></li><li data-type='method'><a href="wsemi.html#.isWindow">isWindow</a></li><li data-type='method'><a href="wsemi.html#.isab">isab</a></li><li data-type='method'><a href="wsemi.html#.isarr">isarr</a></li><li data-type='method'><a href="wsemi.html#.isarr0">isarr0</a></li><li data-type='method'><a href="wsemi.html#.isblob">isblob</a></li><li data-type='method'><a href="wsemi.html#.isbol">isbol</a></li><li data-type='method'><a href="wsemi.html#.isday">isday</a></li><li data-type='method'><a href="wsemi.html#.isearr">isearr</a></li><li data-type='method'><a href="wsemi.html#.iseobj">iseobj</a></li><li data-type='method'><a href="wsemi.html#.iser">iser</a></li><li data-type='method'><a href="wsemi.html#.isernot">isernot</a></li><li data-type='method'><a href="wsemi.html#.isestr">isestr</a></li><li data-type='method'><a href="wsemi.html#.isfun">isfun</a></li><li data-type='method'><a href="wsemi.html#.isint">isint</a></li><li data-type='method'><a href="wsemi.html#.ismonth">ismonth</a></li><li data-type='method'><a href="wsemi.html#.isn0int">isn0int</a></li><li data-type='method'><a href="wsemi.html#.isn0num">isn0num</a></li><li data-type='method'><a href="wsemi.html#.isnbr">isnbr</a></li><li data-type='method'><a href="wsemi.html#.isnint">isnint</a></li><li data-type='method'><a href="wsemi.html#.isnnum">isnnum</a></li><li data-type='method'><a href="wsemi.html#.isnull">isnull</a></li><li data-type='method'><a href="wsemi.html#.isnum">isnum</a></li><li data-type='method'><a href="wsemi.html#.isobj">isobj</a></li><li data-type='method'><a href="wsemi.html#.isobj0">isobj0</a></li><li data-type='method'><a href="wsemi.html#.isp0int">isp0int</a></li><li data-type='method'><a href="wsemi.html#.isp0num">isp0num</a></li><li data-type='method'><a href="wsemi.html#.ispint">ispint</a></li><li data-type='method'><a href="wsemi.html#.ispm">ispm</a></li><li data-type='method'><a href="wsemi.html#.ispnum">ispnum</a></li><li data-type='method'><a href="wsemi.html#.isstr">isstr</a></li><li data-type='method'><a href="wsemi.html#.isstr0">isstr0</a></li><li data-type='method'><a href="wsemi.html#.istime">istime</a></li><li data-type='method'><a href="wsemi.html#.istimeTZ">istimeTZ</a></li><li data-type='method'><a href="wsemi.html#.istimems">istimems</a></li><li data-type='method'><a href="wsemi.html#.istimemsTZ">istimemsTZ</a></li><li data-type='method'><a href="wsemi.html#.isu16arr">isu16arr</a></li><li data-type='method'><a href="wsemi.html#.isu8arr">isu8arr</a></li><li data-type='method'><a href="wsemi.html#.isundefined">isundefined</a></li><li data-type='method'><a href="wsemi.html#.j2o">j2o</a></li><li data-type='method'><a href="wsemi.html#.keysmat2ltdt">keysmat2ltdt</a></li><li data-type='method'><a href="wsemi.html#.log">log</a></li><li data-type='method'><a href="wsemi.html#.ltdt2vrtsable">ltdt2vrtsable</a></li><li data-type='method'><a href="wsemi.html#.ltdtDiff">ltdtDiff</a></li><li data-type='method'><a href="wsemi.html#.ltdtDiffByKey">ltdtDiffByKey</a></li><li data-type='method'><a href="wsemi.html#.ltdtkeys2mat">ltdtkeys2mat</a></li><li data-type='method'><a href="wsemi.html#.ltdtkeysheads2mat">ltdtkeysheads2mat</a></li><li data-type='method'><a href="wsemi.html#.ltdtmapping">ltdtmapping</a></li><li data-type='method'><a href="wsemi.html#.ltdtmerge">ltdtmerge</a></li><li data-type='method'><a href="wsemi.html#.ltdtpick">ltdtpick</a></li><li data-type='method'><a href="wsemi.html#.ltdtpull">ltdtpull</a></li><li data-type='method'><a href="wsemi.html#.mat2ltdt">mat2ltdt</a></li><li data-type='method'><a href="wsemi.html#.matConcat">matConcat</a></li><li data-type='method'><a href="wsemi.html#.matDiff">matDiff</a></li><li data-type='method'><a href="wsemi.html#.matat">matat</a></li><li data-type='method'><a href="wsemi.html#.now2str">now2str</a></li><li data-type='method'><a href="wsemi.html#.now2strp">now2strp</a></li><li data-type='method'><a href="wsemi.html#.nowDay2str">nowDay2str</a></li><li data-type='method'><a href="wsemi.html#.nowms2str">nowms2str</a></li><li data-type='method'><a href="wsemi.html#.nowms2strp">nowms2strp</a></li><li data-type='method'><a href="wsemi.html#.o2j">o2j</a></li><li data-type='method'><a href="wsemi.html#.obj2b64">obj2b64</a></li><li data-type='method'><a href="wsemi.html#.obj2pb64">obj2pb64</a></li><li data-type='method'><a href="wsemi.html#.obj2str">obj2str</a></li><li data-type='method'><a href="wsemi.html#.obj2stru8arr">obj2stru8arr</a></li><li data-type='method'><a href="wsemi.html#.obj2u8arr">obj2u8arr</a></li><li data-type='method'><a href="wsemi.html#.objSortBy">objSortBy</a></li><li data-type='method'><a href="wsemi.html#.objSortByKeys">objSortByKeys</a></li><li data-type='method'><a href="wsemi.html#.ocr">ocr</a></li><li data-type='method'><a href="wsemi.html#.ocrDyn">ocrDyn</a></li><li data-type='method'><a href="wsemi.html#.oo">oo</a></li><li data-type='method'><a href="wsemi.html#.openLink">openLink</a></li><li data-type='method'><a href="wsemi.html#.pb642obj">pb642obj</a></li><li data-type='method'><a href="wsemi.html#.pmChain">pmChain</a></li><li data-type='method'><a href="wsemi.html#.pmConvertResolve">pmConvertResolve</a></li><li data-type='method'><a href="wsemi.html#.pmHook">pmHook</a></li><li data-type='method'><a href="wsemi.html#.pmHookReject">pmHookReject</a></li><li data-type='method'><a href="wsemi.html#.pmIni">pmIni</a></li><li data-type='method'><a href="wsemi.html#.pmInvResolve">pmInvResolve</a></li><li data-type='method'><a href="wsemi.html#.pmMap">pmMap</a></li><li data-type='method'><a href="wsemi.html#.pmQueue">pmQueue</a></li><li data-type='method'><a href="wsemi.html#.pmSeries">pmSeries</a></li><li data-type='method'><a href="wsemi.html#.pmThrottle">pmThrottle</a></li><li data-type='method'><a href="wsemi.html#.pseudoRandom">pseudoRandom</a></li><li data-type='method'><a href="wsemi.html#.pseudoRandomIntRange">pseudoRandomIntRange</a></li><li data-type='method'><a href="wsemi.html#.pseudoRandomRange">pseudoRandomRange</a></li><li data-type='method'><a href="wsemi.html#.queue">queue</a></li><li data-type='method'><a href="wsemi.html#.rang">rang</a></li><li data-type='method'><a href="wsemi.html#.rep">rep</a></li><li data-type='method'><a href="wsemi.html#.repObj">repObj</a></li><li data-type='method'><a href="wsemi.html#.replace">replace</a></li><li data-type='method'><a href="wsemi.html#.replaceObj">replaceObj</a></li><li data-type='method'><a href="wsemi.html#.replacePlus">replacePlus</a></li><li data-type='method'><a href="wsemi.html#.round">round</a></li><li data-type='method'><a href="wsemi.html#.secd">secd</a></li><li data-type='method'><a href="wsemi.html#.sep">sep</a></li><li data-type='method'><a href="wsemi.html#.sepInt">sepInt</a></li><li data-type='method'><a href="wsemi.html#.sind">sind</a></li><li data-type='method'><a href="wsemi.html#.split">split</a></li><li data-type='method'><a href="wsemi.html#.str2aes">str2aes</a></li><li data-type='method'><a href="wsemi.html#.str2b64">str2b64</a></li><li data-type='method'><a href="wsemi.html#.str2hint">str2hint</a></li><li data-type='method'><a href="wsemi.html#.str2md5">str2md5</a></li><li data-type='method'><a href="wsemi.html#.str2obj">str2obj</a></li><li data-type='method'><a href="wsemi.html#.str2sha512">str2sha512</a></li><li data-type='method'><a href="wsemi.html#.str2u8arr">str2u8arr</a></li><li data-type='method'><a href="wsemi.html#.strCompare">strCompare</a></li><li data-type='method'><a href="wsemi.html#.strDiff">strDiff</a></li><li data-type='method'><a href="wsemi.html#.strFindFuzz">strFindFuzz</a></li><li data-type='method'><a href="wsemi.html#.strFindFuzzDyn">strFindFuzzDyn</a></li><li data-type='method'><a href="wsemi.html#.strFindSimilar">strFindSimilar</a></li><li data-type='method'><a href="wsemi.html#.strdelleft">strdelleft</a></li><li data-type='method'><a href="wsemi.html#.strdelright">strdelright</a></li><li data-type='method'><a href="wsemi.html#.strleft">strleft</a></li><li data-type='method'><a href="wsemi.html#.strmid">strmid</a></li><li data-type='method'><a href="wsemi.html#.strright">strright</a></li><li data-type='method'><a href="wsemi.html#.stru8arr2obj">stru8arr2obj</a></li><li data-type='method'><a href="wsemi.html#.tand">tand</a></li><li data-type='method'><a href="wsemi.html#.time2day">time2day</a></li><li data-type='method'><a href="wsemi.html#.time2hour">time2hour</a></li><li data-type='method'><a href="wsemi.html#.time2min">time2min</a></li><li data-type='method'><a href="wsemi.html#.timeTZ2day">timeTZ2day</a></li><li data-type='method'><a href="wsemi.html#.timeTZ2expire">timeTZ2expire</a></li><li data-type='method'><a href="wsemi.html#.timeTZ2hour">timeTZ2hour</a></li><li data-type='method'><a href="wsemi.html#.timeTZ2min">timeTZ2min</a></li><li data-type='method'><a href="wsemi.html#.timeTZ2past">timeTZ2past</a></li><li data-type='method'><a href="wsemi.html#.timems2day">timems2day</a></li><li data-type='method'><a href="wsemi.html#.timems2hour">timems2hour</a></li><li data-type='method'><a href="wsemi.html#.timems2min">timems2min</a></li><li data-type='method'><a href="wsemi.html#.timems2time">timems2time</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2day">timemsTZ2day</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2expire">timemsTZ2expire</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2hour">timemsTZ2hour</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2min">timemsTZ2min</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2past">timemsTZ2past</a></li><li data-type='method'><a href="wsemi.html#.timemsTZ2time">timemsTZ2time</a></li><li data-type='method'><a href="wsemi.html#.treeObj">treeObj</a></li><li data-type='method'><a href="wsemi.html#.treeToFilepath">treeToFilepath</a></li><li data-type='method'><a href="wsemi.html#.trim">trim</a></li><li data-type='method'><a href="wsemi.html#.u16arr2b64">u16arr2b64</a></li><li data-type='method'><a href="wsemi.html#.u16arr2u8arr">u16arr2u8arr</a></li><li data-type='method'><a href="wsemi.html#.u8arr2ab">u8arr2ab</a></li><li data-type='method'><a href="wsemi.html#.u8arr2b64">u8arr2b64</a></li><li data-type='method'><a href="wsemi.html#.u8arr2blob">u8arr2blob</a></li><li data-type='method'><a href="wsemi.html#.u8arr2bs">u8arr2bs</a></li><li data-type='method'><a href="wsemi.html#.u8arr2obj">u8arr2obj</a></li><li data-type='method'><a href="wsemi.html#.u8arr2str">u8arr2str</a></li><li data-type='method'><a href="wsemi.html#.u8arr2u16arr">u8arr2u16arr</a></li><li data-type='method'><a href="wsemi.html#.urlParse">urlParse</a></li><li data-type='method'><a href="wsemi.html#.verifyValue">verifyValue</a></li><li data-type='method'><a href="wsemi.html#.waitFun">waitFun</a></li></ul></li></ul> </nav> <div id="main"> <h1 class="page-title">domDrag.mjs</h1> <section> <article> <pre class="prettyprint source linenums"><code>import each from 'lodash/each' import get from 'lodash/get' import pull from 'lodash/pull' import cloneDeep from 'lodash/cloneDeep' import isNumber from 'lodash/isNumber' import genID from './genID.mjs' import isestr from './isestr.mjs' import isEle from './isEle.mjs' import cint from './cint.mjs' import evem from './evem.mjs' import haskey from './haskey.mjs' import domGetParents from './domGetParents.mjs' import domGetPointFromEvent from './domGetPointFromEvent.mjs' import domElementsFromPoint from './domElementsFromPoint.mjs' import domGetAttr from './domGetAttr.mjs' import domGetBoudRectRefSelf from './domGetBoudRectRefSelf.mjs' import domDragPreview from './domDragPreview.mjs' let kpDgs = {} function regAndGetGroupEv(gid, eid, { attIdentify, previewOpacity, previewBackground, previewBorderWidth, previewBorderColor }) { //create if (!haskey(kpDgs, gid)) { //evg let evg = evem() //oevg let funs = { dragMove: (msg) => { evg.emit(gid + '-dragMove', msg) }, dragDrop: (msg) => { evg.emit(gid + '-dragDrop', msg) }, } let oevg = dgEvGroup(funs) // console.log('oevg', oevg) //bind oevg.bind() //domDragPreview let pv = domDragPreview({ attIdentify, containerOpacity: previewOpacity, containerBackground: previewBackground, containerBorderWidth: previewBorderWidth, containerBorderColor: previewBorderColor, }) //init kpDgs[gid] = { eleIds: [], evg, oevg, pv, isInit: false, isActive: true, } } //push eid kpDgs[gid].eleIds.push(eid) //return evg return kpDgs[gid].evg } function findEleFromEventEle(e, attGroup, gid) { let r = null //domGetParents let ps = domGetParents(e.target) // console.log('ps',ps,e) //domGetAttr each(ps, (v) => { let attr = domGetAttr(v, attGroup) if (attr === gid) { r = v return false //跳出 } }) return r } function findEleFromEventClientXY(e, attGroup, gid) { let r = null //domGetPointFromEvent let p = domGetPointFromEvent(e) if (!p) { return r } // console.log('p',p) //domElementsFromPoint let ps = domElementsFromPoint(p.clientX, p.clientY) // console.log('ps',ps) //domGetAttr each(ps, (v) => { let attr = domGetAttr(v, attGroup) if (attr === gid) { r = v return false //跳出 } }) return r } function getIndex(ele, attIndex) { let kitem = domGetAttr(ele, attIndex) kitem = cint(kitem) return kitem } function dgEvGroup(funs) { let _window_events = [] function bindWindowEvents() { let name name = 'mousemove' let fw_mousemove = function(e) { funs.dragMove({ e, name: 'mousemove' }) } window.addEventListener(name, fw_mousemove) _window_events.push({ ele: window, name, f: fw_mousemove }) name = 'mouseup' let fw_mouseup = function(e) { funs.dragDrop({ e, name: 'mouseup' }) } window.addEventListener(name, fw_mouseup) _window_events.push({ ele: window, name, f: fw_mouseup }) name = 'touchmove' let fw_touchmove = function(e) { funs.dragMove({ e, name: 'touchmove' }) } window.addEventListener(name, fw_touchmove) _window_events.push({ ele: window, name, f: fw_touchmove }) name = 'touchend' let fw_touchend = function(e) { funs.dragDrop({ e, name: 'touchend' }) } window.addEventListener(name, fw_touchend) _window_events.push({ ele: window, name, f: fw_touchend }) } function unbindWindowEvents() { each(_window_events, ({ ele, name, f }) => { ele.removeEventListener(name, f) }) } return { bind: bindWindowEvents, unbind: unbindWindowEvents, } } function dgEvEle(ele, funs, gid, eid) { // console.log('dgEvEle', ele, gid, eid) let _ele_events = [] function bindEleEvents() { let name name = 'mousedown' let fe_mousedown = function(e) { funs.dragStart({ e, ele, name: 'mousedown' }) } ele.addEventListener(name, fe_mousedown, false) _ele_events.push({ ele, name, f: fe_mousedown }) name = 'touchstart' let fe_touchstart = function(e) { funs.dragStart({ e, ele, name: 'touchstart' }) } ele.addEventListener(name, fe_touchstart, false) _ele_events.push({ ele, name, f: fe_touchstart }) name = 'touchmove' let fe_touchmove = function(e) { funs.dragMove({ e, name: 'touchmove' }) //domCancelEvent(e) //不能使用domCancelEvent, 因其內使用stopPropagation會連window的touchmove無法收到訊息 if (e.cancelable) { //window捲動中時事件為禁止取消(cancelable=false)狀態 e.preventDefault() //必要, 需由元素touchmove事件阻止預設拖曳行為, 否則會變成捲動螢幕, 此外由window的touchmove事件來阻止會失效 } } ele.addEventListener(name, fe_touchmove, false) _ele_events.push({ ele, name, f: fe_touchmove }) } function unbindEleEvents() { each(_ele_events, ({ ele, name, f }) => { ele.removeEventListener(name, f) }) } return { bind: bindEleEvents, unbind: unbindEleEvents, } } function unbindEleAndGroup(gid, eid) { //dg let dg = kpDgs[gid] //cloneDeep let eleIds = cloneDeep(dg.eleIds) //pull pull(eleIds, eid) //save dg.eleIds = eleIds //check if (eleIds.length === 0) { //全部元素已解除監聽 //unbind dg.oevg.unbind() //clear dg.pv.clear() //delete delete kpDgs[gid] } } function dgDragCore({ gid, attGroup, attIndex, attIdentify, timeDragStartDelay, previewOpacity, previewDisabledOpacity }) { let _startInd = null let _startEle = null let _endInd = null let _endEle = null //check if (kpDgs[gid].isInit) { return kpDgs[gid].evg } //isInit kpDgs[gid].isInit = true //evg let evg = kpDgs[gid].evg //on events evg.on(gid + '-dragStart', dragStart) evg.on(gid + '-dragMove', dragMove) evg.on(gid + '-dragDrop', dragDrop) //pv let pv = kpDgs[gid].pv function dragStart({ e, ele, from }) { // console.log('dragStart', e, ele, from) //check if (!kpDgs[gid].isActive) { return } //getIndex let kitem = getIndex(ele, attIndex) // console.log('kitem', kitem) //check if (kitem === null) { //不能用!kitem判斷, 因kitem可能為0 //console.log('dragStart: 無法取得kitem') return } _startInd = kitem _startEle = ele //emit let msg = { event: e, startInd: _startInd, startEle: _startEle, tarInd: _startInd, tarEid: domGetAttr(_startEle, attIdentify), } evg.emit(gid + '-change', { mode: 'start', ...msg }) evg.emit(gid + '-start', msg) //p let p = domGetPointFromEvent(e) if (!p) { return } //setTimeout, preview不能太快出現導致原本元素例如click事件失效 setTimeout(() => { //check, 若觸發例如dragDrop事件因已清除故會無_startInd if (_startInd === null) { return } //createPreview pv.createPreview(_startEle, p.clientX, p.clientY) //setContainerStyle pv.setContainerStyle({ opacity: previewDisabledOpacity }) }, timeDragStartDelay) } function dragMove({ e, name, from }) { // console.log('dragMove', e, name, from) //check if (!kpDgs[gid].isActive) { return } //eleIn let eleIn = findEleFromEventEle(e, attGroup, gid) // console.log('findEleFromEventEle eleIn',eleIn) //check if (_startInd === null) { return } //p let p = domGetPointFromEvent(e) if (!p) { return } function emitEnter(endInd, endEle) { _endInd = endInd _endEle = endEle //emit let msg = { event: e, startInd: _startInd, startEle: _startEle, endInd: _endInd, endEle: _endEle, tarInd: _endInd, tarEid: domGetAttr(_endEle, attIdentify), } evg.emit(gid + '-change', { mode: 'enter', ...msg }) evg.emit(gid + '-enter', msg) //setContainerStyle pv.setContainerStyle({ opacity: previewOpacity }) } function emitLeave() { //emit let msg = { event: e, startInd: _startInd, startEle: _startEle, endInd: _endInd, endEle: _endEle, tarInd: _endInd, tarEid: domGetAttr(_endEle, attIdentify), } evg.emit(gid + '-change', { mode: 'leave', ...msg }) evg.emit(gid + '-leave', msg) //clear, 要放在emit之後才能清除 _endInd = null _endEle = null //setContainerStyle pv.setContainerStyle({ opacity: previewDisabledOpacity }) } function emitMove(rl, rx, ry) { //emit let msg = { event: e, startInd: _startInd, startEle: _startEle, endInd: _endInd, endEle: _endEle, tarInd: _endInd, tarEid: domGetAttr(_endEle, attIdentify), ...rl, rx, ry, } evg.emit(gid + '-change', { mode: 'move', ...msg }) evg.emit(gid + '-move', msg) //setContainerStyle pv.setContainerStyle({ opacity: previewOpacity }) } //check, 滑鼠所在處的可被拖曳元素 if (!eleIn) { //check if (_endInd !== null) { //emitLeave emitLeave() } return } //getIndex let kitem = getIndex(eleIn, attIndex) //check if (kitem === null) { //不能用!kitem判斷, 因kitem可能為0 //console.log('dragMove: 無法取得kitem') return } //check if (kitem === _startInd) { //拖曳至原拖曳項目 //由其他拖曳項目拖曳至原拖曳項目內, 需要觸發leave事件 if (_endInd !== null) { //emitLeave emitLeave() } return } //check if (kitem !== _endInd) { //拖曳至不同於上一個拖曳項目 //enter //於其他拖曳項目之間拖曳, 且非拖曳至原拖曳項目, 故也需要觸發leave事件 if (_endInd !== null) { //emitLeave emitLeave() } //emitEnter emitEnter(kitem, eleIn) } else { //move, 於上一個拖曳項目內拖曳 //rl let rl = domGetBoudRectRefSelf(p, eleIn) //rx, ry let rx = 0 if (rl.w > 0) { rx = rl.x / rl.w } let ry = 0 if (rl.h > 0) { ry = rl.y / rl.h } if (rx >= 0 &amp;&amp; rx &lt;= 1 &amp;&amp; ry >= 0 &amp;&amp; ry &lt;= 1) { //emitMove emitMove(rl, rx, ry) } } } function dragDrop({ e, name, from }) { // console.log('dragDrop', e, name, from) //removeDragPreview pv.removeDragPreview() // //pauseDragPreview // pv.pauseDragPreview(true) //check if (!kpDgs[gid].isActive) { return } //check if (_startInd === null) { //console.log('dragDrop: 無_startInd') return } // console.log('dragDrop', '_startInd', _startInd) function emitDrop(endInd, endEle) { _endInd = endInd _endEle = endEle //emit let msg = { event: e, startInd: _startInd, startEle: _startEle, endInd: _endInd, endEle: _endEle, tarInd: _endInd, tarEid: domGetAttr(_endEle, attIdentify), } evg.emit(gid + '-change', { mode: 'drop', ...msg }) evg.emit(gid + '-drop', msg) } //eleIn let eleIn = findEleFromEventClientXY(e, attGroup, gid) // console.log('findEleFromEventClientXY eleIn',eleIn) //check, 釋放時不在拖曳元素內故跳出 if (!eleIn) { //console.log('dragDrop: 釋放時不在拖曳元素內') _startInd = null _startEle = null _endInd = null _endEle = null return } //getIndex let kitem = getIndex(eleIn, attIndex) //check if (kitem === null) { //不能用!kitem判斷, 因kitem可能為0 //console.log('dragDrop: 無法取得kitem') return } //emitDrop, 若拖曳至原拖曳項目上也要能觸發, 否則外部收不到滑鼠放掉訊息, 僅收得到拖曳至非拖曳項目的leave事件 emitDrop(kitem, eleIn) //clear, 要放在emit之後才能清除 _startInd = null _startEle = null _endInd = null _endEle = null } } /** * 前端DOM元素拖曳事件 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/domDrag.test.mjs Github} * @memberOf wsemi * @param {HTMLElement} ele 輸入元素 * @param {Object} [opt={}] 輸入設定物件,預設{} * @param {String} [opt.attIdentify='dragid'] 輸入預覽元素唯一識別用之屬性名稱字串,預設'dragid' * @param {String} [opt.attIndex='dragindex'] 輸入預覽元素順序指標之屬性名稱字串,預設'dragindex' * @param {String} [opt.attGroup='draggroup'] 輸入預覽元素群組之屬性名稱字串,預設'draggroup' * @param {String} [opt.group='group'] 輸入預覽元素群組字串,預設'group' * @param {Number} [opt.timeDragStartDelay=120] 輸入預覽元素由點擊後延遲出現的時間數字,單位ms,預設120。使用pointerEvents會導致游標樣式失效,故延遲顯示可用來讓點擊事件穿透 * @param {Number} [opt.previewOpacity=0.4] 輸入預覽元素透明度數字,預設0.4 * @param {Number} [opt.previewDisabledOpacity=0.2] 輸入無效時(位於非可拖曳元素內)預覽元素透明度數字,預設0.2 * @param {String} [opt.previewBackground='white'] 輸入預覽元素背景顏色字串,預設'white' * @param {Number} [opt.previewBorderWidth=1] 輸入預覽元素邊框寬度數字,預設1 * @param {String} [opt.previewBorderColor='#f26'] 輸入預覽元素邊框顏色字串,預設'#f26' * @returns {Object} 回傳物件,可使用on與clear函數,on可監聽change、start、move、enter、leave、drop事件,clear為釋放監聽 * @example * need test in browser * * //監聽dom * let dd = domDrag(document.querySelector('#id'), { group:'group', attIndex: 'dragindex' }) * * //change * dd.on('change', (msg) => { * console.log('change', msg) * }) * dd.on('start', (msg) => { * console.log('start', msg) * }) * dd.on('move', (msg) => { * console.log('move', msg) * }) * dd.on('enter', (msg) => { * console.log('enter', msg) * }) * dd.on('leave', (msg) => { * console.log('leave', msg) * }) * dd.on('drop', (msg) => { * console.log('drop', msg) * }) * * //釋放監聽 * dd.clear() * */ function domDrag(ele, opt = {}) { //check if (!isEle(ele)) { console.log('ele is not a HTMLElement', ele) return } //attIdentify let attIdentify = get(opt, 'attIdentify', null) if (!isestr(attIdentify)) { attIdentify = 'dragid' } //attIndex let attIndex = get(opt, 'attIndex', null) if (!isestr(attIndex)) { attIndex = 'dragindex' } //attGroup let attGroup = get(opt, 'attGroup', null) if (!isestr(attGroup)) { attGroup = 'draggroup' } //group let group = get(opt, 'group', null) if (!isestr(group)) { group = 'group' } //previewOpacity let previewOpacity = get(opt, 'previewOpacity', null) if (!isNumber(previewOpacity)) { previewOpacity = 0.4 } //previewDisabledOpacity let previewDisabledOpacity = get(opt, 'previewDisabledOpacity', null) if (!isNumber(previewDisabledOpacity)) { previewDisabledOpacity = 0.2 } //previewBackground let previewBackground = get(opt, 'previewBackground', null) if (!isestr(previewBackground)) { previewBackground = 'white' } //previewBorderWidth let previewBorderWidth = get(opt, 'previewBorderWidth', null) if (!isNumber(previewBorderWidth)) { previewBorderWidth = 1 } //previewBorderColor let previewBorderColor = get(opt, 'previewBorderColor', null) if (!isestr(previewBorderColor)) { previewBorderColor = '#f26' } //timeDragStartDelay let timeDragStartDelay = get(opt, 'timeDragStartDelay', null) if (!isNumber(timeDragStartDelay)) { timeDragStartDelay = 120 } //eid let eid = `c${genID(8)}` //gid let gid = group //setAttribute ele.setAttribute(attGroup, gid) ele.setAttribute(attIdentify, eid) //evg let evg = regAndGetGroupEv(gid, eid, { attIdentify, previewOpacity, previewBackground, previewBorderWidth, previewBorderColor }) // console.log('evg', evg) //dgEvEle let eleFuncs = { dragStart: (msg) => { evg.emit(gid + '-dragStart', msg) }, dragMove: (msg) => { evg.emit(gid + '-dragMove', msg) }, } let oeve = dgEvEle(ele, eleFuncs, gid, eid) // console.log('ele', ele, 'oeve', oeve) //bind oeve.bind() //dgDragCore dgDragCore({ gid, attGroup, attIndex, attIdentify, timeDragStartDelay, previewOpacity, previewDisabledOpacity }) function unbind() { //unbind oeve.unbind() //unbindEleAndGroup unbindEleAndGroup(gid, eid) } function setIsActive(isActive) { kpDgs[gid].isActive = isActive } //ev let ev = evem() //evg on evg.on(group + '-change', (msg) => { // console.log('dg evg', group + '-change', msg) if (msg.tarEid === eid) { ev.emit('change', msg) } }) evg.on(group + '-start', (msg) => { // console.log('dg evg', group + '-start', msg) if (msg.tarEid === eid) { ev.emit('start', msg) } }) evg.on(group + '-move', (msg) => { // console.log('dg evg', group + '-move', msg) if (msg.tarEid === eid) { ev.emit('move', msg) } }) evg.on(group + '-enter', (msg) => { // console.log('dg evg', group + '-enter', msg) if (msg.tarEid === eid) { ev.emit('enter', msg) } }) evg.on(group + '-leave', (msg) => { // console.log('dg evg', group + '-leave', msg) if (msg.tarEid === eid) { ev.emit('leave', msg) } }) evg.on(group + '-drop', (msg) => { // console.log('dg evg', group + '-drop', msg) if (msg.tarEid === eid) { ev.emit('drop', msg) } }) //add setIsActive ev.setIsActive = setIsActive //add unbind ev.unbind = unbind return ev } export default domDrag </code></pre> </article> </section> </div> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Wed Jul 19 2023 23:38:49 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme. </footer> <script>prettyPrint();</script> <script src="scripts/polyfill.js"></script> <script src="scripts/linenumber.js"></script> </body> </html>