@flamingo-stack/openframe-frontend-core 0.0.844 → 0.0.846
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/{case-study-card-VN3JBNF5.cjs → case-study-card-DJOHIHYU.cjs} +3 -3
- package/dist/{chunk-KSOBM66X.cjs → chunk-2FUTZKLB.cjs} +4 -4
- package/dist/{chunk-SVI3AB3A.cjs → chunk-57JYB3E2.cjs} +3 -3
- package/dist/{chunk-23DVVS4I.cjs → chunk-ABL5OBSF.cjs} +110 -110
- package/dist/{chunk-EUEPGHY4.cjs → chunk-BIOSHDXQ.cjs} +14 -11
- package/dist/{chunk-4ASUUB3A.cjs → chunk-BZZE4KIV.cjs} +71 -71
- package/dist/{chunk-MWQOM2EI.cjs → chunk-D5DMWXF2.cjs} +4 -4
- package/dist/{chunk-B4FUDHRE.cjs → chunk-DEEQSVLX.cjs} +62 -62
- package/dist/{chunk-NMLNZCK2.cjs → chunk-DGQDGCQH.cjs} +2 -2
- package/dist/{chunk-6HFTSVVC.cjs → chunk-FLW4WULE.cjs} +8 -8
- package/dist/{chunk-GBB7NLN7.cjs → chunk-HBDLJUI3.cjs} +3 -3
- package/dist/{chunk-SOTTMZ6U.cjs → chunk-HPXET3LH.cjs} +17 -17
- package/dist/{chunk-QPJUQ5YU.cjs → chunk-J2ZSGOUC.cjs} +14 -14
- package/dist/{chunk-M7QI23GE.cjs → chunk-MPVOPSU6.cjs} +74 -74
- package/dist/{chunk-EGOCAIZJ.cjs → chunk-N2A24FDF.cjs} +183 -181
- package/dist/{chunk-6CZVQ72C.cjs → chunk-PGAMWM6C.cjs} +3 -3
- package/dist/{chunk-KSPMB4GV.cjs → chunk-PQDCSZ3W.cjs} +52 -51
- package/dist/{chunk-7ERU4NGF.cjs → chunk-PV3NKXWS.cjs} +39 -39
- package/dist/{chunk-6M764K5Z.cjs → chunk-QK2A334V.cjs} +5 -5
- package/dist/{chunk-SC36S7DJ.cjs → chunk-RAJ5FYFL.cjs} +2 -2
- package/dist/{chunk-WPMJUYW3.cjs → chunk-SIFRIUPW.cjs} +79 -79
- package/dist/{chunk-5CPEMPNP.cjs → chunk-TBOWFTEN.cjs} +2 -2
- package/dist/{chunk-RSZZTB5T.cjs → chunk-URP6GYTD.cjs} +49 -49
- package/dist/{chunk-USUVHAQ7.cjs → chunk-X432Y6RM.cjs} +29 -1
- package/dist/{chunk-WUJGPHF2.cjs → chunk-Y2OEC7UW.cjs} +20 -20
- package/dist/{chunk-C2X73N3E.cjs → chunk-YC52LSPP.cjs} +34 -34
- package/dist/{chunk-IUWCOK3X.cjs → chunk-ZTO7KNYV.cjs} +11 -11
- package/dist/{cloud-tenants-5C32YDIE.cjs → cloud-tenants-XEUUMABT.cjs} +10 -10
- package/dist/components/case-studies/index.cjs +25 -25
- package/dist/components/chat/index.cjs +8 -8
- package/dist/components/contact/index.cjs +11 -11
- package/dist/components/docs/index.cjs +14 -14
- package/dist/components/embeds/index.cjs +11 -11
- package/dist/components/faq/index.cjs +12 -12
- package/dist/components/features/index.cjs +10 -10
- package/dist/components/features/video-hover-preview.d.ts +7 -1
- package/dist/components/features/video-hover-preview.d.ts.map +1 -1
- package/dist/components/features/video-hover-preview.js +4 -1
- package/dist/components/features/video-shared.d.ts +2 -0
- package/dist/components/features/video-shared.d.ts.map +1 -1
- package/dist/components/features/video-shared.js +29 -1
- package/dist/components/help-center-pages/index.cjs +85 -85
- package/dist/components/index.cjs +55 -55
- package/dist/components/meeting-scheduler/index.cjs +36 -36
- package/dist/components/navigation/index.cjs +13 -13
- package/dist/components/navigation/site-footer.d.ts.map +1 -1
- package/dist/components/navigation/site-footer.js +2 -1
- package/dist/components/onboarding-guides/index.cjs +13 -13
- package/dist/components/product-demo/index.cjs +19 -19
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/social-icon-row.d.ts.map +1 -1
- package/dist/components/social-icon-row.js +2 -0
- package/dist/components/tickets/index.cjs +15 -15
- package/dist/components/ui/index.cjs +10 -10
- package/dist/{devices-F2ENCTJM.cjs → devices-7YDIHVVP.cjs} +11 -11
- package/dist/{embeddable-chat-C6DUH2JL.cjs → embeddable-chat-Z3S37SSM.cjs} +78 -78
- package/dist/index.cjs +14 -14
- package/dist/{knowledge-ZNUNREKL.cjs → knowledge-SQVPQSKM.cjs} +11 -11
- package/dist/{logs-DHZFCX2I.cjs → logs-M5DFGUBC.cjs} +17 -17
- package/dist/{policies-2FKRLSOC.cjs → policies-T3VQEJUD.cjs} +14 -14
- package/dist/{scripts-J3J7XCT4.cjs → scripts-JFRFJKPH.cjs} +15 -15
- package/dist/{software-update-AIQHLJ5O.cjs → software-update-E7W3AAIY.cjs} +13 -13
- package/dist/types/navigation.d.ts +2 -0
- package/dist/types/navigation.d.ts.map +1 -1
- package/dist/{video-file-player-IHO66P2Q.cjs → video-file-player-XMOB234V.cjs} +11 -11
- package/package.json +1 -1
- package/src/components/features/video-hover-preview.tsx +48 -38
- package/src/components/features/video-shared.tsx +36 -0
- package/src/components/navigation/site-footer.tsx +3 -2
- package/src/components/social-icon-row.tsx +2 -0
- package/src/types/navigation.ts +8 -1
|
@@ -16,9 +16,15 @@
|
|
|
16
16
|
* - Player mount is controlled via `playerMounted` (the strip's shared gate)
|
|
17
17
|
* OR self-managed here via a two-way near-viewport observer (standalone
|
|
18
18
|
* editor cards). Exactly one path is ever active.
|
|
19
|
+
* - Inside that gate the player waits for the visitor's first input: until then
|
|
20
|
+
* the card is its poster, and a visitor who only reads the first screen loads
|
|
21
|
+
* no player (the largest script a page can load, 1.1 MB to parse). From that
|
|
22
|
+
* input on it mounts near the screen, because a hover must find a player with
|
|
23
|
+
* its stream loaded: mounting on the first hover made the bites strip start
|
|
24
|
+
* late and stutter, and was removed (CU-17tkuw5xp4q).
|
|
19
25
|
*/
|
|
20
26
|
import type React from 'react';
|
|
21
|
-
import type
|
|
27
|
+
import { type VideoPlayerHandle, type VideoMutedFallbackState } from './video-shared';
|
|
22
28
|
export interface VideoHoverPreviewSurfaceProps {
|
|
23
29
|
/** Source URL (Mux HLS / Supabase mp4). Rendition-capped internally. */
|
|
24
30
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-hover-preview.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-hover-preview.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"video-hover-preview.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-hover-preview.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAmB,KAAK,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvG,MAAM,WAAW,6BAA6B;IAC5C,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;wEACoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB;0CACsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,uCAAuC;IACvC,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,4HAA4H;IAC5H,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;gFAC4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;gFAE4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACjE,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChD;4EACwE;IACxE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;gFAE4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;gEAE4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,SAAgB,EAChB,MAAM,EACN,aAAa,EACb,OAAe,EACf,KAAc,EACd,GAAG,EACH,WAAqC,EACrC,YAAoB,EACpB,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,WAAmB,EACnB,YAAoB,EACpB,SAAS,EACT,QAAgB,EAChB,UAAkB,EAClB,OAAO,EACP,SAAS,GACV,EAAE,6BAA6B,GAAG,KAAK,CAAC,YAAY,CAyGpD"}
|
|
@@ -9,6 +9,7 @@ import { useCoverImageFallback } from "../chat/entity-cards/use-cover-image-fall
|
|
|
9
9
|
import { toMuxPreviewUrl } from "./mux-origins.js";
|
|
10
10
|
import { Video } from "./video.js";
|
|
11
11
|
import { VideoPlayBadge } from "./video-center-badge.js";
|
|
12
|
+
import { useVisitorActed } from "./video-shared.js";
|
|
12
13
|
function VideoHoverPreviewSurface({
|
|
13
14
|
url,
|
|
14
15
|
posterUrl = null,
|
|
@@ -46,6 +47,8 @@ function VideoHoverPreviewSurface({
|
|
|
46
47
|
return () => io.disconnect();
|
|
47
48
|
}, [gateControlled]);
|
|
48
49
|
const showMedia = continuation || (gateControlled ? playerMounted : isNear);
|
|
50
|
+
const visitorActed = useVisitorActed();
|
|
51
|
+
const showPlayer = continuation || active || visitorActed;
|
|
49
52
|
const { src: posterSrc, onError: onPosterError } = useCoverImageFallback(posterUrl);
|
|
50
53
|
const facadeSkipped = preload === "none" && !posterSrc;
|
|
51
54
|
return /* @__PURE__ */ jsx("div", { ref: rootElRef, className: cn("absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -63,7 +66,7 @@ function VideoHoverPreviewSurface({
|
|
|
63
66
|
}
|
|
64
67
|
) : facadeSkipped ? /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-ods-card" }) : /* @__PURE__ */ jsx(Video, { kind: "file", url: previewUrl, firstFrameOnly: true, layout: "fill", fit }),
|
|
65
68
|
badge === "play" && !active && !continuation && /* @__PURE__ */ jsx(VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
|
|
66
|
-
/* @__PURE__ */ jsx(
|
|
69
|
+
showPlayer && /* @__PURE__ */ jsx(
|
|
67
70
|
"div",
|
|
68
71
|
{
|
|
69
72
|
className: "absolute inset-0",
|
|
@@ -13,6 +13,8 @@ import type React from 'react';
|
|
|
13
13
|
export declare function hasUserInteracted(): boolean;
|
|
14
14
|
/** Callbacks run once, on the page's first click or key press. */
|
|
15
15
|
export declare const activationWaiters: Set<() => void>;
|
|
16
|
+
/** True once the visitor has moved the pointer, touched the page, turned the wheel or pressed a key. False on the server. */
|
|
17
|
+
export declare function useVisitorActed(): boolean;
|
|
16
18
|
export type VideoFailureKind = 'file' | 'youtube';
|
|
17
19
|
/** `stall`: buffering that never cleared while playback was expected. */
|
|
18
20
|
export type VideoFailureReason = 'error' | 'stall';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-shared.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-shared.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"video-shared.d.ts","sourceRoot":"","sources":["../../../src/components/features/video-shared.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useSyncExternalStore } from "react";
|
|
3
4
|
import { Button } from "../ui/button/index.js";
|
|
4
5
|
let userHasInteracted = false;
|
|
5
6
|
function hasUserInteracted() {
|
|
@@ -26,6 +27,32 @@ if (typeof window !== "undefined") {
|
|
|
26
27
|
window.addEventListener("keydown", markActivated, true);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
const VISITOR_INPUT_EVENTS = ["pointermove", "pointerdown", "keydown", "wheel"];
|
|
31
|
+
let visitorActed = false;
|
|
32
|
+
const visitorActedListeners = /* @__PURE__ */ new Set();
|
|
33
|
+
if (typeof window !== "undefined") {
|
|
34
|
+
const markActed = () => {
|
|
35
|
+
visitorActed = true;
|
|
36
|
+
for (const type of VISITOR_INPUT_EVENTS) window.removeEventListener(type, markActed, true);
|
|
37
|
+
for (const listener of visitorActedListeners) listener();
|
|
38
|
+
visitorActedListeners.clear();
|
|
39
|
+
};
|
|
40
|
+
for (const type of VISITOR_INPUT_EVENTS) window.addEventListener(type, markActed, { capture: true, passive: true });
|
|
41
|
+
}
|
|
42
|
+
function subscribeToVisitorActed(listener) {
|
|
43
|
+
if (visitorActed) return () => void 0;
|
|
44
|
+
visitorActedListeners.add(listener);
|
|
45
|
+
return () => {
|
|
46
|
+
visitorActedListeners.delete(listener);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function useVisitorActed() {
|
|
50
|
+
return useSyncExternalStore(
|
|
51
|
+
subscribeToVisitorActed,
|
|
52
|
+
() => visitorActed,
|
|
53
|
+
() => false
|
|
54
|
+
);
|
|
55
|
+
}
|
|
29
56
|
const VIDEO_PLAYBACK_FAILED_EVENT = "flamingo:video-playback-failed";
|
|
30
57
|
function reportPlaybackFailure(detail) {
|
|
31
58
|
if (typeof window === "undefined") return;
|
|
@@ -99,5 +126,6 @@ export {
|
|
|
99
126
|
hasUserInteracted,
|
|
100
127
|
pickFilePlayback,
|
|
101
128
|
pickYouTube,
|
|
102
|
-
reportPlaybackFailure
|
|
129
|
+
reportPlaybackFailure,
|
|
130
|
+
useVisitorActed
|
|
103
131
|
};
|