@deeptrekker/controls 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t,r,
|
|
1
|
+
var e,t,r,a;!function(e){e.ThrusterForward="THRUSTER_FORWARD",e.ThrusterReverse="THRUSTER_REVERSE",e.Thrusters="THRUSTER",e.YawLeft="YAW_LEFT",e.YawRight="YAW_RIGHT",e.Yaw="YAW",e.LateralLeft="LATERAL_LEFT",e.LateralRight="LATERAL_RIGHT",e.Lateral="LATERAL",e.VerticalUp="VERTICAL_UP",e.VerticalDown="VERTICAL_DOWN",e.Vertical="VERTICAL",e.DisableMotors="DISABLE_MOTORS",e.DepthLock="DEPTH_LOCK",e.AltitudeLock="ALTITUDE_LOCK",e.HeadingLock="HEADING_LOCK",e.PitchLock="PITCH_LOCK",e.AutoStabilization="AUTO_STABILIZATION",e.StationHolding="STATION_HOLDING",e.PrecisionThrusters="PRECISION_THRUSTERS",e.GrabberOpen="GRABBER_OPEN",e.GrabberClose="GRABBER_CLOSE",e.Grabber="GRABBER",e.GrabberRotateLeft="GRABBER_ROTATE_LEFT",e.GrabberRotateRight="GRABBER_ROTATE_RIGHT",e.RotateGrabber="ROTATE_GRABBER",e.MainLight="MAIN_LIGHT",e.AuxLight="AUX_LIGHT",e.Zoom="ZOOM",e.ZoomIn="ZOOM_IN",e.ZoomOut="ZOOM_OUT",e.ElevatingArm="ELEVATING_ARM",e.ElevatingArmDescend="ELEVATING_ARM_DESCEND",e.ElevatingArmAscend="ELEVATING_ARM_ASCEND",e.CruiseControl="CRUISE_CONTROL",e.ReelReset="REEL_RESET",e.SwitchCamera="SWITCH_CAMERA",e.CameraHome="CAMERA_HOME",e.Record="RECORD",e.Screenshot="SCREENSHOT",e.CrawlerSteer="CRAWLER_STEER",e.CrawlerLeft="CRAWLER_LEFT",e.CrawlerRight="CRAWLER_RIGHT",e.CrawlerDrive="CRAWLER_DRIVE",e.CrawlerForward="CRAWLER_FORWARD",e.CrawlerReverse="CRAWLER_REVERSE",e.Pan="PAN",e.PanLeft="PAN_LEFT",e.PanRight="PAN_RIGHT",e.Tilt="TILT",e.TiltUp="TILT_UP",e.TiltDown="TILT_DOWN",e.Focus="FOCUS",e.IncreaseFocus="FOCUS_INCREASE",e.DecreaseFocus="FOCUS_DECREASE",e.Exposure="EXPOSURE",e.IncreaseExposure="EXPOSURE_INCREASE",e.DecreaseExposure="DECREASE_EXPOSURE",e.ToggleLasers="TOGGLE_LASERS"}(e||(e={})),function(e){e.MainLight="MAIN_LIGHT"}(t||(t={})),function(e){e.Vehicle="VEHICLE",e.Camera="CAMERA",e.Reel="REEL",e.Lights="LIGHTS"}(r||(r={})),function(e){e.JoystickAxis="AXIS",e.JoystickButton="BUTTON",e.KeyboardKey="KEY"}(a||(a={}));const n={[e.CrawlerLeft]:!0,[e.CrawlerRight]:!0,[e.CrawlerForward]:!0,[e.CrawlerReverse]:!0,[e.TiltDown]:!0,[e.TiltUp]:!0,[e.PanLeft]:!0,[e.PanRight]:!0},i={positiveCommand:e.CrawlerForward,negativeCommand:e.CrawlerReverse},o={positiveCommand:e.CrawlerRight,negativeCommand:e.CrawlerLeft},E={positiveCommand:e.ElevatingArmAscend,negativeCommand:e.ElevatingArmDescend},R={positiveCommand:e.PanRight,negativeCommand:e.PanLeft},s={positiveCommand:e.TiltUp,negativeCommand:e.TiltDown},C={positiveCommand:e.IncreaseFocus,negativeCommand:e.DecreaseExposure},c={positiveCommand:e.IncreaseExposure,negativeCommand:e.DecreaseExposure},T={positiveCommand:e.ZoomIn,negativeCommand:e.ZoomOut},l={positiveCommand:e.ThrusterForward,negativeCommand:e.ThrusterReverse},m={positiveCommand:e.YawRight,negativeCommand:e.YawLeft},A={positiveCommand:e.LateralRight,negativeCommand:e.LateralLeft},u={positiveCommand:e.VerticalUp,negativeCommand:e.VerticalDown},_={positiveCommand:e.GrabberOpen,negativeCommand:e.GrabberClose},L={positiveCommand:e.GrabberRotateRight,negativeCommand:e.GrabberRotateLeft},d={[e.CrawlerDrive]:i,[e.CrawlerSteer]:o,[e.ElevatingArm]:E,[e.Pan]:R,[e.Tilt]:s,[e.Focus]:C,[e.Exposure]:c,[e.Zoom]:T,[e.Thrusters]:l,[e.Yaw]:m,[e.Lateral]:A,[e.Vertical]:u,[e.Grabber]:_,[e.RotateGrabber]:L};function p(e,t){var r;const a=(null===(r=document.activeElement)||void 0===r?void 0:r.tagName)||"";if("INPUT"===a||"TEXTAREA"===a)return!1;let n=!0;return e.forEach((e=>{t[e]||(n=!1)})),n}function v(e,t,r){let a=0;return r.forEach((r=>{r&&r.id===e&&(a=r.axes[t])})),Math.round(100*a)}function O(e,t,r){let a=!1;return r.forEach((r=>{r&&r.id===e&&(a=r.buttons[t].pressed)})),a}function g(e,t,r){if(!e)return!1;switch(e.input_type){case a.KeyboardKey:return p(e.input_key.split("+"),r);case a.JoystickAxis:if(e.controller_id){const r=e.input_key.indexOf(" ")>-1?+e.input_key.substring(0,e.input_key.indexOf(" ")):+e.input_key,a=v(e.controller_id,r,t);return Math.abs(a)>0}return!1;case a.JoystickButton:return!!e.controller_id&&O(e.controller_id,+e.input_key,t);default:return!1}}function I(e,t,r){if(!e)return 0;switch(e.input_type){case a.KeyboardKey:return p(e.input_key.split("+"),r)?100:0;case a.JoystickAxis:if(e.controller_id){const r=e.input_key.indexOf(" ")>-1?+e.input_key.substring(0,e.input_key.indexOf(" ")):+e.input_key,a=v(e.controller_id,r,t);return Math.abs(a)}return 0;case a.JoystickButton:if(e.controller_id){return O(e.controller_id,+e.input_key,t)?100:0}return 0;default:return 0}}const S={},f=(e,t)=>S[e]=t,h=(e,t={})=>{const r=navigator.getGamepads();Object.entries(t).forEach((([t,a])=>{const i=t,o=d[i];if(o){const{positiveCommand:t,negativeCommand:n}=o;a.forEach((a=>a((I(e[t],r,S)||0)-(I(e[n],r,S)||0))))}else{const t=n[i]?I(e[i],r,S):g(e[i],r,S);a.forEach((e=>e(t)))}}))};export{d as COMBINED_COMMANDS,r as ControlType,a as InputType,n as RATE_COMMANDS,t as RovControls,e as VehicleControl,p as checkKeyPress,g as decodeBooleanMapping,I as decodeRateMapping,v as getAxisValue,O as getButtonValue,h as poll,f as updateKeysPressed};
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,t
|
|
1
|
+
"use strict";var e,o,t;Object.defineProperty(exports,"__esModule",{value:!0}),exports.VehicleControl=void 0,(e=exports.VehicleControl||(exports.VehicleControl={})).ThrusterForward="THRUSTER_FORWARD",e.ThrusterReverse="THRUSTER_REVERSE",e.Thrusters="THRUSTER",e.YawLeft="YAW_LEFT",e.YawRight="YAW_RIGHT",e.Yaw="YAW",e.LateralLeft="LATERAL_LEFT",e.LateralRight="LATERAL_RIGHT",e.Lateral="LATERAL",e.VerticalUp="VERTICAL_UP",e.VerticalDown="VERTICAL_DOWN",e.Vertical="VERTICAL",e.DisableMotors="DISABLE_MOTORS",e.DepthLock="DEPTH_LOCK",e.AltitudeLock="ALTITUDE_LOCK",e.HeadingLock="HEADING_LOCK",e.PitchLock="PITCH_LOCK",e.AutoStabilization="AUTO_STABILIZATION",e.StationHolding="STATION_HOLDING",e.PrecisionThrusters="PRECISION_THRUSTERS",e.GrabberOpen="GRABBER_OPEN",e.GrabberClose="GRABBER_CLOSE",e.Grabber="GRABBER",e.GrabberRotateLeft="GRABBER_ROTATE_LEFT",e.GrabberRotateRight="GRABBER_ROTATE_RIGHT",e.RotateGrabber="ROTATE_GRABBER",e.MainLight="MAIN_LIGHT",e.AuxLight="AUX_LIGHT",e.Zoom="ZOOM",e.ZoomIn="ZOOM_IN",e.ZoomOut="ZOOM_OUT",e.ElevatingArm="ELEVATING_ARM",e.ElevatingArmDescend="ELEVATING_ARM_DESCEND",e.ElevatingArmAscend="ELEVATING_ARM_ASCEND",e.CruiseControl="CRUISE_CONTROL",e.ReelReset="REEL_RESET",e.SwitchCamera="SWITCH_CAMERA",e.CameraHome="CAMERA_HOME",e.Record="RECORD",e.Screenshot="SCREENSHOT",e.CrawlerSteer="CRAWLER_STEER",e.CrawlerLeft="CRAWLER_LEFT",e.CrawlerRight="CRAWLER_RIGHT",e.CrawlerDrive="CRAWLER_DRIVE",e.CrawlerForward="CRAWLER_FORWARD",e.CrawlerReverse="CRAWLER_REVERSE",e.Pan="PAN",e.PanLeft="PAN_LEFT",e.PanRight="PAN_RIGHT",e.Tilt="TILT",e.TiltUp="TILT_UP",e.TiltDown="TILT_DOWN",e.Focus="FOCUS",e.IncreaseFocus="FOCUS_INCREASE",e.DecreaseFocus="FOCUS_DECREASE",e.Exposure="EXPOSURE",e.IncreaseExposure="EXPOSURE_INCREASE",e.DecreaseExposure="DECREASE_EXPOSURE",e.ToggleLasers="TOGGLE_LASERS",exports.RovControls=void 0,(exports.RovControls||(exports.RovControls={})).MainLight="MAIN_LIGHT",exports.ControlType=void 0,(o=exports.ControlType||(exports.ControlType={})).Vehicle="VEHICLE",o.Camera="CAMERA",o.Reel="REEL",o.Lights="LIGHTS",exports.InputType=void 0,(t=exports.InputType||(exports.InputType={})).JoystickAxis="AXIS",t.JoystickButton="BUTTON",t.KeyboardKey="KEY";const r={[exports.VehicleControl.CrawlerLeft]:!0,[exports.VehicleControl.CrawlerRight]:!0,[exports.VehicleControl.CrawlerForward]:!0,[exports.VehicleControl.CrawlerReverse]:!0,[exports.VehicleControl.TiltDown]:!0,[exports.VehicleControl.TiltUp]:!0,[exports.VehicleControl.PanLeft]:!0,[exports.VehicleControl.PanRight]:!0},n={positiveCommand:exports.VehicleControl.CrawlerForward,negativeCommand:exports.VehicleControl.CrawlerReverse},i={positiveCommand:exports.VehicleControl.CrawlerRight,negativeCommand:exports.VehicleControl.CrawlerLeft},l={positiveCommand:exports.VehicleControl.ElevatingArmAscend,negativeCommand:exports.VehicleControl.ElevatingArmDescend},s={positiveCommand:exports.VehicleControl.PanRight,negativeCommand:exports.VehicleControl.PanLeft},a={positiveCommand:exports.VehicleControl.TiltUp,negativeCommand:exports.VehicleControl.TiltDown},p={positiveCommand:exports.VehicleControl.IncreaseFocus,negativeCommand:exports.VehicleControl.DecreaseExposure},C={positiveCommand:exports.VehicleControl.IncreaseExposure,negativeCommand:exports.VehicleControl.DecreaseExposure},c={positiveCommand:exports.VehicleControl.ZoomIn,negativeCommand:exports.VehicleControl.ZoomOut},E={positiveCommand:exports.VehicleControl.ThrusterForward,negativeCommand:exports.VehicleControl.ThrusterReverse},R={positiveCommand:exports.VehicleControl.YawRight,negativeCommand:exports.VehicleControl.YawLeft},x={positiveCommand:exports.VehicleControl.LateralRight,negativeCommand:exports.VehicleControl.LateralLeft},T={positiveCommand:exports.VehicleControl.VerticalUp,negativeCommand:exports.VehicleControl.VerticalDown},h={positiveCommand:exports.VehicleControl.GrabberOpen,negativeCommand:exports.VehicleControl.GrabberClose},u={positiveCommand:exports.VehicleControl.GrabberRotateRight,negativeCommand:exports.VehicleControl.GrabberRotateLeft},A={[exports.VehicleControl.CrawlerDrive]:n,[exports.VehicleControl.CrawlerSteer]:i,[exports.VehicleControl.ElevatingArm]:l,[exports.VehicleControl.Pan]:s,[exports.VehicleControl.Tilt]:a,[exports.VehicleControl.Focus]:p,[exports.VehicleControl.Exposure]:C,[exports.VehicleControl.Zoom]:c,[exports.VehicleControl.Thrusters]:E,[exports.VehicleControl.Yaw]:R,[exports.VehicleControl.Lateral]:x,[exports.VehicleControl.Vertical]:T,[exports.VehicleControl.Grabber]:h,[exports.VehicleControl.RotateGrabber]:u};function d(e,o){var t;const r=(null===(t=document.activeElement)||void 0===t?void 0:t.tagName)||"";if("INPUT"===r||"TEXTAREA"===r)return!1;let n=!0;return e.forEach((e=>{o[e]||(n=!1)})),n}function m(e,o,t){let r=0;return t.forEach((t=>{t&&t.id===e&&(r=t.axes[o])})),Math.round(100*r)}function _(e,o,t){let r=!1;return t.forEach((t=>{t&&t.id===e&&(r=t.buttons[o].pressed)})),r}function L(e,o,t){if(!e)return!1;switch(e.input_type){case exports.InputType.KeyboardKey:return d(e.input_key.split("+"),t);case exports.InputType.JoystickAxis:if(e.controller_id){const t=e.input_key.indexOf(" ")>-1?+e.input_key.substring(0,e.input_key.indexOf(" ")):+e.input_key,r=m(e.controller_id,t,o);return Math.abs(r)>0}return!1;case exports.InputType.JoystickButton:return!!e.controller_id&&_(e.controller_id,+e.input_key,o);default:return!1}}function V(e,o,t){if(!e)return 0;switch(e.input_type){case exports.InputType.KeyboardKey:return d(e.input_key.split("+"),t)?100:0;case exports.InputType.JoystickAxis:if(e.controller_id){const t=e.input_key.indexOf(" ")>-1?+e.input_key.substring(0,e.input_key.indexOf(" ")):+e.input_key,r=m(e.controller_id,t,o);return Math.abs(r)}return 0;case exports.InputType.JoystickButton:if(e.controller_id){return _(e.controller_id,+e.input_key,o)?100:0}return 0;default:return 0}}const v={};exports.COMBINED_COMMANDS=A,exports.RATE_COMMANDS=r,exports.checkKeyPress=d,exports.decodeBooleanMapping=L,exports.decodeRateMapping=V,exports.getAxisValue=m,exports.getButtonValue=_,exports.poll=(e,o={})=>{const t=navigator.getGamepads();Object.entries(o).forEach((([o,n])=>{const i=o,l=A[i];if(l){const{positiveCommand:o,negativeCommand:r}=l;n.forEach((n=>n((V(e[o],t,v)||0)-(V(e[r],t,v)||0))))}else{const o=r[i]?V(e[i],t,v):L(e[i],t,v);n.forEach((e=>e(o)))}}))},exports.updateKeysPressed=(e,o)=>v[e]=o;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/types/inputMapping/index.ts","../src/constants/index.ts","../src/utils/gamepadHelper/index.ts","../src/lib/index.ts"],"sourcesContent":["/**\n * Crawler Controls\n */\nexport enum VehicleControl {\n ThrusterForward = \"THRUSTER_FORWARD\",\n ThrusterReverse = \"THRUSTER_REVERSE\",\n Thrusters = \"THRUSTER\",\n YawLeft = \"YAW_LEFT\",\n YawRight = \"YAW_RIGHT\",\n Yaw = \"YAW\",\n LateralLeft = \"LATERAL_LEFT\",\n LateralRight = \"LATERAL_RIGHT\",\n Lateral = \"LATERAL\",\n VerticalUp = \"VERTICAL_UP\",\n VerticalDown = \"VERTICAL_DOWN\",\n Vertical = \"VERTICAL\",\n DisableMotors = \"DISABLE_MOTORS\",\n DepthLock = \"DEPTH_LOCK\",\n AltitudeLock = \"ALTITUDE_LOCK\",\n HeadingLock = \"HEADING_LOCK\",\n PitchLock = \"PITCH_LOCK\",\n AutoStabilization = \"AUTO_STABILIZATION\",\n StationHolding = \"STATION_HOLDING\",\n PrecisionThrusters = \"PRECISION_THRUSTERS\",\n GrabberOpen = \"GRABBER_OPEN\",\n GrabberClose = \"GRABBER_CLOSE\",\n Grabber = \"GRABBER\",\n GrabberRotateLeft = \"GRABBER_ROTATE_LEFT\",\n GrabberRotateRight = \"GRABBER_ROTATE_RIGHT\",\n RotateGrabber = \"ROTATE_GRABBER\",\n MainLight = \"MAIN_LIGHT\",\n AuxLight = \"AUX_LIGHT\",\n Zoom = \"ZOOM\",\n ZoomIn = \"ZOOM_IN\",\n ZoomOut = \"ZOOM_OUT\",\n ElevatingArm = \"ELEVATING_ARM\",\n ElevatingArmDescend = \"ELEVATING_ARM_DESCEND\",\n ElevatingArmAscend = \"ELEVATING_ARM_ASCEND\",\n CruiseControl = \"CRUISE_CONTROL\",\n ReelReset = \"REEL_RESET\",\n SwitchCamera = \"SWITCH_CAMERA\",\n CameraHome = \"CAMERA_HOME\",\n Record = \"RECORD\",\n Screenshot = \"SCREENSHOT\",\n CrawlerSteer = \"CRAWLER_STEER\",\n CrawlerLeft = \"CRAWLER_LEFT\",\n CrawlerRight = \"CRAWLER_RIGHT\",\n CrawlerDrive = \"CRAWLER_DRIVE\",\n CrawlerForward = \"CRAWLER_FORWARD\",\n CrawlerReverse = \"CRAWLER_REVERSE\",\n Pan = \"PAN\",\n PanLeft = \"PAN_LEFT\",\n PanRight = \"PAN_RIGHT\",\n Tilt = \"TILT\",\n TiltUp = \"TILT_UP\",\n TiltDown = \"TILT_DOWN\",\n Focus = \"FOCUS\",\n IncreaseFocus = \"FOCUS_INCREASE\",\n DecreaseFocus = \"FOCUS_DECREASE\",\n Exposure = \"EXPOSURE\",\n IncreaseExposure = \"EXPOSURE_INCREASE\",\n DecreaseExposure = \"DECREASE_EXPOSURE\",\n ToggleLasers = \"TOGGLE_LASERS\",\n}\n/**\n * ROV Controls\n */\nexport enum RovControls {\n MainLight = \"MAIN_LIGHT\",\n}\n/**\n * Input Mapping Profile\n */\nexport interface InputMappingProfileStore {\n input_mapping_profile_id: number;\n name: string;\n created_at: Date;\n modified_at: Date;\n default: number;\n selected: number;\n}\nexport interface VehicleControlsStore {\n vehicle_control_id: number;\n name: string;\n created_at: Date;\n}\nexport interface MappedInput {\n input_key: string;\n input_type: InputType;\n control_type: ControlType;\n controller_id: string;\n}\nexport enum ControlType {\n Vehicle = \"VEHICLE\",\n Camera = \"CAMERA\",\n Reel = \"REEL\",\n Lights = \"LIGHTS\",\n}\nexport interface RawInput {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n control_type: ControlType;\n name: string;\n control_name: VehicleControl;\n created_at: string;\n}\nexport interface InputMapStore {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n name: string;\n control_name: string;\n created_at: string;\n}\nexport enum InputType {\n JoystickAxis = \"AXIS\",\n JoystickButton = \"BUTTON\",\n KeyboardKey = \"KEY\",\n}\n\nexport interface CombinedCommand {\n positiveCommand: VehicleControl;\n negativeCommand: VehicleControl;\n}\n","import {\n CombinedCommand,\n ControlType,\n InputType,\n MappedInput,\n VehicleControl,\n} from \"@types\";\n\nexport const RATE_COMMANDS: Partial<Record<VehicleControl, boolean>> = {\n [VehicleControl.CrawlerLeft]: true,\n [VehicleControl.CrawlerRight]: true,\n [VehicleControl.CrawlerForward]: true,\n [VehicleControl.CrawlerReverse]: true,\n [VehicleControl.TiltDown]: true,\n [VehicleControl.TiltUp]: true,\n [VehicleControl.PanLeft]: true,\n [VehicleControl.PanRight]: true,\n};\n\nconst CRAWLER_DRIVE: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerForward,\n negativeCommand: VehicleControl.CrawlerReverse,\n};\n\nconst CRAWLER_STEER: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerRight,\n negativeCommand: VehicleControl.CrawlerLeft,\n};\n\nconst ELEVATING_ARM: CombinedCommand = {\n positiveCommand: VehicleControl.ElevatingArmAscend,\n negativeCommand: VehicleControl.ElevatingArmDescend,\n};\nconst PAN: CombinedCommand = {\n positiveCommand: VehicleControl.PanRight,\n negativeCommand: VehicleControl.PanLeft,\n};\nconst TILT: CombinedCommand = {\n positiveCommand: VehicleControl.TiltUp,\n negativeCommand: VehicleControl.TiltDown,\n};\nconst FOCUS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseFocus,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst EXPOSURE: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseExposure,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst ZOOM: CombinedCommand = {\n positiveCommand: VehicleControl.ZoomIn,\n negativeCommand: VehicleControl.ZoomOut,\n};\n\nconst THRUSTERS: CombinedCommand = {\n positiveCommand: VehicleControl.ThrusterForward,\n negativeCommand: VehicleControl.ThrusterReverse,\n};\n\nconst YAW: CombinedCommand = {\n positiveCommand: VehicleControl.YawRight,\n negativeCommand: VehicleControl.YawLeft,\n};\n\nconst LATERAL: CombinedCommand = {\n positiveCommand: VehicleControl.LateralRight,\n negativeCommand: VehicleControl.LateralLeft,\n};\n\nconst VERTICAL: CombinedCommand = {\n positiveCommand: VehicleControl.VerticalUp,\n negativeCommand: VehicleControl.VerticalDown,\n};\n\nconst GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberOpen,\n negativeCommand: VehicleControl.GrabberClose,\n};\n\nconst ROTATE_GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberRotateRight,\n negativeCommand: VehicleControl.GrabberRotateLeft,\n};\nexport const COMBINED_COMMANDS: Partial<\n Record<VehicleControl, CombinedCommand>\n> = {\n [VehicleControl.CrawlerDrive]: CRAWLER_DRIVE,\n [VehicleControl.CrawlerSteer]: CRAWLER_STEER,\n [VehicleControl.ElevatingArm]: ELEVATING_ARM,\n [VehicleControl.Pan]: PAN,\n [VehicleControl.Tilt]: TILT,\n [VehicleControl.Focus]: FOCUS,\n [VehicleControl.Exposure]: EXPOSURE,\n [VehicleControl.Zoom]: ZOOM,\n [VehicleControl.Thrusters]: THRUSTERS,\n [VehicleControl.Yaw]: YAW,\n [VehicleControl.Lateral]: LATERAL,\n [VehicleControl.Vertical]: VERTICAL,\n [VehicleControl.Grabber]: GRABBER,\n [VehicleControl.RotateGrabber]: ROTATE_GRABBER,\n};\n\n","import { VehicleControl, InputType, MappedInput } from \"@types\";\n\nexport function checkKeyPress(\n keys: string[],\n keysPressed: Record<string, boolean>\n) {\n const activeElem = document.activeElement?.tagName || \"\";\n if (activeElem === \"INPUT\" || activeElem === \"TEXTAREA\") {\n return false;\n }\n let keysFound = true;\n keys.forEach((key) => {\n if (!keysPressed[key]) {\n keysFound = false;\n }\n });\n return keysFound;\n}\nexport function getAxisValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[]\n) {\n let axisValue = 0;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n axisValue = gamepad.axes[index];\n }\n });\n return Math.round(axisValue * 100);\n}\nexport function getButtonValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[]\n) {\n let buttonPressed = false;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n buttonPressed = gamepad.buttons[index].pressed;\n }\n });\n return buttonPressed;\n}\nexport function decodeBooleanMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>\n) {\n if (!mapping) {\n return false;\n }\n switch (mapping.input_type) {\n case InputType.KeyboardKey:\n return checkKeyPress(mapping.input_key.split(\"+\"), keysPressed);\n case InputType.JoystickAxis:\n if (mapping.controller_id) {\n const mappingIndex =\n mapping.input_key.indexOf(\" \") > -1\n ? +mapping.input_key.substring(0, mapping.input_key.indexOf(\" \"))\n : +mapping.input_key;\n const axisValue = getAxisValue(\n mapping.controller_id,\n mappingIndex,\n gamepads\n );\n if (mapping.input_key.indexOf(\"+\") > -1) {\n if (axisValue > 10) {\n return true;\n } else {\n return false;\n }\n } else if (mapping.input_key.indexOf(\"-\") > -1) {\n if (axisValue < -10) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n } else {\n return false;\n }\n case InputType.JoystickButton:\n if (mapping.controller_id) {\n return getButtonValue(\n mapping.controller_id,\n +mapping.input_key,\n gamepads\n );\n } else {\n return false;\n }\n default:\n return false;\n }\n}\nexport function decodeRateMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>\n) {\n if (!mapping) {\n return 0;\n }\n switch (mapping.input_type) {\n case InputType.KeyboardKey:\n if (checkKeyPress(mapping.input_key.split(\"+\"), keysPressed)) {\n return 100;\n } else {\n return 0;\n }\n case InputType.JoystickAxis:\n if (mapping.controller_id) {\n const mappingIndex =\n mapping.input_key.indexOf(\" \") > -1\n ? +mapping.input_key.substring(0, mapping.input_key.indexOf(\" \"))\n : +mapping.input_key;\n const axisValue = getAxisValue(\n mapping.controller_id,\n mappingIndex,\n gamepads\n );\n if (mapping.input_key.indexOf(\"+\") > -1) {\n if (axisValue > 10) {\n return axisValue;\n } else {\n return 0;\n }\n } else if (mapping.input_key.indexOf(\"-\") > -1) {\n if (axisValue < -10) {\n return axisValue * -1;\n } else {\n return 0;\n }\n } else {\n return axisValue;\n }\n } else {\n return 0;\n }\n case InputType.JoystickButton:\n if (mapping.controller_id) {\n const buttonPressed = getButtonValue(\n mapping.controller_id,\n +mapping.input_key,\n gamepads\n );\n if (buttonPressed) {\n return 100;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n default:\n return 0;\n }\n}\n","import { COMBINED_COMMANDS, RATE_COMMANDS } from \"@constants\";\nimport { VehicleControl, MappedInput } from \"@types\";\nimport { decodeRateMapping, decodeBooleanMapping } from \"@utils\";\n\n/**\n * Used to determine which keys are currently being pressed\n */\nconst keysPressed: Record<string, boolean> = {};\n\nexport const updateKeysPressed = (key: string, pressed: boolean) =>\n (keysPressed[key] = pressed);\n\nexport const poll = (\n activeMapping: Record<string, MappedInput>,\n subscribers: Partial<\n Record<VehicleControl, Array<(value: number | boolean) => void>>\n > = {},\n) => {\n const gamepads = navigator.getGamepads();\n Object.entries(subscribers).forEach(([control, callbacks]) => {\n const vehicleControl = control as VehicleControl;\n const combinedCommand = COMBINED_COMMANDS[vehicleControl];\n if (combinedCommand) {\n const { positiveCommand, negativeCommand } = combinedCommand;\n callbacks.forEach((callback) =>\n callback(\n (decodeRateMapping(\n activeMapping[positiveCommand],\n gamepads,\n keysPressed,\n ) || 0) -\n (decodeRateMapping(\n activeMapping[negativeCommand],\n gamepads,\n keysPressed,\n ) || 0),\n ),\n );\n } else {\n const value = RATE_COMMANDS[vehicleControl]\n ? decodeRateMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n )\n : decodeBooleanMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n );\n callbacks.forEach((callback) => callback(value));\n }\n });\n};\n"],"names":["VehicleControl","ControlType","InputType","RovControls","RATE_COMMANDS","CrawlerLeft","CrawlerRight","CrawlerForward","CrawlerReverse","TiltDown","TiltUp","PanLeft","PanRight","CRAWLER_DRIVE","positiveCommand","negativeCommand","CRAWLER_STEER","ELEVATING_ARM","ElevatingArmAscend","ElevatingArmDescend","PAN","TILT","FOCUS","IncreaseFocus","DecreaseExposure","EXPOSURE","IncreaseExposure","ZOOM","ZoomIn","ZoomOut","THRUSTERS","ThrusterForward","ThrusterReverse","YAW","YawRight","YawLeft","LATERAL","LateralRight","LateralLeft","VERTICAL","VerticalUp","VerticalDown","GRABBER","GrabberOpen","GrabberClose","ROTATE_GRABBER","GrabberRotateRight","GrabberRotateLeft","COMBINED_COMMANDS","CrawlerDrive","CrawlerSteer","ElevatingArm","Pan","Tilt","Focus","Exposure","Zoom","Thrusters","Yaw","Lateral","Vertical","Grabber","RotateGrabber","checkKeyPress","keys","keysPressed","activeElem","_a","document","activeElement","tagName","keysFound","forEach","key","getAxisValue","controllerID","index","gamepads","axisValue","gamepad","id","axes","Math","round","getButtonValue","buttonPressed","buttons","pressed","decodeBooleanMapping","mapping","input_type","KeyboardKey","input_key","split","JoystickAxis","controller_id","mappingIndex","indexOf","substring","JoystickButton","decodeRateMapping","activeMapping","subscribers","navigator","getGamepads","Object","entries","control","callbacks","vehicleControl","combinedCommand","callback","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types/inputMapping/index.ts","../src/constants/index.ts","../src/utils/gamepadHelper/index.ts","../src/lib/index.ts"],"sourcesContent":["/**\n * Crawler Controls\n */\nexport enum VehicleControl {\n ThrusterForward = \"THRUSTER_FORWARD\",\n ThrusterReverse = \"THRUSTER_REVERSE\",\n Thrusters = \"THRUSTER\",\n YawLeft = \"YAW_LEFT\",\n YawRight = \"YAW_RIGHT\",\n Yaw = \"YAW\",\n LateralLeft = \"LATERAL_LEFT\",\n LateralRight = \"LATERAL_RIGHT\",\n Lateral = \"LATERAL\",\n VerticalUp = \"VERTICAL_UP\",\n VerticalDown = \"VERTICAL_DOWN\",\n Vertical = \"VERTICAL\",\n DisableMotors = \"DISABLE_MOTORS\",\n DepthLock = \"DEPTH_LOCK\",\n AltitudeLock = \"ALTITUDE_LOCK\",\n HeadingLock = \"HEADING_LOCK\",\n PitchLock = \"PITCH_LOCK\",\n AutoStabilization = \"AUTO_STABILIZATION\",\n StationHolding = \"STATION_HOLDING\",\n PrecisionThrusters = \"PRECISION_THRUSTERS\",\n GrabberOpen = \"GRABBER_OPEN\",\n GrabberClose = \"GRABBER_CLOSE\",\n Grabber = \"GRABBER\",\n GrabberRotateLeft = \"GRABBER_ROTATE_LEFT\",\n GrabberRotateRight = \"GRABBER_ROTATE_RIGHT\",\n RotateGrabber = \"ROTATE_GRABBER\",\n MainLight = \"MAIN_LIGHT\",\n AuxLight = \"AUX_LIGHT\",\n Zoom = \"ZOOM\",\n ZoomIn = \"ZOOM_IN\",\n ZoomOut = \"ZOOM_OUT\",\n ElevatingArm = \"ELEVATING_ARM\",\n ElevatingArmDescend = \"ELEVATING_ARM_DESCEND\",\n ElevatingArmAscend = \"ELEVATING_ARM_ASCEND\",\n CruiseControl = \"CRUISE_CONTROL\",\n ReelReset = \"REEL_RESET\",\n SwitchCamera = \"SWITCH_CAMERA\",\n CameraHome = \"CAMERA_HOME\",\n Record = \"RECORD\",\n Screenshot = \"SCREENSHOT\",\n CrawlerSteer = \"CRAWLER_STEER\",\n CrawlerLeft = \"CRAWLER_LEFT\",\n CrawlerRight = \"CRAWLER_RIGHT\",\n CrawlerDrive = \"CRAWLER_DRIVE\",\n CrawlerForward = \"CRAWLER_FORWARD\",\n CrawlerReverse = \"CRAWLER_REVERSE\",\n Pan = \"PAN\",\n PanLeft = \"PAN_LEFT\",\n PanRight = \"PAN_RIGHT\",\n Tilt = \"TILT\",\n TiltUp = \"TILT_UP\",\n TiltDown = \"TILT_DOWN\",\n Focus = \"FOCUS\",\n IncreaseFocus = \"FOCUS_INCREASE\",\n DecreaseFocus = \"FOCUS_DECREASE\",\n Exposure = \"EXPOSURE\",\n IncreaseExposure = \"EXPOSURE_INCREASE\",\n DecreaseExposure = \"DECREASE_EXPOSURE\",\n ToggleLasers = \"TOGGLE_LASERS\",\n}\n/**\n * ROV Controls\n */\nexport enum RovControls {\n MainLight = \"MAIN_LIGHT\",\n}\n/**\n * Input Mapping Profile\n */\nexport interface InputMappingProfileStore {\n input_mapping_profile_id: number;\n name: string;\n created_at: Date;\n modified_at: Date;\n default: number;\n selected: number;\n}\nexport interface VehicleControlsStore {\n vehicle_control_id: number;\n name: string;\n created_at: Date;\n}\nexport interface MappedInput {\n input_key: string;\n input_type: InputType;\n control_type: ControlType;\n controller_id: string;\n}\nexport enum ControlType {\n Vehicle = \"VEHICLE\",\n Camera = \"CAMERA\",\n Reel = \"REEL\",\n Lights = \"LIGHTS\",\n}\nexport interface RawInput {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n control_type: ControlType;\n name: string;\n control_name: VehicleControl;\n created_at: string;\n}\nexport interface InputMapStore {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n name: string;\n control_name: string;\n created_at: string;\n}\nexport enum InputType {\n JoystickAxis = \"AXIS\",\n JoystickButton = \"BUTTON\",\n KeyboardKey = \"KEY\",\n}\n\nexport interface CombinedCommand {\n positiveCommand: VehicleControl;\n negativeCommand: VehicleControl;\n}\n","import {\n CombinedCommand,\n ControlType,\n InputType,\n MappedInput,\n VehicleControl,\n} from \"@types\";\n\nexport const RATE_COMMANDS: Partial<Record<VehicleControl, boolean>> = {\n [VehicleControl.CrawlerLeft]: true,\n [VehicleControl.CrawlerRight]: true,\n [VehicleControl.CrawlerForward]: true,\n [VehicleControl.CrawlerReverse]: true,\n [VehicleControl.TiltDown]: true,\n [VehicleControl.TiltUp]: true,\n [VehicleControl.PanLeft]: true,\n [VehicleControl.PanRight]: true,\n};\n\nconst CRAWLER_DRIVE: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerForward,\n negativeCommand: VehicleControl.CrawlerReverse,\n};\n\nconst CRAWLER_STEER: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerRight,\n negativeCommand: VehicleControl.CrawlerLeft,\n};\n\nconst ELEVATING_ARM: CombinedCommand = {\n positiveCommand: VehicleControl.ElevatingArmAscend,\n negativeCommand: VehicleControl.ElevatingArmDescend,\n};\nconst PAN: CombinedCommand = {\n positiveCommand: VehicleControl.PanRight,\n negativeCommand: VehicleControl.PanLeft,\n};\nconst TILT: CombinedCommand = {\n positiveCommand: VehicleControl.TiltUp,\n negativeCommand: VehicleControl.TiltDown,\n};\nconst FOCUS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseFocus,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst EXPOSURE: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseExposure,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst ZOOM: CombinedCommand = {\n positiveCommand: VehicleControl.ZoomIn,\n negativeCommand: VehicleControl.ZoomOut,\n};\n\nconst THRUSTERS: CombinedCommand = {\n positiveCommand: VehicleControl.ThrusterForward,\n negativeCommand: VehicleControl.ThrusterReverse,\n};\n\nconst YAW: CombinedCommand = {\n positiveCommand: VehicleControl.YawRight,\n negativeCommand: VehicleControl.YawLeft,\n};\n\nconst LATERAL: CombinedCommand = {\n positiveCommand: VehicleControl.LateralRight,\n negativeCommand: VehicleControl.LateralLeft,\n};\n\nconst VERTICAL: CombinedCommand = {\n positiveCommand: VehicleControl.VerticalUp,\n negativeCommand: VehicleControl.VerticalDown,\n};\n\nconst GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberOpen,\n negativeCommand: VehicleControl.GrabberClose,\n};\n\nconst ROTATE_GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberRotateRight,\n negativeCommand: VehicleControl.GrabberRotateLeft,\n};\nexport const COMBINED_COMMANDS: Partial<\n Record<VehicleControl, CombinedCommand>\n> = {\n [VehicleControl.CrawlerDrive]: CRAWLER_DRIVE,\n [VehicleControl.CrawlerSteer]: CRAWLER_STEER,\n [VehicleControl.ElevatingArm]: ELEVATING_ARM,\n [VehicleControl.Pan]: PAN,\n [VehicleControl.Tilt]: TILT,\n [VehicleControl.Focus]: FOCUS,\n [VehicleControl.Exposure]: EXPOSURE,\n [VehicleControl.Zoom]: ZOOM,\n [VehicleControl.Thrusters]: THRUSTERS,\n [VehicleControl.Yaw]: YAW,\n [VehicleControl.Lateral]: LATERAL,\n [VehicleControl.Vertical]: VERTICAL,\n [VehicleControl.Grabber]: GRABBER,\n [VehicleControl.RotateGrabber]: ROTATE_GRABBER,\n};\n\n","import { VehicleControl, InputType, MappedInput } from \"@types\";\n\nexport function checkKeyPress(\n keys: string[],\n keysPressed: Record<string, boolean>,\n) {\n const activeElem = document.activeElement?.tagName || \"\";\n if (activeElem === \"INPUT\" || activeElem === \"TEXTAREA\") {\n return false;\n }\n let keysFound = true;\n keys.forEach((key) => {\n if (!keysPressed[key]) {\n keysFound = false;\n }\n });\n return keysFound;\n}\nexport function getAxisValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let axisValue = 0;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n axisValue = gamepad.axes[index];\n }\n });\n return Math.round(axisValue * 100);\n}\nexport function getButtonValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let buttonPressed = false;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n buttonPressed = gamepad.buttons[index].pressed;\n }\n });\n return buttonPressed;\n}\nexport function decodeBooleanMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n) {\n if (!mapping) {\n return false;\n }\n switch (mapping.input_type) {\n case InputType.KeyboardKey:\n return checkKeyPress(mapping.input_key.split(\"+\"), keysPressed);\n case InputType.JoystickAxis:\n if (mapping.controller_id) {\n const mappingIndex =\n mapping.input_key.indexOf(\" \") > -1\n ? +mapping.input_key.substring(\n 0,\n mapping.input_key.indexOf(\" \"),\n )\n : +mapping.input_key;\n const axisValue = getAxisValue(\n mapping.controller_id,\n mappingIndex,\n gamepads,\n );\n if (Math.abs(axisValue) > 0) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n case InputType.JoystickButton:\n if (mapping.controller_id) {\n return getButtonValue(\n mapping.controller_id,\n +mapping.input_key,\n gamepads,\n );\n } else {\n return false;\n }\n default:\n return false;\n }\n}\nexport function decodeRateMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n) {\n if (!mapping) {\n return 0;\n }\n switch (mapping.input_type) {\n case InputType.KeyboardKey:\n if (checkKeyPress(mapping.input_key.split(\"+\"), keysPressed)) {\n return 100;\n } else {\n return 0;\n }\n case InputType.JoystickAxis:\n if (mapping.controller_id) {\n const mappingIndex =\n mapping.input_key.indexOf(\" \") > -1\n ? +mapping.input_key.substring(\n 0,\n mapping.input_key.indexOf(\" \"),\n )\n : +mapping.input_key;\n const axisValue = getAxisValue(\n mapping.controller_id,\n mappingIndex,\n gamepads,\n );\n return Math.abs(axisValue);\n } else {\n return 0;\n }\n case InputType.JoystickButton:\n if (mapping.controller_id) {\n const buttonPressed = getButtonValue(\n mapping.controller_id,\n +mapping.input_key,\n gamepads,\n );\n if (buttonPressed) {\n return 100;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n default:\n return 0;\n }\n}\n","import { COMBINED_COMMANDS, RATE_COMMANDS } from \"@constants\";\nimport { VehicleControl, MappedInput } from \"@types\";\nimport { decodeRateMapping, decodeBooleanMapping } from \"@utils\";\n\n/**\n * Used to determine which keys are currently being pressed\n */\nconst keysPressed: Record<string, boolean> = {};\n\nexport const updateKeysPressed = (key: string, pressed: boolean) =>\n (keysPressed[key] = pressed);\n\nexport const poll = (\n activeMapping: Record<string, MappedInput>,\n subscribers: Partial<\n Record<VehicleControl, Array<(value: number | boolean) => void>>\n > = {},\n) => {\n const gamepads = navigator.getGamepads();\n Object.entries(subscribers).forEach(([control, callbacks]) => {\n const vehicleControl = control as VehicleControl;\n const combinedCommand = COMBINED_COMMANDS[vehicleControl];\n if (combinedCommand) {\n const { positiveCommand, negativeCommand } = combinedCommand;\n callbacks.forEach((callback) =>\n callback(\n (decodeRateMapping(\n activeMapping[positiveCommand],\n gamepads,\n keysPressed,\n ) || 0) -\n (decodeRateMapping(\n activeMapping[negativeCommand],\n gamepads,\n keysPressed,\n ) || 0),\n ),\n );\n } else {\n const value = RATE_COMMANDS[vehicleControl]\n ? decodeRateMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n )\n : decodeBooleanMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n );\n callbacks.forEach((callback) => callback(value));\n }\n });\n};\n"],"names":["VehicleControl","ControlType","InputType","RovControls","RATE_COMMANDS","CrawlerLeft","CrawlerRight","CrawlerForward","CrawlerReverse","TiltDown","TiltUp","PanLeft","PanRight","CRAWLER_DRIVE","positiveCommand","negativeCommand","CRAWLER_STEER","ELEVATING_ARM","ElevatingArmAscend","ElevatingArmDescend","PAN","TILT","FOCUS","IncreaseFocus","DecreaseExposure","EXPOSURE","IncreaseExposure","ZOOM","ZoomIn","ZoomOut","THRUSTERS","ThrusterForward","ThrusterReverse","YAW","YawRight","YawLeft","LATERAL","LateralRight","LateralLeft","VERTICAL","VerticalUp","VerticalDown","GRABBER","GrabberOpen","GrabberClose","ROTATE_GRABBER","GrabberRotateRight","GrabberRotateLeft","COMBINED_COMMANDS","CrawlerDrive","CrawlerSteer","ElevatingArm","Pan","Tilt","Focus","Exposure","Zoom","Thrusters","Yaw","Lateral","Vertical","Grabber","RotateGrabber","checkKeyPress","keys","keysPressed","activeElem","_a","document","activeElement","tagName","keysFound","forEach","key","getAxisValue","controllerID","index","gamepads","axisValue","gamepad","id","axes","Math","round","getButtonValue","buttonPressed","buttons","pressed","decodeBooleanMapping","mapping","input_type","KeyboardKey","input_key","split","JoystickAxis","controller_id","mappingIndex","indexOf","substring","abs","JoystickButton","decodeRateMapping","activeMapping","subscribers","navigator","getGamepads","Object","entries","control","callbacks","vehicleControl","combinedCommand","callback","value"],"mappings":"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"}
|