{
  "version": 3,
  "sources": ["../../../plugins/gamepad/index.js"],
  "sourcesContent": ["/**\n * Gamepad Plugin for Pi.js\n * \n * Provides gamepad input handling including button state tracking, axis handling,\n * and connect/disconnect event management.\n * \n * @module plugins/gamepad\n * @version 1.0.0\n */\n\n\"use strict\";\n\n\n/***************************************************************************************************\n * Module State\n **************************************************************************************************/\n\n\nconst m_gamepads = {};\nconst m_onConnectHandlers = [];\nconst m_onDisconnectHandlers = [];\n\nlet m_isInitialized = false;\nlet m_isStopped = false;\nlet m_isLooping = false;\nlet m_gamepadLoopId = null;\nlet m_axesSensitivity = 0.2;\nlet m_tick = 0;\nlet m_lastGamepadUpdateTick = -1;\n\n\n/***************************************************************************************************\n * Plugin Initialization\n **************************************************************************************************/\n\n\nexport default function gamepadPlugin( pluginApi ) {\n\n\t// Add window blur/focus handlers\n\twindow.addEventListener( \"blur\", onWindowBlur );\n\twindow.addEventListener( \"focus\", onWindowFocus );\n\n\t// Register global commands\n\tpluginApi.addCommand( \"startGamepad\", startGamepad, false, [] );\n\tpluginApi.addCommand( \"stopGamepad\", stopGamepad, false, [] );\n\tpluginApi.addCommand( \"ingamepad\", ingamepad, false, [ \"gamepadIndex\" ] );\n\tpluginApi.addCommand(\n\t\t\"setGamepadSensitivity\", setGamepadSensitivity, false, [ \"sensitivity\" ]\n\t);\n\tpluginApi.addCommand( \"onGamepadConnected\", onGamepadConnected, false, [ \"fn\" ] );\n\tpluginApi.addCommand( \"onGamepadDisconnected\", onGamepadDisconnected, false, [ \"fn\" ] );\n\n\t// Register clearEvents handler\n\tpluginApi.registerClearEvents( \"gamepad\", clearGamepadEvents );\n}\n\n\n/***************************************************************************************************\n * External API Commands\n **************************************************************************************************/\n\n\nfunction startGamepad() {\n\tif( !m_isInitialized ) {\n\t\twindow.addEventListener( \"gamepadconnected\", gamepadConnected );\n\t\twindow.addEventListener( \"gamepaddisconnected\", gamepadDisconnected );\n\t\tm_isInitialized = true;\n\t\t\n\t\t// Scan for already-connected gamepads\n\t\tscanForGamepads();\n\t}\n\n\t// Remove explicit stops\n\tm_isStopped = false;\n\n\tif( !m_isLooping ) {\n\t\tm_isLooping = true;\n\t\tm_gamepadLoopId = requestAnimationFrame( gamepadLoop );\n\t}\n}\n\nfunction stopGamepad() {\n\n\t// Explicitly stop gamepad to prevent autostart when ingamepad is called\n\tm_isStopped = true;\n\tif( m_isLooping ) {\n\t\tm_isLooping = false;\n\t\tif( m_gamepadLoopId ) {\n\t\t\tcancelAnimationFrame( m_gamepadLoopId );\n\t\t\tm_gamepadLoopId = null;\n\t\t}\n\t}\n}\n\nfunction ingamepad( options ) {\n\tconst gamepadIndex = options.gamepadIndex;\n\n\t// If stopped explicitly then return without auto starting\n\tif( m_isStopped ) {\n\t\treturn null;\n\t}\n\tstartGamepad();\n\tupdateGamepads();\n\n\t// If no index specified, return all gamepads\n\tif( gamepadIndex === null || gamepadIndex === undefined ) {\n\t\treturn Object.values( m_gamepads ).sort( ( a, b ) => a.index - b.index );\n\t}\n\n\t// Validate gamepadIndex\n\tif( !Number.isInteger( gamepadIndex ) || gamepadIndex < 0 ) {\n\t\tconst error = new TypeError(\n\t\t\t\"ingamepad: gamepadIndex must be a non-negative integer or null.\"\n\t\t);\n\t\terror.code = \"INVALID_PARAMETERS\";\n\t\tthrow error;\n\t}\n\n\t// Return specific gamepad or undefined if not found\n\treturn m_gamepads[ gamepadIndex ];\n}\n\nfunction setGamepadSensitivity( options ) {\n\tconst sensitivity = options.sensitivity;\n\n\tif( typeof sensitivity !== \"number\" || sensitivity < 0 || sensitivity > 1 ) {\n\t\tconst error = new TypeError(\n\t\t\t\"setGamepadSensitivity: sensitivity must be a number between 0 and 1.\"\n\t\t);\n\t\terror.code = \"INVALID_PARAMETERS\";\n\t\tthrow error;\n\t}\n\n\tif( sensitivity === 1 ) {\n\t\tm_axesSensitivity = 0.99999;\n\t} else {\n\t\tm_axesSensitivity = sensitivity;\n\t}\n}\n\nfunction onGamepadConnected( options ) {\n\tconst fn = options.fn;\n\n\tif( typeof fn !== \"function\" ) {\n\t\tconst error = new TypeError( \"onGamepadConnected: fn must be a function.\" );\n\t\terror.code = \"INVALID_PARAMETERS\";\n\t\tthrow error;\n\t}\n\n\tm_onConnectHandlers.push( fn );\n\tstartGamepad();\n}\n\nfunction onGamepadDisconnected( options ) {\n\tconst fn = options.fn;\n\n\tif( typeof fn !== \"function\" ) {\n\t\tconst error = new TypeError( \"onGamepadDisconnected: fn must be a function.\" );\n\t\terror.code = \"INVALID_PARAMETERS\";\n\t\tthrow error;\n\t}\n\n\tm_onDisconnectHandlers.push( fn );\n\tstartGamepad();\n}\n\n\n/***************************************************************************************************\n * Internal Helper Functions\n **************************************************************************************************/\n\n\nfunction gamepadConnected( e ) {\n\n\tupdateGamepad( e.gamepad );\n\n\t// Trigger connect handlers\n\tconst gamepadData = m_gamepads[ e.gamepad.index ];\n\tfor( const handler of m_onConnectHandlers ) {\n\t\thandler( gamepadData );\n\t}\n}\n\nfunction gamepadDisconnected( e ) {\n\n\t// Trigger disconnect handlers\n\tconst data = {\n\t\t\"index\": e.gamepad.index,\n\t\t\"id\": e.gamepad.id,\n\t\t\"mapping\": e.gamepad.mapping,\n\t\t\"connected\": e.gamepad.connected\n\t};\n\n\tfor( const handler of m_onDisconnectHandlers ) {\n\t\thandler( data );\n\t}\n\n\tdelete m_gamepads[ e.gamepad.index ];\n}\n\nfunction gamepadLoop() {\n\tif( !m_isLooping ) {\n\t\treturn;\n\t}\n\n\tupdateGamepads();\n\n\tm_tick += 1;\n\tm_gamepadLoopId = requestAnimationFrame( gamepadLoop );\n}\n\nfunction scanForGamepads() {\n\tlet gamepads;\n\n\tif( \"getGamepads\" in navigator ) {\n\t\tgamepads = navigator.getGamepads();\n\t} else if( \"webkitGetGamepads\" in navigator ) {\n\t\tgamepads = navigator.webkitGetGamepads();\n\t} else {\n\t\tgamepads = [];\n\t}\n\n\t// Add any gamepads that are already connected but not in our list\n\tfor( let i = 0; i < gamepads.length; i++ ) {\n\t\tif( gamepads[ i ] && !( gamepads[ i ].index in m_gamepads ) ) {\n\t\t\tupdateGamepad( gamepads[ i ] );\n\t\t\t\n\t\t\t// Trigger connect handlers for pre-connected gamepads\n\t\t\tconst gamepadData = m_gamepads[ gamepads[ i ].index ];\n\t\t\tfor( const handler of m_onConnectHandlers ) {\n\t\t\t\thandler( gamepadData );\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction updateGamepads() {\n\tlet gamepads;\n\n\t// Prevent updateGamepads from triggering multiple times in the same loop\n\tif( m_lastGamepadUpdateTick === m_tick ) {\n\t\treturn;\n\t}\n\tm_lastGamepadUpdateTick = m_tick;\n\n\tif( \"getGamepads\" in navigator ) {\n\t\tgamepads = navigator.getGamepads();\n\t} else if( \"webkitGetGamepads\" in navigator ) {\n\t\tgamepads = navigator.webkitGetGamepads();\n\t} else {\n\t\tgamepads = [];\n\t}\n\n\tfor( const gamepad of gamepads ) {\n\t\tif( !gamepad || !gamepad.connected ) {\n\t\t\tcontinue;\n\t\t}\n\t\tupdateGamepad( gamepad );\n\t}\n}\n\nfunction createNewGamepadData( gamepadDataRaw ) {\n\n\t// Create the new gamepad data object\n\tconst newGamepadData = {\n\t\t\"index\": gamepadDataRaw.index,\n\t\t\"id\": gamepadDataRaw.id,\n\t\t\"connected\": gamepadDataRaw.connected,\n\t\t\"mapping\": gamepadDataRaw.mapping,\n\t\t\"timestamp\": gamepadDataRaw.timestamp,\n\t\t\"vibrationActuator\": gamepadDataRaw.vibrationActuator,\n\t\t\"axes\": [],\n\t\t\"lastAxes\": [],\n\t\t\"buttons\": []\n\t};\n\n\t// Attach event listeners with helper functions\n\tnewGamepadData.getButton = function( buttonIndex ) {\n\t\tif( buttonIndex < 0 || buttonIndex >= this.buttons.length ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.buttons[ buttonIndex ];\n\t};\n\tnewGamepadData.getButtonPressed = function( buttonIndex ) {\n\t\tif( buttonIndex < 0 || buttonIndex >= this.buttons.length ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.buttons[ buttonIndex ].pressed;\n\t};\n\tnewGamepadData.getButtonJustPressed = function( buttonIndex ) {\n\t\tif( buttonIndex < 0 || buttonIndex >= this.buttons.length ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.buttons[ buttonIndex ].pressStarted;\n\t};\n\tnewGamepadData.getButtonJustReleased = function( buttonIndex ) {\n\t\tif( buttonIndex < 0 || buttonIndex >= this.buttons.length ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.buttons[ buttonIndex ].pressReleased;\n\t};\n\tnewGamepadData.getAxis = function( axisIndex ) {\n\t\tif( axisIndex < 0 || axisIndex >= this.axes.length ) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn this.axes[ axisIndex ];\n\t};\n\tnewGamepadData.getAxisChanged = function( axisIndex ) {\n\t\tif( axisIndex < 0 || axisIndex >= this.axes.length ) {\n\t\t\treturn false;\n\t\t}\n\t\tconst current = this.axes[ axisIndex ];\n\t\tconst last = this.lastAxes[ axisIndex ] || 0;\n\t\treturn current !== last;\n\t};\n\n\treturn newGamepadData;\n}\n\nfunction updateGamepad( gamepadRawData ) {\n\tlet gamepadData = m_gamepads[ gamepadRawData.index ];\n\tif( !gamepadData ) {\n\t\tgamepadData = createNewGamepadData( gamepadRawData );\n\t\tm_gamepads[ gamepadRawData.index ] = gamepadData;\n\t}\n\n\t// Update buttons\n\tconst newButtons = [];\n\tfor( let i = 0; i < gamepadRawData.buttons.length; i += 1 ) {\n\t\tconst buttonNew = gamepadRawData.buttons[ i ];\n\t\tconst buttonOld = gamepadData.buttons[ i ] || { \"pressed\": false };\n\t\tnewButtons.push( {\n\t\t\t\"pressed\": buttonNew.pressed,\n\t\t\t\"value\": buttonNew.value,\n\t\t\t\"pressStarted\": !buttonOld.pressed && buttonNew.pressed,\n\t\t\t\"pressReleased\": buttonOld.pressed && !buttonNew.pressed\n\t\t} );\n\t}\n\tgamepadData.buttons = newButtons;\n\n\t// Update Axes\n\tgamepadData.lastAxes = gamepadData.axes.slice();\n\tgamepadData.axes = [];\n\tfor( let i = 0; i < gamepadRawData.axes.length; i++ ) {\n\t\tgamepadData.axes.push( smoothAxis( gamepadRawData.axes[ i ] ) );\n\t}\n\n\t// Update Raw Data\n\tgamepadData.timestamp = gamepadRawData.timestamp;\n\tgamepadData.connected = gamepadRawData.connected;\n\tgamepadData.vibrationActuator = gamepadRawData.vibrationActuator;\n}\n\nfunction smoothAxis( axis ) {\n\tif( Math.abs( axis ) < m_axesSensitivity ) {\n\t\treturn 0;\n\t}\n\taxis = axis - Math.sign( axis ) * m_axesSensitivity;\n\taxis = axis / ( 1 - m_axesSensitivity );\n\treturn axis;\n}\n\nfunction onWindowBlur() {\n\n\t// Pause gamepad loop when window loses focus\n\tif( m_isLooping ) {\n\t\tif( m_gamepadLoopId ) {\n\t\t\tcancelAnimationFrame( m_gamepadLoopId );\n\t\t\tm_gamepadLoopId = null;\n\t\t}\n\t}\n}\n\nfunction onWindowFocus() {\n\n\t// Resume gamepad loop when window regains focus\n\tif( m_isLooping && !m_gamepadLoopId ) {\n\t\tm_gamepadLoopId = requestAnimationFrame( gamepadLoop );\n\t}\n}\n\n/**\n * Clear all gamepad event handlers\n * Called by clearEvents command\n * \n * @param {Object} [screenData] - Screen data (not used for gamepad events)\n * @returns {void}\n */\nfunction clearGamepadEvents( screenData ) {\n\tm_onConnectHandlers.length = 0;\n\tm_onDisconnectHandlers.length = 0;\n}\n\n// Auto-register in IIFE mode (when loaded via <script> tag)\nif( typeof window !== \"undefined\" && window.pi ) {\n\twindow.pi.registerPlugin( {\n\t\t\"name\": \"gamepad\",\n\t\t\"version\": \"1.0.0\",\n\t\t\"description\": \"Gamepad input handling for Pi.js\",\n\t\t\"init\": gamepadPlugin\n\t} );\n}\n"],
  "mappings": "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",
  "names": ["m_gamepads", "m_onConnectHandlers", "m_onDisconnectHandlers", "m_isInitialized", "m_isStopped", "m_isLooping", "m_gamepadLoopId", "m_axesSensitivity", "m_tick", "m_lastGamepadUpdateTick", "gamepadPlugin", "pluginApi", "onWindowBlur", "onWindowFocus", "startGamepad", "stopGamepad", "ingamepad", "setGamepadSensitivity", "onGamepadConnected", "onGamepadDisconnected", "clearGamepadEvents", "gamepadConnected", "gamepadDisconnected", "scanForGamepads", "gamepadLoop", "options", "gamepadIndex", "updateGamepads", "a", "b", "error", "sensitivity", "fn", "updateGamepad", "gamepadData", "handler", "data", "gamepads", "i", "gamepad", "createNewGamepadData", "gamepadDataRaw", "newGamepadData", "buttonIndex", "axisIndex", "current", "last", "gamepadRawData", "newButtons", "buttonNew", "buttonOld", "smoothAxis", "axis", "screenData"]
}
