@carlonicora/nextjs-jsonapi 1.131.1 → 1.131.2

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.
@@ -7490,7 +7490,7 @@ import { Fragment as Fragment19, createContext as createContext12, useContext as
7490
7490
  import { useAtom } from "jotai";
7491
7491
  import { atomWithStorage } from "jotai/utils";
7492
7492
  import { usePathname } from "next/navigation";
7493
- import { createContext as createContext9, useCallback as useCallback11, useContext as useContext10, useEffect as useEffect9, useRef as useRef10, useState as useState10 } from "react";
7493
+ import { createContext as createContext9, useCallback as useCallback11, useContext as useContext10, useEffect as useEffect9, useMemo as useMemo9, useRef as useRef10, useState as useState10 } from "react";
7494
7494
 
7495
7495
  // src/contexts/SocketContext.tsx
7496
7496
  import { createContext as createContext8, useContext as useContext9 } from "react";
@@ -7557,11 +7557,23 @@ var CurrentUserProvider = /* @__PURE__ */ __name(({ children }) => {
7557
7557
  const descriptor = Object.getOwnPropertyDescriptor(Modules, matchedModuleKey);
7558
7558
  return descriptor?.get?.call(Modules);
7559
7559
  }, "matchUrlToModule");
7560
- const currentUser = dehydratedUser ? rehydrate(Modules.User, dehydratedUser) : null;
7561
- const company = currentUser?.company ?? null;
7560
+ const currentUser = useMemo9(
7561
+ () => dehydratedUser ? rehydrate(Modules.User, dehydratedUser) : null,
7562
+ [dehydratedUser]
7563
+ );
7564
+ const [tokenOverride, setTokenOverride] = useState10(null);
7565
+ const company = useMemo9(() => {
7566
+ const c = currentUser?.company ?? null;
7567
+ if (!c || !tokenOverride) return c;
7568
+ return Object.assign(Object.create(Object.getPrototypeOf(c)), c, {
7569
+ _availableMonthlyTokens: tokenOverride.availableMonthlyTokens,
7570
+ _availableExtraTokens: tokenOverride.availableExtraTokens
7571
+ });
7572
+ }, [currentUser, tokenOverride]);
7562
7573
  const setUser = /* @__PURE__ */ __name((user) => {
7563
7574
  if (user) setDehydratedUser(user.dehydrate());
7564
7575
  else setDehydratedUser(null);
7576
+ setTokenOverride(null);
7565
7577
  }, "setUser");
7566
7578
  const hasRole = /* @__PURE__ */ __name((roleId) => {
7567
7579
  if (!currentUser) return false;
@@ -7618,6 +7630,7 @@ var CurrentUserProvider = /* @__PURE__ */ __name(({ children }) => {
7618
7630
  });
7619
7631
  }
7620
7632
  setDehydratedUser(fullUser.dehydrate());
7633
+ setTokenOverride(null);
7621
7634
  }
7622
7635
  } catch (error) {
7623
7636
  console.error("Failed to refresh user data:", error);
@@ -7635,19 +7648,26 @@ var CurrentUserProvider = /* @__PURE__ */ __name(({ children }) => {
7635
7648
  if (!socket || !isConnected || !currentUser?.company?.id) {
7636
7649
  return;
7637
7650
  }
7638
- const handleCompanyUpdate = /* @__PURE__ */ __name((data) => {
7651
+ const handleTokensUpdated = /* @__PURE__ */ __name((data) => {
7652
+ if (data.companyId !== currentUser.company?.id) return;
7653
+ setTokenOverride({
7654
+ availableMonthlyTokens: data.availableMonthlyTokens,
7655
+ availableExtraTokens: data.availableExtraTokens
7656
+ });
7657
+ }, "handleTokensUpdated");
7658
+ const handleSubscriptionUpdated = /* @__PURE__ */ __name((data) => {
7639
7659
  if (data.companyId === currentUser.company?.id && !isRefreshingRef.current) {
7640
7660
  isRefreshingRef.current = true;
7641
7661
  refreshUserRef.current({ skipCookieUpdate: true }).finally(() => {
7642
7662
  isRefreshingRef.current = false;
7643
7663
  });
7644
7664
  }
7645
- }, "handleCompanyUpdate");
7646
- socket.on("company:tokens_updated", handleCompanyUpdate);
7647
- socket.on("company:subscription_updated", handleCompanyUpdate);
7665
+ }, "handleSubscriptionUpdated");
7666
+ socket.on("company:tokens_updated", handleTokensUpdated);
7667
+ socket.on("company:subscription_updated", handleSubscriptionUpdated);
7648
7668
  return () => {
7649
- socket.off("company:tokens_updated", handleCompanyUpdate);
7650
- socket.off("company:subscription_updated", handleCompanyUpdate);
7669
+ socket.off("company:tokens_updated", handleTokensUpdated);
7670
+ socket.off("company:subscription_updated", handleSubscriptionUpdated);
7651
7671
  };
7652
7672
  }, [socket, isConnected, currentUser?.company?.id]);
7653
7673
  return /* @__PURE__ */ jsx58(
@@ -7854,7 +7874,7 @@ __name(UserDeleter, "UserDeleter");
7854
7874
  // src/features/user/components/forms/UserEditor.tsx
7855
7875
  import { zodResolver } from "@hookform/resolvers/zod";
7856
7876
  import { useTranslations as useTranslations5 } from "next-intl";
7857
- import { useCallback as useCallback12, useEffect as useEffect12, useMemo as useMemo9, useState as useState13 } from "react";
7877
+ import { useCallback as useCallback12, useEffect as useEffect12, useMemo as useMemo10, useState as useState13 } from "react";
7858
7878
  import { useForm } from "react-hook-form";
7859
7879
  import { v4 } from "uuid";
7860
7880
  import { z } from "zod";
@@ -7918,7 +7938,7 @@ function UserEditorInternal({
7918
7938
  setContentType(null);
7919
7939
  }
7920
7940
  }, [file, company]);
7921
- const formSchema = useMemo9(
7941
+ const formSchema = useMemo10(
7922
7942
  () => z.object({
7923
7943
  id: z.uuidv4(),
7924
7944
  name: z.string().min(1, { message: t(`user.fields.name.error`) }),
@@ -8126,7 +8146,7 @@ __name(UserEditor, "UserEditor");
8126
8146
  import { useTranslations as useTranslations6 } from "next-intl";
8127
8147
 
8128
8148
  // src/components/forms/EntityMultiSelector.tsx
8129
- import { useCallback as useCallback13, useEffect as useEffect13, useMemo as useMemo10, useRef as useRef11, useState as useState14 } from "react";
8149
+ import { useCallback as useCallback13, useEffect as useEffect13, useMemo as useMemo11, useRef as useRef11, useState as useState14 } from "react";
8130
8150
  import { useWatch } from "react-hook-form";
8131
8151
  import { CheckIcon as CheckIcon8, ChevronDownIcon as ChevronDownIcon7, SearchIcon as SearchIcon2, XIcon as XIcon5 } from "lucide-react";
8132
8152
 
@@ -8217,7 +8237,7 @@ function EntityMultiSelector({
8217
8237
  return fn ? fn(entity) : { id: entity.id, name: getLabelRef.current(entity) };
8218
8238
  }, []);
8219
8239
  const selectedValues = useWatch({ control: form.control, name: id }) || [];
8220
- const selectedIds = useMemo10(() => new Set(selectedValues.map((v) => v.id)), [selectedValues]);
8240
+ const selectedIds = useMemo11(() => new Set(selectedValues.map((v) => v.id)), [selectedValues]);
8221
8241
  const data = useDataListRetriever({
8222
8242
  retriever: /* @__PURE__ */ __name((params) => retriever(params), "retriever"),
8223
8243
  retrieverParams,
@@ -8299,7 +8319,7 @@ function EntityMultiSelector({
8299
8319
  },
8300
8320
  [form, id, options]
8301
8321
  );
8302
- const sortedOptions = useMemo10(() => {
8322
+ const sortedOptions = useMemo11(() => {
8303
8323
  const filtered = searchTerm.trim() ? options.filter((o) => o.label.toLowerCase().includes(searchTerm.trim().toLowerCase())) : options;
8304
8324
  return [...filtered].sort((a, b) => {
8305
8325
  const aSelected = selectedIds.has(a.id) ? 0 : 1;
@@ -8307,7 +8327,7 @@ function EntityMultiSelector({
8307
8327
  return aSelected - bSelected;
8308
8328
  });
8309
8329
  }, [options, selectedIds, searchTerm]);
8310
- const triggerSummary = useMemo10(() => {
8330
+ const triggerSummary = useMemo11(() => {
8311
8331
  if (selectedValues.length === 0) return null;
8312
8332
  return selectedValues.map((v) => stableGetFormValueLabel(v)).join(", ");
8313
8333
  }, [selectedValues, stableGetFormValueLabel]);
@@ -9060,7 +9080,7 @@ __name(CurrencyInput, "CurrencyInput");
9060
9080
  // src/components/forms/DatePickerPopover.tsx
9061
9081
  import { isValid, parse } from "date-fns";
9062
9082
  import { Calendar as CalendarIcon, CircleXIcon } from "lucide-react";
9063
- import { useMemo as useMemo11, useState as useState20 } from "react";
9083
+ import { useMemo as useMemo12, useState as useState20 } from "react";
9064
9084
  import { jsx as jsx80, jsxs as jsxs46 } from "react/jsx-runtime";
9065
9085
  var DatePickerPopover = /* @__PURE__ */ __name(({
9066
9086
  children,
@@ -9074,12 +9094,12 @@ var DatePickerPopover = /* @__PURE__ */ __name(({
9074
9094
  const dateFnsLocale = useI18nDateFnsLocale();
9075
9095
  const [isOpen, setIsOpen] = useState20(false);
9076
9096
  const [displayMonth, setDisplayMonth] = useState20(() => value || /* @__PURE__ */ new Date());
9077
- const dateFormatter = useMemo11(
9097
+ const dateFormatter = useMemo12(
9078
9098
  () => new Intl.DateTimeFormat(locale, { day: "2-digit", month: "2-digit", year: "numeric" }),
9079
9099
  [locale]
9080
9100
  );
9081
9101
  const formatDate = /* @__PURE__ */ __name((date) => dateFormatter.format(date), "formatDate");
9082
- const datePlaceholder = useMemo11(() => {
9102
+ const datePlaceholder = useMemo12(() => {
9083
9103
  const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
9084
9104
  return parts.map((part) => {
9085
9105
  if (part.type === "day") return "dd";
@@ -9088,7 +9108,7 @@ var DatePickerPopover = /* @__PURE__ */ __name(({
9088
9108
  return part.value;
9089
9109
  }).join("");
9090
9110
  }, [dateFormatter]);
9091
- const dateFormatPattern = useMemo11(() => {
9111
+ const dateFormatPattern = useMemo12(() => {
9092
9112
  const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
9093
9113
  return parts.map((part) => {
9094
9114
  if (part.type === "day") return "dd";
@@ -9100,7 +9120,7 @@ var DatePickerPopover = /* @__PURE__ */ __name(({
9100
9120
  const [inputValue, setInputValue] = useState20(() => value ? formatDate(value) : "");
9101
9121
  const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
9102
9122
  const yearOptions = Array.from({ length: currentYear - 1900 + 11 }, (_, i) => 1900 + i);
9103
- const monthNames = useMemo11(() => {
9123
+ const monthNames = useMemo12(() => {
9104
9124
  const formatter = new Intl.DateTimeFormat(locale, { month: "long" });
9105
9125
  return Array.from({ length: 12 }, (_, i) => {
9106
9126
  const monthName = formatter.format(new Date(2e3, i, 1));
@@ -9757,7 +9777,7 @@ import {
9757
9777
  useCallback as useCallback18,
9758
9778
  useContext as useContext11,
9759
9779
  useEffect as useEffect19,
9760
- useMemo as useMemo12,
9780
+ useMemo as useMemo13,
9761
9781
  useRef as useRef16,
9762
9782
  useState as useState24
9763
9783
  } from "react";
@@ -9981,7 +10001,7 @@ var FileInput = forwardRef6(
9981
10001
  const t = useTranslations16();
9982
10002
  const rootProps = isLOF ? {} : dropzoneState.getRootProps();
9983
10003
  const { isDragActive: parentIsDragActive } = dropzoneState;
9984
- const acceptedLabels = useMemo12(() => {
10004
+ const acceptedLabels = useMemo13(() => {
9985
10005
  if (!accept) return null;
9986
10006
  const extensions = /* @__PURE__ */ new Set();
9987
10007
  let hasWildcardImages = false;
@@ -10050,7 +10070,7 @@ import { useRef as useRef17 } from "react";
10050
10070
  import dynamic from "next/dynamic";
10051
10071
  import React17 from "react";
10052
10072
  import { jsx as jsx85 } from "react/jsx-runtime";
10053
- var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-PVBZYPMF.mjs"), {
10073
+ var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-F4AKH532.mjs"), {
10054
10074
  ssr: false
10055
10075
  });
10056
10076
  var BlockNoteEditorContainer = React17.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
@@ -10168,7 +10188,7 @@ __name(FormCheckbox, "FormCheckbox");
10168
10188
  // src/components/forms/FormDate.tsx
10169
10189
  import { isValid as isValid2, parse as parse2 } from "date-fns";
10170
10190
  import { Calendar as CalendarIcon3, CircleXIcon as CircleXIcon2 } from "lucide-react";
10171
- import { useMemo as useMemo13, useState as useState25 } from "react";
10191
+ import { useMemo as useMemo14, useState as useState25 } from "react";
10172
10192
  import { jsx as jsx88, jsxs as jsxs52 } from "react/jsx-runtime";
10173
10193
  function FormDate({
10174
10194
  form,
@@ -10190,12 +10210,12 @@ function FormDate({
10190
10210
  const currentValue = form.getValues(id);
10191
10211
  return currentValue || defaultMonth || /* @__PURE__ */ new Date();
10192
10212
  });
10193
- const dateFormatter = useMemo13(
10213
+ const dateFormatter = useMemo14(
10194
10214
  () => new Intl.DateTimeFormat(locale, { day: "2-digit", month: "2-digit", year: "numeric" }),
10195
10215
  [locale]
10196
10216
  );
10197
10217
  const formatDate = /* @__PURE__ */ __name((date) => dateFormatter.format(date), "formatDate");
10198
- const datePlaceholder = useMemo13(() => {
10218
+ const datePlaceholder = useMemo14(() => {
10199
10219
  const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
10200
10220
  return parts.map((part) => {
10201
10221
  if (part.type === "day") return "dd";
@@ -10204,7 +10224,7 @@ function FormDate({
10204
10224
  return part.value;
10205
10225
  }).join("");
10206
10226
  }, [dateFormatter]);
10207
- const dateFormatPattern = useMemo13(() => {
10227
+ const dateFormatPattern = useMemo14(() => {
10208
10228
  const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
10209
10229
  return parts.map((part) => {
10210
10230
  if (part.type === "day") return "dd";
@@ -10309,7 +10329,7 @@ __name(FormDate, "FormDate");
10309
10329
 
10310
10330
  // src/components/forms/FormDateTime.tsx
10311
10331
  import { Calendar as CalendarIcon4, CircleXIcon as CircleXIcon3 } from "lucide-react";
10312
- import { useMemo as useMemo14, useState as useState26 } from "react";
10332
+ import { useMemo as useMemo15, useState as useState26 } from "react";
10313
10333
  import { jsx as jsx89, jsxs as jsxs53 } from "react/jsx-runtime";
10314
10334
  function FormDateTime({
10315
10335
  form,
@@ -10331,7 +10351,7 @@ function FormDateTime({
10331
10351
  const currentValue = form.getValues(id);
10332
10352
  return currentValue || defaultMonth || /* @__PURE__ */ new Date();
10333
10353
  });
10334
- const dateTimeFormatter = useMemo14(
10354
+ const dateTimeFormatter = useMemo15(
10335
10355
  () => new Intl.DateTimeFormat(locale, {
10336
10356
  year: "numeric",
10337
10357
  month: "long",
@@ -11231,12 +11251,12 @@ var useUserSearch = /* @__PURE__ */ __name(() => {
11231
11251
 
11232
11252
  // src/features/user/hooks/useUserTableStructure.tsx
11233
11253
  import { useTranslations as useTranslations19 } from "next-intl";
11234
- import { useMemo as useMemo15 } from "react";
11254
+ import { useMemo as useMemo16 } from "react";
11235
11255
  import { Fragment as Fragment11, jsx as jsx103, jsxs as jsxs64 } from "react/jsx-runtime";
11236
11256
  var useUserTableStructure = /* @__PURE__ */ __name((params) => {
11237
11257
  const t = useTranslations19();
11238
11258
  const generateUrl = usePageUrlGenerator();
11239
- const tableData = useMemo15(() => {
11259
+ const tableData = useMemo16(() => {
11240
11260
  return params.data.map((user) => {
11241
11261
  const entry = {
11242
11262
  jsonApiData: user
@@ -11321,10 +11341,10 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
11321
11341
  title: t(`common.date.create`)
11322
11342
  })
11323
11343
  };
11324
- const columns = useMemo15(() => {
11344
+ const columns = useMemo16(() => {
11325
11345
  return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
11326
11346
  }, [params.fields, fieldColumnMap, t, generateUrl]);
11327
- return useMemo15(() => ({ data: tableData, columns }), [tableData, columns]);
11347
+ return useMemo16(() => ({ data: tableData, columns }), [tableData, columns]);
11328
11348
  }, "useUserTableStructure");
11329
11349
 
11330
11350
  // src/features/user/components/widgets/UserSearchPopover.tsx
@@ -12408,7 +12428,7 @@ import { zodResolver as zodResolver3 } from "@hookform/resolvers/zod";
12408
12428
  import { UploadIcon as UploadIcon3 } from "lucide-react";
12409
12429
  import { useTranslations as useTranslations37 } from "next-intl";
12410
12430
  import Image6 from "next/image";
12411
- import { useCallback as useCallback21, useEffect as useEffect26, useMemo as useMemo16, useRef as useRef21, useState as useState35 } from "react";
12431
+ import { useCallback as useCallback21, useEffect as useEffect26, useMemo as useMemo17, useRef as useRef21, useState as useState35 } from "react";
12412
12432
  import { useForm as useForm3 } from "react-hook-form";
12413
12433
  import { v4 as v42 } from "uuid";
12414
12434
  import { z as z2 } from "zod";
@@ -12477,7 +12497,7 @@ function CompanyEditorInternal({
12477
12497
  setContentType(null);
12478
12498
  }
12479
12499
  }, [file]);
12480
- const formSchema = useMemo16(
12500
+ const formSchema = useMemo17(
12481
12501
  () => z2.object({
12482
12502
  id: z2.uuidv4(),
12483
12503
  name: z2.string().min(1, {
@@ -13221,7 +13241,7 @@ __name(HowToDeleter, "HowToDeleter");
13221
13241
  import { zodResolver as zodResolver4 } from "@hookform/resolvers/zod";
13222
13242
  import { PlusIcon, SearchIcon as SearchIcon6, XIcon as XIcon10 } from "lucide-react";
13223
13243
  import { useTranslations as useTranslations45 } from "next-intl";
13224
- import { useCallback as useCallback24, useEffect as useEffect30, useMemo as useMemo17, useRef as useRef24, useState as useState41 } from "react";
13244
+ import { useCallback as useCallback24, useEffect as useEffect30, useMemo as useMemo18, useRef as useRef24, useState as useState41 } from "react";
13225
13245
  import { useForm as useForm4 } from "react-hook-form";
13226
13246
  import { v4 as v43 } from "uuid";
13227
13247
  import { z as z3 } from "zod";
@@ -13273,7 +13293,7 @@ function PageSelector({
13273
13293
  const [open, setOpen] = useState41(false);
13274
13294
  const [search, setSearch] = useState41("");
13275
13295
  const selectedLabel = value ? allPageUrls.find((opt) => opt.id === value) : void 0;
13276
- const filteredOptions = useMemo17(() => {
13296
+ const filteredOptions = useMemo18(() => {
13277
13297
  const available = allPageUrls.filter((opt) => opt.id === value || !selectedPages.includes(opt.id));
13278
13298
  if (!search) return available;
13279
13299
  const term = search.toLowerCase();
@@ -13340,7 +13360,7 @@ function HowToEditorInternal({
13340
13360
  }) {
13341
13361
  const router = useI18nRouter();
13342
13362
  const t = useTranslations45();
13343
- const formSchema = useMemo17(
13363
+ const formSchema = useMemo18(
13344
13364
  () => z3.object({
13345
13365
  id: z3.string().uuid(),
13346
13366
  name: z3.string().min(1, { message: t(`howto.fields.name.error`) }),
@@ -13402,7 +13422,7 @@ function HowToEditorInternal({
13402
13422
  },
13403
13423
  [form]
13404
13424
  );
13405
- const allPageUrls = useMemo17(() => ModuleRegistry.getAllPageUrls(), []);
13425
+ const allPageUrls = useMemo18(() => ModuleRegistry.getAllPageUrls(), []);
13406
13426
  const pages = form.watch("pages");
13407
13427
  const addPage = /* @__PURE__ */ __name(() => {
13408
13428
  form.setValue("pages", [...pages, ""], { shouldDirty: true });
@@ -13649,7 +13669,7 @@ var useHowToContext = /* @__PURE__ */ __name(() => {
13649
13669
  // src/features/rbac/contexts/RbacContext.tsx
13650
13670
  import { DownloadIcon, Loader2Icon as Loader2Icon3 } from "lucide-react";
13651
13671
  import { useTranslations as useTranslations47 } from "next-intl";
13652
- import { createContext as createContext18, useCallback as useCallback25, useContext as useContext19, useEffect as useEffect31, useMemo as useMemo18, useState as useState43 } from "react";
13672
+ import { createContext as createContext18, useCallback as useCallback25, useContext as useContext19, useEffect as useEffect31, useMemo as useMemo19, useState as useState43 } from "react";
13653
13673
  import { jsx as jsx145, jsxs as jsxs84 } from "react/jsx-runtime";
13654
13674
  var DEFAULT_OUTPUT_PATH = "apps/api/src/rbac/permissions.ts";
13655
13675
  function upsertToken(tokens, action, scope) {
@@ -13758,7 +13778,7 @@ var RbacProvider = /* @__PURE__ */ __name(({
13758
13778
  if (functions.length > 0) response.functions = functions;
13759
13779
  return response;
13760
13780
  }, "title");
13761
- const contextValue = useMemo18(
13781
+ const contextValue = useMemo19(
13762
13782
  () => ({
13763
13783
  matrix,
13764
13784
  modulePaths,
@@ -13784,7 +13804,7 @@ var useRbacContext = /* @__PURE__ */ __name(() => {
13784
13804
 
13785
13805
  // src/features/assistant/contexts/AssistantContext.tsx
13786
13806
  import { useTranslations as useTranslations48 } from "next-intl";
13787
- import { createContext as createContext19, useCallback as useCallback26, useContext as useContext20, useEffect as useEffect32, useMemo as useMemo19, useState as useState44 } from "react";
13807
+ import { createContext as createContext19, useCallback as useCallback26, useContext as useContext20, useEffect as useEffect32, useMemo as useMemo20, useState as useState44 } from "react";
13788
13808
  import { jsx as jsx146 } from "react/jsx-runtime";
13789
13809
  var AssistantContext = createContext19(void 0);
13790
13810
  function stripOptimistic(list) {
@@ -13955,7 +13975,7 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
13955
13975
  cancelled = true;
13956
13976
  };
13957
13977
  }, []);
13958
- const value = useMemo19(
13978
+ const value = useMemo20(
13959
13979
  () => ({
13960
13980
  assistant,
13961
13981
  messages,
@@ -14682,7 +14702,7 @@ __name(RoundPageContainerTitle, "RoundPageContainerTitle");
14682
14702
 
14683
14703
  // src/components/containers/RoundPageContainer.tsx
14684
14704
  import { useSearchParams } from "next/navigation";
14685
- import { Fragment as Fragment22, useCallback as useCallback27, useEffect as useEffect40, useMemo as useMemo20, useState as useState50 } from "react";
14705
+ import { Fragment as Fragment22, useCallback as useCallback27, useEffect as useEffect40, useMemo as useMemo21, useState as useState50 } from "react";
14686
14706
  import { Fragment as Fragment23, jsx as jsx157, jsxs as jsxs93 } from "react/jsx-runtime";
14687
14707
  var DETAILS_COOKIE_NAME = "round_page_details_state";
14688
14708
  var DETAILS_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
@@ -14748,7 +14768,7 @@ function RoundPageContainer({
14748
14768
  [module, id, rewriteUrl, onSectionChange]
14749
14769
  );
14750
14770
  const activeFillHeight = tabs?.find((t) => tabValue(t) === activeTab)?.fillHeight === true;
14751
- const { ungrouped, groups } = useMemo20(() => partitionTabs(tabs ?? []), [tabs]);
14771
+ const { ungrouped, groups } = useMemo21(() => partitionTabs(tabs ?? []), [tabs]);
14752
14772
  const isReady = mounted && isMobile !== void 0;
14753
14773
  if (!isReady) {
14754
14774
  return /* @__PURE__ */ jsxs93(Fragment23, { children: [
@@ -15172,7 +15192,7 @@ var createMentionInlineContentSpec = /* @__PURE__ */ __name((resolveFn, disableM
15172
15192
  // src/components/editors/BlockNoteEditorSuggestionMenuController.tsx
15173
15193
  import { SuggestionMenuController } from "@blocknote/react";
15174
15194
  import { autoUpdate, flip, shift } from "@floating-ui/react";
15175
- import React25, { useCallback as useCallback29, useMemo as useMemo21 } from "react";
15195
+ import React25, { useCallback as useCallback29, useMemo as useMemo22 } from "react";
15176
15196
  import { jsx as jsx162 } from "react/jsx-runtime";
15177
15197
  var MentionInsertContext = React25.createContext(null);
15178
15198
  var useMentionInsert = /* @__PURE__ */ __name(() => React25.useContext(MentionInsertContext), "useMentionInsert");
@@ -15224,7 +15244,7 @@ function BlockNoteEditorMentionSuggestionMenu({
15224
15244
  },
15225
15245
  [editor, mentionSearchFn, mentionSearchParams]
15226
15246
  );
15227
- const wrappedSuggestionMenuComponent = useMemo21(() => {
15247
+ const wrappedSuggestionMenuComponent = useMemo22(() => {
15228
15248
  if (!suggestionMenuComponent) return void 0;
15229
15249
  const Component2 = suggestionMenuComponent;
15230
15250
  const Wrapped = /* @__PURE__ */ __name((props) => {
@@ -15471,7 +15491,7 @@ var cellUrl = /* @__PURE__ */ __name((params) => {
15471
15491
  }, "cellUrl");
15472
15492
 
15473
15493
  // src/client/context/JsonApiProvider.tsx
15474
- import { useEffect as useEffect44, useMemo as useMemo22 } from "react";
15494
+ import { useEffect as useEffect44, useMemo as useMemo23 } from "react";
15475
15495
  import { jsx as jsx171 } from "react/jsx-runtime";
15476
15496
  function JsonApiProvider({ config, children }) {
15477
15497
  useEffect44(() => {
@@ -15479,7 +15499,7 @@ function JsonApiProvider({ config, children }) {
15479
15499
  config.bootstrapper();
15480
15500
  }
15481
15501
  }, [config.bootstrapper]);
15482
- const memoizedConfig = useMemo22(() => config, [config]);
15502
+ const memoizedConfig = useMemo23(() => config, [config]);
15483
15503
  return /* @__PURE__ */ jsx171(JsonApiContext.Provider, { value: memoizedConfig, children });
15484
15504
  }
15485
15505
  __name(JsonApiProvider, "JsonApiProvider");
@@ -15685,16 +15705,16 @@ function useJsonApiMutation(config) {
15685
15705
  __name(useJsonApiMutation, "useJsonApiMutation");
15686
15706
 
15687
15707
  // src/client/hooks/useRehydration.ts
15688
- import { useMemo as useMemo23 } from "react";
15708
+ import { useMemo as useMemo24 } from "react";
15689
15709
  function useRehydration(classKey, data) {
15690
- return useMemo23(() => {
15710
+ return useMemo24(() => {
15691
15711
  if (!data) return null;
15692
15712
  return RehydrationFactory.rehydrate(classKey, data);
15693
15713
  }, [classKey, data]);
15694
15714
  }
15695
15715
  __name(useRehydration, "useRehydration");
15696
15716
  function useRehydrationList(classKey, data) {
15697
- return useMemo23(() => {
15717
+ return useMemo24(() => {
15698
15718
  if (!data || data.length === 0) return [];
15699
15719
  return RehydrationFactory.rehydrateList(classKey, data);
15700
15720
  }, [classKey, data]);
@@ -15703,13 +15723,13 @@ __name(useRehydrationList, "useRehydrationList");
15703
15723
 
15704
15724
  // src/features/company/hooks/useCompanyTableStructure.tsx
15705
15725
  import { useTranslations as useTranslations54 } from "next-intl";
15706
- import { useMemo as useMemo24 } from "react";
15726
+ import { useMemo as useMemo25 } from "react";
15707
15727
  import { jsx as jsx172 } from "react/jsx-runtime";
15708
15728
  var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
15709
15729
  const t = useTranslations54();
15710
15730
  const generateUrl = usePageUrlGenerator();
15711
15731
  const { hasRole } = useCurrentUserContext();
15712
- const tableData = useMemo24(() => {
15732
+ const tableData = useMemo25(() => {
15713
15733
  return params.data.map((company) => {
15714
15734
  const entry = {
15715
15735
  jsonApiData: company
@@ -15753,14 +15773,14 @@ var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
15753
15773
  title: t(`common.date.create`)
15754
15774
  })
15755
15775
  };
15756
- const columns = useMemo24(() => {
15776
+ const columns = useMemo25(() => {
15757
15777
  return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
15758
15778
  }, [params.fields, fieldColumnMap, t, generateUrl, hasRole]);
15759
- return useMemo24(() => ({ data: tableData, columns }), [tableData, columns]);
15779
+ return useMemo25(() => ({ data: tableData, columns }), [tableData, columns]);
15760
15780
  }, "useCompanyTableStructure");
15761
15781
 
15762
15782
  // src/features/company/hooks/useSubscriptionStatus.ts
15763
- import { useMemo as useMemo25 } from "react";
15783
+ import { useMemo as useMemo26 } from "react";
15764
15784
  var TRIAL_DAYS = 14;
15765
15785
  var GRACE_DAYS = 3;
15766
15786
  var isAdministrator = /* @__PURE__ */ __name((currentUser) => {
@@ -15770,7 +15790,7 @@ var isAdministrator = /* @__PURE__ */ __name((currentUser) => {
15770
15790
  }, "isAdministrator");
15771
15791
  function useSubscriptionStatus() {
15772
15792
  const { company, currentUser } = useCurrentUserContext();
15773
- return useMemo25(() => {
15793
+ return useMemo26(() => {
15774
15794
  if (currentUser === null) {
15775
15795
  return {
15776
15796
  status: "loading",
@@ -15835,12 +15855,12 @@ __name(useSubscriptionStatus, "useSubscriptionStatus");
15835
15855
 
15836
15856
  // src/features/role/hooks/useRoleTableStructure.tsx
15837
15857
  import { useTranslations as useTranslations55 } from "next-intl";
15838
- import { useMemo as useMemo26 } from "react";
15858
+ import { useMemo as useMemo27 } from "react";
15839
15859
  import { Fragment as Fragment25, jsx as jsx173 } from "react/jsx-runtime";
15840
15860
  var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
15841
15861
  const t = useTranslations55();
15842
15862
  const generateUrl = usePageUrlGenerator();
15843
- const tableData = useMemo26(() => {
15863
+ const tableData = useMemo27(() => {
15844
15864
  return params.data.map((role) => {
15845
15865
  const entry = {
15846
15866
  jsonApiData: role
@@ -15882,20 +15902,20 @@ var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
15882
15902
  title: t(`common.date.create`)
15883
15903
  })
15884
15904
  };
15885
- const columns = useMemo26(() => {
15905
+ const columns = useMemo27(() => {
15886
15906
  return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
15887
15907
  }, [params.fields, fieldColumnMap, t, generateUrl]);
15888
- return useMemo26(() => ({ data: tableData, columns }), [tableData, columns]);
15908
+ return useMemo27(() => ({ data: tableData, columns }), [tableData, columns]);
15889
15909
  }, "useRoleTableStructure");
15890
15910
 
15891
15911
  // src/features/content/hooks/useContentTableStructure.tsx
15892
15912
  import { useTranslations as useTranslations56 } from "next-intl";
15893
- import { useMemo as useMemo27 } from "react";
15913
+ import { useMemo as useMemo28 } from "react";
15894
15914
  import { Fragment as Fragment26, jsx as jsx174, jsxs as jsxs99 } from "react/jsx-runtime";
15895
15915
  var useContentTableStructure = /* @__PURE__ */ __name((params) => {
15896
15916
  const t = useTranslations56();
15897
15917
  const generateUrl = usePageUrlGenerator();
15898
- const tableData = useMemo27(() => {
15918
+ const tableData = useMemo28(() => {
15899
15919
  return params.data.map((content) => {
15900
15920
  const entry = {
15901
15921
  jsonApiData: content
@@ -15980,7 +16000,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
15980
16000
  title: t(`common.date.update`)
15981
16001
  })
15982
16002
  };
15983
- const columns = useMemo27(() => {
16003
+ const columns = useMemo28(() => {
15984
16004
  return params.fields.map((field) => {
15985
16005
  const localHandler = fieldColumnMap[field];
15986
16006
  if (localHandler) return localHandler();
@@ -15989,7 +16009,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
15989
16009
  return void 0;
15990
16010
  }).filter((col) => col !== void 0);
15991
16011
  }, [params.fields, fieldColumnMap, t, generateUrl, params.context?.customCells]);
15992
- return useMemo27(() => ({ data: tableData, columns }), [tableData, columns]);
16012
+ return useMemo28(() => ({ data: tableData, columns }), [tableData, columns]);
15993
16013
  }, "useContentTableStructure");
15994
16014
 
15995
16015
  // src/features/oauth/hooks/useOAuthClients.ts
@@ -16289,7 +16309,7 @@ registerTableGenerator("companies", useCompanyTableStructure);
16289
16309
  import { flexRender, getCoreRowModel, getExpandedRowModel, useReactTable } from "@tanstack/react-table";
16290
16310
  import { ChevronLeft, ChevronRight } from "lucide-react";
16291
16311
  import { useTranslations as useTranslations58 } from "next-intl";
16292
- import React28, { memo, useMemo as useMemo28, useState as useState59 } from "react";
16312
+ import React28, { memo, useMemo as useMemo29, useState as useState59 } from "react";
16293
16313
 
16294
16314
  // src/components/tables/ContentTableSearch.tsx
16295
16315
  import { RefreshCw, Search, X as X3 } from "lucide-react";
@@ -16411,7 +16431,7 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
16411
16431
  dataRetriever: data,
16412
16432
  context: props.context
16413
16433
  });
16414
- const columnVisibility = useMemo28(
16434
+ const columnVisibility = useMemo29(
16415
16435
  () => fields.reduce(
16416
16436
  (acc, columnId) => {
16417
16437
  acc[columnId] = true;
@@ -16436,7 +16456,7 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
16436
16456
  }
16437
16457
  });
16438
16458
  const rowModel = tableData ? table.getRowModel() : null;
16439
- const groupedRows = useMemo28(() => {
16459
+ const groupedRows = useMemo29(() => {
16440
16460
  if (!props.groupBy || !rowModel?.rows?.length) return null;
16441
16461
  const groupMap = /* @__PURE__ */ new Map();
16442
16462
  for (const row of rowModel.rows) {
@@ -16864,7 +16884,7 @@ __name(EntitySection, "EntitySection");
16864
16884
  import Image8 from "next/image";
16865
16885
 
16866
16886
  // src/features/auth/contexts/AuthContext.tsx
16867
- import { createContext as createContext21, useContext as useContext22, useMemo as useMemo29, useState as useState62 } from "react";
16887
+ import { createContext as createContext21, useContext as useContext22, useMemo as useMemo30, useState as useState62 } from "react";
16868
16888
 
16869
16889
  // src/features/auth/components/forms/Register.tsx
16870
16890
  import { zodResolver as zodResolver5 } from "@hookform/resolvers/zod";
@@ -17223,7 +17243,7 @@ var AuthContextProvider = /* @__PURE__ */ __name(({
17223
17243
  const [componentType, setComponentType] = useState62(initialComponentType);
17224
17244
  const [params, setParams] = useState62(initialParams);
17225
17245
  const [pendingTwoFactor, setPendingTwoFactor] = useState62();
17226
- const activeComponent = useMemo29(() => {
17246
+ const activeComponent = useMemo30(() => {
17227
17247
  if (componentType === void 0) return null;
17228
17248
  switch (componentType) {
17229
17249
  case 0 /* Login */:
@@ -18888,12 +18908,12 @@ __name(RelevantContentsList, "RelevantContentsList");
18888
18908
  // src/features/how-to/components/containers/HowToCommand.tsx
18889
18909
  import { ArrowRight, LifeBuoyIcon } from "lucide-react";
18890
18910
  import { useTranslations as useTranslations81 } from "next-intl";
18891
- import { useCallback as useCallback38, useEffect as useEffect61, useMemo as useMemo31, useRef as useRef34, useState as useState79 } from "react";
18911
+ import { useCallback as useCallback38, useEffect as useEffect61, useMemo as useMemo32, useRef as useRef34, useState as useState79 } from "react";
18892
18912
 
18893
18913
  // src/features/how-to/components/containers/HowToCommandViewer.tsx
18894
18914
  import { ArrowLeft, BookOpen, MessageSquare } from "lucide-react";
18895
18915
  import { useTranslations as useTranslations80 } from "next-intl";
18896
- import { useMemo as useMemo30 } from "react";
18916
+ import { useMemo as useMemo31 } from "react";
18897
18917
 
18898
18918
  // src/features/how-to/utils/blocknote.ts
18899
18919
  function extractTextFromContent(content) {
@@ -18965,8 +18985,8 @@ __name(extractHeadings, "extractHeadings");
18965
18985
  import { jsx as jsx210, jsxs as jsxs126 } from "react/jsx-runtime";
18966
18986
  function HowToCommandViewer({ howTo, onBack, onStartChat }) {
18967
18987
  const t = useTranslations80();
18968
- const readingTime = useMemo30(() => calculateReadingTime(howTo.description), [howTo.description]);
18969
- const headings = useMemo30(() => extractHeadings(howTo.description), [howTo.description]);
18988
+ const readingTime = useMemo31(() => calculateReadingTime(howTo.description), [howTo.description]);
18989
+ const headings = useMemo31(() => extractHeadings(howTo.description), [howTo.description]);
18970
18990
  return /* @__PURE__ */ jsxs126("div", { className: "flex h-full flex-col", children: [
18971
18991
  /* @__PURE__ */ jsxs126("div", { className: "flex items-center gap-3 border-b px-4 py-3", children: [
18972
18992
  /* @__PURE__ */ jsxs126(Button, { variant: "ghost", size: "sm", onClick: onBack, className: "h-8 px-2", children: [
@@ -19025,7 +19045,7 @@ function HowToCommand({ pathname, extraGroups, onStartChat }) {
19025
19045
  retrieverParams: {},
19026
19046
  module: Modules.HowTo
19027
19047
  });
19028
- const { relevantHowTos, otherHowTos } = useMemo31(() => {
19048
+ const { relevantHowTos, otherHowTos } = useMemo32(() => {
19029
19049
  if (!data.data) return { relevantHowTos: [], otherHowTos: [] };
19030
19050
  const relevant = [];
19031
19051
  const other = [];
@@ -19222,12 +19242,12 @@ import { useTranslations as useTranslations84 } from "next-intl";
19222
19242
 
19223
19243
  // src/features/how-to/hooks/useHowToTableStructure.tsx
19224
19244
  import { useTranslations as useTranslations83 } from "next-intl";
19225
- import { useMemo as useMemo32 } from "react";
19245
+ import { useMemo as useMemo33 } from "react";
19226
19246
  import { Fragment as Fragment42, jsx as jsx215 } from "react/jsx-runtime";
19227
19247
  var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
19228
19248
  const t = useTranslations83();
19229
19249
  const generateUrl = usePageUrlGenerator();
19230
- const tableData = useMemo32(() => {
19250
+ const tableData = useMemo33(() => {
19231
19251
  return params.data.map((howTo) => {
19232
19252
  const entry = {
19233
19253
  jsonApiData: howTo
@@ -19281,10 +19301,10 @@ var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
19281
19301
  title: t(`common.date.update`)
19282
19302
  })
19283
19303
  };
19284
- const columns = useMemo32(() => {
19304
+ const columns = useMemo33(() => {
19285
19305
  return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
19286
19306
  }, [params.fields, fieldColumnMap, t, generateUrl]);
19287
- return useMemo32(() => ({ data: tableData, columns }), [tableData, columns]);
19307
+ return useMemo33(() => ({ data: tableData, columns }), [tableData, columns]);
19288
19308
  }, "useHowToTableStructure");
19289
19309
  registerTableGenerator("howtos", useHowToTableStructure);
19290
19310
 
@@ -19653,10 +19673,10 @@ import ReactMarkdown3 from "react-markdown";
19653
19673
  import remarkGfm3 from "remark-gfm";
19654
19674
 
19655
19675
  // src/features/assistant-message/components/parts/MessageSourcesContainer.tsx
19656
- import { useEffect as useEffect63, useMemo as useMemo34, useState as useState86 } from "react";
19676
+ import { useEffect as useEffect63, useMemo as useMemo35, useState as useState86 } from "react";
19657
19677
 
19658
19678
  // src/features/assistant-message/components/parts/MessageSourcesPanel.tsx
19659
- import { useMemo as useMemo33, useState as useState85 } from "react";
19679
+ import { useMemo as useMemo34, useState as useState85 } from "react";
19660
19680
  import { useTranslations as useTranslations94 } from "next-intl";
19661
19681
  import { ChevronDown as ChevronDown4, ChevronRight as ChevronRight2 } from "lucide-react";
19662
19682
 
@@ -19949,7 +19969,7 @@ __name(SuggestedQuestionsTab, "SuggestedQuestionsTab");
19949
19969
  import { jsx as jsx229, jsxs as jsxs139 } from "react/jsx-runtime";
19950
19970
  function MessageSourcesPanel({ message, isLatestAssistant, onSelectFollowUp, sources, users }) {
19951
19971
  const t = useTranslations94();
19952
- const visibleReferences = useMemo33(
19972
+ const visibleReferences = useMemo34(
19953
19973
  () => message.references.filter((ref) => {
19954
19974
  try {
19955
19975
  return !!ModuleRegistry.findByName(ref.type).pageUrl;
@@ -19962,7 +19982,7 @@ function MessageSourcesPanel({ message, isLatestAssistant, onSelectFollowUp, sou
19962
19982
  const refsCount = visibleReferences.length;
19963
19983
  const citationsCount = message.citations.length;
19964
19984
  const suggestionsCount = isLatestAssistant ? message.suggestedQuestions.length : 0;
19965
- const contentsCount = useMemo33(() => {
19985
+ const contentsCount = useMemo34(() => {
19966
19986
  const ids = /* @__PURE__ */ new Set();
19967
19987
  for (const c of message.citations) {
19968
19988
  if (!c.nodeId) continue;
@@ -20041,7 +20061,7 @@ var SourcesFetcher = class extends ClientAbstractService {
20041
20061
  }
20042
20062
  };
20043
20063
  function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp }) {
20044
- const groups = useMemo34(() => {
20064
+ const groups = useMemo35(() => {
20045
20065
  const map = /* @__PURE__ */ new Map();
20046
20066
  for (const chunk of message.citations) {
20047
20067
  if (!chunk.nodeType || !chunk.nodeId) continue;
@@ -20054,7 +20074,7 @@ function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp
20054
20074
  }
20055
20075
  return map;
20056
20076
  }, [message.citations]);
20057
- const groupsKey = useMemo34(() => {
20077
+ const groupsKey = useMemo35(() => {
20058
20078
  const parts = [];
20059
20079
  for (const [nodeType, ids] of groups) {
20060
20080
  parts.push(`${nodeType}:${Array.from(ids).sort().join(",")}`);
@@ -20096,12 +20116,12 @@ function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp
20096
20116
  cancelled = true;
20097
20117
  };
20098
20118
  }, [groupsKey, groups]);
20099
- const sources = useMemo34(() => {
20119
+ const sources = useMemo35(() => {
20100
20120
  const map = /* @__PURE__ */ new Map();
20101
20121
  for (const entity of resolved) map.set(entity.id, entity);
20102
20122
  return map;
20103
20123
  }, [resolved]);
20104
- const users = useMemo34(() => {
20124
+ const users = useMemo35(() => {
20105
20125
  const userMap = /* @__PURE__ */ new Map();
20106
20126
  for (const entity of resolved) {
20107
20127
  const author = entity._author ?? (() => {
@@ -20424,7 +20444,7 @@ __name(NotificationsListContainer, "NotificationsListContainer");
20424
20444
  // src/features/notification/components/modals/NotificationModal.tsx
20425
20445
  import { BellIcon } from "lucide-react";
20426
20446
  import { useTranslations as useTranslations99 } from "next-intl";
20427
- import { Fragment as Fragment48, useCallback as useCallback40, useEffect as useEffect65, useMemo as useMemo35, useRef as useRef37, useState as useState87 } from "react";
20447
+ import { Fragment as Fragment48, useCallback as useCallback40, useEffect as useEffect65, useMemo as useMemo36, useRef as useRef37, useState as useState87 } from "react";
20428
20448
  import { jsx as jsx239, jsxs as jsxs147 } from "react/jsx-runtime";
20429
20449
  function NotificationModalContent({ isOpen, setIsOpen }) {
20430
20450
  const _instanceId = useRef37(Math.random().toString(36).substr(2, 9));
@@ -20468,7 +20488,7 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
20468
20488
  }
20469
20489
  return !breaker.isOpen;
20470
20490
  }, []);
20471
- const { unreadCount, unreadIds } = useMemo35(() => {
20491
+ const { unreadCount, unreadIds } = useMemo36(() => {
20472
20492
  const unreadNotifications2 = notifications.filter((notif) => !notif.isRead);
20473
20493
  return {
20474
20494
  unreadCount: unreadNotifications2.length,
@@ -22457,7 +22477,7 @@ __name(WaitlistList, "WaitlistList");
22457
22477
  // src/features/rbac/components/RbacContainer.tsx
22458
22478
  import { Loader2Icon as Loader2Icon4 } from "lucide-react";
22459
22479
  import { useTranslations as useTranslations112 } from "next-intl";
22460
- import { memo as memo2, useCallback as useCallback50, useEffect as useEffect73, useMemo as useMemo36, useRef as useRef40, useState as useState100 } from "react";
22480
+ import { memo as memo2, useCallback as useCallback50, useEffect as useEffect73, useMemo as useMemo37, useRef as useRef40, useState as useState100 } from "react";
22461
22481
 
22462
22482
  // src/features/rbac/components/RbacPermissionCell.tsx
22463
22483
  import { CheckIcon as CheckIcon9, MinusIcon as MinusIcon2, XIcon as XIcon12 } from "lucide-react";
@@ -22812,11 +22832,11 @@ function RbacContainer() {
22812
22832
  setSelectedModuleId(id);
22813
22833
  setActivePicker(null);
22814
22834
  }, []);
22815
- const sortedModuleIds = useMemo36(() => {
22835
+ const sortedModuleIds = useMemo37(() => {
22816
22836
  if (!matrix) return [];
22817
22837
  return Object.keys(matrix).sort((a, b) => (moduleNames?.[a] ?? a).localeCompare(moduleNames?.[b] ?? b));
22818
22838
  }, [matrix, moduleNames]);
22819
- const roleIds = useMemo36(() => {
22839
+ const roleIds = useMemo37(() => {
22820
22840
  if (roleNames) {
22821
22841
  return Object.keys(roleNames).sort((a, b) => (roleNames[a] ?? a).localeCompare(roleNames[b] ?? b));
22822
22842
  }
@@ -22834,14 +22854,14 @@ function RbacContainer() {
22834
22854
  setSelectedModuleId(sortedModuleIds[0]);
22835
22855
  }
22836
22856
  }, [selectedModuleId, sortedModuleIds]);
22837
- const activeValue = useMemo36(() => {
22857
+ const activeValue = useMemo37(() => {
22838
22858
  if (!activePicker || !matrix) return void 0;
22839
22859
  const block = matrix[activePicker.moduleId];
22840
22860
  if (!block) return void 0;
22841
22861
  const tokens = activePicker.rowKey === "default" ? block.default : block[activePicker.rowKey];
22842
22862
  return cellValue(tokens, activePicker.action);
22843
22863
  }, [activePicker, matrix]);
22844
- const activeSegments = useMemo36(() => {
22864
+ const activeSegments = useMemo37(() => {
22845
22865
  if (!activePicker) return [];
22846
22866
  return modulePaths[activePicker.moduleId] ?? [];
22847
22867
  }, [activePicker, modulePaths]);
@@ -22912,7 +22932,7 @@ __name(RbacContainer, "RbacContainer");
22912
22932
  // src/features/rbac/components/RbacByRoleContainer.tsx
22913
22933
  import { Loader2Icon as Loader2Icon5 } from "lucide-react";
22914
22934
  import { useTranslations as useTranslations113 } from "next-intl";
22915
- import { Fragment as Fragment56, memo as memo3, useCallback as useCallback51, useEffect as useEffect74, useMemo as useMemo37, useRef as useRef41, useState as useState101 } from "react";
22935
+ import { Fragment as Fragment56, memo as memo3, useCallback as useCallback51, useEffect as useEffect74, useMemo as useMemo38, useRef as useRef41, useState as useState101 } from "react";
22916
22936
  import { jsx as jsx271, jsxs as jsxs175 } from "react/jsx-runtime";
22917
22937
  function findToken2(tokens, action) {
22918
22938
  if (!tokens) return void 0;
@@ -22962,11 +22982,11 @@ function RbacByRoleContainer() {
22962
22982
  setSelectedRoleId(id);
22963
22983
  setActivePicker(null);
22964
22984
  }, []);
22965
- const sortedRoleIds = useMemo37(() => {
22985
+ const sortedRoleIds = useMemo38(() => {
22966
22986
  if (!roleNames) return [];
22967
22987
  return Object.keys(roleNames).sort((a, b) => (roleNames[a] ?? a).localeCompare(roleNames[b] ?? b));
22968
22988
  }, [roleNames]);
22969
- const sortedModuleIds = useMemo37(() => {
22989
+ const sortedModuleIds = useMemo38(() => {
22970
22990
  if (!matrix) return [];
22971
22991
  return Object.keys(matrix).sort((a, b) => (moduleNames?.[a] ?? a).localeCompare(moduleNames?.[b] ?? b));
22972
22992
  }, [matrix, moduleNames]);
@@ -22975,14 +22995,14 @@ function RbacByRoleContainer() {
22975
22995
  setSelectedRoleId(sortedRoleIds[0]);
22976
22996
  }
22977
22997
  }, [selectedRoleId, sortedRoleIds]);
22978
- const activeValue = useMemo37(() => {
22998
+ const activeValue = useMemo38(() => {
22979
22999
  if (!activePicker || !matrix) return void 0;
22980
23000
  const block = matrix[activePicker.moduleId];
22981
23001
  if (!block) return void 0;
22982
23002
  const tokens = activePicker.rowKey === "default" ? block.default : block[activePicker.rowKey];
22983
23003
  return cellValue2(tokens, activePicker.action);
22984
23004
  }, [activePicker, matrix]);
22985
- const activeSegments = useMemo37(() => {
23005
+ const activeSegments = useMemo38(() => {
22986
23006
  if (!activePicker) return [];
22987
23007
  return modulePaths[activePicker.moduleId] ?? [];
22988
23008
  }, [activePicker, modulePaths]);
@@ -23626,4 +23646,4 @@ export {
23626
23646
  useOAuthClients,
23627
23647
  useOAuthClient
23628
23648
  };
23629
- //# sourceMappingURL=chunk-MDXT47V4.mjs.map
23649
+ //# sourceMappingURL=chunk-BBBQGJEG.mjs.map