diff --git a/libraries/stdlib/js/idl/org.w3c.dom.idl b/libraries/stdlib/js/idl/org.w3c.dom.idl index fbc22b3662d..c166c1d9065 100644 --- a/libraries/stdlib/js/idl/org.w3c.dom.idl +++ b/libraries/stdlib/js/idl/org.w3c.dom.idl @@ -3962,4 +3962,32 @@ CSSPseudoElement implements GeometryUtils; Document implements GeometryUtils; typedef (Text or Element or CSSPseudoElement or Document) GeometryNode; +// Downloaded from https://www.w3.org/TR/touch-events/ +interface Touch { + readonly attribute long identifier; + readonly attribute EventTarget target; + readonly attribute long screenX; + readonly attribute long screenY; + readonly attribute long clientX; + readonly attribute long clientY; + readonly attribute long pageX; + readonly attribute long pageY; + }; +interface TouchList { + readonly attribute unsigned long length; + getter Touch? item (unsigned long index); + }; +interface TouchEvent : UIEvent { + readonly attribute TouchList touches; + readonly attribute TouchList targetTouches; + readonly attribute TouchList changedTouches; + readonly attribute boolean altKey; + readonly attribute boolean metaKey; + readonly attribute boolean ctrlKey; + readonly attribute boolean shiftKey; + }; +partial interface Document { + Touch createTouch (WindowProxy view, EventTarget target, long identifier, long pageX, long pageY, long screenX, long screenY); + TouchList createTouchList (Touch... touches); + }; diff --git a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt index 0458409ac50..9aaf3eacf7c 100644 --- a/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt +++ b/libraries/stdlib/js/src/org.w3c/org.w3c.dom.kt @@ -4938,6 +4938,8 @@ public external open class Document : Node, GlobalEventHandlers, DocumentAndElem fun elementFromPoint(x: Double, y: Double): Element? fun elementsFromPoint(x: Double, y: Double): Array fun caretPositionFromPoint(x: Double, y: Double): CaretPosition? + fun createTouch(view: Window, target: EventTarget, identifier: Int, pageX: Int, pageY: Int, screenX: Int, screenY: Int): Touch + fun createTouchList(vararg touches: Touch): TouchList fun exitFullscreen(): Promise override fun getElementById(elementId: String): Element? override fun prepend(vararg nodes: dynamic) @@ -5926,6 +5928,45 @@ public external interface GeometryUtils { fun convertPointFromNode(point: DOMPointInit, from: dynamic, options: ConvertCoordinateOptions = definedExternally): DOMPoint } +/** + * Exposes the JavaScript [Touch](https://developer.mozilla.org/en/docs/Web/API/Touch) to Kotlin + */ +public external abstract class Touch { + open val identifier: Int + open val target: EventTarget + open val screenX: Int + open val screenY: Int + open val clientX: Int + open val clientY: Int + open val pageX: Int + open val pageY: Int + open val region: String? +} + +public external abstract class TouchList : ItemArrayLike { + override fun item(index: Int): Touch? +} + +@kotlin.internal.InlineOnly +public inline operator fun TouchList.get(index: Int): Touch? = asDynamic()[index] + +public external open class TouchEvent : UIEvent { + open val touches: TouchList + open val targetTouches: TouchList + open val changedTouches: TouchList + open val altKey: Boolean + open val metaKey: Boolean + open val ctrlKey: Boolean + open val shiftKey: Boolean + + companion object { + val NONE: Short + val CAPTURING_PHASE: Short + val AT_TARGET: Short + val BUBBLING_PHASE: Short + } +} + /** * Exposes the JavaScript [Image](https://developer.mozilla.org/en/docs/Web/API/Image) to Kotlin */ diff --git a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/download.kt b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/download.kt index 413d5f9fbad..243ba4c33b1 100644 --- a/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/download.kt +++ b/libraries/tools/dukat/src/main/kotlin/org/jetbrains/kotlin/tools/dukat/download.kt @@ -101,6 +101,7 @@ private val urls = listOf( "https://www.w3.org/TR/animation-timing/" to "org.w3c.dom", "https://www.w3.org/TR/geometry-1/" to "org.w3c.dom", "https://www.w3.org/TR/cssom-view/" to "org.w3c.dom", + "https://www.w3.org/TR/touch-events/" to "org.w3c.dom", "https://www.w3.org/TR/uievents/" to "org.w3c.dom.events", "https://www.w3.org/TR/pointerevents/" to "org.w3c.dom.pointerevents",