function touchStart(e) {
		/**@type {HTMLElement} */
		const $target = e.target;

		editor.textInput.onContextMenu = null;
		cancelAnimationFrame(scrollAnimationFrame);
		const { clientX, clientY } = e.touches[0];

		if (minimal && clientX <= constants.SIDEBAR_SLIDE_START_THRESHOLD_PX) {
			return;
		}

		if (isIn($start, clientX, clientY)) {
			e.preventDefault();
			teardropHandler($start);
			return;
		}

		if (isIn($end, clientX, clientY)) {
			e.preventDefault();
			teardropHandler($end);
			return;
		}

		if (isIn($cursor, clientX, clientY)) {
			e.preventDefault();
			teardropHandler($cursor);
			return;
		}

		if ($target.matches(ACE_NO_CURSOR)) {
			moveCursorTo(0, clientY);
			return;
		}

		touchEnded = false;
		lastX = clientX;
		lastY = clientY;
		initialX = clientX;
		initialY = clientY;
		initialTimeX = e.timeStamp;
		initialTimeY = e.timeStamp;
		moveY = 0;
		moveX = 0;
		lockX = LOCK_X;
		lockY = false;
		mode = "wait";

		setTimeout(() => {
			clickCount = 0;
			lastClickPos = null;
		}, RESET_CLICK_COUNT_TIME);

		document.addEventListener("touchmove", touchMove, config);
		document.addEventListener("touchend", touchEnd, config);
	}
Editor container on touch start
@param {TouchEvent} e Touch event