Index: h5p-jquery-ui.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/h5p-jquery-ui.js b/h5p-jquery-ui.js
--- a/h5p-jquery-ui.js	(revision c78e17afa3bc210e75bd5f778203686a41f343ea)
+++ b/h5p-jquery-ui.js	(date 1642675196522)
@@ -9629,7 +9629,10 @@
 			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
 			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );
 
-			event.preventDefault();
+			if (this.widgetName === 'slider') {
+				// Prevent tragging of slider handle(anchor) in Firefox
+				event.preventDefault();
+			}
 
 			mouseHandled = true;
 			return true;
@@ -19050,4 +19053,176 @@
 
 } );
 
+/*!
+ * jQuery UI Touch Punch 0.2.2
+ *
+ * Copyright 2011, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+(function ($) {
+
+	// Detect touch support
+	$.support.touch = 'ontouchend' in document;
+
+	// Ignore browsers without touch support
+	if (!$.support.touch) {
+		return;
+	}
+
+	var mouseProto = $.ui.mouse.prototype,
+		_mouseInit = mouseProto._mouseInit,
+		touchHandled;
+
+	/**
+	 * Simulate a mouse event based on a corresponding touch event
+	 * @param {Object} event A touch event
+	 * @param {String} simulatedType The corresponding mouse event
+	 */
+	function simulateMouseEvent (event, simulatedType) {
+
+		// Ignore multi-touch events
+		if (event.originalEvent.touches.length > 1) {
+			return;
+		}
+
+		event.preventDefault();
+
+		var touch = event.originalEvent.changedTouches[0],
+			simulatedEvent = document.createEvent('MouseEvents');
+
+		// Initialize the simulated mouse event using the touch event's coordinates
+		simulatedEvent.initMouseEvent(
+			simulatedType,    // type
+			true,             // bubbles
+			true,             // cancelable
+			window,           // view
+			1,                // detail
+			touch.screenX,    // screenX
+			touch.screenY,    // screenY
+			touch.clientX,    // clientX
+			touch.clientY,    // clientY
+			false,            // ctrlKey
+			false,            // altKey
+			false,            // shiftKey
+			false,            // metaKey
+			0,                // button
+			null              // relatedTarget
+		);
+
+		// Dispatch the simulated event to the target element
+		event.target.dispatchEvent(simulatedEvent);
+	}
+
+	/**
+	 * Handle the jQuery UI widget's touchstart events
+	 * @param {Object} event The widget element's touchstart event
+	 */
+	mouseProto._touchStart = function (event) {
+
+		var self = this;
+
+		// Ignore the event if another widget is already being handled
+		if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
+			return;
+		}
+
+		// Set the flag to prevent other widgets from inheriting the touch event
+		touchHandled = true;
+
+		// Track movement to determine if interaction was a click
+		self._touchMoved = false;
+
+		// Simulate the mouseover event
+		simulateMouseEvent(event, 'mouseover');
+
+		// Simulate the mousemove event
+		simulateMouseEvent(event, 'mousemove');
+
+		// Simulate the mousedown event
+		simulateMouseEvent(event, 'mousedown');
+	};
+
+	/**
+	 * Handle the jQuery UI widget's touchmove events
+	 * @param {Object} event The document's touchmove event
+	 */
+	mouseProto._touchMove = function (event) {
+
+		// Ignore event if not handled
+		if (!touchHandled) {
+			return;
+		}
+
+		// Interaction was not a click
+		this._touchMoved = true;
+
+		// Simulate the mousemove event
+		simulateMouseEvent(event, 'mousemove');
+	};
+
+	/**
+	 * Handle the jQuery UI widget's touchend events
+	 * @param {Object} event The document's touchend event
+	 */
+	mouseProto._touchEnd = function (event) {
+
+		// Ignore event if not handled
+		if (!touchHandled) {
+			return;
+		}
+
+		// Simulate the mouseup event
+		simulateMouseEvent(event, 'mouseup');
+
+		// Simulate the mouseout event
+		simulateMouseEvent(event, 'mouseout');
+
+		// If the touch interaction did not move, it should trigger a click
+		if (!this._touchMoved) {
+
+			// Simulate the click event
+			simulateMouseEvent(event, 'click');
+		}
+
+		// Unset the flag to allow other widgets to inherit the touch event
+		touchHandled = false;
+	};
+
+	/**
+	 * A duck punch of the $.ui.mouse _mouseInit method to support touch events.
+	 * This method extends the widget with bound touch event handlers that
+	 * translate touch events to mouse events and pass them to the widget's
+	 * original mouse event handling methods.
+	 */
+	mouseProto._mouseInit = function () {
+
+		var self = this;
+
+		// Delegate the touch handlers to the widget's element
+		self.element
+		.bind('touchstart', $.proxy(self, '_touchStart'))
+		.bind('touchmove', $.proxy(self, '_touchMove'))
+		.bind('touchend', $.proxy(self, '_touchEnd'));
+
+		// Call the original $.ui.mouse init method
+		_mouseInit.call(self);
+	};
+
+})(jQuery);
+
+(function (jQuery) {
+	// This is a hack to make ckeditor work inside modal dialogs. Since ckeditor dialogs are placed on body and not in the ui.dialog's DOM. See http://bugs.jqueryui.com/ticket/9087
+	jQuery.widget("ui.dialog", jQuery.ui.dialog, {
+		_allowInteraction: function (event) {
+			return true;
+		}
+	});
+
+	$.ui.dialog.prototype._focusTabbable = function () {};
+})(jQuery);
+
 jQuery = oldJQuery;
