| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 | 
function touchHandler(event) {    event.stopPropagation();    var touches = event.changedTouches,        first = touches[0],        type = "";    switch (event.type) {        case "touchstart": type = "mousedown"; break;        case "touchmove": type = "mousemove"; break;        case "touchend": type = "mouseup"; break;        default: return;    }    var simulatedEvent = new MouseEvent(type, { "altKey": false, "button": 0, "buttons": 0, "clientX": first.clientX, "clientY": first.clientY, "ctrlKey": false, "metaKey": false, "relatedTarget": first, "screenX": first.screenX, "screenY": first.screenY, "shiftKey": false });    // var simulatedEvent = document.createEvent("MouseEvent");    // simulatedEvent.initMouseEvent(type, true, true, window, 1,    //     first.screenX, first.screenY,    //     first.clientX, first.clientY, false,    //     false, false, false, 0/*left*/, null);    first.target.dispatchEvent(simulatedEvent);}function init() {    document.addEventListener("touchstart", touchHandler, true);    document.addEventListener("touchmove", touchHandler, true);    document.addEventListener("touchend", touchHandler, true);    document.addEventListener("touchcancel", touchHandler, true);    HTMLElement.prototype.__defineGetter__("ondblclick", function () {        return this.doubleTap;    });    HTMLElement.prototype.__defineSetter__("ondblclick", function (fun) {        this.doubleTap = fun;        $(this).on("doubleTap", fun)    });    var eventlstener = HTMLElement.prototype.addEventListener;    HTMLElement.prototype.addEventListener = function (type, fun, op) {        if (type == "click") {            eventlstener.call(this, type, function (e) {                if (!this.startTime) {                    this.startTime = new Date().getTime();                    fun.call(this);                }                else {                    const time = new Date().getTime() - this.startTime;                    this.startTime = new Date().getTime();                    if (time > 200) {                        fun.call(this);                    }                    else {                        e.detail = 2;                        fun.call(this);                    }                }            }, op);        }        else {            eventlstener.apply(this, arguments);        }    }    // handleClick = (e: MouseEvent) => {    //     // 节点拖拽进画布之后,不触发click事件相关emit    //     // 点拖拽进画布没有触发mousedown事件,没有startTime,用这个值做区分    //     if (!this.startTime) return;    //     const time = new Date().getTime() - this.startTime;    //     if (time > 200) return; // 事件大于200ms,认为是拖拽, 不触发click事件。    //     const { model, graphModel } = this.props;    //     // 节点数据,多为事件对象数据抛出    //     const nodeData = model.getData();    //     const position = graphModel.getPointByClient({    //         x: e.clientX,    //         y: e.clientY,    //     });    //     const eventOptions: EventArgs = {    //         data: nodeData,    //         e,    //         position,    //         isSelected: false,    //         isMultiple: false,    //     };    //     const isRightClick = e.button === 2;    //     // 这里 IE 11不能正确显示    //     const isDoubleClick = e.detail === 2;    //     // 判断是否有右击,如果有右击则取消点击事件触发    //     if (isRightClick) return;    //     const { editConfigModel } = graphModel;    //     // 在multipleSelect tool禁用的情况下,允许取消选中节点    //     const isMultiple = isMultipleSelect(e, editConfigModel);    //     eventOptions.isMultiple = isMultiple;    //     if (model.isSelected && !isDoubleClick && isMultiple) {    //         eventOptions.isSelected = false;    //         model.setSelected(false);    //     } else {    //         graphModel.selectNodeById(model.id, isMultiple);    //         eventOptions.isSelected = true;    //         this.toFront();    //     }    //     // 不是双击的,默认都是单击    //     if (isDoubleClick) {    //         if (editConfigModel.nodeTextEdit && model.text.editable) {    //             model.setSelected(false);    //             graphModel.setElementStateById(model.id, ElementState.TEXT_EDIT);    //         }    //         graphModel.eventCenter.emit(EventType.NODE_DBCLICK, eventOptions);    //     } else {    //         graphModel.eventCenter.emit(EventType.ELEMENT_CLICK, eventOptions);    //         graphModel.eventCenter.emit(EventType.NODE_CLICK, eventOptions);    //     }    // };}
 |