@sesionario/blocks 1.17.0 → 1.18.0
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/index.cjs +168 -52
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +37 -18
- package/dist/index.d.ts +37 -18
- package/dist/index.js +168 -54
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1746,7 +1746,7 @@ function PlatformNavbar({
|
|
|
1746
1746
|
innerClassName
|
|
1747
1747
|
),
|
|
1748
1748
|
children: [
|
|
1749
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: logo }),
|
|
1749
|
+
logo != null && logo !== false ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: logo }) : null,
|
|
1750
1750
|
leading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: leading }) : null,
|
|
1751
1751
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1752
1752
|
"div",
|
|
@@ -1831,11 +1831,6 @@ var defaultLabels3 = {
|
|
|
1831
1831
|
personalProfile: "Personal profile",
|
|
1832
1832
|
activity: "Activity",
|
|
1833
1833
|
professionalProfile: "Professional profile",
|
|
1834
|
-
mainApp: "Main app",
|
|
1835
|
-
orgManagement: "Organization management",
|
|
1836
|
-
backoffice: "Backoffice",
|
|
1837
|
-
memberOrgs: "My organizations",
|
|
1838
|
-
managementOrgs: "Management team",
|
|
1839
1834
|
showMoreOrgs: "Show more",
|
|
1840
1835
|
showLessOrgs: "Show less",
|
|
1841
1836
|
manageOrg: "Manage organization",
|
|
@@ -1914,9 +1909,9 @@ function LanguageThemeSubs({
|
|
|
1914
1909
|
const themeValue = theme ?? "system";
|
|
1915
1910
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1916
1911
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
|
|
1917
|
-
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
|
|
1918
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1919
|
-
|
|
1912
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2 [&>svg:last-child]:ml-0", children: [
|
|
1913
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.language }),
|
|
1914
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Languages, { className: "size-4" })
|
|
1920
1915
|
] }),
|
|
1921
1916
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-40", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1922
1917
|
DropdownMenuRadioGroup,
|
|
@@ -1928,9 +1923,9 @@ function LanguageThemeSubs({
|
|
|
1928
1923
|
) })
|
|
1929
1924
|
] }),
|
|
1930
1925
|
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSub, { children: [
|
|
1931
|
-
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2", children: [
|
|
1932
|
-
|
|
1933
|
-
|
|
1926
|
+
/* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuSubTrigger, { className: "gap-2 [&>svg:last-child]:ml-0", children: [
|
|
1927
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.theme }),
|
|
1928
|
+
themeValue === "light" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { className: "size-4" }) : themeValue === "dark" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Monitor, { className: "size-4" })
|
|
1934
1929
|
] }),
|
|
1935
1930
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSubContent, { className: "min-w-40", children: /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuRadioGroup, { value: themeValue, onValueChange: setTheme, children: [
|
|
1936
1931
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuRadioItem, { value: "system", children: labels.themeSystem }),
|
|
@@ -1964,14 +1959,14 @@ function OrgMenuRows({
|
|
|
1964
1959
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1965
1960
|
"div",
|
|
1966
1961
|
{
|
|
1967
|
-
className: "relative
|
|
1962
|
+
className: "relative",
|
|
1968
1963
|
"data-testid": `platform-account-org-${org.id}`,
|
|
1969
1964
|
children: [
|
|
1970
1965
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1971
1966
|
DropdownMenuItem,
|
|
1972
1967
|
{
|
|
1973
1968
|
asChild: true,
|
|
1974
|
-
className: cn("
|
|
1969
|
+
className: cn("gap-2", org.canManage && "pr-9"),
|
|
1975
1970
|
children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: orgHomeHref, children: [
|
|
1976
1971
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1977
1972
|
MenuAvatar,
|
|
@@ -1981,7 +1976,7 @@ function OrgMenuRows({
|
|
|
1981
1976
|
sizeClass: "size-6"
|
|
1982
1977
|
}
|
|
1983
1978
|
),
|
|
1984
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: org.name })
|
|
1979
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: org.name })
|
|
1985
1980
|
] })
|
|
1986
1981
|
}
|
|
1987
1982
|
),
|
|
@@ -1989,8 +1984,8 @@ function OrgMenuRows({
|
|
|
1989
1984
|
DropdownMenuItem,
|
|
1990
1985
|
{
|
|
1991
1986
|
asChild: true,
|
|
1992
|
-
className: "absolute right-
|
|
1993
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: manageHref, "aria-label": labels.manageOrg, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-
|
|
1987
|
+
className: "absolute right-0.5 top-1/2 size-7 -translate-y-1/2 p-0",
|
|
1988
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: manageHref, "aria-label": labels.manageOrg, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" }) })
|
|
1994
1989
|
}
|
|
1995
1990
|
) : null
|
|
1996
1991
|
]
|
|
@@ -1998,7 +1993,7 @@ function OrgMenuRows({
|
|
|
1998
1993
|
org.id
|
|
1999
1994
|
);
|
|
2000
1995
|
}),
|
|
2001
|
-
collapsible ? /* @__PURE__ */ jsxRuntime.
|
|
1996
|
+
collapsible ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2002
1997
|
DropdownMenuItem,
|
|
2003
1998
|
{
|
|
2004
1999
|
className: "gap-2",
|
|
@@ -2006,13 +2001,10 @@ function OrgMenuRows({
|
|
|
2006
2001
|
event.preventDefault();
|
|
2007
2002
|
setExpanded((value) => !value);
|
|
2008
2003
|
},
|
|
2009
|
-
children:
|
|
2010
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2011
|
-
|
|
2012
|
-
]
|
|
2013
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4" }),
|
|
2014
|
-
labels.showMoreOrgs
|
|
2015
|
-
] })
|
|
2004
|
+
children: [
|
|
2005
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: expanded ? labels.showLessOrgs : labels.showMoreOrgs }),
|
|
2006
|
+
expanded ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4" })
|
|
2007
|
+
]
|
|
2016
2008
|
}
|
|
2017
2009
|
) : null
|
|
2018
2010
|
]
|
|
@@ -2023,7 +2015,6 @@ function PlatformAccountMenu({
|
|
|
2023
2015
|
variant = "platform",
|
|
2024
2016
|
isPending = false,
|
|
2025
2017
|
user = null,
|
|
2026
|
-
isAdmin = false,
|
|
2027
2018
|
verificationStatus = "unverified",
|
|
2028
2019
|
urls,
|
|
2029
2020
|
memberOrgs = [],
|
|
@@ -2047,6 +2038,7 @@ function PlatformAccountMenu({
|
|
|
2047
2038
|
() => mergePlatformAccountOrgs(memberOrgs, manageableOrgs),
|
|
2048
2039
|
[memberOrgs, manageableOrgs]
|
|
2049
2040
|
);
|
|
2041
|
+
const hasOrgs = mergedOrgs.length > 0;
|
|
2050
2042
|
const loginHref = `${urls.authAppUrl}${urls.loginPath ?? "/login"}`;
|
|
2051
2043
|
const accountHref = `${urls.authAppUrl}${urls.accountPath ?? "/account"}`;
|
|
2052
2044
|
const activityHref = `${urls.authAppUrl}${urls.activityPath ?? "/account/activity"}`;
|
|
@@ -2126,37 +2118,36 @@ function PlatformAccountMenu({
|
|
|
2126
2118
|
] }),
|
|
2127
2119
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
|
|
2128
2120
|
variant === "platform" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2121
|
+
hasOrgs ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2122
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2123
|
+
OrgMenuRows,
|
|
2124
|
+
{
|
|
2125
|
+
orgs: mergedOrgs,
|
|
2126
|
+
appUrl: urls.appUrl,
|
|
2127
|
+
adminUrl: urls.adminUrl,
|
|
2128
|
+
labels
|
|
2129
|
+
}
|
|
2130
|
+
),
|
|
2131
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {})
|
|
2132
|
+
] }) : null,
|
|
2129
2133
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: accountHref, children: [
|
|
2130
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2131
|
-
|
|
2134
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.personalProfile }),
|
|
2135
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-4" })
|
|
2132
2136
|
] }) }),
|
|
2133
2137
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: activityHref, children: [
|
|
2134
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2135
|
-
|
|
2138
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.activity }),
|
|
2139
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Activity, { className: "size-4" })
|
|
2136
2140
|
] }) }),
|
|
2137
2141
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: profileHref, children: [
|
|
2138
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2139
|
-
|
|
2142
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.professionalProfile }),
|
|
2143
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "size-4" })
|
|
2140
2144
|
] }) }),
|
|
2141
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2142
|
-
OrgMenuRows,
|
|
2143
|
-
{
|
|
2144
|
-
orgs: mergedOrgs,
|
|
2145
|
-
appUrl: urls.appUrl,
|
|
2146
|
-
adminUrl: urls.adminUrl,
|
|
2147
|
-
labels
|
|
2148
|
-
}
|
|
2149
|
-
),
|
|
2150
2145
|
extraItems,
|
|
2151
|
-
isAdmin && urls.backofficeUrl ? /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: urls.backofficeUrl, children: [
|
|
2152
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutDashboard, { className: "size-4" }),
|
|
2153
|
-
labels.backoffice
|
|
2154
|
-
] }) }) : null,
|
|
2155
2146
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {})
|
|
2156
2147
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2157
2148
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: accountHref, children: [
|
|
2158
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2159
|
-
|
|
2149
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.accountSettings }),
|
|
2150
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "size-4" })
|
|
2160
2151
|
] }) }),
|
|
2161
2152
|
extraItems,
|
|
2162
2153
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {})
|
|
@@ -2181,8 +2172,8 @@ function PlatformAccountMenu({
|
|
|
2181
2172
|
void handleSignOut();
|
|
2182
2173
|
},
|
|
2183
2174
|
children: [
|
|
2184
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2185
|
-
|
|
2175
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: signingOut ? labels.signingOut : labels.signOut }),
|
|
2176
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogOut, { className: "size-4" })
|
|
2186
2177
|
]
|
|
2187
2178
|
}
|
|
2188
2179
|
)
|
|
@@ -2198,8 +2189,8 @@ function PlatformAccountMenu({
|
|
|
2198
2189
|
),
|
|
2199
2190
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuSeparator, {}),
|
|
2200
2191
|
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItem, { asChild: true, className: "gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("a", { href: loginHref, children: [
|
|
2201
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2202
|
-
|
|
2192
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: labels.signIn }),
|
|
2193
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.LogIn, { className: "size-4" })
|
|
2203
2194
|
] }) })
|
|
2204
2195
|
] })
|
|
2205
2196
|
}
|
|
@@ -3797,7 +3788,7 @@ function insertAtCaret(element, value, text) {
|
|
|
3797
3788
|
}
|
|
3798
3789
|
|
|
3799
3790
|
// src/components/emoji/emoji-field-shared.ts
|
|
3800
|
-
var emojiFieldWrapperClassName = "relative w-full rounded-md border border-input bg-transparent shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-[[aria-invalid=true]]:border-destructive has-[[aria-invalid=true]]:ring-destructive/20 has-[:disabled]:opacity-50 dark:bg-input/30 dark:has-[[aria-invalid=true]]:ring-destructive/40";
|
|
3791
|
+
var emojiFieldWrapperClassName = "relative w-full rounded-md border border-input bg-transparent shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-[[aria-invalid=true]]:border-destructive has-[[aria-invalid=true]]:ring-destructive/20 has-[[data-slot=textarea]:disabled]:opacity-50 has-[[data-slot=input]:disabled]:opacity-50 dark:bg-input/30 dark:has-[[aria-invalid=true]]:ring-destructive/40";
|
|
3801
3792
|
var emojiFieldResetClassName = "border-0 bg-transparent shadow-none focus-visible:border-transparent focus-visible:ring-0 dark:bg-transparent";
|
|
3802
3793
|
function mergeRefs(...refs) {
|
|
3803
3794
|
return (node) => {
|
|
@@ -4523,6 +4514,7 @@ function VideoPlayer({
|
|
|
4523
4514
|
stats,
|
|
4524
4515
|
labels,
|
|
4525
4516
|
showQualitySelector = true,
|
|
4517
|
+
paused = false,
|
|
4526
4518
|
onPlayingChange,
|
|
4527
4519
|
onFirstPlay,
|
|
4528
4520
|
onError,
|
|
@@ -4614,6 +4606,11 @@ function VideoPlayer({
|
|
|
4614
4606
|
video.removeEventListener("ratechange", onRate);
|
|
4615
4607
|
};
|
|
4616
4608
|
}, [videoRef, active, mode]);
|
|
4609
|
+
React7__namespace.useEffect(() => {
|
|
4610
|
+
const video = videoRef.current;
|
|
4611
|
+
if (!paused || !video || !isPlaying) return;
|
|
4612
|
+
video.pause();
|
|
4613
|
+
}, [paused, videoRef, isPlaying]);
|
|
4617
4614
|
React7__namespace.useEffect(() => {
|
|
4618
4615
|
setWebkitFullscreenSupported(hasWebkitVideoFullscreen(videoRef.current));
|
|
4619
4616
|
}, [videoRef, active]);
|
|
@@ -5121,6 +5118,106 @@ function MenuItem({
|
|
|
5121
5118
|
}
|
|
5122
5119
|
);
|
|
5123
5120
|
}
|
|
5121
|
+
|
|
5122
|
+
// src/components/video/feedPlaybackCoordinator.ts
|
|
5123
|
+
var players = /* @__PURE__ */ new Map();
|
|
5124
|
+
function registerFeedPlayer(id, pause) {
|
|
5125
|
+
players.set(id, pause);
|
|
5126
|
+
return () => {
|
|
5127
|
+
if (players.get(id) === pause) {
|
|
5128
|
+
players.delete(id);
|
|
5129
|
+
}
|
|
5130
|
+
};
|
|
5131
|
+
}
|
|
5132
|
+
function claimFeedPlaying(id) {
|
|
5133
|
+
for (const [otherId, pause] of players) {
|
|
5134
|
+
if (otherId !== id) pause();
|
|
5135
|
+
}
|
|
5136
|
+
}
|
|
5137
|
+
|
|
5138
|
+
// src/components/video/useFeedExclusivePlayback.ts
|
|
5139
|
+
var VISIBILITY_THRESHOLDS = [0, 0.5, 1];
|
|
5140
|
+
var MIN_VISIBLE_RATIO = 0.5;
|
|
5141
|
+
function videoInPictureInPicture(container) {
|
|
5142
|
+
if (typeof document === "undefined" || !container) return false;
|
|
5143
|
+
const pip = document.pictureInPictureElement;
|
|
5144
|
+
if (!pip) return false;
|
|
5145
|
+
return container.contains(pip);
|
|
5146
|
+
}
|
|
5147
|
+
function useFeedExclusivePlayback(playbackId) {
|
|
5148
|
+
const containerRef = React7__namespace.useRef(null);
|
|
5149
|
+
const [forcePaused, setForcePaused] = React7__namespace.useState(false);
|
|
5150
|
+
const requestPause = React7__namespace.useCallback(() => {
|
|
5151
|
+
if (videoInPictureInPicture(containerRef.current)) return;
|
|
5152
|
+
setForcePaused(true);
|
|
5153
|
+
}, []);
|
|
5154
|
+
React7__namespace.useEffect(() => {
|
|
5155
|
+
return registerFeedPlayer(playbackId, requestPause);
|
|
5156
|
+
}, [playbackId, requestPause]);
|
|
5157
|
+
React7__namespace.useEffect(() => {
|
|
5158
|
+
const node = containerRef.current;
|
|
5159
|
+
if (!node || typeof IntersectionObserver === "undefined") return;
|
|
5160
|
+
const observer = new IntersectionObserver(
|
|
5161
|
+
(entries) => {
|
|
5162
|
+
const entry = entries[0];
|
|
5163
|
+
if (!entry) return;
|
|
5164
|
+
if (!entry.isIntersecting || entry.intersectionRatio < MIN_VISIBLE_RATIO) {
|
|
5165
|
+
requestPause();
|
|
5166
|
+
}
|
|
5167
|
+
},
|
|
5168
|
+
{ threshold: [...VISIBILITY_THRESHOLDS] }
|
|
5169
|
+
);
|
|
5170
|
+
observer.observe(node);
|
|
5171
|
+
return () => observer.disconnect();
|
|
5172
|
+
}, [requestPause]);
|
|
5173
|
+
React7__namespace.useEffect(() => {
|
|
5174
|
+
const onVisibility = () => {
|
|
5175
|
+
if (document.hidden) requestPause();
|
|
5176
|
+
};
|
|
5177
|
+
document.addEventListener("visibilitychange", onVisibility);
|
|
5178
|
+
return () => document.removeEventListener("visibilitychange", onVisibility);
|
|
5179
|
+
}, [requestPause]);
|
|
5180
|
+
const onPlayingChange = React7__namespace.useCallback(
|
|
5181
|
+
(playing) => {
|
|
5182
|
+
if (!playing) return;
|
|
5183
|
+
setForcePaused(false);
|
|
5184
|
+
claimFeedPlaying(playbackId);
|
|
5185
|
+
},
|
|
5186
|
+
[playbackId]
|
|
5187
|
+
);
|
|
5188
|
+
return {
|
|
5189
|
+
containerRef,
|
|
5190
|
+
paused: forcePaused,
|
|
5191
|
+
onPlayingChange
|
|
5192
|
+
};
|
|
5193
|
+
}
|
|
5194
|
+
function FeedVideoPlayer({
|
|
5195
|
+
playbackId,
|
|
5196
|
+
onPlayingChange,
|
|
5197
|
+
paused: pausedProp,
|
|
5198
|
+
...playerProps
|
|
5199
|
+
}) {
|
|
5200
|
+
const {
|
|
5201
|
+
containerRef,
|
|
5202
|
+
paused: exclusivePaused,
|
|
5203
|
+
onPlayingChange: onExclusivePlayingChange
|
|
5204
|
+
} = useFeedExclusivePlayback(playbackId);
|
|
5205
|
+
const handlePlayingChange = React7__namespace.useCallback(
|
|
5206
|
+
(playing) => {
|
|
5207
|
+
onExclusivePlayingChange(playing);
|
|
5208
|
+
onPlayingChange?.(playing);
|
|
5209
|
+
},
|
|
5210
|
+
[onExclusivePlayingChange, onPlayingChange]
|
|
5211
|
+
);
|
|
5212
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: containerRef, "data-slot": "feed-video-player", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5213
|
+
VideoPlayer,
|
|
5214
|
+
{
|
|
5215
|
+
...playerProps,
|
|
5216
|
+
paused: pausedProp || exclusivePaused,
|
|
5217
|
+
onPlayingChange: handlePlayingChange
|
|
5218
|
+
}
|
|
5219
|
+
) });
|
|
5220
|
+
}
|
|
5124
5221
|
function usePlaybackStats(statsUrl, { intervalMs = 15e3, enabled = true } = {}) {
|
|
5125
5222
|
const [stats, setStats] = React7__namespace.useState({});
|
|
5126
5223
|
React7__namespace.useEffect(() => {
|
|
@@ -7272,6 +7369,7 @@ function SupportMessengerProvider({
|
|
|
7272
7369
|
className
|
|
7273
7370
|
}) {
|
|
7274
7371
|
const isMobile = useMediaQuery2("(max-width: 767px)");
|
|
7372
|
+
const dockRef = React7.useRef(null);
|
|
7275
7373
|
const [listOpen, setListOpen] = React7.useState(false);
|
|
7276
7374
|
const [threads, setThreads] = React7.useState([]);
|
|
7277
7375
|
const [mobileThreadKey, setMobileThreadKey] = React7.useState(null);
|
|
@@ -7279,6 +7377,7 @@ function SupportMessengerProvider({
|
|
|
7279
7377
|
() => items.reduce((sum, item) => sum + (item.unreadCount ?? 0), 0),
|
|
7280
7378
|
[items]
|
|
7281
7379
|
);
|
|
7380
|
+
const isDesktopOpen = !isMobile && (listOpen || threads.length > 0);
|
|
7282
7381
|
React7.useEffect(() => {
|
|
7283
7382
|
if (!forceMinimized) return;
|
|
7284
7383
|
setListOpen(false);
|
|
@@ -7321,6 +7420,20 @@ function SupportMessengerProvider({
|
|
|
7321
7420
|
setThreads([]);
|
|
7322
7421
|
setMobileThreadKey(null);
|
|
7323
7422
|
}, []);
|
|
7423
|
+
React7.useEffect(() => {
|
|
7424
|
+
if (!isDesktopOpen) return;
|
|
7425
|
+
function onPointerDown(event) {
|
|
7426
|
+
const target = event.target;
|
|
7427
|
+
if (!(target instanceof Node)) return;
|
|
7428
|
+
if (dockRef.current?.contains(target)) return;
|
|
7429
|
+
if (target instanceof Element && target.closest('[data-slot="popover-content"]')) {
|
|
7430
|
+
return;
|
|
7431
|
+
}
|
|
7432
|
+
closeAll();
|
|
7433
|
+
}
|
|
7434
|
+
document.addEventListener("pointerdown", onPointerDown);
|
|
7435
|
+
return () => document.removeEventListener("pointerdown", onPointerDown);
|
|
7436
|
+
}, [isDesktopOpen, closeAll]);
|
|
7324
7437
|
const ctx = React7.useMemo(
|
|
7325
7438
|
() => ({
|
|
7326
7439
|
listOpen,
|
|
@@ -7364,6 +7477,7 @@ function SupportMessengerProvider({
|
|
|
7364
7477
|
enabled ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7365
7478
|
"div",
|
|
7366
7479
|
{
|
|
7480
|
+
ref: dockRef,
|
|
7367
7481
|
className: cn(
|
|
7368
7482
|
"pointer-events-none fixed right-4 bottom-4 z-50 flex flex-col items-end gap-3",
|
|
7369
7483
|
className
|
|
@@ -7761,6 +7875,7 @@ exports.EmptyState = EmptyState;
|
|
|
7761
7875
|
exports.EmptyTitle = EmptyTitle;
|
|
7762
7876
|
exports.ErrorState = ErrorState;
|
|
7763
7877
|
exports.ExpandableText = ExpandableText;
|
|
7878
|
+
exports.FeedVideoPlayer = FeedVideoPlayer;
|
|
7764
7879
|
exports.ImageLightbox = ImageLightbox;
|
|
7765
7880
|
exports.LanguageContext = LanguageContext;
|
|
7766
7881
|
exports.LanguageSwitcher = LanguageSwitcher;
|
|
@@ -7814,6 +7929,7 @@ exports.normalizeEmojiQuery = normalizeEmojiQuery;
|
|
|
7814
7929
|
exports.shouldRetryLiveEdge404 = shouldRetryLiveEdge404;
|
|
7815
7930
|
exports.useDebouncedValue = useDebouncedValue;
|
|
7816
7931
|
exports.useDebouncedValueStrict = useDebouncedValueStrict;
|
|
7932
|
+
exports.useFeedExclusivePlayback = useFeedExclusivePlayback;
|
|
7817
7933
|
exports.useHlsPlayback = useHlsPlayback;
|
|
7818
7934
|
exports.useLanguageContext = useLanguageContext;
|
|
7819
7935
|
exports.useMediaQuery = useMediaQuery2;
|