@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.
- package/dist/{BlockNoteEditor-BR3IRGJW.js → BlockNoteEditor-5RUXGWLR.js} +9 -9
- package/dist/{BlockNoteEditor-BR3IRGJW.js.map → BlockNoteEditor-5RUXGWLR.js.map} +1 -1
- package/dist/{BlockNoteEditor-PVBZYPMF.mjs → BlockNoteEditor-F4AKH532.mjs} +2 -2
- package/dist/billing/index.js +310 -310
- package/dist/billing/index.mjs +1 -1
- package/dist/{chunk-MDXT47V4.mjs → chunk-BBBQGJEG.mjs} +121 -101
- package/dist/chunk-BBBQGJEG.mjs.map +1 -0
- package/dist/{chunk-5SQFK35K.js → chunk-T7F2EVPR.js} +253 -233
- package/dist/chunk-T7F2EVPR.js.map +1 -0
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.mjs +1 -1
- package/dist/contexts/index.js +2 -2
- package/dist/contexts/index.mjs +1 -1
- package/dist/features/help/index.js +31 -31
- package/dist/features/help/index.mjs +1 -1
- package/package.json +1 -1
- package/src/features/notification/contexts/__tests__/NotificationContext.spec.tsx +34 -8
- package/src/features/user/contexts/CurrentUserContext.tsx +43 -9
- package/src/features/user/contexts/__tests__/CurrentUserContext.spec.tsx +149 -6
- package/dist/chunk-5SQFK35K.js.map +0 -1
- package/dist/chunk-MDXT47V4.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-PVBZYPMF.mjs.map → BlockNoteEditor-F4AKH532.mjs.map} +0 -0
|
@@ -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 =
|
|
7561
|
-
|
|
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
|
|
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
|
-
}, "
|
|
7646
|
-
socket.on("company:tokens_updated",
|
|
7647
|
-
socket.on("company:subscription_updated",
|
|
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",
|
|
7650
|
-
socket.off("company:subscription_updated",
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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-
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 } =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
15708
|
+
import { useMemo as useMemo24 } from "react";
|
|
15689
15709
|
function useRehydration(classKey, data) {
|
|
15690
|
-
return
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
18969
|
-
const headings =
|
|
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 } =
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 } =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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-
|
|
23649
|
+
//# sourceMappingURL=chunk-BBBQGJEG.mjs.map
|