@flamingo-stack/openframe-frontend-core 0.0.178 → 0.0.179
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-L4T24AN4.cjs → chunk-4TM2SBMX.cjs} +855 -1325
- package/dist/chunk-4TM2SBMX.cjs.map +1 -0
- package/dist/{chunk-AAX27BCR.js → chunk-ZMQP3UZJ.js} +3690 -4160
- package/dist/chunk-ZMQP3UZJ.js.map +1 -0
- 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/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, {
|
|
@@ -13050,59 +13043,231 @@ var ImageCropper = ({
|
|
|
13050
13043
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
13051
13044
|
|
|
13052
13045
|
|
|
13053
|
-
|
|
13054
|
-
|
|
13055
|
-
var
|
|
13056
|
-
|
|
13057
|
-
|
|
13058
|
-
|
|
13046
|
+
// src/components/features/video.tsx
|
|
13047
|
+
|
|
13048
|
+
var _muxplayerreact = require('@mux/mux-player-react'); var _muxplayerreact2 = _interopRequireDefault(_muxplayerreact);
|
|
13049
|
+
|
|
13050
|
+
var YT_HOSTS = /* @__PURE__ */ new Set([
|
|
13051
|
+
"youtube.com",
|
|
13052
|
+
"www.youtube.com",
|
|
13053
|
+
"m.youtube.com",
|
|
13054
|
+
"youtu.be",
|
|
13055
|
+
"youtube-nocookie.com",
|
|
13056
|
+
"www.youtube-nocookie.com"
|
|
13057
|
+
]);
|
|
13058
|
+
function isYouTubeUrl(url) {
|
|
13059
|
+
try {
|
|
13060
|
+
return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
|
|
13061
|
+
} catch (e22) {
|
|
13062
|
+
return false;
|
|
13063
|
+
}
|
|
13059
13064
|
}
|
|
13060
|
-
var
|
|
13061
|
-
|
|
13062
|
-
|
|
13063
|
-
|
|
13065
|
+
var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
|
|
13066
|
+
var BARE_YT_ID_RE = /^[A-Za-z0-9_-]{11}$/;
|
|
13067
|
+
function extractYouTubeId(url) {
|
|
13068
|
+
if (!url) return null;
|
|
13069
|
+
if (BARE_YT_ID_RE.test(url)) return url;
|
|
13070
|
+
let u;
|
|
13071
|
+
try {
|
|
13072
|
+
u = new URL(url, "http://placeholder.local");
|
|
13073
|
+
} catch (e23) {
|
|
13074
|
+
return null;
|
|
13075
|
+
}
|
|
13076
|
+
if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
|
|
13077
|
+
if (u.hostname.toLowerCase().endsWith("youtu.be")) {
|
|
13078
|
+
return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
|
|
13079
|
+
}
|
|
13080
|
+
const v = u.searchParams.get("v");
|
|
13081
|
+
if (v) return v;
|
|
13082
|
+
const m = u.pathname.match(YT_PATH_RE);
|
|
13083
|
+
return m ? m[1] : null;
|
|
13084
|
+
}
|
|
13085
|
+
function Video2(props) {
|
|
13086
|
+
const url = props.url;
|
|
13087
|
+
if (!url) return null;
|
|
13088
|
+
const effectiveKind = resolveKind(props, url);
|
|
13089
|
+
const layout = _nullishCoalesce(props.layout, () => ( "native"));
|
|
13090
|
+
const inner = effectiveKind === "youtube" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13091
|
+
YouTubeFacade,
|
|
13092
|
+
{
|
|
13093
|
+
url,
|
|
13094
|
+
title: props.title,
|
|
13095
|
+
priority: props.priority,
|
|
13096
|
+
className: props.className,
|
|
13097
|
+
minimalControls: props.minimalControls
|
|
13098
|
+
}
|
|
13099
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13100
|
+
FilePlayer,
|
|
13101
|
+
{
|
|
13102
|
+
url,
|
|
13103
|
+
poster: props.poster,
|
|
13104
|
+
muted: props.muted,
|
|
13105
|
+
srtContent: "srtContent" in props ? props.srtContent : null,
|
|
13106
|
+
captionsUrl: "captionsUrl" in props ? props.captionsUrl : null,
|
|
13107
|
+
className: props.className
|
|
13108
|
+
}
|
|
13109
|
+
);
|
|
13110
|
+
return wrapWithLayout(inner, layout);
|
|
13111
|
+
}
|
|
13112
|
+
function resolveKind(props, url) {
|
|
13113
|
+
if ("kind" in props) {
|
|
13114
|
+
if (props.kind === "youtube") return "youtube";
|
|
13115
|
+
if (props.kind === "file") return "file";
|
|
13116
|
+
}
|
|
13117
|
+
if (BARE_YT_ID_RE.test(url)) return "youtube";
|
|
13118
|
+
return isYouTubeUrl(url) ? "youtube" : "file";
|
|
13119
|
+
}
|
|
13120
|
+
function wrapWithLayout(inner, layout) {
|
|
13121
|
+
switch (layout) {
|
|
13122
|
+
case "centered":
|
|
13123
|
+
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 }) });
|
|
13124
|
+
case "fill":
|
|
13125
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 w-full h-full", children: inner });
|
|
13126
|
+
case "native":
|
|
13127
|
+
default:
|
|
13128
|
+
return inner;
|
|
13129
|
+
}
|
|
13130
|
+
}
|
|
13131
|
+
function FilePlayer({
|
|
13132
|
+
url,
|
|
13133
|
+
poster,
|
|
13134
|
+
muted,
|
|
13135
|
+
srtContent,
|
|
13136
|
+
captionsUrl,
|
|
13137
|
+
className
|
|
13138
|
+
}) {
|
|
13139
|
+
if (process.env.NODE_ENV !== "production" && srtContent && !captionsUrl) {
|
|
13140
|
+
console.warn(
|
|
13141
|
+
"[Video] srtContent supplied without captionsUrl \u2014 captions will not render. Pass captionsUrl (the VTT URL) instead; raw SRT text overlays are no longer supported."
|
|
13142
|
+
);
|
|
13143
|
+
}
|
|
13144
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13145
|
+
_muxplayerreact2.default,
|
|
13146
|
+
{
|
|
13147
|
+
src: url,
|
|
13148
|
+
poster: poster || void 0,
|
|
13149
|
+
streamType: "on-demand",
|
|
13150
|
+
playsInline: true,
|
|
13151
|
+
muted,
|
|
13152
|
+
preferCmcd: "header",
|
|
13153
|
+
accentColor: "var(--ods-accent)",
|
|
13154
|
+
className,
|
|
13155
|
+
style: { width: "100%", height: "100%" },
|
|
13156
|
+
children: captionsUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13157
|
+
"track",
|
|
13158
|
+
{
|
|
13159
|
+
kind: "captions",
|
|
13160
|
+
src: captionsUrl,
|
|
13161
|
+
srcLang: "en",
|
|
13162
|
+
label: "English",
|
|
13163
|
+
default: true
|
|
13164
|
+
}
|
|
13165
|
+
) : null
|
|
13166
|
+
}
|
|
13167
|
+
);
|
|
13168
|
+
}
|
|
13169
|
+
function YouTubeFacade({
|
|
13170
|
+
url,
|
|
13171
|
+
title = "YouTube Video",
|
|
13172
|
+
priority,
|
|
13173
|
+
className,
|
|
13174
|
+
minimalControls
|
|
13175
|
+
}) {
|
|
13176
|
+
const videoId = extractYouTubeId(url);
|
|
13177
|
+
if (!videoId) return null;
|
|
13178
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, YouTubeFacadeInner, { videoId, title, priority, className, minimalControls });
|
|
13179
|
+
}
|
|
13180
|
+
function YouTubeFacadeInner({
|
|
13181
|
+
videoId,
|
|
13182
|
+
title,
|
|
13183
|
+
priority,
|
|
13184
|
+
className,
|
|
13185
|
+
minimalControls
|
|
13186
|
+
}) {
|
|
13187
|
+
const [activated, setActivated] = _react.useState.call(void 0, false);
|
|
13188
|
+
const wrapperRef = _react.useRef.call(void 0, null);
|
|
13189
|
+
const embedParams = new URLSearchParams({
|
|
13190
|
+
autoplay: "1",
|
|
13191
|
+
rel: "0",
|
|
13192
|
+
modestbranding: "1",
|
|
13193
|
+
playsinline: "1"
|
|
13194
|
+
});
|
|
13195
|
+
if (minimalControls) {
|
|
13196
|
+
embedParams.set("controls", "0");
|
|
13197
|
+
embedParams.set("showinfo", "0");
|
|
13198
|
+
embedParams.set("fs", "0");
|
|
13199
|
+
embedParams.set("iv_load_policy", "3");
|
|
13200
|
+
embedParams.set("cc_load_policy", "0");
|
|
13201
|
+
embedParams.set("disablekb", "1");
|
|
13202
|
+
}
|
|
13203
|
+
const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?${embedParams.toString()}`;
|
|
13204
|
+
const posterJpg = `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
|
|
13205
|
+
const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/mqdefault.webp`;
|
|
13064
13206
|
_react.useEffect.call(void 0, () => {
|
|
13065
|
-
|
|
13066
|
-
|
|
13067
|
-
|
|
13068
|
-
|
|
13207
|
+
if (!activated) return;
|
|
13208
|
+
function handleOutsideClick(event) {
|
|
13209
|
+
const target = event.target;
|
|
13210
|
+
if (!target) return;
|
|
13211
|
+
if (_optionalChain([wrapperRef, 'access', _389 => _389.current, 'optionalAccess', _390 => _390.contains, 'call', _391 => _391(target)])) return;
|
|
13212
|
+
setActivated(false);
|
|
13213
|
+
}
|
|
13214
|
+
document.addEventListener("pointerdown", handleOutsideClick);
|
|
13215
|
+
return () => document.removeEventListener("pointerdown", handleOutsideClick);
|
|
13216
|
+
}, [activated]);
|
|
13217
|
+
_react.useEffect.call(void 0, () => {
|
|
13218
|
+
if (!activated) return;
|
|
13219
|
+
function handleEscape(event) {
|
|
13220
|
+
if (event.key === "Escape") setActivated(false);
|
|
13221
|
+
}
|
|
13222
|
+
document.addEventListener("keydown", handleEscape);
|
|
13223
|
+
return () => document.removeEventListener("keydown", handleEscape);
|
|
13224
|
+
}, [activated]);
|
|
13225
|
+
const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
|
|
13226
|
+
const wrapperStyle = { paddingBottom: "56.25%" };
|
|
13227
|
+
if (activated) {
|
|
13228
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13229
|
+
"iframe",
|
|
13230
|
+
{
|
|
13231
|
+
src: embedUrl,
|
|
13232
|
+
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
13233
|
+
allowFullScreen: true,
|
|
13234
|
+
title,
|
|
13235
|
+
className: "absolute inset-0 w-full h-full border-0 rounded-lg"
|
|
13236
|
+
}
|
|
13237
|
+
) });
|
|
13069
13238
|
}
|
|
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,
|
|
13239
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
13077
13240
|
"button",
|
|
13078
13241
|
{
|
|
13079
|
-
|
|
13080
|
-
|
|
13081
|
-
|
|
13242
|
+
type: "button",
|
|
13243
|
+
"aria-label": `Play: ${title}`,
|
|
13244
|
+
onClick: () => setActivated(true),
|
|
13245
|
+
className: "group absolute inset-0 p-0 m-0 border border-ods-border rounded-lg overflow-hidden bg-ods-card cursor-pointer",
|
|
13082
13246
|
children: [
|
|
13083
|
-
/* @__PURE__ */ _jsxruntime.
|
|
13084
|
-
"
|
|
13085
|
-
|
|
13086
|
-
|
|
13087
|
-
|
|
13088
|
-
|
|
13089
|
-
|
|
13090
|
-
|
|
13091
|
-
|
|
13092
|
-
|
|
13247
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
|
|
13248
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
|
|
13249
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13250
|
+
"img",
|
|
13251
|
+
{
|
|
13252
|
+
src: posterJpg,
|
|
13253
|
+
alt: title,
|
|
13254
|
+
loading: "lazy",
|
|
13255
|
+
fetchPriority: priority ? "high" : "low",
|
|
13256
|
+
decoding: priority ? "sync" : "async",
|
|
13257
|
+
className: "absolute inset-0 w-full h-full object-cover"
|
|
13258
|
+
}
|
|
13259
|
+
)
|
|
13260
|
+
] }),
|
|
13261
|
+
/* @__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
13262
|
]
|
|
13094
13263
|
}
|
|
13095
|
-
)
|
|
13096
|
-
|
|
13097
|
-
|
|
13098
|
-
|
|
13099
|
-
|
|
13100
|
-
|
|
13101
|
-
|
|
13102
|
-
allowFullScreen: true
|
|
13103
|
-
}
|
|
13104
|
-
) }) });
|
|
13105
|
-
};
|
|
13264
|
+
) });
|
|
13265
|
+
}
|
|
13266
|
+
|
|
13267
|
+
// src/components/media-carousel.tsx
|
|
13268
|
+
|
|
13269
|
+
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" }) });
|
|
13270
|
+
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
13271
|
var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
13107
13272
|
media,
|
|
13108
13273
|
className,
|
|
@@ -13114,9 +13279,13 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13114
13279
|
const [currentIndex, setCurrentIndex] = _react.useState.call(void 0, 0);
|
|
13115
13280
|
const [touchStart, setTouchStart] = _react.useState.call(void 0, null);
|
|
13116
13281
|
const [touchEnd, setTouchEnd] = _react.useState.call(void 0, null);
|
|
13117
|
-
const [playingVideos, setPlayingVideos] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
|
|
13118
13282
|
const carouselRef = _react.useRef.call(void 0, null);
|
|
13119
13283
|
const thumbnailsRef = _react.useRef.call(void 0, null);
|
|
13284
|
+
_react.useEffect.call(void 0, () => {
|
|
13285
|
+
if (currentIndex >= media.length && media.length > 0) {
|
|
13286
|
+
setCurrentIndex(media.length - 1);
|
|
13287
|
+
}
|
|
13288
|
+
}, [media.length, currentIndex]);
|
|
13120
13289
|
if (!media || media.length === 0) {
|
|
13121
13290
|
return null;
|
|
13122
13291
|
}
|
|
@@ -13124,71 +13293,14 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13124
13293
|
if (!currentItem) {
|
|
13125
13294
|
return null;
|
|
13126
13295
|
}
|
|
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
13296
|
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
13297
|
setCurrentIndex((prev) => (prev + 1) % media.length);
|
|
13176
|
-
}, [
|
|
13298
|
+
}, [media.length]);
|
|
13177
13299
|
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
13300
|
setCurrentIndex((prev) => (prev - 1 + media.length) % media.length);
|
|
13184
|
-
}, [
|
|
13301
|
+
}, [media.length]);
|
|
13185
13302
|
const selectSlide = _react.useCallback.call(void 0, (index) => {
|
|
13186
13303
|
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
13304
|
setCurrentIndex(index);
|
|
13193
13305
|
}, [currentIndex]);
|
|
13194
13306
|
const handleKeyDown = _react.useCallback.call(void 0, (e) => {
|
|
@@ -13221,82 +13333,26 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13221
13333
|
prevSlide();
|
|
13222
13334
|
}
|
|
13223
13335
|
};
|
|
13224
|
-
const renderYouTubeEmbed = (item, index) =>
|
|
13225
|
-
|
|
13226
|
-
|
|
13227
|
-
|
|
13228
|
-
|
|
13229
|
-
|
|
13230
|
-
|
|
13336
|
+
const renderYouTubeEmbed = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13337
|
+
Video2,
|
|
13338
|
+
{
|
|
13339
|
+
kind: "youtube",
|
|
13340
|
+
url: item.src,
|
|
13341
|
+
title: item.alt || `Video ${index + 1}`,
|
|
13342
|
+
layout: "fill",
|
|
13343
|
+
priority: index === currentIndex
|
|
13231
13344
|
}
|
|
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
|
-
] });
|
|
13345
|
+
);
|
|
13346
|
+
const renderVideo = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13347
|
+
Video2,
|
|
13348
|
+
{
|
|
13349
|
+
url: item.src,
|
|
13350
|
+
poster: item.poster,
|
|
13351
|
+
muted: true,
|
|
13352
|
+
layout: "fill",
|
|
13353
|
+
priority: index === currentIndex
|
|
13354
|
+
}
|
|
13355
|
+
);
|
|
13300
13356
|
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
13357
|
"img",
|
|
13302
13358
|
{
|
|
@@ -13305,14 +13361,12 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13305
13361
|
className: `w-full h-full object-${objectFit}`,
|
|
13306
13362
|
loading: "lazy",
|
|
13307
13363
|
onError: (e) => {
|
|
13308
|
-
console.log("\u274C Image failed to load:", item.src);
|
|
13309
13364
|
const target = e.target;
|
|
13310
13365
|
target.style.display = "none";
|
|
13311
13366
|
}
|
|
13312
13367
|
}
|
|
13313
13368
|
) });
|
|
13314
13369
|
const renderMainMedia = (item, index) => {
|
|
13315
|
-
console.log("\u{1F3AC} Rendering media item:", { type: item.type, src: item.src.substring(0, 100) + "..." });
|
|
13316
13370
|
switch (item.type) {
|
|
13317
13371
|
case "youtube":
|
|
13318
13372
|
return renderYouTubeEmbed(item, index);
|
|
@@ -13327,7 +13381,7 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
|
|
|
13327
13381
|
const isActive = index === currentIndex;
|
|
13328
13382
|
let thumbnailSrc = item.src;
|
|
13329
13383
|
if (item.type === "youtube") {
|
|
13330
|
-
const videoId =
|
|
13384
|
+
const videoId = extractYouTubeId(item.src);
|
|
13331
13385
|
thumbnailSrc = videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : item.src;
|
|
13332
13386
|
} else if (item.type === "video" && item.poster) {
|
|
13333
13387
|
thumbnailSrc = item.poster;
|
|
@@ -13805,8 +13859,8 @@ function PricingDisplay({
|
|
|
13805
13859
|
}
|
|
13806
13860
|
if (pricingArray.length === 1) {
|
|
13807
13861
|
const item = pricingArray[0];
|
|
13808
|
-
const price = _optionalChain([item, 'access',
|
|
13809
|
-
const unit = _optionalChain([item, 'access',
|
|
13862
|
+
const price = _optionalChain([item, 'access', _392 => _392.ranges, 'optionalAccess', _393 => _393[0], 'optionalAccess', _394 => _394.min]) || 0;
|
|
13863
|
+
const unit = _optionalChain([item, 'access', _395 => _395.ranges, 'optionalAccess', _396 => _396[0], 'optionalAccess', _397 => _397.unit]);
|
|
13810
13864
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
|
|
13811
13865
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
|
|
13812
13866
|
unit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
|
|
@@ -13815,11 +13869,11 @@ function PricingDisplay({
|
|
|
13815
13869
|
] })
|
|
13816
13870
|
] });
|
|
13817
13871
|
}
|
|
13818
|
-
const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access',
|
|
13819
|
-
const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access',
|
|
13872
|
+
const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access', _398 => _398.ranges, 'optionalAccess', _399 => _399[0], 'optionalAccess', _400 => _400.min]) || 0, styleConfig.showTildePrefix));
|
|
13873
|
+
const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access', _401 => _401.ranges, 'optionalAccess', _402 => _402[0], 'optionalAccess', _403 => _403.unit]));
|
|
13820
13874
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
|
|
13821
13875
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
|
|
13822
|
-
itemWithUnit && _optionalChain([itemWithUnit, 'access',
|
|
13876
|
+
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
13877
|
"/",
|
|
13824
13878
|
itemWithUnit.ranges[0].unit
|
|
13825
13879
|
] })
|
|
@@ -14017,7 +14071,7 @@ function VendorTag({
|
|
|
14017
14071
|
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
14072
|
};
|
|
14019
14073
|
case "classification":
|
|
14020
|
-
const classificationType = _optionalChain([text, 'optionalAccess',
|
|
14074
|
+
const classificationType = _optionalChain([text, 'optionalAccess', _407 => _407.toLowerCase, 'call', _408 => _408()]);
|
|
14021
14075
|
if (classificationType === "open_source") {
|
|
14022
14076
|
return {
|
|
14023
14077
|
text: "Open Source",
|
|
@@ -14071,7 +14125,7 @@ function SelectionSourceBadge({ source, hidden = false }) {
|
|
|
14071
14125
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
14072
14126
|
VendorTag,
|
|
14073
14127
|
{
|
|
14074
|
-
type: _optionalChain([source, 'optionalAccess',
|
|
14128
|
+
type: _optionalChain([source, 'optionalAccess', _409 => _409.toLowerCase, 'call', _410 => _410()]),
|
|
14075
14129
|
size: "sm",
|
|
14076
14130
|
hidden
|
|
14077
14131
|
},
|
|
@@ -16191,12 +16245,12 @@ function OnboardingWalkthrough({
|
|
|
16191
16245
|
}
|
|
16192
16246
|
}, [state.completedSteps, markComplete]);
|
|
16193
16247
|
const handleStepSkip = (step) => {
|
|
16194
|
-
_optionalChain([step, 'access',
|
|
16248
|
+
_optionalChain([step, 'access', _411 => _411.onSkip, 'optionalCall', _412 => _412()]);
|
|
16195
16249
|
markSkipped(step.id);
|
|
16196
16250
|
};
|
|
16197
16251
|
const handleDismiss = () => {
|
|
16198
16252
|
dismissOnboarding();
|
|
16199
|
-
_optionalChain([onDismiss, 'optionalCall',
|
|
16253
|
+
_optionalChain([onDismiss, 'optionalCall', _413 => _413()]);
|
|
16200
16254
|
};
|
|
16201
16255
|
if (state.dismissed) {
|
|
16202
16256
|
return null;
|
|
@@ -16615,810 +16669,6 @@ function ImageGalleryModal({
|
|
|
16615
16669
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
16616
16670
|
|
|
16617
16671
|
|
|
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
16672
|
// src/components/layout/page-container.tsx
|
|
17423
16673
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
17424
16674
|
|
|
@@ -17445,7 +16695,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
17445
16695
|
e.preventDefault();
|
|
17446
16696
|
return;
|
|
17447
16697
|
}
|
|
17448
|
-
_optionalChain([action, 'access',
|
|
16698
|
+
_optionalChain([action, 'access', _414 => _414.onClick, 'optionalCall', _415 => _415()]);
|
|
17449
16699
|
},
|
|
17450
16700
|
[action]
|
|
17451
16701
|
);
|
|
@@ -17486,13 +16736,13 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17486
16736
|
const activate = _react.useCallback.call(void 0, () => {
|
|
17487
16737
|
if (item.disabled) return;
|
|
17488
16738
|
if (item.type === "checkbox") {
|
|
17489
|
-
_optionalChain([item, 'access',
|
|
17490
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16739
|
+
_optionalChain([item, 'access', _416 => _416.onClick, 'optionalCall', _417 => _417()]);
|
|
16740
|
+
_optionalChain([onItemClick, 'optionalCall', _418 => _418(item)]);
|
|
17491
16741
|
return;
|
|
17492
16742
|
}
|
|
17493
16743
|
if (item.type === "submenu") return;
|
|
17494
|
-
_optionalChain([item, 'access',
|
|
17495
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16744
|
+
_optionalChain([item, 'access', _419 => _419.onClick, 'optionalCall', _420 => _420()]);
|
|
16745
|
+
_optionalChain([onItemClick, 'optionalCall', _421 => _421(item)]);
|
|
17496
16746
|
}, [item, onItemClick]);
|
|
17497
16747
|
const handleClick = _react.useCallback.call(void 0,
|
|
17498
16748
|
(e) => {
|
|
@@ -17518,8 +16768,8 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17518
16768
|
e.stopPropagation();
|
|
17519
16769
|
return;
|
|
17520
16770
|
}
|
|
17521
|
-
_optionalChain([item, 'access',
|
|
17522
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16771
|
+
_optionalChain([item, 'access', _422 => _422.onClick, 'optionalCall', _423 => _423()]);
|
|
16772
|
+
_optionalChain([onItemClick, 'optionalCall', _424 => _424(item)]);
|
|
17523
16773
|
},
|
|
17524
16774
|
[item, onItemClick]
|
|
17525
16775
|
);
|
|
@@ -17674,7 +16924,7 @@ var ActionsMenuDropdown = ({
|
|
|
17674
16924
|
const [open, setOpen] = _react.useState.call(void 0, false);
|
|
17675
16925
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
17676
16926
|
(item) => {
|
|
17677
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16927
|
+
_optionalChain([onItemClick, 'optionalCall', _425 => _425(item)]);
|
|
17678
16928
|
if (item.type !== "checkbox" && item.type !== "submenu") {
|
|
17679
16929
|
setOpen(false);
|
|
17680
16930
|
}
|
|
@@ -17845,7 +17095,7 @@ function IconButtonsVariant({
|
|
|
17845
17095
|
}) {
|
|
17846
17096
|
const desktopActions = actions.filter((a) => !a.showOnlyMobile);
|
|
17847
17097
|
const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
|
|
17848
|
-
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access',
|
|
17098
|
+
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _426 => _426[0], 'access', _427 => _427.submenu, 'optionalAccess', _428 => _428.length]);
|
|
17849
17099
|
const singleAction = isSingleAction ? actions[0] : null;
|
|
17850
17100
|
const useSingleActionMobile = isSingleAction && !hasMenuActions;
|
|
17851
17101
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -18275,14 +17525,14 @@ function ReleaseDetailPage({
|
|
|
18275
17525
|
releaseVersion
|
|
18276
17526
|
] })
|
|
18277
17527
|
] }) }),
|
|
18278
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess',
|
|
17528
|
+
/* @__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
17529
|
StatusBadge,
|
|
18280
17530
|
{
|
|
18281
|
-
text: (tag.name || _optionalChain([tag, 'access',
|
|
17531
|
+
text: (tag.name || _optionalChain([tag, 'access', _431 => _431.blog_tags, 'optionalAccess', _432 => _432.name]) || "").toUpperCase(),
|
|
18282
17532
|
variant: "card",
|
|
18283
17533
|
className: "bg-ods-card border border-ods-border"
|
|
18284
17534
|
},
|
|
18285
|
-
tag.id || _optionalChain([tag, 'access',
|
|
17535
|
+
tag.id || _optionalChain([tag, 'access', _433 => _433.blog_tags, 'optionalAccess', _434 => _434.id])
|
|
18286
17536
|
))]) }),
|
|
18287
17537
|
/* @__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
17538
|
/* @__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 +17551,15 @@ function ReleaseDetailPage({
|
|
|
18301
17551
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18302
17552
|
SquareAvatar,
|
|
18303
17553
|
{
|
|
18304
|
-
src: _optionalChain([author, 'optionalAccess',
|
|
18305
|
-
alt: _optionalChain([author, 'optionalAccess',
|
|
18306
|
-
fallback: getInitials4(_optionalChain([author, 'optionalAccess',
|
|
17554
|
+
src: _optionalChain([author, 'optionalAccess', _435 => _435.avatar_url]) || "",
|
|
17555
|
+
alt: _optionalChain([author, 'optionalAccess', _436 => _436.full_name]) || "Author",
|
|
17556
|
+
fallback: getInitials4(_optionalChain([author, 'optionalAccess', _437 => _437.full_name]) || "Unknown"),
|
|
18307
17557
|
size: "md",
|
|
18308
17558
|
variant: "round"
|
|
18309
17559
|
}
|
|
18310
17560
|
),
|
|
18311
17561
|
/* @__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',
|
|
17562
|
+
/* @__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
17563
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
|
|
18314
17564
|
] })
|
|
18315
17565
|
] })
|
|
@@ -18324,7 +17574,7 @@ function ReleaseDetailPage({
|
|
|
18324
17574
|
setGalleryOpen(true);
|
|
18325
17575
|
}
|
|
18326
17576
|
},
|
|
18327
|
-
children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17577
|
+
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
17578
|
},
|
|
18329
17579
|
mediaItem.id || index
|
|
18330
17580
|
)) }),
|
|
@@ -18340,16 +17590,36 @@ function ReleaseDetailPage({
|
|
|
18340
17590
|
videoBites,
|
|
18341
17591
|
bitesTitle: "Video Clips",
|
|
18342
17592
|
filterPublishedBites: true,
|
|
18343
|
-
srtContent: _optionalChain([release, 'optionalAccess',
|
|
18344
|
-
captionsUrl: _optionalChain([release, 'optionalAccess',
|
|
17593
|
+
srtContent: _optionalChain([release, 'optionalAccess', _439 => _439.srt_content]),
|
|
17594
|
+
captionsUrl: _optionalChain([release, 'optionalAccess', _440 => _440.captionsUrl])
|
|
18345
17595
|
}
|
|
18346
17596
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
18347
|
-
youtubeUrl && (
|
|
18348
|
-
|
|
18349
|
-
|
|
18350
|
-
|
|
18351
|
-
|
|
18352
|
-
|
|
17597
|
+
youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17598
|
+
Video2,
|
|
17599
|
+
{
|
|
17600
|
+
kind: "youtube",
|
|
17601
|
+
url: youtubeUrl,
|
|
17602
|
+
title: `${releaseTitle} - Video`,
|
|
17603
|
+
layout: "native"
|
|
17604
|
+
}
|
|
17605
|
+
),
|
|
17606
|
+
!youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17607
|
+
Video2,
|
|
17608
|
+
{
|
|
17609
|
+
url: mainVideoUrl,
|
|
17610
|
+
srtContent: _optionalChain([release, 'optionalAccess', _441 => _441.srt_content]),
|
|
17611
|
+
captionsUrl: _optionalChain([release, 'optionalAccess', _442 => _442.captionsUrl]),
|
|
17612
|
+
layout: "centered"
|
|
17613
|
+
}
|
|
17614
|
+
),
|
|
17615
|
+
highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17616
|
+
Video2,
|
|
17617
|
+
{
|
|
17618
|
+
url: highlightVideoUrl,
|
|
17619
|
+
poster: highlightVideoThumbnail,
|
|
17620
|
+
layout: "centered"
|
|
17621
|
+
}
|
|
17622
|
+
)
|
|
18353
17623
|
] }),
|
|
18354
17624
|
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
17625
|
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 +17698,7 @@ function ReleaseDetailPage({
|
|
|
18428
17698
|
}
|
|
18429
17699
|
)
|
|
18430
17700
|
] }),
|
|
18431
|
-
(_optionalChain([githubReleases, 'optionalAccess',
|
|
17701
|
+
(_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
17702
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
|
|
18433
17703
|
/* @__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
17704
|
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 +17727,7 @@ function ReleaseDetailPage({
|
|
|
18457
17727
|
{
|
|
18458
17728
|
href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
|
|
18459
17729
|
className: "text-h4 text-[#ffc008] hover:underline",
|
|
18460
|
-
children: _optionalChain([path, 'access',
|
|
17730
|
+
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
17731
|
}
|
|
18462
17732
|
),
|
|
18463
17733
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
@@ -18603,7 +17873,7 @@ function InfoRow({ label, value, icon }) {
|
|
|
18603
17873
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
18604
17874
|
|
|
18605
17875
|
|
|
18606
|
-
var InputTrigger =
|
|
17876
|
+
var InputTrigger = React47.forwardRef(
|
|
18607
17877
|
({ selectedLabel, placeholder, startIcon, endIcon, invalid, className, disabled, ...props }, ref) => {
|
|
18608
17878
|
const isPlaceholder = selectedLabel === void 0 || selectedLabel === null || selectedLabel === "";
|
|
18609
17879
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18667,8 +17937,8 @@ function MediaTypeSelector({
|
|
|
18667
17937
|
className,
|
|
18668
17938
|
disabled
|
|
18669
17939
|
}) {
|
|
18670
|
-
const [key, setKey] =
|
|
18671
|
-
|
|
17940
|
+
const [key, setKey] = React48.useState(0);
|
|
17941
|
+
React48.useEffect(() => {
|
|
18672
17942
|
setKey((prev) => prev + 1);
|
|
18673
17943
|
}, [value]);
|
|
18674
17944
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18824,7 +18094,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
18824
18094
|
|
|
18825
18095
|
var _reactradiogroup = require('@radix-ui/react-radio-group'); var RadioGroupPrimitive = _interopRequireWildcard(_reactradiogroup);
|
|
18826
18096
|
|
|
18827
|
-
var RadioGroup =
|
|
18097
|
+
var RadioGroup = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18828
18098
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18829
18099
|
RadioGroupPrimitive.Root,
|
|
18830
18100
|
{
|
|
@@ -18835,7 +18105,7 @@ var RadioGroup = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
18835
18105
|
);
|
|
18836
18106
|
});
|
|
18837
18107
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
18838
|
-
var RadioGroupItem =
|
|
18108
|
+
var RadioGroupItem = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18839
18109
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18840
18110
|
RadioGroupPrimitive.Item,
|
|
18841
18111
|
{
|
|
@@ -18856,7 +18126,7 @@ var RadioGroupItem = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
18856
18126
|
);
|
|
18857
18127
|
});
|
|
18858
18128
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
18859
|
-
var RadioGroupBlock =
|
|
18129
|
+
var RadioGroupBlock = React50.forwardRef(
|
|
18860
18130
|
({ className, options, variant = "separated", error, itemClassName, disabled, ...props }, ref) => {
|
|
18861
18131
|
const isGrouped = variant === "grouped";
|
|
18862
18132
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "relative flex w-full flex-col", className), children: [
|
|
@@ -18970,7 +18240,7 @@ function TagsInput({
|
|
|
18970
18240
|
badgeClassName,
|
|
18971
18241
|
label
|
|
18972
18242
|
}) {
|
|
18973
|
-
const [inputValue, setInputValue] =
|
|
18243
|
+
const [inputValue, setInputValue] = React51.useState("");
|
|
18974
18244
|
const handleAddTag = () => {
|
|
18975
18245
|
const trimmedValue = inputValue.trim();
|
|
18976
18246
|
if (!trimmedValue) return;
|
|
@@ -19076,19 +18346,19 @@ function TagsManager({
|
|
|
19076
18346
|
disabled = false,
|
|
19077
18347
|
className
|
|
19078
18348
|
}) {
|
|
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 =
|
|
18349
|
+
const [open, setOpen] = React52.useState(false);
|
|
18350
|
+
const [search, setSearch] = React52.useState("");
|
|
18351
|
+
const [editingId, setEditingId] = React52.useState(null);
|
|
18352
|
+
const [editingName, setEditingName] = React52.useState("");
|
|
18353
|
+
const editInputRef = React52.useRef(null);
|
|
18354
|
+
const inputRef = React52.useRef(null);
|
|
18355
|
+
const containerRef = React52.useRef(null);
|
|
19086
18356
|
const selectedTags = tags.filter((t) => selectedIds.includes(t.id));
|
|
19087
18357
|
const filtered = tags.filter(
|
|
19088
18358
|
(t) => t.name.toLowerCase().includes(search.toLowerCase())
|
|
19089
18359
|
);
|
|
19090
18360
|
const showCreateOption = onCreateTag && search.trim() && !tags.some((t) => t.name.toLowerCase() === search.trim().toLowerCase());
|
|
19091
|
-
const toggleTag =
|
|
18361
|
+
const toggleTag = React52.useCallback(
|
|
19092
18362
|
(id) => {
|
|
19093
18363
|
if (selectedIds.includes(id)) {
|
|
19094
18364
|
onChange(selectedIds.filter((i) => i !== id));
|
|
@@ -19098,32 +18368,32 @@ function TagsManager({
|
|
|
19098
18368
|
},
|
|
19099
18369
|
[selectedIds, onChange]
|
|
19100
18370
|
);
|
|
19101
|
-
const handleCreate =
|
|
18371
|
+
const handleCreate = React52.useCallback(async () => {
|
|
19102
18372
|
if (!onCreateTag) return;
|
|
19103
18373
|
const name = search.trim();
|
|
19104
18374
|
if (!name) return;
|
|
19105
18375
|
const result = await onCreateTag(name);
|
|
19106
|
-
if (_optionalChain([result, 'optionalAccess',
|
|
18376
|
+
if (_optionalChain([result, 'optionalAccess', _453 => _453.id])) {
|
|
19107
18377
|
onChange([...selectedIds, result.id]);
|
|
19108
18378
|
setSearch("");
|
|
19109
18379
|
}
|
|
19110
18380
|
}, [search, onCreateTag, selectedIds, onChange]);
|
|
19111
|
-
const startEdit =
|
|
18381
|
+
const startEdit = React52.useCallback((id, name) => {
|
|
19112
18382
|
setEditingId(id);
|
|
19113
18383
|
setEditingName(name);
|
|
19114
|
-
setTimeout(() => _optionalChain([editInputRef, 'access',
|
|
18384
|
+
setTimeout(() => _optionalChain([editInputRef, 'access', _454 => _454.current, 'optionalAccess', _455 => _455.focus, 'call', _456 => _456()]), 0);
|
|
19115
18385
|
}, []);
|
|
19116
|
-
const confirmEdit =
|
|
18386
|
+
const confirmEdit = React52.useCallback(async () => {
|
|
19117
18387
|
if (!onUpdateTag || !editingId || !editingName.trim()) return;
|
|
19118
18388
|
await onUpdateTag(editingId, editingName.trim());
|
|
19119
18389
|
setEditingId(null);
|
|
19120
18390
|
setEditingName("");
|
|
19121
18391
|
}, [editingId, editingName, onUpdateTag]);
|
|
19122
|
-
const cancelEdit =
|
|
18392
|
+
const cancelEdit = React52.useCallback(() => {
|
|
19123
18393
|
setEditingId(null);
|
|
19124
18394
|
setEditingName("");
|
|
19125
18395
|
}, []);
|
|
19126
|
-
const handleDelete =
|
|
18396
|
+
const handleDelete = React52.useCallback(
|
|
19127
18397
|
async (id) => {
|
|
19128
18398
|
if (!onDeleteTag) return;
|
|
19129
18399
|
await onDeleteTag(id);
|
|
@@ -19133,12 +18403,12 @@ function TagsManager({
|
|
|
19133
18403
|
},
|
|
19134
18404
|
[onDeleteTag, selectedIds, onChange]
|
|
19135
18405
|
);
|
|
19136
|
-
const handleClearAll =
|
|
18406
|
+
const handleClearAll = React52.useCallback(
|
|
19137
18407
|
(e) => {
|
|
19138
18408
|
e.stopPropagation();
|
|
19139
18409
|
onChange([]);
|
|
19140
18410
|
setSearch("");
|
|
19141
|
-
_optionalChain([inputRef, 'access',
|
|
18411
|
+
_optionalChain([inputRef, 'access', _457 => _457.current, 'optionalAccess', _458 => _458.focus, 'call', _459 => _459()]);
|
|
19142
18412
|
},
|
|
19143
18413
|
[onChange]
|
|
19144
18414
|
);
|
|
@@ -19237,10 +18507,10 @@ function TagsManager({
|
|
|
19237
18507
|
align: "start",
|
|
19238
18508
|
onOpenAutoFocus: (e) => {
|
|
19239
18509
|
e.preventDefault();
|
|
19240
|
-
_optionalChain([inputRef, 'access',
|
|
18510
|
+
_optionalChain([inputRef, 'access', _460 => _460.current, 'optionalAccess', _461 => _461.focus, 'call', _462 => _462()]);
|
|
19241
18511
|
},
|
|
19242
18512
|
onInteractOutside: (e) => {
|
|
19243
|
-
if (_optionalChain([containerRef, 'access',
|
|
18513
|
+
if (_optionalChain([containerRef, 'access', _463 => _463.current, 'optionalAccess', _464 => _464.contains, 'call', _465 => _465(e.target)])) {
|
|
19244
18514
|
e.preventDefault();
|
|
19245
18515
|
}
|
|
19246
18516
|
},
|
|
@@ -19434,7 +18704,7 @@ var _reactalertdialog = require('@radix-ui/react-alert-dialog'); var AlertDialog
|
|
|
19434
18704
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
19435
18705
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
19436
18706
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
19437
|
-
var AlertDialogOverlay =
|
|
18707
|
+
var AlertDialogOverlay = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19438
18708
|
AlertDialogPrimitive.Overlay,
|
|
19439
18709
|
{
|
|
19440
18710
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -19446,7 +18716,7 @@ var AlertDialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19446
18716
|
}
|
|
19447
18717
|
));
|
|
19448
18718
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
19449
|
-
var AlertDialogContent =
|
|
18719
|
+
var AlertDialogContent = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AlertDialogPortal, { children: [
|
|
19450
18720
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AlertDialogOverlay, {}),
|
|
19451
18721
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19452
18722
|
AlertDialogPrimitive.Content,
|
|
@@ -19489,7 +18759,7 @@ var AlertDialogFooter = ({
|
|
|
19489
18759
|
}
|
|
19490
18760
|
);
|
|
19491
18761
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
19492
|
-
var AlertDialogTitle =
|
|
18762
|
+
var AlertDialogTitle = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19493
18763
|
AlertDialogPrimitive.Title,
|
|
19494
18764
|
{
|
|
19495
18765
|
ref,
|
|
@@ -19498,7 +18768,7 @@ var AlertDialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
19498
18768
|
}
|
|
19499
18769
|
));
|
|
19500
18770
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
19501
|
-
var AlertDialogDescription =
|
|
18771
|
+
var AlertDialogDescription = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19502
18772
|
AlertDialogPrimitive.Description,
|
|
19503
18773
|
{
|
|
19504
18774
|
ref,
|
|
@@ -19507,7 +18777,7 @@ var AlertDialogDescription = React54.forwardRef(({ className, ...props }, ref) =
|
|
|
19507
18777
|
}
|
|
19508
18778
|
));
|
|
19509
18779
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
19510
|
-
var AlertDialogAction =
|
|
18780
|
+
var AlertDialogAction = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19511
18781
|
AlertDialogPrimitive.Action,
|
|
19512
18782
|
{
|
|
19513
18783
|
ref,
|
|
@@ -19516,7 +18786,7 @@ var AlertDialogAction = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19516
18786
|
}
|
|
19517
18787
|
));
|
|
19518
18788
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
19519
|
-
var AlertDialogCancel =
|
|
18789
|
+
var AlertDialogCancel = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19520
18790
|
AlertDialogPrimitive.Cancel,
|
|
19521
18791
|
{
|
|
19522
18792
|
ref,
|
|
@@ -19544,7 +18814,7 @@ var Dialog = DialogPrimitive3.Root;
|
|
|
19544
18814
|
var DialogTrigger = DialogPrimitive3.Trigger;
|
|
19545
18815
|
var DialogPortal = DialogPrimitive3.Portal;
|
|
19546
18816
|
var DialogClose = DialogPrimitive3.Close;
|
|
19547
|
-
var DialogOverlay =
|
|
18817
|
+
var DialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19548
18818
|
DialogPrimitive3.Overlay,
|
|
19549
18819
|
{
|
|
19550
18820
|
ref,
|
|
@@ -19556,7 +18826,7 @@ var DialogOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
19556
18826
|
}
|
|
19557
18827
|
));
|
|
19558
18828
|
DialogOverlay.displayName = DialogPrimitive3.Overlay.displayName;
|
|
19559
|
-
var DialogContent =
|
|
18829
|
+
var DialogContent = React54.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPortal, { children: [
|
|
19560
18830
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogOverlay, {}),
|
|
19561
18831
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19562
18832
|
DialogPrimitive3.Content,
|
|
@@ -19582,7 +18852,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.
|
|
|
19582
18852
|
DialogHeader.displayName = "DialogHeader";
|
|
19583
18853
|
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
18854
|
DialogFooter.displayName = "DialogFooter";
|
|
19585
|
-
var DialogTitle =
|
|
18855
|
+
var DialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19586
18856
|
DialogPrimitive3.Title,
|
|
19587
18857
|
{
|
|
19588
18858
|
ref,
|
|
@@ -19591,7 +18861,7 @@ var DialogTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
19591
18861
|
}
|
|
19592
18862
|
));
|
|
19593
18863
|
DialogTitle.displayName = DialogPrimitive3.Title.displayName;
|
|
19594
|
-
var DialogDescription =
|
|
18864
|
+
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
18865
|
DialogDescription.displayName = DialogPrimitive3.Description.displayName;
|
|
19596
18866
|
|
|
19597
18867
|
// src/components/ui/modal.tsx
|
|
@@ -19599,7 +18869,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19599
18869
|
|
|
19600
18870
|
|
|
19601
18871
|
|
|
19602
|
-
var Modal =
|
|
18872
|
+
var Modal = React55.forwardRef(
|
|
19603
18873
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19604
18874
|
_react.useEffect.call(void 0, () => {
|
|
19605
18875
|
const handleKeyDown = (event) => {
|
|
@@ -19643,11 +18913,11 @@ var Modal = React56.forwardRef(
|
|
|
19643
18913
|
}
|
|
19644
18914
|
);
|
|
19645
18915
|
Modal.displayName = "Modal";
|
|
19646
|
-
var ModalContent =
|
|
18916
|
+
var ModalContent = React55.forwardRef(
|
|
19647
18917
|
({ 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
18918
|
);
|
|
19649
18919
|
ModalContent.displayName = "ModalContent";
|
|
19650
|
-
var ModalHeader =
|
|
18920
|
+
var ModalHeader = React55.forwardRef(
|
|
19651
18921
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19652
18922
|
"div",
|
|
19653
18923
|
{
|
|
@@ -19658,7 +18928,7 @@ var ModalHeader = React56.forwardRef(
|
|
|
19658
18928
|
)
|
|
19659
18929
|
);
|
|
19660
18930
|
ModalHeader.displayName = "ModalHeader";
|
|
19661
|
-
var ModalTitle =
|
|
18931
|
+
var ModalTitle = React55.forwardRef(
|
|
19662
18932
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19663
18933
|
"h2",
|
|
19664
18934
|
{
|
|
@@ -19669,7 +18939,7 @@ var ModalTitle = React56.forwardRef(
|
|
|
19669
18939
|
)
|
|
19670
18940
|
);
|
|
19671
18941
|
ModalTitle.displayName = "ModalTitle";
|
|
19672
|
-
var ModalFooter =
|
|
18942
|
+
var ModalFooter = React55.forwardRef(
|
|
19673
18943
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19674
18944
|
"div",
|
|
19675
18945
|
{
|
|
@@ -19686,8 +18956,8 @@ ModalFooter.displayName = "ModalFooter";
|
|
|
19686
18956
|
|
|
19687
18957
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
19688
18958
|
|
|
19689
|
-
var ModalContext =
|
|
19690
|
-
var Modal2 =
|
|
18959
|
+
var ModalContext = React56.createContext({});
|
|
18960
|
+
var Modal2 = React56.forwardRef(
|
|
19691
18961
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19692
18962
|
_react.useEffect.call(void 0, () => {
|
|
19693
18963
|
const handleKeyDown = (event) => {
|
|
@@ -19736,13 +19006,13 @@ var Modal2 = React57.forwardRef(
|
|
|
19736
19006
|
}
|
|
19737
19007
|
);
|
|
19738
19008
|
Modal2.displayName = "ModalV2";
|
|
19739
|
-
var ModalContent2 =
|
|
19009
|
+
var ModalContent2 = React56.forwardRef(
|
|
19740
19010
|
({ 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
19011
|
);
|
|
19742
19012
|
ModalContent2.displayName = "ModalV2Content";
|
|
19743
|
-
var ModalHeader2 =
|
|
19013
|
+
var ModalHeader2 = React56.forwardRef(
|
|
19744
19014
|
({ children, className }, ref) => {
|
|
19745
|
-
const { onClose } =
|
|
19015
|
+
const { onClose } = React56.useContext(ModalContext);
|
|
19746
19016
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19747
19017
|
"div",
|
|
19748
19018
|
{
|
|
@@ -19765,7 +19035,7 @@ var ModalHeader2 = React57.forwardRef(
|
|
|
19765
19035
|
}
|
|
19766
19036
|
);
|
|
19767
19037
|
ModalHeader2.displayName = "ModalV2Header";
|
|
19768
|
-
var ModalTitle2 =
|
|
19038
|
+
var ModalTitle2 = React56.forwardRef(
|
|
19769
19039
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19770
19040
|
"h2",
|
|
19771
19041
|
{
|
|
@@ -19776,7 +19046,7 @@ var ModalTitle2 = React57.forwardRef(
|
|
|
19776
19046
|
)
|
|
19777
19047
|
);
|
|
19778
19048
|
ModalTitle2.displayName = "ModalV2Title";
|
|
19779
|
-
var ModalFooter2 =
|
|
19049
|
+
var ModalFooter2 = React56.forwardRef(
|
|
19780
19050
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19781
19051
|
"div",
|
|
19782
19052
|
{
|
|
@@ -19793,7 +19063,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19793
19063
|
|
|
19794
19064
|
var _reactseparator = require('@radix-ui/react-separator'); var SeparatorPrimitive = _interopRequireWildcard(_reactseparator);
|
|
19795
19065
|
|
|
19796
|
-
var Separator2 =
|
|
19066
|
+
var Separator2 = React57.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19797
19067
|
SeparatorPrimitive.Root,
|
|
19798
19068
|
{
|
|
19799
19069
|
ref,
|
|
@@ -19816,7 +19086,7 @@ var Sheet = SheetPrimitive.Root;
|
|
|
19816
19086
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
19817
19087
|
var SheetClose = SheetPrimitive.Close;
|
|
19818
19088
|
var SheetPortal = SheetPrimitive.Portal;
|
|
19819
|
-
var SheetOverlay =
|
|
19089
|
+
var SheetOverlay = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19820
19090
|
SheetPrimitive.Overlay,
|
|
19821
19091
|
{
|
|
19822
19092
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -19844,7 +19114,7 @@ var sheetVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
19844
19114
|
}
|
|
19845
19115
|
}
|
|
19846
19116
|
);
|
|
19847
|
-
var SheetContent =
|
|
19117
|
+
var SheetContent = React58.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetPortal, { children: [
|
|
19848
19118
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetOverlay, {}),
|
|
19849
19119
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19850
19120
|
SheetPrimitive.Content,
|
|
@@ -19891,7 +19161,7 @@ var SheetFooter = ({
|
|
|
19891
19161
|
}
|
|
19892
19162
|
);
|
|
19893
19163
|
SheetFooter.displayName = "SheetFooter";
|
|
19894
|
-
var SheetTitle =
|
|
19164
|
+
var SheetTitle = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19895
19165
|
SheetPrimitive.Title,
|
|
19896
19166
|
{
|
|
19897
19167
|
ref,
|
|
@@ -19900,7 +19170,7 @@ var SheetTitle = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
19900
19170
|
}
|
|
19901
19171
|
));
|
|
19902
19172
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
19903
|
-
var SheetDescription =
|
|
19173
|
+
var SheetDescription = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19904
19174
|
SheetPrimitive.Description,
|
|
19905
19175
|
{
|
|
19906
19176
|
ref,
|
|
@@ -19916,7 +19186,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19916
19186
|
var _reacttabs = require('@radix-ui/react-tabs'); var TabsPrimitive = _interopRequireWildcard(_reacttabs);
|
|
19917
19187
|
|
|
19918
19188
|
var Tabs = TabsPrimitive.Root;
|
|
19919
|
-
var TabsList =
|
|
19189
|
+
var TabsList = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19920
19190
|
TabsPrimitive.List,
|
|
19921
19191
|
{
|
|
19922
19192
|
ref,
|
|
@@ -19928,7 +19198,7 @@ var TabsList = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
19928
19198
|
}
|
|
19929
19199
|
));
|
|
19930
19200
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
19931
|
-
var TabsTrigger =
|
|
19201
|
+
var TabsTrigger = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19932
19202
|
TabsPrimitive.Trigger,
|
|
19933
19203
|
{
|
|
19934
19204
|
ref,
|
|
@@ -19940,7 +19210,7 @@ var TabsTrigger = React60.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
19940
19210
|
}
|
|
19941
19211
|
));
|
|
19942
19212
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
19943
|
-
var TabsContent =
|
|
19213
|
+
var TabsContent = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19944
19214
|
TabsPrimitive.Content,
|
|
19945
19215
|
{
|
|
19946
19216
|
ref,
|
|
@@ -19960,9 +19230,9 @@ var _reactaccordion = require('@radix-ui/react-accordion'); var AccordionPrimiti
|
|
|
19960
19230
|
|
|
19961
19231
|
|
|
19962
19232
|
var Accordion = AccordionPrimitive.Root;
|
|
19963
|
-
var AccordionItem =
|
|
19233
|
+
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
19234
|
AccordionItem.displayName = "AccordionItem";
|
|
19965
|
-
var AccordionTrigger =
|
|
19235
|
+
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
19236
|
AccordionPrimitive.Trigger,
|
|
19967
19237
|
{
|
|
19968
19238
|
ref,
|
|
@@ -19978,7 +19248,7 @@ var AccordionTrigger = React61.forwardRef(({ className, children, ...props }, re
|
|
|
19978
19248
|
}
|
|
19979
19249
|
) }));
|
|
19980
19250
|
AccordionTrigger.displayName = "AccordionTrigger";
|
|
19981
|
-
var AccordionContent =
|
|
19251
|
+
var AccordionContent = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19982
19252
|
AccordionPrimitive.Content,
|
|
19983
19253
|
{
|
|
19984
19254
|
ref,
|
|
@@ -19998,9 +19268,9 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19998
19268
|
var _reactslot = require('@radix-ui/react-slot');
|
|
19999
19269
|
|
|
20000
19270
|
|
|
20001
|
-
var Breadcrumb =
|
|
19271
|
+
var Breadcrumb = React61.forwardRef(({ ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
20002
19272
|
Breadcrumb.displayName = "Breadcrumb";
|
|
20003
|
-
var BreadcrumbList =
|
|
19273
|
+
var BreadcrumbList = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20004
19274
|
"ol",
|
|
20005
19275
|
{
|
|
20006
19276
|
ref,
|
|
@@ -20012,7 +19282,7 @@ var BreadcrumbList = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20012
19282
|
}
|
|
20013
19283
|
));
|
|
20014
19284
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
20015
|
-
var BreadcrumbItem =
|
|
19285
|
+
var BreadcrumbItem = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20016
19286
|
"li",
|
|
20017
19287
|
{
|
|
20018
19288
|
ref,
|
|
@@ -20021,7 +19291,7 @@ var BreadcrumbItem = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20021
19291
|
}
|
|
20022
19292
|
));
|
|
20023
19293
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
20024
|
-
var BreadcrumbLink =
|
|
19294
|
+
var BreadcrumbLink = React61.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
20025
19295
|
const Comp = asChild ? _reactslot.Slot : "a";
|
|
20026
19296
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20027
19297
|
Comp,
|
|
@@ -20033,7 +19303,7 @@ var BreadcrumbLink = React62.forwardRef(({ asChild, className, ...props }, ref)
|
|
|
20033
19303
|
);
|
|
20034
19304
|
});
|
|
20035
19305
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
20036
|
-
var BreadcrumbPage =
|
|
19306
|
+
var BreadcrumbPage = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20037
19307
|
"span",
|
|
20038
19308
|
{
|
|
20039
19309
|
ref,
|
|
@@ -20089,7 +19359,7 @@ var MenubarGroup = MenubarPrimitive.Group;
|
|
|
20089
19359
|
var MenubarPortal = MenubarPrimitive.Portal;
|
|
20090
19360
|
var MenubarSub = MenubarPrimitive.Sub;
|
|
20091
19361
|
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
20092
|
-
var Menubar =
|
|
19362
|
+
var Menubar = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20093
19363
|
MenubarPrimitive.Root,
|
|
20094
19364
|
{
|
|
20095
19365
|
ref,
|
|
@@ -20101,7 +19371,7 @@ var Menubar = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
20101
19371
|
}
|
|
20102
19372
|
));
|
|
20103
19373
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
20104
|
-
var MenubarTrigger =
|
|
19374
|
+
var MenubarTrigger = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20105
19375
|
MenubarPrimitive.Trigger,
|
|
20106
19376
|
{
|
|
20107
19377
|
ref,
|
|
@@ -20113,7 +19383,7 @@ var MenubarTrigger = React63.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20113
19383
|
}
|
|
20114
19384
|
));
|
|
20115
19385
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
20116
|
-
var MenubarSubTrigger =
|
|
19386
|
+
var MenubarSubTrigger = React62.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20117
19387
|
MenubarPrimitive.SubTrigger,
|
|
20118
19388
|
{
|
|
20119
19389
|
ref,
|
|
@@ -20130,7 +19400,7 @@ var MenubarSubTrigger = React63.forwardRef(({ className, inset, children, ...pro
|
|
|
20130
19400
|
}
|
|
20131
19401
|
));
|
|
20132
19402
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
20133
|
-
var MenubarSubContent =
|
|
19403
|
+
var MenubarSubContent = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20134
19404
|
MenubarPrimitive.SubContent,
|
|
20135
19405
|
{
|
|
20136
19406
|
ref,
|
|
@@ -20142,7 +19412,7 @@ var MenubarSubContent = React63.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20142
19412
|
}
|
|
20143
19413
|
));
|
|
20144
19414
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
20145
|
-
var MenubarContent =
|
|
19415
|
+
var MenubarContent = React62.forwardRef(
|
|
20146
19416
|
({ 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
19417
|
MenubarPrimitive.Content,
|
|
20148
19418
|
{
|
|
@@ -20159,7 +19429,7 @@ var MenubarContent = React63.forwardRef(
|
|
|
20159
19429
|
) })
|
|
20160
19430
|
);
|
|
20161
19431
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
20162
|
-
var MenubarItem =
|
|
19432
|
+
var MenubarItem = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20163
19433
|
MenubarPrimitive.Item,
|
|
20164
19434
|
{
|
|
20165
19435
|
ref,
|
|
@@ -20172,7 +19442,7 @@ var MenubarItem = React63.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
20172
19442
|
}
|
|
20173
19443
|
));
|
|
20174
19444
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
20175
|
-
var MenubarCheckboxItem =
|
|
19445
|
+
var MenubarCheckboxItem = React62.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20176
19446
|
MenubarPrimitive.CheckboxItem,
|
|
20177
19447
|
{
|
|
20178
19448
|
ref,
|
|
@@ -20189,7 +19459,7 @@ var MenubarCheckboxItem = React63.forwardRef(({ className, children, checked, ..
|
|
|
20189
19459
|
}
|
|
20190
19460
|
));
|
|
20191
19461
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
20192
|
-
var MenubarRadioItem =
|
|
19462
|
+
var MenubarRadioItem = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20193
19463
|
MenubarPrimitive.RadioItem,
|
|
20194
19464
|
{
|
|
20195
19465
|
ref,
|
|
@@ -20205,7 +19475,7 @@ var MenubarRadioItem = React63.forwardRef(({ className, children, ...props }, re
|
|
|
20205
19475
|
}
|
|
20206
19476
|
));
|
|
20207
19477
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
20208
|
-
var MenubarLabel =
|
|
19478
|
+
var MenubarLabel = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20209
19479
|
MenubarPrimitive.Label,
|
|
20210
19480
|
{
|
|
20211
19481
|
ref,
|
|
@@ -20218,7 +19488,7 @@ var MenubarLabel = React63.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
20218
19488
|
}
|
|
20219
19489
|
));
|
|
20220
19490
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
20221
|
-
var MenubarSeparator =
|
|
19491
|
+
var MenubarSeparator = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20222
19492
|
MenubarPrimitive.Separator,
|
|
20223
19493
|
{
|
|
20224
19494
|
ref,
|
|
@@ -20251,7 +19521,7 @@ var _reactnavigationmenu = require('@radix-ui/react-navigation-menu'); var Navig
|
|
|
20251
19521
|
|
|
20252
19522
|
|
|
20253
19523
|
|
|
20254
|
-
var NavigationMenu =
|
|
19524
|
+
var NavigationMenu = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20255
19525
|
NavigationMenuPrimitive.Root,
|
|
20256
19526
|
{
|
|
20257
19527
|
ref,
|
|
@@ -20267,7 +19537,7 @@ var NavigationMenu = React64.forwardRef(({ className, children, ...props }, ref)
|
|
|
20267
19537
|
}
|
|
20268
19538
|
));
|
|
20269
19539
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
20270
|
-
var NavigationMenuList =
|
|
19540
|
+
var NavigationMenuList = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20271
19541
|
NavigationMenuPrimitive.List,
|
|
20272
19542
|
{
|
|
20273
19543
|
ref,
|
|
@@ -20283,7 +19553,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
20283
19553
|
var navigationMenuTriggerStyle = _classvarianceauthority.cva.call(void 0,
|
|
20284
19554
|
"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
19555
|
);
|
|
20286
|
-
var NavigationMenuTrigger =
|
|
19556
|
+
var NavigationMenuTrigger = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20287
19557
|
NavigationMenuPrimitive.Trigger,
|
|
20288
19558
|
{
|
|
20289
19559
|
ref,
|
|
@@ -20303,7 +19573,7 @@ var NavigationMenuTrigger = React64.forwardRef(({ className, children, ...props
|
|
|
20303
19573
|
}
|
|
20304
19574
|
));
|
|
20305
19575
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
20306
|
-
var NavigationMenuContent =
|
|
19576
|
+
var NavigationMenuContent = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20307
19577
|
NavigationMenuPrimitive.Content,
|
|
20308
19578
|
{
|
|
20309
19579
|
ref,
|
|
@@ -20316,7 +19586,7 @@ var NavigationMenuContent = React64.forwardRef(({ className, ...props }, ref) =>
|
|
|
20316
19586
|
));
|
|
20317
19587
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
20318
19588
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
20319
|
-
var NavigationMenuViewport =
|
|
19589
|
+
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
19590
|
NavigationMenuPrimitive.Viewport,
|
|
20321
19591
|
{
|
|
20322
19592
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -20328,7 +19598,7 @@ var NavigationMenuViewport = React64.forwardRef(({ className, ...props }, ref) =
|
|
|
20328
19598
|
}
|
|
20329
19599
|
) }));
|
|
20330
19600
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
20331
|
-
var NavigationMenuIndicator =
|
|
19601
|
+
var NavigationMenuIndicator = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20332
19602
|
NavigationMenuPrimitive.Indicator,
|
|
20333
19603
|
{
|
|
20334
19604
|
ref,
|
|
@@ -20387,19 +19657,19 @@ function TabNavigation({
|
|
|
20387
19657
|
const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
|
|
20388
19658
|
const getInitialTab = () => {
|
|
20389
19659
|
if (isUrlSyncEnabled) {
|
|
20390
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
19660
|
+
const fromUrl = _optionalChain([searchParams, 'optionalAccess', _466 => _466.get, 'call', _467 => _467(paramName)]) || "";
|
|
20391
19661
|
if (validTabIds.has(fromUrl)) {
|
|
20392
19662
|
return fromUrl;
|
|
20393
19663
|
}
|
|
20394
19664
|
}
|
|
20395
|
-
return defaultTab || _optionalChain([tabs, 'access',
|
|
19665
|
+
return defaultTab || _optionalChain([tabs, 'access', _468 => _468[0], 'optionalAccess', _469 => _469.id]) || "";
|
|
20396
19666
|
};
|
|
20397
19667
|
const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
|
|
20398
19668
|
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
20399
19669
|
_react.useEffect.call(void 0, () => {
|
|
20400
19670
|
if (!isUrlSyncEnabled) return;
|
|
20401
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
20402
|
-
const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access',
|
|
19671
|
+
const fromUrl = _optionalChain([searchParams, 'optionalAccess', _470 => _470.get, 'call', _471 => _471(paramName)]) || "";
|
|
19672
|
+
const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _472 => _472[0], 'optionalAccess', _473 => _473.id]) || "";
|
|
20403
19673
|
if (nextTab !== internalActiveTab) {
|
|
20404
19674
|
setInternalActiveTab(nextTab);
|
|
20405
19675
|
}
|
|
@@ -20407,13 +19677,13 @@ function TabNavigation({
|
|
|
20407
19677
|
const handleTabChange = (tabId) => {
|
|
20408
19678
|
if (isUrlSyncEnabled) {
|
|
20409
19679
|
setInternalActiveTab(tabId);
|
|
20410
|
-
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess',
|
|
19680
|
+
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _474 => _474.toString, 'call', _475 => _475()]));
|
|
20411
19681
|
params.set(paramName, tabId);
|
|
20412
19682
|
const method = replaceState ? "replace" : "push";
|
|
20413
19683
|
router[method](`${pathname}?${params.toString()}`);
|
|
20414
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19684
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _476 => _476(tabId)]);
|
|
20415
19685
|
} else {
|
|
20416
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19686
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _477 => _477(tabId)]);
|
|
20417
19687
|
}
|
|
20418
19688
|
};
|
|
20419
19689
|
const scrollRef = _react.useRef.call(void 0, null);
|
|
@@ -20501,7 +19771,7 @@ function TabNavigation({
|
|
|
20501
19771
|
var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
|
|
20502
19772
|
var getTabComponent = (tabs, tabId) => {
|
|
20503
19773
|
const tab = getTabById(tabs, tabId);
|
|
20504
|
-
return _optionalChain([tab, 'optionalAccess',
|
|
19774
|
+
return _optionalChain([tab, 'optionalAccess', _478 => _478.component]) || null;
|
|
20505
19775
|
};
|
|
20506
19776
|
|
|
20507
19777
|
// src/components/ui/alert.tsx
|
|
@@ -20523,7 +19793,7 @@ var alertVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
20523
19793
|
}
|
|
20524
19794
|
}
|
|
20525
19795
|
);
|
|
20526
|
-
var Alert =
|
|
19796
|
+
var Alert = React65.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20527
19797
|
"div",
|
|
20528
19798
|
{
|
|
20529
19799
|
ref,
|
|
@@ -20533,7 +19803,7 @@ var Alert = React66.forwardRef(({ className, variant, ...props }, ref) => /* @__
|
|
|
20533
19803
|
}
|
|
20534
19804
|
));
|
|
20535
19805
|
Alert.displayName = "Alert";
|
|
20536
|
-
var AlertTitle =
|
|
19806
|
+
var AlertTitle = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20537
19807
|
"h5",
|
|
20538
19808
|
{
|
|
20539
19809
|
ref,
|
|
@@ -20542,7 +19812,7 @@ var AlertTitle = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20542
19812
|
}
|
|
20543
19813
|
));
|
|
20544
19814
|
AlertTitle.displayName = "AlertTitle";
|
|
20545
|
-
var AlertDescription =
|
|
19815
|
+
var AlertDescription = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20546
19816
|
"div",
|
|
20547
19817
|
{
|
|
20548
19818
|
ref,
|
|
@@ -20557,7 +19827,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
20557
19827
|
|
|
20558
19828
|
var _reactprogress = require('@radix-ui/react-progress'); var ProgressPrimitive = _interopRequireWildcard(_reactprogress);
|
|
20559
19829
|
|
|
20560
|
-
var Progress =
|
|
19830
|
+
var Progress = React66.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20561
19831
|
ProgressPrimitive.Root,
|
|
20562
19832
|
{
|
|
20563
19833
|
ref,
|
|
@@ -20838,16 +20108,16 @@ function FilterModal({
|
|
|
20838
20108
|
};
|
|
20839
20109
|
const handleReset = () => {
|
|
20840
20110
|
onFilterChange({});
|
|
20841
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20111
|
+
_optionalChain([onTagsChange, 'optionalCall', _479 => _479([])]);
|
|
20842
20112
|
onClose();
|
|
20843
20113
|
};
|
|
20844
20114
|
const handleApply = () => {
|
|
20845
20115
|
onFilterChange(selectedFilters);
|
|
20846
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20116
|
+
_optionalChain([onTagsChange, 'optionalCall', _480 => _480(pendingTags)]);
|
|
20847
20117
|
onClose();
|
|
20848
20118
|
};
|
|
20849
20119
|
const getColumnDirection = (columnKey) => {
|
|
20850
|
-
return _optionalChain([sortConfig, 'optionalAccess',
|
|
20120
|
+
return _optionalChain([sortConfig, 'optionalAccess', _481 => _481.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
|
|
20851
20121
|
};
|
|
20852
20122
|
const hasSort = !!sortConfig && sortConfig.columns.length > 0;
|
|
20853
20123
|
const hasFilterGroups = filterGroups.length > 0;
|
|
@@ -20896,7 +20166,7 @@ function FilterModal({
|
|
|
20896
20166
|
{
|
|
20897
20167
|
column,
|
|
20898
20168
|
currentDirection: getColumnDirection(column.key),
|
|
20899
|
-
onSort: (direction) => _optionalChain([onSort, 'optionalCall',
|
|
20169
|
+
onSort: (direction) => _optionalChain([onSort, 'optionalCall', _482 => _482(column.key, direction)]),
|
|
20900
20170
|
onClear: onSortClear ? () => onSortClear(column.key) : void 0
|
|
20901
20171
|
},
|
|
20902
20172
|
column.key
|
|
@@ -21062,9 +20332,9 @@ function TitleBlock({
|
|
|
21062
20332
|
const [imageFailed, setImageFailed] = React33.default.useState(false);
|
|
21063
20333
|
React33.default.useEffect(() => {
|
|
21064
20334
|
setImageFailed(false);
|
|
21065
|
-
}, [_optionalChain([image, 'optionalAccess',
|
|
20335
|
+
}, [_optionalChain([image, 'optionalAccess', _483 => _483.src])]);
|
|
21066
20336
|
const showImageFallback = !!image && (imageFailed || !image.src);
|
|
21067
|
-
const initials = getInitials3(_optionalChain([image, 'optionalAccess',
|
|
20337
|
+
const initials = getInitials3(_optionalChain([image, 'optionalAccess', _484 => _484.alt]) || title);
|
|
21068
20338
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
21069
20339
|
"div",
|
|
21070
20340
|
{
|
|
@@ -21198,7 +20468,7 @@ var toggleVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
21198
20468
|
}
|
|
21199
20469
|
}
|
|
21200
20470
|
);
|
|
21201
|
-
var Toggle =
|
|
20471
|
+
var Toggle = React69.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21202
20472
|
TogglePrimitive.Root,
|
|
21203
20473
|
{
|
|
21204
20474
|
ref,
|
|
@@ -21210,11 +20480,11 @@ Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
|
21210
20480
|
|
|
21211
20481
|
// src/components/toggle-group.tsx
|
|
21212
20482
|
|
|
21213
|
-
var ToggleGroupContext =
|
|
20483
|
+
var ToggleGroupContext = React70.createContext({
|
|
21214
20484
|
size: "default",
|
|
21215
20485
|
variant: "default"
|
|
21216
20486
|
});
|
|
21217
|
-
var ToggleGroup =
|
|
20487
|
+
var ToggleGroup = React70.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21218
20488
|
ToggleGroupPrimitive.Root,
|
|
21219
20489
|
{
|
|
21220
20490
|
ref,
|
|
@@ -21224,8 +20494,8 @@ var ToggleGroup = React71.forwardRef(({ className, variant, size, children, ...p
|
|
|
21224
20494
|
}
|
|
21225
20495
|
));
|
|
21226
20496
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
21227
|
-
var ToggleGroupItem =
|
|
21228
|
-
const context =
|
|
20497
|
+
var ToggleGroupItem = React70.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
|
|
20498
|
+
const context = React70.useContext(ToggleGroupContext);
|
|
21229
20499
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21230
20500
|
ToggleGroupPrimitive.Item,
|
|
21231
20501
|
{
|
|
@@ -21584,8 +20854,8 @@ function FloatingTooltip({
|
|
|
21584
20854
|
className,
|
|
21585
20855
|
delayDuration = 0
|
|
21586
20856
|
}) {
|
|
21587
|
-
const [isOpen, setIsOpen] =
|
|
21588
|
-
const arrowRef =
|
|
20857
|
+
const [isOpen, setIsOpen] = React73.useState(false);
|
|
20858
|
+
const arrowRef = React73.useRef(null);
|
|
21589
20859
|
const { refs, floatingStyles, context, placement, middlewareData } = _react2.useFloating.call(void 0, {
|
|
21590
20860
|
open: isOpen,
|
|
21591
20861
|
onOpenChange: setIsOpen,
|
|
@@ -21614,7 +20884,7 @@ function FloatingTooltip({
|
|
|
21614
20884
|
dismiss,
|
|
21615
20885
|
role
|
|
21616
20886
|
]);
|
|
21617
|
-
const parsedContent =
|
|
20887
|
+
const parsedContent = React73.useMemo(() => {
|
|
21618
20888
|
if (typeof content === "string") {
|
|
21619
20889
|
return parseColoredText(content);
|
|
21620
20890
|
}
|
|
@@ -21860,26 +21130,26 @@ function DeviceCard({
|
|
|
21860
21130
|
] }),
|
|
21861
21131
|
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
21132
|
] }),
|
|
21863
|
-
_optionalChain([actions, 'access',
|
|
21133
|
+
_optionalChain([actions, 'access', _485 => _485.moreButton, 'optionalAccess', _486 => _486.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21864
21134
|
"div",
|
|
21865
21135
|
{
|
|
21866
21136
|
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
21137
|
onClick: (e) => {
|
|
21868
21138
|
e.stopPropagation();
|
|
21869
|
-
_optionalChain([actions, 'access',
|
|
21139
|
+
_optionalChain([actions, 'access', _487 => _487.moreButton, 'optionalAccess', _488 => _488.onClick, 'optionalCall', _489 => _489()]);
|
|
21870
21140
|
},
|
|
21871
21141
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
|
|
21872
21142
|
}
|
|
21873
21143
|
),
|
|
21874
|
-
_optionalChain([actions, 'access',
|
|
21875
|
-
_optionalChain([actions, 'access',
|
|
21144
|
+
_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 }),
|
|
21145
|
+
_optionalChain([actions, 'access', _494 => _494.customActions, 'optionalAccess', _495 => _495.map, 'call', _496 => _496(
|
|
21876
21146
|
(action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21877
21147
|
"div",
|
|
21878
21148
|
{
|
|
21879
21149
|
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
21150
|
onClick: (e) => {
|
|
21881
21151
|
e.stopPropagation();
|
|
21882
|
-
_optionalChain([action, 'access',
|
|
21152
|
+
_optionalChain([action, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
|
|
21883
21153
|
},
|
|
21884
21154
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
|
|
21885
21155
|
},
|
|
@@ -22159,7 +21429,7 @@ function HighlightCardGrid({
|
|
|
22159
21429
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
22160
21430
|
|
|
22161
21431
|
|
|
22162
|
-
var IconsBlock =
|
|
21432
|
+
var IconsBlock = React74.forwardRef(
|
|
22163
21433
|
({ className, icons = [], size = "md", ...props }, ref) => {
|
|
22164
21434
|
const sizeClasses5 = {
|
|
22165
21435
|
sm: "h-4 w-4",
|
|
@@ -22238,7 +21508,7 @@ function MoreActionsMenu({
|
|
|
22238
21508
|
] });
|
|
22239
21509
|
const handleActivate = (e) => {
|
|
22240
21510
|
e.stopPropagation();
|
|
22241
|
-
if (!item.disabled) _optionalChain([item, 'access',
|
|
21511
|
+
if (!item.disabled) _optionalChain([item, 'access', _499 => _499.onClick, 'optionalCall', _500 => _500()]);
|
|
22242
21512
|
};
|
|
22243
21513
|
if (item.href) {
|
|
22244
21514
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -22388,7 +21658,7 @@ function OrganizationIcon({
|
|
|
22388
21658
|
backgroundStyle = "dark"
|
|
22389
21659
|
}) {
|
|
22390
21660
|
const { width, height } = imageSizeMap2[size];
|
|
22391
|
-
const initials = _optionalChain([organizationName, 'optionalAccess',
|
|
21661
|
+
const initials = _optionalChain([organizationName, 'optionalAccess', _501 => _501.substring, 'call', _502 => _502(0, 2)]) || "??";
|
|
22392
21662
|
const containerClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
22393
21663
|
sizeClasses3[size],
|
|
22394
21664
|
"rounded-lg flex items-center justify-center flex-shrink-0 relative",
|
|
@@ -22439,7 +21709,7 @@ function OrganizationCard({
|
|
|
22439
21709
|
const handleActionClick = (e) => {
|
|
22440
21710
|
e.preventDefault();
|
|
22441
21711
|
e.stopPropagation();
|
|
22442
|
-
_optionalChain([actionButton, 'optionalAccess',
|
|
21712
|
+
_optionalChain([actionButton, 'optionalAccess', _503 => _503.onClick, 'call', _504 => _504(organization, e)]);
|
|
22443
21713
|
};
|
|
22444
21714
|
const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
22445
21715
|
"div",
|
|
@@ -22534,7 +21804,7 @@ var LOG_SEVERITY_LABELS = {
|
|
|
22534
21804
|
|
|
22535
21805
|
// src/components/log-severity-dot.tsx
|
|
22536
21806
|
|
|
22537
|
-
var LogSeverityDot =
|
|
21807
|
+
var LogSeverityDot = React76.forwardRef(({ severity, size = "md", className }, ref) => {
|
|
22538
21808
|
const sizeClasses5 = {
|
|
22539
21809
|
sm: "w-4 h-4",
|
|
22540
21810
|
md: "w-6 h-6",
|
|
@@ -22596,7 +21866,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22596
21866
|
onKeyDown: (e) => {
|
|
22597
21867
|
if (e.key === "Enter" || e.key === " ") {
|
|
22598
21868
|
e.preventDefault();
|
|
22599
|
-
_optionalChain([onClick, 'optionalCall',
|
|
21869
|
+
_optionalChain([onClick, 'optionalCall', _505 => _505()]);
|
|
22600
21870
|
}
|
|
22601
21871
|
},
|
|
22602
21872
|
children: [
|
|
@@ -22624,7 +21894,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22624
21894
|
)
|
|
22625
21895
|
] });
|
|
22626
21896
|
};
|
|
22627
|
-
var LogsList =
|
|
21897
|
+
var LogsList = React77.forwardRef(({
|
|
22628
21898
|
logs,
|
|
22629
21899
|
maxHeight = "400px",
|
|
22630
21900
|
showConnector = true,
|
|
@@ -22633,7 +21903,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22633
21903
|
emptyMessage = "No logs to display",
|
|
22634
21904
|
className
|
|
22635
21905
|
}, ref) => {
|
|
22636
|
-
const containerRef =
|
|
21906
|
+
const containerRef = React77.useRef(null);
|
|
22637
21907
|
const isFullHeight = maxHeight === "100%";
|
|
22638
21908
|
const getContainerStyles = () => {
|
|
22639
21909
|
if (isFullHeight) return void 0;
|
|
@@ -22697,7 +21967,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22697
21967
|
log,
|
|
22698
21968
|
isLast: index === logs.length - 1,
|
|
22699
21969
|
showConnector,
|
|
22700
|
-
onClick: () => _optionalChain([onLogClick, 'optionalCall',
|
|
21970
|
+
onClick: () => _optionalChain([onLogClick, 'optionalCall', _506 => _506(log)])
|
|
22701
21971
|
},
|
|
22702
21972
|
log.id
|
|
22703
21973
|
))
|
|
@@ -22938,7 +22208,7 @@ var _reacttooltip = require('@radix-ui/react-tooltip'); var TooltipPrimitive = _
|
|
|
22938
22208
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
22939
22209
|
var Tooltip = TooltipPrimitive.Root;
|
|
22940
22210
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
22941
|
-
var TooltipContent =
|
|
22211
|
+
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
22212
|
TooltipPrimitive.Content,
|
|
22943
22213
|
{
|
|
22944
22214
|
ref,
|
|
@@ -23286,7 +22556,7 @@ function CursorPaginationSimple({
|
|
|
23286
22556
|
{
|
|
23287
22557
|
variant: "transparent",
|
|
23288
22558
|
size: "icon",
|
|
23289
|
-
onClick: () => _optionalChain([onPrevious, 'optionalCall',
|
|
22559
|
+
onClick: () => _optionalChain([onPrevious, 'optionalCall', _507 => _507("")]),
|
|
23290
22560
|
disabled: !hasPreviousPage || loading,
|
|
23291
22561
|
className: "h-8 w-8",
|
|
23292
22562
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
|
|
@@ -23298,7 +22568,7 @@ function CursorPaginationSimple({
|
|
|
23298
22568
|
{
|
|
23299
22569
|
variant: "transparent",
|
|
23300
22570
|
size: "icon",
|
|
23301
|
-
onClick: () => _optionalChain([onNext, 'optionalCall',
|
|
22571
|
+
onClick: () => _optionalChain([onNext, 'optionalCall', _508 => _508("")]),
|
|
23302
22572
|
disabled: !hasNextPage || loading,
|
|
23303
22573
|
className: "h-8 w-8",
|
|
23304
22574
|
rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
|
|
@@ -23358,7 +22628,7 @@ function TableColumnFilterDropdown({
|
|
|
23358
22628
|
placement = "bottom-start",
|
|
23359
22629
|
dropdownClassName = "min-w-[240px]"
|
|
23360
22630
|
}) {
|
|
23361
|
-
const activeCount = _optionalChain([filters, 'optionalAccess',
|
|
22631
|
+
const activeCount = _optionalChain([filters, 'optionalAccess', _509 => _509[columnKey], 'optionalAccess', _510 => _510.length]) || 0;
|
|
23362
22632
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23363
22633
|
FiltersDropdown,
|
|
23364
22634
|
{
|
|
@@ -23401,7 +22671,7 @@ function TableColumnFilterDropdown({
|
|
|
23401
22671
|
delete newFilters[columnKey];
|
|
23402
22672
|
onFilterChange(newFilters);
|
|
23403
22673
|
},
|
|
23404
|
-
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess',
|
|
22674
|
+
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _511 => _511[columnKey]]) || [] },
|
|
23405
22675
|
placement,
|
|
23406
22676
|
dropdownClassName
|
|
23407
22677
|
}
|
|
@@ -23698,7 +22968,7 @@ function TableRow({
|
|
|
23698
22968
|
const keys = column.key.split(".");
|
|
23699
22969
|
let value = item;
|
|
23700
22970
|
for (const key of keys) {
|
|
23701
|
-
value = _optionalChain([value, 'optionalAccess',
|
|
22971
|
+
value = _optionalChain([value, 'optionalAccess', _512 => _512[key]]);
|
|
23702
22972
|
}
|
|
23703
22973
|
if (value === null || value === void 0) {
|
|
23704
22974
|
return "-";
|
|
@@ -23768,7 +23038,7 @@ function TableRow({
|
|
|
23768
23038
|
// src/components/ui/table/table.tsx
|
|
23769
23039
|
|
|
23770
23040
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
23771
|
-
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess',
|
|
23041
|
+
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _513 => _513.length])) || Boolean(renderRowActions);
|
|
23772
23042
|
const result = [...columns];
|
|
23773
23043
|
if (hasActions) {
|
|
23774
23044
|
const actionsColumn = {
|
|
@@ -23862,7 +23132,7 @@ function Table({
|
|
|
23862
23132
|
return rowKey(item);
|
|
23863
23133
|
}
|
|
23864
23134
|
const key = item[rowKey];
|
|
23865
|
-
return _optionalChain([key, 'optionalAccess',
|
|
23135
|
+
return _optionalChain([key, 'optionalAccess', _514 => _514.toString, 'call', _515 => _515()]) || index.toString();
|
|
23866
23136
|
};
|
|
23867
23137
|
const getRowClassName = (item, index) => {
|
|
23868
23138
|
if (typeof rowClassName === "function") {
|
|
@@ -23896,23 +23166,23 @@ function Table({
|
|
|
23896
23166
|
const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
|
|
23897
23167
|
const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
|
|
23898
23168
|
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',
|
|
23169
|
+
const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _516 => _516.onLoadMore]));
|
|
23170
|
+
onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _517 => _517.onLoadMore]);
|
|
23901
23171
|
_react.useEffect.call(void 0, () => {
|
|
23902
|
-
if (!_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23172
|
+
if (!_optionalChain([infiniteScroll, 'optionalAccess', _518 => _518.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
|
|
23903
23173
|
const sentinel = sentinelRef.current;
|
|
23904
23174
|
if (!sentinel) return;
|
|
23905
23175
|
const observer = new IntersectionObserver(
|
|
23906
23176
|
(entries) => {
|
|
23907
|
-
if (_optionalChain([entries, 'access',
|
|
23908
|
-
_optionalChain([onLoadMoreRef, 'access',
|
|
23177
|
+
if (_optionalChain([entries, 'access', _519 => _519[0], 'optionalAccess', _520 => _520.isIntersecting])) {
|
|
23178
|
+
_optionalChain([onLoadMoreRef, 'access', _521 => _521.current, 'optionalCall', _522 => _522()]);
|
|
23909
23179
|
}
|
|
23910
23180
|
},
|
|
23911
23181
|
{ rootMargin: "200px" }
|
|
23912
23182
|
);
|
|
23913
23183
|
observer.observe(sentinel);
|
|
23914
23184
|
return () => observer.disconnect();
|
|
23915
|
-
}, [_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23185
|
+
}, [_optionalChain([infiniteScroll, 'optionalAccess', _523 => _523.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _524 => _524.isFetchingNextPage])]);
|
|
23916
23186
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
|
|
23917
23187
|
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
23188
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
|
|
@@ -23983,7 +23253,7 @@ function Table({
|
|
|
23983
23253
|
},
|
|
23984
23254
|
getRowKey(item, index)
|
|
23985
23255
|
)),
|
|
23986
|
-
_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23256
|
+
_optionalChain([infiniteScroll, 'optionalAccess', _525 => _525.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23987
23257
|
TableCardSkeleton,
|
|
23988
23258
|
{
|
|
23989
23259
|
columns,
|
|
@@ -23992,7 +23262,7 @@ function Table({
|
|
|
23992
23262
|
hasChevron: Boolean(rowHref)
|
|
23993
23263
|
}
|
|
23994
23264
|
),
|
|
23995
|
-
_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23265
|
+
_optionalChain([infiniteScroll, 'optionalAccess', _526 => _526.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
|
|
23996
23266
|
!infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
23997
23267
|
"div",
|
|
23998
23268
|
{
|
|
@@ -24350,7 +23620,7 @@ function QueryReportTable({
|
|
|
24350
23620
|
);
|
|
24351
23621
|
const handleExport = () => {
|
|
24352
23622
|
exportToCSV(data, columns, exportFilename);
|
|
24353
|
-
_optionalChain([onExport, 'optionalCall',
|
|
23623
|
+
_optionalChain([onExport, 'optionalCall', _527 => _527()]);
|
|
24354
23624
|
};
|
|
24355
23625
|
const tableMinWidth = columns.length * (columnWidth + 16);
|
|
24356
23626
|
const {
|
|
@@ -24523,7 +23793,7 @@ function DataTableColumnFilter({
|
|
|
24523
23793
|
align = "left"
|
|
24524
23794
|
}) {
|
|
24525
23795
|
const currentValue = column.getFilterValue();
|
|
24526
|
-
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess',
|
|
23796
|
+
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _528 => _528.length]), () => ( 0));
|
|
24527
23797
|
const sections = _react.useMemo.call(void 0,
|
|
24528
23798
|
() => [
|
|
24529
23799
|
{
|
|
@@ -24603,7 +23873,7 @@ function DataTableHeader({
|
|
|
24603
23873
|
const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
|
|
24604
23874
|
if (header.isPlaceholder) return false;
|
|
24605
23875
|
if (isLgUp) return true;
|
|
24606
|
-
return Boolean(_optionalChain([header, 'access',
|
|
23876
|
+
return Boolean(_optionalChain([header, 'access', _529 => _529.column, 'access', _530 => _530.columnDef, 'access', _531 => _531.meta, 'optionalAccess', _532 => _532.filter]));
|
|
24607
23877
|
});
|
|
24608
23878
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24609
23879
|
"div",
|
|
@@ -24633,20 +23903,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24633
23903
|
if (header.isPlaceholder) return null;
|
|
24634
23904
|
const column = header.column;
|
|
24635
23905
|
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',
|
|
23906
|
+
const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _533 => _533.filter]));
|
|
23907
|
+
const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _534 => _534.align]), () => ( "left"));
|
|
23908
|
+
const canSort = _optionalChain([meta, 'optionalAccess', _535 => _535.sortable]) === true;
|
|
23909
|
+
const sortDir = _optionalChain([sort, 'optionalAccess', _536 => _536.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
|
|
24640
23910
|
if (!isLgUp && !hasFilter) return null;
|
|
24641
23911
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24642
23912
|
"div",
|
|
24643
23913
|
{
|
|
24644
23914
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24645
23915
|
"flex items-stretch",
|
|
24646
|
-
isLgUp && (_optionalChain([meta, 'optionalAccess',
|
|
24647
|
-
_optionalChain([meta, 'optionalAccess',
|
|
23916
|
+
isLgUp && (_optionalChain([meta, 'optionalAccess', _537 => _537.width]) || "flex-1 min-w-0"),
|
|
23917
|
+
_optionalChain([meta, 'optionalAccess', _538 => _538.headerClassName]),
|
|
24648
23918
|
// Don't apply hide classes if column is filterable on tablet (keep filter accessible)
|
|
24649
|
-
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess',
|
|
23919
|
+
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _539 => _539.hideAt]))
|
|
24650
23920
|
),
|
|
24651
23921
|
children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24652
23922
|
DataTableColumnFilter,
|
|
@@ -24665,7 +23935,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24665
23935
|
isLgUp && alignJustify(align),
|
|
24666
23936
|
canSort && "group cursor-pointer"
|
|
24667
23937
|
),
|
|
24668
|
-
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall',
|
|
23938
|
+
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _540 => _540(column.id)]) : void 0,
|
|
24669
23939
|
children: [
|
|
24670
23940
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
|
|
24671
23941
|
canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
|
|
@@ -24749,7 +24019,7 @@ function DataTableSkeleton({
|
|
|
24749
24019
|
}) {
|
|
24750
24020
|
const table = useDataTableContext();
|
|
24751
24021
|
const columns = table.getVisibleFlatColumns();
|
|
24752
|
-
const firstColumnId = _optionalChain([columns, 'access',
|
|
24022
|
+
const firstColumnId = _optionalChain([columns, 'access', _541 => _541[0], 'optionalAccess', _542 => _542.id]);
|
|
24753
24023
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24754
24024
|
"div",
|
|
24755
24025
|
{
|
|
@@ -24773,7 +24043,7 @@ function DataTableSkeleton({
|
|
|
24773
24043
|
{
|
|
24774
24044
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24775
24045
|
"flex flex-col justify-center shrink-0",
|
|
24776
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24046
|
+
_optionalChain([meta, 'optionalAccess', _543 => _543.width]) || "flex-1"
|
|
24777
24047
|
),
|
|
24778
24048
|
children: [
|
|
24779
24049
|
/* @__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 +24089,7 @@ function DataTableRowImpl({
|
|
|
24819
24089
|
(e) => {
|
|
24820
24090
|
const target = e.target;
|
|
24821
24091
|
if (target.closest("[data-no-row-click]")) return;
|
|
24822
|
-
_optionalChain([onClick, 'optionalCall',
|
|
24092
|
+
_optionalChain([onClick, 'optionalCall', _544 => _544(row.original)]);
|
|
24823
24093
|
},
|
|
24824
24094
|
[onClick, row.original]
|
|
24825
24095
|
);
|
|
@@ -24857,10 +24127,10 @@ function DataTableRowImpl({
|
|
|
24857
24127
|
{
|
|
24858
24128
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24859
24129
|
"flex flex-col overflow-hidden",
|
|
24860
|
-
alignJustify(_optionalChain([meta, 'optionalAccess',
|
|
24861
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24862
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24863
|
-
getHideClasses2(_optionalChain([meta, 'optionalAccess',
|
|
24130
|
+
alignJustify(_optionalChain([meta, 'optionalAccess', _545 => _545.align])),
|
|
24131
|
+
_optionalChain([meta, 'optionalAccess', _546 => _546.width]) || "flex-1 min-w-0",
|
|
24132
|
+
_optionalChain([meta, 'optionalAccess', _547 => _547.cellClassName]),
|
|
24133
|
+
getHideClasses2(_optionalChain([meta, 'optionalAccess', _548 => _548.hideAt]))
|
|
24864
24134
|
),
|
|
24865
24135
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
|
|
24866
24136
|
},
|
|
@@ -24906,7 +24176,7 @@ function DataTableBody({
|
|
|
24906
24176
|
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
24177
|
rows.map((row, index) => {
|
|
24908
24178
|
const item = row.original;
|
|
24909
|
-
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall',
|
|
24179
|
+
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _549 => _549(item)]), () => ( void 0));
|
|
24910
24180
|
const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
|
|
24911
24181
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24912
24182
|
DataTableRow,
|
|
@@ -24970,7 +24240,7 @@ function DataTableInfiniteFooter({
|
|
|
24970
24240
|
if (!sentinel) return;
|
|
24971
24241
|
const observer = new IntersectionObserver(
|
|
24972
24242
|
(entries) => {
|
|
24973
|
-
if (_optionalChain([entries, 'access',
|
|
24243
|
+
if (_optionalChain([entries, 'access', _550 => _550[0], 'optionalAccess', _551 => _551.isIntersecting])) onLoadMoreRef.current();
|
|
24974
24244
|
},
|
|
24975
24245
|
{ rootMargin }
|
|
24976
24246
|
);
|
|
@@ -25018,7 +24288,7 @@ function DataTableRowCount({
|
|
|
25018
24288
|
const table = useDataTableContext();
|
|
25019
24289
|
const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
|
|
25020
24290
|
if (hideWhenEmpty && count === 0) return null;
|
|
25021
|
-
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall',
|
|
24291
|
+
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _552 => _552(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
|
|
25022
24292
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25023
24293
|
"span",
|
|
25024
24294
|
{
|
|
@@ -25112,12 +24382,12 @@ function PhoneInput({
|
|
|
25112
24382
|
const runValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25113
24383
|
if (!phone || digitCount(phone) === 0) {
|
|
25114
24384
|
setIsInvalid(false);
|
|
25115
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24385
|
+
_optionalChain([onValidationChange, 'optionalCall', _553 => _553(false)]);
|
|
25116
24386
|
return;
|
|
25117
24387
|
}
|
|
25118
24388
|
const invalid = !validatePhoneNumber(phone, countryCode);
|
|
25119
24389
|
setIsInvalid(invalid);
|
|
25120
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24390
|
+
_optionalChain([onValidationChange, 'optionalCall', _554 => _554(invalid)]);
|
|
25121
24391
|
}, [countryCode, digitCount, onValidationChange]);
|
|
25122
24392
|
const debouncedValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25123
24393
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
@@ -25166,7 +24436,7 @@ function PhoneInput({
|
|
|
25166
24436
|
debouncedValidation(val);
|
|
25167
24437
|
} else if (digitCount(val) === 0) {
|
|
25168
24438
|
setIsInvalid(false);
|
|
25169
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24439
|
+
_optionalChain([onValidationChange, 'optionalCall', _555 => _555(false)]);
|
|
25170
24440
|
}
|
|
25171
24441
|
}
|
|
25172
24442
|
},
|
|
@@ -25244,12 +24514,12 @@ function SearchInput({
|
|
|
25244
24514
|
limitTags = "auto",
|
|
25245
24515
|
getLimitTagsText = (more) => `+${more}`
|
|
25246
24516
|
}) {
|
|
25247
|
-
const [internalValue, setInternalValue] =
|
|
24517
|
+
const [internalValue, setInternalValue] = React81.useState(defaultValue);
|
|
25248
24518
|
const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
|
|
25249
24519
|
const debouncedValue = _chunkALW3D72Ocjs.useDebounce.call(void 0, currentValue, debounceMs);
|
|
25250
|
-
const [isOpen, setIsOpen] =
|
|
25251
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
25252
|
-
const containerRef =
|
|
24520
|
+
const [isOpen, setIsOpen] = React81.useState(false);
|
|
24521
|
+
const [highlightedIndex, setHighlightedIndex] = React81.useState(-1);
|
|
24522
|
+
const containerRef = React81.useRef(null);
|
|
25253
24523
|
const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
|
|
25254
24524
|
const {
|
|
25255
24525
|
visibleCount: rawVisibleCount,
|
|
@@ -25266,14 +24536,14 @@ function SearchInput({
|
|
|
25266
24536
|
placeholder: filterChips.length > 0 ? "" : placeholder
|
|
25267
24537
|
});
|
|
25268
24538
|
const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
|
|
25269
|
-
const hiddenTagsRef =
|
|
25270
|
-
const hiddenTagsPopupRef =
|
|
25271
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
25272
|
-
|
|
24539
|
+
const hiddenTagsRef = React81.useRef(null);
|
|
24540
|
+
const hiddenTagsPopupRef = React81.useRef(null);
|
|
24541
|
+
const [showHiddenTags, setShowHiddenTags] = React81.useState(false);
|
|
24542
|
+
React81.useEffect(() => {
|
|
25273
24543
|
if (!showHiddenTags) return;
|
|
25274
24544
|
const handleClick = (e) => {
|
|
25275
24545
|
const target = e.target;
|
|
25276
|
-
if (!_optionalChain([hiddenTagsRef, 'access',
|
|
24546
|
+
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
24547
|
setShowHiddenTags(false);
|
|
25278
24548
|
}
|
|
25279
24549
|
};
|
|
@@ -25283,7 +24553,7 @@ function SearchInput({
|
|
|
25283
24553
|
const hiddenCount = filterChips.length - visibleCount;
|
|
25284
24554
|
const visibleChips = filterChips.slice(0, visibleCount);
|
|
25285
24555
|
const hiddenChips = filterChips.slice(visibleCount);
|
|
25286
|
-
const { flatResults, groups } =
|
|
24556
|
+
const { flatResults, groups } = React81.useMemo(() => {
|
|
25287
24557
|
if (!groupBy) return { flatResults: results, groups: null };
|
|
25288
24558
|
const grouped = /* @__PURE__ */ new Map();
|
|
25289
24559
|
for (const r of results) {
|
|
@@ -25300,7 +24570,7 @@ function SearchInput({
|
|
|
25300
24570
|
const meetsMinQuery = debouncedValue.length >= minQueryLength;
|
|
25301
24571
|
const autoShow = meetsMinQuery;
|
|
25302
24572
|
const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
|
|
25303
|
-
|
|
24573
|
+
React81.useEffect(() => {
|
|
25304
24574
|
setHighlightedIndex(-1);
|
|
25305
24575
|
}, [flatResults.length]);
|
|
25306
24576
|
const handleChange = (e) => {
|
|
@@ -25321,10 +24591,10 @@ function SearchInput({
|
|
|
25321
24591
|
} else {
|
|
25322
24592
|
setInternalValue("");
|
|
25323
24593
|
}
|
|
25324
|
-
_optionalChain([inputRef, 'access',
|
|
24594
|
+
_optionalChain([inputRef, 'access', _562 => _562.current, 'optionalAccess', _563 => _563.focus, 'call', _564 => _564()]);
|
|
25325
24595
|
};
|
|
25326
24596
|
const handleResultClick = (result) => {
|
|
25327
|
-
_optionalChain([onResultSelect, 'optionalCall',
|
|
24597
|
+
_optionalChain([onResultSelect, 'optionalCall', _565 => _565(result)]);
|
|
25328
24598
|
setIsOpen(false);
|
|
25329
24599
|
};
|
|
25330
24600
|
const handleKeyDown = (e) => {
|
|
@@ -25347,7 +24617,7 @@ function SearchInput({
|
|
|
25347
24617
|
if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
|
|
25348
24618
|
handleResultClick(flatResults[highlightedIndex]);
|
|
25349
24619
|
} else {
|
|
25350
|
-
_optionalChain([onSubmit, 'optionalCall',
|
|
24620
|
+
_optionalChain([onSubmit, 'optionalCall', _566 => _566(currentValue)]);
|
|
25351
24621
|
}
|
|
25352
24622
|
break;
|
|
25353
24623
|
case "Escape":
|
|
@@ -25425,7 +24695,7 @@ function SearchInput({
|
|
|
25425
24695
|
dropdownVisible && "!border-ods-accent"
|
|
25426
24696
|
),
|
|
25427
24697
|
onClick: () => {
|
|
25428
|
-
_optionalChain([inputRef, 'access',
|
|
24698
|
+
_optionalChain([inputRef, 'access', _567 => _567.current, 'optionalAccess', _568 => _568.focus, 'call', _569 => _569()]);
|
|
25429
24699
|
setIsOpen(true);
|
|
25430
24700
|
},
|
|
25431
24701
|
children: [
|
|
@@ -25509,10 +24779,10 @@ function SearchInput({
|
|
|
25509
24779
|
align: "start",
|
|
25510
24780
|
onOpenAutoFocus: (e) => {
|
|
25511
24781
|
e.preventDefault();
|
|
25512
|
-
_optionalChain([inputRef, 'access',
|
|
24782
|
+
_optionalChain([inputRef, 'access', _570 => _570.current, 'optionalAccess', _571 => _571.focus, 'call', _572 => _572()]);
|
|
25513
24783
|
},
|
|
25514
24784
|
onInteractOutside: (e) => {
|
|
25515
|
-
if (_optionalChain([containerRef, 'access',
|
|
24785
|
+
if (_optionalChain([containerRef, 'access', _573 => _573.current, 'optionalAccess', _574 => _574.contains, 'call', _575 => _575(e.target)])) {
|
|
25516
24786
|
e.preventDefault();
|
|
25517
24787
|
}
|
|
25518
24788
|
},
|
|
@@ -25529,10 +24799,10 @@ function SearchInput({
|
|
|
25529
24799
|
ref: hiddenTagsPopupRef,
|
|
25530
24800
|
items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
|
|
25531
24801
|
style: {
|
|
25532
|
-
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access',
|
|
24802
|
+
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
24803
|
},
|
|
25534
24804
|
onRemove: (value2) => {
|
|
25535
|
-
_optionalChain([onFilterRemove, 'optionalCall',
|
|
24805
|
+
_optionalChain([onFilterRemove, 'optionalCall', _580 => _580(value2)]);
|
|
25536
24806
|
if (hiddenCount <= 1) setShowHiddenTags(false);
|
|
25537
24807
|
}
|
|
25538
24808
|
}
|
|
@@ -25583,7 +24853,7 @@ function FilterListItem({
|
|
|
25583
24853
|
}) {
|
|
25584
24854
|
const handleToggle = () => {
|
|
25585
24855
|
if (disabled) return;
|
|
25586
|
-
_optionalChain([onToggle, 'optionalCall',
|
|
24856
|
+
_optionalChain([onToggle, 'optionalCall', _581 => _581(!selected)]);
|
|
25587
24857
|
};
|
|
25588
24858
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25589
24859
|
"div",
|
|
@@ -25619,7 +24889,7 @@ function FilterListItem({
|
|
|
25619
24889
|
"flex items-start gap-[var(--spacing-system-xxs)] text-h6",
|
|
25620
24890
|
selected ? "text-ods-accent" : "text-ods-text-secondary"
|
|
25621
24891
|
),
|
|
25622
|
-
children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24892
|
+
children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React82.Fragment, { children: [
|
|
25623
24893
|
index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
|
|
25624
24894
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item })
|
|
25625
24895
|
] }, index))
|
|
@@ -25630,7 +24900,7 @@ function FilterListItem({
|
|
|
25630
24900
|
CheckboxPrimitive4.Root,
|
|
25631
24901
|
{
|
|
25632
24902
|
checked: selected,
|
|
25633
|
-
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall',
|
|
24903
|
+
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _582 => _582(c === true)]),
|
|
25634
24904
|
onClick: (e) => e.stopPropagation(),
|
|
25635
24905
|
disabled,
|
|
25636
24906
|
"aria-label": title,
|
|
@@ -25729,7 +24999,7 @@ function TagSearchInput({
|
|
|
25729
24999
|
if (!showHiddenTags) return;
|
|
25730
25000
|
const handleClick = (e) => {
|
|
25731
25001
|
const target = e.target;
|
|
25732
|
-
if (!_optionalChain([hiddenTagsRef, 'access',
|
|
25002
|
+
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
25003
|
setShowHiddenTags(false);
|
|
25734
25004
|
}
|
|
25735
25005
|
};
|
|
@@ -25745,13 +25015,13 @@ function TagSearchInput({
|
|
|
25745
25015
|
e.preventDefault();
|
|
25746
25016
|
onSubmit(searchValue);
|
|
25747
25017
|
}
|
|
25748
|
-
_optionalChain([onKeyDown, 'optionalCall',
|
|
25018
|
+
_optionalChain([onKeyDown, 'optionalCall', _589 => _589(e)]);
|
|
25749
25019
|
};
|
|
25750
25020
|
const handleClearAll = (e) => {
|
|
25751
25021
|
e.stopPropagation();
|
|
25752
25022
|
e.preventDefault();
|
|
25753
|
-
_optionalChain([onClearAll, 'optionalCall',
|
|
25754
|
-
_optionalChain([inputRef, 'access',
|
|
25023
|
+
_optionalChain([onClearAll, 'optionalCall', _590 => _590()]);
|
|
25024
|
+
_optionalChain([inputRef, 'access', _591 => _591.current, 'optionalAccess', _592 => _592.focus, 'call', _593 => _593()]);
|
|
25755
25025
|
};
|
|
25756
25026
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
|
|
25757
25027
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -25768,7 +25038,7 @@ function TagSearchInput({
|
|
|
25768
25038
|
className
|
|
25769
25039
|
),
|
|
25770
25040
|
onClick: () => {
|
|
25771
|
-
if (!disabled) _optionalChain([inputRef, 'access',
|
|
25041
|
+
if (!disabled) _optionalChain([inputRef, 'access', _594 => _594.current, 'optionalAccess', _595 => _595.focus, 'call', _596 => _596()]);
|
|
25772
25042
|
},
|
|
25773
25043
|
children: [
|
|
25774
25044
|
/* @__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 +25110,7 @@ function TagSearchInput({
|
|
|
25840
25110
|
items: hiddenTags,
|
|
25841
25111
|
disabled,
|
|
25842
25112
|
style: {
|
|
25843
|
-
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access',
|
|
25113
|
+
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
25114
|
},
|
|
25845
25115
|
onRemove: (value) => {
|
|
25846
25116
|
onTagRemove(value);
|
|
@@ -25942,7 +25212,7 @@ function MarkdownEditor({
|
|
|
25942
25212
|
const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
|
|
25943
25213
|
_react.useEffect.call(void 0, () => {
|
|
25944
25214
|
Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
|
|
25945
|
-
if (_optionalChain([mod, 'access',
|
|
25215
|
+
if (_optionalChain([mod, 'access', _601 => _601.commands, 'optionalAccess', _602 => _602.getExtraCommands])) {
|
|
25946
25216
|
setDefaultExtraCommands(mod.commands.getExtraCommands());
|
|
25947
25217
|
}
|
|
25948
25218
|
});
|
|
@@ -25976,7 +25246,7 @@ function MarkdownEditor({
|
|
|
25976
25246
|
const isImage = file.type.startsWith("image/");
|
|
25977
25247
|
const markdown = isImage ? `` : `[${file.name}](${url})`;
|
|
25978
25248
|
insertTextAtCursor(markdown);
|
|
25979
|
-
_optionalChain([onFileUploaded, 'optionalCall',
|
|
25249
|
+
_optionalChain([onFileUploaded, 'optionalCall', _603 => _603(url, file.name)]);
|
|
25980
25250
|
} catch (error) {
|
|
25981
25251
|
console.error("File upload failed:", error);
|
|
25982
25252
|
setUploadProgress("Upload failed. Please try again.");
|
|
@@ -25989,7 +25259,7 @@ function MarkdownEditor({
|
|
|
25989
25259
|
);
|
|
25990
25260
|
const handleFileInputChange = _react.useCallback.call(void 0,
|
|
25991
25261
|
(e) => {
|
|
25992
|
-
const file = _optionalChain([e, 'access',
|
|
25262
|
+
const file = _optionalChain([e, 'access', _604 => _604.target, 'access', _605 => _605.files, 'optionalAccess', _606 => _606[0]]);
|
|
25993
25263
|
if (file) {
|
|
25994
25264
|
handleFileUpload(file);
|
|
25995
25265
|
e.target.value = "";
|
|
@@ -26000,7 +25270,7 @@ function MarkdownEditor({
|
|
|
26000
25270
|
const handlePaste = _react.useCallback.call(void 0,
|
|
26001
25271
|
(e) => {
|
|
26002
25272
|
if (!onUploadFile) return;
|
|
26003
|
-
const items = _optionalChain([e, 'access',
|
|
25273
|
+
const items = _optionalChain([e, 'access', _607 => _607.clipboardData, 'optionalAccess', _608 => _608.items]);
|
|
26004
25274
|
if (!items) return;
|
|
26005
25275
|
for (const item of items) {
|
|
26006
25276
|
if (item.type.startsWith("image/")) {
|
|
@@ -26025,7 +25295,7 @@ function MarkdownEditor({
|
|
|
26025
25295
|
buttonProps: { "aria-label": "Upload file", title: "Upload file" },
|
|
26026
25296
|
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
25297
|
execute: () => {
|
|
26028
|
-
_optionalChain([fileInputRef, 'access',
|
|
25298
|
+
_optionalChain([fileInputRef, 'access', _609 => _609.current, 'optionalAccess', _610 => _610.click, 'call', _611 => _611()]);
|
|
26029
25299
|
}
|
|
26030
25300
|
} : null;
|
|
26031
25301
|
const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
|
|
@@ -26037,7 +25307,7 @@ function MarkdownEditor({
|
|
|
26037
25307
|
const EDGE_ZONE = 60;
|
|
26038
25308
|
const MAX_SCROLL_SPEED = 15;
|
|
26039
25309
|
const findScrollParent = _react.useCallback.call(void 0, (el) => {
|
|
26040
|
-
let node = _optionalChain([el, 'optionalAccess',
|
|
25310
|
+
let node = _optionalChain([el, 'optionalAccess', _612 => _612.parentElement]);
|
|
26041
25311
|
while (node && node !== document.documentElement) {
|
|
26042
25312
|
const { overflowY } = window.getComputedStyle(node);
|
|
26043
25313
|
if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
|
|
@@ -26180,7 +25450,7 @@ function matchesAccept(file, accept) {
|
|
|
26180
25450
|
});
|
|
26181
25451
|
}
|
|
26182
25452
|
function dragHasFiles(e) {
|
|
26183
|
-
const types = _optionalChain([e, 'access',
|
|
25453
|
+
const types = _optionalChain([e, 'access', _613 => _613.dataTransfer, 'optionalAccess', _614 => _614.types]);
|
|
26184
25454
|
if (!types) return false;
|
|
26185
25455
|
for (let i = 0; i < types.length; i++) {
|
|
26186
25456
|
if (types[i] === "Files") return true;
|
|
@@ -26206,11 +25476,11 @@ function FileUpload({
|
|
|
26206
25476
|
maxListHeight,
|
|
26207
25477
|
acceptWindowDrops = false
|
|
26208
25478
|
}) {
|
|
26209
|
-
const [dragActive, setDragActive] =
|
|
26210
|
-
const [validationError, setValidationError] =
|
|
26211
|
-
const fileInputRef =
|
|
25479
|
+
const [dragActive, setDragActive] = React84.useState(false);
|
|
25480
|
+
const [validationError, setValidationError] = React84.useState(null);
|
|
25481
|
+
const fileInputRef = React84.useRef(null);
|
|
26212
25482
|
const isManaged = managedFiles !== void 0;
|
|
26213
|
-
const files =
|
|
25483
|
+
const files = React84.useMemo(() => {
|
|
26214
25484
|
if (!value) return [];
|
|
26215
25485
|
return Array.isArray(value) ? value : [value];
|
|
26216
25486
|
}, [value]);
|
|
@@ -26258,7 +25528,7 @@ function FileUpload({
|
|
|
26258
25528
|
fileInputRef.current.value = "";
|
|
26259
25529
|
}
|
|
26260
25530
|
};
|
|
26261
|
-
const handleFilesRef =
|
|
25531
|
+
const handleFilesRef = React84.useRef(handleFiles);
|
|
26262
25532
|
handleFilesRef.current = handleFiles;
|
|
26263
25533
|
const handleDrag = (e) => {
|
|
26264
25534
|
e.preventDefault();
|
|
@@ -26275,11 +25545,11 @@ function FileUpload({
|
|
|
26275
25545
|
e.stopPropagation();
|
|
26276
25546
|
setDragActive(false);
|
|
26277
25547
|
if (disabled) return;
|
|
26278
|
-
if (_optionalChain([e, 'access',
|
|
25548
|
+
if (_optionalChain([e, 'access', _615 => _615.dataTransfer, 'access', _616 => _616.files, 'optionalAccess', _617 => _617.length])) {
|
|
26279
25549
|
handleFiles(e.dataTransfer.files);
|
|
26280
25550
|
}
|
|
26281
25551
|
};
|
|
26282
|
-
|
|
25552
|
+
React84.useEffect(() => {
|
|
26283
25553
|
if (!acceptWindowDrops || disabled) return;
|
|
26284
25554
|
let dragCounter = 0;
|
|
26285
25555
|
const onWindowDragEnter = (e) => {
|
|
@@ -26303,7 +25573,7 @@ function FileUpload({
|
|
|
26303
25573
|
e.preventDefault();
|
|
26304
25574
|
dragCounter = 0;
|
|
26305
25575
|
setDragActive(false);
|
|
26306
|
-
if (_optionalChain([e, 'access',
|
|
25576
|
+
if (_optionalChain([e, 'access', _618 => _618.dataTransfer, 'optionalAccess', _619 => _619.files, 'optionalAccess', _620 => _620.length])) {
|
|
26307
25577
|
handleFilesRef.current(e.dataTransfer.files);
|
|
26308
25578
|
}
|
|
26309
25579
|
};
|
|
@@ -26325,7 +25595,7 @@ function FileUpload({
|
|
|
26325
25595
|
};
|
|
26326
25596
|
}, [acceptWindowDrops, disabled]);
|
|
26327
25597
|
const handleFileSelect = (e) => {
|
|
26328
|
-
if (_optionalChain([e, 'access',
|
|
25598
|
+
if (_optionalChain([e, 'access', _621 => _621.target, 'access', _622 => _622.files, 'optionalAccess', _623 => _623.length])) {
|
|
26329
25599
|
handleFiles(e.target.files);
|
|
26330
25600
|
}
|
|
26331
25601
|
};
|
|
@@ -26342,7 +25612,7 @@ function FileUpload({
|
|
|
26342
25612
|
};
|
|
26343
25613
|
const openDialog = async () => {
|
|
26344
25614
|
if (disabled) return;
|
|
26345
|
-
_optionalChain([fileInputRef, 'access',
|
|
25615
|
+
_optionalChain([fileInputRef, 'access', _624 => _624.current, 'optionalAccess', _625 => _625.click, 'call', _626 => _626()]);
|
|
26346
25616
|
};
|
|
26347
25617
|
const displayError = error || validationError || void 0;
|
|
26348
25618
|
const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
|
|
@@ -26420,7 +25690,7 @@ function FileUpload({
|
|
|
26420
25690
|
"button",
|
|
26421
25691
|
{
|
|
26422
25692
|
type: "button",
|
|
26423
|
-
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall',
|
|
25693
|
+
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _627 => _627(entry.id)]),
|
|
26424
25694
|
className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
|
|
26425
25695
|
"aria-label": `Remove ${entry.fileName}`,
|
|
26426
25696
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
|
|
@@ -26521,10 +25791,10 @@ function ImageUploader({
|
|
|
26521
25791
|
alt = "Uploaded image",
|
|
26522
25792
|
className
|
|
26523
25793
|
}) {
|
|
26524
|
-
const inputRef =
|
|
26525
|
-
const [dragActive, setDragActive] =
|
|
26526
|
-
const [pressed, setPressed] =
|
|
26527
|
-
const [validationError, setValidationError] =
|
|
25794
|
+
const inputRef = React85.useRef(null);
|
|
25795
|
+
const [dragActive, setDragActive] = React85.useState(false);
|
|
25796
|
+
const [pressed, setPressed] = React85.useState(false);
|
|
25797
|
+
const [validationError, setValidationError] = React85.useState(null);
|
|
26528
25798
|
const interactive = !disabled && !loading;
|
|
26529
25799
|
const hasImage = Boolean(value);
|
|
26530
25800
|
const displayError = error || validationError || void 0;
|
|
@@ -26543,7 +25813,7 @@ function ImageUploader({
|
|
|
26543
25813
|
onChange(file);
|
|
26544
25814
|
};
|
|
26545
25815
|
const handleFileSelect = (e) => {
|
|
26546
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25816
|
+
validateAndEmit(_optionalChain([e, 'access', _628 => _628.target, 'access', _629 => _629.files, 'optionalAccess', _630 => _630[0]]));
|
|
26547
25817
|
if (inputRef.current) inputRef.current.value = "";
|
|
26548
25818
|
};
|
|
26549
25819
|
const handleDrag = (e) => {
|
|
@@ -26558,11 +25828,11 @@ function ImageUploader({
|
|
|
26558
25828
|
e.stopPropagation();
|
|
26559
25829
|
setDragActive(false);
|
|
26560
25830
|
if (!interactive) return;
|
|
26561
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25831
|
+
validateAndEmit(_optionalChain([e, 'access', _631 => _631.dataTransfer, 'access', _632 => _632.files, 'optionalAccess', _633 => _633[0]]));
|
|
26562
25832
|
};
|
|
26563
25833
|
const openDialog = () => {
|
|
26564
25834
|
if (!interactive) return;
|
|
26565
|
-
_optionalChain([inputRef, 'access',
|
|
25835
|
+
_optionalChain([inputRef, 'access', _634 => _634.current, 'optionalAccess', _635 => _635.click, 'call', _636 => _636()]);
|
|
26566
25836
|
};
|
|
26567
25837
|
const handleRootKeyDown = (e) => {
|
|
26568
25838
|
if (hasImage || !interactive) return;
|
|
@@ -26701,25 +25971,25 @@ function CompactAssigneeDropdown({
|
|
|
26701
25971
|
onAssign,
|
|
26702
25972
|
className
|
|
26703
25973
|
}) {
|
|
26704
|
-
const [isOpen, setIsOpen] =
|
|
26705
|
-
const [search, setSearch] =
|
|
25974
|
+
const [isOpen, setIsOpen] = React86.useState(false);
|
|
25975
|
+
const [search, setSearch] = React86.useState("");
|
|
26706
25976
|
const hasAssignee = !!currentAssignee;
|
|
26707
|
-
|
|
25977
|
+
React86.useEffect(() => {
|
|
26708
25978
|
if (!isOpen) setSearch("");
|
|
26709
25979
|
}, [isOpen]);
|
|
26710
|
-
const filtered =
|
|
25980
|
+
const filtered = React86.useMemo(() => {
|
|
26711
25981
|
const q = search.trim().toLowerCase();
|
|
26712
25982
|
if (!q) return options;
|
|
26713
25983
|
return options.filter((o) => o.label.toLowerCase().includes(q));
|
|
26714
25984
|
}, [options, search]);
|
|
26715
|
-
const orderedOptions =
|
|
25985
|
+
const orderedOptions = React86.useMemo(() => {
|
|
26716
25986
|
if (!currentAssignee) return filtered;
|
|
26717
25987
|
const current = filtered.find((o) => o.value === currentAssignee.id);
|
|
26718
25988
|
if (!current) return filtered;
|
|
26719
25989
|
return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
|
|
26720
25990
|
}, [filtered, currentAssignee]);
|
|
26721
25991
|
const handleSelect = (userId) => {
|
|
26722
|
-
const next = _optionalChain([currentAssignee, 'optionalAccess',
|
|
25992
|
+
const next = _optionalChain([currentAssignee, 'optionalAccess', _637 => _637.id]) === userId ? null : userId;
|
|
26723
25993
|
onAssign(next);
|
|
26724
25994
|
setIsOpen(false);
|
|
26725
25995
|
};
|
|
@@ -26784,7 +26054,7 @@ function CompactAssigneeDropdown({
|
|
|
26784
26054
|
}
|
|
26785
26055
|
) }),
|
|
26786
26056
|
/* @__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',
|
|
26057
|
+
const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _638 => _638.id]) === opt.value;
|
|
26788
26058
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
26789
26059
|
"button",
|
|
26790
26060
|
{
|
|
@@ -26828,9 +26098,9 @@ function DefaultAssigneeDropdown({
|
|
|
26828
26098
|
onAssign,
|
|
26829
26099
|
className
|
|
26830
26100
|
}) {
|
|
26831
|
-
const [isEditing, setIsEditing] =
|
|
26101
|
+
const [isEditing, setIsEditing] = React86.useState(false);
|
|
26832
26102
|
const hasAssignee = !!currentAssignee;
|
|
26833
|
-
const renderOption =
|
|
26103
|
+
const renderOption = React86.useCallback((option) => {
|
|
26834
26104
|
const opt = option;
|
|
26835
26105
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
|
|
26836
26106
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -26853,7 +26123,7 @@ function DefaultAssigneeDropdown({
|
|
|
26853
26123
|
Autocomplete,
|
|
26854
26124
|
{
|
|
26855
26125
|
options,
|
|
26856
|
-
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess',
|
|
26126
|
+
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _639 => _639.id]), () => ( null)),
|
|
26857
26127
|
onChange: (val) => {
|
|
26858
26128
|
onAssign(val);
|
|
26859
26129
|
setIsEditing(false);
|
|
@@ -27018,8 +26288,8 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
27018
26288
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
27019
26289
|
|
|
27020
26290
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
27021
|
-
const [isEditing, setIsEditing] =
|
|
27022
|
-
const [editText, setEditText] =
|
|
26291
|
+
const [isEditing, setIsEditing] = React87.useState(false);
|
|
26292
|
+
const [editText, setEditText] = React87.useState(note.text);
|
|
27023
26293
|
const handleSave = () => {
|
|
27024
26294
|
const trimmed = editText.trim();
|
|
27025
26295
|
if (!trimmed || !onEdit) return;
|
|
@@ -27135,7 +26405,7 @@ function TicketNotesSection({
|
|
|
27135
26405
|
isAddingNote,
|
|
27136
26406
|
className
|
|
27137
26407
|
}) {
|
|
27138
|
-
const [noteText, setNoteText] =
|
|
26408
|
+
const [noteText, setNoteText] = React88.useState("");
|
|
27139
26409
|
const handleSend = () => {
|
|
27140
26410
|
const trimmed = noteText.trim();
|
|
27141
26411
|
if (!trimmed || !onAddNote || isAddingNote) return;
|
|
@@ -27240,14 +26510,14 @@ function TicketInfoSection({
|
|
|
27240
26510
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27241
26511
|
SquareAvatar,
|
|
27242
26512
|
{
|
|
27243
|
-
src: _optionalChain([organization, 'optionalAccess',
|
|
27244
|
-
alt: _optionalChain([organization, 'optionalAccess',
|
|
27245
|
-
fallback: _optionalChain([organization, 'optionalAccess',
|
|
26513
|
+
src: _optionalChain([organization, 'optionalAccess', _640 => _640.imageSrc]),
|
|
26514
|
+
alt: _optionalChain([organization, 'optionalAccess', _641 => _641.name]),
|
|
26515
|
+
fallback: _optionalChain([organization, 'optionalAccess', _642 => _642.name]) || "Org",
|
|
27246
26516
|
size: "md",
|
|
27247
26517
|
className: "shrink-0"
|
|
27248
26518
|
}
|
|
27249
26519
|
),
|
|
27250
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess',
|
|
26520
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _643 => _643.name]) || "Unassigned", label: "Organization" })
|
|
27251
26521
|
] }),
|
|
27252
26522
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27253
26523
|
AssigneeDropdown,
|
|
@@ -27268,10 +26538,10 @@ function TicketInfoSection({
|
|
|
27268
26538
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27269
26539
|
InfoCell2,
|
|
27270
26540
|
{
|
|
27271
|
-
value: _optionalChain([device, 'optionalAccess',
|
|
26541
|
+
value: _optionalChain([device, 'optionalAccess', _644 => _644.name]) || "Unassigned",
|
|
27272
26542
|
label: "Device",
|
|
27273
|
-
icon: _optionalChain([device, 'optionalAccess',
|
|
27274
|
-
onClick: _optionalChain([device, 'optionalAccess',
|
|
26543
|
+
icon: _optionalChain([device, 'optionalAccess', _645 => _645.icon]),
|
|
26544
|
+
onClick: _optionalChain([device, 'optionalAccess', _646 => _646.onClick])
|
|
27275
26545
|
}
|
|
27276
26546
|
),
|
|
27277
26547
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
@@ -28031,10 +27301,10 @@ var getContentDimensions = (config) => {
|
|
|
28031
27301
|
const envMobileHeight = process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT) : null;
|
|
28032
27302
|
const envDesktopWidth = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH) : null;
|
|
28033
27303
|
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',
|
|
27304
|
+
const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess', _647 => _647.mobileContentDimensions, 'optionalAccess', _648 => _648.width]))), () => ( defaultMobile.width));
|
|
27305
|
+
const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess', _649 => _649.mobileContentDimensions, 'optionalAccess', _650 => _650.height]))), () => ( defaultMobile.height));
|
|
27306
|
+
const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess', _651 => _651.desktopContentDimensions, 'optionalAccess', _652 => _652.width]))), () => ( defaultDesktop.width));
|
|
27307
|
+
const desktopHeight = _nullishCoalesce(_nullishCoalesce(envDesktopHeight, () => ( _optionalChain([config, 'optionalAccess', _653 => _653.desktopContentDimensions, 'optionalAccess', _654 => _654.height]))), () => ( defaultDesktop.height));
|
|
28038
27308
|
return {
|
|
28039
27309
|
mobile: { width: mobileWidth, height: mobileHeight },
|
|
28040
27310
|
desktop: { width: desktopWidth, height: desktopHeight }
|
|
@@ -28168,7 +27438,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28168
27438
|
const contentDimensions = getContentDimensions(config);
|
|
28169
27439
|
const mobileHeight = contentDimensions.mobile.height;
|
|
28170
27440
|
const calculatedHeight = Math.max(mobileHeight + 100, 400);
|
|
28171
|
-
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess',
|
|
27441
|
+
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess', _655 => _655.innerHeight]) * 0.85 || 650)}px`;
|
|
28172
27442
|
})(),
|
|
28173
27443
|
minHeight: viewMode === "DESKTOP" ? "auto" : (() => {
|
|
28174
27444
|
const contentDimensions = getContentDimensions(config);
|
|
@@ -28273,7 +27543,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28273
27543
|
const [isInitialized, setIsInitialized] = _react.useState.call(void 0, false);
|
|
28274
27544
|
const [currentNodeId, setCurrentNodeId] = _react.useState.call(void 0, null);
|
|
28275
27545
|
const [internalActiveSection, setInternalActiveSection] = _react.useState.call(void 0,
|
|
28276
|
-
config.defaultSectionId || _optionalChain([config, 'access',
|
|
27546
|
+
config.defaultSectionId || _optionalChain([config, 'access', _656 => _656.sections, 'access', _657 => _657[0], 'optionalAccess', _658 => _658.id]) || ""
|
|
28277
27547
|
);
|
|
28278
27548
|
const activeSection = externalActiveSection || internalActiveSection;
|
|
28279
27549
|
const [isNavigating, setIsNavigating] = _react.useState.call(void 0, false);
|
|
@@ -28363,7 +27633,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28363
27633
|
const handleMessage = (event) => {
|
|
28364
27634
|
if (event.origin !== "https://www.figma.com") return;
|
|
28365
27635
|
const validEvents = ["INITIAL_LOAD", "NEW_STATE", "PRESENTED_NODE_CHANGED"];
|
|
28366
|
-
if (_optionalChain([event, 'access',
|
|
27636
|
+
if (_optionalChain([event, 'access', _659 => _659.data, 'optionalAccess', _660 => _660.type]) && validEvents.includes(event.data.type)) {
|
|
28367
27637
|
const figmaEvent = event.data;
|
|
28368
27638
|
console.log("[Figma Event]", figmaEvent.type, viewMode);
|
|
28369
27639
|
switch (figmaEvent.type) {
|
|
@@ -28373,19 +27643,19 @@ var FigmaPrototypeViewer = ({
|
|
|
28373
27643
|
setIframeState("READY");
|
|
28374
27644
|
break;
|
|
28375
27645
|
case "PRESENTED_NODE_CHANGED":
|
|
28376
|
-
if (_optionalChain([figmaEvent, 'access',
|
|
27646
|
+
if (_optionalChain([figmaEvent, 'access', _661 => _661.data, 'optionalAccess', _662 => _662.presentedNodeId])) {
|
|
28377
27647
|
setCurrentNodeId(figmaEvent.data.presentedNodeId);
|
|
28378
27648
|
if (!isNavigating) {
|
|
28379
27649
|
const matchingSection = config.sections.find((s) => {
|
|
28380
|
-
const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access',
|
|
28381
|
-
const mobileMatch = s.mobileStartingNodeId === _optionalChain([figmaEvent, 'access',
|
|
27650
|
+
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]);
|
|
27651
|
+
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
27652
|
return desktopMatch || mobileMatch;
|
|
28383
27653
|
});
|
|
28384
27654
|
if (matchingSection && matchingSection.id !== activeSection) {
|
|
28385
27655
|
if (!externalActiveSection) {
|
|
28386
27656
|
setInternalActiveSection(matchingSection.id);
|
|
28387
27657
|
}
|
|
28388
|
-
_optionalChain([config, 'access',
|
|
27658
|
+
_optionalChain([config, 'access', _674 => _674.onSectionChange, 'optionalCall', _675 => _675(matchingSection.id)]);
|
|
28389
27659
|
}
|
|
28390
27660
|
}
|
|
28391
27661
|
}
|
|
@@ -28398,7 +27668,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28398
27668
|
}, [config.sections, activeSection, isNavigating, externalActiveSection, config.onSectionChange, viewMode]);
|
|
28399
27669
|
const navigateToSection = _react.useCallback.call(void 0, (sectionId) => {
|
|
28400
27670
|
const section = config.sections.find((s) => s.id === sectionId);
|
|
28401
|
-
if (!section || !_optionalChain([iframeRef, 'access',
|
|
27671
|
+
if (!section || !_optionalChain([iframeRef, 'access', _676 => _676.current, 'optionalAccess', _677 => _677.contentWindow]) || !isInitialized) {
|
|
28402
27672
|
return;
|
|
28403
27673
|
}
|
|
28404
27674
|
setIsNavigating(true);
|
|
@@ -28406,7 +27676,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28406
27676
|
if (!externalActiveSection) {
|
|
28407
27677
|
setInternalActiveSection(sectionId);
|
|
28408
27678
|
}
|
|
28409
|
-
_optionalChain([config, 'access',
|
|
27679
|
+
_optionalChain([config, 'access', _678 => _678.onSectionChange, 'optionalCall', _679 => _679(sectionId)]);
|
|
28410
27680
|
const command = {
|
|
28411
27681
|
type: "NAVIGATE_TO_FRAME_AND_CLOSE_OVERLAYS",
|
|
28412
27682
|
data: { nodeId }
|
|
@@ -28726,7 +27996,7 @@ var FiltersDropdown = ({
|
|
|
28726
27996
|
defaults[section.id] = section.defaultSelected || [];
|
|
28727
27997
|
});
|
|
28728
27998
|
setSelectedFilters(defaults);
|
|
28729
|
-
_optionalChain([onReset, 'optionalCall',
|
|
27999
|
+
_optionalChain([onReset, 'optionalCall', _680 => _680()]);
|
|
28730
28000
|
setIsOpen(false);
|
|
28731
28001
|
};
|
|
28732
28002
|
const handleApply = () => {
|
|
@@ -29020,7 +28290,7 @@ function MediaGalleryManager({
|
|
|
29020
28290
|
const [deletingIndex, setDeletingIndex] = _react.useState.call(void 0, null);
|
|
29021
28291
|
const [draggedIndex, setDraggedIndex] = _react.useState.call(void 0, null);
|
|
29022
28292
|
const handleFileSelect = _react.useCallback.call(void 0, async (event) => {
|
|
29023
|
-
const file = _optionalChain([event, 'access',
|
|
28293
|
+
const file = _optionalChain([event, 'access', _681 => _681.target, 'access', _682 => _682.files, 'optionalAccess', _683 => _683[0]]);
|
|
29024
28294
|
if (!file) return;
|
|
29025
28295
|
let mediaType;
|
|
29026
28296
|
if (file.type.startsWith("image/")) {
|
|
@@ -29135,7 +28405,7 @@ function MediaGalleryManager({
|
|
|
29135
28405
|
{
|
|
29136
28406
|
type: "button",
|
|
29137
28407
|
variant: "outline",
|
|
29138
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
28408
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _684 => _684.current, 'optionalAccess', _685 => _685.click, 'call', _686 => _686()]),
|
|
29139
28409
|
disabled: isUploading,
|
|
29140
28410
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
29141
28411
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -29920,7 +29190,7 @@ function ReleaseMediaManager({
|
|
|
29920
29190
|
const fileInputRef = _react.useRef.call(void 0, null);
|
|
29921
29191
|
const [uploadingIndex, setUploadingIndex] = _react.useState.call(void 0, null);
|
|
29922
29192
|
const handleFileSelect = async (event) => {
|
|
29923
|
-
const file = _optionalChain([event, 'access',
|
|
29193
|
+
const file = _optionalChain([event, 'access', _687 => _687.target, 'access', _688 => _688.files, 'optionalAccess', _689 => _689[0]]);
|
|
29924
29194
|
if (!file) return;
|
|
29925
29195
|
let mediaType;
|
|
29926
29196
|
if (file.type.startsWith("image/")) {
|
|
@@ -30000,7 +29270,7 @@ function ReleaseMediaManager({
|
|
|
30000
29270
|
{
|
|
30001
29271
|
type: "button",
|
|
30002
29272
|
variant: "outline",
|
|
30003
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
29273
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]),
|
|
30004
29274
|
disabled: uploadingIndex !== null,
|
|
30005
29275
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
30006
29276
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -30213,7 +29483,7 @@ function SEOEditorPreview({
|
|
|
30213
29483
|
const displayImage = hasOgImage || hasFeaturedImage;
|
|
30214
29484
|
const handleImageUpload = async (event) => {
|
|
30215
29485
|
if (!onOgImageUpload) return;
|
|
30216
|
-
const file = _optionalChain([event, 'access',
|
|
29486
|
+
const file = _optionalChain([event, 'access', _693 => _693.target, 'access', _694 => _694.files, 'optionalAccess', _695 => _695[0]]);
|
|
30217
29487
|
if (!file) return;
|
|
30218
29488
|
setIsUploading(true);
|
|
30219
29489
|
try {
|
|
@@ -30344,7 +29614,7 @@ function SEOEditorPreview({
|
|
|
30344
29614
|
type: "button",
|
|
30345
29615
|
variant: "outline",
|
|
30346
29616
|
size: "icon",
|
|
30347
|
-
onClick: () => _optionalChain([fileInputRef, 'optionalAccess',
|
|
29617
|
+
onClick: () => _optionalChain([fileInputRef, 'optionalAccess', _696 => _696.click, 'call', _697 => _697()]),
|
|
30348
29618
|
disabled: disabled || isUploading,
|
|
30349
29619
|
className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
|
|
30350
29620
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-4 w-4" })
|
|
@@ -30367,7 +29637,7 @@ function SEOEditorPreview({
|
|
|
30367
29637
|
"div",
|
|
30368
29638
|
{
|
|
30369
29639
|
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',
|
|
29640
|
+
onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]),
|
|
30371
29641
|
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
29642
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30373
29643
|
/* @__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 +29722,7 @@ function SocialLinksManager({
|
|
|
30452
29722
|
className = ""
|
|
30453
29723
|
}) {
|
|
30454
29724
|
const addLink = () => {
|
|
30455
|
-
const firstPlatform = _optionalChain([platforms, 'access',
|
|
29725
|
+
const firstPlatform = _optionalChain([platforms, 'access', _700 => _700[0], 'optionalAccess', _701 => _701.name]) || "website";
|
|
30456
29726
|
onChange([...links, { platform: firstPlatform, url: "" }]);
|
|
30457
29727
|
};
|
|
30458
29728
|
const removeLink = (index) => {
|
|
@@ -30464,7 +29734,7 @@ function SocialLinksManager({
|
|
|
30464
29734
|
onChange(updated);
|
|
30465
29735
|
};
|
|
30466
29736
|
const getIcon = (link, platform) => {
|
|
30467
|
-
const iconKey = _optionalChain([platform, 'optionalAccess',
|
|
29737
|
+
const iconKey = _optionalChain([platform, 'optionalAccess', _702 => _702.icon_name]) || link.platform;
|
|
30468
29738
|
const IconComponent = iconMap[iconKey];
|
|
30469
29739
|
return IconComponent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
|
|
30470
29740
|
};
|
|
@@ -30489,7 +29759,7 @@ function SocialLinksManager({
|
|
|
30489
29759
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30490
29760
|
_chunkBJTOSUT4cjs.Input,
|
|
30491
29761
|
{
|
|
30492
|
-
placeholder: _optionalChain([platform, 'optionalAccess',
|
|
29762
|
+
placeholder: _optionalChain([platform, 'optionalAccess', _703 => _703.placeholder]) || "Profile URL",
|
|
30493
29763
|
value: link.url,
|
|
30494
29764
|
onChange: (e) => updateLink(index, "url", e.target.value),
|
|
30495
29765
|
onKeyDown: (e) => {
|
|
@@ -30533,7 +29803,7 @@ function SocialLinksManager({
|
|
|
30533
29803
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30534
29804
|
|
|
30535
29805
|
|
|
30536
|
-
var StartWithOpenFrameButton =
|
|
29806
|
+
var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
|
|
30537
29807
|
const isYellow = mode === "yellow";
|
|
30538
29808
|
const isPink = mode === "pink" || mode === "purple";
|
|
30539
29809
|
const isCyan = mode === "cyan";
|
|
@@ -30829,6 +30099,258 @@ function TagsSelector({
|
|
|
30829
30099
|
] });
|
|
30830
30100
|
}
|
|
30831
30101
|
|
|
30102
|
+
// src/components/features/video-ratio-tabs.tsx
|
|
30103
|
+
|
|
30104
|
+
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";
|
|
30105
|
+
var RATIO_GRID_CLASS = {
|
|
30106
|
+
portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
30107
|
+
square: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
30108
|
+
landscape: "grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
30109
|
+
};
|
|
30110
|
+
var RATIO_DISPLAY_GRID_CLASS = {
|
|
30111
|
+
portrait: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
|
|
30112
|
+
square: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
|
|
30113
|
+
landscape: "grid grid-cols-1 md:grid-cols-2 gap-6"
|
|
30114
|
+
};
|
|
30115
|
+
var RATIO_TAB_CONFIG = [
|
|
30116
|
+
{ key: "portrait", label: "Portrait 9:16" },
|
|
30117
|
+
{ key: "square", label: "Square 1:1" },
|
|
30118
|
+
{ key: "landscape", label: "Landscape 16:9" }
|
|
30119
|
+
];
|
|
30120
|
+
function RatioTabs({
|
|
30121
|
+
groups,
|
|
30122
|
+
defaultTab,
|
|
30123
|
+
className = ""
|
|
30124
|
+
}) {
|
|
30125
|
+
const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
|
|
30126
|
+
if (activeTabs.length <= 1) {
|
|
30127
|
+
const active = activeTabs[0];
|
|
30128
|
+
return active ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: groups[active.key].render() }) : null;
|
|
30129
|
+
}
|
|
30130
|
+
const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
|
|
30131
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
|
|
30132
|
+
/* @__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: [
|
|
30133
|
+
t.label,
|
|
30134
|
+
" (",
|
|
30135
|
+
groups[t.key].count,
|
|
30136
|
+
")"
|
|
30137
|
+
] }, t.key)) }),
|
|
30138
|
+
activeTabs.map((t) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30139
|
+
TabsContent,
|
|
30140
|
+
{
|
|
30141
|
+
value: t.key,
|
|
30142
|
+
forceMount: true,
|
|
30143
|
+
className: "data-[state=inactive]:hidden",
|
|
30144
|
+
children: groups[t.key].render()
|
|
30145
|
+
},
|
|
30146
|
+
t.key
|
|
30147
|
+
))
|
|
30148
|
+
] });
|
|
30149
|
+
}
|
|
30150
|
+
function detectAspectRatio(ratioString, width, height) {
|
|
30151
|
+
if (ratioString === "16:9") return "16:9";
|
|
30152
|
+
if (ratioString === "1:1") return "1:1";
|
|
30153
|
+
if (ratioString === "9:16") return "9:16";
|
|
30154
|
+
if (width && height) {
|
|
30155
|
+
if (Math.abs(width - height) < Math.min(width, height) * 0.1) return "1:1";
|
|
30156
|
+
if (width > height) return "16:9";
|
|
30157
|
+
}
|
|
30158
|
+
return "9:16";
|
|
30159
|
+
}
|
|
30160
|
+
function ratioToCategory(ratio) {
|
|
30161
|
+
if (ratio === "16:9") return "landscape";
|
|
30162
|
+
if (ratio === "1:1") return "square";
|
|
30163
|
+
return "portrait";
|
|
30164
|
+
}
|
|
30165
|
+
function groupByAspectRatio(items, getAspectRatio) {
|
|
30166
|
+
const portrait = [];
|
|
30167
|
+
const square = [];
|
|
30168
|
+
const landscape = [];
|
|
30169
|
+
for (const item of items) {
|
|
30170
|
+
const cat = ratioToCategory(getAspectRatio(item));
|
|
30171
|
+
if (cat === "landscape") landscape.push(item);
|
|
30172
|
+
else if (cat === "square") square.push(item);
|
|
30173
|
+
else portrait.push(item);
|
|
30174
|
+
}
|
|
30175
|
+
const filled = [portrait, square, landscape].filter((a) => a.length > 0).length;
|
|
30176
|
+
return { portrait, square, landscape, hasMultiple: filled > 1 };
|
|
30177
|
+
}
|
|
30178
|
+
|
|
30179
|
+
// src/components/features/video-bites-display.tsx
|
|
30180
|
+
|
|
30181
|
+
|
|
30182
|
+
var RATIO_TO_CSS_ASPECT = {
|
|
30183
|
+
portrait: "9 / 16",
|
|
30184
|
+
square: "1 / 1",
|
|
30185
|
+
landscape: "16 / 9"
|
|
30186
|
+
};
|
|
30187
|
+
function LazyBite({ ratio, children }) {
|
|
30188
|
+
const { ref, isNear } = _chunkALW3D72Ocjs.useNearViewport.call(void 0, "500px");
|
|
30189
|
+
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" }) });
|
|
30190
|
+
}
|
|
30191
|
+
function VideoBitesDisplay({
|
|
30192
|
+
bites,
|
|
30193
|
+
title = "Video Highlights",
|
|
30194
|
+
filterPublished = true,
|
|
30195
|
+
showTitle = true
|
|
30196
|
+
}) {
|
|
30197
|
+
const grouped = _react.useMemo.call(void 0, () => {
|
|
30198
|
+
const filtered = filterPublished ? bites.filter((b) => b.published) : bites;
|
|
30199
|
+
const sorted = [...filtered].sort((a, b) => {
|
|
30200
|
+
if (!a.created_at && !b.created_at) return 0;
|
|
30201
|
+
if (!a.created_at) return 1;
|
|
30202
|
+
if (!b.created_at) return -1;
|
|
30203
|
+
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
|
|
30204
|
+
});
|
|
30205
|
+
return groupByAspectRatio(
|
|
30206
|
+
sorted,
|
|
30207
|
+
(b) => detectAspectRatio(b.aspect_ratio)
|
|
30208
|
+
);
|
|
30209
|
+
}, [bites, filterPublished]);
|
|
30210
|
+
const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
|
|
30211
|
+
if (totalCount === 0) return null;
|
|
30212
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30213
|
+
showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: title }),
|
|
30214
|
+
grouped.hasMultiple ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30215
|
+
RatioTabs,
|
|
30216
|
+
{
|
|
30217
|
+
groups: {
|
|
30218
|
+
portrait: {
|
|
30219
|
+
count: grouped.portrait.length,
|
|
30220
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.portrait, ratio: "portrait" })
|
|
30221
|
+
},
|
|
30222
|
+
square: {
|
|
30223
|
+
count: grouped.square.length,
|
|
30224
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.square, ratio: "square" })
|
|
30225
|
+
},
|
|
30226
|
+
landscape: {
|
|
30227
|
+
count: grouped.landscape.length,
|
|
30228
|
+
render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.landscape, ratio: "landscape" })
|
|
30229
|
+
}
|
|
30230
|
+
}
|
|
30231
|
+
}
|
|
30232
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30233
|
+
BiteGrid,
|
|
30234
|
+
{
|
|
30235
|
+
bites: grouped.portrait.length > 0 ? grouped.portrait : grouped.square.length > 0 ? grouped.square : grouped.landscape,
|
|
30236
|
+
ratio: grouped.portrait.length > 0 ? "portrait" : grouped.square.length > 0 ? "square" : "landscape"
|
|
30237
|
+
}
|
|
30238
|
+
)
|
|
30239
|
+
] });
|
|
30240
|
+
}
|
|
30241
|
+
function BiteGrid({ bites, ratio }) {
|
|
30242
|
+
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)) });
|
|
30243
|
+
}
|
|
30244
|
+
function VideoBiteCard({ url, title, thumbnailUrl }) {
|
|
30245
|
+
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: [
|
|
30246
|
+
/* @__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" }) }),
|
|
30247
|
+
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 }) })
|
|
30248
|
+
] });
|
|
30249
|
+
}
|
|
30250
|
+
|
|
30251
|
+
// src/components/features/entity-video-section.tsx
|
|
30252
|
+
|
|
30253
|
+
function EntityVideoSection({
|
|
30254
|
+
mainVideoUrl,
|
|
30255
|
+
youtubeUrl,
|
|
30256
|
+
highlightVideoUrl,
|
|
30257
|
+
highlightVideoThumbnail,
|
|
30258
|
+
mainVideoPoster,
|
|
30259
|
+
title = "Video",
|
|
30260
|
+
videoSummary,
|
|
30261
|
+
videoBites,
|
|
30262
|
+
bitesTitle = "Video Highlights",
|
|
30263
|
+
filterPublishedBites = true,
|
|
30264
|
+
MarkdownRenderer,
|
|
30265
|
+
srtContent,
|
|
30266
|
+
captionsUrl,
|
|
30267
|
+
priority = false
|
|
30268
|
+
}) {
|
|
30269
|
+
const hasFullVideo = !!(youtubeUrl || mainVideoUrl);
|
|
30270
|
+
const hasHighlight = !!highlightVideoUrl;
|
|
30271
|
+
const hasVideo = hasFullVideo || hasHighlight;
|
|
30272
|
+
if (!hasVideo && !videoSummary && (!videoBites || videoBites.length === 0)) {
|
|
30273
|
+
return null;
|
|
30274
|
+
}
|
|
30275
|
+
const fullVideoUrl = youtubeUrl || mainVideoUrl || null;
|
|
30276
|
+
const fullVideoKind = youtubeUrl ? "youtube" : "auto";
|
|
30277
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
30278
|
+
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: "full-video", className: "w-full", children: [
|
|
30279
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
|
|
30280
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30281
|
+
TabsTrigger,
|
|
30282
|
+
{
|
|
30283
|
+
value: "full-video",
|
|
30284
|
+
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",
|
|
30285
|
+
children: "Full Video"
|
|
30286
|
+
}
|
|
30287
|
+
),
|
|
30288
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30289
|
+
TabsTrigger,
|
|
30290
|
+
{
|
|
30291
|
+
value: "highlights",
|
|
30292
|
+
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",
|
|
30293
|
+
children: "Highlights"
|
|
30294
|
+
}
|
|
30295
|
+
)
|
|
30296
|
+
] }),
|
|
30297
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30298
|
+
Video2,
|
|
30299
|
+
{
|
|
30300
|
+
kind: fullVideoKind,
|
|
30301
|
+
url: fullVideoUrl,
|
|
30302
|
+
poster: mainVideoPoster,
|
|
30303
|
+
title,
|
|
30304
|
+
srtContent,
|
|
30305
|
+
captionsUrl,
|
|
30306
|
+
layout: "centered",
|
|
30307
|
+
priority
|
|
30308
|
+
}
|
|
30309
|
+
) }),
|
|
30310
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30311
|
+
Video2,
|
|
30312
|
+
{
|
|
30313
|
+
url: highlightVideoUrl,
|
|
30314
|
+
poster: highlightVideoThumbnail,
|
|
30315
|
+
layout: "centered"
|
|
30316
|
+
}
|
|
30317
|
+
) })
|
|
30318
|
+
] }) : hasFullVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30319
|
+
Video2,
|
|
30320
|
+
{
|
|
30321
|
+
kind: fullVideoKind,
|
|
30322
|
+
url: fullVideoUrl,
|
|
30323
|
+
poster: mainVideoPoster,
|
|
30324
|
+
title,
|
|
30325
|
+
srtContent,
|
|
30326
|
+
captionsUrl,
|
|
30327
|
+
layout: "centered",
|
|
30328
|
+
priority
|
|
30329
|
+
}
|
|
30330
|
+
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30331
|
+
Video2,
|
|
30332
|
+
{
|
|
30333
|
+
url: highlightVideoUrl,
|
|
30334
|
+
poster: highlightVideoThumbnail,
|
|
30335
|
+
layout: "centered",
|
|
30336
|
+
priority
|
|
30337
|
+
}
|
|
30338
|
+
)),
|
|
30339
|
+
videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
30340
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: "Summary" }),
|
|
30341
|
+
/* @__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 }) })
|
|
30342
|
+
] }),
|
|
30343
|
+
videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30344
|
+
VideoBitesDisplay,
|
|
30345
|
+
{
|
|
30346
|
+
bites: videoBites,
|
|
30347
|
+
title: bitesTitle,
|
|
30348
|
+
filterPublished: filterPublishedBites
|
|
30349
|
+
}
|
|
30350
|
+
)
|
|
30351
|
+
] });
|
|
30352
|
+
}
|
|
30353
|
+
|
|
30832
30354
|
// src/components/features/video-source-selector.tsx
|
|
30833
30355
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30834
30356
|
|
|
@@ -30866,7 +30388,7 @@ function VideoSourceSelector({
|
|
|
30866
30388
|
input.accept = "video/*";
|
|
30867
30389
|
input.onchange = async (e) => {
|
|
30868
30390
|
const target = e.target;
|
|
30869
|
-
const file = _optionalChain([target, 'access',
|
|
30391
|
+
const file = _optionalChain([target, 'access', _704 => _704.files, 'optionalAccess', _705 => _705[0]]);
|
|
30870
30392
|
if (!file) return;
|
|
30871
30393
|
setIsUploading(true);
|
|
30872
30394
|
setUploadProgress(0);
|
|
@@ -31196,7 +30718,7 @@ function TranscriptSummaryEditor({
|
|
|
31196
30718
|
{
|
|
31197
30719
|
id: "subtitles",
|
|
31198
30720
|
value: subtitles || "",
|
|
31199
|
-
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall',
|
|
30721
|
+
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall', _706 => _706(e.target.value)]),
|
|
31200
30722
|
placeholder: subtitlesPlaceholder,
|
|
31201
30723
|
disabled: disabled || !onSubtitlesChange,
|
|
31202
30724
|
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 +30871,7 @@ var AIEnrichSection = ({
|
|
|
31349
30871
|
}) => {
|
|
31350
30872
|
const hasResults = status === "success" || status === "error";
|
|
31351
30873
|
const shouldDisable = disabled || !canEnrich;
|
|
31352
|
-
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess',
|
|
30874
|
+
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess', _707 => _707.filter, 'call', _708 => _708((f) => !f.isFilled)]) || [];
|
|
31353
30875
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
31354
30876
|
"div",
|
|
31355
30877
|
{
|
|
@@ -31387,7 +30909,7 @@ var AIEnrichSection = ({
|
|
|
31387
30909
|
{
|
|
31388
30910
|
id: "ai-enrich-custom-instructions",
|
|
31389
30911
|
value: _nullishCoalesce(customInstructions, () => ( "")),
|
|
31390
|
-
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall',
|
|
30912
|
+
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall', _709 => _709(e.target.value)]),
|
|
31391
30913
|
placeholder: customInstructionsPlaceholder,
|
|
31392
30914
|
disabled: loading,
|
|
31393
30915
|
maxLength: customInstructionsMaxLength,
|
|
@@ -31516,7 +31038,7 @@ function HighlightVideoSection({
|
|
|
31516
31038
|
input.accept = "video/*";
|
|
31517
31039
|
input.onchange = async (e) => {
|
|
31518
31040
|
const target = e.target;
|
|
31519
|
-
const file = _optionalChain([target, 'access',
|
|
31041
|
+
const file = _optionalChain([target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]);
|
|
31520
31042
|
if (!file) return;
|
|
31521
31043
|
setUploadError(null);
|
|
31522
31044
|
try {
|
|
@@ -32018,7 +31540,7 @@ function HighlightVideoPreview({
|
|
|
32018
31540
|
input.accept = "video/*";
|
|
32019
31541
|
input.onchange = async (e) => {
|
|
32020
31542
|
const target = e.target;
|
|
32021
|
-
const file = _optionalChain([target, 'access',
|
|
31543
|
+
const file = _optionalChain([target, 'access', _712 => _712.files, 'optionalAccess', _713 => _713[0]]);
|
|
32022
31544
|
if (!file) return;
|
|
32023
31545
|
await onUpload(file);
|
|
32024
31546
|
};
|
|
@@ -32205,7 +31727,7 @@ function HighlightVideoCombinedSection({
|
|
|
32205
31727
|
input.accept = "video/*";
|
|
32206
31728
|
input.onchange = async (e) => {
|
|
32207
31729
|
const target = e.target;
|
|
32208
|
-
const file = _optionalChain([target, 'access',
|
|
31730
|
+
const file = _optionalChain([target, 'access', _714 => _714.files, 'optionalAccess', _715 => _715[0]]);
|
|
32209
31731
|
if (!file) return;
|
|
32210
31732
|
await onUpload(file);
|
|
32211
31733
|
};
|
|
@@ -32502,7 +32024,7 @@ var getApprovalLevelLabel = (level, editMode = false) => {
|
|
|
32502
32024
|
return editMode ? "Set Global Permission" : "";
|
|
32503
32025
|
}
|
|
32504
32026
|
const option = approvalLevelOptions.find((opt) => opt.value === level);
|
|
32505
|
-
return _optionalChain([option, 'optionalAccess',
|
|
32027
|
+
return _optionalChain([option, 'optionalAccess', _716 => _716.label]) || level;
|
|
32506
32028
|
};
|
|
32507
32029
|
var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
32508
32030
|
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 +32276,7 @@ function WaitlistForm({
|
|
|
32754
32276
|
const finalPhone = phone ? formatPhoneE164(phone, countryCode) : void 0;
|
|
32755
32277
|
try {
|
|
32756
32278
|
await onRegister(email, finalPhone);
|
|
32757
|
-
} catch (
|
|
32279
|
+
} catch (e24) {
|
|
32758
32280
|
}
|
|
32759
32281
|
};
|
|
32760
32282
|
if (!isClient) {
|
|
@@ -33034,15 +32556,15 @@ function TicketCard({
|
|
|
33034
32556
|
transform: _utilities.CSS.Transform.toString(sortable.transform),
|
|
33035
32557
|
transition: sortable.transition
|
|
33036
32558
|
};
|
|
33037
|
-
const showDeviceRow = !!(_optionalChain([ticket, 'access',
|
|
32559
|
+
const showDeviceRow = !!(_optionalChain([ticket, 'access', _717 => _717.deviceHostnames, 'optionalAccess', _718 => _718.length]) || ticket.organizationName);
|
|
33038
32560
|
const deviceText = [
|
|
33039
|
-
_optionalChain([ticket, 'access',
|
|
32561
|
+
_optionalChain([ticket, 'access', _719 => _719.deviceHostnames, 'optionalAccess', _720 => _720.join, 'call', _721 => _721(", ")]),
|
|
33040
32562
|
ticket.organizationName
|
|
33041
32563
|
].filter(Boolean).join(", ");
|
|
33042
32564
|
const handleClick = (e) => {
|
|
33043
32565
|
if (sortable.isDragging) e.preventDefault();
|
|
33044
32566
|
};
|
|
33045
|
-
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access',
|
|
32567
|
+
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _722 => _722.assignees, 'optionalAccess', _723 => _723.length]) || renderAssignSlot);
|
|
33046
32568
|
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
32569
|
ticket.priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33048
32570
|
_chunkTMD5LDX4cjs.Flag02Icon,
|
|
@@ -33051,7 +32573,7 @@ function TicketCard({
|
|
|
33051
32573
|
"aria-label": `Priority: ${ticket.priority}`
|
|
33052
32574
|
}
|
|
33053
32575
|
),
|
|
33054
|
-
renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access',
|
|
32576
|
+
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
32577
|
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33056
32578
|
SquareAvatar,
|
|
33057
32579
|
{
|
|
@@ -33080,7 +32602,7 @@ function TicketCard({
|
|
|
33080
32602
|
] }),
|
|
33081
32603
|
rightSection
|
|
33082
32604
|
] }),
|
|
33083
|
-
_optionalChain([ticket, 'access',
|
|
32605
|
+
_optionalChain([ticket, 'access', _726 => _726.tags, 'optionalAccess', _727 => _727.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
|
|
33084
32606
|
] });
|
|
33085
32607
|
const cardClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
33086
32608
|
"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 +32762,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33240
32762
|
const observer = new IntersectionObserver(
|
|
33241
32763
|
(entries) => {
|
|
33242
32764
|
if (entries.some((e) => e.isIntersecting)) {
|
|
33243
|
-
_optionalChain([loadMoreRef, 'access',
|
|
32765
|
+
_optionalChain([loadMoreRef, 'access', _728 => _728.current, 'optionalCall', _729 => _729(columnIdRef.current)]);
|
|
33244
32766
|
}
|
|
33245
32767
|
},
|
|
33246
32768
|
{ root, rootMargin: loadMoreRootMargin }
|
|
@@ -33269,7 +32791,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33269
32791
|
{
|
|
33270
32792
|
ticket: t,
|
|
33271
32793
|
columnId: column.id,
|
|
33272
|
-
href: _optionalChain([getTicketHref, 'optionalCall',
|
|
32794
|
+
href: _optionalChain([getTicketHref, 'optionalCall', _730 => _730(t.id)]),
|
|
33273
32795
|
renderAssignSlot,
|
|
33274
32796
|
dragDisabled: column.dragDisabled
|
|
33275
32797
|
},
|
|
@@ -33352,17 +32874,17 @@ function Board({
|
|
|
33352
32874
|
const pointer = _core.pointerWithin.call(void 0, args);
|
|
33353
32875
|
const intersections = pointer.length > 0 ? pointer : _core.rectIntersection.call(void 0, args);
|
|
33354
32876
|
const ticketHit = intersections.find(
|
|
33355
|
-
(c) => _optionalChain([c, 'access',
|
|
32877
|
+
(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
32878
|
);
|
|
33357
32879
|
if (ticketHit) return [ticketHit];
|
|
33358
32880
|
const columnHit = intersections.find(
|
|
33359
|
-
(c) => _optionalChain([c, 'access',
|
|
32881
|
+
(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
32882
|
);
|
|
33361
32883
|
if (columnHit) {
|
|
33362
|
-
const columnId = _optionalChain([columnHit, 'access',
|
|
32884
|
+
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
32885
|
const ticketsInColumn = args.droppableContainers.filter((c) => {
|
|
33364
32886
|
const d = c.data.current;
|
|
33365
|
-
return _optionalChain([d, 'optionalAccess',
|
|
32887
|
+
return _optionalChain([d, 'optionalAccess', _746 => _746.type]) === "ticket" && d.columnId === columnId;
|
|
33366
32888
|
});
|
|
33367
32889
|
if (ticketsInColumn.length > 0) {
|
|
33368
32890
|
const closest = _core.closestCorners.call(void 0, { ...args, droppableContainers: ticketsInColumn });
|
|
@@ -33387,20 +32909,20 @@ function Board({
|
|
|
33387
32909
|
const overId = String(over.id);
|
|
33388
32910
|
if (activeId === overId) return;
|
|
33389
32911
|
const overData = over.data.current;
|
|
33390
|
-
const fromColumnId = _optionalChain([locate, 'call',
|
|
33391
|
-
const toColumnId = _optionalChain([overData, 'optionalAccess',
|
|
32912
|
+
const fromColumnId = _optionalChain([locate, 'call', _747 => _747(items, activeId), 'optionalAccess', _748 => _748.columnId]);
|
|
32913
|
+
const toColumnId = _optionalChain([overData, 'optionalAccess', _749 => _749.columnId]);
|
|
33392
32914
|
if (!fromColumnId || !toColumnId || fromColumnId === toColumnId) return;
|
|
33393
32915
|
const origin = dragOriginRef.current;
|
|
33394
|
-
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess',
|
|
32916
|
+
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _750 => _750.fromColumnId]) === toColumnId;
|
|
33395
32917
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33396
|
-
const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess',
|
|
33397
|
-
if (_optionalChain([targetCol, 'optionalAccess',
|
|
32918
|
+
const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _751 => _751.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
|
|
32919
|
+
if (_optionalChain([targetCol, 'optionalAccess', _752 => _752.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
|
|
33398
32920
|
setItems((prev) => {
|
|
33399
32921
|
const fromIndex = findIndexInColumn(prev, fromColumnId, activeId);
|
|
33400
32922
|
const toCol = prev.find((c) => c.id === toColumnId);
|
|
33401
32923
|
if (fromIndex < 0 || !toCol) return prev;
|
|
33402
32924
|
let toIndex;
|
|
33403
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32925
|
+
if (_optionalChain([overData, 'optionalAccess', _753 => _753.type]) === "column") {
|
|
33404
32926
|
toIndex = toCol.tickets.length;
|
|
33405
32927
|
} else {
|
|
33406
32928
|
const overIndex = toCol.tickets.findIndex((t) => t.id === overId);
|
|
@@ -33442,14 +32964,14 @@ function Board({
|
|
|
33442
32964
|
const toColumnId = located.columnId;
|
|
33443
32965
|
const isCrossColumn = origin.fromColumnId !== toColumnId;
|
|
33444
32966
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33445
|
-
if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess',
|
|
32967
|
+
if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _754 => _754.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _755 => _755.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
|
|
33446
32968
|
setItems(columns);
|
|
33447
32969
|
return;
|
|
33448
32970
|
}
|
|
33449
32971
|
let finalIndex = located.index;
|
|
33450
|
-
let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access',
|
|
32972
|
+
let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _756 => _756.find, 'call', _757 => _757((c) => c.id === toColumnId), 'optionalAccess', _758 => _758.tickets]), () => ( []));
|
|
33451
32973
|
const overData = over.data.current;
|
|
33452
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32974
|
+
if (_optionalChain([overData, 'optionalAccess', _759 => _759.type]) === "ticket") {
|
|
33453
32975
|
const overIndex = findIndexInColumn(items, toColumnId, String(over.id));
|
|
33454
32976
|
if (overIndex >= 0 && overIndex !== located.index) {
|
|
33455
32977
|
finalColumnTickets = _sortable.arrayMove.call(void 0, finalColumnTickets, located.index, overIndex);
|
|
@@ -33469,8 +32991,8 @@ function Board({
|
|
|
33469
32991
|
ticketId: origin.ticketId,
|
|
33470
32992
|
fromColumnId: origin.fromColumnId,
|
|
33471
32993
|
toColumnId,
|
|
33472
|
-
afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access',
|
|
33473
|
-
beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access',
|
|
32994
|
+
afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _760 => _760[finalIndex - 1], 'optionalAccess', _761 => _761.id]), () => ( null)),
|
|
32995
|
+
beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _762 => _762[finalIndex + 1], 'optionalAccess', _763 => _763.id]), () => ( null))
|
|
33474
32996
|
});
|
|
33475
32997
|
};
|
|
33476
32998
|
const handleDragCancel = () => {
|
|
@@ -33492,8 +33014,8 @@ function Board({
|
|
|
33492
33014
|
/* @__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
33015
|
const prev = items[i - 1];
|
|
33494
33016
|
const next = items[i + 1];
|
|
33495
|
-
const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess',
|
|
33496
|
-
const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess',
|
|
33017
|
+
const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _764 => _764.system]));
|
|
33018
|
+
const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _765 => _765.system]));
|
|
33497
33019
|
const showGap = i > 0 && !joinLeft;
|
|
33498
33020
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React101.Fragment, { children: [
|
|
33499
33021
|
showGap && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
@@ -33527,7 +33049,7 @@ function locate(cols, ticketId) {
|
|
|
33527
33049
|
return null;
|
|
33528
33050
|
}
|
|
33529
33051
|
function findIndexInColumn(cols, columnId, ticketId) {
|
|
33530
|
-
return _nullishCoalesce(_optionalChain([cols, 'access',
|
|
33052
|
+
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
33053
|
}
|
|
33532
33054
|
|
|
33533
33055
|
// src/components/features/board/types.ts
|
|
@@ -34185,5 +33707,13 @@ function canonicalize(status) {
|
|
|
34185
33707
|
|
|
34186
33708
|
|
|
34187
33709
|
|
|
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
|
-
|
|
33710
|
+
|
|
33711
|
+
|
|
33712
|
+
|
|
33713
|
+
|
|
33714
|
+
|
|
33715
|
+
|
|
33716
|
+
|
|
33717
|
+
|
|
33718
|
+
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;
|
|
33719
|
+
//# sourceMappingURL=chunk-4TM2SBMX.cjs.map
|