@playkit-js/playkit-js-dual-screen 1.6.2-canary.1-e4e52c4
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 +135 -0
- package/LICENSE +661 -0
- package/README.md +2 -0
- package/dist/playkit-dual-screen.js +2 -0
- package/dist/playkit-dual-screen.js.map +1 -0
- package/package.json +78 -0
- package/tsconfig.json +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["./dualscreen/webpack/bootstrap","./dualscreen/external \"KalturaPlayer.ui.preact\"","./dualscreen/../node_modules/css-loader/dist/runtime/api.js","./dualscreen/./enums/index.ts","./dualscreen/../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","./dualscreen/external [\"KalturaPlayer\"]","./dualscreen/./icons.ts","./dualscreen/./components/button/index.ts","./dualscreen/./utils/index.ts","webpack://KalturaPlayer.plugins.dualscreen/./components/pip/pip.scss?6553","./dualscreen/./enums/positionEnum.ts","./dualscreen/./components/responsive-manager/index.ts","webpack://KalturaPlayer.plugins.dualscreen/./components/side-by-side/side-by-side.scss?1c8b","./dualscreen/./index.ts","./dualscreen/./dualscreen.tsx","./dualscreen/./components/pip/index.ts","./dualscreen/./components/pip/pip-child.tsx","./dualscreen/./components/pip/pip.scss","./dualscreen/./enums/animation.ts","./dualscreen/./enums/layoutEnum.ts","./dualscreen/./enums/reservedPresetAreasEnum.ts","./dualscreen/./enums/labels.ts","./dualscreen/./enums/players.ts","./dualscreen/./components/button/button.tsx","./dualscreen/../node_modules/preact/hooks/dist/hooks.module.js","./dualscreen/./components/pip/pip-parent.tsx","./dualscreen/./components/pip-minimized/index.ts","./dualscreen/./components/pip-minimized/pip-minimized.tsx","webpack://KalturaPlayer.plugins.dualscreen/./components/pip-minimized/pip-minimized.scss?72f0","./dualscreen/./components/pip-minimized/pip-minimized.scss","./dualscreen/./video-sync-manager.ts","./dualscreen/./image-sync-manager.ts","./dualscreen/./components/responsive-manager/responsive-manager.tsx","./dualscreen/./providers/secondary-media-loader.ts","./dualscreen/./components/drag-and-snap-manager/index.ts","./dualscreen/./components/drag-and-snap-manager/drag-and-snap-manager.tsx","webpack://KalturaPlayer.plugins.dualscreen/./components/drag-and-snap-manager/drag-and-snap-manager.scss?209b","./dualscreen/./components/drag-and-snap-manager/drag-and-snap-manager.scss","./dualscreen/./components/side-by-side/side-by-side-wrapper.tsx","./dualscreen/./components/side-by-side/side-by-side.tsx","./dualscreen/./components/side-by-side/side-by-side.scss","./dualscreen/./dualscreen-engine-decorator.ts","./dualscreen/./image-player/index.ts","./dualscreen/./image-player/image-player.tsx","webpack://KalturaPlayer.plugins.dualscreen/./image-player/image-player.scss?fc7d","./dualscreen/./image-player/image-player.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","KalturaPlayer","ui","preact","useSourceMap","list","toString","this","map","item","content","cssMapping","btoa","sourceMapping","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceURLs","sources","source","sourceRoot","join","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","length","id","_i","push","memo","isOldIE","Boolean","window","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","result","modulesToDom","options","idCountMap","identifiers","base","count","index","obj","css","media","references","updater","addStyle","insertStyleElement","style","createElement","attributes","nonce","keys","forEach","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","splice","icons","HIDE_ICON_PATH","SWAP_ICON_PATH","SIDE_BY_SIDE_ICON_PATH","SHOW_ICON_PATH","SWITCH_TO_SIDE_BY_SIDE_ICON_PATH","MediumSize","SmallSize","isInInterval","num","lower","upper","isNaN","getClientX","MouseEvent","clientX","changedTouches","getClientY","clientY","dimensionStyleToString","setSubtitlesOnTop","active","getElementsByClassName","classList","add","api","default","locals","Position","DualScreen","VERSION","NAME","core","registerPlugin","EventType","PRESETS","player","config","_layout","Layout","PIP","_inverse","_pipPosition","BottomRight","_removeActivesArr","_playbackEnded","_resolveReadyPromise","_secondaryPlayerType","PlayerType","VIDEO","_singleLayout","_pipPortraitMode","_makeReadyPromise","Promise","res","_getSecondaryPlayer","IMAGE","_imagePlayer","secondaryKalturaPlayer","_setMode","SingleMedia","_switchToSideBySide","_switchToPIPMinimizedInverse","_switchToPIPMinimized","_switchToPIPInverse","_switchToPIP","_resetMode","layout","inverse","position","_setSingleLayout","_removeActives","_setPipPosition","getPipPosition","manualChange","parentAnimation","Animations","None","_player","addComponent","label","presets","container","ReservedPresetAreas","VideoContainer","PipParent","animation","origPlayerParent","getVideoElement","parentElement","InteractiveArea","ResponsiveManager","onMinSize","onDefaultSize","DragAndSnapManager","eventManager","logger","getPosition","onPositionChanged","PipChild","Fade","playerSizePercentage","childSizePercentage","hide","onSideBySideSwitch","onInversePIP","portrait","aspectRatio","childAspectRatio","BottomBar","PipMinimized","show","onInverse","SideBySide","SideBySideWrapper","leftPlayer","rightPlayer","onSizeChange","switchToPIP","switchToPIPMinimized","switchToPIPInverse","_onActiveSlideChanged","slideItem","errored","___addSlides","providers","RequestBuilder","params","_parentEntryId","_requests","_response","assets","parentEntryId","headers","Map","request","service","action","objectType","entryIdEqual","cuePointTypeEqual","subTypeIn","responseProfile","type","fields","requests","response","isValid","ks","provider","serviceUrl","env","doRequest","loader","AssetLoader","getMediaInfo","entryId","then","has","SecondaryMediaLoader","assetLoader","objects","asset","assetUrl","assetId","cuePointType","startTime","sort","a","b","cuePoint","endTime","Number","MAX_SAFE_INTEGER","console","log","cuePointManager","addCuePoints","catch","error","_createSecondaryPlayer","ImagePlayer","_readyPromise","_addBindings","getEngineDecorator","engine","dispatcher","DualScreenEngineDecorator","getUIComponents","BottomBarRightControls","components","Remove","replaceComponent","Settings","displayName","loadMedia","_getSecondaryMedia","reset","listen","Event","RESIZE","debug","PLAYBACK_ENDED","PLAY","secondaryMediaLoader","entries","listenOnce","CHANGE_SOURCE_ENDED","_videoSyncManager","VideoSyncManager","FIRST_PLAYING","session","warn","_imageSyncManager","ImageSyncManager","secondaryPlaceholder","width","height","hidden","body","secondaryPlayerConfig","targetId","disableUserCache","playback","muted","disable","ignoreServerConfig","setup","destroy","defaultConfig","BasePlugin","connect","redux","utils","reducers","Icon","mapStateToProps","state","playerHover","shell","guiClientRect","prePlayback","playerContainerRef","createRef","pipContainerRef","componentDidMount","props","current","prepend","setDraggableTarget","_renderInnerButtons","className","styles","innerButtons","Button","iconContainer","onClick","tooltip","Labels","SwitchScreen","viewBox","path","_renderHideButton","hideContainer","Fragment","Hide","render","styleClass","childPlayer","isDragging","dragging","hovering","animatedFade","ScaleRight","animatedScaleRight","ScaleLeft","animatedScaleLeft","playerContainerStyles","ref","playerWrapper","playerContainer","bindActions","actions","Component","___CSS_LOADER_EXPORT___","Tooltip","children","buttonProps","onMouseUp","useCallback","stopPropagation","role","u","__b","f","__r","diffed","__c","v","unmount","__h","__H","__","w","setState","y","__s","k","h","_","A","F","context","sub","T","useDebugValue","q","componentDidCatch","x","__P","g","j","__e","__v","requestAnimationFrame","clearTimeout","cancelAnimationFrame","setTimeout","some","videoContainerRef","videoContainer","parentPlayer","videoContainerStyles","_renderHoverButton","hideButtons","showContainer","Show","tinyInnerButtons","childPlayerContainer","tinyChildPlayer","FakeEvent","StateType","mainPlayer","secondaryPlayer","_isSyncDelay","_errorHandling","_eventManager","_secondaryPlayer","ERROR","_logger","Severity","CRITICAL","Category","PLAYER","Code","VIDEO_ERROR","_mainPlayer","pause","dispatchEvent","_syncEvents","lastSync","play","PAUSE","TIME_UPDATE","now","Date","paused","_mediaSync","SEEKING","_seekSecondaryPlayer","ENDED","PLAYER_STATE_CHANGED","payload","newState","BUFFERING","seeking","PLAYING","oldState","doSeek","synchDelay","_getSyncDelay","playbackRateChange","adaptivePlaybackRate","Math","round","abs","playbackRate","currentTime","ctMaster","ct","aheadTime","seekTime","ended","duration","ceil","ThumbCuePointType","imagePlayer","TIMED_METADATA","_onTimedMetadata","TIMED_METADATA_ADDED","_onTimedMetadataAdded","activeSlide","cues","find","cue","track","cuepoint","CUE_POINTS_TEXT_TRACK","setActive","CUE_POINT_KEY","addImage","imageUrl","loaded","PLAYER_SIZE","HIDE_BUTTON_MODES","EXTRA_SMALL","SMALL","TINY","MIN_SIZES","playerSize","_renderChildComponent","cloneElement","includes","componentDidUpdate","prevProps","defaultProps","ResponseTypes","parentEntryIdEqual","typeEqual","KalturaMediaEntry","MediaType","mediaEntryListResponse","KalturaBaseEntryListResponse","totalCount","DragEvents","_draggableTargetRef","_draggableItemRef","_draggableAreaRef","_currMousePos","_throttleWait","_setDraggableTarget","targetEl","_addListeners","_handleChangePosition","_setAbsoluteStyles","_onStartDrag","MouseDown","_startDrag","MouseMove","MouseUp","TouchStart","unlisten","TouchMove","TouchEnd","_moveDrag","event","deltaMousePosX","deltaMousePosY","parseInt","top","right","_getBoundingClientRects","getBoundingClientRect","_applyRelativeStyles","bottom","left","_setRelativeStyles","_setRelativeBottomRightStyles","BottomLeft","_setRelativeBottomLeftStyles","TopRight","_setRelativeTopRightStyles","TopLeft","_setRelativeTopLeftStyles","_applyAbsoluteStyles","_setAbsoluteBottomRightStyles","_setAbsoluteBottomLeftStyles","_setAbsoluteTopRightStyles","_setAbsoluteTopLeftStyles","draggableItemBoundClientRect","draggableAreaBoundClientRect","_stopDrag","draggableContainerCenterX","draggableContainerCenterY","guiClientCenterX","guiClientCenterY","componentWillUnmount","moveEventName","endEventName","draggableItemStyles","draggableItem","draggableArea","onTransitionEnd","leftSideProps","onExpand","rightSideProps","sideBySideWrapper","ExpandScreen","classNames","animatedScale","plugin","_isActive","_plugin","_dispatcher","SEEKED","onActiveChanged","_images","_activeImage","_loadImage","activeId","backgroundImage","_onActiveChange","_retryInterval","_createImagePlayer","attempt","img","Image","onload","onerror","src"],"mappings":"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","file":"playkit-dual-screen.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = KalturaPlayer.ui.preact;","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","export * from \"./animation\";\nexport * from \"./layoutEnum\";\nexport * from \"./positionEnum\";\nexport * from \"./reservedPresetAreasEnum\";\nexport * from \"./labels\";\nexport * from \"./players\";","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\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\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\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 index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\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\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\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\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\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\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","module.exports = KalturaPlayer;","export namespace icons {\n export const HIDE_ICON_PATH =\n 'M4.29289 6.29289C4.68342 5.90237 5.31658 5.90237 5.70711 6.29289L8 8.58579L10.2929 6.29289C10.6834 5.90237 11.3166 5.90237 11.7071 6.29289C12.0976 6.68342 12.0976 7.31658 11.7071 7.70711L8.70711 10.7071C8.31658 11.0976 7.68342 11.0976 7.29289 10.7071L4.29289 7.70711C3.90237 7.31658 3.90237 6.68342 4.29289 6.29289Z';\n export const SWAP_ICON_PATH =\n 'M17.6744 9.27934L21.7563 13.3632L21.8282 13.4537L21.887 13.5492L21.9333 13.6489L21.9684 13.7556L21.9824 13.8172L21.9974 13.929L22 14L21.9897 14.1405L21.9824 14.1828L21.9535 14.2949L21.9231 14.3759L21.887 14.4508L21.8281 14.5463L21.7763 14.6137L21.7207 14.6744L17.6744 18.7207C17.3019 19.0931 16.6981 19.0931 16.3256 18.7207C15.9818 18.3769 15.9554 17.8359 16.2463 17.4617L16.3256 17.3719L18.7439 14.9536L12.9537 14.9537C12.4675 14.9537 12.0663 14.5899 12.0074 14.1196L12 14C12 13.5109 12.3682 13.1078 12.8425 13.0527L12.9537 13.0463L18.7426 13.0451L16.3256 10.6281C15.9798 10.2823 15.9551 9.73687 16.2515 9.36252L16.3256 9.27934C16.6981 8.90689 17.3019 8.90689 17.6744 9.27934ZM6.32562 5.27934C6.69807 4.90689 7.30193 4.90689 7.67438 5.27934L7.74849 5.36252C8.04493 5.73687 8.02023 6.28225 7.67438 6.6281L5.2574 9.04508L11.0463 9.04628L11.1575 9.0527C11.6318 9.10779 12 9.5109 12 10L11.9926 10.1196C11.9337 10.5899 11.5325 10.9537 11.0463 10.9537L5.25605 10.9536L7.67438 13.3719L7.75372 13.4617C8.04463 13.8359 8.01818 14.3769 7.67438 14.7207C7.30193 15.0931 6.69807 15.0931 6.32562 14.7207L2.25793 10.6523L2.18664 10.5668L2.12413 10.4708L2.07695 10.3759L2.03697 10.2639L2.01028 10.1405L2 10C2 9.95226 2.00351 9.90534 2.01036 9.85937L2.01758 9.81716L2.04651 9.70514L2.08932 9.59642L2.12415 9.52899L2.18631 9.43351L2.24369 9.36325L6.32562 5.27934Z';\n export const SIDE_BY_SIDE_ICON_PATH =\n 'M21.8083 4C22.4665 4 23 4.55964 23 5.25V18.75C23 19.4404 22.4665 20 21.8083 20H2.19167C1.53353 20 1 19.4404 1 18.75V5.25C1 4.55964 1.53353 4 2.19167 4H21.8083ZM15 6H3V18H15V6ZM12.999 8.967L13 9L12.998 8.94L12.999 8.967L13 9V15C13 15.5523 12.5523 16 12 16C11.4872 16 11.0645 15.614 11.0067 15.1166L11 15V11.414L6.70711 15.7071C6.34662 16.0676 5.77939 16.0953 5.3871 15.7903L5.29289 15.7071C4.93241 15.3466 4.90468 14.7794 5.2097 14.3871L5.29289 14.2929L9.584 10H6C5.48716 10 5.06449 9.61396 5.00673 9.11662L5 9C5 8.44772 5.44772 8 6 8L12.0193 8.00018C12.0427 8.00063 12.066 8.00189 12.0893 8.00397C12.1097 8.00575 12.1294 8.0081 12.149 8.01102C12.1659 8.01363 12.1834 8.0167 12.2007 8.02024C12.2227 8.02464 12.2444 8.02983 12.2658 8.03572C12.2815 8.0401 12.2969 8.04473 12.3121 8.04974C12.3318 8.05612 12.3516 8.06332 12.3711 8.0711L12.4232 8.09367C12.4439 8.10338 12.4643 8.11379 12.4843 8.12488C12.4964 8.1315 12.5086 8.13861 12.5207 8.146C12.5463 8.16172 12.5711 8.17849 12.5952 8.19631L12.6525 8.24221L12.6167 8.21279C12.6802 8.26255 12.7374 8.31982 12.7872 8.38325C12.7927 8.39016 12.7982 8.3974 12.8037 8.40469C12.8215 8.42887 12.8383 8.45372 12.8539 8.47934L12.8753 8.51594C12.8862 8.53571 12.8966 8.55611 12.9063 8.5769L12.9288 8.62866C12.9367 8.64842 12.9439 8.6682 12.9505 8.68826C12.9553 8.70315 12.9599 8.71854 12.9642 8.73401C12.9702 8.75556 12.9754 8.77725 12.9798 8.79921C12.9833 8.81662 12.9864 8.83405 12.989 8.85153L12.9972 8.92482L12.998 8.94L12.999 8.967Z';\n export const SHOW_ICON_PATH =\n 'M4.29289 10.7071C4.65338 11.0676 5.22061 11.0953 5.6129 10.7903L5.70711 10.7071L8 8.415L10.2929 10.7071C10.6534 11.0676 11.2206 11.0953 11.6129 10.7903L11.7071 10.7071C12.0676 10.3466 12.0953 9.77939 11.7903 9.3871L11.7071 9.29289L8.70711 6.29289C8.34662 5.93241 7.77939 5.90468 7.3871 6.2097L7.29289 6.29289L4.29289 9.29289C3.90237 9.68342 3.90237 10.3166 4.29289 10.7071Z';\n export const SWITCH_TO_SIDE_BY_SIDE_ICON_PATH =\n 'M20.997 3.924L20.998 3.945L20.999 3.98L21 4V10C21 10.5523 20.5523 11 20 11C19.4872 11 19.0645 10.614 19.0067 10.1166L19 10V6.416L14.7071 10.7071C14.3466 11.0676 13.7794 11.0953 13.3871 10.7903L13.2929 10.7071C12.9324 10.3466 12.9047 9.77939 13.2097 9.3871L13.2929 9.29289L17.586 5H14C13.4872 5 13.0645 4.61396 13.0067 4.11662L13 4C13 3.48716 13.386 3.06449 13.8834 3.00673L14 3L20.0332 3.00054C20.0503 3.00109 20.0683 3.00216 20.0862 3.0037C20.1079 3.00553 20.1285 3.00797 20.149 3.01102C20.166 3.01363 20.1834 3.0167 20.2007 3.02024C20.2227 3.02464 20.2444 3.02983 20.2658 3.03572C20.2815 3.0401 20.2969 3.04473 20.3121 3.04974C20.3318 3.05612 20.3516 3.06332 20.3711 3.0711L20.4232 3.09367C20.4439 3.10338 20.4643 3.11379 20.4843 3.12488C20.4964 3.1315 20.5086 3.13861 20.5207 3.146C20.5463 3.16172 20.5711 3.17849 20.5952 3.19631L20.6525 3.24221L20.6168 3.21279C20.6802 3.26255 20.7374 3.31982 20.7872 3.38325C20.7927 3.39016 20.7982 3.3974 20.8037 3.40469C20.8215 3.42887 20.8383 3.45373 20.8539 3.47934L20.8753 3.51594C20.8862 3.53571 20.8966 3.55611 20.9063 3.5769L20.9288 3.62866C20.9367 3.64842 20.9439 3.6682 20.9505 3.68826C20.9553 3.70315 20.9599 3.71854 20.9642 3.73401C20.9702 3.75556 20.9754 3.77725 20.9798 3.79921C20.9833 3.81662 20.9864 3.83405 20.989 3.85153L20.996 3.91075L20.996 3.919L20.997 3.921V3.924ZM3.002 20.059V20.071L3.00175 20.0593C3.00122 20.0503 3.00081 20.0413 3.00052 20.0323L3 14C3 13.4477 3.44772 13 4 13C4.51284 13 4.93551 13.386 4.99327 13.8834L5 14V17.586L9.29289 13.2929C9.65338 12.9324 10.2206 12.9047 10.6129 13.2097L10.7071 13.2929C11.0676 13.6534 11.0953 14.2206 10.7903 14.6129L10.7071 14.7071L6.416 19H10C10.5128 19 10.9355 19.386 10.9933 19.8834L11 20C11 20.5128 10.614 20.9355 10.1166 20.9933L10 21H4C3.99354 21 3.98709 20.9999 3.98066 20.9998C3.95732 20.9994 3.93401 20.9981 3.91075 20.996C3.89031 20.9943 3.87058 20.9919 3.85104 20.989C3.83405 20.9864 3.81662 20.9833 3.79927 20.9798C3.77725 20.9754 3.75556 20.9702 3.73416 20.9643C3.71854 20.9599 3.70315 20.9553 3.68786 20.9503C3.6682 20.9439 3.64842 20.9367 3.62894 20.9289L3.57678 20.9063C3.55611 20.8966 3.53571 20.8862 3.51572 20.8751C3.50361 20.8685 3.49139 20.8614 3.47929 20.854C3.45373 20.8383 3.42887 20.8215 3.40484 20.8037L3.34745 20.7578L3.38325 20.7872C3.31982 20.7374 3.26255 20.6802 3.21279 20.6168C3.20728 20.6098 3.20175 20.6026 3.19633 20.5953C3.17849 20.5711 3.16172 20.5463 3.14607 20.5207L3.12467 20.4841C3.11379 20.4643 3.10338 20.4439 3.09365 20.4231L3.07123 20.3713C3.06332 20.3516 3.05612 20.3318 3.04955 20.3117C3.04473 20.2969 3.0401 20.2815 3.03585 20.266C3.02983 20.2444 3.02464 20.2227 3.02017 20.2008C3.0167 20.1834 3.01363 20.1659 3.01102 20.1485L3.0037 20.0862L3.002 20.059Z';\n export const MediumSize = 24;\n export const SmallSize = 16;\n}\n","export * from \"./button\";","export const isInInterval = (num: number, lower: number, upper: number) => {\n return !isNaN(num) && !isNaN(lower) && !isNaN(upper) && lower <= upper && num >= lower && num <= upper;\n};\n\nexport const getClientX = (e: MouseEvent | TouchEvent): number => {\n if (e instanceof MouseEvent) {\n return e.clientX;\n }\n return e.changedTouches && e.changedTouches[0] && e.changedTouches[0].clientX;\n};\n\nexport const getClientY = (e: MouseEvent | TouchEvent): number => {\n if (e instanceof MouseEvent) {\n return e.clientY;\n }\n return e.changedTouches && e.changedTouches[0] && e.changedTouches[0].clientY;\n};\n\nexport const dimensionStyleToString = (value: number): string => {\n return `${value}px`;\n};\n\nexport const setSubtitlesOnTop = (active: boolean): void => {\n if (active) {\n document.getElementsByClassName('playkit-subtitles')[0].classList.add('moveToTop');\n } else {\n document.getElementsByClassName('playkit-subtitles')[0].classList.remove('moveToTop');\n }\n};\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/sass-loader/dist/cjs.js!./pip.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","export enum Position {\n BottomLeft = 'bottom-left',\n BottomRight = 'bottom-right',\n TopLeft = 'top-left',\n TopRight = 'top-right'\n}\n","export * from \"./responsive-manager\";","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/sass-loader/dist/cjs.js!./side-by-side.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","/// <reference path=\"./global.d.ts\" />\n\nimport {DualScreen} from './dualscreen';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst VERSION = __VERSION__;\nconst NAME = __NAME__;\n\nexport {DualScreen as Plugin};\nexport {VERSION, NAME};\n\nconst pluginName: string = 'dualscreen';\nKalturaPlayer.core.registerPlugin(pluginName, DualScreen);\n","import {h} from 'preact';\nimport {DualScreenConfig} from './types/DualScreenConfig';\nimport {PipChild, PipParent} from './components/pip';\nimport {PipMinimized} from './components/pip-minimized';\nimport {Position, Animations, Layout, ReservedPresetAreas, PlayerType} from './enums';\nimport {VideoSyncManager} from './video-sync-manager';\nimport {ImageSyncManager} from './image-sync-manager';\nimport {ResponsiveManager} from './components/responsive-manager';\nimport {SecondaryMediaLoader} from './providers/secondary-media-loader';\nimport {DragAndSnapManager} from './components/drag-and-snap-manager';\nimport {SideBySideWrapper} from './components/side-by-side/side-by-side-wrapper';\nimport {setSubtitlesOnTop} from './utils';\nimport {DualScreenEngineDecorator} from './dualscreen-engine-decorator';\nimport {ImagePlayer, SlideItem} from './image-player';\n// @ts-ignore\nimport {core} from 'kaltura-player-js';\nconst {EventType} = core;\n\nconst PRESETS = ['Playback', 'Live', 'Ads'];\n// @ts-ignore\nexport class DualScreen extends KalturaPlayer.core.BasePlugin implements IEngineDecoratorProvider {\n public secondaryKalturaPlayer: KalturaPlayerTypes.Player;\n private _player: KalturaPlayerTypes.Player;\n private _layout: Layout = Layout.PIP;\n private _inverse = false;\n private _pipPosition: Position = Position.BottomRight;\n private _removeActivesArr: Function[] = [];\n private _videoSyncManager?: VideoSyncManager;\n private _imageSyncManager?: ImageSyncManager;\n private _playbackEnded = false;\n private _resolveReadyPromise = () => {};\n private _readyPromise: Promise<void>;\n private _imagePlayer: ImagePlayer;\n private _secondaryPlayerType = PlayerType.VIDEO;\n private _singleLayout = true;\n private _pipPortraitMode = false;\n\n /**\n * The default configuration of the plugin.\n * @type {VisibilityConfigObject}\n * @static\n */\n static defaultConfig: DualScreenConfig = {\n inverse: false,\n layout: Layout.PIP,\n childSizePercentage: 30,\n childAspectRatio: {\n width: 16,\n height: 9\n },\n position: Position.BottomRight\n };\n\n constructor(name: string, player: any, config: DualScreenConfig) {\n super(name, player, config);\n this._player = player;\n this.secondaryKalturaPlayer = this._createSecondaryPlayer();\n this._imagePlayer = new ImagePlayer(this._onActiveSlideChanged);\n this._readyPromise = this._makeReadyPromise();\n this._addBindings();\n this._layout = this.config.layout;\n this._inverse = this.config.inverse;\n this._pipPosition = this.config.position;\n }\n\n getEngineDecorator(engine: any, dispatcher: Function) {\n return new DualScreenEngineDecorator(engine, this, dispatcher);\n }\n\n get ready() {\n return this._readyPromise;\n }\n\n getUIComponents() {\n return [\n {\n presets: PRESETS,\n container: ReservedPresetAreas.BottomBarRightControls,\n get: KalturaPlayer.ui.components.Remove,\n replaceComponent: KalturaPlayer.ui.components.Settings.displayName\n }\n ];\n }\n\n loadMedia(): void {\n this._getSecondaryMedia();\n }\n\n reset(): void {\n this._resetMode();\n this._setSingleLayout();\n this._imagePlayer.reset();\n this._readyPromise = this._makeReadyPromise();\n }\n\n private _makeReadyPromise = () => {\n return new Promise<void>(res => {\n this._resolveReadyPromise = res;\n });\n };\n\n private _addBindings() {\n this.eventManager.listen(this.player, this.player.Event.RESIZE, (e: any) => {\n this.logger.debug(e);\n });\n this.eventManager.listen(this.player, this.player.Event.PLAYBACK_ENDED, () => {\n this._playbackEnded = true;\n });\n this.eventManager.listen(this.player, this.player.Event.PLAY, () => {\n if (this._playbackEnded) {\n // reset mode and pip-position on replay\n this._playbackEnded = false;\n this._resetMode();\n this._setMode();\n }\n });\n }\n\n private _getSecondaryPlayer = () => {\n return this._secondaryPlayerType === PlayerType.IMAGE ? this._imagePlayer : this.secondaryKalturaPlayer;\n };\n\n private _setMode = () => {\n this._singleLayout = false;\n if (this._layout === Layout.PIP) {\n this._inverse ? this._switchToPIPInverse(false) : this._switchToPIP(false);\n return;\n }\n if (this._layout === Layout.SingleMedia) {\n this._inverse ? this._switchToPIPMinimizedInverse(false) : this._switchToPIPMinimized(false);\n return;\n }\n this._switchToSideBySide(false);\n };\n\n private _resetMode = () => {\n this._layout = this.config.layout;\n this._inverse = this.config.inverse;\n this._pipPosition = this.config.position;\n this._pipPortraitMode = false;\n };\n\n private _removeActives() {\n this._removeActivesArr.forEach(value => {\n value();\n });\n this._removeActivesArr = [];\n }\n\n private _setSingleLayout = () => {\n this._removeActives();\n this._singleLayout = true;\n };\n\n private _setPipPosition = (position: Position) => {\n this._pipPosition = position;\n };\n\n public getPipPosition = (): Position => {\n return this._pipPosition;\n };\n\n private _switchToPIP = (manualChange: boolean, parentAnimation: Animations = Animations.None) => {\n setSubtitlesOnTop(true);\n if (manualChange) {\n this._layout = Layout.PIP;\n this._inverse = false;\n }\n this._removeActives();\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.VideoContainer,\n get: () => <PipParent animation={parentAnimation} player={this._player} />\n })\n );\n const origPlayerParent: HTMLElement = this._player.getVideoElement().parentElement!;\n this._removeActivesArr.push(() => {\n origPlayerParent.appendChild(this._player.getVideoElement());\n });\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.InteractiveArea,\n get: () => (\n <ResponsiveManager\n onMinSize={() => {\n this._switchToPIPMinimized(false);\n }}\n onDefaultSize={this._setMode}>\n <DragAndSnapManager\n eventManager={this.eventManager}\n logger={this.logger}\n getPosition={this.getPipPosition}\n onPositionChanged={this._setPipPosition}>\n <PipChild\n animation={Animations.Fade}\n playerSizePercentage={this.config.childSizePercentage}\n player={this._getSecondaryPlayer()}\n hide={() => this._switchToPIPMinimized(true)}\n onSideBySideSwitch={() => this._switchToSideBySide(true)}\n onInversePIP={() => this._switchToPIPInverse(true, Animations.Fade)}\n portrait={this._pipPortraitMode}\n aspectRatio={this.config.childAspectRatio}\n />\n </DragAndSnapManager>\n </ResponsiveManager>\n )\n })\n );\n };\n\n private _switchToPIPInverse = (manualChange: boolean, parentAnimation: Animations = Animations.None) => {\n setSubtitlesOnTop(true);\n\n if (manualChange) {\n this._layout = Layout.PIP;\n this._inverse = true;\n }\n this._removeActives();\n\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.VideoContainer,\n get: () => <PipParent animation={parentAnimation} player={this._getSecondaryPlayer()} />\n })\n );\n const origPlayerParent: HTMLElement = this._player.getVideoElement().parentElement!;\n this._removeActivesArr.push(() => {\n origPlayerParent.appendChild(this._player.getVideoElement());\n });\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.InteractiveArea,\n get: () => (\n <ResponsiveManager\n onMinSize={() => {\n this._switchToPIPMinimizedInverse(false);\n }}\n onDefaultSize={this._setMode}>\n <DragAndSnapManager\n eventManager={this.eventManager}\n logger={this.logger}\n getPosition={this.getPipPosition}\n onPositionChanged={this._setPipPosition}>\n <PipChild\n animation={Animations.Fade}\n playerSizePercentage={this.config.childSizePercentage}\n player={this._player}\n hide={() => this._switchToPIPMinimizedInverse(true)}\n onSideBySideSwitch={() => this._switchToSideBySide(true)}\n onInversePIP={() => this._switchToPIP(true, Animations.Fade)}\n aspectRatio={this.config.childAspectRatio}\n />\n </DragAndSnapManager>\n </ResponsiveManager>\n )\n })\n );\n };\n\n private _switchToPIPMinimized = (manualChange: boolean, parentAnimation: Animations = Animations.None) => {\n setSubtitlesOnTop(false);\n\n if (manualChange) {\n this._layout = Layout.SingleMedia;\n this._inverse = false;\n }\n this._removeActives();\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.VideoContainer,\n get: () => <PipParent animation={parentAnimation} player={this._player} />\n })\n );\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip-minimized',\n presets: PRESETS,\n container: ReservedPresetAreas.BottomBar,\n get: () => (\n <ResponsiveManager onDefaultSize={this._setMode}>\n <PipMinimized\n show={() => this._switchToPIP(true)}\n player={this._getSecondaryPlayer()}\n onInverse={() => this._switchToPIPMinimizedInverse(true, Animations.Fade)}\n />\n </ResponsiveManager>\n )\n })\n );\n };\n\n private _switchToPIPMinimizedInverse = (manualChange: boolean, parentAnimation: Animations = Animations.None) => {\n setSubtitlesOnTop(false);\n\n if (manualChange) {\n this._layout = Layout.SingleMedia;\n this._inverse = true;\n }\n this._removeActives();\n\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip',\n presets: PRESETS,\n container: ReservedPresetAreas.VideoContainer,\n get: () => <PipParent animation={parentAnimation} player={this._getSecondaryPlayer()} />\n })\n );\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-pip-minimized',\n presets: PRESETS,\n container: ReservedPresetAreas.BottomBar,\n get: () => (\n <ResponsiveManager onDefaultSize={this._setMode}>\n <PipMinimized\n show={() => this._switchToPIPInverse(true)}\n player={this._player}\n onInverse={() => this._switchToPIPMinimized(true, Animations.Fade)}\n />\n </ResponsiveManager>\n )\n })\n );\n };\n\n private _switchToSideBySide = (manualChange: boolean) => {\n setSubtitlesOnTop(true);\n\n if (manualChange) {\n this._layout = Layout.SideBySide;\n }\n this._removeActives();\n\n const origPlayerParent: HTMLElement = this._player.getVideoElement().parentElement!;\n this._removeActivesArr.push(() => {\n origPlayerParent.appendChild(this._player.getVideoElement());\n });\n\n this._removeActivesArr.push(\n this._player.ui.addComponent({\n label: 'kaltura-dual-screen-side-by-side',\n presets: PRESETS,\n container: ReservedPresetAreas.VideoContainer,\n get: () => (\n <SideBySideWrapper\n leftPlayer={this._player}\n rightPlayer={this._getSecondaryPlayer()}\n onSizeChange={this._setMode}\n switchToPIP={this._switchToPIP}\n switchToPIPMinimized={this._switchToPIPMinimized}\n switchToPIPInverse={this._switchToPIPInverse}\n inverse={this._inverse}\n />\n )\n })\n );\n };\n\n private _onActiveSlideChanged = (slideItem: SlideItem | null) => {\n if (!slideItem || slideItem.errored) {\n // deactivate dual-screen layout\n this._setSingleLayout();\n return;\n }\n if (slideItem.portrait !== this._pipPortraitMode) {\n this._pipPortraitMode = slideItem.portrait;\n if (this._layout === Layout.PIP && !this._inverse) {\n // update PIP component\n this._setMode();\n return;\n }\n }\n // apply dual-screen layout\n if (this._singleLayout) {\n this._setMode();\n }\n };\n\n private _getSecondaryMedia() {\n this._player.provider\n .doRequest([{loader: SecondaryMediaLoader, params: {parentEntryId: this._player.getMediaInfo().entryId}}])\n .then((data: Map<string, any>) => {\n if (data && data.has(SecondaryMediaLoader.id)) {\n const secondaryMediaLoader = data.get(SecondaryMediaLoader.id);\n const entryId = secondaryMediaLoader?.response?.entries[0]?.id;\n if (entryId) {\n // subscribe on secondary player readiness\n this._secondaryPlayerType = PlayerType.VIDEO;\n this.eventManager.listenOnce(this.secondaryKalturaPlayer, EventType.CHANGE_SOURCE_ENDED, () => {\n this._resolveReadyPromise();\n });\n this._videoSyncManager = new VideoSyncManager(this.eventManager, this.player, this.secondaryKalturaPlayer, this.logger);\n this.eventManager.listen(this.secondaryKalturaPlayer, this.player.Event.FIRST_PLAYING, () => {\n this.logger.debug('secondary player first playing - show dual mode');\n this._setMode();\n });\n this.secondaryKalturaPlayer.loadMedia({entryId, ks: this._player.config.session.ks});\n } else {\n this.logger.warn('Secondary entry id not found');\n // subscribe on timed metadata events for image player\n this._secondaryPlayerType = PlayerType.IMAGE;\n this._imageSyncManager = new ImageSyncManager(this.eventManager, this.player, this._imagePlayer, this.logger);\n this._resolveReadyPromise();\n\n // TEMP - for QA drop only\n this.___addSlides();\n }\n }\n })\n .catch((e: any) => {\n this.logger.error(e);\n });\n }\n\n private _createSecondaryPlayer() {\n let secondaryPlaceholder = document.createElement('div');\n secondaryPlaceholder.setAttribute('id', 'secondaryPlaceholder');\n secondaryPlaceholder.style.width = '240px';\n secondaryPlaceholder.style.height = '135px';\n secondaryPlaceholder.hidden = true;\n document.body.appendChild(secondaryPlaceholder);\n const secondaryPlayerConfig = {\n targetId: 'secondaryPlaceholder',\n disableUserCache: true,\n playback: {\n muted: true\n },\n ui: {\n disable: true\n },\n provider: {\n ...this._player.config.provider,\n ignoreServerConfig: true\n }\n };\n return KalturaPlayer.setup(secondaryPlayerConfig);\n }\n\n /**\n * @static\n * @public\n * @returns {boolean} - Whether the plugin is valid.\n */\n static isValid(): boolean {\n return true;\n }\n\n destroy(): void {\n this.eventManager.destroy();\n }\n\n // TEMP - for QA drop only\n ___addSlides = () => {\n const {RequestBuilder, ResponseTypes} = KalturaPlayer.providers;\n class AssetLoader implements KalturaPlayerTypes.ILoader {\n _parentEntryId: string = '';\n _requests: any[] = [];\n _response: any = {\n assets: []\n };\n static get id(): string {\n return 'dualscreen';\n }\n constructor(params: any) {\n this._parentEntryId = params.parentEntryId;\n const headers: Map<string, string> = new Map();\n const request = new RequestBuilder(headers);\n request.service = 'cuepoint_cuepoint';\n request.action = 'list';\n request.params = {\n filter: {\n objectType: 'KalturaThumbCuePointFilter',\n entryIdEqual: this._parentEntryId,\n cuePointTypeEqual: 'thumbCuePoint.Thumb',\n subTypeIn: '1,2'\n },\n responseProfile: {\n type: 1,\n fields: 'id, assetId, startTime'\n }\n };\n this.requests.push(request);\n }\n\n set requests(requests: any[]) {\n this._requests = requests;\n }\n get requests(): any[] {\n return this._requests;\n }\n set response(response: any) {\n this._response.assets = response[0]?.data;\n }\n get response(): any {\n return this._response;\n }\n isValid(): boolean {\n return !!this._parentEntryId;\n }\n }\n\n const ks = this._player.config.provider.ks;\n const serviceUrl = this._player.config.provider.env.serviceUrl;\n\n this._player.provider\n .doRequest([{loader: AssetLoader, params: {parentEntryId: this._player.getMediaInfo().entryId}}])\n .then((data: Map<string, any>) => {\n if (data && data.has(SecondaryMediaLoader.id)) {\n const assetLoader = data.get(SecondaryMediaLoader.id);\n const assets = assetLoader?.response?.assets?.objects || [];\n if (assets.length) {\n let cuePoints = (assetLoader?.response?.assets?.objects || []).map((asset: any) => {\n return {\n assetUrl: `${serviceUrl}/index.php/service/thumbAsset/action/serve/thumbAssetId/${asset.assetId}/ks/${ks}?thumbParams:objectType=KalturaThumbParams&thumbParams:width=600`,\n id: asset.id,\n cuePointType: 'thumbCuePoint.Thumb',\n startTime: asset.startTime / 1000\n };\n });\n cuePoints = cuePoints.sort(function (a: any, b: any) {\n return a.startTime - b.startTime;\n });\n cuePoints = cuePoints.map((cuePoint: any, index: number) => {\n if (!cuePoint.endTime) {\n return {...cuePoint, endTime: index === cuePoints.length - 1 ? Number.MAX_SAFE_INTEGER : cuePoints[index + 1].startTime};\n }\n return cuePoint;\n });\n console.log('>> cuePoints', cuePoints);\n this._player.cuePointManager.addCuePoints(cuePoints);\n }\n }\n })\n .catch((e: any) => {\n this.logger.error(e);\n });\n };\n}\n","export * from \"./pip-child\";\nexport * from \"./pip-parent\";\n","import {h, createRef, Component, Fragment} from 'preact';\nimport * as styles from './pip.scss';\nimport {Animations, Labels} from '../../enums';\nimport {icons} from '../../icons';\nimport {GuiClientRect} from '../../types';\nimport {Button} from './../button';\nconst {connect} = KalturaPlayer.ui.redux;\nconst {utils, reducers} = KalturaPlayer.ui;\nconst {Icon} = KalturaPlayer.ui.components;\n\nconst mapStateToProps = (state: Record<string, any>) => ({\n playerHover: state.shell.playerHover,\n guiClientRect: state.shell.guiClientRect,\n prePlayback: state.engine.prePlayback\n});\n\ninterface PIPChildComponentOwnProps {\n player: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n playerSizePercentage: number;\n hide: () => void;\n onSideBySideSwitch: () => void;\n onInversePIP: () => void;\n animation: Animations;\n isDragging?: boolean;\n setDraggableTarget?: (targetEl: HTMLDivElement) => void;\n portrait?: boolean;\n aspectRatio: {\n width: number;\n height: number;\n };\n}\ninterface PIPChildComponentConnectProps {\n guiClientRect?: GuiClientRect;\n playerHover?: boolean;\n prePlayback?: boolean;\n}\n\ntype PIPChildComponentProps = PIPChildComponentOwnProps & PIPChildComponentConnectProps;\n@connect(mapStateToProps, utils.bindActions(reducers.shell.actions))\nexport class PipChild extends Component<PIPChildComponentProps> {\n playerContainerRef = createRef<HTMLDivElement>();\n pipContainerRef = createRef<HTMLDivElement>();\n\n componentDidMount() {\n const {player} = this.props;\n this.playerContainerRef.current!.prepend(player.getVideoElement());\n this.props.setDraggableTarget!(this.playerContainerRef.current!);\n }\n\n private _renderInnerButtons() {\n const {onSideBySideSwitch, onInversePIP} = this.props;\n return (\n <div className={styles.innerButtons}>\n <Button className={styles.iconContainer} onClick={onInversePIP} tooltip={{label: Labels.SwitchScreen, type: 'bottom-left'}}>\n <Icon\n id=\"dualscreen-pip-swap\"\n height={icons.MediumSize}\n width={icons.MediumSize}\n viewBox={`0 0 ${icons.MediumSize} ${icons.MediumSize}`}\n path={icons.SWAP_ICON_PATH}\n />\n </Button>\n <Button className={styles.iconContainer} onClick={onSideBySideSwitch} tooltip={{label: Labels.SideBySide, type: 'bottom'}}>\n <Icon\n id=\"dualscreen-pip-side-by-side\"\n height={icons.MediumSize}\n width={icons.MediumSize}\n viewBox={`0 0 ${icons.MediumSize} ${icons.MediumSize}`}\n path={icons.SIDE_BY_SIDE_ICON_PATH}\n />\n </Button>\n </div>\n );\n }\n\n private _renderHideButton() {\n return (\n <Button className={styles.hideContainer} onClick={this.props.hide}>\n <Fragment>\n <div className={styles.iconContainer}>\n <Icon\n id=\"dualscreen-pip-hide\"\n height={icons.SmallSize}\n width={icons.SmallSize}\n viewBox={`0 0 ${icons.SmallSize} ${icons.SmallSize}`}\n path={icons.HIDE_ICON_PATH}\n />\n </div>\n {Labels.Hide}\n </Fragment>\n </Button>\n );\n }\n\n render(props: PIPChildComponentProps) {\n const styleClass = [styles.childPlayer];\n\n if (props.isDragging) {\n styleClass.push(styles.dragging);\n }\n if (!props.playerHover) {\n styleClass.push(styles.hovering);\n }\n\n if (!props.prePlayback && props.animation) {\n switch (props.animation) {\n case Animations.Fade:\n styleClass.push(styles.animatedFade);\n break;\n case Animations.ScaleRight:\n styleClass.push(styles.animatedScaleRight);\n break;\n case Animations.ScaleLeft:\n styleClass.push(styles.animatedScaleLeft);\n break;\n }\n }\n\n const height: number = (props.guiClientRect!.height * props.playerSizePercentage) / 100;\n const width: number = (height * props.aspectRatio.width) / props.aspectRatio.height;\n const playerContainerStyles = {\n height: `${props.portrait ? width : height}px`,\n width: `${props.portrait ? height : width}px`\n };\n\n return (\n <div className={styleClass.join(' ')} ref={this.pipContainerRef}>\n {this._renderHideButton()}\n <div className={styles.playerWrapper}>\n <div className={styles.playerContainer} style={playerContainerStyles} ref={this.playerContainerRef} />\n {this._renderInnerButtons()}\n </div>\n </div>\n );\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pip__iconContainer___1Iede{height:28px;width:28px;opacity:0.8;cursor:pointer}.pip__innerButtons___2a1EM{display:flex;position:absolute;height:60px;left:0px;top:0px;padding:8px;background:linear-gradient(180deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%);width:100%}.pip__innerButtons___2a1EM .pip__iconContainer___1Iede:hover{background:#444444;border-radius:4px;opacity:1}.pip__parentPlayer___2-yc2{position:absolute;left:0}.pip__childPlayer___2pP9Z{position:relative}.pip__childPlayer___2pP9Z video{position:relative}.pip__childPlayer___2pP9Z.pip__hovering___2vOss .pip__innerButtons___2a1EM,.pip__childPlayer___2pP9Z.pip__dragging___2tJAq .pip__innerButtons___2a1EM{display:none}.pip__childPlayer___2pP9Z.pip__hovering___2vOss .pip__hideContainer___1ukWV{display:none}.pip__childPlayer___2pP9Z.pip__dragging___2tJAq .pip__hideContainer___1ukWV{visibility:hidden}.pip__childPlayer___2pP9Z .pip__hideContainer___1ukWV{position:relative;width:66px;height:32px;margin-bottom:5px;margin-left:auto;display:flex;flex-direction:row;justify-content:center;align-items:center;cursor:pointer;color:#ffffff;font-style:normal;font-weight:normal;font-size:14px;line-height:18px;background:rgba(0,0,0,0.6);border-radius:4px}.pip__childPlayer___2pP9Z .pip__hideContainer___1ukWV:hover{background:rgba(0,0,0,0.7)}.pip__childPlayer___2pP9Z .pip__hideContainer___1ukWV .pip__iconContainer___1Iede{margin-right:8px;height:16px;width:16px}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v{position:relative}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v .pip__playerContainer___1-Lc5{border-radius:8px;overflow:hidden;box-shadow:0 0 40px 0 rgba(0,0,0,0.2),0 0 4px 0 rgba(0,0,0,0.3)}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v .pip__innerButtons___2a1EM{flex-direction:row-reverse;border-radius:8px;pointer-events:none}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v .pip__innerButtons___2a1EM *{pointer-events:auto}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v .pip__innerButtons___2a1EM .pip__iconContainer___1Iede{display:inline-block;padding:2px}.pip__childPlayer___2pP9Z .pip__playerWrapper___3Py0v .pip__innerButtons___2a1EM .pip__iconContainer___1Iede:first-child{margin-left:8px}.pip__animatedFade___10GqM{animation:pip__fading___1mos0 .3s linear}.pip__animatedScaleRight___HCrBS{animation:pip__scalingRight___349J6 .3s linear}.pip__animatedScaleLeft___1mbwl{animation:pip__scalingLeft___3AIHS .3s linear}@keyframes pip__scalingRight___349J6{0%{transform:scale(0.5) translate(-50%)}100%{transform:scale(1) translate(0%)}}@keyframes pip__scalingLeft___3AIHS{0%{transform:scale(0.5) translate(50%)}100%{transform:scale(1) translate(0%)}}@keyframes pip__fading___1mos0{0%{opacity:0}100%{opacity:1}}.playkit-subtitles.moveToTop{z-index:1}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://styles/_styles.scss\",\"webpack://styles/_variables.scss\",\"webpack://components/pip/pip.scss\"],\"names\":[],\"mappings\":\"AAEA,4BACE,WCHkB,CDIlB,UCJkB,CDKlB,WAAY,CACZ,cAAe,CAChB,2BAGC,YAAa,CACb,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,OAAQ,CACR,WAAY,CACZ,0EAAiF,CACjF,UAAW,CARb,6DAYM,kBAAmB,CACnB,iBAAkB,CAClB,SAAU,CEjBhB,2BACE,iBAAkB,CAClB,MAAO,CACR,0BAEC,iBAAkB,CADpB,gCAGI,iBAAkB,CAHtB,sJASM,YAAa,CATnB,4EAaI,YAAa,CAbjB,4EAgBI,iBAAkB,CAhBtB,sDAoBI,iBAAkB,CAClB,UAAW,CACX,WA7BwB,CA8BxB,iBA7BoB,CA8BpB,gBAAiB,CAEjB,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,kBAAmB,CAEnB,cAAe,CACf,aAAc,CACd,iBAAkB,CAClB,kBAAmB,CACnB,cAAe,CACf,gBAAiB,CAEjB,0BAA8B,CAC9B,iBAAkB,CAvCtB,4DA0CM,0BAA8B,CA1CpC,kFA8CM,gBAAiB,CACjB,WDxDwB,CCyDxB,UDzDwB,CCS9B,sDAqDI,iBAAkB,CArDtB,oFAwDM,iBAAkB,CAClB,eAAgB,CAChB,+DAAuE,CA1D7E,iFA8DM,0BAA2B,CAC3B,iBAAkB,CAClB,mBAAoB,CAhE1B,mFAkEQ,mBAAoB,CAlE5B,6GAsEQ,oBAAqB,CACrB,WAAY,CAvEpB,yHAyEU,eAAgB,CACjB,2BAOP,wCAA4C,CAC7C,iCAGC,8CAAkD,CACnD,gCAGC,6CAAiD,CAClD,qCAGC,GACE,oCAAqC,CAEvC,KACE,gCAAiC,CAAA,CAIrC,oCACE,GACE,mCAAoC,CAEtC,KACE,gCAAiC,CAAA,CAIrC,+BACE,GACE,SAAU,CAEZ,KACE,SAAU,CAAA,CAId,6BAEI,SAAU\",\"sourcesContent\":[\"@import '~styles/variables';\\n\\n.iconContainer {\\n height: $smallIconSize;\\n width: $smallIconSize;\\n opacity: 0.8;\\n cursor: pointer;\\n}\\n\\n.innerButtons {\\n display: flex;\\n position: absolute;\\n height: 60px;\\n left: 0px;\\n top: 0px;\\n padding: 8px;\\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);\\n width: 100%;\\n\\n .iconContainer {\\n &:hover {\\n background: #444444;\\n border-radius: 4px;\\n opacity: 1;\\n }\\n }\\n}\\n\",\"$smallIconSize: 28px;\\n$smallBorderLessIconSize: 16px;\\n$animation-duration: 0.3s;\\n\",\"@import '~styles/variables';\\n@import '~styles/styles';\\n\\n$hide-container-height: 32px;\\n$hide-container-gap: 5px;\\n\\n.parentPlayer {\\n position: absolute;\\n left: 0;\\n}\\n.childPlayer {\\n position: relative;\\n video {\\n position: relative;\\n }\\n\\n &.hovering,\\n &.dragging {\\n .innerButtons {\\n display: none;\\n }\\n }\\n &.hovering .hideContainer {\\n display: none;\\n }\\n &.dragging .hideContainer {\\n visibility: hidden;\\n }\\n\\n .hideContainer {\\n position: relative;\\n width: 66px;\\n height: $hide-container-height;\\n margin-bottom: $hide-container-gap;\\n margin-left: auto;\\n\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: center;\\n\\n cursor: pointer;\\n color: #ffffff;\\n font-style: normal;\\n font-weight: normal;\\n font-size: 14px;\\n line-height: 18px;\\n\\n background: rgba(0, 0, 0, 0.6);\\n border-radius: 4px;\\n\\n &:hover {\\n background: rgba(0, 0, 0, 0.7);\\n }\\n\\n .iconContainer {\\n margin-right: 8px;\\n height: $smallBorderLessIconSize;\\n width: $smallBorderLessIconSize;\\n }\\n }\\n\\n .playerWrapper {\\n position: relative;\\n\\n .playerContainer {\\n border-radius: 8px;\\n overflow: hidden;\\n box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2), 0 0 4px 0 rgba(0, 0, 0, 0.3);\\n }\\n\\n .innerButtons {\\n flex-direction: row-reverse;\\n border-radius: 8px;\\n pointer-events: none;\\n * {\\n pointer-events: auto;\\n }\\n\\n .iconContainer {\\n display: inline-block;\\n padding: 2px;\\n &:first-child {\\n margin-left: 8px;\\n }\\n }\\n }\\n }\\n}\\n\\n.animatedFade {\\n animation: fading $animation-duration linear;\\n}\\n\\n.animatedScaleRight {\\n animation: scalingRight $animation-duration linear;\\n}\\n\\n.animatedScaleLeft {\\n animation: scalingLeft $animation-duration linear;\\n}\\n\\n@keyframes scalingRight {\\n 0% {\\n transform: scale(0.5) translate(-50%);\\n }\\n 100% {\\n transform: scale(1) translate(0%);\\n }\\n}\\n\\n@keyframes scalingLeft {\\n 0% {\\n transform: scale(0.5) translate(50%);\\n }\\n 100% {\\n transform: scale(1) translate(0%);\\n }\\n}\\n\\n@keyframes fading {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\\n:global {\\n .playkit-subtitles.moveToTop {\\n z-index: 1;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"iconContainer\": \"pip__iconContainer___1Iede\",\n\t\"innerButtons\": \"pip__innerButtons___2a1EM\",\n\t\"parentPlayer\": \"pip__parentPlayer___2-yc2\",\n\t\"childPlayer\": \"pip__childPlayer___2pP9Z\",\n\t\"hovering\": \"pip__hovering___2vOss\",\n\t\"dragging\": \"pip__dragging___2tJAq\",\n\t\"hideContainer\": \"pip__hideContainer___1ukWV\",\n\t\"playerWrapper\": \"pip__playerWrapper___3Py0v\",\n\t\"playerContainer\": \"pip__playerContainer___1-Lc5\",\n\t\"animatedFade\": \"pip__animatedFade___10GqM\",\n\t\"fading\": \"pip__fading___1mos0\",\n\t\"animatedScaleRight\": \"pip__animatedScaleRight___HCrBS\",\n\t\"scalingRight\": \"pip__scalingRight___349J6\",\n\t\"animatedScaleLeft\": \"pip__animatedScaleLeft___1mbwl\",\n\t\"scalingLeft\": \"pip__scalingLeft___3AIHS\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","export enum Animations {\n None = 'None',\n Fade = 'Fade',\n ScaleRight = 'ScaleRight',\n ScaleLeft = 'ScaleLeft',\n Slide = 'Slide'\n}\n","export enum Layout {\n PIP = 'PIP',\n SingleMedia = 'SingleMedia',\n SideBySide = 'SideBySide'\n}\n","export enum ReservedPresetAreas {\n PresetFloating = 'PresetFloating',\n BottomBar = 'BottomBar',\n BottomBarLeftControls = 'BottomBarLeftControls',\n BottomBarRightControls = 'BottomBarRightControls',\n TopBarLeftControls = 'TopBarLeftControls',\n TopBarRightControls = 'TopBarRightControls',\n SidePanelTop = 'SidePanelTop',\n InteractiveAreaSidePanelLeft = 'SidePanelLeft',\n SidePanelRight = 'SidePanelRight',\n SidePanelBottom = 'SidePanelBottom',\n PresetArea = 'PresetArea',\n InteractiveArea = 'InteractiveArea',\n PlayerArea = 'PlayerArea',\n VideoArea = 'VideoArea',\n VideoContainer = 'VideoContainer'\n}\n","export enum Labels {\n Hide = 'Hide',\n Show = 'Show',\n ExpandScreen = 'Expand Screen',\n SideBySide = 'Side by Side',\n SwitchScreen = 'Switch Screen'\n}\n","export enum PlayerType {\n IMAGE = 'image',\n VIDEO = 'video'\n}\n","import {h, VNode} from 'preact';\nimport {useCallback} from 'preact/hooks';\nconst {Tooltip} = KalturaPlayer.ui.components;\n\ninterface ButtonProps {\n onClick: () => void;\n className: string;\n children: VNode;\n tooltip?: {\n label: string;\n type: string;\n };\n}\n\nexport const Button = ({onClick, className, children, tooltip}: ButtonProps) => {\n const _handleClick = useCallback(\n (e: Event) => {\n e.stopPropagation();\n onClick();\n },\n [onClick]\n );\n const buttonProps: Record<string, any> = {\n className,\n onMouseUp: _handleClick,\n role: 'button'\n };\n if (tooltip) {\n buttonProps['aria-label'] = tooltip.label;\n }\n return (\n <div {...buttonProps}>\n {tooltip ? (\n <Tooltip label={tooltip.label} type={tooltip.type}>\n {children}\n </Tooltip>\n ) : (\n children\n )}\n </div>\n );\n};\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.__c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){i.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}),i=[]}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=void 0},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(g)}catch(t){n.__e(t,u.__v)}};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u;\"function\"==typeof n.__c&&n.__c(),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","import {h, createRef, Component} from 'preact';\nimport * as styles from './pip.scss';\nimport {Animations} from '../../enums';\nimport {GuiClientRect} from '../../types';\nconst {connect} = KalturaPlayer.ui.redux;\n\nconst mapStateToProps = (state: Record<string, any>) => ({\n playerHover: state.shell.playerHover,\n guiClientRect: state.shell.guiClientRect,\n prePlayback: state.engine.prePlayback\n});\n\ninterface PIPParentComponentOwnProps {\n player: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n animation: Animations;\n}\ninterface PIPParentComponentConnectProps {\n guiClientRect?: GuiClientRect;\n prePlayback?: boolean;\n}\n\ntype PIPParentComponentProps = PIPParentComponentOwnProps & PIPParentComponentConnectProps;\n@connect(mapStateToProps)\nexport class PipParent extends Component<PIPParentComponentProps> {\n videoContainerRef = createRef<HTMLDivElement>();\n\n componentDidMount() {\n const {player} = this.props;\n this.videoContainerRef?.current?.appendChild(player.getVideoElement());\n }\n\n render(props: PIPParentComponentProps) {\n let styleClass = [styles.videoContainer, styles.parentPlayer];\n\n if (!props.prePlayback && props.animation) {\n switch (props.animation) {\n case Animations.Fade:\n styleClass.push(styles.animatedFade);\n break;\n case Animations.ScaleRight:\n styleClass.push(styles.animatedScaleRight);\n break;\n case Animations.ScaleLeft:\n styleClass.push(styles.animatedScaleLeft);\n break;\n }\n }\n\n const videoContainerStyles = {\n height: `${props.guiClientRect!.height + 'px'}`,\n width: `${props.guiClientRect!.width + 'px'}`\n };\n\n return <div className={styleClass.join(' ')} style={videoContainerStyles} ref={this.videoContainerRef} />;\n }\n}\n","export * from \"./pip-minimized\";\n","import {h, createRef, Component, Fragment} from 'preact';\nimport * as styles from './pip-minimized.scss';\nimport {icons} from '../../icons';\nimport {Button} from './../button';\nimport {Labels} from '../../enums';\nconst {\n components: {Icon}\n} = KalturaPlayer.ui;\n\ninterface PIPMinimizedOwnProps {\n player: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n show: () => void;\n onInverse: () => void;\n hideButtons?: boolean;\n}\ninterface PIPMinimizedConnectProps {\n playerSize?: string;\n}\n\ntype PIPMinimizedProps = PIPMinimizedOwnProps & PIPMinimizedConnectProps;\n\nexport class PipMinimized extends Component<PIPMinimizedProps> {\n ref = createRef();\n\n componentDidMount() {\n this.ref.current.appendChild(this.props.player.getVideoElement());\n }\n\n private _renderHoverButton = () => {\n const {show, onInverse, hideButtons} = this.props;\n return (\n <Fragment>\n {!hideButtons && (\n <Button onClick={show} className={styles.showContainer}>\n <Fragment>\n <div className={styles.iconContainer}>\n <Icon\n id=\"dualscreen-pip-minimized-show\"\n height={icons.SmallSize}\n width={icons.SmallSize}\n viewBox={`0 0 ${icons.SmallSize} ${icons.SmallSize}`}\n path={icons.SHOW_ICON_PATH}\n />\n </div>\n {Labels.Show}\n </Fragment>\n </Button>\n )}\n <Button onClick={onInverse} className={[styles.innerButtons, hideButtons ? styles.tinyInnerButtons : ''].join(' ')}>\n <div className={styles.iconContainer}>\n <Icon\n id=\"dualscreen-pip-minimized-swap\"\n height={icons.MediumSize}\n width={icons.MediumSize}\n viewBox={`0 0 ${icons.MediumSize} ${icons.MediumSize}`}\n path={icons.SWAP_ICON_PATH}\n />\n </div>\n </Button>\n </Fragment>\n );\n };\n\n render(props: PIPMinimizedProps) {\n return (\n <div className={styles.childPlayerContainer}>\n <div ref={this.ref} className={[styles.childPlayer, props.hideButtons ? styles.tinyChildPlayer : ''].join(' ')} />\n {this._renderHoverButton()}\n </div>\n );\n }\n}\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/sass-loader/dist/cjs.js!./pip-minimized.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".pip-minimized__iconContainer___3jsjw{height:28px;width:28px;opacity:0.8;cursor:pointer}.pip-minimized__innerButtons___1Ql12{display:flex;position:absolute;height:60px;left:0px;top:0px;padding:8px;background:linear-gradient(180deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%);width:100%}.pip-minimized__innerButtons___1Ql12 .pip-minimized__iconContainer___3jsjw:hover{background:#444444;border-radius:4px;opacity:1}.pip-minimized__childPlayerContainer___3P_xz{position:absolute;top:0;right:0;transform:translateY(-100%);animation:pip-minimized__fading___CAAdq .3s linear}.pip-minimized__childPlayerContainer___3P_xz video{position:relative}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__childPlayer___3PYNG{width:106px;height:60px;box-shadow:0px 0px 0px 1px rgba(0,0,0,0.2),0px 8px 60px -16px rgba(0,0,0,0.2);border-radius:8px;overflow:hidden}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__childPlayer___3PYNG.pip-minimized__tinyChildPlayer___2LImk{height:34px;width:60px}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__showContainer___3jA3b{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;padding:8px;cursor:pointer;position:absolute;width:66px;height:32px;right:0px;top:calc((32px + 5px) * -1);color:#ffffff;font-style:normal;font-weight:normal;font-size:14px;line-height:18px;background:rgba(0,0,0,0.6);border-radius:4px}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__showContainer___3jA3b:hover{background:rgba(0,0,0,0.7)}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__showContainer___3jA3b .pip-minimized__iconContainer___3jsjw{height:16px;width:16px;margin-right:8px}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__innerButtons___1Ql12{border-radius:8px;justify-content:center;align-items:center}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__innerButtons___1Ql12.pip-minimized__tinyInnerButtons___3NhMO{height:34px}.pip-minimized__childPlayerContainer___3P_xz .pip-minimized__innerButtons___1Ql12 .pip-minimized__iconContainer___3jsjw:hover{background:transparent}@keyframes pip-minimized__fading___CAAdq{0%{opacity:0}100%{opacity:1}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://styles/_styles.scss\",\"webpack://styles/_variables.scss\",\"webpack://components/pip-minimized/pip-minimized.scss\"],\"names\":[],\"mappings\":\"AAEA,sCACE,WCHkB,CDIlB,UCJkB,CDKlB,WAAY,CACZ,cAAe,CAChB,qCAGC,YAAa,CACb,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,OAAQ,CACR,WAAY,CACZ,0EAAiF,CACjF,UAAW,CARb,iFAYM,kBAAmB,CACnB,iBAAkB,CAClB,SAAU,CElBhB,6CAIE,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,2BAA4B,CAC5B,kDAA4C,CAR9C,mDAEI,iBAAkB,CAFtB,iFAUI,WAAY,CACZ,WAAY,CACZ,6EAAqF,CACrF,iBAAkB,CAClB,eAAgB,CAdpB,wHAgBM,WAAY,CACZ,UAAW,CAjBjB,mFAsBI,YAAa,CACb,kBAAmB,CACnB,wBAAyB,CACzB,kBAAmB,CACnB,WAAY,CACZ,cAAe,CAEf,iBAAkB,CAClB,UAAW,CACX,WAlCwB,CAmCxB,SAAU,CACV,2BAAoE,CAEpE,aAAc,CACd,iBAAkB,CAClB,kBAAmB,CACnB,cAAe,CACf,gBAAiB,CAEjB,0BAA8B,CAC9B,iBAAkB,CA1CtB,yFA6CM,0BAA8B,CA7CpC,yHAgDM,WAAY,CACZ,UAAW,CACX,gBAAiB,CAlDvB,kFAuDI,iBAAkB,CAClB,sBAAuB,CACvB,kBAAmB,CAzDvB,0HA2DM,WAAY,CA3DlB,8HA8DM,sBAAuB,CACxB,yCAKH,GACE,SAAU,CAEZ,KACE,SAAU,CAAA\",\"sourcesContent\":[\"@import '~styles/variables';\\n\\n.iconContainer {\\n height: $smallIconSize;\\n width: $smallIconSize;\\n opacity: 0.8;\\n cursor: pointer;\\n}\\n\\n.innerButtons {\\n display: flex;\\n position: absolute;\\n height: 60px;\\n left: 0px;\\n top: 0px;\\n padding: 8px;\\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);\\n width: 100%;\\n\\n .iconContainer {\\n &:hover {\\n background: #444444;\\n border-radius: 4px;\\n opacity: 1;\\n }\\n }\\n}\\n\",\"$smallIconSize: 28px;\\n$smallBorderLessIconSize: 16px;\\n$animation-duration: 0.3s;\\n\",\"@import '~styles/styles';\\n\\n$show-container-height: 32px;\\n$show-container-gap: 5px;\\n\\n.childPlayerContainer {\\n video {\\n position: relative;\\n }\\n position: absolute;\\n top: 0;\\n right: 0;\\n transform: translateY(-100%);\\n animation: fading $animation-duration linear;\\n .childPlayer {\\n width: 106px;\\n height: 60px;\\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), 0px 8px 60px -16px rgba(0, 0, 0, 0.2);\\n border-radius: 8px;\\n overflow: hidden;\\n &.tinyChildPlayer {\\n height: 34px;\\n width: 60px;\\n }\\n }\\n\\n .showContainer {\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-end;\\n align-items: center;\\n padding: 8px;\\n cursor: pointer;\\n\\n position: absolute;\\n width: 66px;\\n height: $show-container-height;\\n right: 0px;\\n top: calc((#{$show-container-height} + #{$show-container-gap}) * -1);\\n\\n color: #ffffff;\\n font-style: normal;\\n font-weight: normal;\\n font-size: 14px;\\n line-height: 18px;\\n\\n background: rgba(0, 0, 0, 0.6);\\n border-radius: 4px;\\n\\n &:hover {\\n background: rgba(0, 0, 0, 0.7);\\n }\\n .iconContainer {\\n height: 16px;\\n width: 16px;\\n margin-right: 8px;\\n }\\n }\\n\\n .innerButtons {\\n border-radius: 8px;\\n justify-content: center;\\n align-items: center;\\n &.tinyInnerButtons {\\n height: 34px;\\n }\\n .iconContainer:hover {\\n background: transparent;\\n }\\n }\\n}\\n\\n@keyframes fading {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"iconContainer\": \"pip-minimized__iconContainer___3jsjw\",\n\t\"innerButtons\": \"pip-minimized__innerButtons___1Ql12\",\n\t\"childPlayerContainer\": \"pip-minimized__childPlayerContainer___3P_xz\",\n\t\"fading\": \"pip-minimized__fading___CAAdq\",\n\t\"childPlayer\": \"pip-minimized__childPlayer___3PYNG\",\n\t\"tinyChildPlayer\": \"pip-minimized__tinyChildPlayer___2LImk\",\n\t\"showContainer\": \"pip-minimized__showContainer___3jA3b\",\n\t\"tinyInnerButtons\": \"pip-minimized__tinyInnerButtons___3NhMO\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import {isInInterval} from './utils';\n// @ts-ignore\nimport {core} from 'kaltura-player-js';\nconst {EventType, FakeEvent, Error, StateType} = core;\n\nexport class VideoSyncManager {\n private _isSyncDelay = false;\n\n _eventManager: KalturaPlayerTypes.EventManager;\n _mainPlayer: KalturaPlayerTypes.Player;\n _secondaryPlayer: KalturaPlayerTypes.Player;\n _logger: KalturaPlayerTypes.Logger;\n\n constructor(\n eventManager: KalturaPlayerTypes.EventManager,\n mainPlayer: KalturaPlayerTypes.Player,\n secondaryPlayer: KalturaPlayerTypes.Player,\n logger: KalturaPlayerTypes.Logger\n ) {\n this._eventManager = eventManager;\n this._mainPlayer = mainPlayer;\n this._secondaryPlayer = secondaryPlayer;\n this._logger = logger;\n this._syncEvents();\n this._errorHandling();\n }\n\n private _errorHandling = () => {\n this._eventManager.listen(this._secondaryPlayer, EventType.ERROR, (e: Error) => {\n this._logger.debug('errorHandling :: secondary player got error');\n const error = new Error(Error.Severity.CRITICAL, Error.Category.PLAYER, Error.Code.VIDEO_ERROR, e);\n this._mainPlayer.pause();\n this._mainPlayer.dispatchEvent(new FakeEvent(EventType.ERROR, error));\n });\n this._eventManager.listen(this._mainPlayer, EventType.ERROR, () => {\n this._logger.debug('errorHandling :: main player got error');\n this._secondaryPlayer.reset();\n });\n };\n\n private _syncEvents = () => {\n let lastSync = 0;\n const synchInterval = 1000;\n this._eventManager.listen(this._mainPlayer, EventType.PLAY, () => {\n this._logger.debug('syncEvents :: secondary player play');\n this._secondaryPlayer.play();\n });\n this._eventManager.listen(this._mainPlayer, EventType.PAUSE, () => {\n this._logger.debug('syncEvents :: secondary player pause');\n this._secondaryPlayer.pause();\n });\n this._eventManager.listen(this._mainPlayer, EventType.TIME_UPDATE, () => {\n if (!this._isSyncDelay) {\n const now = Date.now();\n if (now - lastSync > synchInterval || this._mainPlayer.paused) {\n lastSync = now;\n this._mediaSync();\n }\n }\n });\n this._eventManager.listen(this._mainPlayer, EventType.SEEKING, () => {\n this._logger.debug(`syncEvents :: seeking main player to to ${this._mainPlayer}`);\n this._secondaryPlayer.pause();\n this._seekSecondaryPlayer(0);\n });\n this._eventManager.listen(this._mainPlayer, EventType.ENDED, () => {\n this._logger.debug('syncEvents :: secondary player pause + seek to 0.01');\n this._secondaryPlayer.pause();\n this._seekSecondaryPlayer(0.01);\n });\n this._eventManager.listen(\n this._mainPlayer,\n EventType.PLAYER_STATE_CHANGED,\n ({payload}: {payload: {newState: {type: typeof StateType}; oldState: {type: typeof StateType}}}) => {\n if (\n payload.newState.type === StateType.BUFFERING &&\n !(this._mainPlayer.seeking || this._mainPlayer.paused) &&\n !this._secondaryPlayer.paused\n ) {\n this._logger.debug('syncEvents :: main player got BUFFERING');\n this._secondaryPlayer.pause();\n return;\n }\n if (payload.newState.type === StateType.PLAYING && payload.oldState.type === StateType.BUFFERING && this._secondaryPlayer.paused) {\n this._logger.debug('syncEvents :: main player resume PLAYING');\n this._secondaryPlayer.play();\n }\n }\n );\n };\n\n private _mediaSync = () => {\n if (this._isSyncDelay || (this._mainPlayer.paused && !this._mainPlayer.seeking)) {\n return;\n }\n const synchDelayThresholdPositive = 0.03;\n const synchDelayThresholdNegative = -0.03;\n const maxGap = 4;\n const seekAhead = 0.25; // s\n\n if (this._secondaryPlayer) {\n let doSeek = false;\n let synchDelay = this._getSyncDelay();\n this._logger.debug(`mediaSync :: synchDelay is ${synchDelay}`);\n let playbackRateChange = 0;\n let adaptivePlaybackRate = Math.round(Math.abs(synchDelay) * 100) / 100;\n if (synchDelay > synchDelayThresholdPositive) {\n playbackRateChange = -1 * adaptivePlaybackRate;\n } else if (synchDelay < synchDelayThresholdNegative) {\n playbackRateChange = adaptivePlaybackRate;\n }\n if (playbackRateChange !== 0) {\n if (Math.abs(synchDelay) < maxGap) {\n this._logger.debug(`mediaSync :: Adjusting slave playbackRateChange = ${this._mainPlayer.playbackRate + playbackRateChange}`);\n // set a slower playback rate for the video to let the master video catch up\n this._secondaryPlayer.playbackRate = this._mainPlayer.playbackRate + playbackRateChange;\n } else {\n this._logger.debug('mediaSync :: Adjusting secondary player playbackRateChange to main player and flagging for seek');\n // set playback rate back to normal\n this._secondaryPlayer.playbackRate = this._mainPlayer.playbackRate;\n // mark for seeking\n doSeek = true;\n }\n }\n // everything is fine\n else if (!this._mainPlayer.paused) {\n this._logger.debug('mediaSync :: Main player and secondary player sync, adjusting secondary player playback rate to main player rate');\n // set playback rate back to normal\n this._secondaryPlayer.playbackRate = this._mainPlayer.playbackRate;\n // play the video\n this._secondaryPlayer.play();\n }\n\n // if marked for seeking\n if (doSeek) {\n this._logger.debug(`mediaSync :: Seeking secondary player to ${this._mainPlayer.currentTime + seekAhead}`);\n this._seekSecondaryPlayer(seekAhead);\n }\n }\n };\n\n private _getSyncDelay = () => {\n const ctMaster = this._mainPlayer.currentTime; // current time in seconds\n const ct = this._secondaryPlayer.currentTime; // current time in seconds\n const syncGap = 0; // s\n if (ctMaster != -1 && ct != -1 && !isInInterval(ct, ctMaster - syncGap, ctMaster)) {\n return ct - ctMaster; // time difference\n }\n return 0; // delay is acceptable\n };\n\n private _seekSecondaryPlayer = (aheadTime: number) => {\n const seekTime = this._mainPlayer.currentTime < 0 ? 0 : this._mainPlayer.currentTime;\n if (this._secondaryPlayer.ended && this._secondaryPlayer.duration && Math.ceil(seekTime) > this._secondaryPlayer.duration) {\n // trying to seek out of bounds after secondary Player already ended\n // pause secondary Player\n this._logger.debug(`seekSecondaryPlayer :: seekTime ${seekTime} is out of bounds 0..${this._secondaryPlayer.duration}. pause secondary player`);\n this._secondaryPlayer.pause();\n return;\n }\n this._logger.debug(`seekSecondaryPlayer :: seeking to=${seekTime}, ahead=${aheadTime}`);\n this._secondaryPlayer.currentTime = seekTime + aheadTime;\n if (this._mainPlayer.paused) {\n this._secondaryPlayer.pause();\n } else {\n this._secondaryPlayer.play();\n }\n };\n}\n","// @ts-ignore\nimport {cuepoint} from 'kaltura-player-js';\nimport {ImagePlayer} from './image-player';\n\nexport const ThumbCuePointType = 'thumbCuePoint.Thumb'; // TODO: use enum and interface from cue-point service once it got deployed\n\ninterface TimedMetadata {\n payload: {\n cues: Array<{\n track: {\n label: string;\n };\n value: {\n data: {\n id: string;\n cuePointType: string;\n assetUrl: string;\n };\n key: string;\n };\n }>;\n };\n}\n\nexport class ImageSyncManager {\n _eventManager: KalturaPlayerTypes.EventManager;\n _mainPlayer: KalturaPlayerTypes.Player;\n _imagePlayer: ImagePlayer;\n _logger: KalturaPlayerTypes.Logger;\n\n constructor(\n eventManager: KalturaPlayerTypes.EventManager,\n mainPlayer: KalturaPlayerTypes.Player,\n imagePlayer: ImagePlayer,\n logger: KalturaPlayerTypes.Logger\n ) {\n this._eventManager = eventManager;\n this._mainPlayer = mainPlayer;\n this._imagePlayer = imagePlayer;\n this._logger = logger;\n this._syncEvents();\n }\n\n private _syncEvents = () => {\n this._eventManager.listen(this._mainPlayer, this._mainPlayer.Event.TIMED_METADATA, this._onTimedMetadata);\n this._eventManager.listen(this._mainPlayer, this._mainPlayer.Event.TIMED_METADATA_ADDED, this._onTimedMetadataAdded);\n };\n\n private _onTimedMetadata = ({payload}: TimedMetadata) => {\n const activeSlide = payload.cues?.find(cue => {\n return cue.track?.label === cuepoint.CUE_POINTS_TEXT_TRACK && cue.value?.data?.cuePointType === ThumbCuePointType;\n });\n this._imagePlayer.setActive(activeSlide ? activeSlide.value.data.id : null);\n };\n\n private _onTimedMetadataAdded = ({payload}: TimedMetadata) => {\n payload.cues.forEach(cue => {\n if (cue?.value?.key === cuepoint.CUE_POINT_KEY && cue.value?.data?.cuePointType === ThumbCuePointType) {\n this._imagePlayer.addImage({\n id: cue.value.data.id,\n imageUrl: cue.value.data.assetUrl,\n errored: false,\n portrait: false,\n loaded: false\n });\n }\n });\n };\n}\n","import {h, Component, cloneElement, VNode} from 'preact';\nconst {\n redux: {connect},\n components: {PLAYER_SIZE}\n} = KalturaPlayer.ui;\n\nconst HIDE_BUTTON_MODES = [PLAYER_SIZE.EXTRA_SMALL, PLAYER_SIZE.SMALL, PLAYER_SIZE.TINY];\nconst MIN_SIZES = [PLAYER_SIZE.EXTRA_SMALL, PLAYER_SIZE.SMALL];\n\ninterface ResponsiveManagerOwnProps {\n children: VNode;\n onMinSize: () => void;\n onDefaultSize: () => void;\n}\ninterface ResponsiveManagerConnectProps {\n playerSize?: string;\n}\n\ntype ResponsiveManagerProps = ResponsiveManagerOwnProps & ResponsiveManagerConnectProps;\n\nconst mapStateToProps = (state: Record<string, any>) => ({\n playerSize: state.shell.playerSize\n});\n@connect(mapStateToProps)\nexport class ResponsiveManager extends Component<ResponsiveManagerProps> {\n static defaultProps = {\n onMinSize: () => {}\n };\n componentDidMount() {\n const {playerSize, onMinSize} = this.props;\n if (MIN_SIZES.includes(playerSize!)) {\n onMinSize();\n }\n }\n componentDidUpdate(prevProps: ResponsiveManagerProps) {\n const {playerSize, onMinSize, onDefaultSize} = this.props;\n if (playerSize === PLAYER_SIZE.TINY) {\n return;\n }\n if (MIN_SIZES.includes(playerSize!) && !MIN_SIZES.includes(prevProps.playerSize!)) {\n onMinSize();\n return;\n }\n if (!MIN_SIZES.includes(playerSize!) && MIN_SIZES.includes(prevProps.playerSize!)) {\n onDefaultSize();\n }\n }\n private _renderChildComponent = (): VNode => {\n const {children, playerSize} = this.props;\n return cloneElement(children, {hideButtons: HIDE_BUTTON_MODES.includes(playerSize!)});\n };\n render({playerSize}: ResponsiveManagerProps) {\n return playerSize === PLAYER_SIZE.TINY ? null : this._renderChildComponent();\n }\n}\n","import ILoader = KalturaPlayerTypes.ILoader;\n\nconst {RequestBuilder, ResponseTypes} = KalturaPlayer.providers;\n\nexport class SecondaryMediaLoader implements ILoader {\n _parentEntryId: string = '';\n _requests: any[] = [];\n _response: any = {\n entries: []\n };\n\n static get id(): string {\n return 'dualscreen';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this._parentEntryId = params.parentEntryId;\n const headers: Map<string, string> = new Map();\n const request = new RequestBuilder(headers);\n const INCLUDE_FIELDS = 1;\n request.service = 'baseEntry';\n request.action = 'list';\n request.params = {\n filter: {\n objectType: 'KalturaBaseEntryFilter',\n parentEntryIdEqual: this._parentEntryId,\n typeEqual: ResponseTypes.KalturaMediaEntry.MediaType.VIDEO.value\n },\n responseProfile: {\n type: INCLUDE_FIELDS,\n fields: 'id'\n }\n };\n this.requests.push(request);\n }\n\n set requests(requests: any[]) {\n this._requests = requests;\n }\n\n get requests(): any[] {\n return this._requests;\n }\n\n set response(response: any) {\n const mediaEntryListResponse = new ResponseTypes.KalturaBaseEntryListResponse(response[0]?.data);\n if (mediaEntryListResponse.totalCount) {\n this._response.entries = mediaEntryListResponse?.entries;\n }\n }\n\n get response(): any {\n return this._response;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n isValid(): boolean {\n return !!this._parentEntryId;\n }\n}\n","export * from \"./drag-and-snap-manager\";","import {h, Component, cloneElement, VNode, createRef} from 'preact';\nimport {Position} from '../../enums/positionEnum';\nimport {getClientX, getClientY, dimensionStyleToString} from '../../utils';\nimport * as styles from './drag-and-snap-manager.scss';\n\nconst {\n redux: {connect}\n} = KalturaPlayer.ui;\n\ntype OnPositionChangedCallback = (newPosition: Position) => void;\nenum DragEvents {\n MouseDown = 'mousedown',\n MouseMove = 'mousemove',\n MouseUp = 'mouseup',\n\n TouchStart = 'touchstart',\n TouchMove = 'touchmove',\n TouchEnd = 'touchend'\n}\nconst DRAG_THROTTLE_MS = 30;\nconst PRE_PLAYBACK_POSITION = -130;\n\ninterface DragAndSnapManagerOwnProps {\n children: VNode;\n onPositionChanged: OnPositionChangedCallback;\n getPosition: () => Position;\n eventManager: KalturaPlayerTypes.EventManager;\n logger: KalturaPlayerTypes.Logger;\n}\ninterface DragAndSnapManagerConnectProps {\n prePlayback?: boolean;\n}\ntype DragAndSnapManagerProps = DragAndSnapManagerOwnProps & DragAndSnapManagerConnectProps;\ninterface DragAndSnapManagerState {\n isDragging: boolean;\n}\n\nconst mapStateToProps = (state: Record<string, any>) => ({\n prePlayback: state.engine.prePlayback\n});\n@connect(mapStateToProps)\nexport class DragAndSnapManager extends Component<DragAndSnapManagerProps, DragAndSnapManagerState> {\n private _draggableTargetRef = createRef<HTMLDivElement>();\n private _draggableItemRef = createRef<HTMLDivElement>();\n private _draggableAreaRef = createRef<HTMLDivElement>();\n private _currMousePos: {x: number; y: number} = {x: 0, y: 0};\n private _throttleWait: boolean = false;\n state = {\n isDragging: false\n };\n\n componentDidMount() {\n this._setRelativeStyles();\n }\n\n componentWillUnmount() {\n const {eventManager} = this.props;\n eventManager.unlisten(document, DragEvents.MouseMove);\n eventManager.unlisten(document, DragEvents.TouchMove);\n eventManager.unlisten(document, DragEvents.MouseUp);\n eventManager.unlisten(document, DragEvents.TouchEnd);\n eventManager.unlisten(this._draggableTargetRef.current!, DragEvents.MouseDown);\n eventManager.unlisten(this._draggableTargetRef.current!, DragEvents.TouchStart);\n }\n\n private _renderChildComponent = (): VNode => {\n const {children} = this.props;\n return cloneElement(children, {isDragging: this.state.isDragging, setDraggableTarget: this._setDraggableTarget});\n };\n\n private _setDraggableTarget = (targetEl: HTMLDivElement) => {\n this._draggableTargetRef.current = targetEl;\n this._addListeners();\n };\n\n private _handleChangePosition = (position: Position) => {\n this._setAbsoluteStyles(position);\n this.props.onPositionChanged(position);\n };\n\n private _onStartDrag = () => {\n this._setAbsoluteStyles(this.props.getPosition());\n this.setState({\n isDragging: true\n });\n };\n\n private _addListeners = () => {\n this.props.eventManager.listen(this._draggableTargetRef.current!, DragEvents.MouseDown, e => {\n this._startDrag(e, DragEvents.MouseMove, DragEvents.MouseUp);\n });\n this.props.eventManager.listen(this._draggableTargetRef.current!, DragEvents.TouchStart, e => {\n this.props.eventManager.unlisten(this._draggableTargetRef.current!, DragEvents.MouseDown);\n this._startDrag(e, DragEvents.TouchMove, DragEvents.TouchEnd);\n });\n };\n\n private _startDrag(e: MouseEvent | TouchEvent, moveEventName: string, endEventName: string) {\n this.props.eventManager.listenOnce(document, endEventName, this._stopDrag);\n\n // get the mouse cursor position at startup:\n this._currMousePos.x = getClientX(e);\n this._currMousePos.y = getClientY(e);\n\n this.props.eventManager.listenOnce(document, moveEventName, this._onStartDrag);\n this.props.eventManager.listen(document, moveEventName, this._moveDrag);\n }\n\n private _moveDrag = (e: MouseEvent | TouchEvent) => {\n if (this._throttleWait) {\n return;\n }\n e = e || window.event;\n // calculate the new cursor position:\n const deltaMousePosX = this._currMousePos.x - getClientX(e);\n const deltaMousePosY = this._currMousePos.y - getClientY(e);\n this._currMousePos.x = getClientX(e);\n this._currMousePos.y = getClientY(e);\n // set the element's new position\n if (this._draggableItemRef.current && this._draggableAreaRef.current) {\n let top = parseInt(this._draggableItemRef.current!.style.top, 10);\n let right = parseInt(this._draggableItemRef.current!.style.right, 10);\n this._draggableItemRef.current!.style.right = dimensionStyleToString(right + deltaMousePosX);\n this._draggableItemRef.current!.style.top = dimensionStyleToString(top - deltaMousePosY);\n }\n // handle throttling to avoid performance issues on dragging\n this._throttleWait = true;\n setTimeout(() => {\n this._throttleWait = false;\n }, DRAG_THROTTLE_MS);\n };\n\n private _getBoundingClientRects = (): [DOMRect, DOMRect] => {\n return [this._draggableItemRef.current!.getBoundingClientRect(), this._draggableAreaRef.current!.getBoundingClientRect()];\n };\n\n // relative styles: top, right, bottom, left\n private _applyRelativeStyles = (top: number | null, right: number | null, bottom: number | null, left: number | null) => {\n this._draggableItemRef.current!.style.top = top !== null ? dimensionStyleToString(top) : '';\n this._draggableItemRef.current!.style.right = right !== null ? dimensionStyleToString(right) : '';\n this._draggableItemRef.current!.style.bottom = bottom !== null ? dimensionStyleToString(bottom) : '';\n this._draggableItemRef.current!.style.left = left !== null ? dimensionStyleToString(left) : '';\n };\n private _setRelativeStyles = () => {\n switch (this.props.getPosition()) {\n case Position.BottomRight:\n this._setRelativeBottomRightStyles();\n break;\n case Position.BottomLeft:\n this._setRelativeBottomLeftStyles();\n break;\n case Position.TopRight:\n this._setRelativeTopRightStyles();\n break;\n case Position.TopLeft:\n this._setRelativeTopLeftStyles();\n }\n };\n private _setRelativeBottomRightStyles = () => {\n this._applyRelativeStyles(null, 0, this.props.prePlayback ? PRE_PLAYBACK_POSITION : 0, null);\n };\n private _setRelativeBottomLeftStyles = () => {\n this._applyRelativeStyles(null, null, this.props.prePlayback ? PRE_PLAYBACK_POSITION : 0, 0);\n };\n private _setRelativeTopRightStyles = () => {\n this._applyRelativeStyles(this.props.prePlayback ? PRE_PLAYBACK_POSITION : 0, 0, null, null);\n };\n private _setRelativeTopLeftStyles = () => {\n this._applyRelativeStyles(this.props.prePlayback ? PRE_PLAYBACK_POSITION : 0, null, null, 0);\n };\n\n // absolute styles: top, right\n private _applyAbsoluteStyles = (top: number, right: number) => {\n this._draggableItemRef.current!.style.top = dimensionStyleToString(top);\n this._draggableItemRef.current!.style.right = dimensionStyleToString(right);\n };\n private _setAbsoluteStyles = (position: Position) => {\n switch (position) {\n case Position.BottomRight:\n this._setAbsoluteBottomRightStyles();\n break;\n case Position.BottomLeft:\n this._setAbsoluteBottomLeftStyles();\n break;\n case Position.TopRight:\n this._setAbsoluteTopRightStyles();\n break;\n case Position.TopLeft:\n this._setAbsoluteTopLeftStyles();\n }\n this._draggableItemRef.current!.style.bottom = '';\n this._draggableItemRef.current!.style.left = '';\n };\n private _setAbsoluteBottomRightStyles = () => {\n const [draggableItemBoundClientRect, draggableAreaBoundClientRect] = this._getBoundingClientRects();\n this._applyAbsoluteStyles(draggableAreaBoundClientRect.height - draggableItemBoundClientRect.height, 0);\n };\n private _setAbsoluteBottomLeftStyles = () => {\n const [draggableItemBoundClientRect, draggableAreaBoundClientRect] = this._getBoundingClientRects();\n this._applyAbsoluteStyles(\n draggableAreaBoundClientRect.height - draggableItemBoundClientRect.height,\n draggableAreaBoundClientRect.width - draggableItemBoundClientRect.width\n );\n };\n private _setAbsoluteTopRightStyles = () => {\n this._applyAbsoluteStyles(0, 0);\n };\n private _setAbsoluteTopLeftStyles = () => {\n const [draggableItemBoundClientRect, draggableAreaBoundClientRect] = this._getBoundingClientRects();\n this._applyAbsoluteStyles(0, draggableAreaBoundClientRect.width - draggableItemBoundClientRect.width);\n };\n\n private _stopDrag = () => {\n // stop moving when mouse button is released:\n this.setState({\n isDragging: false\n });\n this.props.eventManager.unlisten(document, DragEvents.MouseMove);\n this.props.eventManager.unlisten(document, DragEvents.TouchMove);\n const [draggableItemBoundClientRect, draggableAreaBoundClientRect] = this._getBoundingClientRects();\n const draggableContainerCenterX = draggableItemBoundClientRect.x + draggableItemBoundClientRect.width / 2;\n const draggableContainerCenterY = draggableItemBoundClientRect.y + draggableItemBoundClientRect.height / 2;\n const guiClientCenterX = draggableAreaBoundClientRect.x + draggableAreaBoundClientRect.width / 2;\n const guiClientCenterY = draggableAreaBoundClientRect.y + draggableAreaBoundClientRect.height / 2;\n if (draggableContainerCenterX > guiClientCenterX) {\n if (draggableContainerCenterY > guiClientCenterY) {\n this._handleChangePosition(Position.BottomRight);\n } else {\n this._handleChangePosition(Position.TopRight);\n }\n } else {\n if (draggableContainerCenterY > guiClientCenterY) {\n this._handleChangePosition(Position.BottomLeft);\n } else {\n this._handleChangePosition(Position.TopLeft);\n }\n }\n };\n\n render() {\n const draggableItemStyles = [styles.draggableItem];\n if (this.state.isDragging) {\n draggableItemStyles.push(styles.dragging);\n }\n return (\n <div id=\"draggeble-area\" className={styles.draggableArea} ref={this._draggableAreaRef}>\n <div id=\"draggable-item\" ref={this._draggableItemRef} className={draggableItemStyles.join(' ')} onTransitionEnd={this._setRelativeStyles}>\n {this._renderChildComponent()}\n </div>\n </div>\n );\n }\n}\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../../node_modules/sass-loader/dist/cjs.js!./drag-and-snap-manager.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".drag-and-snap-manager__draggableArea___1vWQt{position:absolute;width:100%;height:100%;pointer-events:none}.drag-and-snap-manager__draggableItem___2hlCK{position:absolute;pointer-events:auto}.drag-and-snap-manager__draggableItem___2hlCK.drag-and-snap-manager__dragging___1yOFj{cursor:move}.drag-and-snap-manager__draggableItem___2hlCK:not(.drag-and-snap-manager__dragging___1yOFj){transition:top .3s ease-in,right .3s ease-in,bottom .3s ease-in}.drag-and-snap-manager__draggableItem___2hlCK.drag-and-snap-manager__prePlayback___hY_TD{bottom:-50px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://components/drag-and-snap-manager/drag-and-snap-manager.scss\"],\"names\":[],\"mappings\":\"AAEA,8CACE,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,mBAAoB,CACrB,8CAEC,iBAAkB,CAClB,mBAAoB,CAFtB,sFAII,WAAY,CAJhB,4FAOI,+DAAkH,CAPtH,yFAUI,YAAa\",\"sourcesContent\":[\"@import '~styles/variables';\\n\\n.draggableArea {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n}\\n.draggableItem {\\n position: absolute;\\n pointer-events: auto;\\n &.dragging {\\n cursor: move;\\n }\\n &:not(.dragging) {\\n transition: top $animation-duration ease-in, right $animation-duration ease-in, bottom $animation-duration ease-in;\\n }\\n &.prePlayback {\\n bottom: -50px;\\n }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"draggableArea\": \"drag-and-snap-manager__draggableArea___1vWQt\",\n\t\"draggableItem\": \"drag-and-snap-manager__draggableItem___2hlCK\",\n\t\"dragging\": \"drag-and-snap-manager__dragging___1yOFj\",\n\t\"prePlayback\": \"drag-and-snap-manager__prePlayback___hY_TD\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import {h, Component} from 'preact';\nimport {SideBySide} from './side-by-side';\nimport {Animations} from '../../enums';\nimport {ResponsiveManager} from '../responsive-manager';\nimport * as styles from './side-by-side.scss';\n\ninterface SideBySideWrapperComponentProps {\n leftPlayer: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n rightPlayer: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n switchToPIP: Function;\n switchToPIPMinimized: Function;\n switchToPIPInverse: Function;\n onSizeChange: () => void;\n inverse: boolean;\n}\nexport class SideBySideWrapper extends Component<SideBySideWrapperComponentProps> {\n render({leftPlayer, rightPlayer, switchToPIP, switchToPIPMinimized, onSizeChange, switchToPIPInverse, inverse}: SideBySideWrapperComponentProps) {\n const leftSideProps = {\n player: inverse ? rightPlayer : leftPlayer,\n onExpand: inverse ? () => switchToPIPInverse(true, Animations.ScaleRight) : () => switchToPIP(true, Animations.ScaleRight),\n animation: Animations.ScaleLeft\n };\n const rightSideProps = {\n player: inverse ? leftPlayer : rightPlayer,\n onExpand: inverse ? () => switchToPIP(true, Animations.ScaleLeft) : () => switchToPIPInverse(true, Animations.ScaleLeft),\n animation: Animations.Fade\n };\n return (\n <ResponsiveManager\n onMinSize={() => {\n switchToPIPMinimized(false);\n }}\n onDefaultSize={onSizeChange}>\n <div className={styles.sideBySideWrapper}>\n <SideBySide {...leftSideProps} />\n <SideBySide {...rightSideProps} />\n </div>\n </ResponsiveManager>\n );\n }\n}\n","import {h, createRef, Component} from 'preact';\nimport * as styles from './side-by-side.scss';\nimport {icons} from '../../icons';\nimport {Button} from './../button';\nimport {Animations, Labels} from './../../enums';\nconst {Icon} = KalturaPlayer.ui.components;\nconst {connect} = KalturaPlayer.ui.redux;\n\ninterface SideBySideComponentOwnProps {\n player: KalturaPlayerTypes.Player | KalturaPlayerTypes.ImagePlayer;\n onExpand: () => void;\n animation: Animations;\n}\ninterface SideBySideComponentConnectProps {\n guiClientRect?: {width: number; height: number};\n playerHover?: boolean;\n}\n\ntype SideBySideComponentProps = SideBySideComponentOwnProps & SideBySideComponentConnectProps;\n\nconst mapStateToProps = (state: Record<string, any>) => ({\n guiClientRect: state.shell.guiClientRect,\n playerHover: state.shell.playerHover\n});\n@connect(mapStateToProps)\nexport class SideBySide extends Component<SideBySideComponentProps> {\n ref = createRef();\n\n componentDidMount() {\n this.ref.current.appendChild(this.props.player.getVideoElement());\n }\n\n private _renderHoverButton() {\n const {onExpand, playerHover} = this.props;\n if (!playerHover) {\n return null;\n }\n return (\n <div className={styles.innerButtons}>\n <Button className={styles.iconContainer} onClick={onExpand} tooltip={{label: Labels.ExpandScreen, type: 'bottom-left'}}>\n <Icon\n id=\"dualscreen-side-by-side-pip\"\n height={icons.MediumSize}\n width={icons.MediumSize}\n viewBox={`0 0 ${icons.MediumSize} ${icons.MediumSize}`}\n path={icons.SWITCH_TO_SIDE_BY_SIDE_ICON_PATH}\n />\n </Button>\n </div>\n );\n }\n\n render({guiClientRect, animation}: SideBySideComponentProps) {\n const playerContainerStyles = {\n height: (guiClientRect?.width! / 2 / 16) * 9\n };\n const classNames = [styles.player];\n if (animation === Animations.ScaleLeft) {\n classNames.push(styles.animatedScale);\n } else {\n classNames.push(styles.animatedFade);\n }\n return (\n <div ref={this.ref} className={classNames.join(' ')} style={playerContainerStyles}>\n {this._renderHoverButton()}\n </div>\n );\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".side-by-side__iconContainer___FuEiv{height:28px;width:28px;opacity:0.8;cursor:pointer}.side-by-side__innerButtons___33ysm{display:flex;position:absolute;height:60px;left:0px;top:0px;padding:8px;background:linear-gradient(180deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 100%);width:100%}.side-by-side__innerButtons___33ysm .side-by-side__iconContainer___FuEiv:hover{background:#444444;border-radius:4px;opacity:1}.side-by-side__sideBySideWrapper___szG2_{width:100%;height:100%;position:absolute;left:0;display:flex}.side-by-side__player___1Hm7w{position:relative;margin:auto;flex:1}.side-by-side__player___1Hm7w .side-by-side__iconContainer___FuEiv{padding:2px}.side-by-side__player___1Hm7w .side-by-side__innerButtons___33ysm{z-index:1;padding:16px;flex-direction:row-reverse;animation:side-by-side__appears___1p_h5 .3s linear}.side-by-side__animatedScale___2zrMl{animation:side-by-side__scaling___3-saP .3s linear}.side-by-side__animatedFade___2Nh87{animation:side-by-side__fading___2XUVr .3s linear}@keyframes side-by-side__appears___1p_h5{from{visibility:hidden}to{visibility:hidden}}@keyframes side-by-side__scaling___3-saP{0%{transform:scale(2) translate(25%);z-index:100}100%{transform:scale(1) translate(0%);z-index:0}}@keyframes side-by-side__fading___2XUVr{0%{opacity:0}100%{opacity:1}}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://styles/_styles.scss\",\"webpack://styles/_variables.scss\",\"webpack://components/side-by-side/side-by-side.scss\"],\"names\":[],\"mappings\":\"AAEA,qCACE,WCHkB,CDIlB,UCJkB,CDKlB,WAAY,CACZ,cAAe,CAChB,oCAGC,YAAa,CACb,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,OAAQ,CACR,WAAY,CACZ,0EAAiF,CACjF,UAAW,CARb,+EAYM,kBAAmB,CACnB,iBAAkB,CAClB,SAAU,CEpBhB,yCACE,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,MAAO,CACP,YAAa,CACd,8BAGC,iBAAkB,CAClB,WAAY,CACZ,MAAO,CAHT,mEAMI,WAAY,CANhB,kEAUI,SAAU,CACV,YAAa,CACb,0BAA2B,CAC3B,kDAA6C,CAC9C,qCAID,kDAA6C,CAC9C,oCAGC,iDAA4C,CAC7C,yCAGC,KACE,iBAAkB,CAEpB,GACE,iBAAkB,CAAA,CAItB,yCACE,GACE,iCAAkC,CAClC,WAAY,CAEd,KACE,gCAAiC,CACjC,SAAU,CAAA,CAId,wCACE,GACE,SAAU,CAEZ,KACE,SAAU,CAAA\",\"sourcesContent\":[\"@import '~styles/variables';\\n\\n.iconContainer {\\n height: $smallIconSize;\\n width: $smallIconSize;\\n opacity: 0.8;\\n cursor: pointer;\\n}\\n\\n.innerButtons {\\n display: flex;\\n position: absolute;\\n height: 60px;\\n left: 0px;\\n top: 0px;\\n padding: 8px;\\n background: linear-gradient(180deg, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0) 100%);\\n width: 100%;\\n\\n .iconContainer {\\n &:hover {\\n background: #444444;\\n border-radius: 4px;\\n opacity: 1;\\n }\\n }\\n}\\n\",\"$smallIconSize: 28px;\\n$smallBorderLessIconSize: 16px;\\n$animation-duration: 0.3s;\\n\",\"@import '~styles/variables';\\n@import '~styles/styles';\\n\\n.sideBySideWrapper {\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n left: 0;\\n display: flex;\\n}\\n\\n.player {\\n position: relative;\\n margin: auto;\\n flex: 1;\\n\\n .iconContainer {\\n padding: 2px;\\n }\\n\\n .innerButtons {\\n z-index: 1;\\n padding: 16px;\\n flex-direction: row-reverse;\\n animation: appears $animation-duration linear;\\n }\\n}\\n\\n.animatedScale {\\n animation: scaling $animation-duration linear;\\n}\\n\\n.animatedFade {\\n animation: fading $animation-duration linear;\\n}\\n\\n@keyframes appears {\\n from {\\n visibility: hidden;\\n }\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n@keyframes scaling {\\n 0% {\\n transform: scale(2) translate(25%);\\n z-index: 100;\\n }\\n 100% {\\n transform: scale(1) translate(0%);\\n z-index: 0;\\n }\\n}\\n\\n@keyframes fading {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"iconContainer\": \"side-by-side__iconContainer___FuEiv\",\n\t\"innerButtons\": \"side-by-side__innerButtons___33ysm\",\n\t\"sideBySideWrapper\": \"side-by-side__sideBySideWrapper___szG2_\",\n\t\"player\": \"side-by-side__player___1Hm7w\",\n\t\"appears\": \"side-by-side__appears___1p_h5\",\n\t\"animatedScale\": \"side-by-side__animatedScale___2zrMl\",\n\t\"scaling\": \"side-by-side__scaling___3-saP\",\n\t\"animatedFade\": \"side-by-side__animatedFade___2Nh87\",\n\t\"fading\": \"side-by-side__fading___2XUVr\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// @ts-ignore\nimport {core} from 'kaltura-player-js';\nimport {DualScreen} from './dualscreen';\n\nconst {FakeEvent, EventType} = core;\n\n// @ts-ignore\nexport class DualScreenEngineDecorator implements IEngineDecorator {\n private _plugin: DualScreen;\n private _isActive = false;\n private _dispatcher: Function;\n\n constructor(engine: any, plugin: DualScreen, dispatcher: Function) {\n this._plugin = plugin;\n this._dispatcher = dispatcher;\n\n plugin.eventManager.listen(plugin.player, EventType.SEEKING, () => {\n this._isActive = true;\n });\n plugin.eventManager.listen(plugin.player, EventType.SEEKED, () => {\n this._isActive = false;\n });\n }\n\n get active(): boolean {\n return this._isActive && !this._plugin.secondaryKalturaPlayer.ended;\n }\n\n dispatchEvent(event: FakeEvent): boolean {\n if (event.type === EventType.SEEKED) {\n this._plugin.eventManager.listenOnce(this._plugin.secondaryKalturaPlayer, EventType.SEEKED, () => {\n this._dispatcher(event);\n });\n return true;\n }\n return this._dispatcher(event);\n }\n}\n","export * from './image-player';\n","import './image-player.scss';\n\nconst MAX_RETRY_ATTEMPTS = 3;\nconst RETRY_DELAY = 2000;\n\ntype OnActiveChange = (imageItem: SlideItem | null) => void;\n\nexport interface SlideItem {\n id: string;\n imageUrl: string;\n loaded: boolean;\n errored: boolean;\n portrait: boolean;\n}\n\nexport class ImagePlayer {\n private _images: Array<SlideItem> = [];\n private _imagePlayer: HTMLDivElement;\n private _activeImage: SlideItem | null = null;\n private _onActiveChange: OnActiveChange;\n private _retryInterval: any;\n\n constructor(onActiveChanged: OnActiveChange) {\n this._imagePlayer = this._createImagePlayer();\n this._onActiveChange = onActiveChanged;\n }\n\n public addImage = (item: SlideItem) => {\n if (!this._images.length || (this._activeImage && this._images[this._images.length - 1].id === this._activeImage.id)) {\n // preload first or new image\n this._loadImage(item);\n }\n this._images.push(item);\n };\n\n public setActive = (activeId: string | null) => {\n if (!activeId) {\n // remove active image\n this._imagePlayer.style.backgroundImage = 'none';\n this._activeImage = null;\n this._onActiveChange(null);\n return;\n }\n if (this._activeImage && activeId === this._activeImage.id) {\n // prevent set the same active image\n return;\n }\n clearTimeout(this._retryInterval);\n this._images.find((item, index) => {\n if (activeId === item.id) {\n this._onActiveChange(item);\n this._imagePlayer.style.backgroundImage = `url('${item.imageUrl}')`;\n this._activeImage = item;\n if (this._images[index + 1] && !this._images[index + 1].loaded) {\n // preload next image\n this._loadImage(this._images[index + 1]);\n }\n return true;\n }\n return false;\n });\n };\n\n public getVideoElement = () => {\n return this._imagePlayer;\n };\n\n private _createImagePlayer = () => {\n const imagePlayer = document.createElement('div');\n imagePlayer.classList.add('playkit-image-player');\n return imagePlayer;\n };\n\n private _loadImage = (item: SlideItem, attempt = 0) => {\n const img = new Image();\n img.onload = () => {\n item.loaded = true;\n item.errored = false;\n item.portrait = img.width < img.height;\n };\n img.onerror = () => {\n item.errored = true;\n if (attempt < MAX_RETRY_ATTEMPTS) {\n this._retryInterval = setTimeout(() => {\n this._loadImage(item, attempt + 1);\n }, RETRY_DELAY);\n }\n };\n img.src = item.imageUrl;\n };\n\n public reset = () => {\n this._activeImage = null;\n this._images = [];\n };\n}\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--5-1!../../node_modules/sass-loader/dist/cjs.js!./image-player.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".playkit-image-player{height:100%;width:100%;background-position:center;background-repeat:no-repeat;background-size:contain;background-color:black}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://image-player/image-player.scss\"],\"names\":[],\"mappings\":\"AAAA,sBAEI,WAAY,CACZ,UAAW,CACX,0BAA2B,CAC3B,2BAA4B,CAC5B,uBAAwB,CACxB,sBAAuB\",\"sourcesContent\":[\":global {\\n .playkit-image-player {\\n height: 100%;\\n width: 100%;\\n background-position: center;\\n background-repeat: no-repeat;\\n background-size: contain;\\n background-color: black;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@playkit-js/playkit-js-dual-screen",
|
|
3
|
+
"version": "1.6.2-canary.1-e4e52c4",
|
|
4
|
+
"main": "dist/playkit-dual-screen.js",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"clean": "rm -rf ./dist",
|
|
7
|
+
"prebuild": "npm run clean",
|
|
8
|
+
"build": "webpack --mode production",
|
|
9
|
+
"dev": "webpack-dev-server --mode development",
|
|
10
|
+
"watch": "webpack --progress --colors --watch --mode development",
|
|
11
|
+
"test": "NODE_ENV=test karma start --color --mode development",
|
|
12
|
+
"release": "standard-version",
|
|
13
|
+
"pushTaggedRelease": "git push --follow-tags --no-verify origin master",
|
|
14
|
+
"eslint": "eslint . --color",
|
|
15
|
+
"commit:dist": "git add --force --all dist && (git commit -m 'chore: update dist' || exit 0)",
|
|
16
|
+
"docs:generate": "documentation build flow-typed/** src/** -f md -o docs/configuration.md",
|
|
17
|
+
"docs:serve": "documentation serve flow-typed/** src/** --watch",
|
|
18
|
+
"precommit": "lint-staged",
|
|
19
|
+
"prettier:fix": "prettier --write ."
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/node": "^15.0.1",
|
|
23
|
+
"@typescript-eslint/eslint-plugin": "2.34.0",
|
|
24
|
+
"@typescript-eslint/parser": "2.34.0",
|
|
25
|
+
"chai": "^4.2.0",
|
|
26
|
+
"conventional-github-releaser": "3.1.3",
|
|
27
|
+
"cross-env": "^7.0.2",
|
|
28
|
+
"css-loader": "^4.0.0",
|
|
29
|
+
"documentation": "latest",
|
|
30
|
+
"husky": "^4.2.5",
|
|
31
|
+
"istanbul": "^0.4.5",
|
|
32
|
+
"kaltura-player-js": "https://github.com/kaltura/kaltura-player-js.git#master",
|
|
33
|
+
"karma": "^5.1.0",
|
|
34
|
+
"karma-chai": "^0.1.0",
|
|
35
|
+
"karma-chrome-launcher": "^3.1.0",
|
|
36
|
+
"karma-cli": "^2.0.0",
|
|
37
|
+
"karma-coverage": "^2.0.2",
|
|
38
|
+
"karma-firefox-launcher": "^1.3.0",
|
|
39
|
+
"karma-ie-launcher": "^1.0.0",
|
|
40
|
+
"karma-mocha": "^2.0.1",
|
|
41
|
+
"karma-mocha-reporter": "^2.2.5",
|
|
42
|
+
"karma-safari-launcher": "^1.0.0",
|
|
43
|
+
"karma-sourcemap-loader": "^0.3.7",
|
|
44
|
+
"karma-webpack": "^4.0.2",
|
|
45
|
+
"lint-staged": "^10.2.11",
|
|
46
|
+
"mocha": "^8.0.1",
|
|
47
|
+
"mocha-cli": "^1.0.1",
|
|
48
|
+
"node-sass": "^4.14.1",
|
|
49
|
+
"prettier": "^2.0.5",
|
|
50
|
+
"sass-loader": "^10",
|
|
51
|
+
"sinon": "^9.0.2",
|
|
52
|
+
"sinon-chai": "^3.5.0",
|
|
53
|
+
"standard-version": "^6.0.1",
|
|
54
|
+
"style-loader": "^1.2.1",
|
|
55
|
+
"ts-loader": "^6.0.4",
|
|
56
|
+
"tslint": "5.20.1",
|
|
57
|
+
"typescript": "3.9.7",
|
|
58
|
+
"uglifyjs-webpack-plugin": "^2.2.0",
|
|
59
|
+
"webpack": "^4.43.0",
|
|
60
|
+
"webpack-cli": "^3.3.12",
|
|
61
|
+
"webpack-dev-server": "^3.11.0"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"kaltura-player-js": "https://github.com/kaltura/kaltura-player-js.git#v1.0.0"
|
|
65
|
+
},
|
|
66
|
+
"publishConfig": {
|
|
67
|
+
"access": "public"
|
|
68
|
+
},
|
|
69
|
+
"keywords": [
|
|
70
|
+
"dual screen",
|
|
71
|
+
"dual video",
|
|
72
|
+
"kaltura",
|
|
73
|
+
"player",
|
|
74
|
+
"playkit-js",
|
|
75
|
+
"playkit-js-dual-screen",
|
|
76
|
+
"html5 player"
|
|
77
|
+
]
|
|
78
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"experimentalDecorators": true,
|
|
4
|
+
"skipLibCheck": true,
|
|
5
|
+
"target": "ES5",
|
|
6
|
+
"module": "commonjs",
|
|
7
|
+
"allowJs": false,
|
|
8
|
+
"jsx": "react",
|
|
9
|
+
"jsxFactory": "h",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"moduleResolution": "Node",
|
|
13
|
+
"baseUrl": "./src",
|
|
14
|
+
"preserveSymlinks": true,
|
|
15
|
+
"paths": {
|
|
16
|
+
"*": ["../node_modules/*"]
|
|
17
|
+
},
|
|
18
|
+
"types": ["node"]
|
|
19
|
+
},
|
|
20
|
+
"include": ["src/**/*.tsx", "src/**/*.ts", "custom.d.ts", "node_modules/kaltura-player-js/ts-typed"]
|
|
21
|
+
}
|