@iwer/devui 1.0.1 → 1.1.0

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.
Files changed (49) hide show
  1. package/build/iwer-devui.js +384 -132
  2. package/build/iwer-devui.min.js +69 -59
  3. package/build/iwer-devui.module.js +384 -132
  4. package/build/iwer-devui.module.min.js +63 -53
  5. package/lib/components/controller.d.ts +18 -0
  6. package/lib/components/controller.d.ts.map +1 -0
  7. package/lib/components/controller.js +104 -0
  8. package/lib/components/controller.js.map +1 -0
  9. package/lib/components/controls.d.ts +5 -9
  10. package/lib/components/controls.d.ts.map +1 -1
  11. package/lib/components/controls.js +14 -83
  12. package/lib/components/controls.js.map +1 -1
  13. package/lib/components/hand.d.ts +18 -0
  14. package/lib/components/hand.d.ts.map +1 -0
  15. package/lib/components/hand.js +51 -0
  16. package/lib/components/hand.js.map +1 -0
  17. package/lib/components/header.d.ts.map +1 -1
  18. package/lib/components/header.js +13 -2
  19. package/lib/components/header.js.map +1 -1
  20. package/lib/components/icons.d.ts +4 -0
  21. package/lib/components/icons.d.ts.map +1 -1
  22. package/lib/components/icons.js +10 -1
  23. package/lib/components/icons.js.map +1 -1
  24. package/lib/components/mapper.d.ts +3 -2
  25. package/lib/components/mapper.d.ts.map +1 -1
  26. package/lib/components/mapper.js +8 -2
  27. package/lib/components/mapper.js.map +1 -1
  28. package/lib/components/pinch.d.ts +16 -0
  29. package/lib/components/pinch.d.ts.map +1 -0
  30. package/lib/components/pinch.js +94 -0
  31. package/lib/components/pinch.js.map +1 -0
  32. package/lib/components/pose.d.ts +16 -0
  33. package/lib/components/pose.d.ts.map +1 -0
  34. package/lib/components/pose.js +62 -0
  35. package/lib/components/pose.js.map +1 -0
  36. package/lib/components/styled.d.ts +6 -0
  37. package/lib/components/styled.d.ts.map +1 -1
  38. package/lib/components/styled.js +19 -15
  39. package/lib/components/styled.js.map +1 -1
  40. package/lib/index.d.ts +1 -1
  41. package/lib/index.d.ts.map +1 -1
  42. package/lib/index.js +2 -1
  43. package/lib/index.js.map +1 -1
  44. package/lib/scene.d.ts.map +1 -1
  45. package/lib/scene.js +5 -3
  46. package/lib/scene.js.map +1 -1
  47. package/lib/version.d.ts +1 -1
  48. package/lib/version.js +1 -1
  49. package/package.json +1 -2
@@ -4734,7 +4734,6 @@ const Button = dt.button `
4734
4734
  border-radius: ${ControlButtonStyles.radiusSolo};
4735
4735
  }
4736
4736
  `;
4737
- Button.defaultProps = { $reverse: false };
4738
4737
  const HeaderButtonsContainer = dt.div `
4739
4738
  padding: 2px;
4740
4739
  display: flex;
@@ -4816,7 +4815,6 @@ const ButtonContainer = dt.div `
4816
4815
  margin-bottom: 0;
4817
4816
  }
4818
4817
  `;
4819
- ButtonContainer.defaultProps = { $reverse: false };
4820
4818
  const ButtonGroup = dt.div `
4821
4819
  display: flex;
4822
4820
  flex-direction: ${({ $reverse }) => ($reverse ? 'row-reverse' : 'row')};
@@ -4826,7 +4824,6 @@ const ButtonGroup = dt.div `
4826
4824
  margin: ${({ $reverse }) => ($reverse ? '0 5px 0 0' : '0 0 0 5px')};
4827
4825
  gap: 3px;
4828
4826
  `;
4829
- ButtonGroup.defaultProps = { $reverse: false };
4830
4827
  dt.button `
4831
4828
  background-color: rgba(255, 255, 255, 0.3);
4832
4829
  border: none;
@@ -4889,7 +4886,6 @@ const RangeSelector$1 = dt.input.attrs({ type: 'range' }) `
4889
4886
  border-radius: ${ControlButtonStyles.radiusMiddle};
4890
4887
  }
4891
4888
  `;
4892
- RangeSelector$1.defaultProps = { $reverse: false };
4893
4889
  dt.div `
4894
4890
  display: flex;
4895
4891
  flex-direction: column;
@@ -4904,14 +4900,24 @@ dt.div `
4904
4900
  justify-content: center;
4905
4901
  `;
4906
4902
  const FAIcon = dt(FontAwesomeIcon) `
4907
- height: ${({ $size }) => `${$size}px`};
4908
- min-height: ${({ $size }) => `${$size}px`};
4909
- max-height: ${({ $size }) => `${$size}px`};
4910
- width: ${({ $size }) => `${$size}px`};
4911
- min-width: ${({ $size }) => `${$size}px`};
4912
- max-width: ${({ $size }) => `${$size}px`};
4903
+ height: ${({ $size = 14 }) => `${$size}px`};
4904
+ min-height: ${({ $size = 14 }) => `${$size}px`};
4905
+ max-height: ${({ $size = 14 }) => `${$size}px`};
4906
+ width: ${({ $size = 14 }) => `${$size}px`};
4907
+ min-width: ${({ $size = 14 }) => `${$size}px`};
4908
+ max-width: ${({ $size = 14 }) => `${$size}px`};
4909
+ transform: ${({ $reverse }) => ($reverse ? 'scaleX(-1)' : 'unset')};
4910
+ `;
4911
+ const FAControlIcon = dt(FontAwesomeIcon) `
4912
+ height: 18px;
4913
+ min-height: 18px;
4914
+ max-height: 18px;
4915
+ width: 18px;
4916
+ min-width: 18px;
4917
+ max-width: 18px;
4918
+ margin: 6px;
4919
+ transform: ${({ $reverse }) => ($reverse ? 'scaleX(-1)' : 'unset')};
4913
4920
  `;
4914
- FAIcon.defaultProps = { $size: 14 };
4915
4921
  const ControlPanel = dt.div `
4916
4922
  position: fixed;
4917
4923
  padding: 5px;
@@ -4929,13 +4935,12 @@ const ControlPanel = dt.div `
4929
4935
  flex-direction: column;
4930
4936
  `;
4931
4937
  const SectionBreak = dt.hr `
4932
- width: ${({ $horizontal }) => ($horizontal ? 'unset' : '1px')};
4933
- height: ${({ $horizontal }) => ($horizontal ? '1px' : 'unset')};
4938
+ width: ${({ $horizontal = true }) => ($horizontal ? 'unset' : '1px')};
4939
+ height: ${({ $horizontal = true }) => ($horizontal ? '1px' : 'unset')};
4934
4940
  background-color: ${Colors.panelBorder};
4935
4941
  margin: 5px 3px;
4936
4942
  border: none;
4937
4943
  `;
4938
- SectionBreak.defaultProps = { $horizontal: true };
4939
4944
  const PanelHeaderButton = dt.button `
4940
4945
  background-color: transparent;
4941
4946
  border: none;
@@ -4961,7 +4966,6 @@ const PanelHeaderButton = dt.button `
4961
4966
  outline: none;
4962
4967
  }
4963
4968
  `;
4964
- PanelHeaderButton.defaultProps = { $isRed: false };
4965
4969
  const ValuesContainer = dt.div `
4966
4970
  display: flex;
4967
4971
  flex-direction: row;
@@ -4998,6 +5002,137 @@ const InputSuffix = dt.span `
4998
5002
  font-size: 10px;
4999
5003
  `;
5000
5004
 
5005
+ const faRightFromBracket = {
5006
+ prefix: 'fas',
5007
+ iconName: 'right-from-bracket',
5008
+ icon: [512, 512, ["sign-out-alt"], "f2f5", "M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]
5009
+ };
5010
+ const faFingerprint = {
5011
+ prefix: 'fas',
5012
+ iconName: 'fingerprint',
5013
+ icon: [512, 512, [], "f577", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"]
5014
+ };
5015
+ const faCaretRight = {
5016
+ prefix: 'fas',
5017
+ iconName: 'caret-right',
5018
+ icon: [256, 512, [], "f0da", "M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z"]
5019
+ };
5020
+ const faCaretLeft = {
5021
+ prefix: 'fas',
5022
+ iconName: 'caret-left',
5023
+ icon: [256, 512, [], "f0d9", "M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z"]
5024
+ };
5025
+ const faGamepad = {
5026
+ prefix: 'fas',
5027
+ iconName: 'gamepad',
5028
+ icon: [640, 512, [], "f11b", "M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z"]
5029
+ };
5030
+ const faHand = {
5031
+ prefix: 'fas',
5032
+ iconName: 'hand',
5033
+ icon: [512, 512, [129306, 9995, "hand-paper"], "f256", "M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z"]
5034
+ };
5035
+ const faPlug = {
5036
+ prefix: 'fas',
5037
+ iconName: 'plug',
5038
+ icon: [384, 512, [128268], "f1e6", "M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z"]
5039
+ };
5040
+ const faBan = {
5041
+ prefix: 'fas',
5042
+ iconName: 'ban',
5043
+ icon: [512, 512, [128683, "cancel"], "f05e", "M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"]
5044
+ };
5045
+ const faArrowRightToBracket = {
5046
+ prefix: 'fas',
5047
+ iconName: 'arrow-right-to-bracket',
5048
+ icon: [512, 512, ["sign-in"], "f090", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"]
5049
+ };
5050
+ const faCaretUp = {
5051
+ prefix: 'fas',
5052
+ iconName: 'caret-up',
5053
+ icon: [320, 512, [], "f0d8", "M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"]
5054
+ };
5055
+ const faRotateLeft = {
5056
+ prefix: 'fas',
5057
+ iconName: 'rotate-left',
5058
+ icon: [512, 512, ["rotate-back", "rotate-backward", "undo-alt"], "f2ea", "M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z"]
5059
+ };
5060
+ const faCirclePlay = {
5061
+ prefix: 'fas',
5062
+ iconName: 'circle-play',
5063
+ icon: [512, 512, [61469, "play-circle"], "f144", "M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"]
5064
+ };
5065
+ const faHandScissors = {
5066
+ prefix: 'fas',
5067
+ iconName: 'hand-scissors',
5068
+ icon: [512, 512, [], "f257", "M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9c0 0 0 .1 0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z"]
5069
+ };
5070
+ const faStreetView = {
5071
+ prefix: 'fas',
5072
+ iconName: 'street-view',
5073
+ icon: [512, 512, [], "f21d", "M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z"]
5074
+ };
5075
+ const faGear = {
5076
+ prefix: 'fas',
5077
+ iconName: 'gear',
5078
+ icon: [512, 512, [9881, "cog"], "f013", "M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"]
5079
+ };
5080
+ const faCaretDown = {
5081
+ prefix: 'fas',
5082
+ iconName: 'caret-down',
5083
+ icon: [320, 512, [], "f0d7", "M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]
5084
+ };
5085
+ const faDeleteLeft = {
5086
+ prefix: 'fas',
5087
+ iconName: 'delete-left',
5088
+ icon: [576, 512, [9003, "backspace"], "f55a", "M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
5089
+ };
5090
+ const faBug = {
5091
+ prefix: 'fas',
5092
+ iconName: 'bug',
5093
+ icon: [512, 512, [], "f188", "M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z"]
5094
+ };
5095
+ const faAngleUp = {
5096
+ prefix: 'fas',
5097
+ iconName: 'angle-up',
5098
+ icon: [448, 512, [8963], "f106", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"]
5099
+ };
5100
+ const faChevronLeft = {
5101
+ prefix: 'fas',
5102
+ iconName: 'chevron-left',
5103
+ icon: [320, 512, [9001], "f053", "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"]
5104
+ };
5105
+ const faHandLizard = {
5106
+ prefix: 'fas',
5107
+ iconName: 'hand-lizard',
5108
+ icon: [512, 512, [], "f258", "M0 112C0 85.5 21.5 64 48 64l112 0 80 0 46.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 12 0 16 0 48c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8L273.9 352 240 352l-80 0-48 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l48 0 80 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-80 0L48 160c-26.5 0-48-21.5-48-48z"]
5109
+ };
5110
+ const faChevronRight = {
5111
+ prefix: 'fas',
5112
+ iconName: 'chevron-right',
5113
+ icon: [320, 512, [9002], "f054", "M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]
5114
+ };
5115
+ const faVrCardboard = {
5116
+ prefix: 'fas',
5117
+ iconName: 'vr-cardboard',
5118
+ icon: [640, 512, [], "f729", "M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"]
5119
+ };
5120
+ const faArrowTurnDown = {
5121
+ prefix: 'fas',
5122
+ iconName: 'arrow-turn-down',
5123
+ icon: [384, 512, ["level-down"], "f149", "M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z"]
5124
+ };
5125
+ const faCircleXmark = {
5126
+ prefix: 'fas',
5127
+ iconName: 'circle-xmark',
5128
+ icon: [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
5129
+ };
5130
+ const faVideo = {
5131
+ prefix: 'fas',
5132
+ iconName: 'video',
5133
+ icon: [576, 512, ["video-camera"], "f03d", "M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]
5134
+ };
5135
+
5001
5136
  const IconSize = ControlButtonStyles.height;
5002
5137
  const ButtonX = ({ scale = 1.2 }) => (jsxRuntimeExports.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: IconSize, height: IconSize, fill: "none", transform: `scale(${scale}, ${scale})`, children: [jsxRuntimeExports.jsx("path", { fill: "#fff", fillRule: "evenodd", d: "M7 13.125a7 7 0 1 0 14 0v1.75a7 7 0 0 1-14 0v-1.75Z", clipRule: "evenodd", style: {
5003
5138
  fill: '#fff',
@@ -5199,6 +5334,10 @@ const ThumbrestR = ({ scale = 1.2 }) => (jsxRuntimeExports.jsxs("svg", { xmlns:
5199
5334
  fill: '#fff',
5200
5335
  fillOpacity: 1,
5201
5336
  } })] }));
5337
+ const PoseL = () => (jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandScissors, "$reverse": true }));
5338
+ const PoseR = () => (jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandScissors, "$reverse": false }));
5339
+ const PinchL = () => (jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandLizard, "$reverse": true }));
5340
+ const PinchR = () => (jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandLizard, "$reverse": false }));
5202
5341
  // Create a mapping of buttonId to icon component
5203
5342
  const buttonIdToIcon = {
5204
5343
  'x-button-left': ButtonX,
@@ -5210,6 +5349,8 @@ const buttonIdToIcon = {
5210
5349
  'thumbstick-down-left': ThumbstickLDown,
5211
5350
  'thumbstick-right-left': ThumbstickLRight,
5212
5351
  'thumbstick-left-left': ThumbstickLLeft,
5352
+ 'pose-left': PoseL,
5353
+ 'pinch-left': PinchL,
5213
5354
  'thumbstick-right': ThumbstickR,
5214
5355
  'thumbstick-up-right': ThumbstickRUp,
5215
5356
  'thumbstick-down-right': ThumbstickRDown,
@@ -5221,6 +5362,8 @@ const buttonIdToIcon = {
5221
5362
  'squeeze-right': GripR,
5222
5363
  'thumbrest-left': ThumbrestL,
5223
5364
  'thumbrest-right': ThumbrestR,
5365
+ 'pose-right': PoseR,
5366
+ 'pinch-right': PinchR,
5224
5367
  };
5225
5368
  const GamepadIcon = ({ buttonName, handedness, }) => {
5226
5369
  const buttonId = `${buttonName}-${handedness}`;
@@ -5270,112 +5413,6 @@ const IWERIcon = ({ size = 14, color = Colors.textWhite, }) => (jsxRuntimeExport
5270
5413
  fillOpacity: 1,
5271
5414
  } })] }));
5272
5415
 
5273
- const faRightFromBracket = {
5274
- prefix: 'fas',
5275
- iconName: 'right-from-bracket',
5276
- icon: [512, 512, ["sign-out-alt"], "f2f5", "M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]
5277
- };
5278
- const faFingerprint = {
5279
- prefix: 'fas',
5280
- iconName: 'fingerprint',
5281
- icon: [512, 512, [], "f577", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"]
5282
- };
5283
- const faCaretRight = {
5284
- prefix: 'fas',
5285
- iconName: 'caret-right',
5286
- icon: [256, 512, [], "f0da", "M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z"]
5287
- };
5288
- const faCaretLeft = {
5289
- prefix: 'fas',
5290
- iconName: 'caret-left',
5291
- icon: [256, 512, [], "f0d9", "M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z"]
5292
- };
5293
- const faGamepad = {
5294
- prefix: 'fas',
5295
- iconName: 'gamepad',
5296
- icon: [640, 512, [], "f11b", "M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z"]
5297
- };
5298
- const faPlug = {
5299
- prefix: 'fas',
5300
- iconName: 'plug',
5301
- icon: [384, 512, [128268], "f1e6", "M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z"]
5302
- };
5303
- const faBan = {
5304
- prefix: 'fas',
5305
- iconName: 'ban',
5306
- icon: [512, 512, [128683, "cancel"], "f05e", "M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"]
5307
- };
5308
- const faArrowRightToBracket = {
5309
- prefix: 'fas',
5310
- iconName: 'arrow-right-to-bracket',
5311
- icon: [512, 512, ["sign-in"], "f090", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"]
5312
- };
5313
- const faCaretUp = {
5314
- prefix: 'fas',
5315
- iconName: 'caret-up',
5316
- icon: [320, 512, [], "f0d8", "M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"]
5317
- };
5318
- const faRotateLeft = {
5319
- prefix: 'fas',
5320
- iconName: 'rotate-left',
5321
- icon: [512, 512, ["rotate-back", "rotate-backward", "undo-alt"], "f2ea", "M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z"]
5322
- };
5323
- const faCirclePlay = {
5324
- prefix: 'fas',
5325
- iconName: 'circle-play',
5326
- icon: [512, 512, [61469, "play-circle"], "f144", "M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"]
5327
- };
5328
- const faStreetView = {
5329
- prefix: 'fas',
5330
- iconName: 'street-view',
5331
- icon: [512, 512, [], "f21d", "M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z"]
5332
- };
5333
- const faGear = {
5334
- prefix: 'fas',
5335
- iconName: 'gear',
5336
- icon: [512, 512, [9881, "cog"], "f013", "M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"]
5337
- };
5338
- const faCaretDown = {
5339
- prefix: 'fas',
5340
- iconName: 'caret-down',
5341
- icon: [320, 512, [], "f0d7", "M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"]
5342
- };
5343
- const faDeleteLeft = {
5344
- prefix: 'fas',
5345
- iconName: 'delete-left',
5346
- icon: [576, 512, [9003, "backspace"], "f55a", "M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
5347
- };
5348
- const faBug = {
5349
- prefix: 'fas',
5350
- iconName: 'bug',
5351
- icon: [512, 512, [], "f188", "M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z"]
5352
- };
5353
- const faAngleUp = {
5354
- prefix: 'fas',
5355
- iconName: 'angle-up',
5356
- icon: [448, 512, [8963], "f106", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"]
5357
- };
5358
- const faVrCardboard = {
5359
- prefix: 'fas',
5360
- iconName: 'vr-cardboard',
5361
- icon: [640, 512, [], "f729", "M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"]
5362
- };
5363
- const faArrowTurnDown = {
5364
- prefix: 'fas',
5365
- iconName: 'arrow-turn-down',
5366
- icon: [384, 512, ["level-down"], "f149", "M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z"]
5367
- };
5368
- const faCircleXmark = {
5369
- prefix: 'fas',
5370
- iconName: 'circle-xmark',
5371
- icon: [512, 512, [61532, "times-circle", "xmark-circle"], "f057", "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z"]
5372
- };
5373
- const faVideo = {
5374
- prefix: 'fas',
5375
- iconName: 'video',
5376
- icon: [576, 512, ["video-camera"], "f03d", "M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]
5377
- };
5378
-
5379
5416
  const MappedKeyDisplay = {
5380
5417
  KeyA: 'A',
5381
5418
  KeyB: 'B',
@@ -5716,6 +5753,8 @@ const DEFAULT_KEYMAP = {
5716
5753
  'y-button': 'KeyZ',
5717
5754
  trigger: 'KeyQ',
5718
5755
  squeeze: 'KeyE',
5756
+ pinch: 'MouseLeft',
5757
+ pose: 'KeyF',
5719
5758
  },
5720
5759
  right: {
5721
5760
  'thumbstick-up': 'ArrowUp',
@@ -5727,6 +5766,8 @@ const DEFAULT_KEYMAP = {
5727
5766
  'b-button': 'ShiftRight',
5728
5767
  trigger: 'MouseLeft',
5729
5768
  squeeze: 'MouseRight',
5769
+ pinch: 'MouseRight',
5770
+ pose: 'Backslash',
5730
5771
  },
5731
5772
  };
5732
5773
  const useKeyMapStore = create((set) => ({
@@ -5752,7 +5793,7 @@ const Row = dt.div `
5752
5793
  margin-bottom: 0;
5753
5794
  }
5754
5795
  `;
5755
- const ControllerMapper = ({ handedness, }) => {
5796
+ const ControlsMapper = ({ handedness, actions, }) => {
5756
5797
  const { keyMap, bindKey } = useKeyMapStore();
5757
5798
  const [currentMapping, setCurrentMapping] = reactExports.useState(null);
5758
5799
  const startMapping = (action) => {
@@ -5790,7 +5831,9 @@ const ControllerMapper = ({ handedness, }) => {
5790
5831
  window.removeEventListener('contextmenu', preventDefaultContextMenu);
5791
5832
  };
5792
5833
  }, [currentMapping]);
5793
- return Object.keys(keyMap[handedness]).map((action) => (jsxRuntimeExports.jsxs(Row, { children: [jsxRuntimeExports.jsx(GamepadIcon, { buttonName: action === 'up' ? 'thumbstick' : action, handedness: handedness }), jsxRuntimeExports.jsxs(ButtonGroup, { "$reverse": false, children: [jsxRuntimeExports.jsx(Button, { "$reverse": false, style: {
5834
+ return Object.keys(keyMap[handedness])
5835
+ .filter((action) => actions.includes(action))
5836
+ .map((action) => (jsxRuntimeExports.jsxs(Row, { children: [jsxRuntimeExports.jsx(GamepadIcon, { buttonName: action === 'up' ? 'thumbstick' : action, handedness: handedness }), jsxRuntimeExports.jsxs(ButtonGroup, { "$reverse": false, children: [jsxRuntimeExports.jsx(Button, { "$reverse": false, style: {
5794
5837
  width: '100px',
5795
5838
  background: currentMapping && currentMapping.action === action
5796
5839
  ? Colors.gradientLightGreyTranslucent
@@ -6293,13 +6336,25 @@ function transformGamepadConfig(gamepadConfig) {
6293
6336
  });
6294
6337
  return transformed;
6295
6338
  }
6296
- const ControlsUI = ({ xrDevice, inputLayer, pointerLocked, }) => {
6297
- return (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: Object.entries(xrDevice.controllers).map(([handedness, controller]) => (jsxRuntimeExports.jsx(ControllerUI, { controller: controller, handle: inputLayer.transformHandles.get(handedness), handedness: handedness, pointerLocked: pointerLocked }, `controller-${handedness}`))) }));
6298
- };
6299
6339
  const ControllerUI = ({ controller, handle, handedness, pointerLocked, }) => {
6300
6340
  const { keyMap } = useKeyMapStore();
6301
6341
  const [connected, setConnected] = React.useState(controller.connected);
6302
6342
  const [settingsOpen, setSettingsOpen] = React.useState(false);
6343
+ const transformedConfig = transformGamepadConfig(controller.gamepadConfig);
6344
+ const actions = transformedConfig.flatMap((config) => {
6345
+ if (config.hasAxes) {
6346
+ return [
6347
+ `${config.id}-left`,
6348
+ `${config.id}-right`,
6349
+ `${config.id}-up`,
6350
+ `${config.id}-down`,
6351
+ config.id,
6352
+ ];
6353
+ }
6354
+ else {
6355
+ return config.id;
6356
+ }
6357
+ });
6303
6358
  React.useEffect(() => {
6304
6359
  if (pointerLocked) {
6305
6360
  setSettingsOpen(false);
@@ -6330,7 +6385,7 @@ const ControllerUI = ({ controller, handle, handedness, pointerLocked, }) => {
6330
6385
  controller.connected = true;
6331
6386
  setConnected(true);
6332
6387
  }, style: { marginLeft: '5px' }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faPlug }) })) })] }) })), connected && !pointerLocked && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [!settingsOpen && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionBreak, {}), jsxRuntimeExports.jsx(Vector3Input, { vector: handle.position, label: "Position", marginBottom: ControlButtonStyles.gap }), jsxRuntimeExports.jsx(Vector3Input, { vector: handle.rotation, label: "Rotation" })] })), jsxRuntimeExports.jsx(SectionBreak, {})] })), connected &&
6333
- (settingsOpen ? (jsxRuntimeExports.jsx(ControllerMapper, { handedness: handedness })) : (transformGamepadConfig(controller.gamepadConfig).map((buttonConfig) => {
6388
+ (settingsOpen ? (jsxRuntimeExports.jsx(ControlsMapper, { handedness: handedness, actions: actions })) : (transformedConfig.map((buttonConfig) => {
6334
6389
  const mapping = keyMap[handedness];
6335
6390
  if (buttonConfig.hasAxes) {
6336
6391
  return (jsxRuntimeExports.jsx(Joystick, { xrController: controller, pointerLocked: pointerLocked, buttonId: buttonConfig.id, mappedKeyUp: keyMap[handedness][`${buttonConfig.id}-up`], mappedKeyDown: mapping[`${buttonConfig.id}-down`], mappedKeyLeft: mapping[`${buttonConfig.id}-left`], mappedKeyRight: mapping[`${buttonConfig.id}-right`], mappedKeyPressed: mapping[buttonConfig.id] }, buttonConfig.id));
@@ -6344,6 +6399,190 @@ const ControllerUI = ({ controller, handle, handedness, pointerLocked, }) => {
6344
6399
  })))] }, handedness));
6345
6400
  };
6346
6401
 
6402
+ const pinchSliderWidth = `calc(${ControlButtonStyles.widthLong} + ${ControlButtonStyles.widthShort} + ${ControlButtonStyles.gap})`;
6403
+ const PinchControl = ({ hand, pointerLocked, mappedKey, }) => {
6404
+ const [isPressed, setIsPressed] = reactExports.useState(false);
6405
+ const [isKeyPressed, setIsKeyPressed] = reactExports.useState(false);
6406
+ const [analogValue, setAnalogValue] = reactExports.useState(0);
6407
+ const handedness = hand.inputSource.handedness;
6408
+ reactExports.useEffect(() => {
6409
+ const handleKeyDown = (event) => {
6410
+ if (event.code === mappedKey) {
6411
+ hand.updatePinchValue(1);
6412
+ setIsKeyPressed(true);
6413
+ }
6414
+ };
6415
+ const handleKeyUp = (event) => {
6416
+ if (event.code === mappedKey) {
6417
+ hand.updatePinchValue(0);
6418
+ setIsKeyPressed(false);
6419
+ }
6420
+ };
6421
+ const handleMouseDown = (event) => {
6422
+ if ((mappedKey === 'MouseLeft' && event.button === 0) ||
6423
+ (mappedKey === 'MouseRight' && event.button === 2)) {
6424
+ hand.updatePinchValue(1);
6425
+ setIsKeyPressed(true);
6426
+ }
6427
+ };
6428
+ const handleMouseUp = (event) => {
6429
+ if ((mappedKey === 'MouseLeft' && event.button === 0) ||
6430
+ (mappedKey === 'MouseRight' && event.button === 2)) {
6431
+ hand.updatePinchValue(0);
6432
+ setIsKeyPressed(false);
6433
+ }
6434
+ };
6435
+ if (pointerLocked) {
6436
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
6437
+ window.addEventListener('mousedown', handleMouseDown);
6438
+ window.addEventListener('mouseup', handleMouseUp);
6439
+ }
6440
+ else {
6441
+ window.addEventListener('keydown', handleKeyDown);
6442
+ window.addEventListener('keyup', handleKeyUp);
6443
+ }
6444
+ }
6445
+ else {
6446
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
6447
+ window.removeEventListener('mousedown', handleMouseDown);
6448
+ window.removeEventListener('mouseup', handleMouseUp);
6449
+ }
6450
+ else {
6451
+ window.removeEventListener('keydown', handleKeyDown);
6452
+ window.removeEventListener('keyup', handleKeyUp);
6453
+ }
6454
+ }
6455
+ return () => {
6456
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
6457
+ window.removeEventListener('mousedown', handleMouseDown);
6458
+ window.removeEventListener('mouseup', handleMouseUp);
6459
+ }
6460
+ else {
6461
+ window.removeEventListener('keydown', handleKeyDown);
6462
+ window.removeEventListener('keyup', handleKeyUp);
6463
+ }
6464
+ };
6465
+ }, [mappedKey, pointerLocked, hand]);
6466
+ return (jsxRuntimeExports.jsxs(ButtonContainer, { "$reverse": handedness === 'right', children: [jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandLizard, "$reverse": handedness === 'left' }), jsxRuntimeExports.jsx(ButtonGroup, { "$reverse": handedness === 'right', children: pointerLocked ? (jsxRuntimeExports.jsx(MappedKeyBlock, { "$pressed": isKeyPressed, children: MappedKeyDisplay[mappedKey] })) : (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Button, { "$reverse": handedness === 'right', style: {
6467
+ background: isPressed
6468
+ ? Colors.gradientLightGreyTranslucent
6469
+ : Colors.gradientGreyTranslucent,
6470
+ width: ControlButtonStyles.widthLong,
6471
+ }, onClick: () => {
6472
+ setIsPressed(true);
6473
+ hand.updatePinchValue(1);
6474
+ setTimeout(() => {
6475
+ setIsPressed(false);
6476
+ hand.updatePinchValue(0);
6477
+ }, 250);
6478
+ }, children: "Pinch" }), jsxRuntimeExports.jsx(RangeSelector$1, { "$reverse": handedness === 'right', value: analogValue, onChange: (e) => {
6479
+ const value = Number(e.target.value);
6480
+ setAnalogValue(value);
6481
+ hand.updatePinchValue(value / 100);
6482
+ }, style: { width: pinchSliderWidth }, min: "0", max: "100" })] })) })] }));
6483
+ };
6484
+
6485
+ const poses = ['default', 'point'];
6486
+ const poseButtonWidth = `calc(2 * ${ControlButtonStyles.widthLong} - ${ControlButtonStyles.widthShort})`;
6487
+ const PoseSelector = ({ hand, pointerLocked, mappedKey, }) => {
6488
+ const [poseId, setPoseId] = reactExports.useState(hand.poseId);
6489
+ const [isKeyPressed, setIsKeyPressed] = reactExports.useState(false);
6490
+ const handedness = hand.inputSource.handedness;
6491
+ const cyclePose = (delta) => {
6492
+ const poseIdx = poses.indexOf(hand.poseId);
6493
+ const newPoseIdx = (poseIdx + poses.length + delta) % poses.length;
6494
+ setPoseId(poses[newPoseIdx]);
6495
+ hand.poseId = poses[newPoseIdx];
6496
+ };
6497
+ const layoutReverse = handedness === 'right';
6498
+ reactExports.useEffect(() => {
6499
+ const handleKeyDown = (event) => {
6500
+ if (event.code === mappedKey) {
6501
+ cyclePose(1);
6502
+ setIsKeyPressed(true);
6503
+ }
6504
+ };
6505
+ const handleKeyUp = (event) => {
6506
+ if (event.code === mappedKey) {
6507
+ setIsKeyPressed(false);
6508
+ }
6509
+ };
6510
+ if (pointerLocked) {
6511
+ window.addEventListener('keydown', handleKeyDown);
6512
+ window.addEventListener('keyup', handleKeyUp);
6513
+ }
6514
+ else {
6515
+ window.removeEventListener('keydown', handleKeyDown);
6516
+ window.removeEventListener('keyup', handleKeyUp);
6517
+ }
6518
+ return () => {
6519
+ window.removeEventListener('keydown', handleKeyDown);
6520
+ window.removeEventListener('keyup', handleKeyUp);
6521
+ };
6522
+ }, [mappedKey, pointerLocked, hand]);
6523
+ return (jsxRuntimeExports.jsxs(ButtonContainer, { "$reverse": layoutReverse, children: [jsxRuntimeExports.jsx(FAControlIcon, { icon: faHandScissors, "$reverse": handedness === 'left' }), jsxRuntimeExports.jsx(ButtonGroup, { "$reverse": layoutReverse, children: pointerLocked ? (jsxRuntimeExports.jsx(MappedKeyBlock, { "$pressed": isKeyPressed, children: MappedKeyDisplay[mappedKey] })) : (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Button, { "$reverse": layoutReverse, style: {
6524
+ width: ControlButtonStyles.widthShort,
6525
+ }, onClick: () => {
6526
+ cyclePose(layoutReverse ? 1 : -1);
6527
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: layoutReverse ? faChevronRight : faChevronLeft }) }), jsxRuntimeExports.jsxs(Button, { "$reverse": layoutReverse, style: {
6528
+ width: poseButtonWidth,
6529
+ }, disabled: true, children: ["Pose: ", poseId] }), jsxRuntimeExports.jsx(Button, { "$reverse": layoutReverse, style: {
6530
+ width: ControlButtonStyles.widthShort,
6531
+ }, onClick: () => {
6532
+ cyclePose(layoutReverse ? -1 : 1);
6533
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: layoutReverse ? faChevronLeft : faChevronRight }) })] })) })] }));
6534
+ };
6535
+
6536
+ const HandUI = ({ hand, handle, handedness, pointerLocked, }) => {
6537
+ const { keyMap } = useKeyMapStore();
6538
+ const [connected, setConnected] = React.useState(hand.connected);
6539
+ const [settingsOpen, setSettingsOpen] = React.useState(false);
6540
+ React.useEffect(() => {
6541
+ if (pointerLocked) {
6542
+ setSettingsOpen(false);
6543
+ }
6544
+ }, [pointerLocked]);
6545
+ return (jsxRuntimeExports.jsxs(ControlPanel, { style: handedness === 'left'
6546
+ ? { left: '8px', bottom: '8px' }
6547
+ : { right: '8px', bottom: '8px' }, children: [!pointerLocked && (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: jsxRuntimeExports.jsxs("div", { style: {
6548
+ display: 'flex',
6549
+ flexDirection: 'row',
6550
+ justifyContent: 'space-between',
6551
+ alignItems: 'center',
6552
+ }, children: [jsxRuntimeExports.jsxs("div", { style: {
6553
+ fontSize: '13px',
6554
+ display: 'flex',
6555
+ flexDirection: 'row',
6556
+ alignItems: 'center',
6557
+ }, children: [jsxRuntimeExports.jsx(FAIcon, { icon: faHand, "$reverse": handedness === 'left', style: { marginRight: '5px' } }), "Hand\u00A0", jsxRuntimeExports.jsxs("span", { style: { fontWeight: 'bold' }, children: ["[", handedness === 'left' ? 'L' : 'R', "]"] })] }), jsxRuntimeExports.jsx("div", { style: {
6558
+ display: 'flex',
6559
+ flexDirection: 'row',
6560
+ gap: '1px',
6561
+ }, children: connected ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(PanelHeaderButton, { title: `Click to ${settingsOpen ? 'close' : 'change'} key bindings`, onClick: () => {
6562
+ setSettingsOpen(!settingsOpen);
6563
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faGear }) }), jsxRuntimeExports.jsx(PanelHeaderButton, { title: `Click to disconnect ${handedness} controller`, "$isRed": true, onClick: () => {
6564
+ hand.connected = false;
6565
+ setConnected(false);
6566
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faCircleXmark }) })] })) : (jsxRuntimeExports.jsx(PanelHeaderButton, { title: `Click to reconnect ${handedness} controller`, onClick: () => {
6567
+ hand.connected = true;
6568
+ setConnected(true);
6569
+ }, style: { marginLeft: '5px' }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faPlug }) })) })] }) })), connected && !pointerLocked && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [!settingsOpen && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionBreak, {}), jsxRuntimeExports.jsx(Vector3Input, { vector: handle.position, label: "Position", marginBottom: ControlButtonStyles.gap }), jsxRuntimeExports.jsx(Vector3Input, { vector: handle.rotation, label: "Rotation" })] })), jsxRuntimeExports.jsx(SectionBreak, {})] })), connected &&
6570
+ (settingsOpen ? (jsxRuntimeExports.jsx(ControlsMapper, { handedness: handedness, actions: ['pose', 'pinch'] })) : (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(PoseSelector, { hand: hand, pointerLocked: pointerLocked, mappedKey: keyMap[handedness].pose }), jsxRuntimeExports.jsx(PinchControl, { hand: hand, pointerLocked: pointerLocked, mappedKey: keyMap[handedness].pinch })] })))] }, handedness));
6571
+ };
6572
+
6573
+ const useInputModeStore = create((set) => ({
6574
+ inputMode: 'controller',
6575
+ setInputMode: (mode) => set(() => ({
6576
+ inputMode: mode,
6577
+ })),
6578
+ }));
6579
+ const ControlsUI = ({ xrDevice, inputLayer, pointerLocked, }) => {
6580
+ const { inputMode } = useInputModeStore();
6581
+ return (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: inputMode === 'controller'
6582
+ ? Object.entries(xrDevice.controllers).map(([handedness, controller]) => (jsxRuntimeExports.jsx(ControllerUI, { controller: controller, handle: inputLayer.transformHandles.get(handedness), handedness: handedness, pointerLocked: pointerLocked }, `controller-${handedness}`)))
6583
+ : Object.entries(xrDevice.hands).map(([handedness, hand]) => (jsxRuntimeExports.jsx(HandUI, { hand: hand, handle: inputLayer.transformHandles.get(handedness), handedness: handedness, pointerLocked: pointerLocked }, `hand-${handedness}`))) }));
6584
+ };
6585
+
6347
6586
  const VersionTableCol1 = dt.td `
6348
6587
  text-align: right;
6349
6588
  color: ${Colors.textWhite};
@@ -6361,6 +6600,7 @@ const HeaderUI = ({ xrDevice, inputLayer }) => {
6361
6600
  const [boxesVisible, setBoxesVisible] = React.useState(Boolean((_b = xrDevice.sem) === null || _b === void 0 ? void 0 : _b.boundingBoxesVisible));
6362
6601
  const [meshesVisible, setMeshesVisible] = React.useState(Boolean((_c = xrDevice.sem) === null || _c === void 0 ? void 0 : _c.meshesVisible));
6363
6602
  const [infoPanelOpen, setInfoPanelOpen] = React.useState(false);
6603
+ const { inputMode, setInputMode } = useInputModeStore();
6364
6604
  return (jsxRuntimeExports.jsxs("div", { style: {
6365
6605
  display: 'flex',
6366
6606
  justifyContent: 'center',
@@ -6376,7 +6616,16 @@ const HeaderUI = ({ xrDevice, inputLayer }) => {
6376
6616
  inputLayer.resetDeviceTransforms();
6377
6617
  }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faRotateLeft, "$size": 16 }) }), jsxRuntimeExports.jsx(HeaderButton, { title: "Click to activate play mode", onClick: () => {
6378
6618
  inputLayer.lockPointer();
6379
- }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faCirclePlay, "$size": 16 }) }), xrDevice.sem && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionBreak, { "$horizontal": false }), jsxRuntimeExports.jsx(HeaderButton, { title: "Click to toggle visibility of planes", onClick: () => {
6619
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: faCirclePlay, "$size": 16 }) }), jsxRuntimeExports.jsx(HeaderButton, { title: "Click to toggle input mode", onClick: () => {
6620
+ if (inputMode === 'controller') {
6621
+ setInputMode('hand');
6622
+ xrDevice.primaryInputMode = 'hand';
6623
+ }
6624
+ else {
6625
+ setInputMode('controller');
6626
+ xrDevice.primaryInputMode = 'controller';
6627
+ }
6628
+ }, children: jsxRuntimeExports.jsx(FAIcon, { icon: inputMode === 'controller' ? faGamepad : faHand, "$size": 16 }) }), xrDevice.sem && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(SectionBreak, { "$horizontal": false }), jsxRuntimeExports.jsx(HeaderButton, { title: "Click to toggle visibility of planes", onClick: () => {
6380
6629
  xrDevice.sem.planesVisible = !planesVisible;
6381
6630
  setPlanesVisible(!planesVisible);
6382
6631
  }, children: jsxRuntimeExports.jsx(PlaneIcon, { size: 16, color: planesVisible ? Colors.textWhite : Colors.textGrey }) }), jsxRuntimeExports.jsx(HeaderButton, { title: "Click to toggle visibility of bounding boxes", onClick: () => {
@@ -42191,7 +42440,6 @@ class InputLayer {
42191
42440
  transformHandle.space = 'local';
42192
42441
  this.transformHandles.set(handedness, transformHandle);
42193
42442
  transformHandle.addEventListener('click', () => {
42194
- console.log('click');
42195
42443
  if (transformHandle.userData.mode === 'translate') {
42196
42444
  transformHandle.userData.setMode('rotate');
42197
42445
  }
@@ -42299,8 +42547,11 @@ class InputLayer {
42299
42547
  xrDevice.position.copy(cameraRig.getWorldPosition(this.vec3));
42300
42548
  xrDevice.quaternion.copy(cameraRig.getWorldQuaternion(this.quat));
42301
42549
  transformHandles.forEach((transformHandle, handedness) => {
42302
- xrDevice.controllers[handedness].position.copy(transformHandle.getWorldPosition(this.vec3));
42303
- xrDevice.controllers[handedness].quaternion.copy(transformHandle.getWorldQuaternion(this.quat));
42550
+ const emulatedInput = xrDevice.primaryInputMode === 'controller'
42551
+ ? xrDevice.controllers[handedness]
42552
+ : xrDevice.hands[handedness];
42553
+ emulatedInput.position.copy(transformHandle.getWorldPosition(this.vec3));
42554
+ emulatedInput.quaternion.copy(transformHandle.getWorldQuaternion(this.quat));
42304
42555
  });
42305
42556
  }
42306
42557
  renderScene(time) {
@@ -42362,7 +42613,7 @@ class InputLayer {
42362
42613
  }
42363
42614
  }
42364
42615
 
42365
- const VERSION = "1.0.1";
42616
+ const VERSION = "1.1.0";
42366
42617
 
42367
42618
  var client = {};
42368
42619
 
@@ -42796,6 +43047,7 @@ class DevUI {
42796
43047
  constructor(xrDevice) {
42797
43048
  this.version = VERSION;
42798
43049
  xrDevice.ipd = 0;
43050
+ useInputModeStore.getState().setInputMode(xrDevice.primaryInputMode);
42799
43051
  this.devUIContainer = document.createElement('div');
42800
43052
  this.devUIContainer.style.position = 'fixed';
42801
43053
  this.devUIContainer.style.width = '100vw';