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.
- package/dist/{chunk-ZPFW7C2A.js → chunk-3QPPR6OY.js} +3 -3
- package/dist/{chunk-ZPFW7C2A.js.map → chunk-3QPPR6OY.js.map} +1 -1
- package/dist/{chunk-MYNNCLMA.js → chunk-4QSXUENK.js} +325 -43
- package/dist/chunk-4QSXUENK.js.map +1 -0
- package/dist/{chunk-YA2PXBP6.cjs → chunk-5XODUPUE.cjs} +325 -43
- package/dist/chunk-5XODUPUE.cjs.map +1 -0
- package/dist/{chunk-3T2CCW5E.cjs → chunk-6CNT35D6.cjs} +9 -9
- package/dist/{chunk-3T2CCW5E.cjs.map → chunk-6CNT35D6.cjs.map} +1 -1
- package/dist/{chunk-KGLO3ZAS.js → chunk-ABBZHNLP.js} +3 -3
- package/dist/{chunk-KGLO3ZAS.js.map → chunk-ABBZHNLP.js.map} +1 -1
- package/dist/{chunk-QOQQ3ERZ.cjs → chunk-EOSHBZQK.cjs} +17 -17
- package/dist/{chunk-QOQQ3ERZ.cjs.map → chunk-EOSHBZQK.cjs.map} +1 -1
- package/dist/{chunk-Z7N5AQJW.js → chunk-GFODSZSP.js} +3 -3
- package/dist/{chunk-Z7N5AQJW.js.map → chunk-GFODSZSP.js.map} +1 -1
- package/dist/{chunk-K3GDU6EY.cjs → chunk-HG2J72NC.cjs} +167 -167
- package/dist/{chunk-K3GDU6EY.cjs.map → chunk-HG2J72NC.cjs.map} +1 -1
- package/dist/{chunk-E2SFEBBB.cjs → chunk-HOVRS2Z6.cjs} +4 -4
- package/dist/{chunk-E2SFEBBB.cjs.map → chunk-HOVRS2Z6.cjs.map} +1 -1
- package/dist/{chunk-VKYONY7E.cjs → chunk-MY3Z7LPB.cjs} +5 -5
- package/dist/{chunk-VKYONY7E.cjs.map → chunk-MY3Z7LPB.cjs.map} +1 -1
- package/dist/{chunk-HAB6H274.js → chunk-UGDMOWVM.js} +6 -6
- package/dist/{chunk-HAB6H274.js.map → chunk-UGDMOWVM.js.map} +1 -1
- package/dist/{chunk-NVMOGS7Y.js → chunk-WUALULEH.js} +4 -4
- package/dist/{chunk-NVMOGS7Y.js.map → chunk-WUALULEH.js.map} +1 -1
- package/dist/components/index.cjs +76 -76
- package/dist/components/index.js +5 -5
- package/dist/hooks/index.cjs +22 -22
- package/dist/hooks/index.js +4 -4
- package/dist/index.cjs +147 -147
- package/dist/index.js +6 -6
- package/dist/providers/index.cjs +5 -5
- package/dist/providers/index.js +3 -3
- package/dist/utils/index.cjs +48 -48
- package/dist/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-MYNNCLMA.js.map +0 -1
- package/dist/chunk-YA2PXBP6.cjs.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
3
|
+
var chunkHOVRS2Z6_cjs = require('./chunk-HOVRS2Z6.cjs');
|
|
4
|
+
var chunkEOSHBZQK_cjs = require('./chunk-EOSHBZQK.cjs');
|
|
5
|
+
var chunk6CNT35D6_cjs = require('./chunk-6CNT35D6.cjs');
|
|
6
|
+
var chunk5XODUPUE_cjs = require('./chunk-5XODUPUE.cjs');
|
|
7
7
|
var core = require('@mantine/core');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
@@ -1117,14 +1117,14 @@ function BorderedIcon(props) {
|
|
|
1117
1117
|
aspectRatio: "1/1",
|
|
1118
1118
|
borderRadius: theme.radius.xs,
|
|
1119
1119
|
// border: `2px solid var(--mantine-primary-color-9)`,
|
|
1120
|
-
outline: `0.2vh solid ${
|
|
1121
|
-
boxShadow: `inset 0 0 2vh ${
|
|
1120
|
+
outline: `0.2vh solid ${chunk5XODUPUE_cjs.colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][9], 0.8)}`,
|
|
1121
|
+
boxShadow: `inset 0 0 2vh ${chunk5XODUPUE_cjs.colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][7], 0.5)}`
|
|
1122
1122
|
},
|
|
1123
1123
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1124
1124
|
reactFontawesome.FontAwesomeIcon,
|
|
1125
1125
|
{
|
|
1126
1126
|
icon: props.icon,
|
|
1127
|
-
color:
|
|
1127
|
+
color: chunk5XODUPUE_cjs.colorWithAlpha(props.color ? props.color : theme.colors[theme.primaryColor][theme.primaryShade], props.hovered ? 0.9 : 0.9),
|
|
1128
1128
|
style: {
|
|
1129
1129
|
fontSize: props.fontSize ? props.fontSize : "2.5vh"
|
|
1130
1130
|
}
|
|
@@ -1514,7 +1514,7 @@ function InputContainer(props) {
|
|
|
1514
1514
|
}
|
|
1515
1515
|
function SegmentedControl(props) {
|
|
1516
1516
|
const theme = core.useMantineTheme();
|
|
1517
|
-
const play =
|
|
1517
|
+
const play = chunkHOVRS2Z6_cjs.useAudio((state) => state.play);
|
|
1518
1518
|
const handleChange = (newValue) => {
|
|
1519
1519
|
if (props.sounds) play("click");
|
|
1520
1520
|
if (props.onChange) {
|
|
@@ -1580,7 +1580,7 @@ function Segment(props) {
|
|
|
1580
1580
|
direction: "column",
|
|
1581
1581
|
align: "center",
|
|
1582
1582
|
h: "100%",
|
|
1583
|
-
bg: props.selected ? props.color ?
|
|
1583
|
+
bg: props.selected ? props.color ? chunk5XODUPUE_cjs.colorWithAlpha(props.color, 0.2) : chunk5XODUPUE_cjs.colorWithAlpha(theme.colors[theme.primaryColor][theme.primaryShade], 0.2) : "transparent",
|
|
1584
1584
|
pos: "relative",
|
|
1585
1585
|
style: {
|
|
1586
1586
|
// position: "relative",
|
|
@@ -1799,7 +1799,7 @@ function getSizePreset(size, themeMdFontSize) {
|
|
|
1799
1799
|
}
|
|
1800
1800
|
}
|
|
1801
1801
|
function Title(props) {
|
|
1802
|
-
const game =
|
|
1802
|
+
const game = chunk5XODUPUE_cjs.useSettings((state) => state.game);
|
|
1803
1803
|
const theme = core.useMantineTheme();
|
|
1804
1804
|
const preset = getSizePreset(props.size ?? "md", theme.fontSizes.md);
|
|
1805
1805
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1813,7 +1813,7 @@ function Title(props) {
|
|
|
1813
1813
|
pb: !props.p ? preset.bottomPad : props.p,
|
|
1814
1814
|
style: {
|
|
1815
1815
|
userSelect: "none",
|
|
1816
|
-
borderBottom: props.removeBorder ? "none" : `0.3vh solid ${props.borderColor ||
|
|
1816
|
+
borderBottom: props.removeBorder ? "none" : `0.3vh solid ${props.borderColor || chunk5XODUPUE_cjs.colorWithAlpha(theme.colors[theme.primaryColor][9], 0.5)}`
|
|
1817
1817
|
},
|
|
1818
1818
|
children: /* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { align: "center", justify: "center", children: [
|
|
1819
1819
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { align: "center", gap: preset.innerGap, pr: "xs", children: [
|
|
@@ -1969,7 +1969,7 @@ function LevelPanel(props) {
|
|
|
1969
1969
|
size: 190,
|
|
1970
1970
|
roundCaps: true,
|
|
1971
1971
|
thickness: 10,
|
|
1972
|
-
sections: [{ value: props.progressToLevel, color:
|
|
1972
|
+
sections: [{ value: props.progressToLevel, color: chunk5XODUPUE_cjs.colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade], 0.9) }],
|
|
1973
1973
|
label: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1974
1974
|
core.Flex,
|
|
1975
1975
|
{
|
|
@@ -1980,10 +1980,10 @@ function LevelPanel(props) {
|
|
|
1980
1980
|
core.Text,
|
|
1981
1981
|
{
|
|
1982
1982
|
size: "6vh",
|
|
1983
|
-
c:
|
|
1983
|
+
c: chunk5XODUPUE_cjs.colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade], 0.9),
|
|
1984
1984
|
style: {
|
|
1985
1985
|
fontFamily: "Akrobat Black",
|
|
1986
|
-
textShadow: `0 0 10px ${
|
|
1986
|
+
textShadow: `0 0 10px ${chunk5XODUPUE_cjs.colorWithAlpha(props.color || theme.colors[theme.primaryColor][theme.primaryShade], 0.7)}`
|
|
1987
1987
|
},
|
|
1988
1988
|
children: props.level
|
|
1989
1989
|
}
|
|
@@ -2001,7 +2001,7 @@ function LevelPanel(props) {
|
|
|
2001
2001
|
letterSpacing: "0.05em",
|
|
2002
2002
|
textTransform: "uppercase"
|
|
2003
2003
|
},
|
|
2004
|
-
children: props.text ||
|
|
2004
|
+
children: props.text || chunk5XODUPUE_cjs.locale("Level")
|
|
2005
2005
|
}
|
|
2006
2006
|
),
|
|
2007
2007
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2014,7 +2014,7 @@ function LevelPanel(props) {
|
|
|
2014
2014
|
"/",
|
|
2015
2015
|
props.nextLevelXP,
|
|
2016
2016
|
" ",
|
|
2017
|
-
|
|
2017
|
+
chunk5XODUPUE_cjs.locale("EXP")
|
|
2018
2018
|
]
|
|
2019
2019
|
}
|
|
2020
2020
|
)
|
|
@@ -2524,7 +2524,7 @@ var useMissingItemsAudit = zustand.create((set, get) => ({
|
|
|
2524
2524
|
if (get().inFlight) return;
|
|
2525
2525
|
set({ inFlight: true });
|
|
2526
2526
|
try {
|
|
2527
|
-
const res = await
|
|
2527
|
+
const res = await chunk5XODUPUE_cjs.fetchNui("GET_MISSING_ITEMS", void 0, {
|
|
2528
2528
|
success: true,
|
|
2529
2529
|
data: { missing: [], snippets: { ox: "", qb: "", esx: "" } }
|
|
2530
2530
|
});
|
|
@@ -2798,7 +2798,7 @@ function ConfigJsonModal({
|
|
|
2798
2798
|
}) {
|
|
2799
2799
|
const theme = core.useMantineTheme();
|
|
2800
2800
|
const color = theme.colors[theme.primaryColor][5];
|
|
2801
|
-
const form =
|
|
2801
|
+
const form = chunkHOVRS2Z6_cjs.useForm();
|
|
2802
2802
|
const [json, setJson] = react.useState(() => JSON.stringify(form.values, null, 2));
|
|
2803
2803
|
const [error, setError] = react.useState(null);
|
|
2804
2804
|
const handleSave = () => {
|
|
@@ -2829,7 +2829,7 @@ function ConfigJsonModal({
|
|
|
2829
2829
|
setError(e.message);
|
|
2830
2830
|
}
|
|
2831
2831
|
};
|
|
2832
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { title:
|
|
2832
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { title: chunk5XODUPUE_cjs.locale("cfgpanel_json_title"), icon: lucideReact.Code2, iconColor: color, onClose, width: "60vh", maxHeight: "80vh", zIndex: 200, children: [
|
|
2833
2833
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Box, { flex: 1, p: "0.8vh", style: { overflowY: "auto" }, children: [
|
|
2834
2834
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2835
2835
|
core.JsonInput,
|
|
@@ -2857,7 +2857,7 @@ function ConfigJsonModal({
|
|
|
2857
2857
|
style: { background: "transparent", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: "pointer", display: "flex", alignItems: "center", gap: theme.spacing.xxs },
|
|
2858
2858
|
children: [
|
|
2859
2859
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { color: "rgba(255,255,255,0.4)" }),
|
|
2860
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: "rgba(255,255,255,0.4)", children:
|
|
2860
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: "rgba(255,255,255,0.4)", children: chunk5XODUPUE_cjs.locale("cfgpanel_cancel") })
|
|
2861
2861
|
]
|
|
2862
2862
|
}
|
|
2863
2863
|
),
|
|
@@ -2870,7 +2870,7 @@ function ConfigJsonModal({
|
|
|
2870
2870
|
style: { background: core.alpha(color, 0.14), border: `0.1vh solid ${core.alpha(color, 0.4)}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: "pointer", display: "flex", alignItems: "center", gap: theme.spacing.xxs },
|
|
2871
2871
|
children: [
|
|
2872
2872
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { color }),
|
|
2873
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: color, children:
|
|
2873
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: color, children: chunk5XODUPUE_cjs.locale("cfgpanel_apply") })
|
|
2874
2874
|
]
|
|
2875
2875
|
}
|
|
2876
2876
|
)
|
|
@@ -2974,7 +2974,7 @@ function HistoryTableHeader() {
|
|
|
2974
2974
|
function ConfigHistoryModal({
|
|
2975
2975
|
onClose
|
|
2976
2976
|
}) {
|
|
2977
|
-
const { getHistory } =
|
|
2977
|
+
const { getHistory } = chunk6CNT35D6_cjs.getScriptConfigInstance();
|
|
2978
2978
|
const theme = core.useMantineTheme();
|
|
2979
2979
|
const color = theme.colors[theme.primaryColor][5];
|
|
2980
2980
|
const [queryInput, setQueryInput] = react.useState("");
|
|
@@ -3011,7 +3011,7 @@ function ConfigHistoryModal({
|
|
|
3011
3011
|
historyQuery.fetchNextPage();
|
|
3012
3012
|
}
|
|
3013
3013
|
};
|
|
3014
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { title:
|
|
3014
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Modal, { title: chunk5XODUPUE_cjs.locale("cfgpanel_history_title"), icon: lucideReact.History, iconColor: color, onClose, width: "88vh", maxHeight: "82vh", zIndex: 260, children: [
|
|
3015
3015
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { direction: "column", style: { flex: 1, minHeight: 0 }, children: [
|
|
3016
3016
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { gap: "xs", p: "sm", style: { borderBottom: `0.1vh solid ${core.alpha(theme.colors.dark[7], 0.8)}` }, children: [
|
|
3017
3017
|
/* @__PURE__ */ jsxRuntime.jsx(core.TextInput, { leftSection: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { size: "1.4vh" }), placeholder: "Search path/admin/value", value: queryInput, onChange: (e) => setQueryInput(e.currentTarget.value), size: "xs", style: { flex: 1 } }),
|
|
@@ -3054,7 +3054,7 @@ function ConfigHistoryModal({
|
|
|
3054
3054
|
style: { background: "transparent", border: `0.1vh solid ${theme.colors.dark[6]}`, borderRadius: theme.radius.xs, padding: `${theme.spacing.xxs} ${theme.spacing.xs}`, cursor: "pointer", display: "flex", alignItems: "center", gap: theme.spacing.xxs },
|
|
3055
3055
|
children: [
|
|
3056
3056
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { color: "rgba(255,255,255,0.4)", size: "1.5vh" }),
|
|
3057
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: "rgba(255,255,255,0.4)", children:
|
|
3057
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xs", tt: "uppercase", lts: "0.05em", c: "rgba(255,255,255,0.4)", children: chunk5XODUPUE_cjs.locale("cfgpanel_close") })
|
|
3058
3058
|
]
|
|
3059
3059
|
}
|
|
3060
3060
|
) })
|
|
@@ -3074,12 +3074,12 @@ function ConfigPanelInner({
|
|
|
3074
3074
|
height,
|
|
3075
3075
|
suppressMissingItemsBanner
|
|
3076
3076
|
}) {
|
|
3077
|
-
const { updateConfig, resetConfig, getHistory } =
|
|
3078
|
-
const form =
|
|
3077
|
+
const { updateConfig, resetConfig, getHistory } = chunk6CNT35D6_cjs.getScriptConfigInstance();
|
|
3078
|
+
const form = chunkHOVRS2Z6_cjs.useForm();
|
|
3079
3079
|
const theme = core.useMantineTheme();
|
|
3080
3080
|
const color = theme.colors[theme.primaryColor][5];
|
|
3081
|
-
const version =
|
|
3082
|
-
const [activeTab, setActiveTab] =
|
|
3081
|
+
const version = chunk5XODUPUE_cjs.useSettings((s) => s.resourceVersion);
|
|
3082
|
+
const [activeTab, setActiveTab] = chunkHOVRS2Z6_cjs.useAdminState("__dirkConfigPanel:activeTab", navItems[0]?.id ?? "");
|
|
3083
3083
|
const firstMountRef = react.useRef(true);
|
|
3084
3084
|
const [jsonOpen, setJsonOpen] = react.useState(false);
|
|
3085
3085
|
const [historyOpen, setHistoryOpen] = react.useState(false);
|
|
@@ -3087,7 +3087,7 @@ function ConfigPanelInner({
|
|
|
3087
3087
|
const [pendingAction, setPendingAction] = react.useState(null);
|
|
3088
3088
|
const changedCount = form.changedCount ?? 0;
|
|
3089
3089
|
const isDirty = changedCount > 0;
|
|
3090
|
-
const goBack = () =>
|
|
3090
|
+
const goBack = () => chunk5XODUPUE_cjs.fetchNui("CONFIG_PANEL_BACK");
|
|
3091
3091
|
const handleBack = () => {
|
|
3092
3092
|
if (isDirty) {
|
|
3093
3093
|
setPendingAction("back");
|
|
@@ -3114,20 +3114,20 @@ function ConfigPanelInner({
|
|
|
3114
3114
|
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: resetOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3115
3115
|
ConfirmModal,
|
|
3116
3116
|
{
|
|
3117
|
-
title:
|
|
3118
|
-
description:
|
|
3119
|
-
confirmLabel:
|
|
3117
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_reset_title"),
|
|
3118
|
+
description: chunk5XODUPUE_cjs.locale("cfgpanel_reset_desc"),
|
|
3119
|
+
confirmLabel: chunk5XODUPUE_cjs.locale("cfgpanel_reset_confirm"),
|
|
3120
3120
|
confirmText: resetConfirmText,
|
|
3121
3121
|
onConfirm: async () => {
|
|
3122
3122
|
setResetOpen(false);
|
|
3123
3123
|
const result = await resetConfig();
|
|
3124
3124
|
if (result?.success) {
|
|
3125
|
-
const { store } =
|
|
3125
|
+
const { store } = chunk6CNT35D6_cjs.getScriptConfigInstance();
|
|
3126
3126
|
form.reinitialize(cloneConfig(store.getState()));
|
|
3127
3127
|
notifications.notifications.show({
|
|
3128
3128
|
color: "green",
|
|
3129
|
-
title:
|
|
3130
|
-
message:
|
|
3129
|
+
title: chunk5XODUPUE_cjs.locale("ConfigResetSuccessTitle"),
|
|
3130
|
+
message: chunk5XODUPUE_cjs.locale("ConfigResetSuccessBody"),
|
|
3131
3131
|
autoClose: 3e3
|
|
3132
3132
|
});
|
|
3133
3133
|
return;
|
|
@@ -3136,8 +3136,8 @@ function ConfigPanelInner({
|
|
|
3136
3136
|
console.warn(`[ConfigPanel] config reset failed: ${err}`);
|
|
3137
3137
|
notifications.notifications.show({
|
|
3138
3138
|
color: "red",
|
|
3139
|
-
title:
|
|
3140
|
-
message:
|
|
3139
|
+
title: chunk5XODUPUE_cjs.locale("ConfigResetFailedTitle"),
|
|
3140
|
+
message: chunk5XODUPUE_cjs.locale("ConfigResetFailedBody", err),
|
|
3141
3141
|
autoClose: 6e3
|
|
3142
3142
|
});
|
|
3143
3143
|
},
|
|
@@ -3148,9 +3148,9 @@ function ConfigPanelInner({
|
|
|
3148
3148
|
/* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: pendingAction !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3149
3149
|
ConfirmModal,
|
|
3150
3150
|
{
|
|
3151
|
-
title:
|
|
3152
|
-
description: pendingAction === "back" ?
|
|
3153
|
-
confirmLabel: pendingAction === "back" ?
|
|
3151
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_discard_title"),
|
|
3152
|
+
description: pendingAction === "back" ? chunk5XODUPUE_cjs.locale("cfgpanel_discard_desc_back") : chunk5XODUPUE_cjs.locale("cfgpanel_discard_desc_close"),
|
|
3153
|
+
confirmLabel: pendingAction === "back" ? chunk5XODUPUE_cjs.locale("cfgpanel_discard_confirm_back") : chunk5XODUPUE_cjs.locale("cfgpanel_discard_confirm_close"),
|
|
3154
3154
|
onConfirm: () => {
|
|
3155
3155
|
const action = pendingAction;
|
|
3156
3156
|
setPendingAction(null);
|
|
@@ -3188,7 +3188,7 @@ function ConfigPanelInner({
|
|
|
3188
3188
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3189
3189
|
framerMotion.motion.button,
|
|
3190
3190
|
{
|
|
3191
|
-
title:
|
|
3191
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_back_title"),
|
|
3192
3192
|
onClick: handleBack,
|
|
3193
3193
|
whileHover: { background: core.alpha(color, 0.16), borderColor: core.alpha(color, 0.45) },
|
|
3194
3194
|
whileTap: { scale: 0.95 },
|
|
@@ -3216,7 +3216,7 @@ function ConfigPanelInner({
|
|
|
3216
3216
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3217
3217
|
framerMotion.motion.button,
|
|
3218
3218
|
{
|
|
3219
|
-
title:
|
|
3219
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_undo"),
|
|
3220
3220
|
onClick: () => form.canBack && form.back(),
|
|
3221
3221
|
disabled: !form.canBack,
|
|
3222
3222
|
whileHover: form.canBack ? { background: "rgba(255,255,255,0.07)" } : void 0,
|
|
@@ -3228,7 +3228,7 @@ function ConfigPanelInner({
|
|
|
3228
3228
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3229
3229
|
framerMotion.motion.button,
|
|
3230
3230
|
{
|
|
3231
|
-
title:
|
|
3231
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_redo"),
|
|
3232
3232
|
onClick: () => form.canForward && form.forward(),
|
|
3233
3233
|
disabled: !form.canForward,
|
|
3234
3234
|
whileHover: form.canForward ? { background: "rgba(255,255,255,0.07)" } : void 0,
|
|
@@ -3240,7 +3240,7 @@ function ConfigPanelInner({
|
|
|
3240
3240
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3241
3241
|
framerMotion.motion.button,
|
|
3242
3242
|
{
|
|
3243
|
-
title: isSaving ?
|
|
3243
|
+
title: isSaving ? chunk5XODUPUE_cjs.locale("cfgpanel_saving") : isDirty ? `${chunk5XODUPUE_cjs.locale("cfgpanel_save")} (${changedCount})` : chunk5XODUPUE_cjs.locale("cfgpanel_save"),
|
|
3244
3244
|
onClick: () => isDirty && !isSaving && form.submit(),
|
|
3245
3245
|
disabled: !isDirty || isSaving,
|
|
3246
3246
|
whileHover: isDirty && !isSaving ? { background: core.alpha(color, 0.25), borderColor: core.alpha(color, 0.5) } : void 0,
|
|
@@ -3252,7 +3252,7 @@ function ConfigPanelInner({
|
|
|
3252
3252
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3253
3253
|
framerMotion.motion.button,
|
|
3254
3254
|
{
|
|
3255
|
-
title:
|
|
3255
|
+
title: chunk5XODUPUE_cjs.locale("cfgpanel_history"),
|
|
3256
3256
|
onClick: () => setHistoryOpen(true),
|
|
3257
3257
|
whileHover: { background: core.alpha("#22d3ee", 0.16), borderColor: core.alpha("#22d3ee", 0.5) },
|
|
3258
3258
|
whileTap: { scale: 0.97 },
|
|
@@ -3273,7 +3273,7 @@ function ConfigPanelInner({
|
|
|
3273
3273
|
style: { width: "100%", background: "transparent", border: `0.1vh solid ${isDirty ? core.alpha("#f97316", 0.35) : core.alpha(theme.colors.dark[5], 0.3)}`, borderRadius: theme.radius.xs, padding: "0.65vh 0.8vh", cursor: isDirty ? "pointer" : "default", display: "flex", alignItems: "center", gap: "0.55vh", opacity: isDirty ? 1 : 0.35, transition: "opacity 0.2s" },
|
|
3274
3274
|
children: [
|
|
3275
3275
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { color: isDirty ? "#f97316" : "rgba(255,255,255,0.35)", size: "1.6vh" }),
|
|
3276
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: isDirty ? "#f97316" : "rgba(255,255,255,0.35)", children:
|
|
3276
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: isDirty ? "#f97316" : "rgba(255,255,255,0.35)", children: chunk5XODUPUE_cjs.locale("cfgpanel_discard") })
|
|
3277
3277
|
]
|
|
3278
3278
|
}
|
|
3279
3279
|
),
|
|
@@ -3287,7 +3287,7 @@ function ConfigPanelInner({
|
|
|
3287
3287
|
style: { width: "100%", background: core.alpha(color, 0.07), border: `0.1vh solid ${core.alpha(color, 0.28)}`, borderRadius: theme.radius.xs, padding: "0.65vh 0.8vh", cursor: "pointer", display: "flex", alignItems: "center", gap: "0.55vh" },
|
|
3288
3288
|
children: [
|
|
3289
3289
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Code2, { color, size: "1.6vh" }),
|
|
3290
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children:
|
|
3290
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children: chunk5XODUPUE_cjs.locale("cfgpanel_manual_edit") })
|
|
3291
3291
|
]
|
|
3292
3292
|
}
|
|
3293
3293
|
),
|
|
@@ -3300,12 +3300,12 @@ function ConfigPanelInner({
|
|
|
3300
3300
|
style: { width: "100%", background: core.alpha("#ef4444", 0.07), border: `0.1vh solid ${core.alpha("#ef4444", 0.25)}`, borderRadius: theme.radius.xs, padding: "0.65vh 0.8vh", cursor: "pointer", display: "flex", alignItems: "center", gap: "0.55vh" },
|
|
3301
3301
|
children: [
|
|
3302
3302
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { color: "#ef4444", size: "1.6vh" }),
|
|
3303
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: "#ef4444", children:
|
|
3303
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: "#ef4444", children: chunk5XODUPUE_cjs.locale("cfgpanel_reset_defaults") })
|
|
3304
3304
|
]
|
|
3305
3305
|
}
|
|
3306
3306
|
),
|
|
3307
3307
|
version && /* @__PURE__ */ jsxRuntime.jsxs(core.Text, { size: "0.95vh", c: "dimmed", ta: "center", style: { letterSpacing: "0.04em", opacity: 0.8 }, children: [
|
|
3308
|
-
|
|
3308
|
+
chunk5XODUPUE_cjs.locale("cfgpanel_version"),
|
|
3309
3309
|
" ",
|
|
3310
3310
|
version
|
|
3311
3311
|
] })
|
|
@@ -3335,8 +3335,8 @@ function cloneConfig(value) {
|
|
|
3335
3335
|
return JSON.parse(JSON.stringify(value));
|
|
3336
3336
|
}
|
|
3337
3337
|
function ServerOnlyFetcher() {
|
|
3338
|
-
const { fetchServerOnly } =
|
|
3339
|
-
const { reinitialize } =
|
|
3338
|
+
const { fetchServerOnly } = chunk6CNT35D6_cjs.getScriptConfigInstance();
|
|
3339
|
+
const { reinitialize } = chunkHOVRS2Z6_cjs.useFormActions();
|
|
3340
3340
|
react.useEffect(() => {
|
|
3341
3341
|
let cancelled = false;
|
|
3342
3342
|
fetchServerOnly().then((full) => {
|
|
@@ -3349,14 +3349,14 @@ function ServerOnlyFetcher() {
|
|
|
3349
3349
|
}, []);
|
|
3350
3350
|
return null;
|
|
3351
3351
|
}
|
|
3352
|
-
var defaultOnClose = () =>
|
|
3352
|
+
var defaultOnClose = () => chunk5XODUPUE_cjs.fetchNui("CLOSE_ADMIN_SECTION");
|
|
3353
3353
|
function ConfigPanel(props) {
|
|
3354
3354
|
const { open, onClose = defaultOnClose } = props;
|
|
3355
|
-
const { store, updateConfig } =
|
|
3355
|
+
const { store, updateConfig } = chunk6CNT35D6_cjs.getScriptConfigInstance();
|
|
3356
3356
|
const [isSaving, setIsSaving] = react.useState(false);
|
|
3357
3357
|
if (!open) return null;
|
|
3358
3358
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3359
|
-
|
|
3359
|
+
chunkHOVRS2Z6_cjs.FormProvider,
|
|
3360
3360
|
{
|
|
3361
3361
|
initialValues: cloneConfig(store.getState()),
|
|
3362
3362
|
onSubmit: async (form) => {
|
|
@@ -3366,12 +3366,12 @@ function ConfigPanel(props) {
|
|
|
3366
3366
|
const result = await updateConfig(form.values, form.changedFields);
|
|
3367
3367
|
if (result?.success) {
|
|
3368
3368
|
form.reinitialize(cloneConfig(form.values));
|
|
3369
|
-
|
|
3369
|
+
chunkEOSHBZQK_cjs.dirkQueryClient.invalidateQueries({ queryKey: ["scriptConfigHistory"] });
|
|
3370
3370
|
useMissingItemsAudit.getState().refresh();
|
|
3371
3371
|
notifications.notifications.show({
|
|
3372
3372
|
color: "green",
|
|
3373
|
-
title:
|
|
3374
|
-
message:
|
|
3373
|
+
title: chunk5XODUPUE_cjs.locale("ConfigSaveSuccessTitle"),
|
|
3374
|
+
message: chunk5XODUPUE_cjs.locale("ConfigSaveSuccessBody"),
|
|
3375
3375
|
autoClose: 3e3
|
|
3376
3376
|
});
|
|
3377
3377
|
return;
|
|
@@ -3383,8 +3383,8 @@ function ConfigPanel(props) {
|
|
|
3383
3383
|
const bodyKey = err === "NoPermission" ? "ConfigSaveNoPermissionBody" : err === "VersionConflict" ? "ConfigSaveVersionConflictBody" : err === "NotReady" ? "ConfigSaveNotReadyBody" : "ConfigSaveFailedBody";
|
|
3384
3384
|
notifications.notifications.show({
|
|
3385
3385
|
color: "red",
|
|
3386
|
-
title:
|
|
3387
|
-
message:
|
|
3386
|
+
title: chunk5XODUPUE_cjs.locale(titleKey),
|
|
3387
|
+
message: chunk5XODUPUE_cjs.locale(bodyKey, err),
|
|
3388
3388
|
autoClose: 6e3
|
|
3389
3389
|
});
|
|
3390
3390
|
} finally {
|
|
@@ -3422,12 +3422,12 @@ function LazyImage({ src, style }) {
|
|
|
3422
3422
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, style: { width: "4vh", height: "4vh" }, children: visible && /* @__PURE__ */ jsxRuntime.jsx(core.Image, { src, fit: "contain", style }) });
|
|
3423
3423
|
}
|
|
3424
3424
|
function SelectItem(props) {
|
|
3425
|
-
const invItems =
|
|
3425
|
+
const invItems = chunk5XODUPUE_cjs.useItems();
|
|
3426
3426
|
const [search, setSearch] = react.useState("");
|
|
3427
3427
|
const isMissing = !!props.value && !invItems[props.value];
|
|
3428
3428
|
const formattedItems = react.useMemo(() => {
|
|
3429
3429
|
const seen = /* @__PURE__ */ new Set();
|
|
3430
|
-
const list =
|
|
3430
|
+
const list = chunk5XODUPUE_cjs.useItemsList(props.excludeItemNames ?? []).filter((item) => {
|
|
3431
3431
|
if (seen.has(item.name)) return false;
|
|
3432
3432
|
seen.add(item.name);
|
|
3433
3433
|
return true;
|
|
@@ -3438,7 +3438,7 @@ function SelectItem(props) {
|
|
|
3438
3438
|
if (props.allowCustom) {
|
|
3439
3439
|
const q = search.trim();
|
|
3440
3440
|
if (q && q !== props.value && !list.some((i) => i.value.toLowerCase() === q.toLowerCase())) {
|
|
3441
|
-
list.unshift({ value: q, label: `${
|
|
3441
|
+
list.unshift({ value: q, label: `${chunk5XODUPUE_cjs.locale("UseCustomItem")}: ${q}`, image: "" });
|
|
3442
3442
|
}
|
|
3443
3443
|
}
|
|
3444
3444
|
return list;
|
|
@@ -3447,7 +3447,7 @@ function SelectItem(props) {
|
|
|
3447
3447
|
core.Select,
|
|
3448
3448
|
{
|
|
3449
3449
|
maxDropdownHeight: "30vh",
|
|
3450
|
-
label:
|
|
3450
|
+
label: chunk5XODUPUE_cjs.locale(props.label),
|
|
3451
3451
|
size: "xs",
|
|
3452
3452
|
flex: 1,
|
|
3453
3453
|
style: props.style,
|
|
@@ -3472,7 +3472,7 @@ function SelectItem(props) {
|
|
|
3472
3472
|
style: { aspectRatio: "1 / 1" }
|
|
3473
3473
|
}
|
|
3474
3474
|
) : null,
|
|
3475
|
-
nothingFoundMessage:
|
|
3475
|
+
nothingFoundMessage: chunk5XODUPUE_cjs.locale("NoItemsFound"),
|
|
3476
3476
|
renderOption: (item) => {
|
|
3477
3477
|
const optionMissing = !invItems[item.option.value] && item.option.value === props.value;
|
|
3478
3478
|
if (optionMissing) {
|
|
@@ -3480,14 +3480,14 @@ function SelectItem(props) {
|
|
|
3480
3480
|
/* @__PURE__ */ jsxRuntime.jsx(core.Flex, { align: "center", justify: "center", w: "4vh", h: "4vh", style: { flexShrink: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { size: "2vh", color: MISSING_COLOR, strokeWidth: 2.5 }) }),
|
|
3481
3481
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { direction: "column", style: { flex: 1, minWidth: 0 }, children: [
|
|
3482
3482
|
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "sm", c: MISSING_COLOR, style: { fontFamily: "monospace" }, children: item.option.value }),
|
|
3483
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "xxs", c: "dimmed", children:
|
|
3483
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "xxs", c: "dimmed", children: chunk5XODUPUE_cjs.locale("ItemNotInInventory") })
|
|
3484
3484
|
] }),
|
|
3485
3485
|
/* @__PURE__ */ jsxRuntime.jsx("div", { style: {
|
|
3486
3486
|
background: "rgba(245,158,11,0.12)",
|
|
3487
3487
|
border: `0.1vh solid ${MISSING_COLOR}59`,
|
|
3488
3488
|
borderRadius: "0.3vh",
|
|
3489
3489
|
padding: "0.1vh 0.6vh"
|
|
3490
|
-
}, children: /* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "xxs", c: MISSING_COLOR, ff: "Akrobat Bold", tt: "uppercase", lts: "0.06em", children:
|
|
3490
|
+
}, children: /* @__PURE__ */ jsxRuntime.jsx(core.Text, { size: "xxs", c: MISSING_COLOR, ff: "Akrobat Bold", tt: "uppercase", lts: "0.06em", children: chunk5XODUPUE_cjs.locale("Missing") }) })
|
|
3491
3491
|
] });
|
|
3492
3492
|
}
|
|
3493
3493
|
return /* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { align: "center", gap: "xs", w: "100%", children: [
|
|
@@ -3527,7 +3527,7 @@ function PositionPicker(props) {
|
|
|
3527
3527
|
react.useEffect(() => {
|
|
3528
3528
|
return () => {
|
|
3529
3529
|
if (previewingRef.current) {
|
|
3530
|
-
|
|
3530
|
+
chunk5XODUPUE_cjs.fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {
|
|
3531
3531
|
});
|
|
3532
3532
|
}
|
|
3533
3533
|
};
|
|
@@ -3536,13 +3536,13 @@ function PositionPicker(props) {
|
|
|
3536
3536
|
const next = { ...value, [key]: val };
|
|
3537
3537
|
onChange(next);
|
|
3538
3538
|
if (previewingRef.current) {
|
|
3539
|
-
|
|
3539
|
+
chunk5XODUPUE_cjs.fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {
|
|
3540
3540
|
});
|
|
3541
3541
|
}
|
|
3542
3542
|
};
|
|
3543
3543
|
const grab = async () => {
|
|
3544
3544
|
try {
|
|
3545
|
-
const resp = await
|
|
3545
|
+
const resp = await chunk5XODUPUE_cjs.fetchNui(fetchEvent, { relativeTo }, value);
|
|
3546
3546
|
if (resp && typeof resp === "object") {
|
|
3547
3547
|
const next = {
|
|
3548
3548
|
x: Number(resp.x ?? 0),
|
|
@@ -3552,7 +3552,7 @@ function PositionPicker(props) {
|
|
|
3552
3552
|
};
|
|
3553
3553
|
onChange(next);
|
|
3554
3554
|
if (previewingRef.current) {
|
|
3555
|
-
|
|
3555
|
+
chunk5XODUPUE_cjs.fetchNui(previewEvent, { value: next, relativeTo }).catch(() => {
|
|
3556
3556
|
});
|
|
3557
3557
|
}
|
|
3558
3558
|
}
|
|
@@ -3564,17 +3564,17 @@ function PositionPicker(props) {
|
|
|
3564
3564
|
setPreviewing(nextState);
|
|
3565
3565
|
previewingRef.current = nextState;
|
|
3566
3566
|
if (nextState) {
|
|
3567
|
-
await
|
|
3567
|
+
await chunk5XODUPUE_cjs.fetchNui(previewEvent, { value, relativeTo }).catch(() => {
|
|
3568
3568
|
});
|
|
3569
3569
|
} else {
|
|
3570
|
-
await
|
|
3570
|
+
await chunk5XODUPUE_cjs.fetchNui(stopPreviewEvent, { relativeTo }).catch(() => {
|
|
3571
3571
|
});
|
|
3572
3572
|
}
|
|
3573
3573
|
};
|
|
3574
3574
|
const reset = () => {
|
|
3575
3575
|
onChange({ ...ZERO });
|
|
3576
3576
|
if (previewingRef.current) {
|
|
3577
|
-
|
|
3577
|
+
chunk5XODUPUE_cjs.fetchNui(previewEvent, { value: ZERO, relativeTo }).catch(() => {
|
|
3578
3578
|
});
|
|
3579
3579
|
}
|
|
3580
3580
|
};
|
|
@@ -3605,31 +3605,31 @@ function PositionPicker(props) {
|
|
|
3605
3605
|
tt: "uppercase",
|
|
3606
3606
|
lts: "0.05em",
|
|
3607
3607
|
c: "rgba(255,255,255,0.75)",
|
|
3608
|
-
children:
|
|
3608
|
+
children: chunk5XODUPUE_cjs.locale(label)
|
|
3609
3609
|
}
|
|
3610
3610
|
),
|
|
3611
3611
|
relativeTo && /* @__PURE__ */ jsxRuntime.jsxs(core.Text, { ff: "Akrobat Bold", size: "xxs", c: core.alpha(color, 0.5), lts: "0.05em", children: [
|
|
3612
3612
|
"\xB7 ",
|
|
3613
|
-
|
|
3613
|
+
chunk5XODUPUE_cjs.locale("RelativeTo"),
|
|
3614
3614
|
" ",
|
|
3615
3615
|
relativeTo
|
|
3616
3616
|
] })
|
|
3617
3617
|
] }),
|
|
3618
|
-
description && /* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", c: "dimmed", lh: 1.3, children:
|
|
3618
|
+
description && /* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", c: "dimmed", lh: 1.3, children: chunk5XODUPUE_cjs.locale(description) })
|
|
3619
3619
|
] }),
|
|
3620
3620
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { gap: "xxs", style: { flexShrink: 0 }, children: [
|
|
3621
|
-
/* @__PURE__ */ jsxRuntime.jsx(PickerButton, { tooltip:
|
|
3621
|
+
/* @__PURE__ */ jsxRuntime.jsx(PickerButton, { tooltip: chunk5XODUPUE_cjs.locale("GrabMyPosition"), onClick: grab, color, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Crosshair, { size: "1.4vh", color }) }),
|
|
3622
3622
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3623
3623
|
PickerButton,
|
|
3624
3624
|
{
|
|
3625
|
-
tooltip: previewing ?
|
|
3625
|
+
tooltip: previewing ? chunk5XODUPUE_cjs.locale("StopPreview") : chunk5XODUPUE_cjs.locale("PreviewInWorld"),
|
|
3626
3626
|
onClick: togglePreview,
|
|
3627
3627
|
color,
|
|
3628
3628
|
active: previewing,
|
|
3629
3629
|
children: previewing ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { size: "1.4vh", color }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { size: "1.4vh", color: core.alpha(color, 0.7) })
|
|
3630
3630
|
}
|
|
3631
3631
|
),
|
|
3632
|
-
/* @__PURE__ */ jsxRuntime.jsx(PickerButton, { tooltip:
|
|
3632
|
+
/* @__PURE__ */ jsxRuntime.jsx(PickerButton, { tooltip: chunk5XODUPUE_cjs.locale("Reset"), onClick: reset, color: "#ef4444", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { size: "1.4vh", color: "#ef4444" }) })
|
|
3633
3633
|
] })
|
|
3634
3634
|
] }),
|
|
3635
3635
|
/* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { gap: "xxs", children: [
|
|
@@ -3800,7 +3800,7 @@ function WorldPositionSetButton({
|
|
|
3800
3800
|
const color = theme.colors[theme.primaryColor][5];
|
|
3801
3801
|
const grab = async () => {
|
|
3802
3802
|
try {
|
|
3803
|
-
const resp = await
|
|
3803
|
+
const resp = await chunk5XODUPUE_cjs.fetchNui("GET_POSITION", {}, value);
|
|
3804
3804
|
if (!resp || typeof resp !== "object") return;
|
|
3805
3805
|
onChange({
|
|
3806
3806
|
x: Number(resp.x ?? 0),
|
|
@@ -3815,8 +3815,8 @@ function WorldPositionSetButton({
|
|
|
3815
3815
|
Vector4ActionButton,
|
|
3816
3816
|
{
|
|
3817
3817
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Crosshair, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
3818
|
-
label:
|
|
3819
|
-
tooltip:
|
|
3818
|
+
label: chunk5XODUPUE_cjs.locale("Set"),
|
|
3819
|
+
tooltip: chunk5XODUPUE_cjs.locale("SetWorldTooltip"),
|
|
3820
3820
|
onClick: grab,
|
|
3821
3821
|
color,
|
|
3822
3822
|
compact
|
|
@@ -3830,15 +3830,15 @@ function WorldPositionGotoButton({
|
|
|
3830
3830
|
const theme = core.useMantineTheme();
|
|
3831
3831
|
const color = theme.colors[theme.primaryColor][5];
|
|
3832
3832
|
const goto = () => {
|
|
3833
|
-
|
|
3833
|
+
chunk5XODUPUE_cjs.fetchNui("GOTO_POSITION", value).catch(() => {
|
|
3834
3834
|
});
|
|
3835
3835
|
};
|
|
3836
3836
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3837
3837
|
Vector4ActionButton,
|
|
3838
3838
|
{
|
|
3839
3839
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
3840
|
-
label:
|
|
3841
|
-
tooltip:
|
|
3840
|
+
label: chunk5XODUPUE_cjs.locale("Goto"),
|
|
3841
|
+
tooltip: chunk5XODUPUE_cjs.locale("GotoWorldTooltip"),
|
|
3842
3842
|
onClick: goto,
|
|
3843
3843
|
color,
|
|
3844
3844
|
compact
|
|
@@ -3854,8 +3854,8 @@ function Vector4DeleteButton({
|
|
|
3854
3854
|
Vector4ActionButton,
|
|
3855
3855
|
{
|
|
3856
3856
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Trash2, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
3857
|
-
label:
|
|
3858
|
-
tooltip:
|
|
3857
|
+
label: chunk5XODUPUE_cjs.locale("Delete"),
|
|
3858
|
+
tooltip: chunk5XODUPUE_cjs.locale("Delete"),
|
|
3859
3859
|
onClick,
|
|
3860
3860
|
color,
|
|
3861
3861
|
compact
|
|
@@ -3879,25 +3879,25 @@ function filterByType(jobs, gangs, type) {
|
|
|
3879
3879
|
}
|
|
3880
3880
|
function GroupName(props) {
|
|
3881
3881
|
const ctx = react.useContext(GroupSelectContext);
|
|
3882
|
-
const jobs =
|
|
3883
|
-
const gangs =
|
|
3882
|
+
const jobs = chunk5XODUPUE_cjs.useFrameworkGroups((s) => s.jobs);
|
|
3883
|
+
const gangs = chunk5XODUPUE_cjs.useFrameworkGroups((s) => s.gangs);
|
|
3884
3884
|
react.useEffect(() => {
|
|
3885
|
-
|
|
3885
|
+
chunk5XODUPUE_cjs.ensureFrameworkGroups();
|
|
3886
3886
|
}, []);
|
|
3887
3887
|
const inCompound = ctx !== null;
|
|
3888
3888
|
const currentValue = inCompound ? ctx.value.name : props.value;
|
|
3889
3889
|
const filterType = inCompound ? ctx.type : props.type;
|
|
3890
3890
|
const list = filterByType(jobs, gangs, filterType);
|
|
3891
3891
|
const data = filterType === void 0 ? [
|
|
3892
|
-
{ group:
|
|
3893
|
-
{ group:
|
|
3892
|
+
{ group: chunk5XODUPUE_cjs.locale("Jobs") || "Jobs", items: jobs.map((g) => ({ value: g.name, label: g.label })) },
|
|
3893
|
+
{ group: chunk5XODUPUE_cjs.locale("Gangs") || "Gangs", items: gangs.map((g) => ({ value: g.name, label: g.label })) }
|
|
3894
3894
|
] : list.map((g) => ({ value: g.name, label: g.label }));
|
|
3895
3895
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3896
3896
|
core.Select,
|
|
3897
3897
|
{
|
|
3898
3898
|
label: props.label,
|
|
3899
3899
|
description: props.description,
|
|
3900
|
-
placeholder: props.placeholder ?? (
|
|
3900
|
+
placeholder: props.placeholder ?? (chunk5XODUPUE_cjs.locale("SelectGroup") || "Select\u2026"),
|
|
3901
3901
|
size: props.size ?? "xs",
|
|
3902
3902
|
disabled: props.disabled,
|
|
3903
3903
|
style: props.style,
|
|
@@ -3921,10 +3921,10 @@ function GroupRank(props) {
|
|
|
3921
3921
|
if (ctx === null) {
|
|
3922
3922
|
throw new Error("<GroupRank> must be a child of <GroupSelect>");
|
|
3923
3923
|
}
|
|
3924
|
-
const jobs =
|
|
3925
|
-
const gangs =
|
|
3924
|
+
const jobs = chunk5XODUPUE_cjs.useFrameworkGroups((s) => s.jobs);
|
|
3925
|
+
const gangs = chunk5XODUPUE_cjs.useFrameworkGroups((s) => s.gangs);
|
|
3926
3926
|
react.useEffect(() => {
|
|
3927
|
-
|
|
3927
|
+
chunk5XODUPUE_cjs.ensureFrameworkGroups();
|
|
3928
3928
|
}, []);
|
|
3929
3929
|
const all = [...jobs, ...gangs];
|
|
3930
3930
|
const selectedGroup = all.find((g) => g.name === ctx.value.name) ?? null;
|
|
@@ -3938,7 +3938,7 @@ function GroupRank(props) {
|
|
|
3938
3938
|
{
|
|
3939
3939
|
label: props.label,
|
|
3940
3940
|
description: props.description,
|
|
3941
|
-
placeholder: props.placeholder ?? (
|
|
3941
|
+
placeholder: props.placeholder ?? (chunk5XODUPUE_cjs.locale("SelectGrade") || "Select grade\u2026"),
|
|
3942
3942
|
size: props.size ?? "xs",
|
|
3943
3943
|
style: props.style,
|
|
3944
3944
|
data,
|
|
@@ -3976,10 +3976,10 @@ function Category({ label = "Primary" }) {
|
|
|
3976
3976
|
size: "xs",
|
|
3977
3977
|
style: { flex: 1 },
|
|
3978
3978
|
value: value._type,
|
|
3979
|
-
data: [...
|
|
3979
|
+
data: [...chunk5XODUPUE_cjs.INPUT_MAPPER_PRIMARY_OPTIONS],
|
|
3980
3980
|
onChange: (nextType) => {
|
|
3981
3981
|
if (!nextType) return;
|
|
3982
|
-
const keyOptions =
|
|
3982
|
+
const keyOptions = chunk5XODUPUE_cjs.INPUT_MAPPER_KEYS_BY_PRIMARY[nextType] ?? [];
|
|
3983
3983
|
const hasCurrentKey = keyOptions.includes(value._key);
|
|
3984
3984
|
const nextKey = hasCurrentKey ? value._key : keyOptions[0] ?? value._key;
|
|
3985
3985
|
onChange({
|
|
@@ -3995,7 +3995,7 @@ function Category({ label = "Primary" }) {
|
|
|
3995
3995
|
}
|
|
3996
3996
|
function Key({ label = "Key" }) {
|
|
3997
3997
|
const { value, onChange } = useKeyBindContext();
|
|
3998
|
-
const keyOptions =
|
|
3998
|
+
const keyOptions = chunk5XODUPUE_cjs.INPUT_MAPPER_KEYS_BY_PRIMARY[value._type] ?? [];
|
|
3999
3999
|
if (keyOptions.length === 0) {
|
|
4000
4000
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4001
4001
|
core.TextInput,
|
|
@@ -4033,13 +4033,13 @@ var FiveMKeyBindInput = Object.assign(Root, {
|
|
|
4033
4033
|
function buildGroupedData(extraIds = []) {
|
|
4034
4034
|
const groups = /* @__PURE__ */ new Map();
|
|
4035
4035
|
const seen = /* @__PURE__ */ new Set();
|
|
4036
|
-
for (const c of
|
|
4036
|
+
for (const c of chunk5XODUPUE_cjs.GTA_CONTROLS) {
|
|
4037
4037
|
if (seen.has(c.id)) continue;
|
|
4038
4038
|
seen.add(c.id);
|
|
4039
4039
|
if (!groups.has(c.group)) groups.set(c.group, []);
|
|
4040
4040
|
groups.get(c.group).push(c);
|
|
4041
4041
|
}
|
|
4042
|
-
const data =
|
|
4042
|
+
const data = chunk5XODUPUE_cjs.GTA_CONTROL_GROUP_ORDER.flatMap((g) => {
|
|
4043
4043
|
const items = groups.get(g);
|
|
4044
4044
|
if (!items || items.length === 0) return [];
|
|
4045
4045
|
return [
|
|
@@ -4047,12 +4047,12 @@ function buildGroupedData(extraIds = []) {
|
|
|
4047
4047
|
group: g,
|
|
4048
4048
|
items: items.map((c) => ({
|
|
4049
4049
|
value: String(c.id),
|
|
4050
|
-
label:
|
|
4050
|
+
label: chunk5XODUPUE_cjs.formatGtaControl(c.id)
|
|
4051
4051
|
}))
|
|
4052
4052
|
}
|
|
4053
4053
|
];
|
|
4054
4054
|
});
|
|
4055
|
-
const knownIds = new Set(
|
|
4055
|
+
const knownIds = new Set(chunk5XODUPUE_cjs.GTA_CONTROLS.map((c) => c.id));
|
|
4056
4056
|
const customs = extraIds.filter((id) => !knownIds.has(id));
|
|
4057
4057
|
if (customs.length > 0) {
|
|
4058
4058
|
data.push({
|
|
@@ -4161,7 +4161,7 @@ function AsyncSaveButton({
|
|
|
4161
4161
|
function AdminPageTitle(props) {
|
|
4162
4162
|
return /* @__PURE__ */ jsxRuntime.jsxs(core.Flex, { align: "center", gap: "xs", children: [
|
|
4163
4163
|
/* @__PURE__ */ jsxRuntime.jsx(props.icon, { color: props.color }),
|
|
4164
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", tt: "uppercase", lts: "0.1em", size: "sm", c: "rgba(255,255,255,0.6)", children:
|
|
4164
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", tt: "uppercase", lts: "0.1em", size: "sm", c: "rgba(255,255,255,0.6)", children: chunk5XODUPUE_cjs.locale(props.title) })
|
|
4165
4165
|
] });
|
|
4166
4166
|
}
|
|
4167
4167
|
function SwitchPanel({
|
|
@@ -4261,7 +4261,7 @@ function TestBed({
|
|
|
4261
4261
|
const itemsRef = react.useRef(items);
|
|
4262
4262
|
itemsRef.current = items;
|
|
4263
4263
|
react.useEffect(() => {
|
|
4264
|
-
if (!
|
|
4264
|
+
if (!chunk5XODUPUE_cjs.isEnvBrowser() || disablePersistence) return;
|
|
4265
4265
|
const persisted = loadPersistedState(storageKey);
|
|
4266
4266
|
itemsRef.current.forEach((item) => {
|
|
4267
4267
|
const persistedValue = persisted[item.key];
|
|
@@ -4270,7 +4270,7 @@ function TestBed({
|
|
|
4270
4270
|
}
|
|
4271
4271
|
});
|
|
4272
4272
|
}, []);
|
|
4273
|
-
if (!
|
|
4273
|
+
if (!chunk5XODUPUE_cjs.isEnvBrowser()) return null;
|
|
4274
4274
|
const toggle = (item) => {
|
|
4275
4275
|
const next = !item.active;
|
|
4276
4276
|
item.onToggle(next);
|
|
@@ -4417,14 +4417,14 @@ function ThemeOverrideSection({
|
|
|
4417
4417
|
}) {
|
|
4418
4418
|
const mantineTheme = core.useMantineTheme();
|
|
4419
4419
|
const color = mantineTheme.colors[mantineTheme.primaryColor][5];
|
|
4420
|
-
const raw =
|
|
4420
|
+
const raw = chunkHOVRS2Z6_cjs.useFormField(schemaKey);
|
|
4421
4421
|
const value = {
|
|
4422
|
-
useOverride: raw?.useOverride ??
|
|
4423
|
-
primaryColor: raw?.primaryColor ??
|
|
4424
|
-
primaryShade: raw?.primaryShade ??
|
|
4425
|
-
customTheme: Array.isArray(raw?.customTheme) && raw.customTheme.length === 10 ? raw.customTheme :
|
|
4422
|
+
useOverride: raw?.useOverride ?? chunk5XODUPUE_cjs.defaultThemeOverride.useOverride,
|
|
4423
|
+
primaryColor: raw?.primaryColor ?? chunk5XODUPUE_cjs.defaultThemeOverride.primaryColor,
|
|
4424
|
+
primaryShade: raw?.primaryShade ?? chunk5XODUPUE_cjs.defaultThemeOverride.primaryShade,
|
|
4425
|
+
customTheme: Array.isArray(raw?.customTheme) && raw.customTheme.length === 10 ? raw.customTheme : chunk5XODUPUE_cjs.defaultThemeOverride.customTheme
|
|
4426
4426
|
};
|
|
4427
|
-
const { setValue } =
|
|
4427
|
+
const { setValue } = chunkHOVRS2Z6_cjs.useFormActions();
|
|
4428
4428
|
const set = (key, val) => setValue(schemaKey, { ...value, [key]: val });
|
|
4429
4429
|
const useCustom = value.primaryColor === "custom";
|
|
4430
4430
|
const editable = value.useOverride;
|
|
@@ -4440,7 +4440,7 @@ function ThemeOverrideSection({
|
|
|
4440
4440
|
} catch {
|
|
4441
4441
|
}
|
|
4442
4442
|
};
|
|
4443
|
-
const resetPalette = () => set("customTheme",
|
|
4443
|
+
const resetPalette = () => set("customTheme", chunk5XODUPUE_cjs.DEFAULT_PALETTE);
|
|
4444
4444
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4445
4445
|
core.Flex,
|
|
4446
4446
|
{
|
|
@@ -4453,15 +4453,15 @@ function ThemeOverrideSection({
|
|
|
4453
4453
|
AdminPageTitle,
|
|
4454
4454
|
{
|
|
4455
4455
|
icon: lucideReact.Palette,
|
|
4456
|
-
title: title ||
|
|
4456
|
+
title: title || chunk5XODUPUE_cjs.locale("Theme") || "Theme",
|
|
4457
4457
|
color
|
|
4458
4458
|
}
|
|
4459
4459
|
),
|
|
4460
4460
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4461
4461
|
SwitchPanel,
|
|
4462
4462
|
{
|
|
4463
|
-
label:
|
|
4464
|
-
description:
|
|
4463
|
+
label: chunk5XODUPUE_cjs.locale("OverrideGlobalTheme") || "Override global theme",
|
|
4464
|
+
description: chunk5XODUPUE_cjs.locale("OverrideGlobalThemeDesc") || "When on, this resource uses its own primary colour and palette instead of dirk_lib's. Turn off to fall back to the global theme \u2014 your custom palette is kept.",
|
|
4465
4465
|
checked: value.useOverride,
|
|
4466
4466
|
onChange: (v) => set("useOverride", v)
|
|
4467
4467
|
}
|
|
@@ -4475,11 +4475,11 @@ function ThemeOverrideSection({
|
|
|
4475
4475
|
transition: "opacity 0.15s"
|
|
4476
4476
|
},
|
|
4477
4477
|
children: [
|
|
4478
|
-
/* @__PURE__ */ jsxRuntime.jsx(GroupLabel, { label:
|
|
4478
|
+
/* @__PURE__ */ jsxRuntime.jsx(GroupLabel, { label: chunk5XODUPUE_cjs.locale("PrimaryColor") || "Primary Colour" }),
|
|
4479
4479
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4480
4480
|
core.Switch,
|
|
4481
4481
|
{
|
|
4482
|
-
label:
|
|
4482
|
+
label: chunk5XODUPUE_cjs.locale("UseCustomPalette") || "Use custom palette",
|
|
4483
4483
|
size: "md",
|
|
4484
4484
|
mt: "xs",
|
|
4485
4485
|
checked: useCustom,
|
|
@@ -4499,7 +4499,7 @@ function ThemeOverrideSection({
|
|
|
4499
4499
|
!useCustom && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4500
4500
|
core.Select,
|
|
4501
4501
|
{
|
|
4502
|
-
label:
|
|
4502
|
+
label: chunk5XODUPUE_cjs.locale("MantinePalette") || "Mantine palette",
|
|
4503
4503
|
size: "xs",
|
|
4504
4504
|
style: { flex: 1 },
|
|
4505
4505
|
value: value.primaryColor,
|
|
@@ -4511,7 +4511,7 @@ function ThemeOverrideSection({
|
|
|
4511
4511
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4512
4512
|
core.NumberInput,
|
|
4513
4513
|
{
|
|
4514
|
-
label:
|
|
4514
|
+
label: chunk5XODUPUE_cjs.locale("Shade") || "Shade",
|
|
4515
4515
|
size: "xs",
|
|
4516
4516
|
style: { flex: 1 },
|
|
4517
4517
|
min: 0,
|
|
@@ -4531,7 +4531,7 @@ function ThemeOverrideSection({
|
|
|
4531
4531
|
tt: "uppercase",
|
|
4532
4532
|
lts: "0.07em",
|
|
4533
4533
|
c: "rgba(255,255,255,0.2)",
|
|
4534
|
-
children:
|
|
4534
|
+
children: chunk5XODUPUE_cjs.locale("CustomPalette") || "Custom palette"
|
|
4535
4535
|
}
|
|
4536
4536
|
),
|
|
4537
4537
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4540,7 +4540,7 @@ function ThemeOverrideSection({
|
|
|
4540
4540
|
size: "sm",
|
|
4541
4541
|
variant: "subtle",
|
|
4542
4542
|
onClick: resetPalette,
|
|
4543
|
-
title:
|
|
4543
|
+
title: chunk5XODUPUE_cjs.locale("ResetPalette") || "Reset palette",
|
|
4544
4544
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { size: "1.4vh" })
|
|
4545
4545
|
}
|
|
4546
4546
|
)
|
|
@@ -4548,7 +4548,7 @@ function ThemeOverrideSection({
|
|
|
4548
4548
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4549
4549
|
core.ColorInput,
|
|
4550
4550
|
{
|
|
4551
|
-
label:
|
|
4551
|
+
label: chunk5XODUPUE_cjs.locale("BaseColor") || "Base colour",
|
|
4552
4552
|
size: "xs",
|
|
4553
4553
|
value: value.customTheme[value.primaryShade] ?? value.customTheme[5] ?? "#000000",
|
|
4554
4554
|
onChange: generateFromBase,
|
|
@@ -4650,7 +4650,7 @@ function PlayerSelect({
|
|
|
4650
4650
|
const color = theme.colors[theme.primaryColor][5];
|
|
4651
4651
|
const [searchInput, setSearchInput] = react.useState("");
|
|
4652
4652
|
const [debouncedSearch, setDebouncedSearch] = react.useState("");
|
|
4653
|
-
const { players, isFetching, refresh } =
|
|
4653
|
+
const { players, isFetching, refresh } = chunkHOVRS2Z6_cjs.usePlayers({
|
|
4654
4654
|
includeOffline,
|
|
4655
4655
|
search: includeOffline ? debouncedSearch : void 0,
|
|
4656
4656
|
limit
|
|
@@ -4759,7 +4759,7 @@ function formatLabel(p) {
|
|
|
4759
4759
|
}
|
|
4760
4760
|
var COMMON_ACE_GROUPS = ["group.admin", "group.mod", "group.superadmin"];
|
|
4761
4761
|
var t = (key, fallback) => {
|
|
4762
|
-
const v =
|
|
4762
|
+
const v = chunk5XODUPUE_cjs.locale(key);
|
|
4763
4763
|
return v === key ? fallback : v;
|
|
4764
4764
|
};
|
|
4765
4765
|
var DEFAULT_VALUE = {
|
|
@@ -4784,12 +4784,12 @@ function AccessOverrideSection({
|
|
|
4784
4784
|
}) {
|
|
4785
4785
|
const mantineTheme = core.useMantineTheme();
|
|
4786
4786
|
const color = mantineTheme.colors[mantineTheme.primaryColor][5];
|
|
4787
|
-
const raw =
|
|
4787
|
+
const raw = chunkHOVRS2Z6_cjs.useFormField(schemaKey);
|
|
4788
4788
|
const value = {
|
|
4789
4789
|
groups: Array.isArray(raw?.groups) ? raw.groups : DEFAULT_VALUE.groups,
|
|
4790
4790
|
identifiers: Array.isArray(raw?.identifiers) ? raw.identifiers : DEFAULT_VALUE.identifiers
|
|
4791
4791
|
};
|
|
4792
|
-
const { setValue } =
|
|
4792
|
+
const { setValue } = chunkHOVRS2Z6_cjs.useFormActions();
|
|
4793
4793
|
const set = (key, val) => setValue(schemaKey, { ...value, [key]: val });
|
|
4794
4794
|
const [addingGroup, setAddingGroup] = react.useState(false);
|
|
4795
4795
|
const [addingPlayer, setAddingPlayer] = react.useState(false);
|
|
@@ -5661,7 +5661,7 @@ function ScenarioSelect({
|
|
|
5661
5661
|
);
|
|
5662
5662
|
}
|
|
5663
5663
|
var t2 = (key, fallback) => {
|
|
5664
|
-
const v =
|
|
5664
|
+
const v = chunk5XODUPUE_cjs.locale(key);
|
|
5665
5665
|
return v === key ? fallback : v;
|
|
5666
5666
|
};
|
|
5667
5667
|
function decimalToHex(color) {
|
|
@@ -5697,7 +5697,7 @@ function DiscordRoleSelect(props) {
|
|
|
5697
5697
|
const refresh = async () => {
|
|
5698
5698
|
setLoading(true);
|
|
5699
5699
|
try {
|
|
5700
|
-
const res = await
|
|
5700
|
+
const res = await chunk5XODUPUE_cjs.fetchNui(endpoint, {}, {
|
|
5701
5701
|
// Browser dev fallback so the component renders something useful
|
|
5702
5702
|
// outside FiveM.
|
|
5703
5703
|
ok: true,
|
|
@@ -5846,7 +5846,7 @@ function DiscordRoleSelect(props) {
|
|
|
5846
5846
|
);
|
|
5847
5847
|
}
|
|
5848
5848
|
var t3 = (key, fallback) => {
|
|
5849
|
-
const v =
|
|
5849
|
+
const v = chunk5XODUPUE_cjs.locale(key);
|
|
5850
5850
|
return v === key ? fallback : v;
|
|
5851
5851
|
};
|
|
5852
5852
|
var FRAMEWORK_HINTS = {
|
|
@@ -5894,7 +5894,7 @@ function AccountSelect(props) {
|
|
|
5894
5894
|
const refresh = async () => {
|
|
5895
5895
|
setLoading(true);
|
|
5896
5896
|
try {
|
|
5897
|
-
const res = await
|
|
5897
|
+
const res = await chunk5XODUPUE_cjs.fetchNui(endpoint, {}, {
|
|
5898
5898
|
// Browser dev fallback. Shows a recognisable ESX-style list.
|
|
5899
5899
|
ok: true,
|
|
5900
5900
|
framework: "es_extended",
|
|
@@ -6204,24 +6204,24 @@ function WorldPositionSetButton2({
|
|
|
6204
6204
|
}) {
|
|
6205
6205
|
const theme = core.useMantineTheme();
|
|
6206
6206
|
const color = theme.colors[theme.primaryColor][5];
|
|
6207
|
-
const begin =
|
|
6207
|
+
const begin = chunkEOSHBZQK_cjs.useAdminToolStore((s) => s.begin);
|
|
6208
6208
|
const onClick = async () => {
|
|
6209
6209
|
const instructions = {
|
|
6210
|
-
title:
|
|
6211
|
-
hint:
|
|
6210
|
+
title: chunk5XODUPUE_cjs.locale("PickPositionTitle") || "Pick Position",
|
|
6211
|
+
hint: chunk5XODUPUE_cjs.locale("PickPositionHint") || "Walk to where you want this set",
|
|
6212
6212
|
keys: [
|
|
6213
|
-
{ key: "E", action:
|
|
6214
|
-
{ key: "\u232B", action:
|
|
6213
|
+
{ key: "E", action: chunk5XODUPUE_cjs.locale("Set") || "Set" },
|
|
6214
|
+
{ key: "\u232B", action: chunk5XODUPUE_cjs.locale("Cancel") || "Cancel" }
|
|
6215
6215
|
]
|
|
6216
6216
|
};
|
|
6217
6217
|
const pendingResult = begin({ id: "capturePosition", ...instructions });
|
|
6218
|
-
|
|
6219
|
-
|
|
6218
|
+
chunk5XODUPUE_cjs.fetchNui("ADMIN_TOOL_BEGIN", { id: "capturePosition", instructions }).catch(() => {
|
|
6219
|
+
chunkEOSHBZQK_cjs.useAdminToolStore.getState().cancelActive();
|
|
6220
6220
|
});
|
|
6221
6221
|
const result = await pendingResult;
|
|
6222
6222
|
if (result) onChange(result);
|
|
6223
6223
|
};
|
|
6224
|
-
return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, { label:
|
|
6224
|
+
return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, { label: chunk5XODUPUE_cjs.locale("SetWorldTooltip"), position: "top", withArrow: true, withinPortal: true, zIndex: 2e3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6225
6225
|
framerMotion.motion.button,
|
|
6226
6226
|
{
|
|
6227
6227
|
onClick,
|
|
@@ -6239,7 +6239,7 @@ function WorldPositionSetButton2({
|
|
|
6239
6239
|
},
|
|
6240
6240
|
children: [
|
|
6241
6241
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Crosshair, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
6242
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children:
|
|
6242
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children: chunk5XODUPUE_cjs.locale("Set") })
|
|
6243
6243
|
]
|
|
6244
6244
|
}
|
|
6245
6245
|
) });
|
|
@@ -6251,10 +6251,10 @@ function WorldPositionGotoButton2({
|
|
|
6251
6251
|
const theme = core.useMantineTheme();
|
|
6252
6252
|
const color = theme.colors[theme.primaryColor][5];
|
|
6253
6253
|
const onClick = () => {
|
|
6254
|
-
|
|
6254
|
+
chunk5XODUPUE_cjs.fetchNui("ADMIN_TOOL_INVOKE", { id: "gotoCoord", value }).catch(() => {
|
|
6255
6255
|
});
|
|
6256
6256
|
};
|
|
6257
|
-
return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, { label:
|
|
6257
|
+
return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, { label: chunk5XODUPUE_cjs.locale("GotoWorldTooltip"), position: "top", withArrow: true, withinPortal: true, zIndex: 2e3, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6258
6258
|
framerMotion.motion.button,
|
|
6259
6259
|
{
|
|
6260
6260
|
onClick,
|
|
@@ -6272,26 +6272,26 @@ function WorldPositionGotoButton2({
|
|
|
6272
6272
|
},
|
|
6273
6273
|
children: [
|
|
6274
6274
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MapPin, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
6275
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children:
|
|
6275
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children: chunk5XODUPUE_cjs.locale("Goto") })
|
|
6276
6276
|
]
|
|
6277
6277
|
}
|
|
6278
6278
|
) });
|
|
6279
6279
|
}
|
|
6280
6280
|
function usePickDoor() {
|
|
6281
|
-
const begin =
|
|
6281
|
+
const begin = chunkEOSHBZQK_cjs.useAdminToolStore((s) => s.begin);
|
|
6282
6282
|
return async () => {
|
|
6283
6283
|
const pending = begin({
|
|
6284
6284
|
id: "pickDoor",
|
|
6285
|
-
title:
|
|
6286
|
-
hint:
|
|
6285
|
+
title: chunk5XODUPUE_cjs.locale("PickDoorTitle"),
|
|
6286
|
+
hint: chunk5XODUPUE_cjs.locale("PickDoorHint"),
|
|
6287
6287
|
keys: [
|
|
6288
|
-
{ key: "LMB", action:
|
|
6289
|
-
{ key: "E", action:
|
|
6290
|
-
{ key: "BACKSPACE", action:
|
|
6288
|
+
{ key: "LMB", action: chunk5XODUPUE_cjs.locale("Toggle") },
|
|
6289
|
+
{ key: "E", action: chunk5XODUPUE_cjs.locale("Confirm") },
|
|
6290
|
+
{ key: "BACKSPACE", action: chunk5XODUPUE_cjs.locale("Cancel") }
|
|
6291
6291
|
]
|
|
6292
6292
|
});
|
|
6293
|
-
|
|
6294
|
-
|
|
6293
|
+
chunk5XODUPUE_cjs.fetchNui("ADMIN_TOOL_BEGIN", { id: "pickDoor" }).catch(() => {
|
|
6294
|
+
chunkEOSHBZQK_cjs.useAdminToolStore.getState().cancelActive();
|
|
6295
6295
|
});
|
|
6296
6296
|
return await pending;
|
|
6297
6297
|
};
|
|
@@ -6312,7 +6312,7 @@ function DoorPickerButton({
|
|
|
6312
6312
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6313
6313
|
core.Tooltip,
|
|
6314
6314
|
{
|
|
6315
|
-
label: tooltip ??
|
|
6315
|
+
label: tooltip ?? chunk5XODUPUE_cjs.locale("PickDoorTooltip"),
|
|
6316
6316
|
position: "top",
|
|
6317
6317
|
withArrow: true,
|
|
6318
6318
|
withinPortal: true,
|
|
@@ -6335,7 +6335,7 @@ function DoorPickerButton({
|
|
|
6335
6335
|
},
|
|
6336
6336
|
children: [
|
|
6337
6337
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.DoorOpen, { size: compact ? "1.1vh" : "1.3vh", color }),
|
|
6338
|
-
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children: label ??
|
|
6338
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.Text, { ff: "Akrobat Bold", size: "xxs", tt: "uppercase", lts: "0.06em", c: color, children: label ?? chunk5XODUPUE_cjs.locale("PickDoor") })
|
|
6339
6339
|
]
|
|
6340
6340
|
}
|
|
6341
6341
|
)
|
|
@@ -6345,7 +6345,7 @@ function DoorPickerButton({
|
|
|
6345
6345
|
var MapImpl = react.memo(({
|
|
6346
6346
|
children,
|
|
6347
6347
|
initialZoom = 2,
|
|
6348
|
-
initialCenter =
|
|
6348
|
+
initialCenter = chunk5XODUPUE_cjs.gameToMap(0, 0),
|
|
6349
6349
|
mapStyle = "game"
|
|
6350
6350
|
}) => {
|
|
6351
6351
|
const mapRef = react.useRef(null);
|
|
@@ -6468,7 +6468,7 @@ function BlipMarker({
|
|
|
6468
6468
|
fallbackColor = DEFAULT_COLOR
|
|
6469
6469
|
}) {
|
|
6470
6470
|
const [hovered, setHovered] = react.useState(false);
|
|
6471
|
-
const mapCoords = react.useMemo(() =>
|
|
6471
|
+
const mapCoords = react.useMemo(() => chunk5XODUPUE_cjs.gameToMap(position.x, position.y), [position.x, position.y]);
|
|
6472
6472
|
const effectiveSprite = sprite ?? fallbackSprite;
|
|
6473
6473
|
const effectiveColor = color ?? fallbackColor;
|
|
6474
6474
|
const url = blipUrlForSprite(effectiveSprite);
|
|
@@ -6562,15 +6562,15 @@ function ModelSelect({
|
|
|
6562
6562
|
style,
|
|
6563
6563
|
limit = 100
|
|
6564
6564
|
}) {
|
|
6565
|
-
const models =
|
|
6565
|
+
const models = chunk5XODUPUE_cjs.useModels((s) => s.models);
|
|
6566
6566
|
react.useEffect(() => {
|
|
6567
|
-
|
|
6567
|
+
chunk5XODUPUE_cjs.loadModels();
|
|
6568
6568
|
}, []);
|
|
6569
6569
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6570
6570
|
core.Autocomplete,
|
|
6571
6571
|
{
|
|
6572
6572
|
label,
|
|
6573
|
-
placeholder: placeholder ?? (
|
|
6573
|
+
placeholder: placeholder ?? (chunk5XODUPUE_cjs.locale("SearchModel") || "Search or type a model\u2026"),
|
|
6574
6574
|
size,
|
|
6575
6575
|
disabled,
|
|
6576
6576
|
style,
|
|
@@ -6590,9 +6590,9 @@ function VehicleSelect({
|
|
|
6590
6590
|
style,
|
|
6591
6591
|
limit = 100
|
|
6592
6592
|
}) {
|
|
6593
|
-
const vehicles =
|
|
6593
|
+
const vehicles = chunk5XODUPUE_cjs.useVehicles((s) => s.vehicles);
|
|
6594
6594
|
react.useEffect(() => {
|
|
6595
|
-
|
|
6595
|
+
chunk5XODUPUE_cjs.ensureVehicles();
|
|
6596
6596
|
}, []);
|
|
6597
6597
|
const data = vehicles.map((v) => ({ value: v.model, label: v.name ? `${v.name} (${v.model})` : v.model }));
|
|
6598
6598
|
const extra = value && !vehicles.some((v) => v.model === value) ? [{ value, label: value }] : [];
|
|
@@ -6603,7 +6603,7 @@ function VehicleSelect({
|
|
|
6603
6603
|
size,
|
|
6604
6604
|
disabled,
|
|
6605
6605
|
style,
|
|
6606
|
-
placeholder:
|
|
6606
|
+
placeholder: chunk5XODUPUE_cjs.locale("SearchVehicle") || "Search a vehicle\u2026",
|
|
6607
6607
|
data: [...extra, ...data],
|
|
6608
6608
|
value: value ?? null,
|
|
6609
6609
|
searchable: true,
|
|
@@ -6621,9 +6621,9 @@ function CategorySelect({
|
|
|
6621
6621
|
disabled,
|
|
6622
6622
|
style
|
|
6623
6623
|
}) {
|
|
6624
|
-
const categories =
|
|
6624
|
+
const categories = chunk5XODUPUE_cjs.useVehicles((s) => s.categories);
|
|
6625
6625
|
react.useEffect(() => {
|
|
6626
|
-
|
|
6626
|
+
chunk5XODUPUE_cjs.ensureVehicles();
|
|
6627
6627
|
}, []);
|
|
6628
6628
|
const opts = Array.from(/* @__PURE__ */ new Set([...value ?? [], ...categories])).sort();
|
|
6629
6629
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6633,7 +6633,7 @@ function CategorySelect({
|
|
|
6633
6633
|
size,
|
|
6634
6634
|
disabled,
|
|
6635
6635
|
style,
|
|
6636
|
-
placeholder:
|
|
6636
|
+
placeholder: chunk5XODUPUE_cjs.locale("SelectCategories") || "Select categories\u2026",
|
|
6637
6637
|
data: opts,
|
|
6638
6638
|
value: value ?? [],
|
|
6639
6639
|
searchable: true,
|
|
@@ -6713,5 +6713,5 @@ exports.useModalActions = useModalActions;
|
|
|
6713
6713
|
exports.useNavigation = useNavigation;
|
|
6714
6714
|
exports.useNavigationStore = useNavigationStore;
|
|
6715
6715
|
exports.usePickDoor = usePickDoor;
|
|
6716
|
-
//# sourceMappingURL=chunk-
|
|
6717
|
-
//# sourceMappingURL=chunk-
|
|
6716
|
+
//# sourceMappingURL=chunk-HG2J72NC.cjs.map
|
|
6717
|
+
//# sourceMappingURL=chunk-HG2J72NC.cjs.map
|