@flamingo-stack/openframe-frontend-core 0.0.177 → 0.0.178-snapshot.20260514174355
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-C6ZMI4UB.cjs → chunk-4TM2SBMX.cjs} +884 -1513
- package/dist/chunk-4TM2SBMX.cjs.map +1 -0
- package/dist/{chunk-WX7PT5C7.cjs → chunk-ALW3D72O.cjs} +61 -2
- package/dist/chunk-ALW3D72O.cjs.map +1 -0
- package/dist/{chunk-KB2N44BY.js → chunk-FMWHOUFE.js} +61 -2
- package/dist/chunk-FMWHOUFE.js.map +1 -0
- package/dist/{chunk-6LDN3CIY.js → chunk-ZMQP3UZJ.js} +3701 -4330
- 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 +17 -3
- 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 +22 -8
- 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 +17 -3
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +22 -8
- package/dist/components/media-carousel.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/navigation/index.js +2 -2
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +3 -3
- package/dist/components/ui/index.js +2 -2
- package/dist/hooks/index.cjs +4 -2
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/use-near-viewport.d.ts +42 -0
- package/dist/hooks/use-near-viewport.d.ts.map +1 -0
- package/dist/index.cjs +19 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -8
- 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/src/hooks/index.ts +3 -0
- package/src/hooks/use-near-viewport.ts +118 -0
- package/dist/chunk-6LDN3CIY.js.map +0 -1
- package/dist/chunk-C6ZMI4UB.cjs.map +0 -1
- package/dist/chunk-KB2N44BY.js.map +0 -1
- package/dist/chunk-WX7PT5C7.cjs.map +0 -1
- package/dist/components/features/video-player.d.ts +0 -47
- package/dist/components/features/video-player.d.ts.map +0 -1
- package/dist/components/features/youtube-embed.d.ts +0 -17
- 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/__tests__/video-player.test.tsx +0 -142
- package/src/components/features/video-player.tsx +0 -1030
- package/src/components/features/youtube-embed.tsx +0 -275
- package/src/utils/lite-youtube-embed-stub.tsx +0 -21
- package/src/utils/lite-youtube-embed.tsx +0 -46
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkALW3D72Ocjs = require('./chunk-ALW3D72O.cjs');
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
@@ -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, {
|
|
@@ -790,7 +783,7 @@ function AutocompleteInner(props, ref) {
|
|
|
790
783
|
}, [valueArray, options]);
|
|
791
784
|
const selectedOption = !multiple && selectedOptions.length > 0 ? selectedOptions[0] : null;
|
|
792
785
|
const inputPlaceholder = multiple ? valueArray.length === 0 ? placeholder : "Add More..." : placeholder;
|
|
793
|
-
const autoLimitTags =
|
|
786
|
+
const autoLimitTags = _chunkALW3D72Ocjs.useAutoLimitTags.call(void 0, {
|
|
794
787
|
count: multiple ? selectedOptions.length : 0,
|
|
795
788
|
limitTags: multiple ? limitTagsProp : 0,
|
|
796
789
|
placeholder: inputPlaceholder
|
|
@@ -2737,7 +2730,7 @@ function toToolLabel(input) {
|
|
|
2737
2730
|
if (!input) return "";
|
|
2738
2731
|
const toolType = normalizeToolType(input);
|
|
2739
2732
|
if (toolType) {
|
|
2740
|
-
return
|
|
2733
|
+
return _chunkALW3D72Ocjs.toolLabels[toolType];
|
|
2741
2734
|
}
|
|
2742
2735
|
return input;
|
|
2743
2736
|
}
|
|
@@ -2748,7 +2741,7 @@ function getToolTypeAliases(toolType) {
|
|
|
2748
2741
|
return Object.entries(toolAliasMap).filter(([_, value]) => value === toolType).map(([key]) => key);
|
|
2749
2742
|
}
|
|
2750
2743
|
function getToolLabel(toolType) {
|
|
2751
|
-
return
|
|
2744
|
+
return _chunkALW3D72Ocjs.toolLabels[toolType] || toolType;
|
|
2752
2745
|
}
|
|
2753
2746
|
|
|
2754
2747
|
// src/types/shell.types.ts
|
|
@@ -3338,7 +3331,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution }) {
|
|
|
3338
3331
|
onClick: onToggle,
|
|
3339
3332
|
className: "flex gap-2 items-start w-full p-3 cursor-pointer text-left",
|
|
3340
3333
|
children: [
|
|
3341
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3334
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALW3D72Ocjs.ToolIcon, { toolType, size: 16 }) }),
|
|
3342
3335
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3343
3336
|
"div",
|
|
3344
3337
|
{
|
|
@@ -5047,7 +5040,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
|
|
|
5047
5040
|
className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full",
|
|
5048
5041
|
onClick: () => setExpanded((prev) => !prev),
|
|
5049
5042
|
children: [
|
|
5050
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5043
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALW3D72Ocjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
|
|
5051
5044
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5052
5045
|
"div",
|
|
5053
5046
|
{
|
|
@@ -6494,7 +6487,7 @@ function useNatsDialogSubscription({
|
|
|
6494
6487
|
});
|
|
6495
6488
|
}
|
|
6496
6489
|
const { name = "openframe-frontend", user = "machine", pass = "" } = clientConfig;
|
|
6497
|
-
const client =
|
|
6490
|
+
const client = _chunkALW3D72Ocjs.createNatsClient.call(void 0, {
|
|
6498
6491
|
servers: url,
|
|
6499
6492
|
name,
|
|
6500
6493
|
user,
|
|
@@ -9037,8 +9030,8 @@ var MINIMIZED_WIDTH = 56;
|
|
|
9037
9030
|
var EXPANDED_WIDTH = 224;
|
|
9038
9031
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
9039
9032
|
function NavigationSidebar({ config, disabled = false }) {
|
|
9040
|
-
const isLgUp = _nullishCoalesce(
|
|
9041
|
-
const [minimized, setMinimized] =
|
|
9033
|
+
const isLgUp = _nullishCoalesce(_chunkALW3D72Ocjs.useLgUp.call(void 0, ), () => ( false));
|
|
9034
|
+
const [minimized, setMinimized] = _chunkALW3D72Ocjs.useLocalStorage.call(void 0,
|
|
9042
9035
|
STORAGE_KEY,
|
|
9043
9036
|
!isLgUp || (_nullishCoalesce(config.minimized, () => ( false)))
|
|
9044
9037
|
);
|
|
@@ -9410,7 +9403,7 @@ var AppHeader = React33.default.memo(function AppHeader2({
|
|
|
9410
9403
|
onToggleMobileMenu,
|
|
9411
9404
|
disabled = false
|
|
9412
9405
|
}) {
|
|
9413
|
-
const isMdUp = _nullishCoalesce(
|
|
9406
|
+
const isMdUp = _nullishCoalesce(_chunkALW3D72Ocjs.useMdUp.call(void 0, ), () => ( false));
|
|
9414
9407
|
const dimmedClass = disabled ? "pointer-events-none opacity-50" : "";
|
|
9415
9408
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
9416
9409
|
"header",
|
|
@@ -9793,7 +9786,7 @@ function NotificationTile({
|
|
|
9793
9786
|
),
|
|
9794
9787
|
children: [
|
|
9795
9788
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]", children: [
|
|
9796
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "size-1.5 rounded-full",
|
|
9789
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "size-1.5 rounded-full", _chunkALW3D72Ocjs.dotColorByVariant[variant]) }) }),
|
|
9797
9790
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
9798
9791
|
title ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-h4 text-ods-text-primary", children: title }) : null,
|
|
9799
9792
|
description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 line-clamp-2 text-ods-text-secondary", children: description }) : null
|
|
@@ -9834,7 +9827,7 @@ function NotificationTile({
|
|
|
9834
9827
|
"aria-hidden": true,
|
|
9835
9828
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
9836
9829
|
"absolute inset-x-0 -bottom-px h-1 origin-left",
|
|
9837
|
-
|
|
9830
|
+
_chunkALW3D72Ocjs.progressColorByVariant[variant]
|
|
9838
9831
|
),
|
|
9839
9832
|
style: {
|
|
9840
9833
|
animation: `toast-progress ${liveDurationMs}ms linear forwards`,
|
|
@@ -10286,7 +10279,7 @@ var ToolBadge = ({
|
|
|
10286
10279
|
}) => {
|
|
10287
10280
|
const label = getToolLabel(toolType);
|
|
10288
10281
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex items-center gap-1 text-ods-text-secondary", className), children: [
|
|
10289
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
10282
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALW3D72Ocjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
|
|
10290
10283
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: label })
|
|
10291
10284
|
] });
|
|
10292
10285
|
};
|
|
@@ -12547,7 +12540,7 @@ _chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
|
12547
12540
|
|
|
12548
12541
|
function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height = 300, objectFit = "cover", showReplaceButton = true, deferUpload = false, onUpload, onDelete }) {
|
|
12549
12542
|
const inputRef = _react.useRef.call(void 0, null);
|
|
12550
|
-
const { toast } =
|
|
12543
|
+
const { toast } = _chunkALW3D72Ocjs.useToast.call(void 0, );
|
|
12551
12544
|
const [uploading, setUploading] = _react.useState.call(void 0, false);
|
|
12552
12545
|
const ALLOWED_TYPES = ["image/jpeg", "image/jpg", "image/png", "image/webp", "image/gif"];
|
|
12553
12546
|
const MAX_SIZE = 5 * 1024 * 1024;
|
|
@@ -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
|
},
|
|
@@ -16128,7 +16182,7 @@ function OnboardingWalkthrough({
|
|
|
16128
16182
|
isStepSkipped,
|
|
16129
16183
|
allStepsComplete,
|
|
16130
16184
|
markMultipleComplete
|
|
16131
|
-
} =
|
|
16185
|
+
} = _chunkALW3D72Ocjs.useOnboardingState.call(void 0, storageKey);
|
|
16132
16186
|
const hasAutoMarkedRef = _react.useRef.call(void 0, false);
|
|
16133
16187
|
const autoMarkingInProgressRef = _react.useRef.call(void 0, false);
|
|
16134
16188
|
const lastCompletionStatusRef = _react.useRef.call(void 0, null);
|
|
@@ -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,968 +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
|
-
var _youtube = require('react-player/youtube'); var _youtube2 = _interopRequireDefault(_youtube);
|
|
16621
|
-
|
|
16622
|
-
var Play = ({ size = 16, className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: size, height: size, fill: "currentColor", viewBox: "0 0 24 24", className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "5,3 19,12 5,21" }) });
|
|
16623
|
-
var Loader = ({ size = 16, className }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "svg", { width: size, height: size, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", className, children: [
|
|
16624
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "12", y1: "2", x2: "12", y2: "6" }),
|
|
16625
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "12", y1: "18", x2: "12", y2: "22" }),
|
|
16626
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "4.93", y1: "4.93", x2: "7.76", y2: "7.76" }),
|
|
16627
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16.24", y1: "16.24", x2: "19.07", y2: "19.07" }),
|
|
16628
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "2", y1: "12", x2: "6", y2: "12" }),
|
|
16629
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "18", y1: "12", x2: "22", y2: "12" }),
|
|
16630
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "4.93", y1: "19.07", x2: "7.76", y2: "16.24" }),
|
|
16631
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "line", { x1: "16.24", y1: "7.76", x2: "19.07", y2: "4.93" })
|
|
16632
|
-
] });
|
|
16633
|
-
var YouTubeEmbed = ({
|
|
16634
|
-
videoId,
|
|
16635
|
-
title = "YouTube Video",
|
|
16636
|
-
className = "",
|
|
16637
|
-
showTitle = true,
|
|
16638
|
-
showMeta = true,
|
|
16639
|
-
minimalControls = false
|
|
16640
|
-
}) => {
|
|
16641
|
-
const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
|
|
16642
|
-
const [hasError, setHasError] = _react.useState.call(void 0, false);
|
|
16643
|
-
const [isPlaying, setIsPlaying] = _react.useState.call(void 0, false);
|
|
16644
|
-
const [useIframe, setUseIframe] = _react.useState.call(void 0, false);
|
|
16645
|
-
const [mounted, setMounted] = _react.useState.call(void 0, false);
|
|
16646
|
-
_react.useEffect.call(void 0, () => {
|
|
16647
|
-
setMounted(true);
|
|
16648
|
-
setUseIframe(true);
|
|
16649
|
-
setIsLoading(false);
|
|
16650
|
-
}, []);
|
|
16651
|
-
const handleReady = () => {
|
|
16652
|
-
setIsLoading(false);
|
|
16653
|
-
};
|
|
16654
|
-
const handleError = () => {
|
|
16655
|
-
setIsLoading(false);
|
|
16656
|
-
setHasError(true);
|
|
16657
|
-
setUseIframe(true);
|
|
16658
|
-
};
|
|
16659
|
-
const handlePlay = () => {
|
|
16660
|
-
setIsPlaying(true);
|
|
16661
|
-
};
|
|
16662
|
-
const handlePause = () => {
|
|
16663
|
-
setIsPlaying(false);
|
|
16664
|
-
};
|
|
16665
|
-
const videoUrl = `https://www.youtube.com/watch?v=${videoId}`;
|
|
16666
|
-
const embedParams = new URLSearchParams({
|
|
16667
|
-
rel: "0",
|
|
16668
|
-
modestbranding: "1",
|
|
16669
|
-
playsinline: "1"
|
|
16670
|
-
});
|
|
16671
|
-
if (minimalControls) {
|
|
16672
|
-
embedParams.set("controls", "0");
|
|
16673
|
-
embedParams.set("showinfo", "0");
|
|
16674
|
-
embedParams.set("fs", "0");
|
|
16675
|
-
embedParams.set("iv_load_policy", "3");
|
|
16676
|
-
embedParams.set("cc_load_policy", "0");
|
|
16677
|
-
embedParams.set("disablekb", "1");
|
|
16678
|
-
embedParams.set("rel", "0");
|
|
16679
|
-
}
|
|
16680
|
-
const embedUrl = `https://www.youtube.com/embed/${videoId}?${embedParams.toString()}`;
|
|
16681
|
-
if (!mounted) {
|
|
16682
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `youtube-embed-container my-6 ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-wrapper relative w-full", style: { paddingBottom: "56.25%" }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "loading-overlay absolute inset-0 bg-ods-card border border-ods-border rounded-lg flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "loading-content flex flex-col items-center gap-3", children: [
|
|
16683
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Loader, { className: "animate-spin text-ods-accent", size: 32 }),
|
|
16684
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-sans text-sm text-ods-text-secondary", children: "Loading video..." })
|
|
16685
|
-
] }) }) }) });
|
|
16686
|
-
}
|
|
16687
|
-
if (hasError) {
|
|
16688
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `youtube-embed-error ${className}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "error-state bg-ods-card border border-ods-error rounded-lg p-6 text-center my-6", children: [
|
|
16689
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-icon flex justify-center mb-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "48", height: "48", fill: "currentColor", viewBox: "0 0 24 24", className: "text-ods-error", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" }) }) }),
|
|
16690
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-title font-sans font-semibold text-lg text-ods-error mb-2", children: "Video Unavailable" }),
|
|
16691
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-description font-sans text-sm text-ods-text-secondary mb-4", children: "Unable to load YouTube video. The video may be private or deleted." }),
|
|
16692
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16693
|
-
"a",
|
|
16694
|
-
{
|
|
16695
|
-
href: videoUrl,
|
|
16696
|
-
target: "_blank",
|
|
16697
|
-
rel: "noopener noreferrer",
|
|
16698
|
-
className: "error-retry-button bg-ods-error hover:bg-ods-error-hover text-ods-text-on-error border-none rounded px-4 py-2 font-sans font-medium text-sm cursor-pointer transition-colors duration-200",
|
|
16699
|
-
children: "Watch on YouTube"
|
|
16700
|
-
}
|
|
16701
|
-
)
|
|
16702
|
-
] }) });
|
|
16703
|
-
}
|
|
16704
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `youtube-embed-container my-6 ${className}`, children: [
|
|
16705
|
-
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 }),
|
|
16706
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "video-wrapper relative w-full", style: { paddingBottom: "56.25%" }, children: [
|
|
16707
|
-
isLoading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "loading-overlay absolute inset-0 bg-ods-card border border-ods-border rounded-lg flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "loading-content flex flex-col items-center gap-3", children: [
|
|
16708
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Loader, { className: "animate-spin text-ods-accent", size: 32 }),
|
|
16709
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-sans text-sm text-ods-text-secondary", children: "Loading video..." })
|
|
16710
|
-
] }) }),
|
|
16711
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-player absolute inset-0 rounded-lg overflow-hidden border border-ods-border bg-ods-bg-inverse", children: useIframe ? (
|
|
16712
|
-
// Iframe fallback for mobile and error cases
|
|
16713
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16714
|
-
"iframe",
|
|
16715
|
-
{
|
|
16716
|
-
src: embedUrl,
|
|
16717
|
-
title,
|
|
16718
|
-
className: "w-full h-full border-0",
|
|
16719
|
-
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
|
|
16720
|
-
allowFullScreen: true,
|
|
16721
|
-
style: { border: "none" }
|
|
16722
|
-
}
|
|
16723
|
-
)
|
|
16724
|
-
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16725
|
-
_youtube2.default,
|
|
16726
|
-
{
|
|
16727
|
-
url: videoUrl,
|
|
16728
|
-
width: "100%",
|
|
16729
|
-
height: "100%",
|
|
16730
|
-
onReady: handleReady,
|
|
16731
|
-
onError: handleError,
|
|
16732
|
-
onPlay: handlePlay,
|
|
16733
|
-
onPause: handlePause,
|
|
16734
|
-
config: {
|
|
16735
|
-
youtube: {
|
|
16736
|
-
playerVars: {
|
|
16737
|
-
autoplay: 0,
|
|
16738
|
-
controls: 1,
|
|
16739
|
-
rel: 0,
|
|
16740
|
-
showinfo: 0,
|
|
16741
|
-
modestbranding: 1,
|
|
16742
|
-
iv_load_policy: 3,
|
|
16743
|
-
cc_load_policy: 0,
|
|
16744
|
-
playsinline: 1
|
|
16745
|
-
}
|
|
16746
|
-
}
|
|
16747
|
-
},
|
|
16748
|
-
light: false,
|
|
16749
|
-
playing: false
|
|
16750
|
-
}
|
|
16751
|
-
) }),
|
|
16752
|
-
!useIframe && !isPlaying && !isLoading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "play-overlay absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 rounded-lg transition-opacity duration-300 hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16753
|
-
"button",
|
|
16754
|
-
{
|
|
16755
|
-
onClick: () => setIsPlaying(true),
|
|
16756
|
-
className: "play-button bg-ods-accent hover:bg-ods-accent-hover text-ods-text-on-accent w-16 h-16 rounded-full flex items-center justify-center transition-all duration-200 transform hover:scale-110 shadow-lg",
|
|
16757
|
-
"aria-label": "Play video",
|
|
16758
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Play, { size: 24, className: "ml-1" })
|
|
16759
|
-
}
|
|
16760
|
-
) })
|
|
16761
|
-
] }),
|
|
16762
|
-
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: [
|
|
16763
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-platform font-sans", children: "YouTube" }),
|
|
16764
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16765
|
-
"a",
|
|
16766
|
-
{
|
|
16767
|
-
href: videoUrl,
|
|
16768
|
-
target: "_blank",
|
|
16769
|
-
rel: "noopener noreferrer",
|
|
16770
|
-
className: "video-link font-sans text-ods-accent hover:text-ods-accent-hover transition-colors duration-200",
|
|
16771
|
-
children: "Watch on YouTube \u2192"
|
|
16772
|
-
}
|
|
16773
|
-
)
|
|
16774
|
-
] })
|
|
16775
|
-
] });
|
|
16776
|
-
};
|
|
16777
|
-
var extractYouTubeId = (url) => {
|
|
16778
|
-
const patterns = [
|
|
16779
|
-
/(?:youtube\.com\/watch\?v=|youtu\.be\/|youtube\.com\/embed\/)([^&\n?#]+)/,
|
|
16780
|
-
/youtube\.com\/v\/([^&\n?#]+)/,
|
|
16781
|
-
/youtube\.com\/watch\?.*v=([^&\n?#]+)/
|
|
16782
|
-
];
|
|
16783
|
-
for (const pattern of patterns) {
|
|
16784
|
-
const match = url.match(pattern);
|
|
16785
|
-
if (match) {
|
|
16786
|
-
return match[1];
|
|
16787
|
-
}
|
|
16788
|
-
}
|
|
16789
|
-
return null;
|
|
16790
|
-
};
|
|
16791
|
-
var YouTubeLinkParser = ({ href, children }) => {
|
|
16792
|
-
const videoId = extractYouTubeId(href);
|
|
16793
|
-
if (videoId) {
|
|
16794
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, YouTubeEmbed, { videoId, title: typeof children === "string" ? children : void 0 });
|
|
16795
|
-
}
|
|
16796
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
16797
|
-
"a",
|
|
16798
|
-
{
|
|
16799
|
-
href,
|
|
16800
|
-
target: "_blank",
|
|
16801
|
-
rel: "noopener noreferrer",
|
|
16802
|
-
className: "text-ods-accent hover:text-ods-accent-hover transition-colors duration-200",
|
|
16803
|
-
children
|
|
16804
|
-
}
|
|
16805
|
-
);
|
|
16806
|
-
};
|
|
16807
|
-
|
|
16808
|
-
// src/components/features/video-player.tsx
|
|
16809
|
-
|
|
16810
|
-
var _reactplayer = require('react-player'); var _reactplayer2 = _interopRequireDefault(_reactplayer);
|
|
16811
|
-
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
16812
|
-
|
|
16813
|
-
function useVideoFirstFramePoster(url, enabled) {
|
|
16814
|
-
const [poster, setPoster] = _react.useState.call(void 0, null);
|
|
16815
|
-
_react.useEffect.call(void 0, () => {
|
|
16816
|
-
if (!enabled || !url) {
|
|
16817
|
-
setPoster(null);
|
|
16818
|
-
return;
|
|
16819
|
-
}
|
|
16820
|
-
const isDirectFile = /\.(mp4|webm|mov|m4v)(\?|#|$)/i.test(url);
|
|
16821
|
-
if (!isDirectFile) {
|
|
16822
|
-
setPoster(null);
|
|
16823
|
-
return;
|
|
16824
|
-
}
|
|
16825
|
-
let cancelled = false;
|
|
16826
|
-
const video = document.createElement("video");
|
|
16827
|
-
video.crossOrigin = "anonymous";
|
|
16828
|
-
video.preload = "metadata";
|
|
16829
|
-
video.muted = true;
|
|
16830
|
-
video.playsInline = true;
|
|
16831
|
-
video.setAttribute("data-poster-extractor", "true");
|
|
16832
|
-
const cleanup = () => {
|
|
16833
|
-
video.removeAttribute("src");
|
|
16834
|
-
try {
|
|
16835
|
-
video.load();
|
|
16836
|
-
} catch (e22) {
|
|
16837
|
-
}
|
|
16838
|
-
};
|
|
16839
|
-
const onLoadedMetadata = () => {
|
|
16840
|
-
if (cancelled) return;
|
|
16841
|
-
const dur = video.duration || 10;
|
|
16842
|
-
const target = Math.max(2, Math.min(dur * 0.1, 30));
|
|
16843
|
-
video.currentTime = target;
|
|
16844
|
-
};
|
|
16845
|
-
const onSeeked = () => {
|
|
16846
|
-
if (cancelled) return;
|
|
16847
|
-
try {
|
|
16848
|
-
const canvas = document.createElement("canvas");
|
|
16849
|
-
canvas.width = video.videoWidth;
|
|
16850
|
-
canvas.height = video.videoHeight;
|
|
16851
|
-
const ctx = canvas.getContext("2d");
|
|
16852
|
-
if (!ctx || !canvas.width || !canvas.height) {
|
|
16853
|
-
cleanup();
|
|
16854
|
-
return;
|
|
16855
|
-
}
|
|
16856
|
-
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
16857
|
-
const dataUrl = canvas.toDataURL("image/jpeg", 0.82);
|
|
16858
|
-
if (!cancelled) setPoster(dataUrl);
|
|
16859
|
-
} catch (err) {
|
|
16860
|
-
console.warn("[VideoPlayer] first-frame extraction failed", err);
|
|
16861
|
-
} finally {
|
|
16862
|
-
cleanup();
|
|
16863
|
-
}
|
|
16864
|
-
};
|
|
16865
|
-
const onError = () => {
|
|
16866
|
-
cleanup();
|
|
16867
|
-
};
|
|
16868
|
-
video.addEventListener("loadedmetadata", onLoadedMetadata);
|
|
16869
|
-
video.addEventListener("seeked", onSeeked);
|
|
16870
|
-
video.addEventListener("error", onError);
|
|
16871
|
-
video.src = url;
|
|
16872
|
-
return () => {
|
|
16873
|
-
cancelled = true;
|
|
16874
|
-
video.removeEventListener("loadedmetadata", onLoadedMetadata);
|
|
16875
|
-
video.removeEventListener("seeked", onSeeked);
|
|
16876
|
-
video.removeEventListener("error", onError);
|
|
16877
|
-
cleanup();
|
|
16878
|
-
};
|
|
16879
|
-
}, [url, enabled]);
|
|
16880
|
-
return poster;
|
|
16881
|
-
}
|
|
16882
|
-
var webkitCaptionCSSInjected = false;
|
|
16883
|
-
function ensureWebkitCaptionCSS() {
|
|
16884
|
-
if (webkitCaptionCSSInjected || typeof document === "undefined") return;
|
|
16885
|
-
const style = document.createElement("style");
|
|
16886
|
-
style.textContent = `
|
|
16887
|
-
video::-webkit-media-text-track-container {
|
|
16888
|
-
display: block !important;
|
|
16889
|
-
visibility: visible !important;
|
|
16890
|
-
overflow: visible !important;
|
|
16891
|
-
}
|
|
16892
|
-
video::-webkit-media-text-track-display {
|
|
16893
|
-
white-space: pre-line;
|
|
16894
|
-
}
|
|
16895
|
-
`;
|
|
16896
|
-
document.head.appendChild(style);
|
|
16897
|
-
webkitCaptionCSSInjected = true;
|
|
16898
|
-
}
|
|
16899
|
-
function parseSrt(srt) {
|
|
16900
|
-
const cues = [];
|
|
16901
|
-
const blocks = srt.replace(/\r\n/g, "\n").trim().split(/\n\n+/);
|
|
16902
|
-
for (const block of blocks) {
|
|
16903
|
-
const lines = block.split("\n");
|
|
16904
|
-
const tsIndex = lines.findIndex((l) => l.includes(" --> "));
|
|
16905
|
-
if (tsIndex === -1) continue;
|
|
16906
|
-
const [startStr, endStr] = lines[tsIndex].split(" --> ");
|
|
16907
|
-
const from = parseSrtTimestamp(_optionalChain([startStr, 'optionalAccess', _433 => _433.trim, 'call', _434 => _434()]));
|
|
16908
|
-
const to = parseSrtTimestamp(_optionalChain([endStr, 'optionalAccess', _435 => _435.trim, 'call', _436 => _436()]));
|
|
16909
|
-
if (from === null || to === null) continue;
|
|
16910
|
-
const text = lines.slice(tsIndex + 1).join("\n").trim();
|
|
16911
|
-
if (text) cues.push({ from, to, text });
|
|
16912
|
-
}
|
|
16913
|
-
return cues;
|
|
16914
|
-
}
|
|
16915
|
-
function parseSrtTimestamp(ts) {
|
|
16916
|
-
if (!ts) return null;
|
|
16917
|
-
const match = ts.match(/(\d{2}):(\d{2}):(\d{2})[,.](\d{3})/);
|
|
16918
|
-
if (!match) return null;
|
|
16919
|
-
return parseInt(match[1]) * 36e5 + parseInt(match[2]) * 6e4 + parseInt(match[3]) * 1e3 + parseInt(match[4]);
|
|
16920
|
-
}
|
|
16921
|
-
function useSubtitleOverlay(srtContent) {
|
|
16922
|
-
const cues = _react.useMemo.call(void 0, () => srtContent ? parseSrt(srtContent) : [], [srtContent]);
|
|
16923
|
-
const [activeText, setActiveText] = _react.useState.call(void 0, null);
|
|
16924
|
-
const updateTime = _react.useCallback.call(void 0, (playedSeconds) => {
|
|
16925
|
-
const timeMs = playedSeconds * 1e3;
|
|
16926
|
-
const active = cues.find((c) => timeMs >= c.from && timeMs <= c.to);
|
|
16927
|
-
setActiveText(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _437 => _437.text]), () => ( null)));
|
|
16928
|
-
}, [cues]);
|
|
16929
|
-
return { activeText, updateTime, hasCues: cues.length > 0 };
|
|
16930
|
-
}
|
|
16931
|
-
var SPEED_OPTIONS = [0.5, 0.75, 1, 1.25, 1.5, 2];
|
|
16932
|
-
var LAZY_MOUNT_PLAY_FAILURE_GRACE_MS = 2e3;
|
|
16933
|
-
function formatTime(secs) {
|
|
16934
|
-
if (!secs || !isFinite(secs)) return "0:00";
|
|
16935
|
-
const h = Math.floor(secs / 3600);
|
|
16936
|
-
const m = Math.floor(secs % 3600 / 60);
|
|
16937
|
-
const s = Math.floor(secs % 60);
|
|
16938
|
-
if (h > 0) return `${h}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`;
|
|
16939
|
-
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
16940
|
-
}
|
|
16941
|
-
var VideoPlayer = ({
|
|
16942
|
-
url,
|
|
16943
|
-
title,
|
|
16944
|
-
poster,
|
|
16945
|
-
className = "",
|
|
16946
|
-
showTitle = false,
|
|
16947
|
-
autoPlay = false,
|
|
16948
|
-
loop = false,
|
|
16949
|
-
muted = false,
|
|
16950
|
-
useNativeAspectRatio = false,
|
|
16951
|
-
srtContent,
|
|
16952
|
-
captionsUrl,
|
|
16953
|
-
subtitleLabel,
|
|
16954
|
-
lazyMount = false
|
|
16955
|
-
}) => {
|
|
16956
|
-
const [hasError, setHasError] = _react.useState.call(void 0, false);
|
|
16957
|
-
const [isPlaying, setIsPlaying] = _react.useState.call(void 0, autoPlay);
|
|
16958
|
-
const [mounted, setMounted] = _react.useState.call(void 0, false);
|
|
16959
|
-
const [hasStarted, setHasStarted] = _react.useState.call(void 0, autoPlay);
|
|
16960
|
-
const playerRef = _react.useRef.call(void 0, null);
|
|
16961
|
-
const containerRef = _react.useRef.call(void 0, null);
|
|
16962
|
-
const [played, setPlayed] = _react.useState.call(void 0, 0);
|
|
16963
|
-
const [loaded, setLoaded] = _react.useState.call(void 0, 0);
|
|
16964
|
-
const [duration, setDuration] = _react.useState.call(void 0, 0);
|
|
16965
|
-
const [volume, setVolume] = _react.useState.call(void 0, 0.8);
|
|
16966
|
-
const [prevVolume, setPrevVolume] = _react.useState.call(void 0, 0.8);
|
|
16967
|
-
const [isMuted, setIsMuted] = _react.useState.call(void 0, muted);
|
|
16968
|
-
const [isBuffering, setIsBuffering] = _react.useState.call(void 0, false);
|
|
16969
|
-
const [showControls, setShowControls] = _react.useState.call(void 0, true);
|
|
16970
|
-
const hideTimeoutRef = _react.useRef.call(void 0, void 0);
|
|
16971
|
-
const clickTimerRef = _react.useRef.call(void 0, void 0);
|
|
16972
|
-
const iosFullscreenTimerRef = _react.useRef.call(void 0, void 0);
|
|
16973
|
-
const lazyMountFailureTimerRef = _react.useRef.call(void 0, void 0);
|
|
16974
|
-
const [captionsEnabled, setCaptionsEnabled] = _react.useState.call(void 0, true);
|
|
16975
|
-
const [isFullscreen, setIsFullscreen] = _react.useState.call(void 0, false);
|
|
16976
|
-
const { activeText, updateTime, hasCues } = useSubtitleOverlay(srtContent);
|
|
16977
|
-
_react.useEffect.call(void 0, () => {
|
|
16978
|
-
const onChange = () => {
|
|
16979
|
-
const fsEl = document.fullscreenElement || document.webkitFullscreenElement;
|
|
16980
|
-
setIsFullscreen(!!fsEl);
|
|
16981
|
-
};
|
|
16982
|
-
document.addEventListener("fullscreenchange", onChange);
|
|
16983
|
-
document.addEventListener("webkitfullscreenchange", onChange);
|
|
16984
|
-
return () => {
|
|
16985
|
-
document.removeEventListener("fullscreenchange", onChange);
|
|
16986
|
-
document.removeEventListener("webkitfullscreenchange", onChange);
|
|
16987
|
-
};
|
|
16988
|
-
}, []);
|
|
16989
|
-
const activateCaptionTracks = _react.useCallback.call(void 0, (video) => {
|
|
16990
|
-
for (let i = 0; i < video.textTracks.length; i++) {
|
|
16991
|
-
if (video.textTracks[i].kind === "captions" || video.textTracks[i].kind === "subtitles") {
|
|
16992
|
-
video.textTracks[i].mode = "showing";
|
|
16993
|
-
}
|
|
16994
|
-
}
|
|
16995
|
-
}, []);
|
|
16996
|
-
const enterNativeVideoFullscreen = _react.useCallback.call(void 0, () => {
|
|
16997
|
-
const video = _optionalChain([playerRef, 'access', _438 => _438.current, 'optionalAccess', _439 => _439.getInternalPlayer, 'call', _440 => _440()]);
|
|
16998
|
-
if (!video || !video.webkitEnterFullscreen) return;
|
|
16999
|
-
ensureWebkitCaptionCSS();
|
|
17000
|
-
const trackSrc = captionsUrl || null;
|
|
17001
|
-
if (!trackSrc) {
|
|
17002
|
-
try {
|
|
17003
|
-
video.webkitEnterFullscreen();
|
|
17004
|
-
} catch (e23) {
|
|
17005
|
-
}
|
|
17006
|
-
return;
|
|
17007
|
-
}
|
|
17008
|
-
const old = video.querySelector("track[data-native-cc]");
|
|
17009
|
-
if (old) old.remove();
|
|
17010
|
-
clearTimeout(iosFullscreenTimerRef.current);
|
|
17011
|
-
const track = document.createElement("track");
|
|
17012
|
-
track.kind = "captions";
|
|
17013
|
-
track.label = subtitleLabel || "English";
|
|
17014
|
-
track.srclang = "en";
|
|
17015
|
-
track.default = true;
|
|
17016
|
-
track.setAttribute("data-native-cc", "true");
|
|
17017
|
-
video.appendChild(track);
|
|
17018
|
-
track.src = trackSrc;
|
|
17019
|
-
let entered = false;
|
|
17020
|
-
const doFullscreen = () => {
|
|
17021
|
-
if (entered) return;
|
|
17022
|
-
entered = true;
|
|
17023
|
-
activateCaptionTracks(video);
|
|
17024
|
-
try {
|
|
17025
|
-
video.webkitEnterFullscreen();
|
|
17026
|
-
} catch (e24) {
|
|
17027
|
-
}
|
|
17028
|
-
};
|
|
17029
|
-
track.addEventListener("load", doFullscreen, { once: true });
|
|
17030
|
-
iosFullscreenTimerRef.current = setTimeout(() => {
|
|
17031
|
-
track.removeEventListener("load", doFullscreen);
|
|
17032
|
-
doFullscreen();
|
|
17033
|
-
}, 500);
|
|
17034
|
-
}, [captionsUrl, subtitleLabel, activateCaptionTracks]);
|
|
17035
|
-
const toggleFullscreen = _react.useCallback.call(void 0, () => {
|
|
17036
|
-
const container = containerRef.current;
|
|
17037
|
-
if (!container) return;
|
|
17038
|
-
if (isFullscreen) {
|
|
17039
|
-
try {
|
|
17040
|
-
if (document.exitFullscreen) document.exitFullscreen();
|
|
17041
|
-
else if (document.webkitExitFullscreen) document.webkitExitFullscreen();
|
|
17042
|
-
} catch (e25) {
|
|
17043
|
-
}
|
|
17044
|
-
return;
|
|
17045
|
-
}
|
|
17046
|
-
if (container.requestFullscreen) {
|
|
17047
|
-
container.requestFullscreen().catch(() => enterNativeVideoFullscreen());
|
|
17048
|
-
} else if (container.webkitRequestFullscreen) {
|
|
17049
|
-
container.webkitRequestFullscreen();
|
|
17050
|
-
} else {
|
|
17051
|
-
enterNativeVideoFullscreen();
|
|
17052
|
-
}
|
|
17053
|
-
}, [isFullscreen, enterNativeVideoFullscreen]);
|
|
17054
|
-
const toggleMute = _react.useCallback.call(void 0, () => {
|
|
17055
|
-
if (isMuted) {
|
|
17056
|
-
setIsMuted(false);
|
|
17057
|
-
setVolume(prevVolume || 0.5);
|
|
17058
|
-
} else {
|
|
17059
|
-
setPrevVolume(volume);
|
|
17060
|
-
setIsMuted(true);
|
|
17061
|
-
setVolume(0);
|
|
17062
|
-
}
|
|
17063
|
-
}, [isMuted, volume, prevVolume]);
|
|
17064
|
-
const handleVolumeChange = _react.useCallback.call(void 0, (e) => {
|
|
17065
|
-
const val = parseFloat(e.target.value);
|
|
17066
|
-
setVolume(val);
|
|
17067
|
-
setIsMuted(val === 0);
|
|
17068
|
-
if (val > 0) setPrevVolume(val);
|
|
17069
|
-
}, []);
|
|
17070
|
-
const startHideTimer = _react.useCallback.call(void 0, () => {
|
|
17071
|
-
clearTimeout(hideTimeoutRef.current);
|
|
17072
|
-
if (isPlaying) {
|
|
17073
|
-
hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
|
|
17074
|
-
}
|
|
17075
|
-
}, [isPlaying]);
|
|
17076
|
-
const handleMouseMove = _react.useCallback.call(void 0, () => {
|
|
17077
|
-
setShowControls(true);
|
|
17078
|
-
startHideTimer();
|
|
17079
|
-
}, [startHideTimer]);
|
|
17080
|
-
const handleTouchToggle = _react.useCallback.call(void 0, () => {
|
|
17081
|
-
if (!hasStarted) return;
|
|
17082
|
-
setShowControls((prev) => {
|
|
17083
|
-
const next = !prev;
|
|
17084
|
-
clearTimeout(hideTimeoutRef.current);
|
|
17085
|
-
if (next && isPlaying) {
|
|
17086
|
-
hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
|
|
17087
|
-
}
|
|
17088
|
-
return next;
|
|
17089
|
-
});
|
|
17090
|
-
}, [hasStarted, isPlaying]);
|
|
17091
|
-
_react.useEffect.call(void 0, () => {
|
|
17092
|
-
if (!hasStarted) return;
|
|
17093
|
-
const el = containerRef.current;
|
|
17094
|
-
if (!el) return;
|
|
17095
|
-
const onKey = (e) => {
|
|
17096
|
-
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
|
|
17097
|
-
switch (e.key) {
|
|
17098
|
-
case " ":
|
|
17099
|
-
case "k":
|
|
17100
|
-
e.preventDefault();
|
|
17101
|
-
setIsPlaying((prev) => !prev);
|
|
17102
|
-
break;
|
|
17103
|
-
case "ArrowLeft":
|
|
17104
|
-
e.preventDefault();
|
|
17105
|
-
_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")]);
|
|
17106
|
-
break;
|
|
17107
|
-
case "ArrowRight":
|
|
17108
|
-
e.preventDefault();
|
|
17109
|
-
_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")]);
|
|
17110
|
-
break;
|
|
17111
|
-
case "ArrowUp":
|
|
17112
|
-
e.preventDefault();
|
|
17113
|
-
setVolume((v) => {
|
|
17114
|
-
const nv = Math.min(1, v + 0.1);
|
|
17115
|
-
setIsMuted(false);
|
|
17116
|
-
return nv;
|
|
17117
|
-
});
|
|
17118
|
-
break;
|
|
17119
|
-
case "ArrowDown":
|
|
17120
|
-
e.preventDefault();
|
|
17121
|
-
setVolume((v) => {
|
|
17122
|
-
const nv = Math.max(0, v - 0.1);
|
|
17123
|
-
if (nv === 0) setIsMuted(true);
|
|
17124
|
-
return nv;
|
|
17125
|
-
});
|
|
17126
|
-
break;
|
|
17127
|
-
case "m":
|
|
17128
|
-
case "M":
|
|
17129
|
-
e.preventDefault();
|
|
17130
|
-
toggleMute();
|
|
17131
|
-
break;
|
|
17132
|
-
case "f":
|
|
17133
|
-
case "F":
|
|
17134
|
-
e.preventDefault();
|
|
17135
|
-
toggleFullscreen();
|
|
17136
|
-
break;
|
|
17137
|
-
case "c":
|
|
17138
|
-
case "C":
|
|
17139
|
-
e.preventDefault();
|
|
17140
|
-
setCaptionsEnabled((prev) => !prev);
|
|
17141
|
-
break;
|
|
17142
|
-
}
|
|
17143
|
-
};
|
|
17144
|
-
el.addEventListener("keydown", onKey);
|
|
17145
|
-
return () => el.removeEventListener("keydown", onKey);
|
|
17146
|
-
}, [hasStarted, duration, toggleMute, toggleFullscreen]);
|
|
17147
|
-
const [seekPreview, setSeekPreview] = _react.useState.call(void 0, null);
|
|
17148
|
-
const [playbackRate, setPlaybackRate] = _react.useState.call(void 0, 1);
|
|
17149
|
-
const cycleSpeed = _react.useCallback.call(void 0, () => {
|
|
17150
|
-
setPlaybackRate((prev) => {
|
|
17151
|
-
const idx = SPEED_OPTIONS.indexOf(prev);
|
|
17152
|
-
return SPEED_OPTIONS[(idx + 1) % SPEED_OPTIONS.length];
|
|
17153
|
-
});
|
|
17154
|
-
}, []);
|
|
17155
|
-
const progressBarRef = _react.useRef.call(void 0, null);
|
|
17156
|
-
const isDraggingRef = _react.useRef.call(void 0, false);
|
|
17157
|
-
const dragListenersRef = _react.useRef.call(void 0, null);
|
|
17158
|
-
const seekToClientX = _react.useCallback.call(void 0, (clientX) => {
|
|
17159
|
-
const rect = _optionalChain([progressBarRef, 'access', _453 => _453.current, 'optionalAccess', _454 => _454.getBoundingClientRect, 'call', _455 => _455()]);
|
|
17160
|
-
if (!rect) return;
|
|
17161
|
-
const fraction = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
|
|
17162
|
-
setPlayed(fraction);
|
|
17163
|
-
_optionalChain([playerRef, 'access', _456 => _456.current, 'optionalAccess', _457 => _457.seekTo, 'call', _458 => _458(fraction, "fraction")]);
|
|
17164
|
-
}, []);
|
|
17165
|
-
const handleProgressMouseDown = _react.useCallback.call(void 0, (e) => {
|
|
17166
|
-
e.stopPropagation();
|
|
17167
|
-
e.preventDefault();
|
|
17168
|
-
isDraggingRef.current = true;
|
|
17169
|
-
seekToClientX(e.clientX);
|
|
17170
|
-
if (dragListenersRef.current) {
|
|
17171
|
-
document.removeEventListener("mousemove", dragListenersRef.current.move);
|
|
17172
|
-
document.removeEventListener("mouseup", dragListenersRef.current.up);
|
|
17173
|
-
}
|
|
17174
|
-
const onMouseMove = (ev) => {
|
|
17175
|
-
if (!isDraggingRef.current) return;
|
|
17176
|
-
seekToClientX(ev.clientX);
|
|
17177
|
-
};
|
|
17178
|
-
const onMouseUp = () => {
|
|
17179
|
-
isDraggingRef.current = false;
|
|
17180
|
-
document.removeEventListener("mousemove", onMouseMove);
|
|
17181
|
-
document.removeEventListener("mouseup", onMouseUp);
|
|
17182
|
-
dragListenersRef.current = null;
|
|
17183
|
-
};
|
|
17184
|
-
dragListenersRef.current = { move: onMouseMove, up: onMouseUp };
|
|
17185
|
-
document.addEventListener("mousemove", onMouseMove);
|
|
17186
|
-
document.addEventListener("mouseup", onMouseUp);
|
|
17187
|
-
}, [seekToClientX]);
|
|
17188
|
-
const handleProgressTouchStart = _react.useCallback.call(void 0, (e) => {
|
|
17189
|
-
e.stopPropagation();
|
|
17190
|
-
const touch = e.touches[0];
|
|
17191
|
-
if (touch) seekToClientX(touch.clientX);
|
|
17192
|
-
}, [seekToClientX]);
|
|
17193
|
-
const handleProgressTouchMove = _react.useCallback.call(void 0, (e) => {
|
|
17194
|
-
e.stopPropagation();
|
|
17195
|
-
const touch = e.touches[0];
|
|
17196
|
-
if (touch) seekToClientX(touch.clientX);
|
|
17197
|
-
}, [seekToClientX]);
|
|
17198
|
-
const handleProgressKeyDown = _react.useCallback.call(void 0, (e) => {
|
|
17199
|
-
if (e.key === "ArrowRight") {
|
|
17200
|
-
e.preventDefault();
|
|
17201
|
-
e.stopPropagation();
|
|
17202
|
-
_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")]);
|
|
17203
|
-
}
|
|
17204
|
-
if (e.key === "ArrowLeft") {
|
|
17205
|
-
e.preventDefault();
|
|
17206
|
-
e.stopPropagation();
|
|
17207
|
-
_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")]);
|
|
17208
|
-
}
|
|
17209
|
-
if (e.key === "Home") {
|
|
17210
|
-
e.preventDefault();
|
|
17211
|
-
e.stopPropagation();
|
|
17212
|
-
_optionalChain([playerRef, 'access', _471 => _471.current, 'optionalAccess', _472 => _472.seekTo, 'call', _473 => _473(0, "seconds")]);
|
|
17213
|
-
}
|
|
17214
|
-
if (e.key === "End") {
|
|
17215
|
-
e.preventDefault();
|
|
17216
|
-
e.stopPropagation();
|
|
17217
|
-
_optionalChain([playerRef, 'access', _474 => _474.current, 'optionalAccess', _475 => _475.seekTo, 'call', _476 => _476(duration, "seconds")]);
|
|
17218
|
-
}
|
|
17219
|
-
}, [duration]);
|
|
17220
|
-
const handleProgressHover = _react.useCallback.call(void 0, (e) => {
|
|
17221
|
-
if (isDraggingRef.current) return;
|
|
17222
|
-
const rect = e.currentTarget.getBoundingClientRect();
|
|
17223
|
-
const fraction = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
|
|
17224
|
-
const x = Math.max(30, Math.min(rect.width - 30, e.clientX - rect.left));
|
|
17225
|
-
setSeekPreview({ fraction, x });
|
|
17226
|
-
}, []);
|
|
17227
|
-
const isTouchRef = _react.useRef.call(void 0, false);
|
|
17228
|
-
const handleContainerClick = _react.useCallback.call(void 0, (e) => {
|
|
17229
|
-
if (isTouchRef.current) {
|
|
17230
|
-
isTouchRef.current = false;
|
|
17231
|
-
return;
|
|
17232
|
-
}
|
|
17233
|
-
if (e.target.closest(".video-controls-bar")) return;
|
|
17234
|
-
if (!hasStarted) return;
|
|
17235
|
-
if (clickTimerRef.current) {
|
|
17236
|
-
clearTimeout(clickTimerRef.current);
|
|
17237
|
-
clickTimerRef.current = void 0;
|
|
17238
|
-
toggleFullscreen();
|
|
17239
|
-
} else {
|
|
17240
|
-
clickTimerRef.current = setTimeout(() => {
|
|
17241
|
-
clickTimerRef.current = void 0;
|
|
17242
|
-
setIsPlaying((prev) => !prev);
|
|
17243
|
-
}, 250);
|
|
17244
|
-
}
|
|
17245
|
-
}, [hasStarted, toggleFullscreen]);
|
|
17246
|
-
const handleContainerTouchEnd = _react.useCallback.call(void 0, (e) => {
|
|
17247
|
-
if (e.target.closest(".video-controls-bar")) return;
|
|
17248
|
-
isTouchRef.current = true;
|
|
17249
|
-
if (!hasStarted) return;
|
|
17250
|
-
handleTouchToggle();
|
|
17251
|
-
}, [hasStarted, handleTouchToggle]);
|
|
17252
|
-
const extractedPoster = useVideoFirstFramePoster(url, !lazyMount && !hasStarted && !poster);
|
|
17253
|
-
const effectivePoster = poster || extractedPoster || void 0;
|
|
17254
|
-
const posterBgColor = _chunkWX7PT5C7cjs.useImageEdgeColor.call(void 0, effectivePoster);
|
|
17255
|
-
_react.useEffect.call(void 0, () => {
|
|
17256
|
-
setMounted(true);
|
|
17257
|
-
return () => {
|
|
17258
|
-
clearTimeout(clickTimerRef.current);
|
|
17259
|
-
clearTimeout(hideTimeoutRef.current);
|
|
17260
|
-
clearTimeout(iosFullscreenTimerRef.current);
|
|
17261
|
-
clearTimeout(lazyMountFailureTimerRef.current);
|
|
17262
|
-
isDraggingRef.current = false;
|
|
17263
|
-
if (dragListenersRef.current) {
|
|
17264
|
-
document.removeEventListener("mousemove", dragListenersRef.current.move);
|
|
17265
|
-
document.removeEventListener("mouseup", dragListenersRef.current.up);
|
|
17266
|
-
dragListenersRef.current = null;
|
|
17267
|
-
}
|
|
17268
|
-
};
|
|
17269
|
-
}, []);
|
|
17270
|
-
_react.useEffect.call(void 0, () => {
|
|
17271
|
-
if (!hasStarted) return;
|
|
17272
|
-
const video = _optionalChain([playerRef, 'access', _477 => _477.current, 'optionalAccess', _478 => _478.getInternalPlayer, 'call', _479 => _479()]);
|
|
17273
|
-
if (!video) return;
|
|
17274
|
-
const onBeginFS = () => activateCaptionTracks(video);
|
|
17275
|
-
video.addEventListener("webkitbeginfullscreen", onBeginFS);
|
|
17276
|
-
return () => video.removeEventListener("webkitbeginfullscreen", onBeginFS);
|
|
17277
|
-
}, [hasStarted, activateCaptionTracks]);
|
|
17278
|
-
const handleError = _react.useCallback.call(void 0, () => setHasError(true), []);
|
|
17279
|
-
const handlePlay = _react.useCallback.call(void 0, () => {
|
|
17280
|
-
setIsPlaying(true);
|
|
17281
|
-
setHasStarted(true);
|
|
17282
|
-
}, []);
|
|
17283
|
-
const handlePause = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
|
|
17284
|
-
const handleEnded = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
|
|
17285
|
-
const handlePlayClick = _react.useCallback.call(void 0, () => {
|
|
17286
|
-
if (lazyMount) {
|
|
17287
|
-
const native = _optionalChain([playerRef, 'access', _480 => _480.current, 'optionalAccess', _481 => _481.getInternalPlayer, 'call', _482 => _482()]);
|
|
17288
|
-
if (native instanceof HTMLVideoElement) {
|
|
17289
|
-
native.play().catch(() => {
|
|
17290
|
-
clearTimeout(lazyMountFailureTimerRef.current);
|
|
17291
|
-
lazyMountFailureTimerRef.current = setTimeout(() => {
|
|
17292
|
-
if (native.paused && native.error) setHasError(true);
|
|
17293
|
-
}, LAZY_MOUNT_PLAY_FAILURE_GRACE_MS);
|
|
17294
|
-
});
|
|
17295
|
-
} else if (process.env.NODE_ENV !== "production") {
|
|
17296
|
-
console.warn("[VideoPlayer] lazyMount sync play(): no native HTMLVideoElement yet");
|
|
17297
|
-
}
|
|
17298
|
-
}
|
|
17299
|
-
setHasStarted(true);
|
|
17300
|
-
setIsPlaying(true);
|
|
17301
|
-
}, [lazyMount]);
|
|
17302
|
-
const handleProgress = _react.useCallback.call(void 0, ({ played: p, loaded: l, playedSeconds }) => {
|
|
17303
|
-
setPlayed(p);
|
|
17304
|
-
setLoaded(l);
|
|
17305
|
-
updateTime(playedSeconds);
|
|
17306
|
-
}, [updateTime]);
|
|
17307
|
-
const handleBuffer = _react.useCallback.call(void 0, () => setIsBuffering(true), []);
|
|
17308
|
-
const handleBufferEnd = _react.useCallback.call(void 0, () => setIsBuffering(false), []);
|
|
17309
|
-
if (!mounted) {
|
|
17310
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `video-player-container ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17311
|
-
"div",
|
|
17312
|
-
{
|
|
17313
|
-
className: "video-wrapper relative w-full",
|
|
17314
|
-
style: useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
|
|
17315
|
-
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" }) }) })
|
|
17316
|
-
}
|
|
17317
|
-
) });
|
|
17318
|
-
}
|
|
17319
|
-
if (hasError) {
|
|
17320
|
-
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: [
|
|
17321
|
-
/* @__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" }) }),
|
|
17322
|
-
/* @__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" }),
|
|
17323
|
-
/* @__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." })
|
|
17324
|
-
] }) });
|
|
17325
|
-
}
|
|
17326
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `video-player-container ${className}`, children: [
|
|
17327
|
-
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 }),
|
|
17328
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17329
|
-
"div",
|
|
17330
|
-
{
|
|
17331
|
-
ref: containerRef,
|
|
17332
|
-
tabIndex: 0,
|
|
17333
|
-
role: "region",
|
|
17334
|
-
"aria-label": title || "Video player",
|
|
17335
|
-
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" : ""}`,
|
|
17336
|
-
style: isFullscreen ? { width: "100%", height: "100%" } : useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
|
|
17337
|
-
onMouseMove: handleMouseMove,
|
|
17338
|
-
onMouseLeave: startHideTimer,
|
|
17339
|
-
onTouchEnd: handleContainerTouchEnd,
|
|
17340
|
-
onClick: handleContainerClick,
|
|
17341
|
-
children: [
|
|
17342
|
-
!hasStarted && !hasError && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 cursor-pointer group z-20", onClick: handlePlayClick, children: [
|
|
17343
|
-
effectivePoster && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17344
|
-
"img",
|
|
17345
|
-
{
|
|
17346
|
-
src: effectivePoster,
|
|
17347
|
-
alt: title || "Video thumbnail",
|
|
17348
|
-
className: "w-full h-full object-contain rounded-md",
|
|
17349
|
-
style: { backgroundColor: posterBgColor }
|
|
17350
|
-
}
|
|
17351
|
-
),
|
|
17352
|
-
/* @__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" }) }) })
|
|
17353
|
-
] }),
|
|
17354
|
-
/* @__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,
|
|
17355
|
-
_reactplayer2.default,
|
|
17356
|
-
{
|
|
17357
|
-
ref: playerRef,
|
|
17358
|
-
url,
|
|
17359
|
-
width: "100%",
|
|
17360
|
-
height: "100%",
|
|
17361
|
-
controls: false,
|
|
17362
|
-
playing: isPlaying,
|
|
17363
|
-
playbackRate,
|
|
17364
|
-
loop,
|
|
17365
|
-
muted: isMuted,
|
|
17366
|
-
volume: isMuted ? 0 : volume,
|
|
17367
|
-
onError: handleError,
|
|
17368
|
-
onPlay: handlePlay,
|
|
17369
|
-
onPause: handlePause,
|
|
17370
|
-
onEnded: handleEnded,
|
|
17371
|
-
onDuration: setDuration,
|
|
17372
|
-
onBuffer: handleBuffer,
|
|
17373
|
-
onBufferEnd: handleBufferEnd,
|
|
17374
|
-
onProgress: handleProgress,
|
|
17375
|
-
progressInterval: 200,
|
|
17376
|
-
config: { file: { attributes: { controlsList: "nodownload", playsInline: true, preload: lazyMount && !hasStarted ? "none" : hasStarted ? "auto" : "metadata" } } },
|
|
17377
|
-
light: false,
|
|
17378
|
-
playsinline: true
|
|
17379
|
-
}
|
|
17380
|
-
) }),
|
|
17381
|
-
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" }) }),
|
|
17382
|
-
captionsEnabled && activeText && hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17383
|
-
"div",
|
|
17384
|
-
{
|
|
17385
|
-
className: "absolute left-[5%] right-[5%] text-center pointer-events-none z-10 transition-[bottom] duration-300 ease-in-out",
|
|
17386
|
-
style: { bottom: showControls || !isPlaying ? 52 : 12 },
|
|
17387
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17388
|
-
"span",
|
|
17389
|
-
{
|
|
17390
|
-
className: "inline-block bg-black/80 text-white leading-relaxed px-4 py-1.5 rounded font-sans font-medium whitespace-pre-line",
|
|
17391
|
-
style: {
|
|
17392
|
-
fontSize: isFullscreen ? "clamp(20px, 3.3vh, 42px)" : "clamp(15px, 3.3cqw, 26px)",
|
|
17393
|
-
maxWidth: "90%",
|
|
17394
|
-
textShadow: "0 1px 4px rgba(0,0,0,0.6)",
|
|
17395
|
-
WebkitTextStroke: "0.3px rgba(0,0,0,0.3)"
|
|
17396
|
-
},
|
|
17397
|
-
children: activeText
|
|
17398
|
-
}
|
|
17399
|
-
)
|
|
17400
|
-
}
|
|
17401
|
-
),
|
|
17402
|
-
hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17403
|
-
"div",
|
|
17404
|
-
{
|
|
17405
|
-
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"}`,
|
|
17406
|
-
onTouchEnd: (e) => {
|
|
17407
|
-
e.stopPropagation();
|
|
17408
|
-
startHideTimer();
|
|
17409
|
-
},
|
|
17410
|
-
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: [
|
|
17411
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17412
|
-
"div",
|
|
17413
|
-
{
|
|
17414
|
-
className: "group/seek relative w-full h-6 cursor-pointer mb-0.5 flex items-center",
|
|
17415
|
-
ref: progressBarRef,
|
|
17416
|
-
role: "slider",
|
|
17417
|
-
"aria-label": "Video progress",
|
|
17418
|
-
"aria-valuenow": Math.round(played * 100),
|
|
17419
|
-
"aria-valuetext": `${formatTime(played * duration)} of ${formatTime(duration)}`,
|
|
17420
|
-
"aria-valuemin": 0,
|
|
17421
|
-
"aria-valuemax": 100,
|
|
17422
|
-
tabIndex: 0,
|
|
17423
|
-
onMouseDown: handleProgressMouseDown,
|
|
17424
|
-
onTouchStart: handleProgressTouchStart,
|
|
17425
|
-
onTouchMove: handleProgressTouchMove,
|
|
17426
|
-
onTouchEnd: (e) => e.stopPropagation(),
|
|
17427
|
-
onMouseMove: handleProgressHover,
|
|
17428
|
-
onMouseLeave: () => setSeekPreview(null),
|
|
17429
|
-
onKeyDown: handleProgressKeyDown,
|
|
17430
|
-
children: [
|
|
17431
|
-
seekPreview && duration > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17432
|
-
"div",
|
|
17433
|
-
{
|
|
17434
|
-
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",
|
|
17435
|
-
style: { left: seekPreview.x },
|
|
17436
|
-
children: formatTime(seekPreview.fraction * duration)
|
|
17437
|
-
}
|
|
17438
|
-
),
|
|
17439
|
-
/* @__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: [
|
|
17440
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-white/20 rounded-full" }),
|
|
17441
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17442
|
-
"div",
|
|
17443
|
-
{
|
|
17444
|
-
className: "absolute inset-y-0 left-0 bg-white/40 rounded-full transition-all",
|
|
17445
|
-
style: { width: `${loaded * 100}%` }
|
|
17446
|
-
}
|
|
17447
|
-
),
|
|
17448
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17449
|
-
"div",
|
|
17450
|
-
{
|
|
17451
|
-
className: "absolute inset-y-0 left-0 bg-white rounded-full",
|
|
17452
|
-
style: { width: `${played * 100}%` }
|
|
17453
|
-
}
|
|
17454
|
-
)
|
|
17455
|
-
] }),
|
|
17456
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17457
|
-
"div",
|
|
17458
|
-
{
|
|
17459
|
-
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",
|
|
17460
|
-
style: { left: `calc(${played * 100}% - 6px)` }
|
|
17461
|
-
}
|
|
17462
|
-
)
|
|
17463
|
-
]
|
|
17464
|
-
}
|
|
17465
|
-
),
|
|
17466
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between h-9", children: [
|
|
17467
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
|
|
17468
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17469
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17470
|
-
{
|
|
17471
|
-
variant: "transparent",
|
|
17472
|
-
size: "icon",
|
|
17473
|
-
onClick: (e) => {
|
|
17474
|
-
e.stopPropagation();
|
|
17475
|
-
setIsPlaying((prev) => !prev);
|
|
17476
|
-
},
|
|
17477
|
-
className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
|
|
17478
|
-
"aria-label": isPlaying ? "Pause (Space)" : "Play (Space)",
|
|
17479
|
-
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" })
|
|
17480
|
-
}
|
|
17481
|
-
),
|
|
17482
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "group/vol flex items-center", children: [
|
|
17483
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17484
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17485
|
-
{
|
|
17486
|
-
variant: "transparent",
|
|
17487
|
-
size: "icon",
|
|
17488
|
-
onClick: (e) => {
|
|
17489
|
-
e.stopPropagation();
|
|
17490
|
-
toggleMute();
|
|
17491
|
-
},
|
|
17492
|
-
className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
|
|
17493
|
-
"aria-label": isMuted ? "Unmute (M)" : "Mute (M)",
|
|
17494
|
-
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" })
|
|
17495
|
-
}
|
|
17496
|
-
),
|
|
17497
|
-
/* @__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,
|
|
17498
|
-
_chunkBJTOSUT4cjs.Input,
|
|
17499
|
-
{
|
|
17500
|
-
type: "range",
|
|
17501
|
-
min: 0,
|
|
17502
|
-
max: 1,
|
|
17503
|
-
step: 0.01,
|
|
17504
|
-
value: isMuted ? 0 : volume,
|
|
17505
|
-
onChange: handleVolumeChange,
|
|
17506
|
-
onClick: (e) => e.stopPropagation(),
|
|
17507
|
-
"aria-label": "Volume",
|
|
17508
|
-
className: "w-14 ml-1",
|
|
17509
|
-
style: { background: `linear-gradient(to right, white ${(isMuted ? 0 : volume) * 100}%, rgba(255,255,255,0.3) ${(isMuted ? 0 : volume) * 100}%)` }
|
|
17510
|
-
}
|
|
17511
|
-
) })
|
|
17512
|
-
] }),
|
|
17513
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-white/70 text-[12px] font-mono tabular-nums select-none ml-1.5", children: [
|
|
17514
|
-
formatTime(played * duration),
|
|
17515
|
-
" / ",
|
|
17516
|
-
formatTime(duration)
|
|
17517
|
-
] })
|
|
17518
|
-
] }),
|
|
17519
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
|
|
17520
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
17521
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17522
|
-
{
|
|
17523
|
-
variant: "transparent",
|
|
17524
|
-
size: "small-legacy",
|
|
17525
|
-
onClick: (e) => {
|
|
17526
|
-
e.stopPropagation();
|
|
17527
|
-
cycleSpeed();
|
|
17528
|
-
},
|
|
17529
|
-
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"}`,
|
|
17530
|
-
title: "Playback speed",
|
|
17531
|
-
"aria-label": `Playback speed ${playbackRate}x`,
|
|
17532
|
-
children: [
|
|
17533
|
-
playbackRate,
|
|
17534
|
-
"x"
|
|
17535
|
-
]
|
|
17536
|
-
}
|
|
17537
|
-
),
|
|
17538
|
-
hasCues && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17539
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17540
|
-
{
|
|
17541
|
-
variant: "transparent",
|
|
17542
|
-
size: "small-legacy",
|
|
17543
|
-
onClick: (e) => {
|
|
17544
|
-
e.stopPropagation();
|
|
17545
|
-
setCaptionsEnabled((prev) => !prev);
|
|
17546
|
-
},
|
|
17547
|
-
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"}`,
|
|
17548
|
-
style: { borderBottom: captionsEnabled ? "2px solid white" : "2px solid transparent" },
|
|
17549
|
-
title: captionsEnabled ? "Hide captions (C)" : "Show captions (C)",
|
|
17550
|
-
"aria-label": captionsEnabled ? "Hide captions" : "Show captions",
|
|
17551
|
-
children: "CC"
|
|
17552
|
-
}
|
|
17553
|
-
),
|
|
17554
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
17555
|
-
_chunkBJTOSUT4cjs.Button,
|
|
17556
|
-
{
|
|
17557
|
-
variant: "transparent",
|
|
17558
|
-
size: "icon",
|
|
17559
|
-
onClick: (e) => {
|
|
17560
|
-
e.stopPropagation();
|
|
17561
|
-
toggleFullscreen();
|
|
17562
|
-
},
|
|
17563
|
-
className: "h-9 w-9 text-white/80 hover:text-white hover:bg-white/10",
|
|
17564
|
-
title: isFullscreen ? "Exit fullscreen (F)" : "Fullscreen (F)",
|
|
17565
|
-
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
17566
|
-
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" })
|
|
17567
|
-
}
|
|
17568
|
-
)
|
|
17569
|
-
] })
|
|
17570
|
-
] })
|
|
17571
|
-
] })
|
|
17572
|
-
}
|
|
17573
|
-
)
|
|
17574
|
-
]
|
|
17575
|
-
}
|
|
17576
|
-
)
|
|
17577
|
-
] });
|
|
17578
|
-
};
|
|
17579
|
-
|
|
17580
16672
|
// src/components/layout/page-container.tsx
|
|
17581
16673
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
17582
16674
|
|
|
@@ -17603,7 +16695,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
17603
16695
|
e.preventDefault();
|
|
17604
16696
|
return;
|
|
17605
16697
|
}
|
|
17606
|
-
_optionalChain([action, 'access',
|
|
16698
|
+
_optionalChain([action, 'access', _414 => _414.onClick, 'optionalCall', _415 => _415()]);
|
|
17607
16699
|
},
|
|
17608
16700
|
[action]
|
|
17609
16701
|
);
|
|
@@ -17644,13 +16736,13 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17644
16736
|
const activate = _react.useCallback.call(void 0, () => {
|
|
17645
16737
|
if (item.disabled) return;
|
|
17646
16738
|
if (item.type === "checkbox") {
|
|
17647
|
-
_optionalChain([item, 'access',
|
|
17648
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16739
|
+
_optionalChain([item, 'access', _416 => _416.onClick, 'optionalCall', _417 => _417()]);
|
|
16740
|
+
_optionalChain([onItemClick, 'optionalCall', _418 => _418(item)]);
|
|
17649
16741
|
return;
|
|
17650
16742
|
}
|
|
17651
16743
|
if (item.type === "submenu") return;
|
|
17652
|
-
_optionalChain([item, 'access',
|
|
17653
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16744
|
+
_optionalChain([item, 'access', _419 => _419.onClick, 'optionalCall', _420 => _420()]);
|
|
16745
|
+
_optionalChain([onItemClick, 'optionalCall', _421 => _421(item)]);
|
|
17654
16746
|
}, [item, onItemClick]);
|
|
17655
16747
|
const handleClick = _react.useCallback.call(void 0,
|
|
17656
16748
|
(e) => {
|
|
@@ -17676,8 +16768,8 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17676
16768
|
e.stopPropagation();
|
|
17677
16769
|
return;
|
|
17678
16770
|
}
|
|
17679
|
-
_optionalChain([item, 'access',
|
|
17680
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16771
|
+
_optionalChain([item, 'access', _422 => _422.onClick, 'optionalCall', _423 => _423()]);
|
|
16772
|
+
_optionalChain([onItemClick, 'optionalCall', _424 => _424(item)]);
|
|
17681
16773
|
},
|
|
17682
16774
|
[item, onItemClick]
|
|
17683
16775
|
);
|
|
@@ -17832,7 +16924,7 @@ var ActionsMenuDropdown = ({
|
|
|
17832
16924
|
const [open, setOpen] = _react.useState.call(void 0, false);
|
|
17833
16925
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
17834
16926
|
(item) => {
|
|
17835
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
16927
|
+
_optionalChain([onItemClick, 'optionalCall', _425 => _425(item)]);
|
|
17836
16928
|
if (item.type !== "checkbox" && item.type !== "submenu") {
|
|
17837
16929
|
setOpen(false);
|
|
17838
16930
|
}
|
|
@@ -18003,7 +17095,7 @@ function IconButtonsVariant({
|
|
|
18003
17095
|
}) {
|
|
18004
17096
|
const desktopActions = actions.filter((a) => !a.showOnlyMobile);
|
|
18005
17097
|
const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
|
|
18006
|
-
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]);
|
|
18007
17099
|
const singleAction = isSingleAction ? actions[0] : null;
|
|
18008
17100
|
const useSingleActionMobile = isSingleAction && !hasMenuActions;
|
|
18009
17101
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -18433,14 +17525,14 @@ function ReleaseDetailPage({
|
|
|
18433
17525
|
releaseVersion
|
|
18434
17526
|
] })
|
|
18435
17527
|
] }) }),
|
|
18436
|
-
/* @__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,
|
|
18437
17529
|
StatusBadge,
|
|
18438
17530
|
{
|
|
18439
|
-
text: (tag.name || _optionalChain([tag, 'access',
|
|
17531
|
+
text: (tag.name || _optionalChain([tag, 'access', _431 => _431.blog_tags, 'optionalAccess', _432 => _432.name]) || "").toUpperCase(),
|
|
18440
17532
|
variant: "card",
|
|
18441
17533
|
className: "bg-ods-card border border-ods-border"
|
|
18442
17534
|
},
|
|
18443
|
-
tag.id || _optionalChain([tag, 'access',
|
|
17535
|
+
tag.id || _optionalChain([tag, 'access', _433 => _433.blog_tags, 'optionalAccess', _434 => _434.id])
|
|
18444
17536
|
))]) }),
|
|
18445
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: [
|
|
18446
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: [
|
|
@@ -18459,15 +17551,15 @@ function ReleaseDetailPage({
|
|
|
18459
17551
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18460
17552
|
SquareAvatar,
|
|
18461
17553
|
{
|
|
18462
|
-
src: _optionalChain([author, 'optionalAccess',
|
|
18463
|
-
alt: _optionalChain([author, 'optionalAccess',
|
|
18464
|
-
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"),
|
|
18465
17557
|
size: "md",
|
|
18466
17558
|
variant: "round"
|
|
18467
17559
|
}
|
|
18468
17560
|
),
|
|
18469
17561
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
|
|
18470
|
-
/* @__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" }),
|
|
18471
17563
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
|
|
18472
17564
|
] })
|
|
18473
17565
|
] })
|
|
@@ -18482,7 +17574,7 @@ function ReleaseDetailPage({
|
|
|
18482
17574
|
setGalleryOpen(true);
|
|
18483
17575
|
}
|
|
18484
17576
|
},
|
|
18485
|
-
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" })
|
|
18486
17578
|
},
|
|
18487
17579
|
mediaItem.id || index
|
|
18488
17580
|
)) }),
|
|
@@ -18498,16 +17590,36 @@ function ReleaseDetailPage({
|
|
|
18498
17590
|
videoBites,
|
|
18499
17591
|
bitesTitle: "Video Clips",
|
|
18500
17592
|
filterPublishedBites: true,
|
|
18501
|
-
srtContent: _optionalChain([release, 'optionalAccess',
|
|
18502
|
-
captionsUrl: _optionalChain([release, 'optionalAccess',
|
|
17593
|
+
srtContent: _optionalChain([release, 'optionalAccess', _439 => _439.srt_content]),
|
|
17594
|
+
captionsUrl: _optionalChain([release, 'optionalAccess', _440 => _440.captionsUrl])
|
|
18503
17595
|
}
|
|
18504
17596
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
18505
|
-
youtubeUrl && (
|
|
18506
|
-
|
|
18507
|
-
|
|
18508
|
-
|
|
18509
|
-
|
|
18510
|
-
|
|
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
|
+
)
|
|
18511
17623
|
] }),
|
|
18512
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 }) }),
|
|
18513
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: [
|
|
@@ -18586,7 +17698,7 @@ function ReleaseDetailPage({
|
|
|
18586
17698
|
}
|
|
18587
17699
|
)
|
|
18588
17700
|
] }),
|
|
18589
|
-
(_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: [
|
|
18590
17702
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
|
|
18591
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: [
|
|
18592
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: [
|
|
@@ -18615,7 +17727,7 @@ function ReleaseDetailPage({
|
|
|
18615
17727
|
{
|
|
18616
17728
|
href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
|
|
18617
17729
|
className: "text-h4 text-[#ffc008] hover:underline",
|
|
18618
|
-
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"
|
|
18619
17731
|
}
|
|
18620
17732
|
),
|
|
18621
17733
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
@@ -18714,7 +17826,7 @@ function InfoCard({ data, className = "" }) {
|
|
|
18714
17826
|
);
|
|
18715
17827
|
}
|
|
18716
17828
|
function InfoCardValueRow({ label, value, showLabel, copyable, copyAriaLabel }) {
|
|
18717
|
-
const { copy, copied } =
|
|
17829
|
+
const { copy, copied } = _chunkALW3D72Ocjs.useCopyToClipboard.call(void 0, );
|
|
18718
17830
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-6 items-center gap-[var(--spacing-system-xs)] self-stretch w-full", children: [
|
|
18719
17831
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4 text-ods-text-primary whitespace-nowrap", children: showLabel ? label : "" }),
|
|
18720
17832
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 h-px bg-ods-divider" }),
|
|
@@ -18761,7 +17873,7 @@ function InfoRow({ label, value, icon }) {
|
|
|
18761
17873
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
18762
17874
|
|
|
18763
17875
|
|
|
18764
|
-
var InputTrigger =
|
|
17876
|
+
var InputTrigger = React47.forwardRef(
|
|
18765
17877
|
({ selectedLabel, placeholder, startIcon, endIcon, invalid, className, disabled, ...props }, ref) => {
|
|
18766
17878
|
const isPlaceholder = selectedLabel === void 0 || selectedLabel === null || selectedLabel === "";
|
|
18767
17879
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18825,8 +17937,8 @@ function MediaTypeSelector({
|
|
|
18825
17937
|
className,
|
|
18826
17938
|
disabled
|
|
18827
17939
|
}) {
|
|
18828
|
-
const [key, setKey] =
|
|
18829
|
-
|
|
17940
|
+
const [key, setKey] = React48.useState(0);
|
|
17941
|
+
React48.useEffect(() => {
|
|
18830
17942
|
setKey((prev) => prev + 1);
|
|
18831
17943
|
}, [value]);
|
|
18832
17944
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -18926,7 +18038,7 @@ var ProgressBar = ({
|
|
|
18926
18038
|
mobileHeight = 8,
|
|
18927
18039
|
inverted = false
|
|
18928
18040
|
}) => {
|
|
18929
|
-
const isMdUp = _nullishCoalesce(
|
|
18041
|
+
const isMdUp = _nullishCoalesce(_chunkALW3D72Ocjs.useMdUp.call(void 0, ), () => ( true));
|
|
18930
18042
|
const effectiveSegmentWidth = isMdUp ? segmentWidth : mobileSegmentWidth;
|
|
18931
18043
|
const effectiveHeight = isMdUp ? height : mobileHeight;
|
|
18932
18044
|
const containerRef = _react.useRef.call(void 0, null);
|
|
@@ -18982,7 +18094,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
18982
18094
|
|
|
18983
18095
|
var _reactradiogroup = require('@radix-ui/react-radio-group'); var RadioGroupPrimitive = _interopRequireWildcard(_reactradiogroup);
|
|
18984
18096
|
|
|
18985
|
-
var RadioGroup =
|
|
18097
|
+
var RadioGroup = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18986
18098
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18987
18099
|
RadioGroupPrimitive.Root,
|
|
18988
18100
|
{
|
|
@@ -18993,7 +18105,7 @@ var RadioGroup = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
18993
18105
|
);
|
|
18994
18106
|
});
|
|
18995
18107
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
18996
|
-
var RadioGroupItem =
|
|
18108
|
+
var RadioGroupItem = React50.forwardRef(({ className, ...props }, ref) => {
|
|
18997
18109
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
18998
18110
|
RadioGroupPrimitive.Item,
|
|
18999
18111
|
{
|
|
@@ -19014,7 +18126,7 @@ var RadioGroupItem = React51.forwardRef(({ className, ...props }, ref) => {
|
|
|
19014
18126
|
);
|
|
19015
18127
|
});
|
|
19016
18128
|
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
19017
|
-
var RadioGroupBlock =
|
|
18129
|
+
var RadioGroupBlock = React50.forwardRef(
|
|
19018
18130
|
({ className, options, variant = "separated", error, itemClassName, disabled, ...props }, ref) => {
|
|
19019
18131
|
const isGrouped = variant === "grouped";
|
|
19020
18132
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "relative flex w-full flex-col", className), children: [
|
|
@@ -19128,7 +18240,7 @@ function TagsInput({
|
|
|
19128
18240
|
badgeClassName,
|
|
19129
18241
|
label
|
|
19130
18242
|
}) {
|
|
19131
|
-
const [inputValue, setInputValue] =
|
|
18243
|
+
const [inputValue, setInputValue] = React51.useState("");
|
|
19132
18244
|
const handleAddTag = () => {
|
|
19133
18245
|
const trimmedValue = inputValue.trim();
|
|
19134
18246
|
if (!trimmedValue) return;
|
|
@@ -19234,19 +18346,19 @@ function TagsManager({
|
|
|
19234
18346
|
disabled = false,
|
|
19235
18347
|
className
|
|
19236
18348
|
}) {
|
|
19237
|
-
const [open, setOpen] =
|
|
19238
|
-
const [search, setSearch] =
|
|
19239
|
-
const [editingId, setEditingId] =
|
|
19240
|
-
const [editingName, setEditingName] =
|
|
19241
|
-
const editInputRef =
|
|
19242
|
-
const inputRef =
|
|
19243
|
-
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);
|
|
19244
18356
|
const selectedTags = tags.filter((t) => selectedIds.includes(t.id));
|
|
19245
18357
|
const filtered = tags.filter(
|
|
19246
18358
|
(t) => t.name.toLowerCase().includes(search.toLowerCase())
|
|
19247
18359
|
);
|
|
19248
18360
|
const showCreateOption = onCreateTag && search.trim() && !tags.some((t) => t.name.toLowerCase() === search.trim().toLowerCase());
|
|
19249
|
-
const toggleTag =
|
|
18361
|
+
const toggleTag = React52.useCallback(
|
|
19250
18362
|
(id) => {
|
|
19251
18363
|
if (selectedIds.includes(id)) {
|
|
19252
18364
|
onChange(selectedIds.filter((i) => i !== id));
|
|
@@ -19256,32 +18368,32 @@ function TagsManager({
|
|
|
19256
18368
|
},
|
|
19257
18369
|
[selectedIds, onChange]
|
|
19258
18370
|
);
|
|
19259
|
-
const handleCreate =
|
|
18371
|
+
const handleCreate = React52.useCallback(async () => {
|
|
19260
18372
|
if (!onCreateTag) return;
|
|
19261
18373
|
const name = search.trim();
|
|
19262
18374
|
if (!name) return;
|
|
19263
18375
|
const result = await onCreateTag(name);
|
|
19264
|
-
if (_optionalChain([result, 'optionalAccess',
|
|
18376
|
+
if (_optionalChain([result, 'optionalAccess', _453 => _453.id])) {
|
|
19265
18377
|
onChange([...selectedIds, result.id]);
|
|
19266
18378
|
setSearch("");
|
|
19267
18379
|
}
|
|
19268
18380
|
}, [search, onCreateTag, selectedIds, onChange]);
|
|
19269
|
-
const startEdit =
|
|
18381
|
+
const startEdit = React52.useCallback((id, name) => {
|
|
19270
18382
|
setEditingId(id);
|
|
19271
18383
|
setEditingName(name);
|
|
19272
|
-
setTimeout(() => _optionalChain([editInputRef, 'access',
|
|
18384
|
+
setTimeout(() => _optionalChain([editInputRef, 'access', _454 => _454.current, 'optionalAccess', _455 => _455.focus, 'call', _456 => _456()]), 0);
|
|
19273
18385
|
}, []);
|
|
19274
|
-
const confirmEdit =
|
|
18386
|
+
const confirmEdit = React52.useCallback(async () => {
|
|
19275
18387
|
if (!onUpdateTag || !editingId || !editingName.trim()) return;
|
|
19276
18388
|
await onUpdateTag(editingId, editingName.trim());
|
|
19277
18389
|
setEditingId(null);
|
|
19278
18390
|
setEditingName("");
|
|
19279
18391
|
}, [editingId, editingName, onUpdateTag]);
|
|
19280
|
-
const cancelEdit =
|
|
18392
|
+
const cancelEdit = React52.useCallback(() => {
|
|
19281
18393
|
setEditingId(null);
|
|
19282
18394
|
setEditingName("");
|
|
19283
18395
|
}, []);
|
|
19284
|
-
const handleDelete =
|
|
18396
|
+
const handleDelete = React52.useCallback(
|
|
19285
18397
|
async (id) => {
|
|
19286
18398
|
if (!onDeleteTag) return;
|
|
19287
18399
|
await onDeleteTag(id);
|
|
@@ -19291,12 +18403,12 @@ function TagsManager({
|
|
|
19291
18403
|
},
|
|
19292
18404
|
[onDeleteTag, selectedIds, onChange]
|
|
19293
18405
|
);
|
|
19294
|
-
const handleClearAll =
|
|
18406
|
+
const handleClearAll = React52.useCallback(
|
|
19295
18407
|
(e) => {
|
|
19296
18408
|
e.stopPropagation();
|
|
19297
18409
|
onChange([]);
|
|
19298
18410
|
setSearch("");
|
|
19299
|
-
_optionalChain([inputRef, 'access',
|
|
18411
|
+
_optionalChain([inputRef, 'access', _457 => _457.current, 'optionalAccess', _458 => _458.focus, 'call', _459 => _459()]);
|
|
19300
18412
|
},
|
|
19301
18413
|
[onChange]
|
|
19302
18414
|
);
|
|
@@ -19395,10 +18507,10 @@ function TagsManager({
|
|
|
19395
18507
|
align: "start",
|
|
19396
18508
|
onOpenAutoFocus: (e) => {
|
|
19397
18509
|
e.preventDefault();
|
|
19398
|
-
_optionalChain([inputRef, 'access',
|
|
18510
|
+
_optionalChain([inputRef, 'access', _460 => _460.current, 'optionalAccess', _461 => _461.focus, 'call', _462 => _462()]);
|
|
19399
18511
|
},
|
|
19400
18512
|
onInteractOutside: (e) => {
|
|
19401
|
-
if (_optionalChain([containerRef, 'access',
|
|
18513
|
+
if (_optionalChain([containerRef, 'access', _463 => _463.current, 'optionalAccess', _464 => _464.contains, 'call', _465 => _465(e.target)])) {
|
|
19402
18514
|
e.preventDefault();
|
|
19403
18515
|
}
|
|
19404
18516
|
},
|
|
@@ -19592,7 +18704,7 @@ var _reactalertdialog = require('@radix-ui/react-alert-dialog'); var AlertDialog
|
|
|
19592
18704
|
var AlertDialog = AlertDialogPrimitive.Root;
|
|
19593
18705
|
var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
|
|
19594
18706
|
var AlertDialogPortal = AlertDialogPrimitive.Portal;
|
|
19595
|
-
var AlertDialogOverlay =
|
|
18707
|
+
var AlertDialogOverlay = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19596
18708
|
AlertDialogPrimitive.Overlay,
|
|
19597
18709
|
{
|
|
19598
18710
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -19604,7 +18716,7 @@ var AlertDialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19604
18716
|
}
|
|
19605
18717
|
));
|
|
19606
18718
|
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
|
|
19607
|
-
var AlertDialogContent =
|
|
18719
|
+
var AlertDialogContent = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AlertDialogPortal, { children: [
|
|
19608
18720
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AlertDialogOverlay, {}),
|
|
19609
18721
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19610
18722
|
AlertDialogPrimitive.Content,
|
|
@@ -19647,7 +18759,7 @@ var AlertDialogFooter = ({
|
|
|
19647
18759
|
}
|
|
19648
18760
|
);
|
|
19649
18761
|
AlertDialogFooter.displayName = "AlertDialogFooter";
|
|
19650
|
-
var AlertDialogTitle =
|
|
18762
|
+
var AlertDialogTitle = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19651
18763
|
AlertDialogPrimitive.Title,
|
|
19652
18764
|
{
|
|
19653
18765
|
ref,
|
|
@@ -19656,7 +18768,7 @@ var AlertDialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
19656
18768
|
}
|
|
19657
18769
|
));
|
|
19658
18770
|
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
|
|
19659
|
-
var AlertDialogDescription =
|
|
18771
|
+
var AlertDialogDescription = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19660
18772
|
AlertDialogPrimitive.Description,
|
|
19661
18773
|
{
|
|
19662
18774
|
ref,
|
|
@@ -19665,7 +18777,7 @@ var AlertDialogDescription = React54.forwardRef(({ className, ...props }, ref) =
|
|
|
19665
18777
|
}
|
|
19666
18778
|
));
|
|
19667
18779
|
AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
|
|
19668
|
-
var AlertDialogAction =
|
|
18780
|
+
var AlertDialogAction = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19669
18781
|
AlertDialogPrimitive.Action,
|
|
19670
18782
|
{
|
|
19671
18783
|
ref,
|
|
@@ -19674,7 +18786,7 @@ var AlertDialogAction = React54.forwardRef(({ className, ...props }, ref) => /*
|
|
|
19674
18786
|
}
|
|
19675
18787
|
));
|
|
19676
18788
|
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
|
|
19677
|
-
var AlertDialogCancel =
|
|
18789
|
+
var AlertDialogCancel = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19678
18790
|
AlertDialogPrimitive.Cancel,
|
|
19679
18791
|
{
|
|
19680
18792
|
ref,
|
|
@@ -19702,7 +18814,7 @@ var Dialog = DialogPrimitive3.Root;
|
|
|
19702
18814
|
var DialogTrigger = DialogPrimitive3.Trigger;
|
|
19703
18815
|
var DialogPortal = DialogPrimitive3.Portal;
|
|
19704
18816
|
var DialogClose = DialogPrimitive3.Close;
|
|
19705
|
-
var DialogOverlay =
|
|
18817
|
+
var DialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19706
18818
|
DialogPrimitive3.Overlay,
|
|
19707
18819
|
{
|
|
19708
18820
|
ref,
|
|
@@ -19714,7 +18826,7 @@ var DialogOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
19714
18826
|
}
|
|
19715
18827
|
));
|
|
19716
18828
|
DialogOverlay.displayName = DialogPrimitive3.Overlay.displayName;
|
|
19717
|
-
var DialogContent =
|
|
18829
|
+
var DialogContent = React54.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPortal, { children: [
|
|
19718
18830
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogOverlay, {}),
|
|
19719
18831
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19720
18832
|
DialogPrimitive3.Content,
|
|
@@ -19740,7 +18852,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.
|
|
|
19740
18852
|
DialogHeader.displayName = "DialogHeader";
|
|
19741
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 });
|
|
19742
18854
|
DialogFooter.displayName = "DialogFooter";
|
|
19743
|
-
var DialogTitle =
|
|
18855
|
+
var DialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19744
18856
|
DialogPrimitive3.Title,
|
|
19745
18857
|
{
|
|
19746
18858
|
ref,
|
|
@@ -19749,7 +18861,7 @@ var DialogTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
19749
18861
|
}
|
|
19750
18862
|
));
|
|
19751
18863
|
DialogTitle.displayName = DialogPrimitive3.Title.displayName;
|
|
19752
|
-
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 }));
|
|
19753
18865
|
DialogDescription.displayName = DialogPrimitive3.Description.displayName;
|
|
19754
18866
|
|
|
19755
18867
|
// src/components/ui/modal.tsx
|
|
@@ -19757,7 +18869,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19757
18869
|
|
|
19758
18870
|
|
|
19759
18871
|
|
|
19760
|
-
var Modal =
|
|
18872
|
+
var Modal = React55.forwardRef(
|
|
19761
18873
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19762
18874
|
_react.useEffect.call(void 0, () => {
|
|
19763
18875
|
const handleKeyDown = (event) => {
|
|
@@ -19801,11 +18913,11 @@ var Modal = React56.forwardRef(
|
|
|
19801
18913
|
}
|
|
19802
18914
|
);
|
|
19803
18915
|
Modal.displayName = "Modal";
|
|
19804
|
-
var ModalContent =
|
|
18916
|
+
var ModalContent = React55.forwardRef(
|
|
19805
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 })
|
|
19806
18918
|
);
|
|
19807
18919
|
ModalContent.displayName = "ModalContent";
|
|
19808
|
-
var ModalHeader =
|
|
18920
|
+
var ModalHeader = React55.forwardRef(
|
|
19809
18921
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19810
18922
|
"div",
|
|
19811
18923
|
{
|
|
@@ -19816,7 +18928,7 @@ var ModalHeader = React56.forwardRef(
|
|
|
19816
18928
|
)
|
|
19817
18929
|
);
|
|
19818
18930
|
ModalHeader.displayName = "ModalHeader";
|
|
19819
|
-
var ModalTitle =
|
|
18931
|
+
var ModalTitle = React55.forwardRef(
|
|
19820
18932
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19821
18933
|
"h2",
|
|
19822
18934
|
{
|
|
@@ -19827,7 +18939,7 @@ var ModalTitle = React56.forwardRef(
|
|
|
19827
18939
|
)
|
|
19828
18940
|
);
|
|
19829
18941
|
ModalTitle.displayName = "ModalTitle";
|
|
19830
|
-
var ModalFooter =
|
|
18942
|
+
var ModalFooter = React55.forwardRef(
|
|
19831
18943
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19832
18944
|
"div",
|
|
19833
18945
|
{
|
|
@@ -19844,8 +18956,8 @@ ModalFooter.displayName = "ModalFooter";
|
|
|
19844
18956
|
|
|
19845
18957
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
19846
18958
|
|
|
19847
|
-
var ModalContext =
|
|
19848
|
-
var Modal2 =
|
|
18959
|
+
var ModalContext = React56.createContext({});
|
|
18960
|
+
var Modal2 = React56.forwardRef(
|
|
19849
18961
|
({ isOpen, onClose, children, className }, ref) => {
|
|
19850
18962
|
_react.useEffect.call(void 0, () => {
|
|
19851
18963
|
const handleKeyDown = (event) => {
|
|
@@ -19894,13 +19006,13 @@ var Modal2 = React57.forwardRef(
|
|
|
19894
19006
|
}
|
|
19895
19007
|
);
|
|
19896
19008
|
Modal2.displayName = "ModalV2";
|
|
19897
|
-
var ModalContent2 =
|
|
19009
|
+
var ModalContent2 = React56.forwardRef(
|
|
19898
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 })
|
|
19899
19011
|
);
|
|
19900
19012
|
ModalContent2.displayName = "ModalV2Content";
|
|
19901
|
-
var ModalHeader2 =
|
|
19013
|
+
var ModalHeader2 = React56.forwardRef(
|
|
19902
19014
|
({ children, className }, ref) => {
|
|
19903
|
-
const { onClose } =
|
|
19015
|
+
const { onClose } = React56.useContext(ModalContext);
|
|
19904
19016
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
19905
19017
|
"div",
|
|
19906
19018
|
{
|
|
@@ -19923,7 +19035,7 @@ var ModalHeader2 = React57.forwardRef(
|
|
|
19923
19035
|
}
|
|
19924
19036
|
);
|
|
19925
19037
|
ModalHeader2.displayName = "ModalV2Header";
|
|
19926
|
-
var ModalTitle2 =
|
|
19038
|
+
var ModalTitle2 = React56.forwardRef(
|
|
19927
19039
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19928
19040
|
"h2",
|
|
19929
19041
|
{
|
|
@@ -19934,7 +19046,7 @@ var ModalTitle2 = React57.forwardRef(
|
|
|
19934
19046
|
)
|
|
19935
19047
|
);
|
|
19936
19048
|
ModalTitle2.displayName = "ModalV2Title";
|
|
19937
|
-
var ModalFooter2 =
|
|
19049
|
+
var ModalFooter2 = React56.forwardRef(
|
|
19938
19050
|
({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19939
19051
|
"div",
|
|
19940
19052
|
{
|
|
@@ -19951,7 +19063,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
19951
19063
|
|
|
19952
19064
|
var _reactseparator = require('@radix-ui/react-separator'); var SeparatorPrimitive = _interopRequireWildcard(_reactseparator);
|
|
19953
19065
|
|
|
19954
|
-
var Separator2 =
|
|
19066
|
+
var Separator2 = React57.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19955
19067
|
SeparatorPrimitive.Root,
|
|
19956
19068
|
{
|
|
19957
19069
|
ref,
|
|
@@ -19974,7 +19086,7 @@ var Sheet = SheetPrimitive.Root;
|
|
|
19974
19086
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
19975
19087
|
var SheetClose = SheetPrimitive.Close;
|
|
19976
19088
|
var SheetPortal = SheetPrimitive.Portal;
|
|
19977
|
-
var SheetOverlay =
|
|
19089
|
+
var SheetOverlay = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
19978
19090
|
SheetPrimitive.Overlay,
|
|
19979
19091
|
{
|
|
19980
19092
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -20002,7 +19114,7 @@ var sheetVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
20002
19114
|
}
|
|
20003
19115
|
}
|
|
20004
19116
|
);
|
|
20005
|
-
var SheetContent =
|
|
19117
|
+
var SheetContent = React58.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetPortal, { children: [
|
|
20006
19118
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetOverlay, {}),
|
|
20007
19119
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20008
19120
|
SheetPrimitive.Content,
|
|
@@ -20049,7 +19161,7 @@ var SheetFooter = ({
|
|
|
20049
19161
|
}
|
|
20050
19162
|
);
|
|
20051
19163
|
SheetFooter.displayName = "SheetFooter";
|
|
20052
|
-
var SheetTitle =
|
|
19164
|
+
var SheetTitle = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20053
19165
|
SheetPrimitive.Title,
|
|
20054
19166
|
{
|
|
20055
19167
|
ref,
|
|
@@ -20058,7 +19170,7 @@ var SheetTitle = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20058
19170
|
}
|
|
20059
19171
|
));
|
|
20060
19172
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
20061
|
-
var SheetDescription =
|
|
19173
|
+
var SheetDescription = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20062
19174
|
SheetPrimitive.Description,
|
|
20063
19175
|
{
|
|
20064
19176
|
ref,
|
|
@@ -20074,7 +19186,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
20074
19186
|
var _reacttabs = require('@radix-ui/react-tabs'); var TabsPrimitive = _interopRequireWildcard(_reacttabs);
|
|
20075
19187
|
|
|
20076
19188
|
var Tabs = TabsPrimitive.Root;
|
|
20077
|
-
var TabsList =
|
|
19189
|
+
var TabsList = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20078
19190
|
TabsPrimitive.List,
|
|
20079
19191
|
{
|
|
20080
19192
|
ref,
|
|
@@ -20086,7 +19198,7 @@ var TabsList = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
20086
19198
|
}
|
|
20087
19199
|
));
|
|
20088
19200
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
20089
|
-
var TabsTrigger =
|
|
19201
|
+
var TabsTrigger = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20090
19202
|
TabsPrimitive.Trigger,
|
|
20091
19203
|
{
|
|
20092
19204
|
ref,
|
|
@@ -20098,7 +19210,7 @@ var TabsTrigger = React60.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
20098
19210
|
}
|
|
20099
19211
|
));
|
|
20100
19212
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
20101
|
-
var TabsContent =
|
|
19213
|
+
var TabsContent = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20102
19214
|
TabsPrimitive.Content,
|
|
20103
19215
|
{
|
|
20104
19216
|
ref,
|
|
@@ -20118,9 +19230,9 @@ var _reactaccordion = require('@radix-ui/react-accordion'); var AccordionPrimiti
|
|
|
20118
19230
|
|
|
20119
19231
|
|
|
20120
19232
|
var Accordion = AccordionPrimitive.Root;
|
|
20121
|
-
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 }));
|
|
20122
19234
|
AccordionItem.displayName = "AccordionItem";
|
|
20123
|
-
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,
|
|
20124
19236
|
AccordionPrimitive.Trigger,
|
|
20125
19237
|
{
|
|
20126
19238
|
ref,
|
|
@@ -20136,7 +19248,7 @@ var AccordionTrigger = React61.forwardRef(({ className, children, ...props }, re
|
|
|
20136
19248
|
}
|
|
20137
19249
|
) }));
|
|
20138
19250
|
AccordionTrigger.displayName = "AccordionTrigger";
|
|
20139
|
-
var AccordionContent =
|
|
19251
|
+
var AccordionContent = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20140
19252
|
AccordionPrimitive.Content,
|
|
20141
19253
|
{
|
|
20142
19254
|
ref,
|
|
@@ -20156,9 +19268,9 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
20156
19268
|
var _reactslot = require('@radix-ui/react-slot');
|
|
20157
19269
|
|
|
20158
19270
|
|
|
20159
|
-
var Breadcrumb =
|
|
19271
|
+
var Breadcrumb = React61.forwardRef(({ ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
20160
19272
|
Breadcrumb.displayName = "Breadcrumb";
|
|
20161
|
-
var BreadcrumbList =
|
|
19273
|
+
var BreadcrumbList = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20162
19274
|
"ol",
|
|
20163
19275
|
{
|
|
20164
19276
|
ref,
|
|
@@ -20170,7 +19282,7 @@ var BreadcrumbList = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20170
19282
|
}
|
|
20171
19283
|
));
|
|
20172
19284
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
20173
|
-
var BreadcrumbItem =
|
|
19285
|
+
var BreadcrumbItem = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20174
19286
|
"li",
|
|
20175
19287
|
{
|
|
20176
19288
|
ref,
|
|
@@ -20179,7 +19291,7 @@ var BreadcrumbItem = React62.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20179
19291
|
}
|
|
20180
19292
|
));
|
|
20181
19293
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
20182
|
-
var BreadcrumbLink =
|
|
19294
|
+
var BreadcrumbLink = React61.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
20183
19295
|
const Comp = asChild ? _reactslot.Slot : "a";
|
|
20184
19296
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20185
19297
|
Comp,
|
|
@@ -20191,7 +19303,7 @@ var BreadcrumbLink = React62.forwardRef(({ asChild, className, ...props }, ref)
|
|
|
20191
19303
|
);
|
|
20192
19304
|
});
|
|
20193
19305
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
20194
|
-
var BreadcrumbPage =
|
|
19306
|
+
var BreadcrumbPage = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20195
19307
|
"span",
|
|
20196
19308
|
{
|
|
20197
19309
|
ref,
|
|
@@ -20247,7 +19359,7 @@ var MenubarGroup = MenubarPrimitive.Group;
|
|
|
20247
19359
|
var MenubarPortal = MenubarPrimitive.Portal;
|
|
20248
19360
|
var MenubarSub = MenubarPrimitive.Sub;
|
|
20249
19361
|
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
20250
|
-
var Menubar =
|
|
19362
|
+
var Menubar = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20251
19363
|
MenubarPrimitive.Root,
|
|
20252
19364
|
{
|
|
20253
19365
|
ref,
|
|
@@ -20259,7 +19371,7 @@ var Menubar = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
20259
19371
|
}
|
|
20260
19372
|
));
|
|
20261
19373
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
20262
|
-
var MenubarTrigger =
|
|
19374
|
+
var MenubarTrigger = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20263
19375
|
MenubarPrimitive.Trigger,
|
|
20264
19376
|
{
|
|
20265
19377
|
ref,
|
|
@@ -20271,7 +19383,7 @@ var MenubarTrigger = React63.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
20271
19383
|
}
|
|
20272
19384
|
));
|
|
20273
19385
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
20274
|
-
var MenubarSubTrigger =
|
|
19386
|
+
var MenubarSubTrigger = React62.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20275
19387
|
MenubarPrimitive.SubTrigger,
|
|
20276
19388
|
{
|
|
20277
19389
|
ref,
|
|
@@ -20288,7 +19400,7 @@ var MenubarSubTrigger = React63.forwardRef(({ className, inset, children, ...pro
|
|
|
20288
19400
|
}
|
|
20289
19401
|
));
|
|
20290
19402
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
20291
|
-
var MenubarSubContent =
|
|
19403
|
+
var MenubarSubContent = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20292
19404
|
MenubarPrimitive.SubContent,
|
|
20293
19405
|
{
|
|
20294
19406
|
ref,
|
|
@@ -20300,7 +19412,7 @@ var MenubarSubContent = React63.forwardRef(({ className, ...props }, ref) => /*
|
|
|
20300
19412
|
}
|
|
20301
19413
|
));
|
|
20302
19414
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
20303
|
-
var MenubarContent =
|
|
19415
|
+
var MenubarContent = React62.forwardRef(
|
|
20304
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,
|
|
20305
19417
|
MenubarPrimitive.Content,
|
|
20306
19418
|
{
|
|
@@ -20317,7 +19429,7 @@ var MenubarContent = React63.forwardRef(
|
|
|
20317
19429
|
) })
|
|
20318
19430
|
);
|
|
20319
19431
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
20320
|
-
var MenubarItem =
|
|
19432
|
+
var MenubarItem = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20321
19433
|
MenubarPrimitive.Item,
|
|
20322
19434
|
{
|
|
20323
19435
|
ref,
|
|
@@ -20330,7 +19442,7 @@ var MenubarItem = React63.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
20330
19442
|
}
|
|
20331
19443
|
));
|
|
20332
19444
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
20333
|
-
var MenubarCheckboxItem =
|
|
19445
|
+
var MenubarCheckboxItem = React62.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20334
19446
|
MenubarPrimitive.CheckboxItem,
|
|
20335
19447
|
{
|
|
20336
19448
|
ref,
|
|
@@ -20347,7 +19459,7 @@ var MenubarCheckboxItem = React63.forwardRef(({ className, children, checked, ..
|
|
|
20347
19459
|
}
|
|
20348
19460
|
));
|
|
20349
19461
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
20350
|
-
var MenubarRadioItem =
|
|
19462
|
+
var MenubarRadioItem = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20351
19463
|
MenubarPrimitive.RadioItem,
|
|
20352
19464
|
{
|
|
20353
19465
|
ref,
|
|
@@ -20363,7 +19475,7 @@ var MenubarRadioItem = React63.forwardRef(({ className, children, ...props }, re
|
|
|
20363
19475
|
}
|
|
20364
19476
|
));
|
|
20365
19477
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
20366
|
-
var MenubarLabel =
|
|
19478
|
+
var MenubarLabel = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20367
19479
|
MenubarPrimitive.Label,
|
|
20368
19480
|
{
|
|
20369
19481
|
ref,
|
|
@@ -20376,7 +19488,7 @@ var MenubarLabel = React63.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
20376
19488
|
}
|
|
20377
19489
|
));
|
|
20378
19490
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
20379
|
-
var MenubarSeparator =
|
|
19491
|
+
var MenubarSeparator = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20380
19492
|
MenubarPrimitive.Separator,
|
|
20381
19493
|
{
|
|
20382
19494
|
ref,
|
|
@@ -20409,7 +19521,7 @@ var _reactnavigationmenu = require('@radix-ui/react-navigation-menu'); var Navig
|
|
|
20409
19521
|
|
|
20410
19522
|
|
|
20411
19523
|
|
|
20412
|
-
var NavigationMenu =
|
|
19524
|
+
var NavigationMenu = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20413
19525
|
NavigationMenuPrimitive.Root,
|
|
20414
19526
|
{
|
|
20415
19527
|
ref,
|
|
@@ -20425,7 +19537,7 @@ var NavigationMenu = React64.forwardRef(({ className, children, ...props }, ref)
|
|
|
20425
19537
|
}
|
|
20426
19538
|
));
|
|
20427
19539
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
20428
|
-
var NavigationMenuList =
|
|
19540
|
+
var NavigationMenuList = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20429
19541
|
NavigationMenuPrimitive.List,
|
|
20430
19542
|
{
|
|
20431
19543
|
ref,
|
|
@@ -20441,7 +19553,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
20441
19553
|
var navigationMenuTriggerStyle = _classvarianceauthority.cva.call(void 0,
|
|
20442
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"
|
|
20443
19555
|
);
|
|
20444
|
-
var NavigationMenuTrigger =
|
|
19556
|
+
var NavigationMenuTrigger = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
20445
19557
|
NavigationMenuPrimitive.Trigger,
|
|
20446
19558
|
{
|
|
20447
19559
|
ref,
|
|
@@ -20461,7 +19573,7 @@ var NavigationMenuTrigger = React64.forwardRef(({ className, children, ...props
|
|
|
20461
19573
|
}
|
|
20462
19574
|
));
|
|
20463
19575
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
20464
|
-
var NavigationMenuContent =
|
|
19576
|
+
var NavigationMenuContent = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20465
19577
|
NavigationMenuPrimitive.Content,
|
|
20466
19578
|
{
|
|
20467
19579
|
ref,
|
|
@@ -20474,7 +19586,7 @@ var NavigationMenuContent = React64.forwardRef(({ className, ...props }, ref) =>
|
|
|
20474
19586
|
));
|
|
20475
19587
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
20476
19588
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
20477
|
-
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,
|
|
20478
19590
|
NavigationMenuPrimitive.Viewport,
|
|
20479
19591
|
{
|
|
20480
19592
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
@@ -20486,7 +19598,7 @@ var NavigationMenuViewport = React64.forwardRef(({ className, ...props }, ref) =
|
|
|
20486
19598
|
}
|
|
20487
19599
|
) }));
|
|
20488
19600
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
20489
|
-
var NavigationMenuIndicator =
|
|
19601
|
+
var NavigationMenuIndicator = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20490
19602
|
NavigationMenuPrimitive.Indicator,
|
|
20491
19603
|
{
|
|
20492
19604
|
ref,
|
|
@@ -20545,19 +19657,19 @@ function TabNavigation({
|
|
|
20545
19657
|
const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
|
|
20546
19658
|
const getInitialTab = () => {
|
|
20547
19659
|
if (isUrlSyncEnabled) {
|
|
20548
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
19660
|
+
const fromUrl = _optionalChain([searchParams, 'optionalAccess', _466 => _466.get, 'call', _467 => _467(paramName)]) || "";
|
|
20549
19661
|
if (validTabIds.has(fromUrl)) {
|
|
20550
19662
|
return fromUrl;
|
|
20551
19663
|
}
|
|
20552
19664
|
}
|
|
20553
|
-
return defaultTab || _optionalChain([tabs, 'access',
|
|
19665
|
+
return defaultTab || _optionalChain([tabs, 'access', _468 => _468[0], 'optionalAccess', _469 => _469.id]) || "";
|
|
20554
19666
|
};
|
|
20555
19667
|
const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
|
|
20556
19668
|
const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
|
|
20557
19669
|
_react.useEffect.call(void 0, () => {
|
|
20558
19670
|
if (!isUrlSyncEnabled) return;
|
|
20559
|
-
const fromUrl = _optionalChain([searchParams, 'optionalAccess',
|
|
20560
|
-
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]) || "";
|
|
20561
19673
|
if (nextTab !== internalActiveTab) {
|
|
20562
19674
|
setInternalActiveTab(nextTab);
|
|
20563
19675
|
}
|
|
@@ -20565,13 +19677,13 @@ function TabNavigation({
|
|
|
20565
19677
|
const handleTabChange = (tabId) => {
|
|
20566
19678
|
if (isUrlSyncEnabled) {
|
|
20567
19679
|
setInternalActiveTab(tabId);
|
|
20568
|
-
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess',
|
|
19680
|
+
const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _474 => _474.toString, 'call', _475 => _475()]));
|
|
20569
19681
|
params.set(paramName, tabId);
|
|
20570
19682
|
const method = replaceState ? "replace" : "push";
|
|
20571
19683
|
router[method](`${pathname}?${params.toString()}`);
|
|
20572
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19684
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _476 => _476(tabId)]);
|
|
20573
19685
|
} else {
|
|
20574
|
-
_optionalChain([controlledOnTabChange, 'optionalCall',
|
|
19686
|
+
_optionalChain([controlledOnTabChange, 'optionalCall', _477 => _477(tabId)]);
|
|
20575
19687
|
}
|
|
20576
19688
|
};
|
|
20577
19689
|
const scrollRef = _react.useRef.call(void 0, null);
|
|
@@ -20659,7 +19771,7 @@ function TabNavigation({
|
|
|
20659
19771
|
var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
|
|
20660
19772
|
var getTabComponent = (tabs, tabId) => {
|
|
20661
19773
|
const tab = getTabById(tabs, tabId);
|
|
20662
|
-
return _optionalChain([tab, 'optionalAccess',
|
|
19774
|
+
return _optionalChain([tab, 'optionalAccess', _478 => _478.component]) || null;
|
|
20663
19775
|
};
|
|
20664
19776
|
|
|
20665
19777
|
// src/components/ui/alert.tsx
|
|
@@ -20681,7 +19793,7 @@ var alertVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
20681
19793
|
}
|
|
20682
19794
|
}
|
|
20683
19795
|
);
|
|
20684
|
-
var Alert =
|
|
19796
|
+
var Alert = React65.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20685
19797
|
"div",
|
|
20686
19798
|
{
|
|
20687
19799
|
ref,
|
|
@@ -20691,7 +19803,7 @@ var Alert = React66.forwardRef(({ className, variant, ...props }, ref) => /* @__
|
|
|
20691
19803
|
}
|
|
20692
19804
|
));
|
|
20693
19805
|
Alert.displayName = "Alert";
|
|
20694
|
-
var AlertTitle =
|
|
19806
|
+
var AlertTitle = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20695
19807
|
"h5",
|
|
20696
19808
|
{
|
|
20697
19809
|
ref,
|
|
@@ -20700,7 +19812,7 @@ var AlertTitle = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
20700
19812
|
}
|
|
20701
19813
|
));
|
|
20702
19814
|
AlertTitle.displayName = "AlertTitle";
|
|
20703
|
-
var AlertDescription =
|
|
19815
|
+
var AlertDescription = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20704
19816
|
"div",
|
|
20705
19817
|
{
|
|
20706
19818
|
ref,
|
|
@@ -20715,7 +19827,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
20715
19827
|
|
|
20716
19828
|
var _reactprogress = require('@radix-ui/react-progress'); var ProgressPrimitive = _interopRequireWildcard(_reactprogress);
|
|
20717
19829
|
|
|
20718
|
-
var Progress =
|
|
19830
|
+
var Progress = React66.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
20719
19831
|
ProgressPrimitive.Root,
|
|
20720
19832
|
{
|
|
20721
19833
|
ref,
|
|
@@ -20996,16 +20108,16 @@ function FilterModal({
|
|
|
20996
20108
|
};
|
|
20997
20109
|
const handleReset = () => {
|
|
20998
20110
|
onFilterChange({});
|
|
20999
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20111
|
+
_optionalChain([onTagsChange, 'optionalCall', _479 => _479([])]);
|
|
21000
20112
|
onClose();
|
|
21001
20113
|
};
|
|
21002
20114
|
const handleApply = () => {
|
|
21003
20115
|
onFilterChange(selectedFilters);
|
|
21004
|
-
_optionalChain([onTagsChange, 'optionalCall',
|
|
20116
|
+
_optionalChain([onTagsChange, 'optionalCall', _480 => _480(pendingTags)]);
|
|
21005
20117
|
onClose();
|
|
21006
20118
|
};
|
|
21007
20119
|
const getColumnDirection = (columnKey) => {
|
|
21008
|
-
return _optionalChain([sortConfig, 'optionalAccess',
|
|
20120
|
+
return _optionalChain([sortConfig, 'optionalAccess', _481 => _481.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
|
|
21009
20121
|
};
|
|
21010
20122
|
const hasSort = !!sortConfig && sortConfig.columns.length > 0;
|
|
21011
20123
|
const hasFilterGroups = filterGroups.length > 0;
|
|
@@ -21054,7 +20166,7 @@ function FilterModal({
|
|
|
21054
20166
|
{
|
|
21055
20167
|
column,
|
|
21056
20168
|
currentDirection: getColumnDirection(column.key),
|
|
21057
|
-
onSort: (direction) => _optionalChain([onSort, 'optionalCall',
|
|
20169
|
+
onSort: (direction) => _optionalChain([onSort, 'optionalCall', _482 => _482(column.key, direction)]),
|
|
21058
20170
|
onClear: onSortClear ? () => onSortClear(column.key) : void 0
|
|
21059
20171
|
},
|
|
21060
20172
|
column.key
|
|
@@ -21121,7 +20233,7 @@ function ListPageLayout({
|
|
|
21121
20233
|
}) {
|
|
21122
20234
|
const [mobileFilterOpen, setMobileFilterOpen] = _react.useState.call(void 0, false);
|
|
21123
20235
|
const [localSearchValue, setLocalSearchValue] = _react.useState.call(void 0, searchValue);
|
|
21124
|
-
const debouncedSearchValue =
|
|
20236
|
+
const debouncedSearchValue = _chunkALW3D72Ocjs.useDebounce.call(void 0, localSearchValue, 500);
|
|
21125
20237
|
_react.useEffect.call(void 0, () => {
|
|
21126
20238
|
setLocalSearchValue(searchValue);
|
|
21127
20239
|
}, [searchValue]);
|
|
@@ -21220,9 +20332,9 @@ function TitleBlock({
|
|
|
21220
20332
|
const [imageFailed, setImageFailed] = React33.default.useState(false);
|
|
21221
20333
|
React33.default.useEffect(() => {
|
|
21222
20334
|
setImageFailed(false);
|
|
21223
|
-
}, [_optionalChain([image, 'optionalAccess',
|
|
20335
|
+
}, [_optionalChain([image, 'optionalAccess', _483 => _483.src])]);
|
|
21224
20336
|
const showImageFallback = !!image && (imageFailed || !image.src);
|
|
21225
|
-
const initials = getInitials3(_optionalChain([image, 'optionalAccess',
|
|
20337
|
+
const initials = getInitials3(_optionalChain([image, 'optionalAccess', _484 => _484.alt]) || title);
|
|
21226
20338
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
21227
20339
|
"div",
|
|
21228
20340
|
{
|
|
@@ -21356,7 +20468,7 @@ var toggleVariants = _classvarianceauthority.cva.call(void 0,
|
|
|
21356
20468
|
}
|
|
21357
20469
|
}
|
|
21358
20470
|
);
|
|
21359
|
-
var Toggle =
|
|
20471
|
+
var Toggle = React69.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21360
20472
|
TogglePrimitive.Root,
|
|
21361
20473
|
{
|
|
21362
20474
|
ref,
|
|
@@ -21368,11 +20480,11 @@ Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
|
21368
20480
|
|
|
21369
20481
|
// src/components/toggle-group.tsx
|
|
21370
20482
|
|
|
21371
|
-
var ToggleGroupContext =
|
|
20483
|
+
var ToggleGroupContext = React70.createContext({
|
|
21372
20484
|
size: "default",
|
|
21373
20485
|
variant: "default"
|
|
21374
20486
|
});
|
|
21375
|
-
var ToggleGroup =
|
|
20487
|
+
var ToggleGroup = React70.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21376
20488
|
ToggleGroupPrimitive.Root,
|
|
21377
20489
|
{
|
|
21378
20490
|
ref,
|
|
@@ -21382,8 +20494,8 @@ var ToggleGroup = React71.forwardRef(({ className, variant, size, children, ...p
|
|
|
21382
20494
|
}
|
|
21383
20495
|
));
|
|
21384
20496
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
21385
|
-
var ToggleGroupItem =
|
|
21386
|
-
const context =
|
|
20497
|
+
var ToggleGroupItem = React70.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
|
|
20498
|
+
const context = React70.useContext(ToggleGroupContext);
|
|
21387
20499
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21388
20500
|
ToggleGroupPrimitive.Item,
|
|
21389
20501
|
{
|
|
@@ -21742,8 +20854,8 @@ function FloatingTooltip({
|
|
|
21742
20854
|
className,
|
|
21743
20855
|
delayDuration = 0
|
|
21744
20856
|
}) {
|
|
21745
|
-
const [isOpen, setIsOpen] =
|
|
21746
|
-
const arrowRef =
|
|
20857
|
+
const [isOpen, setIsOpen] = React73.useState(false);
|
|
20858
|
+
const arrowRef = React73.useRef(null);
|
|
21747
20859
|
const { refs, floatingStyles, context, placement, middlewareData } = _react2.useFloating.call(void 0, {
|
|
21748
20860
|
open: isOpen,
|
|
21749
20861
|
onOpenChange: setIsOpen,
|
|
@@ -21772,7 +20884,7 @@ function FloatingTooltip({
|
|
|
21772
20884
|
dismiss,
|
|
21773
20885
|
role
|
|
21774
20886
|
]);
|
|
21775
|
-
const parsedContent =
|
|
20887
|
+
const parsedContent = React73.useMemo(() => {
|
|
21776
20888
|
if (typeof content === "string") {
|
|
21777
20889
|
return parseColoredText(content);
|
|
21778
20890
|
}
|
|
@@ -22018,26 +21130,26 @@ function DeviceCard({
|
|
|
22018
21130
|
] }),
|
|
22019
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 })
|
|
22020
21132
|
] }),
|
|
22021
|
-
_optionalChain([actions, 'access',
|
|
21133
|
+
_optionalChain([actions, 'access', _485 => _485.moreButton, 'optionalAccess', _486 => _486.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
22022
21134
|
"div",
|
|
22023
21135
|
{
|
|
22024
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",
|
|
22025
21137
|
onClick: (e) => {
|
|
22026
21138
|
e.stopPropagation();
|
|
22027
|
-
_optionalChain([actions, 'access',
|
|
21139
|
+
_optionalChain([actions, 'access', _487 => _487.moreButton, 'optionalAccess', _488 => _488.onClick, 'optionalCall', _489 => _489()]);
|
|
22028
21140
|
},
|
|
22029
21141
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
|
|
22030
21142
|
}
|
|
22031
21143
|
),
|
|
22032
|
-
_optionalChain([actions, 'access',
|
|
22033
|
-
_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(
|
|
22034
21146
|
(action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
22035
21147
|
"div",
|
|
22036
21148
|
{
|
|
22037
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",
|
|
22038
21150
|
onClick: (e) => {
|
|
22039
21151
|
e.stopPropagation();
|
|
22040
|
-
_optionalChain([action, 'access',
|
|
21152
|
+
_optionalChain([action, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
|
|
22041
21153
|
},
|
|
22042
21154
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
|
|
22043
21155
|
},
|
|
@@ -22317,7 +21429,7 @@ function HighlightCardGrid({
|
|
|
22317
21429
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
22318
21430
|
|
|
22319
21431
|
|
|
22320
|
-
var IconsBlock =
|
|
21432
|
+
var IconsBlock = React74.forwardRef(
|
|
22321
21433
|
({ className, icons = [], size = "md", ...props }, ref) => {
|
|
22322
21434
|
const sizeClasses5 = {
|
|
22323
21435
|
sm: "h-4 w-4",
|
|
@@ -22396,7 +21508,7 @@ function MoreActionsMenu({
|
|
|
22396
21508
|
] });
|
|
22397
21509
|
const handleActivate = (e) => {
|
|
22398
21510
|
e.stopPropagation();
|
|
22399
|
-
if (!item.disabled) _optionalChain([item, 'access',
|
|
21511
|
+
if (!item.disabled) _optionalChain([item, 'access', _499 => _499.onClick, 'optionalCall', _500 => _500()]);
|
|
22400
21512
|
};
|
|
22401
21513
|
if (item.href) {
|
|
22402
21514
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -22546,7 +21658,7 @@ function OrganizationIcon({
|
|
|
22546
21658
|
backgroundStyle = "dark"
|
|
22547
21659
|
}) {
|
|
22548
21660
|
const { width, height } = imageSizeMap2[size];
|
|
22549
|
-
const initials = _optionalChain([organizationName, 'optionalAccess',
|
|
21661
|
+
const initials = _optionalChain([organizationName, 'optionalAccess', _501 => _501.substring, 'call', _502 => _502(0, 2)]) || "??";
|
|
22550
21662
|
const containerClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
22551
21663
|
sizeClasses3[size],
|
|
22552
21664
|
"rounded-lg flex items-center justify-center flex-shrink-0 relative",
|
|
@@ -22597,7 +21709,7 @@ function OrganizationCard({
|
|
|
22597
21709
|
const handleActionClick = (e) => {
|
|
22598
21710
|
e.preventDefault();
|
|
22599
21711
|
e.stopPropagation();
|
|
22600
|
-
_optionalChain([actionButton, 'optionalAccess',
|
|
21712
|
+
_optionalChain([actionButton, 'optionalAccess', _503 => _503.onClick, 'call', _504 => _504(organization, e)]);
|
|
22601
21713
|
};
|
|
22602
21714
|
const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
22603
21715
|
"div",
|
|
@@ -22692,7 +21804,7 @@ var LOG_SEVERITY_LABELS = {
|
|
|
22692
21804
|
|
|
22693
21805
|
// src/components/log-severity-dot.tsx
|
|
22694
21806
|
|
|
22695
|
-
var LogSeverityDot =
|
|
21807
|
+
var LogSeverityDot = React76.forwardRef(({ severity, size = "md", className }, ref) => {
|
|
22696
21808
|
const sizeClasses5 = {
|
|
22697
21809
|
sm: "w-4 h-4",
|
|
22698
21810
|
md: "w-6 h-6",
|
|
@@ -22754,7 +21866,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22754
21866
|
onKeyDown: (e) => {
|
|
22755
21867
|
if (e.key === "Enter" || e.key === " ") {
|
|
22756
21868
|
e.preventDefault();
|
|
22757
|
-
_optionalChain([onClick, 'optionalCall',
|
|
21869
|
+
_optionalChain([onClick, 'optionalCall', _505 => _505()]);
|
|
22758
21870
|
}
|
|
22759
21871
|
},
|
|
22760
21872
|
children: [
|
|
@@ -22763,7 +21875,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22763
21875
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-5 text-white", children: log.title }),
|
|
22764
21876
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
22765
21877
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['Azeret_Mono'] font-normal text-[13px] leading-4 text-[#888888] uppercase tracking-wider", children: formatTimestamp(log.timestamp) }),
|
|
22766
|
-
log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
21878
|
+
log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALW3D72Ocjs.ToolIcon, { toolType: log.toolType, size: 16 })
|
|
22767
21879
|
] })
|
|
22768
21880
|
] })
|
|
22769
21881
|
]
|
|
@@ -22782,7 +21894,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
|
|
|
22782
21894
|
)
|
|
22783
21895
|
] });
|
|
22784
21896
|
};
|
|
22785
|
-
var LogsList =
|
|
21897
|
+
var LogsList = React77.forwardRef(({
|
|
22786
21898
|
logs,
|
|
22787
21899
|
maxHeight = "400px",
|
|
22788
21900
|
showConnector = true,
|
|
@@ -22791,7 +21903,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22791
21903
|
emptyMessage = "No logs to display",
|
|
22792
21904
|
className
|
|
22793
21905
|
}, ref) => {
|
|
22794
|
-
const containerRef =
|
|
21906
|
+
const containerRef = React77.useRef(null);
|
|
22795
21907
|
const isFullHeight = maxHeight === "100%";
|
|
22796
21908
|
const getContainerStyles = () => {
|
|
22797
21909
|
if (isFullHeight) return void 0;
|
|
@@ -22855,7 +21967,7 @@ var LogsList = React78.forwardRef(({
|
|
|
22855
21967
|
log,
|
|
22856
21968
|
isLast: index === logs.length - 1,
|
|
22857
21969
|
showConnector,
|
|
22858
|
-
onClick: () => _optionalChain([onLogClick, 'optionalCall',
|
|
21970
|
+
onClick: () => _optionalChain([onLogClick, 'optionalCall', _506 => _506(log)])
|
|
22859
21971
|
},
|
|
22860
21972
|
log.id
|
|
22861
21973
|
))
|
|
@@ -22968,7 +22080,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
|
|
|
22968
22080
|
}
|
|
22969
22081
|
function ServiceCardRowItem({ row }) {
|
|
22970
22082
|
const [revealed, setRevealed] = _react.useState.call(void 0, false);
|
|
22971
|
-
const { copy, copied } =
|
|
22083
|
+
const { copy, copied } = _chunkALW3D72Ocjs.useCopyToClipboard.call(void 0, );
|
|
22972
22084
|
const actions = _react.useMemo.call(void 0, () => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
|
|
22973
22085
|
const displayValue = row.isSecret ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.value });
|
|
22974
22086
|
const handleCopy = () => copy(_nullishCoalesce(row.copyValue, () => ( row.value)));
|
|
@@ -23096,7 +22208,7 @@ var _reacttooltip = require('@radix-ui/react-tooltip'); var TooltipPrimitive = _
|
|
|
23096
22208
|
var TooltipProvider = TooltipPrimitive.Provider;
|
|
23097
22209
|
var Tooltip = TooltipPrimitive.Root;
|
|
23098
22210
|
var TooltipTrigger = TooltipPrimitive.Trigger;
|
|
23099
|
-
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,
|
|
23100
22212
|
TooltipPrimitive.Content,
|
|
23101
22213
|
{
|
|
23102
22214
|
ref,
|
|
@@ -23444,7 +22556,7 @@ function CursorPaginationSimple({
|
|
|
23444
22556
|
{
|
|
23445
22557
|
variant: "transparent",
|
|
23446
22558
|
size: "icon",
|
|
23447
|
-
onClick: () => _optionalChain([onPrevious, 'optionalCall',
|
|
22559
|
+
onClick: () => _optionalChain([onPrevious, 'optionalCall', _507 => _507("")]),
|
|
23448
22560
|
disabled: !hasPreviousPage || loading,
|
|
23449
22561
|
className: "h-8 w-8",
|
|
23450
22562
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
|
|
@@ -23456,7 +22568,7 @@ function CursorPaginationSimple({
|
|
|
23456
22568
|
{
|
|
23457
22569
|
variant: "transparent",
|
|
23458
22570
|
size: "icon",
|
|
23459
|
-
onClick: () => _optionalChain([onNext, 'optionalCall',
|
|
22571
|
+
onClick: () => _optionalChain([onNext, 'optionalCall', _508 => _508("")]),
|
|
23460
22572
|
disabled: !hasNextPage || loading,
|
|
23461
22573
|
className: "h-8 w-8",
|
|
23462
22574
|
rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
|
|
@@ -23516,7 +22628,7 @@ function TableColumnFilterDropdown({
|
|
|
23516
22628
|
placement = "bottom-start",
|
|
23517
22629
|
dropdownClassName = "min-w-[240px]"
|
|
23518
22630
|
}) {
|
|
23519
|
-
const activeCount = _optionalChain([filters, 'optionalAccess',
|
|
22631
|
+
const activeCount = _optionalChain([filters, 'optionalAccess', _509 => _509[columnKey], 'optionalAccess', _510 => _510.length]) || 0;
|
|
23520
22632
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23521
22633
|
FiltersDropdown,
|
|
23522
22634
|
{
|
|
@@ -23559,7 +22671,7 @@ function TableColumnFilterDropdown({
|
|
|
23559
22671
|
delete newFilters[columnKey];
|
|
23560
22672
|
onFilterChange(newFilters);
|
|
23561
22673
|
},
|
|
23562
|
-
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess',
|
|
22674
|
+
currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _511 => _511[columnKey]]) || [] },
|
|
23563
22675
|
placement,
|
|
23564
22676
|
dropdownClassName
|
|
23565
22677
|
}
|
|
@@ -23634,7 +22746,7 @@ function TableHeader({
|
|
|
23634
22746
|
}
|
|
23635
22747
|
return sortDirection === "asc" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Arrow01DownIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
23636
22748
|
};
|
|
23637
|
-
const isLgUp = _nullishCoalesce(
|
|
22749
|
+
const isLgUp = _nullishCoalesce(_chunkALW3D72Ocjs.useLgUp.call(void 0, ), () => ( false));
|
|
23638
22750
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
23639
22751
|
"div",
|
|
23640
22752
|
{
|
|
@@ -23856,7 +22968,7 @@ function TableRow({
|
|
|
23856
22968
|
const keys = column.key.split(".");
|
|
23857
22969
|
let value = item;
|
|
23858
22970
|
for (const key of keys) {
|
|
23859
|
-
value = _optionalChain([value, 'optionalAccess',
|
|
22971
|
+
value = _optionalChain([value, 'optionalAccess', _512 => _512[key]]);
|
|
23860
22972
|
}
|
|
23861
22973
|
if (value === null || value === void 0) {
|
|
23862
22974
|
return "-";
|
|
@@ -23926,7 +23038,7 @@ function TableRow({
|
|
|
23926
23038
|
// src/components/ui/table/table.tsx
|
|
23927
23039
|
|
|
23928
23040
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
23929
|
-
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess',
|
|
23041
|
+
const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _513 => _513.length])) || Boolean(renderRowActions);
|
|
23930
23042
|
const result = [...columns];
|
|
23931
23043
|
if (hasActions) {
|
|
23932
23044
|
const actionsColumn = {
|
|
@@ -24020,7 +23132,7 @@ function Table({
|
|
|
24020
23132
|
return rowKey(item);
|
|
24021
23133
|
}
|
|
24022
23134
|
const key = item[rowKey];
|
|
24023
|
-
return _optionalChain([key, 'optionalAccess',
|
|
23135
|
+
return _optionalChain([key, 'optionalAccess', _514 => _514.toString, 'call', _515 => _515()]) || index.toString();
|
|
24024
23136
|
};
|
|
24025
23137
|
const getRowClassName = (item, index) => {
|
|
24026
23138
|
if (typeof rowClassName === "function") {
|
|
@@ -24054,23 +23166,23 @@ function Table({
|
|
|
24054
23166
|
const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
|
|
24055
23167
|
const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
|
|
24056
23168
|
const sentinelRef = _react.useRef.call(void 0, null);
|
|
24057
|
-
const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess',
|
|
24058
|
-
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]);
|
|
24059
23171
|
_react.useEffect.call(void 0, () => {
|
|
24060
|
-
if (!_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23172
|
+
if (!_optionalChain([infiniteScroll, 'optionalAccess', _518 => _518.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
|
|
24061
23173
|
const sentinel = sentinelRef.current;
|
|
24062
23174
|
if (!sentinel) return;
|
|
24063
23175
|
const observer = new IntersectionObserver(
|
|
24064
23176
|
(entries) => {
|
|
24065
|
-
if (_optionalChain([entries, 'access',
|
|
24066
|
-
_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()]);
|
|
24067
23179
|
}
|
|
24068
23180
|
},
|
|
24069
23181
|
{ rootMargin: "200px" }
|
|
24070
23182
|
);
|
|
24071
23183
|
observer.observe(sentinel);
|
|
24072
23184
|
return () => observer.disconnect();
|
|
24073
|
-
}, [_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23185
|
+
}, [_optionalChain([infiniteScroll, 'optionalAccess', _523 => _523.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _524 => _524.isFetchingNextPage])]);
|
|
24074
23186
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
|
|
24075
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: [
|
|
24076
23188
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
|
|
@@ -24141,7 +23253,7 @@ function Table({
|
|
|
24141
23253
|
},
|
|
24142
23254
|
getRowKey(item, index)
|
|
24143
23255
|
)),
|
|
24144
|
-
_optionalChain([infiniteScroll, 'optionalAccess',
|
|
23256
|
+
_optionalChain([infiniteScroll, 'optionalAccess', _525 => _525.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24145
23257
|
TableCardSkeleton,
|
|
24146
23258
|
{
|
|
24147
23259
|
columns,
|
|
@@ -24150,7 +23262,7 @@ function Table({
|
|
|
24150
23262
|
hasChevron: Boolean(rowHref)
|
|
24151
23263
|
}
|
|
24152
23264
|
),
|
|
24153
|
-
_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" }),
|
|
24154
23266
|
!infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24155
23267
|
"div",
|
|
24156
23268
|
{
|
|
@@ -24508,7 +23620,7 @@ function QueryReportTable({
|
|
|
24508
23620
|
);
|
|
24509
23621
|
const handleExport = () => {
|
|
24510
23622
|
exportToCSV(data, columns, exportFilename);
|
|
24511
|
-
_optionalChain([onExport, 'optionalCall',
|
|
23623
|
+
_optionalChain([onExport, 'optionalCall', _527 => _527()]);
|
|
24512
23624
|
};
|
|
24513
23625
|
const tableMinWidth = columns.length * (columnWidth + 16);
|
|
24514
23626
|
const {
|
|
@@ -24524,7 +23636,7 @@ function QueryReportTable({
|
|
|
24524
23636
|
onThumbPointerDown,
|
|
24525
23637
|
onThumbPointerMove,
|
|
24526
23638
|
onThumbPointerUp
|
|
24527
|
-
} =
|
|
23639
|
+
} = _chunkALW3D72Ocjs.useHorizontalScrollbar.call(void 0, );
|
|
24528
23640
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col w-full", isCompact ? "gap-0" : "gap-6", className), children: [
|
|
24529
23641
|
!isCompact && (title || headerActions || showExport && data.length > 0) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-end justify-between pt-6", children: [
|
|
24530
23642
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "font-mono font-semibold text-[32px] leading-[40px] text-ods-text-primary", children: title }),
|
|
@@ -24681,7 +23793,7 @@ function DataTableColumnFilter({
|
|
|
24681
23793
|
align = "left"
|
|
24682
23794
|
}) {
|
|
24683
23795
|
const currentValue = column.getFilterValue();
|
|
24684
|
-
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess',
|
|
23796
|
+
const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _528 => _528.length]), () => ( 0));
|
|
24685
23797
|
const sections = _react.useMemo.call(void 0,
|
|
24686
23798
|
() => [
|
|
24687
23799
|
{
|
|
@@ -24755,13 +23867,13 @@ function DataTableHeader({
|
|
|
24755
23867
|
onSortChange
|
|
24756
23868
|
}) {
|
|
24757
23869
|
const table = useDataTableContext();
|
|
24758
|
-
const isLgUp = _nullishCoalesce(
|
|
23870
|
+
const isLgUp = _nullishCoalesce(_chunkALW3D72Ocjs.useLgUp.call(void 0, ), () => ( false));
|
|
24759
23871
|
const headerGroup = table.getHeaderGroups()[0];
|
|
24760
23872
|
if (!headerGroup) return null;
|
|
24761
23873
|
const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
|
|
24762
23874
|
if (header.isPlaceholder) return false;
|
|
24763
23875
|
if (isLgUp) return true;
|
|
24764
|
-
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]));
|
|
24765
23877
|
});
|
|
24766
23878
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24767
23879
|
"div",
|
|
@@ -24791,20 +23903,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24791
23903
|
if (header.isPlaceholder) return null;
|
|
24792
23904
|
const column = header.column;
|
|
24793
23905
|
const meta = column.columnDef.meta;
|
|
24794
|
-
const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess',
|
|
24795
|
-
const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess',
|
|
24796
|
-
const canSort = _optionalChain([meta, 'optionalAccess',
|
|
24797
|
-
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;
|
|
24798
23910
|
if (!isLgUp && !hasFilter) return null;
|
|
24799
23911
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24800
23912
|
"div",
|
|
24801
23913
|
{
|
|
24802
23914
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24803
23915
|
"flex items-stretch",
|
|
24804
|
-
isLgUp && (_optionalChain([meta, 'optionalAccess',
|
|
24805
|
-
_optionalChain([meta, 'optionalAccess',
|
|
23916
|
+
isLgUp && (_optionalChain([meta, 'optionalAccess', _537 => _537.width]) || "flex-1 min-w-0"),
|
|
23917
|
+
_optionalChain([meta, 'optionalAccess', _538 => _538.headerClassName]),
|
|
24806
23918
|
// Don't apply hide classes if column is filterable on tablet (keep filter accessible)
|
|
24807
|
-
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess',
|
|
23919
|
+
!(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _539 => _539.hideAt]))
|
|
24808
23920
|
),
|
|
24809
23921
|
children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
24810
23922
|
DataTableColumnFilter,
|
|
@@ -24823,7 +23935,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
|
|
|
24823
23935
|
isLgUp && alignJustify(align),
|
|
24824
23936
|
canSort && "group cursor-pointer"
|
|
24825
23937
|
),
|
|
24826
|
-
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall',
|
|
23938
|
+
onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _540 => _540(column.id)]) : void 0,
|
|
24827
23939
|
children: [
|
|
24828
23940
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
|
|
24829
23941
|
canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
|
|
@@ -24907,7 +24019,7 @@ function DataTableSkeleton({
|
|
|
24907
24019
|
}) {
|
|
24908
24020
|
const table = useDataTableContext();
|
|
24909
24021
|
const columns = table.getVisibleFlatColumns();
|
|
24910
|
-
const firstColumnId = _optionalChain([columns, 'access',
|
|
24022
|
+
const firstColumnId = _optionalChain([columns, 'access', _541 => _541[0], 'optionalAccess', _542 => _542.id]);
|
|
24911
24023
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
24912
24024
|
"div",
|
|
24913
24025
|
{
|
|
@@ -24931,7 +24043,7 @@ function DataTableSkeleton({
|
|
|
24931
24043
|
{
|
|
24932
24044
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
24933
24045
|
"flex flex-col justify-center shrink-0",
|
|
24934
|
-
_optionalChain([meta, 'optionalAccess',
|
|
24046
|
+
_optionalChain([meta, 'optionalAccess', _543 => _543.width]) || "flex-1"
|
|
24935
24047
|
),
|
|
24936
24048
|
children: [
|
|
24937
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)]" }),
|
|
@@ -24977,7 +24089,7 @@ function DataTableRowImpl({
|
|
|
24977
24089
|
(e) => {
|
|
24978
24090
|
const target = e.target;
|
|
24979
24091
|
if (target.closest("[data-no-row-click]")) return;
|
|
24980
|
-
_optionalChain([onClick, 'optionalCall',
|
|
24092
|
+
_optionalChain([onClick, 'optionalCall', _544 => _544(row.original)]);
|
|
24981
24093
|
},
|
|
24982
24094
|
[onClick, row.original]
|
|
24983
24095
|
);
|
|
@@ -25015,10 +24127,10 @@ function DataTableRowImpl({
|
|
|
25015
24127
|
{
|
|
25016
24128
|
className: _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
25017
24129
|
"flex flex-col overflow-hidden",
|
|
25018
|
-
alignJustify(_optionalChain([meta, 'optionalAccess',
|
|
25019
|
-
_optionalChain([meta, 'optionalAccess',
|
|
25020
|
-
_optionalChain([meta, 'optionalAccess',
|
|
25021
|
-
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]))
|
|
25022
24134
|
),
|
|
25023
24135
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
|
|
25024
24136
|
},
|
|
@@ -25064,7 +24176,7 @@ function DataTableBody({
|
|
|
25064
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: [
|
|
25065
24177
|
rows.map((row, index) => {
|
|
25066
24178
|
const item = row.original;
|
|
25067
|
-
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall',
|
|
24179
|
+
const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _549 => _549(item)]), () => ( void 0));
|
|
25068
24180
|
const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
|
|
25069
24181
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
25070
24182
|
DataTableRow,
|
|
@@ -25128,7 +24240,7 @@ function DataTableInfiniteFooter({
|
|
|
25128
24240
|
if (!sentinel) return;
|
|
25129
24241
|
const observer = new IntersectionObserver(
|
|
25130
24242
|
(entries) => {
|
|
25131
|
-
if (_optionalChain([entries, 'access',
|
|
24243
|
+
if (_optionalChain([entries, 'access', _550 => _550[0], 'optionalAccess', _551 => _551.isIntersecting])) onLoadMoreRef.current();
|
|
25132
24244
|
},
|
|
25133
24245
|
{ rootMargin }
|
|
25134
24246
|
);
|
|
@@ -25176,7 +24288,7 @@ function DataTableRowCount({
|
|
|
25176
24288
|
const table = useDataTableContext();
|
|
25177
24289
|
const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
|
|
25178
24290
|
if (hideWhenEmpty && count === 0) return null;
|
|
25179
|
-
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall',
|
|
24291
|
+
const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _552 => _552(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
|
|
25180
24292
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25181
24293
|
"span",
|
|
25182
24294
|
{
|
|
@@ -25270,12 +24382,12 @@ function PhoneInput({
|
|
|
25270
24382
|
const runValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25271
24383
|
if (!phone || digitCount(phone) === 0) {
|
|
25272
24384
|
setIsInvalid(false);
|
|
25273
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24385
|
+
_optionalChain([onValidationChange, 'optionalCall', _553 => _553(false)]);
|
|
25274
24386
|
return;
|
|
25275
24387
|
}
|
|
25276
24388
|
const invalid = !validatePhoneNumber(phone, countryCode);
|
|
25277
24389
|
setIsInvalid(invalid);
|
|
25278
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24390
|
+
_optionalChain([onValidationChange, 'optionalCall', _554 => _554(invalid)]);
|
|
25279
24391
|
}, [countryCode, digitCount, onValidationChange]);
|
|
25280
24392
|
const debouncedValidation = _react.useCallback.call(void 0, (phone) => {
|
|
25281
24393
|
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
@@ -25324,7 +24436,7 @@ function PhoneInput({
|
|
|
25324
24436
|
debouncedValidation(val);
|
|
25325
24437
|
} else if (digitCount(val) === 0) {
|
|
25326
24438
|
setIsInvalid(false);
|
|
25327
|
-
_optionalChain([onValidationChange, 'optionalCall',
|
|
24439
|
+
_optionalChain([onValidationChange, 'optionalCall', _555 => _555(false)]);
|
|
25328
24440
|
}
|
|
25329
24441
|
}
|
|
25330
24442
|
},
|
|
@@ -25402,12 +24514,12 @@ function SearchInput({
|
|
|
25402
24514
|
limitTags = "auto",
|
|
25403
24515
|
getLimitTagsText = (more) => `+${more}`
|
|
25404
24516
|
}) {
|
|
25405
|
-
const [internalValue, setInternalValue] =
|
|
24517
|
+
const [internalValue, setInternalValue] = React81.useState(defaultValue);
|
|
25406
24518
|
const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
|
|
25407
|
-
const debouncedValue =
|
|
25408
|
-
const [isOpen, setIsOpen] =
|
|
25409
|
-
const [highlightedIndex, setHighlightedIndex] =
|
|
25410
|
-
const containerRef =
|
|
24519
|
+
const debouncedValue = _chunkALW3D72Ocjs.useDebounce.call(void 0, currentValue, debounceMs);
|
|
24520
|
+
const [isOpen, setIsOpen] = React81.useState(false);
|
|
24521
|
+
const [highlightedIndex, setHighlightedIndex] = React81.useState(-1);
|
|
24522
|
+
const containerRef = React81.useRef(null);
|
|
25411
24523
|
const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
|
|
25412
24524
|
const {
|
|
25413
24525
|
visibleCount: rawVisibleCount,
|
|
@@ -25416,7 +24528,7 @@ function SearchInput({
|
|
|
25416
24528
|
textMeasureRef,
|
|
25417
24529
|
badgeRef,
|
|
25418
24530
|
inputRef
|
|
25419
|
-
} =
|
|
24531
|
+
} = _chunkALW3D72Ocjs.useAutoLimitTags.call(void 0, {
|
|
25420
24532
|
count: filterChips.length,
|
|
25421
24533
|
limitTags,
|
|
25422
24534
|
// When chips exist, pass empty placeholder so the hook only reserves input minWidth,
|
|
@@ -25424,14 +24536,14 @@ function SearchInput({
|
|
|
25424
24536
|
placeholder: filterChips.length > 0 ? "" : placeholder
|
|
25425
24537
|
});
|
|
25426
24538
|
const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
|
|
25427
|
-
const hiddenTagsRef =
|
|
25428
|
-
const hiddenTagsPopupRef =
|
|
25429
|
-
const [showHiddenTags, setShowHiddenTags] =
|
|
25430
|
-
|
|
24539
|
+
const hiddenTagsRef = React81.useRef(null);
|
|
24540
|
+
const hiddenTagsPopupRef = React81.useRef(null);
|
|
24541
|
+
const [showHiddenTags, setShowHiddenTags] = React81.useState(false);
|
|
24542
|
+
React81.useEffect(() => {
|
|
25431
24543
|
if (!showHiddenTags) return;
|
|
25432
24544
|
const handleClick = (e) => {
|
|
25433
24545
|
const target = e.target;
|
|
25434
|
-
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)])) {
|
|
25435
24547
|
setShowHiddenTags(false);
|
|
25436
24548
|
}
|
|
25437
24549
|
};
|
|
@@ -25441,7 +24553,7 @@ function SearchInput({
|
|
|
25441
24553
|
const hiddenCount = filterChips.length - visibleCount;
|
|
25442
24554
|
const visibleChips = filterChips.slice(0, visibleCount);
|
|
25443
24555
|
const hiddenChips = filterChips.slice(visibleCount);
|
|
25444
|
-
const { flatResults, groups } =
|
|
24556
|
+
const { flatResults, groups } = React81.useMemo(() => {
|
|
25445
24557
|
if (!groupBy) return { flatResults: results, groups: null };
|
|
25446
24558
|
const grouped = /* @__PURE__ */ new Map();
|
|
25447
24559
|
for (const r of results) {
|
|
@@ -25458,7 +24570,7 @@ function SearchInput({
|
|
|
25458
24570
|
const meetsMinQuery = debouncedValue.length >= minQueryLength;
|
|
25459
24571
|
const autoShow = meetsMinQuery;
|
|
25460
24572
|
const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
|
|
25461
|
-
|
|
24573
|
+
React81.useEffect(() => {
|
|
25462
24574
|
setHighlightedIndex(-1);
|
|
25463
24575
|
}, [flatResults.length]);
|
|
25464
24576
|
const handleChange = (e) => {
|
|
@@ -25479,10 +24591,10 @@ function SearchInput({
|
|
|
25479
24591
|
} else {
|
|
25480
24592
|
setInternalValue("");
|
|
25481
24593
|
}
|
|
25482
|
-
_optionalChain([inputRef, 'access',
|
|
24594
|
+
_optionalChain([inputRef, 'access', _562 => _562.current, 'optionalAccess', _563 => _563.focus, 'call', _564 => _564()]);
|
|
25483
24595
|
};
|
|
25484
24596
|
const handleResultClick = (result) => {
|
|
25485
|
-
_optionalChain([onResultSelect, 'optionalCall',
|
|
24597
|
+
_optionalChain([onResultSelect, 'optionalCall', _565 => _565(result)]);
|
|
25486
24598
|
setIsOpen(false);
|
|
25487
24599
|
};
|
|
25488
24600
|
const handleKeyDown = (e) => {
|
|
@@ -25505,7 +24617,7 @@ function SearchInput({
|
|
|
25505
24617
|
if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
|
|
25506
24618
|
handleResultClick(flatResults[highlightedIndex]);
|
|
25507
24619
|
} else {
|
|
25508
|
-
_optionalChain([onSubmit, 'optionalCall',
|
|
24620
|
+
_optionalChain([onSubmit, 'optionalCall', _566 => _566(currentValue)]);
|
|
25509
24621
|
}
|
|
25510
24622
|
break;
|
|
25511
24623
|
case "Escape":
|
|
@@ -25583,7 +24695,7 @@ function SearchInput({
|
|
|
25583
24695
|
dropdownVisible && "!border-ods-accent"
|
|
25584
24696
|
),
|
|
25585
24697
|
onClick: () => {
|
|
25586
|
-
_optionalChain([inputRef, 'access',
|
|
24698
|
+
_optionalChain([inputRef, 'access', _567 => _567.current, 'optionalAccess', _568 => _568.focus, 'call', _569 => _569()]);
|
|
25587
24699
|
setIsOpen(true);
|
|
25588
24700
|
},
|
|
25589
24701
|
children: [
|
|
@@ -25667,10 +24779,10 @@ function SearchInput({
|
|
|
25667
24779
|
align: "start",
|
|
25668
24780
|
onOpenAutoFocus: (e) => {
|
|
25669
24781
|
e.preventDefault();
|
|
25670
|
-
_optionalChain([inputRef, 'access',
|
|
24782
|
+
_optionalChain([inputRef, 'access', _570 => _570.current, 'optionalAccess', _571 => _571.focus, 'call', _572 => _572()]);
|
|
25671
24783
|
},
|
|
25672
24784
|
onInteractOutside: (e) => {
|
|
25673
|
-
if (_optionalChain([containerRef, 'access',
|
|
24785
|
+
if (_optionalChain([containerRef, 'access', _573 => _573.current, 'optionalAccess', _574 => _574.contains, 'call', _575 => _575(e.target)])) {
|
|
25674
24786
|
e.preventDefault();
|
|
25675
24787
|
}
|
|
25676
24788
|
},
|
|
@@ -25687,10 +24799,10 @@ function SearchInput({
|
|
|
25687
24799
|
ref: hiddenTagsPopupRef,
|
|
25688
24800
|
items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
|
|
25689
24801
|
style: {
|
|
25690
|
-
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
|
|
25691
24803
|
},
|
|
25692
24804
|
onRemove: (value2) => {
|
|
25693
|
-
_optionalChain([onFilterRemove, 'optionalCall',
|
|
24805
|
+
_optionalChain([onFilterRemove, 'optionalCall', _580 => _580(value2)]);
|
|
25694
24806
|
if (hiddenCount <= 1) setShowHiddenTags(false);
|
|
25695
24807
|
}
|
|
25696
24808
|
}
|
|
@@ -25741,7 +24853,7 @@ function FilterListItem({
|
|
|
25741
24853
|
}) {
|
|
25742
24854
|
const handleToggle = () => {
|
|
25743
24855
|
if (disabled) return;
|
|
25744
|
-
_optionalChain([onToggle, 'optionalCall',
|
|
24856
|
+
_optionalChain([onToggle, 'optionalCall', _581 => _581(!selected)]);
|
|
25745
24857
|
};
|
|
25746
24858
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25747
24859
|
"div",
|
|
@@ -25777,7 +24889,7 @@ function FilterListItem({
|
|
|
25777
24889
|
"flex items-start gap-[var(--spacing-system-xxs)] text-h6",
|
|
25778
24890
|
selected ? "text-ods-accent" : "text-ods-text-secondary"
|
|
25779
24891
|
),
|
|
25780
|
-
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: [
|
|
25781
24893
|
index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
|
|
25782
24894
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item })
|
|
25783
24895
|
] }, index))
|
|
@@ -25788,7 +24900,7 @@ function FilterListItem({
|
|
|
25788
24900
|
CheckboxPrimitive4.Root,
|
|
25789
24901
|
{
|
|
25790
24902
|
checked: selected,
|
|
25791
|
-
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall',
|
|
24903
|
+
onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _582 => _582(c === true)]),
|
|
25792
24904
|
onClick: (e) => e.stopPropagation(),
|
|
25793
24905
|
disabled,
|
|
25794
24906
|
"aria-label": title,
|
|
@@ -25874,7 +24986,7 @@ function TagSearchInput({
|
|
|
25874
24986
|
textMeasureRef,
|
|
25875
24987
|
badgeRef,
|
|
25876
24988
|
inputRef
|
|
25877
|
-
} =
|
|
24989
|
+
} = _chunkALW3D72Ocjs.useAutoLimitTags.call(void 0, {
|
|
25878
24990
|
count: tags.length,
|
|
25879
24991
|
limitTags,
|
|
25880
24992
|
placeholder: currentPlaceholder
|
|
@@ -25887,7 +24999,7 @@ function TagSearchInput({
|
|
|
25887
24999
|
if (!showHiddenTags) return;
|
|
25888
25000
|
const handleClick = (e) => {
|
|
25889
25001
|
const target = e.target;
|
|
25890
|
-
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)])) {
|
|
25891
25003
|
setShowHiddenTags(false);
|
|
25892
25004
|
}
|
|
25893
25005
|
};
|
|
@@ -25903,13 +25015,13 @@ function TagSearchInput({
|
|
|
25903
25015
|
e.preventDefault();
|
|
25904
25016
|
onSubmit(searchValue);
|
|
25905
25017
|
}
|
|
25906
|
-
_optionalChain([onKeyDown, 'optionalCall',
|
|
25018
|
+
_optionalChain([onKeyDown, 'optionalCall', _589 => _589(e)]);
|
|
25907
25019
|
};
|
|
25908
25020
|
const handleClearAll = (e) => {
|
|
25909
25021
|
e.stopPropagation();
|
|
25910
25022
|
e.preventDefault();
|
|
25911
|
-
_optionalChain([onClearAll, 'optionalCall',
|
|
25912
|
-
_optionalChain([inputRef, 'access',
|
|
25023
|
+
_optionalChain([onClearAll, 'optionalCall', _590 => _590()]);
|
|
25024
|
+
_optionalChain([inputRef, 'access', _591 => _591.current, 'optionalAccess', _592 => _592.focus, 'call', _593 => _593()]);
|
|
25913
25025
|
};
|
|
25914
25026
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
|
|
25915
25027
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -25926,7 +25038,7 @@ function TagSearchInput({
|
|
|
25926
25038
|
className
|
|
25927
25039
|
),
|
|
25928
25040
|
onClick: () => {
|
|
25929
|
-
if (!disabled) _optionalChain([inputRef, 'access',
|
|
25041
|
+
if (!disabled) _optionalChain([inputRef, 'access', _594 => _594.current, 'optionalAccess', _595 => _595.focus, 'call', _596 => _596()]);
|
|
25930
25042
|
},
|
|
25931
25043
|
children: [
|
|
25932
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" }) }),
|
|
@@ -25998,7 +25110,7 @@ function TagSearchInput({
|
|
|
25998
25110
|
items: hiddenTags,
|
|
25999
25111
|
disabled,
|
|
26000
25112
|
style: {
|
|
26001
|
-
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
|
|
26002
25114
|
},
|
|
26003
25115
|
onRemove: (value) => {
|
|
26004
25116
|
onTagRemove(value);
|
|
@@ -26100,7 +25212,7 @@ function MarkdownEditor({
|
|
|
26100
25212
|
const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
|
|
26101
25213
|
_react.useEffect.call(void 0, () => {
|
|
26102
25214
|
Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
|
|
26103
|
-
if (_optionalChain([mod, 'access',
|
|
25215
|
+
if (_optionalChain([mod, 'access', _601 => _601.commands, 'optionalAccess', _602 => _602.getExtraCommands])) {
|
|
26104
25216
|
setDefaultExtraCommands(mod.commands.getExtraCommands());
|
|
26105
25217
|
}
|
|
26106
25218
|
});
|
|
@@ -26134,7 +25246,7 @@ function MarkdownEditor({
|
|
|
26134
25246
|
const isImage = file.type.startsWith("image/");
|
|
26135
25247
|
const markdown = isImage ? `` : `[${file.name}](${url})`;
|
|
26136
25248
|
insertTextAtCursor(markdown);
|
|
26137
|
-
_optionalChain([onFileUploaded, 'optionalCall',
|
|
25249
|
+
_optionalChain([onFileUploaded, 'optionalCall', _603 => _603(url, file.name)]);
|
|
26138
25250
|
} catch (error) {
|
|
26139
25251
|
console.error("File upload failed:", error);
|
|
26140
25252
|
setUploadProgress("Upload failed. Please try again.");
|
|
@@ -26147,7 +25259,7 @@ function MarkdownEditor({
|
|
|
26147
25259
|
);
|
|
26148
25260
|
const handleFileInputChange = _react.useCallback.call(void 0,
|
|
26149
25261
|
(e) => {
|
|
26150
|
-
const file = _optionalChain([e, 'access',
|
|
25262
|
+
const file = _optionalChain([e, 'access', _604 => _604.target, 'access', _605 => _605.files, 'optionalAccess', _606 => _606[0]]);
|
|
26151
25263
|
if (file) {
|
|
26152
25264
|
handleFileUpload(file);
|
|
26153
25265
|
e.target.value = "";
|
|
@@ -26158,7 +25270,7 @@ function MarkdownEditor({
|
|
|
26158
25270
|
const handlePaste = _react.useCallback.call(void 0,
|
|
26159
25271
|
(e) => {
|
|
26160
25272
|
if (!onUploadFile) return;
|
|
26161
|
-
const items = _optionalChain([e, 'access',
|
|
25273
|
+
const items = _optionalChain([e, 'access', _607 => _607.clipboardData, 'optionalAccess', _608 => _608.items]);
|
|
26162
25274
|
if (!items) return;
|
|
26163
25275
|
for (const item of items) {
|
|
26164
25276
|
if (item.type.startsWith("image/")) {
|
|
@@ -26183,7 +25295,7 @@ function MarkdownEditor({
|
|
|
26183
25295
|
buttonProps: { "aria-label": "Upload file", title: "Upload file" },
|
|
26184
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" }),
|
|
26185
25297
|
execute: () => {
|
|
26186
|
-
_optionalChain([fileInputRef, 'access',
|
|
25298
|
+
_optionalChain([fileInputRef, 'access', _609 => _609.current, 'optionalAccess', _610 => _610.click, 'call', _611 => _611()]);
|
|
26187
25299
|
}
|
|
26188
25300
|
} : null;
|
|
26189
25301
|
const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
|
|
@@ -26195,7 +25307,7 @@ function MarkdownEditor({
|
|
|
26195
25307
|
const EDGE_ZONE = 60;
|
|
26196
25308
|
const MAX_SCROLL_SPEED = 15;
|
|
26197
25309
|
const findScrollParent = _react.useCallback.call(void 0, (el) => {
|
|
26198
|
-
let node = _optionalChain([el, 'optionalAccess',
|
|
25310
|
+
let node = _optionalChain([el, 'optionalAccess', _612 => _612.parentElement]);
|
|
26199
25311
|
while (node && node !== document.documentElement) {
|
|
26200
25312
|
const { overflowY } = window.getComputedStyle(node);
|
|
26201
25313
|
if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
|
|
@@ -26338,7 +25450,7 @@ function matchesAccept(file, accept) {
|
|
|
26338
25450
|
});
|
|
26339
25451
|
}
|
|
26340
25452
|
function dragHasFiles(e) {
|
|
26341
|
-
const types = _optionalChain([e, 'access',
|
|
25453
|
+
const types = _optionalChain([e, 'access', _613 => _613.dataTransfer, 'optionalAccess', _614 => _614.types]);
|
|
26342
25454
|
if (!types) return false;
|
|
26343
25455
|
for (let i = 0; i < types.length; i++) {
|
|
26344
25456
|
if (types[i] === "Files") return true;
|
|
@@ -26364,11 +25476,11 @@ function FileUpload({
|
|
|
26364
25476
|
maxListHeight,
|
|
26365
25477
|
acceptWindowDrops = false
|
|
26366
25478
|
}) {
|
|
26367
|
-
const [dragActive, setDragActive] =
|
|
26368
|
-
const [validationError, setValidationError] =
|
|
26369
|
-
const fileInputRef =
|
|
25479
|
+
const [dragActive, setDragActive] = React84.useState(false);
|
|
25480
|
+
const [validationError, setValidationError] = React84.useState(null);
|
|
25481
|
+
const fileInputRef = React84.useRef(null);
|
|
26370
25482
|
const isManaged = managedFiles !== void 0;
|
|
26371
|
-
const files =
|
|
25483
|
+
const files = React84.useMemo(() => {
|
|
26372
25484
|
if (!value) return [];
|
|
26373
25485
|
return Array.isArray(value) ? value : [value];
|
|
26374
25486
|
}, [value]);
|
|
@@ -26416,7 +25528,7 @@ function FileUpload({
|
|
|
26416
25528
|
fileInputRef.current.value = "";
|
|
26417
25529
|
}
|
|
26418
25530
|
};
|
|
26419
|
-
const handleFilesRef =
|
|
25531
|
+
const handleFilesRef = React84.useRef(handleFiles);
|
|
26420
25532
|
handleFilesRef.current = handleFiles;
|
|
26421
25533
|
const handleDrag = (e) => {
|
|
26422
25534
|
e.preventDefault();
|
|
@@ -26433,11 +25545,11 @@ function FileUpload({
|
|
|
26433
25545
|
e.stopPropagation();
|
|
26434
25546
|
setDragActive(false);
|
|
26435
25547
|
if (disabled) return;
|
|
26436
|
-
if (_optionalChain([e, 'access',
|
|
25548
|
+
if (_optionalChain([e, 'access', _615 => _615.dataTransfer, 'access', _616 => _616.files, 'optionalAccess', _617 => _617.length])) {
|
|
26437
25549
|
handleFiles(e.dataTransfer.files);
|
|
26438
25550
|
}
|
|
26439
25551
|
};
|
|
26440
|
-
|
|
25552
|
+
React84.useEffect(() => {
|
|
26441
25553
|
if (!acceptWindowDrops || disabled) return;
|
|
26442
25554
|
let dragCounter = 0;
|
|
26443
25555
|
const onWindowDragEnter = (e) => {
|
|
@@ -26461,7 +25573,7 @@ function FileUpload({
|
|
|
26461
25573
|
e.preventDefault();
|
|
26462
25574
|
dragCounter = 0;
|
|
26463
25575
|
setDragActive(false);
|
|
26464
|
-
if (_optionalChain([e, 'access',
|
|
25576
|
+
if (_optionalChain([e, 'access', _618 => _618.dataTransfer, 'optionalAccess', _619 => _619.files, 'optionalAccess', _620 => _620.length])) {
|
|
26465
25577
|
handleFilesRef.current(e.dataTransfer.files);
|
|
26466
25578
|
}
|
|
26467
25579
|
};
|
|
@@ -26483,7 +25595,7 @@ function FileUpload({
|
|
|
26483
25595
|
};
|
|
26484
25596
|
}, [acceptWindowDrops, disabled]);
|
|
26485
25597
|
const handleFileSelect = (e) => {
|
|
26486
|
-
if (_optionalChain([e, 'access',
|
|
25598
|
+
if (_optionalChain([e, 'access', _621 => _621.target, 'access', _622 => _622.files, 'optionalAccess', _623 => _623.length])) {
|
|
26487
25599
|
handleFiles(e.target.files);
|
|
26488
25600
|
}
|
|
26489
25601
|
};
|
|
@@ -26500,7 +25612,7 @@ function FileUpload({
|
|
|
26500
25612
|
};
|
|
26501
25613
|
const openDialog = async () => {
|
|
26502
25614
|
if (disabled) return;
|
|
26503
|
-
_optionalChain([fileInputRef, 'access',
|
|
25615
|
+
_optionalChain([fileInputRef, 'access', _624 => _624.current, 'optionalAccess', _625 => _625.click, 'call', _626 => _626()]);
|
|
26504
25616
|
};
|
|
26505
25617
|
const displayError = error || validationError || void 0;
|
|
26506
25618
|
const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
|
|
@@ -26578,7 +25690,7 @@ function FileUpload({
|
|
|
26578
25690
|
"button",
|
|
26579
25691
|
{
|
|
26580
25692
|
type: "button",
|
|
26581
|
-
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall',
|
|
25693
|
+
onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _627 => _627(entry.id)]),
|
|
26582
25694
|
className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
|
|
26583
25695
|
"aria-label": `Remove ${entry.fileName}`,
|
|
26584
25696
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
|
|
@@ -26679,10 +25791,10 @@ function ImageUploader({
|
|
|
26679
25791
|
alt = "Uploaded image",
|
|
26680
25792
|
className
|
|
26681
25793
|
}) {
|
|
26682
|
-
const inputRef =
|
|
26683
|
-
const [dragActive, setDragActive] =
|
|
26684
|
-
const [pressed, setPressed] =
|
|
26685
|
-
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);
|
|
26686
25798
|
const interactive = !disabled && !loading;
|
|
26687
25799
|
const hasImage = Boolean(value);
|
|
26688
25800
|
const displayError = error || validationError || void 0;
|
|
@@ -26701,7 +25813,7 @@ function ImageUploader({
|
|
|
26701
25813
|
onChange(file);
|
|
26702
25814
|
};
|
|
26703
25815
|
const handleFileSelect = (e) => {
|
|
26704
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25816
|
+
validateAndEmit(_optionalChain([e, 'access', _628 => _628.target, 'access', _629 => _629.files, 'optionalAccess', _630 => _630[0]]));
|
|
26705
25817
|
if (inputRef.current) inputRef.current.value = "";
|
|
26706
25818
|
};
|
|
26707
25819
|
const handleDrag = (e) => {
|
|
@@ -26716,11 +25828,11 @@ function ImageUploader({
|
|
|
26716
25828
|
e.stopPropagation();
|
|
26717
25829
|
setDragActive(false);
|
|
26718
25830
|
if (!interactive) return;
|
|
26719
|
-
validateAndEmit(_optionalChain([e, 'access',
|
|
25831
|
+
validateAndEmit(_optionalChain([e, 'access', _631 => _631.dataTransfer, 'access', _632 => _632.files, 'optionalAccess', _633 => _633[0]]));
|
|
26720
25832
|
};
|
|
26721
25833
|
const openDialog = () => {
|
|
26722
25834
|
if (!interactive) return;
|
|
26723
|
-
_optionalChain([inputRef, 'access',
|
|
25835
|
+
_optionalChain([inputRef, 'access', _634 => _634.current, 'optionalAccess', _635 => _635.click, 'call', _636 => _636()]);
|
|
26724
25836
|
};
|
|
26725
25837
|
const handleRootKeyDown = (e) => {
|
|
26726
25838
|
if (hasImage || !interactive) return;
|
|
@@ -26859,25 +25971,25 @@ function CompactAssigneeDropdown({
|
|
|
26859
25971
|
onAssign,
|
|
26860
25972
|
className
|
|
26861
25973
|
}) {
|
|
26862
|
-
const [isOpen, setIsOpen] =
|
|
26863
|
-
const [search, setSearch] =
|
|
25974
|
+
const [isOpen, setIsOpen] = React86.useState(false);
|
|
25975
|
+
const [search, setSearch] = React86.useState("");
|
|
26864
25976
|
const hasAssignee = !!currentAssignee;
|
|
26865
|
-
|
|
25977
|
+
React86.useEffect(() => {
|
|
26866
25978
|
if (!isOpen) setSearch("");
|
|
26867
25979
|
}, [isOpen]);
|
|
26868
|
-
const filtered =
|
|
25980
|
+
const filtered = React86.useMemo(() => {
|
|
26869
25981
|
const q = search.trim().toLowerCase();
|
|
26870
25982
|
if (!q) return options;
|
|
26871
25983
|
return options.filter((o) => o.label.toLowerCase().includes(q));
|
|
26872
25984
|
}, [options, search]);
|
|
26873
|
-
const orderedOptions =
|
|
25985
|
+
const orderedOptions = React86.useMemo(() => {
|
|
26874
25986
|
if (!currentAssignee) return filtered;
|
|
26875
25987
|
const current = filtered.find((o) => o.value === currentAssignee.id);
|
|
26876
25988
|
if (!current) return filtered;
|
|
26877
25989
|
return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
|
|
26878
25990
|
}, [filtered, currentAssignee]);
|
|
26879
25991
|
const handleSelect = (userId) => {
|
|
26880
|
-
const next = _optionalChain([currentAssignee, 'optionalAccess',
|
|
25992
|
+
const next = _optionalChain([currentAssignee, 'optionalAccess', _637 => _637.id]) === userId ? null : userId;
|
|
26881
25993
|
onAssign(next);
|
|
26882
25994
|
setIsOpen(false);
|
|
26883
25995
|
};
|
|
@@ -26942,7 +26054,7 @@ function CompactAssigneeDropdown({
|
|
|
26942
26054
|
}
|
|
26943
26055
|
) }),
|
|
26944
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) => {
|
|
26945
|
-
const isCurrent = _optionalChain([currentAssignee, 'optionalAccess',
|
|
26057
|
+
const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _638 => _638.id]) === opt.value;
|
|
26946
26058
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
26947
26059
|
"button",
|
|
26948
26060
|
{
|
|
@@ -26986,9 +26098,9 @@ function DefaultAssigneeDropdown({
|
|
|
26986
26098
|
onAssign,
|
|
26987
26099
|
className
|
|
26988
26100
|
}) {
|
|
26989
|
-
const [isEditing, setIsEditing] =
|
|
26101
|
+
const [isEditing, setIsEditing] = React86.useState(false);
|
|
26990
26102
|
const hasAssignee = !!currentAssignee;
|
|
26991
|
-
const renderOption =
|
|
26103
|
+
const renderOption = React86.useCallback((option) => {
|
|
26992
26104
|
const opt = option;
|
|
26993
26105
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
|
|
26994
26106
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -27011,7 +26123,7 @@ function DefaultAssigneeDropdown({
|
|
|
27011
26123
|
Autocomplete,
|
|
27012
26124
|
{
|
|
27013
26125
|
options,
|
|
27014
|
-
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess',
|
|
26126
|
+
value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _639 => _639.id]), () => ( null)),
|
|
27015
26127
|
onChange: (val) => {
|
|
27016
26128
|
onAssign(val);
|
|
27017
26129
|
setIsEditing(false);
|
|
@@ -27176,8 +26288,8 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
|
27176
26288
|
_chunkOFAYLG6Dcjs.init_cn.call(void 0, );
|
|
27177
26289
|
|
|
27178
26290
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
27179
|
-
const [isEditing, setIsEditing] =
|
|
27180
|
-
const [editText, setEditText] =
|
|
26291
|
+
const [isEditing, setIsEditing] = React87.useState(false);
|
|
26292
|
+
const [editText, setEditText] = React87.useState(note.text);
|
|
27181
26293
|
const handleSave = () => {
|
|
27182
26294
|
const trimmed = editText.trim();
|
|
27183
26295
|
if (!trimmed || !onEdit) return;
|
|
@@ -27293,7 +26405,7 @@ function TicketNotesSection({
|
|
|
27293
26405
|
isAddingNote,
|
|
27294
26406
|
className
|
|
27295
26407
|
}) {
|
|
27296
|
-
const [noteText, setNoteText] =
|
|
26408
|
+
const [noteText, setNoteText] = React88.useState("");
|
|
27297
26409
|
const handleSend = () => {
|
|
27298
26410
|
const trimmed = noteText.trim();
|
|
27299
26411
|
if (!trimmed || !onAddNote || isAddingNote) return;
|
|
@@ -27398,14 +26510,14 @@ function TicketInfoSection({
|
|
|
27398
26510
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27399
26511
|
SquareAvatar,
|
|
27400
26512
|
{
|
|
27401
|
-
src: _optionalChain([organization, 'optionalAccess',
|
|
27402
|
-
alt: _optionalChain([organization, 'optionalAccess',
|
|
27403
|
-
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",
|
|
27404
26516
|
size: "md",
|
|
27405
26517
|
className: "shrink-0"
|
|
27406
26518
|
}
|
|
27407
26519
|
),
|
|
27408
|
-
/* @__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" })
|
|
27409
26521
|
] }),
|
|
27410
26522
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27411
26523
|
AssigneeDropdown,
|
|
@@ -27426,10 +26538,10 @@ function TicketInfoSection({
|
|
|
27426
26538
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
27427
26539
|
InfoCell2,
|
|
27428
26540
|
{
|
|
27429
|
-
value: _optionalChain([device, 'optionalAccess',
|
|
26541
|
+
value: _optionalChain([device, 'optionalAccess', _644 => _644.name]) || "Unassigned",
|
|
27430
26542
|
label: "Device",
|
|
27431
|
-
icon: _optionalChain([device, 'optionalAccess',
|
|
27432
|
-
onClick: _optionalChain([device, 'optionalAccess',
|
|
26543
|
+
icon: _optionalChain([device, 'optionalAccess', _645 => _645.icon]),
|
|
26544
|
+
onClick: _optionalChain([device, 'optionalAccess', _646 => _646.onClick])
|
|
27433
26545
|
}
|
|
27434
26546
|
),
|
|
27435
26547
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
|
|
@@ -28189,10 +27301,10 @@ var getContentDimensions = (config) => {
|
|
|
28189
27301
|
const envMobileHeight = process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT) : null;
|
|
28190
27302
|
const envDesktopWidth = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH) : null;
|
|
28191
27303
|
const envDesktopHeight = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT) : null;
|
|
28192
|
-
const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess',
|
|
28193
|
-
const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess',
|
|
28194
|
-
const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess',
|
|
28195
|
-
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));
|
|
28196
27308
|
return {
|
|
28197
27309
|
mobile: { width: mobileWidth, height: mobileHeight },
|
|
28198
27310
|
desktop: { width: desktopWidth, height: desktopHeight }
|
|
@@ -28326,7 +27438,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
|
|
|
28326
27438
|
const contentDimensions = getContentDimensions(config);
|
|
28327
27439
|
const mobileHeight = contentDimensions.mobile.height;
|
|
28328
27440
|
const calculatedHeight = Math.max(mobileHeight + 100, 400);
|
|
28329
|
-
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess',
|
|
27441
|
+
return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess', _655 => _655.innerHeight]) * 0.85 || 650)}px`;
|
|
28330
27442
|
})(),
|
|
28331
27443
|
minHeight: viewMode === "DESKTOP" ? "auto" : (() => {
|
|
28332
27444
|
const contentDimensions = getContentDimensions(config);
|
|
@@ -28431,7 +27543,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28431
27543
|
const [isInitialized, setIsInitialized] = _react.useState.call(void 0, false);
|
|
28432
27544
|
const [currentNodeId, setCurrentNodeId] = _react.useState.call(void 0, null);
|
|
28433
27545
|
const [internalActiveSection, setInternalActiveSection] = _react.useState.call(void 0,
|
|
28434
|
-
config.defaultSectionId || _optionalChain([config, 'access',
|
|
27546
|
+
config.defaultSectionId || _optionalChain([config, 'access', _656 => _656.sections, 'access', _657 => _657[0], 'optionalAccess', _658 => _658.id]) || ""
|
|
28435
27547
|
);
|
|
28436
27548
|
const activeSection = externalActiveSection || internalActiveSection;
|
|
28437
27549
|
const [isNavigating, setIsNavigating] = _react.useState.call(void 0, false);
|
|
@@ -28521,7 +27633,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28521
27633
|
const handleMessage = (event) => {
|
|
28522
27634
|
if (event.origin !== "https://www.figma.com") return;
|
|
28523
27635
|
const validEvents = ["INITIAL_LOAD", "NEW_STATE", "PRESENTED_NODE_CHANGED"];
|
|
28524
|
-
if (_optionalChain([event, 'access',
|
|
27636
|
+
if (_optionalChain([event, 'access', _659 => _659.data, 'optionalAccess', _660 => _660.type]) && validEvents.includes(event.data.type)) {
|
|
28525
27637
|
const figmaEvent = event.data;
|
|
28526
27638
|
console.log("[Figma Event]", figmaEvent.type, viewMode);
|
|
28527
27639
|
switch (figmaEvent.type) {
|
|
@@ -28531,19 +27643,19 @@ var FigmaPrototypeViewer = ({
|
|
|
28531
27643
|
setIframeState("READY");
|
|
28532
27644
|
break;
|
|
28533
27645
|
case "PRESENTED_NODE_CHANGED":
|
|
28534
|
-
if (_optionalChain([figmaEvent, 'access',
|
|
27646
|
+
if (_optionalChain([figmaEvent, 'access', _661 => _661.data, 'optionalAccess', _662 => _662.presentedNodeId])) {
|
|
28535
27647
|
setCurrentNodeId(figmaEvent.data.presentedNodeId);
|
|
28536
27648
|
if (!isNavigating) {
|
|
28537
27649
|
const matchingSection = config.sections.find((s) => {
|
|
28538
|
-
const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access',
|
|
28539
|
-
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]);
|
|
28540
27652
|
return desktopMatch || mobileMatch;
|
|
28541
27653
|
});
|
|
28542
27654
|
if (matchingSection && matchingSection.id !== activeSection) {
|
|
28543
27655
|
if (!externalActiveSection) {
|
|
28544
27656
|
setInternalActiveSection(matchingSection.id);
|
|
28545
27657
|
}
|
|
28546
|
-
_optionalChain([config, 'access',
|
|
27658
|
+
_optionalChain([config, 'access', _674 => _674.onSectionChange, 'optionalCall', _675 => _675(matchingSection.id)]);
|
|
28547
27659
|
}
|
|
28548
27660
|
}
|
|
28549
27661
|
}
|
|
@@ -28556,7 +27668,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28556
27668
|
}, [config.sections, activeSection, isNavigating, externalActiveSection, config.onSectionChange, viewMode]);
|
|
28557
27669
|
const navigateToSection = _react.useCallback.call(void 0, (sectionId) => {
|
|
28558
27670
|
const section = config.sections.find((s) => s.id === sectionId);
|
|
28559
|
-
if (!section || !_optionalChain([iframeRef, 'access',
|
|
27671
|
+
if (!section || !_optionalChain([iframeRef, 'access', _676 => _676.current, 'optionalAccess', _677 => _677.contentWindow]) || !isInitialized) {
|
|
28560
27672
|
return;
|
|
28561
27673
|
}
|
|
28562
27674
|
setIsNavigating(true);
|
|
@@ -28564,7 +27676,7 @@ var FigmaPrototypeViewer = ({
|
|
|
28564
27676
|
if (!externalActiveSection) {
|
|
28565
27677
|
setInternalActiveSection(sectionId);
|
|
28566
27678
|
}
|
|
28567
|
-
_optionalChain([config, 'access',
|
|
27679
|
+
_optionalChain([config, 'access', _678 => _678.onSectionChange, 'optionalCall', _679 => _679(sectionId)]);
|
|
28568
27680
|
const command = {
|
|
28569
27681
|
type: "NAVIGATE_TO_FRAME_AND_CLOSE_OVERLAYS",
|
|
28570
27682
|
data: { nodeId }
|
|
@@ -28884,7 +27996,7 @@ var FiltersDropdown = ({
|
|
|
28884
27996
|
defaults[section.id] = section.defaultSelected || [];
|
|
28885
27997
|
});
|
|
28886
27998
|
setSelectedFilters(defaults);
|
|
28887
|
-
_optionalChain([onReset, 'optionalCall',
|
|
27999
|
+
_optionalChain([onReset, 'optionalCall', _680 => _680()]);
|
|
28888
28000
|
setIsOpen(false);
|
|
28889
28001
|
};
|
|
28890
28002
|
const handleApply = () => {
|
|
@@ -29178,7 +28290,7 @@ function MediaGalleryManager({
|
|
|
29178
28290
|
const [deletingIndex, setDeletingIndex] = _react.useState.call(void 0, null);
|
|
29179
28291
|
const [draggedIndex, setDraggedIndex] = _react.useState.call(void 0, null);
|
|
29180
28292
|
const handleFileSelect = _react.useCallback.call(void 0, async (event) => {
|
|
29181
|
-
const file = _optionalChain([event, 'access',
|
|
28293
|
+
const file = _optionalChain([event, 'access', _681 => _681.target, 'access', _682 => _682.files, 'optionalAccess', _683 => _683[0]]);
|
|
29182
28294
|
if (!file) return;
|
|
29183
28295
|
let mediaType;
|
|
29184
28296
|
if (file.type.startsWith("image/")) {
|
|
@@ -29293,7 +28405,7 @@ function MediaGalleryManager({
|
|
|
29293
28405
|
{
|
|
29294
28406
|
type: "button",
|
|
29295
28407
|
variant: "outline",
|
|
29296
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
28408
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _684 => _684.current, 'optionalAccess', _685 => _685.click, 'call', _686 => _686()]),
|
|
29297
28409
|
disabled: isUploading,
|
|
29298
28410
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
29299
28411
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -29903,7 +29015,7 @@ function PlatformFilterComponent({
|
|
|
29903
29015
|
variant: selectedPlatform === platform.value ? "accent" : "outline",
|
|
29904
29016
|
size,
|
|
29905
29017
|
onClick: () => onPlatformChange(platform.value),
|
|
29906
|
-
leftIcon: showIcons ?
|
|
29018
|
+
leftIcon: showIcons ? _chunkALW3D72Ocjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
|
|
29907
29019
|
className: "text-h3",
|
|
29908
29020
|
children: platform.label
|
|
29909
29021
|
},
|
|
@@ -30078,7 +29190,7 @@ function ReleaseMediaManager({
|
|
|
30078
29190
|
const fileInputRef = _react.useRef.call(void 0, null);
|
|
30079
29191
|
const [uploadingIndex, setUploadingIndex] = _react.useState.call(void 0, null);
|
|
30080
29192
|
const handleFileSelect = async (event) => {
|
|
30081
|
-
const file = _optionalChain([event, 'access',
|
|
29193
|
+
const file = _optionalChain([event, 'access', _687 => _687.target, 'access', _688 => _688.files, 'optionalAccess', _689 => _689[0]]);
|
|
30082
29194
|
if (!file) return;
|
|
30083
29195
|
let mediaType;
|
|
30084
29196
|
if (file.type.startsWith("image/")) {
|
|
@@ -30158,7 +29270,7 @@ function ReleaseMediaManager({
|
|
|
30158
29270
|
{
|
|
30159
29271
|
type: "button",
|
|
30160
29272
|
variant: "outline",
|
|
30161
|
-
onClick: () => _optionalChain([fileInputRef, 'access',
|
|
29273
|
+
onClick: () => _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]),
|
|
30162
29274
|
disabled: uploadingIndex !== null,
|
|
30163
29275
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
|
|
30164
29276
|
className: "font-['DM_Sans'] text-[16px] font-bold",
|
|
@@ -30371,7 +29483,7 @@ function SEOEditorPreview({
|
|
|
30371
29483
|
const displayImage = hasOgImage || hasFeaturedImage;
|
|
30372
29484
|
const handleImageUpload = async (event) => {
|
|
30373
29485
|
if (!onOgImageUpload) return;
|
|
30374
|
-
const file = _optionalChain([event, 'access',
|
|
29486
|
+
const file = _optionalChain([event, 'access', _693 => _693.target, 'access', _694 => _694.files, 'optionalAccess', _695 => _695[0]]);
|
|
30375
29487
|
if (!file) return;
|
|
30376
29488
|
setIsUploading(true);
|
|
30377
29489
|
try {
|
|
@@ -30502,7 +29614,7 @@ function SEOEditorPreview({
|
|
|
30502
29614
|
type: "button",
|
|
30503
29615
|
variant: "outline",
|
|
30504
29616
|
size: "icon",
|
|
30505
|
-
onClick: () => _optionalChain([fileInputRef, 'optionalAccess',
|
|
29617
|
+
onClick: () => _optionalChain([fileInputRef, 'optionalAccess', _696 => _696.click, 'call', _697 => _697()]),
|
|
30506
29618
|
disabled: disabled || isUploading,
|
|
30507
29619
|
className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
|
|
30508
29620
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-4 w-4" })
|
|
@@ -30525,7 +29637,7 @@ function SEOEditorPreview({
|
|
|
30525
29637
|
"div",
|
|
30526
29638
|
{
|
|
30527
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",
|
|
30528
|
-
onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess',
|
|
29640
|
+
onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]),
|
|
30529
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: [
|
|
30530
29642
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30531
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" })
|
|
@@ -30610,7 +29722,7 @@ function SocialLinksManager({
|
|
|
30610
29722
|
className = ""
|
|
30611
29723
|
}) {
|
|
30612
29724
|
const addLink = () => {
|
|
30613
|
-
const firstPlatform = _optionalChain([platforms, 'access',
|
|
29725
|
+
const firstPlatform = _optionalChain([platforms, 'access', _700 => _700[0], 'optionalAccess', _701 => _701.name]) || "website";
|
|
30614
29726
|
onChange([...links, { platform: firstPlatform, url: "" }]);
|
|
30615
29727
|
};
|
|
30616
29728
|
const removeLink = (index) => {
|
|
@@ -30622,7 +29734,7 @@ function SocialLinksManager({
|
|
|
30622
29734
|
onChange(updated);
|
|
30623
29735
|
};
|
|
30624
29736
|
const getIcon = (link, platform) => {
|
|
30625
|
-
const iconKey = _optionalChain([platform, 'optionalAccess',
|
|
29737
|
+
const iconKey = _optionalChain([platform, 'optionalAccess', _702 => _702.icon_name]) || link.platform;
|
|
30626
29738
|
const IconComponent = iconMap[iconKey];
|
|
30627
29739
|
return IconComponent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
|
|
30628
29740
|
};
|
|
@@ -30647,7 +29759,7 @@ function SocialLinksManager({
|
|
|
30647
29759
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
30648
29760
|
_chunkBJTOSUT4cjs.Input,
|
|
30649
29761
|
{
|
|
30650
|
-
placeholder: _optionalChain([platform, 'optionalAccess',
|
|
29762
|
+
placeholder: _optionalChain([platform, 'optionalAccess', _703 => _703.placeholder]) || "Profile URL",
|
|
30651
29763
|
value: link.url,
|
|
30652
29764
|
onChange: (e) => updateLink(index, "url", e.target.value),
|
|
30653
29765
|
onKeyDown: (e) => {
|
|
@@ -30691,7 +29803,7 @@ function SocialLinksManager({
|
|
|
30691
29803
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30692
29804
|
|
|
30693
29805
|
|
|
30694
|
-
var StartWithOpenFrameButton =
|
|
29806
|
+
var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
|
|
30695
29807
|
const isYellow = mode === "yellow";
|
|
30696
29808
|
const isPink = mode === "pink" || mode === "purple";
|
|
30697
29809
|
const isCyan = mode === "cyan";
|
|
@@ -30987,6 +30099,258 @@ function TagsSelector({
|
|
|
30987
30099
|
] });
|
|
30988
30100
|
}
|
|
30989
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
|
+
|
|
30990
30354
|
// src/components/features/video-source-selector.tsx
|
|
30991
30355
|
_chunkBJTOSUT4cjs.init_button2.call(void 0, );
|
|
30992
30356
|
|
|
@@ -31024,7 +30388,7 @@ function VideoSourceSelector({
|
|
|
31024
30388
|
input.accept = "video/*";
|
|
31025
30389
|
input.onchange = async (e) => {
|
|
31026
30390
|
const target = e.target;
|
|
31027
|
-
const file = _optionalChain([target, 'access',
|
|
30391
|
+
const file = _optionalChain([target, 'access', _704 => _704.files, 'optionalAccess', _705 => _705[0]]);
|
|
31028
30392
|
if (!file) return;
|
|
31029
30393
|
setIsUploading(true);
|
|
31030
30394
|
setUploadProgress(0);
|
|
@@ -31354,7 +30718,7 @@ function TranscriptSummaryEditor({
|
|
|
31354
30718
|
{
|
|
31355
30719
|
id: "subtitles",
|
|
31356
30720
|
value: subtitles || "",
|
|
31357
|
-
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall',
|
|
30721
|
+
onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall', _706 => _706(e.target.value)]),
|
|
31358
30722
|
placeholder: subtitlesPlaceholder,
|
|
31359
30723
|
disabled: disabled || !onSubtitlesChange,
|
|
31360
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",
|
|
@@ -31507,7 +30871,7 @@ var AIEnrichSection = ({
|
|
|
31507
30871
|
}) => {
|
|
31508
30872
|
const hasResults = status === "success" || status === "error";
|
|
31509
30873
|
const shouldDisable = disabled || !canEnrich;
|
|
31510
|
-
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess',
|
|
30874
|
+
const unfilledFields = _optionalChain([requiredFields, 'optionalAccess', _707 => _707.filter, 'call', _708 => _708((f) => !f.isFilled)]) || [];
|
|
31511
30875
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
31512
30876
|
"div",
|
|
31513
30877
|
{
|
|
@@ -31545,7 +30909,7 @@ var AIEnrichSection = ({
|
|
|
31545
30909
|
{
|
|
31546
30910
|
id: "ai-enrich-custom-instructions",
|
|
31547
30911
|
value: _nullishCoalesce(customInstructions, () => ( "")),
|
|
31548
|
-
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall',
|
|
30912
|
+
onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall', _709 => _709(e.target.value)]),
|
|
31549
30913
|
placeholder: customInstructionsPlaceholder,
|
|
31550
30914
|
disabled: loading,
|
|
31551
30915
|
maxLength: customInstructionsMaxLength,
|
|
@@ -31674,7 +31038,7 @@ function HighlightVideoSection({
|
|
|
31674
31038
|
input.accept = "video/*";
|
|
31675
31039
|
input.onchange = async (e) => {
|
|
31676
31040
|
const target = e.target;
|
|
31677
|
-
const file = _optionalChain([target, 'access',
|
|
31041
|
+
const file = _optionalChain([target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]);
|
|
31678
31042
|
if (!file) return;
|
|
31679
31043
|
setUploadError(null);
|
|
31680
31044
|
try {
|
|
@@ -32176,7 +31540,7 @@ function HighlightVideoPreview({
|
|
|
32176
31540
|
input.accept = "video/*";
|
|
32177
31541
|
input.onchange = async (e) => {
|
|
32178
31542
|
const target = e.target;
|
|
32179
|
-
const file = _optionalChain([target, 'access',
|
|
31543
|
+
const file = _optionalChain([target, 'access', _712 => _712.files, 'optionalAccess', _713 => _713[0]]);
|
|
32180
31544
|
if (!file) return;
|
|
32181
31545
|
await onUpload(file);
|
|
32182
31546
|
};
|
|
@@ -32363,7 +31727,7 @@ function HighlightVideoCombinedSection({
|
|
|
32363
31727
|
input.accept = "video/*";
|
|
32364
31728
|
input.onchange = async (e) => {
|
|
32365
31729
|
const target = e.target;
|
|
32366
|
-
const file = _optionalChain([target, 'access',
|
|
31730
|
+
const file = _optionalChain([target, 'access', _714 => _714.files, 'optionalAccess', _715 => _715[0]]);
|
|
32367
31731
|
if (!file) return;
|
|
32368
31732
|
await onUpload(file);
|
|
32369
31733
|
};
|
|
@@ -32660,11 +32024,11 @@ var getApprovalLevelLabel = (level, editMode = false) => {
|
|
|
32660
32024
|
return editMode ? "Set Global Permission" : "";
|
|
32661
32025
|
}
|
|
32662
32026
|
const option = approvalLevelOptions.find((opt) => opt.value === level);
|
|
32663
|
-
return _optionalChain([option, 'optionalAccess',
|
|
32027
|
+
return _optionalChain([option, 'optionalAccess', _716 => _716.label]) || level;
|
|
32664
32028
|
};
|
|
32665
32029
|
var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
|
|
32666
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: [
|
|
32667
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32031
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALW3D72Ocjs.ToolIcon, { toolType: policy.toolName, size: 16 }) }),
|
|
32668
32032
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col min-w-0", children: [
|
|
32669
32033
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-[16px] font-medium text-ods-text-primary truncate", children: policy.name }),
|
|
32670
32034
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-[12px] text-ods-text-secondary break-all font-mono", children: policy.commandPattern })
|
|
@@ -32873,7 +32237,7 @@ function WaitlistForm({
|
|
|
32873
32237
|
const [email, setEmail] = _react.useState.call(void 0, defaultEmail);
|
|
32874
32238
|
const [phone, setPhone] = _react.useState.call(void 0, defaultPhone);
|
|
32875
32239
|
const [countryCode, setCountryCode] = _react.useState.call(void 0, "US");
|
|
32876
|
-
const { toast } =
|
|
32240
|
+
const { toast } = _chunkALW3D72Ocjs.useToast.call(void 0, );
|
|
32877
32241
|
const [smsConsent, setSmsConsent] = _react.useState.call(void 0, false);
|
|
32878
32242
|
const [isClient, setIsClient] = _react.useState.call(void 0, false);
|
|
32879
32243
|
const [isPhoneInvalid, setIsPhoneInvalid] = _react.useState.call(void 0, false);
|
|
@@ -32912,7 +32276,7 @@ function WaitlistForm({
|
|
|
32912
32276
|
const finalPhone = phone ? formatPhoneE164(phone, countryCode) : void 0;
|
|
32913
32277
|
try {
|
|
32914
32278
|
await onRegister(email, finalPhone);
|
|
32915
|
-
} catch (
|
|
32279
|
+
} catch (e24) {
|
|
32916
32280
|
}
|
|
32917
32281
|
};
|
|
32918
32282
|
if (!isClient) {
|
|
@@ -33192,15 +32556,15 @@ function TicketCard({
|
|
|
33192
32556
|
transform: _utilities.CSS.Transform.toString(sortable.transform),
|
|
33193
32557
|
transition: sortable.transition
|
|
33194
32558
|
};
|
|
33195
|
-
const showDeviceRow = !!(_optionalChain([ticket, 'access',
|
|
32559
|
+
const showDeviceRow = !!(_optionalChain([ticket, 'access', _717 => _717.deviceHostnames, 'optionalAccess', _718 => _718.length]) || ticket.organizationName);
|
|
33196
32560
|
const deviceText = [
|
|
33197
|
-
_optionalChain([ticket, 'access',
|
|
32561
|
+
_optionalChain([ticket, 'access', _719 => _719.deviceHostnames, 'optionalAccess', _720 => _720.join, 'call', _721 => _721(", ")]),
|
|
33198
32562
|
ticket.organizationName
|
|
33199
32563
|
].filter(Boolean).join(", ");
|
|
33200
32564
|
const handleClick = (e) => {
|
|
33201
32565
|
if (sortable.isDragging) e.preventDefault();
|
|
33202
32566
|
};
|
|
33203
|
-
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access',
|
|
32567
|
+
const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _722 => _722.assignees, 'optionalAccess', _723 => _723.length]) || renderAssignSlot);
|
|
33204
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: [
|
|
33205
32569
|
ticket.priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33206
32570
|
_chunkTMD5LDX4cjs.Flag02Icon,
|
|
@@ -33209,7 +32573,7 @@ function TicketCard({
|
|
|
33209
32573
|
"aria-label": `Priority: ${ticket.priority}`
|
|
33210
32574
|
}
|
|
33211
32575
|
),
|
|
33212
|
-
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: [
|
|
33213
32577
|
ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33214
32578
|
SquareAvatar,
|
|
33215
32579
|
{
|
|
@@ -33238,7 +32602,7 @@ function TicketCard({
|
|
|
33238
32602
|
] }),
|
|
33239
32603
|
rightSection
|
|
33240
32604
|
] }),
|
|
33241
|
-
_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
|
|
33242
32606
|
] });
|
|
33243
32607
|
const cardClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
|
|
33244
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",
|
|
@@ -33398,7 +32762,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33398
32762
|
const observer = new IntersectionObserver(
|
|
33399
32763
|
(entries) => {
|
|
33400
32764
|
if (entries.some((e) => e.isIntersecting)) {
|
|
33401
|
-
_optionalChain([loadMoreRef, 'access',
|
|
32765
|
+
_optionalChain([loadMoreRef, 'access', _728 => _728.current, 'optionalCall', _729 => _729(columnIdRef.current)]);
|
|
33402
32766
|
}
|
|
33403
32767
|
},
|
|
33404
32768
|
{ root, rootMargin: loadMoreRootMargin }
|
|
@@ -33427,7 +32791,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
|
|
|
33427
32791
|
{
|
|
33428
32792
|
ticket: t,
|
|
33429
32793
|
columnId: column.id,
|
|
33430
|
-
href: _optionalChain([getTicketHref, 'optionalCall',
|
|
32794
|
+
href: _optionalChain([getTicketHref, 'optionalCall', _730 => _730(t.id)]),
|
|
33431
32795
|
renderAssignSlot,
|
|
33432
32796
|
dragDisabled: column.dragDisabled
|
|
33433
32797
|
},
|
|
@@ -33459,7 +32823,7 @@ function EmptyState3() {
|
|
|
33459
32823
|
// src/components/features/board/use-board-collapse.ts
|
|
33460
32824
|
|
|
33461
32825
|
function useBoardCollapse(storageKey) {
|
|
33462
|
-
const [persisted, setPersisted] =
|
|
32826
|
+
const [persisted, setPersisted] = _chunkALW3D72Ocjs.useLocalStorage.call(void 0,
|
|
33463
32827
|
_nullishCoalesce(storageKey, () => ( "__board_collapse_unused__")),
|
|
33464
32828
|
{}
|
|
33465
32829
|
);
|
|
@@ -33510,17 +32874,17 @@ function Board({
|
|
|
33510
32874
|
const pointer = _core.pointerWithin.call(void 0, args);
|
|
33511
32875
|
const intersections = pointer.length > 0 ? pointer : _core.rectIntersection.call(void 0, args);
|
|
33512
32876
|
const ticketHit = intersections.find(
|
|
33513
|
-
(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"
|
|
33514
32878
|
);
|
|
33515
32879
|
if (ticketHit) return [ticketHit];
|
|
33516
32880
|
const columnHit = intersections.find(
|
|
33517
|
-
(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"
|
|
33518
32882
|
);
|
|
33519
32883
|
if (columnHit) {
|
|
33520
|
-
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]);
|
|
33521
32885
|
const ticketsInColumn = args.droppableContainers.filter((c) => {
|
|
33522
32886
|
const d = c.data.current;
|
|
33523
|
-
return _optionalChain([d, 'optionalAccess',
|
|
32887
|
+
return _optionalChain([d, 'optionalAccess', _746 => _746.type]) === "ticket" && d.columnId === columnId;
|
|
33524
32888
|
});
|
|
33525
32889
|
if (ticketsInColumn.length > 0) {
|
|
33526
32890
|
const closest = _core.closestCorners.call(void 0, { ...args, droppableContainers: ticketsInColumn });
|
|
@@ -33545,20 +32909,20 @@ function Board({
|
|
|
33545
32909
|
const overId = String(over.id);
|
|
33546
32910
|
if (activeId === overId) return;
|
|
33547
32911
|
const overData = over.data.current;
|
|
33548
|
-
const fromColumnId = _optionalChain([locate, 'call',
|
|
33549
|
-
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]);
|
|
33550
32914
|
if (!fromColumnId || !toColumnId || fromColumnId === toColumnId) return;
|
|
33551
32915
|
const origin = dragOriginRef.current;
|
|
33552
|
-
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess',
|
|
32916
|
+
const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _750 => _750.fromColumnId]) === toColumnId;
|
|
33553
32917
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33554
|
-
const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess',
|
|
33555
|
-
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;
|
|
33556
32920
|
setItems((prev) => {
|
|
33557
32921
|
const fromIndex = findIndexInColumn(prev, fromColumnId, activeId);
|
|
33558
32922
|
const toCol = prev.find((c) => c.id === toColumnId);
|
|
33559
32923
|
if (fromIndex < 0 || !toCol) return prev;
|
|
33560
32924
|
let toIndex;
|
|
33561
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32925
|
+
if (_optionalChain([overData, 'optionalAccess', _753 => _753.type]) === "column") {
|
|
33562
32926
|
toIndex = toCol.tickets.length;
|
|
33563
32927
|
} else {
|
|
33564
32928
|
const overIndex = toCol.tickets.findIndex((t) => t.id === overId);
|
|
@@ -33600,14 +32964,14 @@ function Board({
|
|
|
33600
32964
|
const toColumnId = located.columnId;
|
|
33601
32965
|
const isCrossColumn = origin.fromColumnId !== toColumnId;
|
|
33602
32966
|
const targetCol = items.find((c) => c.id === toColumnId);
|
|
33603
|
-
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))) {
|
|
33604
32968
|
setItems(columns);
|
|
33605
32969
|
return;
|
|
33606
32970
|
}
|
|
33607
32971
|
let finalIndex = located.index;
|
|
33608
|
-
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]), () => ( []));
|
|
33609
32973
|
const overData = over.data.current;
|
|
33610
|
-
if (_optionalChain([overData, 'optionalAccess',
|
|
32974
|
+
if (_optionalChain([overData, 'optionalAccess', _759 => _759.type]) === "ticket") {
|
|
33611
32975
|
const overIndex = findIndexInColumn(items, toColumnId, String(over.id));
|
|
33612
32976
|
if (overIndex >= 0 && overIndex !== located.index) {
|
|
33613
32977
|
finalColumnTickets = _sortable.arrayMove.call(void 0, finalColumnTickets, located.index, overIndex);
|
|
@@ -33627,8 +32991,8 @@ function Board({
|
|
|
33627
32991
|
ticketId: origin.ticketId,
|
|
33628
32992
|
fromColumnId: origin.fromColumnId,
|
|
33629
32993
|
toColumnId,
|
|
33630
|
-
afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access',
|
|
33631
|
-
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))
|
|
33632
32996
|
});
|
|
33633
32997
|
};
|
|
33634
32998
|
const handleDragCancel = () => {
|
|
@@ -33650,8 +33014,8 @@ function Board({
|
|
|
33650
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) => {
|
|
33651
33015
|
const prev = items[i - 1];
|
|
33652
33016
|
const next = items[i + 1];
|
|
33653
|
-
const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess',
|
|
33654
|
-
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]));
|
|
33655
33019
|
const showGap = i > 0 && !joinLeft;
|
|
33656
33020
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React101.Fragment, { children: [
|
|
33657
33021
|
showGap && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
|
|
@@ -33685,7 +33049,7 @@ function locate(cols, ticketId) {
|
|
|
33685
33049
|
return null;
|
|
33686
33050
|
}
|
|
33687
33051
|
function findIndexInColumn(cols, columnId, ticketId) {
|
|
33688
|
-
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));
|
|
33689
33053
|
}
|
|
33690
33054
|
|
|
33691
33055
|
// src/components/features/board/types.ts
|
|
@@ -34344,5 +33708,12 @@ function canonicalize(status) {
|
|
|
34344
33708
|
|
|
34345
33709
|
|
|
34346
33710
|
|
|
34347
|
-
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.YouTubeLinkParser = YouTubeLinkParser; 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;
|
|
34348
|
-
|
|
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
|