@flamingo-stack/openframe-frontend-core 0.0.173 → 0.0.174-snapshot.20260514021733
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/{chunk-2MEBOTV4.cjs → chunk-JI43U7UN.cjs} +391 -378
- package/dist/chunk-JI43U7UN.cjs.map +1 -0
- package/dist/{chunk-J3ZCNPDM.js → chunk-KCKMK4UF.js} +216 -203
- package/dist/chunk-KCKMK4UF.js.map +1 -0
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.js +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/approval-request-message.tsx +2 -2
- package/src/components/chat/chat-message-list.tsx +78 -31
- package/dist/chunk-2MEBOTV4.cjs.map +0 -1
- package/dist/chunk-J3ZCNPDM.js.map +0 -1
|
@@ -413,7 +413,7 @@ function useDynamicTheme() {
|
|
|
413
413
|
}
|
|
414
414
|
|
|
415
415
|
// src/components/features/array-entry-manager.tsx
|
|
416
|
-
import { useState as
|
|
416
|
+
import { useState as useState58, useEffect as useEffect43 } from "react";
|
|
417
417
|
|
|
418
418
|
// src/components/ui/allowed-domains-input.tsx
|
|
419
419
|
init_cn();
|
|
@@ -3021,10 +3021,10 @@ var ApprovalRequestMessage = forwardRef9(
|
|
|
3021
3021
|
children: [
|
|
3022
3022
|
/* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-1", children: [
|
|
3023
3023
|
/* @__PURE__ */ jsxs10("div", { className: "bg-ods-bg border border-ods-border rounded-md p-3 flex gap-2 items-start max-h-32 overflow-y-auto", children: [
|
|
3024
|
-
/* @__PURE__ */ jsx13("code", { className: "font-['DM_Sans'] font-medium text-sm text-ods-text-primary flex-1 leading-5 whitespace-pre-wrap break-
|
|
3024
|
+
/* @__PURE__ */ jsx13("code", { className: "font-['DM_Sans'] font-medium text-sm text-ods-text-primary flex-1 leading-5 whitespace-pre-wrap break-words", children: data.command }),
|
|
3025
3025
|
data.icon && /* @__PURE__ */ jsx13("div", { className: "w-4 h-4 shrink-0 text-ods-text-tertiary", children: data.icon })
|
|
3026
3026
|
] }),
|
|
3027
|
-
data.explanation && /* @__PURE__ */ jsx13("p", { className: "font-['DM_Sans'] font-medium text-sm text-ods-text-secondary leading-5", children: data.explanation })
|
|
3027
|
+
data.explanation && /* @__PURE__ */ jsx13("p", { className: "font-['DM_Sans'] font-medium text-sm text-ods-text-secondary leading-5 whitespace-pre-line break-words", children: data.explanation })
|
|
3028
3028
|
] }),
|
|
3029
3029
|
/* @__PURE__ */ jsx13("div", { className: "flex", children: /* @__PURE__ */ jsx13(
|
|
3030
3030
|
Tag,
|
|
@@ -5315,7 +5315,7 @@ MemoizedChatMessageEnhanced.displayName = "MemoizedChatMessageEnhanced";
|
|
|
5315
5315
|
|
|
5316
5316
|
// src/components/chat/chat-message-list.tsx
|
|
5317
5317
|
init_cn();
|
|
5318
|
-
import { useRef as useRef6, useEffect as useEffect6, useLayoutEffect as useLayoutEffect2, useImperativeHandle as useImperativeHandle3, forwardRef as forwardRef22 } from "react";
|
|
5318
|
+
import { useRef as useRef6, useState as useState14, useEffect as useEffect6, useLayoutEffect as useLayoutEffect2, useImperativeHandle as useImperativeHandle3, forwardRef as forwardRef22 } from "react";
|
|
5319
5319
|
import { useStickToBottom } from "use-stick-to-bottom";
|
|
5320
5320
|
|
|
5321
5321
|
// src/components/chat/chat-message-loader.tsx
|
|
@@ -5406,17 +5406,18 @@ var ChatMessageList = forwardRef22(
|
|
|
5406
5406
|
}, ref) => {
|
|
5407
5407
|
const { scrollRef, contentRef, scrollToBottom } = useStickToBottom({
|
|
5408
5408
|
resize: "smooth",
|
|
5409
|
-
initial:
|
|
5409
|
+
initial: "instant"
|
|
5410
5410
|
});
|
|
5411
|
-
const
|
|
5411
|
+
const [scrollEl, setScrollEl] = useState14(null);
|
|
5412
|
+
const [sentinelEl, setSentinelEl] = useState14(null);
|
|
5412
5413
|
const onLoadMoreRef = useRef6(onLoadMore);
|
|
5413
5414
|
onLoadMoreRef.current = onLoadMore;
|
|
5414
5415
|
const isFetchingRef = useRef6(isFetchingNextPage);
|
|
5415
5416
|
isFetchingRef.current = isFetchingNextPage;
|
|
5416
5417
|
const prevRenderRef = useRef6({ dialogId: void 0, messageCount: 0, lastMessageId: void 0 });
|
|
5417
5418
|
const prependRef = useRef6({ firstMessageId: void 0, firstMessageContent: void 0, scrollHeight: 0 });
|
|
5418
|
-
|
|
5419
|
-
if (!autoScroll) return;
|
|
5419
|
+
useLayoutEffect2(() => {
|
|
5420
|
+
if (!autoScroll || !scrollEl) return;
|
|
5420
5421
|
const dialogChanged = dialogId !== prevRenderRef.current.dialogId;
|
|
5421
5422
|
const prevCount = prevRenderRef.current.messageCount;
|
|
5422
5423
|
const newCount = messages.length;
|
|
@@ -5437,9 +5438,9 @@ var ChatMessageList = forwardRef22(
|
|
|
5437
5438
|
void scrollToBottom({ animation: "instant", ignoreEscapes: true });
|
|
5438
5439
|
}
|
|
5439
5440
|
}
|
|
5440
|
-
}, [autoScroll, messages, dialogId, scrollToBottom]);
|
|
5441
|
+
}, [autoScroll, messages, dialogId, scrollToBottom, scrollEl]);
|
|
5441
5442
|
useLayoutEffect2(() => {
|
|
5442
|
-
const el =
|
|
5443
|
+
const el = scrollEl;
|
|
5443
5444
|
if (!el) {
|
|
5444
5445
|
prependRef.current = { firstMessageId: void 0, firstMessageContent: void 0, scrollHeight: 0 };
|
|
5445
5446
|
return;
|
|
@@ -5467,24 +5468,35 @@ var ChatMessageList = forwardRef22(
|
|
|
5467
5468
|
if (currentFirstContent !== prependRef.current.firstMessageContent) {
|
|
5468
5469
|
prependRef.current.firstMessageContent = currentFirstContent;
|
|
5469
5470
|
}
|
|
5470
|
-
}, [messages,
|
|
5471
|
+
}, [messages, scrollEl]);
|
|
5471
5472
|
useEffect6(() => {
|
|
5472
|
-
const scrollContainer =
|
|
5473
|
-
const sentinelElement =
|
|
5474
|
-
if (!scrollContainer || !
|
|
5475
|
-
const
|
|
5476
|
-
(
|
|
5477
|
-
|
|
5478
|
-
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
|
|
5483
|
-
|
|
5484
|
-
|
|
5485
|
-
|
|
5486
|
-
|
|
5487
|
-
|
|
5473
|
+
const scrollContainer = scrollEl;
|
|
5474
|
+
const sentinelElement = sentinelEl;
|
|
5475
|
+
if (!scrollContainer || !hasNextPage) return;
|
|
5476
|
+
const tryLoad = () => {
|
|
5477
|
+
if (isFetchingRef.current) return;
|
|
5478
|
+
onLoadMoreRef.current?.();
|
|
5479
|
+
};
|
|
5480
|
+
let observer;
|
|
5481
|
+
if (sentinelElement) {
|
|
5482
|
+
observer = new IntersectionObserver(
|
|
5483
|
+
(entries) => {
|
|
5484
|
+
const entry = entries[0];
|
|
5485
|
+
if (entry?.isIntersecting) tryLoad();
|
|
5486
|
+
},
|
|
5487
|
+
{ root: scrollContainer, rootMargin: "200px", threshold: 0.1 }
|
|
5488
|
+
);
|
|
5489
|
+
observer.observe(sentinelElement);
|
|
5490
|
+
}
|
|
5491
|
+
const onScroll = () => {
|
|
5492
|
+
if (scrollContainer.scrollTop <= 200) tryLoad();
|
|
5493
|
+
};
|
|
5494
|
+
scrollContainer.addEventListener("scroll", onScroll, { passive: true });
|
|
5495
|
+
return () => {
|
|
5496
|
+
observer?.disconnect();
|
|
5497
|
+
scrollContainer.removeEventListener("scroll", onScroll);
|
|
5498
|
+
};
|
|
5499
|
+
}, [hasNextPage, scrollEl, sentinelEl, messages.length]);
|
|
5488
5500
|
useImperativeHandle3(ref, () => scrollRef.current, [scrollRef]);
|
|
5489
5501
|
const showLoader = useDelayedFlag(isLoading, { delay: 200, minDuration: 400 });
|
|
5490
5502
|
if (showLoader) {
|
|
@@ -5499,6 +5511,7 @@ var ChatMessageList = forwardRef22(
|
|
|
5499
5511
|
}
|
|
5500
5512
|
const setScrollRef = (el) => {
|
|
5501
5513
|
scrollRef(el);
|
|
5514
|
+
setScrollEl(el);
|
|
5502
5515
|
};
|
|
5503
5516
|
const setContentRef = (el) => {
|
|
5504
5517
|
contentRef(el);
|
|
@@ -5524,7 +5537,7 @@ var ChatMessageList = forwardRef22(
|
|
|
5524
5537
|
),
|
|
5525
5538
|
style: { minHeight: "100%" },
|
|
5526
5539
|
children: [
|
|
5527
|
-
hasNextPage && /* @__PURE__ */ jsx33("div", { ref:
|
|
5540
|
+
hasNextPage && /* @__PURE__ */ jsx33("div", { ref: setSentinelEl, className: "h-px" }),
|
|
5528
5541
|
isFetchingNextPage && /* @__PURE__ */ jsx33(
|
|
5529
5542
|
"div",
|
|
5530
5543
|
{
|
|
@@ -6419,7 +6432,7 @@ function useChunkCatchup({
|
|
|
6419
6432
|
}
|
|
6420
6433
|
|
|
6421
6434
|
// src/components/chat/hooks/use-nats-dialog-subscription.ts
|
|
6422
|
-
import { useCallback as useCallback6, useEffect as useEffect8, useRef as useRef10, useState as
|
|
6435
|
+
import { useCallback as useCallback6, useEffect as useEffect8, useRef as useRef10, useState as useState16 } from "react";
|
|
6423
6436
|
var shared = null;
|
|
6424
6437
|
function useNatsDialogSubscription({
|
|
6425
6438
|
enabled,
|
|
@@ -6434,9 +6447,9 @@ function useNatsDialogSubscription({
|
|
|
6434
6447
|
clientConfig = {},
|
|
6435
6448
|
reconnectionBackoff
|
|
6436
6449
|
}) {
|
|
6437
|
-
const [isConnected, setIsConnected] =
|
|
6438
|
-
const [isSubscribed, setIsSubscribed] =
|
|
6439
|
-
const [reconnectionCount, setReconnectionCount] =
|
|
6450
|
+
const [isConnected, setIsConnected] = useState16(false);
|
|
6451
|
+
const [isSubscribed, setIsSubscribed] = useState16(false);
|
|
6452
|
+
const [reconnectionCount, setReconnectionCount] = useState16(0);
|
|
6440
6453
|
const clientRef = useRef10(null);
|
|
6441
6454
|
const subscriptionRefs = useRef10(/* @__PURE__ */ new Map());
|
|
6442
6455
|
const onEventRef = useRef10(onEvent);
|
|
@@ -8091,13 +8104,13 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
8091
8104
|
|
|
8092
8105
|
// src/components/navigation/header.tsx
|
|
8093
8106
|
import Link from "next/link";
|
|
8094
|
-
import React20, { useEffect as useEffect10, useRef as useRef12, useState as
|
|
8107
|
+
import React20, { useEffect as useEffect10, useRef as useRef12, useState as useState17 } from "react";
|
|
8095
8108
|
init_button2();
|
|
8096
8109
|
import { Fragment as Fragment4, jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
8097
8110
|
function Header({ config, platform }) {
|
|
8098
|
-
const [show, setShow] =
|
|
8099
|
-
const [lastScrollY, setLastScrollY] =
|
|
8100
|
-
const [openDropdowns, setOpenDropdowns] =
|
|
8111
|
+
const [show, setShow] = useState17(true);
|
|
8112
|
+
const [lastScrollY, setLastScrollY] = useState17(0);
|
|
8113
|
+
const [openDropdowns, setOpenDropdowns] = useState17({});
|
|
8101
8114
|
const dropdownRefs = useRef12({});
|
|
8102
8115
|
const triggerRefs = useRef12({});
|
|
8103
8116
|
useEffect10(() => {
|
|
@@ -8359,7 +8372,7 @@ function Header({ config, platform }) {
|
|
|
8359
8372
|
}
|
|
8360
8373
|
|
|
8361
8374
|
// src/components/navigation/client-only-header.tsx
|
|
8362
|
-
import { useState as
|
|
8375
|
+
import { useState as useState18, useEffect as useEffect11 } from "react";
|
|
8363
8376
|
|
|
8364
8377
|
// src/components/navigation/header-skeleton.tsx
|
|
8365
8378
|
import { jsx as jsx42, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
@@ -8407,7 +8420,7 @@ function HeaderSkeleton({ config }) {
|
|
|
8407
8420
|
// src/components/navigation/client-only-header.tsx
|
|
8408
8421
|
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
8409
8422
|
function ClientOnlyHeader({ config, skeleton }) {
|
|
8410
|
-
const [isClient, setIsClient] =
|
|
8423
|
+
const [isClient, setIsClient] = useState18(false);
|
|
8411
8424
|
useEffect11(() => {
|
|
8412
8425
|
setIsClient(true);
|
|
8413
8426
|
}, []);
|
|
@@ -8542,14 +8555,14 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
8542
8555
|
}
|
|
8543
8556
|
|
|
8544
8557
|
// src/components/navigation/sliding-sidebar.tsx
|
|
8545
|
-
import { useState as
|
|
8558
|
+
import { useState as useState19, useEffect as useEffect13 } from "react";
|
|
8546
8559
|
import { motion, AnimatePresence } from "framer-motion";
|
|
8547
8560
|
init_button2();
|
|
8548
8561
|
import { Fragment as Fragment6, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
8549
8562
|
function SlidingSidebar({ config }) {
|
|
8550
|
-
const [expandedItems, setExpandedItems] =
|
|
8551
|
-
const [mounted, setMounted] =
|
|
8552
|
-
const [headerHeight, setHeaderHeight] =
|
|
8563
|
+
const [expandedItems, setExpandedItems] = useState19(/* @__PURE__ */ new Set());
|
|
8564
|
+
const [mounted, setMounted] = useState19(false);
|
|
8565
|
+
const [headerHeight, setHeaderHeight] = useState19(64);
|
|
8553
8566
|
useEffect13(() => {
|
|
8554
8567
|
setMounted(true);
|
|
8555
8568
|
const calculateHeaderHeight = () => {
|
|
@@ -8761,7 +8774,7 @@ function SlidingSidebar({ config }) {
|
|
|
8761
8774
|
}
|
|
8762
8775
|
|
|
8763
8776
|
// src/components/navigation/sticky-section-nav.tsx
|
|
8764
|
-
import { useEffect as useEffect14, useState as
|
|
8777
|
+
import { useEffect as useEffect14, useState as useState20, useCallback as useCallback8, useRef as useRef14 } from "react";
|
|
8765
8778
|
import { jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
8766
8779
|
function StickySectionNav({
|
|
8767
8780
|
sections,
|
|
@@ -8822,7 +8835,7 @@ function StickySectionNav({
|
|
|
8822
8835
|
] });
|
|
8823
8836
|
}
|
|
8824
8837
|
function useSectionNavigation(sections, options) {
|
|
8825
|
-
const [activeSection, setActiveSection] =
|
|
8838
|
+
const [activeSection, setActiveSection] = useState20(sections[0]?.id || "");
|
|
8826
8839
|
const isScrollingFromClick = useRef14(false);
|
|
8827
8840
|
const { offset: offset2 = 100 } = options || {};
|
|
8828
8841
|
const handleSectionClick = useCallback8((sectionId) => {
|
|
@@ -8876,7 +8889,7 @@ function useSectionNavigation(sections, options) {
|
|
|
8876
8889
|
}
|
|
8877
8890
|
|
|
8878
8891
|
// src/components/navigation/navigation-sidebar.tsx
|
|
8879
|
-
import { useCallback as useCallback9, useLayoutEffect as useLayoutEffect4, useMemo as useMemo7, useState as
|
|
8892
|
+
import { useCallback as useCallback9, useLayoutEffect as useLayoutEffect4, useMemo as useMemo7, useState as useState21 } from "react";
|
|
8880
8893
|
|
|
8881
8894
|
// src/components/navigation/navigation-sidebar-header.tsx
|
|
8882
8895
|
import { jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
@@ -9026,7 +9039,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
9026
9039
|
STORAGE_KEY,
|
|
9027
9040
|
!isLgUp || (config.minimized ?? false)
|
|
9028
9041
|
);
|
|
9029
|
-
const [transitionsEnabled, setTransitionsEnabled] =
|
|
9042
|
+
const [transitionsEnabled, setTransitionsEnabled] = useState21(false);
|
|
9030
9043
|
const isMinimized = !isLgUp || minimized;
|
|
9031
9044
|
const showLabel = isLgUp && !minimized;
|
|
9032
9045
|
const handleToggle = useCallback9(() => {
|
|
@@ -9556,7 +9569,7 @@ function NotificationsHeaderButton({
|
|
|
9556
9569
|
}
|
|
9557
9570
|
|
|
9558
9571
|
// src/components/navigation/app-layout.tsx
|
|
9559
|
-
import { Suspense, useCallback as useCallback12, useState as
|
|
9572
|
+
import { Suspense, useCallback as useCallback12, useState as useState24 } from "react";
|
|
9560
9573
|
|
|
9561
9574
|
// src/components/features/notifications/notification-drawer.tsx
|
|
9562
9575
|
import * as DialogPrimitive2 from "@radix-ui/react-dialog";
|
|
@@ -10145,7 +10158,7 @@ function AppLayout({
|
|
|
10145
10158
|
mobileBurgerMenuProps,
|
|
10146
10159
|
disabled = false
|
|
10147
10160
|
}) {
|
|
10148
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
10161
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState24(false);
|
|
10149
10162
|
const handleToggleMobileMenu = useCallback12(() => {
|
|
10150
10163
|
setMobileMenuOpen((prev) => !prev);
|
|
10151
10164
|
}, []);
|
|
@@ -10519,7 +10532,7 @@ ScriptArguments.displayName = "ScriptArguments";
|
|
|
10519
10532
|
|
|
10520
10533
|
// src/components/announcement-bar.tsx
|
|
10521
10534
|
init_button2();
|
|
10522
|
-
import { useState as
|
|
10535
|
+
import { useState as useState25, useEffect as useEffect18 } from "react";
|
|
10523
10536
|
import Image4 from "next/image";
|
|
10524
10537
|
import { X as X4 } from "lucide-react";
|
|
10525
10538
|
|
|
@@ -10725,8 +10738,8 @@ var getSvgIcon = (name, size = "main", extra = {}) => {
|
|
|
10725
10738
|
return renderSvgIcon(name, { className: cls, ...extra });
|
|
10726
10739
|
};
|
|
10727
10740
|
function AnnouncementBar() {
|
|
10728
|
-
const [announcement, setAnnouncement] =
|
|
10729
|
-
const [isVisible, setIsVisible] =
|
|
10741
|
+
const [announcement, setAnnouncement] = useState25(null);
|
|
10742
|
+
const [isVisible, setIsVisible] = useState25(false);
|
|
10730
10743
|
const platform = getAppType();
|
|
10731
10744
|
const getDismissKey = (id) => `${platform}-announcement-${id}-dismissed`;
|
|
10732
10745
|
const getCacheKey = () => `${platform}-announcement-cache`;
|
|
@@ -11865,7 +11878,7 @@ function EmptyState2({
|
|
|
11865
11878
|
}
|
|
11866
11879
|
|
|
11867
11880
|
// src/components/faq-accordion.tsx
|
|
11868
|
-
import { useRef as useRef15, useState as
|
|
11881
|
+
import { useRef as useRef15, useState as useState26, useEffect as useEffect19, useCallback as useCallback13 } from "react";
|
|
11869
11882
|
|
|
11870
11883
|
// src/components/ui/chevron-button.tsx
|
|
11871
11884
|
init_cn();
|
|
@@ -11906,7 +11919,7 @@ init_cn();
|
|
|
11906
11919
|
import { jsx as jsx85, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
11907
11920
|
var useMeasuredHeight = (isOpen) => {
|
|
11908
11921
|
const ref = useRef15(null);
|
|
11909
|
-
const [maxHeight, setMaxHeight] =
|
|
11922
|
+
const [maxHeight, setMaxHeight] = useState26("0px");
|
|
11910
11923
|
const measure = useCallback13(() => {
|
|
11911
11924
|
if (ref.current) {
|
|
11912
11925
|
const height = ref.current.scrollHeight;
|
|
@@ -11923,7 +11936,7 @@ var useMeasuredHeight = (isOpen) => {
|
|
|
11923
11936
|
return { ref, maxHeight };
|
|
11924
11937
|
};
|
|
11925
11938
|
function FaqAccordion({ items, defaultOpenIds = [] }) {
|
|
11926
|
-
const [openSet, setOpenSet] =
|
|
11939
|
+
const [openSet, setOpenSet] = useState26(new Set(defaultOpenIds));
|
|
11927
11940
|
const toggle = (id) => {
|
|
11928
11941
|
setOpenSet((prev) => {
|
|
11929
11942
|
const next = new Set(prev);
|
|
@@ -12526,13 +12539,13 @@ function FooterWaitlistButton({ className }) {
|
|
|
12526
12539
|
|
|
12527
12540
|
// src/components/hero-image-uploader.tsx
|
|
12528
12541
|
init_button2();
|
|
12529
|
-
import { useRef as useRef16, useState as
|
|
12542
|
+
import { useRef as useRef16, useState as useState27 } from "react";
|
|
12530
12543
|
import { Loader2 as Loader22, Image as ImageIcon, Upload, X as X6 } from "lucide-react";
|
|
12531
12544
|
import { Fragment as Fragment12, jsx as jsx92, jsxs as jsxs74 } from "react/jsx-runtime";
|
|
12532
12545
|
function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height = 300, objectFit = "cover", showReplaceButton = true, deferUpload = false, onUpload, onDelete }) {
|
|
12533
12546
|
const inputRef = useRef16(null);
|
|
12534
12547
|
const { toast } = useToast();
|
|
12535
|
-
const [uploading, setUploading] =
|
|
12548
|
+
const [uploading, setUploading] = useState27(false);
|
|
12536
12549
|
const ALLOWED_TYPES = ["image/jpeg", "image/jpg", "image/png", "image/webp", "image/gif"];
|
|
12537
12550
|
const MAX_SIZE = 5 * 1024 * 1024;
|
|
12538
12551
|
const openDialog = () => inputRef.current?.click();
|
|
@@ -12648,7 +12661,7 @@ function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height = 300, o
|
|
|
12648
12661
|
}
|
|
12649
12662
|
|
|
12650
12663
|
// src/components/icons-block.tsx
|
|
12651
|
-
import { useState as
|
|
12664
|
+
import { useState as useState28, useEffect as useEffect20, useRef as useRef17 } from "react";
|
|
12652
12665
|
|
|
12653
12666
|
// src/components/icons-stub.tsx
|
|
12654
12667
|
import { DollarSign, Code, Users, Building, GitCompare, MessageSquare } from "lucide-react";
|
|
@@ -12684,9 +12697,9 @@ var availableIcons = [
|
|
|
12684
12697
|
OpenmspLogo2
|
|
12685
12698
|
];
|
|
12686
12699
|
function ResponsiveIconsBlock({ loading = false }) {
|
|
12687
|
-
const [columns, setColumns] =
|
|
12688
|
-
const [iconGrid, setIconGrid] =
|
|
12689
|
-
const [iconsLoaded, setIconsLoaded] =
|
|
12700
|
+
const [columns, setColumns] = useState28(24);
|
|
12701
|
+
const [iconGrid, setIconGrid] = useState28([]);
|
|
12702
|
+
const [iconsLoaded, setIconsLoaded] = useState28(false);
|
|
12690
12703
|
const randomSeedRef = useRef17(0);
|
|
12691
12704
|
useEffect20(() => {
|
|
12692
12705
|
function calculateColumns() {
|
|
@@ -12803,7 +12816,7 @@ function ResponsiveIconsBlock({ loading = false }) {
|
|
|
12803
12816
|
|
|
12804
12817
|
// src/components/image-cropper.tsx
|
|
12805
12818
|
init_button2();
|
|
12806
|
-
import { useCallback as useCallback15, useState as
|
|
12819
|
+
import { useCallback as useCallback15, useState as useState29 } from "react";
|
|
12807
12820
|
import Cropper from "react-easy-crop";
|
|
12808
12821
|
|
|
12809
12822
|
// src/components/ui/slider.tsx
|
|
@@ -12861,10 +12874,10 @@ var ImageCropper = ({
|
|
|
12861
12874
|
maxSizePx = 512,
|
|
12862
12875
|
className
|
|
12863
12876
|
}) => {
|
|
12864
|
-
const [crop, setCrop] =
|
|
12865
|
-
const [zoom, setZoom] =
|
|
12866
|
-
const [rotation, setRotation] =
|
|
12867
|
-
const [croppedAreaPixels, setCroppedAreaPixels] =
|
|
12877
|
+
const [crop, setCrop] = useState29({ x: 0, y: 0 });
|
|
12878
|
+
const [zoom, setZoom] = useState29(1);
|
|
12879
|
+
const [rotation, setRotation] = useState29(0);
|
|
12880
|
+
const [croppedAreaPixels, setCroppedAreaPixels] = useState29(null);
|
|
12868
12881
|
const onCropComplete = useCallback15((_, area) => {
|
|
12869
12882
|
setCroppedAreaPixels(area);
|
|
12870
12883
|
}, []);
|
|
@@ -13032,7 +13045,7 @@ var ImageCropper = ({
|
|
|
13032
13045
|
|
|
13033
13046
|
// src/components/media-carousel.tsx
|
|
13034
13047
|
init_cn();
|
|
13035
|
-
import { useState as
|
|
13048
|
+
import { useState as useState30, useRef as useRef19, useEffect as useEffect22, memo as memo3, useCallback as useCallback16 } from "react";
|
|
13036
13049
|
import { Fragment as Fragment13, jsx as jsx96, jsxs as jsxs77 } from "react/jsx-runtime";
|
|
13037
13050
|
var ChevronLeftIcon = () => /* @__PURE__ */ jsx96("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx96("polyline", { points: "15,18 9,12 15,6" }) });
|
|
13038
13051
|
var ChevronRightIcon = () => /* @__PURE__ */ jsx96("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx96("polyline", { points: "9,18 15,12 9,6" }) });
|
|
@@ -13042,9 +13055,9 @@ function getYouTubeVideoId(url) {
|
|
|
13042
13055
|
return match ? match[1] : null;
|
|
13043
13056
|
}
|
|
13044
13057
|
var CarouselYouTubeEmbed = ({ videoId, title }) => {
|
|
13045
|
-
const [mounted, setMounted] =
|
|
13046
|
-
const [isActivated, setIsActivated] =
|
|
13047
|
-
const [isLoaded, setIsLoaded] =
|
|
13058
|
+
const [mounted, setMounted] = useState30(false);
|
|
13059
|
+
const [isActivated, setIsActivated] = useState30(false);
|
|
13060
|
+
const [isLoaded, setIsLoaded] = useState30(false);
|
|
13048
13061
|
useEffect22(() => {
|
|
13049
13062
|
setMounted(true);
|
|
13050
13063
|
}, []);
|
|
@@ -13095,10 +13108,10 @@ var MediaCarousel = memo3(function MediaCarousel2({
|
|
|
13095
13108
|
autoPlay = false,
|
|
13096
13109
|
objectFit = "contain"
|
|
13097
13110
|
}) {
|
|
13098
|
-
const [currentIndex, setCurrentIndex] =
|
|
13099
|
-
const [touchStart, setTouchStart] =
|
|
13100
|
-
const [touchEnd, setTouchEnd] =
|
|
13101
|
-
const [playingVideos, setPlayingVideos] =
|
|
13111
|
+
const [currentIndex, setCurrentIndex] = useState30(0);
|
|
13112
|
+
const [touchStart, setTouchStart] = useState30(null);
|
|
13113
|
+
const [touchEnd, setTouchEnd] = useState30(null);
|
|
13114
|
+
const [playingVideos, setPlayingVideos] = useState30(/* @__PURE__ */ new Set());
|
|
13102
13115
|
const carouselRef = useRef19(null);
|
|
13103
13116
|
const thumbnailsRef = useRef19(null);
|
|
13104
13117
|
if (!media || media.length === 0) {
|
|
@@ -15590,15 +15603,15 @@ function evaluateFeatureValue(value, dataType) {
|
|
|
15590
15603
|
}
|
|
15591
15604
|
|
|
15592
15605
|
// src/components/made-with-love.tsx
|
|
15593
|
-
import { useState as
|
|
15606
|
+
import { useState as useState31, useEffect as useEffect23 } from "react";
|
|
15594
15607
|
import { jsx as jsx126, jsxs as jsxs102 } from "react/jsx-runtime";
|
|
15595
15608
|
function MadeWithLove({
|
|
15596
15609
|
className = "",
|
|
15597
15610
|
size = "md",
|
|
15598
15611
|
showOnMobile = true
|
|
15599
15612
|
}) {
|
|
15600
|
-
const [isMobile, setIsMobile] =
|
|
15601
|
-
const [isHovered, setIsHovered] =
|
|
15613
|
+
const [isMobile, setIsMobile] = useState31(false);
|
|
15614
|
+
const [isHovered, setIsHovered] = useState31(false);
|
|
15602
15615
|
useEffect23(() => {
|
|
15603
15616
|
const checkMobile = () => {
|
|
15604
15617
|
setIsMobile(window.innerWidth < 640);
|
|
@@ -16381,7 +16394,7 @@ function ProductReleaseCardSkeleton({ className, size = "default" }) {
|
|
|
16381
16394
|
}
|
|
16382
16395
|
|
|
16383
16396
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
16384
|
-
import { useState as
|
|
16397
|
+
import { useState as useState37, useEffect as useEffect27 } from "react";
|
|
16385
16398
|
import Link4 from "next/link";
|
|
16386
16399
|
|
|
16387
16400
|
// src/components/layout/article-detail-layout.tsx
|
|
@@ -16400,7 +16413,7 @@ function ArticleDetailLayout({ children, schemas }) {
|
|
|
16400
16413
|
}
|
|
16401
16414
|
|
|
16402
16415
|
// src/components/ui/release-changelog-section.tsx
|
|
16403
|
-
import { useState as
|
|
16416
|
+
import { useState as useState32 } from "react";
|
|
16404
16417
|
|
|
16405
16418
|
// src/components/ui/badge.tsx
|
|
16406
16419
|
init_cn();
|
|
@@ -16440,7 +16453,7 @@ function ReleaseChangelogSection({
|
|
|
16440
16453
|
defaultCollapsed = true,
|
|
16441
16454
|
SimpleMarkdownRenderer: SimpleMarkdownRenderer2
|
|
16442
16455
|
}) {
|
|
16443
|
-
const [collapsed, setCollapsed] =
|
|
16456
|
+
const [collapsed, setCollapsed] = useState32(collapsible ? defaultCollapsed : false);
|
|
16444
16457
|
if (!entries || entries.length === 0) return null;
|
|
16445
16458
|
const showEntries = !collapsible || !collapsed;
|
|
16446
16459
|
return /* @__PURE__ */ jsxs109("div", { className: "space-y-4", children: [
|
|
@@ -16475,7 +16488,7 @@ function ReleaseChangelogSection({
|
|
|
16475
16488
|
}
|
|
16476
16489
|
|
|
16477
16490
|
// src/components/ui/image-gallery-modal.tsx
|
|
16478
|
-
import { useState as
|
|
16491
|
+
import { useState as useState33, useEffect as useEffect24 } from "react";
|
|
16479
16492
|
import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight7 } from "lucide-react";
|
|
16480
16493
|
import Image8 from "next/image";
|
|
16481
16494
|
import { Fragment as Fragment18, jsx as jsx137, jsxs as jsxs110 } from "react/jsx-runtime";
|
|
@@ -16485,7 +16498,7 @@ function ImageGalleryModal({
|
|
|
16485
16498
|
onClose,
|
|
16486
16499
|
initialIndex = 0
|
|
16487
16500
|
}) {
|
|
16488
|
-
const [selectedImageIndex, setSelectedImageIndex] =
|
|
16501
|
+
const [selectedImageIndex, setSelectedImageIndex] = useState33(initialIndex);
|
|
16489
16502
|
useEffect24(() => {
|
|
16490
16503
|
if (isOpen) {
|
|
16491
16504
|
setSelectedImageIndex(initialIndex);
|
|
@@ -16600,7 +16613,7 @@ function ImageGalleryModal({
|
|
|
16600
16613
|
import { AlertTriangle, ExternalLink, BookMarked } from "lucide-react";
|
|
16601
16614
|
|
|
16602
16615
|
// src/components/features/youtube-embed.tsx
|
|
16603
|
-
import { useState as
|
|
16616
|
+
import { useState as useState34, useEffect as useEffect25 } from "react";
|
|
16604
16617
|
import ReactPlayer from "react-player/youtube";
|
|
16605
16618
|
import { jsx as jsx138, jsxs as jsxs111 } from "react/jsx-runtime";
|
|
16606
16619
|
var Play = ({ size = 16, className }) => /* @__PURE__ */ jsx138("svg", { width: size, height: size, fill: "currentColor", viewBox: "0 0 24 24", className, children: /* @__PURE__ */ jsx138("polygon", { points: "5,3 19,12 5,21" }) });
|
|
@@ -16622,11 +16635,11 @@ var YouTubeEmbed = ({
|
|
|
16622
16635
|
showMeta = true,
|
|
16623
16636
|
minimalControls = false
|
|
16624
16637
|
}) => {
|
|
16625
|
-
const [isLoading, setIsLoading] =
|
|
16626
|
-
const [hasError, setHasError] =
|
|
16627
|
-
const [isPlaying, setIsPlaying] =
|
|
16628
|
-
const [useIframe, setUseIframe] =
|
|
16629
|
-
const [mounted, setMounted] =
|
|
16638
|
+
const [isLoading, setIsLoading] = useState34(true);
|
|
16639
|
+
const [hasError, setHasError] = useState34(false);
|
|
16640
|
+
const [isPlaying, setIsPlaying] = useState34(false);
|
|
16641
|
+
const [useIframe, setUseIframe] = useState34(false);
|
|
16642
|
+
const [mounted, setMounted] = useState34(false);
|
|
16630
16643
|
useEffect25(() => {
|
|
16631
16644
|
setMounted(true);
|
|
16632
16645
|
setUseIframe(true);
|
|
@@ -16790,12 +16803,12 @@ var YouTubeLinkParser = ({ href, children }) => {
|
|
|
16790
16803
|
};
|
|
16791
16804
|
|
|
16792
16805
|
// src/components/features/video-player.tsx
|
|
16793
|
-
import { useState as
|
|
16806
|
+
import { useState as useState35, useEffect as useEffect26, useRef as useRef21, useMemo as useMemo11, useCallback as useCallback18 } from "react";
|
|
16794
16807
|
import ReactPlayer2 from "react-player";
|
|
16795
16808
|
init_button2();
|
|
16796
16809
|
import { jsx as jsx139, jsxs as jsxs112 } from "react/jsx-runtime";
|
|
16797
16810
|
function useVideoFirstFramePoster(url, enabled) {
|
|
16798
|
-
const [poster, setPoster] =
|
|
16811
|
+
const [poster, setPoster] = useState35(null);
|
|
16799
16812
|
useEffect26(() => {
|
|
16800
16813
|
if (!enabled || !url) {
|
|
16801
16814
|
setPoster(null);
|
|
@@ -16904,7 +16917,7 @@ function parseSrtTimestamp(ts) {
|
|
|
16904
16917
|
}
|
|
16905
16918
|
function useSubtitleOverlay(srtContent) {
|
|
16906
16919
|
const cues = useMemo11(() => srtContent ? parseSrt(srtContent) : [], [srtContent]);
|
|
16907
|
-
const [activeText, setActiveText] =
|
|
16920
|
+
const [activeText, setActiveText] = useState35(null);
|
|
16908
16921
|
const updateTime = useCallback18((playedSeconds) => {
|
|
16909
16922
|
const timeMs = playedSeconds * 1e3;
|
|
16910
16923
|
const active = cues.find((c) => timeMs >= c.from && timeMs <= c.to);
|
|
@@ -16937,26 +16950,26 @@ var VideoPlayer = ({
|
|
|
16937
16950
|
subtitleLabel,
|
|
16938
16951
|
lazyMount = false
|
|
16939
16952
|
}) => {
|
|
16940
|
-
const [hasError, setHasError] =
|
|
16941
|
-
const [isPlaying, setIsPlaying] =
|
|
16942
|
-
const [mounted, setMounted] =
|
|
16943
|
-
const [hasStarted, setHasStarted] =
|
|
16953
|
+
const [hasError, setHasError] = useState35(false);
|
|
16954
|
+
const [isPlaying, setIsPlaying] = useState35(autoPlay);
|
|
16955
|
+
const [mounted, setMounted] = useState35(false);
|
|
16956
|
+
const [hasStarted, setHasStarted] = useState35(autoPlay);
|
|
16944
16957
|
const playerRef = useRef21(null);
|
|
16945
16958
|
const containerRef = useRef21(null);
|
|
16946
|
-
const [played, setPlayed] =
|
|
16947
|
-
const [loaded, setLoaded] =
|
|
16948
|
-
const [duration, setDuration] =
|
|
16949
|
-
const [volume, setVolume] =
|
|
16950
|
-
const [prevVolume, setPrevVolume] =
|
|
16951
|
-
const [isMuted, setIsMuted] =
|
|
16952
|
-
const [isBuffering, setIsBuffering] =
|
|
16953
|
-
const [showControls, setShowControls] =
|
|
16959
|
+
const [played, setPlayed] = useState35(0);
|
|
16960
|
+
const [loaded, setLoaded] = useState35(0);
|
|
16961
|
+
const [duration, setDuration] = useState35(0);
|
|
16962
|
+
const [volume, setVolume] = useState35(0.8);
|
|
16963
|
+
const [prevVolume, setPrevVolume] = useState35(0.8);
|
|
16964
|
+
const [isMuted, setIsMuted] = useState35(muted);
|
|
16965
|
+
const [isBuffering, setIsBuffering] = useState35(false);
|
|
16966
|
+
const [showControls, setShowControls] = useState35(true);
|
|
16954
16967
|
const hideTimeoutRef = useRef21(void 0);
|
|
16955
16968
|
const clickTimerRef = useRef21(void 0);
|
|
16956
16969
|
const iosFullscreenTimerRef = useRef21(void 0);
|
|
16957
16970
|
const lazyMountFailureTimerRef = useRef21(void 0);
|
|
16958
|
-
const [captionsEnabled, setCaptionsEnabled] =
|
|
16959
|
-
const [isFullscreen, setIsFullscreen] =
|
|
16971
|
+
const [captionsEnabled, setCaptionsEnabled] = useState35(true);
|
|
16972
|
+
const [isFullscreen, setIsFullscreen] = useState35(false);
|
|
16960
16973
|
const { activeText, updateTime, hasCues } = useSubtitleOverlay(srtContent);
|
|
16961
16974
|
useEffect26(() => {
|
|
16962
16975
|
const onChange = () => {
|
|
@@ -17128,8 +17141,8 @@ var VideoPlayer = ({
|
|
|
17128
17141
|
el.addEventListener("keydown", onKey);
|
|
17129
17142
|
return () => el.removeEventListener("keydown", onKey);
|
|
17130
17143
|
}, [hasStarted, duration, toggleMute, toggleFullscreen]);
|
|
17131
|
-
const [seekPreview, setSeekPreview] =
|
|
17132
|
-
const [playbackRate, setPlaybackRate] =
|
|
17144
|
+
const [seekPreview, setSeekPreview] = useState35(null);
|
|
17145
|
+
const [playbackRate, setPlaybackRate] = useState35(1);
|
|
17133
17146
|
const cycleSpeed = useCallback18(() => {
|
|
17134
17147
|
setPlaybackRate((prev) => {
|
|
17135
17148
|
const idx = SPEED_OPTIONS.indexOf(prev);
|
|
@@ -17572,7 +17585,7 @@ import React46 from "react";
|
|
|
17572
17585
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
17573
17586
|
import { Check as Check2 } from "lucide-react";
|
|
17574
17587
|
import Link3 from "next/link";
|
|
17575
|
-
import React45, { useCallback as useCallback19, useState as
|
|
17588
|
+
import React45, { useCallback as useCallback19, useState as useState36 } from "react";
|
|
17576
17589
|
init_cn();
|
|
17577
17590
|
init_button2();
|
|
17578
17591
|
import { Fragment as Fragment19, jsx as jsx140, jsxs as jsxs113 } from "react/jsx-runtime";
|
|
@@ -17813,7 +17826,7 @@ var ActionsMenuDropdown = ({
|
|
|
17813
17826
|
side = "bottom",
|
|
17814
17827
|
sideOffset = 6
|
|
17815
17828
|
}) => {
|
|
17816
|
-
const [open, setOpen] =
|
|
17829
|
+
const [open, setOpen] = useState36(false);
|
|
17817
17830
|
const handleItemClick = useCallback19(
|
|
17818
17831
|
(item) => {
|
|
17819
17832
|
onItemClick?.(item);
|
|
@@ -18336,12 +18349,12 @@ function ReleaseDetailPage({
|
|
|
18336
18349
|
}) {
|
|
18337
18350
|
const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
|
|
18338
18351
|
const release = initialData || fetchedRelease;
|
|
18339
|
-
const [galleryOpen, setGalleryOpen] =
|
|
18340
|
-
const [galleryIndex, setGalleryIndex] =
|
|
18341
|
-
const [roadmapTasks, setRoadmapTasks] =
|
|
18342
|
-
const [deliveryData, setDeliveryData] =
|
|
18343
|
-
const [roadmapLoading, setRoadmapLoading] =
|
|
18344
|
-
const [deliveryLoading, setDeliveryLoading] =
|
|
18352
|
+
const [galleryOpen, setGalleryOpen] = useState37(false);
|
|
18353
|
+
const [galleryIndex, setGalleryIndex] = useState37(0);
|
|
18354
|
+
const [roadmapTasks, setRoadmapTasks] = useState37([]);
|
|
18355
|
+
const [deliveryData, setDeliveryData] = useState37(null);
|
|
18356
|
+
const [roadmapLoading, setRoadmapLoading] = useState37(false);
|
|
18357
|
+
const [deliveryLoading, setDeliveryLoading] = useState37(false);
|
|
18345
18358
|
useEffect27(() => {
|
|
18346
18359
|
async function fetchLinkedTasks() {
|
|
18347
18360
|
if (!release) return;
|
|
@@ -18897,7 +18910,7 @@ function CompactPageLoader({
|
|
|
18897
18910
|
}
|
|
18898
18911
|
|
|
18899
18912
|
// src/components/ui/progress-bar.tsx
|
|
18900
|
-
import { useEffect as useEffect29, useRef as useRef22, useState as
|
|
18913
|
+
import { useEffect as useEffect29, useRef as useRef22, useState as useState39 } from "react";
|
|
18901
18914
|
import { jsx as jsx152 } from "react/jsx-runtime";
|
|
18902
18915
|
var ProgressBar = ({
|
|
18903
18916
|
progress,
|
|
@@ -18914,7 +18927,7 @@ var ProgressBar = ({
|
|
|
18914
18927
|
const effectiveSegmentWidth = isMdUp ? segmentWidth : mobileSegmentWidth;
|
|
18915
18928
|
const effectiveHeight = isMdUp ? height : mobileHeight;
|
|
18916
18929
|
const containerRef = useRef22(null);
|
|
18917
|
-
const [segmentCount, setSegmentCount] =
|
|
18930
|
+
const [segmentCount, setSegmentCount] = useState39(0);
|
|
18918
18931
|
useEffect29(() => {
|
|
18919
18932
|
if (!containerRef.current) return;
|
|
18920
18933
|
const resizeObserver = new ResizeObserver(() => {
|
|
@@ -20505,7 +20518,7 @@ function TabContent({
|
|
|
20505
20518
|
|
|
20506
20519
|
// src/components/ui/tab-navigation.tsx
|
|
20507
20520
|
init_cn();
|
|
20508
|
-
import { useState as
|
|
20521
|
+
import { useState as useState42, useEffect as useEffect32, useMemo as useMemo12, useRef as useRef24, useCallback as useCallback21 } from "react";
|
|
20509
20522
|
import { useSearchParams as useSearchParams3, useRouter as useRouter5, usePathname as usePathname3 } from "next/navigation";
|
|
20510
20523
|
import { Fragment as Fragment22, jsx as jsx168, jsxs as jsxs137 } from "react/jsx-runtime";
|
|
20511
20524
|
function TabNavigation({
|
|
@@ -20536,7 +20549,7 @@ function TabNavigation({
|
|
|
20536
20549
|
}
|
|
20537
20550
|
return defaultTab || tabs[0]?.id || "";
|
|
20538
20551
|
};
|
|
20539
|
-
const [internalActiveTab, setInternalActiveTab] =
|
|
20552
|
+
const [internalActiveTab, setInternalActiveTab] = useState42(getInitialTab);
|
|
20540
20553
|
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
20541
20554
|
useEffect32(() => {
|
|
20542
20555
|
if (!isUrlSyncEnabled) return;
|
|
@@ -20559,8 +20572,8 @@ function TabNavigation({
|
|
|
20559
20572
|
}
|
|
20560
20573
|
};
|
|
20561
20574
|
const scrollRef = useRef24(null);
|
|
20562
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
20563
|
-
const [canScrollRight, setCanScrollRight] =
|
|
20575
|
+
const [canScrollLeft, setCanScrollLeft] = useState42(false);
|
|
20576
|
+
const [canScrollRight, setCanScrollRight] = useState42(false);
|
|
20564
20577
|
const updateScrollShadows = useCallback21(() => {
|
|
20565
20578
|
const el = scrollRef.current;
|
|
20566
20579
|
if (!el) return;
|
|
@@ -20756,11 +20769,11 @@ function StatusIndicator({ status, label, href }) {
|
|
|
20756
20769
|
|
|
20757
20770
|
// src/components/layout/list-page-layout.tsx
|
|
20758
20771
|
init_cn();
|
|
20759
|
-
import { useEffect as useEffect34, useState as
|
|
20772
|
+
import { useEffect as useEffect34, useState as useState44 } from "react";
|
|
20760
20773
|
|
|
20761
20774
|
// src/components/ui/filter-modal.tsx
|
|
20762
20775
|
init_cn();
|
|
20763
|
-
import { useEffect as useEffect33, useState as
|
|
20776
|
+
import { useEffect as useEffect33, useState as useState43 } from "react";
|
|
20764
20777
|
init_button2();
|
|
20765
20778
|
|
|
20766
20779
|
// src/components/ui/filter-checkbox-item.tsx
|
|
@@ -20956,10 +20969,10 @@ function FilterModal({
|
|
|
20956
20969
|
emptyStateTitle = "No filters available",
|
|
20957
20970
|
emptyStateDescription = "There are no filter options to display at the moment"
|
|
20958
20971
|
}) {
|
|
20959
|
-
const [selectedFilters, setSelectedFilters] =
|
|
20972
|
+
const [selectedFilters, setSelectedFilters] = useState43(() => {
|
|
20960
20973
|
return { ...currentFilters };
|
|
20961
20974
|
});
|
|
20962
|
-
const [pendingTags, setPendingTags] =
|
|
20975
|
+
const [pendingTags, setPendingTags] = useState43(selectedTags ?? []);
|
|
20963
20976
|
useEffect33(() => {
|
|
20964
20977
|
if (isOpen) {
|
|
20965
20978
|
setSelectedFilters({ ...currentFilters });
|
|
@@ -21103,8 +21116,8 @@ function ListPageLayout({
|
|
|
21103
21116
|
mobileFilterTitle,
|
|
21104
21117
|
stickyHeader = false
|
|
21105
21118
|
}) {
|
|
21106
|
-
const [mobileFilterOpen, setMobileFilterOpen] =
|
|
21107
|
-
const [localSearchValue, setLocalSearchValue] =
|
|
21119
|
+
const [mobileFilterOpen, setMobileFilterOpen] = useState44(false);
|
|
21120
|
+
const [localSearchValue, setLocalSearchValue] = useState44(searchValue);
|
|
21108
21121
|
const debouncedSearchValue = useDebounce(localSearchValue, 500);
|
|
21109
21122
|
useEffect34(() => {
|
|
21110
21123
|
setLocalSearchValue(searchValue);
|
|
@@ -22647,7 +22660,7 @@ function OrganizationCard({
|
|
|
22647
22660
|
|
|
22648
22661
|
// src/components/ui/service-card.tsx
|
|
22649
22662
|
init_cn();
|
|
22650
|
-
import { useMemo as useMemo15, useState as
|
|
22663
|
+
import { useMemo as useMemo15, useState as useState46 } from "react";
|
|
22651
22664
|
import { ExternalLink as ExternalLink3 } from "lucide-react";
|
|
22652
22665
|
|
|
22653
22666
|
// src/components/logs-list.tsx
|
|
@@ -22951,7 +22964,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
22951
22964
|
] });
|
|
22952
22965
|
}
|
|
22953
22966
|
function ServiceCardRowItem({ row }) {
|
|
22954
|
-
const [revealed, setRevealed] =
|
|
22967
|
+
const [revealed, setRevealed] = useState46(false);
|
|
22955
22968
|
const { copy, copied } = useCopyToClipboard();
|
|
22956
22969
|
const actions = useMemo15(() => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
|
|
22957
22970
|
const displayValue = row.isSecret ? /* @__PURE__ */ jsx201(MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ jsx201("span", { children: row.value });
|
|
@@ -24252,7 +24265,7 @@ import { useMemo as useMemo16 } from "react";
|
|
|
24252
24265
|
|
|
24253
24266
|
// src/components/ui/query-report-table/query-report-table-header.tsx
|
|
24254
24267
|
init_cn();
|
|
24255
|
-
import { useRef as useRef28, useState as
|
|
24268
|
+
import { useRef as useRef28, useState as useState47, useCallback as useCallback22 } from "react";
|
|
24256
24269
|
import { jsx as jsx217, jsxs as jsxs176 } from "react/jsx-runtime";
|
|
24257
24270
|
function QueryReportTableHeader({
|
|
24258
24271
|
columns,
|
|
@@ -24282,7 +24295,7 @@ function QueryReportTableHeader({
|
|
|
24282
24295
|
}
|
|
24283
24296
|
function TruncatedHeaderCell({ value, width }) {
|
|
24284
24297
|
const textRef = useRef28(null);
|
|
24285
|
-
const [isTruncated, setIsTruncated] =
|
|
24298
|
+
const [isTruncated, setIsTruncated] = useState47(false);
|
|
24286
24299
|
const checkTruncation = useCallback22(() => {
|
|
24287
24300
|
const el = textRef.current;
|
|
24288
24301
|
if (el) {
|
|
@@ -24311,7 +24324,7 @@ function TruncatedHeaderCell({ value, width }) {
|
|
|
24311
24324
|
|
|
24312
24325
|
// src/components/ui/query-report-table/query-report-table-row.tsx
|
|
24313
24326
|
init_cn();
|
|
24314
|
-
import { useRef as useRef29, useState as
|
|
24327
|
+
import { useRef as useRef29, useState as useState48, useCallback as useCallback23 } from "react";
|
|
24315
24328
|
import { jsx as jsx218, jsxs as jsxs177 } from "react/jsx-runtime";
|
|
24316
24329
|
function QueryReportTableRow({
|
|
24317
24330
|
row,
|
|
@@ -24358,7 +24371,7 @@ function QueryReportTableRow({
|
|
|
24358
24371
|
}
|
|
24359
24372
|
function TruncatedCell({ value, className }) {
|
|
24360
24373
|
const textRef = useRef29(null);
|
|
24361
|
-
const [isTruncated, setIsTruncated] =
|
|
24374
|
+
const [isTruncated, setIsTruncated] = useState48(false);
|
|
24362
24375
|
const checkTruncation = useCallback23(() => {
|
|
24363
24376
|
const el = textRef.current;
|
|
24364
24377
|
if (el) {
|
|
@@ -25231,7 +25244,7 @@ var DataTable = Object.assign(DataTableRoot, {
|
|
|
25231
25244
|
});
|
|
25232
25245
|
|
|
25233
25246
|
// src/components/ui/phone-input.tsx
|
|
25234
|
-
import { useCallback as useCallback26, useEffect as useEffect37, useMemo as useMemo18, useRef as useRef31, useState as
|
|
25247
|
+
import { useCallback as useCallback26, useEffect as useEffect37, useMemo as useMemo18, useRef as useRef31, useState as useState49 } from "react";
|
|
25235
25248
|
import { jsx as jsx230, jsxs as jsxs188 } from "react/jsx-runtime";
|
|
25236
25249
|
function PhoneInput({
|
|
25237
25250
|
value,
|
|
@@ -25248,7 +25261,7 @@ function PhoneInput({
|
|
|
25248
25261
|
() => [...priority, ...others].find((c) => c.code === countryCode),
|
|
25249
25262
|
[countryCode, priority, others]
|
|
25250
25263
|
);
|
|
25251
|
-
const [isInvalid, setIsInvalid] =
|
|
25264
|
+
const [isInvalid, setIsInvalid] = useState49(false);
|
|
25252
25265
|
const debounceRef = useRef31(null);
|
|
25253
25266
|
const digitCount = useCallback26((val) => val.replace(/[^0-9]/g, "").length, []);
|
|
25254
25267
|
const runValidation = useCallback26((phone) => {
|
|
@@ -25829,7 +25842,7 @@ function FilterList({
|
|
|
25829
25842
|
import {
|
|
25830
25843
|
useEffect as useEffect39,
|
|
25831
25844
|
useRef as useRef33,
|
|
25832
|
-
useState as
|
|
25845
|
+
useState as useState51
|
|
25833
25846
|
} from "react";
|
|
25834
25847
|
init_cn();
|
|
25835
25848
|
import { jsx as jsx233, jsxs as jsxs191 } from "react/jsx-runtime";
|
|
@@ -25866,7 +25879,7 @@ function TagSearchInput({
|
|
|
25866
25879
|
const wrapperRef = useRef33(null);
|
|
25867
25880
|
const hiddenTagsRef = useRef33(null);
|
|
25868
25881
|
const hiddenTagsPopupRef = useRef33(null);
|
|
25869
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
25882
|
+
const [showHiddenTags, setShowHiddenTags] = useState51(false);
|
|
25870
25883
|
useEffect39(() => {
|
|
25871
25884
|
if (!showHiddenTags) return;
|
|
25872
25885
|
const handleClick = (e) => {
|
|
@@ -26023,7 +26036,7 @@ function TagSearchInput({
|
|
|
26023
26036
|
|
|
26024
26037
|
// src/components/ui/markdown-editor.tsx
|
|
26025
26038
|
init_cn();
|
|
26026
|
-
import { useRef as useRef34, useCallback as useCallback27, useState as
|
|
26039
|
+
import { useRef as useRef34, useCallback as useCallback27, useState as useState52, useEffect as useEffect40 } from "react";
|
|
26027
26040
|
import dynamic from "next/dynamic";
|
|
26028
26041
|
import { Loader2 as Loader23, Upload as Upload2 } from "lucide-react";
|
|
26029
26042
|
import { jsx as jsx234, jsxs as jsxs192 } from "react/jsx-runtime";
|
|
@@ -26079,9 +26092,9 @@ function MarkdownEditor({
|
|
|
26079
26092
|
renderPreview
|
|
26080
26093
|
}) {
|
|
26081
26094
|
const fileInputRef = useRef34(null);
|
|
26082
|
-
const [isUploading, setIsUploading] =
|
|
26083
|
-
const [uploadProgress, setUploadProgress] =
|
|
26084
|
-
const [defaultExtraCommands, setDefaultExtraCommands] =
|
|
26095
|
+
const [isUploading, setIsUploading] = useState52(false);
|
|
26096
|
+
const [uploadProgress, setUploadProgress] = useState52("");
|
|
26097
|
+
const [defaultExtraCommands, setDefaultExtraCommands] = useState52([]);
|
|
26085
26098
|
useEffect40(() => {
|
|
26086
26099
|
import("@uiw/react-md-editor").then((mod) => {
|
|
26087
26100
|
if (mod.commands?.getExtraCommands) {
|
|
@@ -27485,8 +27498,8 @@ function ArrayEntryManager({
|
|
|
27485
27498
|
renderLabel,
|
|
27486
27499
|
isSaving = false
|
|
27487
27500
|
}) {
|
|
27488
|
-
const [draftItems, setDraftItems] =
|
|
27489
|
-
const [isDirty, setIsDirty] =
|
|
27501
|
+
const [draftItems, setDraftItems] = useState58(items);
|
|
27502
|
+
const [isDirty, setIsDirty] = useState58(false);
|
|
27490
27503
|
useEffect43(() => {
|
|
27491
27504
|
if (!isDirty && !isSaving) {
|
|
27492
27505
|
setDraftItems(items);
|
|
@@ -27602,7 +27615,7 @@ function ArrayEntryManager({
|
|
|
27602
27615
|
|
|
27603
27616
|
// src/components/features/provider-button.tsx
|
|
27604
27617
|
init_button2();
|
|
27605
|
-
import { useState as
|
|
27618
|
+
import { useState as useState59 } from "react";
|
|
27606
27619
|
import { jsx as jsx245 } from "react/jsx-runtime";
|
|
27607
27620
|
var PROVIDER_CONFIG = {
|
|
27608
27621
|
microsoft: {
|
|
@@ -27623,7 +27636,7 @@ var PROVIDER_CONFIG = {
|
|
|
27623
27636
|
}
|
|
27624
27637
|
};
|
|
27625
27638
|
function ProviderButton({ provider, onClick, disabled = false, loading = false }) {
|
|
27626
|
-
const [internalLoading, setInternalLoading] =
|
|
27639
|
+
const [internalLoading, setInternalLoading] = useState59(false);
|
|
27627
27640
|
const config = PROVIDER_CONFIG[provider];
|
|
27628
27641
|
const IconComponent = config.icon;
|
|
27629
27642
|
const isLoading = loading || internalLoading;
|
|
@@ -27707,7 +27720,7 @@ function AuthProvidersList({
|
|
|
27707
27720
|
|
|
27708
27721
|
// src/components/features/changelog-manager.tsx
|
|
27709
27722
|
import { Trash2 as Trash23, Plus as Plus3, ChevronDown as ChevronDown7, ChevronUp as ChevronUp3, Eye, EyeOff } from "lucide-react";
|
|
27710
|
-
import { useState as
|
|
27723
|
+
import { useState as useState60, useEffect as useEffect44 } from "react";
|
|
27711
27724
|
import { jsx as jsx247, jsxs as jsxs204 } from "react/jsx-runtime";
|
|
27712
27725
|
function ChangelogManager({
|
|
27713
27726
|
title,
|
|
@@ -27717,7 +27730,7 @@ function ChangelogManager({
|
|
|
27717
27730
|
expandAll = false,
|
|
27718
27731
|
showVisibilityToggle = false
|
|
27719
27732
|
}) {
|
|
27720
|
-
const [expandedIndices, setExpandedIndices] =
|
|
27733
|
+
const [expandedIndices, setExpandedIndices] = useState60(/* @__PURE__ */ new Set());
|
|
27721
27734
|
useEffect44(() => {
|
|
27722
27735
|
if (expandAll && entries.length > 0) {
|
|
27723
27736
|
setExpandedIndices(new Set(entries.map((_, i) => i)));
|
|
@@ -28030,7 +28043,7 @@ var ErrorBoundary = class extends Component {
|
|
|
28030
28043
|
|
|
28031
28044
|
// src/components/features/figma-prototype-viewer.tsx
|
|
28032
28045
|
init_cn();
|
|
28033
|
-
import { useState as
|
|
28046
|
+
import { useState as useState61, useRef as useRef37, useEffect as useEffect45, useCallback as useCallback29, useMemo as useMemo22 } from "react";
|
|
28034
28047
|
|
|
28035
28048
|
// src/components/features/section-selector.tsx
|
|
28036
28049
|
init_cn();
|
|
@@ -28403,23 +28416,23 @@ var FigmaPrototypeViewer = ({
|
|
|
28403
28416
|
const containerRef = useRef37(null);
|
|
28404
28417
|
const navTimerRef = useRef37(null);
|
|
28405
28418
|
const touchTimerRef = useRef37(null);
|
|
28406
|
-
const [screenWidth, setScreenWidth] =
|
|
28419
|
+
const [screenWidth, setScreenWidth] = useState61(
|
|
28407
28420
|
typeof window !== "undefined" ? window.innerWidth : DESKTOP_BREAKPOINT
|
|
28408
28421
|
);
|
|
28409
|
-
const [isTouchDevice, setIsTouchDevice] =
|
|
28422
|
+
const [isTouchDevice, setIsTouchDevice] = useState61(() => {
|
|
28410
28423
|
if (typeof window === "undefined") return false;
|
|
28411
28424
|
return "ontouchstart" in window;
|
|
28412
28425
|
});
|
|
28413
|
-
const [iframeState, setIframeState] =
|
|
28414
|
-
const [iframeKey, setIframeKey] =
|
|
28415
|
-
const [isInitialized, setIsInitialized] =
|
|
28416
|
-
const [currentNodeId, setCurrentNodeId] =
|
|
28417
|
-
const [internalActiveSection, setInternalActiveSection] =
|
|
28426
|
+
const [iframeState, setIframeState] = useState61("INITIAL");
|
|
28427
|
+
const [iframeKey, setIframeKey] = useState61(0);
|
|
28428
|
+
const [isInitialized, setIsInitialized] = useState61(false);
|
|
28429
|
+
const [currentNodeId, setCurrentNodeId] = useState61(null);
|
|
28430
|
+
const [internalActiveSection, setInternalActiveSection] = useState61(
|
|
28418
28431
|
config.defaultSectionId || config.sections[0]?.id || ""
|
|
28419
28432
|
);
|
|
28420
28433
|
const activeSection = externalActiveSection || internalActiveSection;
|
|
28421
|
-
const [isNavigating, setIsNavigating] =
|
|
28422
|
-
const [containerDimensions, setContainerDimensions] =
|
|
28434
|
+
const [isNavigating, setIsNavigating] = useState61(false);
|
|
28435
|
+
const [containerDimensions, setContainerDimensions] = useState61({ width: 1200, height: 800 });
|
|
28423
28436
|
const viewMode = useMemo22(
|
|
28424
28437
|
() => getViewMode(screenWidth, isTouchDevice),
|
|
28425
28438
|
[screenWidth, isTouchDevice]
|
|
@@ -28481,7 +28494,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28481
28494
|
window.addEventListener("resize", handleResize);
|
|
28482
28495
|
return () => window.removeEventListener("resize", handleResize);
|
|
28483
28496
|
}, []);
|
|
28484
|
-
const [lastViewMode, setLastViewMode] =
|
|
28497
|
+
const [lastViewMode, setLastViewMode] = useState61(viewMode);
|
|
28485
28498
|
useEffect45(() => {
|
|
28486
28499
|
if (lastViewMode !== viewMode && iframeState === "READY") {
|
|
28487
28500
|
console.log("[ViewMode Change]", lastViewMode, "\u2192", viewMode);
|
|
@@ -28693,7 +28706,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28693
28706
|
|
|
28694
28707
|
// src/components/features/filters-dropdown.tsx
|
|
28695
28708
|
init_cn();
|
|
28696
|
-
import { useEffect as useEffect46, useRef as useRef38, useState as
|
|
28709
|
+
import { useEffect as useEffect46, useRef as useRef38, useState as useState62 } from "react";
|
|
28697
28710
|
import { jsx as jsx253, jsxs as jsxs209 } from "react/jsx-runtime";
|
|
28698
28711
|
var FilterCheckbox = ({ checked, disabled = false, className }) => {
|
|
28699
28712
|
return /* @__PURE__ */ jsx253(
|
|
@@ -28725,11 +28738,11 @@ var FiltersDropdown = ({
|
|
|
28725
28738
|
placement = "bottom-start",
|
|
28726
28739
|
responsive = true
|
|
28727
28740
|
}) => {
|
|
28728
|
-
const [isOpen, setIsOpen] =
|
|
28729
|
-
const [shouldRender, setShouldRender] =
|
|
28730
|
-
const [isVisible, setIsVisible] =
|
|
28731
|
-
const [isMobile, setIsMobile] =
|
|
28732
|
-
const [actualPlacement, setActualPlacement] =
|
|
28741
|
+
const [isOpen, setIsOpen] = useState62(false);
|
|
28742
|
+
const [shouldRender, setShouldRender] = useState62(false);
|
|
28743
|
+
const [isVisible, setIsVisible] = useState62(false);
|
|
28744
|
+
const [isMobile, setIsMobile] = useState62(false);
|
|
28745
|
+
const [actualPlacement, setActualPlacement] = useState62(placement);
|
|
28733
28746
|
const dropdownRef = useRef38(null);
|
|
28734
28747
|
const triggerRef = useRef38(null);
|
|
28735
28748
|
const containerRef = useRef38(null);
|
|
@@ -28787,7 +28800,7 @@ var FiltersDropdown = ({
|
|
|
28787
28800
|
window.addEventListener("resize", calculateOptimalPlacement);
|
|
28788
28801
|
return () => window.removeEventListener("resize", calculateOptimalPlacement);
|
|
28789
28802
|
}, [isOpen, isMobile, placement]);
|
|
28790
|
-
const [selectedFilters, setSelectedFilters] =
|
|
28803
|
+
const [selectedFilters, setSelectedFilters] = useState62(() => {
|
|
28791
28804
|
if (currentFilters) {
|
|
28792
28805
|
return { ...currentFilters };
|
|
28793
28806
|
}
|
|
@@ -29007,7 +29020,7 @@ var FiltersDropdown = ({
|
|
|
29007
29020
|
] });
|
|
29008
29021
|
};
|
|
29009
29022
|
var useFiltersDropdown = (initialSections) => {
|
|
29010
|
-
const [appliedFilters, setAppliedFilters] =
|
|
29023
|
+
const [appliedFilters, setAppliedFilters] = useState62(() => {
|
|
29011
29024
|
const initial = {};
|
|
29012
29025
|
initialSections.forEach((section) => {
|
|
29013
29026
|
if (section.defaultSelected) {
|
|
@@ -29086,12 +29099,12 @@ function KnowledgeBaseLinksManager({
|
|
|
29086
29099
|
}
|
|
29087
29100
|
|
|
29088
29101
|
// src/components/features/loading-provider.tsx
|
|
29089
|
-
import { createContext as createContext7, useContext as useContext7, useState as
|
|
29102
|
+
import { createContext as createContext7, useContext as useContext7, useState as useState63, useEffect as useEffect47 } from "react";
|
|
29090
29103
|
import { jsx as jsx256, jsxs as jsxs210 } from "react/jsx-runtime";
|
|
29091
29104
|
var LoadingContext = createContext7(void 0);
|
|
29092
29105
|
function LoadingProvider({ children }) {
|
|
29093
|
-
const [isLoading, setIsLoading] =
|
|
29094
|
-
const [progress, setProgress] =
|
|
29106
|
+
const [isLoading, setIsLoading] = useState63(false);
|
|
29107
|
+
const [progress, setProgress] = useState63(0);
|
|
29095
29108
|
useEffect47(() => {
|
|
29096
29109
|
let interval;
|
|
29097
29110
|
if (isLoading) {
|
|
@@ -29137,7 +29150,7 @@ function useLoading() {
|
|
|
29137
29150
|
}
|
|
29138
29151
|
|
|
29139
29152
|
// src/components/features/media-gallery-manager.tsx
|
|
29140
|
-
import { useState as
|
|
29153
|
+
import { useState as useState64, useRef as useRef39, useCallback as useCallback30 } from "react";
|
|
29141
29154
|
import {
|
|
29142
29155
|
Upload as Upload3,
|
|
29143
29156
|
Image as ImageIcon2,
|
|
@@ -29159,8 +29172,8 @@ function MediaGalleryManager({
|
|
|
29159
29172
|
className = ""
|
|
29160
29173
|
}) {
|
|
29161
29174
|
const fileInputRef = useRef39(null);
|
|
29162
|
-
const [deletingIndex, setDeletingIndex] =
|
|
29163
|
-
const [draggedIndex, setDraggedIndex] =
|
|
29175
|
+
const [deletingIndex, setDeletingIndex] = useState64(null);
|
|
29176
|
+
const [draggedIndex, setDraggedIndex] = useState64(null);
|
|
29164
29177
|
const handleFileSelect = useCallback30(async (event) => {
|
|
29165
29178
|
const file = event.target.files?.[0];
|
|
29166
29179
|
if (!file) return;
|
|
@@ -29370,7 +29383,7 @@ function OSTypeBadgeGroup({
|
|
|
29370
29383
|
}
|
|
29371
29384
|
|
|
29372
29385
|
// src/components/features/parallax-image-showcase.tsx
|
|
29373
|
-
import { useEffect as useEffect48, useState as
|
|
29386
|
+
import { useEffect as useEffect48, useState as useState65, useRef as useRef40 } from "react";
|
|
29374
29387
|
import Image12 from "next/image";
|
|
29375
29388
|
import { motion as motion2, useScroll, useTransform, useMotionValue, useSpring } from "framer-motion";
|
|
29376
29389
|
import { jsx as jsx260, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
@@ -29389,7 +29402,7 @@ var ParallaxImageShowcase = ({
|
|
|
29389
29402
|
const springConfig = { stiffness: 100, damping: 30 };
|
|
29390
29403
|
const mouseXSpring = useSpring(mouseX, springConfig);
|
|
29391
29404
|
const mouseYSpring = useSpring(mouseY, springConfig);
|
|
29392
|
-
const [componentRect, setComponentRect] =
|
|
29405
|
+
const [componentRect, setComponentRect] = useState65(null);
|
|
29393
29406
|
const componentRef = useRef40(null);
|
|
29394
29407
|
useEffect48(() => {
|
|
29395
29408
|
const updateRect = () => {
|
|
@@ -30049,7 +30062,7 @@ function PushButtonSelector({
|
|
|
30049
30062
|
}
|
|
30050
30063
|
|
|
30051
30064
|
// src/components/features/release-media-manager.tsx
|
|
30052
|
-
import { useState as
|
|
30065
|
+
import { useState as useState66, useRef as useRef41 } from "react";
|
|
30053
30066
|
import { Trash2 as Trash25, Plus as Plus5, Image as ImageIcon3, Video as Video4, Upload as Upload4, Loader2 as Loader28, GripVertical as GripVertical2 } from "lucide-react";
|
|
30054
30067
|
import Image13 from "next/image";
|
|
30055
30068
|
import { jsx as jsx265, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
@@ -30060,7 +30073,7 @@ function ReleaseMediaManager({
|
|
|
30060
30073
|
className = ""
|
|
30061
30074
|
}) {
|
|
30062
30075
|
const fileInputRef = useRef41(null);
|
|
30063
|
-
const [uploadingIndex, setUploadingIndex] =
|
|
30076
|
+
const [uploadingIndex, setUploadingIndex] = useState66(null);
|
|
30064
30077
|
const handleFileSelect = async (event) => {
|
|
30065
30078
|
const file = event.target.files?.[0];
|
|
30066
30079
|
if (!file) return;
|
|
@@ -30321,7 +30334,7 @@ var SelectButton = React93.forwardRef(
|
|
|
30321
30334
|
SelectButton.displayName = "SelectButton";
|
|
30322
30335
|
|
|
30323
30336
|
// src/components/features/seo-editor-preview.tsx
|
|
30324
|
-
import { useState as
|
|
30337
|
+
import { useState as useState67 } from "react";
|
|
30325
30338
|
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles2 } from "lucide-react";
|
|
30326
30339
|
import Image14 from "next/image";
|
|
30327
30340
|
import { Fragment as Fragment39, jsx as jsx267, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
@@ -30345,9 +30358,9 @@ function SEOEditorPreview({
|
|
|
30345
30358
|
disabled = false,
|
|
30346
30359
|
className = ""
|
|
30347
30360
|
}) {
|
|
30348
|
-
const [imageError, setImageError] =
|
|
30349
|
-
const [isUploading, setIsUploading] =
|
|
30350
|
-
const [fileInputRef, setFileInputRef] =
|
|
30361
|
+
const [imageError, setImageError] = useState67(false);
|
|
30362
|
+
const [isUploading, setIsUploading] = useState67(false);
|
|
30363
|
+
const [fileInputRef, setFileInputRef] = useState67(null);
|
|
30351
30364
|
const displayTitle = seoTitle.trim() || title || "Untitled";
|
|
30352
30365
|
const displayDescription = seoDescription.trim() || summary || "No description";
|
|
30353
30366
|
const hasOgImage = ogImageUrl.trim();
|
|
@@ -30791,7 +30804,7 @@ function StatusFilterComponent({
|
|
|
30791
30804
|
}
|
|
30792
30805
|
|
|
30793
30806
|
// src/components/features/tags-selector.tsx
|
|
30794
|
-
import { useState as
|
|
30807
|
+
import { useState as useState68 } from "react";
|
|
30795
30808
|
import { Search as Search2, X as X12, Plus as Plus6, Loader2 as Loader210 } from "lucide-react";
|
|
30796
30809
|
import { jsx as jsx271, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
30797
30810
|
function TagsSelector({
|
|
@@ -30805,9 +30818,9 @@ function TagsSelector({
|
|
|
30805
30818
|
disabled = false,
|
|
30806
30819
|
allowCreate = true
|
|
30807
30820
|
}) {
|
|
30808
|
-
const [searchQuery, setSearchQuery] =
|
|
30809
|
-
const [showDropdown, setShowDropdown] =
|
|
30810
|
-
const [isCreating, setIsCreating] =
|
|
30821
|
+
const [searchQuery, setSearchQuery] = useState68("");
|
|
30822
|
+
const [showDropdown, setShowDropdown] = useState68(false);
|
|
30823
|
+
const [isCreating, setIsCreating] = useState68(false);
|
|
30811
30824
|
const handleTagAdd = (tagId) => {
|
|
30812
30825
|
if (!selectedTagIds.includes(tagId) && selectedTagIds.length < maxTags) {
|
|
30813
30826
|
onTagsChange([...selectedTagIds, tagId]);
|
|
@@ -30973,7 +30986,7 @@ function TagsSelector({
|
|
|
30973
30986
|
|
|
30974
30987
|
// src/components/features/video-source-selector.tsx
|
|
30975
30988
|
init_button2();
|
|
30976
|
-
import { useState as
|
|
30989
|
+
import { useState as useState69, useCallback as useCallback31 } from "react";
|
|
30977
30990
|
import { Upload as Upload6, Sparkles as Sparkles3, X as X13, Video as Video5 } from "lucide-react";
|
|
30978
30991
|
import { jsx as jsx272, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
30979
30992
|
function VideoSourceSelector({
|
|
@@ -30998,10 +31011,10 @@ function VideoSourceSelector({
|
|
|
30998
31011
|
showTitle = true,
|
|
30999
31012
|
className = ""
|
|
31000
31013
|
}) {
|
|
31001
|
-
const [isUploading, setIsUploading] =
|
|
31002
|
-
const [uploadProgress, setUploadProgress] =
|
|
31003
|
-
const [uploadMessage, setUploadMessage] =
|
|
31004
|
-
const [uploadError, setUploadError] =
|
|
31014
|
+
const [isUploading, setIsUploading] = useState69(false);
|
|
31015
|
+
const [uploadProgress, setUploadProgress] = useState69(0);
|
|
31016
|
+
const [uploadMessage, setUploadMessage] = useState69("");
|
|
31017
|
+
const [uploadError, setUploadError] = useState69(null);
|
|
31005
31018
|
const handleUploadClick = useCallback31(() => {
|
|
31006
31019
|
const input = document.createElement("input");
|
|
31007
31020
|
input.type = "file";
|
|
@@ -31352,7 +31365,7 @@ function TranscriptSummaryEditor({
|
|
|
31352
31365
|
}
|
|
31353
31366
|
|
|
31354
31367
|
// src/components/features/highlight-video-section.tsx
|
|
31355
|
-
import { useState as
|
|
31368
|
+
import { useState as useState70 } from "react";
|
|
31356
31369
|
import { Sparkles as Sparkles5, Upload as Upload7 } from "lucide-react";
|
|
31357
31370
|
init_button2();
|
|
31358
31371
|
|
|
@@ -31651,7 +31664,7 @@ function HighlightVideoSection({
|
|
|
31651
31664
|
disabled = false,
|
|
31652
31665
|
className = ""
|
|
31653
31666
|
}) {
|
|
31654
|
-
const [uploadError, setUploadError] =
|
|
31667
|
+
const [uploadError, setUploadError] = useState70(null);
|
|
31655
31668
|
const handleUploadClick = () => {
|
|
31656
31669
|
const input = document.createElement("input");
|
|
31657
31670
|
input.type = "file";
|
|
@@ -32495,7 +32508,7 @@ function ViewToggle({
|
|
|
32495
32508
|
|
|
32496
32509
|
// src/components/features/policy-configuration-panel.tsx
|
|
32497
32510
|
init_cn();
|
|
32498
|
-
import { useRef as useRef42, useEffect as useEffect49, useState as
|
|
32511
|
+
import { useRef as useRef42, useEffect as useEffect49, useState as useState71 } from "react";
|
|
32499
32512
|
import { ChevronDown as ChevronDown8 } from "lucide-react";
|
|
32500
32513
|
init_button2();
|
|
32501
32514
|
|
|
@@ -32676,7 +32689,7 @@ var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
|
32676
32689
|
] });
|
|
32677
32690
|
};
|
|
32678
32691
|
var useAnimatedHeight = (isExpanded) => {
|
|
32679
|
-
const [height, setHeight] =
|
|
32692
|
+
const [height, setHeight] = useState71(0);
|
|
32680
32693
|
const contentRef = useRef42(null);
|
|
32681
32694
|
useEffect49(() => {
|
|
32682
32695
|
if (contentRef.current) {
|
|
@@ -32834,7 +32847,7 @@ PolicyConfigurationPanel.displayName = "PolicyConfigurationPanel";
|
|
|
32834
32847
|
init_button2();
|
|
32835
32848
|
init_cn();
|
|
32836
32849
|
import { getCountries as getCountries2 } from "libphonenumber-js";
|
|
32837
|
-
import { useEffect as useEffect50, useState as
|
|
32850
|
+
import { useEffect as useEffect50, useState as useState72 } from "react";
|
|
32838
32851
|
import { Fragment as Fragment41, jsx as jsx292, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
32839
32852
|
function WaitlistForm({
|
|
32840
32853
|
id = "waitlist-form",
|
|
@@ -32854,14 +32867,14 @@ function WaitlistForm({
|
|
|
32854
32867
|
privacyPolicyUrl,
|
|
32855
32868
|
consentText = "I agree to receive recurring automated text messages at the phone number provided. Msg & data rates may apply. Msg frequency varies. Reply HELP for help and STOP to cancel."
|
|
32856
32869
|
}) {
|
|
32857
|
-
const [email, setEmail] =
|
|
32858
|
-
const [phone, setPhone] =
|
|
32859
|
-
const [countryCode, setCountryCode] =
|
|
32870
|
+
const [email, setEmail] = useState72(defaultEmail);
|
|
32871
|
+
const [phone, setPhone] = useState72(defaultPhone);
|
|
32872
|
+
const [countryCode, setCountryCode] = useState72("US");
|
|
32860
32873
|
const { toast } = useToast();
|
|
32861
|
-
const [smsConsent, setSmsConsent] =
|
|
32862
|
-
const [isClient, setIsClient] =
|
|
32863
|
-
const [isPhoneInvalid, setIsPhoneInvalid] =
|
|
32864
|
-
const [showConsentError, setShowConsentError] =
|
|
32874
|
+
const [smsConsent, setSmsConsent] = useState72(false);
|
|
32875
|
+
const [isClient, setIsClient] = useState72(false);
|
|
32876
|
+
const [isPhoneInvalid, setIsPhoneInvalid] = useState72(false);
|
|
32877
|
+
const [showConsentError, setShowConsentError] = useState72(false);
|
|
32865
32878
|
const isMailDomainGeneric = hasGenericEmailDomain(email);
|
|
32866
32879
|
useEffect50(() => {
|
|
32867
32880
|
if (defaultEmail) {
|
|
@@ -33441,13 +33454,13 @@ function EmptyState3() {
|
|
|
33441
33454
|
}
|
|
33442
33455
|
|
|
33443
33456
|
// src/components/features/board/use-board-collapse.ts
|
|
33444
|
-
import { useCallback as useCallback33, useState as
|
|
33457
|
+
import { useCallback as useCallback33, useState as useState73 } from "react";
|
|
33445
33458
|
function useBoardCollapse(storageKey) {
|
|
33446
33459
|
const [persisted, setPersisted] = useLocalStorage(
|
|
33447
33460
|
storageKey ?? "__board_collapse_unused__",
|
|
33448
33461
|
{}
|
|
33449
33462
|
);
|
|
33450
|
-
const [memory, setMemory] =
|
|
33463
|
+
const [memory, setMemory] = useState73({});
|
|
33451
33464
|
const collapsed = storageKey ? persisted : memory;
|
|
33452
33465
|
const setMap = storageKey ? setPersisted : setMemory;
|
|
33453
33466
|
const toggle = useCallback33(
|
|
@@ -34329,4 +34342,4 @@ export {
|
|
|
34329
34342
|
TMCG_SOCIAL_PLATFORMS,
|
|
34330
34343
|
assets
|
|
34331
34344
|
};
|
|
34332
|
-
//# sourceMappingURL=chunk-
|
|
34345
|
+
//# sourceMappingURL=chunk-KCKMK4UF.js.map
|