{"ast":null,"code":"import { EventConstants } from \"../Events/deviceInputEvents.js\";\nimport { DeviceType, PointerInput } from \"./InputDevices/deviceEnums.js\";\n/**\n * Class to wrap DeviceInputSystem data into an event object\n */\nexport class DeviceEventFactory {\n /**\n * Create device input events based on provided type and slot\n *\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @param pointerId PointerId to use for pointer events\n * @returns IUIEvent object\n */\n static CreateDeviceEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId) {\n switch (deviceType) {\n case DeviceType.Keyboard:\n return this._CreateKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n case DeviceType.Mouse:\n if (inputIndex === PointerInput.MouseWheelX || inputIndex === PointerInput.MouseWheelY || inputIndex === PointerInput.MouseWheelZ) {\n return this._CreateWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n }\n // eslint-disable-next-line no-fallthrough\n case DeviceType.Touch:\n return this._CreatePointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId);\n default:\n // eslint-disable-next-line no-throw-literal\n throw `Unable to generate event for device ${DeviceType[deviceType]}`;\n }\n }\n /**\n * Creates pointer event\n *\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @param pointerId PointerId to use for pointer events\n * @returns IUIEvent object (Pointer)\n */\n static _CreatePointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId) {\n const evt = this._CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n if (deviceType === DeviceType.Mouse) {\n evt.deviceType = DeviceType.Mouse;\n evt.pointerId = 1;\n evt.pointerType = \"mouse\";\n } else {\n evt.deviceType = DeviceType.Touch;\n evt.pointerId = pointerId !== null && pointerId !== void 0 ? pointerId : deviceSlot;\n evt.pointerType = \"touch\";\n }\n let buttons = 0;\n // Populate buttons property with current state of all mouse buttons\n // Uses values found on: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.LeftClick);\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.RightClick) * 2;\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MiddleClick) * 4;\n evt.buttons = buttons;\n if (inputIndex === PointerInput.Move) {\n evt.type = \"pointermove\";\n } else if (inputIndex >= PointerInput.LeftClick && inputIndex <= PointerInput.RightClick) {\n evt.type = currentState === 1 ? \"pointerdown\" : \"pointerup\";\n evt.button = inputIndex - 2;\n }\n return evt;\n }\n /**\n * Create Mouse Wheel Event\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IUIEvent object (Wheel)\n */\n static _CreateWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n // While WheelEvents don't generally have a pointerId, we used to add one in the InputManager\n // This line has been added to make the InputManager more platform-agnostic\n // Similar code exists in the WebDeviceInputSystem to handle browser created events\n evt.pointerId = 1;\n evt.type = \"wheel\";\n evt.deltaMode = EventConstants.DOM_DELTA_PIXEL;\n evt.deltaX = 0;\n evt.deltaY = 0;\n evt.deltaZ = 0;\n switch (inputIndex) {\n case PointerInput.MouseWheelX:\n evt.deltaX = currentState;\n break;\n case PointerInput.MouseWheelY:\n evt.deltaY = currentState;\n break;\n case PointerInput.MouseWheelZ:\n evt.deltaZ = currentState;\n break;\n }\n return evt;\n }\n /**\n * Create Mouse Event\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IUIEvent object (Mouse)\n */\n static _CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateEvent(elementToAttachTo);\n const pointerX = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Horizontal);\n const pointerY = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Vertical);\n // Handle offsets/deltas based on existence of HTMLElement\n if (elementToAttachTo) {\n evt.movementX = 0;\n evt.movementY = 0;\n evt.offsetX = evt.movementX - elementToAttachTo.getBoundingClientRect().x;\n evt.offsetY = evt.movementY - elementToAttachTo.getBoundingClientRect().y;\n } else {\n evt.movementX = deviceInputSystem.pollInput(deviceType, deviceSlot, 10 /* NativePointerInput.DeltaHorizontal */); // DeltaHorizontal\n evt.movementY = deviceInputSystem.pollInput(deviceType, deviceSlot, 11 /* NativePointerInput.DeltaVertical */); // DeltaVertical\n evt.offsetX = 0;\n evt.offsetY = 0;\n }\n this._CheckNonCharacterKeys(evt, deviceInputSystem);\n evt.clientX = pointerX;\n evt.clientY = pointerY;\n evt.x = pointerX;\n evt.y = pointerY;\n evt.deviceType = deviceType;\n evt.deviceSlot = deviceSlot;\n evt.inputIndex = inputIndex;\n return evt;\n }\n /**\n * Create Keyboard Event\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IEvent object (Keyboard)\n */\n static _CreateKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateEvent(elementToAttachTo);\n this._CheckNonCharacterKeys(evt, deviceInputSystem);\n evt.deviceType = DeviceType.Keyboard;\n evt.deviceSlot = 0;\n evt.inputIndex = inputIndex;\n evt.type = currentState === 1 ? \"keydown\" : \"keyup\";\n evt.key = String.fromCharCode(inputIndex);\n evt.keyCode = inputIndex;\n return evt;\n }\n /**\n * Add parameters for non-character keys (Ctrl, Alt, Meta, Shift)\n * @param evt Event object to add parameters to\n * @param deviceInputSystem DeviceInputSystem to pull values from\n */\n static _CheckNonCharacterKeys(evt, deviceInputSystem) {\n const isKeyboardActive = deviceInputSystem.isDeviceAvailable(DeviceType.Keyboard);\n const altKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 18) === 1;\n const ctrlKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 17) === 1;\n const metaKey = isKeyboardActive && (deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 91) === 1 || deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 92) === 1 || deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 93) === 1);\n const shiftKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 16) === 1;\n evt.altKey = altKey;\n evt.ctrlKey = ctrlKey;\n evt.metaKey = metaKey;\n evt.shiftKey = shiftKey;\n }\n /**\n * Create base event object\n * @param elementToAttachTo Value to use as event target\n * @returns\n */\n static _CreateEvent(elementToAttachTo) {\n const evt = {};\n evt.preventDefault = () => {};\n evt.target = elementToAttachTo;\n return evt;\n }\n}","map":{"version":3,"names":["EventConstants","DeviceType","PointerInput","DeviceEventFactory","CreateDeviceEvent","deviceType","deviceSlot","inputIndex","currentState","deviceInputSystem","elementToAttachTo","pointerId","Keyboard","_CreateKeyboardEvent","Mouse","MouseWheelX","MouseWheelY","MouseWheelZ","_CreateWheelEvent","Touch","_CreatePointerEvent","evt","_CreateMouseEvent","pointerType","buttons","pollInput","LeftClick","RightClick","MiddleClick","Move","type","button","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","deltaZ","_CreateEvent","pointerX","Horizontal","pointerY","Vertical","movementX","movementY","offsetX","getBoundingClientRect","x","offsetY","y","_CheckNonCharacterKeys","clientX","clientY","key","String","fromCharCode","keyCode","isKeyboardActive","isDeviceAvailable","altKey","ctrlKey","metaKey","shiftKey","preventDefault","target"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/DeviceInput/eventFactory.js"],"sourcesContent":["\nimport { EventConstants } from \"../Events/deviceInputEvents.js\";\nimport { DeviceType, PointerInput } from \"./InputDevices/deviceEnums.js\";\n/**\n * Class to wrap DeviceInputSystem data into an event object\n */\nexport class DeviceEventFactory {\n /**\n * Create device input events based on provided type and slot\n *\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @param pointerId PointerId to use for pointer events\n * @returns IUIEvent object\n */\n static CreateDeviceEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId) {\n switch (deviceType) {\n case DeviceType.Keyboard:\n return this._CreateKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n case DeviceType.Mouse:\n if (inputIndex === PointerInput.MouseWheelX || inputIndex === PointerInput.MouseWheelY || inputIndex === PointerInput.MouseWheelZ) {\n return this._CreateWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n }\n // eslint-disable-next-line no-fallthrough\n case DeviceType.Touch:\n return this._CreatePointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId);\n default:\n // eslint-disable-next-line no-throw-literal\n throw `Unable to generate event for device ${DeviceType[deviceType]}`;\n }\n }\n /**\n * Creates pointer event\n *\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @param pointerId PointerId to use for pointer events\n * @returns IUIEvent object (Pointer)\n */\n static _CreatePointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo, pointerId) {\n const evt = this._CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n if (deviceType === DeviceType.Mouse) {\n evt.deviceType = DeviceType.Mouse;\n evt.pointerId = 1;\n evt.pointerType = \"mouse\";\n }\n else {\n evt.deviceType = DeviceType.Touch;\n evt.pointerId = pointerId ?? deviceSlot;\n evt.pointerType = \"touch\";\n }\n let buttons = 0;\n // Populate buttons property with current state of all mouse buttons\n // Uses values found on: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.LeftClick);\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.RightClick) * 2;\n buttons += deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MiddleClick) * 4;\n evt.buttons = buttons;\n if (inputIndex === PointerInput.Move) {\n evt.type = \"pointermove\";\n }\n else if (inputIndex >= PointerInput.LeftClick && inputIndex <= PointerInput.RightClick) {\n evt.type = currentState === 1 ? \"pointerdown\" : \"pointerup\";\n evt.button = inputIndex - 2;\n }\n return evt;\n }\n /**\n * Create Mouse Wheel Event\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IUIEvent object (Wheel)\n */\n static _CreateWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\n // While WheelEvents don't generally have a pointerId, we used to add one in the InputManager\n // This line has been added to make the InputManager more platform-agnostic\n // Similar code exists in the WebDeviceInputSystem to handle browser created events\n evt.pointerId = 1;\n evt.type = \"wheel\";\n evt.deltaMode = EventConstants.DOM_DELTA_PIXEL;\n evt.deltaX = 0;\n evt.deltaY = 0;\n evt.deltaZ = 0;\n switch (inputIndex) {\n case PointerInput.MouseWheelX:\n evt.deltaX = currentState;\n break;\n case PointerInput.MouseWheelY:\n evt.deltaY = currentState;\n break;\n case PointerInput.MouseWheelZ:\n evt.deltaZ = currentState;\n break;\n }\n return evt;\n }\n /**\n * Create Mouse Event\n * @param deviceType Type of device\n * @param deviceSlot \"Slot\" or index that device is referenced in\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IUIEvent object (Mouse)\n */\n static _CreateMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateEvent(elementToAttachTo);\n const pointerX = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Horizontal);\n const pointerY = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Vertical);\n // Handle offsets/deltas based on existence of HTMLElement\n if (elementToAttachTo) {\n evt.movementX = 0;\n evt.movementY = 0;\n evt.offsetX = evt.movementX - elementToAttachTo.getBoundingClientRect().x;\n evt.offsetY = evt.movementY - elementToAttachTo.getBoundingClientRect().y;\n }\n else {\n evt.movementX = deviceInputSystem.pollInput(deviceType, deviceSlot, 10 /* NativePointerInput.DeltaHorizontal */); // DeltaHorizontal\n evt.movementY = deviceInputSystem.pollInput(deviceType, deviceSlot, 11 /* NativePointerInput.DeltaVertical */); // DeltaVertical\n evt.offsetX = 0;\n evt.offsetY = 0;\n }\n this._CheckNonCharacterKeys(evt, deviceInputSystem);\n evt.clientX = pointerX;\n evt.clientY = pointerY;\n evt.x = pointerX;\n evt.y = pointerY;\n evt.deviceType = deviceType;\n evt.deviceSlot = deviceSlot;\n evt.inputIndex = inputIndex;\n return evt;\n }\n /**\n * Create Keyboard Event\n * @param inputIndex Id of input to be checked\n * @param currentState Current value for given input\n * @param deviceInputSystem Reference to DeviceInputSystem\n * @param elementToAttachTo HTMLElement to reference as target for inputs\n * @returns IEvent object (Keyboard)\n */\n static _CreateKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo) {\n const evt = this._CreateEvent(elementToAttachTo);\n this._CheckNonCharacterKeys(evt, deviceInputSystem);\n evt.deviceType = DeviceType.Keyboard;\n evt.deviceSlot = 0;\n evt.inputIndex = inputIndex;\n evt.type = currentState === 1 ? \"keydown\" : \"keyup\";\n evt.key = String.fromCharCode(inputIndex);\n evt.keyCode = inputIndex;\n return evt;\n }\n /**\n * Add parameters for non-character keys (Ctrl, Alt, Meta, Shift)\n * @param evt Event object to add parameters to\n * @param deviceInputSystem DeviceInputSystem to pull values from\n */\n static _CheckNonCharacterKeys(evt, deviceInputSystem) {\n const isKeyboardActive = deviceInputSystem.isDeviceAvailable(DeviceType.Keyboard);\n const altKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 18) === 1;\n const ctrlKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 17) === 1;\n const metaKey = isKeyboardActive &&\n (deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 91) === 1 ||\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 92) === 1 ||\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 93) === 1);\n const shiftKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 16) === 1;\n evt.altKey = altKey;\n evt.ctrlKey = ctrlKey;\n evt.metaKey = metaKey;\n evt.shiftKey = shiftKey;\n }\n /**\n * Create base event object\n * @param elementToAttachTo Value to use as event target\n * @returns\n */\n static _CreateEvent(elementToAttachTo) {\n const evt = {};\n evt.preventDefault = () => { };\n evt.target = elementToAttachTo;\n return evt;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}