@playkit-js/banner-overlay 1.0.1-canary.0-7cc51bc
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/LICENSE +661 -0
- package/README.md +71 -0
- package/dist/index.d.ts +22 -0
- package/dist/playkit-banner-overlay.js +2 -0
- package/dist/playkit-banner-overlay.js.map +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/package.json +96 -0
- package/src/banner-overlay.tsx +72 -0
- package/src/components/banner-overlay/banner-display.tsx +145 -0
- package/src/components/banner-overlay/banner-overlay.scss +131 -0
- package/src/components/banner-overlay/banner-overlay.tsx +64 -0
- package/src/components/banner-overlay/banner-timer-manager.tsx +68 -0
- package/src/components/banner-overlay/index.ts +6 -0
- package/src/events/events.ts +2 -0
- package/src/index.ts +6 -0
- package/src/types/banner-overlay-config.ts +16 -0
- package/src/types/global.d.ts +1 -0
- package/src/types/icon.ts +5 -0
- package/src/types/index.ts +2 -0
- package/translations/en.i18n.json +7 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
[](https://github.com/kaltura/playkit-js-banner-overlay/actions/workflows/run_canary.yaml)
|
|
2
|
+
[](https://www.npmjs.com/package/@playkit-js/banner-overlay)
|
|
3
|
+
[](https://www.npmjs.com/package/@playkit-js/banner-overlay/v/canary)
|
|
4
|
+
|
|
5
|
+
# playkit-js-banner-overlay
|
|
6
|
+
|
|
7
|
+
playkit-js-banner-overlay is a kaltura player plugin that provides the ability to display configurable text banners with various positioning and styling options (main use-cases would be disclaimers and credits).
|
|
8
|
+
|
|
9
|
+
Webpack is used to build the distro bundle and serve the local development environment.
|
|
10
|
+
|
|
11
|
+
## Getting Started
|
|
12
|
+
|
|
13
|
+
### Prerequisites
|
|
14
|
+
|
|
15
|
+
The plugin requires [Kaltura Player] to be loaded first.
|
|
16
|
+
|
|
17
|
+
[kaltura player]: https://github.com/kaltura/kaltura-player-js
|
|
18
|
+
|
|
19
|
+
### Installing
|
|
20
|
+
|
|
21
|
+
First, clone and run [yarn] to install dependencies:
|
|
22
|
+
|
|
23
|
+
[yarn]: https://yarnpkg.com/lang/en/
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
git clone https://github.com/kaltura/playkit-js-banner-overlay.git
|
|
27
|
+
yarn install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Building
|
|
31
|
+
|
|
32
|
+
Then, build the plugin
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
yarn run build
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Embed the library in your test page
|
|
39
|
+
|
|
40
|
+
Finally, add the bundle as a script tag in your page, and initialize the player
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<!--Kaltura player-->
|
|
44
|
+
<script type="text/javascript" src="/PATH/TO/FILE/kaltura-player.js"></script>
|
|
45
|
+
<!--Playkit banner-overlay plugin -->
|
|
46
|
+
<script type="text/javascript" src="/PATH/TO/FILE/playkit-banner-overlay.js"></script>
|
|
47
|
+
<div id="player-placeholder" style="height:360px; width:640px">
|
|
48
|
+
<script type="text/javascript">
|
|
49
|
+
var playerContainer = document.querySelector("#player-placeholder");
|
|
50
|
+
var config = {
|
|
51
|
+
...
|
|
52
|
+
targetId: 'player-placeholder',
|
|
53
|
+
plugins: {
|
|
54
|
+
banner-overlay: {
|
|
55
|
+
text: string;
|
|
56
|
+
duration?: number | 'unlimited';
|
|
57
|
+
alignment?: BannerAlignment;
|
|
58
|
+
allowWrapping?: boolean; // default: true
|
|
59
|
+
allowClose?: boolean; // default: false
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
var player = KalturaPlayer.setup(config);
|
|
64
|
+
player.loadPlaylist(...);
|
|
65
|
+
</script>
|
|
66
|
+
</div>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## License
|
|
70
|
+
|
|
71
|
+
This project is licensed under the AGPL-3.0 License - see the [LICENSE](LICENSE) file for details
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum BannerAlignment {
|
|
2
|
+
TOP = "top",
|
|
3
|
+
BOTTOM = "bottom",
|
|
4
|
+
TOP_LEFT = "top-left",
|
|
5
|
+
TOP_RIGHT = "top-right",
|
|
6
|
+
BOTTOM_LEFT = "bottom-left",
|
|
7
|
+
BOTTOM_RIGHT = "bottom-right"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export declare interface BannerOverlayConfig {
|
|
11
|
+
text: string;
|
|
12
|
+
duration?: number | 'unlimited';
|
|
13
|
+
alignment?: BannerAlignment;
|
|
14
|
+
allowWrapping?: boolean;
|
|
15
|
+
allowClose?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export declare enum Icon {
|
|
19
|
+
CLOSE = "M13.364 11.9497L17.6066 16.1924C17.9971 16.5829 17.9971 17.2161 17.6066 17.6066C17.2161 17.9971 16.5829 17.9971 16.1924 17.6066L11.9497 13.364L7.70711 17.6066C7.31658 17.9971 6.68342 17.9971 6.29289 17.6066C5.90237 17.2161 5.90237 16.5829 6.29289 16.1924L10.5355 11.9497L6.29289 7.70711C5.90237 7.31658 5.90237 6.68342 6.29289 6.29289C6.68342 5.90237 7.31658 5.90237 7.70711 6.29289L11.9497 10.5355L16.1924 6.29289C16.5829 5.90237 17.2161 5.90237 17.6066 6.29289C17.9971 6.68342 17.9971 7.31658 17.6066 7.70711L13.364 11.9497Z"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { }
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("KalturaPlayer",[],n):"object"==typeof exports?exports.KalturaPlayer=n():(e.KalturaPlayer=e.KalturaPlayer||{},e.KalturaPlayer.plugins=e.KalturaPlayer.plugins||{},e.KalturaPlayer.plugins.bannerOverlay=n())}(self,(()=>(()=>{"use strict";var e={740:(e,n,t)=>{t.d(n,{AR:()=>f,Ah:()=>v,Fb:()=>p,Gj:()=>c,I:()=>C,J_:()=>u,Oq:()=>m,RC:()=>b,TD:()=>l,ZP:()=>x,Zh:()=>s,az:()=>A,eL:()=>y,f6:()=>h,hT:()=>g,w3:()=>_,we:()=>d});var r=t(537),o=t.n(r),a=t(645),i=t.n(a)()(o());i.push([e.id,'.playkit-banner-overlay__banner-overlay__banner-overlay{position:absolute;pointer-events:none;width:100%;padding:4px 8px}.playkit-banner-overlay__banner-overlay__banner-content{display:flex;border-radius:var(--Roundness-2, 8px);background:var(--B-40, rgba(0, 0, 0, 0.4));padding:4px 8px;align-items:center;gap:8px;color:#fff;font-size:16px;font-family:"Lato",sans-serif;font-style:normal;font-weight:400;line-height:150%;box-sizing:border-box;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto;box-shadow:0 4px 4px rgba(0,0,0,.25);overflow:visible;text-shadow:0 4px 4px rgba(0,0,0,.25)}.playkit-banner-overlay__banner-overlay__content-center{justify-content:center;text-align:center}.playkit-banner-overlay__banner-overlay__content-left{justify-content:flex-start;text-align:left}.playkit-banner-overlay__banner-overlay__content-right{justify-content:flex-end;text-align:right}.playkit-banner-overlay__banner-overlay__banner-text{display:block;width:100%;margin:0}.playkit-banner-overlay__banner-overlay__text-container{flex:1 1 auto;min-width:0;overflow:visible}.playkit-banner-overlay__banner-overlay__text-truncated{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.playkit-banner-overlay__banner-overlay__text-wrapping{word-wrap:break-word;word-break:break-word}.playkit-banner-overlay__banner-overlay__close-button{background:none;border:none;color:#fff;font-size:20px;width:24px;height:24px;cursor:pointer;opacity:.9;transition:opacity .2s ease;flex:0 0 auto;display:flex;align-items:center;justify-content:center}.playkit-banner-overlay__banner-overlay__close-button:hover{opacity:1}.playkit-banner-overlay__banner-overlay__close-button:focus{outline:1px solid rgba(255,255,255,.5);outline-offset:2px}.playkit-banner-overlay__banner-overlay__top{top:0;left:50%;transform:translateX(-50%)}.playkit-banner-overlay__banner-overlay__bottom{bottom:0;left:50%;transform:translateX(-50%)}.playkit-banner-overlay__banner-overlay__top-left{top:0;left:0}.playkit-banner-overlay__banner-overlay__top-right{top:0;right:0}.playkit-banner-overlay__banner-overlay__bottom-left{bottom:0;left:0}.playkit-banner-overlay__banner-overlay__bottom-right{bottom:0;right:0}@media(max-width: 480px){.playkit-banner-overlay__banner-overlay__banner-content{font-size:14px;padding:4px 6px}}',"",{version:3,sources:["webpack://./src/components/banner-overlay/banner-overlay.scss"],names:[],mappings:"AAAA,wDACE,iBAAA,CACA,mBAAA,CACA,UAAA,CACA,eAAA,CAGF,wDACE,YAAA,CACA,qCAAA,CACA,0CAAA,CACA,eAAA,CACA,kBAAA,CACA,OAAA,CACA,UAAA,CACA,cAAA,CACA,6BAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,qBAAA,CACA,yBAAA,CACA,iCAAA,CACA,mBAAA,CACA,oCAAA,CACA,gBAAA,CACA,qCAAA,CAGF,wDACE,sBAAA,CACA,iBAAA,CAGF,sDACE,0BAAA,CACA,eAAA,CAGF,uDACE,wBAAA,CACA,gBAAA,CAGF,qDACE,aAAA,CACA,UAAA,CACA,QAAA,CAGF,wDACE,aAAA,CACA,WAAA,CACA,gBAAA,CAGF,wDACE,eAAA,CACA,kBAAA,CACA,sBAAA,CAGF,uDACE,oBAAA,CACA,qBAAA,CAGF,sDACE,eAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,UAAA,CACA,2BAAA,CACA,aAAA,CAEA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,4DACE,SAAA,CAGF,4DACE,sCAAA,CACA,kBAAA,CAIJ,6CACE,KAAA,CACA,QAAA,CACA,0BAAA,CAGF,gDACE,QAAA,CACA,QAAA,CACA,0BAAA,CAGF,kDACE,KAAA,CACA,MAAA,CAGF,mDACE,KAAA,CACA,OAAA,CAGF,qDACE,QAAA,CACA,MAAA,CAGF,sDACE,QAAA,CACA,OAAA,CAGF,yBACE,wDACE,cAAA,CACA,eAAA,CAAA",sourcesContent:[".banner-overlay {\n position: absolute;\n pointer-events: none;\n width: 100%;\n padding: 4px 8px;\n}\n\n.banner-content {\n display: flex;\n border-radius: var(--Roundness-2, 8px);\n background: var(--B-40, rgba(0, 0, 0, 0.40));\n padding: 4px 8px;\n align-items: center;\n gap: 8px;\n color: #FFFFFF;\n font-size: 16px;\n font-family: 'Lato', sans-serif;\n font-style: normal;\n font-weight: 400;\n line-height: 150%;\n box-sizing: border-box;\n backdrop-filter: blur(2px);\n -webkit-backdrop-filter: blur(2px);\n pointer-events: auto;\n box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);\n overflow: visible;\n text-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);\n}\n\n.content-center {\n justify-content: center;\n text-align: center;\n}\n\n.content-left {\n justify-content: flex-start;\n text-align: left;\n}\n\n.content-right {\n justify-content: flex-end;\n text-align: right;\n}\n\n.banner-text {\n display: block;\n width: 100%;\n margin: 0;\n}\n\n.text-container {\n flex: 1 1 auto;\n min-width: 0;\n overflow: visible;\n}\n\n.text-truncated {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.text-wrapping {\n word-wrap: break-word;\n word-break: break-word;\n}\n\n.close-button {\n background: none;\n border: none;\n color: #FFFFFF;\n font-size: 20px;\n width: 24px;\n height: 24px;\n cursor: pointer;\n opacity: 0.9;\n transition: opacity 0.2s ease;\n flex: 0 0 auto;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n opacity: 1;\n }\n\n &:focus {\n outline: 1px solid rgba(255, 255, 255, 0.5);\n outline-offset: 2px;\n }\n}\n\n.top {\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.bottom {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.top-left {\n top: 0;\n left: 0;\n}\n\n.top-right {\n top: 0;\n right: 0;\n}\n\n.bottom-left {\n bottom: 0;\n left: 0;\n}\n\n.bottom-right {\n bottom: 0;\n right: 0;\n}\n\n@media (max-width: 480px) {\n .banner-content {\n font-size: 14px;\n padding: 4px 6px;\n }\n}"],sourceRoot:""}]);var l="playkit-banner-overlay__banner-overlay__banner-overlay",c="playkit-banner-overlay__banner-overlay__banner-content",A="playkit-banner-overlay__banner-overlay__content-center",s="playkit-banner-overlay__banner-overlay__content-left",u="playkit-banner-overlay__banner-overlay__content-right",p="playkit-banner-overlay__banner-overlay__banner-text",f="playkit-banner-overlay__banner-overlay__text-container",y="playkit-banner-overlay__banner-overlay__text-truncated",b="playkit-banner-overlay__banner-overlay__text-wrapping",v="playkit-banner-overlay__banner-overlay__close-button",d="playkit-banner-overlay__banner-overlay__top",C="playkit-banner-overlay__banner-overlay__bottom",_="playkit-banner-overlay__banner-overlay__top-left",h="playkit-banner-overlay__banner-overlay__top-right",m="playkit-banner-overlay__banner-overlay__bottom-left",g="playkit-banner-overlay__banner-overlay__bottom-right";const x=i},645:e=>{e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",r=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),r&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),r&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(i[c]=!0)}for(var A=0;A<e.length;A++){var s=[].concat(e[A]);r&&i[s[0]]||(void 0!==a&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=a),t&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=t):s[2]=t),o&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=o):s[4]="".concat(o)),n.push(s))}},n}},537:e=>{e.exports=function(e){var n=e[1],t=e[3];if(!t)return n;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),a="/*# ".concat(o," */");return[n].concat([a]).join("\n")}return[n].join("\n")}},379:e=>{var n=[];function t(e){for(var t=-1,r=0;r<n.length;r++)if(n[r].identifier===e){t=r;break}return t}function r(e,r){for(var a={},i=[],l=0;l<e.length;l++){var c=e[l],A=r.base?c[0]+r.base:c[0],s=a[A]||0,u="".concat(A," ").concat(s);a[A]=s+1;var p=t(u),f={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==p)n[p].references++,n[p].updater(f);else{var y=o(f,r);r.byIndex=l,n.splice(l,0,{identifier:u,updater:y,references:1})}i.push(u)}return i}function o(e,n){var t=n.domAPI(n);return t.update(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;t.update(e=n)}else t.remove()}}e.exports=function(e,o){var a=r(e=e||[],o=o||{});return function(e){e=e||[];for(var i=0;i<a.length;i++){var l=t(a[i]);n[l].references--}for(var c=r(e,o),A=0;A<a.length;A++){var s=t(a[A]);0===n[s].references&&(n[s].updater(),n.splice(s,1))}a=c}}},569:e=>{var n={};e.exports=function(e,t){var r=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},216:e=>{e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},575:e=>{e.exports=function(e,n){Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])}))}},37:e=>{var n,t=(n=[],function(e,t){return n[e]=t,n.filter(Boolean).join("\n")});function r(e,n,r,o){var a;if(r)a="";else{a="",o.supports&&(a+="@supports (".concat(o.supports,") {")),o.media&&(a+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(a+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),a+=o.css,i&&(a+="}"),o.media&&(a+="}"),o.supports&&(a+="}")}if(e.styleSheet)e.styleSheet.cssText=t(n,a);else{var l=document.createTextNode(a),c=e.childNodes;c[n]&&e.removeChild(c[n]),c.length?e.insertBefore(l,c[n]):e.appendChild(l)}}var o={singleton:null,singletonCounter:0};e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=o.singletonCounter++,t=o.singleton||(o.singleton=e.insertStyleElement(e));return{update:function(e){r(t,n,!1,e)},remove:function(e){r(t,n,!0,e)}}}}},n={};function t(r){var o=n[r];if(void 0!==o)return o.exports;var a=n[r]={id:r,exports:{}};return e[r](a,a.exports,t),a.exports}t.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},t.d=(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},t.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{t.r(r),t.d(r,{BannerAlignment:()=>p,Icon:()=>f});const e=KalturaPlayer;function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,"string");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:String(t)}function a(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function l(e){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},l(e)}function c(){return c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,n,t){var r=function(e,n){for(;!Object.prototype.hasOwnProperty.call(e,n)&&null!==(e=l(e)););return e}(e,n);if(r){var o=Object.getOwnPropertyDescriptor(r,n);return o.get?o.get.call(arguments.length<3?e:t):o.value}},c.apply(this,arguments)}function A(e,n){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},A(e,n)}function s(e,n,t){return(n=o(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const u=KalturaPlayer.ui.preact;var p=function(e){return e.TOP="top",e.BOTTOM="bottom",e.TOP_LEFT="top-left",e.TOP_RIGHT="top-right",e.BOTTOM_LEFT="bottom-left",e.BOTTOM_RIGHT="bottom-right",e}({}),f=function(e){return e.CLOSE="M13.364 11.9497L17.6066 16.1924C17.9971 16.5829 17.9971 17.2161 17.6066 17.6066C17.2161 17.9971 16.5829 17.9971 16.1924 17.6066L11.9497 13.364L7.70711 17.6066C7.31658 17.9971 6.68342 17.9971 6.29289 17.6066C5.90237 17.2161 5.90237 16.5829 6.29289 16.1924L10.5355 11.9497L6.29289 7.70711C5.90237 7.31658 5.90237 6.68342 6.29289 6.29289C6.68342 5.90237 7.31658 5.90237 7.70711 6.29289L11.9497 10.5355L16.1924 6.29289C16.5829 5.90237 17.2161 5.90237 17.6066 6.29289C17.9971 6.68342 17.9971 7.31658 17.6066 7.70711L13.364 11.9497Z",e}(f||{});function y(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function b(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,a,i,l=[],c=!0,A=!1;try{if(a=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=a.call(t)).done)&&(l.push(r.value),l.length!==n);c=!0);}catch(e){A=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(A)throw o}}return l}}(e,n)||function(e,n){if(e){if("string"==typeof e)return y(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const v=KalturaPlayer.ui.preactHooks,d=KalturaPlayer.core;var C=t(379),_=t.n(C),h=t(37),m=t.n(h),g=t(569),x=t.n(g),w=t(575),k=t.n(w),O=t(216),T=t.n(O),B=t(740),P={attributes:{id:"@playkit-js/banner-overlay"}};P.setAttributes=k(),P.insert=x().bind(null,"head"),P.domAPI=m(),P.insertStyleElement=T(),_()(B.ZP,P),B.ZP&&B.ZP.locals&&B.ZP.locals;var E=e.ui.Components,j=E.Icon,F=E.Tooltip,S=(0,e.ui.preacti18n.withText)({closeBannerLabel:"bannerOverlay.closeBanner"})((function(e){var n=e.text,t=e.alignment,r=void 0===t?p.TOP_LEFT:t,o=e.allowWrapping,a=void 0===o||o,i=e.allowClose,l=void 0!==i&&i,c=e.onClose,A=e.closeBannerLabel,s=e.player,y=b((0,v.useState)(!1),2),C=y[0],_=y[1],h=b((0,v.useState)(!1),2),m=h[0],g=h[1],x=(0,v.useRef)(null),w=function(){if(!a&&x.current){var e=x.current,n=e.scrollWidth>e.clientWidth;_(n)}};(0,v.useEffect)((function(){w(),s&&!m&&(s.dispatchEvent(new d.FakeEvent("banner_message_displays")),g(!0))}),[a,s,m]),(0,v.useEffect)((function(){requestAnimationFrame(w)}),[n,a]);var k,O,T=function(){switch(r){case p.TOP:return B.we;case p.BOTTOM:return B.I;case p.TOP_LEFT:return B.w3;case p.TOP_RIGHT:return B.f6;case p.BOTTOM_LEFT:return B.Oq;case p.BOTTOM_RIGHT:return B.hT;default:return B.w3}}(),P=function(){switch(r){case p.TOP:case p.BOTTOM:return B.az;case p.TOP_RIGHT:case p.BOTTOM_RIGHT:return B.J_;case p.TOP_LEFT:case p.BOTTOM_LEFT:default:return B.Zh}}();return(0,u.h)("div",{"data-testid":"banner-overlay",className:"".concat(B.TD," ").concat(T),role:"status","aria-label":n},(0,u.h)("div",{className:"".concat(B.Gj," ").concat(P)},(0,u.h)("div",{className:B.AR},(k=a?B.RC:B.eL,O=(0,u.h)("span",{ref:x,className:"".concat(B.Fb," ").concat(k)},n),!a&&C?(0,u.h)(F,{label:n,type:"top"},O):O)),l&&(0,u.h)("button",{className:B.Ah,onClick:function(){null==s||s.dispatchEvent(new d.FakeEvent("banner_message_manually_dismissed")),null==c||c()},"aria-label":"".concat(A,": ").concat(n),tabIndex:0,"data-testid":"banner-close-button"},(0,u.h)(j,{id:"banner-overlay-close-icon",path:f.CLOSE,viewBox:"0 0 25 25"}))))})),L=(0,e.ui.Components.withPlayer)((0,e.ui.Event.withEventManager)((function(e){var n=e.text,t=e.alignment,r=void 0===t?p.TOP_LEFT:t,o=e.allowWrapping,a=void 0===o||o,i=e.allowClose,l=void 0!==i&&i,c=e.duration,A=e.onClose,s=e.player,f=function(e){var n=e.duration,t=e.player,r=e.eventManager,o=e.onHide,a=e.onPlayerStarted,i=b((0,v.useState)(!0),2),l=i[0],c=i[1],A=b((0,v.useState)(!1),2),s=A[0],u=A[1],p=(0,v.useRef)(),f=function(){!s&&"unlimited"!==n&&"number"==typeof n&&n>0&&(u(!0),null==a||a(),p.current=setTimeout((function(){c(!1),o()}),1e3*n))};return(0,v.useEffect)((function(){if(!("unlimited"!==n&&"number"==typeof n&&n<=0))return t&&r&&r.listenOnce(t,t.Event.Core.FIRST_PLAYING,f),function(){p.current&&clearTimeout(p.current)};c(!1)}),[t,r,n]),{isVisible:l,hasPlayerStarted:s,hide:function(){c(!1),o()}}}({duration:c,player:s,eventManager:e.eventManager,onHide:function(){null==A||A()}}),y=f.isVisible,d=f.hide;return y?(0,u.h)(S,{text:n,alignment:r,allowWrapping:a,allowClose:l,onClose:function(){d()},player:s}):null})));function M(e,t,r){return t=l(t),function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return i(e)}(e,R()?Reflect.construct(t,r||[],l(e).constructor):t.apply(e,r))}function R(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(R=function(){return!!e})()}var G=function(n){function t(){var e;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,t);for(var n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return s(i(e=M(this,t,[].concat(r))),"bannerComponent",null),e}var r,o,p;return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&A(e,n)}(t,n),r=t,p=[{key:"isValid",value:function(){return!0}}],(o=[{key:"loadMedia",value:function(){this.logger.info("BannerOverlay: loadMedia lifecycle hook called"),this.config.text&&this.addBannerComponent()}},{key:"addBannerComponent",value:function(){var n=this,t={label:"banner-overlay",area:e.ui.ReservedPresetAreas.InteractiveArea,presets:[e.ui.ReservedPresetNames.Playback,e.ui.ReservedPresetNames.Live],get:function(){return(0,u.h)(L,{text:n.config.text,alignment:n.config.alignment,allowWrapping:n.config.allowWrapping,allowClose:n.config.allowClose,duration:n.config.duration,onClose:n.handleBannerClose.bind(n),player:n.player})}};this.bannerComponent=this.player.ui.addComponent(t)}},{key:"handleBannerClose",value:function(){this.removeBannerComponent()}},{key:"removeBannerComponent",value:function(){this.bannerComponent&&(this.player.ui.removeComponent(this.bannerComponent),this.bannerComponent=null)}},{key:"reset",value:function(){this.logger.info("BannerOverlay: reset lifecycle hook called"),this.removeBannerComponent()}},{key:"destroy",value:function(){this.removeBannerComponent(),c(l(t.prototype),"destroy",this).call(this),this.logger.info("BannerOverlay: destroy lifecycle hook called")}}])&&a(r.prototype,o),p&&a(r,p),Object.defineProperty(r,"prototype",{writable:!1}),t}(e.BasePlugin);s(G,"defaultConfig",{text:"",duration:5,alignment:p.TOP_LEFT,allowWrapping:!0,allowClose:!1}),(0,e.registerPlugin)("bannerOverlay",G)})(),r})()));
|
|
2
|
+
//# sourceMappingURL=playkit-banner-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playkit-banner-overlay.js","mappings":"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","sources":["webpack://KalturaPlayer.plugins.bannerOverlay/webpack/universalModuleDefinition","webpack://KalturaPlayer.plugins.bannerOverlay/./src/components/banner-overlay/banner-overlay.scss","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/css-loader/dist/runtime/api.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/style-loader/dist/runtime/setAttributesWithAttributesAndNonce.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/style-loader/dist/runtime/singletonStyleDomAPI.js","webpack://KalturaPlayer.plugins.bannerOverlay/webpack/bootstrap","webpack://KalturaPlayer.plugins.bannerOverlay/webpack/runtime/compat get default export","webpack://KalturaPlayer.plugins.bannerOverlay/webpack/runtime/define property getters","webpack://KalturaPlayer.plugins.bannerOverlay/webpack/runtime/hasOwnProperty shorthand","webpack://KalturaPlayer.plugins.bannerOverlay/webpack/runtime/make namespace object","webpack://KalturaPlayer.plugins.bannerOverlay/external root \"KalturaPlayer\"","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://KalturaPlayer.plugins.bannerOverlay/external root \"KalturaPlayer.ui.preact\"","webpack://KalturaPlayer.plugins.bannerOverlay/./src/types/banner-overlay-config.ts","webpack://KalturaPlayer.plugins.bannerOverlay/./src/types/icon.ts","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://KalturaPlayer.plugins.bannerOverlay/external root \"KalturaPlayer.ui.preactHooks\"","webpack://KalturaPlayer.plugins.bannerOverlay/external root \"KalturaPlayer.core\"","webpack://KalturaPlayer.plugins.bannerOverlay/./src/components/banner-overlay/banner-overlay.scss?3983","webpack://KalturaPlayer.plugins.bannerOverlay/./src/events/events.ts","webpack://KalturaPlayer.plugins.bannerOverlay/./src/components/banner-overlay/banner-display.tsx","webpack://KalturaPlayer.plugins.bannerOverlay/./src/components/banner-overlay/banner-overlay.tsx","webpack://KalturaPlayer.plugins.bannerOverlay/./src/components/banner-overlay/banner-timer-manager.tsx","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://KalturaPlayer.plugins.bannerOverlay/./src/banner-overlay.tsx","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://KalturaPlayer.plugins.bannerOverlay/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://KalturaPlayer.plugins.bannerOverlay/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"KalturaPlayer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"KalturaPlayer\"] = factory();\n\telse\n\t\troot[\"KalturaPlayer\"] = root[\"KalturaPlayer\"] || {}, root[\"KalturaPlayer\"][\"plugins\"] = root[\"KalturaPlayer\"][\"plugins\"] || {}, root[\"KalturaPlayer\"][\"plugins\"][\"bannerOverlay\"] = factory();\n})(self, () => {\nreturn ","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.playkit-banner-overlay__banner-overlay__banner-overlay{position:absolute;pointer-events:none;width:100%;padding:4px 8px}.playkit-banner-overlay__banner-overlay__banner-content{display:flex;border-radius:var(--Roundness-2, 8px);background:var(--B-40, rgba(0, 0, 0, 0.4));padding:4px 8px;align-items:center;gap:8px;color:#fff;font-size:16px;font-family:\"Lato\",sans-serif;font-style:normal;font-weight:400;line-height:150%;box-sizing:border-box;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto;box-shadow:0 4px 4px rgba(0,0,0,.25);overflow:visible;text-shadow:0 4px 4px rgba(0,0,0,.25)}.playkit-banner-overlay__banner-overlay__content-center{justify-content:center;text-align:center}.playkit-banner-overlay__banner-overlay__content-left{justify-content:flex-start;text-align:left}.playkit-banner-overlay__banner-overlay__content-right{justify-content:flex-end;text-align:right}.playkit-banner-overlay__banner-overlay__banner-text{display:block;width:100%;margin:0}.playkit-banner-overlay__banner-overlay__text-container{flex:1 1 auto;min-width:0;overflow:visible}.playkit-banner-overlay__banner-overlay__text-truncated{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.playkit-banner-overlay__banner-overlay__text-wrapping{word-wrap:break-word;word-break:break-word}.playkit-banner-overlay__banner-overlay__close-button{background:none;border:none;color:#fff;font-size:20px;width:24px;height:24px;cursor:pointer;opacity:.9;transition:opacity .2s ease;flex:0 0 auto;display:flex;align-items:center;justify-content:center}.playkit-banner-overlay__banner-overlay__close-button:hover{opacity:1}.playkit-banner-overlay__banner-overlay__close-button:focus{outline:1px solid rgba(255,255,255,.5);outline-offset:2px}.playkit-banner-overlay__banner-overlay__top{top:0;left:50%;transform:translateX(-50%)}.playkit-banner-overlay__banner-overlay__bottom{bottom:0;left:50%;transform:translateX(-50%)}.playkit-banner-overlay__banner-overlay__top-left{top:0;left:0}.playkit-banner-overlay__banner-overlay__top-right{top:0;right:0}.playkit-banner-overlay__banner-overlay__bottom-left{bottom:0;left:0}.playkit-banner-overlay__banner-overlay__bottom-right{bottom:0;right:0}@media(max-width: 480px){.playkit-banner-overlay__banner-overlay__banner-content{font-size:14px;padding:4px 6px}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/banner-overlay/banner-overlay.scss\"],\"names\":[],\"mappings\":\"AAAA,wDACE,iBAAA,CACA,mBAAA,CACA,UAAA,CACA,eAAA,CAGF,wDACE,YAAA,CACA,qCAAA,CACA,0CAAA,CACA,eAAA,CACA,kBAAA,CACA,OAAA,CACA,UAAA,CACA,cAAA,CACA,6BAAA,CACA,iBAAA,CACA,eAAA,CACA,gBAAA,CACA,qBAAA,CACA,yBAAA,CACA,iCAAA,CACA,mBAAA,CACA,oCAAA,CACA,gBAAA,CACA,qCAAA,CAGF,wDACE,sBAAA,CACA,iBAAA,CAGF,sDACE,0BAAA,CACA,eAAA,CAGF,uDACE,wBAAA,CACA,gBAAA,CAGF,qDACE,aAAA,CACA,UAAA,CACA,QAAA,CAGF,wDACE,aAAA,CACA,WAAA,CACA,gBAAA,CAGF,wDACE,eAAA,CACA,kBAAA,CACA,sBAAA,CAGF,uDACE,oBAAA,CACA,qBAAA,CAGF,sDACE,eAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CACA,WAAA,CACA,cAAA,CACA,UAAA,CACA,2BAAA,CACA,aAAA,CAEA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,4DACE,SAAA,CAGF,4DACE,sCAAA,CACA,kBAAA,CAIJ,6CACE,KAAA,CACA,QAAA,CACA,0BAAA,CAGF,gDACE,QAAA,CACA,QAAA,CACA,0BAAA,CAGF,kDACE,KAAA,CACA,MAAA,CAGF,mDACE,KAAA,CACA,OAAA,CAGF,qDACE,QAAA,CACA,MAAA,CAGF,sDACE,QAAA,CACA,OAAA,CAGF,yBACE,wDACE,cAAA,CACA,eAAA,CAAA\",\"sourcesContent\":[\".banner-overlay {\\n position: absolute;\\n pointer-events: none;\\n width: 100%;\\n padding: 4px 8px;\\n}\\n\\n.banner-content {\\n display: flex;\\n border-radius: var(--Roundness-2, 8px);\\n background: var(--B-40, rgba(0, 0, 0, 0.40));\\n padding: 4px 8px;\\n align-items: center;\\n gap: 8px;\\n color: #FFFFFF;\\n font-size: 16px;\\n font-family: 'Lato', sans-serif;\\n font-style: normal;\\n font-weight: 400;\\n line-height: 150%;\\n box-sizing: border-box;\\n backdrop-filter: blur(2px);\\n -webkit-backdrop-filter: blur(2px);\\n pointer-events: auto;\\n box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);\\n overflow: visible;\\n text-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);\\n}\\n\\n.content-center {\\n justify-content: center;\\n text-align: center;\\n}\\n\\n.content-left {\\n justify-content: flex-start;\\n text-align: left;\\n}\\n\\n.content-right {\\n justify-content: flex-end;\\n text-align: right;\\n}\\n\\n.banner-text {\\n display: block;\\n width: 100%;\\n margin: 0;\\n}\\n\\n.text-container {\\n flex: 1 1 auto;\\n min-width: 0;\\n overflow: visible;\\n}\\n\\n.text-truncated {\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.text-wrapping {\\n word-wrap: break-word;\\n word-break: break-word;\\n}\\n\\n.close-button {\\n background: none;\\n border: none;\\n color: #FFFFFF;\\n font-size: 20px;\\n width: 24px;\\n height: 24px;\\n cursor: pointer;\\n opacity: 0.9;\\n transition: opacity 0.2s ease;\\n flex: 0 0 auto;\\n\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n &:hover {\\n opacity: 1;\\n }\\n\\n &:focus {\\n outline: 1px solid rgba(255, 255, 255, 0.5);\\n outline-offset: 2px;\\n }\\n}\\n\\n.top {\\n top: 0;\\n left: 50%;\\n transform: translateX(-50%);\\n}\\n\\n.bottom {\\n bottom: 0;\\n left: 50%;\\n transform: translateX(-50%);\\n}\\n\\n.top-left {\\n top: 0;\\n left: 0;\\n}\\n\\n.top-right {\\n top: 0;\\n right: 0;\\n}\\n\\n.bottom-left {\\n bottom: 0;\\n left: 0;\\n}\\n\\n.bottom-right {\\n bottom: 0;\\n right: 0;\\n}\\n\\n@media (max-width: 480px) {\\n .banner-content {\\n font-size: 14px;\\n padding: 4px 6px;\\n }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport var bannerOverlay = `playkit-banner-overlay__banner-overlay__banner-overlay`;\nexport var bannerContent = `playkit-banner-overlay__banner-overlay__banner-content`;\nexport var contentCenter = `playkit-banner-overlay__banner-overlay__content-center`;\nexport var contentLeft = `playkit-banner-overlay__banner-overlay__content-left`;\nexport var contentRight = `playkit-banner-overlay__banner-overlay__content-right`;\nexport var bannerText = `playkit-banner-overlay__banner-overlay__banner-text`;\nexport var textContainer = `playkit-banner-overlay__banner-overlay__text-container`;\nexport var textTruncated = `playkit-banner-overlay__banner-overlay__text-truncated`;\nexport var textWrapping = `playkit-banner-overlay__banner-overlay__text-wrapping`;\nexport var closeButton = `playkit-banner-overlay__banner-overlay__close-button`;\nexport var top = `playkit-banner-overlay__banner-overlay__top`;\nexport var bottom = `playkit-banner-overlay__banner-overlay__bottom`;\nexport var topLeft = `playkit-banner-overlay__banner-overlay__top-left`;\nexport var topRight = `playkit-banner-overlay__banner-overlay__top-right`;\nexport var bottomLeft = `playkit-banner-overlay__banner-overlay__bottom-left`;\nexport var bottomRight = `playkit-banner-overlay__banner-overlay__bottom-right`;\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement, attributes) {\n Object.keys(attributes).forEach(function (key) {\n styleElement.setAttribute(key, attributes[key]);\n });\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join(\"\\n\");\n };\n}();\n\n/* istanbul ignore next */\nfunction apply(styleElement, index, remove, obj) {\n var css;\n if (remove) {\n css = \"\";\n } else {\n css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n }\n\n // For old IE\n /* istanbul ignore if */\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = styleElement.childNodes;\n if (childNodes[index]) {\n styleElement.removeChild(childNodes[index]);\n }\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index]);\n } else {\n styleElement.appendChild(cssNode);\n }\n }\n}\nvar singletonData = {\n singleton: null,\n singletonCounter: 0\n};\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") return {\n update: function update() {},\n remove: function remove() {}\n };\n\n // eslint-disable-next-line no-undef,no-use-before-define\n var styleIndex = singletonData.singletonCounter++;\n var styleElement =\n // eslint-disable-next-line no-undef,no-use-before-define\n singletonData.singleton || (\n // eslint-disable-next-line no-undef,no-use-before-define\n singletonData.singleton = options.insertStyleElement(options));\n return {\n update: function update(obj) {\n apply(styleElement, styleIndex, false, obj);\n },\n remove: function remove(obj) {\n apply(styleElement, styleIndex, true, obj);\n }\n };\n}\nmodule.exports = domAPI;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = KalturaPlayer;","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : String(i);\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = KalturaPlayer.ui.preact;","export enum BannerAlignment {\n TOP = 'top',\n BOTTOM = 'bottom',\n TOP_LEFT = 'top-left',\n TOP_RIGHT = 'top-right',\n BOTTOM_LEFT = 'bottom-left',\n BOTTOM_RIGHT = 'bottom-right'\n}\n\nexport interface BannerOverlayConfig {\n text: string;\n duration?: number | 'unlimited';\n alignment?: BannerAlignment;\n allowWrapping?: boolean; // default: true\n allowClose?: boolean; // default: false\n};\n","enum Icon {\n CLOSE = 'M13.364 11.9497L17.6066 16.1924C17.9971 16.5829 17.9971 17.2161 17.6066 17.6066C17.2161 17.9971 16.5829 17.9971 16.1924 17.6066L11.9497 13.364L7.70711 17.6066C7.31658 17.9971 6.68342 17.9971 6.29289 17.6066C5.90237 17.2161 5.90237 16.5829 6.29289 16.1924L10.5355 11.9497L6.29289 7.70711C5.90237 7.31658 5.90237 6.68342 6.29289 6.29289C6.68342 5.90237 7.31658 5.90237 7.70711 6.29289L11.9497 10.5355L16.1924 6.29289C16.5829 5.90237 17.2161 5.90237 17.6066 6.29289C17.9971 6.68342 17.9971 7.31658 17.6066 7.70711L13.364 11.9497Z'\n}\n\nexport {Icon};\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","const __WEBPACK_NAMESPACE_OBJECT__ = KalturaPlayer.ui.preactHooks;","const __WEBPACK_NAMESPACE_OBJECT__ = KalturaPlayer.core;","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/singletonStyleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithAttributesAndNonce.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n \n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./banner-overlay.scss\";\n \n \n\nvar options = {\"attributes\":{\"id\":\"@playkit-js/banner-overlay\"}};\n\n;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./banner-overlay.scss\";\n export default content && content.locals ? content.locals : undefined;\n","export const BANNER_MESSAGE_DISPLAYS = 'banner_message_displays';\nexport const BANNER_MESSAGE_MANUALLY_DISMISSED = 'banner_message_manually_dismissed';\n","import { h, FunctionalComponent } from 'preact';\nimport { useEffect, useRef, useState } from 'preact/hooks';\nimport { ui, KalturaPlayer } from '@playkit-js/kaltura-player-js';\nimport { FakeEvent } from '@playkit-js/playkit-js';\nimport * as styles from './banner-overlay.scss';\nimport { BannerAlignment, Icon as IconPath } from '../../types';\nimport { BANNER_MESSAGE_DISPLAYS, BANNER_MESSAGE_MANUALLY_DISMISSED } from '../../events/events';\n\nconst { Icon, Tooltip } = ui.Components;\nconst { withText } = ui.preacti18n;\n\nexport interface BannerDisplayProps {\n text: string;\n alignment?: BannerAlignment;\n allowWrapping?: boolean;\n allowClose?: boolean;\n onClose?: () => void;\n closeBannerLabel: string;\n player?: KalturaPlayer;\n}\n\nconst BannerDisplayComponent: FunctionalComponent<BannerDisplayProps> = ({\n text,\n alignment = BannerAlignment.TOP_LEFT,\n allowWrapping = true,\n allowClose = false,\n onClose,\n closeBannerLabel,\n player\n}: BannerDisplayProps): h.JSX.Element => {\n const [isTextTruncated, setIsTextTruncated] = useState(false);\n const [hasDispatchedDisplayEvent, setHasDispatchedDisplayEvent] = useState(false);\n const textRef = useRef<HTMLSpanElement>(null);\n\n const checkIfTextIsTruncated = (): void => {\n if (!allowWrapping && textRef.current) {\n const element = textRef.current;\n const isTextTruncated = element.scrollWidth > element.clientWidth;\n setIsTextTruncated(isTextTruncated);\n }\n };\n\n const handleClose = (): void => {\n // event to notify about banner message manually dismissed\n player?.dispatchEvent(new FakeEvent(BANNER_MESSAGE_MANUALLY_DISMISSED));\n onClose?.();\n };\n\n useEffect(() => {\n checkIfTextIsTruncated();\n\n // event to notify about banner message displays\n if (player && !hasDispatchedDisplayEvent) {\n player.dispatchEvent(new FakeEvent(BANNER_MESSAGE_DISPLAYS));\n setHasDispatchedDisplayEvent(true);\n }\n }, [allowWrapping, player, hasDispatchedDisplayEvent]);\n\n useEffect(() => {\n requestAnimationFrame(checkIfTextIsTruncated);\n }, [text, allowWrapping]);\n\n const getAlignmentClass = (): string => {\n switch (alignment) {\n case BannerAlignment.TOP:\n return styles.top;\n case BannerAlignment.BOTTOM:\n return styles.bottom;\n case BannerAlignment.TOP_LEFT:\n return styles.topLeft;\n case BannerAlignment.TOP_RIGHT:\n return styles.topRight;\n case BannerAlignment.BOTTOM_LEFT:\n return styles.bottomLeft;\n case BannerAlignment.BOTTOM_RIGHT:\n return styles.bottomRight;\n default:\n return styles.topLeft;\n }\n };\n\n const getTextClass = (): string => {\n return allowWrapping ? styles.textWrapping : styles.textTruncated;\n };\n\n const getContentAlignmentClass = (): string => {\n switch (alignment) {\n case BannerAlignment.TOP:\n case BannerAlignment.BOTTOM:\n return styles.contentCenter;\n case BannerAlignment.TOP_RIGHT:\n case BannerAlignment.BOTTOM_RIGHT:\n return styles.contentRight;\n case BannerAlignment.TOP_LEFT:\n case BannerAlignment.BOTTOM_LEFT:\n default:\n return styles.contentLeft;\n }\n };\n\n const renderText = (): h.JSX.Element => {\n const textClass = getTextClass();\n const textElement = (\n <span ref={textRef} className={`${styles.bannerText} ${textClass}`}>\n {text}\n </span>\n );\n\n if (!allowWrapping && isTextTruncated) {\n return (\n <Tooltip label={text} type=\"top\">\n {textElement}\n </Tooltip>\n );\n }\n\n return textElement;\n };\n\n const alignmentClass = getAlignmentClass();\n const contentAlignmentClass = getContentAlignmentClass();\n\n return (\n <div data-testid=\"banner-overlay\" className={`${styles.bannerOverlay} ${alignmentClass}`} role=\"status\" aria-label={text}>\n <div className={`${styles.bannerContent} ${contentAlignmentClass}`}>\n <div className={styles.textContainer}>{renderText()}</div>\n {allowClose && (\n <button\n className={styles.closeButton}\n onClick={handleClose}\n aria-label={`${closeBannerLabel}: ${text}`}\n tabIndex={0}\n data-testid=\"banner-close-button\"\n >\n <Icon id={'banner-overlay-close-icon'} path={IconPath.CLOSE} viewBox={'0 0 25 25'} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport const BannerDisplay = withText({\n closeBannerLabel: 'bannerOverlay.closeBanner'\n})(BannerDisplayComponent);\n","import { h, FunctionalComponent } from 'preact';\nimport { KalturaPlayer, ui } from '@playkit-js/kaltura-player-js';\nimport { BannerAlignment } from '../../types';\nimport { BannerDisplay } from './banner-display';\nimport { useBannerTimerManager } from './banner-timer-manager';\n\nconst { withPlayer } = ui.Components;\nconst { withEventManager } = ui.Event;\n\nexport interface BannerOverlayProps {\n text: string;\n alignment?: BannerAlignment;\n allowWrapping?: boolean;\n allowClose?: boolean;\n duration?: number | 'unlimited';\n onClose?: () => void;\n player?: KalturaPlayer;\n eventManager?: any;\n}\n\nconst BannerOverlay: FunctionalComponent<BannerOverlayProps> = withPlayer(\n withEventManager(\n ({\n text,\n alignment = BannerAlignment.TOP_LEFT,\n allowWrapping = true,\n allowClose = false,\n duration,\n onClose,\n player,\n eventManager\n }: BannerOverlayProps): h.JSX.Element | null => {\n const handleHide = (): void => {\n onClose?.();\n };\n\n const { isVisible, hide } = useBannerTimerManager({\n duration,\n player,\n eventManager,\n onHide: handleHide\n });\n\n const handleClose = (): void => {\n hide();\n };\n\n if (!isVisible) return null;\n\n return (\n <BannerDisplay\n text={text}\n alignment={alignment}\n allowWrapping={allowWrapping}\n allowClose={allowClose}\n onClose={handleClose}\n player={player}\n />\n );\n }\n )\n);\n\nexport { BannerOverlay };\n","import { useEffect, useRef, useState } from 'preact/hooks';\nimport { KalturaPlayer } from '@playkit-js/kaltura-player-js';\n\nexport interface BannerTimerManagerProps {\n duration?: number | 'unlimited';\n player?: KalturaPlayer;\n eventManager?: any;\n onHide: () => void;\n onPlayerStarted?: () => void;\n}\n\nexport interface BannerTimerManagerReturn {\n isVisible: boolean;\n hasPlayerStarted: boolean;\n hide: () => void;\n}\n\nexport const useBannerTimerManager = ({\n duration,\n player,\n eventManager,\n onHide,\n onPlayerStarted\n}: BannerTimerManagerProps): BannerTimerManagerReturn => {\n const [isVisible, setIsVisible] = useState(true);\n const [hasPlayerStarted, setHasPlayerStarted] = useState(false);\n const hideTimeout = useRef<NodeJS.Timeout>();\n\n const handlePlayerPlay = (): void => {\n if (!hasPlayerStarted && duration !== 'unlimited' && typeof duration === 'number' && duration > 0) {\n setHasPlayerStarted(true);\n onPlayerStarted?.();\n\n hideTimeout.current = setTimeout(() => {\n setIsVisible(false);\n onHide();\n }, duration * 1000);\n }\n };\n\n const hide = (): void => {\n setIsVisible(false);\n onHide();\n };\n\n useEffect((): (() => void) | void => {\n if (duration !== 'unlimited' && typeof duration === 'number' && duration <= 0) {\n setIsVisible(false);\n return;\n }\n\n if (player && eventManager) {\n eventManager.listenOnce(player, player.Event.Core.FIRST_PLAYING, handlePlayerPlay);\n }\n\n return (): void => {\n if (hideTimeout.current) {\n clearTimeout(hideTimeout.current);\n }\n };\n }, [player, eventManager, duration]);\n\n return {\n isVisible,\n hasPlayerStarted,\n hide\n };\n};\n","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import { h } from 'preact';\nimport { BasePlugin, ui } from '@playkit-js/kaltura-player-js';\nimport { BannerOverlay } from './components/banner-overlay';\nimport { BannerAlignment, BannerOverlayConfig } from './types';\n\nexport const pluginName = 'bannerOverlay';\n\nexport class BannerOverlayPlugin extends BasePlugin {\n public static defaultConfig: BannerOverlayConfig = {\n text: '',\n duration: 5,\n alignment: BannerAlignment.TOP_LEFT,\n allowWrapping: true,\n allowClose: false\n };\n\n public static isValid(): boolean {\n return true;\n }\n\n private bannerComponent: any = null;\n\n public loadMedia(): void {\n this.logger.info('BannerOverlay: loadMedia lifecycle hook called');\n if (this.config.text) {\n this.addBannerComponent();\n }\n }\n\n private addBannerComponent(): void {\n const componentConfig = {\n label: 'banner-overlay',\n area: ui.ReservedPresetAreas.InteractiveArea,\n presets: [ui.ReservedPresetNames.Playback, ui.ReservedPresetNames.Live],\n get: () => (\n <BannerOverlay\n text={this.config.text}\n alignment={this.config.alignment}\n allowWrapping={this.config.allowWrapping}\n allowClose={this.config.allowClose}\n duration={this.config.duration}\n onClose={this.handleBannerClose.bind(this)}\n player={this.player}\n />\n )\n };\n\n this.bannerComponent = this.player.ui.addComponent(componentConfig);\n }\n\n private handleBannerClose(): void {\n this.removeBannerComponent();\n }\n\n private removeBannerComponent(): void {\n if (this.bannerComponent) {\n this.player.ui.removeComponent(this.bannerComponent);\n this.bannerComponent = null;\n }\n }\n\n public reset(): void {\n this.logger.info('BannerOverlay: reset lifecycle hook called');\n this.removeBannerComponent();\n }\n\n public destroy(): void {\n this.removeBannerComponent();\n super.destroy();\n this.logger.info('BannerOverlay: destroy lifecycle hook called');\n }\n}\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import { registerPlugin } from '@playkit-js/kaltura-player-js';\nimport { pluginName, BannerOverlayPlugin } from './banner-overlay';\n\nregisterPlugin(pluginName, BannerOverlayPlugin);\n\nexport * from './types';\n"],"names":["root","factory","exports","module","define","amd","self","___CSS_LOADER_EXPORT___","push","id","bannerOverlay","bannerContent","contentCenter","contentLeft","contentRight","bannerText","textContainer","textTruncated","textWrapping","closeButton","top","bottom","topLeft","topRight","bottomLeft","bottomRight","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","options","idCountMap","identifiers","base","count","indexByIdentifier","obj","css","sourceMap","references","updater","addElementStyle","byIndex","splice","api","domAPI","update","newObj","remove","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","Object","keys","forEach","key","setAttribute","textStore","replaceText","replacement","filter","Boolean","apply","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","singletonData","singleton","singletonCounter","styleIndex","insertStyleElement","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","KalturaPlayer","_typeof","iterator","constructor","toPropertyKey","t","toPrimitive","TypeError","String","_defineProperties","props","descriptor","configurable","writable","_assertThisInitialized","ReferenceError","_getPrototypeOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_get","Reflect","property","receiver","object","desc","getOwnPropertyDescriptor","arguments","_setPrototypeOf","p","_defineProperty","ui","preact","BannerAlignment","Icon","_arrayLikeToArray","arr","len","arr2","Array","_slicedToArray","isArray","l","u","f","next","done","minLen","slice","name","from","test","preactHooks","core","locals","_ui$Components","Components","Tooltip","BannerDisplay","withText","preacti18n","closeBannerLabel","_ref","text","_ref$alignment","alignment","TOP_LEFT","_ref$allowWrapping","allowWrapping","_ref$allowClose","allowClose","onClose","player","_useState2","useState","isTextTruncated","setIsTextTruncated","_useState4","hasDispatchedDisplayEvent","setHasDispatchedDisplayEvent","textRef","useRef","checkIfTextIsTruncated","current","scrollWidth","clientWidth","useEffect","dispatchEvent","FakeEvent","requestAnimationFrame","textClass","textElement","alignmentClass","TOP","styles","BOTTOM","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","getAlignmentClass","contentAlignmentClass","getContentAlignmentClass","h","className","role","ref","label","type","onClick","tabIndex","path","IconPath","CLOSE","viewBox","BannerOverlay","withPlayer","withEventManager","Event","duration","_useBannerTimerManage","eventManager","onHide","onPlayerStarted","isVisible","setIsVisible","hasPlayerStarted","setHasPlayerStarted","hideTimeout","handlePlayerPlay","setTimeout","listenOnce","Core","FIRST_PLAYING","clearTimeout","hide","useBannerTimerManager","BannerOverlayPlugin","_BasePlugin","_this","instance","Constructor","_classCallCheck","_len","args","_key","_callSuper","protoProps","staticProps","subClass","superClass","create","_inherits","logger","info","config","addBannerComponent","_this2","componentConfig","area","ReservedPresetAreas","InteractiveArea","presets","ReservedPresetNames","Playback","Live","handleBannerClose","bannerComponent","addComponent","removeBannerComponent","removeComponent","BasePlugin","registerPlugin"],"sourceRoot":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.39.1"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@playkit-js/banner-overlay",
|
|
3
|
+
"version": "1.0.1-canary.0-7cc51bc",
|
|
4
|
+
"description": "Banner overlay plugin for Kaltura player - displays configurable text banners with various positioning and styling options",
|
|
5
|
+
"main": "dist/playkit-banner-overlay.js",
|
|
6
|
+
"typings": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*",
|
|
9
|
+
"src/**/*",
|
|
10
|
+
"translations/**/*"
|
|
11
|
+
],
|
|
12
|
+
"license": "AGPL-3.0",
|
|
13
|
+
"homepage": "https://github.com/kaltura/playkit-js-banner-overlay",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/kaltura/playkit-js-banner-overlay"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"@playkit-js/banner-overlay",
|
|
20
|
+
"banner-overlay",
|
|
21
|
+
"kaltura",
|
|
22
|
+
"player"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"serve": "webpack serve --open --mode development",
|
|
26
|
+
"watch": "webpack --mode development --watch",
|
|
27
|
+
"build:prod": "webpack --mode production",
|
|
28
|
+
"build": "yarn run build:prod && yarn run build:types",
|
|
29
|
+
"build:types": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --local",
|
|
30
|
+
"type-check": "tsc --noEmit",
|
|
31
|
+
"type-check:watch": "yarn run type-check --watch",
|
|
32
|
+
"lint": "eslint src/ --ext .js --ext .ts",
|
|
33
|
+
"lint:fix": "yarn run lint --fix",
|
|
34
|
+
"prettier": "prettier --write .",
|
|
35
|
+
"clean": "rimraf ./dist",
|
|
36
|
+
"prebuild": "npm run clean",
|
|
37
|
+
"precommit": "npm run build:prod && npm run type-check && npm run lint",
|
|
38
|
+
"pushTaggedRelease": "git push --follow-tags --no-verify origin master",
|
|
39
|
+
"release": "standard-version",
|
|
40
|
+
"cy:open": "cypress open",
|
|
41
|
+
"cy:run": "yarn run cy:run:chrome && yarn run cy:run:firefox && yarn run cy:run:edge && yarn run cy:run:safari",
|
|
42
|
+
"cy:run:chrome": "cypress run --browser chrome --config video=false",
|
|
43
|
+
"cy:run:firefox": "cypress run --browser firefox --config video=false",
|
|
44
|
+
"cy:run:edge": "cypress run --browser edge --config video=false",
|
|
45
|
+
"cy:run:safari": "cypress run --browser webkit --config video=false",
|
|
46
|
+
"test:prepare": "yarn run build && copyfiles -f ./dist/playkit-banner-overlay.js ./dist/playkit-banner-overlay.js.map ./cypress/public",
|
|
47
|
+
"test:watch": "yarn run test:prepare && yarn run cy:open",
|
|
48
|
+
"test": "yarn run test:prepare && yarn run cy:run"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@babel/core": "^7.23.7",
|
|
52
|
+
"@babel/plugin-proposal-decorators": "^7.10.5",
|
|
53
|
+
"@babel/plugin-transform-react-jsx": "^7.23.4",
|
|
54
|
+
"@babel/plugin-transform-runtime": "^7.23.7",
|
|
55
|
+
"@babel/preset-env": "^7.23.8",
|
|
56
|
+
"@babel/preset-typescript": "^7.23.3",
|
|
57
|
+
"@babel/runtime": "^7.23.8",
|
|
58
|
+
"@microsoft/api-extractor": "^7.39.1",
|
|
59
|
+
"@playkit-js/browserslist-config": "1.0.8",
|
|
60
|
+
"@playkit-js/kaltura-player-js": "^3.17.9-canary.0-0c8731f",
|
|
61
|
+
"@types/chai": "^4.3.3",
|
|
62
|
+
"@types/mocha": "^9.1.1",
|
|
63
|
+
"@types/preact-i18n": "1.2.0",
|
|
64
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
65
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
66
|
+
"babel-loader": "^9.1.3",
|
|
67
|
+
"chai": "^4.3.6",
|
|
68
|
+
"css-loader": "^6.9.0",
|
|
69
|
+
"eslint": "^8.56.0",
|
|
70
|
+
"eslint-config-preact": "^1.3.0",
|
|
71
|
+
"eslint-config-prettier": "^9.1.0",
|
|
72
|
+
"eslint-plugin-mocha": "^10.2.0",
|
|
73
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
74
|
+
"mocha": "^10.2.0",
|
|
75
|
+
"prettier": "^ 3.2.2",
|
|
76
|
+
"sass": "^1.69.7",
|
|
77
|
+
"sass-loader": "^13.3.3",
|
|
78
|
+
"sinon": "^14.0.0",
|
|
79
|
+
"standard-version": "^9.5.0",
|
|
80
|
+
"style-loader": "^3.3.4",
|
|
81
|
+
"typescript": "^5.3.3",
|
|
82
|
+
"typescript-plugin-css-modules": "^5.0.2",
|
|
83
|
+
"webpack": "^5.89.0",
|
|
84
|
+
"webpack-cli": "^5.1.4",
|
|
85
|
+
"webpack-dev-server": "^4.15.1",
|
|
86
|
+
"cypress": "14.1.0",
|
|
87
|
+
"eslint-plugin-cypress": "^3.3.0",
|
|
88
|
+
"copyfiles": "^2.4.1"
|
|
89
|
+
},
|
|
90
|
+
"publishConfig": {
|
|
91
|
+
"access": "public"
|
|
92
|
+
},
|
|
93
|
+
"browserslist": [
|
|
94
|
+
"extends @playkit-js/browserslist-config"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { h } from 'preact';
|
|
2
|
+
import { BasePlugin, ui } from '@playkit-js/kaltura-player-js';
|
|
3
|
+
import { BannerOverlay } from './components/banner-overlay';
|
|
4
|
+
import { BannerAlignment, BannerOverlayConfig } from './types';
|
|
5
|
+
|
|
6
|
+
export const pluginName = 'bannerOverlay';
|
|
7
|
+
|
|
8
|
+
export class BannerOverlayPlugin extends BasePlugin {
|
|
9
|
+
public static defaultConfig: BannerOverlayConfig = {
|
|
10
|
+
text: '',
|
|
11
|
+
duration: 5,
|
|
12
|
+
alignment: BannerAlignment.TOP_LEFT,
|
|
13
|
+
allowWrapping: true,
|
|
14
|
+
allowClose: false
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
public static isValid(): boolean {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private bannerComponent: any = null;
|
|
22
|
+
|
|
23
|
+
public loadMedia(): void {
|
|
24
|
+
this.logger.info('BannerOverlay: loadMedia lifecycle hook called');
|
|
25
|
+
if (this.config.text) {
|
|
26
|
+
this.addBannerComponent();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private addBannerComponent(): void {
|
|
31
|
+
const componentConfig = {
|
|
32
|
+
label: 'banner-overlay',
|
|
33
|
+
area: ui.ReservedPresetAreas.InteractiveArea,
|
|
34
|
+
presets: [ui.ReservedPresetNames.Playback, ui.ReservedPresetNames.Live],
|
|
35
|
+
get: () => (
|
|
36
|
+
<BannerOverlay
|
|
37
|
+
text={this.config.text}
|
|
38
|
+
alignment={this.config.alignment}
|
|
39
|
+
allowWrapping={this.config.allowWrapping}
|
|
40
|
+
allowClose={this.config.allowClose}
|
|
41
|
+
duration={this.config.duration}
|
|
42
|
+
onClose={this.handleBannerClose.bind(this)}
|
|
43
|
+
player={this.player}
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
this.bannerComponent = this.player.ui.addComponent(componentConfig);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private handleBannerClose(): void {
|
|
52
|
+
this.removeBannerComponent();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private removeBannerComponent(): void {
|
|
56
|
+
if (this.bannerComponent) {
|
|
57
|
+
this.player.ui.removeComponent(this.bannerComponent);
|
|
58
|
+
this.bannerComponent = null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public reset(): void {
|
|
63
|
+
this.logger.info('BannerOverlay: reset lifecycle hook called');
|
|
64
|
+
this.removeBannerComponent();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public destroy(): void {
|
|
68
|
+
this.removeBannerComponent();
|
|
69
|
+
super.destroy();
|
|
70
|
+
this.logger.info('BannerOverlay: destroy lifecycle hook called');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { h, FunctionalComponent } from 'preact';
|
|
2
|
+
import { useEffect, useRef, useState } from 'preact/hooks';
|
|
3
|
+
import { ui, KalturaPlayer } from '@playkit-js/kaltura-player-js';
|
|
4
|
+
import { FakeEvent } from '@playkit-js/playkit-js';
|
|
5
|
+
import * as styles from './banner-overlay.scss';
|
|
6
|
+
import { BannerAlignment, Icon as IconPath } from '../../types';
|
|
7
|
+
import { BANNER_MESSAGE_DISPLAYS, BANNER_MESSAGE_MANUALLY_DISMISSED } from '../../events/events';
|
|
8
|
+
|
|
9
|
+
const { Icon, Tooltip } = ui.Components;
|
|
10
|
+
const { withText } = ui.preacti18n;
|
|
11
|
+
|
|
12
|
+
export interface BannerDisplayProps {
|
|
13
|
+
text: string;
|
|
14
|
+
alignment?: BannerAlignment;
|
|
15
|
+
allowWrapping?: boolean;
|
|
16
|
+
allowClose?: boolean;
|
|
17
|
+
onClose?: () => void;
|
|
18
|
+
closeBannerLabel: string;
|
|
19
|
+
player?: KalturaPlayer;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const BannerDisplayComponent: FunctionalComponent<BannerDisplayProps> = ({
|
|
23
|
+
text,
|
|
24
|
+
alignment = BannerAlignment.TOP_LEFT,
|
|
25
|
+
allowWrapping = true,
|
|
26
|
+
allowClose = false,
|
|
27
|
+
onClose,
|
|
28
|
+
closeBannerLabel,
|
|
29
|
+
player
|
|
30
|
+
}: BannerDisplayProps): h.JSX.Element => {
|
|
31
|
+
const [isTextTruncated, setIsTextTruncated] = useState(false);
|
|
32
|
+
const [hasDispatchedDisplayEvent, setHasDispatchedDisplayEvent] = useState(false);
|
|
33
|
+
const textRef = useRef<HTMLSpanElement>(null);
|
|
34
|
+
|
|
35
|
+
const checkIfTextIsTruncated = (): void => {
|
|
36
|
+
if (!allowWrapping && textRef.current) {
|
|
37
|
+
const element = textRef.current;
|
|
38
|
+
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
39
|
+
setIsTextTruncated(isTextTruncated);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const handleClose = (): void => {
|
|
44
|
+
// event to notify about banner message manually dismissed
|
|
45
|
+
player?.dispatchEvent(new FakeEvent(BANNER_MESSAGE_MANUALLY_DISMISSED));
|
|
46
|
+
onClose?.();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
checkIfTextIsTruncated();
|
|
51
|
+
|
|
52
|
+
// event to notify about banner message displays
|
|
53
|
+
if (player && !hasDispatchedDisplayEvent) {
|
|
54
|
+
player.dispatchEvent(new FakeEvent(BANNER_MESSAGE_DISPLAYS));
|
|
55
|
+
setHasDispatchedDisplayEvent(true);
|
|
56
|
+
}
|
|
57
|
+
}, [allowWrapping, player, hasDispatchedDisplayEvent]);
|
|
58
|
+
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
requestAnimationFrame(checkIfTextIsTruncated);
|
|
61
|
+
}, [text, allowWrapping]);
|
|
62
|
+
|
|
63
|
+
const getAlignmentClass = (): string => {
|
|
64
|
+
switch (alignment) {
|
|
65
|
+
case BannerAlignment.TOP:
|
|
66
|
+
return styles.top;
|
|
67
|
+
case BannerAlignment.BOTTOM:
|
|
68
|
+
return styles.bottom;
|
|
69
|
+
case BannerAlignment.TOP_LEFT:
|
|
70
|
+
return styles.topLeft;
|
|
71
|
+
case BannerAlignment.TOP_RIGHT:
|
|
72
|
+
return styles.topRight;
|
|
73
|
+
case BannerAlignment.BOTTOM_LEFT:
|
|
74
|
+
return styles.bottomLeft;
|
|
75
|
+
case BannerAlignment.BOTTOM_RIGHT:
|
|
76
|
+
return styles.bottomRight;
|
|
77
|
+
default:
|
|
78
|
+
return styles.topLeft;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const getTextClass = (): string => {
|
|
83
|
+
return allowWrapping ? styles.textWrapping : styles.textTruncated;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const getContentAlignmentClass = (): string => {
|
|
87
|
+
switch (alignment) {
|
|
88
|
+
case BannerAlignment.TOP:
|
|
89
|
+
case BannerAlignment.BOTTOM:
|
|
90
|
+
return styles.contentCenter;
|
|
91
|
+
case BannerAlignment.TOP_RIGHT:
|
|
92
|
+
case BannerAlignment.BOTTOM_RIGHT:
|
|
93
|
+
return styles.contentRight;
|
|
94
|
+
case BannerAlignment.TOP_LEFT:
|
|
95
|
+
case BannerAlignment.BOTTOM_LEFT:
|
|
96
|
+
default:
|
|
97
|
+
return styles.contentLeft;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const renderText = (): h.JSX.Element => {
|
|
102
|
+
const textClass = getTextClass();
|
|
103
|
+
const textElement = (
|
|
104
|
+
<span ref={textRef} className={`${styles.bannerText} ${textClass}`}>
|
|
105
|
+
{text}
|
|
106
|
+
</span>
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
if (!allowWrapping && isTextTruncated) {
|
|
110
|
+
return (
|
|
111
|
+
<Tooltip label={text} type="top">
|
|
112
|
+
{textElement}
|
|
113
|
+
</Tooltip>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return textElement;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const alignmentClass = getAlignmentClass();
|
|
121
|
+
const contentAlignmentClass = getContentAlignmentClass();
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
<div data-testid="banner-overlay" className={`${styles.bannerOverlay} ${alignmentClass}`} role="status" aria-label={text}>
|
|
125
|
+
<div className={`${styles.bannerContent} ${contentAlignmentClass}`}>
|
|
126
|
+
<div className={styles.textContainer}>{renderText()}</div>
|
|
127
|
+
{allowClose && (
|
|
128
|
+
<button
|
|
129
|
+
className={styles.closeButton}
|
|
130
|
+
onClick={handleClose}
|
|
131
|
+
aria-label={`${closeBannerLabel}: ${text}`}
|
|
132
|
+
tabIndex={0}
|
|
133
|
+
data-testid="banner-close-button"
|
|
134
|
+
>
|
|
135
|
+
<Icon id={'banner-overlay-close-icon'} path={IconPath.CLOSE} viewBox={'0 0 25 25'} />
|
|
136
|
+
</button>
|
|
137
|
+
)}
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
export const BannerDisplay = withText({
|
|
144
|
+
closeBannerLabel: 'bannerOverlay.closeBanner'
|
|
145
|
+
})(BannerDisplayComponent);
|