dirk-cfx-react 1.0.35 → 1.0.36

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/index.cjs CHANGED
@@ -241,8 +241,6 @@ var useNuiEvent = (action, handler) => {
241
241
  return () => window.removeEventListener("message", eventListener);
242
242
  }, [action]);
243
243
  };
244
-
245
- // src/utils/fetchNui.ts
246
244
  async function fetchNui(eventName, data, mockData) {
247
245
  const options = {
248
246
  method: "post",
@@ -251,8 +249,9 @@ async function fetchNui(eventName, data, mockData) {
251
249
  },
252
250
  body: JSON.stringify(data)
253
251
  };
254
- if (isEnvBrowser() && mockData !== void 0) return mockData;
255
- if (isEnvBrowser()) {
252
+ console.log(mockData);
253
+ if (isEnvBrowser() && mockData) return mockData;
254
+ if (isEnvBrowser() && mockData === void 0) {
256
255
  console.warn(
257
256
  `[fetchNui] Called fetchNui for event "${eventName}" in browser environment without mockData. Returning empty object.`
258
257
  );
@@ -260,20 +259,31 @@ async function fetchNui(eventName, data, mockData) {
260
259
  }
261
260
  const resourceName = window.GetParentResourceName ? window.GetParentResourceName() : "nui-frame-app";
262
261
  const resp = await fetch(`https://${resourceName}/${eventName}`, options);
263
- const respFormatted = await resp.json();
264
- return respFormatted;
262
+ return await resp.json();
265
263
  }
266
- function fetchOnLoad(eventName, data, mockData) {
267
- return fetchNui(eventName, data, mockData).catch((err) => {
268
- console.error(`[fetchOnLoad] Failed for ${eventName}:`, err);
269
- throw err;
270
- });
264
+ var initialFetches = {};
265
+ async function registerInitialFetch(eventName, data, mockData) {
266
+ const fetcher = () => fetchNui(eventName, data, mockData);
267
+ initialFetches[eventName] = fetcher;
268
+ return fetcher();
271
269
  }
272
- var fetchLuaTable = (tableName) => () => {
273
- if (isEnvBrowser()) {
274
- return Promise.resolve({});
275
- }
276
- return fetchNui("GET_LUA_TABLE", { tableName });
270
+ async function runFetches() {
271
+ return Promise.all(
272
+ Object.entries(initialFetches).map(async ([eventName, fetcher]) => {
273
+ const data = await fetcher();
274
+ return { eventName, data };
275
+ })
276
+ );
277
+ }
278
+ var useAutoFetcher = () => {
279
+ react.useEffect(() => {
280
+ if (isEnvBrowser()) return;
281
+ const run = async () => {
282
+ const results = await runFetches();
283
+ console.log("[useAutoFetcher] Fetched initial data:", results);
284
+ };
285
+ run();
286
+ }, []);
277
287
  };
278
288
 
279
289
  // src/utils/internalEvent.ts
@@ -309,9 +319,454 @@ var localeStore = zustand.create((set, get) => {
309
319
  };
310
320
  });
311
321
  var locale = localeStore.getState().locale;
312
- fetchOnLoad("GET_LOCALES").then((data) => {
322
+ registerInitialFetch("GET_LOCALES", void 0).then((data) => {
313
323
  localeStore.setState({ locales: data });
314
324
  });
325
+ var useProfanityStore = zustand.create(() => [
326
+ "ars3",
327
+ "a55",
328
+ "a55hole",
329
+ "ahole",
330
+ "anus",
331
+ "ash0le",
332
+ "ash0les",
333
+ "asholes",
334
+ "4r5e",
335
+ "5h1t",
336
+ "5hit",
337
+ "a55",
338
+ "anal",
339
+ "anus",
340
+ "ar5e",
341
+ "arrse",
342
+ "arse",
343
+ "ass",
344
+ "ass-fucker",
345
+ "asses",
346
+ "assfucker",
347
+ "assfukka",
348
+ "asshole",
349
+ "assholes",
350
+ "asswhole",
351
+ "a_s_s",
352
+ "b!tch",
353
+ "b00bs",
354
+ "b17ch",
355
+ "b1tch",
356
+ "ballsack",
357
+ "beastial",
358
+ "beastiality",
359
+ "bestial",
360
+ "bestiality",
361
+ "bi+ch",
362
+ "biatch",
363
+ "bitch",
364
+ "bitcher",
365
+ "bitchers",
366
+ "bitches",
367
+ "bitchin",
368
+ "bitching",
369
+ "blow job",
370
+ "blowjob",
371
+ "blowjobs",
372
+ "boiolas",
373
+ "bollock",
374
+ "bollok",
375
+ "boner",
376
+ "boob",
377
+ "boobs",
378
+ "booobs",
379
+ "boooobs",
380
+ "booooobs",
381
+ "booooooobs",
382
+ "breasts",
383
+ "buceta",
384
+ "bunny fucker",
385
+ "butthole",
386
+ "buttmuch",
387
+ "buttplug",
388
+ "c0ck",
389
+ "c0cksucker",
390
+ "carpet muncher",
391
+ "chink",
392
+ "cipa",
393
+ "cl1t",
394
+ "clit",
395
+ "clitoris",
396
+ "clits",
397
+ "cnut",
398
+ "cock",
399
+ "cock-sucker",
400
+ "cockface",
401
+ "cockhead",
402
+ "cockmunch",
403
+ "cockmuncher",
404
+ "cocks",
405
+ "cocksuck",
406
+ "cocksucked",
407
+ "cocksucker",
408
+ "cocksucking",
409
+ "cocksucks",
410
+ "cocksuka",
411
+ "cocksukka",
412
+ "cokmuncher",
413
+ "coksucka",
414
+ "coon",
415
+ "cum",
416
+ "cummer",
417
+ "cumming",
418
+ "cums",
419
+ "cumshot",
420
+ "cunilingus",
421
+ "cunillingus",
422
+ "cunnilingus",
423
+ "cunt",
424
+ "cuntlick",
425
+ "cuntlicker",
426
+ "cuntlicking",
427
+ "cunts",
428
+ "cyalis",
429
+ "cyberfuc",
430
+ "cyberfuck",
431
+ "cyberfucked",
432
+ "cyberfucker",
433
+ "cyberfuckers",
434
+ "cyberfucking",
435
+ "d1ck",
436
+ "dlck",
437
+ "dog-fucker",
438
+ "doggin",
439
+ "dogging",
440
+ "donkeyribber",
441
+ "dyke",
442
+ "ejaculate",
443
+ "ejaculated",
444
+ "ejaculates",
445
+ "ejaculating",
446
+ "ejaculatings",
447
+ "ejaculation",
448
+ "ejakulate",
449
+ "f u c k",
450
+ "f u c k e r",
451
+ "f4nny",
452
+ "fag",
453
+ "fagging",
454
+ "faggitt",
455
+ "faggot",
456
+ "faggs",
457
+ "fagot",
458
+ "fagots",
459
+ "fags",
460
+ "fannyflaps",
461
+ "fannyfucker",
462
+ "fatass",
463
+ "fcuk",
464
+ "fcuker",
465
+ "fcuking",
466
+ "feck",
467
+ "fecker",
468
+ "felching",
469
+ "fellate",
470
+ "fellatio",
471
+ "fingerfuck",
472
+ "fingerfucked",
473
+ "fingerfucker",
474
+ "fingerfuckers",
475
+ "fingerfucking",
476
+ "fingerfucks",
477
+ "fistfuck",
478
+ "fistfucked",
479
+ "fistfucker",
480
+ "fistfuckers",
481
+ "fistfucking",
482
+ "fistfuckings",
483
+ "fistfucks",
484
+ "fuck",
485
+ "fucka",
486
+ "fucked",
487
+ "fucker",
488
+ "fuckers",
489
+ "fuckhead",
490
+ "fuckheads",
491
+ "fuckin",
492
+ "fucking",
493
+ "fuckings",
494
+ "fuckingshitmotherfucker",
495
+ "fuckme",
496
+ "fucks",
497
+ "fuckwhit",
498
+ "fuckwit",
499
+ "fudge packer",
500
+ "fudgepacker",
501
+ "fuk",
502
+ "fuker",
503
+ "fukker",
504
+ "fukkin",
505
+ "fuks",
506
+ "fukwhit",
507
+ "fukwit",
508
+ "fux",
509
+ "fux0r",
510
+ "f_u_c_k",
511
+ "gangbang",
512
+ "gangbanged",
513
+ "gangbangs",
514
+ "gaysex",
515
+ "God",
516
+ "god-dam",
517
+ "god-damned",
518
+ "goddamn",
519
+ "goddamned",
520
+ "homo",
521
+ "jack-off",
522
+ "jerk-off",
523
+ "l3i+ch",
524
+ "l3itch",
525
+ "labia",
526
+ "lusting",
527
+ "m0f0",
528
+ "m0fo",
529
+ "m45terbate",
530
+ "ma5terb8",
531
+ "ma5terbate",
532
+ "masochist",
533
+ "master-bate",
534
+ "masterb8",
535
+ "masterbat*",
536
+ "masterbat3",
537
+ "masterbate",
538
+ "masterbation",
539
+ "masterbations",
540
+ "masturbate",
541
+ "mo-fo",
542
+ "mof0",
543
+ "mothafuck",
544
+ "mothafucka",
545
+ "mothafuckas",
546
+ "mothafuckaz",
547
+ "mothafucked",
548
+ "mothafucker",
549
+ "mothafuckers",
550
+ "mothafuckin",
551
+ "mothafucking",
552
+ "mothafuckings",
553
+ "mothafucks",
554
+ "mother fucker",
555
+ "motherfuck",
556
+ "motherfucked",
557
+ "motherfucker",
558
+ "motherfuckers",
559
+ "motherfuckin",
560
+ "motherfucking",
561
+ "motherfuckings",
562
+ "motherfuckka",
563
+ "motherfucks",
564
+ "muthafecker",
565
+ "muthafuckker",
566
+ "mutherfucker",
567
+ "n1gga",
568
+ "n1gger",
569
+ "nazi",
570
+ "nigg3r",
571
+ "nigg4h",
572
+ "nigga",
573
+ "niggah",
574
+ "niggas",
575
+ "niggaz",
576
+ "nigger",
577
+ "niggers",
578
+ "nob jokey",
579
+ "nobjocky",
580
+ "nobjokey",
581
+ "orgasim",
582
+ "orgasims",
583
+ "orgasm",
584
+ "orgasms",
585
+ "p0rn",
586
+ "penis",
587
+ "penisfucker",
588
+ "phonesex",
589
+ "phuck",
590
+ "phuked",
591
+ "phuking",
592
+ "phukked",
593
+ "phukking",
594
+ "phuks",
595
+ "phuq",
596
+ "pigfucker",
597
+ "pimpis",
598
+ "piss",
599
+ "pissed",
600
+ "pisser",
601
+ "pissers",
602
+ "pisses",
603
+ "pissflaps",
604
+ "pissin",
605
+ "pissing",
606
+ "pissoff",
607
+ "poop",
608
+ "porn",
609
+ "porno",
610
+ "pornography",
611
+ "pornos",
612
+ "prick",
613
+ "pricks",
614
+ "pron",
615
+ "pube",
616
+ "pusse",
617
+ "pussi",
618
+ "pussies",
619
+ "pussy",
620
+ "pussys",
621
+ "rectum",
622
+ "retard",
623
+ "rimjaw",
624
+ "rimming",
625
+ "s hit",
626
+ "s.o.b.",
627
+ "scroat",
628
+ "scrote",
629
+ "scrotum",
630
+ "semen",
631
+ "sex",
632
+ "sh!+",
633
+ "sh!t",
634
+ "sh1t",
635
+ "shemale",
636
+ "shit",
637
+ "shitdick",
638
+ "shite",
639
+ "shited",
640
+ "shitey",
641
+ "shitfuck",
642
+ "shitfull",
643
+ "shithead",
644
+ "shiting",
645
+ "shitings",
646
+ "shits",
647
+ "shitted",
648
+ "shitter",
649
+ "shitters",
650
+ "shitting",
651
+ "shittings",
652
+ "shitty",
653
+ "skank",
654
+ "slut",
655
+ "sluts",
656
+ "smegma",
657
+ "smut",
658
+ "son-of-a-bitch",
659
+ "spac",
660
+ "s_h_i_t",
661
+ "t1tt1e5",
662
+ "t1tties",
663
+ "teets",
664
+ "teez",
665
+ "testical",
666
+ "testicle",
667
+ "titfuck",
668
+ "tits",
669
+ "titt",
670
+ "tittie5",
671
+ "tittiefucker",
672
+ "titties",
673
+ "tittyfuck",
674
+ "tittywank",
675
+ "titwank",
676
+ "tosser",
677
+ "tw4t",
678
+ "twat",
679
+ "twathead",
680
+ "twatty",
681
+ "twunt",
682
+ "twunter",
683
+ "v14gra",
684
+ "v1gra",
685
+ "vagina",
686
+ "viagra",
687
+ "vulva",
688
+ "w00se",
689
+ "whoar",
690
+ "whore",
691
+ "xrated"
692
+ ]);
693
+ var isProfanity = (word) => {
694
+ const all = useProfanityStore.getState();
695
+ const profanityArray = Array.isArray(all) ? all : typeof all === "object" && all !== null ? Object.values(all) : [];
696
+ return profanityArray.includes(word);
697
+ };
698
+ function calculateXPForLevel(level, settings) {
699
+ if (level < settings.baseLevel) return 0;
700
+ if (level === 1) return 0;
701
+ if (level === 2) return settings.baseXP;
702
+ let totalXP = settings.baseXP;
703
+ for (let i = 2; i <= level - 1; i++) {
704
+ const baseRuneScapeXP = Math.floor((i + 300 * 2 ** (i / 7)) / 4);
705
+ totalXP += baseRuneScapeXP * settings.modifier;
706
+ }
707
+ return Math.floor(totalXP);
708
+ }
709
+ function generateLevelMap(settings) {
710
+ const levelMap = {};
711
+ for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {
712
+ levelMap[level.toString()] = calculateXPForLevel(level, settings);
713
+ }
714
+ return levelMap;
715
+ }
716
+ function getLevelFromXP(xp, levelMap, settings) {
717
+ for (let level = settings.baseLevel; level <= settings.maxLevel; level++) {
718
+ const xpForLevel = levelMap[level.toString()];
719
+ if (xpForLevel > xp) return level - 1;
720
+ }
721
+ return settings.maxLevel;
722
+ }
723
+ function createSkill(defaultSettings) {
724
+ const useStore2 = zustand.create((set) => ({
725
+ settings: defaultSettings,
726
+ levelMap: generateLevelMap(defaultSettings),
727
+ setSettings: (updater) => set((state) => {
728
+ const newSettings = typeof updater === "function" ? updater(state.settings) : updater;
729
+ return {
730
+ settings: newSettings,
731
+ levelMap: generateLevelMap(newSettings)
732
+ };
733
+ })
734
+ }));
735
+ const useSkill = (xp) => {
736
+ const { settings, levelMap } = useStore2();
737
+ return react.useMemo(() => {
738
+ const currentLevel = getLevelFromXP(xp, levelMap, settings);
739
+ const nextLevel = Math.min(currentLevel + 1, settings.maxLevel);
740
+ const currentLevelXP = levelMap[currentLevel.toString()] || 0;
741
+ const nextLevelXP = levelMap[nextLevel.toString()] || 0;
742
+ const xpInCurrentLevel = xp - currentLevelXP;
743
+ const xpRequiredForLevel = nextLevelXP - currentLevelXP;
744
+ const progressToLevel = xpRequiredForLevel > 0 ? xpInCurrentLevel / xpRequiredForLevel * 100 : 100;
745
+ const xpToNextLevel = Math.max(0, nextLevelXP - xp);
746
+ return {
747
+ currentLevel,
748
+ nextLevel,
749
+ currentLevelXP,
750
+ nextLevelXP,
751
+ progressToLevel: Math.min(100, Math.max(0, progressToLevel)),
752
+ xpToNextLevel
753
+ };
754
+ }, [xp, levelMap, settings]);
755
+ };
756
+ const skill = {
757
+ get settings() {
758
+ return useStore2.getState().settings;
759
+ },
760
+ setSettings: (updater) => {
761
+ useStore2.getState().setSettings(updater);
762
+ },
763
+ useSettings: () => useStore2((state) => state.settings)
764
+ };
765
+ return {
766
+ skill,
767
+ useSkill
768
+ };
769
+ }
315
770
  var theme = core.createTheme({
316
771
  primaryColor: "dirk",
317
772
  primaryShade: 9,
@@ -431,9 +886,10 @@ var theme = core.createTheme({
431
886
  var theme_default = theme;
432
887
  fontawesomeSvgCore.library.add(freeSolidSvgIcons.fas, freeRegularSvgIcons.far, freeBrandsSvgIcons.fab);
433
888
  var useSettings = zustand.create((set) => ({
434
- game: "rdr3",
435
- primaryColor: "teal",
436
- primaryShade: 6,
889
+ game: "fivem",
890
+ primaryColor: "dirk",
891
+ primaryShade: 9,
892
+ itemImgPath: "https://assets.dirkcfx.com/items/",
437
893
  customTheme: {}
438
894
  }));
439
895
  function DirkProvider(props) {
@@ -457,6 +913,7 @@ function DirkProvider(props) {
457
913
  console.log(`Game set to ${game}, applied corresponding font family.: ${document.body.style.fontFamily}`);
458
914
  });
459
915
  }, [game]);
916
+ useAutoFetcher();
460
917
  return /* @__PURE__ */ jsxRuntime.jsx(core.MantineProvider, { theme: mergedTheme, defaultColorScheme: "dark", children: /* @__PURE__ */ jsxRuntime.jsx(Wrapper, { children: props.children }) });
461
918
  }
462
919
  function Wrapper({ children }) {
@@ -1226,7 +1683,6 @@ function Title(props) {
1226
1683
  return /* @__PURE__ */ jsxRuntime.jsx(
1227
1684
  core.Flex,
1228
1685
  {
1229
- mt: props.mt,
1230
1686
  direction: "column",
1231
1687
  bg: props.bg || "transparent",
1232
1688
  gap: "xs",
@@ -1320,20 +1776,25 @@ exports.Title = Title;
1320
1776
  exports.TornEdgeSVGFilter = TornEdgeSVGFilter;
1321
1777
  exports.colorWithAlpha = colorWithAlpha;
1322
1778
  exports.copyToClipboard = copyToClipboard;
1323
- exports.fetchLuaTable = fetchLuaTable;
1779
+ exports.createSkill = createSkill;
1324
1780
  exports.fetchNui = fetchNui;
1325
- exports.fetchOnLoad = fetchOnLoad;
1781
+ exports.initialFetches = initialFetches;
1326
1782
  exports.internalEvent = internalEvent;
1327
1783
  exports.isEnvBrowser = isEnvBrowser;
1784
+ exports.isProfanity = isProfanity;
1328
1785
  exports.locale = locale;
1329
1786
  exports.localeStore = localeStore;
1330
1787
  exports.noop = noop;
1331
1788
  exports.numberToRoman = numberToRoman;
1332
1789
  exports.openLink = openLink;
1790
+ exports.registerInitialFetch = registerInitialFetch;
1791
+ exports.runFetches = runFetches;
1333
1792
  exports.splitFAString = splitFAString;
1793
+ exports.useAutoFetcher = useAutoFetcher;
1334
1794
  exports.useNavigation = useNavigation;
1335
1795
  exports.useNavigationStore = useNavigationStore;
1336
1796
  exports.useNuiEvent = useNuiEvent;
1797
+ exports.useProfanityStore = useProfanityStore;
1337
1798
  exports.useSettings = useSettings;
1338
1799
  exports.useTornEdges = useTornEdges;
1339
1800
  //# sourceMappingURL=index.cjs.map