@flamingo-stack/openframe-frontend-core 0.0.178 → 0.0.179-snapshot.20260514181702
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-AAX27BCR.js → chunk-DV2GT7RI.js} +3703 -4168
- package/dist/chunk-DV2GT7RI.js.map +1 -0
- package/dist/{chunk-L4T24AN4.cjs → chunk-JFGORTXV.cjs} +868 -1333
- package/dist/chunk-JFGORTXV.cjs.map +1 -0
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/features/entity-video-section.d.ts +54 -0
- package/dist/components/features/entity-video-section.d.ts.map +1 -0
- package/dist/components/features/index.cjs +18 -2
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.d.ts +4 -2
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +21 -5
- package/dist/components/features/video-bites-display.d.ts +38 -0
- package/dist/components/features/video-bites-display.d.ts.map +1 -0
- package/dist/components/features/video-ratio-tabs.d.ts +62 -0
- package/dist/components/features/video-ratio-tabs.d.ts.map +1 -0
- package/dist/components/features/video.d.ts +94 -0
- package/dist/components/features/video.d.ts.map +1 -0
- package/dist/components/index.cjs +18 -2
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +21 -5
- package/dist/components/media-carousel.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +18 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -5
- package/package.json +2 -2
- package/src/components/chat/chat-message-list.tsx +62 -18
- package/src/components/features/entity-video-section.tsx +175 -0
- package/src/components/features/index.ts +9 -2
- package/src/components/features/video-bites-display.tsx +216 -0
- package/src/components/features/video-ratio-tabs.tsx +174 -0
- package/src/components/features/video.tsx +474 -0
- package/src/components/media-carousel.tsx +43 -236
- package/src/components/shared/product-release/release-detail-page.tsx +26 -19
- package/dist/chunk-AAX27BCR.js.map +0 -1
- package/dist/chunk-L4T24AN4.cjs.map +0 -1
- package/dist/components/features/video-player.d.ts +0 -44
- package/dist/components/features/video-player.d.ts.map +0 -1
- package/dist/components/features/youtube-embed.d.ts +0 -31
- package/dist/components/features/youtube-embed.d.ts.map +0 -1
- package/dist/utils/lite-youtube-embed-stub.d.ts +0 -8
- package/dist/utils/lite-youtube-embed-stub.d.ts.map +0 -1
- package/dist/utils/lite-youtube-embed.d.ts +0 -9
- package/dist/utils/lite-youtube-embed.d.ts.map +0 -1
- package/src/components/features/.video-player.md +0 -44
- package/src/components/features/.youtube-embed.md +0 -40
- package/src/components/features/video-player.tsx +0 -893
- package/src/components/features/youtube-embed.tsx +0 -158
- package/src/utils/lite-youtube-embed-stub.tsx +0 -21
- package/src/utils/lite-youtube-embed.tsx +0 -46
|
@@ -118,13 +118,6 @@ var _chunkOFAYLG6Dcjs = require('./chunk-OFAYLG6D.cjs');
|
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
121
|
|
|
129
122
|
|
|
130
123
|
|
|
@@ -150,7 +143,7 @@ var _chunkVRHGVLSLcjs = require('./chunk-VRHGVLSL.cjs');
|
|
|
150
143
|
|
|
151
144
|
// src/components/pagination.tsx
|
|
152
145
|
var _lucidereact = require('lucide-react');
|
|
153
|
-
var _react = require('react'); var React33 = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React7 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React11 = _interopRequireWildcard(_react); var React10 = _interopRequireWildcard(_react); var React12 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react); var React14 = _interopRequireWildcard(_react); var React15 = _interopRequireWildcard(_react); var React16 = _interopRequireWildcard(_react); var React17 = _interopRequireWildcard(_react); var React19 = _interopRequireWildcard(_react); var React24 = _interopRequireWildcard(_react); var React27 = _interopRequireWildcard(_react); var React28 = _interopRequireWildcard(_react); var React31 = _interopRequireWildcard(_react); var React35 = _interopRequireWildcard(_react); var React48 = _interopRequireWildcard(_react); var
|
|
146
|
+
var _react = require('react'); var React33 = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React7 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React11 = _interopRequireWildcard(_react); var React10 = _interopRequireWildcard(_react); var React12 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react); var React14 = _interopRequireWildcard(_react); var React15 = _interopRequireWildcard(_react); var React16 = _interopRequireWildcard(_react); var React17 = _interopRequireWildcard(_react); var React19 = _interopRequireWildcard(_react); var React24 = _interopRequireWildcard(_react); var React27 = _interopRequireWildcard(_react); var React28 = _interopRequireWildcard(_react); var React31 = _interopRequireWildcard(_react); var React35 = _interopRequireWildcard(_react); var React47 = _interopRequireWildcard(_react); var React48 = _interopRequireWildcard(_react); var React50 = _interopRequireWildcard(_react); var React51 = _interopRequireWildcard(_react); var React52 = _interopRequireWildcard(_react); var React53 = _interopRequireWildcard(_react); var React54 = _interopRequireWildcard(_react); var React55 = _interopRequireWildcard(_react); var React56 = _interopRequireWildcard(_react); var React57 = _interopRequireWildcard(_react); var React58 = _interopRequireWildcard(_react); var React59 = _interopRequireWildcard(_react); var React60 = _interopRequireWildcard(_react); var React61 = _interopRequireWildcard(_react); var React62 = _interopRequireWildcard(_react); var React63 = _interopRequireWildcard(_react); var React65 = _interopRequireWildcard(_react); var React66 = _interopRequireWildcard(_react); var React70 = _interopRequireWildcard(_react); var React69 = _interopRequireWildcard(_react); var React73 = _interopRequireWildcard(_react); var React74 = _interopRequireWildcard(_react); var React77 = _interopRequireWildcard(_react); var React76 = _interopRequireWildcard(_react); var React79 = _interopRequireWildcard(_react); var React81 = _interopRequireWildcard(_react); var React82 = _interopRequireWildcard(_react); var React84 = _interopRequireWildcard(_react); var React85 = _interopRequireWildcard(_react); var React86 = _interopRequireWildcard(_react); var React88 = _interopRequireWildcard(_react); var React87 = _interopRequireWildcard(_react); var React93 = _interopRequireWildcard(_react); var React97 = _interopRequireWildcard(_react); var React101 = _interopRequireWildcard(_react); var React100 = _interopRequireWildcard(_react); var React98 = _interopRequireWildcard(_react); var React99 = _interopRequireWildcard(_react);
|
|
154
147
|
var _jsxruntime = require('react/jsx-runtime');
|
|
155
148
|
var Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationEllipsis, PaginationPrevious, PaginationNext;
|
|
156
149
|
var init_pagination = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
@@ -5404,7 +5397,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
|
|
|
5404
5397
|
renderEntityCard,
|
|
5405
5398
|
...props
|
|
5406
5399
|
}, ref) => {
|
|
5407
|
-
const { scrollRef, contentRef, scrollToBottom } = _usesticktobottom.useStickToBottom.call(void 0, {
|
|
5400
|
+
const { scrollRef, contentRef, scrollToBottom, escapedFromLock } = _usesticktobottom.useStickToBottom.call(void 0, {
|
|
5408
5401
|
resize: "smooth",
|
|
5409
5402
|
initial: "instant"
|
|
5410
5403
|
});
|
|
@@ -5433,15 +5426,20 @@ var ChatMessageList = _react.forwardRef.call(void 0,
|
|
|
5433
5426
|
}
|
|
5434
5427
|
if (newCount > prevCount) {
|
|
5435
5428
|
const isPrepend = prependRef.current.firstMessageId !== void 0 && _optionalChain([messages, 'access', _110 => _110[0], 'optionalAccess', _111 => _111.id]) !== prependRef.current.firstMessageId;
|
|
5436
|
-
if (
|
|
5437
|
-
|
|
5438
|
-
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5429
|
+
if (isPrepend) return;
|
|
5430
|
+
const newSlice = messages.slice(prevCount);
|
|
5431
|
+
const hasNewUser = newSlice.some((m) => m.role === "user");
|
|
5432
|
+
if (hasNewUser) {
|
|
5433
|
+
void scrollToBottom({ animation: "instant", ignoreEscapes: true });
|
|
5434
|
+
return;
|
|
5442
5435
|
}
|
|
5436
|
+
void scrollToBottom({ animation: "instant", ignoreEscapes: true });
|
|
5437
|
+
return;
|
|
5443
5438
|
}
|
|
5444
|
-
|
|
5439
|
+
if (!escapedFromLock) {
|
|
5440
|
+
void scrollToBottom({ animation: "smooth" });
|
|
5441
|
+
}
|
|
5442
|
+
}, [autoScroll, messages, dialogId, scrollToBottom, scrollEl, escapedFromLock]);
|
|
5445
5443
|
_react.useLayoutEffect.call(void 0, () => {
|
|
5446
5444
|
const el = scrollEl;
|
|
5447
5445
|
if (!el) {
|
|
@@ -13050,59 +13048,231 @@ var ImageCropper = ({
|
|
|
13050
13048
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
13051
13049
|
|
|
13052
13050
|
|
|
13053
|
-
|
|
13054
|
-
|
|
13055
|
-
var
|
|
13056
|
-
|
|
13057
|
-
|
|
13058
|
-
|
|
13051
|
+
// src/components/features/video.tsx
|
|
13052
|
+
|
|
13053
|
+
var _muxplayerreact = require('@mux/mux-player-react'); var _muxplayerreact2 = _interopRequireDefault(_muxplayerreact);
|
|
13054
|
+
|
|
13055
|
+
var YT_HOSTS = /* @__PURE__ */ new Set([
|
|
13056
|
+
"youtube.com",
|
|
13057
|
+
"www.youtube.com",
|
|
13058
|
+
"m.youtube.com",
|
|
13059
|
+
"youtu.be",
|
|
13060
|
+
"youtube-nocookie.com",
|
|
13061
|
+
"www.youtube-nocookie.com"
|
|
13062
|
+
]);
|
|
13063
|
+
function isYouTubeUrl(url) {
|
|
13064
|
+
try {
|
|
13065
|
+
return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
|
|
13066
|
+
} catch (e22) {
|
|
13067
|
+
return false;
|
|
13068
|
+
}
|
|
13059
13069
|
}
|
|
13060
|
-
var
|
|
13061
|
-
|
|
13062
|
-
|
|
13063
|
-
|
|
13070
|
+
var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
|
|
13071
|
+
var BARE_YT_ID_RE = /^[A-Za-z0-9_-]{11}$/;
|
|
13072
|
+
function extractYouTubeId(url) {
|
|
13073
|
+
if (!url) return null;
|
|
13074
|
+
if (BARE_YT_ID_RE.test(url)) return url;
|
|
13075
|
+
let u;
|
|
13076
|
+
try {
|
|
13077
|
+
u = new URL(url, "http://placeholder.local");
|
|
13078
|
+
} catch (e23) {
|
|
13079
|
+
return null;
|
|
13080
|
+
}
|
|
13081
|
+
if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
|
|
13082
|
+
if (u.hostname.toLowerCase().endsWith("youtu.be")) {
|
|
13083
|
+
return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
|
|
13084
|
+
}
|
|
13085
|
+
const v = u.searchParams.get("v");
|
|
13086
|
+
if (v) return v;
|
|
13087
|
+
const m = u.pathname.match(YT_PATH_RE);
|
|
13088
|
+
return m ? m[1] : null;
|
|
13089
|
+
}
|
|
13090
|
+
function Video2(props) {
|
|
13091
|
+
const url = props.url;
|
|
13092
|
+
if (!url) return null;
|
|
13093
|
+
const effectiveKind = resolveKind(props, url);
|
|
13094
|
+
const layout = _nullishCoalesce(props.layout, () => ( "native"));
|
|
13095
|
+
const inner = effectiveKind === "youtube" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13096
|
+
YouTubeFacade,
|
|
13097
|
+
{
|
|
13098
|
+
url,
|
|
13099
|
+
title: props.title,
|
|
13100
|
+
priority: props.priority,
|
|
13101
|
+
className: props.className,
|
|
13102
|
+
minimalControls: props.minimalControls
|
|
13103
|
+
}
|
|
13104
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13105
|
+
FilePlayer,
|
|
13106
|
+
{
|
|
13107
|
+
url,
|
|
13108
|
+
poster: props.poster,
|
|
13109
|
+
muted: props.muted,
|
|
13110
|
+
srtContent: "srtContent" in props ? props.srtContent : null,
|
|
13111
|
+
captionsUrl: "captionsUrl" in props ? props.captionsUrl : null,
|
|
13112
|
+
className: props.className
|
|
13113
|
+
}
|
|
13114
|
+
);
|
|
13115
|
+
return wrapWithLayout(inner, layout);
|
|
13116
|
+
}
|
|
13117
|
+
function resolveKind(props, url) {
|
|
13118
|
+
if ("kind" in props) {
|
|
13119
|
+
if (props.kind === "youtube") return "youtube";
|
|
13120
|
+
if (props.kind === "file") return "file";
|
|
13121
|
+
}
|
|
13122
|
+
if (BARE_YT_ID_RE.test(url)) return "youtube";
|
|
13123
|
+
return isYouTubeUrl(url) ? "youtube" : "file";
|
|
13124
|
+
}
|
|
13125
|
+
function wrapWithLayout(inner, layout) {
|
|
13126
|
+
switch (layout) {
|
|
13127
|
+
case "centered":
|
|
13128
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-3xl aspect-video", children: inner }) });
|
|
13129
|
+
case "fill":
|
|
13130
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 w-full h-full", children: inner });
|
|
13131
|
+
case "native":
|
|
13132
|
+
default:
|
|
13133
|
+
return inner;
|
|
13134
|
+
}
|
|
13135
|
+
}
|
|
13136
|
+
function FilePlayer({
|
|
13137
|
+
url,
|
|
13138
|
+
poster,
|
|
13139
|
+
muted,
|
|
13140
|
+
srtContent,
|
|
13141
|
+
captionsUrl,
|
|
13142
|
+
className
|
|
13143
|
+
}) {
|
|
13144
|
+
if (process.env.NODE_ENV !== "production" && srtContent && !captionsUrl) {
|
|
13145
|
+
console.warn(
|
|
13146
|
+
"[Video] srtContent supplied without captionsUrl \u2014 captions will not render. Pass captionsUrl (the VTT URL) instead; raw SRT text overlays are no longer supported."
|
|
13147
|
+
);
|
|
13148
|
+
}
|
|
13149
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13150
|
+
_muxplayerreact2.default,
|
|
13151
|
+
{
|
|
13152
|
+
src: url,
|
|
13153
|
+
poster: poster || void 0,
|
|
13154
|
+
streamType: "on-demand",
|
|
13155
|
+
playsInline: true,
|
|
13156
|
+
muted,
|
|
13157
|
+
preferCmcd: "header",
|
|
13158
|
+
accentColor: "var(--ods-accent)",
|
|
13159
|
+
className,
|
|
13160
|
+
style: { width: "100%", height: "100%" },
|
|
13161
|
+
children: captionsUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13162
|
+
"track",
|
|
13163
|
+
{
|
|
13164
|
+
kind: "captions",
|
|
13165
|
+
src: captionsUrl,
|
|
13166
|
+
srcLang: "en",
|
|
13167
|
+
label: "English",
|
|
13168
|
+
default: true
|
|
13169
|
+
}
|
|
13170
|
+
) : null
|
|
13171
|
+
}
|
|
13172
|
+
);
|
|
13173
|
+
}
|
|
13174
|
+
function YouTubeFacade({
|
|
13175
|
+
url,
|
|
13176
|
+
title = "YouTube Video",
|
|
13177
|
+
priority,
|
|
13178
|
+
className,
|
|
13179
|
+
minimalControls
|
|
13180
|
+
}) {
|
|
13181
|
+
const videoId = extractYouTubeId(url);
|
|
13182
|
+
if (!videoId) return null;
|
|
13183
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, YouTubeFacadeInner, { videoId, title, priority, className, minimalControls });
|
|
13184
|
+
}
|
|
13185
|
+
function YouTubeFacadeInner({
|
|
13186
|
+
videoId,
|
|
13187
|
+
title,
|
|
13188
|
+
priority,
|
|
13189
|
+
className,
|
|
13190
|
+
minimalControls
|
|
13191
|
+
}) {
|
|
13192
|
+
const [activated, setActivated] = _react.useState.call(void 0, false);
|
|
13193
|
+
const wrapperRef = _react.useRef.call(void 0, null);
|
|
13194
|
+
const embedParams = new URLSearchParams({
|
|
13195
|
+
autoplay: "1",
|
|
13196
|
+
rel: "0",
|
|
13197
|
+
modestbranding: "1",
|
|
13198
|
+
playsinline: "1"
|
|
13199
|
+
});
|
|
13200
|
+
if (minimalControls) {
|
|
13201
|
+
embedParams.set("controls", "0");
|
|
13202
|
+
embedParams.set("showinfo", "0");
|
|
13203
|
+
embedParams.set("fs", "0");
|
|
13204
|
+
embedParams.set("iv_load_policy", "3");
|
|
13205
|
+
embedParams.set("cc_load_policy", "0");
|
|
13206
|
+
embedParams.set("disablekb", "1");
|
|
13207
|
+
}
|
|
13208
|
+
const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?${embedParams.toString()}`;
|
|
13209
|
+
const posterJpg = `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
|
|
13210
|
+
const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/mqdefault.webp`;
|
|
13064
13211
|
_react.useEffect.call(void 0, () => {
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13212
|
+
if (!activated) return;
|
|
13213
|
+
function handleOutsideClick(event) {
|
|
13214
|
+
const target = event.target;
|
|
13215
|
+
if (!target) return;
|
|
13216
|
+
if (_optionalChain([wrapperRef, 'access', _389 => _389.current, 'optionalAccess', _390 => _390.contains, 'call', _391 => _391(target)])) return;
|
|
13217
|
+
setActivated(false);
|
|
13218
|
+
}
|
|
13219
|
+
document.addEventListener("pointerdown", handleOutsideClick);
|
|
13220
|
+
return () => document.removeEventListener("pointerdown", handleOutsideClick);
|
|
13221
|
+
}, [activated]);
|
|
13222
|
+
_react.useEffect.call(void 0, () => {
|
|
13223
|
+
if (!activated) return;
|
|
13224
|
+
function handleEscape(event) {
|
|
13225
|
+
if (event.key === "Escape") setActivated(false);
|
|
13226
|
+
}
|
|
13227
|
+
document.addEventListener("keydown", handleEscape);
|
|
13228
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
13229
|
+
}, [activated]);
|
|
13230
|
+
const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
|
|
13231
|
+
const wrapperStyle = { paddingBottom: "56.25%" };
|
|
13232
|
+
if (activated) {
|
|
13233
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13234
|
+
"iframe",
|
|
13235
|
+
{
|
|
13236
|
+
src: embedUrl,
|
|
13237
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
13238
|
+
allowFullScreen: true,
|
|
13239
|
+
title,
|
|
13240
|
+
className: "absolute inset-0 w-full h-full border-0 rounded-lg"
|
|
13241
|
+
}
|
|
13242
|
+
) });
|
|
13069
13243
|
}
|
|
13070
|
-
|
|
13071
|
-
const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?autoplay=1&playsinline=1&rel=0&modestbranding=1`;
|
|
13072
|
-
const handleActivate = () => {
|
|
13073
|
-
setIsActivated(true);
|
|
13074
|
-
setTimeout(() => setIsLoaded(true), 100);
|
|
13075
|
-
};
|
|
13076
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-black", children: !isActivated ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
13244
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
13077
13245
|
"button",
|
|
13078
13246
|
{
|
|
13079
|
-
|
|
13080
|
-
|
|
13081
|
-
|
|
13247
|
+
type: "button",
|
|
13248
|
+
"aria-label": `Play: ${title}`,
|
|
13249
|
+
onClick: () => setActivated(true),
|
|
13250
|
+
className: "group absolute inset-0 p-0 m-0 border border-ods-border rounded-lg overflow-hidden bg-ods-card cursor-pointer",
|
|
13082
13251
|
children: [
|
|
13083
|
-
/* @__PURE__ */ _jsxruntime.
|
|
13084
|
-
"
|
|
13085
|
-
|
|
13086
|
-
|
|
13087
|
-
|
|
13088
|
-
|
|
13089
|
-
|
|
13090
|
-
|
|
13091
|
-
|
|
13092
|
-
|
|
13252
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
|
|
13253
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
|
|
13254
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13255
|
+
"img",
|
|
13256
|
+
{
|
|
13257
|
+
src: posterJpg,
|
|
13258
|
+
alt: title,
|
|
13259
|
+
loading: "lazy",
|
|
13260
|
+
fetchPriority: priority ? "high" : "low",
|
|
13261
|
+
decoding: priority ? "sync" : "async",
|
|
13262
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
13263
|
+
}
|
|
13264
|
+
)
|
|
13265
|
+
] }),
|
|
13266
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent text-ods-text-on-accent shadow-lg transition-transform duration-200 group-hover:scale-110", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", className: "ml-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "5,3 19,12 5,21" }) }) }) })
|
|
13093
13267
|
]
|
|
13094
13268
|
}
|
|
13095
|
-
)
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
allowFullScreen: true
|
|
13103
|
-
}
|
|
13104
|
-
) }) });
|
|
13105
|
-
};
|
|
13269
|
+
) });
|
|
13270
|
+
}
|
|
13271
|
+
|
|
13272
|
+
// src/components/media-carousel.tsx
|
|
13273
|
+
|
|
13274
|
+
var ChevronLeftIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "15,18 9,12 15,6" }) });
|
|
13275
|
+
var ChevronRightIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "9,18 15,12 9,6" }) });
|
|
13106
13276
|
var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
13107
13277
|
media,
|
|
13108
13278
|
className,
|
|
@@ -13114,9 +13284,13 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13114
13284
|
const [currentIndex, setCurrentIndex] = _react.useState.call(void 0, 0);
|
|
13115
13285
|
const [touchStart, setTouchStart] = _react.useState.call(void 0, null);
|
|
13116
13286
|
const [touchEnd, setTouchEnd] = _react.useState.call(void 0, null);
|
|
13117
|
-
const [playingVideos, setPlayingVideos] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
|
|
13118
13287
|
const carouselRef = _react.useRef.call(void 0, null);
|
|
13119
13288
|
const thumbnailsRef = _react.useRef.call(void 0, null);
|
|
13289
|
+
_react.useEffect.call(void 0, () => {
|
|
13290
|
+
if (currentIndex >= media.length && media.length > 0) {
|
|
13291
|
+
setCurrentIndex(media.length - 1);
|
|
13292
|
+
}
|
|
13293
|
+
}, [media.length, currentIndex]);
|
|
13120
13294
|
if (!media || media.length === 0) {
|
|
13121
13295
|
return null;
|
|
13122
13296
|
}
|
|
@@ -13124,71 +13298,14 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13124
13298
|
if (!currentItem) {
|
|
13125
13299
|
return null;
|
|
13126
13300
|
}
|
|
13127
|
-
const handleVideoClick = _react.useCallback.call(void 0, (index) => {
|
|
13128
|
-
const item = media[index];
|
|
13129
|
-
if (item.type !== "video") return;
|
|
13130
|
-
const videoElements = document.querySelectorAll(`video[data-video-index="${index}"]`);
|
|
13131
|
-
const video = videoElements[0];
|
|
13132
|
-
if (!video) {
|
|
13133
|
-
console.log("\u274C Video element not found for index:", index);
|
|
13134
|
-
return;
|
|
13135
|
-
}
|
|
13136
|
-
if (video.paused) {
|
|
13137
|
-
const playPromise = video.play();
|
|
13138
|
-
if (playPromise !== void 0) {
|
|
13139
|
-
playPromise.then(() => {
|
|
13140
|
-
const playButton = _optionalChain([video, 'access', _389 => _389.parentElement, 'optionalAccess', _390 => _390.querySelector, 'call', _391 => _391(".video-play-button")]);
|
|
13141
|
-
if (playButton) {
|
|
13142
|
-
playButton.style.display = "none";
|
|
13143
|
-
}
|
|
13144
|
-
}).catch((error) => {
|
|
13145
|
-
if (error.name === "NotSupportedError" || error.name === "MediaElementError") {
|
|
13146
|
-
const fallbackDiv = document.createElement("div");
|
|
13147
|
-
fallbackDiv.className = "absolute inset-0 flex items-center justify-center bg-ods-card text-center p-4";
|
|
13148
|
-
fallbackDiv.innerHTML = `
|
|
13149
|
-
<div>
|
|
13150
|
-
<p class="text-ods-text-primary text-sm mb-2">Video format not supported</p>
|
|
13151
|
-
<a href="${item.src}" target="_blank" rel="noopener noreferrer"
|
|
13152
|
-
class="text-ods-accent hover:text-[#FFD700] text-sm">
|
|
13153
|
-
Open Video Directly
|
|
13154
|
-
</a>
|
|
13155
|
-
</div>
|
|
13156
|
-
`;
|
|
13157
|
-
_optionalChain([video, 'access', _392 => _392.parentElement, 'optionalAccess', _393 => _393.appendChild, 'call', _394 => _394(fallbackDiv)]);
|
|
13158
|
-
}
|
|
13159
|
-
});
|
|
13160
|
-
}
|
|
13161
|
-
} else {
|
|
13162
|
-
video.pause();
|
|
13163
|
-
const playButton = _optionalChain([video, 'access', _395 => _395.parentElement, 'optionalAccess', _396 => _396.querySelector, 'call', _397 => _397(".video-play-button")]);
|
|
13164
|
-
if (playButton) {
|
|
13165
|
-
playButton.style.display = "flex";
|
|
13166
|
-
}
|
|
13167
|
-
}
|
|
13168
|
-
}, [media]);
|
|
13169
13301
|
const nextSlide = _react.useCallback.call(void 0, () => {
|
|
13170
|
-
const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
|
|
13171
|
-
if (currentVideo && !currentVideo.paused) {
|
|
13172
|
-
currentVideo.pause();
|
|
13173
|
-
}
|
|
13174
|
-
setPlayingVideos(/* @__PURE__ */ new Set());
|
|
13175
13302
|
setCurrentIndex((prev) => (prev + 1) % media.length);
|
|
13176
|
-
}, [
|
|
13303
|
+
}, [media.length]);
|
|
13177
13304
|
const prevSlide = _react.useCallback.call(void 0, () => {
|
|
13178
|
-
const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
|
|
13179
|
-
if (currentVideo && !currentVideo.paused) {
|
|
13180
|
-
currentVideo.pause();
|
|
13181
|
-
}
|
|
13182
|
-
setPlayingVideos(/* @__PURE__ */ new Set());
|
|
13183
13305
|
setCurrentIndex((prev) => (prev - 1 + media.length) % media.length);
|
|
13184
|
-
}, [
|
|
13306
|
+
}, [media.length]);
|
|
13185
13307
|
const selectSlide = _react.useCallback.call(void 0, (index) => {
|
|
13186
13308
|
if (index === currentIndex) return;
|
|
13187
|
-
const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
|
|
13188
|
-
if (currentVideo && !currentVideo.paused) {
|
|
13189
|
-
currentVideo.pause();
|
|
13190
|
-
}
|
|
13191
|
-
setPlayingVideos(/* @__PURE__ */ new Set());
|
|
13192
13309
|
setCurrentIndex(index);
|
|
13193
13310
|
}, [currentIndex]);
|
|
13194
13311
|
const handleKeyDown = _react.useCallback.call(void 0, (e) => {
|
|
@@ -13221,82 +13338,26 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13221
13338
|
prevSlide();
|
|
13222
13339
|
}
|
|
13223
13340
|
};
|
|
13224
|
-
const renderYouTubeEmbed = (item, index) =>
|
|
13225
|
-
|
|
13226
|
-
|
|
13227
|
-
|
|
13228
|
-
|
|
13229
|
-
|
|
13230
|
-
|
|
13341
|
+
const renderYouTubeEmbed = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13342
|
+
Video2,
|
|
13343
|
+
{
|
|
13344
|
+
kind: "youtube",
|
|
13345
|
+
url: item.src,
|
|
13346
|
+
title: item.alt || `Video ${index + 1}`,
|
|
13347
|
+
layout: "fill",
|
|
13348
|
+
priority: index === currentIndex
|
|
13231
13349
|
}
|
|
13232
|
-
|
|
13233
|
-
|
|
13234
|
-
|
|
13235
|
-
|
|
13236
|
-
|
|
13237
|
-
|
|
13238
|
-
|
|
13239
|
-
|
|
13240
|
-
|
|
13241
|
-
|
|
13242
|
-
|
|
13243
|
-
muted: true,
|
|
13244
|
-
"data-video-index": index,
|
|
13245
|
-
onClick: () => handleVideoClick(index),
|
|
13246
|
-
onPlay: () => {
|
|
13247
|
-
const playButton = _optionalChain([document, 'access', _398 => _398.querySelector, 'call', _399 => _399(`[data-video-index="${index}"]`), 'optionalAccess', _400 => _400.parentElement, 'optionalAccess', _401 => _401.querySelector, 'call', _402 => _402(".video-play-button")]);
|
|
13248
|
-
if (playButton) {
|
|
13249
|
-
playButton.style.display = "none";
|
|
13250
|
-
}
|
|
13251
|
-
},
|
|
13252
|
-
onPause: () => {
|
|
13253
|
-
const playButton = _optionalChain([document, 'access', _403 => _403.querySelector, 'call', _404 => _404(`[data-video-index="${index}"]`), 'optionalAccess', _405 => _405.parentElement, 'optionalAccess', _406 => _406.querySelector, 'call', _407 => _407(".video-play-button")]);
|
|
13254
|
-
if (playButton) {
|
|
13255
|
-
playButton.style.display = "flex";
|
|
13256
|
-
}
|
|
13257
|
-
},
|
|
13258
|
-
onLoadedMetadata: (e) => {
|
|
13259
|
-
const video = e.target;
|
|
13260
|
-
video.currentTime = 1;
|
|
13261
|
-
},
|
|
13262
|
-
onError: (e) => {
|
|
13263
|
-
const target = e.target;
|
|
13264
|
-
if (target.crossOrigin) {
|
|
13265
|
-
target.crossOrigin = "";
|
|
13266
|
-
target.load();
|
|
13267
|
-
} else {
|
|
13268
|
-
target.style.display = "none";
|
|
13269
|
-
const fallbackDiv = document.createElement("div");
|
|
13270
|
-
fallbackDiv.className = "absolute inset-0 flex items-center justify-center bg-ods-card text-center p-4";
|
|
13271
|
-
fallbackDiv.innerHTML = `
|
|
13272
|
-
<div>
|
|
13273
|
-
<p class="text-ods-text-primary text-sm mb-2">Video could not be loaded</p>
|
|
13274
|
-
<a href="${item.src}" target="_blank" rel="noopener noreferrer"
|
|
13275
|
-
class="text-ods-accent hover:text-[#FFD700] text-sm">
|
|
13276
|
-
Open Video Directly
|
|
13277
|
-
</a>
|
|
13278
|
-
</div>
|
|
13279
|
-
`;
|
|
13280
|
-
_optionalChain([target, 'access', _408 => _408.parentElement, 'optionalAccess', _409 => _409.appendChild, 'call', _410 => _410(fallbackDiv)]);
|
|
13281
|
-
}
|
|
13282
|
-
},
|
|
13283
|
-
children: [
|
|
13284
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/mp4" }),
|
|
13285
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/webm" }),
|
|
13286
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/ogg" }),
|
|
13287
|
-
"Your browser does not support the video tag."
|
|
13288
|
-
]
|
|
13289
|
-
}
|
|
13290
|
-
),
|
|
13291
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13292
|
-
"div",
|
|
13293
|
-
{
|
|
13294
|
-
className: "video-play-button absolute inset-0 flex items-center justify-center bg-black bg-opacity-20 cursor-pointer transition-opacity hover:bg-opacity-30",
|
|
13295
|
-
onClick: () => handleVideoClick(index),
|
|
13296
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 bg-black bg-opacity-60 rounded-full flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlayIcon2, {}) })
|
|
13297
|
-
}
|
|
13298
|
-
)
|
|
13299
|
-
] });
|
|
13350
|
+
);
|
|
13351
|
+
const renderVideo = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13352
|
+
Video2,
|
|
13353
|
+
{
|
|
13354
|
+
url: item.src,
|
|
13355
|
+
poster: item.poster,
|
|
13356
|
+
muted: true,
|
|
13357
|
+
layout: "fill",
|
|
13358
|
+
priority: index === currentIndex
|
|
13359
|
+
}
|
|
13360
|
+
);
|
|
13300
13361
|
const renderImage = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-black", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13301
13362
|
"img",
|
|
13302
13363
|
{
|
|
@@ -13305,14 +13366,12 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13305
13366
|
className: `w-full h-full object-${objectFit}`,
|
|
13306
13367
|
loading: "lazy",
|
|
13307
13368
|
onError: (e) => {
|
|
13308
|
-
console.log("\u274C Image failed to load:", item.src);
|
|
13309
13369
|
const target = e.target;
|
|
13310
13370
|
target.style.display = "none";
|
|
13311
13371
|
}
|
|
13312
13372
|
}
|
|
13313
13373
|
) });
|
|
13314
13374
|
const renderMainMedia = (item, index) => {
|
|
13315
|
-
console.log("\u{1F3AC} Rendering media item:", { type: item.type, src: item.src.substring(0, 100) + "..." });
|
|
13316
13375
|
switch (item.type) {
|
|
13317
13376
|
case "youtube":
|
|
13318
13377
|
return renderYouTubeEmbed(item, index);
|
|
@@ -13327,7 +13386,7 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13327
13386
|
const isActive = index === currentIndex;
|
|
13328
13387
|
let thumbnailSrc = item.src;
|
|
13329
13388
|
if (item.type === "youtube") {
|
|
13330
|
-
const videoId =
|
|
13389
|
+
const videoId = extractYouTubeId(item.src);
|
|
13331
13390
|
thumbnailSrc = videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : item.src;
|
|
13332
13391
|
} else if (item.type === "video" && item.poster) {
|
|
13333
13392
|
thumbnailSrc = item.poster;
|
|
@@ -13805,8 +13864,8 @@ function PricingDisplay({
|
|
|
13805
13864
|
}
|
|
13806
13865
|
if (pricingArray.length === 1) {
|
|
13807
13866
|
const item = pricingArray[0];
|
|
13808
|
-
const price = _optionalChain([item, 'access',
|
|
13809
|
-
const unit = _optionalChain([item, 'access',
|
|
13867
|
+
const price = _optionalChain([item, 'access', _392 => _392.ranges, 'optionalAccess', _393 => _393[0], 'optionalAccess', _394 => _394.min]) || 0;
|
|
13868
|
+
const unit = _optionalChain([item, 'access', _395 => _395.ranges, 'optionalAccess', _396 => _396[0], 'optionalAccess', _397 => _397.unit]);
|
|
13810
13869
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
|
|
13811
13870
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
|
|
13812
13871
|
unit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
|
|
@@ -13815,11 +13874,11 @@ function PricingDisplay({
|
|
|
13815
13874
|
] })
|
|
13816
13875
|
] });
|
|
13817
13876
|
}
|
|
13818
|
-
const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access',
|
|
13819
|
-
const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access',
|
|
13877
|
+
const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access', _398 => _398.ranges, 'optionalAccess', _399 => _399[0], 'optionalAccess', _400 => _400.min]) || 0, styleConfig.showTildePrefix));
|
|
13878
|
+
const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access', _401 => _401.ranges, 'optionalAccess', _402 => _402[0], 'optionalAccess', _403 => _403.unit]));
|
|
13820
13879
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
|
|
13821
13880
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
|
|
13822
|
-
itemWithUnit && _optionalChain([itemWithUnit, 'access',
|
|
13881
|
+
itemWithUnit && _optionalChain([itemWithUnit, 'access', _404 => _404.ranges, 'optionalAccess', _405 => _405[0], 'optionalAccess', _406 => _406.unit]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
|
|
13823
13882
|
"/",
|
|
13824
13883
|
itemWithUnit.ranges[0].unit
|
|
13825
13884
|
] })
|
|
@@ -14017,7 +14076,7 @@ function VendorTag({
|
|
|
14017
14076
|
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[#1A1A1A] text-[8px] font-bold", children: "\u2605" }) })
|
|
14018
14077
|
};
|
|
14019
14078
|
case "classification":
|
|
14020
|
-
const classificationType = _optionalChain([text, 'optionalAccess',
|
|
14079
|
+
const classificationType = _optionalChain([text, 'optionalAccess', _407 => _407.toLowerCase, 'call', _408 => _408()]);
|
|
14021
14080
|
if (classificationType === "open_source") {
|
|
14022
14081
|
return {
|
|
14023
14082
|
text: "Open Source",
|
|
@@ -14071,7 +14130,7 @@ function SelectionSourceBadge({ source, hidden = false }) {
|
|
|
14071
14130
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
14072
14131
|
VendorTag,
|
|
14073
14132
|
{
|
|
14074
|
-
type: _optionalChain([source, 'optionalAccess',
|
|
14133
|
+
type: _optionalChain([source, 'optionalAccess', _409 => _409.toLowerCase, 'call', _410 => _410()]),
|
|
14075
14134
|
size: "sm",
|
|
14076
14135
|
hidden
|
|
14077
14136
|
},
|
|
@@ -16191,12 +16250,12 @@ function OnboardingWalkthrough({
|
|
|
16191
16250
|
}
|
|
16192
16251
|
}, [state.completedSteps, markComplete]);
|
|
16193
16252
|
const handleStepSkip = (step) => {
|
|
16194
|
-
_optionalChain([step, 'access',
|
|
16253
|
+
_optionalChain([step, 'access', _411 => _411.onSkip, 'optionalCall', _412 => _412()]);
|
|
16195
16254
|
markSkipped(step.id);
|
|
16196
16255
|
};
|
|
16197
16256
|
const handleDismiss = () => {
|
|
16198
16257
|
dismissOnboarding();
|
|
16199
|
-
_optionalChain([onDismiss, 'optionalCall',
|
|
16258
|
+
_optionalChain([onDismiss, 'optionalCall', _413 => _413()]);
|
|
16200
16259
|
};
|
|
16201
16260
|
if (state.dismissed) {
|
|
16202
16261
|
return null;
|
|
@@ -16615,810 +16674,6 @@ function ImageGalleryModal({
|
|
|
16615
16674
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
16616
16675
|
|
|
16617
16676
|
|
|
16618
|
-
// src/components/features/youtube-embed.tsx
|
|
16619
|
-
|
|
16620
|
-
|
|
16621
|
-
var YouTubeEmbed = ({
|
|
16622
|
-
videoId,
|
|
16623
|
-
title = "YouTube Video",
|
|
16624
|
-
className = "",
|
|
16625
|
-
showTitle = true,
|
|
16626
|
-
showMeta = true,
|
|
16627
|
-
minimalControls = false,
|
|
16628
|
-
aboveTheFold = false
|
|
16629
|
-
}) => {
|
|
16630
|
-
const [activated, setActivated] = _react.useState.call(void 0, false);
|
|
16631
|
-
const iframeSlotRef = _react.useRef.call(void 0, null);
|
|
16632
|
-
const embedParams = new URLSearchParams({ autoplay: "1", rel: "0", modestbranding: "1", playsinline: "1" });
|
|
16633
|
-
if (minimalControls) {
|
|
16634
|
-
embedParams.set("controls", "0");
|
|
16635
|
-
embedParams.set("showinfo", "0");
|
|
16636
|
-
embedParams.set("fs", "0");
|
|
16637
|
-
embedParams.set("iv_load_policy", "3");
|
|
16638
|
-
embedParams.set("cc_load_policy", "0");
|
|
16639
|
-
embedParams.set("disablekb", "1");
|
|
16640
|
-
}
|
|
16641
|
-
const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?${embedParams.toString()}`;
|
|
16642
|
-
const watchUrl = `https://www.youtube.com/watch?v=${videoId}`;
|
|
16643
|
-
const posterJpg = `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
|
|
16644
|
-
const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/mqdefault.webp`;
|
|
16645
|
-
const handleActivate = () => {
|
|
16646
|
-
const slot = iframeSlotRef.current;
|
|
16647
|
-
if (!slot || activated) return;
|
|
16648
|
-
const iframe = document.createElement("iframe");
|
|
16649
|
-
iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share");
|
|
16650
|
-
iframe.setAttribute("allowfullscreen", "");
|
|
16651
|
-
iframe.setAttribute("title", title);
|
|
16652
|
-
iframe.className = "absolute inset-0 w-full h-full border-0";
|
|
16653
|
-
iframe.src = embedUrl;
|
|
16654
|
-
slot.appendChild(iframe);
|
|
16655
|
-
setActivated(true);
|
|
16656
|
-
};
|
|
16657
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `youtube-embed-container my-6 ${className}`, children: [
|
|
16658
|
-
title && showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-title font-sans text-lg font-medium text-ods-text-primary mb-3", children: title }),
|
|
16659
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-wrapper relative w-full", style: { paddingBottom: "56.25%" }, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 rounded-lg overflow-hidden border border-ods-border bg-ods-card", children: [
|
|
16660
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: iframeSlotRef, className: "absolute inset-0", "aria-hidden": !activated }),
|
|
16661
|
-
!activated && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
16662
|
-
"button",
|
|
16663
|
-
{
|
|
16664
|
-
type: "button",
|
|
16665
|
-
"aria-label": `Play: ${title}`,
|
|
16666
|
-
onClick: handleActivate,
|
|
16667
|
-
className: "group absolute inset-0 p-0 m-0 border-0 cursor-pointer bg-transparent",
|
|
16668
|
-
children: [
|
|
16669
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
|
|
16670
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
|
|
16671
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16672
|
-
"img",
|
|
16673
|
-
{
|
|
16674
|
-
src: posterJpg,
|
|
16675
|
-
alt: title,
|
|
16676
|
-
loading: "lazy",
|
|
16677
|
-
fetchPriority: aboveTheFold ? "high" : "low",
|
|
16678
|
-
decoding: aboveTheFold ? "sync" : "async",
|
|
16679
|
-
className: "absolute inset-0 w-full h-full object-cover"
|
|
16680
|
-
}
|
|
16681
|
-
)
|
|
16682
|
-
] }),
|
|
16683
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent text-ods-text-on-accent shadow-lg transition-transform duration-200 group-hover:scale-110", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", className: "ml-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "5,3 19,12 5,21" }) }) }) })
|
|
16684
|
-
]
|
|
16685
|
-
}
|
|
16686
|
-
)
|
|
16687
|
-
] }) }),
|
|
16688
|
-
showMeta && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "video-meta flex items-center justify-between mt-3 text-sm text-ods-text-secondary", children: [
|
|
16689
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-platform font-sans", children: "YouTube" }),
|
|
16690
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16691
|
-
"a",
|
|
16692
|
-
{
|
|
16693
|
-
href: watchUrl,
|
|
16694
|
-
target: "_blank",
|
|
16695
|
-
rel: "noopener noreferrer",
|
|
16696
|
-
className: "video-link font-sans text-ods-accent hover:text-ods-accent-hover transition-colors duration-200",
|
|
16697
|
-
children: "Watch on YouTube \u2192"
|
|
16698
|
-
}
|
|
16699
|
-
)
|
|
16700
|
-
] })
|
|
16701
|
-
] });
|
|
16702
|
-
};
|
|
16703
|
-
var YT_HOSTS = /* @__PURE__ */ new Set([
|
|
16704
|
-
"youtube.com",
|
|
16705
|
-
"www.youtube.com",
|
|
16706
|
-
"m.youtube.com",
|
|
16707
|
-
"youtu.be",
|
|
16708
|
-
"youtube-nocookie.com",
|
|
16709
|
-
"www.youtube-nocookie.com"
|
|
16710
|
-
]);
|
|
16711
|
-
var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
|
|
16712
|
-
var extractYouTubeId = (url) => {
|
|
16713
|
-
let u;
|
|
16714
|
-
try {
|
|
16715
|
-
u = new URL(url);
|
|
16716
|
-
} catch (e22) {
|
|
16717
|
-
return null;
|
|
16718
|
-
}
|
|
16719
|
-
if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
|
|
16720
|
-
if (u.hostname.toLowerCase().endsWith("youtu.be")) {
|
|
16721
|
-
return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
|
|
16722
|
-
}
|
|
16723
|
-
const v = u.searchParams.get("v");
|
|
16724
|
-
if (v) return v;
|
|
16725
|
-
const m = u.pathname.match(YT_PATH_RE);
|
|
16726
|
-
return m ? m[1] : null;
|
|
16727
|
-
};
|
|
16728
|
-
|
|
16729
|
-
// src/components/features/video-player.tsx
|
|
16730
|
-
|
|
16731
|
-
var _reactplayer = require('react-player'); var _reactplayer2 = _interopRequireDefault(_reactplayer);
|
|
16732
|
-
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
16733
|
-
|
|
16734
|
-
var webkitCaptionCSSInjected = false;
|
|
16735
|
-
function ensureWebkitCaptionCSS() {
|
|
16736
|
-
if (webkitCaptionCSSInjected || typeof document === "undefined") return;
|
|
16737
|
-
const style = document.createElement("style");
|
|
16738
|
-
style.textContent = `
|
|
16739
|
-
video::-webkit-media-text-track-container {
|
|
16740
|
-
display: block !important;
|
|
16741
|
-
visibility: visible !important;
|
|
16742
|
-
overflow: visible !important;
|
|
16743
|
-
}
|
|
16744
|
-
video::-webkit-media-text-track-display {
|
|
16745
|
-
white-space: pre-line;
|
|
16746
|
-
}
|
|
16747
|
-
`;
|
|
16748
|
-
document.head.appendChild(style);
|
|
16749
|
-
webkitCaptionCSSInjected = true;
|
|
16750
|
-
}
|
|
16751
|
-
function parseSrt(srt) {
|
|
16752
|
-
const cues = [];
|
|
16753
|
-
const blocks = srt.replace(/\r\n/g, "\n").trim().split(/\n\n+/);
|
|
16754
|
-
for (const block of blocks) {
|
|
16755
|
-
const lines = block.split("\n");
|
|
16756
|
-
const tsIndex = lines.findIndex((l) => l.includes(" --> "));
|
|
16757
|
-
if (tsIndex === -1) continue;
|
|
16758
|
-
const [startStr, endStr] = lines[tsIndex].split(" --> ");
|
|
16759
|
-
const from = parseSrtTimestamp(_optionalChain([startStr, 'optionalAccess', _433 => _433.trim, 'call', _434 => _434()]));
|
|
16760
|
-
const to = parseSrtTimestamp(_optionalChain([endStr, 'optionalAccess', _435 => _435.trim, 'call', _436 => _436()]));
|
|
16761
|
-
if (from === null || to === null) continue;
|
|
16762
|
-
const text = lines.slice(tsIndex + 1).join("\n").trim();
|
|
16763
|
-
if (text) cues.push({ from, to, text });
|
|
16764
|
-
}
|
|
16765
|
-
return cues;
|
|
16766
|
-
}
|
|
16767
|
-
function parseSrtTimestamp(ts) {
|
|
16768
|
-
if (!ts) return null;
|
|
16769
|
-
const match = ts.match(/(\d{2}):(\d{2}):(\d{2})[,.](\d{3})/);
|
|
16770
|
-
if (!match) return null;
|
|
16771
|
-
return parseInt(match[1]) * 36e5 + parseInt(match[2]) * 6e4 + parseInt(match[3]) * 1e3 + parseInt(match[4]);
|
|
16772
|
-
}
|
|
16773
|
-
function useSubtitleOverlay(srtContent) {
|
|
16774
|
-
const cues = _react.useMemo.call(void 0, () => srtContent ? parseSrt(srtContent) : [], [srtContent]);
|
|
16775
|
-
const [activeText, setActiveText] = _react.useState.call(void 0, null);
|
|
16776
|
-
const updateTime = _react.useCallback.call(void 0, (playedSeconds) => {
|
|
16777
|
-
const timeMs = playedSeconds * 1e3;
|
|
16778
|
-
const active = cues.find((c) => timeMs >= c.from && timeMs <= c.to);
|
|
16779
|
-
setActiveText(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _437 => _437.text]), () => ( null)));
|
|
16780
|
-
}, [cues]);
|
|
16781
|
-
return { activeText, updateTime, hasCues: cues.length > 0 };
|
|
16782
|
-
}
|
|
16783
|
-
var SPEED_OPTIONS = [0.5, 0.75, 1, 1.25, 1.5, 2];
|
|
16784
|
-
function formatTime(secs) {
|
|
16785
|
-
if (!secs || !isFinite(secs)) return "0:00";
|
|
16786
|
-
const h = Math.floor(secs / 3600);
|
|
16787
|
-
const m = Math.floor(secs % 3600 / 60);
|
|
16788
|
-
const s = Math.floor(secs % 60);
|
|
16789
|
-
if (h > 0) return `${h}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`;
|
|
16790
|
-
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
16791
|
-
}
|
|
16792
|
-
var VideoPlayer = ({
|
|
16793
|
-
url,
|
|
16794
|
-
title,
|
|
16795
|
-
poster,
|
|
16796
|
-
className = "",
|
|
16797
|
-
showTitle = false,
|
|
16798
|
-
autoPlay = false,
|
|
16799
|
-
loop = false,
|
|
16800
|
-
muted = false,
|
|
16801
|
-
useNativeAspectRatio = false,
|
|
16802
|
-
srtContent,
|
|
16803
|
-
captionsUrl,
|
|
16804
|
-
subtitleLabel,
|
|
16805
|
-
preloadStrategy = "metadata"
|
|
16806
|
-
}) => {
|
|
16807
|
-
const [hasError, setHasError] = _react.useState.call(void 0, false);
|
|
16808
|
-
const [isPlaying, setIsPlaying] = _react.useState.call(void 0, autoPlay);
|
|
16809
|
-
const [mounted, setMounted] = _react.useState.call(void 0, false);
|
|
16810
|
-
const [hasStarted, setHasStarted] = _react.useState.call(void 0, autoPlay);
|
|
16811
|
-
const playerRef = _react.useRef.call(void 0, null);
|
|
16812
|
-
const containerRef = _react.useRef.call(void 0, null);
|
|
16813
|
-
const [played, setPlayed] = _react.useState.call(void 0, 0);
|
|
16814
|
-
const [loaded, setLoaded] = _react.useState.call(void 0, 0);
|
|
16815
|
-
const [duration, setDuration] = _react.useState.call(void 0, 0);
|
|
16816
|
-
const [volume, setVolume] = _react.useState.call(void 0, 0.8);
|
|
16817
|
-
const [prevVolume, setPrevVolume] = _react.useState.call(void 0, 0.8);
|
|
16818
|
-
const [isMuted, setIsMuted] = _react.useState.call(void 0, muted);
|
|
16819
|
-
const [isBuffering, setIsBuffering] = _react.useState.call(void 0, false);
|
|
16820
|
-
const [showControls, setShowControls] = _react.useState.call(void 0, true);
|
|
16821
|
-
const hideTimeoutRef = _react.useRef.call(void 0, void 0);
|
|
16822
|
-
const clickTimerRef = _react.useRef.call(void 0, void 0);
|
|
16823
|
-
const iosFullscreenTimerRef = _react.useRef.call(void 0, void 0);
|
|
16824
|
-
const [captionsEnabled, setCaptionsEnabled] = _react.useState.call(void 0, true);
|
|
16825
|
-
const [isFullscreen, setIsFullscreen] = _react.useState.call(void 0, false);
|
|
16826
|
-
const { activeText, updateTime, hasCues } = useSubtitleOverlay(srtContent);
|
|
16827
|
-
_react.useEffect.call(void 0, () => {
|
|
16828
|
-
const onChange = () => {
|
|
16829
|
-
const fsEl = document.fullscreenElement || document.webkitFullscreenElement;
|
|
16830
|
-
setIsFullscreen(!!fsEl);
|
|
16831
|
-
};
|
|
16832
|
-
document.addEventListener("fullscreenchange", onChange);
|
|
16833
|
-
document.addEventListener("webkitfullscreenchange", onChange);
|
|
16834
|
-
return () => {
|
|
16835
|
-
document.removeEventListener("fullscreenchange", onChange);
|
|
16836
|
-
document.removeEventListener("webkitfullscreenchange", onChange);
|
|
16837
|
-
};
|
|
16838
|
-
}, []);
|
|
16839
|
-
const activateCaptionTracks = _react.useCallback.call(void 0, (video) => {
|
|
16840
|
-
for (let i = 0; i < video.textTracks.length; i++) {
|
|
16841
|
-
if (video.textTracks[i].kind === "captions" || video.textTracks[i].kind === "subtitles") {
|
|
16842
|
-
video.textTracks[i].mode = "showing";
|
|
16843
|
-
}
|
|
16844
|
-
}
|
|
16845
|
-
}, []);
|
|
16846
|
-
const enterNativeVideoFullscreen = _react.useCallback.call(void 0, () => {
|
|
16847
|
-
const video = _optionalChain([playerRef, 'access', _438 => _438.current, 'optionalAccess', _439 => _439.getInternalPlayer, 'call', _440 => _440()]);
|
|
16848
|
-
if (!video || !video.webkitEnterFullscreen) return;
|
|
16849
|
-
ensureWebkitCaptionCSS();
|
|
16850
|
-
const trackSrc = captionsUrl || null;
|
|
16851
|
-
if (!trackSrc) {
|
|
16852
|
-
try {
|
|
16853
|
-
video.webkitEnterFullscreen();
|
|
16854
|
-
} catch (e23) {
|
|
16855
|
-
}
|
|
16856
|
-
return;
|
|
16857
|
-
}
|
|
16858
|
-
const old = video.querySelector("track[data-native-cc]");
|
|
16859
|
-
if (old) old.remove();
|
|
16860
|
-
clearTimeout(iosFullscreenTimerRef.current);
|
|
16861
|
-
const track = document.createElement("track");
|
|
16862
|
-
track.kind = "captions";
|
|
16863
|
-
track.label = subtitleLabel || "English";
|
|
16864
|
-
track.srclang = "en";
|
|
16865
|
-
track.default = true;
|
|
16866
|
-
track.setAttribute("data-native-cc", "true");
|
|
16867
|
-
video.appendChild(track);
|
|
16868
|
-
track.src = trackSrc;
|
|
16869
|
-
let entered = false;
|
|
16870
|
-
const doFullscreen = () => {
|
|
16871
|
-
if (entered) return;
|
|
16872
|
-
entered = true;
|
|
16873
|
-
activateCaptionTracks(video);
|
|
16874
|
-
try {
|
|
16875
|
-
video.webkitEnterFullscreen();
|
|
16876
|
-
} catch (e24) {
|
|
16877
|
-
}
|
|
16878
|
-
};
|
|
16879
|
-
track.addEventListener("load", doFullscreen, { once: true });
|
|
16880
|
-
iosFullscreenTimerRef.current = setTimeout(() => {
|
|
16881
|
-
track.removeEventListener("load", doFullscreen);
|
|
16882
|
-
doFullscreen();
|
|
16883
|
-
}, 500);
|
|
16884
|
-
}, [captionsUrl, subtitleLabel, activateCaptionTracks]);
|
|
16885
|
-
const toggleFullscreen = _react.useCallback.call(void 0, () => {
|
|
16886
|
-
const container = containerRef.current;
|
|
16887
|
-
if (!container) return;
|
|
16888
|
-
if (isFullscreen) {
|
|
16889
|
-
try {
|
|
16890
|
-
if (document.exitFullscreen) document.exitFullscreen();
|
|
16891
|
-
else if (document.webkitExitFullscreen) document.webkitExitFullscreen();
|
|
16892
|
-
} catch (e25) {
|
|
16893
|
-
}
|
|
16894
|
-
return;
|
|
16895
|
-
}
|
|
16896
|
-
if (container.requestFullscreen) {
|
|
16897
|
-
container.requestFullscreen().catch(() => enterNativeVideoFullscreen());
|
|
16898
|
-
} else if (container.webkitRequestFullscreen) {
|
|
16899
|
-
container.webkitRequestFullscreen();
|
|
16900
|
-
} else {
|
|
16901
|
-
enterNativeVideoFullscreen();
|
|
16902
|
-
}
|
|
16903
|
-
}, [isFullscreen, enterNativeVideoFullscreen]);
|
|
16904
|
-
const toggleMute = _react.useCallback.call(void 0, () => {
|
|
16905
|
-
if (isMuted) {
|
|
16906
|
-
setIsMuted(false);
|
|
16907
|
-
setVolume(prevVolume || 0.5);
|
|
16908
|
-
} else {
|
|
16909
|
-
setPrevVolume(volume);
|
|
16910
|
-
setIsMuted(true);
|
|
16911
|
-
setVolume(0);
|
|
16912
|
-
}
|
|
16913
|
-
}, [isMuted, volume, prevVolume]);
|
|
16914
|
-
const handleVolumeChange = _react.useCallback.call(void 0, (e) => {
|
|
16915
|
-
const val = parseFloat(e.target.value);
|
|
16916
|
-
setVolume(val);
|
|
16917
|
-
setIsMuted(val === 0);
|
|
16918
|
-
if (val > 0) setPrevVolume(val);
|
|
16919
|
-
}, []);
|
|
16920
|
-
const startHideTimer = _react.useCallback.call(void 0, () => {
|
|
16921
|
-
clearTimeout(hideTimeoutRef.current);
|
|
16922
|
-
if (isPlaying) {
|
|
16923
|
-
hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
|
|
16924
|
-
}
|
|
16925
|
-
}, [isPlaying]);
|
|
16926
|
-
const handleMouseMove = _react.useCallback.call(void 0, () => {
|
|
16927
|
-
setShowControls(true);
|
|
16928
|
-
startHideTimer();
|
|
16929
|
-
}, [startHideTimer]);
|
|
16930
|
-
const handleTouchToggle = _react.useCallback.call(void 0, () => {
|
|
16931
|
-
if (!hasStarted) return;
|
|
16932
|
-
setShowControls((prev) => {
|
|
16933
|
-
const next = !prev;
|
|
16934
|
-
clearTimeout(hideTimeoutRef.current);
|
|
16935
|
-
if (next && isPlaying) {
|
|
16936
|
-
hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
|
|
16937
|
-
}
|
|
16938
|
-
return next;
|
|
16939
|
-
});
|
|
16940
|
-
}, [hasStarted, isPlaying]);
|
|
16941
|
-
_react.useEffect.call(void 0, () => {
|
|
16942
|
-
if (!hasStarted) return;
|
|
16943
|
-
const el = containerRef.current;
|
|
16944
|
-
if (!el) return;
|
|
16945
|
-
const onKey = (e) => {
|
|
16946
|
-
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
|
|
16947
|
-
switch (e.key) {
|
|
16948
|
-
case " ":
|
|
16949
|
-
case "k":
|
|
16950
|
-
e.preventDefault();
|
|
16951
|
-
setIsPlaying((prev) => !prev);
|
|
16952
|
-
break;
|
|
16953
|
-
case "ArrowLeft":
|
|
16954
|
-
e.preventDefault();
|
|
16955
|
-
_optionalChain([playerRef, 'access', _441 => _441.current, 'optionalAccess', _442 => _442.seekTo, 'call', _443 => _443(Math.max(0, (_nullishCoalesce(_optionalChain([playerRef, 'access', _444 => _444.current, 'optionalAccess', _445 => _445.getCurrentTime, 'call', _446 => _446()]), () => ( 0))) - 5), "seconds")]);
|
|
16956
|
-
break;
|
|
16957
|
-
case "ArrowRight":
|
|
16958
|
-
e.preventDefault();
|
|
16959
|
-
_optionalChain([playerRef, 'access', _447 => _447.current, 'optionalAccess', _448 => _448.seekTo, 'call', _449 => _449(Math.min(duration, (_nullishCoalesce(_optionalChain([playerRef, 'access', _450 => _450.current, 'optionalAccess', _451 => _451.getCurrentTime, 'call', _452 => _452()]), () => ( 0))) + 5), "seconds")]);
|
|
16960
|
-
break;
|
|
16961
|
-
case "ArrowUp":
|
|
16962
|
-
e.preventDefault();
|
|
16963
|
-
setVolume((v) => {
|
|
16964
|
-
const nv = Math.min(1, v + 0.1);
|
|
16965
|
-
setIsMuted(false);
|
|
16966
|
-
return nv;
|
|
16967
|
-
});
|
|
16968
|
-
break;
|
|
16969
|
-
case "ArrowDown":
|
|
16970
|
-
e.preventDefault();
|
|
16971
|
-
setVolume((v) => {
|
|
16972
|
-
const nv = Math.max(0, v - 0.1);
|
|
16973
|
-
if (nv === 0) setIsMuted(true);
|
|
16974
|
-
return nv;
|
|
16975
|
-
});
|
|
16976
|
-
break;
|
|
16977
|
-
case "m":
|
|
16978
|
-
case "M":
|
|
16979
|
-
e.preventDefault();
|
|
16980
|
-
toggleMute();
|
|
16981
|
-
break;
|
|
16982
|
-
case "f":
|
|
16983
|
-
case "F":
|
|
16984
|
-
e.preventDefault();
|
|
16985
|
-
toggleFullscreen();
|
|
16986
|
-
break;
|
|
16987
|
-
case "c":
|
|
16988
|
-
case "C":
|
|
16989
|
-
e.preventDefault();
|
|
16990
|
-
setCaptionsEnabled((prev) => !prev);
|
|
16991
|
-
break;
|
|
16992
|
-
}
|
|
16993
|
-
};
|
|
16994
|
-
el.addEventListener("keydown", onKey);
|
|
16995
|
-
return () => el.removeEventListener("keydown", onKey);
|
|
16996
|
-
}, [hasStarted, duration, toggleMute, toggleFullscreen]);
|
|
16997
|
-
const [seekPreview, setSeekPreview] = _react.useState.call(void 0, null);
|
|
16998
|
-
const [playbackRate, setPlaybackRate] = _react.useState.call(void 0, 1);
|
|
16999
|
-
const cycleSpeed = _react.useCallback.call(void 0, () => {
|
|
17000
|
-
setPlaybackRate((prev) => {
|
|
17001
|
-
const idx = SPEED_OPTIONS.indexOf(prev);
|
|
17002
|
-
return SPEED_OPTIONS[(idx + 1) % SPEED_OPTIONS.length];
|
|
17003
|
-
});
|
|
17004
|
-
}, []);
|
|
17005
|
-
const progressBarRef = _react.useRef.call(void 0, null);
|
|
17006
|
-
const isDraggingRef = _react.useRef.call(void 0, false);
|
|
17007
|
-
const dragListenersRef = _react.useRef.call(void 0, null);
|
|
17008
|
-
const seekToClientX = _react.useCallback.call(void 0, (clientX) => {
|
|
17009
|
-
const rect = _optionalChain([progressBarRef, 'access', _453 => _453.current, 'optionalAccess', _454 => _454.getBoundingClientRect, 'call', _455 => _455()]);
|
|
17010
|
-
if (!rect) return;
|
|
17011
|
-
const fraction = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
|
|
17012
|
-
setPlayed(fraction);
|
|
17013
|
-
_optionalChain([playerRef, 'access', _456 => _456.current, 'optionalAccess', _457 => _457.seekTo, 'call', _458 => _458(fraction, "fraction")]);
|
|
17014
|
-
}, []);
|
|
17015
|
-
const handleProgressMouseDown = _react.useCallback.call(void 0, (e) => {
|
|
17016
|
-
e.stopPropagation();
|
|
17017
|
-
e.preventDefault();
|
|
17018
|
-
isDraggingRef.current = true;
|
|
17019
|
-
seekToClientX(e.clientX);
|
|
17020
|
-
if (dragListenersRef.current) {
|
|
17021
|
-
document.removeEventListener("mousemove", dragListenersRef.current.move);
|
|
17022
|
-
document.removeEventListener("mouseup", dragListenersRef.current.up);
|
|
17023
|
-
}
|
|
17024
|
-
const onMouseMove = (ev) => {
|
|
17025
|
-
if (!isDraggingRef.current) return;
|
|
17026
|
-
seekToClientX(ev.clientX);
|
|
17027
|
-
};
|
|
17028
|
-
const onMouseUp = () => {
|
|
17029
|
-
isDraggingRef.current = false;
|
|
17030
|
-
document.removeEventListener("mousemove", onMouseMove);
|
|
17031
|
-
document.removeEventListener("mouseup", onMouseUp);
|
|
17032
|
-
dragListenersRef.current = null;
|
|
17033
|
-
};
|
|
17034
|
-
dragListenersRef.current = { move: onMouseMove, up: onMouseUp };
|
|
17035
|
-
document.addEventListener("mousemove", onMouseMove);
|
|
17036
|
-
document.addEventListener("mouseup", onMouseUp);
|
|
17037
|
-
}, [seekToClientX]);
|
|
17038
|
-
const handleProgressTouchStart = _react.useCallback.call(void 0, (e) => {
|
|
17039
|
-
e.stopPropagation();
|
|
17040
|
-
const touch = e.touches[0];
|
|
17041
|
-
if (touch) seekToClientX(touch.clientX);
|
|
17042
|
-
}, [seekToClientX]);
|
|
17043
|
-
const handleProgressTouchMove = _react.useCallback.call(void 0, (e) => {
|
|
17044
|
-
e.stopPropagation();
|
|
17045
|
-
const touch = e.touches[0];
|
|
17046
|
-
if (touch) seekToClientX(touch.clientX);
|
|
17047
|
-
}, [seekToClientX]);
|
|
17048
|
-
const handleProgressKeyDown = _react.useCallback.call(void 0, (e) => {
|
|
17049
|
-
if (e.key === "ArrowRight") {
|
|
17050
|
-
e.preventDefault();
|
|
17051
|
-
e.stopPropagation();
|
|
17052
|
-
_optionalChain([playerRef, 'access', _459 => _459.current, 'optionalAccess', _460 => _460.seekTo, 'call', _461 => _461(Math.min(duration, (_nullishCoalesce(_optionalChain([playerRef, 'access', _462 => _462.current, 'optionalAccess', _463 => _463.getCurrentTime, 'call', _464 => _464()]), () => ( 0))) + 5), "seconds")]);
|
|
17053
|
-
}
|
|
17054
|
-
if (e.key === "ArrowLeft") {
|
|
17055
|
-
e.preventDefault();
|
|
17056
|
-
e.stopPropagation();
|
|
17057
|
-
_optionalChain([playerRef, 'access', _465 => _465.current, 'optionalAccess', _466 => _466.seekTo, 'call', _467 => _467(Math.max(0, (_nullishCoalesce(_optionalChain([playerRef, 'access', _468 => _468.current, 'optionalAccess', _469 => _469.getCurrentTime, 'call', _470 => _470()]), () => ( 0))) - 5), "seconds")]);
|
|
17058
|
-
}
|
|
17059
|
-
if (e.key === "Home") {
|
|
17060
|
-
e.preventDefault();
|
|
17061
|
-
e.stopPropagation();
|
|
17062
|
-
_optionalChain([playerRef, 'access', _471 => _471.current, 'optionalAccess', _472 => _472.seekTo, 'call', _473 => _473(0, "seconds")]);
|
|
17063
|
-
}
|
|
17064
|
-
if (e.key === "End") {
|
|
17065
|
-
e.preventDefault();
|
|
17066
|
-
e.stopPropagation();
|
|
17067
|
-
_optionalChain([playerRef, 'access', _474 => _474.current, 'optionalAccess', _475 => _475.seekTo, 'call', _476 => _476(duration, "seconds")]);
|
|
17068
|
-
}
|
|
17069
|
-
}, [duration]);
|
|
17070
|
-
const handleProgressHover = _react.useCallback.call(void 0, (e) => {
|
|
17071
|
-
if (isDraggingRef.current) return;
|
|
17072
|
-
const rect = e.currentTarget.getBoundingClientRect();
|
|
17073
|
-
const fraction = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
|
|
17074
|
-
const x = Math.max(30, Math.min(rect.width - 30, e.clientX - rect.left));
|
|
17075
|
-
setSeekPreview({ fraction, x });
|
|
17076
|
-
}, []);
|
|
17077
|
-
const isTouchRef = _react.useRef.call(void 0, false);
|
|
17078
|
-
const handleContainerClick = _react.useCallback.call(void 0, (e) => {
|
|
17079
|
-
if (isTouchRef.current) {
|
|
17080
|
-
isTouchRef.current = false;
|
|
17081
|
-
return;
|
|
17082
|
-
}
|
|
17083
|
-
if (e.target.closest(".video-controls-bar")) return;
|
|
17084
|
-
if (!hasStarted) return;
|
|
17085
|
-
if (clickTimerRef.current) {
|
|
17086
|
-
clearTimeout(clickTimerRef.current);
|
|
17087
|
-
clickTimerRef.current = void 0;
|
|
17088
|
-
toggleFullscreen();
|
|
17089
|
-
} else {
|
|
17090
|
-
clickTimerRef.current = setTimeout(() => {
|
|
17091
|
-
clickTimerRef.current = void 0;
|
|
17092
|
-
setIsPlaying((prev) => !prev);
|
|
17093
|
-
}, 250);
|
|
17094
|
-
}
|
|
17095
|
-
}, [hasStarted, toggleFullscreen]);
|
|
17096
|
-
const handleContainerTouchEnd = _react.useCallback.call(void 0, (e) => {
|
|
17097
|
-
if (e.target.closest(".video-controls-bar")) return;
|
|
17098
|
-
isTouchRef.current = true;
|
|
17099
|
-
if (!hasStarted) return;
|
|
17100
|
-
handleTouchToggle();
|
|
17101
|
-
}, [hasStarted, handleTouchToggle]);
|
|
17102
|
-
const effectivePoster = poster || void 0;
|
|
17103
|
-
const posterBgColor = _chunkALW3D72Ocjs.useImageEdgeColor.call(void 0, effectivePoster);
|
|
17104
|
-
_react.useEffect.call(void 0, () => {
|
|
17105
|
-
setMounted(true);
|
|
17106
|
-
return () => {
|
|
17107
|
-
clearTimeout(clickTimerRef.current);
|
|
17108
|
-
clearTimeout(hideTimeoutRef.current);
|
|
17109
|
-
clearTimeout(iosFullscreenTimerRef.current);
|
|
17110
|
-
isDraggingRef.current = false;
|
|
17111
|
-
if (dragListenersRef.current) {
|
|
17112
|
-
document.removeEventListener("mousemove", dragListenersRef.current.move);
|
|
17113
|
-
document.removeEventListener("mouseup", dragListenersRef.current.up);
|
|
17114
|
-
dragListenersRef.current = null;
|
|
17115
|
-
}
|
|
17116
|
-
};
|
|
17117
|
-
}, []);
|
|
17118
|
-
_react.useEffect.call(void 0, () => {
|
|
17119
|
-
if (!hasStarted) return;
|
|
17120
|
-
const video = _optionalChain([playerRef, 'access', _477 => _477.current, 'optionalAccess', _478 => _478.getInternalPlayer, 'call', _479 => _479()]);
|
|
17121
|
-
if (!video) return;
|
|
17122
|
-
const onBeginFS = () => activateCaptionTracks(video);
|
|
17123
|
-
video.addEventListener("webkitbeginfullscreen", onBeginFS);
|
|
17124
|
-
return () => video.removeEventListener("webkitbeginfullscreen", onBeginFS);
|
|
17125
|
-
}, [hasStarted, activateCaptionTracks]);
|
|
17126
|
-
const handleError = _react.useCallback.call(void 0, () => setHasError(true), []);
|
|
17127
|
-
const handlePlay = _react.useCallback.call(void 0, () => {
|
|
17128
|
-
setIsPlaying(true);
|
|
17129
|
-
setHasStarted(true);
|
|
17130
|
-
}, []);
|
|
17131
|
-
const handlePause = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
|
|
17132
|
-
const handleEnded = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
|
|
17133
|
-
const handlePlayClick = _react.useCallback.call(void 0, () => {
|
|
17134
|
-
const native = _optionalChain([playerRef, 'access', _480 => _480.current, 'optionalAccess', _481 => _481.getInternalPlayer, 'call', _482 => _482()]);
|
|
17135
|
-
if (native instanceof HTMLVideoElement) {
|
|
17136
|
-
native.play().catch(() => {
|
|
17137
|
-
});
|
|
17138
|
-
} else if (process.env.NODE_ENV !== "production") {
|
|
17139
|
-
console.warn("[VideoPlayer] sync play(): no native HTMLVideoElement yet");
|
|
17140
|
-
}
|
|
17141
|
-
setHasStarted(true);
|
|
17142
|
-
setIsPlaying(true);
|
|
17143
|
-
}, []);
|
|
17144
|
-
const handleProgress = _react.useCallback.call(void 0, ({ played: p, loaded: l, playedSeconds }) => {
|
|
17145
|
-
setPlayed(p);
|
|
17146
|
-
setLoaded(l);
|
|
17147
|
-
updateTime(playedSeconds);
|
|
17148
|
-
}, [updateTime]);
|
|
17149
|
-
const handleBuffer = _react.useCallback.call(void 0, () => setIsBuffering(true), []);
|
|
17150
|
-
const handleBufferEnd = _react.useCallback.call(void 0, () => setIsBuffering(false), []);
|
|
17151
|
-
if (!mounted) {
|
|
17152
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `video-player-container ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17153
|
-
"div",
|
|
17154
|
-
{
|
|
17155
|
-
className: "video-wrapper relative w-full",
|
|
17156
|
-
style: useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
|
|
17157
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: useNativeAspectRatio ? "bg-black rounded-md flex items-center justify-center min-h-[200px]" : "absolute inset-0 bg-black rounded-md flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 rounded-full bg-ods-accent flex items-center justify-center shadow-lg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 24, className: "ml-1 text-ods-text-on-accent" }) }) })
|
|
17158
|
-
}
|
|
17159
|
-
) });
|
|
17160
|
-
}
|
|
17161
|
-
if (hasError) {
|
|
17162
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `video-player-error ${className}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "error-state bg-ods-card border border-ods-border rounded-md p-6 text-center", children: [
|
|
17163
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-icon flex justify-center mb-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.AlertCircleIcon, { size: 48, className: "text-ods-attention-red-error" }) }),
|
|
17164
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-title font-sans font-semibold text-lg text-ods-attention-red-error mb-2", children: "Video Unavailable" }),
|
|
17165
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-description font-sans text-sm text-ods-text-secondary mb-4", children: "Unable to load video. The video may be unavailable or the format is not supported." })
|
|
17166
|
-
] }) });
|
|
17167
|
-
}
|
|
17168
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `video-player-container ${className}`, children: [
|
|
17169
|
-
title && showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-title font-sans text-lg font-medium text-ods-text-primary mb-3", children: title }),
|
|
17170
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17171
|
-
"div",
|
|
17172
|
-
{
|
|
17173
|
-
ref: containerRef,
|
|
17174
|
-
tabIndex: 0,
|
|
17175
|
-
role: "region",
|
|
17176
|
-
"aria-label": title || "Video player",
|
|
17177
|
-
className: `video-wrapper relative w-full outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 focus-visible:ring-offset-black ${isFullscreen ? "bg-black" : ""} ${isFullscreen && !showControls && isPlaying ? "cursor-none" : ""}`,
|
|
17178
|
-
style: isFullscreen ? { width: "100%", height: "100%" } : useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
|
|
17179
|
-
onMouseMove: handleMouseMove,
|
|
17180
|
-
onMouseLeave: startHideTimer,
|
|
17181
|
-
onTouchEnd: handleContainerTouchEnd,
|
|
17182
|
-
onClick: handleContainerClick,
|
|
17183
|
-
children: [
|
|
17184
|
-
!hasStarted && !hasError && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 cursor-pointer group z-20", onClick: handlePlayClick, children: [
|
|
17185
|
-
effectivePoster && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17186
|
-
"img",
|
|
17187
|
-
{
|
|
17188
|
-
src: effectivePoster,
|
|
17189
|
-
alt: title || "Video thumbnail",
|
|
17190
|
-
className: "w-full h-full object-contain rounded-md",
|
|
17191
|
-
style: { backgroundColor: posterBgColor }
|
|
17192
|
-
}
|
|
17193
|
-
),
|
|
17194
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `absolute inset-0 ${effectivePoster ? "bg-black/40" : "bg-black/20"} group-hover:bg-black/50 transition-all flex items-center justify-center rounded-md`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 rounded-full bg-ods-accent hover:bg-ods-accent/90 transition-all flex items-center justify-center shadow-lg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 24, className: "ml-1 text-ods-text-on-accent" }) }) })
|
|
17195
|
-
] }),
|
|
17196
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: isFullscreen ? "video-player absolute inset-0" : useNativeAspectRatio ? "video-player rounded-md overflow-hidden border border-ods-border bg-ods-background" : "video-player absolute inset-0 rounded-md overflow-hidden border border-ods-border bg-ods-background", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17197
|
-
_reactplayer2.default,
|
|
17198
|
-
{
|
|
17199
|
-
ref: playerRef,
|
|
17200
|
-
url,
|
|
17201
|
-
width: "100%",
|
|
17202
|
-
height: "100%",
|
|
17203
|
-
controls: false,
|
|
17204
|
-
playing: isPlaying,
|
|
17205
|
-
playbackRate,
|
|
17206
|
-
loop,
|
|
17207
|
-
muted: isMuted,
|
|
17208
|
-
volume: isMuted ? 0 : volume,
|
|
17209
|
-
onError: handleError,
|
|
17210
|
-
onPlay: handlePlay,
|
|
17211
|
-
onPause: handlePause,
|
|
17212
|
-
onEnded: handleEnded,
|
|
17213
|
-
onDuration: setDuration,
|
|
17214
|
-
onBuffer: handleBuffer,
|
|
17215
|
-
onBufferEnd: handleBufferEnd,
|
|
17216
|
-
onProgress: handleProgress,
|
|
17217
|
-
progressInterval: 200,
|
|
17218
|
-
config: { file: { attributes: { controlsList: "nodownload", playsInline: true, preload: hasStarted ? "auto" : preloadStrategy } } },
|
|
17219
|
-
light: false,
|
|
17220
|
-
playsinline: true
|
|
17221
|
-
}
|
|
17222
|
-
) }),
|
|
17223
|
-
isBuffering && hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center z-20 pointer-events-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 border-4 border-white/30 border-t-white rounded-full animate-spin" }) }),
|
|
17224
|
-
captionsEnabled && activeText && hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17225
|
-
"div",
|
|
17226
|
-
{
|
|
17227
|
-
className: "absolute left-[5%] right-[5%] text-center pointer-events-none z-10 transition-[bottom] duration-300 ease-in-out",
|
|
17228
|
-
style: { bottom: showControls || !isPlaying ? 52 : 12 },
|
|
17229
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17230
|
-
"span",
|
|
17231
|
-
{
|
|
17232
|
-
className: "inline-block bg-black/80 text-white leading-relaxed px-4 py-1.5 rounded font-sans font-medium whitespace-pre-line",
|
|
17233
|
-
style: {
|
|
17234
|
-
fontSize: isFullscreen ? "clamp(20px, 3.3vh, 42px)" : "clamp(15px, 3.3cqw, 26px)",
|
|
17235
|
-
maxWidth: "90%",
|
|
17236
|
-
textShadow: "0 1px 4px rgba(0,0,0,0.6)",
|
|
17237
|
-
WebkitTextStroke: "0.3px rgba(0,0,0,0.3)"
|
|
17238
|
-
},
|
|
17239
|
-
children: activeText
|
|
17240
|
-
}
|
|
17241
|
-
)
|
|
17242
|
-
}
|
|
17243
|
-
),
|
|
17244
|
-
hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17245
|
-
"div",
|
|
17246
|
-
{
|
|
17247
|
-
className: `video-controls-bar absolute bottom-0 left-0 right-0 z-30 transition-opacity duration-300 ${showControls || !isPlaying ? "opacity-100" : "opacity-0 pointer-events-none"}`,
|
|
17248
|
-
onTouchEnd: (e) => {
|
|
17249
|
-
e.stopPropagation();
|
|
17250
|
-
startHideTimer();
|
|
17251
|
-
},
|
|
17252
|
-
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-gradient-to-t from-black/90 via-black/40 to-transparent pt-6 pb-1.5 px-2.5 rounded-b-md", children: [
|
|
17253
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17254
|
-
"div",
|
|
17255
|
-
{
|
|
17256
|
-
className: "group/seek relative w-full h-6 cursor-pointer mb-0.5 flex items-center",
|
|
17257
|
-
ref: progressBarRef,
|
|
17258
|
-
role: "slider",
|
|
17259
|
-
"aria-label": "Video progress",
|
|
17260
|
-
"aria-valuenow": Math.round(played * 100),
|
|
17261
|
-
"aria-valuetext": `${formatTime(played * duration)} of ${formatTime(duration)}`,
|
|
17262
|
-
"aria-valuemin": 0,
|
|
17263
|
-
"aria-valuemax": 100,
|
|
17264
|
-
tabIndex: 0,
|
|
17265
|
-
onMouseDown: handleProgressMouseDown,
|
|
17266
|
-
onTouchStart: handleProgressTouchStart,
|
|
17267
|
-
onTouchMove: handleProgressTouchMove,
|
|
17268
|
-
onTouchEnd: (e) => e.stopPropagation(),
|
|
17269
|
-
onMouseMove: handleProgressHover,
|
|
17270
|
-
onMouseLeave: () => setSeekPreview(null),
|
|
17271
|
-
onKeyDown: handleProgressKeyDown,
|
|
17272
|
-
children: [
|
|
17273
|
-
seekPreview && duration > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17274
|
-
"div",
|
|
17275
|
-
{
|
|
17276
|
-
className: "absolute -top-7 -translate-x-1/2 bg-black/90 text-white text-[11px] font-mono px-1.5 py-0.5 rounded pointer-events-none whitespace-nowrap z-10",
|
|
17277
|
-
style: { left: seekPreview.x },
|
|
17278
|
-
children: formatTime(seekPreview.fraction * duration)
|
|
17279
|
-
}
|
|
17280
|
-
),
|
|
17281
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute left-0 right-0 h-1 [@media(hover:hover)]:group-hover/seek:h-[5px] transition-all top-1/2 -translate-y-1/2", children: [
|
|
17282
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-white/20 rounded-full" }),
|
|
17283
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17284
|
-
"div",
|
|
17285
|
-
{
|
|
17286
|
-
className: "absolute inset-y-0 left-0 bg-white/40 rounded-full transition-all",
|
|
17287
|
-
style: { width: `${loaded * 100}%` }
|
|
17288
|
-
}
|
|
17289
|
-
),
|
|
17290
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17291
|
-
"div",
|
|
17292
|
-
{
|
|
17293
|
-
className: "absolute inset-y-0 left-0 bg-white rounded-full",
|
|
17294
|
-
style: { width: `${played * 100}%` }
|
|
17295
|
-
}
|
|
17296
|
-
)
|
|
17297
|
-
] }),
|
|
17298
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17299
|
-
"div",
|
|
17300
|
-
{
|
|
17301
|
-
className: "absolute top-1/2 -translate-y-1/2 w-3 h-3 bg-white rounded-full shadow-sm opacity-100 [@media(hover:hover)]:opacity-0 [@media(hover:hover)]:group-hover/seek:opacity-100 [@media(hover:hover)]:group-hover/seek:scale-110 transition-all",
|
|
17302
|
-
style: { left: `calc(${played * 100}% - 6px)` }
|
|
17303
|
-
}
|
|
17304
|
-
)
|
|
17305
|
-
]
|
|
17306
|
-
}
|
|
17307
|
-
),
|
|
17308
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between h-9", children: [
|
|
17309
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
|
|
17310
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17311
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17312
|
-
{
|
|
17313
|
-
variant: "transparent",
|
|
17314
|
-
size: "icon",
|
|
17315
|
-
onClick: (e) => {
|
|
17316
|
-
e.stopPropagation();
|
|
17317
|
-
setIsPlaying((prev) => !prev);
|
|
17318
|
-
},
|
|
17319
|
-
className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
|
|
17320
|
-
"aria-label": isPlaying ? "Pause (Space)" : "Play (Space)",
|
|
17321
|
-
children: isPlaying ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PauseIcon, { size: 20, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 20, color: "white" })
|
|
17322
|
-
}
|
|
17323
|
-
),
|
|
17324
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "group/vol flex items-center", children: [
|
|
17325
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17326
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17327
|
-
{
|
|
17328
|
-
variant: "transparent",
|
|
17329
|
-
size: "icon",
|
|
17330
|
-
onClick: (e) => {
|
|
17331
|
-
e.stopPropagation();
|
|
17332
|
-
toggleMute();
|
|
17333
|
-
},
|
|
17334
|
-
className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
|
|
17335
|
-
"aria-label": isMuted ? "Unmute (M)" : "Mute (M)",
|
|
17336
|
-
children: isMuted || volume === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeOffIcon, { size: 18, color: "white" }) : volume < 0.5 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeDownIcon, { size: 18, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeUpIcon, { size: 18, color: "white" })
|
|
17337
|
-
}
|
|
17338
|
-
),
|
|
17339
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-0 overflow-hidden group-hover/vol:w-16 transition-all duration-200 flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17340
|
-
_chunkBJTOSUT4cjs.Input,
|
|
17341
|
-
{
|
|
17342
|
-
type: "range",
|
|
17343
|
-
min: 0,
|
|
17344
|
-
max: 1,
|
|
17345
|
-
step: 0.01,
|
|
17346
|
-
value: isMuted ? 0 : volume,
|
|
17347
|
-
onChange: handleVolumeChange,
|
|
17348
|
-
onClick: (e) => e.stopPropagation(),
|
|
17349
|
-
"aria-label": "Volume",
|
|
17350
|
-
className: "w-14 ml-1",
|
|
17351
|
-
style: { background: `linear-gradient(to right, white ${(isMuted ? 0 : volume) * 100}%, rgba(255,255,255,0.3) ${(isMuted ? 0 : volume) * 100}%)` }
|
|
17352
|
-
}
|
|
17353
|
-
) })
|
|
17354
|
-
] }),
|
|
17355
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-white/70 text-[12px] font-mono tabular-nums select-none ml-1.5", children: [
|
|
17356
|
-
formatTime(played * duration),
|
|
17357
|
-
" / ",
|
|
17358
|
-
formatTime(duration)
|
|
17359
|
-
] })
|
|
17360
|
-
] }),
|
|
17361
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
|
|
17362
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17363
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17364
|
-
{
|
|
17365
|
-
variant: "transparent",
|
|
17366
|
-
size: "small-legacy",
|
|
17367
|
-
onClick: (e) => {
|
|
17368
|
-
e.stopPropagation();
|
|
17369
|
-
cycleSpeed();
|
|
17370
|
-
},
|
|
17371
|
-
className: `h-9 px-1.5 text-[11px] font-bold rounded hover:bg-white/10 ${playbackRate !== 1 ? "text-white" : "text-white/70 hover:text-white"}`,
|
|
17372
|
-
title: "Playback speed",
|
|
17373
|
-
"aria-label": `Playback speed ${playbackRate}x`,
|
|
17374
|
-
children: [
|
|
17375
|
-
playbackRate,
|
|
17376
|
-
"x"
|
|
17377
|
-
]
|
|
17378
|
-
}
|
|
17379
|
-
),
|
|
17380
|
-
hasCues && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17381
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17382
|
-
{
|
|
17383
|
-
variant: "transparent",
|
|
17384
|
-
size: "small-legacy",
|
|
17385
|
-
onClick: (e) => {
|
|
17386
|
-
e.stopPropagation();
|
|
17387
|
-
setCaptionsEnabled((prev) => !prev);
|
|
17388
|
-
},
|
|
17389
|
-
className: `h-9 px-1.5 text-[11px] font-bold rounded ${captionsEnabled ? "bg-white text-black hover:bg-white/90" : "text-white/50 hover:text-white hover:bg-white/10"}`,
|
|
17390
|
-
style: { borderBottom: captionsEnabled ? "2px solid white" : "2px solid transparent" },
|
|
17391
|
-
title: captionsEnabled ? "Hide captions (C)" : "Show captions (C)",
|
|
17392
|
-
"aria-label": captionsEnabled ? "Hide captions" : "Show captions",
|
|
17393
|
-
children: "CC"
|
|
17394
|
-
}
|
|
17395
|
-
),
|
|
17396
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17397
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17398
|
-
{
|
|
17399
|
-
variant: "transparent",
|
|
17400
|
-
size: "icon",
|
|
17401
|
-
onClick: (e) => {
|
|
17402
|
-
e.stopPropagation();
|
|
17403
|
-
toggleFullscreen();
|
|
17404
|
-
},
|
|
17405
|
-
className: "h-9 w-9 text-white/80 hover:text-white hover:bg-white/10",
|
|
17406
|
-
title: isFullscreen ? "Exit fullscreen (F)" : "Fullscreen (F)",
|
|
17407
|
-
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
17408
|
-
children: isFullscreen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Collapse01Icon, { size: 18, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Expand01Icon, { size: 18, color: "white" })
|
|
17409
|
-
}
|
|
17410
|
-
)
|
|
17411
|
-
] })
|
|
17412
|
-
] })
|
|
17413
|
-
] })
|
|
17414
|
-
}
|
|
17415
|
-
)
|
|
17416
|
-
]
|
|
17417
|
-
}
|
|
17418
|
-
)
|
|
17419
|
-
] });
|
|
17420
|
-
};
|
|
17421
|
-
|
|
17422
16677
|
// src/components/layout/page-container.tsx
|
|
17423
16678
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
17424
16679
|
|
|
@@ -17445,7 +16700,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
17445
16700
|
e.preventDefault();
|
|
17446
16701
|
return;
|
|
17447
16702
|
}
|
|
17448
|
-
_optionalChain([action, 'access',
|
|
16703
|
+
_optionalChain([action, 'access', _414 => _414.onClick, 'optionalCall', _415 => _415()]);
|
|
17449
16704
|
},
|
|
17450
16705
|
[action]
|
|
17451
16706
|
);
|
|
@@ -17486,13 +16741,13 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17486
16741
|
const activate = _react.useCallback.call(void 0, () => {
|
|
17487
16742
|
if (item.disabled) return;
|
|
17488
16743
|
if (item.type === "checkbox") {
|
|
17489
|
-
_optionalChain([item, 'access',
|
|
17490
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16744
|
+
_optionalChain([item, 'access', _416 => _416.onClick, 'optionalCall', _417 => _417()]);
|
|
16745
|
+
_optionalChain([onItemClick, 'optionalCall', _418 => _418(item)]);
|
|
17491
16746
|
return;
|
|
17492
16747
|
}
|
|
17493
16748
|
if (item.type === "submenu") return;
|
|
17494
|
-
_optionalChain([item, 'access',
|
|
17495
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16749
|
+
_optionalChain([item, 'access', _419 => _419.onClick, 'optionalCall', _420 => _420()]);
|
|
16750
|
+
_optionalChain([onItemClick, 'optionalCall', _421 => _421(item)]);
|
|
17496
16751
|
}, [item, onItemClick]);
|
|
17497
16752
|
const handleClick = _react.useCallback.call(void 0,
|
|
17498
16753
|
(e) => {
|
|
@@ -17518,8 +16773,8 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17518
16773
|
e.stopPropagation();
|
|
17519
16774
|
return;
|
|
17520
16775
|
}
|
|
17521
|
-
_optionalChain([item, 'access',
|
|
17522
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16776
|
+
_optionalChain([item, 'access', _422 => _422.onClick, 'optionalCall', _423 => _423()]);
|
|
16777
|
+
_optionalChain([onItemClick, 'optionalCall', _424 => _424(item)]);
|
|
17523
16778
|
},
|
|
17524
16779
|
[item, onItemClick]
|
|
17525
16780
|
);
|
|
@@ -17674,7 +16929,7 @@ var ActionsMenuDropdown = ({
|
|
|
17674
16929
|
const [open, setOpen] = _react.useState.call(void 0, false);
|
|
17675
16930
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
17676
16931
|
(item) => {
|
|
17677
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16932
|
+
_optionalChain([onItemClick, 'optionalCall', _425 => _425(item)]);
|
|
17678
16933
|
if (item.type !== "checkbox" && item.type !== "submenu") {
|
|
17679
16934
|
setOpen(false);
|
|
17680
16935
|
}
|
|
@@ -17845,7 +17100,7 @@ function IconButtonsVariant({
|
|
|
17845
17100
|
}) {
|
|
17846
17101
|
const desktopActions = actions.filter((a) => !a.showOnlyMobile);
|
|
17847
17102
|
const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
|
|
17848
|
-
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access',
|
|
17103
|
+
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _426 => _426[0], 'access', _427 => _427.submenu, 'optionalAccess', _428 => _428.length]);
|
|
17849
17104
|
const singleAction = isSingleAction ? actions[0] : null;
|
|
17850
17105
|
const useSingleActionMobile = isSingleAction && !hasMenuActions;
|
|
17851
17106
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -18275,14 +17530,14 @@ function ReleaseDetailPage({
|
|
|
18275
17530
|
releaseVersion
|
|
18276
17531
|
] })
|
|
18277
17532
|
] }) }),
|
|
18278
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess',
|
|
17533
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess', _429 => _429.map, 'call', _430 => _430((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18279
17534
|
StatusBadge,
|
|
18280
17535
|
{
|
|
18281
|
-
text: (tag.name || _optionalChain([tag, 'access',
|
|
17536
|
+
text: (tag.name || _optionalChain([tag, 'access', _431 => _431.blog_tags, 'optionalAccess', _432 => _432.name]) || "").toUpperCase(),
|
|
18282
17537
|
variant: "card",
|
|
18283
17538
|
className: "bg-ods-card border border-ods-border"
|
|
18284
17539
|
},
|
|
18285
|
-
tag.id || _optionalChain([tag, 'access',
|
|
17540
|
+
tag.id || _optionalChain([tag, 'access', _433 => _433.blog_tags, 'optionalAccess', _434 => _434.id])
|
|
18286
17541
|
))]) }),
|
|
18287
17542
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
|
|
18288
17543
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border-b md:border-b-0 md:border-r border-ods-border p-4 flex flex-col gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
|
|
@@ -18301,15 +17556,15 @@ function ReleaseDetailPage({
|
|
|
18301
17556
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18302
17557
|
SquareAvatar,
|
|
18303
17558
|
{
|
|
18304
|
-
src: _optionalChain([author, 'optionalAccess',
|
|
18305
|
-
alt: _optionalChain([author, 'optionalAccess',
|
|
18306
|
-
fallback: getInitials4(_optionalChain([author, 'optionalAccess',
|
|
17559
|
+
src: _optionalChain([author, 'optionalAccess', _435 => _435.avatar_url]) || "",
|
|
17560
|
+
alt: _optionalChain([author, 'optionalAccess', _436 => _436.full_name]) || "Author",
|
|
17561
|
+
fallback: getInitials4(_optionalChain([author, 'optionalAccess', _437 => _437.full_name]) || "Unknown"),
|
|
18307
17562
|
size: "md",
|
|
18308
17563
|
variant: "round"
|
|
18309
17564
|
}
|
|
18310
17565
|
),
|
|
18311
17566
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
|
|
18312
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: _optionalChain([author, 'optionalAccess',
|
|
17567
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: _optionalChain([author, 'optionalAccess', _438 => _438.full_name]) || "Unknown Author" }),
|
|
18313
17568
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
|
|
18314
17569
|
] })
|
|
18315
17570
|
] })
|
|
@@ -18324,7 +17579,7 @@ function ReleaseDetailPage({
|
|
|
18324
17579
|
setGalleryOpen(true);
|
|
18325
17580
|
}
|
|
18326
17581
|
},
|
|
18327
|
-
children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17582
|
+
children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video2, { url: mediaItem.media_url, layout: "native" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: mediaItem.media_url, alt: mediaItem.title || `Media ${index + 1}`, className: "w-full h-full object-cover" })
|
|
18328
17583
|
},
|
|
18329
17584
|
mediaItem.id || index
|
|
18330
17585
|
)) }),
|
|
@@ -18340,16 +17595,36 @@ function ReleaseDetailPage({
|
|
|
18340
17595
|
videoBites,
|
|
18341
17596
|
bitesTitle: "Video Clips",
|
|
18342
17597
|
filterPublishedBites: true,
|
|
18343
|
-
srtContent: _optionalChain([release, 'optionalAccess',
|
|
18344
|
-
captionsUrl: _optionalChain([release, 'optionalAccess',
|
|
17598
|
+
srtContent: _optionalChain([release, 'optionalAccess', _439 => _439.srt_content]),
|
|
17599
|
+
captionsUrl: _optionalChain([release, 'optionalAccess', _440 => _440.captionsUrl])
|
|
18345
17600
|
}
|
|
18346
17601
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
18347
|
-
youtubeUrl && (
|
|
18348
|
-
|
|
18349
|
-
|
|
18350
|
-
|
|
18351
|
-
|
|
18352
|
-
|
|
17602
|
+
youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17603
|
+
Video2,
|
|
17604
|
+
{
|
|
17605
|
+
kind: "youtube",
|
|
17606
|
+
url: youtubeUrl,
|
|
17607
|
+
title: `${releaseTitle} - Video`,
|
|
17608
|
+
layout: "native"
|
|
17609
|
+
}
|
|
17610
|
+
),
|
|
17611
|
+
!youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17612
|
+
Video2,
|
|
17613
|
+
{
|
|
17614
|
+
url: mainVideoUrl,
|
|
17615
|
+
srtContent: _optionalChain([release, 'optionalAccess', _441 => _441.srt_content]),
|
|
17616
|
+
captionsUrl: _optionalChain([release, 'optionalAccess', _442 => _442.captionsUrl]),
|
|
17617
|
+
layout: "centered"
|
|
17618
|
+
}
|
|
17619
|
+
),
|
|
17620
|
+
highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17621
|
+
Video2,
|
|
17622
|
+
{
|
|
17623
|
+
url: highlightVideoUrl,
|
|
17624
|
+
poster: highlightVideoThumbnail,
|
|
17625
|
+
layout: "centered"
|
|
17626
|
+
}
|
|
17627
|
+
)
|
|
18353
17628
|
] }),
|
|
18354
17629
|
releaseContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: releaseContent }) }),
|
|
18355
17630
|
hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
|
|
@@ -18428,7 +17703,7 @@ function ReleaseDetailPage({
|
|
|
18428
17703
|
}
|
|
18429
17704
|
)
|
|
18430
17705
|
] }),
|
|
18431
|
-
(_optionalChain([githubReleases, 'optionalAccess',
|
|
17706
|
+
(_optionalChain([githubReleases, 'optionalAccess', _443 => _443.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _444 => _444.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
|
|
18432
17707
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
|
|
18433
17708
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
18434
17709
|
githubReleases && githubReleases.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-1", children: [
|
|
@@ -18457,7 +17732,7 @@ function ReleaseDetailPage({
|
|
|
18457
17732
|
{
|
|
18458
17733
|
href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
|
|
18459
17734
|
className: "text-h4 text-[#ffc008] hover:underline",
|
|
18460
|
-
children: _optionalChain([path, 'access',
|
|
17735
|
+
children: _optionalChain([path, 'access', _445 => _445.replace, 'call', _446 => _446(/^\//, ""), 'access', _447 => _447.split, 'call', _448 => _448("/"), 'access', _449 => _449.pop, 'call', _450 => _450(), 'optionalAccess', _451 => _451.replace, 'call', _452 => _452(/-/g, " ")]) || "View Article"
|
|
18461
17736
|
}
|
|
18462
17737
|
),
|
|
18463
17738
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
@@ -18603,7 +17878,7 @@ function InfoRow({ label, value, icon }) {
|
|
|
18603
17878
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
18604
17879
|
|
|
18605
17880
|
|
|
18606
|
-
var InputTrigger =
|
|
17881
|
+
var InputTrigger = React47.forwardRef(
|
|
18607
17882
|
({ selectedLabel, placeholder, startIcon, endIcon, invalid, className, disabled, ...props }, ref) => {
|
|
18608
17883
|
const isPlaceholder = selectedLabel === void 0 || selectedLabel === null || selectedLabel === "";
|
|
18609
17884
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18667,8 +17942,8 @@ function MediaTypeSelector({
|
|
|
18667
17942
|
className,
|
|
18668
17943
|
disabled
|
|
18669
17944
|
}) {
|
|
18670
|
-
const [key, setKey] =
|
|
18671
|
-
|
|
17945
|
+
const [key, setKey] = React48.useState(0);
|
|
17946
|
+
React48.useEffect(() => {
|
|
18672
17947
|
setKey((prev) => prev + 1);
|
|
18673
17948
|
}, [value]);
|
|
18674
17949
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18824,7 +18099,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
18824
18099
|
|
|
18825
18100
|
var _reactradiogroup = require('@radix-ui/react-radio-group'); var RadioGroupPrimitive = _interopRequireWildcard(_reactradiogroup);
|
|
18826
18101
|
|
|
18827
|
-
var RadioGroup =
|
|
18102
|
+
var RadioGroup = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18828
18103
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18829
18104
|
RadioGroupPrimitive.Root,
|
|
18830
18105
|
{
|
|
@@ -18835,7 +18110,7 @@ var RadioGroup = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
18835
18110
|
);
|
|
18836
18111
|
});
|
|
18837
18112
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
18838
|
-
var RadioGroupItem =
|
|
18113
|
+
var RadioGroupItem = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18839
18114
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18840
18115
|
RadioGroupPrimitive.Item,
|
|
18841
18116
|
{
|
|
@@ -18856,7 +18131,7 @@ var RadioGroupItem = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
18856
18131
|
);
|
|
18857
18132
|
});
|
|
18858
18133
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
18859
|
-
var RadioGroupBlock =
|
|
18134
|
+
var RadioGroupBlock = React50.forwardRef(
|
|
18860
18135
|
({ className, options, variant = "separated", error, itemClassName, disabled, ...props }, ref) => {
|
|
18861
18136
|
const isGrouped = variant === "grouped";
|
|
18862
18137
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "relative flex w-full flex-col", className), children: [
|
|
@@ -18970,7 +18245,7 @@ function TagsInput({
|
|
|
18970
18245
|
badgeClassName,
|
|
18971
18246
|
label
|
|
18972
18247
|
}) {
|
|
18973
|
-
const [inputValue, setInputValue] =
|
|
18248
|
+
const [inputValue, setInputValue] = React51.useState("");
|
|
18974
18249
|
const handleAddTag = () => {
|
|
18975
18250
|
const trimmedValue = inputValue.trim();
|
|
18976
18251
|
if (!trimmedValue) return;
|
|
@@ -19076,19 +18351,19 @@ function TagsManager({
|
|
|
19076
18351
|
disabled = false,
|
|
19077
18352
|
className
|
|
19078
18353
|
}) {
|
|
19079
|
-
const [open, setOpen] =
|
|
19080
|
-
const [search, setSearch] =
|
|
19081
|
-
const [editingId, setEditingId] =
|
|
19082
|
-
const [editingName, setEditingName] =
|
|
19083
|
-
const editInputRef =
|
|
19084
|
-
const inputRef =
|
|
19085
|
-
const containerRef =
|
|
18354
|
+
const [open, setOpen] = React52.useState(false);
|
|
18355
|
+
const [search, setSearch] = React52.useState("");
|
|
18356
|
+
const [editingId, setEditingId] = React52.useState(null);
|
|
18357
|
+
const [editingName, setEditingName] = React52.useState("");
|
|
18358
|
+
const editInputRef = React52.useRef(null);
|
|
18359
|
+
const inputRef = React52.useRef(null);
|
|
18360
|
+
const containerRef = React52.useRef(null);
|
|
19086
18361
|
const selectedTags = tags.filter((t) => selectedIds.includes(t.id));
|
|
19087
18362
|
const filtered = tags.filter(
|
|
19088
18363
|
(t) => t.name.toLowerCase().includes(search.toLowerCase())
|
|
19089
18364
|
);
|
|
19090
18365
|
const showCreateOption = onCreateTag && search.trim() && !tags.some((t) => t.name.toLowerCase() === search.trim().toLowerCase());
|
|
19091
|
-
const toggleTag =
|
|
18366
|
+
const toggleTag = React52.useCallback(
|
|
19092
18367
|
(id) => {
|
|
19093
18368
|
if (selectedIds.includes(id)) {
|
|
19094
18369
|
onChange(selectedIds.filter((i) => i !== id));
|
|
@@ -19098,32 +18373,32 @@ function TagsManager({
|
|
|
19098
18373
|
},
|
|
19099
18374
|
[selectedIds, onChange]
|
|
19100
18375
|
);
|
|
19101
|
-
const handleCreate =
|
|
18376
|
+
const handleCreate = React52.useCallback(async () => {
|
|
19102
18377
|
if (!onCreateTag) return;
|
|
19103
18378
|
const name = search.trim();
|
|
19104
18379
|
if (!name) return;
|
|
19105
18380
|
const result = await onCreateTag(name);
|
|
19106
|
-
if (_optionalChain([result, 'optionalAccess',
|
|
18381
|
+
if (_optionalChain([result, 'optionalAccess', _453 => _453.id])) {
|
|
19107
18382
|
onChange([...selectedIds, result.id]);
|
|
19108
18383
|
setSearch("");
|
|
19109
18384
|
}
|
|
19110
18385
|
}, [search, onCreateTag, selectedIds, onChange]);
|
|
19111
|
-
const startEdit =
|
|
18386
|
+
const startEdit = React52.useCallback((id, name) => {
|
|
19112
18387
|
setEditingId(id);
|
|
19113
18388
|
setEditingName(name);
|
|
19114
|
-
setTimeout(() => _optionalChain([editInputRef, 'access',
|
|
18389
|
+
setTimeout(() => _optionalChain([editInputRef, 'access', _454 => _454.current, 'optionalAccess', _455 => _455.focus, 'call', _456 => _456()]), 0);
|
|
19115
18390
|
}, []);
|
|
19116
|
-
const confirmEdit =
|
|
18391
|
+
const confirmEdit = React52.useCallback(async () => {
|
|
19117
18392
|
if (!onUpdateTag || !editingId || !editingName.trim()) return;
|
|
19118
18393
|
await onUpdateTag(editingId, editingName.trim());
|
|
19119
18394
|
setEditingId(null);
|
|
19120
18395
|
setEditingName("");
|
|
19121
18396
|
}, [editingId, editingName, onUpdateTag]);
|
|
19122
|
-
const cancelEdit =
|
|
18397
|
+
const cancelEdit = React52.useCallback(() => {
|
|
19123
18398
|
setEditingId(null);
|
|
19124
18399
|
setEditingName("");
|
|
19125
18400
|
}, []);
|
|
19126
|
-
const handleDelete =
|
|
18401
|
+
const handleDelete = React52.useCallback(
|
|
19127
18402
|
async (id) => {
|
|
19128
18403
|
if (!onDeleteTag) return;
|
|
19129
18404
|
await onDeleteTag(id);
|
|
@@ -19133,12 +18408,12 @@ function TagsManager({
|
|
|
19133
18408
|
},
|
|
19134
18409
|
[onDeleteTag, selectedIds, onChange]
|
|
19135
18410
|
);
|
|
19136
|
-
const handleClearAll =
|
|
18411
|
+
const handleClearAll = React52.useCallback(
|
|
19137
18412
|
(e) => {
|
|
19138
18413
|
e.stopPropagation();
|
|
19139
18414
|
onChange([]);
|
|
19140
18415
|
setSearch("");
|
|
19141
|
-
_optionalChain([inputRef, 'access',
|
|
18416
|
+
_optionalChain([inputRef, 'access', _457 => _457.current, 'optionalAccess', _458 => _458.focus, 'call', _459 => _459()]);
|
|
19142
18417
|
},
|
|
19143
18418
|
[onChange]
|
|
19144
18419
|
);
|
|
@@ -19237,10 +18512,10 @@ function TagsManager({
|
|
|
19237
18512
|
align: "start",
|
|
19238
18513
|
onOpenAutoFocus: (e) => {
|
|
19239
18514
|
e.preventDefault();
|
|
19240
|
-
_optionalChain([inputRef, 'access',
|
|
18515
|
+
_optionalChain([inputRef, 'access', _460 => _460.current, 'optionalAccess', _461 => _461.focus, 'call', _462 => _462()]);
|
|
19241
18516
|
},
|
|
19242
18517
|
onInteractOutside: (e) => {
|
|
19243
|
-
if (_optionalChain([containerRef, 'access',
|
|
18518
|
+
if (_optionalChain([containerRef, 'access', _463 => _463.current, 'optionalAccess', _464 => _464.contains, 'call', _465 => _465(e.target)])) {
|
|
19244
18519
|
e.preventDefault();
|
|
19245
18520
|
}
|
|
19246
18521
|
},
|
|
@@ -19434,7 +18709,7 @@ var _reactalertdialog = require('@radix-ui/react-alert-dialog'); var AlertDialog
|
|
|
19434
18709
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
19435
18710
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
19436
18711
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
19437
|
-
var AlertDialogOverlay =
|
|
18712
|
+
var AlertDialogOverlay = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19438
18713
|
AlertDialogPrimitive.Overlay,
|
|
19439
18714
|
{
|
|
19440
18715
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -19446,7 +18721,7 @@ var AlertDialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19446
18721
|
}
|
|
19447
18722
|
));
|
|
19448
18723
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
19449
|
-
var AlertDialogContent =
|
|
18724
|
+
var AlertDialogContent = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AlertDialogPortal, { children: [
|
|
19450
18725
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AlertDialogOverlay, {}),
|
|
19451
18726
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19452
18727
|
AlertDialogPrimitive.Content,
|
|
@@ -19489,7 +18764,7 @@ var AlertDialogFooter = ({
|
|
|
19489
18764
|
}
|
|
19490
18765
|
);
|
|
19491
18766
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
19492
|
-
var AlertDialogTitle =
|
|
18767
|
+
var AlertDialogTitle = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19493
18768
|
AlertDialogPrimitive.Title,
|
|
19494
18769
|
{
|
|
19495
18770
|
ref,
|
|
@@ -19498,7 +18773,7 @@ var AlertDialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
19498
18773
|
}
|
|
19499
18774
|
));
|
|
19500
18775
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
19501
|
-
var AlertDialogDescription =
|
|
18776
|
+
var AlertDialogDescription = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19502
18777
|
AlertDialogPrimitive.Description,
|
|
19503
18778
|
{
|
|
19504
18779
|
ref,
|
|
@@ -19507,7 +18782,7 @@ var AlertDialogDescription = React54.forwardRef(({ className, ...props }, ref) =
|
|
|
19507
18782
|
}
|
|
19508
18783
|
));
|
|
19509
18784
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
19510
|
-
var AlertDialogAction =
|
|
18785
|
+
var AlertDialogAction = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19511
18786
|
AlertDialogPrimitive.Action,
|
|
19512
18787
|
{
|
|
19513
18788
|
ref,
|
|
@@ -19516,7 +18791,7 @@ var AlertDialogAction = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19516
18791
|
}
|
|
19517
18792
|
));
|
|
19518
18793
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
19519
|
-
var AlertDialogCancel =
|
|
18794
|
+
var AlertDialogCancel = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19520
18795
|
AlertDialogPrimitive.Cancel,
|
|
19521
18796
|
{
|
|
19522
18797
|
ref,
|
|
@@ -19544,7 +18819,7 @@ var Dialog = DialogPrimitive3.Root;
|
|
|
19544
18819
|
var DialogTrigger = DialogPrimitive3.Trigger;
|
|
19545
18820
|
var DialogPortal = DialogPrimitive3.Portal;
|
|
19546
18821
|
var DialogClose = DialogPrimitive3.Close;
|
|
19547
|
-
var DialogOverlay =
|
|
18822
|
+
var DialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19548
18823
|
DialogPrimitive3.Overlay,
|
|
19549
18824
|
{
|
|
19550
18825
|
ref,
|
|
@@ -19556,7 +18831,7 @@ var DialogOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
19556
18831
|
}
|
|
19557
18832
|
));
|
|
19558
18833
|
DialogOverlay.displayName = DialogPrimitive3.Overlay.displayName;
|
|
19559
|
-
var DialogContent =
|
|
18834
|
+
var DialogContent = React54.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPortal, { children: [
|
|
19560
18835
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogOverlay, {}),
|
|
19561
18836
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19562
18837
|
DialogPrimitive3.Content,
|
|
@@ -19582,7 +18857,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.
|
|
|
19582
18857
|
DialogHeader.displayName = "DialogHeader";
|
|
19583
18858
|
var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col-reverse md:flex-row md:justify-end md:space-x-2", className), ...props });
|
|
19584
18859
|
DialogFooter.displayName = "DialogFooter";
|
|
19585
|
-
var DialogTitle =
|
|
18860
|
+
var DialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19586
18861
|
DialogPrimitive3.Title,
|
|
19587
18862
|
{
|
|
19588
18863
|
ref,
|
|
@@ -19591,7 +18866,7 @@ var DialogTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
19591
18866
|
}
|
|
19592
18867
|
));
|
|
19593
18868
|
DialogTitle.displayName = DialogPrimitive3.Title.displayName;
|
|
19594
|
-
var DialogDescription =
|
|
18869
|
+
var DialogDescription = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive3.Description, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "text-sm text-muted-foreground", className), ...props }));
|
|
19595
18870
|
DialogDescription.displayName = DialogPrimitive3.Description.displayName;
|
|
19596
18871
|
|
|
19597
18872
|
// src/components/ui/modal.tsx
|
|
@@ -19599,7 +18874,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19599
18874
|
|
|
19600
18875
|
|
|
19601
18876
|
|
|
19602
|
-
var Modal =
|
|
18877
|
+
var Modal = React55.forwardRef(
|
|
19603
18878
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19604
18879
|
_react.useEffect.call(void 0, () => {
|
|
19605
18880
|
const handleKeyDown = (event) => {
|
|
@@ -19643,11 +18918,11 @@ var Modal = React56.forwardRef(
|
|
|
19643
18918
|
}
|
|
19644
18919
|
);
|
|
19645
18920
|
Modal.displayName = "Modal";
|
|
19646
|
-
var ModalContent =
|
|
18921
|
+
var ModalContent = React55.forwardRef(
|
|
19647
18922
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "overflow-y-auto min-h-0 flex-1", className), children })
|
|
19648
18923
|
);
|
|
19649
18924
|
ModalContent.displayName = "ModalContent";
|
|
19650
|
-
var ModalHeader =
|
|
18925
|
+
var ModalHeader = React55.forwardRef(
|
|
19651
18926
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19652
18927
|
"div",
|
|
19653
18928
|
{
|
|
@@ -19658,7 +18933,7 @@ var ModalHeader = React56.forwardRef(
|
|
|
19658
18933
|
)
|
|
19659
18934
|
);
|
|
19660
18935
|
ModalHeader.displayName = "ModalHeader";
|
|
19661
|
-
var ModalTitle =
|
|
18936
|
+
var ModalTitle = React55.forwardRef(
|
|
19662
18937
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19663
18938
|
"h2",
|
|
19664
18939
|
{
|
|
@@ -19669,7 +18944,7 @@ var ModalTitle = React56.forwardRef(
|
|
|
19669
18944
|
)
|
|
19670
18945
|
);
|
|
19671
18946
|
ModalTitle.displayName = "ModalTitle";
|
|
19672
|
-
var ModalFooter =
|
|
18947
|
+
var ModalFooter = React55.forwardRef(
|
|
19673
18948
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19674
18949
|
"div",
|
|
19675
18950
|
{
|
|
@@ -19686,8 +18961,8 @@ ModalFooter.displayName = "ModalFooter";
|
|
|
19686
18961
|
|
|
19687
18962
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
19688
18963
|
|
|
19689
|
-
var ModalContext =
|
|
19690
|
-
var Modal2 =
|
|
18964
|
+
var ModalContext = React56.createContext({});
|
|
18965
|
+
var Modal2 = React56.forwardRef(
|
|
19691
18966
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19692
18967
|
_react.useEffect.call(void 0, () => {
|
|
19693
18968
|
const handleKeyDown = (event) => {
|
|
@@ -19736,13 +19011,13 @@ var Modal2 = React57.forwardRef(
|
|
|
19736
19011
|
}
|
|
19737
19012
|
);
|
|
19738
19013
|
Modal2.displayName = "ModalV2";
|
|
19739
|
-
var ModalContent2 =
|
|
19014
|
+
var ModalContent2 = React56.forwardRef(
|
|
19740
19015
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex-1 min-h-0 overflow-y-auto", className), children })
|
|
19741
19016
|
);
|
|
19742
19017
|
ModalContent2.displayName = "ModalV2Content";
|
|
19743
|
-
var ModalHeader2 =
|
|
19018
|
+
var ModalHeader2 = React56.forwardRef(
|
|
19744
19019
|
({ children, className }, ref) => {
|
|
19745
|
-
const { onClose } =
|
|
19020
|
+
const { onClose } = React56.useContext(ModalContext);
|
|
19746
19021
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19747
19022
|
"div",
|
|
19748
19023
|
{
|
|
@@ -19765,7 +19040,7 @@ var ModalHeader2 = React57.forwardRef(
|
|
|
19765
19040
|
}
|
|
19766
19041
|
);
|
|
19767
19042
|
ModalHeader2.displayName = "ModalV2Header";
|
|
19768
|
-
var ModalTitle2 =
|
|
19043
|
+
var ModalTitle2 = React56.forwardRef(
|
|
19769
19044
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19770
19045
|
"h2",
|
|
19771
19046
|
{
|
|
@@ -19776,7 +19051,7 @@ var ModalTitle2 = React57.forwardRef(
|
|
|
19776
19051
|
)
|
|
19777
19052
|
);
|
|
19778
19053
|
ModalTitle2.displayName = "ModalV2Title";
|
|
19779
|
-
var ModalFooter2 =
|
|
19054
|
+
var ModalFooter2 = React56.forwardRef(
|
|
19780
19055
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19781
19056
|
"div",
|
|
19782
19057
|
{
|
|
@@ -19793,7 +19068,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19793
19068
|
|
|
19794
19069
|
var _reactseparator = require('@radix-ui/react-separator'); var SeparatorPrimitive = _interopRequireWildcard(_reactseparator);
|
|
19795
19070
|
|
|
19796
|
-
var Separator2 =
|
|
19071
|
+
var Separator2 = React57.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19797
19072
|
SeparatorPrimitive.Root,
|
|
19798
19073
|
{
|
|
19799
19074
|
ref,
|
|
@@ -19816,7 +19091,7 @@ var Sheet = SheetPrimitive.Root;
|
|
|
19816
19091
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
19817
19092
|
var SheetClose = SheetPrimitive.Close;
|
|
19818
19093
|
var SheetPortal = SheetPrimitive.Portal;
|
|
19819
|
-
var SheetOverlay =
|
|
19094
|
+
var SheetOverlay = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19820
19095
|
SheetPrimitive.Overlay,
|
|
19821
19096
|
{
|
|
19822
19097
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -19844,7 +19119,7 @@ var sheetVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
19844
19119
|
}
|
|
19845
19120
|
}
|
|
19846
19121
|
);
|
|
19847
|
-
var SheetContent =
|
|
19122
|
+
var SheetContent = React58.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetPortal, { children: [
|
|
19848
19123
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetOverlay, {}),
|
|
19849
19124
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19850
19125
|
SheetPrimitive.Content,
|
|
@@ -19891,7 +19166,7 @@ var SheetFooter = ({
|
|
|
19891
19166
|
}
|
|
19892
19167
|
);
|
|
19893
19168
|
SheetFooter.displayName = "SheetFooter";
|
|
19894
|
-
var SheetTitle =
|
|
19169
|
+
var SheetTitle = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19895
19170
|
SheetPrimitive.Title,
|
|
19896
19171
|
{
|
|
19897
19172
|
ref,
|
|
@@ -19900,7 +19175,7 @@ var SheetTitle = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
19900
19175
|
}
|
|
19901
19176
|
));
|
|
19902
19177
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
19903
|
-
var SheetDescription =
|
|
19178
|
+
var SheetDescription = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19904
19179
|
SheetPrimitive.Description,
|
|
19905
19180
|
{
|
|
19906
19181
|
ref,
|
|
@@ -19916,7 +19191,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19916
19191
|
var _reacttabs = require('@radix-ui/react-tabs'); var TabsPrimitive = _interopRequireWildcard(_reacttabs);
|
|
19917
19192
|
|
|
19918
19193
|
var Tabs = TabsPrimitive.Root;
|
|
19919
|
-
var TabsList =
|
|
19194
|
+
var TabsList = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19920
19195
|
TabsPrimitive.List,
|
|
19921
19196
|
{
|
|
19922
19197
|
ref,
|
|
@@ -19928,7 +19203,7 @@ var TabsList = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
19928
19203
|
}
|
|
19929
19204
|
));
|
|
19930
19205
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
19931
|
-
var TabsTrigger =
|
|
19206
|
+
var TabsTrigger = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19932
19207
|
TabsPrimitive.Trigger,
|
|
19933
19208
|
{
|
|
19934
19209
|
ref,
|
|
@@ -19940,7 +19215,7 @@ var TabsTrigger = React60.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
19940
19215
|
}
|
|
19941
19216
|
));
|
|
19942
19217
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
19943
|
-
var TabsContent =
|
|
19218
|
+
var TabsContent = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19944
19219
|
TabsPrimitive.Content,
|
|
19945
19220
|
{
|
|
19946
19221
|
ref,
|
|
@@ -19960,9 +19235,9 @@ var _reactaccordion = require('@radix-ui/react-accordion'); var AccordionPrimiti
|
|
|
19960
19235
|
|
|
19961
19236
|
|
|
19962
19237
|
var Accordion = AccordionPrimitive.Root;
|
|
19963
|
-
var AccordionItem =
|
|
19238
|
+
var AccordionItem = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Item, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "border-b", className), ...props }));
|
|
19964
19239
|
AccordionItem.displayName = "AccordionItem";
|
|
19965
|
-
var AccordionTrigger =
|
|
19240
|
+
var AccordionTrigger = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19966
19241
|
AccordionPrimitive.Trigger,
|
|
19967
19242
|
{
|
|
19968
19243
|
ref,
|
|
@@ -19978,7 +19253,7 @@ var AccordionTrigger = React61.forwardRef(({ className, children, ...props }, re
|
|
|
19978
19253
|
}
|
|
19979
19254
|
) }));
|
|
19980
19255
|
AccordionTrigger.displayName = "AccordionTrigger";
|
|
19981
|
-
var AccordionContent =
|
|
19256
|
+
var AccordionContent = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19982
19257
|
AccordionPrimitive.Content,
|
|
19983
19258
|
{
|
|
19984
19259
|
ref,
|
|
@@ -19998,9 +19273,9 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19998
19273
|
var _reactslot = require('@radix-ui/react-slot');
|
|
19999
19274
|
|
|
20000
19275
|
|
|
20001
|
-
var Breadcrumb =
|
|
19276
|
+
var Breadcrumb = React61.forwardRef(({ ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
20002
19277
|
Breadcrumb.displayName = "Breadcrumb";
|
|
20003
|
-
var BreadcrumbList =
|
|
19278
|
+
var BreadcrumbList = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20004
19279
|
"ol",
|
|
20005
19280
|
{
|
|
20006
19281
|
ref,
|
|
@@ -20012,7 +19287,7 @@ var BreadcrumbList = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20012
19287
|
}
|
|
20013
19288
|
));
|
|
20014
19289
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
20015
|
-
var BreadcrumbItem =
|
|
19290
|
+
var BreadcrumbItem = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20016
19291
|
"li",
|
|
20017
19292
|
{
|
|
20018
19293
|
ref,
|
|
@@ -20021,7 +19296,7 @@ var BreadcrumbItem = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20021
19296
|
}
|
|
20022
19297
|
));
|
|
20023
19298
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
20024
|
-
var BreadcrumbLink =
|
|
19299
|
+
var BreadcrumbLink = React61.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
20025
19300
|
const Comp = asChild ? _reactslot.Slot : "a";
|
|
20026
19301
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20027
19302
|
Comp,
|
|
@@ -20033,7 +19308,7 @@ var BreadcrumbLink = React62.forwardRef(({ asChild, className, ...props }, ref)
|
|
|
20033
19308
|
);
|
|
20034
19309
|
});
|
|
20035
19310
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
20036
|
-
var BreadcrumbPage =
|
|
19311
|
+
var BreadcrumbPage = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20037
19312
|
"span",
|
|
20038
19313
|
{
|
|
20039
19314
|
ref,
|
|
@@ -20089,7 +19364,7 @@ var MenubarGroup = MenubarPrimitive.Group;
|
|
|
20089
19364
|
var MenubarPortal = MenubarPrimitive.Portal;
|
|
20090
19365
|
var MenubarSub = MenubarPrimitive.Sub;
|
|
20091
19366
|
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
20092
|
-
var Menubar =
|
|
19367
|
+
var Menubar = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20093
19368
|
MenubarPrimitive.Root,
|
|
20094
19369
|
{
|
|
20095
19370
|
ref,
|
|
@@ -20101,7 +19376,7 @@ var Menubar = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
20101
19376
|
}
|
|
20102
19377
|
));
|
|
20103
19378
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
20104
|
-
var MenubarTrigger =
|
|
19379
|
+
var MenubarTrigger = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20105
19380
|
MenubarPrimitive.Trigger,
|
|
20106
19381
|
{
|
|
20107
19382
|
ref,
|
|
@@ -20113,7 +19388,7 @@ var MenubarTrigger = React63.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20113
19388
|
}
|
|
20114
19389
|
));
|
|
20115
19390
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
20116
|
-
var MenubarSubTrigger =
|
|
19391
|
+
var MenubarSubTrigger = React62.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20117
19392
|
MenubarPrimitive.SubTrigger,
|
|
20118
19393
|
{
|
|
20119
19394
|
ref,
|
|
@@ -20130,7 +19405,7 @@ var MenubarSubTrigger = React63.forwardRef(({ className, inset, children, ...pro
|
|
|
20130
19405
|
}
|
|
20131
19406
|
));
|
|
20132
19407
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
20133
|
-
var MenubarSubContent =
|
|
19408
|
+
var MenubarSubContent = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20134
19409
|
MenubarPrimitive.SubContent,
|
|
20135
19410
|
{
|
|
20136
19411
|
ref,
|
|
@@ -20142,7 +19417,7 @@ var MenubarSubContent = React63.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20142
19417
|
}
|
|
20143
19418
|
));
|
|
20144
19419
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
20145
|
-
var MenubarContent =
|
|
19420
|
+
var MenubarContent = React62.forwardRef(
|
|
20146
19421
|
({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenubarPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20147
19422
|
MenubarPrimitive.Content,
|
|
20148
19423
|
{
|
|
@@ -20159,7 +19434,7 @@ var MenubarContent = React63.forwardRef(
|
|
|
20159
19434
|
) })
|
|
20160
19435
|
);
|
|
20161
19436
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
20162
|
-
var MenubarItem =
|
|
19437
|
+
var MenubarItem = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20163
19438
|
MenubarPrimitive.Item,
|
|
20164
19439
|
{
|
|
20165
19440
|
ref,
|
|
@@ -20172,7 +19447,7 @@ var MenubarItem = React63.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
20172
19447
|
}
|
|
20173
19448
|
));
|
|
20174
19449
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
20175
|
-
var MenubarCheckboxItem =
|
|
19450
|
+
var MenubarCheckboxItem = React62.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20176
19451
|
MenubarPrimitive.CheckboxItem,
|
|
20177
19452
|
{
|
|
20178
19453
|
ref,
|
|
@@ -20189,7 +19464,7 @@ var MenubarCheckboxItem = React63.forwardRef(({ className, children, checked, ..
|
|
|
20189
19464
|
}
|
|
20190
19465
|
));
|
|
20191
19466
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
20192
|
-
var MenubarRadioItem =
|
|
19467
|
+
var MenubarRadioItem = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20193
19468
|
MenubarPrimitive.RadioItem,
|
|
20194
19469
|
{
|
|
20195
19470
|
ref,
|
|
@@ -20205,7 +19480,7 @@ var MenubarRadioItem = React63.forwardRef(({ className, children, ...props }, re
|
|
|
20205
19480
|
}
|
|
20206
19481
|
));
|
|
20207
19482
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
20208
|
-
var MenubarLabel =
|
|
19483
|
+
var MenubarLabel = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20209
19484
|
MenubarPrimitive.Label,
|
|
20210
19485
|
{
|
|
20211
19486
|
ref,
|
|
@@ -20218,7 +19493,7 @@ var MenubarLabel = React63.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
20218
19493
|
}
|
|
20219
19494
|
));
|
|
20220
19495
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
20221
|
-
var MenubarSeparator =
|
|
19496
|
+
var MenubarSeparator = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20222
19497
|
MenubarPrimitive.Separator,
|
|
20223
19498
|
{
|
|
20224
19499
|
ref,
|
|
@@ -20251,7 +19526,7 @@ var _reactnavigationmenu = require('@radix-ui/react-navigation-menu'); var Navig
|
|
|
20251
19526
|
|
|
20252
19527
|
|
|
20253
19528
|
|
|
20254
|
-
var NavigationMenu =
|
|
19529
|
+
var NavigationMenu = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20255
19530
|
NavigationMenuPrimitive.Root,
|
|
20256
19531
|
{
|
|
20257
19532
|
ref,
|
|
@@ -20267,7 +19542,7 @@ var NavigationMenu = React64.forwardRef(({ className, children, ...props }, ref)
|
|
|
20267
19542
|
}
|
|
20268
19543
|
));
|
|
20269
19544
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
20270
|
-
var NavigationMenuList =
|
|
19545
|
+
var NavigationMenuList = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20271
19546
|
NavigationMenuPrimitive.List,
|
|
20272
19547
|
{
|
|
20273
19548
|
ref,
|
|
@@ -20283,7 +19558,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
20283
19558
|
var navigationMenuTriggerStyle = _classvarianceauthority.cva.call(void 0,
|
|
20284
19559
|
"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
20285
19560
|
);
|
|
20286
|
-
var NavigationMenuTrigger =
|
|
19561
|
+
var NavigationMenuTrigger = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20287
19562
|
NavigationMenuPrimitive.Trigger,
|
|
20288
19563
|
{
|
|
20289
19564
|
ref,
|
|
@@ -20303,7 +19578,7 @@ var NavigationMenuTrigger = React64.forwardRef(({ className, children, ...props
|
|
|
20303
19578
|
}
|
|
20304
19579
|
));
|
|
20305
19580
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
20306
|
-
var NavigationMenuContent =
|
|
19581
|
+
var NavigationMenuContent = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20307
19582
|
NavigationMenuPrimitive.Content,
|
|
20308
19583
|
{
|
|
20309
19584
|
ref,
|
|
@@ -20316,7 +19591,7 @@ var NavigationMenuContent = React64.forwardRef(({ className, ...props }, ref) =>
|
|
|
20316
19591
|
));
|
|
20317
19592
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
20318
19593
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
20319
|
-
var NavigationMenuViewport =
|
|
19594
|
+
var NavigationMenuViewport = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20320
19595
|
NavigationMenuPrimitive.Viewport,
|
|
20321
19596
|
{
|
|
20322
19597
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -20328,7 +19603,7 @@ var NavigationMenuViewport = React64.forwardRef(({ className, ...props }, ref) =
|
|
|
20328
19603
|
}
|
|
20329
19604
|
) }));
|
|
20330
19605
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
20331
|
-
var NavigationMenuIndicator =
|
|
19606
|
+
var NavigationMenuIndicator = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20332
19607
|
NavigationMenuPrimitive.Indicator,
|
|
20333
19608
|
{
|
|
20334
19609
|
ref,
|
|
@@ -20387,19 +19662,19 @@ function TabNavigation({
|
|
|
20387
19662
|
const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
|
|
20388
19663
|
const getInitialTab = () => {
|
|
20389
19664
|
if (isUrlSyncEnabled) {
|
|
20390
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
19665
|
+
const fromUrl = _optionalChain([searchParams, 'optionalAccess', _466 => _466.get, 'call', _467 => _467(paramName)]) || "";
|
|
20391
19666
|
if (validTabIds.has(fromUrl)) {
|
|
20392
19667
|
return fromUrl;
|
|
20393
19668
|
}
|
|
20394
19669
|
}
|
|
20395
|
-
return defaultTab || _optionalChain([tabs, 'access',
|
|
19670
|
+
return defaultTab || _optionalChain([tabs, 'access', _468 => _468[0], 'optionalAccess', _469 => _469.id]) || "";
|
|
20396
19671
|
};
|
|
20397
19672
|
const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
|
|
20398
19673
|
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
20399
19674
|
_react.useEffect.call(void 0, () => {
|
|
20400
19675
|
if (!isUrlSyncEnabled) return;
|
|
20401
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
20402
|
-
const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access',
|
|
19676
|
+
const fromUrl = _optionalChain([searchParams, 'optionalAccess', _470 => _470.get, 'call', _471 => _471(paramName)]) || "";
|
|
19677
|
+
const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _472 => _472[0], 'optionalAccess', _473 => _473.id]) || "";
|
|
20403
19678
|
if (nextTab !== internalActiveTab) {
|
|
20404
19679
|
setInternalActiveTab(nextTab);
|
|
20405
19680
|
}
|
|
@@ -20407,13 +19682,13 @@ function TabNavigation({
|
|
|
20407
19682
|
const handleTabChange = (tabId) => {
|
|
20408
19683
|
if (isUrlSyncEnabled) {
|
|
20409
19684
|
setInternalActiveTab(tabId);
|
|
20410
|
-
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess',
|
|
19685
|
+
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _474 => _474.toString, 'call', _475 => _475()]));
|
|
20411
19686
|
params.set(paramName, tabId);
|
|
20412
19687
|
const method = replaceState ? "replace" : "push";
|
|
20413
19688
|
router[method](`${pathname}?${params.toString()}`);
|
|
20414
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19689
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _476 => _476(tabId)]);
|
|
20415
19690
|
} else {
|
|
20416
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19691
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _477 => _477(tabId)]);
|
|
20417
19692
|
}
|
|
20418
19693
|
};
|
|
20419
19694
|
const scrollRef = _react.useRef.call(void 0, null);
|
|
@@ -20501,7 +19776,7 @@ function TabNavigation({
|
|
|
20501
19776
|
var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
|
|
20502
19777
|
var getTabComponent = (tabs, tabId) => {
|
|
20503
19778
|
const tab = getTabById(tabs, tabId);
|
|
20504
|
-
return _optionalChain([tab, 'optionalAccess',
|
|
19779
|
+
return _optionalChain([tab, 'optionalAccess', _478 => _478.component]) || null;
|
|
20505
19780
|
};
|
|
20506
19781
|
|
|
20507
19782
|
// src/components/ui/alert.tsx
|
|
@@ -20523,7 +19798,7 @@ var alertVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
20523
19798
|
}
|
|
20524
19799
|
}
|
|
20525
19800
|
);
|
|
20526
|
-
var Alert =
|
|
19801
|
+
var Alert = React65.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20527
19802
|
"div",
|
|
20528
19803
|
{
|
|
20529
19804
|
ref,
|
|
@@ -20533,7 +19808,7 @@ var Alert = React66.forwardRef(({ className, variant, ...props }, ref) => /* @__
|
|
|
20533
19808
|
}
|
|
20534
19809
|
));
|
|
20535
19810
|
Alert.displayName = "Alert";
|
|
20536
|
-
var AlertTitle =
|
|
19811
|
+
var AlertTitle = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20537
19812
|
"h5",
|
|
20538
19813
|
{
|
|
20539
19814
|
ref,
|
|
@@ -20542,7 +19817,7 @@ var AlertTitle = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20542
19817
|
}
|
|
20543
19818
|
));
|
|
20544
19819
|
AlertTitle.displayName = "AlertTitle";
|
|
20545
|
-
var AlertDescription =
|
|
19820
|
+
var AlertDescription = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20546
19821
|
"div",
|
|
20547
19822
|
{
|
|
20548
19823
|
ref,
|
|
@@ -20557,7 +19832,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
20557
19832
|
|
|
20558
19833
|
var _reactprogress = require('@radix-ui/react-progress'); var ProgressPrimitive = _interopRequireWildcard(_reactprogress);
|
|
20559
19834
|
|
|
20560
|
-
var Progress =
|
|
19835
|
+
var Progress = React66.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20561
19836
|
ProgressPrimitive.Root,
|
|
20562
19837
|
{
|
|
20563
19838
|
ref,
|
|
@@ -20838,16 +20113,16 @@ function FilterModal({
|
|
|
20838
20113
|
};
|
|
20839
20114
|
const handleReset = () => {
|
|
20840
20115
|
onFilterChange({});
|
|
20841
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20116
|
+
_optionalChain([onTagsChange, 'optionalCall', _479 => _479([])]);
|
|
20842
20117
|
onClose();
|
|
20843
20118
|
};
|
|
20844
20119
|
const handleApply = () => {
|
|
20845
20120
|
onFilterChange(selectedFilters);
|
|
20846
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20121
|
+
_optionalChain([onTagsChange, 'optionalCall', _480 => _480(pendingTags)]);
|
|
20847
20122
|
onClose();
|
|
20848
20123
|
};
|
|
20849
20124
|
const getColumnDirection = (columnKey) => {
|
|
20850
|
-
return _optionalChain([sortConfig, 'optionalAccess',
|
|
20125
|
+
return _optionalChain([sortConfig, 'optionalAccess', _481 => _481.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
|
|
20851
20126
|
};
|
|
20852
20127
|
const hasSort = !!sortConfig && sortConfig.columns.length > 0;
|
|
20853
20128
|
const hasFilterGroups = filterGroups.length > 0;
|
|
@@ -20896,7 +20171,7 @@ function FilterModal({
|
|
|
20896
20171
|
{
|
|
20897
20172
|
column,
|
|
20898
20173
|
currentDirection: getColumnDirection(column.key),
|
|
20899
|
-
onSort: (direction) => _optionalChain([onSort, 'optionalCall',
|
|
20174
|
+
onSort: (direction) => _optionalChain([onSort, 'optionalCall', _482 => _482(column.key, direction)]),
|
|
20900
20175
|
onClear: onSortClear ? () => onSortClear(column.key) : void 0
|
|
20901
20176
|
},
|
|
20902
20177
|
column.key
|
|
@@ -21062,9 +20337,9 @@ function TitleBlock({
|
|
|
21062
20337
|
const [imageFailed, setImageFailed] = React33.default.useState(false);
|
|
21063
20338
|
React33.default.useEffect(() => {
|
|
21064
20339
|
setImageFailed(false);
|
|
21065
|
-
}, [_optionalChain([image, 'optionalAccess',
|
|
20340
|
+
}, [_optionalChain([image, 'optionalAccess', _483 => _483.src])]);
|
|
21066
20341
|
const showImageFallback = !!image && (imageFailed || !image.src);
|
|
21067
|
-
const initials = getInitials3(_optionalChain([image, 'optionalAccess',
|
|
20342
|
+
const initials = getInitials3(_optionalChain([image, 'optionalAccess', _484 => _484.alt]) || title);
|
|
21068
20343
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
21069
20344
|
"div",
|
|
21070
20345
|
{
|
|
@@ -21198,7 +20473,7 @@ var toggleVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
21198
20473
|
}
|
|
21199
20474
|
}
|
|
21200
20475
|
);
|
|
21201
|
-
var Toggle =
|
|
20476
|
+
var Toggle = React69.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21202
20477
|
TogglePrimitive.Root,
|
|
21203
20478
|
{
|
|
21204
20479
|
ref,
|
|
@@ -21210,11 +20485,11 @@ Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
|
21210
20485
|
|
|
21211
20486
|
// src/components/toggle-group.tsx
|
|
21212
20487
|
|
|
21213
|
-
var ToggleGroupContext =
|
|
20488
|
+
var ToggleGroupContext = React70.createContext({
|
|
21214
20489
|
size: "default",
|
|
21215
20490
|
variant: "default"
|
|
21216
20491
|
});
|
|
21217
|
-
var ToggleGroup =
|
|
20492
|
+
var ToggleGroup = React70.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21218
20493
|
ToggleGroupPrimitive.Root,
|
|
21219
20494
|
{
|
|
21220
20495
|
ref,
|
|
@@ -21224,8 +20499,8 @@ var ToggleGroup = React71.forwardRef(({ className, variant, size, children, ...p
|
|
|
21224
20499
|
}
|
|
21225
20500
|
));
|
|
21226
20501
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
21227
|
-
var ToggleGroupItem =
|
|
21228
|
-
const context =
|
|
20502
|
+
var ToggleGroupItem = React70.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
|
|
20503
|
+
const context = React70.useContext(ToggleGroupContext);
|
|
21229
20504
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21230
20505
|
ToggleGroupPrimitive.Item,
|
|
21231
20506
|
{
|
|
@@ -21584,8 +20859,8 @@ function FloatingTooltip({
|
|
|
21584
20859
|
className,
|
|
21585
20860
|
delayDuration = 0
|
|
21586
20861
|
}) {
|
|
21587
|
-
const [isOpen, setIsOpen] =
|
|
21588
|
-
const arrowRef =
|
|
20862
|
+
const [isOpen, setIsOpen] = React73.useState(false);
|
|
20863
|
+
const arrowRef = React73.useRef(null);
|
|
21589
20864
|
const { refs, floatingStyles, context, placement, middlewareData } = _react2.useFloating.call(void 0, {
|
|
21590
20865
|
open: isOpen,
|
|
21591
20866
|
onOpenChange: setIsOpen,
|
|
@@ -21614,7 +20889,7 @@ function FloatingTooltip({
|
|
|
21614
20889
|
dismiss,
|
|
21615
20890
|
role
|
|
21616
20891
|
]);
|
|
21617
|
-
const parsedContent =
|
|
20892
|
+
const parsedContent = React73.useMemo(() => {
|
|
21618
20893
|
if (typeof content === "string") {
|
|
21619
20894
|
return parseColoredText(content);
|
|
21620
20895
|
}
|
|
@@ -21860,26 +21135,26 @@ function DeviceCard({
|
|
|
21860
21135
|
] }),
|
|
21861
21136
|
device.organization && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: device.organization })
|
|
21862
21137
|
] }),
|
|
21863
|
-
_optionalChain([actions, 'access',
|
|
21138
|
+
_optionalChain([actions, 'access', _485 => _485.moreButton, 'optionalAccess', _486 => _486.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21864
21139
|
"div",
|
|
21865
21140
|
{
|
|
21866
21141
|
className: "flex items-center justify-center p-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
|
|
21867
21142
|
onClick: (e) => {
|
|
21868
21143
|
e.stopPropagation();
|
|
21869
|
-
_optionalChain([actions, 'access',
|
|
21144
|
+
_optionalChain([actions, 'access', _487 => _487.moreButton, 'optionalAccess', _488 => _488.onClick, 'optionalCall', _489 => _489()]);
|
|
21870
21145
|
},
|
|
21871
21146
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
|
|
21872
21147
|
}
|
|
21873
21148
|
),
|
|
21874
|
-
_optionalChain([actions, 'access',
|
|
21875
|
-
_optionalChain([actions, 'access',
|
|
21149
|
+
_optionalChain([actions, 'access', _490 => _490.detailsButton, 'optionalAccess', _491 => _491.visible]) !== false && _optionalChain([actions, 'access', _492 => _492.detailsButton, 'optionalAccess', _493 => _493.component]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
|
|
21150
|
+
_optionalChain([actions, 'access', _494 => _494.customActions, 'optionalAccess', _495 => _495.map, 'call', _496 => _496(
|
|
21876
21151
|
(action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21877
21152
|
"div",
|
|
21878
21153
|
{
|
|
21879
21154
|
className: "flex items-center justify-center px-4 py-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
|
|
21880
21155
|
onClick: (e) => {
|
|
21881
21156
|
e.stopPropagation();
|
|
21882
|
-
_optionalChain([action, 'access',
|
|
21157
|
+
_optionalChain([action, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
|
|
21883
21158
|
},
|
|
21884
21159
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
|
|
21885
21160
|
},
|
|
@@ -22159,7 +21434,7 @@ function HighlightCardGrid({
|
|
|
22159
21434
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
22160
21435
|
|
|
22161
21436
|
|
|
22162
|
-
var IconsBlock =
|
|
21437
|
+
var IconsBlock = React74.forwardRef(
|
|
22163
21438
|
({ className, icons = [], size = "md", ...props }, ref) => {
|
|
22164
21439
|
const sizeClasses5 = {
|
|
22165
21440
|
sm: "h-4 w-4",
|
|
@@ -22238,7 +21513,7 @@ function MoreActionsMenu({
|
|
|
22238
21513
|
] });
|
|
22239
21514
|
const handleActivate = (e) => {
|
|
22240
21515
|
e.stopPropagation();
|
|
22241
|
-
if (!item.disabled) _optionalChain([item, 'access',
|
|
21516
|
+
if (!item.disabled) _optionalChain([item, 'access', _499 => _499.onClick, 'optionalCall', _500 => _500()]);
|
|
22242
21517
|
};
|
|
22243
21518
|
if (item.href) {
|
|
22244
21519
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -22388,7 +21663,7 @@ function OrganizationIcon({
|
|
|
22388
21663
|
backgroundStyle = "dark"
|
|
22389
21664
|
}) {
|
|
22390
21665
|
const { width, height } = imageSizeMap2[size];
|
|
22391
|
-
const initials = _optionalChain([organizationName, 'optionalAccess',
|
|
21666
|
+
const initials = _optionalChain([organizationName, 'optionalAccess', _501 => _501.substring, 'call', _502 => _502(0, 2)]) || "??";
|
|
22392
21667
|
const containerClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
22393
21668
|
sizeClasses3[size],
|
|
22394
21669
|
"rounded-lg flex items-center justify-center flex-shrink-0 relative",
|
|
@@ -22439,7 +21714,7 @@ function OrganizationCard({
|
|
|
22439
21714
|
const handleActionClick = (e) => {
|
|
22440
21715
|
e.preventDefault();
|
|
22441
21716
|
e.stopPropagation();
|
|
22442
|
-
_optionalChain([actionButton, 'optionalAccess',
|
|
21717
|
+
_optionalChain([actionButton, 'optionalAccess', _503 => _503.onClick, 'call', _504 => _504(organization, e)]);
|
|
22443
21718
|
};
|
|
22444
21719
|
const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
22445
21720
|
"div",
|
|
@@ -22534,7 +21809,7 @@ var LOG_SEVERITY_LABELS = {
|
|
|
22534
21809
|
|
|
22535
21810
|
// src/components/log-severity-dot.tsx
|
|
22536
21811
|
|
|
22537
|
-
var LogSeverityDot =
|
|
21812
|
+
var LogSeverityDot = React76.forwardRef(({ severity, size = "md", className }, ref) => {
|
|
22538
21813
|
const sizeClasses5 = {
|
|
22539
21814
|
sm: "w-4 h-4",
|
|
22540
21815
|
md: "w-6 h-6",
|
|
@@ -22596,7 +21871,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22596
21871
|
onKeyDown: (e) => {
|
|
22597
21872
|
if (e.key === "Enter" || e.key === " ") {
|
|
22598
21873
|
e.preventDefault();
|
|
22599
|
-
_optionalChain([onClick, 'optionalCall',
|
|
21874
|
+
_optionalChain([onClick, 'optionalCall', _505 => _505()]);
|
|
22600
21875
|
}
|
|
22601
21876
|
},
|
|
22602
21877
|
children: [
|
|
@@ -22624,7 +21899,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22624
21899
|
)
|
|
22625
21900
|
] });
|
|
22626
21901
|
};
|
|
22627
|
-
var LogsList =
|
|
21902
|
+
var LogsList = React77.forwardRef(({
|
|
22628
21903
|
logs,
|
|
22629
21904
|
maxHeight = "400px",
|
|
22630
21905
|
showConnector = true,
|
|
@@ -22633,7 +21908,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22633
21908
|
emptyMessage = "No logs to display",
|
|
22634
21909
|
className
|
|
22635
21910
|
}, ref) => {
|
|
22636
|
-
const containerRef =
|
|
21911
|
+
const containerRef = React77.useRef(null);
|
|
22637
21912
|
const isFullHeight = maxHeight === "100%";
|
|
22638
21913
|
const getContainerStyles = () => {
|
|
22639
21914
|
if (isFullHeight) return void 0;
|
|
@@ -22697,7 +21972,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22697
21972
|
log,
|
|
22698
21973
|
isLast: index === logs.length - 1,
|
|
22699
21974
|
showConnector,
|
|
22700
|
-
onClick: () => _optionalChain([onLogClick, 'optionalCall',
|
|
21975
|
+
onClick: () => _optionalChain([onLogClick, 'optionalCall', _506 => _506(log)])
|
|
22701
21976
|
},
|
|
22702
21977
|
log.id
|
|
22703
21978
|
))
|
|
@@ -22938,7 +22213,7 @@ var _reacttooltip = require('@radix-ui/react-tooltip'); var TooltipPrimitive = _
|
|
|
22938
22213
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
22939
22214
|
var Tooltip = TooltipPrimitive.Root;
|
|
22940
22215
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
22941
|
-
var TooltipContent =
|
|
22216
|
+
var TooltipContent = React79.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
22942
22217
|
TooltipPrimitive.Content,
|
|
22943
22218
|
{
|
|
22944
22219
|
ref,
|
|
@@ -23286,7 +22561,7 @@ function CursorPaginationSimple({
|
|
|
23286
22561
|
{
|
|
23287
22562
|
variant: "transparent",
|
|
23288
22563
|
size: "icon",
|
|
23289
|
-
onClick: () => _optionalChain([onPrevious, 'optionalCall',
|
|
22564
|
+
onClick: () => _optionalChain([onPrevious, 'optionalCall', _507 => _507("")]),
|
|
23290
22565
|
disabled: !hasPreviousPage || loading,
|
|
23291
22566
|
className: "h-8 w-8",
|
|
23292
22567
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
|
|
@@ -23298,7 +22573,7 @@ function CursorPaginationSimple({
|
|
|
23298
22573
|
{
|
|
23299
22574
|
variant: "transparent",
|
|
23300
22575
|
size: "icon",
|
|
23301
|
-
onClick: () => _optionalChain([onNext, 'optionalCall',
|
|
22576
|
+
onClick: () => _optionalChain([onNext, 'optionalCall', _508 => _508("")]),
|
|
23302
22577
|
disabled: !hasNextPage || loading,
|
|
23303
22578
|
className: "h-8 w-8",
|
|
23304
22579
|
rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
|
|
@@ -23358,7 +22633,7 @@ function TableColumnFilterDropdown({
|
|
|
23358
22633
|
placement = "bottom-start",
|
|
23359
22634
|
dropdownClassName = "min-w-[240px]"
|
|
23360
22635
|
}) {
|
|
23361
|
-
const activeCount = _optionalChain([filters, 'optionalAccess',
|
|
22636
|
+
const activeCount = _optionalChain([filters, 'optionalAccess', _509 => _509[columnKey], 'optionalAccess', _510 => _510.length]) || 0;
|
|
23362
22637
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23363
22638
|
FiltersDropdown,
|
|
23364
22639
|
{
|
|
@@ -23401,7 +22676,7 @@ function TableColumnFilterDropdown({
|
|
|
23401
22676
|
delete newFilters[columnKey];
|
|
23402
22677
|
onFilterChange(newFilters);
|
|
23403
22678
|
},
|
|
23404
|
-
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess',
|
|
22679
|
+
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _511 => _511[columnKey]]) || [] },
|
|
23405
22680
|
placement,
|
|
23406
22681
|
dropdownClassName
|
|
23407
22682
|
}
|
|
@@ -23698,7 +22973,7 @@ function TableRow({
|
|
|
23698
22973
|
const keys = column.key.split(".");
|
|
23699
22974
|
let value = item;
|
|
23700
22975
|
for (const key of keys) {
|
|
23701
|
-
value = _optionalChain([value, 'optionalAccess',
|
|
22976
|
+
value = _optionalChain([value, 'optionalAccess', _512 => _512[key]]);
|
|
23702
22977
|
}
|
|
23703
22978
|
if (value === null || value === void 0) {
|
|
23704
22979
|
return "-";
|
|
@@ -23768,7 +23043,7 @@ function TableRow({
|
|
|
23768
23043
|
// src/components/ui/table/table.tsx
|
|
23769
23044
|
|
|
23770
23045
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
23771
|
-
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess',
|
|
23046
|
+
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _513 => _513.length])) || Boolean(renderRowActions);
|
|
23772
23047
|
const result = [...columns];
|
|
23773
23048
|
if (hasActions) {
|
|
23774
23049
|
const actionsColumn = {
|
|
@@ -23862,7 +23137,7 @@ function Table({
|
|
|
23862
23137
|
return rowKey(item);
|
|
23863
23138
|
}
|
|
23864
23139
|
const key = item[rowKey];
|
|
23865
|
-
return _optionalChain([key, 'optionalAccess',
|
|
23140
|
+
return _optionalChain([key, 'optionalAccess', _514 => _514.toString, 'call', _515 => _515()]) || index.toString();
|
|
23866
23141
|
};
|
|
23867
23142
|
const getRowClassName = (item, index) => {
|
|
23868
23143
|
if (typeof rowClassName === "function") {
|
|
@@ -23896,23 +23171,23 @@ function Table({
|
|
|
23896
23171
|
const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
|
|
23897
23172
|
const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
|
|
23898
23173
|
const sentinelRef = _react.useRef.call(void 0, null);
|
|
23899
|
-
const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess',
|
|
23900
|
-
onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess',
|
|
23174
|
+
const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _516 => _516.onLoadMore]));
|
|
23175
|
+
onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _517 => _517.onLoadMore]);
|
|
23901
23176
|
_react.useEffect.call(void 0, () => {
|
|
23902
|
-
if (!_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23177
|
+
if (!_optionalChain([infiniteScroll, 'optionalAccess', _518 => _518.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
|
|
23903
23178
|
const sentinel = sentinelRef.current;
|
|
23904
23179
|
if (!sentinel) return;
|
|
23905
23180
|
const observer = new IntersectionObserver(
|
|
23906
23181
|
(entries) => {
|
|
23907
|
-
if (_optionalChain([entries, 'access',
|
|
23908
|
-
_optionalChain([onLoadMoreRef, 'access',
|
|
23182
|
+
if (_optionalChain([entries, 'access', _519 => _519[0], 'optionalAccess', _520 => _520.isIntersecting])) {
|
|
23183
|
+
_optionalChain([onLoadMoreRef, 'access', _521 => _521.current, 'optionalCall', _522 => _522()]);
|
|
23909
23184
|
}
|
|
23910
23185
|
},
|
|
23911
23186
|
{ rootMargin: "200px" }
|
|
23912
23187
|
);
|
|
23913
23188
|
observer.observe(sentinel);
|
|
23914
23189
|
return () => observer.disconnect();
|
|
23915
|
-
}, [_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23190
|
+
}, [_optionalChain([infiniteScroll, 'optionalAccess', _523 => _523.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _524 => _524.isFetchingNextPage])]);
|
|
23916
23191
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
|
|
23917
23192
|
showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2", children: [
|
|
23918
23193
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
|
|
@@ -23983,7 +23258,7 @@ function Table({
|
|
|
23983
23258
|
},
|
|
23984
23259
|
getRowKey(item, index)
|
|
23985
23260
|
)),
|
|
23986
|
-
_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23261
|
+
_optionalChain([infiniteScroll, 'optionalAccess', _525 => _525.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23987
23262
|
TableCardSkeleton,
|
|
23988
23263
|
{
|
|
23989
23264
|
columns,
|
|
@@ -23992,7 +23267,7 @@ function Table({
|
|
|
23992
23267
|
hasChevron: Boolean(rowHref)
|
|
23993
23268
|
}
|
|
23994
23269
|
),
|
|
23995
|
-
_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23270
|
+
_optionalChain([infiniteScroll, 'optionalAccess', _526 => _526.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
|
|
23996
23271
|
!infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
23997
23272
|
"div",
|
|
23998
23273
|
{
|
|
@@ -24350,7 +23625,7 @@ function QueryReportTable({
|
|
|
24350
23625
|
);
|
|
24351
23626
|
const handleExport = () => {
|
|
24352
23627
|
exportToCSV(data, columns, exportFilename);
|
|
24353
|
-
_optionalChain([onExport, 'optionalCall',
|
|
23628
|
+
_optionalChain([onExport, 'optionalCall', _527 => _527()]);
|
|
24354
23629
|
};
|
|
24355
23630
|
const tableMinWidth = columns.length * (columnWidth + 16);
|
|
24356
23631
|
const {
|
|
@@ -24523,7 +23798,7 @@ function DataTableColumnFilter({
|
|
|
24523
23798
|
align = "left"
|
|
24524
23799
|
}) {
|
|
24525
23800
|
const currentValue = column.getFilterValue();
|
|
24526
|
-
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess',
|
|
23801
|
+
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _528 => _528.length]), () => ( 0));
|
|
24527
23802
|
const sections = _react.useMemo.call(void 0,
|
|
24528
23803
|
() => [
|
|
24529
23804
|
{
|
|
@@ -24603,7 +23878,7 @@ function DataTableHeader({
|
|
|
24603
23878
|
const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
|
|
24604
23879
|
if (header.isPlaceholder) return false;
|
|
24605
23880
|
if (isLgUp) return true;
|
|
24606
|
-
return Boolean(_optionalChain([header, 'access',
|
|
23881
|
+
return Boolean(_optionalChain([header, 'access', _529 => _529.column, 'access', _530 => _530.columnDef, 'access', _531 => _531.meta, 'optionalAccess', _532 => _532.filter]));
|
|
24607
23882
|
});
|
|
24608
23883
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24609
23884
|
"div",
|
|
@@ -24633,20 +23908,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24633
23908
|
if (header.isPlaceholder) return null;
|
|
24634
23909
|
const column = header.column;
|
|
24635
23910
|
const meta = column.columnDef.meta;
|
|
24636
|
-
const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess',
|
|
24637
|
-
const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess',
|
|
24638
|
-
const canSort = _optionalChain([meta, 'optionalAccess',
|
|
24639
|
-
const sortDir = _optionalChain([sort, 'optionalAccess',
|
|
23911
|
+
const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _533 => _533.filter]));
|
|
23912
|
+
const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _534 => _534.align]), () => ( "left"));
|
|
23913
|
+
const canSort = _optionalChain([meta, 'optionalAccess', _535 => _535.sortable]) === true;
|
|
23914
|
+
const sortDir = _optionalChain([sort, 'optionalAccess', _536 => _536.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
|
|
24640
23915
|
if (!isLgUp && !hasFilter) return null;
|
|
24641
23916
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24642
23917
|
"div",
|
|
24643
23918
|
{
|
|
24644
23919
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24645
23920
|
"flex items-stretch",
|
|
24646
|
-
isLgUp && (_optionalChain([meta, 'optionalAccess',
|
|
24647
|
-
_optionalChain([meta, 'optionalAccess',
|
|
23921
|
+
isLgUp && (_optionalChain([meta, 'optionalAccess', _537 => _537.width]) || "flex-1 min-w-0"),
|
|
23922
|
+
_optionalChain([meta, 'optionalAccess', _538 => _538.headerClassName]),
|
|
24648
23923
|
// Don't apply hide classes if column is filterable on tablet (keep filter accessible)
|
|
24649
|
-
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess',
|
|
23924
|
+
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _539 => _539.hideAt]))
|
|
24650
23925
|
),
|
|
24651
23926
|
children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24652
23927
|
DataTableColumnFilter,
|
|
@@ -24665,7 +23940,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24665
23940
|
isLgUp && alignJustify(align),
|
|
24666
23941
|
canSort && "group cursor-pointer"
|
|
24667
23942
|
),
|
|
24668
|
-
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall',
|
|
23943
|
+
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _540 => _540(column.id)]) : void 0,
|
|
24669
23944
|
children: [
|
|
24670
23945
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
|
|
24671
23946
|
canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
|
|
@@ -24749,7 +24024,7 @@ function DataTableSkeleton({
|
|
|
24749
24024
|
}) {
|
|
24750
24025
|
const table = useDataTableContext();
|
|
24751
24026
|
const columns = table.getVisibleFlatColumns();
|
|
24752
|
-
const firstColumnId = _optionalChain([columns, 'access',
|
|
24027
|
+
const firstColumnId = _optionalChain([columns, 'access', _541 => _541[0], 'optionalAccess', _542 => _542.id]);
|
|
24753
24028
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24754
24029
|
"div",
|
|
24755
24030
|
{
|
|
@@ -24773,7 +24048,7 @@ function DataTableSkeleton({
|
|
|
24773
24048
|
{
|
|
24774
24049
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24775
24050
|
"flex flex-col justify-center shrink-0",
|
|
24776
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24051
|
+
_optionalChain([meta, 'optionalAccess', _543 => _543.width]) || "flex-1"
|
|
24777
24052
|
),
|
|
24778
24053
|
children: [
|
|
24779
24054
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xxs)]" }),
|
|
@@ -24819,7 +24094,7 @@ function DataTableRowImpl({
|
|
|
24819
24094
|
(e) => {
|
|
24820
24095
|
const target = e.target;
|
|
24821
24096
|
if (target.closest("[data-no-row-click]")) return;
|
|
24822
|
-
_optionalChain([onClick, 'optionalCall',
|
|
24097
|
+
_optionalChain([onClick, 'optionalCall', _544 => _544(row.original)]);
|
|
24823
24098
|
},
|
|
24824
24099
|
[onClick, row.original]
|
|
24825
24100
|
);
|
|
@@ -24857,10 +24132,10 @@ function DataTableRowImpl({
|
|
|
24857
24132
|
{
|
|
24858
24133
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24859
24134
|
"flex flex-col overflow-hidden",
|
|
24860
|
-
alignJustify(_optionalChain([meta, 'optionalAccess',
|
|
24861
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24862
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24863
|
-
getHideClasses2(_optionalChain([meta, 'optionalAccess',
|
|
24135
|
+
alignJustify(_optionalChain([meta, 'optionalAccess', _545 => _545.align])),
|
|
24136
|
+
_optionalChain([meta, 'optionalAccess', _546 => _546.width]) || "flex-1 min-w-0",
|
|
24137
|
+
_optionalChain([meta, 'optionalAccess', _547 => _547.cellClassName]),
|
|
24138
|
+
getHideClasses2(_optionalChain([meta, 'optionalAccess', _548 => _548.hideAt]))
|
|
24864
24139
|
),
|
|
24865
24140
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
|
|
24866
24141
|
},
|
|
@@ -24906,7 +24181,7 @@ function DataTableBody({
|
|
|
24906
24181
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: [
|
|
24907
24182
|
rows.map((row, index) => {
|
|
24908
24183
|
const item = row.original;
|
|
24909
|
-
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall',
|
|
24184
|
+
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _549 => _549(item)]), () => ( void 0));
|
|
24910
24185
|
const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
|
|
24911
24186
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24912
24187
|
DataTableRow,
|
|
@@ -24970,7 +24245,7 @@ function DataTableInfiniteFooter({
|
|
|
24970
24245
|
if (!sentinel) return;
|
|
24971
24246
|
const observer = new IntersectionObserver(
|
|
24972
24247
|
(entries) => {
|
|
24973
|
-
if (_optionalChain([entries, 'access',
|
|
24248
|
+
if (_optionalChain([entries, 'access', _550 => _550[0], 'optionalAccess', _551 => _551.isIntersecting])) onLoadMoreRef.current();
|
|
24974
24249
|
},
|
|
24975
24250
|
{ rootMargin }
|
|
24976
24251
|
);
|
|
@@ -25018,7 +24293,7 @@ function DataTableRowCount({
|
|
|
25018
24293
|
const table = useDataTableContext();
|
|
25019
24294
|
const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
|
|
25020
24295
|
if (hideWhenEmpty && count === 0) return null;
|
|
25021
|
-
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall',
|
|
24296
|
+
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _552 => _552(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
|
|
25022
24297
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25023
24298
|
"span",
|
|
25024
24299
|
{
|
|
@@ -25112,12 +24387,12 @@ function PhoneInput({
|
|
|
25112
24387
|
const runValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25113
24388
|
if (!phone || digitCount(phone) === 0) {
|
|
25114
24389
|
setIsInvalid(false);
|
|
25115
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24390
|
+
_optionalChain([onValidationChange, 'optionalCall', _553 => _553(false)]);
|
|
25116
24391
|
return;
|
|
25117
24392
|
}
|
|
25118
24393
|
const invalid = !validatePhoneNumber(phone, countryCode);
|
|
25119
24394
|
setIsInvalid(invalid);
|
|
25120
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24395
|
+
_optionalChain([onValidationChange, 'optionalCall', _554 => _554(invalid)]);
|
|
25121
24396
|
}, [countryCode, digitCount, onValidationChange]);
|
|
25122
24397
|
const debouncedValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25123
24398
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
@@ -25166,7 +24441,7 @@ function PhoneInput({
|
|
|
25166
24441
|
debouncedValidation(val);
|
|
25167
24442
|
} else if (digitCount(val) === 0) {
|
|
25168
24443
|
setIsInvalid(false);
|
|
25169
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24444
|
+
_optionalChain([onValidationChange, 'optionalCall', _555 => _555(false)]);
|
|
25170
24445
|
}
|
|
25171
24446
|
}
|
|
25172
24447
|
},
|
|
@@ -25244,12 +24519,12 @@ function SearchInput({
|
|
|
25244
24519
|
limitTags = "auto",
|
|
25245
24520
|
getLimitTagsText = (more) => `+${more}`
|
|
25246
24521
|
}) {
|
|
25247
|
-
const [internalValue, setInternalValue] =
|
|
24522
|
+
const [internalValue, setInternalValue] = React81.useState(defaultValue);
|
|
25248
24523
|
const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
|
|
25249
24524
|
const debouncedValue = _chunkALW3D72Ocjs.useDebounce.call(void 0, currentValue, debounceMs);
|
|
25250
|
-
const [isOpen, setIsOpen] =
|
|
25251
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
25252
|
-
const containerRef =
|
|
24525
|
+
const [isOpen, setIsOpen] = React81.useState(false);
|
|
24526
|
+
const [highlightedIndex, setHighlightedIndex] = React81.useState(-1);
|
|
24527
|
+
const containerRef = React81.useRef(null);
|
|
25253
24528
|
const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
|
|
25254
24529
|
const {
|
|
25255
24530
|
visibleCount: rawVisibleCount,
|
|
@@ -25266,14 +24541,14 @@ function SearchInput({
|
|
|
25266
24541
|
placeholder: filterChips.length > 0 ? "" : placeholder
|
|
25267
24542
|
});
|
|
25268
24543
|
const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
|
|
25269
|
-
const hiddenTagsRef =
|
|
25270
|
-
const hiddenTagsPopupRef =
|
|
25271
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
25272
|
-
|
|
24544
|
+
const hiddenTagsRef = React81.useRef(null);
|
|
24545
|
+
const hiddenTagsPopupRef = React81.useRef(null);
|
|
24546
|
+
const [showHiddenTags, setShowHiddenTags] = React81.useState(false);
|
|
24547
|
+
React81.useEffect(() => {
|
|
25273
24548
|
if (!showHiddenTags) return;
|
|
25274
24549
|
const handleClick = (e) => {
|
|
25275
24550
|
const target = e.target;
|
|
25276
|
-
if (!_optionalChain([hiddenTagsRef, 'access',
|
|
24551
|
+
if (!_optionalChain([hiddenTagsRef, 'access', _556 => _556.current, 'optionalAccess', _557 => _557.contains, 'call', _558 => _558(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _559 => _559.current, 'optionalAccess', _560 => _560.contains, 'call', _561 => _561(target)])) {
|
|
25277
24552
|
setShowHiddenTags(false);
|
|
25278
24553
|
}
|
|
25279
24554
|
};
|
|
@@ -25283,7 +24558,7 @@ function SearchInput({
|
|
|
25283
24558
|
const hiddenCount = filterChips.length - visibleCount;
|
|
25284
24559
|
const visibleChips = filterChips.slice(0, visibleCount);
|
|
25285
24560
|
const hiddenChips = filterChips.slice(visibleCount);
|
|
25286
|
-
const { flatResults, groups } =
|
|
24561
|
+
const { flatResults, groups } = React81.useMemo(() => {
|
|
25287
24562
|
if (!groupBy) return { flatResults: results, groups: null };
|
|
25288
24563
|
const grouped = /* @__PURE__ */ new Map();
|
|
25289
24564
|
for (const r of results) {
|
|
@@ -25300,7 +24575,7 @@ function SearchInput({
|
|
|
25300
24575
|
const meetsMinQuery = debouncedValue.length >= minQueryLength;
|
|
25301
24576
|
const autoShow = meetsMinQuery;
|
|
25302
24577
|
const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
|
|
25303
|
-
|
|
24578
|
+
React81.useEffect(() => {
|
|
25304
24579
|
setHighlightedIndex(-1);
|
|
25305
24580
|
}, [flatResults.length]);
|
|
25306
24581
|
const handleChange = (e) => {
|
|
@@ -25321,10 +24596,10 @@ function SearchInput({
|
|
|
25321
24596
|
} else {
|
|
25322
24597
|
setInternalValue("");
|
|
25323
24598
|
}
|
|
25324
|
-
_optionalChain([inputRef, 'access',
|
|
24599
|
+
_optionalChain([inputRef, 'access', _562 => _562.current, 'optionalAccess', _563 => _563.focus, 'call', _564 => _564()]);
|
|
25325
24600
|
};
|
|
25326
24601
|
const handleResultClick = (result) => {
|
|
25327
|
-
_optionalChain([onResultSelect, 'optionalCall',
|
|
24602
|
+
_optionalChain([onResultSelect, 'optionalCall', _565 => _565(result)]);
|
|
25328
24603
|
setIsOpen(false);
|
|
25329
24604
|
};
|
|
25330
24605
|
const handleKeyDown = (e) => {
|
|
@@ -25347,7 +24622,7 @@ function SearchInput({
|
|
|
25347
24622
|
if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
|
|
25348
24623
|
handleResultClick(flatResults[highlightedIndex]);
|
|
25349
24624
|
} else {
|
|
25350
|
-
_optionalChain([onSubmit, 'optionalCall',
|
|
24625
|
+
_optionalChain([onSubmit, 'optionalCall', _566 => _566(currentValue)]);
|
|
25351
24626
|
}
|
|
25352
24627
|
break;
|
|
25353
24628
|
case "Escape":
|
|
@@ -25425,7 +24700,7 @@ function SearchInput({
|
|
|
25425
24700
|
dropdownVisible && "!border-ods-accent"
|
|
25426
24701
|
),
|
|
25427
24702
|
onClick: () => {
|
|
25428
|
-
_optionalChain([inputRef, 'access',
|
|
24703
|
+
_optionalChain([inputRef, 'access', _567 => _567.current, 'optionalAccess', _568 => _568.focus, 'call', _569 => _569()]);
|
|
25429
24704
|
setIsOpen(true);
|
|
25430
24705
|
},
|
|
25431
24706
|
children: [
|
|
@@ -25509,10 +24784,10 @@ function SearchInput({
|
|
|
25509
24784
|
align: "start",
|
|
25510
24785
|
onOpenAutoFocus: (e) => {
|
|
25511
24786
|
e.preventDefault();
|
|
25512
|
-
_optionalChain([inputRef, 'access',
|
|
24787
|
+
_optionalChain([inputRef, 'access', _570 => _570.current, 'optionalAccess', _571 => _571.focus, 'call', _572 => _572()]);
|
|
25513
24788
|
},
|
|
25514
24789
|
onInteractOutside: (e) => {
|
|
25515
|
-
if (_optionalChain([containerRef, 'access',
|
|
24790
|
+
if (_optionalChain([containerRef, 'access', _573 => _573.current, 'optionalAccess', _574 => _574.contains, 'call', _575 => _575(e.target)])) {
|
|
25516
24791
|
e.preventDefault();
|
|
25517
24792
|
}
|
|
25518
24793
|
},
|
|
@@ -25529,10 +24804,10 @@ function SearchInput({
|
|
|
25529
24804
|
ref: hiddenTagsPopupRef,
|
|
25530
24805
|
items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
|
|
25531
24806
|
style: {
|
|
25532
|
-
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access',
|
|
24807
|
+
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _576 => _576.current, 'optionalAccess', _577 => _577.getBoundingClientRect, 'call', _578 => _578(), 'access', _579 => _579.left]), () => ( 0))) : 0
|
|
25533
24808
|
},
|
|
25534
24809
|
onRemove: (value2) => {
|
|
25535
|
-
_optionalChain([onFilterRemove, 'optionalCall',
|
|
24810
|
+
_optionalChain([onFilterRemove, 'optionalCall', _580 => _580(value2)]);
|
|
25536
24811
|
if (hiddenCount <= 1) setShowHiddenTags(false);
|
|
25537
24812
|
}
|
|
25538
24813
|
}
|
|
@@ -25583,7 +24858,7 @@ function FilterListItem({
|
|
|
25583
24858
|
}) {
|
|
25584
24859
|
const handleToggle = () => {
|
|
25585
24860
|
if (disabled) return;
|
|
25586
|
-
_optionalChain([onToggle, 'optionalCall',
|
|
24861
|
+
_optionalChain([onToggle, 'optionalCall', _581 => _581(!selected)]);
|
|
25587
24862
|
};
|
|
25588
24863
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25589
24864
|
"div",
|
|
@@ -25619,7 +24894,7 @@ function FilterListItem({
|
|
|
25619
24894
|
"flex items-start gap-[var(--spacing-system-xxs)] text-h6",
|
|
25620
24895
|
selected ? "text-ods-accent" : "text-ods-text-secondary"
|
|
25621
24896
|
),
|
|
25622
|
-
children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24897
|
+
children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React82.Fragment, { children: [
|
|
25623
24898
|
index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
|
|
25624
24899
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item })
|
|
25625
24900
|
] }, index))
|
|
@@ -25630,7 +24905,7 @@ function FilterListItem({
|
|
|
25630
24905
|
CheckboxPrimitive4.Root,
|
|
25631
24906
|
{
|
|
25632
24907
|
checked: selected,
|
|
25633
|
-
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall',
|
|
24908
|
+
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _582 => _582(c === true)]),
|
|
25634
24909
|
onClick: (e) => e.stopPropagation(),
|
|
25635
24910
|
disabled,
|
|
25636
24911
|
"aria-label": title,
|
|
@@ -25729,7 +25004,7 @@ function TagSearchInput({
|
|
|
25729
25004
|
if (!showHiddenTags) return;
|
|
25730
25005
|
const handleClick = (e) => {
|
|
25731
25006
|
const target = e.target;
|
|
25732
|
-
if (!_optionalChain([hiddenTagsRef, 'access',
|
|
25007
|
+
if (!_optionalChain([hiddenTagsRef, 'access', _583 => _583.current, 'optionalAccess', _584 => _584.contains, 'call', _585 => _585(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _586 => _586.current, 'optionalAccess', _587 => _587.contains, 'call', _588 => _588(target)])) {
|
|
25733
25008
|
setShowHiddenTags(false);
|
|
25734
25009
|
}
|
|
25735
25010
|
};
|
|
@@ -25745,13 +25020,13 @@ function TagSearchInput({
|
|
|
25745
25020
|
e.preventDefault();
|
|
25746
25021
|
onSubmit(searchValue);
|
|
25747
25022
|
}
|
|
25748
|
-
_optionalChain([onKeyDown, 'optionalCall',
|
|
25023
|
+
_optionalChain([onKeyDown, 'optionalCall', _589 => _589(e)]);
|
|
25749
25024
|
};
|
|
25750
25025
|
const handleClearAll = (e) => {
|
|
25751
25026
|
e.stopPropagation();
|
|
25752
25027
|
e.preventDefault();
|
|
25753
|
-
_optionalChain([onClearAll, 'optionalCall',
|
|
25754
|
-
_optionalChain([inputRef, 'access',
|
|
25028
|
+
_optionalChain([onClearAll, 'optionalCall', _590 => _590()]);
|
|
25029
|
+
_optionalChain([inputRef, 'access', _591 => _591.current, 'optionalAccess', _592 => _592.focus, 'call', _593 => _593()]);
|
|
25755
25030
|
};
|
|
25756
25031
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
|
|
25757
25032
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -25768,7 +25043,7 @@ function TagSearchInput({
|
|
|
25768
25043
|
className
|
|
25769
25044
|
),
|
|
25770
25045
|
onClick: () => {
|
|
25771
|
-
if (!disabled) _optionalChain([inputRef, 'access',
|
|
25046
|
+
if (!disabled) _optionalChain([inputRef, 'access', _594 => _594.current, 'optionalAccess', _595 => _595.focus, 'call', _596 => _596()]);
|
|
25772
25047
|
},
|
|
25773
25048
|
children: [
|
|
25774
25049
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 flex items-center pl-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, { className: "text-ods-text-secondary size-4 md:size-6" }) }),
|
|
@@ -25840,7 +25115,7 @@ function TagSearchInput({
|
|
|
25840
25115
|
items: hiddenTags,
|
|
25841
25116
|
disabled,
|
|
25842
25117
|
style: {
|
|
25843
|
-
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access',
|
|
25118
|
+
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _597 => _597.current, 'optionalAccess', _598 => _598.getBoundingClientRect, 'call', _599 => _599(), 'access', _600 => _600.left]), () => ( 0))) : 0
|
|
25844
25119
|
},
|
|
25845
25120
|
onRemove: (value) => {
|
|
25846
25121
|
onTagRemove(value);
|
|
@@ -25942,7 +25217,7 @@ function MarkdownEditor({
|
|
|
25942
25217
|
const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
|
|
25943
25218
|
_react.useEffect.call(void 0, () => {
|
|
25944
25219
|
Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
|
|
25945
|
-
if (_optionalChain([mod, 'access',
|
|
25220
|
+
if (_optionalChain([mod, 'access', _601 => _601.commands, 'optionalAccess', _602 => _602.getExtraCommands])) {
|
|
25946
25221
|
setDefaultExtraCommands(mod.commands.getExtraCommands());
|
|
25947
25222
|
}
|
|
25948
25223
|
});
|
|
@@ -25976,7 +25251,7 @@ function MarkdownEditor({
|
|
|
25976
25251
|
const isImage = file.type.startsWith("image/");
|
|
25977
25252
|
const markdown = isImage ? `` : `[${file.name}](${url})`;
|
|
25978
25253
|
insertTextAtCursor(markdown);
|
|
25979
|
-
_optionalChain([onFileUploaded, 'optionalCall',
|
|
25254
|
+
_optionalChain([onFileUploaded, 'optionalCall', _603 => _603(url, file.name)]);
|
|
25980
25255
|
} catch (error) {
|
|
25981
25256
|
console.error("File upload failed:", error);
|
|
25982
25257
|
setUploadProgress("Upload failed. Please try again.");
|
|
@@ -25989,7 +25264,7 @@ function MarkdownEditor({
|
|
|
25989
25264
|
);
|
|
25990
25265
|
const handleFileInputChange = _react.useCallback.call(void 0,
|
|
25991
25266
|
(e) => {
|
|
25992
|
-
const file = _optionalChain([e, 'access',
|
|
25267
|
+
const file = _optionalChain([e, 'access', _604 => _604.target, 'access', _605 => _605.files, 'optionalAccess', _606 => _606[0]]);
|
|
25993
25268
|
if (file) {
|
|
25994
25269
|
handleFileUpload(file);
|
|
25995
25270
|
e.target.value = "";
|
|
@@ -26000,7 +25275,7 @@ function MarkdownEditor({
|
|
|
26000
25275
|
const handlePaste = _react.useCallback.call(void 0,
|
|
26001
25276
|
(e) => {
|
|
26002
25277
|
if (!onUploadFile) return;
|
|
26003
|
-
const items = _optionalChain([e, 'access',
|
|
25278
|
+
const items = _optionalChain([e, 'access', _607 => _607.clipboardData, 'optionalAccess', _608 => _608.items]);
|
|
26004
25279
|
if (!items) return;
|
|
26005
25280
|
for (const item of items) {
|
|
26006
25281
|
if (item.type.startsWith("image/")) {
|
|
@@ -26025,7 +25300,7 @@ function MarkdownEditor({
|
|
|
26025
25300
|
buttonProps: { "aria-label": "Upload file", title: "Upload file" },
|
|
26026
25301
|
icon: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "w-3 h-3" }),
|
|
26027
25302
|
execute: () => {
|
|
26028
|
-
_optionalChain([fileInputRef, 'access',
|
|
25303
|
+
_optionalChain([fileInputRef, 'access', _609 => _609.current, 'optionalAccess', _610 => _610.click, 'call', _611 => _611()]);
|
|
26029
25304
|
}
|
|
26030
25305
|
} : null;
|
|
26031
25306
|
const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
|
|
@@ -26037,7 +25312,7 @@ function MarkdownEditor({
|
|
|
26037
25312
|
const EDGE_ZONE = 60;
|
|
26038
25313
|
const MAX_SCROLL_SPEED = 15;
|
|
26039
25314
|
const findScrollParent = _react.useCallback.call(void 0, (el) => {
|
|
26040
|
-
let node = _optionalChain([el, 'optionalAccess',
|
|
25315
|
+
let node = _optionalChain([el, 'optionalAccess', _612 => _612.parentElement]);
|
|
26041
25316
|
while (node && node !== document.documentElement) {
|
|
26042
25317
|
const { overflowY } = window.getComputedStyle(node);
|
|
26043
25318
|
if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
|
|
@@ -26180,7 +25455,7 @@ function matchesAccept(file, accept) {
|
|
|
26180
25455
|
});
|
|
26181
25456
|
}
|
|
26182
25457
|
function dragHasFiles(e) {
|
|
26183
|
-
const types = _optionalChain([e, 'access',
|
|
25458
|
+
const types = _optionalChain([e, 'access', _613 => _613.dataTransfer, 'optionalAccess', _614 => _614.types]);
|
|
26184
25459
|
if (!types) return false;
|
|
26185
25460
|
for (let i = 0; i < types.length; i++) {
|
|
26186
25461
|
if (types[i] === "Files") return true;
|
|
@@ -26206,11 +25481,11 @@ function FileUpload({
|
|
|
26206
25481
|
maxListHeight,
|
|
26207
25482
|
acceptWindowDrops = false
|
|
26208
25483
|
}) {
|
|
26209
|
-
const [dragActive, setDragActive] =
|
|
26210
|
-
const [validationError, setValidationError] =
|
|
26211
|
-
const fileInputRef =
|
|
25484
|
+
const [dragActive, setDragActive] = React84.useState(false);
|
|
25485
|
+
const [validationError, setValidationError] = React84.useState(null);
|
|
25486
|
+
const fileInputRef = React84.useRef(null);
|
|
26212
25487
|
const isManaged = managedFiles !== void 0;
|
|
26213
|
-
const files =
|
|
25488
|
+
const files = React84.useMemo(() => {
|
|
26214
25489
|
if (!value) return [];
|
|
26215
25490
|
return Array.isArray(value) ? value : [value];
|
|
26216
25491
|
}, [value]);
|
|
@@ -26258,7 +25533,7 @@ function FileUpload({
|
|
|
26258
25533
|
fileInputRef.current.value = "";
|
|
26259
25534
|
}
|
|
26260
25535
|
};
|
|
26261
|
-
const handleFilesRef =
|
|
25536
|
+
const handleFilesRef = React84.useRef(handleFiles);
|
|
26262
25537
|
handleFilesRef.current = handleFiles;
|
|
26263
25538
|
const handleDrag = (e) => {
|
|
26264
25539
|
e.preventDefault();
|
|
@@ -26275,11 +25550,11 @@ function FileUpload({
|
|
|
26275
25550
|
e.stopPropagation();
|
|
26276
25551
|
setDragActive(false);
|
|
26277
25552
|
if (disabled) return;
|
|
26278
|
-
if (_optionalChain([e, 'access',
|
|
25553
|
+
if (_optionalChain([e, 'access', _615 => _615.dataTransfer, 'access', _616 => _616.files, 'optionalAccess', _617 => _617.length])) {
|
|
26279
25554
|
handleFiles(e.dataTransfer.files);
|
|
26280
25555
|
}
|
|
26281
25556
|
};
|
|
26282
|
-
|
|
25557
|
+
React84.useEffect(() => {
|
|
26283
25558
|
if (!acceptWindowDrops || disabled) return;
|
|
26284
25559
|
let dragCounter = 0;
|
|
26285
25560
|
const onWindowDragEnter = (e) => {
|
|
@@ -26303,7 +25578,7 @@ function FileUpload({
|
|
|
26303
25578
|
e.preventDefault();
|
|
26304
25579
|
dragCounter = 0;
|
|
26305
25580
|
setDragActive(false);
|
|
26306
|
-
if (_optionalChain([e, 'access',
|
|
25581
|
+
if (_optionalChain([e, 'access', _618 => _618.dataTransfer, 'optionalAccess', _619 => _619.files, 'optionalAccess', _620 => _620.length])) {
|
|
26307
25582
|
handleFilesRef.current(e.dataTransfer.files);
|
|
26308
25583
|
}
|
|
26309
25584
|
};
|
|
@@ -26325,7 +25600,7 @@ function FileUpload({
|
|
|
26325
25600
|
};
|
|
26326
25601
|
}, [acceptWindowDrops, disabled]);
|
|
26327
25602
|
const handleFileSelect = (e) => {
|
|
26328
|
-
if (_optionalChain([e, 'access',
|
|
25603
|
+
if (_optionalChain([e, 'access', _621 => _621.target, 'access', _622 => _622.files, 'optionalAccess', _623 => _623.length])) {
|
|
26329
25604
|
handleFiles(e.target.files);
|
|
26330
25605
|
}
|
|
26331
25606
|
};
|
|
@@ -26342,7 +25617,7 @@ function FileUpload({
|
|
|
26342
25617
|
};
|
|
26343
25618
|
const openDialog = async () => {
|
|
26344
25619
|
if (disabled) return;
|
|
26345
|
-
_optionalChain([fileInputRef, 'access',
|
|
25620
|
+
_optionalChain([fileInputRef, 'access', _624 => _624.current, 'optionalAccess', _625 => _625.click, 'call', _626 => _626()]);
|
|
26346
25621
|
};
|
|
26347
25622
|
const displayError = error || validationError || void 0;
|
|
26348
25623
|
const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
|
|
@@ -26420,7 +25695,7 @@ function FileUpload({
|
|
|
26420
25695
|
"button",
|
|
26421
25696
|
{
|
|
26422
25697
|
type: "button",
|
|
26423
|
-
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall',
|
|
25698
|
+
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _627 => _627(entry.id)]),
|
|
26424
25699
|
className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
|
|
26425
25700
|
"aria-label": `Remove ${entry.fileName}`,
|
|
26426
25701
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
|
|
@@ -26521,10 +25796,10 @@ function ImageUploader({
|
|
|
26521
25796
|
alt = "Uploaded image",
|
|
26522
25797
|
className
|
|
26523
25798
|
}) {
|
|
26524
|
-
const inputRef =
|
|
26525
|
-
const [dragActive, setDragActive] =
|
|
26526
|
-
const [pressed, setPressed] =
|
|
26527
|
-
const [validationError, setValidationError] =
|
|
25799
|
+
const inputRef = React85.useRef(null);
|
|
25800
|
+
const [dragActive, setDragActive] = React85.useState(false);
|
|
25801
|
+
const [pressed, setPressed] = React85.useState(false);
|
|
25802
|
+
const [validationError, setValidationError] = React85.useState(null);
|
|
26528
25803
|
const interactive = !disabled && !loading;
|
|
26529
25804
|
const hasImage = Boolean(value);
|
|
26530
25805
|
const displayError = error || validationError || void 0;
|
|
@@ -26543,7 +25818,7 @@ function ImageUploader({
|
|
|
26543
25818
|
onChange(file);
|
|
26544
25819
|
};
|
|
26545
25820
|
const handleFileSelect = (e) => {
|
|
26546
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25821
|
+
validateAndEmit(_optionalChain([e, 'access', _628 => _628.target, 'access', _629 => _629.files, 'optionalAccess', _630 => _630[0]]));
|
|
26547
25822
|
if (inputRef.current) inputRef.current.value = "";
|
|
26548
25823
|
};
|
|
26549
25824
|
const handleDrag = (e) => {
|
|
@@ -26558,11 +25833,11 @@ function ImageUploader({
|
|
|
26558
25833
|
e.stopPropagation();
|
|
26559
25834
|
setDragActive(false);
|
|
26560
25835
|
if (!interactive) return;
|
|
26561
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25836
|
+
validateAndEmit(_optionalChain([e, 'access', _631 => _631.dataTransfer, 'access', _632 => _632.files, 'optionalAccess', _633 => _633[0]]));
|
|
26562
25837
|
};
|
|
26563
25838
|
const openDialog = () => {
|
|
26564
25839
|
if (!interactive) return;
|
|
26565
|
-
_optionalChain([inputRef, 'access',
|
|
25840
|
+
_optionalChain([inputRef, 'access', _634 => _634.current, 'optionalAccess', _635 => _635.click, 'call', _636 => _636()]);
|
|
26566
25841
|
};
|
|
26567
25842
|
const handleRootKeyDown = (e) => {
|
|
26568
25843
|
if (hasImage || !interactive) return;
|
|
@@ -26701,25 +25976,25 @@ function CompactAssigneeDropdown({
|
|
|
26701
25976
|
onAssign,
|
|
26702
25977
|
className
|
|
26703
25978
|
}) {
|
|
26704
|
-
const [isOpen, setIsOpen] =
|
|
26705
|
-
const [search, setSearch] =
|
|
25979
|
+
const [isOpen, setIsOpen] = React86.useState(false);
|
|
25980
|
+
const [search, setSearch] = React86.useState("");
|
|
26706
25981
|
const hasAssignee = !!currentAssignee;
|
|
26707
|
-
|
|
25982
|
+
React86.useEffect(() => {
|
|
26708
25983
|
if (!isOpen) setSearch("");
|
|
26709
25984
|
}, [isOpen]);
|
|
26710
|
-
const filtered =
|
|
25985
|
+
const filtered = React86.useMemo(() => {
|
|
26711
25986
|
const q = search.trim().toLowerCase();
|
|
26712
25987
|
if (!q) return options;
|
|
26713
25988
|
return options.filter((o) => o.label.toLowerCase().includes(q));
|
|
26714
25989
|
}, [options, search]);
|
|
26715
|
-
const orderedOptions =
|
|
25990
|
+
const orderedOptions = React86.useMemo(() => {
|
|
26716
25991
|
if (!currentAssignee) return filtered;
|
|
26717
25992
|
const current = filtered.find((o) => o.value === currentAssignee.id);
|
|
26718
25993
|
if (!current) return filtered;
|
|
26719
25994
|
return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
|
|
26720
25995
|
}, [filtered, currentAssignee]);
|
|
26721
25996
|
const handleSelect = (userId) => {
|
|
26722
|
-
const next = _optionalChain([currentAssignee, 'optionalAccess',
|
|
25997
|
+
const next = _optionalChain([currentAssignee, 'optionalAccess', _637 => _637.id]) === userId ? null : userId;
|
|
26723
25998
|
onAssign(next);
|
|
26724
25999
|
setIsOpen(false);
|
|
26725
26000
|
};
|
|
@@ -26784,7 +26059,7 @@ function CompactAssigneeDropdown({
|
|
|
26784
26059
|
}
|
|
26785
26060
|
) }),
|
|
26786
26061
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-80 overflow-y-auto py-[var(--spacing-system-xs)]", role: "listbox", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "Loading\u2026" }) : orderedOptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "No users found" }) : orderedOptions.map((opt) => {
|
|
26787
|
-
const isCurrent = _optionalChain([currentAssignee, 'optionalAccess',
|
|
26062
|
+
const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _638 => _638.id]) === opt.value;
|
|
26788
26063
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
26789
26064
|
"button",
|
|
26790
26065
|
{
|
|
@@ -26828,9 +26103,9 @@ function DefaultAssigneeDropdown({
|
|
|
26828
26103
|
onAssign,
|
|
26829
26104
|
className
|
|
26830
26105
|
}) {
|
|
26831
|
-
const [isEditing, setIsEditing] =
|
|
26106
|
+
const [isEditing, setIsEditing] = React86.useState(false);
|
|
26832
26107
|
const hasAssignee = !!currentAssignee;
|
|
26833
|
-
const renderOption =
|
|
26108
|
+
const renderOption = React86.useCallback((option) => {
|
|
26834
26109
|
const opt = option;
|
|
26835
26110
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
|
|
26836
26111
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -26853,7 +26128,7 @@ function DefaultAssigneeDropdown({
|
|
|
26853
26128
|
Autocomplete,
|
|
26854
26129
|
{
|
|
26855
26130
|
options,
|
|
26856
|
-
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess',
|
|
26131
|
+
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _639 => _639.id]), () => ( null)),
|
|
26857
26132
|
onChange: (val) => {
|
|
26858
26133
|
onAssign(val);
|
|
26859
26134
|
setIsEditing(false);
|
|
@@ -27018,8 +26293,8 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
27018
26293
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
27019
26294
|
|
|
27020
26295
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
27021
|
-
const [isEditing, setIsEditing] =
|
|
27022
|
-
const [editText, setEditText] =
|
|
26296
|
+
const [isEditing, setIsEditing] = React87.useState(false);
|
|
26297
|
+
const [editText, setEditText] = React87.useState(note.text);
|
|
27023
26298
|
const handleSave = () => {
|
|
27024
26299
|
const trimmed = editText.trim();
|
|
27025
26300
|
if (!trimmed || !onEdit) return;
|
|
@@ -27135,7 +26410,7 @@ function TicketNotesSection({
|
|
|
27135
26410
|
isAddingNote,
|
|
27136
26411
|
className
|
|
27137
26412
|
}) {
|
|
27138
|
-
const [noteText, setNoteText] =
|
|
26413
|
+
const [noteText, setNoteText] = React88.useState("");
|
|
27139
26414
|
const handleSend = () => {
|
|
27140
26415
|
const trimmed = noteText.trim();
|
|
27141
26416
|
if (!trimmed || !onAddNote || isAddingNote) return;
|
|
@@ -27240,14 +26515,14 @@ function TicketInfoSection({
|
|
|
27240
26515
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27241
26516
|
SquareAvatar,
|
|
27242
26517
|
{
|
|
27243
|
-
src: _optionalChain([organization, 'optionalAccess',
|
|
27244
|
-
alt: _optionalChain([organization, 'optionalAccess',
|
|
27245
|
-
fallback: _optionalChain([organization, 'optionalAccess',
|
|
26518
|
+
src: _optionalChain([organization, 'optionalAccess', _640 => _640.imageSrc]),
|
|
26519
|
+
alt: _optionalChain([organization, 'optionalAccess', _641 => _641.name]),
|
|
26520
|
+
fallback: _optionalChain([organization, 'optionalAccess', _642 => _642.name]) || "Org",
|
|
27246
26521
|
size: "md",
|
|
27247
26522
|
className: "shrink-0"
|
|
27248
26523
|
}
|
|
27249
26524
|
),
|
|
27250
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess',
|
|
26525
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _643 => _643.name]) || "Unassigned", label: "Organization" })
|
|
27251
26526
|
] }),
|
|
27252
26527
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27253
26528
|
AssigneeDropdown,
|
|
@@ -27268,10 +26543,10 @@ function TicketInfoSection({
|
|
|
27268
26543
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27269
26544
|
InfoCell2,
|
|
27270
26545
|
{
|
|
27271
|
-
value: _optionalChain([device, 'optionalAccess',
|
|
26546
|
+
value: _optionalChain([device, 'optionalAccess', _644 => _644.name]) || "Unassigned",
|
|
27272
26547
|
label: "Device",
|
|
27273
|
-
icon: _optionalChain([device, 'optionalAccess',
|
|
27274
|
-
onClick: _optionalChain([device, 'optionalAccess',
|
|
26548
|
+
icon: _optionalChain([device, 'optionalAccess', _645 => _645.icon]),
|
|
26549
|
+
onClick: _optionalChain([device, 'optionalAccess', _646 => _646.onClick])
|
|
27275
26550
|
}
|
|
27276
26551
|
),
|
|
27277
26552
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
@@ -28031,10 +27306,10 @@ var getContentDimensions = (config) => {
|
|
|
28031
27306
|
const envMobileHeight = process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT) : null;
|
|
28032
27307
|
const envDesktopWidth = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH) : null;
|
|
28033
27308
|
const envDesktopHeight = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT) : null;
|
|
28034
|
-
const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess',
|
|
28035
|
-
const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess',
|
|
28036
|
-
const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess',
|
|
28037
|
-
const desktopHeight = _nullishCoalesce(_nullishCoalesce(envDesktopHeight, () => ( _optionalChain([config, 'optionalAccess',
|
|
27309
|
+
const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess', _647 => _647.mobileContentDimensions, 'optionalAccess', _648 => _648.width]))), () => ( defaultMobile.width));
|
|
27310
|
+
const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess', _649 => _649.mobileContentDimensions, 'optionalAccess', _650 => _650.height]))), () => ( defaultMobile.height));
|
|
27311
|
+
const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess', _651 => _651.desktopContentDimensions, 'optionalAccess', _652 => _652.width]))), () => ( defaultDesktop.width));
|
|
27312
|
+
const desktopHeight = _nullishCoalesce(_nullishCoalesce(envDesktopHeight, () => ( _optionalChain([config, 'optionalAccess', _653 => _653.desktopContentDimensions, 'optionalAccess', _654 => _654.height]))), () => ( defaultDesktop.height));
|
|
28038
27313
|
return {
|
|
28039
27314
|
mobile: { width: mobileWidth, height: mobileHeight },
|
|
28040
27315
|
desktop: { width: desktopWidth, height: desktopHeight }
|
|
@@ -28168,7 +27443,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28168
27443
|
const contentDimensions = getContentDimensions(config);
|
|
28169
27444
|
const mobileHeight = contentDimensions.mobile.height;
|
|
28170
27445
|
const calculatedHeight = Math.max(mobileHeight + 100, 400);
|
|
28171
|
-
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess',
|
|
27446
|
+
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess', _655 => _655.innerHeight]) * 0.85 || 650)}px`;
|
|
28172
27447
|
})(),
|
|
28173
27448
|
minHeight: viewMode === "DESKTOP" ? "auto" : (() => {
|
|
28174
27449
|
const contentDimensions = getContentDimensions(config);
|
|
@@ -28273,7 +27548,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28273
27548
|
const [isInitialized, setIsInitialized] = _react.useState.call(void 0, false);
|
|
28274
27549
|
const [currentNodeId, setCurrentNodeId] = _react.useState.call(void 0, null);
|
|
28275
27550
|
const [internalActiveSection, setInternalActiveSection] = _react.useState.call(void 0,
|
|
28276
|
-
config.defaultSectionId || _optionalChain([config, 'access',
|
|
27551
|
+
config.defaultSectionId || _optionalChain([config, 'access', _656 => _656.sections, 'access', _657 => _657[0], 'optionalAccess', _658 => _658.id]) || ""
|
|
28277
27552
|
);
|
|
28278
27553
|
const activeSection = externalActiveSection || internalActiveSection;
|
|
28279
27554
|
const [isNavigating, setIsNavigating] = _react.useState.call(void 0, false);
|
|
@@ -28363,7 +27638,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28363
27638
|
const handleMessage = (event) => {
|
|
28364
27639
|
if (event.origin !== "https://www.figma.com") return;
|
|
28365
27640
|
const validEvents = ["INITIAL_LOAD", "NEW_STATE", "PRESENTED_NODE_CHANGED"];
|
|
28366
|
-
if (_optionalChain([event, 'access',
|
|
27641
|
+
if (_optionalChain([event, 'access', _659 => _659.data, 'optionalAccess', _660 => _660.type]) && validEvents.includes(event.data.type)) {
|
|
28367
27642
|
const figmaEvent = event.data;
|
|
28368
27643
|
console.log("[Figma Event]", figmaEvent.type, viewMode);
|
|
28369
27644
|
switch (figmaEvent.type) {
|
|
@@ -28373,19 +27648,19 @@ var FigmaPrototypeViewer = ({
|
|
|
28373
27648
|
setIframeState("READY");
|
|
28374
27649
|
break;
|
|
28375
27650
|
case "PRESENTED_NODE_CHANGED":
|
|
28376
|
-
if (_optionalChain([figmaEvent, 'access',
|
|
27651
|
+
if (_optionalChain([figmaEvent, 'access', _661 => _661.data, 'optionalAccess', _662 => _662.presentedNodeId])) {
|
|
28377
27652
|
setCurrentNodeId(figmaEvent.data.presentedNodeId);
|
|
28378
27653
|
if (!isNavigating) {
|
|
28379
27654
|
const matchingSection = config.sections.find((s) => {
|
|
28380
|
-
const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access',
|
|
28381
|
-
const mobileMatch = s.mobileStartingNodeId === _optionalChain([figmaEvent, 'access',
|
|
27655
|
+
const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access', _663 => _663.data, 'optionalAccess', _664 => _664.presentedNodeId]) || s.startingNodeId.replace(":", "-") === _optionalChain([figmaEvent, 'access', _665 => _665.data, 'optionalAccess', _666 => _666.presentedNodeId]);
|
|
27656
|
+
const mobileMatch = s.mobileStartingNodeId === _optionalChain([figmaEvent, 'access', _667 => _667.data, 'optionalAccess', _668 => _668.presentedNodeId]) || _optionalChain([s, 'access', _669 => _669.mobileStartingNodeId, 'optionalAccess', _670 => _670.replace, 'call', _671 => _671(":", "-")]) === _optionalChain([figmaEvent, 'access', _672 => _672.data, 'optionalAccess', _673 => _673.presentedNodeId]);
|
|
28382
27657
|
return desktopMatch || mobileMatch;
|
|
28383
27658
|
});
|
|
28384
27659
|
if (matchingSection && matchingSection.id !== activeSection) {
|
|
28385
27660
|
if (!externalActiveSection) {
|
|
28386
27661
|
setInternalActiveSection(matchingSection.id);
|
|
28387
27662
|
}
|
|
28388
|
-
_optionalChain([config, 'access',
|
|
27663
|
+
_optionalChain([config, 'access', _674 => _674.onSectionChange, 'optionalCall', _675 => _675(matchingSection.id)]);
|
|
28389
27664
|
}
|
|
28390
27665
|
}
|
|
28391
27666
|
}
|
|
@@ -28398,7 +27673,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28398
27673
|
}, [config.sections, activeSection, isNavigating, externalActiveSection, config.onSectionChange, viewMode]);
|
|
28399
27674
|
const navigateToSection = _react.useCallback.call(void 0, (sectionId) => {
|
|
28400
27675
|
const section = config.sections.find((s) => s.id === sectionId);
|
|
28401
|
-
if (!section || !_optionalChain([iframeRef, 'access',
|
|
27676
|
+
if (!section || !_optionalChain([iframeRef, 'access', _676 => _676.current, 'optionalAccess', _677 => _677.contentWindow]) || !isInitialized) {
|
|
28402
27677
|
return;
|
|
28403
27678
|
}
|
|
28404
27679
|
setIsNavigating(true);
|
|
@@ -28406,7 +27681,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28406
27681
|
if (!externalActiveSection) {
|
|
28407
27682
|
setInternalActiveSection(sectionId);
|
|
28408
27683
|
}
|
|
28409
|
-
_optionalChain([config, 'access',
|
|
27684
|
+
_optionalChain([config, 'access', _678 => _678.onSectionChange, 'optionalCall', _679 => _679(sectionId)]);
|
|
28410
27685
|
const command = {
|
|
28411
27686
|
type: "NAVIGATE_TO_FRAME_AND_CLOSE_OVERLAYS",
|
|
28412
27687
|
data: { nodeId }
|
|
@@ -28726,7 +28001,7 @@ var FiltersDropdown = ({
|
|
|
28726
28001
|
defaults[section.id] = section.defaultSelected || [];
|
|
28727
28002
|
});
|
|
28728
28003
|
setSelectedFilters(defaults);
|
|
28729
|
-
_optionalChain([onReset, 'optionalCall',
|
|
28004
|
+
_optionalChain([onReset, 'optionalCall', _680 => _680()]);
|
|
28730
28005
|
setIsOpen(false);
|
|
28731
28006
|
};
|
|
28732
28007
|
const handleApply = () => {
|
|
@@ -29020,7 +28295,7 @@ function MediaGalleryManager({
|
|
|
29020
28295
|
const [deletingIndex, setDeletingIndex] = _react.useState.call(void 0, null);
|
|
29021
28296
|
const [draggedIndex, setDraggedIndex] = _react.useState.call(void 0, null);
|
|
29022
28297
|
const handleFileSelect = _react.useCallback.call(void 0, async (event) => {
|
|
29023
|
-
const file = _optionalChain([event, 'access',
|
|
28298
|
+
const file = _optionalChain([event, 'access', _681 => _681.target, 'access', _682 => _682.files, 'optionalAccess', _683 => _683[0]]);
|
|
29024
28299
|
if (!file) return;
|
|
29025
28300
|
let mediaType;
|
|
29026
28301
|
if (file.type.startsWith("image/")) {
|
|
@@ -29135,7 +28410,7 @@ function MediaGalleryManager({
|
|
|
29135
28410
|
{
|
|
29136
28411
|
type: "button",
|
|
29137
28412
|
variant: "outline",
|
|
29138
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
28413
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _684 => _684.current, 'optionalAccess', _685 => _685.click, 'call', _686 => _686()]),
|
|
29139
28414
|
disabled: isUploading,
|
|
29140
28415
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
29141
28416
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -29920,7 +29195,7 @@ function ReleaseMediaManager({
|
|
|
29920
29195
|
const fileInputRef = _react.useRef.call(void 0, null);
|
|
29921
29196
|
const [uploadingIndex, setUploadingIndex] = _react.useState.call(void 0, null);
|
|
29922
29197
|
const handleFileSelect = async (event) => {
|
|
29923
|
-
const file = _optionalChain([event, 'access',
|
|
29198
|
+
const file = _optionalChain([event, 'access', _687 => _687.target, 'access', _688 => _688.files, 'optionalAccess', _689 => _689[0]]);
|
|
29924
29199
|
if (!file) return;
|
|
29925
29200
|
let mediaType;
|
|
29926
29201
|
if (file.type.startsWith("image/")) {
|
|
@@ -30000,7 +29275,7 @@ function ReleaseMediaManager({
|
|
|
30000
29275
|
{
|
|
30001
29276
|
type: "button",
|
|
30002
29277
|
variant: "outline",
|
|
30003
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
29278
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]),
|
|
30004
29279
|
disabled: uploadingIndex !== null,
|
|
30005
29280
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
30006
29281
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -30213,7 +29488,7 @@ function SEOEditorPreview({
|
|
|
30213
29488
|
const displayImage = hasOgImage || hasFeaturedImage;
|
|
30214
29489
|
const handleImageUpload = async (event) => {
|
|
30215
29490
|
if (!onOgImageUpload) return;
|
|
30216
|
-
const file = _optionalChain([event, 'access',
|
|
29491
|
+
const file = _optionalChain([event, 'access', _693 => _693.target, 'access', _694 => _694.files, 'optionalAccess', _695 => _695[0]]);
|
|
30217
29492
|
if (!file) return;
|
|
30218
29493
|
setIsUploading(true);
|
|
30219
29494
|
try {
|
|
@@ -30344,7 +29619,7 @@ function SEOEditorPreview({
|
|
|
30344
29619
|
type: "button",
|
|
30345
29620
|
variant: "outline",
|
|
30346
29621
|
size: "icon",
|
|
30347
|
-
onClick: () => _optionalChain([fileInputRef, 'optionalAccess',
|
|
29622
|
+
onClick: () => _optionalChain([fileInputRef, 'optionalAccess', _696 => _696.click, 'call', _697 => _697()]),
|
|
30348
29623
|
disabled: disabled || isUploading,
|
|
30349
29624
|
className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
|
|
30350
29625
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-4 w-4" })
|
|
@@ -30367,7 +29642,7 @@ function SEOEditorPreview({
|
|
|
30367
29642
|
"div",
|
|
30368
29643
|
{
|
|
30369
29644
|
className: "h-full min-h-[280px] border-2 border-dashed border-ods-border rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-ods-accent transition-colors bg-ods-bg-hover",
|
|
30370
|
-
onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess',
|
|
29645
|
+
onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]),
|
|
30371
29646
|
children: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
30372
29647
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30373
29648
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
@@ -30452,7 +29727,7 @@ function SocialLinksManager({
|
|
|
30452
29727
|
className = ""
|
|
30453
29728
|
}) {
|
|
30454
29729
|
const addLink = () => {
|
|
30455
|
-
const firstPlatform = _optionalChain([platforms, 'access',
|
|
29730
|
+
const firstPlatform = _optionalChain([platforms, 'access', _700 => _700[0], 'optionalAccess', _701 => _701.name]) || "website";
|
|
30456
29731
|
onChange([...links, { platform: firstPlatform, url: "" }]);
|
|
30457
29732
|
};
|
|
30458
29733
|
const removeLink = (index) => {
|
|
@@ -30464,7 +29739,7 @@ function SocialLinksManager({
|
|
|
30464
29739
|
onChange(updated);
|
|
30465
29740
|
};
|
|
30466
29741
|
const getIcon = (link, platform) => {
|
|
30467
|
-
const iconKey = _optionalChain([platform, 'optionalAccess',
|
|
29742
|
+
const iconKey = _optionalChain([platform, 'optionalAccess', _702 => _702.icon_name]) || link.platform;
|
|
30468
29743
|
const IconComponent = iconMap[iconKey];
|
|
30469
29744
|
return IconComponent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
|
|
30470
29745
|
};
|
|
@@ -30489,7 +29764,7 @@ function SocialLinksManager({
|
|
|
30489
29764
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30490
29765
|
_chunkBJTOSUT4cjs.Input,
|
|
30491
29766
|
{
|
|
30492
|
-
placeholder: _optionalChain([platform, 'optionalAccess',
|
|
29767
|
+
placeholder: _optionalChain([platform, 'optionalAccess', _703 => _703.placeholder]) || "Profile URL",
|
|
30493
29768
|
value: link.url,
|
|
30494
29769
|
onChange: (e) => updateLink(index, "url", e.target.value),
|
|
30495
29770
|
onKeyDown: (e) => {
|
|
@@ -30533,7 +29808,7 @@ function SocialLinksManager({
|
|
|
30533
29808
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30534
29809
|
|
|
30535
29810
|
|
|
30536
|
-
var StartWithOpenFrameButton =
|
|
29811
|
+
var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
|
|
30537
29812
|
const isYellow = mode === "yellow";
|
|
30538
29813
|
const isPink = mode === "pink" || mode === "purple";
|
|
30539
29814
|
const isCyan = mode === "cyan";
|
|
@@ -30829,6 +30104,258 @@ function TagsSelector({
|
|
|
30829
30104
|
] });
|
|
30830
30105
|
}
|
|
30831
30106
|
|
|
30107
|
+
// src/components/features/video-ratio-tabs.tsx
|
|
30108
|
+
|
|
30109
|
+
var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
|
|
30110
|
+
var RATIO_GRID_CLASS = {
|
|
30111
|
+
portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
30112
|
+
square: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
30113
|
+
landscape: "grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
30114
|
+
};
|
|
30115
|
+
var RATIO_DISPLAY_GRID_CLASS = {
|
|
30116
|
+
portrait: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
|
|
30117
|
+
square: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
|
|
30118
|
+
landscape: "grid grid-cols-1 md:grid-cols-2 gap-6"
|
|
30119
|
+
};
|
|
30120
|
+
var RATIO_TAB_CONFIG = [
|
|
30121
|
+
{ key: "portrait", label: "Portrait 9:16" },
|
|
30122
|
+
{ key: "square", label: "Square 1:1" },
|
|
30123
|
+
{ key: "landscape", label: "Landscape 16:9" }
|
|
30124
|
+
];
|
|
30125
|
+
function RatioTabs({
|
|
30126
|
+
groups,
|
|
30127
|
+
defaultTab,
|
|
30128
|
+
className = ""
|
|
30129
|
+
}) {
|
|
30130
|
+
const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
|
|
30131
|
+
if (activeTabs.length <= 1) {
|
|
30132
|
+
const active = activeTabs[0];
|
|
30133
|
+
return active ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: groups[active.key].render() }) : null;
|
|
30134
|
+
}
|
|
30135
|
+
const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
|
|
30136
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
|
|
30137
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0 mb-2", children: activeTabs.map((t) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, TabsTrigger, { value: t.key, className: TAB_TRIGGER_CLASS, children: [
|
|
30138
|
+
t.label,
|
|
30139
|
+
" (",
|
|
30140
|
+
groups[t.key].count,
|
|
30141
|
+
")"
|
|
30142
|
+
] }, t.key)) }),
|
|
30143
|
+
activeTabs.map((t) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30144
|
+
TabsContent,
|
|
30145
|
+
{
|
|
30146
|
+
value: t.key,
|
|
30147
|
+
forceMount: true,
|
|
30148
|
+
className: "data-[state=inactive]:hidden",
|
|
30149
|
+
children: groups[t.key].render()
|
|
30150
|
+
},
|
|
30151
|
+
t.key
|
|
30152
|
+
))
|
|
30153
|
+
] });
|
|
30154
|
+
}
|
|
30155
|
+
function detectAspectRatio(ratioString, width, height) {
|
|
30156
|
+
if (ratioString === "16:9") return "16:9";
|
|
30157
|
+
if (ratioString === "1:1") return "1:1";
|
|
30158
|
+
if (ratioString === "9:16") return "9:16";
|
|
30159
|
+
if (width && height) {
|
|
30160
|
+
if (Math.abs(width - height) < Math.min(width, height) * 0.1) return "1:1";
|
|
30161
|
+
if (width > height) return "16:9";
|
|
30162
|
+
}
|
|
30163
|
+
return "9:16";
|
|
30164
|
+
}
|
|
30165
|
+
function ratioToCategory(ratio) {
|
|
30166
|
+
if (ratio === "16:9") return "landscape";
|
|
30167
|
+
if (ratio === "1:1") return "square";
|
|
30168
|
+
return "portrait";
|
|
30169
|
+
}
|
|
30170
|
+
function groupByAspectRatio(items, getAspectRatio) {
|
|
30171
|
+
const portrait = [];
|
|
30172
|
+
const square = [];
|
|
30173
|
+
const landscape = [];
|
|
30174
|
+
for (const item of items) {
|
|
30175
|
+
const cat = ratioToCategory(getAspectRatio(item));
|
|
30176
|
+
if (cat === "landscape") landscape.push(item);
|
|
30177
|
+
else if (cat === "square") square.push(item);
|
|
30178
|
+
else portrait.push(item);
|
|
30179
|
+
}
|
|
30180
|
+
const filled = [portrait, square, landscape].filter((a) => a.length > 0).length;
|
|
30181
|
+
return { portrait, square, landscape, hasMultiple: filled > 1 };
|
|
30182
|
+
}
|
|
30183
|
+
|
|
30184
|
+
// src/components/features/video-bites-display.tsx
|
|
30185
|
+
|
|
30186
|
+
|
|
30187
|
+
var RATIO_TO_CSS_ASPECT = {
|
|
30188
|
+
portrait: "9 / 16",
|
|
30189
|
+
square: "1 / 1",
|
|
30190
|
+
landscape: "16 / 9"
|
|
30191
|
+
};
|
|
30192
|
+
function LazyBite({ ratio, children }) {
|
|
30193
|
+
const { ref, isNear } = _chunkALW3D72Ocjs.useNearViewport.call(void 0, "500px");
|
|
30194
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full h-full bg-ods-card rounded-md" }) });
|
|
30195
|
+
}
|
|
30196
|
+
function VideoBitesDisplay({
|
|
30197
|
+
bites,
|
|
30198
|
+
title = "Video Highlights",
|
|
30199
|
+
filterPublished = true,
|
|
30200
|
+
showTitle = true
|
|
30201
|
+
}) {
|
|
30202
|
+
const grouped = _react.useMemo.call(void 0, () => {
|
|
30203
|
+
const filtered = filterPublished ? bites.filter((b) => b.published) : bites;
|
|
30204
|
+
const sorted = [...filtered].sort((a, b) => {
|
|
30205
|
+
if (!a.created_at && !b.created_at) return 0;
|
|
30206
|
+
if (!a.created_at) return 1;
|
|
30207
|
+
if (!b.created_at) return -1;
|
|
30208
|
+
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
30209
|
+
});
|
|
30210
|
+
return groupByAspectRatio(
|
|
30211
|
+
sorted,
|
|
30212
|
+
(b) => detectAspectRatio(b.aspect_ratio)
|
|
30213
|
+
);
|
|
30214
|
+
}, [bites, filterPublished]);
|
|
30215
|
+
const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
|
|
30216
|
+
if (totalCount === 0) return null;
|
|
30217
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30218
|
+
showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: title }),
|
|
30219
|
+
grouped.hasMultiple ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30220
|
+
RatioTabs,
|
|
30221
|
+
{
|
|
30222
|
+
groups: {
|
|
30223
|
+
portrait: {
|
|
30224
|
+
count: grouped.portrait.length,
|
|
30225
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.portrait, ratio: "portrait" })
|
|
30226
|
+
},
|
|
30227
|
+
square: {
|
|
30228
|
+
count: grouped.square.length,
|
|
30229
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.square, ratio: "square" })
|
|
30230
|
+
},
|
|
30231
|
+
landscape: {
|
|
30232
|
+
count: grouped.landscape.length,
|
|
30233
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.landscape, ratio: "landscape" })
|
|
30234
|
+
}
|
|
30235
|
+
}
|
|
30236
|
+
}
|
|
30237
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30238
|
+
BiteGrid,
|
|
30239
|
+
{
|
|
30240
|
+
bites: grouped.portrait.length > 0 ? grouped.portrait : grouped.square.length > 0 ? grouped.square : grouped.landscape,
|
|
30241
|
+
ratio: grouped.portrait.length > 0 ? "portrait" : grouped.square.length > 0 ? "square" : "landscape"
|
|
30242
|
+
}
|
|
30243
|
+
)
|
|
30244
|
+
] });
|
|
30245
|
+
}
|
|
30246
|
+
function BiteGrid({ bites, ratio }) {
|
|
30247
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RATIO_DISPLAY_GRID_CLASS[ratio], children: bites.map((bite, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LazyBite, { ratio, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoBiteCard, { url: bite.url, title: bite.title, thumbnailUrl: bite.thumbnail_url }) }, bite.url || index)) });
|
|
30248
|
+
}
|
|
30249
|
+
function VideoBiteCard({ url, title, thumbnailUrl }) {
|
|
30250
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: "overflow-hidden border border-ods-border bg-ods-card hover:border-ods-accent transition-colors flex flex-col h-full", children: [
|
|
30251
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative flex-1 min-h-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video2, { url, poster: thumbnailUrl || void 0, layout: "fill" }) }),
|
|
30252
|
+
title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary line-clamp-2", children: title }) })
|
|
30253
|
+
] });
|
|
30254
|
+
}
|
|
30255
|
+
|
|
30256
|
+
// src/components/features/entity-video-section.tsx
|
|
30257
|
+
|
|
30258
|
+
function EntityVideoSection({
|
|
30259
|
+
mainVideoUrl,
|
|
30260
|
+
youtubeUrl,
|
|
30261
|
+
highlightVideoUrl,
|
|
30262
|
+
highlightVideoThumbnail,
|
|
30263
|
+
mainVideoPoster,
|
|
30264
|
+
title = "Video",
|
|
30265
|
+
videoSummary,
|
|
30266
|
+
videoBites,
|
|
30267
|
+
bitesTitle = "Video Highlights",
|
|
30268
|
+
filterPublishedBites = true,
|
|
30269
|
+
MarkdownRenderer,
|
|
30270
|
+
srtContent,
|
|
30271
|
+
captionsUrl,
|
|
30272
|
+
priority = false
|
|
30273
|
+
}) {
|
|
30274
|
+
const hasFullVideo = !!(youtubeUrl || mainVideoUrl);
|
|
30275
|
+
const hasHighlight = !!highlightVideoUrl;
|
|
30276
|
+
const hasVideo = hasFullVideo || hasHighlight;
|
|
30277
|
+
if (!hasVideo && !videoSummary && (!videoBites || videoBites.length === 0)) {
|
|
30278
|
+
return null;
|
|
30279
|
+
}
|
|
30280
|
+
const fullVideoUrl = youtubeUrl || mainVideoUrl || null;
|
|
30281
|
+
const fullVideoKind = youtubeUrl ? "youtube" : "auto";
|
|
30282
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
30283
|
+
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: "full-video", className: "w-full", children: [
|
|
30284
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
|
|
30285
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30286
|
+
TabsTrigger,
|
|
30287
|
+
{
|
|
30288
|
+
value: "full-video",
|
|
30289
|
+
className: "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 md:px-6 py-3 text-ods-text-secondary data-[state=active]:text-ods-text-primary",
|
|
30290
|
+
children: "Full Video"
|
|
30291
|
+
}
|
|
30292
|
+
),
|
|
30293
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30294
|
+
TabsTrigger,
|
|
30295
|
+
{
|
|
30296
|
+
value: "highlights",
|
|
30297
|
+
className: "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 md:px-6 py-3 text-ods-text-secondary data-[state=active]:text-ods-text-primary",
|
|
30298
|
+
children: "Highlights"
|
|
30299
|
+
}
|
|
30300
|
+
)
|
|
30301
|
+
] }),
|
|
30302
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30303
|
+
Video2,
|
|
30304
|
+
{
|
|
30305
|
+
kind: fullVideoKind,
|
|
30306
|
+
url: fullVideoUrl,
|
|
30307
|
+
poster: mainVideoPoster,
|
|
30308
|
+
title,
|
|
30309
|
+
srtContent,
|
|
30310
|
+
captionsUrl,
|
|
30311
|
+
layout: "centered",
|
|
30312
|
+
priority
|
|
30313
|
+
}
|
|
30314
|
+
) }),
|
|
30315
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30316
|
+
Video2,
|
|
30317
|
+
{
|
|
30318
|
+
url: highlightVideoUrl,
|
|
30319
|
+
poster: highlightVideoThumbnail,
|
|
30320
|
+
layout: "centered"
|
|
30321
|
+
}
|
|
30322
|
+
) })
|
|
30323
|
+
] }) : hasFullVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30324
|
+
Video2,
|
|
30325
|
+
{
|
|
30326
|
+
kind: fullVideoKind,
|
|
30327
|
+
url: fullVideoUrl,
|
|
30328
|
+
poster: mainVideoPoster,
|
|
30329
|
+
title,
|
|
30330
|
+
srtContent,
|
|
30331
|
+
captionsUrl,
|
|
30332
|
+
layout: "centered",
|
|
30333
|
+
priority
|
|
30334
|
+
}
|
|
30335
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30336
|
+
Video2,
|
|
30337
|
+
{
|
|
30338
|
+
url: highlightVideoUrl,
|
|
30339
|
+
poster: highlightVideoThumbnail,
|
|
30340
|
+
layout: "centered",
|
|
30341
|
+
priority
|
|
30342
|
+
}
|
|
30343
|
+
)),
|
|
30344
|
+
videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30345
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: "Summary" }),
|
|
30346
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: videoSummary }) })
|
|
30347
|
+
] }),
|
|
30348
|
+
videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30349
|
+
VideoBitesDisplay,
|
|
30350
|
+
{
|
|
30351
|
+
bites: videoBites,
|
|
30352
|
+
title: bitesTitle,
|
|
30353
|
+
filterPublished: filterPublishedBites
|
|
30354
|
+
}
|
|
30355
|
+
)
|
|
30356
|
+
] });
|
|
30357
|
+
}
|
|
30358
|
+
|
|
30832
30359
|
// src/components/features/video-source-selector.tsx
|
|
30833
30360
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30834
30361
|
|
|
@@ -30866,7 +30393,7 @@ function VideoSourceSelector({
|
|
|
30866
30393
|
input.accept = "video/*";
|
|
30867
30394
|
input.onchange = async (e) => {
|
|
30868
30395
|
const target = e.target;
|
|
30869
|
-
const file = _optionalChain([target, 'access',
|
|
30396
|
+
const file = _optionalChain([target, 'access', _704 => _704.files, 'optionalAccess', _705 => _705[0]]);
|
|
30870
30397
|
if (!file) return;
|
|
30871
30398
|
setIsUploading(true);
|
|
30872
30399
|
setUploadProgress(0);
|
|
@@ -31196,7 +30723,7 @@ function TranscriptSummaryEditor({
|
|
|
31196
30723
|
{
|
|
31197
30724
|
id: "subtitles",
|
|
31198
30725
|
value: subtitles || "",
|
|
31199
|
-
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall',
|
|
30726
|
+
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall', _706 => _706(e.target.value)]),
|
|
31200
30727
|
placeholder: subtitlesPlaceholder,
|
|
31201
30728
|
disabled: disabled || !onSubtitlesChange,
|
|
31202
30729
|
className: "h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 font-mono text-sm",
|
|
@@ -31349,7 +30876,7 @@ var AIEnrichSection = ({
|
|
|
31349
30876
|
}) => {
|
|
31350
30877
|
const hasResults = status === "success" || status === "error";
|
|
31351
30878
|
const shouldDisable = disabled || !canEnrich;
|
|
31352
|
-
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess',
|
|
30879
|
+
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess', _707 => _707.filter, 'call', _708 => _708((f) => !f.isFilled)]) || [];
|
|
31353
30880
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
31354
30881
|
"div",
|
|
31355
30882
|
{
|
|
@@ -31387,7 +30914,7 @@ var AIEnrichSection = ({
|
|
|
31387
30914
|
{
|
|
31388
30915
|
id: "ai-enrich-custom-instructions",
|
|
31389
30916
|
value: _nullishCoalesce(customInstructions, () => ( "")),
|
|
31390
|
-
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall',
|
|
30917
|
+
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall', _709 => _709(e.target.value)]),
|
|
31391
30918
|
placeholder: customInstructionsPlaceholder,
|
|
31392
30919
|
disabled: loading,
|
|
31393
30920
|
maxLength: customInstructionsMaxLength,
|
|
@@ -31516,7 +31043,7 @@ function HighlightVideoSection({
|
|
|
31516
31043
|
input.accept = "video/*";
|
|
31517
31044
|
input.onchange = async (e) => {
|
|
31518
31045
|
const target = e.target;
|
|
31519
|
-
const file = _optionalChain([target, 'access',
|
|
31046
|
+
const file = _optionalChain([target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]);
|
|
31520
31047
|
if (!file) return;
|
|
31521
31048
|
setUploadError(null);
|
|
31522
31049
|
try {
|
|
@@ -32018,7 +31545,7 @@ function HighlightVideoPreview({
|
|
|
32018
31545
|
input.accept = "video/*";
|
|
32019
31546
|
input.onchange = async (e) => {
|
|
32020
31547
|
const target = e.target;
|
|
32021
|
-
const file = _optionalChain([target, 'access',
|
|
31548
|
+
const file = _optionalChain([target, 'access', _712 => _712.files, 'optionalAccess', _713 => _713[0]]);
|
|
32022
31549
|
if (!file) return;
|
|
32023
31550
|
await onUpload(file);
|
|
32024
31551
|
};
|
|
@@ -32205,7 +31732,7 @@ function HighlightVideoCombinedSection({
|
|
|
32205
31732
|
input.accept = "video/*";
|
|
32206
31733
|
input.onchange = async (e) => {
|
|
32207
31734
|
const target = e.target;
|
|
32208
|
-
const file = _optionalChain([target, 'access',
|
|
31735
|
+
const file = _optionalChain([target, 'access', _714 => _714.files, 'optionalAccess', _715 => _715[0]]);
|
|
32209
31736
|
if (!file) return;
|
|
32210
31737
|
await onUpload(file);
|
|
32211
31738
|
};
|
|
@@ -32502,7 +32029,7 @@ var getApprovalLevelLabel = (level, editMode = false) => {
|
|
|
32502
32029
|
return editMode ? "Set Global Permission" : "";
|
|
32503
32030
|
}
|
|
32504
32031
|
const option = approvalLevelOptions.find((opt) => opt.value === level);
|
|
32505
|
-
return _optionalChain([option, 'optionalAccess',
|
|
32032
|
+
return _optionalChain([option, 'optionalAccess', _716 => _716.label]) || level;
|
|
32506
32033
|
};
|
|
32507
32034
|
var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
32508
32035
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-bg border-b border-ods-border flex gap-4 items-center px-4 py-3", children: [
|
|
@@ -32754,7 +32281,7 @@ function WaitlistForm({
|
|
|
32754
32281
|
const finalPhone = phone ? formatPhoneE164(phone, countryCode) : void 0;
|
|
32755
32282
|
try {
|
|
32756
32283
|
await onRegister(email, finalPhone);
|
|
32757
|
-
} catch (
|
|
32284
|
+
} catch (e24) {
|
|
32758
32285
|
}
|
|
32759
32286
|
};
|
|
32760
32287
|
if (!isClient) {
|
|
@@ -33034,15 +32561,15 @@ function TicketCard({
|
|
|
33034
32561
|
transform: _utilities.CSS.Transform.toString(sortable.transform),
|
|
33035
32562
|
transition: sortable.transition
|
|
33036
32563
|
};
|
|
33037
|
-
const showDeviceRow = !!(_optionalChain([ticket, 'access',
|
|
32564
|
+
const showDeviceRow = !!(_optionalChain([ticket, 'access', _717 => _717.deviceHostnames, 'optionalAccess', _718 => _718.length]) || ticket.organizationName);
|
|
33038
32565
|
const deviceText = [
|
|
33039
|
-
_optionalChain([ticket, 'access',
|
|
32566
|
+
_optionalChain([ticket, 'access', _719 => _719.deviceHostnames, 'optionalAccess', _720 => _720.join, 'call', _721 => _721(", ")]),
|
|
33040
32567
|
ticket.organizationName
|
|
33041
32568
|
].filter(Boolean).join(", ");
|
|
33042
32569
|
const handleClick = (e) => {
|
|
33043
32570
|
if (sortable.isDragging) e.preventDefault();
|
|
33044
32571
|
};
|
|
33045
|
-
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access',
|
|
32572
|
+
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _722 => _722.assignees, 'optionalAccess', _723 => _723.length]) || renderAssignSlot);
|
|
33046
32573
|
const rightSection = hasRightSection ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "pointer-events-auto flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33047
32574
|
ticket.priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33048
32575
|
_chunkTMD5LDX4cjs.Flag02Icon,
|
|
@@ -33051,7 +32578,7 @@ function TicketCard({
|
|
|
33051
32578
|
"aria-label": `Priority: ${ticket.priority}`
|
|
33052
32579
|
}
|
|
33053
32580
|
),
|
|
33054
|
-
renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access',
|
|
32581
|
+
renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _724 => _724.assignees, 'optionalAccess', _725 => _725.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
|
|
33055
32582
|
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33056
32583
|
SquareAvatar,
|
|
33057
32584
|
{
|
|
@@ -33080,7 +32607,7 @@ function TicketCard({
|
|
|
33080
32607
|
] }),
|
|
33081
32608
|
rightSection
|
|
33082
32609
|
] }),
|
|
33083
|
-
_optionalChain([ticket, 'access',
|
|
32610
|
+
_optionalChain([ticket, 'access', _726 => _726.tags, 'optionalAccess', _727 => _727.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
|
|
33084
32611
|
] });
|
|
33085
32612
|
const cardClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
33086
32613
|
"relative flex flex-col gap-[var(--spacing-system-sf)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-sf)] select-none text-left",
|
|
@@ -33240,7 +32767,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33240
32767
|
const observer = new IntersectionObserver(
|
|
33241
32768
|
(entries) => {
|
|
33242
32769
|
if (entries.some((e) => e.isIntersecting)) {
|
|
33243
|
-
_optionalChain([loadMoreRef, 'access',
|
|
32770
|
+
_optionalChain([loadMoreRef, 'access', _728 => _728.current, 'optionalCall', _729 => _729(columnIdRef.current)]);
|
|
33244
32771
|
}
|
|
33245
32772
|
},
|
|
33246
32773
|
{ root, rootMargin: loadMoreRootMargin }
|
|
@@ -33269,7 +32796,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33269
32796
|
{
|
|
33270
32797
|
ticket: t,
|
|
33271
32798
|
columnId: column.id,
|
|
33272
|
-
href: _optionalChain([getTicketHref, 'optionalCall',
|
|
32799
|
+
href: _optionalChain([getTicketHref, 'optionalCall', _730 => _730(t.id)]),
|
|
33273
32800
|
renderAssignSlot,
|
|
33274
32801
|
dragDisabled: column.dragDisabled
|
|
33275
32802
|
},
|
|
@@ -33352,17 +32879,17 @@ function Board({
|
|
|
33352
32879
|
const pointer = _core.pointerWithin.call(void 0, args);
|
|
33353
32880
|
const intersections = pointer.length > 0 ? pointer : _core.rectIntersection.call(void 0, args);
|
|
33354
32881
|
const ticketHit = intersections.find(
|
|
33355
|
-
(c) => _optionalChain([c, 'access',
|
|
32882
|
+
(c) => _optionalChain([c, 'access', _731 => _731.data, 'optionalAccess', _732 => _732.droppableContainer, 'optionalAccess', _733 => _733.data, 'optionalAccess', _734 => _734.current, 'optionalAccess', _735 => _735.type]) === "ticket"
|
|
33356
32883
|
);
|
|
33357
32884
|
if (ticketHit) return [ticketHit];
|
|
33358
32885
|
const columnHit = intersections.find(
|
|
33359
|
-
(c) => _optionalChain([c, 'access',
|
|
32886
|
+
(c) => _optionalChain([c, 'access', _736 => _736.data, 'optionalAccess', _737 => _737.droppableContainer, 'optionalAccess', _738 => _738.data, 'optionalAccess', _739 => _739.current, 'optionalAccess', _740 => _740.type]) === "column"
|
|
33360
32887
|
);
|
|
33361
32888
|
if (columnHit) {
|
|
33362
|
-
const columnId = _optionalChain([columnHit, 'access',
|
|
32889
|
+
const columnId = _optionalChain([columnHit, 'access', _741 => _741.data, 'optionalAccess', _742 => _742.droppableContainer, 'optionalAccess', _743 => _743.data, 'optionalAccess', _744 => _744.current, 'optionalAccess', _745 => _745.columnId]);
|
|
33363
32890
|
const ticketsInColumn = args.droppableContainers.filter((c) => {
|
|
33364
32891
|
const d = c.data.current;
|
|
33365
|
-
return _optionalChain([d, 'optionalAccess',
|
|
32892
|
+
return _optionalChain([d, 'optionalAccess', _746 => _746.type]) === "ticket" && d.columnId === columnId;
|
|
33366
32893
|
});
|
|
33367
32894
|
if (ticketsInColumn.length > 0) {
|
|
33368
32895
|
const closest = _core.closestCorners.call(void 0, { ...args, droppableContainers: ticketsInColumn });
|
|
@@ -33387,20 +32914,20 @@ function Board({
|
|
|
33387
32914
|
const overId = String(over.id);
|
|
33388
32915
|
if (activeId === overId) return;
|
|
33389
32916
|
const overData = over.data.current;
|
|
33390
|
-
const fromColumnId = _optionalChain([locate, 'call',
|
|
33391
|
-
const toColumnId = _optionalChain([overData, 'optionalAccess',
|
|
32917
|
+
const fromColumnId = _optionalChain([locate, 'call', _747 => _747(items, activeId), 'optionalAccess', _748 => _748.columnId]);
|
|
32918
|
+
const toColumnId = _optionalChain([overData, 'optionalAccess', _749 => _749.columnId]);
|
|
33392
32919
|
if (!fromColumnId || !toColumnId || fromColumnId === toColumnId) return;
|
|
33393
32920
|
const origin = dragOriginRef.current;
|
|
33394
|
-
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess',
|
|
32921
|
+
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _750 => _750.fromColumnId]) === toColumnId;
|
|
33395
32922
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33396
|
-
const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess',
|
|
33397
|
-
if (_optionalChain([targetCol, 'optionalAccess',
|
|
32923
|
+
const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _751 => _751.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
|
|
32924
|
+
if (_optionalChain([targetCol, 'optionalAccess', _752 => _752.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
|
|
33398
32925
|
setItems((prev) => {
|
|
33399
32926
|
const fromIndex = findIndexInColumn(prev, fromColumnId, activeId);
|
|
33400
32927
|
const toCol = prev.find((c) => c.id === toColumnId);
|
|
33401
32928
|
if (fromIndex < 0 || !toCol) return prev;
|
|
33402
32929
|
let toIndex;
|
|
33403
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32930
|
+
if (_optionalChain([overData, 'optionalAccess', _753 => _753.type]) === "column") {
|
|
33404
32931
|
toIndex = toCol.tickets.length;
|
|
33405
32932
|
} else {
|
|
33406
32933
|
const overIndex = toCol.tickets.findIndex((t) => t.id === overId);
|
|
@@ -33442,14 +32969,14 @@ function Board({
|
|
|
33442
32969
|
const toColumnId = located.columnId;
|
|
33443
32970
|
const isCrossColumn = origin.fromColumnId !== toColumnId;
|
|
33444
32971
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33445
|
-
if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess',
|
|
32972
|
+
if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _754 => _754.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _755 => _755.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
|
|
33446
32973
|
setItems(columns);
|
|
33447
32974
|
return;
|
|
33448
32975
|
}
|
|
33449
32976
|
let finalIndex = located.index;
|
|
33450
|
-
let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access',
|
|
32977
|
+
let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _756 => _756.find, 'call', _757 => _757((c) => c.id === toColumnId), 'optionalAccess', _758 => _758.tickets]), () => ( []));
|
|
33451
32978
|
const overData = over.data.current;
|
|
33452
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32979
|
+
if (_optionalChain([overData, 'optionalAccess', _759 => _759.type]) === "ticket") {
|
|
33453
32980
|
const overIndex = findIndexInColumn(items, toColumnId, String(over.id));
|
|
33454
32981
|
if (overIndex >= 0 && overIndex !== located.index) {
|
|
33455
32982
|
finalColumnTickets = _sortable.arrayMove.call(void 0, finalColumnTickets, located.index, overIndex);
|
|
@@ -33469,8 +32996,8 @@ function Board({
|
|
|
33469
32996
|
ticketId: origin.ticketId,
|
|
33470
32997
|
fromColumnId: origin.fromColumnId,
|
|
33471
32998
|
toColumnId,
|
|
33472
|
-
afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access',
|
|
33473
|
-
beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access',
|
|
32999
|
+
afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _760 => _760[finalIndex - 1], 'optionalAccess', _761 => _761.id]), () => ( null)),
|
|
33000
|
+
beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _762 => _762[finalIndex + 1], 'optionalAccess', _763 => _763.id]), () => ( null))
|
|
33474
33001
|
});
|
|
33475
33002
|
};
|
|
33476
33003
|
const handleDragCancel = () => {
|
|
@@ -33492,8 +33019,8 @@ function Board({
|
|
|
33492
33019
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex h-full overflow-x-auto", className), children: items.map((column, i) => {
|
|
33493
33020
|
const prev = items[i - 1];
|
|
33494
33021
|
const next = items[i + 1];
|
|
33495
|
-
const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess',
|
|
33496
|
-
const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess',
|
|
33022
|
+
const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _764 => _764.system]));
|
|
33023
|
+
const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _765 => _765.system]));
|
|
33497
33024
|
const showGap = i > 0 && !joinLeft;
|
|
33498
33025
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React101.Fragment, { children: [
|
|
33499
33026
|
showGap && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
@@ -33527,7 +33054,7 @@ function locate(cols, ticketId) {
|
|
|
33527
33054
|
return null;
|
|
33528
33055
|
}
|
|
33529
33056
|
function findIndexInColumn(cols, columnId, ticketId) {
|
|
33530
|
-
return _nullishCoalesce(_optionalChain([cols, 'access',
|
|
33057
|
+
return _nullishCoalesce(_optionalChain([cols, 'access', _766 => _766.find, 'call', _767 => _767((c) => c.id === columnId), 'optionalAccess', _768 => _768.tickets, 'access', _769 => _769.findIndex, 'call', _770 => _770((t) => t.id === ticketId)]), () => ( -1));
|
|
33531
33058
|
}
|
|
33532
33059
|
|
|
33533
33060
|
// src/components/features/board/types.ts
|
|
@@ -34185,5 +33712,13 @@ function canonicalize(status) {
|
|
|
34185
33712
|
|
|
34186
33713
|
|
|
34187
33714
|
|
|
34188
|
-
exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.formatReleaseDate = formatReleaseDate; exports.formatRelativeTime = formatRelativeTime; exports.getDynamicIcon = getDynamicIcon; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.PulseDots = PulseDots; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.SquareAvatar = SquareAvatar; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.TicketStatusTag = TicketStatusTag; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageListLoader = ChatMessageListLoader; exports.useDelayedFlag = useDelayedFlag; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.ArrayEntryManager = ArrayEntryManager; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.ErrorBoundary = ErrorBoundary; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OrganizationIcon = OrganizationIcon; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformBadge = PlatformBadge; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.VideoPlayer = VideoPlayer; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.YouTubeEmbed = YouTubeEmbed; exports.extractYouTubeId = extractYouTubeId; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.MobileNavPanel = MobileNavPanel; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderButton = HeaderButton; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState2; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.InteractiveCard = InteractiveCard; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ImageGalleryModal = ImageGalleryModal; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.Modal2 = Modal2; exports.ModalContent2 = ModalContent2; exports.ModalHeader2 = ModalHeader2; exports.ModalTitle2 = ModalTitle2; exports.ModalFooter2 = ModalFooter2; exports.Separator = Separator2; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.AssigneeDropdown = AssigneeDropdown; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketKnowledgeBaseList = TicketKnowledgeBaseList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.assets = assets;
|
|
34189
|
-
|
|
33715
|
+
|
|
33716
|
+
|
|
33717
|
+
|
|
33718
|
+
|
|
33719
|
+
|
|
33720
|
+
|
|
33721
|
+
|
|
33722
|
+
|
|
33723
|
+
exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.formatReleaseDate = formatReleaseDate; exports.formatRelativeTime = formatRelativeTime; exports.getDynamicIcon = getDynamicIcon; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.PulseDots = PulseDots; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.SquareAvatar = SquareAvatar; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.TicketStatusTag = TicketStatusTag; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageListLoader = ChatMessageListLoader; exports.useDelayedFlag = useDelayedFlag; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.ArrayEntryManager = ArrayEntryManager; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.ErrorBoundary = ErrorBoundary; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OrganizationIcon = OrganizationIcon; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformBadge = PlatformBadge; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video2; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.MobileNavPanel = MobileNavPanel; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderButton = HeaderButton; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState2; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.InteractiveCard = InteractiveCard; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ImageGalleryModal = ImageGalleryModal; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.Modal2 = Modal2; exports.ModalContent2 = ModalContent2; exports.ModalHeader2 = ModalHeader2; exports.ModalTitle2 = ModalTitle2; exports.ModalFooter2 = ModalFooter2; exports.Separator = Separator2; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.AssigneeDropdown = AssigneeDropdown; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketKnowledgeBaseList = TicketKnowledgeBaseList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.assets = assets;
|
|
33724
|
+
//# sourceMappingURL=chunk-JFGORTXV.cjs.map
|