@kkcompany/ott-player 0.5.8 → 0.5.10

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/CHANGELOG.md CHANGED
@@ -2,46 +2,27 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
- ### [0.5.8](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.7...player@0.5.8) (2026-07-29)
5
+ ### [0.5.10](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.9...player@0.5.10) (2026-08-07)
6
6
 
7
-
8
- ### Bug Fixes
9
-
10
- * use default playback api error handling ([53652ee](https://gitlab.kkinternal.com/kks-web/blahaj/commit/53652ee2ec2b689303c0ffedc3a8a88f24ee24ca))
11
-
12
- ### [0.5.7](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.6...player@0.5.7) (2026-07-17)
13
-
14
- ### [0.5.6](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.5...player@0.5.6) (2026-07-10)
15
-
16
- ### [0.5.5](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.3...player@0.5.5) (2026-07-10)
17
-
18
- ### [0.5.3](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.2...player@0.5.3) (2026-07-03)
19
-
20
-
21
- ### Features
22
-
23
- * LinearEnd view is opt-it ([5afc85a](https://gitlab.kkinternal.com/kks-web/blahaj/commit/5afc85a386cf7bfeb166fd893a38a29151ea5265))
24
-
25
- ### [0.5.2](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.1...player@0.5.2) (2026-06-29)
26
-
27
-
28
- ### Features
29
-
30
- * use release version of playcraft ([59240e1](https://gitlab.kkinternal.com/kks-web/blahaj/commit/59240e188c3426250316d1bdb840f58c5031f224))
31
-
32
- ### [0.5.1](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.0...player@0.5.1) (2026-06-24)
7
+ ### [0.5.9](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.5.0...player@0.5.9) (2026-08-03)
33
8
 
34
9
 
35
10
  ### Features
36
11
 
37
12
  * always update UI for live ([cd01e88](https://gitlab.kkinternal.com/kks-web/blahaj/commit/cd01e88f5e5d21b70dcc011486f522354822ef66))
13
+ * LinearEnd view is opt-it ([5afc85a](https://gitlab.kkinternal.com/kks-web/blahaj/commit/5afc85a386cf7bfeb166fd893a38a29151ea5265))
38
14
 
39
15
 
40
16
  ### Bug Fixes
41
17
 
18
+ * [SUN-1738] ([797c968](https://gitlab.kkinternal.com/kks-web/blahaj/commit/797c968a6c01462d79eef29281cee36dede4be36))
42
19
  * [SUN-2999] derive banner currentPosition ([3a15929](https://gitlab.kkinternal.com/kks-web/blahaj/commit/3a15929328677b644f7c3f8d5897bb562e178b5c))
43
20
  * [SUN-2999][SUN-3015] always render banner indicator ([d1488da](https://gitlab.kkinternal.com/kks-web/blahaj/commit/d1488dabf7de579f7c8442ec5aa3ae57b9d011c4))
21
+ * [SUN-5779] always update program metadata ([096a6ae](https://gitlab.kkinternal.com/kks-web/blahaj/commit/096a6ae956e76d5f54a0c8892c4e57658c819a39))
22
+ * [SUN-6234] ([8d3abec](https://gitlab.kkinternal.com/kks-web/blahaj/commit/8d3abeca07fac34356566596e389523a4af689a1))
44
23
  * display channel title only when needed ([4d534b6](https://gitlab.kkinternal.com/kks-web/blahaj/commit/4d534b61f28c55f05374b5ca2a99d0c8e31b99f5))
24
+ * release v0.1.27 ([951dad5](https://gitlab.kkinternal.com/kks-web/blahaj/commit/951dad5ea3918ca8e5dcba7860abed3784d9841c))
25
+ * use default playback api error handling ([53652ee](https://gitlab.kkinternal.com/kks-web/blahaj/commit/53652ee2ec2b689303c0ffedc3a8a88f24ee24ca))
45
26
 
46
27
  ## [0.5.0](https://gitlab.kkinternal.com/kks-web/blahaj/compare/player@0.3.97...player@0.5.0) (2026-05-08)
47
28
 
package/dist/index.cjs CHANGED
@@ -425,6 +425,60 @@ const getAdUi = ({ position, total, adBreakDuration, skipTimeOffset, clickThroug
425
425
  };
426
426
  };
427
427
 
428
+ //#endregion
429
+ //#region src/playerUtils.js
430
+ const uuidv4$1 = () => {
431
+ if (typeof window === "undefined") return "";
432
+ const crypto = window.crypto || window.msCrypto;
433
+ return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => (c ^ crypto?.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
434
+ };
435
+ const validateBrowser = (browserWhiteList) => {
436
+ const envError = (0, __kkcompany_player_modules.validateEnvironment)(browserWhiteList);
437
+ if (envError) {
438
+ if (typeof localStorage !== "undefined" && localStorage?.ENV_CHECK === "none") {
439
+ console.warn("Skip validateBrowser(localStorage?.ENV_CHECK is none)", envError);
440
+ return;
441
+ }
442
+ return {
443
+ name: envError.name,
444
+ data: envError
445
+ };
446
+ }
447
+ };
448
+ const dispatchPlaybackError = (error) => {
449
+ document.getElementsByTagName("video")[0]?.dispatchEvent(Object.assign(new CustomEvent("error"), { error }));
450
+ };
451
+ const storageKey = "playcraft-tab-lock";
452
+ const lockRenewTime = 3e3;
453
+ const ensureTabLock = () => {
454
+ let saved = {};
455
+ try {
456
+ saved = JSON.parse(localStorage[storageKey]);
457
+ } catch (e) {
458
+ console.log("Can read saved data for tab lock.", e);
459
+ }
460
+ const { expireTime } = saved;
461
+ if (Date.now() <= expireTime) return;
462
+ const id = uuidv4$1();
463
+ const renewLock = () => {
464
+ localStorage[storageKey] = JSON.stringify({
465
+ id,
466
+ expireTime: Date.now() + lockRenewTime * 3
467
+ });
468
+ };
469
+ renewLock();
470
+ const renewInterval = setInterval(renewLock, lockRenewTime);
471
+ const releaseLock = () => {
472
+ clearInterval(renewInterval);
473
+ window.removeEventListener("beforeunload", releaseLock);
474
+ window.removeEventListener("unload", releaseLock);
475
+ localStorage.removeItem(storageKey);
476
+ };
477
+ window.addEventListener("beforeunload", releaseLock);
478
+ window.addEventListener("unload", releaseLock);
479
+ return releaseLock;
480
+ };
481
+
428
482
  //#endregion
429
483
  //#region ../../node_modules/mitt/dist/mitt.mjs
430
484
  function mitt_default(n) {
@@ -917,7 +971,7 @@ var preload_default = preload;
917
971
 
918
972
  //#endregion
919
973
  //#region package.json
920
- var version = "0.5.8";
974
+ var version = "0.5.10";
921
975
 
922
976
  //#endregion
923
977
  //#region src/constants.js
@@ -978,7 +1032,7 @@ const PremiumPlusPlayer = ({ controls, preload: preload$1 = "auto", preloadList
978
1032
  const [targetPlaybackState, setTargetPlaybackState] = (0, react.useState)(appPlaybackState);
979
1033
  const [uiState, dispatch] = (0, react.useReducer)(reduceUi, getInitUiState({ recommendation: true }));
980
1034
  (0, react.useEffect)(() => {
981
- const revokeLock = (0, __kkcompany_player_modules.ensureTabLock)();
1035
+ const revokeLock = ensureTabLock();
982
1036
  if (!revokeLock) videoRef.current.dispatchEvent(Object.assign(new CustomEvent("error"), { error: {
983
1037
  name: "PlaycraftApiError",
984
1038
  code: 10021
@@ -1054,7 +1108,7 @@ const PremiumPlusPlayer = ({ controls, preload: preload$1 = "auto", preloadList
1054
1108
  onChangeContent: (data) => {
1055
1109
  onPlaybackApiResponse?.("content", data);
1056
1110
  const currentContent = (0, __kkcompany_player_modules.getContentInfo)(data);
1057
- if (currentContent.end || !currentContent.skipUiUpdate) setContentData((prev) => prev.chapters?.length > 0 ? {
1111
+ setContentData((prev) => prev.chapters?.length > 0 ? {
1058
1112
  ...currentContent,
1059
1113
  chapters: prev.chapters
1060
1114
  } : currentContent);
@@ -1304,25 +1358,6 @@ const preloadSession = ({ host, accessToken, deviceId, headers, params, contentT
1304
1358
  };
1305
1359
  var preloadSession_default = preloadSession;
1306
1360
 
1307
- //#endregion
1308
- //#region src/playerUtils.js
1309
- const validateBrowser = (browserWhiteList) => {
1310
- const envError = (0, __kkcompany_player_modules.validateEnvironment)(browserWhiteList);
1311
- if (envError) {
1312
- if (typeof localStorage !== "undefined" && localStorage?.ENV_CHECK === "none") {
1313
- console.warn("Skip validateBrowser(localStorage?.ENV_CHECK is none)", envError);
1314
- return;
1315
- }
1316
- return {
1317
- name: envError.name,
1318
- data: envError
1319
- };
1320
- }
1321
- };
1322
- const dispatchPlaybackError = (error) => {
1323
- document.getElementsByTagName("video")[0]?.dispatchEvent(Object.assign(new CustomEvent("error"), { error }));
1324
- };
1325
-
1326
1361
  //#endregion
1327
1362
  //#region src/logger/useAmplitudeLogger.js
1328
1363
  const useAmplitudeLogger = ({ logger: setPlaybackRelatedEvt, remoteInfo: { endpoint, headers }, whiteList: { allowedPropertyList = [], allowedEventList = [] } = {} }) => {
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { castMedia, createApi, dispatchChapterEvents, ensureTabLock, getContentInfo, handleIOSHeadphonesDisconnection, initSender, linkCast, selectHlsQualities, selectHlsQualities as selectHlsQualities$1, stopCast, subscribeCastState, subscribeCastState as subscribeCastState$1, validateEnvironment } from "@kkcompany/player/modules";
1
+ import { castMedia, createApi, dispatchChapterEvents, getContentInfo, handleIOSHeadphonesDisconnection, initSender, linkCast, selectHlsQualities, selectHlsQualities as selectHlsQualities$1, stopCast, subscribeCastState, subscribeCastState as subscribeCastState$1, validateEnvironment } from "@kkcompany/player/modules";
2
2
  import { AutoplayPrompt, Button, CastSender, ClassicLayout, ClassicSettingsContainer, CoverImage, DEBUG_OPTIONS, InfoBarExtension, LanguageMenu, LiveEnd, LiveEnd as LiveEnd$1, MenuItem, OverlayPanel, PremiumPlayer, PremiumPlayer as PremiumPlayer$1, SkipButton, SkipButton as SkipButton$1, classicStyleProps, setupLicenseServerOverride } from "@kkcompany/player/react";
3
3
  import { ImaDaiPlugin } from "@kkcompany/player/plugins";
4
4
  import { getMediaTime, isLiveDuration } from "@kkcompany/player/core";
@@ -401,6 +401,60 @@ const getAdUi = ({ position, total, adBreakDuration, skipTimeOffset, clickThroug
401
401
  };
402
402
  };
403
403
 
404
+ //#endregion
405
+ //#region src/playerUtils.js
406
+ const uuidv4$1 = () => {
407
+ if (typeof window === "undefined") return "";
408
+ const crypto = window.crypto || window.msCrypto;
409
+ return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => (c ^ crypto?.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
410
+ };
411
+ const validateBrowser = (browserWhiteList) => {
412
+ const envError = validateEnvironment(browserWhiteList);
413
+ if (envError) {
414
+ if (typeof localStorage !== "undefined" && localStorage?.ENV_CHECK === "none") {
415
+ console.warn("Skip validateBrowser(localStorage?.ENV_CHECK is none)", envError);
416
+ return;
417
+ }
418
+ return {
419
+ name: envError.name,
420
+ data: envError
421
+ };
422
+ }
423
+ };
424
+ const dispatchPlaybackError = (error) => {
425
+ document.getElementsByTagName("video")[0]?.dispatchEvent(Object.assign(new CustomEvent("error"), { error }));
426
+ };
427
+ const storageKey = "playcraft-tab-lock";
428
+ const lockRenewTime = 3e3;
429
+ const ensureTabLock = () => {
430
+ let saved = {};
431
+ try {
432
+ saved = JSON.parse(localStorage[storageKey]);
433
+ } catch (e) {
434
+ console.log("Can read saved data for tab lock.", e);
435
+ }
436
+ const { expireTime } = saved;
437
+ if (Date.now() <= expireTime) return;
438
+ const id = uuidv4$1();
439
+ const renewLock = () => {
440
+ localStorage[storageKey] = JSON.stringify({
441
+ id,
442
+ expireTime: Date.now() + lockRenewTime * 3
443
+ });
444
+ };
445
+ renewLock();
446
+ const renewInterval = setInterval(renewLock, lockRenewTime);
447
+ const releaseLock = () => {
448
+ clearInterval(renewInterval);
449
+ window.removeEventListener("beforeunload", releaseLock);
450
+ window.removeEventListener("unload", releaseLock);
451
+ localStorage.removeItem(storageKey);
452
+ };
453
+ window.addEventListener("beforeunload", releaseLock);
454
+ window.addEventListener("unload", releaseLock);
455
+ return releaseLock;
456
+ };
457
+
404
458
  //#endregion
405
459
  //#region ../../node_modules/mitt/dist/mitt.mjs
406
460
  function mitt_default(n) {
@@ -893,7 +947,7 @@ var preload_default = preload;
893
947
 
894
948
  //#endregion
895
949
  //#region package.json
896
- var version = "0.5.8";
950
+ var version = "0.5.10";
897
951
 
898
952
  //#endregion
899
953
  //#region src/constants.js
@@ -1030,7 +1084,7 @@ const PremiumPlusPlayer = ({ controls, preload: preload$1 = "auto", preloadList
1030
1084
  onChangeContent: (data) => {
1031
1085
  onPlaybackApiResponse?.("content", data);
1032
1086
  const currentContent = getContentInfo(data);
1033
- if (currentContent.end || !currentContent.skipUiUpdate) setContentData((prev) => prev.chapters?.length > 0 ? {
1087
+ setContentData((prev) => prev.chapters?.length > 0 ? {
1034
1088
  ...currentContent,
1035
1089
  chapters: prev.chapters
1036
1090
  } : currentContent);
@@ -1280,25 +1334,6 @@ const preloadSession = ({ host, accessToken, deviceId, headers, params, contentT
1280
1334
  };
1281
1335
  var preloadSession_default = preloadSession;
1282
1336
 
1283
- //#endregion
1284
- //#region src/playerUtils.js
1285
- const validateBrowser = (browserWhiteList) => {
1286
- const envError = validateEnvironment(browserWhiteList);
1287
- if (envError) {
1288
- if (typeof localStorage !== "undefined" && localStorage?.ENV_CHECK === "none") {
1289
- console.warn("Skip validateBrowser(localStorage?.ENV_CHECK is none)", envError);
1290
- return;
1291
- }
1292
- return {
1293
- name: envError.name,
1294
- data: envError
1295
- };
1296
- }
1297
- };
1298
- const dispatchPlaybackError = (error) => {
1299
- document.getElementsByTagName("video")[0]?.dispatchEvent(Object.assign(new CustomEvent("error"), { error }));
1300
- };
1301
-
1302
1337
  //#endregion
1303
1338
  //#region src/logger/useAmplitudeLogger.js
1304
1339
  const useAmplitudeLogger = ({ logger: setPlaybackRelatedEvt, remoteInfo: { endpoint, headers }, whiteList: { allowedPropertyList = [], allowedEventList = [] } = {} }) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kkcompany/ott-player",
3
- "version": "0.5.8",
3
+ "version": "0.5.10",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/index.mjs",
@@ -24,7 +24,7 @@
24
24
  "release": "standard-version -a"
25
25
  },
26
26
  "dependencies": {
27
- "@kkcompany/player": "~2.26.9-canary.1",
27
+ "@kkcompany/player": "~2.27.1-canary.0",
28
28
  "@testing-library/jest-dom": "^5.16.5",
29
29
  "@testing-library/react": "^13.4.0",
30
30
  "@testing-library/user-event": "^13.5.0",