From a5f74f1e5569864fdca1564d6b3d75390ef2fbee Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Wed, 8 Sep 2021 03:09:14 +0000 Subject: [PATCH] Migrate Gamepad to dom --- api-reports/2_12.txt | 74 ++++++++++--------- api-reports/2_13.txt | 74 ++++++++++--------- .../{experimental/gamepad => }/Gamepad.scala | 18 ++--- .../dom/experimental/gamepad/package.scala | 35 ++++++--- src/main/scala/org/scalajs/dom/lib.scala | 6 ++ 5 files changed, 122 insertions(+), 85 deletions(-) rename src/main/scala/org/scalajs/dom/{experimental/gamepad => }/Gamepad.scala (84%) diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index c4933f46b..d0febdfa5 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -1690,6 +1690,37 @@ GainNode[JT] val numberOfInputs: Int GainNode[JT] val numberOfOutputs: Int GainNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit GainNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit +Gamepad[JT] val axes: js.Array[Double] +Gamepad[JT] val buttons: js.Array[GamepadButton] +Gamepad[JT] val connected: Boolean +Gamepad[JT] val id: String +Gamepad[JT] val index: Double +Gamepad[JT] val mapping: GamepadMappingType +Gamepad[JT] val timestamp: Double +GamepadButton[JT] val pressed: Boolean +GamepadButton[JT] val value: Double +GamepadEvent[JC] def bubbles: Boolean +GamepadEvent[JC] def cancelBubble: Boolean +GamepadEvent[JC] def cancelable: Boolean +GamepadEvent[JC] def currentTarget: EventTarget +GamepadEvent[JC] def defaultPrevented: Boolean +GamepadEvent[JC] def eventPhase: Int +GamepadEvent[JC] val gamepad: Gamepad +GamepadEvent[JC] def isTrusted: Boolean +GamepadEvent[JC] def preventDefault(): Unit +GamepadEvent[JC] def stopImmediatePropagation(): Unit +GamepadEvent[JC] def stopPropagation(): Unit +GamepadEvent[JC] def target: EventTarget +GamepadEvent[JC] def timeStamp: Double +GamepadEvent[JC] def `type`: String +GamepadEventInit[JT] var bubbles: js.UndefOr[Boolean] +GamepadEventInit[JT] var cancelable: js.UndefOr[Boolean] +GamepadEventInit[JT] var composed: js.UndefOr[Boolean] +GamepadEventInit[JT] var gamepad: js.UndefOr[Gamepad] +GamepadEventInit[JT] var scoped: js.UndefOr[Boolean] +GamepadMappingType[JT] +GamepadMappingType[SO] final val standard: GamepadMappingType +GamepadMappingType[SO] final val unknown: GamepadMappingType Geolocation[JT] def clearWatch(watchId: Int): Unit Geolocation[JT] def getCurrentPosition(successCallback: js.Function1[Position, _]): Unit Geolocation[JT] def getCurrentPosition(successCallback: js.Function1[Position, _], errorCallback: js.Function1[PositionError, _], options: PositionOptions?): Unit @@ -14355,6 +14386,7 @@ Navigator[JC] def appName: String Navigator[JC] def appVersion: String Navigator[JC] def clipboard: Clipboard Navigator[JC] def geolocation: Geolocation +Navigator[JC] def getGamepads(): js.Array[Gamepad] Navigator[JC] def language: String Navigator[JC] def languages: js.Array[String] Navigator[JC] def onLine: Boolean @@ -24396,39 +24428,15 @@ experimental/deviceorientation/DeviceRotationRate[JT] val gamma: Double experimental/domparser/package[SO] type DOMParser = dom.DOMParser (@deprecated in 2.0.0) experimental/domparser/package[SO] type SupportedType = dom.MIMEType (@deprecated in 2.0.0) experimental/domparser/package[SO] @deprecated("use dom.MIMEType instead", "2.0.0") val SupportedType = dom.MIMEType -experimental/gamepad/Gamepad[JT] val axes: js.Array[Double] -experimental/gamepad/Gamepad[JT] val buttons: js.Array[GamepadButton] -experimental/gamepad/Gamepad[JT] val connected: Boolean -experimental/gamepad/Gamepad[JT] val id: String -experimental/gamepad/Gamepad[JT] val index: Double -experimental/gamepad/Gamepad[JT] val mapping: GamepadMappingType -experimental/gamepad/Gamepad[JT] val timestamp: Double -experimental/gamepad/GamepadButton[JT] val pressed: Boolean -experimental/gamepad/GamepadButton[JT] val value: Double -experimental/gamepad/GamepadEvent[JC] def bubbles: Boolean -experimental/gamepad/GamepadEvent[JC] def cancelBubble: Boolean -experimental/gamepad/GamepadEvent[JC] def cancelable: Boolean -experimental/gamepad/GamepadEvent[JC] def currentTarget: EventTarget -experimental/gamepad/GamepadEvent[JC] def defaultPrevented: Boolean -experimental/gamepad/GamepadEvent[JC] def eventPhase: Int -experimental/gamepad/GamepadEvent[JC] val gamepad: Gamepad -experimental/gamepad/GamepadEvent[JC] def isTrusted: Boolean -experimental/gamepad/GamepadEvent[JC] def preventDefault(): Unit -experimental/gamepad/GamepadEvent[JC] def stopImmediatePropagation(): Unit -experimental/gamepad/GamepadEvent[JC] def stopPropagation(): Unit -experimental/gamepad/GamepadEvent[JC] def target: EventTarget -experimental/gamepad/GamepadEvent[JC] def timeStamp: Double -experimental/gamepad/GamepadEvent[JC] def `type`: String -experimental/gamepad/GamepadEventInit[JT] var bubbles: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var cancelable: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var composed: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var gamepad: js.UndefOr[Gamepad] -experimental/gamepad/GamepadEventInit[JT] var scoped: js.UndefOr[Boolean] -experimental/gamepad/GamepadMappingType[JT] -experimental/gamepad/GamepadNavigator[JT] def getGamepads(): js.Array[Gamepad] -experimental/gamepad/package[SO] final val standard: GamepadMappingType -experimental/gamepad/package[SO] implicit def toGamepad(navigator: dom.Navigator): GamepadNavigator -experimental/gamepad/package[SO] final val unknown: GamepadMappingType +experimental/gamepad/package[SO] type Gamepad = dom.Gamepad (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadButton = dom.GamepadButton (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadEvent = dom.GamepadEvent (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadEventInit = dom.GamepadEventInit (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadMappingType = dom.GamepadMappingType (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadNavigator = dom.Navigator (@deprecated in 2.0.0) +experimental/gamepad/package[SO] def standard: dom.GamepadMappingType (@deprecated in 2.0.0) +experimental/gamepad/package[SO] implicit def toGamepad(navigator: dom.Navigator): GamepadNavigator (@deprecated in 2.0.0) +experimental/gamepad/package[SO] def unknown: dom.GamepadMappingType (@deprecated in 2.0.0) experimental/intl/Collator[JC] def compare(string1: String, string2: String): Double experimental/intl/Collator[JC] def resolvedOptions(): CollatorOptions experimental/intl/Collator[JC] def supportedLocalesOf(locales: String | js.Array[String], options: js.Any): js.Array[String] diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index c4933f46b..d0febdfa5 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -1690,6 +1690,37 @@ GainNode[JT] val numberOfInputs: Int GainNode[JT] val numberOfOutputs: Int GainNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit GainNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit +Gamepad[JT] val axes: js.Array[Double] +Gamepad[JT] val buttons: js.Array[GamepadButton] +Gamepad[JT] val connected: Boolean +Gamepad[JT] val id: String +Gamepad[JT] val index: Double +Gamepad[JT] val mapping: GamepadMappingType +Gamepad[JT] val timestamp: Double +GamepadButton[JT] val pressed: Boolean +GamepadButton[JT] val value: Double +GamepadEvent[JC] def bubbles: Boolean +GamepadEvent[JC] def cancelBubble: Boolean +GamepadEvent[JC] def cancelable: Boolean +GamepadEvent[JC] def currentTarget: EventTarget +GamepadEvent[JC] def defaultPrevented: Boolean +GamepadEvent[JC] def eventPhase: Int +GamepadEvent[JC] val gamepad: Gamepad +GamepadEvent[JC] def isTrusted: Boolean +GamepadEvent[JC] def preventDefault(): Unit +GamepadEvent[JC] def stopImmediatePropagation(): Unit +GamepadEvent[JC] def stopPropagation(): Unit +GamepadEvent[JC] def target: EventTarget +GamepadEvent[JC] def timeStamp: Double +GamepadEvent[JC] def `type`: String +GamepadEventInit[JT] var bubbles: js.UndefOr[Boolean] +GamepadEventInit[JT] var cancelable: js.UndefOr[Boolean] +GamepadEventInit[JT] var composed: js.UndefOr[Boolean] +GamepadEventInit[JT] var gamepad: js.UndefOr[Gamepad] +GamepadEventInit[JT] var scoped: js.UndefOr[Boolean] +GamepadMappingType[JT] +GamepadMappingType[SO] final val standard: GamepadMappingType +GamepadMappingType[SO] final val unknown: GamepadMappingType Geolocation[JT] def clearWatch(watchId: Int): Unit Geolocation[JT] def getCurrentPosition(successCallback: js.Function1[Position, _]): Unit Geolocation[JT] def getCurrentPosition(successCallback: js.Function1[Position, _], errorCallback: js.Function1[PositionError, _], options: PositionOptions?): Unit @@ -14355,6 +14386,7 @@ Navigator[JC] def appName: String Navigator[JC] def appVersion: String Navigator[JC] def clipboard: Clipboard Navigator[JC] def geolocation: Geolocation +Navigator[JC] def getGamepads(): js.Array[Gamepad] Navigator[JC] def language: String Navigator[JC] def languages: js.Array[String] Navigator[JC] def onLine: Boolean @@ -24396,39 +24428,15 @@ experimental/deviceorientation/DeviceRotationRate[JT] val gamma: Double experimental/domparser/package[SO] type DOMParser = dom.DOMParser (@deprecated in 2.0.0) experimental/domparser/package[SO] type SupportedType = dom.MIMEType (@deprecated in 2.0.0) experimental/domparser/package[SO] @deprecated("use dom.MIMEType instead", "2.0.0") val SupportedType = dom.MIMEType -experimental/gamepad/Gamepad[JT] val axes: js.Array[Double] -experimental/gamepad/Gamepad[JT] val buttons: js.Array[GamepadButton] -experimental/gamepad/Gamepad[JT] val connected: Boolean -experimental/gamepad/Gamepad[JT] val id: String -experimental/gamepad/Gamepad[JT] val index: Double -experimental/gamepad/Gamepad[JT] val mapping: GamepadMappingType -experimental/gamepad/Gamepad[JT] val timestamp: Double -experimental/gamepad/GamepadButton[JT] val pressed: Boolean -experimental/gamepad/GamepadButton[JT] val value: Double -experimental/gamepad/GamepadEvent[JC] def bubbles: Boolean -experimental/gamepad/GamepadEvent[JC] def cancelBubble: Boolean -experimental/gamepad/GamepadEvent[JC] def cancelable: Boolean -experimental/gamepad/GamepadEvent[JC] def currentTarget: EventTarget -experimental/gamepad/GamepadEvent[JC] def defaultPrevented: Boolean -experimental/gamepad/GamepadEvent[JC] def eventPhase: Int -experimental/gamepad/GamepadEvent[JC] val gamepad: Gamepad -experimental/gamepad/GamepadEvent[JC] def isTrusted: Boolean -experimental/gamepad/GamepadEvent[JC] def preventDefault(): Unit -experimental/gamepad/GamepadEvent[JC] def stopImmediatePropagation(): Unit -experimental/gamepad/GamepadEvent[JC] def stopPropagation(): Unit -experimental/gamepad/GamepadEvent[JC] def target: EventTarget -experimental/gamepad/GamepadEvent[JC] def timeStamp: Double -experimental/gamepad/GamepadEvent[JC] def `type`: String -experimental/gamepad/GamepadEventInit[JT] var bubbles: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var cancelable: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var composed: js.UndefOr[Boolean] -experimental/gamepad/GamepadEventInit[JT] var gamepad: js.UndefOr[Gamepad] -experimental/gamepad/GamepadEventInit[JT] var scoped: js.UndefOr[Boolean] -experimental/gamepad/GamepadMappingType[JT] -experimental/gamepad/GamepadNavigator[JT] def getGamepads(): js.Array[Gamepad] -experimental/gamepad/package[SO] final val standard: GamepadMappingType -experimental/gamepad/package[SO] implicit def toGamepad(navigator: dom.Navigator): GamepadNavigator -experimental/gamepad/package[SO] final val unknown: GamepadMappingType +experimental/gamepad/package[SO] type Gamepad = dom.Gamepad (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadButton = dom.GamepadButton (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadEvent = dom.GamepadEvent (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadEventInit = dom.GamepadEventInit (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadMappingType = dom.GamepadMappingType (@deprecated in 2.0.0) +experimental/gamepad/package[SO] type GamepadNavigator = dom.Navigator (@deprecated in 2.0.0) +experimental/gamepad/package[SO] def standard: dom.GamepadMappingType (@deprecated in 2.0.0) +experimental/gamepad/package[SO] implicit def toGamepad(navigator: dom.Navigator): GamepadNavigator (@deprecated in 2.0.0) +experimental/gamepad/package[SO] def unknown: dom.GamepadMappingType (@deprecated in 2.0.0) experimental/intl/Collator[JC] def compare(string1: String, string2: String): Double experimental/intl/Collator[JC] def resolvedOptions(): CollatorOptions experimental/intl/Collator[JC] def supportedLocalesOf(locales: String | js.Array[String], options: js.Any): js.Array[String] diff --git a/src/main/scala/org/scalajs/dom/experimental/gamepad/Gamepad.scala b/src/main/scala/org/scalajs/dom/Gamepad.scala similarity index 84% rename from src/main/scala/org/scalajs/dom/experimental/gamepad/Gamepad.scala rename to src/main/scala/org/scalajs/dom/Gamepad.scala index df7db3bb6..ce27c737f 100644 --- a/src/main/scala/org/scalajs/dom/experimental/gamepad/Gamepad.scala +++ b/src/main/scala/org/scalajs/dom/Gamepad.scala @@ -4,16 +4,20 @@ * [[https://www.w3.org/TR/2015/WD-gamepad-20151217/ W3C Working Draft]] */ -package org.scalajs.dom.experimental.gamepad +package org.scalajs.dom -import org.scalajs.dom -import org.scalajs.dom.EventInit import scala.scalajs.js import scala.scalajs.js.annotation._ @js.native trait GamepadMappingType extends js.Any +object GamepadMappingType { + final val `unknown`: GamepadMappingType = "".asInstanceOf[GamepadMappingType] + + final val `standard`: GamepadMappingType = "standard".asInstanceOf[GamepadMappingType] +} + /** Represents the state of a button. */ trait GamepadButton extends js.Any { @@ -57,12 +61,6 @@ trait GamepadEventInit extends EventInit { @JSGlobal("GamepadEvent") @js.native -class GamepadEvent(typeArg: String, init: js.UndefOr[GamepadEventInit] = js.undefined) - extends dom.Event(typeArg, init) { +class GamepadEvent(typeArg: String, init: js.UndefOr[GamepadEventInit] = js.undefined) extends Event(typeArg, init) { val gamepad: Gamepad = js.native } - -@js.native -trait GamepadNavigator extends js.Any { - def getGamepads(): js.Array[Gamepad] = js.native -} diff --git a/src/main/scala/org/scalajs/dom/experimental/gamepad/package.scala b/src/main/scala/org/scalajs/dom/experimental/gamepad/package.scala index 776c51de6..b2d3eecfb 100644 --- a/src/main/scala/org/scalajs/dom/experimental/gamepad/package.scala +++ b/src/main/scala/org/scalajs/dom/experimental/gamepad/package.scala @@ -1,18 +1,35 @@ -package org.scalajs.dom.experimental +package org.scalajs +package dom.experimental -import org.scalajs.dom import scala.language.implicitConversions -/** Implements the Gamepad API. - * - * [[https://www.w3.org/TR/2015/WD-gamepad-20151217/ W3C Working Draft]] - */ package object gamepad { + @deprecated("use dom.GamepadMappingType instead", "2.0.0") + type GamepadMappingType = dom.GamepadMappingType + + @deprecated("use dom.GamepadButton instead", "2.0.0") + type GamepadButton = dom.GamepadButton + + @deprecated("use dom.Gamepad instead", "2.0.0") + type Gamepad = dom.Gamepad + + @deprecated("use dom.GamepadEventInit instead", "2.0.0") + type GamepadEventInit = dom.GamepadEventInit + + @deprecated("use dom.GamepadEvent instead", "2.0.0") + type GamepadEvent = dom.GamepadEvent + + @deprecated("use dom.Navigator instead", "2.0.0") + type GamepadNavigator = dom.Navigator + + @deprecated("use dom.Navigator directly instead", "2.0.0") implicit def toGamepad(navigator: dom.Navigator): GamepadNavigator = - navigator.asInstanceOf[GamepadNavigator] + navigator - final val `unknown`: GamepadMappingType = "".asInstanceOf[GamepadMappingType] + @deprecated("use dom.GamepadMappingType.`unknown` instead", "2.0.0") + def `unknown`: dom.GamepadMappingType = dom.GamepadMappingType.`unknown` - final val `standard`: GamepadMappingType = "standard".asInstanceOf[GamepadMappingType] + @deprecated("use dom.GamepadMappingType.`standard` instead", "2.0.0") + def `standard`: dom.GamepadMappingType = dom.GamepadMappingType.`standard` } diff --git a/src/main/scala/org/scalajs/dom/lib.scala b/src/main/scala/org/scalajs/dom/lib.scala index 54e8be8e5..1dfee2ac4 100644 --- a/src/main/scala/org/scalajs/dom/lib.scala +++ b/src/main/scala/org/scalajs/dom/lib.scala @@ -325,6 +325,12 @@ class Navigator * The data parameter is the ArrayBufferView, Blob, DOMString, or FormData data that is to be transmitted. */ def sendBeacon(url: String, data: BodyInit = js.native): Boolean = js.native + + /** Implements the Gamepad API. + * + * [[https://www.w3.org/TR/2015/WD-gamepad-20151217/ W3C Working Draft]] + */ + def getGamepads(): js.Array[Gamepad] = js.native } @js.native