@tencentcloud/roomkit-web-vue3
Version:
<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,
62 lines (61 loc) • 1.91 kB
JavaScript
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const touchEventMap = /* @__PURE__ */ new Map();
const clickEventMap = /* @__PURE__ */ new Map();
const TIME_OUT = 300;
class DblTouch {
constructor(el, binding) {
__publicField(this, "dom");
__publicField(this, "callback");
this.dom = el;
this.callback = binding.value;
el == null ? void 0 : el.addEventListener("click", (event) => {
if (binding.modifiers.stop) {
event.stopPropagation();
}
this.click(event);
});
el == null ? void 0 : el.addEventListener("touchend", (event) => {
if (binding.modifiers.stop) {
event.stopPropagation();
}
this.touchend(event);
});
}
executeCallback(event) {
clickEventMap.delete(this.dom);
touchEventMap.delete(this.dom);
this.callback && this.callback(event);
}
click(event) {
const lastEvent = clickEventMap.get(this.dom);
if (lastEvent) {
this.executeCallback(event);
} else {
clickEventMap.set(this.dom, event);
setTimeout(() => {
clickEventMap.delete(this.dom);
}, TIME_OUT);
}
}
touchend(event) {
const lastEvent = touchEventMap.get(this.dom);
if (lastEvent) {
this.executeCallback(event);
} else {
touchEventMap.set(this.dom, event);
setTimeout(() => {
touchEventMap.delete(this.dom);
}, TIME_OUT);
}
}
}
const vDblTouch = {
mounted(el, binding) {
return new DblTouch(el, binding);
}
};
exports.default = vDblTouch;
;