@m4l/gclick 0.24.1 → 0.25.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.
Files changed (86) hide show
  1. package/components/CameraStream/defaults/DefaultPhaseStreaming.d.ts +4 -0
  2. package/components/CameraStream/defaults/DefaultPhaseStreaming.d.ts.map +1 -1
  3. package/components/CameraStream/defaults/DefaultPhaseStreaming.js +35 -33
  4. package/components/CameraStreams/CameraStreamsProvider.d.ts +5 -0
  5. package/components/CameraStreams/CameraStreamsProvider.d.ts.map +1 -1
  6. package/components/CameraStreams/CameraStreamsProvider.js +10 -11
  7. package/components/CameraStreams/contexts/CameraStreamPlayersContext.d.ts +7 -3
  8. package/components/CameraStreams/contexts/CameraStreamPlayersContext.d.ts.map +1 -1
  9. package/components/CameraStreams/contexts/CameraStreamsSuspensionContext.d.ts +15 -0
  10. package/components/CameraStreams/contexts/CameraStreamsSuspensionContext.d.ts.map +1 -0
  11. package/components/CameraStreams/contexts/CameraStreamsSuspensionContext.js +5 -0
  12. package/components/CameraStreams/hooks/useCameraStreamsSuspended.d.ts +7 -0
  13. package/components/CameraStreams/hooks/useCameraStreamsSuspended.d.ts.map +1 -0
  14. package/components/CameraStreams/hooks/useCameraStreamsSuspended.js +8 -0
  15. package/components/CameraStreams/hooks/useStreamPolling.d.ts +1 -11
  16. package/components/CameraStreams/hooks/useStreamPolling.d.ts.map +1 -1
  17. package/components/CameraStreams/hooks/useStreamPolling.js +84 -89
  18. package/components/CameraStreams/hooks/useStreamRequest.d.ts +7 -8
  19. package/components/CameraStreams/hooks/useStreamRequest.d.ts.map +1 -1
  20. package/components/CameraStreams/hooks/useStreamRequest.js +34 -50
  21. package/components/CameraStreams/index.d.ts +2 -0
  22. package/components/CameraStreams/index.d.ts.map +1 -1
  23. package/components/CameraStreams/types.d.ts +23 -10
  24. package/components/CameraStreams/types.d.ts.map +1 -1
  25. package/components/VideoPlayer/VideoPlayer.d.ts +3 -3
  26. package/components/VideoPlayer/VideoPlayer.d.ts.map +1 -1
  27. package/components/VideoPlayer/VideoPlayer.js +29 -25
  28. package/components/VideoPlayer/VideoPlayer.styles.d.ts.map +1 -1
  29. package/components/VideoPlayer/VideoPlayer.styles.js +32 -6
  30. package/components/VideoPlayer/VideojsDefaultSkin.styles.d.ts.map +1 -1
  31. package/components/VideoPlayer/VideojsDefaultSkin.styles.js +936 -807
  32. package/components/VideoPlayer/VideojsMinimalSkin.styles.d.ts.map +1 -1
  33. package/components/VideoPlayer/VideojsMinimalSkin.styles.js +901 -809
  34. package/components/VideoPlayer/constants.d.ts +16 -0
  35. package/components/VideoPlayer/constants.d.ts.map +1 -1
  36. package/components/VideoPlayer/constants.js +27 -8
  37. package/components/VideoPlayer/hlsSource.d.ts +41 -0
  38. package/components/VideoPlayer/hlsSource.d.ts.map +1 -0
  39. package/components/VideoPlayer/hlsSource.js +35 -0
  40. package/components/VideoPlayer/hooks/useMediaReadiness.d.ts +22 -0
  41. package/components/VideoPlayer/hooks/useMediaReadiness.d.ts.map +1 -0
  42. package/components/VideoPlayer/hooks/useMediaReadiness.js +21 -0
  43. package/components/VideoPlayer/hooks/usePlaybackIntent.d.ts +14 -0
  44. package/components/VideoPlayer/hooks/usePlaybackIntent.d.ts.map +1 -0
  45. package/components/VideoPlayer/hooks/usePlaybackIntent.js +33 -0
  46. package/components/VideoPlayer/hooks/usePlayerControl.d.ts +6 -0
  47. package/components/VideoPlayer/hooks/usePlayerControl.d.ts.map +1 -1
  48. package/components/VideoPlayer/hooks/usePlayerControl.js +34 -25
  49. package/components/VideoPlayer/hooks/usePlayerEvents.d.ts +5 -1
  50. package/components/VideoPlayer/hooks/usePlayerEvents.d.ts.map +1 -1
  51. package/components/VideoPlayer/hooks/usePlayerEvents.js +10 -11
  52. package/components/VideoPlayer/player.factory.d.ts +24 -17
  53. package/components/VideoPlayer/player.factory.d.ts.map +1 -1
  54. package/components/VideoPlayer/storeSafety.d.ts +15 -0
  55. package/components/VideoPlayer/storeSafety.d.ts.map +1 -0
  56. package/components/VideoPlayer/storeSafety.js +25 -0
  57. package/components/VideoPlayer/subcomponents/GclickVideoSkin.d.ts +4 -2
  58. package/components/VideoPlayer/subcomponents/GclickVideoSkin.d.ts.map +1 -1
  59. package/components/VideoPlayer/subcomponents/GclickVideoSkin.js +36 -24
  60. package/components/VideoPlayer/subcomponents/VideoPlayerStage.d.ts +5 -3
  61. package/components/VideoPlayer/subcomponents/VideoPlayerStage.d.ts.map +1 -1
  62. package/components/VideoPlayer/subcomponents/VideoPlayerStage.js +64 -49
  63. package/components/VideoPlayer/subcomponents/skin/VideoControlBar.d.ts +14 -2
  64. package/components/VideoPlayer/subcomponents/skin/VideoControlBar.d.ts.map +1 -1
  65. package/components/VideoPlayer/subcomponents/skin/VideoControlBar.js +90 -62
  66. package/components/VideoPlayer/subcomponents/skin/VideoErrorDialog.d.ts +11 -0
  67. package/components/VideoPlayer/subcomponents/skin/VideoErrorDialog.d.ts.map +1 -1
  68. package/components/VideoPlayer/subcomponents/skin/VideoErrorDialog.js +16 -13
  69. package/components/VideoPlayer/subcomponents/skin/VideoInputIndicators.d.ts +15 -0
  70. package/components/VideoPlayer/subcomponents/skin/VideoInputIndicators.d.ts.map +1 -0
  71. package/components/VideoPlayer/subcomponents/skin/VideoInputIndicators.js +57 -0
  72. package/components/VideoPlayer/subcomponents/skin/VideoSettingsMenu.d.ts.map +1 -1
  73. package/components/VideoPlayer/subcomponents/skin/VideoSettingsMenu.js +10 -12
  74. package/components/VideoPlayer/subcomponents/skin/primitives.d.ts +11 -2
  75. package/components/VideoPlayer/subcomponents/skin/primitives.d.ts.map +1 -1
  76. package/components/VideoPlayer/subcomponents/skin/primitives.js +74 -72
  77. package/components/VideoPlayer/types.d.ts +43 -5
  78. package/components/VideoPlayer/types.d.ts.map +1 -1
  79. package/index.js +149 -145
  80. package/package.json +4 -2
  81. package/components/CameraStreams/subcomponents/CameraStreamsSuspensionController.d.ts +0 -18
  82. package/components/CameraStreams/subcomponents/CameraStreamsSuspensionController.d.ts.map +0 -1
  83. package/components/CameraStreams/subcomponents/CameraStreamsSuspensionController.js +0 -35
  84. package/components/VideoPlayer/hlsConfig.d.ts +0 -30
  85. package/components/VideoPlayer/hlsConfig.d.ts.map +0 -1
  86. package/components/VideoPlayer/hlsConfig.js +0 -33
@@ -27,11 +27,17 @@ export declare const VIDEO_PLAYER_SKIN_CLASSES: {
27
27
  readonly root: "media-default-skin media-default-skin--video";
28
28
  readonly surface: "media-surface";
29
29
  readonly groupedTime: false;
30
+ readonly controlsRoot: "media-controls--root";
31
+ readonly controlsPrimary: "media-controls--primary";
32
+ readonly controlsSecondary: "media-controls--secondary";
30
33
  };
31
34
  readonly minimal: {
32
35
  readonly root: "media-minimal-skin media-minimal-skin--video";
33
36
  readonly surface: "";
34
37
  readonly groupedTime: true;
38
+ readonly controlsRoot: "";
39
+ readonly controlsPrimary: "";
40
+ readonly controlsSecondary: "";
35
41
  };
36
42
  };
37
43
  /**
@@ -46,4 +52,14 @@ export declare const HLS_CROSS_ORIGIN: "use-credentials";
46
52
  * supported and let `crossOrigin` cover the native fallback (Safari).
47
53
  */
48
54
  export declare const HLS_PREFER_PLAYBACK: "mse";
55
+ /**
56
+ * Optional transport controls, all off by default. They route playback to
57
+ * another screen or a floating window, which the camera flows do not use, and
58
+ * each costs a button in a chrome that must stay readable in a small grid tile.
59
+ */
60
+ export declare const VIDEO_PLAYER_OPTIONAL_CONTROLS: {
61
+ readonly cast: false;
62
+ readonly airPlay: false;
63
+ readonly pictureInPicture: false;
64
+ };
49
65
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/constants.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,oCAAoC,mBAAmB,CAAC;AACrE,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAW5B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAG,iBAA0B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAG,KAAc,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/constants.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,oCAAoC,mBAAmB,CAAC;AACrE,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;CAyB5B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAG,iBAA0B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAG,KAAc,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;CAIjC,CAAC"}
@@ -1,22 +1,41 @@
1
- const e = "M4LVideoPlayer", i = {
1
+ const o = "M4LVideoPlayer", e = {
2
2
  default: "default",
3
3
  minimal: "minimal"
4
4
  }, a = {
5
5
  default: {
6
6
  root: "media-default-skin media-default-skin--video",
7
7
  surface: "media-surface",
8
- groupedTime: !1
8
+ groupedTime: !1,
9
+ // The default sheet positions the chrome through these modifiers: `--root`
10
+ // is `display: contents` and the two groups are absolutely positioned over
11
+ // the video (the bar at the bottom, the secondary cluster top-right). Emit
12
+ // a bare `media-controls` instead and the controls are never placed, which
13
+ // reads as "the controls do not appear on hover".
14
+ controlsRoot: "media-controls--root",
15
+ controlsPrimary: "media-controls--primary",
16
+ controlsSecondary: "media-controls--secondary"
9
17
  },
10
18
  minimal: {
11
19
  root: "media-minimal-skin media-minimal-skin--video",
12
20
  surface: "",
13
- groupedTime: !0
21
+ groupedTime: !0,
22
+ // The minimal sheet styles a single flat bar and ships no rule for the
23
+ // modifiers above, so grouping there would only add elements its layout
24
+ // does not account for.
25
+ controlsRoot: "",
26
+ controlsPrimary: "",
27
+ controlsSecondary: ""
14
28
  }
15
- }, m = "use-credentials", d = "mse";
29
+ }, i = "use-credentials", r = "mse", s = {
30
+ cast: !1,
31
+ airPlay: !1,
32
+ pictureInPicture: !1
33
+ };
16
34
  export {
17
- e as COMPONENT_VIDEO_PLAYER_KEY_COMPONENT,
18
- m as HLS_CROSS_ORIGIN,
19
- d as HLS_PREFER_PLAYBACK,
35
+ o as COMPONENT_VIDEO_PLAYER_KEY_COMPONENT,
36
+ i as HLS_CROSS_ORIGIN,
37
+ r as HLS_PREFER_PLAYBACK,
38
+ s as VIDEO_PLAYER_OPTIONAL_CONTROLS,
20
39
  a as VIDEO_PLAYER_SKIN_CLASSES,
21
- i as VIDEO_PLAYER_VARIANTS
40
+ e as VIDEO_PLAYER_VARIANTS
22
41
  };
@@ -0,0 +1,41 @@
1
+ import { HlsSource } from '@videojs/media/dom/hls-js';
2
+ /**
3
+ * `<HlsJsVideo>` source so every HLS request (manifest + each segment) carries
4
+ * the CloudFront signed cookies.
5
+ *
6
+ * video.js v10 has no first-class `withCredentials` prop. The element takes a
7
+ * structured `source` describing WHAT to play (`src`) and HOW (`preferPlayback`,
8
+ * plus per-engine options under `engine`). The shape has now moved twice: up to
9
+ * beta.24 it was flat (`preferPlayback` a top-level prop, `config` the hls.js
10
+ * bag), beta.25 nested both under a single `config` prop, and beta.32 replaced
11
+ * `config` with `source` and namespaced the engine options under
12
+ * `source.engine.hlsJs`. Getting it wrong fails SILENTLY: the loader hooks below
13
+ * never reach hls.js, no cookie travels, and every segment comes back 403 with
14
+ * no error surfaced by the player. Keep the nesting.
15
+ *
16
+ * `src` is carried INSIDE the source rather than passed as a sibling prop:
17
+ * assigning `source` derives `src` from `source.src ?? ''`, so a source without
18
+ * it would blank the element depending on the order React applies the two.
19
+ * Rebuilding this object per `src` is safe — the element compares the engine
20
+ * configuration structurally, so only a real change to the options below
21
+ * recreates the playback engine.
22
+ *
23
+ * We hook BOTH the default XHR loader (`xhrSetup`) and the Fetch loader
24
+ * (`fetchSetup`) so the cookies travel regardless of which loader hls.js
25
+ * selects, and we force `autoStartLoad` because v10 defaults it to `false` —
26
+ * without it a muted autoplay tile would mount but never begin fetching.
27
+ *
28
+ * The rendition caps (`capRenditionToPlayerSize`, `minAutoResolution`) are left
29
+ * at the vendor defaults (`true` and `'720p'`) deliberately: a wall of camera
30
+ * tiles has no use for a rendition larger than the tile, the cap follows the
31
+ * element as it resizes so fullscreen lifts it again, and the 720p floor keeps
32
+ * a small tile off the bottom rungs of the ladder.
33
+ *
34
+ * The native/Safari HLS path bypasses hls.js entirely; the `crossOrigin`
35
+ * attribute on `<HlsJsVideo>` (see {@link HLS_CROSS_ORIGIN}) covers that path.
36
+ * Credentialed CORS forbids `Access-Control-Allow-Origin: *`, so CloudFront
37
+ * must echo the exact request origin and send
38
+ * `Access-Control-Allow-Credentials: true` for the segments to authenticate.
39
+ */
40
+ export declare function buildCredentialedHlsSource(src: string, preferPlayback: HlsSource['preferPlayback']): HlsSource;
41
+ //# sourceMappingURL=hlsSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hlsSource.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/hlsSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,GAC1C,SAAS,CAkCX"}
@@ -0,0 +1,35 @@
1
+ function n(r, u) {
2
+ return {
3
+ src: r,
4
+ // Playback path selection. Left outside the source it would land on the
5
+ // `<video>` element as an unknown DOM attribute and be ignored.
6
+ preferPlayback: u,
7
+ engine: {
8
+ // Everything below is forwarded verbatim to the hls.js constructor.
9
+ hlsJs: {
10
+ // v10 default is `false` (lazy load); force eager load so muted autoplay
11
+ // starts fetching as soon as the tile mounts.
12
+ autoStartLoad: !0,
13
+ // Start from the beginning, NOT the live edge. hls.js defaults to the live
14
+ // edge for live streams, which anchors the MSE timeline mid-stream — once a
15
+ // finished live stream flips to VOD, the segments before the join point can
16
+ // no longer be buffered, so the seek bar cannot reach 0:00 (it loops
17
+ // re-fetching the first segment). Anchoring at 0 buffers the whole stream
18
+ // from the start, so the recording is fully seekable once it ends.
19
+ startPosition: 0,
20
+ /** Default XHR loader hook — sends cookies on every manifest + segment XHR. */
21
+ xhrSetup: (e) => {
22
+ e.withCredentials = !0;
23
+ },
24
+ /**
25
+ * Fetch loader hook — `xhrSetup` only fires when hls.js uses the XHR
26
+ * loader, so we also set `credentials: 'include'` for the Fetch path.
27
+ */
28
+ fetchSetup: (e, t) => (t.credentials = "include", new Request(e.url, t))
29
+ }
30
+ }
31
+ };
32
+ }
33
+ export {
34
+ n as buildCredentialedHlsSource
35
+ };
@@ -0,0 +1,22 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Call `onReady` every time the media element becomes able to start playing,
4
+ * and re-arm when it goes back to empty.
5
+ *
6
+ * The player store exposes `canPlay`, but it means `readyState >= HAVE_ENOUGH_DATA`
7
+ * — the `canplaythrough` threshold, which the spec defines as "can be played
8
+ * through TO THE END without interruption". A live manifest has no end, so that
9
+ * threshold is not merely late, it is undefined: Firefox parks a live MSE stream
10
+ * at HAVE_FUTURE_DATA forever (hls.js#118, hls.js#4624) and Safari is erratic
11
+ * about `canplay` (hls.js#1686). Chrome reaches it optimistically, which is why
12
+ * autoplay only ever worked there.
13
+ *
14
+ * HAVE_CURRENT_DATA is the threshold that actually answers "can playback start",
15
+ * and it is the one MDN's own `readyState` example gates `play()` on.
16
+ *
17
+ * Edge-triggered on purpose: a source swapped in place (`replay`, the degenerate
18
+ * manifest reload) fires `emptied` and then loads again, and each of those load
19
+ * cycles is a new start. A latch that only ever fires once would break replay.
20
+ */
21
+ export declare function useMediaReadiness(videoRef: RefObject<HTMLVideoElement | null>, onReady: () => void): void;
22
+ //# sourceMappingURL=useMediaReadiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMediaReadiness.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/useMediaReadiness.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAc1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAC5C,OAAO,EAAE,MAAM,IAAI,GAClB,IAAI,CAkCN"}
@@ -0,0 +1,21 @@
1
+ import { useRef as d, useEffect as i } from "react";
2
+ const o = ["loadeddata", "canplay", "loadstart", "emptied"], f = 2;
3
+ function u(n, a) {
4
+ const s = d(a);
5
+ s.current = a, i(() => {
6
+ const t = n.current;
7
+ if (!t)
8
+ return;
9
+ let c = !1;
10
+ const r = () => {
11
+ const e = t.readyState >= f;
12
+ e !== c && (c = e, e && s.current());
13
+ };
14
+ return r(), o.forEach((e) => t.addEventListener(e, r)), () => {
15
+ o.forEach((e) => t.removeEventListener(e, r));
16
+ };
17
+ }, [n]);
18
+ }
19
+ export {
20
+ u as useMediaReadiness
21
+ };
@@ -0,0 +1,14 @@
1
+ import { StreamPlayerStore } from '../player.factory';
2
+ /**
3
+ * Own this player's play/pause intent: the one-shot muted autostart and the
4
+ * soft-suspension sync. Returns the callback that starts playback once the
5
+ * media element is ready.
6
+ *
7
+ * React's canonical pattern for media is a desired state synchronized by an
8
+ * effect, not an imperative order pushed in from outside. An external `pause()`
9
+ * can land before the store has a target, which is both a crash and a no-op, so
10
+ * both decisions live here and there is exactly one answer to "should this clip
11
+ * be playing right now".
12
+ */
13
+ export declare function usePlaybackIntent(store: StreamPlayerStore, suspended: boolean): () => void;
14
+ //# sourceMappingURL=usePlaybackIntent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePlaybackIntent.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/usePlaybackIntent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,OAAO,GACjB,MAAM,IAAI,CA4DZ"}
@@ -0,0 +1,33 @@
1
+ import { useRef as c, useCallback as a, useEffect as o } from "react";
2
+ import { runStoreAction as f } from "../storeSafety.js";
3
+ function m(t, e) {
4
+ const r = c(!1), u = c(e);
5
+ u.current = e;
6
+ const n = a(() => {
7
+ f(t, () => {
8
+ t.play().catch(() => {
9
+ });
10
+ });
11
+ }, [t]);
12
+ return o(() => {
13
+ if (e) {
14
+ const { paused: i, ended: l, started: s } = t.state;
15
+ s && !i && !l && f(t, () => {
16
+ t.pause();
17
+ }) && (r.current = !0);
18
+ return;
19
+ }
20
+ r.current && (r.current = !1, t.state.ended || n());
21
+ }, [n, t, e]), a(() => {
22
+ if (!t.state.started) {
23
+ if (u.current) {
24
+ r.current = !0;
25
+ return;
26
+ }
27
+ n();
28
+ }
29
+ }, [n, t]);
30
+ }
31
+ export {
32
+ m as usePlaybackIntent
33
+ };
@@ -7,6 +7,12 @@ import { VideoPlayerControl } from '../types';
7
7
  * element) on invocation, so the handle identity only changes when the store
8
8
  * does. The handle is a thin store adapter — it deliberately exposes none of
9
9
  * the underlying video.js internals.
10
+ *
11
+ * Every mutation goes through `runStoreAction`, so the handle is inert — never
12
+ * throwing — while the store has no `<video>` attached. That window is not an
13
+ * edge case: v10 attaches from an effect on a second commit, so the first
14
+ * commit of every player is always detached, and this handle is registered for
15
+ * outside callers (`useCameraStreamPlayers()`) before it closes.
10
16
  */
11
17
  export declare function usePlayerControl(ref: Ref<VideoPlayerControl> | undefined, store: StreamPlayerStore, videoRef: RefObject<HTMLVideoElement | null>): void;
12
18
  //# sourceMappingURL=usePlayerControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlayerControl.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/usePlayerControl.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAC3C,IAAI,CAwFN"}
1
+ {"version":3,"file":"usePlayerControl.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/usePlayerControl.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,GAAG,CAAC,kBAAkB,CAAC,GAAG,SAAS,EACxC,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAC3C,IAAI,CAiGN"}
@@ -1,78 +1,87 @@
1
- import { useImperativeHandle as l } from "react";
1
+ import { useImperativeHandle as d } from "react";
2
+ import { runStoreAction as n, absorbDetachedStoreRejection as m } from "../storeSafety.js";
2
3
  import { resolveIsLive as s } from "../utils.js";
3
- function m(c, e, r) {
4
- l(c, () => ({
4
+ function o(l, t, c) {
5
+ d(l, () => ({
5
6
  /** Resume playback, swallowing autoplay rejection. */
6
7
  async play() {
7
8
  try {
8
- await e.play();
9
+ await t.play();
9
10
  } catch {
10
11
  }
11
12
  },
12
- /** Pause playback. */
13
+ /** Pause playback; a no-op while no `<video>` is attached. */
13
14
  pause() {
14
- e.pause();
15
+ n(t, () => {
16
+ t.pause();
17
+ });
15
18
  },
16
19
  /** Whether playback is currently paused. */
17
20
  isPaused() {
18
- return e.state.paused ?? !1;
21
+ return t.state.paused ?? !1;
19
22
  },
20
23
  /** Force the muted flag to `muted` (v10 only exposes a toggle). */
21
- setMuted(t) {
22
- (e.state.muted ?? !1) !== t && e.toggleMuted();
24
+ setMuted(e) {
25
+ (t.state.muted ?? !1) !== e && n(t, () => {
26
+ t.toggleMuted();
27
+ });
23
28
  },
24
29
  /** Whether the player is currently muted. */
25
30
  isMuted() {
26
- return e.state.muted ?? !1;
31
+ return t.state.muted ?? !1;
27
32
  },
28
33
  /** Whether the underlying manifest is still live. */
29
34
  isLive() {
30
- return s(e.state.streamType, e.state.duration);
35
+ return s(t.state.streamType, t.state.duration);
31
36
  },
32
37
  /** Seek to `seconds`; no-op on live streams (no seekable window). */
33
- seek(t) {
34
- s(e.state.streamType, e.state.duration) || e.seek(t);
38
+ seek(e) {
39
+ s(t.state.streamType, t.state.duration) || n(t, () => {
40
+ t.seek(e).catch(m);
41
+ });
35
42
  },
36
43
  /** Set the playback rate. */
37
- setPlaybackRate(t) {
38
- e.setPlaybackRate(t);
44
+ setPlaybackRate(e) {
45
+ n(t, () => {
46
+ t.setPlaybackRate(e);
47
+ });
39
48
  },
40
49
  /** Request native fullscreen, swallowing rejection (no user gesture / unsupported). */
41
50
  async requestFullscreen() {
42
51
  try {
43
- await e.requestFullscreen();
52
+ await t.requestFullscreen();
44
53
  } catch {
45
54
  }
46
55
  },
47
56
  /** Request Picture-in-Picture, swallowing rejection (unsupported / blocked). */
48
57
  async requestPictureInPicture() {
49
58
  try {
50
- await e.requestPictureInPicture();
59
+ await t.requestPictureInPicture();
51
60
  } catch {
52
61
  }
53
62
  },
54
63
  /** Capture the current frame as a PNG data URL, or `null` when unavailable. */
55
64
  snapshot() {
56
- const t = r.current;
57
- if (!t)
65
+ const e = c.current;
66
+ if (!e)
58
67
  return null;
59
- const { videoWidth: u, videoHeight: n } = t;
60
- if (!u || !n)
68
+ const { videoWidth: u, videoHeight: r } = e;
69
+ if (!u || !r)
61
70
  return null;
62
71
  const a = document.createElement("canvas");
63
- a.width = u, a.height = n;
72
+ a.width = u, a.height = r;
64
73
  const i = a.getContext("2d");
65
74
  if (!i)
66
75
  return null;
67
76
  try {
68
- return i.drawImage(t, 0, 0, u, n), a.toDataURL("image/png");
77
+ return i.drawImage(e, 0, 0, u, r), a.toDataURL("image/png");
69
78
  } catch {
70
79
  return null;
71
80
  }
72
81
  }
73
82
  // `ref` is the handle target (not a reactive dependency) and is omitted.
74
- }), [e, r]);
83
+ }), [t, c]);
75
84
  }
76
85
  export {
77
- m as usePlayerControl
86
+ o as usePlayerControl
78
87
  };
@@ -2,7 +2,6 @@ import { StreamPlayerStore } from '../player.factory';
2
2
  import { VideoPlayerError } from '../types';
3
3
  /** Consumer callbacks the event bridge forwards from the player store. */
4
4
  export interface PlayerEventHandlers {
5
- onReady?: () => void;
6
5
  onPlay?: () => void;
7
6
  onPause?: () => void;
8
7
  onEnded?: () => void;
@@ -15,6 +14,11 @@ export interface PlayerEventHandlers {
15
14
  * has no React-style `onPlay`/`onEnded` props, so we subscribe once and diff
16
15
  * the relevant primitives across changes. Handlers are read from a ref so
17
16
  * consumers can pass inline callbacks without re-subscribing the listener.
17
+ *
18
+ * Readiness is deliberately absent: the store's `canPlay` is the
19
+ * `canplaythrough` threshold, which never arrives for a live manifest on
20
+ * Firefox or Safari. `onReady` is emitted from `useMediaReadiness` instead,
21
+ * which reads the element directly — see that hook for the full reasoning.
18
22
  */
19
23
  export declare function usePlayerEvents(store: StreamPlayerStore, handlers: PlayerEventHandlers): void;
20
24
  //# sourceMappingURL=usePlayerEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/usePlayerEvents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,mBAAmB,GAC5B,IAAI,CA+DN"}
1
+ {"version":3,"file":"usePlayerEvents.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/hooks/usePlayerEvents.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,mBAAmB,GAC5B,IAAI,CA6CN"}
@@ -1,16 +1,15 @@
1
- import { useRef as y, useEffect as m } from "react";
2
- import { resolveIsLive as v } from "../utils.js";
3
- function E(n, t) {
4
- const i = y(t);
5
- i.current = t, m(() => {
1
+ import { useRef as l, useEffect as m } from "react";
2
+ import { resolveIsLive as g } from "../utils.js";
3
+ function E(n, a) {
4
+ const i = l(a);
5
+ i.current = a, m(() => {
6
6
  const r = n.state;
7
- let o = r.paused, d = r.ended, s = r.waiting, u = r.canPlay, l = r.duration, p = r.streamType, c = r.error;
8
- const f = () => {
9
- const e = n.state, a = i.current;
10
- e.paused !== o && (o = e.paused, (e.paused ? a.onPause : a.onPlay)?.()), e.ended !== d && (d = e.ended, e.ended && a.onEnded?.()), e.waiting !== s && (s = e.waiting, e.waiting && a.onWaiting?.()), e.canPlay !== u && (u = e.canPlay, e.canPlay && (a.onReady?.(), e.started || n.play().catch(() => {
11
- }))), (e.duration !== l || e.streamType !== p) && (l = e.duration, p = e.streamType, a.onDurationChange?.(e.duration, v(e.streamType, e.duration))), e.error !== c && (c = e.error, a.onError?.(e.error ? { code: e.error.code, message: e.error.message } : null));
7
+ let o = r.paused, s = r.ended, d = r.waiting, u = r.duration, p = r.streamType, f = r.error;
8
+ const c = () => {
9
+ const e = n.state, t = i.current;
10
+ e.paused !== o && (o = e.paused, (e.paused ? t.onPause : t.onPlay)?.()), e.ended !== s && (s = e.ended, e.ended && t.onEnded?.()), e.waiting !== d && (d = e.waiting, e.waiting && t.onWaiting?.()), (e.duration !== u || e.streamType !== p) && (u = e.duration, p = e.streamType, t.onDurationChange?.(e.duration, g(e.streamType, e.duration))), e.error !== f && (f = e.error, t.onError?.(e.error ? { code: e.error.code, message: e.error.message } : null));
12
11
  };
13
- return n.subscribe(f);
12
+ return n.subscribe(c);
14
13
  }, [n]);
15
14
  }
16
15
  export {
@@ -1,8 +1,20 @@
1
- import { MediaAudioTrackState, MediaErrorState, MediaFullscreenState, MediaLiveState, MediaPictureInPictureState, MediaPlaybackRateState, MediaPlaybackState, MediaQualityState, MediaSourceState, MediaStreamTypeState, MediaTimeState, MediaVolumeState } from '@videojs/core';
2
- import { BaseStore } from '@videojs/store';
1
+ import { PlayerFeature, PlayerStore, VideoFeatures } from '@videojs/core/dom';
2
+ import { MediaLiveState, MediaStreamTypeState } from '@videojs/media';
3
+ import { CreatePlayerResult } from '@videojs/react';
4
+ /**
5
+ * The stock video preset plus the two features we compose on top of it. Spelled
6
+ * out because this package publishes declarations: the type `createPlayer`
7
+ * infers reaches internal feature symbols that cannot be named from outside the
8
+ * vendor, so `tsc` refuses to emit a `.d.ts` for an un-annotated `StreamPlayer`.
9
+ */
10
+ type StreamPlayerFeatures = [
11
+ ...VideoFeatures,
12
+ PlayerFeature<MediaStreamTypeState>,
13
+ PlayerFeature<MediaLiveState>
14
+ ];
3
15
  /**
4
16
  * Module-scope player factory for the Gclick HLS player. video.js v10 expects
5
- * `createPlayer` to be called once per logical player type; every `<Provider>`
17
+ * `createPlayer` to be called once per logical player type; every `<Player>`
6
18
  * mount then owns an isolated, typed store.
7
19
  *
8
20
  * We extend the stock `videoFeatures` preset (playback, volume, time, source,
@@ -13,20 +25,15 @@ import { BaseStore } from '@videojs/store';
13
25
  * (it assumes the stream stays live forever), which is the opposite of our
14
26
  * cameras → recording transition, so we compose our own feature set instead.
15
27
  */
16
- export declare const StreamPlayer: import('@videojs/react').CreatePlayerResult<import('@videojs/react').PlayerStore<[import('@videojs/react').PlayerFeature<MediaPlaybackState>, import('@videojs/react').PlayerFeature<MediaPlaybackRateState>, import('@videojs/react').PlayerFeature<MediaQualityState>, import('@videojs/react').PlayerFeature<MediaAudioTrackState>, import('@videojs/react').PlayerFeature<MediaVolumeState>, import('@videojs/react').PlayerFeature<MediaTimeState>, import('@videojs/react').PlayerFeature<MediaSourceState>, import('@videojs/react').PlayerFeature<import('@videojs/core').MediaBufferState>, import('@videojs/react').PlayerFeature<MediaFullscreenState>, import('@videojs/react').PlayerFeature<MediaPictureInPictureState>, import('@videojs/react').PlayerFeature<import('@videojs/core').MediaRemotePlaybackState>, import('@videojs/react').PlayerFeature<import('@videojs/core').MediaControlsState>, import('@videojs/react').PlayerFeature<import('@videojs/core').MediaTextTrackState>, import('@videojs/react').PlayerFeature<MediaErrorState>, import('@videojs/react').PlayerFeature<MediaStreamTypeState>, import('@videojs/react').PlayerFeature<MediaLiveState>]>>;
28
+ export declare const StreamPlayer: CreatePlayerResult<StreamPlayerStore>;
17
29
  /**
18
- * Merged state of {@link StreamPlayer}'s store — the intersection of the
19
- * feature states we enable. v10's generics widen a spread feature array to
20
- * `unknown`, so we name the state explicitly from the per-feature state
21
- * contracts (which the selectors are typed against) instead of relying on
22
- * inference.
23
- */
24
- export type StreamPlayerState = MediaPlaybackState & MediaVolumeState & MediaTimeState & MediaSourceState & MediaPlaybackRateState & MediaFullscreenState & MediaPictureInPictureState & MediaErrorState & MediaStreamTypeState & MediaLiveState & MediaQualityState & MediaAudioTrackState;
25
- /**
26
- * The store handle returned by `StreamPlayer.usePlayer()` (no selector): a
27
- * `BaseStore` intersected with the merged feature state, so actions and state
28
- * are flattened onto it (`store.play()`, `store.state.paused`,
29
- * `store.subscribe(...)`, …).
30
+ * The store handle returned by `StreamPlayer.usePlayer()` (no selector): the
31
+ * feature states flattened onto the store, so actions and state sit together
32
+ * (`store.play()`, `store.state.paused`, `store.subscribe(...)`, …).
33
+ *
34
+ * Derived from the feature list rather than restated field by field, so it
35
+ * cannot drift from what the player actually composes.
30
36
  */
31
- export type StreamPlayerStore = BaseStore<unknown, StreamPlayerState> & StreamPlayerState;
37
+ export type StreamPlayerStore = PlayerStore<StreamPlayerFeatures>;
38
+ export {};
32
39
  //# sourceMappingURL=player.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"player.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/player.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,4nCAGvB,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAC9C,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,oBAAoB,GACpB,0BAA0B,GAC1B,eAAe,GACf,oBAAoB,GACpB,cAAc,GAMd,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"player.factory.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/player.factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,KAAK,oBAAoB,GAAG;IAC1B,GAAG,aAAa;IAChB,aAAa,CAAC,oBAAoB,CAAC;IACnC,aAAa,CAAC,cAAc,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,EAAE,kBAAkB,CAAC,iBAAiB,CAG7D,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { StreamPlayerStore } from './player.factory';
2
+ /** Whether the store refused an action because it is detached or already destroyed. */
3
+ export declare function isDetachedStoreError(error: unknown): boolean;
4
+ /**
5
+ * Dispatch a synchronous store action, skipping it while the store has no media
6
+ * element attached. Returns whether the action actually reached the element, so
7
+ * a caller can tell a real dispatch from a lifecycle no-op.
8
+ */
9
+ export declare function runStoreAction(store: StreamPlayerStore, action: () => void): boolean;
10
+ /**
11
+ * Swallow the detach/destroy rejection of an async store action and rethrow
12
+ * anything else, so a real failure still surfaces as an unhandled rejection.
13
+ */
14
+ export declare function absorbDetachedStoreRejection(error: unknown): void;
15
+ //# sourceMappingURL=storeSafety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeSafety.d.ts","sourceRoot":"","sources":["../../../../../../packages/gclick/src/components/VideoPlayer/storeSafety.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAepF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAKjE"}
@@ -0,0 +1,25 @@
1
+ import { isStoreError as n } from "@videojs/store";
2
+ const c = ["NO_TARGET", "DESTROYED"];
3
+ function e(r) {
4
+ return n(r) && c.includes(r.code);
5
+ }
6
+ function u(r, o) {
7
+ if (!r.target || r.destroyed)
8
+ return !1;
9
+ try {
10
+ return o(), !0;
11
+ } catch (t) {
12
+ if (e(t))
13
+ return !1;
14
+ throw t;
15
+ }
16
+ }
17
+ function f(r) {
18
+ if (!e(r))
19
+ throw r;
20
+ }
21
+ export {
22
+ f as absorbDetachedStoreRejection,
23
+ e as isDetachedStoreError,
24
+ u as runStoreAction
25
+ };
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { VideoPlayerVariant } from '../types';
2
+ import { VideoPlayerOptionalControls, VideoPlayerVariant } from '../types';
3
3
  /** Public props of the composed skin — the official skin contract plus `isLive`. */
4
4
  export interface GclickVideoSkinProps {
5
5
  children?: ReactNode;
@@ -9,6 +9,8 @@ export interface GclickVideoSkinProps {
9
9
  isLive: boolean;
10
10
  /** Which vendor skin to wear. Decides the class names, not the stylesheet. */
11
11
  variant: VideoPlayerVariant;
12
+ /** Opt in to the transport controls that are hidden by default. */
13
+ optionalControls?: VideoPlayerOptionalControls;
12
14
  }
13
15
  /**
14
16
  * Single official-v10 skin for both live and VOD, composed from the dependency's
@@ -20,5 +22,5 @@ export interface GclickVideoSkinProps {
20
22
  * slider. Because it is one component (no skin swap), the `<video>` is never
21
23
  * remounted on the live → VOD transition.
22
24
  */
23
- export declare function GclickVideoSkin({ children, className, poster, isLive, variant, }: GclickVideoSkinProps): ReactNode;
25
+ export declare function GclickVideoSkin({ children, className, poster, isLive, variant, optionalControls, }: GclickVideoSkinProps): ReactNode;
24
26
  //# sourceMappingURL=GclickVideoSkin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GclickVideoSkin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/subcomponents/GclickVideoSkin.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqCvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAQnD,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,GACR,EAAE,oBAAoB,GAAG,SAAS,CAQlC"}
1
+ {"version":3,"file":"GclickVideoSkin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/gclick/src/components/VideoPlayer/subcomponents/GclickVideoSkin.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqCvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAShF,oFAAoF;AACpF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,kBAAkB,CAAC;IAC5B,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAChD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,EAAE,oBAAoB,GAAG,SAAS,CAalC"}