@carlonicora/nextjs-jsonapi 1.131.0 → 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-MCHL63TJ.js → BlockNoteEditor-5RUXGWLR.js} +9 -9
- package/dist/{BlockNoteEditor-MCHL63TJ.js.map → BlockNoteEditor-5RUXGWLR.js.map} +1 -1
- package/dist/{BlockNoteEditor-Q2GLKMFU.mjs → BlockNoteEditor-F4AKH532.mjs} +2 -2
- package/dist/billing/index.js +310 -310
- package/dist/billing/index.mjs +1 -1
- package/dist/{chunk-4TM6GOT3.mjs → chunk-BBBQGJEG.mjs} +134 -102
- package/dist/chunk-BBBQGJEG.mjs.map +1 -0
- package/dist/{chunk-PE6DSRTQ.js → chunk-T7F2EVPR.js} +266 -234
- 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/components/forms/__tests__/useEditorDialog.test.ts +66 -0
- package/src/components/forms/useEditorDialog.ts +25 -0
- 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/src/shadcnui/ui/sheet.tsx +7 -1
- package/dist/chunk-4TM6GOT3.mjs.map +0 -1
- package/dist/chunk-PE6DSRTQ.js.map +0 -1
- /package/dist/{BlockNoteEditor-Q2GLKMFU.mjs.map → BlockNoteEditor-F4AKH532.mjs.map} +0 -0
|
@@ -3481,7 +3481,7 @@ function SheetContent({
|
|
|
3481
3481
|
...props
|
|
3482
3482
|
}) {
|
|
3483
3483
|
return /* @__PURE__ */ jsxs20(SheetPortal, { children: [
|
|
3484
|
-
/* @__PURE__ */ jsx36(SheetOverlay, {}),
|
|
3484
|
+
/* @__PURE__ */ jsx36(SheetOverlay, { forceRender: true }),
|
|
3485
3485
|
/* @__PURE__ */ jsxs20(
|
|
3486
3486
|
SheetPrimitive.Popup,
|
|
3487
3487
|
{
|
|
@@ -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));
|
|
@@ -9335,6 +9355,7 @@ import { PencilIcon as PencilIcon3 } from "lucide-react";
|
|
|
9335
9355
|
|
|
9336
9356
|
// src/components/forms/useEditorDialog.ts
|
|
9337
9357
|
import { useCallback as useCallback15, useEffect as useEffect16, useRef as useRef13, useState as useState22 } from "react";
|
|
9358
|
+
var openEditorStack = [];
|
|
9338
9359
|
function useEditorDialog(isFormDirty, options) {
|
|
9339
9360
|
const [open, setOpen] = useState22(false);
|
|
9340
9361
|
const [showDiscardConfirm, setShowDiscardConfirm] = useState22(false);
|
|
@@ -9372,9 +9393,20 @@ function useEditorDialog(isFormDirty, options) {
|
|
|
9372
9393
|
},
|
|
9373
9394
|
[isFormDirty]
|
|
9374
9395
|
);
|
|
9396
|
+
const dialogId = useRef13({});
|
|
9397
|
+
useEffect16(() => {
|
|
9398
|
+
if (!open) return;
|
|
9399
|
+
const id = dialogId.current;
|
|
9400
|
+
openEditorStack.push(id);
|
|
9401
|
+
return () => {
|
|
9402
|
+
const index = openEditorStack.lastIndexOf(id);
|
|
9403
|
+
if (index !== -1) openEditorStack.splice(index, 1);
|
|
9404
|
+
};
|
|
9405
|
+
}, [open]);
|
|
9375
9406
|
useEffect16(() => {
|
|
9376
9407
|
const handleKeyDown = /* @__PURE__ */ __name((event) => {
|
|
9377
9408
|
if (event.key === "Escape" && open) {
|
|
9409
|
+
if (openEditorStack[openEditorStack.length - 1] !== dialogId.current) return;
|
|
9378
9410
|
event.preventDefault();
|
|
9379
9411
|
event.stopPropagation();
|
|
9380
9412
|
handleOpenChange(false);
|
|
@@ -9745,7 +9777,7 @@ import {
|
|
|
9745
9777
|
useCallback as useCallback18,
|
|
9746
9778
|
useContext as useContext11,
|
|
9747
9779
|
useEffect as useEffect19,
|
|
9748
|
-
useMemo as
|
|
9780
|
+
useMemo as useMemo13,
|
|
9749
9781
|
useRef as useRef16,
|
|
9750
9782
|
useState as useState24
|
|
9751
9783
|
} from "react";
|
|
@@ -9969,7 +10001,7 @@ var FileInput = forwardRef6(
|
|
|
9969
10001
|
const t = useTranslations16();
|
|
9970
10002
|
const rootProps = isLOF ? {} : dropzoneState.getRootProps();
|
|
9971
10003
|
const { isDragActive: parentIsDragActive } = dropzoneState;
|
|
9972
|
-
const acceptedLabels =
|
|
10004
|
+
const acceptedLabels = useMemo13(() => {
|
|
9973
10005
|
if (!accept) return null;
|
|
9974
10006
|
const extensions = /* @__PURE__ */ new Set();
|
|
9975
10007
|
let hasWildcardImages = false;
|
|
@@ -10038,7 +10070,7 @@ import { useRef as useRef17 } from "react";
|
|
|
10038
10070
|
import dynamic from "next/dynamic";
|
|
10039
10071
|
import React17 from "react";
|
|
10040
10072
|
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
10041
|
-
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-
|
|
10073
|
+
var BlockNoteEditor = dynamic(() => import("./BlockNoteEditor-F4AKH532.mjs"), {
|
|
10042
10074
|
ssr: false
|
|
10043
10075
|
});
|
|
10044
10076
|
var BlockNoteEditorContainer = React17.memo(/* @__PURE__ */ __name(function EditorContainer(props) {
|
|
@@ -10156,7 +10188,7 @@ __name(FormCheckbox, "FormCheckbox");
|
|
|
10156
10188
|
// src/components/forms/FormDate.tsx
|
|
10157
10189
|
import { isValid as isValid2, parse as parse2 } from "date-fns";
|
|
10158
10190
|
import { Calendar as CalendarIcon3, CircleXIcon as CircleXIcon2 } from "lucide-react";
|
|
10159
|
-
import { useMemo as
|
|
10191
|
+
import { useMemo as useMemo14, useState as useState25 } from "react";
|
|
10160
10192
|
import { jsx as jsx88, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
10161
10193
|
function FormDate({
|
|
10162
10194
|
form,
|
|
@@ -10178,12 +10210,12 @@ function FormDate({
|
|
|
10178
10210
|
const currentValue = form.getValues(id);
|
|
10179
10211
|
return currentValue || defaultMonth || /* @__PURE__ */ new Date();
|
|
10180
10212
|
});
|
|
10181
|
-
const dateFormatter =
|
|
10213
|
+
const dateFormatter = useMemo14(
|
|
10182
10214
|
() => new Intl.DateTimeFormat(locale, { day: "2-digit", month: "2-digit", year: "numeric" }),
|
|
10183
10215
|
[locale]
|
|
10184
10216
|
);
|
|
10185
10217
|
const formatDate = /* @__PURE__ */ __name((date) => dateFormatter.format(date), "formatDate");
|
|
10186
|
-
const datePlaceholder =
|
|
10218
|
+
const datePlaceholder = useMemo14(() => {
|
|
10187
10219
|
const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
|
|
10188
10220
|
return parts.map((part) => {
|
|
10189
10221
|
if (part.type === "day") return "dd";
|
|
@@ -10192,7 +10224,7 @@ function FormDate({
|
|
|
10192
10224
|
return part.value;
|
|
10193
10225
|
}).join("");
|
|
10194
10226
|
}, [dateFormatter]);
|
|
10195
|
-
const dateFormatPattern =
|
|
10227
|
+
const dateFormatPattern = useMemo14(() => {
|
|
10196
10228
|
const parts = dateFormatter.formatToParts(new Date(2e3, 0, 1));
|
|
10197
10229
|
return parts.map((part) => {
|
|
10198
10230
|
if (part.type === "day") return "dd";
|
|
@@ -10297,7 +10329,7 @@ __name(FormDate, "FormDate");
|
|
|
10297
10329
|
|
|
10298
10330
|
// src/components/forms/FormDateTime.tsx
|
|
10299
10331
|
import { Calendar as CalendarIcon4, CircleXIcon as CircleXIcon3 } from "lucide-react";
|
|
10300
|
-
import { useMemo as
|
|
10332
|
+
import { useMemo as useMemo15, useState as useState26 } from "react";
|
|
10301
10333
|
import { jsx as jsx89, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
10302
10334
|
function FormDateTime({
|
|
10303
10335
|
form,
|
|
@@ -10319,7 +10351,7 @@ function FormDateTime({
|
|
|
10319
10351
|
const currentValue = form.getValues(id);
|
|
10320
10352
|
return currentValue || defaultMonth || /* @__PURE__ */ new Date();
|
|
10321
10353
|
});
|
|
10322
|
-
const dateTimeFormatter =
|
|
10354
|
+
const dateTimeFormatter = useMemo15(
|
|
10323
10355
|
() => new Intl.DateTimeFormat(locale, {
|
|
10324
10356
|
year: "numeric",
|
|
10325
10357
|
month: "long",
|
|
@@ -11219,12 +11251,12 @@ var useUserSearch = /* @__PURE__ */ __name(() => {
|
|
|
11219
11251
|
|
|
11220
11252
|
// src/features/user/hooks/useUserTableStructure.tsx
|
|
11221
11253
|
import { useTranslations as useTranslations19 } from "next-intl";
|
|
11222
|
-
import { useMemo as
|
|
11254
|
+
import { useMemo as useMemo16 } from "react";
|
|
11223
11255
|
import { Fragment as Fragment11, jsx as jsx103, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
11224
11256
|
var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
11225
11257
|
const t = useTranslations19();
|
|
11226
11258
|
const generateUrl = usePageUrlGenerator();
|
|
11227
|
-
const tableData =
|
|
11259
|
+
const tableData = useMemo16(() => {
|
|
11228
11260
|
return params.data.map((user) => {
|
|
11229
11261
|
const entry = {
|
|
11230
11262
|
jsonApiData: user
|
|
@@ -11309,10 +11341,10 @@ var useUserTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
11309
11341
|
title: t(`common.date.create`)
|
|
11310
11342
|
})
|
|
11311
11343
|
};
|
|
11312
|
-
const columns =
|
|
11344
|
+
const columns = useMemo16(() => {
|
|
11313
11345
|
return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
|
|
11314
11346
|
}, [params.fields, fieldColumnMap, t, generateUrl]);
|
|
11315
|
-
return
|
|
11347
|
+
return useMemo16(() => ({ data: tableData, columns }), [tableData, columns]);
|
|
11316
11348
|
}, "useUserTableStructure");
|
|
11317
11349
|
|
|
11318
11350
|
// src/features/user/components/widgets/UserSearchPopover.tsx
|
|
@@ -12396,7 +12428,7 @@ import { zodResolver as zodResolver3 } from "@hookform/resolvers/zod";
|
|
|
12396
12428
|
import { UploadIcon as UploadIcon3 } from "lucide-react";
|
|
12397
12429
|
import { useTranslations as useTranslations37 } from "next-intl";
|
|
12398
12430
|
import Image6 from "next/image";
|
|
12399
|
-
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";
|
|
12400
12432
|
import { useForm as useForm3 } from "react-hook-form";
|
|
12401
12433
|
import { v4 as v42 } from "uuid";
|
|
12402
12434
|
import { z as z2 } from "zod";
|
|
@@ -12465,7 +12497,7 @@ function CompanyEditorInternal({
|
|
|
12465
12497
|
setContentType(null);
|
|
12466
12498
|
}
|
|
12467
12499
|
}, [file]);
|
|
12468
|
-
const formSchema =
|
|
12500
|
+
const formSchema = useMemo17(
|
|
12469
12501
|
() => z2.object({
|
|
12470
12502
|
id: z2.uuidv4(),
|
|
12471
12503
|
name: z2.string().min(1, {
|
|
@@ -13209,7 +13241,7 @@ __name(HowToDeleter, "HowToDeleter");
|
|
|
13209
13241
|
import { zodResolver as zodResolver4 } from "@hookform/resolvers/zod";
|
|
13210
13242
|
import { PlusIcon, SearchIcon as SearchIcon6, XIcon as XIcon10 } from "lucide-react";
|
|
13211
13243
|
import { useTranslations as useTranslations45 } from "next-intl";
|
|
13212
|
-
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";
|
|
13213
13245
|
import { useForm as useForm4 } from "react-hook-form";
|
|
13214
13246
|
import { v4 as v43 } from "uuid";
|
|
13215
13247
|
import { z as z3 } from "zod";
|
|
@@ -13261,7 +13293,7 @@ function PageSelector({
|
|
|
13261
13293
|
const [open, setOpen] = useState41(false);
|
|
13262
13294
|
const [search, setSearch] = useState41("");
|
|
13263
13295
|
const selectedLabel = value ? allPageUrls.find((opt) => opt.id === value) : void 0;
|
|
13264
|
-
const filteredOptions =
|
|
13296
|
+
const filteredOptions = useMemo18(() => {
|
|
13265
13297
|
const available = allPageUrls.filter((opt) => opt.id === value || !selectedPages.includes(opt.id));
|
|
13266
13298
|
if (!search) return available;
|
|
13267
13299
|
const term = search.toLowerCase();
|
|
@@ -13328,7 +13360,7 @@ function HowToEditorInternal({
|
|
|
13328
13360
|
}) {
|
|
13329
13361
|
const router = useI18nRouter();
|
|
13330
13362
|
const t = useTranslations45();
|
|
13331
|
-
const formSchema =
|
|
13363
|
+
const formSchema = useMemo18(
|
|
13332
13364
|
() => z3.object({
|
|
13333
13365
|
id: z3.string().uuid(),
|
|
13334
13366
|
name: z3.string().min(1, { message: t(`howto.fields.name.error`) }),
|
|
@@ -13390,7 +13422,7 @@ function HowToEditorInternal({
|
|
|
13390
13422
|
},
|
|
13391
13423
|
[form]
|
|
13392
13424
|
);
|
|
13393
|
-
const allPageUrls =
|
|
13425
|
+
const allPageUrls = useMemo18(() => ModuleRegistry.getAllPageUrls(), []);
|
|
13394
13426
|
const pages = form.watch("pages");
|
|
13395
13427
|
const addPage = /* @__PURE__ */ __name(() => {
|
|
13396
13428
|
form.setValue("pages", [...pages, ""], { shouldDirty: true });
|
|
@@ -13637,7 +13669,7 @@ var useHowToContext = /* @__PURE__ */ __name(() => {
|
|
|
13637
13669
|
// src/features/rbac/contexts/RbacContext.tsx
|
|
13638
13670
|
import { DownloadIcon, Loader2Icon as Loader2Icon3 } from "lucide-react";
|
|
13639
13671
|
import { useTranslations as useTranslations47 } from "next-intl";
|
|
13640
|
-
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";
|
|
13641
13673
|
import { jsx as jsx145, jsxs as jsxs84 } from "react/jsx-runtime";
|
|
13642
13674
|
var DEFAULT_OUTPUT_PATH = "apps/api/src/rbac/permissions.ts";
|
|
13643
13675
|
function upsertToken(tokens, action, scope) {
|
|
@@ -13746,7 +13778,7 @@ var RbacProvider = /* @__PURE__ */ __name(({
|
|
|
13746
13778
|
if (functions.length > 0) response.functions = functions;
|
|
13747
13779
|
return response;
|
|
13748
13780
|
}, "title");
|
|
13749
|
-
const contextValue =
|
|
13781
|
+
const contextValue = useMemo19(
|
|
13750
13782
|
() => ({
|
|
13751
13783
|
matrix,
|
|
13752
13784
|
modulePaths,
|
|
@@ -13772,7 +13804,7 @@ var useRbacContext = /* @__PURE__ */ __name(() => {
|
|
|
13772
13804
|
|
|
13773
13805
|
// src/features/assistant/contexts/AssistantContext.tsx
|
|
13774
13806
|
import { useTranslations as useTranslations48 } from "next-intl";
|
|
13775
|
-
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";
|
|
13776
13808
|
import { jsx as jsx146 } from "react/jsx-runtime";
|
|
13777
13809
|
var AssistantContext = createContext19(void 0);
|
|
13778
13810
|
function stripOptimistic(list) {
|
|
@@ -13943,7 +13975,7 @@ function AssistantProvider({ children, dehydratedAssistant, dehydratedMessages,
|
|
|
13943
13975
|
cancelled = true;
|
|
13944
13976
|
};
|
|
13945
13977
|
}, []);
|
|
13946
|
-
const value =
|
|
13978
|
+
const value = useMemo20(
|
|
13947
13979
|
() => ({
|
|
13948
13980
|
assistant,
|
|
13949
13981
|
messages,
|
|
@@ -14670,7 +14702,7 @@ __name(RoundPageContainerTitle, "RoundPageContainerTitle");
|
|
|
14670
14702
|
|
|
14671
14703
|
// src/components/containers/RoundPageContainer.tsx
|
|
14672
14704
|
import { useSearchParams } from "next/navigation";
|
|
14673
|
-
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";
|
|
14674
14706
|
import { Fragment as Fragment23, jsx as jsx157, jsxs as jsxs93 } from "react/jsx-runtime";
|
|
14675
14707
|
var DETAILS_COOKIE_NAME = "round_page_details_state";
|
|
14676
14708
|
var DETAILS_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
@@ -14736,7 +14768,7 @@ function RoundPageContainer({
|
|
|
14736
14768
|
[module, id, rewriteUrl, onSectionChange]
|
|
14737
14769
|
);
|
|
14738
14770
|
const activeFillHeight = tabs?.find((t) => tabValue(t) === activeTab)?.fillHeight === true;
|
|
14739
|
-
const { ungrouped, groups } =
|
|
14771
|
+
const { ungrouped, groups } = useMemo21(() => partitionTabs(tabs ?? []), [tabs]);
|
|
14740
14772
|
const isReady = mounted && isMobile !== void 0;
|
|
14741
14773
|
if (!isReady) {
|
|
14742
14774
|
return /* @__PURE__ */ jsxs93(Fragment23, { children: [
|
|
@@ -15160,7 +15192,7 @@ var createMentionInlineContentSpec = /* @__PURE__ */ __name((resolveFn, disableM
|
|
|
15160
15192
|
// src/components/editors/BlockNoteEditorSuggestionMenuController.tsx
|
|
15161
15193
|
import { SuggestionMenuController } from "@blocknote/react";
|
|
15162
15194
|
import { autoUpdate, flip, shift } from "@floating-ui/react";
|
|
15163
|
-
import React25, { useCallback as useCallback29, useMemo as
|
|
15195
|
+
import React25, { useCallback as useCallback29, useMemo as useMemo22 } from "react";
|
|
15164
15196
|
import { jsx as jsx162 } from "react/jsx-runtime";
|
|
15165
15197
|
var MentionInsertContext = React25.createContext(null);
|
|
15166
15198
|
var useMentionInsert = /* @__PURE__ */ __name(() => React25.useContext(MentionInsertContext), "useMentionInsert");
|
|
@@ -15212,7 +15244,7 @@ function BlockNoteEditorMentionSuggestionMenu({
|
|
|
15212
15244
|
},
|
|
15213
15245
|
[editor, mentionSearchFn, mentionSearchParams]
|
|
15214
15246
|
);
|
|
15215
|
-
const wrappedSuggestionMenuComponent =
|
|
15247
|
+
const wrappedSuggestionMenuComponent = useMemo22(() => {
|
|
15216
15248
|
if (!suggestionMenuComponent) return void 0;
|
|
15217
15249
|
const Component2 = suggestionMenuComponent;
|
|
15218
15250
|
const Wrapped = /* @__PURE__ */ __name((props) => {
|
|
@@ -15459,7 +15491,7 @@ var cellUrl = /* @__PURE__ */ __name((params) => {
|
|
|
15459
15491
|
}, "cellUrl");
|
|
15460
15492
|
|
|
15461
15493
|
// src/client/context/JsonApiProvider.tsx
|
|
15462
|
-
import { useEffect as useEffect44, useMemo as
|
|
15494
|
+
import { useEffect as useEffect44, useMemo as useMemo23 } from "react";
|
|
15463
15495
|
import { jsx as jsx171 } from "react/jsx-runtime";
|
|
15464
15496
|
function JsonApiProvider({ config, children }) {
|
|
15465
15497
|
useEffect44(() => {
|
|
@@ -15467,7 +15499,7 @@ function JsonApiProvider({ config, children }) {
|
|
|
15467
15499
|
config.bootstrapper();
|
|
15468
15500
|
}
|
|
15469
15501
|
}, [config.bootstrapper]);
|
|
15470
|
-
const memoizedConfig =
|
|
15502
|
+
const memoizedConfig = useMemo23(() => config, [config]);
|
|
15471
15503
|
return /* @__PURE__ */ jsx171(JsonApiContext.Provider, { value: memoizedConfig, children });
|
|
15472
15504
|
}
|
|
15473
15505
|
__name(JsonApiProvider, "JsonApiProvider");
|
|
@@ -15673,16 +15705,16 @@ function useJsonApiMutation(config) {
|
|
|
15673
15705
|
__name(useJsonApiMutation, "useJsonApiMutation");
|
|
15674
15706
|
|
|
15675
15707
|
// src/client/hooks/useRehydration.ts
|
|
15676
|
-
import { useMemo as
|
|
15708
|
+
import { useMemo as useMemo24 } from "react";
|
|
15677
15709
|
function useRehydration(classKey, data) {
|
|
15678
|
-
return
|
|
15710
|
+
return useMemo24(() => {
|
|
15679
15711
|
if (!data) return null;
|
|
15680
15712
|
return RehydrationFactory.rehydrate(classKey, data);
|
|
15681
15713
|
}, [classKey, data]);
|
|
15682
15714
|
}
|
|
15683
15715
|
__name(useRehydration, "useRehydration");
|
|
15684
15716
|
function useRehydrationList(classKey, data) {
|
|
15685
|
-
return
|
|
15717
|
+
return useMemo24(() => {
|
|
15686
15718
|
if (!data || data.length === 0) return [];
|
|
15687
15719
|
return RehydrationFactory.rehydrateList(classKey, data);
|
|
15688
15720
|
}, [classKey, data]);
|
|
@@ -15691,13 +15723,13 @@ __name(useRehydrationList, "useRehydrationList");
|
|
|
15691
15723
|
|
|
15692
15724
|
// src/features/company/hooks/useCompanyTableStructure.tsx
|
|
15693
15725
|
import { useTranslations as useTranslations54 } from "next-intl";
|
|
15694
|
-
import { useMemo as
|
|
15726
|
+
import { useMemo as useMemo25 } from "react";
|
|
15695
15727
|
import { jsx as jsx172 } from "react/jsx-runtime";
|
|
15696
15728
|
var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
|
|
15697
15729
|
const t = useTranslations54();
|
|
15698
15730
|
const generateUrl = usePageUrlGenerator();
|
|
15699
15731
|
const { hasRole } = useCurrentUserContext();
|
|
15700
|
-
const tableData =
|
|
15732
|
+
const tableData = useMemo25(() => {
|
|
15701
15733
|
return params.data.map((company) => {
|
|
15702
15734
|
const entry = {
|
|
15703
15735
|
jsonApiData: company
|
|
@@ -15741,14 +15773,14 @@ var useCompanyTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
15741
15773
|
title: t(`common.date.create`)
|
|
15742
15774
|
})
|
|
15743
15775
|
};
|
|
15744
|
-
const columns =
|
|
15776
|
+
const columns = useMemo25(() => {
|
|
15745
15777
|
return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
|
|
15746
15778
|
}, [params.fields, fieldColumnMap, t, generateUrl, hasRole]);
|
|
15747
|
-
return
|
|
15779
|
+
return useMemo25(() => ({ data: tableData, columns }), [tableData, columns]);
|
|
15748
15780
|
}, "useCompanyTableStructure");
|
|
15749
15781
|
|
|
15750
15782
|
// src/features/company/hooks/useSubscriptionStatus.ts
|
|
15751
|
-
import { useMemo as
|
|
15783
|
+
import { useMemo as useMemo26 } from "react";
|
|
15752
15784
|
var TRIAL_DAYS = 14;
|
|
15753
15785
|
var GRACE_DAYS = 3;
|
|
15754
15786
|
var isAdministrator = /* @__PURE__ */ __name((currentUser) => {
|
|
@@ -15758,7 +15790,7 @@ var isAdministrator = /* @__PURE__ */ __name((currentUser) => {
|
|
|
15758
15790
|
}, "isAdministrator");
|
|
15759
15791
|
function useSubscriptionStatus() {
|
|
15760
15792
|
const { company, currentUser } = useCurrentUserContext();
|
|
15761
|
-
return
|
|
15793
|
+
return useMemo26(() => {
|
|
15762
15794
|
if (currentUser === null) {
|
|
15763
15795
|
return {
|
|
15764
15796
|
status: "loading",
|
|
@@ -15823,12 +15855,12 @@ __name(useSubscriptionStatus, "useSubscriptionStatus");
|
|
|
15823
15855
|
|
|
15824
15856
|
// src/features/role/hooks/useRoleTableStructure.tsx
|
|
15825
15857
|
import { useTranslations as useTranslations55 } from "next-intl";
|
|
15826
|
-
import { useMemo as
|
|
15858
|
+
import { useMemo as useMemo27 } from "react";
|
|
15827
15859
|
import { Fragment as Fragment25, jsx as jsx173 } from "react/jsx-runtime";
|
|
15828
15860
|
var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
|
|
15829
15861
|
const t = useTranslations55();
|
|
15830
15862
|
const generateUrl = usePageUrlGenerator();
|
|
15831
|
-
const tableData =
|
|
15863
|
+
const tableData = useMemo27(() => {
|
|
15832
15864
|
return params.data.map((role) => {
|
|
15833
15865
|
const entry = {
|
|
15834
15866
|
jsonApiData: role
|
|
@@ -15870,20 +15902,20 @@ var useRoleTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
15870
15902
|
title: t(`common.date.create`)
|
|
15871
15903
|
})
|
|
15872
15904
|
};
|
|
15873
|
-
const columns =
|
|
15905
|
+
const columns = useMemo27(() => {
|
|
15874
15906
|
return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
|
|
15875
15907
|
}, [params.fields, fieldColumnMap, t, generateUrl]);
|
|
15876
|
-
return
|
|
15908
|
+
return useMemo27(() => ({ data: tableData, columns }), [tableData, columns]);
|
|
15877
15909
|
}, "useRoleTableStructure");
|
|
15878
15910
|
|
|
15879
15911
|
// src/features/content/hooks/useContentTableStructure.tsx
|
|
15880
15912
|
import { useTranslations as useTranslations56 } from "next-intl";
|
|
15881
|
-
import { useMemo as
|
|
15913
|
+
import { useMemo as useMemo28 } from "react";
|
|
15882
15914
|
import { Fragment as Fragment26, jsx as jsx174, jsxs as jsxs99 } from "react/jsx-runtime";
|
|
15883
15915
|
var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
15884
15916
|
const t = useTranslations56();
|
|
15885
15917
|
const generateUrl = usePageUrlGenerator();
|
|
15886
|
-
const tableData =
|
|
15918
|
+
const tableData = useMemo28(() => {
|
|
15887
15919
|
return params.data.map((content) => {
|
|
15888
15920
|
const entry = {
|
|
15889
15921
|
jsonApiData: content
|
|
@@ -15968,7 +16000,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
15968
16000
|
title: t(`common.date.update`)
|
|
15969
16001
|
})
|
|
15970
16002
|
};
|
|
15971
|
-
const columns =
|
|
16003
|
+
const columns = useMemo28(() => {
|
|
15972
16004
|
return params.fields.map((field) => {
|
|
15973
16005
|
const localHandler = fieldColumnMap[field];
|
|
15974
16006
|
if (localHandler) return localHandler();
|
|
@@ -15977,7 +16009,7 @@ var useContentTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
15977
16009
|
return void 0;
|
|
15978
16010
|
}).filter((col) => col !== void 0);
|
|
15979
16011
|
}, [params.fields, fieldColumnMap, t, generateUrl, params.context?.customCells]);
|
|
15980
|
-
return
|
|
16012
|
+
return useMemo28(() => ({ data: tableData, columns }), [tableData, columns]);
|
|
15981
16013
|
}, "useContentTableStructure");
|
|
15982
16014
|
|
|
15983
16015
|
// src/features/oauth/hooks/useOAuthClients.ts
|
|
@@ -16277,7 +16309,7 @@ registerTableGenerator("companies", useCompanyTableStructure);
|
|
|
16277
16309
|
import { flexRender, getCoreRowModel, getExpandedRowModel, useReactTable } from "@tanstack/react-table";
|
|
16278
16310
|
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
16279
16311
|
import { useTranslations as useTranslations58 } from "next-intl";
|
|
16280
|
-
import React28, { memo, useMemo as
|
|
16312
|
+
import React28, { memo, useMemo as useMemo29, useState as useState59 } from "react";
|
|
16281
16313
|
|
|
16282
16314
|
// src/components/tables/ContentTableSearch.tsx
|
|
16283
16315
|
import { RefreshCw, Search, X as X3 } from "lucide-react";
|
|
@@ -16399,7 +16431,7 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
|
|
|
16399
16431
|
dataRetriever: data,
|
|
16400
16432
|
context: props.context
|
|
16401
16433
|
});
|
|
16402
|
-
const columnVisibility =
|
|
16434
|
+
const columnVisibility = useMemo29(
|
|
16403
16435
|
() => fields.reduce(
|
|
16404
16436
|
(acc, columnId) => {
|
|
16405
16437
|
acc[columnId] = true;
|
|
@@ -16424,7 +16456,7 @@ var ContentListTable = memo(/* @__PURE__ */ __name(function ContentListTable2(pr
|
|
|
16424
16456
|
}
|
|
16425
16457
|
});
|
|
16426
16458
|
const rowModel = tableData ? table.getRowModel() : null;
|
|
16427
|
-
const groupedRows =
|
|
16459
|
+
const groupedRows = useMemo29(() => {
|
|
16428
16460
|
if (!props.groupBy || !rowModel?.rows?.length) return null;
|
|
16429
16461
|
const groupMap = /* @__PURE__ */ new Map();
|
|
16430
16462
|
for (const row of rowModel.rows) {
|
|
@@ -16852,7 +16884,7 @@ __name(EntitySection, "EntitySection");
|
|
|
16852
16884
|
import Image8 from "next/image";
|
|
16853
16885
|
|
|
16854
16886
|
// src/features/auth/contexts/AuthContext.tsx
|
|
16855
|
-
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";
|
|
16856
16888
|
|
|
16857
16889
|
// src/features/auth/components/forms/Register.tsx
|
|
16858
16890
|
import { zodResolver as zodResolver5 } from "@hookform/resolvers/zod";
|
|
@@ -17211,7 +17243,7 @@ var AuthContextProvider = /* @__PURE__ */ __name(({
|
|
|
17211
17243
|
const [componentType, setComponentType] = useState62(initialComponentType);
|
|
17212
17244
|
const [params, setParams] = useState62(initialParams);
|
|
17213
17245
|
const [pendingTwoFactor, setPendingTwoFactor] = useState62();
|
|
17214
|
-
const activeComponent =
|
|
17246
|
+
const activeComponent = useMemo30(() => {
|
|
17215
17247
|
if (componentType === void 0) return null;
|
|
17216
17248
|
switch (componentType) {
|
|
17217
17249
|
case 0 /* Login */:
|
|
@@ -18876,12 +18908,12 @@ __name(RelevantContentsList, "RelevantContentsList");
|
|
|
18876
18908
|
// src/features/how-to/components/containers/HowToCommand.tsx
|
|
18877
18909
|
import { ArrowRight, LifeBuoyIcon } from "lucide-react";
|
|
18878
18910
|
import { useTranslations as useTranslations81 } from "next-intl";
|
|
18879
|
-
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";
|
|
18880
18912
|
|
|
18881
18913
|
// src/features/how-to/components/containers/HowToCommandViewer.tsx
|
|
18882
18914
|
import { ArrowLeft, BookOpen, MessageSquare } from "lucide-react";
|
|
18883
18915
|
import { useTranslations as useTranslations80 } from "next-intl";
|
|
18884
|
-
import { useMemo as
|
|
18916
|
+
import { useMemo as useMemo31 } from "react";
|
|
18885
18917
|
|
|
18886
18918
|
// src/features/how-to/utils/blocknote.ts
|
|
18887
18919
|
function extractTextFromContent(content) {
|
|
@@ -18953,8 +18985,8 @@ __name(extractHeadings, "extractHeadings");
|
|
|
18953
18985
|
import { jsx as jsx210, jsxs as jsxs126 } from "react/jsx-runtime";
|
|
18954
18986
|
function HowToCommandViewer({ howTo, onBack, onStartChat }) {
|
|
18955
18987
|
const t = useTranslations80();
|
|
18956
|
-
const readingTime =
|
|
18957
|
-
const headings =
|
|
18988
|
+
const readingTime = useMemo31(() => calculateReadingTime(howTo.description), [howTo.description]);
|
|
18989
|
+
const headings = useMemo31(() => extractHeadings(howTo.description), [howTo.description]);
|
|
18958
18990
|
return /* @__PURE__ */ jsxs126("div", { className: "flex h-full flex-col", children: [
|
|
18959
18991
|
/* @__PURE__ */ jsxs126("div", { className: "flex items-center gap-3 border-b px-4 py-3", children: [
|
|
18960
18992
|
/* @__PURE__ */ jsxs126(Button, { variant: "ghost", size: "sm", onClick: onBack, className: "h-8 px-2", children: [
|
|
@@ -19013,7 +19045,7 @@ function HowToCommand({ pathname, extraGroups, onStartChat }) {
|
|
|
19013
19045
|
retrieverParams: {},
|
|
19014
19046
|
module: Modules.HowTo
|
|
19015
19047
|
});
|
|
19016
|
-
const { relevantHowTos, otherHowTos } =
|
|
19048
|
+
const { relevantHowTos, otherHowTos } = useMemo32(() => {
|
|
19017
19049
|
if (!data.data) return { relevantHowTos: [], otherHowTos: [] };
|
|
19018
19050
|
const relevant = [];
|
|
19019
19051
|
const other = [];
|
|
@@ -19210,12 +19242,12 @@ import { useTranslations as useTranslations84 } from "next-intl";
|
|
|
19210
19242
|
|
|
19211
19243
|
// src/features/how-to/hooks/useHowToTableStructure.tsx
|
|
19212
19244
|
import { useTranslations as useTranslations83 } from "next-intl";
|
|
19213
|
-
import { useMemo as
|
|
19245
|
+
import { useMemo as useMemo33 } from "react";
|
|
19214
19246
|
import { Fragment as Fragment42, jsx as jsx215 } from "react/jsx-runtime";
|
|
19215
19247
|
var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
|
|
19216
19248
|
const t = useTranslations83();
|
|
19217
19249
|
const generateUrl = usePageUrlGenerator();
|
|
19218
|
-
const tableData =
|
|
19250
|
+
const tableData = useMemo33(() => {
|
|
19219
19251
|
return params.data.map((howTo) => {
|
|
19220
19252
|
const entry = {
|
|
19221
19253
|
jsonApiData: howTo
|
|
@@ -19269,10 +19301,10 @@ var useHowToTableStructure = /* @__PURE__ */ __name((params) => {
|
|
|
19269
19301
|
title: t(`common.date.update`)
|
|
19270
19302
|
})
|
|
19271
19303
|
};
|
|
19272
|
-
const columns =
|
|
19304
|
+
const columns = useMemo33(() => {
|
|
19273
19305
|
return params.fields.map((field) => fieldColumnMap[field]?.()).filter((col) => col !== void 0);
|
|
19274
19306
|
}, [params.fields, fieldColumnMap, t, generateUrl]);
|
|
19275
|
-
return
|
|
19307
|
+
return useMemo33(() => ({ data: tableData, columns }), [tableData, columns]);
|
|
19276
19308
|
}, "useHowToTableStructure");
|
|
19277
19309
|
registerTableGenerator("howtos", useHowToTableStructure);
|
|
19278
19310
|
|
|
@@ -19641,10 +19673,10 @@ import ReactMarkdown3 from "react-markdown";
|
|
|
19641
19673
|
import remarkGfm3 from "remark-gfm";
|
|
19642
19674
|
|
|
19643
19675
|
// src/features/assistant-message/components/parts/MessageSourcesContainer.tsx
|
|
19644
|
-
import { useEffect as useEffect63, useMemo as
|
|
19676
|
+
import { useEffect as useEffect63, useMemo as useMemo35, useState as useState86 } from "react";
|
|
19645
19677
|
|
|
19646
19678
|
// src/features/assistant-message/components/parts/MessageSourcesPanel.tsx
|
|
19647
|
-
import { useMemo as
|
|
19679
|
+
import { useMemo as useMemo34, useState as useState85 } from "react";
|
|
19648
19680
|
import { useTranslations as useTranslations94 } from "next-intl";
|
|
19649
19681
|
import { ChevronDown as ChevronDown4, ChevronRight as ChevronRight2 } from "lucide-react";
|
|
19650
19682
|
|
|
@@ -19937,7 +19969,7 @@ __name(SuggestedQuestionsTab, "SuggestedQuestionsTab");
|
|
|
19937
19969
|
import { jsx as jsx229, jsxs as jsxs139 } from "react/jsx-runtime";
|
|
19938
19970
|
function MessageSourcesPanel({ message, isLatestAssistant, onSelectFollowUp, sources, users }) {
|
|
19939
19971
|
const t = useTranslations94();
|
|
19940
|
-
const visibleReferences =
|
|
19972
|
+
const visibleReferences = useMemo34(
|
|
19941
19973
|
() => message.references.filter((ref) => {
|
|
19942
19974
|
try {
|
|
19943
19975
|
return !!ModuleRegistry.findByName(ref.type).pageUrl;
|
|
@@ -19950,7 +19982,7 @@ function MessageSourcesPanel({ message, isLatestAssistant, onSelectFollowUp, sou
|
|
|
19950
19982
|
const refsCount = visibleReferences.length;
|
|
19951
19983
|
const citationsCount = message.citations.length;
|
|
19952
19984
|
const suggestionsCount = isLatestAssistant ? message.suggestedQuestions.length : 0;
|
|
19953
|
-
const contentsCount =
|
|
19985
|
+
const contentsCount = useMemo34(() => {
|
|
19954
19986
|
const ids = /* @__PURE__ */ new Set();
|
|
19955
19987
|
for (const c of message.citations) {
|
|
19956
19988
|
if (!c.nodeId) continue;
|
|
@@ -20029,7 +20061,7 @@ var SourcesFetcher = class extends ClientAbstractService {
|
|
|
20029
20061
|
}
|
|
20030
20062
|
};
|
|
20031
20063
|
function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp }) {
|
|
20032
|
-
const groups =
|
|
20064
|
+
const groups = useMemo35(() => {
|
|
20033
20065
|
const map = /* @__PURE__ */ new Map();
|
|
20034
20066
|
for (const chunk of message.citations) {
|
|
20035
20067
|
if (!chunk.nodeType || !chunk.nodeId) continue;
|
|
@@ -20042,7 +20074,7 @@ function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp
|
|
|
20042
20074
|
}
|
|
20043
20075
|
return map;
|
|
20044
20076
|
}, [message.citations]);
|
|
20045
|
-
const groupsKey =
|
|
20077
|
+
const groupsKey = useMemo35(() => {
|
|
20046
20078
|
const parts = [];
|
|
20047
20079
|
for (const [nodeType, ids] of groups) {
|
|
20048
20080
|
parts.push(`${nodeType}:${Array.from(ids).sort().join(",")}`);
|
|
@@ -20084,12 +20116,12 @@ function MessageSourcesContainer({ message, isLatestAssistant, onSelectFollowUp
|
|
|
20084
20116
|
cancelled = true;
|
|
20085
20117
|
};
|
|
20086
20118
|
}, [groupsKey, groups]);
|
|
20087
|
-
const sources =
|
|
20119
|
+
const sources = useMemo35(() => {
|
|
20088
20120
|
const map = /* @__PURE__ */ new Map();
|
|
20089
20121
|
for (const entity of resolved) map.set(entity.id, entity);
|
|
20090
20122
|
return map;
|
|
20091
20123
|
}, [resolved]);
|
|
20092
|
-
const users =
|
|
20124
|
+
const users = useMemo35(() => {
|
|
20093
20125
|
const userMap = /* @__PURE__ */ new Map();
|
|
20094
20126
|
for (const entity of resolved) {
|
|
20095
20127
|
const author = entity._author ?? (() => {
|
|
@@ -20412,7 +20444,7 @@ __name(NotificationsListContainer, "NotificationsListContainer");
|
|
|
20412
20444
|
// src/features/notification/components/modals/NotificationModal.tsx
|
|
20413
20445
|
import { BellIcon } from "lucide-react";
|
|
20414
20446
|
import { useTranslations as useTranslations99 } from "next-intl";
|
|
20415
|
-
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";
|
|
20416
20448
|
import { jsx as jsx239, jsxs as jsxs147 } from "react/jsx-runtime";
|
|
20417
20449
|
function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
20418
20450
|
const _instanceId = useRef37(Math.random().toString(36).substr(2, 9));
|
|
@@ -20456,7 +20488,7 @@ function NotificationModalContent({ isOpen, setIsOpen }) {
|
|
|
20456
20488
|
}
|
|
20457
20489
|
return !breaker.isOpen;
|
|
20458
20490
|
}, []);
|
|
20459
|
-
const { unreadCount, unreadIds } =
|
|
20491
|
+
const { unreadCount, unreadIds } = useMemo36(() => {
|
|
20460
20492
|
const unreadNotifications2 = notifications.filter((notif) => !notif.isRead);
|
|
20461
20493
|
return {
|
|
20462
20494
|
unreadCount: unreadNotifications2.length,
|
|
@@ -22445,7 +22477,7 @@ __name(WaitlistList, "WaitlistList");
|
|
|
22445
22477
|
// src/features/rbac/components/RbacContainer.tsx
|
|
22446
22478
|
import { Loader2Icon as Loader2Icon4 } from "lucide-react";
|
|
22447
22479
|
import { useTranslations as useTranslations112 } from "next-intl";
|
|
22448
|
-
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";
|
|
22449
22481
|
|
|
22450
22482
|
// src/features/rbac/components/RbacPermissionCell.tsx
|
|
22451
22483
|
import { CheckIcon as CheckIcon9, MinusIcon as MinusIcon2, XIcon as XIcon12 } from "lucide-react";
|
|
@@ -22800,11 +22832,11 @@ function RbacContainer() {
|
|
|
22800
22832
|
setSelectedModuleId(id);
|
|
22801
22833
|
setActivePicker(null);
|
|
22802
22834
|
}, []);
|
|
22803
|
-
const sortedModuleIds =
|
|
22835
|
+
const sortedModuleIds = useMemo37(() => {
|
|
22804
22836
|
if (!matrix) return [];
|
|
22805
22837
|
return Object.keys(matrix).sort((a, b) => (moduleNames?.[a] ?? a).localeCompare(moduleNames?.[b] ?? b));
|
|
22806
22838
|
}, [matrix, moduleNames]);
|
|
22807
|
-
const roleIds =
|
|
22839
|
+
const roleIds = useMemo37(() => {
|
|
22808
22840
|
if (roleNames) {
|
|
22809
22841
|
return Object.keys(roleNames).sort((a, b) => (roleNames[a] ?? a).localeCompare(roleNames[b] ?? b));
|
|
22810
22842
|
}
|
|
@@ -22822,14 +22854,14 @@ function RbacContainer() {
|
|
|
22822
22854
|
setSelectedModuleId(sortedModuleIds[0]);
|
|
22823
22855
|
}
|
|
22824
22856
|
}, [selectedModuleId, sortedModuleIds]);
|
|
22825
|
-
const activeValue =
|
|
22857
|
+
const activeValue = useMemo37(() => {
|
|
22826
22858
|
if (!activePicker || !matrix) return void 0;
|
|
22827
22859
|
const block = matrix[activePicker.moduleId];
|
|
22828
22860
|
if (!block) return void 0;
|
|
22829
22861
|
const tokens = activePicker.rowKey === "default" ? block.default : block[activePicker.rowKey];
|
|
22830
22862
|
return cellValue(tokens, activePicker.action);
|
|
22831
22863
|
}, [activePicker, matrix]);
|
|
22832
|
-
const activeSegments =
|
|
22864
|
+
const activeSegments = useMemo37(() => {
|
|
22833
22865
|
if (!activePicker) return [];
|
|
22834
22866
|
return modulePaths[activePicker.moduleId] ?? [];
|
|
22835
22867
|
}, [activePicker, modulePaths]);
|
|
@@ -22900,7 +22932,7 @@ __name(RbacContainer, "RbacContainer");
|
|
|
22900
22932
|
// src/features/rbac/components/RbacByRoleContainer.tsx
|
|
22901
22933
|
import { Loader2Icon as Loader2Icon5 } from "lucide-react";
|
|
22902
22934
|
import { useTranslations as useTranslations113 } from "next-intl";
|
|
22903
|
-
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";
|
|
22904
22936
|
import { jsx as jsx271, jsxs as jsxs175 } from "react/jsx-runtime";
|
|
22905
22937
|
function findToken2(tokens, action) {
|
|
22906
22938
|
if (!tokens) return void 0;
|
|
@@ -22950,11 +22982,11 @@ function RbacByRoleContainer() {
|
|
|
22950
22982
|
setSelectedRoleId(id);
|
|
22951
22983
|
setActivePicker(null);
|
|
22952
22984
|
}, []);
|
|
22953
|
-
const sortedRoleIds =
|
|
22985
|
+
const sortedRoleIds = useMemo38(() => {
|
|
22954
22986
|
if (!roleNames) return [];
|
|
22955
22987
|
return Object.keys(roleNames).sort((a, b) => (roleNames[a] ?? a).localeCompare(roleNames[b] ?? b));
|
|
22956
22988
|
}, [roleNames]);
|
|
22957
|
-
const sortedModuleIds =
|
|
22989
|
+
const sortedModuleIds = useMemo38(() => {
|
|
22958
22990
|
if (!matrix) return [];
|
|
22959
22991
|
return Object.keys(matrix).sort((a, b) => (moduleNames?.[a] ?? a).localeCompare(moduleNames?.[b] ?? b));
|
|
22960
22992
|
}, [matrix, moduleNames]);
|
|
@@ -22963,14 +22995,14 @@ function RbacByRoleContainer() {
|
|
|
22963
22995
|
setSelectedRoleId(sortedRoleIds[0]);
|
|
22964
22996
|
}
|
|
22965
22997
|
}, [selectedRoleId, sortedRoleIds]);
|
|
22966
|
-
const activeValue =
|
|
22998
|
+
const activeValue = useMemo38(() => {
|
|
22967
22999
|
if (!activePicker || !matrix) return void 0;
|
|
22968
23000
|
const block = matrix[activePicker.moduleId];
|
|
22969
23001
|
if (!block) return void 0;
|
|
22970
23002
|
const tokens = activePicker.rowKey === "default" ? block.default : block[activePicker.rowKey];
|
|
22971
23003
|
return cellValue2(tokens, activePicker.action);
|
|
22972
23004
|
}, [activePicker, matrix]);
|
|
22973
|
-
const activeSegments =
|
|
23005
|
+
const activeSegments = useMemo38(() => {
|
|
22974
23006
|
if (!activePicker) return [];
|
|
22975
23007
|
return modulePaths[activePicker.moduleId] ?? [];
|
|
22976
23008
|
}, [activePicker, modulePaths]);
|
|
@@ -23614,4 +23646,4 @@ export {
|
|
|
23614
23646
|
useOAuthClients,
|
|
23615
23647
|
useOAuthClient
|
|
23616
23648
|
};
|
|
23617
|
-
//# sourceMappingURL=chunk-
|
|
23649
|
+
//# sourceMappingURL=chunk-BBBQGJEG.mjs.map
|