dirk-cfx-react 1.1.86 → 1.1.89
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/components/index.cjs +873 -33
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.cts +192 -2
- package/dist/components/index.d.ts +192 -2
- package/dist/components/index.js +864 -38
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/index.cjs +159 -26
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.cts +16 -1
- package/dist/hooks/index.d.ts +16 -1
- package/dist/hooks/index.js +157 -28
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.cjs +1440 -452
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +1343 -375
- package/dist/index.js.map +1 -1
- package/dist/providers/index.cjs +133 -1
- package/dist/providers/index.cjs.map +1 -1
- package/dist/providers/index.d.cts +3 -1
- package/dist/providers/index.d.ts +3 -1
- package/dist/providers/index.js +134 -3
- package/dist/providers/index.js.map +1 -1
- package/dist/usePlayers-BlGBBevs.d.cts +37 -0
- package/dist/usePlayers-BlGBBevs.d.ts +37 -0
- package/dist/utils/index.cjs +16 -8
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +2 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.js +16 -9
- package/dist/utils/index.js.map +1 -1
- package/package.json +123 -117
|
@@ -7,8 +7,24 @@ import { Variants } from 'framer-motion';
|
|
|
7
7
|
import * as _fortawesome_fontawesome_svg_core from '@fortawesome/fontawesome-svg-core';
|
|
8
8
|
import * as zustand from 'zustand';
|
|
9
9
|
import { StoreApi } from 'zustand';
|
|
10
|
-
import { LucideProps } from 'lucide-react';
|
|
10
|
+
import { LucideProps, LucideIcon } from 'lucide-react';
|
|
11
|
+
import { P as Player } from '../usePlayers-BlGBBevs.cjs';
|
|
11
12
|
|
|
13
|
+
declare function blipUrl(name: string, ext: string): string;
|
|
14
|
+
/** Look up a blip entry by sprite id. Returns `{ id, name, ext }` or undefined. */
|
|
15
|
+
declare function getBlipEntry(spriteId: number | string | null | undefined): {
|
|
16
|
+
id: number;
|
|
17
|
+
name: string;
|
|
18
|
+
ext: string;
|
|
19
|
+
} | undefined;
|
|
20
|
+
/** Look up a blip color by color id. Returns `{ id, label, hex }` or undefined. */
|
|
21
|
+
declare function getBlipColor(colorId: number | string | null | undefined): {
|
|
22
|
+
id: number;
|
|
23
|
+
label: string;
|
|
24
|
+
hex: string;
|
|
25
|
+
} | undefined;
|
|
26
|
+
/** Convenience: build the sprite URL straight from a sprite id. */
|
|
27
|
+
declare function blipUrlForSprite(spriteId: number | string | null | undefined): string | null;
|
|
12
28
|
type BlipIconSelectProps = Omit<SelectProps, "data" | "value" | "onChange" | "searchable" | "renderOption"> & {
|
|
13
29
|
value: number | null;
|
|
14
30
|
onChange: (id: number) => void;
|
|
@@ -1122,4 +1138,178 @@ type MultiProps = SharedProps & {
|
|
|
1122
1138
|
type AccountSelectProps = SingleProps | MultiProps;
|
|
1123
1139
|
declare function AccountSelect(props: AccountSelectProps): react_jsx_runtime.JSX.Element;
|
|
1124
1140
|
|
|
1125
|
-
|
|
1141
|
+
type InstructionKey = {
|
|
1142
|
+
/** Short label drawn inside the key cap (e.g. "E", "⌫", "F"). */
|
|
1143
|
+
key: string;
|
|
1144
|
+
/** What the key does (e.g. "Set", "Cancel"). */
|
|
1145
|
+
action: string;
|
|
1146
|
+
};
|
|
1147
|
+
type InstructionPanelProps = {
|
|
1148
|
+
visible: boolean;
|
|
1149
|
+
title: string;
|
|
1150
|
+
/** One- or two-line subtext explaining what to do. */
|
|
1151
|
+
hint?: string;
|
|
1152
|
+
/** List of key bindings shown as labelled key caps. */
|
|
1153
|
+
keys?: InstructionKey[];
|
|
1154
|
+
/** Override the default MapPin icon next to the title. */
|
|
1155
|
+
icon?: LucideIcon;
|
|
1156
|
+
/**
|
|
1157
|
+
* When true (default) every direct child of <body> except this overlay is
|
|
1158
|
+
* hidden via a CSS rule. Lets the admin panel stay mounted (React state
|
|
1159
|
+
* preserved) while the player sees only the game world + this card.
|
|
1160
|
+
* Set false if you want the card to sit alongside other UI.
|
|
1161
|
+
*/
|
|
1162
|
+
hideRestOfAdmin?: boolean;
|
|
1163
|
+
};
|
|
1164
|
+
declare function InstructionPanel({ visible, title, hint, keys, icon: Icon, hideRestOfAdmin, }: InstructionPanelProps): React$1.ReactPortal | null;
|
|
1165
|
+
|
|
1166
|
+
type WorldPositionPickerSlot = {
|
|
1167
|
+
value: Vector4Value;
|
|
1168
|
+
onChange: (v: Vector4Value) => void;
|
|
1169
|
+
compact?: boolean;
|
|
1170
|
+
/** Show only the Set button (no Goto). Defaults to false. */
|
|
1171
|
+
setOnly?: boolean;
|
|
1172
|
+
/** Show only the Goto button (no Set). Defaults to false. */
|
|
1173
|
+
gotoOnly?: boolean;
|
|
1174
|
+
};
|
|
1175
|
+
declare function WorldPositionPicker({ value, onChange, compact, setOnly, gotoOnly }: WorldPositionPickerSlot): react_jsx_runtime.JSX.Element;
|
|
1176
|
+
|
|
1177
|
+
type PlayerSelectProps = Omit<SelectProps, "data" | "value" | "onChange" | "rightSection" | "renderOption"> & {
|
|
1178
|
+
value: string | null;
|
|
1179
|
+
onChange: (player: Player | null) => void;
|
|
1180
|
+
/** When true, runs a DB-backed search across offline + online. Enables
|
|
1181
|
+
* the search box behaviour. Default false (online only). */
|
|
1182
|
+
includeOffline?: boolean;
|
|
1183
|
+
/** Cap on results returned (max 50, server-enforced). */
|
|
1184
|
+
limit?: number;
|
|
1185
|
+
/** Localisable label overrides. Defaults are English. Pass locale()'d
|
|
1186
|
+
* strings from the consumer to translate the dropdown chrome. */
|
|
1187
|
+
loadingLabel?: string;
|
|
1188
|
+
onlineLabel?: string;
|
|
1189
|
+
offlineLabel?: string;
|
|
1190
|
+
refreshLabel?: string;
|
|
1191
|
+
};
|
|
1192
|
+
declare function PlayerSelect({ value, onChange, includeOffline, limit, searchable: searchableProp, placeholder, nothingFoundMessage: nothingFoundMessageProp, loadingLabel, onlineLabel, offlineLabel, refreshLabel, ...rest }: PlayerSelectProps): react_jsx_runtime.JSX.Element;
|
|
1193
|
+
|
|
1194
|
+
/** A single picked door panel — one entity the admin LMB'd in-world. */
|
|
1195
|
+
type PickedDoor = {
|
|
1196
|
+
/** Door entity model hash. */
|
|
1197
|
+
model: number;
|
|
1198
|
+
/** Resolved model name (e.g. 'v_ilev_meth_loaddoor'). nil when the
|
|
1199
|
+
* hash isn't in dirk_lib's lookup table (custom prop, MLO asset). */
|
|
1200
|
+
modelName?: string | null;
|
|
1201
|
+
/** World coords of the door entity, snapshotted at pick time. */
|
|
1202
|
+
coords: {
|
|
1203
|
+
x: number;
|
|
1204
|
+
y: number;
|
|
1205
|
+
z: number;
|
|
1206
|
+
};
|
|
1207
|
+
/** Door entity heading in degrees. */
|
|
1208
|
+
heading: number;
|
|
1209
|
+
/** True when IsEntityADoor() flagged the entity as a real door (vs a
|
|
1210
|
+
* prop the admin happened to aim at). Informational — pickers accept
|
|
1211
|
+
* any entity. */
|
|
1212
|
+
isDoor?: boolean;
|
|
1213
|
+
};
|
|
1214
|
+
/**
|
|
1215
|
+
* A confirmed pick from the multi-pick door tool. `doors` is 1-2 entries:
|
|
1216
|
+
* length 1 = single door, length 2 = double-door pair. Maps cleanly onto
|
|
1217
|
+
* ox_doorlock's single-door vs double-door spec.
|
|
1218
|
+
*/
|
|
1219
|
+
type PickedDoorGroup = {
|
|
1220
|
+
doors: PickedDoor[];
|
|
1221
|
+
};
|
|
1222
|
+
/**
|
|
1223
|
+
* Returns a function that triggers the in-world door picker. Renders the
|
|
1224
|
+
* standard InstructionPanel while the player is aiming. Resolves with
|
|
1225
|
+
* `null` on cancel or backend failure.
|
|
1226
|
+
*/
|
|
1227
|
+
declare function usePickDoor(): () => Promise<PickedDoorGroup | null>;
|
|
1228
|
+
/**
|
|
1229
|
+
* Drop-in button — same styling as WorldPositionSetButton. Triggers the
|
|
1230
|
+
* picker on click and calls `onPick` with the result (or never fires on
|
|
1231
|
+
* cancel).
|
|
1232
|
+
*/
|
|
1233
|
+
declare function DoorPickerButton({ onPick, compact, label, tooltip, }: {
|
|
1234
|
+
onPick: (picked: PickedDoorGroup) => void;
|
|
1235
|
+
compact?: boolean;
|
|
1236
|
+
/** Override the button label. Defaults to locale("PickDoor"). */
|
|
1237
|
+
label?: string;
|
|
1238
|
+
/** Override the tooltip. Defaults to locale("PickDoorTooltip"). */
|
|
1239
|
+
tooltip?: string;
|
|
1240
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1241
|
+
|
|
1242
|
+
type MapStyle = "game" | "render" | "print";
|
|
1243
|
+
type MapProps = {
|
|
1244
|
+
children?: ReactNode;
|
|
1245
|
+
initialZoom?: number;
|
|
1246
|
+
initialCenter?: [number, number];
|
|
1247
|
+
mapStyle?: MapStyle;
|
|
1248
|
+
className?: string;
|
|
1249
|
+
};
|
|
1250
|
+
declare const Map: React$1.MemoExoticComponent<({ children, initialZoom, initialCenter, mapStyle, }: MapProps) => react_jsx_runtime.JSX.Element>;
|
|
1251
|
+
type MapLayerProps = {
|
|
1252
|
+
mapLayer: MapStyle;
|
|
1253
|
+
};
|
|
1254
|
+
declare const MapLayer: ({ mapLayer }: MapLayerProps) => null;
|
|
1255
|
+
declare function ZoomControls(): react_jsx_runtime.JSX.Element;
|
|
1256
|
+
|
|
1257
|
+
type BlipMarkerProps = {
|
|
1258
|
+
/** Game-world coordinates. z is ignored; map is 2D. */
|
|
1259
|
+
position: {
|
|
1260
|
+
x: number;
|
|
1261
|
+
y: number;
|
|
1262
|
+
};
|
|
1263
|
+
/** Blip sprite id (0..830ish) — see BLIP_ENTRIES. */
|
|
1264
|
+
sprite?: number | null;
|
|
1265
|
+
/** Blip color id (0..85) — see BLIP_COLORS. */
|
|
1266
|
+
color?: number | null;
|
|
1267
|
+
/** Display scale multiplier. Default 1.0 → ~3vh visual size. */
|
|
1268
|
+
scale?: number;
|
|
1269
|
+
/** Click handler. Fires `e.originalEvent.stopPropagation()` before yours. */
|
|
1270
|
+
onClick?: () => void;
|
|
1271
|
+
/** When true, marker gets a brighter glow + bigger size to indicate
|
|
1272
|
+
* this is the currently-selected entry. */
|
|
1273
|
+
selected?: boolean;
|
|
1274
|
+
/** When true, marker is rendered at low opacity and clicks no-op —
|
|
1275
|
+
* for "this entry is broken / unavailable" states. */
|
|
1276
|
+
disabled?: boolean;
|
|
1277
|
+
/** Sprite id used when `sprite` is null/missing. Defaults to 162
|
|
1278
|
+
* (radar_poi — neutral grey dot). */
|
|
1279
|
+
fallbackSprite?: number;
|
|
1280
|
+
/** Color id used when `color` is null/missing. Defaults to 0 (white). */
|
|
1281
|
+
fallbackColor?: number;
|
|
1282
|
+
};
|
|
1283
|
+
declare function BlipMarker({ position, sprite, color, scale, onClick, selected, disabled, fallbackSprite, fallbackColor, }: BlipMarkerProps): react_jsx_runtime.JSX.Element;
|
|
1284
|
+
|
|
1285
|
+
type ActiveTool<Result = unknown> = {
|
|
1286
|
+
/** Tool id matching the SendNUIMessage event names from Lua. */
|
|
1287
|
+
id: string;
|
|
1288
|
+
/** Title shown in the InstructionPanel header. */
|
|
1289
|
+
title: string;
|
|
1290
|
+
/** Optional sub-text under the title. */
|
|
1291
|
+
hint?: string;
|
|
1292
|
+
/** Key bindings shown as labelled key caps. */
|
|
1293
|
+
keys?: {
|
|
1294
|
+
key: string;
|
|
1295
|
+
action: string;
|
|
1296
|
+
}[];
|
|
1297
|
+
/** Resolve handler for the in-flight Promise. */
|
|
1298
|
+
resolve: (v: Result | null) => void;
|
|
1299
|
+
};
|
|
1300
|
+
type AdminToolStore = {
|
|
1301
|
+
active: ActiveTool | null;
|
|
1302
|
+
/**
|
|
1303
|
+
* Begin a tool flow. Returns a Promise resolving to the tool's typed
|
|
1304
|
+
* result (or null on cancel / replacement). Replaces any currently-active
|
|
1305
|
+
* tool by cancelling it first — only one in-world prompt at a time.
|
|
1306
|
+
*/
|
|
1307
|
+
begin: <Result>(spec: Omit<ActiveTool<Result>, "resolve">) => Promise<Result | null>;
|
|
1308
|
+
/** Settle the currently-active tool with a value (called by SendNUIMessage handler). */
|
|
1309
|
+
resolveActive: (value: unknown) => void;
|
|
1310
|
+
/** Cancel the currently-active tool (called by SendNUIMessage handler or programmatic cancel). */
|
|
1311
|
+
cancelActive: () => void;
|
|
1312
|
+
};
|
|
1313
|
+
declare const useAdminToolStore: zustand.UseBoundStore<zustand.StoreApi<AdminToolStore>>;
|
|
1314
|
+
|
|
1315
|
+
export { AccountSelect, type AccountSelectProps, type ActiveTool, AdminPageTitle, type AdminPageTitleProps, AnimPostFxSelect, type AnimPostFxSelectProps, AsyncSaveButton, BlipColorSelect, type BlipColorSelectProps, BlipDisplaySelect, type BlipDisplaySelectProps, BlipIconSelect, type BlipIconSelectProps, BlipMarker, type BlipMarkerProps, BorderedIcon, type BorderedIconProps, type ButtonProps, ConfigPanel, type ConfigPanelProps, ConfirmModal, type ConfirmModalProps, ControlMultiSelect, type ControlMultiSelectProps, ControlSelect, type ControlSelectProps, Counter, type DiscordRole, DiscordRoleSelect, type DiscordRoleSelectProps, DoorPickerButton, type FiveMControls, FiveMKeyBindInput, FloatingParticles, type FloatingParticlesProps, type FrameworkAccount, GroupName, type GroupNameProps, GroupRank, type GroupRankProps, GroupSelect, type GroupSelectProps, type GroupType, type GroupValue, InfoBox, type InfoBoxProps, InputContainer, type InputContainerProps, type InstructionKey, InstructionPanel, type InstructionPanelProps, LevelBanner, LevelPanel, Map, MapLayer, type MapProps, type MapStyle, MissingItemsBanner, Modal, ModalContext, type ModalProps, ModalProvider, MotionFlex, MotionIcon, MotionImage, MotionText, NavBar, type NavItem, NavigationContext, NavigationProvider, type NavigationStore, type ParticleState, type PickedDoor, type PickedDoorGroup, PlayerSelect, type PlayerSelectProps, PositionPicker, type PositionPickerProps, type ProgressProps, type Prompt, type PromptButton, PromptModal, ScenarioSelect, type ScenarioSelectProps, type SegmentProps, SegmentedControl, type SegmentedControlProps, SegmentedProgress, SelectItem, type SelectItemProps, type StoreModalProps, SwitchPanel, type SwitchPanelProps, TestBed, type TestBedItem, type TestBedPlacement, type TestBedProps, ThemeOverrideSection, type ThemeOverrideSectionProps, type ThemeOverrideValue, Title, type TitleProps, type TitleSize, Vector4DeleteButton, Vector4Display, type Vector4Value, WorldPositionGotoButton, WorldPositionPicker, type WorldPositionPickerSlot, WorldPositionSetButton, ZoomControls, blipUrl, blipUrlForSprite, getBlipColor, getBlipEntry, useAdminToolStore, useMissingItemsAudit, useModal, useModalActions, useNavigation, useNavigationStore, usePickDoor };
|
|
@@ -7,8 +7,24 @@ import { Variants } from 'framer-motion';
|
|
|
7
7
|
import * as _fortawesome_fontawesome_svg_core from '@fortawesome/fontawesome-svg-core';
|
|
8
8
|
import * as zustand from 'zustand';
|
|
9
9
|
import { StoreApi } from 'zustand';
|
|
10
|
-
import { LucideProps } from 'lucide-react';
|
|
10
|
+
import { LucideProps, LucideIcon } from 'lucide-react';
|
|
11
|
+
import { P as Player } from '../usePlayers-BlGBBevs.js';
|
|
11
12
|
|
|
13
|
+
declare function blipUrl(name: string, ext: string): string;
|
|
14
|
+
/** Look up a blip entry by sprite id. Returns `{ id, name, ext }` or undefined. */
|
|
15
|
+
declare function getBlipEntry(spriteId: number | string | null | undefined): {
|
|
16
|
+
id: number;
|
|
17
|
+
name: string;
|
|
18
|
+
ext: string;
|
|
19
|
+
} | undefined;
|
|
20
|
+
/** Look up a blip color by color id. Returns `{ id, label, hex }` or undefined. */
|
|
21
|
+
declare function getBlipColor(colorId: number | string | null | undefined): {
|
|
22
|
+
id: number;
|
|
23
|
+
label: string;
|
|
24
|
+
hex: string;
|
|
25
|
+
} | undefined;
|
|
26
|
+
/** Convenience: build the sprite URL straight from a sprite id. */
|
|
27
|
+
declare function blipUrlForSprite(spriteId: number | string | null | undefined): string | null;
|
|
12
28
|
type BlipIconSelectProps = Omit<SelectProps, "data" | "value" | "onChange" | "searchable" | "renderOption"> & {
|
|
13
29
|
value: number | null;
|
|
14
30
|
onChange: (id: number) => void;
|
|
@@ -1122,4 +1138,178 @@ type MultiProps = SharedProps & {
|
|
|
1122
1138
|
type AccountSelectProps = SingleProps | MultiProps;
|
|
1123
1139
|
declare function AccountSelect(props: AccountSelectProps): react_jsx_runtime.JSX.Element;
|
|
1124
1140
|
|
|
1125
|
-
|
|
1141
|
+
type InstructionKey = {
|
|
1142
|
+
/** Short label drawn inside the key cap (e.g. "E", "⌫", "F"). */
|
|
1143
|
+
key: string;
|
|
1144
|
+
/** What the key does (e.g. "Set", "Cancel"). */
|
|
1145
|
+
action: string;
|
|
1146
|
+
};
|
|
1147
|
+
type InstructionPanelProps = {
|
|
1148
|
+
visible: boolean;
|
|
1149
|
+
title: string;
|
|
1150
|
+
/** One- or two-line subtext explaining what to do. */
|
|
1151
|
+
hint?: string;
|
|
1152
|
+
/** List of key bindings shown as labelled key caps. */
|
|
1153
|
+
keys?: InstructionKey[];
|
|
1154
|
+
/** Override the default MapPin icon next to the title. */
|
|
1155
|
+
icon?: LucideIcon;
|
|
1156
|
+
/**
|
|
1157
|
+
* When true (default) every direct child of <body> except this overlay is
|
|
1158
|
+
* hidden via a CSS rule. Lets the admin panel stay mounted (React state
|
|
1159
|
+
* preserved) while the player sees only the game world + this card.
|
|
1160
|
+
* Set false if you want the card to sit alongside other UI.
|
|
1161
|
+
*/
|
|
1162
|
+
hideRestOfAdmin?: boolean;
|
|
1163
|
+
};
|
|
1164
|
+
declare function InstructionPanel({ visible, title, hint, keys, icon: Icon, hideRestOfAdmin, }: InstructionPanelProps): React$1.ReactPortal | null;
|
|
1165
|
+
|
|
1166
|
+
type WorldPositionPickerSlot = {
|
|
1167
|
+
value: Vector4Value;
|
|
1168
|
+
onChange: (v: Vector4Value) => void;
|
|
1169
|
+
compact?: boolean;
|
|
1170
|
+
/** Show only the Set button (no Goto). Defaults to false. */
|
|
1171
|
+
setOnly?: boolean;
|
|
1172
|
+
/** Show only the Goto button (no Set). Defaults to false. */
|
|
1173
|
+
gotoOnly?: boolean;
|
|
1174
|
+
};
|
|
1175
|
+
declare function WorldPositionPicker({ value, onChange, compact, setOnly, gotoOnly }: WorldPositionPickerSlot): react_jsx_runtime.JSX.Element;
|
|
1176
|
+
|
|
1177
|
+
type PlayerSelectProps = Omit<SelectProps, "data" | "value" | "onChange" | "rightSection" | "renderOption"> & {
|
|
1178
|
+
value: string | null;
|
|
1179
|
+
onChange: (player: Player | null) => void;
|
|
1180
|
+
/** When true, runs a DB-backed search across offline + online. Enables
|
|
1181
|
+
* the search box behaviour. Default false (online only). */
|
|
1182
|
+
includeOffline?: boolean;
|
|
1183
|
+
/** Cap on results returned (max 50, server-enforced). */
|
|
1184
|
+
limit?: number;
|
|
1185
|
+
/** Localisable label overrides. Defaults are English. Pass locale()'d
|
|
1186
|
+
* strings from the consumer to translate the dropdown chrome. */
|
|
1187
|
+
loadingLabel?: string;
|
|
1188
|
+
onlineLabel?: string;
|
|
1189
|
+
offlineLabel?: string;
|
|
1190
|
+
refreshLabel?: string;
|
|
1191
|
+
};
|
|
1192
|
+
declare function PlayerSelect({ value, onChange, includeOffline, limit, searchable: searchableProp, placeholder, nothingFoundMessage: nothingFoundMessageProp, loadingLabel, onlineLabel, offlineLabel, refreshLabel, ...rest }: PlayerSelectProps): react_jsx_runtime.JSX.Element;
|
|
1193
|
+
|
|
1194
|
+
/** A single picked door panel — one entity the admin LMB'd in-world. */
|
|
1195
|
+
type PickedDoor = {
|
|
1196
|
+
/** Door entity model hash. */
|
|
1197
|
+
model: number;
|
|
1198
|
+
/** Resolved model name (e.g. 'v_ilev_meth_loaddoor'). nil when the
|
|
1199
|
+
* hash isn't in dirk_lib's lookup table (custom prop, MLO asset). */
|
|
1200
|
+
modelName?: string | null;
|
|
1201
|
+
/** World coords of the door entity, snapshotted at pick time. */
|
|
1202
|
+
coords: {
|
|
1203
|
+
x: number;
|
|
1204
|
+
y: number;
|
|
1205
|
+
z: number;
|
|
1206
|
+
};
|
|
1207
|
+
/** Door entity heading in degrees. */
|
|
1208
|
+
heading: number;
|
|
1209
|
+
/** True when IsEntityADoor() flagged the entity as a real door (vs a
|
|
1210
|
+
* prop the admin happened to aim at). Informational — pickers accept
|
|
1211
|
+
* any entity. */
|
|
1212
|
+
isDoor?: boolean;
|
|
1213
|
+
};
|
|
1214
|
+
/**
|
|
1215
|
+
* A confirmed pick from the multi-pick door tool. `doors` is 1-2 entries:
|
|
1216
|
+
* length 1 = single door, length 2 = double-door pair. Maps cleanly onto
|
|
1217
|
+
* ox_doorlock's single-door vs double-door spec.
|
|
1218
|
+
*/
|
|
1219
|
+
type PickedDoorGroup = {
|
|
1220
|
+
doors: PickedDoor[];
|
|
1221
|
+
};
|
|
1222
|
+
/**
|
|
1223
|
+
* Returns a function that triggers the in-world door picker. Renders the
|
|
1224
|
+
* standard InstructionPanel while the player is aiming. Resolves with
|
|
1225
|
+
* `null` on cancel or backend failure.
|
|
1226
|
+
*/
|
|
1227
|
+
declare function usePickDoor(): () => Promise<PickedDoorGroup | null>;
|
|
1228
|
+
/**
|
|
1229
|
+
* Drop-in button — same styling as WorldPositionSetButton. Triggers the
|
|
1230
|
+
* picker on click and calls `onPick` with the result (or never fires on
|
|
1231
|
+
* cancel).
|
|
1232
|
+
*/
|
|
1233
|
+
declare function DoorPickerButton({ onPick, compact, label, tooltip, }: {
|
|
1234
|
+
onPick: (picked: PickedDoorGroup) => void;
|
|
1235
|
+
compact?: boolean;
|
|
1236
|
+
/** Override the button label. Defaults to locale("PickDoor"). */
|
|
1237
|
+
label?: string;
|
|
1238
|
+
/** Override the tooltip. Defaults to locale("PickDoorTooltip"). */
|
|
1239
|
+
tooltip?: string;
|
|
1240
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1241
|
+
|
|
1242
|
+
type MapStyle = "game" | "render" | "print";
|
|
1243
|
+
type MapProps = {
|
|
1244
|
+
children?: ReactNode;
|
|
1245
|
+
initialZoom?: number;
|
|
1246
|
+
initialCenter?: [number, number];
|
|
1247
|
+
mapStyle?: MapStyle;
|
|
1248
|
+
className?: string;
|
|
1249
|
+
};
|
|
1250
|
+
declare const Map: React$1.MemoExoticComponent<({ children, initialZoom, initialCenter, mapStyle, }: MapProps) => react_jsx_runtime.JSX.Element>;
|
|
1251
|
+
type MapLayerProps = {
|
|
1252
|
+
mapLayer: MapStyle;
|
|
1253
|
+
};
|
|
1254
|
+
declare const MapLayer: ({ mapLayer }: MapLayerProps) => null;
|
|
1255
|
+
declare function ZoomControls(): react_jsx_runtime.JSX.Element;
|
|
1256
|
+
|
|
1257
|
+
type BlipMarkerProps = {
|
|
1258
|
+
/** Game-world coordinates. z is ignored; map is 2D. */
|
|
1259
|
+
position: {
|
|
1260
|
+
x: number;
|
|
1261
|
+
y: number;
|
|
1262
|
+
};
|
|
1263
|
+
/** Blip sprite id (0..830ish) — see BLIP_ENTRIES. */
|
|
1264
|
+
sprite?: number | null;
|
|
1265
|
+
/** Blip color id (0..85) — see BLIP_COLORS. */
|
|
1266
|
+
color?: number | null;
|
|
1267
|
+
/** Display scale multiplier. Default 1.0 → ~3vh visual size. */
|
|
1268
|
+
scale?: number;
|
|
1269
|
+
/** Click handler. Fires `e.originalEvent.stopPropagation()` before yours. */
|
|
1270
|
+
onClick?: () => void;
|
|
1271
|
+
/** When true, marker gets a brighter glow + bigger size to indicate
|
|
1272
|
+
* this is the currently-selected entry. */
|
|
1273
|
+
selected?: boolean;
|
|
1274
|
+
/** When true, marker is rendered at low opacity and clicks no-op —
|
|
1275
|
+
* for "this entry is broken / unavailable" states. */
|
|
1276
|
+
disabled?: boolean;
|
|
1277
|
+
/** Sprite id used when `sprite` is null/missing. Defaults to 162
|
|
1278
|
+
* (radar_poi — neutral grey dot). */
|
|
1279
|
+
fallbackSprite?: number;
|
|
1280
|
+
/** Color id used when `color` is null/missing. Defaults to 0 (white). */
|
|
1281
|
+
fallbackColor?: number;
|
|
1282
|
+
};
|
|
1283
|
+
declare function BlipMarker({ position, sprite, color, scale, onClick, selected, disabled, fallbackSprite, fallbackColor, }: BlipMarkerProps): react_jsx_runtime.JSX.Element;
|
|
1284
|
+
|
|
1285
|
+
type ActiveTool<Result = unknown> = {
|
|
1286
|
+
/** Tool id matching the SendNUIMessage event names from Lua. */
|
|
1287
|
+
id: string;
|
|
1288
|
+
/** Title shown in the InstructionPanel header. */
|
|
1289
|
+
title: string;
|
|
1290
|
+
/** Optional sub-text under the title. */
|
|
1291
|
+
hint?: string;
|
|
1292
|
+
/** Key bindings shown as labelled key caps. */
|
|
1293
|
+
keys?: {
|
|
1294
|
+
key: string;
|
|
1295
|
+
action: string;
|
|
1296
|
+
}[];
|
|
1297
|
+
/** Resolve handler for the in-flight Promise. */
|
|
1298
|
+
resolve: (v: Result | null) => void;
|
|
1299
|
+
};
|
|
1300
|
+
type AdminToolStore = {
|
|
1301
|
+
active: ActiveTool | null;
|
|
1302
|
+
/**
|
|
1303
|
+
* Begin a tool flow. Returns a Promise resolving to the tool's typed
|
|
1304
|
+
* result (or null on cancel / replacement). Replaces any currently-active
|
|
1305
|
+
* tool by cancelling it first — only one in-world prompt at a time.
|
|
1306
|
+
*/
|
|
1307
|
+
begin: <Result>(spec: Omit<ActiveTool<Result>, "resolve">) => Promise<Result | null>;
|
|
1308
|
+
/** Settle the currently-active tool with a value (called by SendNUIMessage handler). */
|
|
1309
|
+
resolveActive: (value: unknown) => void;
|
|
1310
|
+
/** Cancel the currently-active tool (called by SendNUIMessage handler or programmatic cancel). */
|
|
1311
|
+
cancelActive: () => void;
|
|
1312
|
+
};
|
|
1313
|
+
declare const useAdminToolStore: zustand.UseBoundStore<zustand.StoreApi<AdminToolStore>>;
|
|
1314
|
+
|
|
1315
|
+
export { AccountSelect, type AccountSelectProps, type ActiveTool, AdminPageTitle, type AdminPageTitleProps, AnimPostFxSelect, type AnimPostFxSelectProps, AsyncSaveButton, BlipColorSelect, type BlipColorSelectProps, BlipDisplaySelect, type BlipDisplaySelectProps, BlipIconSelect, type BlipIconSelectProps, BlipMarker, type BlipMarkerProps, BorderedIcon, type BorderedIconProps, type ButtonProps, ConfigPanel, type ConfigPanelProps, ConfirmModal, type ConfirmModalProps, ControlMultiSelect, type ControlMultiSelectProps, ControlSelect, type ControlSelectProps, Counter, type DiscordRole, DiscordRoleSelect, type DiscordRoleSelectProps, DoorPickerButton, type FiveMControls, FiveMKeyBindInput, FloatingParticles, type FloatingParticlesProps, type FrameworkAccount, GroupName, type GroupNameProps, GroupRank, type GroupRankProps, GroupSelect, type GroupSelectProps, type GroupType, type GroupValue, InfoBox, type InfoBoxProps, InputContainer, type InputContainerProps, type InstructionKey, InstructionPanel, type InstructionPanelProps, LevelBanner, LevelPanel, Map, MapLayer, type MapProps, type MapStyle, MissingItemsBanner, Modal, ModalContext, type ModalProps, ModalProvider, MotionFlex, MotionIcon, MotionImage, MotionText, NavBar, type NavItem, NavigationContext, NavigationProvider, type NavigationStore, type ParticleState, type PickedDoor, type PickedDoorGroup, PlayerSelect, type PlayerSelectProps, PositionPicker, type PositionPickerProps, type ProgressProps, type Prompt, type PromptButton, PromptModal, ScenarioSelect, type ScenarioSelectProps, type SegmentProps, SegmentedControl, type SegmentedControlProps, SegmentedProgress, SelectItem, type SelectItemProps, type StoreModalProps, SwitchPanel, type SwitchPanelProps, TestBed, type TestBedItem, type TestBedPlacement, type TestBedProps, ThemeOverrideSection, type ThemeOverrideSectionProps, type ThemeOverrideValue, Title, type TitleProps, type TitleSize, Vector4DeleteButton, Vector4Display, type Vector4Value, WorldPositionGotoButton, WorldPositionPicker, type WorldPositionPickerSlot, WorldPositionSetButton, ZoomControls, blipUrl, blipUrlForSprite, getBlipColor, getBlipEntry, useAdminToolStore, useMissingItemsAudit, useModal, useModalActions, useNavigation, useNavigationStore, usePickDoor };
|