dirk-cfx-react 1.1.95 → 1.1.96

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 (37) hide show
  1. package/dist/{chunk-ZPFW7C2A.js → chunk-3QPPR6OY.js} +3 -3
  2. package/dist/{chunk-ZPFW7C2A.js.map → chunk-3QPPR6OY.js.map} +1 -1
  3. package/dist/{chunk-MYNNCLMA.js → chunk-4QSXUENK.js} +325 -43
  4. package/dist/chunk-4QSXUENK.js.map +1 -0
  5. package/dist/{chunk-YA2PXBP6.cjs → chunk-5XODUPUE.cjs} +325 -43
  6. package/dist/chunk-5XODUPUE.cjs.map +1 -0
  7. package/dist/{chunk-3T2CCW5E.cjs → chunk-6CNT35D6.cjs} +9 -9
  8. package/dist/{chunk-3T2CCW5E.cjs.map → chunk-6CNT35D6.cjs.map} +1 -1
  9. package/dist/{chunk-KGLO3ZAS.js → chunk-ABBZHNLP.js} +3 -3
  10. package/dist/{chunk-KGLO3ZAS.js.map → chunk-ABBZHNLP.js.map} +1 -1
  11. package/dist/{chunk-QOQQ3ERZ.cjs → chunk-EOSHBZQK.cjs} +17 -17
  12. package/dist/{chunk-QOQQ3ERZ.cjs.map → chunk-EOSHBZQK.cjs.map} +1 -1
  13. package/dist/{chunk-Z7N5AQJW.js → chunk-GFODSZSP.js} +3 -3
  14. package/dist/{chunk-Z7N5AQJW.js.map → chunk-GFODSZSP.js.map} +1 -1
  15. package/dist/{chunk-K3GDU6EY.cjs → chunk-HG2J72NC.cjs} +167 -167
  16. package/dist/{chunk-K3GDU6EY.cjs.map → chunk-HG2J72NC.cjs.map} +1 -1
  17. package/dist/{chunk-E2SFEBBB.cjs → chunk-HOVRS2Z6.cjs} +4 -4
  18. package/dist/{chunk-E2SFEBBB.cjs.map → chunk-HOVRS2Z6.cjs.map} +1 -1
  19. package/dist/{chunk-VKYONY7E.cjs → chunk-MY3Z7LPB.cjs} +5 -5
  20. package/dist/{chunk-VKYONY7E.cjs.map → chunk-MY3Z7LPB.cjs.map} +1 -1
  21. package/dist/{chunk-HAB6H274.js → chunk-UGDMOWVM.js} +6 -6
  22. package/dist/{chunk-HAB6H274.js.map → chunk-UGDMOWVM.js.map} +1 -1
  23. package/dist/{chunk-NVMOGS7Y.js → chunk-WUALULEH.js} +4 -4
  24. package/dist/{chunk-NVMOGS7Y.js.map → chunk-WUALULEH.js.map} +1 -1
  25. package/dist/components/index.cjs +76 -76
  26. package/dist/components/index.js +5 -5
  27. package/dist/hooks/index.cjs +22 -22
  28. package/dist/hooks/index.js +4 -4
  29. package/dist/index.cjs +147 -147
  30. package/dist/index.js +6 -6
  31. package/dist/providers/index.cjs +5 -5
  32. package/dist/providers/index.js +3 -3
  33. package/dist/utils/index.cjs +48 -48
  34. package/dist/utils/index.js +1 -1
  35. package/package.json +1 -1
  36. package/dist/chunk-MYNNCLMA.js.map +0 -1
  37. package/dist/chunk-YA2PXBP6.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { useSettings, fetchNui } from './chunk-MYNNCLMA.js';
1
+ import { useSettings, fetchNui } from './chunk-4QSXUENK.js';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useMemo, useState, useRef, useEffect } from 'react';
4
4
 
@@ -104,5 +104,5 @@ function useValidModels(names) {
104
104
  }
105
105
 
106
106
  export { TornEdgeSVGFilter, useTornEdges, useValidModels };
107
- //# sourceMappingURL=chunk-ZPFW7C2A.js.map
108
- //# sourceMappingURL=chunk-ZPFW7C2A.js.map
107
+ //# sourceMappingURL=chunk-3QPPR6OY.js.map
108
+ //# sourceMappingURL=chunk-3QPPR6OY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useTornEdges.tsx","../src/hooks/useValidModels.ts"],"names":[],"mappings":"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","file":"chunk-ZPFW7C2A.js","sourcesContent":["import { useSettings } from \"@/utils/useSettings\";\r\nexport function useTornEdges() {\r\n const game = useSettings((state) => state.game);\r\n return game === \"rdr3\" ? \"torn-edge-wrapper\" : \"\";\r\n}\r\n\r\n// Add this SVG to your layout/root component:\r\nexport function TornEdgeSVGFilter() {\r\n return (\r\n <svg\r\n style={{ position: \"absolute\", width: 0, height: 0, pointerEvents: \"none\" }}\r\n aria-hidden=\"true\"\r\n >\r\n <defs>\r\n <filter id=\"torn-edge-filter\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\r\n {/* Base fractal noise for tearing */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.018 0.022\"\r\n numOctaves=\"5\"\r\n seed=\"9\"\r\n result=\"noise1\"\r\n />\r\n {/* Second noise layer for micro detail */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.08 0.12\"\r\n numOctaves=\"2\"\r\n seed=\"3\"\r\n result=\"noise2\"\r\n />\r\n\r\n {/* Blend both noise layers */}\r\n <feBlend in=\"noise1\" in2=\"noise2\" mode=\"multiply\" result=\"combinedNoise\" />\r\n\r\n {/* Primary displacement */}\r\n <feDisplacementMap\r\n in=\"SourceGraphic\"\r\n in2=\"combinedNoise\"\r\n scale=\"52\"\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"G\"\r\n result=\"displaced\"\r\n />\r\n\r\n {/* Alpha fade toward edges */}\r\n <feGaussianBlur stdDeviation=\"0.8\" in=\"displaced\" result=\"blurred\" />\r\n <feComponentTransfer in=\"blurred\" result=\"alphaFade\">\r\n <feFuncA type=\"gamma\" amplitude=\"1\" exponent=\"1.3\" offset=\"-0.05\" />\r\n </feComponentTransfer>\r\n\r\n {/* Sharpen a bit after fade */}\r\n <feMorphology operator=\"erode\" radius=\"0.4\" in=\"alphaFade\" result=\"eroded\" />\r\n\r\n {/* Merge final */}\r\n <feMerge>\r\n <feMergeNode in=\"eroded\" />\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n </svg>\r\n );\r\n}\r\n\r\n","// Validates a list of GTA / RDR model names against the client's CD-image\r\n// via dirk_lib's adminTool.validateModels Lua tool. Returns a Set of names\r\n// that DO resolve to a streamable model — useful for greying out admin-\r\n// panel rows that reference props/shells/peds that aren't installed.\r\n//\r\n// Batches: pass the full list each render; the hook diffs against what's\r\n// already been resolved and only asks Lua for the new names. Once a name\r\n// has been checked, subsequent renders with the same name return the\r\n// cached result instantly.\r\n//\r\n// Result is a stable Set reference per resolution wave so callers can use\r\n// it as a useMemo / useEffect dep without thrashing.\r\n//\r\n// Usage:\r\n// const valid = useValidModels(shells.map(s => s.model));\r\n// shells.map(s => <Row dimmed={!valid.has(s.model)} ... />)\r\n//\r\n// Only meaningful inside an open admin panel (the underlying NUI callback\r\n// is gated on scriptConfig being open). Outside that window the hook just\r\n// returns an empty Set.\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\n\r\nconst moduleCache = new Map<string, boolean>();\r\n\r\nexport function useValidModels(names: string[]): Set<string> {\r\n // Stable string key for the input list so the effect doesn't re-fire on\r\n // every render. Sort + join keeps the dep change-detection cheap.\r\n const cacheKey = useMemo(() => {\r\n const unique = Array.from(new Set(names.filter(n => typeof n === \"string\" && n.length > 0)));\r\n unique.sort();\r\n return unique.join(\"|\");\r\n }, [names]);\r\n\r\n // Bump on every new validation result so memoised consumers re-derive.\r\n const [version, setVersion] = useState(0);\r\n const inflight = useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n if (!cacheKey) return;\r\n const all = cacheKey.split(\"|\").filter(Boolean);\r\n const missing = all.filter(n => !moduleCache.has(n) && !inflight.current.has(n));\r\n if (missing.length === 0) return;\r\n\r\n missing.forEach(n => inflight.current.add(n));\r\n let cancelled = false;\r\n\r\n fetchNui<Record<string, boolean> | null>(\r\n \"ADMIN_TOOL_QUERY\",\r\n { id: \"validateModels\", value: missing },\r\n // Fallback when running outside FiveM (browser dev) — assume valid so the\r\n // dev shell doesn't grey out every row.\r\n Object.fromEntries(missing.map(n => [n, true])),\r\n )\r\n .then(result => {\r\n if (cancelled) return;\r\n const map = result && typeof result === \"object\" ? result : {};\r\n missing.forEach(n => {\r\n moduleCache.set(n, !!map[n]);\r\n inflight.current.delete(n);\r\n });\r\n setVersion(v => v + 1);\r\n })\r\n .catch(() => {\r\n if (cancelled) return;\r\n // On failure, mark them as valid by default so a transient NUI hiccup\r\n // doesn't dim every row of the panel. Lua side will be re-asked next\r\n // time the deps change.\r\n missing.forEach(n => {\r\n inflight.current.delete(n);\r\n });\r\n });\r\n\r\n return () => {\r\n cancelled = true;\r\n };\r\n }, [cacheKey]);\r\n\r\n return useMemo(() => {\r\n const out = new Set<string>();\r\n if (!cacheKey) return out;\r\n for (const n of cacheKey.split(\"|\")) {\r\n if (n && moduleCache.get(n) === true) out.add(n);\r\n }\r\n return out;\r\n // version bumps cause re-derivation once the async cache fills in.\r\n }, [cacheKey, version]);\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/hooks/useTornEdges.tsx","../src/hooks/useValidModels.ts"],"names":[],"mappings":";;;;AACO,SAAS,YAAA,GAAe;AAC7B,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,CAAC,KAAA,KAAU,MAAM,IAAI,CAAA;AAC9C,EAAA,OAAO,IAAA,KAAS,SAAS,mBAAA,GAAsB,EAAA;AACjD;AAGO,SAAS,iBAAA,GAAoB;AAClC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,OAAO,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe,MAAA,EAAO;AAAA,MAC1E,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAG,kBAAA,EAAmB,CAAA,EAAE,MAAA,EAAO,CAAA,EAAE,MAAA,EAAO,KAAA,EAAM,MAAA,EAAO,QAAO,MAAA,EAElE,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,cAAA;AAAA,YACL,aAAA,EAAc,aAAA;AAAA,YACd,UAAA,EAAW,GAAA;AAAA,YACX,IAAA,EAAK,GAAA;AAAA,YACL,MAAA,EAAO;AAAA;AAAA,SACT;AAAA,wBAEA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,cAAA;AAAA,YACL,aAAA,EAAc,WAAA;AAAA,YACd,UAAA,EAAW,GAAA;AAAA,YACX,IAAA,EAAK,GAAA;AAAA,YACL,MAAA,EAAO;AAAA;AAAA,SACT;AAAA,wBAGA,GAAA,CAAC,aAAQ,EAAA,EAAG,QAAA,EAAS,KAAI,QAAA,EAAS,IAAA,EAAK,UAAA,EAAW,MAAA,EAAO,eAAA,EAAgB,CAAA;AAAA,wBAGzE,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,eAAA;AAAA,YACH,GAAA,EAAI,eAAA;AAAA,YACJ,KAAA,EAAM,IAAA;AAAA,YACN,gBAAA,EAAiB,GAAA;AAAA,YACjB,gBAAA,EAAiB,GAAA;AAAA,YACjB,MAAA,EAAO;AAAA;AAAA,SACT;AAAA,4BAGC,gBAAA,EAAA,EAAe,YAAA,EAAa,OAAM,EAAA,EAAG,WAAA,EAAY,QAAO,SAAA,EAAU,CAAA;AAAA,4BAClE,qBAAA,EAAA,EAAoB,EAAA,EAAG,SAAA,EAAU,MAAA,EAAO,aACvC,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EAAQ,IAAA,EAAK,OAAA,EAAQ,WAAU,GAAA,EAAI,QAAA,EAAS,KAAA,EAAM,MAAA,EAAO,SAAQ,CAAA,EACpE,CAAA;AAAA,wBAGA,GAAA,CAAC,kBAAa,QAAA,EAAS,OAAA,EAAQ,QAAO,KAAA,EAAM,EAAA,EAAG,WAAA,EAAY,MAAA,EAAO,QAAA,EAAS,CAAA;AAAA,4BAG1E,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAY,EAAA,EAAG,UAAS,CAAA,EAC3B;AAAA,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;ACvCA,IAAM,WAAA,uBAAkB,GAAA,EAAqB;AAEtC,SAAS,eAAe,KAAA,EAA8B;AAG3D,EAAA,MAAM,QAAA,GAAW,QAAQ,MAAM;AAC7B,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,IAAI,IAAI,KAAA,CAAM,MAAA,CAAO,CAAA,CAAA,KAAK,OAAO,MAAM,QAAA,IAAY,CAAA,CAAE,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA;AAC3F,IAAA,MAAA,CAAO,IAAA,EAAK;AACZ,IAAA,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,CAAC,CAAA;AACxC,EAAA,MAAM,QAAA,GAAW,MAAA,iBAAoB,IAAI,GAAA,EAAK,CAAA;AAE9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,MAAM,MAAM,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,OAAO,OAAO,CAAA;AAC9C,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,IAAK,CAAC,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAC/E,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAE1B,IAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,KAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAC5C,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,QAAA;AAAA,MACE,kBAAA;AAAA,MACA,EAAE,EAAA,EAAI,gBAAA,EAAkB,KAAA,EAAO,OAAA,EAAQ;AAAA;AAAA;AAAA,MAGvC,MAAA,CAAO,YAAY,OAAA,CAAQ,GAAA,CAAI,OAAK,CAAC,CAAA,EAAG,IAAI,CAAC,CAAC;AAAA,KAChD,CACG,KAAK,CAAA,MAAA,KAAU;AACd,MAAA,IAAI,SAAA,EAAW;AACf,MAAA,MAAM,MAAM,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,GAAW,SAAS,EAAC;AAC7D,MAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,KAAK;AACnB,QAAA,WAAA,CAAY,IAAI,CAAA,EAAG,CAAC,CAAC,GAAA,CAAI,CAAC,CAAC,CAAA;AAC3B,QAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,MAC3B,CAAC,CAAA;AACD,MAAA,UAAA,CAAW,CAAA,CAAA,KAAK,IAAI,CAAC,CAAA;AAAA,IACvB,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,IAAI,SAAA,EAAW;AAIf,MAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,KAAK;AACnB,QAAA,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,MAC3B,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAEH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,IAAA,IAAI,CAAC,UAAU,OAAO,GAAA;AACtB,IAAA,KAAA,MAAW,CAAA,IAAK,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,EAAG;AACnC,MAAA,IAAI,CAAA,IAAK,YAAY,GAAA,CAAI,CAAC,MAAM,IAAA,EAAM,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,IACjD;AACA,IAAA,OAAO,GAAA;AAAA,EAET,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AACxB","file":"chunk-3QPPR6OY.js","sourcesContent":["import { useSettings } from \"@/utils/useSettings\";\r\nexport function useTornEdges() {\r\n const game = useSettings((state) => state.game);\r\n return game === \"rdr3\" ? \"torn-edge-wrapper\" : \"\";\r\n}\r\n\r\n// Add this SVG to your layout/root component:\r\nexport function TornEdgeSVGFilter() {\r\n return (\r\n <svg\r\n style={{ position: \"absolute\", width: 0, height: 0, pointerEvents: \"none\" }}\r\n aria-hidden=\"true\"\r\n >\r\n <defs>\r\n <filter id=\"torn-edge-filter\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\r\n {/* Base fractal noise for tearing */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.018 0.022\"\r\n numOctaves=\"5\"\r\n seed=\"9\"\r\n result=\"noise1\"\r\n />\r\n {/* Second noise layer for micro detail */}\r\n <feTurbulence\r\n type=\"fractalNoise\"\r\n baseFrequency=\"0.08 0.12\"\r\n numOctaves=\"2\"\r\n seed=\"3\"\r\n result=\"noise2\"\r\n />\r\n\r\n {/* Blend both noise layers */}\r\n <feBlend in=\"noise1\" in2=\"noise2\" mode=\"multiply\" result=\"combinedNoise\" />\r\n\r\n {/* Primary displacement */}\r\n <feDisplacementMap\r\n in=\"SourceGraphic\"\r\n in2=\"combinedNoise\"\r\n scale=\"52\"\r\n xChannelSelector=\"R\"\r\n yChannelSelector=\"G\"\r\n result=\"displaced\"\r\n />\r\n\r\n {/* Alpha fade toward edges */}\r\n <feGaussianBlur stdDeviation=\"0.8\" in=\"displaced\" result=\"blurred\" />\r\n <feComponentTransfer in=\"blurred\" result=\"alphaFade\">\r\n <feFuncA type=\"gamma\" amplitude=\"1\" exponent=\"1.3\" offset=\"-0.05\" />\r\n </feComponentTransfer>\r\n\r\n {/* Sharpen a bit after fade */}\r\n <feMorphology operator=\"erode\" radius=\"0.4\" in=\"alphaFade\" result=\"eroded\" />\r\n\r\n {/* Merge final */}\r\n <feMerge>\r\n <feMergeNode in=\"eroded\" />\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n </svg>\r\n );\r\n}\r\n\r\n","// Validates a list of GTA / RDR model names against the client's CD-image\r\n// via dirk_lib's adminTool.validateModels Lua tool. Returns a Set of names\r\n// that DO resolve to a streamable model — useful for greying out admin-\r\n// panel rows that reference props/shells/peds that aren't installed.\r\n//\r\n// Batches: pass the full list each render; the hook diffs against what's\r\n// already been resolved and only asks Lua for the new names. Once a name\r\n// has been checked, subsequent renders with the same name return the\r\n// cached result instantly.\r\n//\r\n// Result is a stable Set reference per resolution wave so callers can use\r\n// it as a useMemo / useEffect dep without thrashing.\r\n//\r\n// Usage:\r\n// const valid = useValidModels(shells.map(s => s.model));\r\n// shells.map(s => <Row dimmed={!valid.has(s.model)} ... />)\r\n//\r\n// Only meaningful inside an open admin panel (the underlying NUI callback\r\n// is gated on scriptConfig being open). Outside that window the hook just\r\n// returns an empty Set.\r\nimport { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport { fetchNui } from \"../utils/fetchNui\";\r\n\r\nconst moduleCache = new Map<string, boolean>();\r\n\r\nexport function useValidModels(names: string[]): Set<string> {\r\n // Stable string key for the input list so the effect doesn't re-fire on\r\n // every render. Sort + join keeps the dep change-detection cheap.\r\n const cacheKey = useMemo(() => {\r\n const unique = Array.from(new Set(names.filter(n => typeof n === \"string\" && n.length > 0)));\r\n unique.sort();\r\n return unique.join(\"|\");\r\n }, [names]);\r\n\r\n // Bump on every new validation result so memoised consumers re-derive.\r\n const [version, setVersion] = useState(0);\r\n const inflight = useRef<Set<string>>(new Set());\r\n\r\n useEffect(() => {\r\n if (!cacheKey) return;\r\n const all = cacheKey.split(\"|\").filter(Boolean);\r\n const missing = all.filter(n => !moduleCache.has(n) && !inflight.current.has(n));\r\n if (missing.length === 0) return;\r\n\r\n missing.forEach(n => inflight.current.add(n));\r\n let cancelled = false;\r\n\r\n fetchNui<Record<string, boolean> | null>(\r\n \"ADMIN_TOOL_QUERY\",\r\n { id: \"validateModels\", value: missing },\r\n // Fallback when running outside FiveM (browser dev) — assume valid so the\r\n // dev shell doesn't grey out every row.\r\n Object.fromEntries(missing.map(n => [n, true])),\r\n )\r\n .then(result => {\r\n if (cancelled) return;\r\n const map = result && typeof result === \"object\" ? result : {};\r\n missing.forEach(n => {\r\n moduleCache.set(n, !!map[n]);\r\n inflight.current.delete(n);\r\n });\r\n setVersion(v => v + 1);\r\n })\r\n .catch(() => {\r\n if (cancelled) return;\r\n // On failure, mark them as valid by default so a transient NUI hiccup\r\n // doesn't dim every row of the panel. Lua side will be re-asked next\r\n // time the deps change.\r\n missing.forEach(n => {\r\n inflight.current.delete(n);\r\n });\r\n });\r\n\r\n return () => {\r\n cancelled = true;\r\n };\r\n }, [cacheKey]);\r\n\r\n return useMemo(() => {\r\n const out = new Set<string>();\r\n if (!cacheKey) return out;\r\n for (const n of cacheKey.split(\"|\")) {\r\n if (n && moduleCache.get(n) === true) out.add(n);\r\n }\r\n return out;\r\n // version bumps cause re-derivation once the async cache fills in.\r\n }, [cacheKey, version]);\r\n}\r\n"]}
@@ -1261,75 +1261,231 @@ var GTA_CONTROLS = [
1261
1261
  { id: 1, symbol: "INPUT_LOOK_LR", label: "Look Left/Right", defaultKey: "Mouse X", group: "Camera" },
1262
1262
  { id: 2, symbol: "INPUT_LOOK_UD", label: "Look Up/Down", defaultKey: "Mouse Y", group: "Camera" },
1263
1263
  { id: 3, symbol: "INPUT_LOOK_UP_ONLY", label: "Look Up Only", group: "Camera" },
1264
- { id: 4, symbol: "INPUT_LOOK_DOWN_ONLY", label: "Look Down Only", group: "Camera" },
1264
+ { id: 4, symbol: "INPUT_LOOK_DOWN_ONLY", label: "Look Down Only", defaultKey: "Mouse Y", group: "Camera" },
1265
1265
  { id: 5, symbol: "INPUT_LOOK_LEFT_ONLY", label: "Look Left Only", group: "Camera" },
1266
- { id: 6, symbol: "INPUT_LOOK_RIGHT_ONLY", label: "Look Right Only", group: "Camera" },
1267
- { id: 8, symbol: "INPUT_CINEMATIC_SLOWMO", label: "Cinematic Slowmo", defaultKey: "Insert", group: "Camera" },
1266
+ { id: 6, symbol: "INPUT_LOOK_RIGHT_ONLY", label: "Look Right Only", defaultKey: "Mouse X", group: "Camera" },
1267
+ { id: 7, symbol: "INPUT_CINEMATIC_SLOWMO", label: "Cinematic Slowmo", group: "Camera" },
1268
1268
  { id: 26, symbol: "INPUT_LOOK_BEHIND", label: "Look Behind", defaultKey: "C", group: "Camera" },
1269
- { id: 27, symbol: "INPUT_PHONE", label: "Phone", defaultKey: "Up Arrow", group: "Phone" },
1269
+ { id: 95, symbol: "INPUT_VEH_CINEMATIC_UD", label: "Veh Cinematic UD", defaultKey: "Mouse Y", group: "Camera" },
1270
+ { id: 96, symbol: "INPUT_VEH_CINEMATIC_UP_ONLY", label: "Veh Cinematic Up Only", defaultKey: "Numpad -", group: "Camera" },
1271
+ { id: 97, symbol: "INPUT_VEH_CINEMATIC_DOWN_ONLY", label: "Veh Cinematic Down Only", defaultKey: "Numpad +", group: "Camera" },
1272
+ { id: 98, symbol: "INPUT_VEH_CINEMATIC_LR", label: "Veh Cinematic LR", defaultKey: "Mouse X", group: "Camera" },
1273
+ { id: 121, symbol: "INPUT_VEH_FLY_ATTACK_CAMERA", label: "Veh Fly Attack Camera", defaultKey: "Insert", group: "Camera" },
1274
+ { id: 182, symbol: "INPUT_CELLPHONE_CAMERA_FOCUS_LOCK", label: "Cellphone Camera Focus Lock", defaultKey: "L", group: "Camera" },
1275
+ { id: 183, symbol: "INPUT_CELLPHONE_CAMERA_GRID", label: "Cellphone Camera Grid", defaultKey: "G", group: "Camera" },
1276
+ { id: 184, symbol: "INPUT_CELLPHONE_CAMERA_SELFIE", label: "Cellphone Camera Selfie", defaultKey: "E", group: "Camera" },
1277
+ { id: 185, symbol: "INPUT_CELLPHONE_CAMERA_DOF", label: "Cellphone Camera Dof", defaultKey: "F", group: "Camera" },
1278
+ { id: 186, symbol: "INPUT_CELLPHONE_CAMERA_EXPRESSION", label: "Cellphone Camera Expression", defaultKey: "X", group: "Camera" },
1279
+ { id: 270, symbol: "INPUT_LOOK_LEFT", label: "Look Left", defaultKey: "Mouse X", group: "Camera" },
1280
+ { id: 271, symbol: "INPUT_LOOK_RIGHT", label: "Look Right", defaultKey: "Mouse X", group: "Camera" },
1281
+ { id: 272, symbol: "INPUT_LOOK_UP", label: "Look Up", defaultKey: "Mouse Y", group: "Camera" },
1282
+ { id: 273, symbol: "INPUT_LOOK_DOWN", label: "Look Down", defaultKey: "Mouse Y", group: "Camera" },
1283
+ { id: 316, symbol: "INPUT_REPLAY_CAMERAUP", label: "Replay Cameraup", defaultKey: "Page Up", group: "Camera" },
1284
+ { id: 317, symbol: "INPUT_REPLAY_CAMERADOWN", label: "Replay Cameradown", defaultKey: "Page Down", group: "Camera" },
1270
1285
  // ── Movement ───────────────────────────────────────────────────────────────
1271
1286
  { id: 21, symbol: "INPUT_SPRINT", label: "Sprint", defaultKey: "Left Shift", group: "Movement" },
1272
1287
  { id: 22, symbol: "INPUT_JUMP", label: "Jump", defaultKey: "Space", group: "Movement" },
1273
1288
  { id: 23, symbol: "INPUT_ENTER", label: "Enter Vehicle", defaultKey: "F", group: "Movement" },
1274
- { id: 30, symbol: "INPUT_MOVE_LR", label: "Move Left/Right", group: "Movement" },
1275
- { id: 31, symbol: "INPUT_MOVE_UD", label: "Move Up/Down", group: "Movement" },
1276
- { id: 32, symbol: "INPUT_MOVE_UP_ONLY", label: "Move Forward (W)", group: "Movement" },
1277
- { id: 33, symbol: "INPUT_MOVE_DOWN_ONLY", label: "Move Back (S)", group: "Movement" },
1278
- { id: 34, symbol: "INPUT_MOVE_LEFT_ONLY", label: "Move Left (A)", group: "Movement" },
1279
- { id: 35, symbol: "INPUT_MOVE_RIGHT_ONLY", label: "Move Right (D)", group: "Movement" },
1289
+ { id: 30, symbol: "INPUT_MOVE_LR", label: "Move Left/Right", defaultKey: "D", group: "Movement" },
1290
+ { id: 31, symbol: "INPUT_MOVE_UD", label: "Move Up/Down", defaultKey: "S", group: "Movement" },
1291
+ { id: 32, symbol: "INPUT_MOVE_UP_ONLY", label: "Move Forward (W)", defaultKey: "W", group: "Movement" },
1292
+ { id: 33, symbol: "INPUT_MOVE_DOWN_ONLY", label: "Move Back (S)", defaultKey: "S", group: "Movement" },
1293
+ { id: 34, symbol: "INPUT_MOVE_LEFT_ONLY", label: "Move Left (A)", defaultKey: "A", group: "Movement" },
1294
+ { id: 35, symbol: "INPUT_MOVE_RIGHT_ONLY", label: "Move Right (D)", defaultKey: "D", group: "Movement" },
1280
1295
  { id: 36, symbol: "INPUT_DUCK", label: "Duck / Stealth", defaultKey: "Left Ctrl", group: "Movement" },
1281
- { id: 37, symbol: "INPUT_SELECT_WEAPON", label: "Weapon Wheel", defaultKey: "Tab", group: "Combat" },
1282
1296
  { id: 38, symbol: "INPUT_PICKUP", label: "Pickup / Interact", defaultKey: "E", group: "Movement" },
1297
+ { id: 266, symbol: "INPUT_MOVE_LEFT", label: "Move Left", defaultKey: "D", group: "Movement" },
1298
+ { id: 267, symbol: "INPUT_MOVE_RIGHT", label: "Move Right", defaultKey: "D", group: "Movement" },
1299
+ { id: 268, symbol: "INPUT_MOVE_UP", label: "Move Up", defaultKey: "S", group: "Movement" },
1300
+ { id: 269, symbol: "INPUT_MOVE_DOWN", label: "Move Down", defaultKey: "S", group: "Movement" },
1283
1301
  // ── Combat ─────────────────────────────────────────────────────────────────
1302
+ { id: 12, symbol: "INPUT_WEAPON_WHEEL_UD", label: "Weapon Wheel UD", defaultKey: "Mouse Y", group: "Combat" },
1303
+ { id: 13, symbol: "INPUT_WEAPON_WHEEL_LR", label: "Weapon Wheel LR", defaultKey: "Mouse X", group: "Combat" },
1304
+ { id: 14, symbol: "INPUT_WEAPON_WHEEL_NEXT", label: "Weapon Wheel Next", defaultKey: "Scroll Down", group: "Combat" },
1305
+ { id: 15, symbol: "INPUT_WEAPON_WHEEL_PREV", label: "Weapon Wheel Prev", defaultKey: "Scroll Up", group: "Combat" },
1284
1306
  { id: 24, symbol: "INPUT_ATTACK", label: "Attack / Fire", defaultKey: "Mouse 1", group: "Combat" },
1285
1307
  { id: 25, symbol: "INPUT_AIM", label: "Aim", defaultKey: "Mouse 2", group: "Combat" },
1308
+ { id: 37, symbol: "INPUT_SELECT_WEAPON", label: "Weapon Wheel", defaultKey: "Tab", group: "Combat" },
1286
1309
  { id: 45, symbol: "INPUT_RELOAD", label: "Reload", defaultKey: "R", group: "Combat" },
1287
1310
  { id: 47, symbol: "INPUT_DETONATE", label: "Detonate", defaultKey: "G", group: "Combat" },
1288
- { id: 257, symbol: "INPUT_ATTACK2", label: "Attack 2", group: "Combat" },
1311
+ { id: 53, symbol: "INPUT_WEAPON_SPECIAL", label: "Weapon Special", group: "Combat" },
1312
+ { id: 54, symbol: "INPUT_WEAPON_SPECIAL_TWO", label: "Weapon Special Two", defaultKey: "E", group: "Combat" },
1313
+ { id: 58, symbol: "INPUT_THROW_GRENADE", label: "Throw Grenade", defaultKey: "G", group: "Combat" },
1289
1314
  { id: 140, symbol: "INPUT_MELEE_ATTACK_LIGHT", label: "Melee Light", defaultKey: "R", group: "Combat" },
1290
1315
  { id: 141, symbol: "INPUT_MELEE_ATTACK_HEAVY", label: "Melee Heavy", defaultKey: "Q", group: "Combat" },
1291
1316
  { id: 142, symbol: "INPUT_MELEE_ATTACK_ALTERNATE", label: "Melee Alternate", defaultKey: "Mouse 1", group: "Combat" },
1292
- { id: 263, symbol: "INPUT_MELEE_ATTACK1", label: "Melee Attack 1", group: "Combat" },
1293
- { id: 264, symbol: "INPUT_MELEE_ATTACK2", label: "Melee Attack 2", group: "Combat" },
1317
+ { id: 143, symbol: "INPUT_MELEE_BLOCK", label: "Melee Block", defaultKey: "Space", group: "Combat" },
1318
+ { id: 157, symbol: "INPUT_SELECT_WEAPON_UNARMED", label: "Select Weapon Unarmed", defaultKey: "1", group: "Combat" },
1319
+ { id: 158, symbol: "INPUT_SELECT_WEAPON_MELEE", label: "Select Weapon Melee", defaultKey: "2", group: "Combat" },
1320
+ { id: 159, symbol: "INPUT_SELECT_WEAPON_HANDGUN", label: "Select Weapon Handgun", defaultKey: "6", group: "Combat" },
1321
+ { id: 160, symbol: "INPUT_SELECT_WEAPON_SHOTGUN", label: "Select Weapon Shotgun", defaultKey: "3", group: "Combat" },
1322
+ { id: 161, symbol: "INPUT_SELECT_WEAPON_SMG", label: "Select Weapon Smg", defaultKey: "7", group: "Combat" },
1323
+ { id: 162, symbol: "INPUT_SELECT_WEAPON_AUTO_RIFLE", label: "Select Weapon Auto Rifle", defaultKey: "8", group: "Combat" },
1324
+ { id: 163, symbol: "INPUT_SELECT_WEAPON_SNIPER", label: "Select Weapon Sniper", defaultKey: "9", group: "Combat" },
1325
+ { id: 164, symbol: "INPUT_SELECT_WEAPON_HEAVY", label: "Select Weapon Heavy", defaultKey: "4", group: "Combat" },
1326
+ { id: 165, symbol: "INPUT_SELECT_WEAPON_SPECIAL", label: "Select Weapon Special", defaultKey: "5", group: "Combat" },
1327
+ { id: 257, symbol: "INPUT_ATTACK2", label: "Attack 2", defaultKey: "Mouse 1", group: "Combat" },
1328
+ { id: 263, symbol: "INPUT_MELEE_ATTACK1", label: "Melee Attack 1", defaultKey: "R", group: "Combat" },
1329
+ { id: 264, symbol: "INPUT_MELEE_ATTACK2", label: "Melee Attack 2", defaultKey: "Q", group: "Combat" },
1294
1330
  // ── Cover ──────────────────────────────────────────────────────────────────
1295
1331
  { id: 44, symbol: "INPUT_COVER", label: "Cover", defaultKey: "Q", group: "Cover" },
1296
- // ── Vehicle (general) ──────────────────────────────────────────────────────
1297
- { id: 59, symbol: "INPUT_VEH_MOVE_LR", label: "Vehicle Steering", group: "Vehicle" },
1298
- { id: 63, symbol: "INPUT_VEH_MOVE_LEFT_ONLY", label: "Vehicle Steer Left", group: "Vehicle" },
1299
- { id: 64, symbol: "INPUT_VEH_MOVE_RIGHT_ONLY", label: "Vehicle Steer Right", group: "Vehicle" },
1332
+ // ── Vehicle ────────────────────────────────────────────────────────────────
1333
+ { id: 59, symbol: "INPUT_VEH_MOVE_LR", label: "Vehicle Steering", defaultKey: "D", group: "Vehicle" },
1334
+ { id: 60, symbol: "INPUT_VEH_MOVE_UD", label: "Veh Move UD", defaultKey: "Left Ctrl", group: "Vehicle" },
1335
+ { id: 61, symbol: "INPUT_VEH_MOVE_UP_ONLY", label: "Veh Move Up Only", defaultKey: "Left Shift", group: "Vehicle" },
1336
+ { id: 62, symbol: "INPUT_VEH_MOVE_DOWN_ONLY", label: "Veh Move Down Only", defaultKey: "Left Ctrl", group: "Vehicle" },
1337
+ { id: 63, symbol: "INPUT_VEH_MOVE_LEFT_ONLY", label: "Vehicle Steer Left", defaultKey: "A", group: "Vehicle" },
1338
+ { id: 64, symbol: "INPUT_VEH_MOVE_RIGHT_ONLY", label: "Vehicle Steer Right", defaultKey: "D", group: "Vehicle" },
1339
+ { id: 65, symbol: "INPUT_VEH_SPECIAL", label: "Veh Special", group: "Vehicle" },
1340
+ { id: 66, symbol: "INPUT_VEH_GUN_LR", label: "Veh Gun LR", defaultKey: "Mouse X", group: "Vehicle" },
1341
+ { id: 67, symbol: "INPUT_VEH_GUN_UD", label: "Veh Gun UD", defaultKey: "Mouse Y", group: "Vehicle" },
1342
+ { id: 68, symbol: "INPUT_VEH_AIM", label: "Vehicle Aim", defaultKey: "Mouse 2", group: "Vehicle" },
1343
+ { id: 69, symbol: "INPUT_VEH_ATTACK", label: "Vehicle Attack", defaultKey: "Mouse 1", group: "Vehicle" },
1344
+ { id: 70, symbol: "INPUT_VEH_ATTACK2", label: "Vehicle Attack 2", defaultKey: "Mouse 2", group: "Vehicle" },
1300
1345
  { id: 71, symbol: "INPUT_VEH_ACCELERATE", label: "Vehicle Accelerate", defaultKey: "W", group: "Vehicle" },
1301
1346
  { id: 72, symbol: "INPUT_VEH_BRAKE", label: "Vehicle Brake", defaultKey: "S", group: "Vehicle" },
1302
1347
  { id: 73, symbol: "INPUT_VEH_DUCK", label: "Vehicle Duck", defaultKey: "X", group: "Vehicle" },
1303
1348
  { id: 74, symbol: "INPUT_VEH_HEADLIGHT", label: "Headlights", defaultKey: "H", group: "Vehicle" },
1304
1349
  { id: 75, symbol: "INPUT_VEH_EXIT", label: "Exit Vehicle", defaultKey: "F", group: "Vehicle" },
1305
1350
  { id: 76, symbol: "INPUT_VEH_HANDBRAKE", label: "Handbrake", defaultKey: "Space", group: "Vehicle" },
1351
+ { id: 77, symbol: "INPUT_VEH_HOTWIRE_LEFT", label: "Veh Hotwire Left", defaultKey: "W", group: "Vehicle" },
1352
+ { id: 78, symbol: "INPUT_VEH_HOTWIRE_RIGHT", label: "Veh Hotwire Right", defaultKey: "S", group: "Vehicle" },
1353
+ { id: 79, symbol: "INPUT_VEH_LOOK_BEHIND", label: "Veh Look Behind", defaultKey: "C", group: "Vehicle" },
1306
1354
  { id: 80, symbol: "INPUT_VEH_CIN_CAM", label: "Cinematic Cam", defaultKey: "R", group: "Vehicle" },
1307
- { id: 81, symbol: "INPUT_VEH_NEXT_RADIO", label: "Radio Next", group: "Vehicle" },
1308
- { id: 82, symbol: "INPUT_VEH_PREV_RADIO", label: "Radio Prev", group: "Vehicle" },
1309
- { id: 83, symbol: "INPUT_VEH_NEXT_RADIO_TRACK", label: "Radio Next Track", group: "Vehicle" },
1310
- { id: 84, symbol: "INPUT_VEH_PREV_RADIO_TRACK", label: "Radio Prev Track", group: "Vehicle" },
1355
+ { id: 81, symbol: "INPUT_VEH_NEXT_RADIO", label: "Radio Next", defaultKey: ".", group: "Vehicle" },
1356
+ { id: 82, symbol: "INPUT_VEH_PREV_RADIO", label: "Radio Prev", defaultKey: ",", group: "Vehicle" },
1357
+ { id: 83, symbol: "INPUT_VEH_NEXT_RADIO_TRACK", label: "Radio Next Track", defaultKey: "=", group: "Vehicle" },
1358
+ { id: 84, symbol: "INPUT_VEH_PREV_RADIO_TRACK", label: "Radio Prev Track", defaultKey: "-", group: "Vehicle" },
1311
1359
  { id: 85, symbol: "INPUT_VEH_RADIO_WHEEL", label: "Radio Wheel", defaultKey: "Q", group: "Vehicle" },
1312
1360
  { id: 86, symbol: "INPUT_VEH_HORN", label: "Horn", defaultKey: "E", group: "Vehicle" },
1313
- { id: 90, symbol: "INPUT_VEH_AIM", label: "Vehicle Aim", group: "Vehicle" },
1314
- { id: 91, symbol: "INPUT_VEH_ATTACK", label: "Vehicle Attack", group: "Vehicle" },
1315
- { id: 92, symbol: "INPUT_VEH_ATTACK2", label: "Vehicle Attack 2", group: "Vehicle" },
1316
- { id: 99, symbol: "INPUT_VEH_SELECT_NEXT_WEAPON", label: "Veh Next Weapon", group: "Vehicle" },
1317
- { id: 100, symbol: "INPUT_VEH_SELECT_PREV_WEAPON", label: "Veh Prev Weapon", group: "Vehicle" },
1361
+ { id: 91, symbol: "INPUT_VEH_PASSENGER_AIM", label: "Veh Passenger Aim", defaultKey: "Mouse 2", group: "Vehicle" },
1362
+ { id: 92, symbol: "INPUT_VEH_PASSENGER_ATTACK", label: "Veh Passenger Attack", defaultKey: "Mouse 1", group: "Vehicle" },
1363
+ { id: 93, symbol: "INPUT_VEH_SPECIAL_ABILITY_FRANKLIN", label: "Veh Special Ability Franklin", group: "Vehicle" },
1364
+ { id: 94, symbol: "INPUT_VEH_STUNT_UD", label: "Veh Stunt UD", group: "Vehicle" },
1365
+ { id: 99, symbol: "INPUT_VEH_SELECT_NEXT_WEAPON", label: "Veh Next Weapon", defaultKey: "Scroll Up", group: "Vehicle" },
1366
+ { id: 100, symbol: "INPUT_VEH_SELECT_PREV_WEAPON", label: "Veh Prev Weapon", defaultKey: "[", group: "Vehicle" },
1367
+ { id: 101, symbol: "INPUT_VEH_ROOF", label: "Veh Roof", defaultKey: "H", group: "Vehicle" },
1368
+ { id: 102, symbol: "INPUT_VEH_JUMP", label: "Veh Jump", defaultKey: "Space", group: "Vehicle" },
1369
+ { id: 103, symbol: "INPUT_VEH_GRAPPLING_HOOK", label: "Veh Grappling Hook", defaultKey: "E", group: "Vehicle" },
1370
+ { id: 104, symbol: "INPUT_VEH_SHUFFLE", label: "Veh Shuffle", defaultKey: "H", group: "Vehicle" },
1371
+ { id: 105, symbol: "INPUT_VEH_DROP_PROJECTILE", label: "Veh Drop Projectile", defaultKey: "X", group: "Vehicle" },
1372
+ { id: 106, symbol: "INPUT_VEH_MOUSE_CONTROL_OVERRIDE", label: "Veh Mouse Control Override", defaultKey: "Mouse 1", group: "Vehicle" },
1373
+ { id: 278, symbol: "INPUT_VEH_MOVE_LEFT", label: "Veh Move Left", defaultKey: "D", group: "Vehicle" },
1374
+ { id: 279, symbol: "INPUT_VEH_MOVE_RIGHT", label: "Veh Move Right", defaultKey: "D", group: "Vehicle" },
1375
+ { id: 280, symbol: "INPUT_VEH_MOVE_UP", label: "Veh Move Up", defaultKey: "Left Ctrl", group: "Vehicle" },
1376
+ { id: 281, symbol: "INPUT_VEH_MOVE_DOWN", label: "Veh Move Down", defaultKey: "Left Ctrl", group: "Vehicle" },
1377
+ { id: 282, symbol: "INPUT_VEH_GUN_LEFT", label: "Veh Gun Left", defaultKey: "Mouse X", group: "Vehicle" },
1378
+ { id: 283, symbol: "INPUT_VEH_GUN_RIGHT", label: "Veh Gun Right", defaultKey: "Mouse X", group: "Vehicle" },
1379
+ { id: 284, symbol: "INPUT_VEH_GUN_UP", label: "Veh Gun Up", defaultKey: "Mouse X", group: "Vehicle" },
1380
+ { id: 285, symbol: "INPUT_VEH_GUN_DOWN", label: "Veh Gun Down", defaultKey: "Mouse X", group: "Vehicle" },
1381
+ { id: 286, symbol: "INPUT_VEH_LOOK_LEFT", label: "Veh Look Left", defaultKey: "Mouse X", group: "Vehicle" },
1382
+ { id: 287, symbol: "INPUT_VEH_LOOK_RIGHT", label: "Veh Look Right", defaultKey: "Mouse X", group: "Vehicle" },
1383
+ { id: 329, symbol: "INPUT_VEH_DRIVE_LOOK", label: "Veh Drive Look", defaultKey: "Mouse 1", group: "Vehicle" },
1384
+ { id: 330, symbol: "INPUT_VEH_DRIVE_LOOK2", label: "Veh Drive Look2", defaultKey: "Mouse 2", group: "Vehicle" },
1385
+ { id: 334, symbol: "INPUT_VEH_SLOWMO_UD", label: "Veh Slowmo UD", defaultKey: "Scroll Down", group: "Vehicle" },
1386
+ { id: 335, symbol: "INPUT_VEH_SLOWMO_UP_ONLY", label: "Veh Slowmo Up Only", defaultKey: "Scroll Up", group: "Vehicle" },
1387
+ { id: 336, symbol: "INPUT_VEH_SLOWMO_DOWN_ONLY", label: "Veh Slowmo Down Only", defaultKey: "Scroll Down", group: "Vehicle" },
1388
+ { id: 337, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_TOGGLE", label: "Veh Hydraulics Control Toggle", defaultKey: "X", group: "Vehicle" },
1389
+ { id: 338, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_LEFT", label: "Veh Hydraulics Control Left", defaultKey: "A", group: "Vehicle" },
1390
+ { id: 339, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_RIGHT", label: "Veh Hydraulics Control Right", defaultKey: "D", group: "Vehicle" },
1391
+ { id: 340, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_UP", label: "Veh Hydraulics Control Up", defaultKey: "Left Shift", group: "Vehicle" },
1392
+ { id: 341, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_DOWN", label: "Veh Hydraulics Control Down", defaultKey: "Left Ctrl", group: "Vehicle" },
1393
+ { id: 342, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_UD", label: "Veh Hydraulics Control UD", defaultKey: "D", group: "Vehicle" },
1394
+ { id: 343, symbol: "INPUT_VEH_HYDRAULICS_CONTROL_LR", label: "Veh Hydraulics Control LR", defaultKey: "Left Ctrl", group: "Vehicle" },
1395
+ { id: 345, symbol: "INPUT_VEH_MELEE_HOLD", label: "Veh Melee Hold", defaultKey: "X", group: "Vehicle" },
1396
+ { id: 346, symbol: "INPUT_VEH_MELEE_LEFT", label: "Veh Melee Left", defaultKey: "Mouse 1", group: "Vehicle" },
1397
+ { id: 347, symbol: "INPUT_VEH_MELEE_RIGHT", label: "Veh Melee Right", defaultKey: "Mouse 2", group: "Vehicle" },
1398
+ { id: 350, symbol: "INPUT_VEH_CAR_JUMP", label: "Veh Car Jump", defaultKey: "E", group: "Vehicle" },
1399
+ { id: 351, symbol: "INPUT_VEH_ROCKET_BOOST", label: "Veh Rocket Boost", defaultKey: "E", group: "Vehicle" },
1400
+ { id: 353, symbol: "INPUT_VEH_PARACHUTE", label: "Veh Parachute", defaultKey: "Space", group: "Vehicle" },
1401
+ { id: 354, symbol: "INPUT_VEH_BIKE_WINGS", label: "Veh Bike Wings", defaultKey: "X", group: "Vehicle" },
1402
+ { id: 357, symbol: "INPUT_VEH_TRANSFORM", label: "Veh Transform", defaultKey: "X", group: "Vehicle" },
1318
1403
  // ── Vehicle (Plane/Heli) ───────────────────────────────────────────────────
1319
- { id: 152, symbol: "INPUT_VEH_FLY_THROTTLE_UP", label: "Plane Throttle Up", defaultKey: "W", group: "Vehicle (Plane/Heli)" },
1320
- { id: 153, symbol: "INPUT_VEH_FLY_THROTTLE_DOWN", label: "Plane Throttle Down", defaultKey: "S", group: "Vehicle (Plane/Heli)" },
1321
- { id: 154, symbol: "INPUT_VEH_FLY_YAW_LEFT", label: "Plane Yaw Left", defaultKey: "A", group: "Vehicle (Plane/Heli)" },
1322
- { id: 155, symbol: "INPUT_VEH_FLY_YAW_RIGHT", label: "Plane Yaw Right", defaultKey: "D", group: "Vehicle (Plane/Heli)" },
1323
- { id: 158, symbol: "INPUT_VEH_FLY_ATTACK", label: "Plane Attack", defaultKey: "Mouse 1", group: "Vehicle (Plane/Heli)" },
1324
- // ── Vehicle (Boat / Bike) ──────────────────────────────────────────────────
1325
- { id: 198, symbol: "INPUT_VEH_BICYCLE_PEDAL", label: "Bike Pedal", group: "Vehicle (Boat/Bike)" },
1404
+ { id: 87, symbol: "INPUT_VEH_FLY_THROTTLE_UP", label: "Plane Throttle Up", defaultKey: "W", group: "Vehicle (Plane/Heli)" },
1405
+ { id: 88, symbol: "INPUT_VEH_FLY_THROTTLE_DOWN", label: "Plane Throttle Down", defaultKey: "S", group: "Vehicle (Plane/Heli)" },
1406
+ { id: 89, symbol: "INPUT_VEH_FLY_YAW_LEFT", label: "Plane Yaw Left", defaultKey: "A", group: "Vehicle (Plane/Heli)" },
1407
+ { id: 90, symbol: "INPUT_VEH_FLY_YAW_RIGHT", label: "Plane Yaw Right", defaultKey: "D", group: "Vehicle (Plane/Heli)" },
1408
+ { id: 107, symbol: "INPUT_VEH_FLY_ROLL_LR", label: "Veh Fly Roll LR", defaultKey: "Numpad 6", group: "Vehicle (Plane/Heli)" },
1409
+ { id: 108, symbol: "INPUT_VEH_FLY_ROLL_LEFT_ONLY", label: "Veh Fly Roll Left Only", defaultKey: "Numpad 4", group: "Vehicle (Plane/Heli)" },
1410
+ { id: 109, symbol: "INPUT_VEH_FLY_ROLL_RIGHT_ONLY", label: "Veh Fly Roll Right Only", defaultKey: "Numpad 6", group: "Vehicle (Plane/Heli)" },
1411
+ { id: 110, symbol: "INPUT_VEH_FLY_PITCH_UD", label: "Veh Fly Pitch UD", defaultKey: "Numpad 5", group: "Vehicle (Plane/Heli)" },
1412
+ { id: 111, symbol: "INPUT_VEH_FLY_PITCH_UP_ONLY", label: "Veh Fly Pitch Up Only", defaultKey: "Numpad 8", group: "Vehicle (Plane/Heli)" },
1413
+ { id: 112, symbol: "INPUT_VEH_FLY_PITCH_DOWN_ONLY", label: "Veh Fly Pitch Down Only", defaultKey: "Numpad 5", group: "Vehicle (Plane/Heli)" },
1414
+ { id: 113, symbol: "INPUT_VEH_FLY_UNDERCARRIAGE", label: "Veh Fly Undercarriage", defaultKey: "G", group: "Vehicle (Plane/Heli)" },
1415
+ { id: 114, symbol: "INPUT_VEH_FLY_ATTACK", label: "Plane Attack", defaultKey: "Mouse 2", group: "Vehicle (Plane/Heli)" },
1416
+ { id: 115, symbol: "INPUT_VEH_FLY_SELECT_NEXT_WEAPON", label: "Veh Fly Select Next Weapon", defaultKey: "Scroll Up", group: "Vehicle (Plane/Heli)" },
1417
+ { id: 116, symbol: "INPUT_VEH_FLY_SELECT_PREV_WEAPON", label: "Veh Fly Select Prev Weapon", defaultKey: "[", group: "Vehicle (Plane/Heli)" },
1418
+ { id: 117, symbol: "INPUT_VEH_FLY_SELECT_TARGET_LEFT", label: "Veh Fly Select Target Left", defaultKey: "Numpad 7", group: "Vehicle (Plane/Heli)" },
1419
+ { id: 118, symbol: "INPUT_VEH_FLY_SELECT_TARGET_RIGHT", label: "Veh Fly Select Target Right", defaultKey: "Numpad 9", group: "Vehicle (Plane/Heli)" },
1420
+ { id: 119, symbol: "INPUT_VEH_FLY_VERTICAL_FLIGHT_MODE", label: "Veh Fly Vertical Flight Mode", defaultKey: "E", group: "Vehicle (Plane/Heli)" },
1421
+ { id: 120, symbol: "INPUT_VEH_FLY_DUCK", label: "Veh Fly Duck", defaultKey: "X", group: "Vehicle (Plane/Heli)" },
1422
+ { id: 122, symbol: "INPUT_VEH_FLY_MOUSE_CONTROL_OVERRIDE", label: "Veh Fly Mouse Control Override", defaultKey: "Mouse 1", group: "Vehicle (Plane/Heli)" },
1423
+ { id: 331, symbol: "INPUT_VEH_FLY_ATTACK2", label: "Veh Fly Attack2", defaultKey: "Mouse 2", group: "Vehicle (Plane/Heli)" },
1424
+ { id: 352, symbol: "INPUT_VEH_FLY_BOOST", label: "Veh Fly Boost", defaultKey: "Left Shift", group: "Vehicle (Plane/Heli)" },
1425
+ { id: 355, symbol: "INPUT_VEH_FLY_BOMB_BAY", label: "Veh Fly Bomb Bay", defaultKey: "E", group: "Vehicle (Plane/Heli)" },
1426
+ { id: 356, symbol: "INPUT_VEH_FLY_COUNTER", label: "Veh Fly Counter", defaultKey: "E", group: "Vehicle (Plane/Heli)" },
1427
+ // ── Vehicle (Boat/Bike) ────────────────────────────────────────────────────
1428
+ { id: 123, symbol: "INPUT_VEH_SUB_TURN_LR", label: "Veh Sub Turn LR", defaultKey: "Numpad 6", group: "Vehicle (Boat/Bike)" },
1429
+ { id: 124, symbol: "INPUT_VEH_SUB_TURN_LEFT_ONLY", label: "Veh Sub Turn Left Only", defaultKey: "Numpad 4", group: "Vehicle (Boat/Bike)" },
1430
+ { id: 125, symbol: "INPUT_VEH_SUB_TURN_RIGHT_ONLY", label: "Veh Sub Turn Right Only", defaultKey: "Numpad 6", group: "Vehicle (Boat/Bike)" },
1431
+ { id: 126, symbol: "INPUT_VEH_SUB_PITCH_UD", label: "Veh Sub Pitch UD", defaultKey: "Numpad 5", group: "Vehicle (Boat/Bike)" },
1432
+ { id: 127, symbol: "INPUT_VEH_SUB_PITCH_UP_ONLY", label: "Veh Sub Pitch Up Only", defaultKey: "Numpad 8", group: "Vehicle (Boat/Bike)" },
1433
+ { id: 128, symbol: "INPUT_VEH_SUB_PITCH_DOWN_ONLY", label: "Veh Sub Pitch Down Only", defaultKey: "Numpad 5", group: "Vehicle (Boat/Bike)" },
1434
+ { id: 129, symbol: "INPUT_VEH_SUB_THROTTLE_UP", label: "Veh Sub Throttle Up", defaultKey: "W", group: "Vehicle (Boat/Bike)" },
1435
+ { id: 130, symbol: "INPUT_VEH_SUB_THROTTLE_DOWN", label: "Veh Sub Throttle Down", defaultKey: "S", group: "Vehicle (Boat/Bike)" },
1436
+ { id: 131, symbol: "INPUT_VEH_SUB_ASCEND", label: "Veh Sub Ascend", defaultKey: "Left Shift", group: "Vehicle (Boat/Bike)" },
1437
+ { id: 132, symbol: "INPUT_VEH_SUB_DESCEND", label: "Veh Sub Descend", defaultKey: "Left Ctrl", group: "Vehicle (Boat/Bike)" },
1438
+ { id: 133, symbol: "INPUT_VEH_SUB_TURN_HARD_LEFT", label: "Veh Sub Turn Hard Left", defaultKey: "A", group: "Vehicle (Boat/Bike)" },
1439
+ { id: 134, symbol: "INPUT_VEH_SUB_TURN_HARD_RIGHT", label: "Veh Sub Turn Hard Right", defaultKey: "D", group: "Vehicle (Boat/Bike)" },
1440
+ { id: 135, symbol: "INPUT_VEH_SUB_MOUSE_CONTROL_OVERRIDE", label: "Veh Sub Mouse Control Override", defaultKey: "Mouse 1", group: "Vehicle (Boat/Bike)" },
1441
+ { id: 136, symbol: "INPUT_VEH_PUSHBIKE_PEDAL", label: "Veh Pushbike Pedal", defaultKey: "W", group: "Vehicle (Boat/Bike)" },
1442
+ { id: 137, symbol: "INPUT_VEH_PUSHBIKE_SPRINT", label: "Veh Pushbike Sprint", defaultKey: "Caps Lock", group: "Vehicle (Boat/Bike)" },
1443
+ { id: 138, symbol: "INPUT_VEH_PUSHBIKE_FRONT_BRAKE", label: "Veh Pushbike Front Brake", defaultKey: "Q", group: "Vehicle (Boat/Bike)" },
1444
+ { id: 139, symbol: "INPUT_VEH_PUSHBIKE_REAR_BRAKE", label: "Veh Pushbike Rear Brake", defaultKey: "S", group: "Vehicle (Boat/Bike)" },
1326
1445
  // ── Phone ──────────────────────────────────────────────────────────────────
1327
- { id: 137, symbol: "INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY", label: "Toggle Phone (alt)", group: "Phone" },
1446
+ { id: 27, symbol: "INPUT_PHONE", label: "Phone", defaultKey: "Up Arrow", group: "Phone" },
1447
+ { id: 172, symbol: "INPUT_CELLPHONE_UP", label: "Cellphone Up", defaultKey: "Up Arrow", group: "Phone" },
1448
+ { id: 173, symbol: "INPUT_CELLPHONE_DOWN", label: "Cellphone Down", defaultKey: "Down Arrow", group: "Phone" },
1449
+ { id: 174, symbol: "INPUT_CELLPHONE_LEFT", label: "Cellphone Left", defaultKey: "Left Arrow", group: "Phone" },
1450
+ { id: 175, symbol: "INPUT_CELLPHONE_RIGHT", label: "Cellphone Right", defaultKey: "Right Arrow", group: "Phone" },
1451
+ { id: 176, symbol: "INPUT_CELLPHONE_SELECT", label: "Cellphone Select", defaultKey: "Enter", group: "Phone" },
1452
+ { id: 177, symbol: "INPUT_CELLPHONE_CANCEL", label: "Cellphone Cancel", defaultKey: "Backspace", group: "Phone" },
1453
+ { id: 178, symbol: "INPUT_CELLPHONE_OPTION", label: "Cellphone Option", defaultKey: "Delete", group: "Phone" },
1454
+ { id: 179, symbol: "INPUT_CELLPHONE_EXTRA_OPTION", label: "Cellphone Extra Option", defaultKey: "Space", group: "Phone" },
1455
+ { id: 180, symbol: "INPUT_CELLPHONE_SCROLL_FORWARD", label: "Cellphone Scroll Forward", defaultKey: "Scroll Down", group: "Phone" },
1456
+ { id: 181, symbol: "INPUT_CELLPHONE_SCROLL_BACKWARD", label: "Cellphone Scroll Backward", defaultKey: "Scroll Up", group: "Phone" },
1457
+ { id: 213, symbol: "INPUT_FRONTEND_SOCIAL_CLUB_SECONDARY", label: "Toggle Phone (alt)", defaultKey: "Home", group: "Phone" },
1328
1458
  // ── Frontend / UI ──────────────────────────────────────────────────────────
1459
+ { id: 187, symbol: "INPUT_FRONTEND_DOWN", label: "Frontend Down", defaultKey: "Down Arrow", group: "Frontend / UI" },
1460
+ { id: 188, symbol: "INPUT_FRONTEND_UP", label: "Frontend Up", defaultKey: "Up Arrow", group: "Frontend / UI" },
1461
+ { id: 189, symbol: "INPUT_FRONTEND_LEFT", label: "Frontend Left", defaultKey: "Left Arrow", group: "Frontend / UI" },
1462
+ { id: 190, symbol: "INPUT_FRONTEND_RIGHT", label: "Frontend Right", defaultKey: "Right Arrow", group: "Frontend / UI" },
1463
+ { id: 191, symbol: "INPUT_FRONTEND_RDOWN", label: "Frontend Rdown", defaultKey: "Enter", group: "Frontend / UI" },
1464
+ { id: 192, symbol: "INPUT_FRONTEND_RUP", label: "Frontend Rup", defaultKey: "Tab", group: "Frontend / UI" },
1465
+ { id: 193, symbol: "INPUT_FRONTEND_RLEFT", label: "Frontend Rleft", group: "Frontend / UI" },
1466
+ { id: 194, symbol: "INPUT_FRONTEND_RRIGHT", label: "Frontend Rright", defaultKey: "Backspace", group: "Frontend / UI" },
1467
+ { id: 195, symbol: "INPUT_FRONTEND_AXIS_X", label: "Frontend Axis X", defaultKey: "D", group: "Frontend / UI" },
1468
+ { id: 196, symbol: "INPUT_FRONTEND_AXIS_Y", label: "Frontend Axis Y", defaultKey: "S", group: "Frontend / UI" },
1469
+ { id: 197, symbol: "INPUT_FRONTEND_RIGHT_AXIS_X", label: "Frontend Right Axis X", defaultKey: "]", group: "Frontend / UI" },
1470
+ { id: 198, symbol: "INPUT_FRONTEND_RIGHT_AXIS_Y", label: "Frontend Right Axis Y", defaultKey: "Scroll Down", group: "Frontend / UI" },
1329
1471
  { id: 199, symbol: "INPUT_FRONTEND_PAUSE", label: "Pause Menu", defaultKey: "P", group: "Frontend / UI" },
1330
1472
  { id: 200, symbol: "INPUT_FRONTEND_PAUSE_ALTERNATE", label: "Pause Menu (alt)", defaultKey: "Esc", group: "Frontend / UI" },
1331
1473
  { id: 201, symbol: "INPUT_FRONTEND_ACCEPT", label: "Accept", defaultKey: "Enter", group: "Frontend / UI" },
1332
- { id: 202, symbol: "INPUT_FRONTEND_CANCEL", label: "Cancel", defaultKey: "Esc", group: "Frontend / UI" },
1474
+ { id: 202, symbol: "INPUT_FRONTEND_CANCEL", label: "Cancel", defaultKey: "Backspace", group: "Frontend / UI" },
1475
+ { id: 203, symbol: "INPUT_FRONTEND_X", label: "Frontend X", defaultKey: "Space", group: "Frontend / UI" },
1476
+ { id: 204, symbol: "INPUT_FRONTEND_Y", label: "Frontend Y", defaultKey: "Tab", group: "Frontend / UI" },
1477
+ { id: 205, symbol: "INPUT_FRONTEND_LB", label: "Frontend LB", defaultKey: "Q", group: "Frontend / UI" },
1478
+ { id: 206, symbol: "INPUT_FRONTEND_RB", label: "Frontend RB", defaultKey: "E", group: "Frontend / UI" },
1479
+ { id: 207, symbol: "INPUT_FRONTEND_LT", label: "Frontend LT", defaultKey: "Page Down", group: "Frontend / UI" },
1480
+ { id: 208, symbol: "INPUT_FRONTEND_RT", label: "Frontend RT", defaultKey: "Page Up", group: "Frontend / UI" },
1481
+ { id: 209, symbol: "INPUT_FRONTEND_LS", label: "Frontend LS", defaultKey: "Left Shift", group: "Frontend / UI" },
1482
+ { id: 210, symbol: "INPUT_FRONTEND_RS", label: "Frontend RS", defaultKey: "Left Ctrl", group: "Frontend / UI" },
1483
+ { id: 211, symbol: "INPUT_FRONTEND_LEADERBOARD", label: "Frontend Leaderboard", defaultKey: "Tab", group: "Frontend / UI" },
1484
+ { id: 212, symbol: "INPUT_FRONTEND_SOCIAL_CLUB", label: "Frontend Social Club", defaultKey: "Home", group: "Frontend / UI" },
1485
+ { id: 214, symbol: "INPUT_FRONTEND_DELETE", label: "Frontend Delete", defaultKey: "Delete", group: "Frontend / UI" },
1486
+ { id: 215, symbol: "INPUT_FRONTEND_ENDSCREEN_ACCEPT", label: "Frontend Endscreen Accept", defaultKey: "Enter", group: "Frontend / UI" },
1487
+ { id: 216, symbol: "INPUT_FRONTEND_ENDSCREEN_EXPAND", label: "Frontend Endscreen Expand", defaultKey: "Space", group: "Frontend / UI" },
1488
+ { id: 217, symbol: "INPUT_FRONTEND_SELECT", label: "Frontend Select", defaultKey: "Caps Lock", group: "Frontend / UI" },
1333
1489
  { id: 244, symbol: "INPUT_INTERACTION_MENU", label: "Interaction Menu", defaultKey: "M", group: "Frontend / UI" },
1334
1490
  // ── Multiplayer ────────────────────────────────────────────────────────────
1335
1491
  { id: 245, symbol: "INPUT_MP_TEXT_CHAT_ALL", label: "Chat (All)", defaultKey: "T", group: "Multiplayer" },
@@ -1338,14 +1494,140 @@ var GTA_CONTROLS = [
1338
1494
  { id: 248, symbol: "INPUT_MP_TEXT_CHAT_CREW", label: "Chat (Crew)", group: "Multiplayer" },
1339
1495
  { id: 249, symbol: "INPUT_PUSH_TO_TALK", label: "Push To Talk", defaultKey: "N", group: "Multiplayer" },
1340
1496
  // ── Misc ───────────────────────────────────────────────────────────────────
1497
+ { id: 8, symbol: "INPUT_SCRIPTED_FLY_UD", label: "Scripted Fly UD", defaultKey: "S", group: "Misc" },
1498
+ { id: 9, symbol: "INPUT_SCRIPTED_FLY_LR", label: "Scripted Fly LR", defaultKey: "D", group: "Misc" },
1499
+ { id: 10, symbol: "INPUT_SCRIPTED_FLY_ZUP", label: "Scripted Fly Zup", defaultKey: "Page Up", group: "Misc" },
1500
+ { id: 11, symbol: "INPUT_SCRIPTED_FLY_ZDOWN", label: "Scripted Fly Zdown", defaultKey: "Page Down", group: "Misc" },
1501
+ { id: 16, symbol: "INPUT_SELECT_NEXT_WEAPON", label: "Select Next Weapon", defaultKey: "Scroll Down", group: "Misc" },
1502
+ { id: 17, symbol: "INPUT_SELECT_PREV_WEAPON", label: "Select Prev Weapon", defaultKey: "Scroll Up", group: "Misc" },
1503
+ { id: 18, symbol: "INPUT_SKIP_CUTSCENE", label: "Skip Cutscene", defaultKey: "Enter", group: "Misc" },
1504
+ { id: 19, symbol: "INPUT_CHARACTER_WHEEL", label: "Character Wheel", defaultKey: "Left Alt", group: "Misc" },
1505
+ { id: 20, symbol: "INPUT_MULTIPLAYER_INFO", label: "Player List", defaultKey: "Z", group: "Misc" },
1506
+ { id: 28, symbol: "INPUT_SPECIAL_ABILITY", label: "Special Ability", group: "Misc" },
1507
+ { id: 29, symbol: "INPUT_SPECIAL_ABILITY_SECONDARY", label: "Special Ability Secondary", defaultKey: "B", group: "Misc" },
1508
+ { id: 39, symbol: "INPUT_SNIPER_ZOOM", label: "Sniper Zoom", defaultKey: "[", group: "Misc" },
1509
+ { id: 40, symbol: "INPUT_SNIPER_ZOOM_IN_ONLY", label: "Sniper Zoom In Only", defaultKey: "]", group: "Misc" },
1510
+ { id: 41, symbol: "INPUT_SNIPER_ZOOM_OUT_ONLY", label: "Sniper Zoom Out Only", defaultKey: "[", group: "Misc" },
1511
+ { id: 42, symbol: "INPUT_SNIPER_ZOOM_IN_SECONDARY", label: "Sniper Zoom In Secondary", defaultKey: "]", group: "Misc" },
1512
+ { id: 43, symbol: "INPUT_SNIPER_ZOOM_OUT_SECONDARY", label: "Sniper Zoom Out Secondary", defaultKey: "[", group: "Misc" },
1513
+ { id: 46, symbol: "INPUT_TALK", label: "Talk", defaultKey: "E", group: "Misc" },
1514
+ { id: 48, symbol: "INPUT_HUD_SPECIAL", label: "Special Ability", defaultKey: "Z", group: "Misc" },
1515
+ { id: 49, symbol: "INPUT_ARREST", label: "Arrest", defaultKey: "F", group: "Misc" },
1516
+ { id: 50, symbol: "INPUT_ACCURATE_AIM", label: "Accurate Aim", defaultKey: "Scroll Down", group: "Misc" },
1341
1517
  { id: 51, symbol: "INPUT_CONTEXT", label: "Context (E)", defaultKey: "E", group: "Misc" },
1342
1518
  { id: 52, symbol: "INPUT_CONTEXT_SECONDARY", label: "Context Secondary", defaultKey: "Q", group: "Misc" },
1343
- { id: 19, symbol: "INPUT_CHARACTER_WHEEL", label: "Character Wheel", defaultKey: "Left Alt", group: "Misc" },
1344
- { id: 105, symbol: "INPUT_HUD_SPECIAL", label: "Special Ability", defaultKey: "Caps Lock", group: "Misc" },
1345
- { id: 121, symbol: "INPUT_MULTIPLAYER_INFO", label: "Player List", defaultKey: "Z", group: "Misc" },
1346
- { id: 170, symbol: "INPUT_SAVE_REPLAY_CLIP", label: "Save Replay Clip", defaultKey: "F1", group: "Misc" },
1519
+ { id: 55, symbol: "INPUT_DIVE", label: "Dive", defaultKey: "Space", group: "Misc" },
1520
+ { id: 56, symbol: "INPUT_DROP_WEAPON", label: "Drop Weapon", defaultKey: "F9", group: "Misc" },
1521
+ { id: 57, symbol: "INPUT_DROP_AMMO", label: "Drop Ammo", defaultKey: "F10", group: "Misc" },
1522
+ { id: 144, symbol: "INPUT_PARACHUTE_DEPLOY", label: "Parachute Deploy", defaultKey: "F", group: "Misc" },
1523
+ { id: 145, symbol: "INPUT_PARACHUTE_DETACH", label: "Parachute Detach", defaultKey: "F", group: "Misc" },
1524
+ { id: 146, symbol: "INPUT_PARACHUTE_TURN_LR", label: "Parachute Turn LR", defaultKey: "D", group: "Misc" },
1525
+ { id: 147, symbol: "INPUT_PARACHUTE_TURN_LEFT_ONLY", label: "Parachute Turn Left Only", defaultKey: "A", group: "Misc" },
1526
+ { id: 148, symbol: "INPUT_PARACHUTE_TURN_RIGHT_ONLY", label: "Parachute Turn Right Only", defaultKey: "D", group: "Misc" },
1527
+ { id: 149, symbol: "INPUT_PARACHUTE_PITCH_UD", label: "Parachute Pitch UD", defaultKey: "S", group: "Misc" },
1528
+ { id: 150, symbol: "INPUT_PARACHUTE_PITCH_UP_ONLY", label: "Parachute Pitch Up Only", defaultKey: "W", group: "Misc" },
1529
+ { id: 151, symbol: "INPUT_PARACHUTE_PITCH_DOWN_ONLY", label: "Parachute Pitch Down Only", defaultKey: "S", group: "Misc" },
1530
+ { id: 152, symbol: "INPUT_PARACHUTE_BRAKE_LEFT", label: "Parachute Brake Left", defaultKey: "Q", group: "Misc" },
1531
+ { id: 153, symbol: "INPUT_PARACHUTE_BRAKE_RIGHT", label: "Parachute Brake Right", defaultKey: "E", group: "Misc" },
1532
+ { id: 154, symbol: "INPUT_PARACHUTE_SMOKE", label: "Parachute Smoke", defaultKey: "X", group: "Misc" },
1533
+ { id: 155, symbol: "INPUT_PARACHUTE_PRECISION_LANDING", label: "Parachute Precision Landing", defaultKey: "Left Shift", group: "Misc" },
1534
+ { id: 156, symbol: "INPUT_MAP", label: "Map", group: "Misc" },
1535
+ { id: 166, symbol: "INPUT_SELECT_CHARACTER_MICHAEL", label: "Select Character Michael", defaultKey: "F5", group: "Misc" },
1536
+ { id: 167, symbol: "INPUT_SELECT_CHARACTER_FRANKLIN", label: "Select Character Franklin", defaultKey: "F6", group: "Misc" },
1537
+ { id: 168, symbol: "INPUT_SELECT_CHARACTER_TREVOR", label: "Select Character Trevor", defaultKey: "F7", group: "Misc" },
1538
+ { id: 169, symbol: "INPUT_SELECT_CHARACTER_MULTIPLAYER", label: "Select Character Multiplayer", defaultKey: "F8", group: "Misc" },
1539
+ { id: 170, symbol: "INPUT_SAVE_REPLAY_CLIP", label: "Save Replay Clip", defaultKey: "F3", group: "Misc" },
1540
+ { id: 171, symbol: "INPUT_SPECIAL_ABILITY_PC", label: "Special Ability Pc", defaultKey: "Caps Lock", group: "Misc" },
1541
+ { id: 218, symbol: "INPUT_SCRIPT_LEFT_AXIS_X", label: "Script Left Axis X", defaultKey: "D", group: "Misc" },
1542
+ { id: 219, symbol: "INPUT_SCRIPT_LEFT_AXIS_Y", label: "Script Left Axis Y", defaultKey: "S", group: "Misc" },
1543
+ { id: 220, symbol: "INPUT_SCRIPT_RIGHT_AXIS_X", label: "Script Right Axis X", defaultKey: "Mouse X", group: "Misc" },
1544
+ { id: 221, symbol: "INPUT_SCRIPT_RIGHT_AXIS_Y", label: "Script Right Axis Y", defaultKey: "Mouse Y", group: "Misc" },
1545
+ { id: 222, symbol: "INPUT_SCRIPT_RUP", label: "Script Rup", defaultKey: "Mouse 2", group: "Misc" },
1546
+ { id: 223, symbol: "INPUT_SCRIPT_RDOWN", label: "Script Rdown", defaultKey: "Mouse 1", group: "Misc" },
1547
+ { id: 224, symbol: "INPUT_SCRIPT_RLEFT", label: "Script Rleft", defaultKey: "Left Ctrl", group: "Misc" },
1548
+ { id: 225, symbol: "INPUT_SCRIPT_RRIGHT", label: "Script Rright", defaultKey: "Mouse 2", group: "Misc" },
1549
+ { id: 226, symbol: "INPUT_SCRIPT_LB", label: "Script LB", group: "Misc" },
1550
+ { id: 227, symbol: "INPUT_SCRIPT_RB", label: "Script RB", group: "Misc" },
1551
+ { id: 228, symbol: "INPUT_SCRIPT_LT", label: "Script LT", group: "Misc" },
1552
+ { id: 229, symbol: "INPUT_SCRIPT_RT", label: "Script RT", defaultKey: "Mouse 1", group: "Misc" },
1553
+ { id: 230, symbol: "INPUT_SCRIPT_LS", label: "Script LS", group: "Misc" },
1554
+ { id: 231, symbol: "INPUT_SCRIPT_RS", label: "Script RS", group: "Misc" },
1555
+ { id: 232, symbol: "INPUT_SCRIPT_PAD_UP", label: "Script Pad Up", defaultKey: "W", group: "Misc" },
1556
+ { id: 233, symbol: "INPUT_SCRIPT_PAD_DOWN", label: "Script Pad Down", defaultKey: "S", group: "Misc" },
1557
+ { id: 234, symbol: "INPUT_SCRIPT_PAD_LEFT", label: "Script Pad Left", defaultKey: "A", group: "Misc" },
1558
+ { id: 235, symbol: "INPUT_SCRIPT_PAD_RIGHT", label: "Script Pad Right", defaultKey: "D", group: "Misc" },
1559
+ { id: 236, symbol: "INPUT_SCRIPT_SELECT", label: "Script Select", defaultKey: "V", group: "Misc" },
1560
+ { id: 237, symbol: "INPUT_CURSOR_ACCEPT", label: "Cursor Accept", defaultKey: "Mouse 1", group: "Misc" },
1561
+ { id: 238, symbol: "INPUT_CURSOR_CANCEL", label: "Cursor Cancel", defaultKey: "Mouse 2", group: "Misc" },
1562
+ { id: 239, symbol: "INPUT_CURSOR_X", label: "Cursor X", group: "Misc" },
1563
+ { id: 240, symbol: "INPUT_CURSOR_Y", label: "Cursor Y", group: "Misc" },
1564
+ { id: 241, symbol: "INPUT_CURSOR_SCROLL_UP", label: "Cursor Scroll Up", defaultKey: "Scroll Up", group: "Misc" },
1565
+ { id: 242, symbol: "INPUT_CURSOR_SCROLL_DOWN", label: "Cursor Scroll Down", defaultKey: "Scroll Down", group: "Misc" },
1566
+ { id: 243, symbol: "INPUT_ENTER_CHEAT_CODE", label: "Enter Cheat Code", defaultKey: "~", group: "Misc" },
1567
+ { id: 250, symbol: "INPUT_CREATOR_LS", label: "Creator LS", defaultKey: "R", group: "Misc" },
1568
+ { id: 251, symbol: "INPUT_CREATOR_RS", label: "Creator RS", defaultKey: "F", group: "Misc" },
1569
+ { id: 252, symbol: "INPUT_CREATOR_LT", label: "Creator LT", defaultKey: "X", group: "Misc" },
1570
+ { id: 253, symbol: "INPUT_CREATOR_RT", label: "Creator RT", defaultKey: "C", group: "Misc" },
1571
+ { id: 254, symbol: "INPUT_CREATOR_MENU_TOGGLE", label: "Creator Menu Toggle", defaultKey: "Left Shift", group: "Misc" },
1572
+ { id: 255, symbol: "INPUT_CREATOR_ACCEPT", label: "Creator Accept", defaultKey: "Space", group: "Misc" },
1573
+ { id: 256, symbol: "INPUT_CREATOR_DELETE", label: "Creator Delete", defaultKey: "Delete", group: "Misc" },
1574
+ { id: 258, symbol: "INPUT_RAPPEL_JUMP", label: "Rappel Jump", group: "Misc" },
1575
+ { id: 259, symbol: "INPUT_RAPPEL_LONG_JUMP", label: "Rappel Long Jump", group: "Misc" },
1576
+ { id: 260, symbol: "INPUT_RAPPEL_SMASH_WINDOW", label: "Rappel Smash Window", group: "Misc" },
1577
+ { id: 261, symbol: "INPUT_PREV_WEAPON", label: "Prev Weapon", defaultKey: "Scroll Up", group: "Misc" },
1578
+ { id: 262, symbol: "INPUT_NEXT_WEAPON", label: "Next Weapon", defaultKey: "Scroll Down", group: "Misc" },
1579
+ { id: 265, symbol: "INPUT_WHISTLE", label: "Whistle", group: "Misc" },
1580
+ { id: 274, symbol: "INPUT_SNIPER_ZOOM_IN", label: "Sniper Zoom In", defaultKey: "[", group: "Misc" },
1581
+ { id: 275, symbol: "INPUT_SNIPER_ZOOM_OUT", label: "Sniper Zoom Out", defaultKey: "[", group: "Misc" },
1582
+ { id: 276, symbol: "INPUT_SNIPER_ZOOM_IN_ALTERNATE", label: "Sniper Zoom In Alternate", defaultKey: "[", group: "Misc" },
1583
+ { id: 277, symbol: "INPUT_SNIPER_ZOOM_OUT_ALTERNATE", label: "Sniper Zoom Out Alternate", defaultKey: "[", group: "Misc" },
1347
1584
  { id: 288, symbol: "INPUT_REPLAY_START_STOP_RECORDING", label: "Replay Record", defaultKey: "F1", group: "Misc" },
1348
- { id: 289, symbol: "INPUT_REPLAY_START_STOP_RECORDING_SECONDARY", label: "Replay Record (alt)", group: "Misc" }
1585
+ { id: 289, symbol: "INPUT_REPLAY_START_STOP_RECORDING_SECONDARY", label: "Replay Record (alt)", defaultKey: "F2", group: "Misc" },
1586
+ { id: 290, symbol: "INPUT_SCALED_LOOK_LR", label: "Scaled Look LR", defaultKey: "Mouse X", group: "Misc" },
1587
+ { id: 291, symbol: "INPUT_SCALED_LOOK_UD", label: "Scaled Look UD", defaultKey: "Mouse Y", group: "Misc" },
1588
+ { id: 292, symbol: "INPUT_SCALED_LOOK_UP_ONLY", label: "Scaled Look Up Only", group: "Misc" },
1589
+ { id: 293, symbol: "INPUT_SCALED_LOOK_DOWN_ONLY", label: "Scaled Look Down Only", group: "Misc" },
1590
+ { id: 294, symbol: "INPUT_SCALED_LOOK_LEFT_ONLY", label: "Scaled Look Left Only", group: "Misc" },
1591
+ { id: 295, symbol: "INPUT_SCALED_LOOK_RIGHT_ONLY", label: "Scaled Look Right Only", group: "Misc" },
1592
+ { id: 296, symbol: "INPUT_REPLAY_MARKER_DELETE", label: "Replay Marker Delete", defaultKey: "Delete", group: "Misc" },
1593
+ { id: 297, symbol: "INPUT_REPLAY_CLIP_DELETE", label: "Replay Clip Delete", defaultKey: "Delete", group: "Misc" },
1594
+ { id: 298, symbol: "INPUT_REPLAY_PAUSE", label: "Replay Pause", defaultKey: "Space", group: "Misc" },
1595
+ { id: 299, symbol: "INPUT_REPLAY_REWIND", label: "Replay Rewind", defaultKey: "Down Arrow", group: "Misc" },
1596
+ { id: 300, symbol: "INPUT_REPLAY_FFWD", label: "Replay Ffwd", defaultKey: "Up Arrow", group: "Misc" },
1597
+ { id: 301, symbol: "INPUT_REPLAY_NEWMARKER", label: "Replay Newmarker", defaultKey: "M", group: "Misc" },
1598
+ { id: 302, symbol: "INPUT_REPLAY_RECORD", label: "Replay Record", defaultKey: "S", group: "Misc" },
1599
+ { id: 303, symbol: "INPUT_REPLAY_SCREENSHOT", label: "Replay Screenshot", defaultKey: "U", group: "Misc" },
1600
+ { id: 304, symbol: "INPUT_REPLAY_HIDEHUD", label: "Replay Hidehud", defaultKey: "H", group: "Misc" },
1601
+ { id: 305, symbol: "INPUT_REPLAY_STARTPOINT", label: "Replay Startpoint", defaultKey: "B", group: "Misc" },
1602
+ { id: 306, symbol: "INPUT_REPLAY_ENDPOINT", label: "Replay Endpoint", defaultKey: "N", group: "Misc" },
1603
+ { id: 307, symbol: "INPUT_REPLAY_ADVANCE", label: "Replay Advance", defaultKey: "Right Arrow", group: "Misc" },
1604
+ { id: 308, symbol: "INPUT_REPLAY_BACK", label: "Replay Back", defaultKey: "Left Arrow", group: "Misc" },
1605
+ { id: 309, symbol: "INPUT_REPLAY_TOOLS", label: "Replay Tools", defaultKey: "T", group: "Misc" },
1606
+ { id: 310, symbol: "INPUT_REPLAY_RESTART", label: "Replay Restart", defaultKey: "R", group: "Misc" },
1607
+ { id: 311, symbol: "INPUT_REPLAY_SHOWHOTKEY", label: "Replay Showhotkey", defaultKey: "K", group: "Misc" },
1608
+ { id: 312, symbol: "INPUT_REPLAY_CYCLEMARKERLEFT", label: "Replay Cyclemarkerleft", defaultKey: "[", group: "Misc" },
1609
+ { id: 313, symbol: "INPUT_REPLAY_CYCLEMARKERRIGHT", label: "Replay Cyclemarkerright", defaultKey: "]", group: "Misc" },
1610
+ { id: 314, symbol: "INPUT_REPLAY_FOVINCREASE", label: "Replay Fovincrease", defaultKey: "Numpad +", group: "Misc" },
1611
+ { id: 315, symbol: "INPUT_REPLAY_FOVDECREASE", label: "Replay Fovdecrease", defaultKey: "Numpad -", group: "Misc" },
1612
+ { id: 318, symbol: "INPUT_REPLAY_SAVE", label: "Replay Save", defaultKey: "F5", group: "Misc" },
1613
+ { id: 319, symbol: "INPUT_REPLAY_TOGGLETIME", label: "Replay Toggletime", defaultKey: "C", group: "Misc" },
1614
+ { id: 320, symbol: "INPUT_REPLAY_TOGGLETIPS", label: "Replay Toggletips", defaultKey: "V", group: "Misc" },
1615
+ { id: 321, symbol: "INPUT_REPLAY_PREVIEW", label: "Replay Preview", defaultKey: "Space", group: "Misc" },
1616
+ { id: 322, symbol: "INPUT_REPLAY_TOGGLE_TIMELINE", label: "Replay Toggle Timeline", defaultKey: "Esc", group: "Misc" },
1617
+ { id: 323, symbol: "INPUT_REPLAY_TIMELINE_PICKUP_CLIP", label: "Replay Timeline Pickup Clip", defaultKey: "X", group: "Misc" },
1618
+ { id: 324, symbol: "INPUT_REPLAY_TIMELINE_DUPLICATE_CLIP", label: "Replay Timeline Duplicate Clip", defaultKey: "C", group: "Misc" },
1619
+ { id: 325, symbol: "INPUT_REPLAY_TIMELINE_PLACE_CLIP", label: "Replay Timeline Place Clip", defaultKey: "V", group: "Misc" },
1620
+ { id: 326, symbol: "INPUT_REPLAY_CTRL", label: "Replay Ctrl", defaultKey: "Left Ctrl", group: "Misc" },
1621
+ { id: 327, symbol: "INPUT_REPLAY_TIMELINE_SAVE", label: "Replay Timeline Save", defaultKey: "F5", group: "Misc" },
1622
+ { id: 328, symbol: "INPUT_REPLAY_PREVIEW_AUDIO", label: "Replay Preview Audio", defaultKey: "Space", group: "Misc" },
1623
+ { id: 332, symbol: "INPUT_RADIO_WHEEL_UD", label: "Radio Wheel UD", defaultKey: "Mouse Y", group: "Misc" },
1624
+ { id: 333, symbol: "INPUT_RADIO_WHEEL_LR", label: "Radio Wheel LR", defaultKey: "Mouse X", group: "Misc" },
1625
+ { id: 344, symbol: "INPUT_SWITCH_VISOR", label: "Switch Visor", defaultKey: "F11", group: "Misc" },
1626
+ { id: 348, symbol: "INPUT_MAP_POI", label: "Map Poi", defaultKey: "Mouse 3", group: "Misc" },
1627
+ { id: 349, symbol: "INPUT_REPLAY_SNAPMATIC_PHOTO", label: "Replay Snapmatic Photo", defaultKey: "Tab", group: "Misc" },
1628
+ { id: 358, symbol: "INPUT_QUAD_LOCO_REVERSE", label: "Quad Loco Reverse", group: "Misc" },
1629
+ { id: 359, symbol: "INPUT_RESPAWN_FASTER", label: "Respawn Faster", group: "Misc" },
1630
+ { id: 360, symbol: "INPUT_HUDMARKER_SELECT", label: "Hudmarker Select", group: "Misc" }
1349
1631
  ];
1350
1632
  var BY_ID = new Map(GTA_CONTROLS.map((c) => [c.id, c]));
1351
1633
  function getGtaControl(id) {
@@ -1371,5 +1653,5 @@ var GTA_CONTROL_GROUP_ORDER = [
1371
1653
  ];
1372
1654
 
1373
1655
  export { DEFAULT_PALETTE, GTA_CONTROLS, GTA_CONTROL_GROUP_ORDER, INPUT_MAPPER_KEYS_BY_PRIMARY, INPUT_MAPPER_PRIMARY_OPTIONS, ThemeOverrideSchema, colorWithAlpha, copyToClipboard, createSkill, defaultThemeOverride, ensureFrameworkGroups, ensureVehicles, extractDefaults, fetchLuaTable, fetchNui, formatGtaControl, gameToMap, getGtaControl, getImageShape, getItemImageUrl, initialFetches, internalEvent, isEnvBrowser, isProfanity, latPr100, loadModels, locale, localeStore, mapCenter, mapToGame, noop, numberToRoman, openLink, registerInitialFetch, registerInitialLuaTableFetch, resolveItemDescription, resolveItemLabel, runFetches, selectAllGroups, splitFAString, updatePresignedURL, uploadImage, useAutoFetcher, useFrameworkGroups, useItems, useItemsList, useModels, useProfanityStore, useSettings, useVehicles };
1374
- //# sourceMappingURL=chunk-MYNNCLMA.js.map
1375
- //# sourceMappingURL=chunk-MYNNCLMA.js.map
1656
+ //# sourceMappingURL=chunk-4QSXUENK.js.map
1657
+ //# sourceMappingURL=chunk-4QSXUENK.js.map