@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 +8 -27
- package/dist/index.cjs +57 -22
- package/dist/index.mjs +57 -22
- package/package.json +2 -2
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.
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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",
|