{"version":3,"file":"pwc-341.1ab96b34.chunk.js","mappings":"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","sources":["static/svg/CamtasiaLogo.svg","static/svg/CommentMarker.svg","static/svg/SelfIdentifyBadge.svg","static/svg/SnagitLogo24x24.svg","static/svg/rectPlaceholder.svg","component/conversation/Annotation.tsx","component/conversation/AnnotationShapes/Arrow.ts","component/conversation/CommentMarkers.tsx","component/display/CaptionDisplayStatusPlugin.tsx","component/display/PizzaTracker.tsx","component/display/SmartPlayer.tsx","component/display/VideoPlaceholder.tsx","component/marketing/MarketingEmbedPlugin.tsx","component/modals/SelfIdentifyModal.tsx","component/reactions/ReactionGroups.ts","component/reactions/ReactionMarker.tsx","component/reactions/ReactionUIButton.tsx","component/reactions/ReactionsImageWidget.tsx","component/reactions/ReactionsMenu.tsx","component/reactions/ReactionsPlaybackPlugin.tsx","component/reactions/ReactionsPlugin.tsx","component/reactions/ReactionsSummaryPopup.tsx","component/util/ScreenReaderHelper.tsx","constants/reactionEmojis.ts","constants/smartPlayerConstants.ts","context/userProfileProvider.tsx","service/resumablePlayback.ts","service/selfIdentifyservice.ts","util/EmojiSearch.ts","util/MarketingHelper.ts","util/TimeFormatter.ts","util/TranscriptGenerator.ts"],"sourcesContent":["function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29 0a3 3 0 013 3v26a3 3 0 01-3 3H3a3 3 0 01-3-3V3a3 3 0 013-3h26z\",\n fill: \"url(#paint0_linear_787_2738)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.6 4.15L6 9h16.06c.13 0 .25-.05.34-.15l3.8-4a.51.51 0 00.1-.53.49.49 0 00-.44-.32H10.94a.46.46 0 00-.34.15zM10.6 27.85L6 23h16.06c.13 0 .25.05.34.15l3.8 4c.13.14.17.35.1.53a.49.49 0 01-.44.32H10.94a.46.46 0 01-.33-.15\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \".74\",\n d: \"M11 9H6v14h5V9\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_787_2738\",\n x1: \"0\",\n y1: \"0\",\n x2: \"0\",\n y2: \"32\",\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#97C93D\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#3D9544\"\n})))));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"14\",\n height: \"16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n className: styles[\"glyph-inner\"] || \"glyph-inner\",\n d: \"M2.5 3A2.5 2.5 0 000 5.5v5A2.5 2.5 0 002.5 13H6v1.94a.98.98 0 001.63.74L10.69 13h.81a2.5 2.5 0 002.5-2.5v-5A2.5 2.5 0 0011.5 3h-9z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: styles[\"glyph-outer\"] || \"glyph-outer\",\n clipRule: \"evenodd\",\n d: \"M7 12v2.9l3.31-2.9h1.19a1.5 1.5 0 001.5-1.5v-5A1.5 1.5 0 0011.5 4h-9A1.5 1.5 0 001 5.5v5A1.5 1.5 0 002.5 12H7zm.63 3.68A.98.98 0 016 14.94V13H2.5A2.5 2.5 0 010 10.5v-5A2.5 2.5 0 012.5 3h9A2.5 2.5 0 0114 5.5v5a2.5 2.5 0 01-2.5 2.5h-.81l-3.06 2.68z\"\n})));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: \"140\",\n height: \"190\"\n}, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"New_Gradient_Swatch_5\",\n \"data-name\": \"New Gradient Swatch 5\",\n x1: \"55.08\",\n y1: \"-5.92\",\n x2: \"215.77\",\n y2: \"154.77\",\n gradientTransform: \"matrix(-1 0 0 1 184 0)\",\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"0\",\n stopColor: \"#35abab\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \".67\",\n stopColor: \"#676e96\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \".89\",\n stopColor: \"#5c568f\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#56488b\"\n})), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"New_Gradient_Swatch_5-2\",\n x1: \"-23.82\",\n y1: \"24.68\",\n x2: \"142.94\",\n y2: \"191.44\",\n xlinkHref: \"#New_Gradient_Swatch_5\"\n}), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"New_Gradient_Swatch_5-3\",\n x1: \"9.93\",\n y1: \"-8.28\",\n x2: \"175.98\",\n y2: \"157.77\",\n xlinkHref: \"#New_Gradient_Swatch_5\"\n}), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"New_Gradient_Swatch_5-4\",\n x1: \"73.45\",\n y1: \"-50.55\",\n x2: \"275.08\",\n y2: \"151.08\",\n xlinkHref: \"#New_Gradient_Swatch_5\"\n})), /*#__PURE__*/React.createElement(\"title\", null, \"graphic_spot_name-badge\"), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n isolation: \"isolate\"\n }\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#New_Gradient_Swatch_5)\",\n d: \"M77 43H63l63-43h14L77 43z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n mixBlendMode: \"multiply\"\n },\n fill: \"#193138\",\n opacity: \".25\",\n d: \"M77 43H63l63-43h14L77 43z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112 47H28a8 8 0 00-8 8v127a8 8 0 008 8h84a8 8 0 008-8V55a8 8 0 00-8-8zM85 59a2.17 2.17 0 01-2.31 2H57.31A2.17 2.17 0 0155 59v-2a2.17 2.17 0 012.31-2h25.38A2.17 2.17 0 0185 57z\",\n fill: \"url(#New_Gradient_Swatch_5-2)\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"30\",\n y: \"135\",\n width: \"80\",\n height: \"8\",\n rx: \"1.62\",\n ry: \"1.62\",\n style: {\n mixBlendMode: \"multiply\"\n },\n fill: \"#193138\",\n opacity: \".25\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"30\",\n y: \"151\",\n width: \"80\",\n height: \"4\",\n rx: \"1\",\n ry: \"1\",\n style: {\n mixBlendMode: \"multiply\"\n },\n fill: \"#193138\",\n opacity: \".25\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"30\",\n y: \"163\",\n width: \"80\",\n height: \"4\",\n rx: \"1\",\n ry: \"1\",\n style: {\n mixBlendMode: \"multiply\"\n },\n fill: \"#193138\",\n opacity: \".25\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62 43h16a2 2 0 012 2v14a1 1 0 01-1 1H61a1 1 0 01-1-1V45a2 2 0 012-2z\",\n fill: \"url(#New_Gradient_Swatch_5-3)\"\n}), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#193138\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100 99a29.78 29.78 0 01-8.32 20.7l-.32.32a29.93 29.93 0 01-42.73 0c-.09-.11-.21-.22-.32-.33A30 30 0 11100 99z\",\n style: {\n mixBlendMode: \"multiply\"\n },\n opacity: \".25\"\n}), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"70\",\n cy: \"87.55\",\n r: \"12.24\",\n style: {\n mixBlendMode: \"multiply\"\n },\n opacity: \".25\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.36 120a29.93 29.93 0 01-42.73 0 21.7 21.7 0 0142.73 0z\",\n style: {\n mixBlendMode: \"multiply\"\n },\n opacity: \".25\"\n})), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#New_Gradient_Swatch_5-4)\",\n d: \"M63 43h14L14 0H0l63 43z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n mixBlendMode: \"multiply\"\n },\n fill: \"#193138\",\n opacity: \".2\",\n d: \"M80 47h2v8h-2z\"\n}))))));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.75 0H2.25C1.01 0 0 1 0 2.25v19.5C0 22.99 1 24 2.25 24h19.5c1.24 0 2.25-1 2.25-2.25V2.25C24 1.01 23 0 21.75 0z\",\n fill: \"url(#paint0_linear_310_228)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.98 2.86a.37.37 0 01.27-.11h11.13c.1 0 .2.04.27.12.06.06.1.15.1.25s-.04.18-.1.25l-3.3 3.02a.37.37 0 01-.25.11H4.5l3.48-3.64zm.23 14.39c-.1 0-.19.04-.25.1L4.6 20.38a.37.37 0 00-.11.25c0 .1.04.18.1.25.07.08.17.12.27.12H16c.1 0 .18-.04.25-.11l3.5-3.64H8.21zM4.5 10h11.52c.1 0 .18.04.25.11l3.48 3.64H8.23a.36.36 0 01-.25-.11L4.5 10z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \".74\",\n d: \"M16 13.75h3.75v3.5H16v-3.5zM4.5 6.5h3.75V10H4.5V6.5z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_310_228\",\n x1: \"12\",\n y1: \"0\",\n x2: \"12\",\n y2: \"24\",\n gradientUnits: \"userSpaceOnUse\"\n}, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5CA7DB\"\n}), /*#__PURE__*/React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#3879BD\"\n})))));","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1024 576\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#000\",\n strokeOpacity: \".1\",\n d: \"M0 0h1024v576H0z\"\n})));","import React, {useRef, useEffect, useState} from 'react';\nimport {fabric} from 'fabric';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport Arrow from './AnnotationShapes/Arrow';\nimport Constants, {AnnotationColors, AnnotationModes, KeyCodes} from '../../constants/Constants';\nimport {IComment} from '../../model/commentModel';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {selectedConversationStore} from '../../context/selectedConversationProvider';\nimport {updateCanvasState} from '../../context/canvasProvider';\nimport {annotationManagerStore} from '../../context/annotationManagerProvider';\nimport {commentsStore} from '../../context/commentsProvider';\nimport {AriaAlert} from '../util/StyledElements';\nimport {updateQuizData} from '../../context/quizDataProvider';\nimport {mediaStore} from '../../context/mediaProvider';\nimport logging from '../../service/logging';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\n\nconst editingInputTypes = [Constants.elementInputTypes.input, Constants.elementInputTypes.textArea, Constants.elementInputTypes.search];\n\nexport const AnnotationWrapper = styled.div<{pointerEvents: string}>`\n position: relative;\n width: 100%;\n height: 100%;\n pointer-events: ${props => props.pointerEvents};\n`;\n\nexport interface IStateMappedProps {\n SelectedComment?: IComment;\n annotationMode: AnnotationModes;\n annotationColor: AnnotationColors;\n comments: IComment[];\n IsImage: boolean;\n Width: number;\n}\n\nexport const AnnotationBase: React.FC = ({SelectedComment, annotationMode, annotationColor, comments, IsImage, Width}) => {\n const {t} = useTranslation();\n\n const [showAnnotationAccessibilityAlert, setShowAnnotationAccessibilityAlert] = useState(false);\n const [style, setStyle] = useState({});\n const useLegacyScaleRef = useRef(false);\n const canvasRef = useRef(null);\n const mediaContentRef = useRef(document.querySelector('#tscMediaContent .video-div') ?? document.querySelector('#tscMediaContent .smart-player-image-media'));\n\n const onFabricObjectLoad = (jsonToIgnore: any, object: fabric.Object): void => {\n object.set({\n selectable: false,\n hoverCursor: Constants.cursors.default,\n opacity: 0,\n strokeWidth: canvasRef.current.freeDrawingBrush.width\n });\n\n object.animate('opacity', 1, {\n duration: Constants.annotation.animationDuration,\n onChange: canvasRef.current.requestRenderAll.bind(canvasRef.current)\n });\n };\n\n useEffect(() => {\n let timeoutId = -1;\n\n if (showAnnotationAccessibilityAlert) {\n document.getElementById('annotation-exists-alert').style.display = 'block';\n\n timeoutId = window.setTimeout(() => {\n document.getElementById('annotation-exists-alert').style.display = 'none';\n setShowAnnotationAccessibilityAlert(false);\n }, 1000);\n }\n\n return () => {\n clearTimeout(timeoutId);\n };\n }, [showAnnotationAccessibilityAlert]);\n\n const loadAnnotations = (): void => {\n const annotation = SelectedComment?.parentCommentId ? comments.find(c => c.id === SelectedComment.parentCommentId).annotation : SelectedComment?.annotation;\n\n if (!annotation) {\n scaleCanvas();\n return;\n }\n\n setShowAnnotationAccessibilityAlert(true);\n canvasRef.current.clear();\n useLegacyScaleRef.current = !annotation.includes(Constants.annotation.newScaleAnnotationFlag);\n scaleCanvas();\n\n try {\n canvasRef.current.loadFromJSON(annotation, () => {\n // Empty on purpose\n }, onFabricObjectLoad);\n } catch (error) {\n logging.error(`Something went wrong loading annotation data: ${annotation}`, error);\n }\n };\n\n const removeOutOfViewObject = (event: any): void => {\n if (!event.target) {\n return;\n }\n\n const object = event.target as fabric.Object;\n const bounds = object.getBoundingRect();\n const pastLeft = bounds.left + bounds.width < 0;\n const pastTop = bounds.top + bounds.height < 0;\n const pastRight = bounds.left > canvasRef.current.width;\n const pastBottom = bounds.top > canvasRef.current.height;\n\n if (pastLeft || pastTop || pastRight || pastBottom) {\n canvasRef.current.remove(object);\n }\n };\n\n const scaleCanvas = (): void => {\n const scale = useLegacyScaleRef.current ?\n Math.max(mediaContentRef.current.clientWidth, mediaContentRef.current.clientHeight) / Constants.annotation.scale :\n mediaContentRef.current.clientWidth / Width;\n\n const strokeWidth = 1 / scale * Constants.annotation.strokeWidth;\n\n canvasRef.current.setZoom(scale);\n canvasRef.current.freeDrawingBrush.width = strokeWidth;\n canvasRef.current.getObjects().forEach((obj: fabric.Object) => {\n obj.strokeWidth = strokeWidth;\n });\n };\n\n useEffect(() => {\n if (!canvasRef.current) {\n return;\n }\n\n canvasRef.current.freeDrawingBrush.color = annotationColor;\n canvasRef.current.getActiveObjects().forEach((object: fabric.Object) => {\n object.stroke = annotationColor;\n if (object.fill !== Constants.annotation.transparentColor) {\n object.fill = annotationColor;\n }\n });\n\n canvasRef.current.requestRenderAll();\n }, [annotationColor]);\n\n const onKeyDown = React.useCallback((e: KeyboardEvent) => {\n if (!canvasRef.current || annotationMode !== AnnotationModes.edit) {\n return;\n }\n\n const isInputSelected = editingInputTypes.some(type => (e.target as HTMLInputElement).type === type);\n const isRemoveEvent = e.keyCode === KeyCodes.backspace || e.keyCode === KeyCodes.delete;\n\n if (isInputSelected || !isRemoveEvent) {\n return;\n }\n\n e.preventDefault(); // Do not trigger navigation back if we are deleting an object\n\n canvasRef.current.getActiveObjects().forEach(object => canvasRef.current.remove(object));\n }, [annotationMode]);\n\n useEffect(() => {\n if (!canvasRef.current) {\n return;\n }\n\n canvasRef.current.clear();\n\n void importMediaInterface().then(mediaInterface => {\n if (annotationMode === AnnotationModes.edit) {\n mediaInterface.singleClickControlEnabled = false;\n mediaInterface.doubleClickControlEnabled = false;\n mediaInterface.pause();\n } else {\n mediaInterface.singleClickControlEnabled = true;\n mediaInterface.doubleClickControlEnabled = true;\n }\n\n if (annotationMode === AnnotationModes.display) {\n canvasRef.current.isDrawingMode = false;\n loadAnnotations();\n }\n\n canvasRef.current.selection = annotationMode === AnnotationModes.edit;\n });\n }, [SelectedComment?.annotation, annotationMode]);\n\n const setupCanvas = () => {\n fabric.Object.prototype.padding = Constants.annotation.controlsPadding;\n fabric.Object.prototype.centeredRotation = false;\n fabric.Object.prototype.centeredScaling = false;\n fabric.Object.prototype.strokeUniform = true;\n fabric.Object.prototype.objectCaching = false;\n fabric.Group.prototype.hasControls = false;\n\n const canvas = new fabric.Canvas('canvas-element', {\n uniformScaling: false,\n selection: annotationMode === AnnotationModes.edit,\n defaultCursor: 'pointer',\n width: mediaContentRef.current.clientWidth,\n height: mediaContentRef.current.clientHeight,\n perPixelTargetFind: true,\n enableRetinaScaling: false\n });\n\n canvas.freeDrawingBrush = new fabric.PencilBrush(canvas);\n canvas.freeDrawingBrush.color = annotationColor;\n\n canvas.on('object:modified', removeOutOfViewObject);\n canvas.on('object:added', removeOutOfViewObject);\n\n Arrow.initializeEventListeners(canvas);\n\n canvasRef.current = canvas;\n updateCanvasState({canvasRef: canvas});\n };\n\n const resetDimensions = () => {\n if (mediaContentRef.current.clientWidth === 0 || mediaContentRef.current.clientHeight === 0) {\n return;\n }\n\n if (!canvasRef.current) {\n setupCanvas();\n loadAnnotations();\n } else if (canvasRef.current.width !== mediaContentRef.current.clientWidth || canvasRef.current.height !== mediaContentRef.current.clientHeight) {\n canvasRef.current.setDimensions({width: mediaContentRef.current.clientWidth, height: mediaContentRef.current.clientHeight});\n scaleCanvas();\n }\n };\n\n useEffect(() => {\n resetDimensions(); // Though observers execute on load, this helps headless tests with no actual dimensions\n const observer = new ResizeObserver(resetDimensions);\n observer.observe(mediaContentRef.current);\n\n return () => {\n observer.disconnect();\n updateQuizData({IsQuizzing: false});\n if (canvasRef.current) {\n canvasRef.current.dispose();\n }\n };\n }, []);\n\n useEffect(() => {\n window.addEventListener('keydown', onKeyDown);\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [onKeyDown]);\n\n useEffect(() => {\n const updatedStyle: any = {\n width: '100%',\n height: '100%',\n margin: 'auto'\n };\n\n if (IsImage) {\n updatedStyle.position = 'absolute';\n updatedStyle.left = 0;\n updatedStyle.right = 0;\n updatedStyle.top = 0;\n updatedStyle.bottom = 0;\n }\n\n setStyle(updatedStyle);\n }, [IsImage]);\n\n return (\n <>\n \n \n \n \n {t('annotation.annotationExistsAlert')}\n \n \n );\n};\n\nconst mapStatesToProps = (\n // eslint-disable-next-line no-empty-pattern\n {},\n {SelectedComment}: Partial,\n {annotationMode, annotationColor}: Partial,\n {comments}: Partial,\n {IsImage, Width}: Partial\n): IStateMappedProps => ({SelectedComment, annotationMode, annotationColor, comments, IsImage, Width});\n\nexport default withMemoizedContexts(mapStatesToProps, selectedConversationStore, annotationManagerStore, commentsStore, mediaStore)(AnnotationBase);\n","import Constants from '../../../constants/Constants';\nimport {fabric} from 'fabric';\n\ninterface IArrow extends fabric.Path {\n __corner: string;\n zoomX: number;\n zoomY: number;\n path: any;\n}\n\nconst halfAngle = 180;\nconst radToDeg = halfAngle / Math.PI;\nconst pathConst = 4;\n\nconst arrowConst = 5;\n// eslint-disable-next-line @typescript-eslint/no-magic-numbers\nconst minArrow = arrowConst * 4;\nconst arrowHead = `M 0 0 L ${arrowConst} ${arrowConst} L ${arrowConst} -${arrowConst} Z L ${minArrow} 0`; // SVG Path (M: starting coords, L: draw line, Z: return to start and fill)\n\nconst calcAngle = (startCoords: fabric.IPoint, endCoords: fabric.IPoint): number => Math.atan2(endCoords.y - startCoords.y, endCoords.x - startCoords.x) * radToDeg;\nconst calcDistance = (startCoords: fabric.IPoint, endCoords: fabric.IPoint): number => Math.hypot(endCoords.x - startCoords.x, endCoords.y - startCoords.y);\n\nconst initializeEventListeners = (canvas: fabric.Canvas): void => {\n const scaling = (event: any): void => {\n if (event.target.name !== Constants.annotation.shape.arrow) {\n return;\n }\n\n const arrow = event.target as IArrow;\n const mouse = canvas.getPointer(event.e, true);\n\n if (arrow.__corner === 'ml' && arrow.originX === 'left') {\n const newOrigins = arrow.getPointByOrigin('right', 'center');\n arrow.left = newOrigins.x;\n arrow.top = newOrigins.y;\n arrow.originX = 'right';\n } else if (arrow.__corner === 'mr' && arrow.originX === 'right') {\n const newOrigins = arrow.getPointByOrigin('left', 'center');\n arrow.left = newOrigins.x;\n arrow.top = newOrigins.y;\n arrow.originX = 'left';\n }\n\n const angle = arrow.__corner === 'ml' ? calcAngle(mouse, arrow.oCoords.mr) : calcAngle(arrow.oCoords.ml, mouse);\n const distance = Math.max(arrow.width * arrow.scaleX, minArrow);\n arrow.set({angle: angle, width: distance, scaleX: 1, scaleY: 1});\n arrow.path[pathConst][1] = distance;\n arrow.pathOffset.x = distance / 2;\n };\n\n canvas.on('object:scaling', scaling);\n};\n\nconst turnOnMouseEventListeners = (canvas: fabric.Canvas, setAnnotationExists: (annotationExists: boolean) => void): void => {\n canvas.selection = true;\n\n const mouseDown = (event: any): void => {\n if (event.target) {\n return; // Clicked on existing object\n }\n\n canvas.on('mouse:move', mouseMove);\n canvas.on('mouse:up', mouseUp);\n\n const mouse = canvas.getPointer(event.e);\n\n const arrow = new fabric.Path(arrowHead, {\n originX: 'right',\n originY: 'center',\n left: mouse.x,\n top: mouse.y,\n stroke: canvas.freeDrawingBrush.color,\n strokeWidth: canvas.freeDrawingBrush.width,\n lockScalingFlip: true,\n fill: canvas.freeDrawingBrush.color,\n name: Constants.annotation.shape.arrow,\n scaleX: 1,\n scaleY: 1,\n strokeUniform: false\n }) as IArrow;\n arrow.setCoords();\n arrow.setControlsVisibility({bl: false, br: false, mb: false, ml: true, mr: true, mt: false, tl: false, tr: false, mtr: false});\n canvas.selection = false;\n canvas.add(arrow);\n canvas.setActiveObject(arrow);\n };\n\n const mouseMove = (event: any): void => {\n const arrow = canvas.getActiveObject() as IArrow;\n const mouse = canvas.getPointer(event.e);\n const controlsOffset = canvas.freeDrawingBrush.width * 3; // eslint-disable-line @typescript-eslint/no-magic-numbers\n const angle = calcAngle(mouse, {x: arrow.left, y: arrow.top});\n const distance = Math.max(calcDistance(mouse, {x: arrow.left, y: arrow.top}) - controlsOffset, minArrow);\n arrow.set({width: distance, angle: angle, scaleX: 1, scaleY: 1});\n arrow.path[pathConst][1] = distance;\n arrow.pathOffset.x = distance / 2;\n arrow.setCoords();\n canvas.requestRenderAll();\n };\n\n const mouseUp = (): void => {\n const arrow = canvas.getActiveObject();\n canvas.discardActiveObject();\n canvas.selection = true;\n setAnnotationExists(true);\n canvas.fire('object:added', {target: arrow});\n canvas.requestRenderAll();\n canvas.off('mouse:up', mouseUp);\n canvas.off('mouse:move', mouseMove);\n };\n\n canvas.defaultCursor = 'crosshair';\n canvas.on('mouse:down', mouseDown);\n};\n\nexport default {\n turnOnMouseEventListeners,\n initializeEventListeners\n};\n","import React, {useState} from 'react';\nimport TimeFormatter from '../../util/TimeFormatter';\nimport {useTranslation} from 'react-i18next';\nimport {ControlButton, TscButtonType, TscStyles, TscThemeName, TscThemeNames} from '@techsmith/tsc-cloud-style-guide';\nimport styled from 'styled-components';\nimport CommentMarker from '../../static/svg/CommentMarker.svg';\nimport {IComment} from '../../model/commentModel';\nimport {AnnotationModes} from '../../constants/Constants';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {selectedConversationStore, updateSelectedConversationState} from '../../context/selectedConversationProvider';\nimport {commentsStore} from '../../context/commentsProvider';\nimport {updateAnnotationManagerState} from '../../context/annotationManagerProvider';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {quizDataStore} from '../../context/quizDataProvider';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\n\nconst lowerArrowThreshold = 2;\nconst upperArrowThreshold = 98;\n\nconst CommentMarkerPlugin = styled.div`\n top: -1rem;\n width: 100%;\n display: flex;\n position: absolute;\n`;\n\nexport const CommentMarkerWrapper = styled.div<{isSelected: boolean; leftOffset: number; isHovering: boolean; theme: TscThemeNames}>`\n position: absolute;\n pointer-events: auto;\n left: ${props => props.leftOffset}%;\n transform: translateX(-50%);\n\n &:after {\n content: '';\n display: ${props => props.isHovering && props.leftOffset > lowerArrowThreshold && props.leftOffset < upperArrowThreshold ? 'block' : 'none'};\n border-width: 10px 8px 0;\n border-style: solid;\n border-color: ${TscStyles.color.ui.dusk.mediumDark} transparent transparent transparent;\n position: absolute;\n left: -.125rem;\n bottom: 1.875rem;\n animation: show-comment-preview 200ms ease;\n }\n\n svg {\n height: 1rem;\n width: 0.875rem;\n fill: ${props => props.isSelected ? TscStyles.color.action.primary : props.theme === TscThemeName.dusk ? TscStyles.color.text.mediumDark : TscStyles.color.ui.dawn.lightMedium};\n\n path {\n border: 1px solid white;\n }\n\n .glyph-outer {\n fill: ${props => props.isSelected && props.theme === TscThemeName.dusk ? TscStyles.color.ui.dawn.lightMedium :\n props.isSelected && props.theme === TscThemeName.dawn ? TscStyles.color.text.mediumDark :\n props.theme === TscThemeName.dusk ? TscStyles.color.text.lightMedium :\n TscStyles.color.text.mediumDark};\n }\n }\n`;\n\nexport const CommentPreview = styled.div<{leftOffset: number}>`\n background: ${TscStyles.color.ui.dusk.mediumDark};\n color: ${TscStyles.color.text.light};\n position: absolute;\n left: ${props => props.leftOffset}px;\n bottom: 0.25rem;\n padding: 0.5rem !important;\n border-radius: ${TscStyles.border.radius.lg};\n width: 12.5rem;\n`;\n\nexport const PreviewText = styled.div`\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n word-wrap: break-word;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n line-height: 1rem; /* fallback */\n max-height: 3rem;\n`;\n\nexport const PreviewAuthor = styled.div`\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const CommentMarkersBase: React.FC = ({mediaDuration, SelectedComment, comments, IsQuizzing}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const [previewState, setPreviewState] = useState({showPreview: false, previewXoffset: -1, text: '', authorName: '', comment: null});\n\n const calculatePreviewX = (target: Element) => {\n const commentPreviewWidth = 200;\n const previewHalfWidth = commentPreviewWidth / 2;\n const markerWidth = 14;\n const halfMarkerWidth = markerWidth / 2;\n const edgeOffset = 0;\n const targetRect = target.getBoundingClientRect();\n const playerRect = document.querySelector('.tsc-smartplayer').getBoundingClientRect();\n const offsetX = targetRect.left + halfMarkerWidth - playerRect.left;\n const centeredOffsetX = offsetX - previewHalfWidth > 0 ? offsetX - previewHalfWidth : -edgeOffset;\n const maxX = playerRect.width - (commentPreviewWidth - edgeOffset);\n\n return centeredOffsetX < maxX ? centeredOffsetX : maxX;\n };\n\n const onMarkerClick = async (comment: IComment) => {\n updateSelectedConversationState({SelectedComment: comment});\n\n if (comment.annotation) {\n updateAnnotationManagerState({annotationMode: IsQuizzing ? AnnotationModes.none : AnnotationModes.display});\n }\n\n const mediaInterface = await importMediaInterface();\n mediaInterface.pause();\n mediaInterface.currentTime = comment.time;\n };\n\n const getPreviewText = (comment: IComment): string => {\n if (!comment.text && !!comment.annotation) {\n return t('conversations.annotationAttached');\n } else if (comment.isDeleted) {\n return t('conversations.commentDeletedText');\n }\n return comment.text;\n };\n\n return (\n \n {!!mediaDuration && comments && comments.length > 0 && comments.map((comment, index) => (\n ) => setPreviewState({authorName: comment.user.DisplayName, text: getPreviewText(comment), showPreview: true, previewXoffset: calculatePreviewX(e.target as Element), comment: comment})}\n onMouseLeave={() => setPreviewState({authorName: '', text: '', showPreview: false, previewXoffset: -1, comment: null})}\n >\n }\n buttonType={TscButtonType.floating}\n onClick={() => onMarkerClick(comment)}\n title=\"\"\n ariaLabel={t('conversations.commentMarkAriaLabel', {time: TimeFormatter.formatTimeForSpeech(comment.time), user: comment.user.DisplayName, commentText: comment.text})}\n onBlur={() => setPreviewState({authorName: '', text: '', showPreview: false, previewXoffset: -1, comment: null})}\n width=\"0.875rem\"\n themeName={theme}\n testId={`comment-marker-${index}`}\n />\n \n ))}\n {previewState.showPreview && (\n \n \n {previewState.authorName}\n \n \n {previewState.text}\n \n \n )}\n \n );\n};\n\nexport interface ICommentMarkersProps {\n mediaDuration: number;\n}\n\nexport interface IStateMappedProps {\n SelectedComment?: IComment;\n comments: IComment[];\n IsQuizzing: boolean;\n}\n\nconst mapStatesToProps = (\n {mediaDuration}: ICommentMarkersProps,\n {SelectedComment}: Partial,\n {comments}: Partial,\n {IsQuizzing}: Partial\n): ICommentMarkersProps & IStateMappedProps => ({mediaDuration, SelectedComment, comments, IsQuizzing});\n\nexport default withMemoizedContexts(mapStatesToProps, selectedConversationStore, commentsStore, quizDataStore)(CommentMarkersBase);\n","import React, {useEffect, useState, useRef} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport {TscStyles} from '@techsmith/tsc-cloud-style-guide';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\nimport {events} from '@techsmith/techsmith-smartplayer';\n\nconst CaptionDisplayStatusPlugin = styled.div`\n position: absolute;\n display: flex;\n align-items: center;\n top: .5rem;\n left: .5rem;\n height: 2rem;\n padding: .75rem!important;\n font-size: 1.5rem;\n background-color: rgba(0, 0, 0, 0.9);\n border-radius: ${TscStyles.border.radius.md};\n`;\n\nconst displayTimeMilliseconds = 2500;\n\nexport const CaptionDisplayStatusPluginBase: React.FC = () => {\n const {t} = useTranslation();\n const [showMessage, setShowMessage] = useState(false);\n const messageTimeoutIdRef = useRef(-1);\n\n const displayCaptionStateMessage = () => {\n messageTimeoutIdRef.current !== -1 && clearTimeout(messageTimeoutIdRef.current);\n setShowMessage(true);\n messageTimeoutIdRef.current = window.setTimeout(() => {\n setShowMessage(false);\n }, displayTimeMilliseconds);\n };\n\n const onSmartPlayerCaptionsHidden = () => {\n messageTimeoutIdRef.current !== -1 && clearTimeout(messageTimeoutIdRef.current);\n messageTimeoutIdRef.current = -1;\n setShowMessage(false);\n };\n\n const onSmartPlayerCaptionsVisible = () => {\n displayCaptionStateMessage();\n };\n\n useEffect(() => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.addEventListener(events.External.CaptionsHidden, onSmartPlayerCaptionsHidden);\n mediaInterface.addEventListener(events.External.CaptionsVisible, onSmartPlayerCaptionsVisible);\n });\n return () => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.removeEventListener(events.External.CaptionsHidden, onSmartPlayerCaptionsHidden);\n mediaInterface.removeEventListener(events.External.CaptionsVisible, onSmartPlayerCaptionsVisible);\n });\n };\n }, []);\n\n return (\n showMessage && (\n \n {t('smartPlayerPlugins.captionDisplayStatus.visibleAutoTranscribed')}\n \n )\n );\n};\n\nexport default CaptionDisplayStatusPluginBase;\n","import React from 'react';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport '@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.css';\nimport '../../static/css/modal.less';\nimport {TscStyles} from '@techsmith/tsc-cloud-style-guide';\nimport Constants, {EntryPoint} from '../../constants/Constants';\nimport ProgressLoader from '../util/ProgressLoader';\nimport {IWorkerState} from '../../model/workerState';\nimport {StyledAnchor} from '../util/StyledElements';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {mediaStore} from '../../context/mediaProvider';\nimport config from '../../service/config';\n\nconst PizzaTrackerContainerDiv = styled.div<{isEmbedView: boolean}>`\n margin: auto;\n box-sizing: border-box;\n text-align: center;\n justify-content: center;\n align-self: center;\n display: flex;\n flex-direction: column;\n background-color: black;\n padding: 3.375rem 2rem;\n ${props => props.isEmbedView ? `\n height: 100%;\n width: 100%;\n ` : ''}\n\n a {\n color: ${TscStyles.color.action.primary};\n }\n\n h2 {\n color: white;\n margin-bottom: 0.25rem;\n }\n\n h3 {\n color: ${TscStyles.color.text.lightMedium};\n font-weight: 500;\n margin-top: 0;\n }\n`;\n\nexport const PizzaTrackerBase: React.FC = ({isOwnerOrAdmin, HasEncodingError, EncodingProgress, MediaStoreWorkerState}) => {\n const {t} = useTranslation();\n\n return (\n \n {MediaStoreWorkerState.isWorking ? (\n <>\n

\n {t('FetchingMediaProgressTitle')}\n

\n

\n {t('FetchingMediaProgressSubTitle')}\n

\n \n ) : MediaStoreWorkerState.hasError || HasEncodingError ? (\n <>\n

\n {t('MediaProcessingFailedTitle')}\n

\n {isOwnerOrAdmin && (\n

\n {t('MediaProcessingFailedSubtitle')}\n {' '}\n \n {t('ContactSupport')}\n \n

\n )}\n \n ) : !MediaStoreWorkerState.isWorking && !MediaStoreWorkerState.hasError && (\n <>\n \n

\n {t('MediaBeingProcessedTitle')}\n

\n

\n {t(isOwnerOrAdmin ? 'MediaBeingProcessedSubtitleOwner' : 'MediaBeingProcessedSubtitleNonOwner')}\n

\n \n )}\n \n );\n};\n\nexport interface IPizzaTrackerProps {\n isOwnerOrAdmin: boolean;\n}\n\nexport interface IPizzaTrackerStateMappedProps {\n HasEncodingError: boolean;\n EncodingProgress: number;\n MediaStoreWorkerState: IWorkerState;\n}\n\nconst mapStatesToProps = (\n {isOwnerOrAdmin}: IPizzaTrackerProps,\n {HasEncodingError, EncodingProgress, MediaStoreWorkerState}: Partial\n): IPizzaTrackerProps & IPizzaTrackerStateMappedProps => ({isOwnerOrAdmin, HasEncodingError, EncodingProgress, MediaStoreWorkerState});\n\nexport default withMemoizedContexts(mapStatesToProps, mediaStore)(PizzaTrackerBase);\n","import React, {useEffect, useRef, useState} from 'react';\nimport styled from 'styled-components';\nimport {isMobile} from 'react-device-detect';\nimport {\n ISmartPlayerGA4Event,\n ISmartPlayerAnalyticsEvent,\n ISmartPlayerRumDataEvent,\n ISmartPlayerTimeUpdateEvent,\n events,\n log,\n mediaInterfaceConstants,\n preloadOptions\n} from '@techsmith/techsmith-smartplayer';\nimport {StringParam, useQueryParam} from 'use-query-params';\nimport SmartPlayerConstants from '../../constants/smartPlayerConstants';\nimport Analytics, {IUaEventOptions, IUAEventParams} from '../../service/analytics';\nimport config from '../../service/config';\nimport logging from '../../service/logging';\nimport MediaApi from '../../service/mediaApi';\nimport resumablePlayback from '../../service/resumablePlayback';\nimport StringUtil from '../../util/StringUtil';\nimport '@techsmith/techsmith-smartplayer/dist/techsmith-smart-player.css';\nimport '../../static/css/modal.less';\nimport Constants, {AnnotationModes, EmbedPlatforms, EntryPoint} from '../../constants/Constants';\nimport CommentMarkers from '../conversation/CommentMarkers';\nimport MarketingEmbedPlugin from '../marketing/MarketingEmbedPlugin';\nimport {showEmbeddedMarketing} from '../../util/MarketingHelper';\nimport ReactDOM from 'react-dom';\nimport Annotation from '../conversation/Annotation';\nimport {TscThemeName} from '@techsmith/tsc-cloud-style-guide';\nimport {annotationManagerStore, updateAnnotationManagerState} from '../../context/annotationManagerProvider';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {IComment} from '../../model/commentModel';\nimport {selectedConversationStore, updateSelectedConversationState} from '../../context/selectedConversationProvider';\nimport {updateDisableConversationState} from '../../context/disableConversationProvider';\nimport TimeFormatter from '../../util/TimeFormatter';\nimport {useUserProfileData} from '../../context/userProfileProvider';\nimport {commentsStore} from '../../context/commentsProvider';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {updateQuizData} from '../../context/quizDataProvider';\nimport {mediaStore, updateMediaStateFromServer} from '../../context/mediaProvider';\nimport cssConstants from '../../constants/cssConstants';\nimport ReactionsPlugin from '../reactions/ReactionsPlugin';\nimport ReactionsPlaybackPlugin from '../reactions/ReactionsPlaybackPlugin';\nimport {EnvironmentType} from '../../model/appModel';\nimport CaptionDisplayStatusPlugin from './CaptionDisplayStatusPlugin';\nimport {CaptioningTypes, ITranscript} from '../../model/captionModels';\nimport {IMediaChapters} from '../../model/mediaDetails';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\nimport {generateTranscriptFromCaptions} from '../../util/TranscriptGenerator';\nimport {transcriptStore, updateTranscriptDataState} from '../../context/transcriptProvider';\n\nconst smartPlayerApp = document.createElement('div');\nsmartPlayerApp.id = 'tscMediaContent';\nsmartPlayerApp.style.margin = 'auto';\nlet started = false;\nlet lastSavedTime = 0;\nconst timeBuffer = 3;\n\nconst SmartPlayerWrapper = styled.div<{isEmbedded: boolean}>`\n display: flex;\n justify-content: center;\n width: ${props => props.isEmbedded ? '100vw' : '100%'};\n height: ${props => props.isEmbedded ? '100vh' : '100%'};\n min-height: 0; // Safe help for smartplayer to not blowout the media-base container grid\n\n .annotation-wrapper {\n height: 100%;\n overflow: hidden;\n }\n\n .reactions-playback-wrapper {\n height: 100%;\n overflow: hidden;\n }\n`;\n\nconst SmartPlayerContainerDiv = styled.div<{annotationMode: AnnotationModes; isEmbedView: boolean; isImage: boolean; isYouTube: boolean; isQuizUserSelfIdentifyOpen: boolean}>`\n width: 100%;\n\n .tsc-smartplayer {\n color: #fff;\n\n .video-wrapper {\n ${props => props.isQuizUserSelfIdentifyOpen ? `width: ${cssConstants.smartPlayerQuizSetupWidth}` : ''};\n ${props => props.isQuizUserSelfIdentifyOpen ? `height: ${cssConstants.smartPlayerQuizSetupHeight}` : ''};\n }\n\n .display-image-quiz-button, .question-set-container {\n position: absolute !important;\n }\n\n video {\n background-color: #000;\n color: #fff;\n }\n\n /* this is needed so the SP controls dont beat out the media tabs on narrow-tall media in */\n /* iOS safari which didn't seem to be respecting calculated height properly, before final calculations */\n /* i saw evidence of this behavior in chrome as well, so set for all mobile just to be sure */\n ${isMobile ? `.video-controls-container {\n z-index: auto !important;\n\n .progress-bar-control {\n z-index: auto !important;\n }\n }` : ''}\n\n #controls, .video-controls-container {\n visibility: ${props => props.annotationMode !== AnnotationModes.edit ? 'visible' : 'hidden'};\n }\n\n ${props => !props.isEmbedView && !props.isImage ? `min-width: ${cssConstants.smartPlayerMinWidth};` : ''} /* smartplayer itself needs min width to show usable control-bar for non-images, we should not need to use smartPlayerMinWidth elsewhere */\n }\n`;\n\nexport const SmartPlayerBase: React.FC = ({isEmbedded, embedPlatform, onDisplayModeChange, onMouseEnter, onMouseLeave, annotationMode, SelectedComment, comments, ContentUrl, Hash, IsImage, IsVideo, IsYouTube, Title, Description, HlsTokenInjectionProxyContentUrl, PosterUrl, SpriteUrl, AllowViewerToFastForwardVideo, XmpUrl, AudioDescriptionUrl, QuizId, Rotate, PreviewThumbnailsUri, PreviewThumbnailsInterval, PreviewThumbnailsMaxColumns, PreviewThumbnailsThumbHeight, PreviewThumbnailsThumbWidth, CaptioningType, Chapters, transcript}) => {\n const theme = useTscTheme();\n const [smartPlayerTimeQueryString] = useQueryParam(Constants.queryParams.smartPlayerStartTime, StringParam);\n const [smartPlayerTimeQueryStringUppercase] = useQueryParam(Constants.queryParams.smartPlayerStartTimeUppercase, StringParam);\n const [commentId] = useQueryParam(Constants.queryParams.commentId, StringParam);\n const smartPlayerContainer = useRef(null);\n const [commentMarkerDomElement, setCommentMarkerDomElement] = useState(null);\n const [annotationDomElement, setAnnotationDomElement] = useState(null);\n const [reactionsDomElement, setReactionsDomElement] = useState(null);\n const [reactionsPlaybackDomElement, setReactionsPlaybackDomElement] = useState(null);\n const [marketingMediaDomElement, setMarketingMediaDomElement] = useState(null);\n const [captionDisplayStatusDomElement, setCaptionDisplayStatusDomElement] = useState(null);\n const [mediaDuration, setMediaDuration] = useState(0);\n const [showMarketingPlugin, setShowMarketingPlugin] = useState(true);\n const [userHasHiddenMarketing, setUserHasHiddenMarketing] = useState(false);\n const [quizUserSelfIdentifyIsOpen, setQuizUserSelfIdentifyIsOpen] = useState(false);\n const [smartPlayerMediaError, setSmartPlayerMediaError] = useState(false);\n const {isWorking: userProfileIsLoading, userProfile} = useUserProfileData();\n\n useEffect(() => {\n void importMediaInterface().then(mediaInterface => {\n console.info(`%cUsing TechSmith Smart Player version: ${mediaInterface.version}`, 'color:blue; font-size:18px');\n });\n }, []);\n\n const conditionallyConfigurePlaybackResume = async () => {\n if (smartPlayerTimeQueryStringUppercase || smartPlayerTimeQueryString || commentId) {\n return;\n }\n\n const mediaInterface = await importMediaInterface();\n const savedTime = resumablePlayback.getProgress(config.user.TechSmithId, Hash);\n const isTimeSafeToSeek = savedTime + timeBuffer === mediaInterface.getSafeSeekTime(savedTime + timeBuffer);\n\n if (isTimeSafeToSeek) {\n mediaInterface.currentTime = savedTime;\n }\n };\n\n const recordGAViewEvent = () => {\n let playerOrigin: string;\n if (!window.document.referrer) {\n playerOrigin = SmartPlayerConstants.analytics.viewAction.FromUnknown;\n } else if (RegExp(config.environmentData.GoogleAnalyticsDomain).exec(window.document.referrer) === null) {\n playerOrigin = SmartPlayerConstants.analytics.viewAction.FromEmbed;\n } else {\n playerOrigin = SmartPlayerConstants.analytics.viewAction.FromViewPage;\n }\n\n /* eslint-disable camelcase */\n const ga4Event: IUaEventOptions = {\n eventName: `${Constants.analytics.SmartPlayerEventsPrefix}${SmartPlayerConstants.analytics.viewEvent}`,\n eventParams: {\n player_origin: playerOrigin,\n media_hash: Hash\n } as IUAEventParams\n };\n /* eslint-enable */\n\n Analytics.gaEvent(ga4Event);\n };\n\n const videoStartEventListener = async () => {\n const mediaInterface = await importMediaInterface();\n recordGAViewEvent();\n void MediaApi.incrementView(Hash); // intentionally not-awaited\n if (!IsYouTube) {\n mediaInterface.controls = mediaInterfaceConstants.controls.autohide;\n }\n mediaInterface.removeEventListener(events.External.VideoPlay, videoStartEventListener);\n };\n\n const mediaReadyEventListener = () => {\n void (IsImage && MediaApi.incrementView(Hash));\n updateDisableConversationState({isAnnotatingDisabled: false, isCommentingDisabled: false});\n };\n\n const displayModeChangedEventListener = (displayMode: string) => {\n onDisplayModeChange && onDisplayModeChange(displayMode);\n };\n\n const addEventListeners = async () => {\n if (log && log.addEventListener) {\n log.addEventListener('EXCEPTION', e => {\n logging.warn('Encountered exception in Smart Player', e);\n });\n }\n\n const mediaInterface = await importMediaInterface();\n\n mediaInterface.addEventListener(events.External.ShowStartQuizPrompt, () => {\n setQuizUserSelfIdentifyIsOpen(true);\n });\n\n mediaInterface.addEventListener(events.External.HideStartQuizPrompt, () => {\n setQuizUserSelfIdentifyIsOpen(false);\n });\n\n mediaInterface.addEventListener(events.External.QuizVisible, () => {\n updateQuizData({IsQuizzing: true});\n if (!IsYouTube) {\n mediaInterface.controls = mediaInterfaceConstants.controls.true;\n }\n });\n\n mediaInterface.addEventListener(events.External.QuizHidden, () => {\n updateQuizData({IsQuizzing: false});\n if (!IsYouTube) {\n mediaInterface.controls = mediaInterfaceConstants.controls.autohide;\n }\n });\n\n mediaInterface.addEventListener(events.ExternalVideo.VideoLoadedData, conditionallyConfigurePlaybackResume);\n\n mediaInterface.addEventListener(events.External.VideoEnd, () => {\n updateDisableConversationState({isAnnotatingDisabled: true});\n });\n\n mediaInterface.addEventListener(events.External.VideoReplay, () => {\n updateDisableConversationState({isAnnotatingDisabled: false});\n });\n\n mediaInterface.addEventListener(events.ExternalVideo.VideoLoadedMetadata, () => {\n setMediaDuration(mediaInterface.duration);\n });\n\n mediaInterface.addEventListener(events.External.CaptionsReady, () => {\n if (!transcript) {\n const mediaTranscript = generateTranscriptFromCaptions(mediaInterface.captions?.captions);\n updateTranscriptDataState({transcript: mediaTranscript});\n }\n });\n\n mediaInterface.addEventListener(events.External.MediaError, () => {\n Analytics.aiEvent({\n name: 'SmartPlayerEvent',\n label: 'SmartPlayerMediaError',\n value: Hash\n });\n setSmartPlayerMediaError(true);\n });\n\n mediaInterface.addEventListener(events.External.PlayerControlsHidden, () => {\n setShowMarketingPlugin(false);\n });\n\n mediaInterface.addEventListener(events.External.PlayerControlsVisible, () => {\n setShowMarketingPlugin(true);\n });\n\n mediaInterface.addEventListener(events.ExternalVideo.VideoTimeUpdate, () => {\n const roundedTime = Math.floor(mediaInterface.currentTime);\n\n if (roundedTime !== lastSavedTime) {\n resumablePlayback.setProgress(config.user.TechSmithId, Hash, roundedTime.toString());\n lastSavedTime = roundedTime;\n }\n });\n\n mediaInterface.addEventListener(events.External.VideoPlay, videoStartEventListener);\n mediaInterface.addEventListener(events.External.MediaReady, mediaReadyEventListener);\n\n mediaInterface.addEventListener(events.External.DisplayModeChanged, displayModeChangedEventListener);\n\n mediaInterface.addEventListener(events.External.GoogleAnalytics4Event, e => {\n const smartPlayerEvent = `${Constants.analytics.SmartPlayerEventsPrefix}${e.eventName}`;\n\n /* eslint-disable camelcase */\n const ga4Event: IUaEventOptions = {\n eventName: smartPlayerEvent,\n eventParams: {\n media_hash: Hash\n } as IUAEventParams\n };\n /* eslint-enable */\n\n if (e.eventParams) {\n Object.keys(e.eventParams).forEach(key => {\n ga4Event.eventParams[key] = e.eventParams[key];\n });\n }\n\n Analytics.gaEvent(ga4Event);\n });\n\n mediaInterface.addEventListener(events.External.AnalyticsEvent, e => {\n // the events coming out of SP aren't reliable enough not to sanitize, what should be all strings (and number for value)\n // are coming out booleans, numbers, undefined or otherwise unpredictable and causing our code to throw errors without this\n const sanitizedEvent: ISmartPlayerAnalyticsEvent = {\n category: JSON.stringify(e.category),\n action: JSON.stringify(e.action),\n label: JSON.stringify(e.label),\n value: e.value\n };\n\n Analytics.aiEvent({\n name: 'SmartPlayerEvent',\n label: sanitizedEvent.action,\n value: sanitizedEvent.label\n });\n });\n\n mediaInterface.addEventListener(events.External.PlayerRumData, e => {\n const categorySuffix = e.categorySuffix || '';\n if (e?.rum) {\n e.rum.forEach(rumItem => {\n Analytics.aiMeasurement({\n name: `SmartPlayerTiming_PresentationWebClient${categorySuffix}`,\n label: rumItem.name,\n value: rumItem.time\n });\n });\n }\n });\n };\n\n const configure = async () => {\n const mediaInterface = await importMediaInterface();\n // the .replace is for older youtube content urls that may be non-secure protocol\n mediaInterface.addSrc(ContentUrl.replace(/http:\\/\\//i, 'https://'));\n if (HlsTokenInjectionProxyContentUrl) {\n mediaInterface.addSrc(HlsTokenInjectionProxyContentUrl);\n }\n mediaInterface.disableContinueWithoutQuestions = true;\n mediaInterface.posterSrc = PosterUrl;\n mediaInterface.tocSrc = SpriteUrl;\n mediaInterface.rememberUserInfo = true;\n\n if (!isEmbedded && config.featureSwitches.IsScreencast) {\n mediaInterface.enableTheaterMode = true;\n }\n\n mediaInterface.allowFastForward = AllowViewerToFastForwardVideo;\n\n if (!StringUtil.isNullOrWhiteSpace(XmpUrl)) {\n mediaInterface.xmpSrc = XmpUrl;\n }\n\n if (!StringUtil.isNullOrWhiteSpace(AudioDescriptionUrl)) {\n mediaInterface.audioDescriptionMediaSrc = AudioDescriptionUrl;\n }\n\n if (embedPlatform === EmbedPlatforms.slack) {\n mediaInterface.disablePictureInPicture = true;\n }\n\n if (!isEmbedded || embedPlatform === EmbedPlatforms.slack) {\n mediaInterface.showAcknowledgementLink = false;\n }\n\n mediaInterface.showADACompliantCaptions = !!config.featureSwitches.ForceADACompliantCaptionStyle;\n\n if (config.environmentData.Environment !== EnvironmentType.live) {\n mediaInterface.quizServiceBaseUrl = config.environmentData.QuizzingServiceUrl;\n mediaInterface.resultsServiceBaseUrl = config.environmentData.ResultsRootUrl;\n }\n\n mediaInterface.quizCreateInstanceUrl = config.environmentData.QuizzingServiceCreateInstanceUrl;\n\n if (!StringUtil.isNullOrWhiteSpace(QuizId)) {\n mediaInterface.quizId = QuizId;\n }\n\n if (Rotate) {\n mediaInterface.rotation = Rotate;\n }\n\n if (IsYouTube) {\n mediaInterface.controls = SmartPlayerConstants.youtubeControls;\n } else {\n if (PreviewThumbnailsUri) {\n mediaInterface.videoThumbnailsSrc = PreviewThumbnailsUri;\n mediaInterface.videoThumbnailWidth = PreviewThumbnailsThumbWidth;\n mediaInterface.videoThumbnailHeight = PreviewThumbnailsThumbHeight;\n mediaInterface.videoThumbnailInterval = PreviewThumbnailsInterval;\n mediaInterface.videoThumbnailColumns = PreviewThumbnailsMaxColumns;\n }\n\n mediaInterface.useLargerProgressBar = false;\n // the watch page must 'disable' the preload play button overlay for the sake of conversation interaction (also force controls on)\n if (config.entryPoint === EntryPoint.watch) {\n mediaInterface.preload = preloadOptions.metadata;\n mediaInterface.controls = mediaInterfaceConstants.controls.true;\n }\n\n if (isEmbedded) {\n mediaInterface.customFullScreenDomElement = document.getElementsByClassName(Constants.mainElementClassName)[0];\n }\n }\n\n if (IsVideo && Chapters || !StringUtil.isNullOrWhiteSpace(Description)) {\n if (Chapters) {\n const chaptersString = Chapters.chapters.map(chapter => `${TimeFormatter.formatTime(chapter.timeInMilliseconds / 1000)} ${chapter.label}`).join('\\n');\n mediaInterface.createTocFromDescription(encodeURIComponent(chaptersString));\n } else {\n mediaInterface.createTocFromDescription(encodeURIComponent(Description));\n }\n }\n\n mediaInterface.background = IsImage ? theme === TscThemeName.dawn ? SmartPlayerConstants.imageBackgroundColorDawn : SmartPlayerConstants.imageBackgroundColorDusk : SmartPlayerConstants.videoBackgroundColor;\n\n mediaInterface.contextMenu = false;\n\n // need this or camtasia produced recordings that set unicodeenabled=true in xmp will break SAS tokens as they are set up in smartplayer (JMD: 2019-08)\n mediaInterface.ignoreXmpControllerParameters = ['unicodeenabled', 'autohide', 'backgroundcolor'];\n\n await setUserInfo();\n\n mediaInterface.userSignedIn = config.user.IsSignedIn && (config.watchConfig?.isOwner || config.embedConfig?.isOwner || !config.featureSwitches.DisableSmartPlayerAccessToken);\n };\n\n const setUserInfo = async () => {\n const mediaInterface = await importMediaInterface();\n if (userProfile) {\n mediaInterface.userInfo = {\n firstName: userProfile.firstName || '',\n lastName: userProfile.lastName || '',\n email: config.user.EmailAddress || ''\n };\n }\n };\n\n const run = async () => {\n const mediaInterface = await importMediaInterface();\n if (!started) {\n started = true;\n await addEventListeners();\n mediaInterface.mediaTitle = Title;\n mediaInterface.run('tscMediaContent');\n\n if (mediaInterface.controls !== SmartPlayerConstants.youtubeControls) {\n if (config.featureSwitches.EnableReactions && IsVideo) {\n const reactionsPluginInfo = await mediaInterface.registerPlugin('techsmithReactions', Constants.pluginElements.progressBar);\n reactionsPluginInfo.pluginContainerElement.classList.add('reactions-track');\n setReactionsDomElement(reactionsPluginInfo.pluginContainerElement);\n\n const reactionsPlaybackPluginInfo = await mediaInterface.registerPlugin('techsmithReactionsPlayback', Constants.pluginElements.player);\n reactionsPlaybackPluginInfo.pluginContainerElement.classList.add('reactions-playback-wrapper');\n setReactionsPlaybackDomElement(reactionsPlaybackPluginInfo.pluginContainerElement);\n }\n\n const commentMarkerPluginInfo = IsVideo && await mediaInterface.registerPlugin('knowmiaCommentMarkers', Constants.pluginElements.progressBar);\n const annotationPluginInfo = await mediaInterface.registerPlugin('knowmiaAnnotation', Constants.pluginElements.media);\n IsVideo && commentMarkerPluginInfo.pluginContainerElement.classList.add('comment-track');\n annotationPluginInfo.pluginContainerElement.classList.add('annotation-wrapper');\n setCommentMarkerDomElement(commentMarkerPluginInfo.pluginContainerElement);\n setAnnotationDomElement(annotationPluginInfo.pluginContainerElement);\n\n if (isEmbedded && showEmbeddedMarketing()) {\n const marketingPluginInfo = await mediaInterface.registerPlugin('knowmiaSnagitMarketing', Constants.pluginElements.player);\n setMarketingMediaDomElement(marketingPluginInfo.pluginContainerElement);\n }\n\n const captionDisplayStatusPluginInfo = IsVideo && await mediaInterface.registerPlugin('TechSmithCaptionDisplayStatus', Constants.pluginElements.player);\n IsVideo && captionDisplayStatusPluginInfo.pluginContainerElement.classList.add('caption-display-status');\n setCaptionDisplayStatusDomElement(captionDisplayStatusPluginInfo.pluginContainerElement);\n }\n }\n };\n\n const appendSmartPlayerApp = () => {\n if (smartPlayerContainer.current && !smartPlayerContainer.current.contains(smartPlayerApp)) {\n smartPlayerContainer.current.appendChild(smartPlayerApp);\n }\n };\n\n const onMarketingPluginClose = (e: React.MouseEvent) => {\n e.preventDefault();\n setUserHasHiddenMarketing(true);\n };\n\n const displayMarketingOverMedia = (): boolean => showMarketingPlugin && !userHasHiddenMarketing && !!marketingMediaDomElement;\n\n useEffect(() => {\n if (!userProfileIsLoading) {\n void setUserInfo();\n }\n }, [userProfileIsLoading]);\n\n useEffect(() => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.setTheme(theme);\n });\n }, [theme]);\n\n useEffect(() => {\n const handleHideAnnotationsAndSelectComment = async () => {\n const mediaInterface = await importMediaInterface();\n const roundedTime = Math.floor(mediaInterface.currentTime);\n const commentToSelect = comments?.find(comment => Math.floor(comment.time) === roundedTime);\n\n if (Math.floor(SelectedComment?.time) !== Math.floor(commentToSelect?.time) && commentToSelect) {\n updateSelectedConversationState({SelectedComment: commentToSelect});\n }\n\n if (annotationMode === AnnotationModes.display) {\n const timeDifference = TimeFormatter.getRoundedTime(Math.abs(mediaInterface.currentTime - SelectedComment?.time));\n const timeMismatch = timeDifference > Constants.annotation.timeTolerance;\n\n if (timeMismatch) {\n updateAnnotationManagerState({annotationMode: AnnotationModes.none});\n }\n }\n };\n\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.addEventListener(events.ExternalVideo.VideoTimeUpdate, handleHideAnnotationsAndSelectComment);\n });\n\n return () => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.removeEventListener(events.ExternalVideo.VideoTimeUpdate, handleHideAnnotationsAndSelectComment);\n });\n };\n }, [SelectedComment, annotationMode, comments]);\n\n useEffect(() => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.doubleClickControlEnabled = annotationMode !== AnnotationModes.edit;\n });\n }, [annotationMode]);\n\n useEffect(() => {\n if (smartPlayerMediaError) {\n updateMediaStateFromServer();\n setSmartPlayerMediaError(false);\n }\n }, [smartPlayerMediaError]);\n\n useEffect(() => {\n if (ContentUrl) {\n void importMediaInterface().then(async mediaInterface => {\n if (started) {\n mediaInterface.destroy();\n started = false;\n }\n await configure();\n appendSmartPlayerApp();\n await run();\n });\n }\n }, [ContentUrl]);\n\n return (\n \n \n {commentMarkerDomElement && ReactDOM.createPortal(, commentMarkerDomElement as Element)}\n {reactionsDomElement && ReactDOM.createPortal(, reactionsDomElement as Element)}\n {reactionsPlaybackDomElement && ReactDOM.createPortal(, reactionsPlaybackDomElement as Element)}\n {annotationDomElement && ReactDOM.createPortal(, annotationDomElement as Element)}\n {CaptioningType === CaptioningTypes.AutoTranscribed && captionDisplayStatusDomElement && ReactDOM.createPortal(, captionDisplayStatusDomElement as Element)}\n {displayMarketingOverMedia() && ReactDOM.createPortal(\n , marketingMediaDomElement as Element)}\n \n );\n};\n\nexport interface ISmartPlayerProps {\n isEmbedded: boolean;\n embedPlatform?: EmbedPlatforms;\n onDisplayModeChange?: (displayMode: string) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport interface IStateMappedProps {\n annotationMode: AnnotationModes;\n SelectedComment: IComment;\n comments: IComment[];\n ContentUrl: string;\n Hash: string;\n IsImage: boolean;\n IsVideo: boolean;\n IsYouTube: boolean;\n Title: string;\n Description: string;\n HlsTokenInjectionProxyContentUrl: string;\n PosterUrl: string;\n SpriteUrl: string;\n AllowViewerToFastForwardVideo: boolean;\n XmpUrl: string;\n AudioDescriptionUrl: string;\n QuizId: string;\n Rotate: number;\n PreviewThumbnailsUri: string;\n PreviewThumbnailsInterval: number;\n PreviewThumbnailsMaxColumns: number;\n PreviewThumbnailsThumbHeight: number;\n PreviewThumbnailsThumbWidth: number;\n CaptioningType: CaptioningTypes;\n Chapters?: IMediaChapters;\n transcript: ITranscript;\n}\n\nconst mapStatesToProps = (\n {isEmbedded, embedPlatform, onDisplayModeChange, onMouseEnter, onMouseLeave}: ISmartPlayerProps,\n {annotationMode}: Partial,\n {SelectedComment}: Partial,\n {comments}: Partial,\n {ContentUrl, Hash, IsImage, IsVideo, IsYouTube, Title, Description, HlsTokenInjectionProxyContentUrl, PosterUrl, SpriteUrl, AllowViewerToFastForwardVideo, XmpUrl, AudioDescriptionUrl, QuizId, Rotate, PreviewThumbnailsUri, PreviewThumbnailsInterval, PreviewThumbnailsMaxColumns, PreviewThumbnailsThumbHeight, PreviewThumbnailsThumbWidth, CaptioningType, Chapters}: Partial,\n {transcript}: Partial\n): IStateMappedProps & ISmartPlayerProps => ({isEmbedded, embedPlatform, onDisplayModeChange, onMouseEnter, onMouseLeave, annotationMode, SelectedComment, comments, ContentUrl, Hash, IsImage, IsVideo, IsYouTube, Title, Description, HlsTokenInjectionProxyContentUrl, PosterUrl, SpriteUrl, AllowViewerToFastForwardVideo, XmpUrl, AudioDescriptionUrl, QuizId, Rotate, PreviewThumbnailsUri, PreviewThumbnailsInterval, PreviewThumbnailsMaxColumns, PreviewThumbnailsThumbHeight, PreviewThumbnailsThumbWidth, CaptioningType, Chapters, transcript});\n\nexport default withMemoizedContexts(mapStatesToProps, annotationManagerStore, selectedConversationStore, commentsStore, mediaStore, transcriptStore)(SmartPlayerBase);\n","import React from 'react';\nimport RectPlaceholderSvg from '../../static/svg/rectPlaceholder.svg';\nimport styled from 'styled-components';\nimport cssConstants from '../../constants/cssConstants';\n\nexport const SmartPlayerPlaceholder = styled.div`\n margin: 1.25rem 1.25rem 0px;\n text-align: center;\n\n svg {\n margin: auto;\n max-width: ${cssConstants.contentWidth};\n max-height: calc(100vh - 8.5rem);\n }\n`;\n\nconst VideoPlaceholder: React.FC = () => (\n \n \n \n);\n\nexport default VideoPlaceholder;","import React, {useEffect} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {ControlButton, Glyphs, TscButtonType, TscThemeNames, TscThemeName, TscStyles} from '@techsmith/tsc-cloud-style-guide';\nimport SnagitLogoSvg from '../../static/svg/SnagitLogo24x24.svg';\nimport CamtasiaLogoSvg from '../../static/svg/CamtasiaLogo.svg';\nimport CssUtil from '../../util/CssUtil';\nimport cssConstants from '../../constants/cssConstants';\nimport Constants from '../../constants/Constants';\nimport Analytics, {IUaEventOptions, IUAEventParams} from '../../service/analytics';\nimport {mediaStore} from '../../context/mediaProvider';\nimport {\n showEmbeddedCamtasiaMarketing,\n showEmbeddedCaptureMarketing,\n showEmbeddedSnagitMarketing,\n showEmbeddedWebUploadMarketing\n} from '../../util/MarketingHelper';\n\nconst backgroundColorOpacity = 0.95;\n\nconst MarketingEmbedPlugin = styled.div<{theme: TscThemeNames}>`\n position: absolute;\n top: 1rem;\n left: 1rem;\n display: flex;\n border-radius: ${TscStyles.border.radius.md};\n -webkit-box-align: center;\n align-items: center;\n height: 2rem;\n font-family: ${TscStyles.font.family.primary};\n background-color: ${props => props.theme === TscThemeName.dusk ? CssUtil.toRgba(TscStyles.color.ui.dusk.medium, backgroundColorOpacity) : CssUtil.toRgba(TscStyles.color.ui.dawn.light, backgroundColorOpacity)};\n box-shadow: 0 3px 6px rgba(0,0,0,.15), 0 0 2px rgba(0,0,0,.1);\n pointer-events: auto;\n\n @media screen and (min-width: ${cssConstants.smartPlayerMinWidth}) {\n height: 2.5rem;\n border-radius: ${TscStyles.border.radius.lg};\n }\n`;\n\nconst CloseButton = styled.span`\n margin: 0;\n\n @media screen and (min-width: ${cssConstants.smartPlayerMinWidth}) {\n margin: 0 .25rem 0 0;\n }\n`;\n\nconst IconSvg = styled.span`\n display: flex;\n margin: 0.5rem;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n @media screen and (min-width: ${cssConstants.smartPlayerMinWidth}) {\n margin: .5rem .5rem .5rem 0.75rem;\n\n svg {\n height: 1.5rem;\n width: 1.5rem;\n }\n }\n`;\n\nconst IconText = styled.button<{theme: TscThemeNames; displayCloseButton: boolean; linked: boolean}>`\n display: inline-block;\n margin-right: ${props => props.displayCloseButton ? '0.25rem' : '.5rem'};\n padding: 0;\n background: none;\n font-weight: 600;\n font-size: 0.875rem;\n font-family: Figtree, sans-serif;\n color: ${props => props.theme === TscThemeName.dusk ? TscStyles.color.ui.dawn.light : TscStyles.color.ui.dusk.medium};\n cursor: ${props => props.linked ? 'pointer' : 'auto'};\n border: none;\n\n @media screen and (min-width: ${cssConstants.smartPlayerMinWidth}) {\n font-size: 1rem;\n margin-right: ${props => props.displayCloseButton ? '0.25rem' : '1rem'};\n }\n`;\n\nexport const MarketingEmbedPluginBase: React.FC = ({canClose, linkToMoreInfo, onClose, Hash}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const isSnagitPlugin = showEmbeddedSnagitMarketing();\n const isCamtasiaPlugin = showEmbeddedCamtasiaMarketing();\n const isCapturePlugin = showEmbeddedCaptureMarketing();\n const isWebUploadsPlugin = showEmbeddedWebUploadMarketing();\n\n const recordGAEmbeddedBannerButtonClickedEvent = () => {\n const eventName = isSnagitPlugin ? Constants.analytics.SnagitEmbeddedButtonClicked : isCamtasiaPlugin ? Constants.analytics.CamtasiaEmbeddedButtonClicked : isCapturePlugin ? Constants.analytics.CaptureEmbeddedButtonClicked : isWebUploadsPlugin ? Constants.analytics.WebUploadEmbeddedButtonClicked : null;\n /* eslint-disable camelcase */\n const ga4Event: IUaEventOptions = {\n eventName: eventName,\n eventParams: {\n banner_variant: '1',\n media_hash: Hash\n } as IUAEventParams\n };\n /* eslint-enable */\n\n Analytics.gaEvent(ga4Event);\n };\n\n const recordGABannerDisplayedEvent = () => {\n const eventName = isSnagitPlugin ? Constants.analytics.SnagitEmbeddedBannerDisplayed : isCamtasiaPlugin ? Constants.analytics.CamtasiaEmbeddedBannerDisplayed : isCapturePlugin ? Constants.analytics.CaptureEmbeddedBannerDisplayed : isWebUploadsPlugin ? Constants.analytics.WebUploadEmbeddedBannerDisplayed : null;\n /* eslint-disable camelcase */\n const ga4Event: IUaEventOptions = {\n eventName: eventName,\n eventParams: {\n banner_variant: '1',\n media_hash: Hash\n } as IUAEventParams\n };\n /* eslint-enable */\n\n Analytics.gaEvent(ga4Event);\n };\n\n useEffect(() => {\n recordGABannerDisplayedEvent();\n }, []);\n\n const navigateToMarketingPage = () => {\n window.open(\n (isSnagitPlugin || isCapturePlugin || isWebUploadsPlugin) ? Constants.navigation.banners.screenCapture : Constants.navigation.banners.camtasiaProduct,\n '_blank'\n );\n recordGAEmbeddedBannerButtonClickedEvent();\n };\n\n return (\n \n \n {(isSnagitPlugin || isCapturePlugin || isWebUploadsPlugin) && }\n {isCamtasiaPlugin && }\n \n \n {isSnagitPlugin && t('marketing.snagit.embedText')}\n {isCamtasiaPlugin && t('marketing.camtasia.embedText')}\n {isCapturePlugin && t('marketing.capture.embedText')}\n {isWebUploadsPlugin && t('marketing.webupload.embedText')}\n \n {canClose && (\n \n }\n buttonType={TscButtonType.tertiary}\n themeName={theme}\n title={t('marketing.closeEmbeddedMarketingPaneAccessibleLabel')}\n testId=\"hide-media-tabs-button\"\n ariaLabel={t('marketing.closeEmbeddedMarketingPaneAccessibleLabel')}\n onClick={onClose}\n />\n \n ) }\n \n );\n};\n\nexport interface IStateMappedProps {\n canClose: boolean;\n linkToMoreInfo: boolean;\n onClose: (event: React.MouseEvent) => void;\n Hash: string;\n}\n\nconst mapStatesToProps = (\n {canClose, linkToMoreInfo, onClose}: Partial,\n {Hash}: Partial\n): IStateMappedProps => ({canClose, linkToMoreInfo, onClose, Hash});\n\nexport default withMemoizedContexts(mapStatesToProps, mediaStore)(MarketingEmbedPluginBase);\n","import React, {memo, useState} from 'react';\nimport Constants from '../../constants/Constants';\nimport {useTranslation} from 'react-i18next';\nimport {TextInput, ControlButton} from '@techsmith/tsc-cloud-style-guide';\nimport config from '../../service/config';\nimport SelfIdentifyBadge from '../../static/svg/SelfIdentifyBadge.svg';\nimport styled from 'styled-components';\nimport {StyledAnchor, StyledWarning} from '../util/StyledElements';\nimport '../../static/css/modal.less';\nimport selfIdentifyservice from '../../service/selfIdentifyservice';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {BasicModalPortal} from '../util/ModalPortalHelper';\n\nconst FormBody = styled.div`\n justify-content: center;\n align-items: center;\n display: flex;\n flex-direction: column;\n`;\n\nconst TitleWrapper = styled.div<{isEmbedded: boolean}>`\n font-weight: ${props => props.isEmbedded ? '600' : '400'};\n font-size: 1.2rem;\n`;\n\nconst InlineAnchorWrapper = styled.div`\n a {\n padding-left: 0.25rem;\n }\n`;\n\nconst InputWrapper = styled.div`\n width: 100%;\n display: flex;\n margin: 0.5rem 0;\n\n .self-identify-submit-button {\n margin-left: .25rem;\n }\n`;\n\nexport const SelfIdentifyModalBase: React.FC = ({showTosMessage, showSignInMessage, isEmbedded, onClose}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const [guestName, setGuestName] = useState('');\n const [loadingState, setLoadingState] = useState({isWorking: false, hasError: false});\n\n const submit = async (): Promise => {\n try {\n setLoadingState({isWorking: true, hasError: false});\n await selfIdentifyservice.setSelfIdentifiedUser(guestName);\n setLoadingState({isWorking: false, hasError: false});\n onClose();\n } catch {\n setLoadingState({isWorking: false, hasError: true});\n }\n };\n\n const inputErrorText = guestName.length > Constants.maxSelfIdentifyNameLength ? t('selfIdentify.invalidDisplayNameLength', {0: Constants.maxSelfIdentifyNameLength}) : '';\n\n return (\n \n
\n {!isEmbedded && }\n \n \n {t('selfIdentify.badgeText')}\n \n {\n showTosMessage && (\n \n {t('selfIdentify.tos')}\n \n {t('selfIdentify.tosLink')}\n \n \n )\n }\n {loadingState.hasError && (\n \n {t('general.errorText')}\n \n )}\n \n ) => setGuestName(e.target.value)}\n onEscape={() => setGuestName('')}\n onEnter={submit}\n themeName={theme}\n autoFocus={true}\n ariaLabel={t('selfIdentify.badgeText')}\n testId=\"self-identify-input\"\n />\n \n \n {\n showSignInMessage && (\n \n {t('selfIdentify.signin')}\n \n {t('selfIdentify.signinLink')}\n \n \n )\n }\n \n
\n \n );\n};\n\nexport interface ISelfIdentifyModalProps {\n showTosMessage: boolean;\n showSignInMessage: boolean;\n isEmbedded: boolean;\n onClose(): void;\n}\n\nexport default memo(SelfIdentifyModalBase);\n","import {IEmojiReactionData, IReactionGroup} from '../../model/emojiReactionsModel';\n\nconst groupRangeLengthSeconds = 0;\n\nconst createReactionGroup = (reaction: IEmojiReactionData, groupRangeInSeconds: number): IReactionGroup => (\n {\n startTime: reaction.Time,\n endTime: reaction.Time + groupRangeInSeconds,\n reactions: [reaction]\n } as IReactionGroup);\n\nconst getReactionGroupAtTime = (groupedReactions: IReactionGroup[], time: number) => {\n if (groupRangeLengthSeconds === 0) {\n return groupedReactions.find(reactionGroup => time >= reactionGroup.startTime && time <= reactionGroup.endTime);\n }\n return groupedReactions.find(reactionGroup => time >= reactionGroup.startTime && time < reactionGroup.endTime);\n};\n\nconst groupReactionsByTime = (reactions: IEmojiReactionData[]): IReactionGroup[] => {\n const groupedReactions: IReactionGroup[] = [];\n reactions.forEach(reaction => {\n const existingGroup = getReactionGroupAtTime(groupedReactions, reaction.Time);\n if (existingGroup) {\n existingGroup.reactions.push(reaction);\n } else {\n groupedReactions.push(createReactionGroup(reaction, groupRangeLengthSeconds));\n }\n });\n return groupedReactions;\n};\n\nconst getReactionGroups = (reactions: IEmojiReactionData[]): IReactionGroup[] => groupReactionsByTime(reactions);\n\nexport {getReactionGroups};\n","import React, {useState} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport Constants from '../../constants/Constants';\nimport {IReactionGroup} from '../../model/emojiReactionsModel';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {selectedReactionGroupStore, updateSelectedReactionGroupState} from '../../context/selectedReactionProvider';\nimport TimeFormatter from '../../util/TimeFormatter';\nimport {TscStyles} from '@techsmith/tsc-cloud-style-guide';\n\nconst ReactionMarker = styled.button<{width: number}>`\n display: flex;\n position: relative;\n background: none;\n border: none;\n outline: none;\n margin: 0;\n padding: 0;\n cursor: pointer;\n color: ${TscStyles.color.ui.dusk.mediumDark};\n width: ${props => props.width}px;\n height: 1rem;\n\n &::-moz-focus-inner {\n border: 0;\n }\n\n &:focus-visible {\n outline: none;\n\n &:after{\n content: '';\n display: block;\n position: absolute;\n top: -2px;\n right: -4px;\n bottom: -2px;\n left: -4px;\n border: 2px solid currentColor;\n border-radius: ${TscStyles.border.radius.md};\n }\n }\n`;\n\nconst EmojiWrapper = styled.div<{leftOffset: number}>`\n display: inline-block;\n position: absolute;\n left: ${props => props.leftOffset}px;\n`;\n\nexport const ReactionMarkerBase: React.FC = ({reactionGroup, selectedReactionGroup}) => {\n const {t} = useTranslation();\n const [markerActiveOnMouseDown, setMarkerActiveOnMouseDown] = useState(false);\n const numberEmojiToDisplay = reactionGroup.reactions.length > Constants.reactionMarkers.maxNumberEmojiToPreview ? Constants.reactionMarkers.maxNumberEmojiToPreview : reactionGroup.reactions.length;\n const markerWidth = Constants.reactionMarkers.emojiWidth + (Constants.reactionMarkers.emojiOffset * (numberEmojiToDisplay - 1));\n\n const getEmojiPreview = (): React.ReactFragment => {\n const previewReactionList = reactionGroup.reactions.slice(reactionGroup.reactions.length - numberEmojiToDisplay, reactionGroup.reactions.length);\n return previewReactionList.map((reaction, index) => {\n const posIndex = numberEmojiToDisplay - (index + 1);\n return (\n \n {getNativeEmojiById(reaction.EmojiId)}\n \n );\n });\n };\n\n const currentMarkerIsSelected = (): boolean => selectedReactionGroup && selectedReactionGroup.startTime === reactionGroup.startTime && selectedReactionGroup.endTime === reactionGroup.endTime;\n\n const onMarkerMouseDown = () => {\n // track if marker is active on mouse down to help prevent summary from popping up again on click\n // due the click off logic in the summary itself\n setMarkerActiveOnMouseDown(currentMarkerIsSelected());\n };\n\n const onMarkerClick = (e: React.MouseEvent) => {\n if (currentMarkerIsSelected() || markerActiveOnMouseDown) {\n setMarkerActiveOnMouseDown(false);\n updateSelectedReactionGroupState({selectedReactionGroup: null, selectedReactionMarkerButton: null});\n } else {\n updateSelectedReactionGroupState({selectedReactionGroup: reactionGroup, selectedReactionMarkerButton: e.target as HTMLButtonElement});\n }\n };\n\n return (\n <>\n \n {getEmojiPreview()}\n \n \n );\n};\n\nexport interface IReactionMarkerProps {\n reactionGroup: IReactionGroup;\n}\n\nexport interface IStateMappedProps {\n selectedReactionGroup: IReactionGroup;\n}\n\nconst mapStatesToProps = (\n {reactionGroup}: IReactionMarkerProps,\n {selectedReactionGroup}: Partial\n): IReactionMarkerProps & IStateMappedProps => ({reactionGroup, selectedReactionGroup});\n\nexport default withMemoizedContexts(mapStatesToProps, selectedReactionGroupStore)(ReactionMarkerBase);\n","import styled from 'styled-components';\nimport {TscStyles, TscThemeName} from '@techsmith/tsc-cloud-style-guide';\nimport CssUtil from '../../util/CssUtil';\nimport CssConstants from '../../constants/cssConstants';\nimport React, {memo} from 'react';\nimport {useTscTheme} from '../../context/themeProvider';\n\ninterface IReactionButtonTheme {\n color: string;\n borderColor: string;\n background: string;\n hoverBackground: string;\n activeBackground: string;\n activeBoxShadow: string;\n}\n\nconst buttonThemes = {\n [TscThemeName.dawn]: {\n normal: {\n color: TscStyles.color.text.mediumDark,\n borderColor: TscStyles.color.ui.dawn.mediumDark,\n background: TscStyles.color.ui.dawn.light,\n hoverBackground: CssUtil.toRgba(TscStyles.color.ui.dawn.medium, CssConstants.reactionsButtonHoverOpacity),\n activeBackground: CssUtil.toRgba(TscStyles.color.ui.dawn.medium, CssConstants.reactionsButtonHoverOpacity),\n activeBoxShadow: 'box-shadow: inset 0 2px 4px rgba(0, 0, 20, 0.1)'\n } as IReactionButtonTheme,\n embedded: {\n color: TscStyles.color.text.mediumDark,\n borderColor: TscStyles.color.ui.dawn.mediumDark,\n background: 'none',\n hoverBackground: CssUtil.toRgba(TscStyles.color.ui.dawn.light, CssConstants.reactionsButtonEmbedHoverOpacity),\n activeBackground: CssUtil.toRgba(TscStyles.color.ui.dawn.medium, CssConstants.reactionsButtonHoverOpacity),\n activeBoxShadow: 'box-shadow: none'\n } as IReactionButtonTheme\n },\n [TscThemeName.dusk]: {\n normal: {\n color: TscStyles.color.text.light,\n borderColor: TscStyles.color.ui.dusk.medium,\n background: TscStyles.color.ui.dusk.mediumDark,\n hoverBackground: TscStyles.color.action.secondaryDusk,\n activeBackground: TscStyles.color.action.secondaryDusk,\n activeBoxShadow: 'box-shadow: inset 0 2px 4px rgba(0, 0, 20, 0.4)'\n } as IReactionButtonTheme,\n embedded: {\n color: TscStyles.color.text.light,\n borderColor: TscStyles.color.ui.dusk.medium,\n background: 'none',\n hoverBackground: TscStyles.color.action.secondaryDusk,\n activeBackground: TscStyles.color.action.secondaryDusk,\n activeBoxShadow: 'box-shadow: none'\n } as IReactionButtonTheme\n }\n};\n\nconst ReactionMenuButton = styled.button<{\n isActive: boolean;\n isDisabled: boolean;\n width: number;\n height: number;\n fontSize: number;\n padding: string;\n margin: string;\n borderRadius: string;\n hasBorder: boolean;\n buttonTheme: IReactionButtonTheme;\n}>`\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n ${props => props.width && `width: ${props.width}rem`};\n ${props => props.height && `height: ${props.height}rem`};\n padding: ${props => props.padding ? props.padding : 0};\n margin: ${props => props.margin ? props.margin : 0};\n border-radius: ${props => props.borderRadius ? props.borderRadius : 0};\n border: ${props => props.hasBorder ? `1px solid ${props.buttonTheme.borderColor}` : 0};\n background: ${props => props.isActive ? props.buttonTheme.activeBackground : props.buttonTheme.background};\n ${props => props.isActive && props.buttonTheme.activeBoxShadow};\n font-family: Figtree, sans-serif;\n font-size: ${props => `${props.fontSize}rem`};\n font-weight: 600;\n color: ${props => props.buttonTheme.color};\n fill: ${props => props.buttonTheme.color};\n cursor: pointer;\n pointer-events: ${props => props.isDisabled ? 'none' : 'auto'};\n\n &:hover {\n background: ${props => props.buttonTheme.hoverBackground};\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n\n &:focus-visible {\n outline: none;\n\n &:after{\n content: '';\n display: block;\n position: absolute;\n top: 1px;\n right: 1px;\n bottom: 1px;\n left: 1px;\n border: 2px solid currentColor;\n border-radius: ${TscStyles.border.radius.md};\n }\n }\n\n &:active {\n background: ${props => props.buttonTheme.activeBackground};\n ${props => props.buttonTheme.activeBoxShadow};\n }\n`;\n\nexport const ReactionUIButtonBase: React.FC = ({\n children,\n isEmbedded,\n isActive,\n isDisabled,\n width,\n height,\n fontSize,\n padding,\n margin,\n borderRadius,\n hasBorder,\n title,\n ariaLabel,\n className,\n onClick\n}) => {\n const theme = useTscTheme();\n\n return (\n \n {children}\n \n );\n};\n\nexport interface IReactionUIButtonProps {\n children?: React.ReactNode;\n isEmbedded: boolean;\n isActive: boolean;\n isDisabled?: boolean;\n width?: number;\n height?: number;\n fontSize: number;\n padding?: string;\n margin?: string;\n borderRadius?: string;\n hasBorder: boolean;\n title: string;\n ariaLabel?: string;\n className?: string;\n onClick: () => void;\n}\n\nexport default memo(ReactionUIButtonBase);\n","import React, {useState} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport {TscStyles, TscThemeNames, TscThemeName} from '@techsmith/tsc-cloud-style-guide';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport ReactionsSummaryPopup from './ReactionsSummaryPopup';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\nimport {reactionsStore} from '../../context/reactionsProvider';\nimport {IEmojiReactionData} from '../../model/emojiReactionsModel';\nimport Constants from '../../constants/Constants';\nimport ReactionUIButton from './ReactionUIButton';\nimport CssUtil from '../../util/CssUtil';\n\nconst reactionsSummaryPopupLeftOffset = 0;\nconst reactionsSummaryPopupBottomOffset = 40;\nconst backgroundColorOpacity = 0.75;\n\nconst ReactionsImageWidgetContainer = styled.div<{isEmbedded: boolean}>`\n display: flex;\n position: ${props => props.isEmbedded ? 'absolute' : 'relative'};\n ${props => props.isEmbedded && 'top: 0.5rem'};\n ${props => props.isEmbedded && 'right: 3rem'};\n ${props => props.isEmbedded && 'pointer-events: none'};\n ${props => props.isEmbedded && `background-color: ${CssUtil.toRgba(TscStyles.color.ui.dusk.mediumDark, backgroundColorOpacity)}`};\n ${props => props.isEmbedded && 'backdrop-filter: blur(4px)'};\n ${props => props.isEmbedded && `border-radius: ${TscStyles.border.radius.md}`};\n`;\n\nconst EmojiContainer = styled.div<{containerWidth: number}>`\n position: relative;\n width: ${props => props.containerWidth}px;\n height: 16px;\n line-height: 1.25rem;\n margin-left: .25rem!important;\n`;\n\nconst EmojiWrapper = styled.div<{leftOffset: number}>`\n display: inline-block;\n position: absolute;\n left: ${props => props.leftOffset}px;\n`;\n\nconst ReactionCount = styled.div<{isEmbedded: boolean; theme: TscThemeNames}>`\n padding: 0 .5rem!important;\n color: ${props => props.theme === TscThemeName.dusk || props.isEmbedded ? TscStyles.color.text.light : TscStyles.color.text.dark};\n`;\n\nexport const ReactionsImageWidgetBase: React.FC = ({isEmbedded, reactions}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const numberEmojiToPreview = Math.min(reactions.length, Constants.reactionMarkers.maxNumberEmojiToPreview);\n const markerWidth = Constants.reactionMarkers.emojiWidth + (Constants.reactionMarkers.emojiOffset * (numberEmojiToPreview - 1));\n const [showSummary, setShowSummary] = useState(false);\n\n const getNewestEmoji = (): React.ReactFragment => {\n const previewReactionList = reactions.slice(reactions.length - numberEmojiToPreview, reactions.length);\n return previewReactionList.map((reaction, index) => {\n const posIndex = numberEmojiToPreview - (index + 1);\n return (\n \n {getNativeEmojiById(reaction.EmojiId)}\n \n );\n });\n };\n\n const onToggleSummary = () => {\n const summaryDisplayState = !showSummary;\n setShowSummary(summaryDisplayState);\n };\n\n const onReactionSummaryClose = () => {\n setShowSummary(false);\n };\n\n return reactions.length > 0 && (\n \n \n \n {getNewestEmoji()}\n \n \n {reactions.length}\n \n \n {showSummary && (\n \n )}\n \n );\n};\n\nexport interface IReactionsImageWidgetProps {\n isEmbedded: boolean;\n}\n\nexport interface IStateMappedProps {\n reactions: IEmojiReactionData[];\n}\n\nconst mapStatesToProps = (\n {isEmbedded}: IReactionsImageWidgetProps,\n {reactions}: Partial\n): IStateMappedProps & IReactionsImageWidgetProps => ({isEmbedded, reactions});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore)(ReactionsImageWidgetBase);\n","import React, {useEffect, useState} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport {TscStyles, TscThemeName, TscThemeNames} from '@techsmith/tsc-cloud-style-guide';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport reactionEmojis, {IEmojiData} from '../../constants/reactionEmojis';\nimport {useTscTheme} from '../../context/themeProvider';\nimport conversationApi from '../../service/conversationApi';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\nimport {reactionsStore, updateReactionsState} from '../../context/reactionsProvider';\nimport ReactionUIButton from './ReactionUIButton';\nimport {IEmojiReactionData} from '../../model/emojiReactionsModel';\nimport CssUtil from '../../util/CssUtil';\nimport useStateRef from '../../hooks/useStateRef';\nimport config from '../../service/config';\nimport Constants from '../../constants/Constants';\nimport {selfIdentifiedUserStore, updateSelfIdentifiedUserProviderState} from '../../context/selfIdentifiedUserProvider';\nimport {mediaStore} from '../../context/mediaProvider';\nimport {events} from '@techsmith/techsmith-smartplayer';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\n\nconst timeComparisonPrecisionPlaces = 3;\nconst millisecondBase = 1000;\nconst backgroundColorOpacity = 0.75;\nconst embeddedButtonWidth = 2.25;\nconst embeddedButtonHeight = 2;\n\nconst ReactionsEmojiMenu = styled.div<{isEmbedded: boolean; controlsHidden: boolean; theme: TscThemeNames}>`\n display: ${props => props.isEmbedded && props.controlsHidden ? 'none' : 'flex'};\n flex-direction: ${props => props.isEmbedded ? 'column' : 'row'};\n ${props => props.isEmbedded && 'backdrop-filter: blur(4px)'};\n background-color: ${props => props.isEmbedded ? CssUtil.toRgba(TscStyles.color.ui.dusk.mediumDark, backgroundColorOpacity) : props.theme === TscThemeName.dawn ? TscStyles.color.ui.dawn.light : TscStyles.color.ui.dusk.mediumDark};\n padding: 0;\n border-radius: ${props => props.isEmbedded ? TscStyles.border.radius.lg : `${TscStyles.border.radius.md} 0 0 ${TscStyles.border.radius.md} `};\n ${props => props.isEmbedded && 'position: absolute'};\n ${props => props.isEmbedded && 'top: .5rem'};\n ${props => props.isEmbedded && 'right: .5rem'};\n ${props => props.isEmbedded && 'width: auto'};\n overflow: hidden;\n\n .reaction-menu-button:first-child {\n ${props => props.isEmbedded ? 'padding-top: .25rem' : 'padding-left: .75rem'};\n ${props => !props.isEmbedded && `border-radius: ${`${TscStyles.border.radius.md} 0 0 ${TscStyles.border.radius.md}`}`};\n }\n\n .reaction-menu-button:last-child {\n ${props => props.isEmbedded ? 'padding-bottom: .25rem' : 'padding-right: 0.75rem'};\n }\n`;\n\nexport const ReactionsMenuBase: React.FC = ({isEmbedded, conversationId, IsVideo, reactions, userIsSelfIdentified}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const defaultEmojiSkin = 0;\n const [controlsHidden, setControlsHidden] = useStateRef(false);\n const [pendingEmojiData, setPendingEmojiData] = useState(null);\n\n const userHasAlreadyAddedReactionAtTime = (time: number, emojiData: IEmojiData): boolean => {\n const matchingReaction: IEmojiReactionData = reactions.find(reaction => reaction.Time.toFixed(timeComparisonPrecisionPlaces) === time.toFixed(timeComparisonPrecisionPlaces) && reaction.EmojiId === emojiData.id && reaction.Owner.Id === config.user.TechSmithId);\n return !!matchingReaction;\n };\n\n const createNewReaction = async (emojiData: IEmojiData) => {\n const mediaInterface = await importMediaInterface();\n const reactionTimeAsMillisecondInt = Math.round(mediaInterface.currentTime * millisecondBase);\n const reactionEmojiData: IEmojiReactionData = await conversationApi.createReaction(conversationId, emojiData.id, defaultEmojiSkin, reactionTimeAsMillisecondInt);\n const updatedReactions = reactions.concat([]);\n const indexToInsertReaction = updatedReactions.findIndex(reaction => reaction.CreateDate.getTime() > reactionEmojiData.CreateDate.getTime());\n if (indexToInsertReaction !== -1) {\n updatedReactions.splice(indexToInsertReaction, 0, reactionEmojiData);\n } else {\n updatedReactions.push(reactionEmojiData);\n }\n updateReactionsState({reactions: updatedReactions});\n };\n\n const getEmojiMenuItems = () => reactionEmojis.map((emojiData: IEmojiData, index: number) => {\n const emojiToDisplay = getNativeEmojiById(emojiData.id, emojiData.skin);\n const ariaLabel = IsVideo ? t('conversations.reactionAddReactionForVideoAriaLabel', {reactionEmoji: emojiToDisplay}) : t('conversations.reactionAddReactionForImageAriaLabel', {reactionEmoji: emojiToDisplay});\n return (\n {\n if (config.user.TechSmithId === Constants.nullTechSmithId) {\n setPendingEmojiData(emojiData);\n updateSelfIdentifiedUserProviderState({showSelfIdentifyModal: true});\n return;\n }\n\n const mediaInterface = await importMediaInterface();\n if (!userHasAlreadyAddedReactionAtTime(mediaInterface.currentTime, emojiData)) {\n void createNewReaction(emojiData);\n }\n }}\n >\n {emojiToDisplay}\n \n );\n });\n\n const onSmartPlayerControlsHidden = () => {\n setControlsHidden(true);\n };\n\n const onSmartPlayerControlsVisible = () => {\n setControlsHidden(false);\n };\n\n useEffect(() => {\n if (isEmbedded) {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.addEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.addEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n });\n }\n return () => {\n if (isEmbedded) {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.removeEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.removeEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n });\n }\n };\n }, []);\n\n useEffect(() => {\n if (userIsSelfIdentified && pendingEmojiData) {\n void createNewReaction(pendingEmojiData);\n setPendingEmojiData(null);\n }\n }, [userIsSelfIdentified]);\n\n return (\n conversationId && (\n \n {getEmojiMenuItems()}\n \n )\n );\n};\n\nexport interface IReactionsMenuProps {\n isEmbedded: boolean;\n conversationId: string;\n}\n\nexport interface IStateMappedProps {\n IsVideo: boolean;\n reactions: IEmojiReactionData[];\n userIsSelfIdentified: boolean;\n}\n\nconst mapStatesToProps = (\n {isEmbedded, conversationId}: IReactionsMenuProps,\n {IsVideo}: Partial,\n {reactions}: Partial,\n {userIsSelfIdentified}: Partial\n): IReactionsMenuProps & IStateMappedProps => ({isEmbedded, conversationId, IsVideo, reactions, userIsSelfIdentified});\n\nexport default withMemoizedContexts(mapStatesToProps, mediaStore, reactionsStore, selfIdentifiedUserStore)(ReactionsMenuBase);\n","import React, {useEffect, useRef, useState} from 'react';\nimport styled from 'styled-components';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {IEmojiReactionData} from '../../model/emojiReactionsModel';\nimport {reactionsStore, updateReactionsState} from '../../context/reactionsProvider';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\nimport {importMediaInterface} from '../../hooks/dynamicImport';\nimport {events} from '@techsmith/techsmith-smartplayer';\n\nconst ReactionsPlaybackPlugin = styled.div<{controlsHidden: boolean}>`\n position: absolute;\n display: ${props => props.controlsHidden ? 'block' : 'none'};\n bottom: 0;\n width: 100%;\n height: 2rem;\n`;\n\nconst timeBufferToTriggerReactionSeconds = 0.5;\nconst reactionDataAttributeName = 'data-reaction-id';\nconst numberCssAnimations = 5;\n\nexport const ReactionPlaybackPluginBase: React.FC = ({mediaDuration, reactions}) => {\n const reactionContainerRef = useRef(null);\n const mediaDurationRef = useRef(mediaDuration);\n const controlsHiddenRef = useRef(false);\n const reactionsRef = useRef(reactions);\n const [controlsHidden, setControlsHidden] = useState(false);\n const displayedReactions = new Map();\n\n const clearAllAnimatedReactions = () => {\n displayedReactions.forEach(reactionElement => {\n reactionElement.removeEventListener('animationend', onAnimationEnd);\n reactionElement.remove();\n });\n displayedReactions.clear();\n };\n\n const onAnimationEnd = (e: AnimationEvent) => {\n const reactionDisplayElement = e.target as HTMLDivElement;\n const reactionId = reactionDisplayElement.getAttribute(reactionDataAttributeName);\n reactionDisplayElement.removeEventListener('animationend', onAnimationEnd);\n reactionDisplayElement.remove();\n displayedReactions.delete(reactionId);\n };\n\n const createAnimatedReaction = (reaction: IEmojiReactionData) => {\n const newReaction = document.createElement('div');\n const randomAnimationClass = `reactionAnimation${Math.ceil(Math.random() * numberCssAnimations)}`;\n newReaction.setAttribute(reactionDataAttributeName, reaction.ReactionExternalId);\n newReaction.innerHTML = getNativeEmojiById(reaction.EmojiId);\n newReaction.classList.add('reactionPlayback', randomAnimationClass);\n newReaction.style.left = `${Math.max(Math.min(reaction.Time / mediaDurationRef.current * 100, 100), 0)}%`;\n newReaction.addEventListener('animationend', onAnimationEnd);\n\n displayedReactions.set(reaction.ReactionExternalId, newReaction);\n\n reactionContainerRef.current.appendChild(newReaction);\n };\n\n const findReactionsToDisplayByTime = (videoTime: number): IEmojiReactionData[] => reactionsRef.current.filter(reaction => !displayedReactions.get(reaction.ReactionExternalId) && reaction.Time >= videoTime && reaction.Time < videoTime + timeBufferToTriggerReactionSeconds || reaction.InitialDisplay);\n const findNewReactionsToDisplay = (): IEmojiReactionData[] => reactionsRef.current.filter(reaction => !displayedReactions.get(reaction.ReactionExternalId) && reaction.InitialDisplay);\n\n const displayReactionsByTime = async () => {\n const mediaInterface = await importMediaInterface();\n if (!controlsHiddenRef.current || mediaInterface.playbackRate < 1) {\n return;\n }\n const reactionsToDisplay = findReactionsToDisplayByTime(mediaInterface.currentTime);\n reactionsToDisplay.forEach(reaction => {\n createAnimatedReaction(reaction);\n });\n };\n\n const displayNewReactions = () => {\n let hasInitialDisplayedReaction = false;\n const reactionsToDisplay = findNewReactionsToDisplay();\n reactionsToDisplay.forEach(reaction => {\n if (controlsHiddenRef.current) {\n createAnimatedReaction(reaction);\n }\n\n if (reaction.InitialDisplay) {\n hasInitialDisplayedReaction = true;\n }\n });\n\n if (hasInitialDisplayedReaction) {\n reactions.forEach(reaction => {\n reaction.InitialDisplay = false;\n });\n updateReactionsState({reactions: reactions});\n }\n };\n\n const onSmartPlayerControlsHidden = () => {\n controlsHiddenRef.current = true;\n setControlsHidden(true);\n };\n\n const onSmartPlayerControlsVisible = () => {\n controlsHiddenRef.current = false;\n setControlsHidden(false);\n clearAllAnimatedReactions();\n };\n\n useEffect(() => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.addEventListener(events.ExternalVideo.VideoTimeUpdate, displayReactionsByTime);\n mediaInterface.addEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.addEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n });\n return () => {\n void importMediaInterface().then(mediaInterface => {\n mediaInterface.removeEventListener(events.ExternalVideo.VideoTimeUpdate, displayReactionsByTime);\n mediaInterface.removeEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.removeEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n });\n };\n }, []);\n\n useEffect(() => {\n mediaDurationRef.current = mediaDuration;\n }, [mediaDuration]);\n\n useEffect(() => {\n reactionsRef.current = reactions;\n displayNewReactions();\n }, [reactions]);\n\n return (\n \n );\n};\n\nexport interface IReactionsPlaybackPluginProps {\n mediaDuration: number;\n}\n\nexport interface IStateMappedProps {\n reactions: IEmojiReactionData[];\n}\n\nconst mapStatesToProps = (\n {mediaDuration}: IReactionsPlaybackPluginProps,\n {reactions}: Partial\n): IReactionsPlaybackPluginProps & IStateMappedProps => ({mediaDuration, reactions});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore)(ReactionPlaybackPluginBase);\n","import React, {useEffect, useRef} from 'react';\nimport styled from 'styled-components';\nimport {TscThemeNames} from '@techsmith/tsc-cloud-style-guide';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport useStateRef from '../../hooks/useStateRef';\nimport {IEmojiReactionData, IReactionGroup} from '../../model/emojiReactionsModel';\nimport ReactionMarker from './ReactionMarker';\nimport ReactionsSummaryPopup from './ReactionsSummaryPopup';\nimport {getReactionGroups} from './ReactionGroups';\nimport {reactionsStore} from '../../context/reactionsProvider';\nimport {useTscTheme} from '../../context/themeProvider';\nimport {selectedReactionGroupStore, updateSelectedReactionGroupState} from '../../context/selectedReactionProvider';\nimport Constants from '../../constants/Constants';\n\nconst reactionsSummaryPopupBottomOffset = 4;\n\ninterface ISmartPlayerSize {\n width: number;\n left: number;\n y: number;\n}\n\nconst ReactionsPlugin = styled.div`\n top: -.5rem;\n width: 100%;\n display: flex;\n position: absolute;\n`;\n\nexport const ReactionWrapper = styled.div<{leftOffset: number; theme: TscThemeNames}>`\n position: absolute;\n pointer-events: auto;\n left: ${props => props.leftOffset}%;\n transform: translateX(-50%);\n`;\n\nexport const ReactionPluginBase: React.FC = ({mediaDuration, reactions, selectedReactionGroup, selectedReactionMarkerButton}) => {\n const theme = useTscTheme();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [smartPlayerSize, setSmartPlayerSize, smartPlayerSizeRef] = useStateRef({width: 0, left: 0, y: 0});\n const smartPlayerRef = useRef(document.querySelector('.tsc-smartplayer'));\n const groupedReactions: IReactionGroup[] = getReactionGroups(reactions);\n\n const calculateSelectedReactionSummaryMaxHeight = () => {\n // need to get smart player client bounds everytime if UI shifts without page resize\n const playerClientRect = smartPlayerRef.current.getBoundingClientRect();\n const targetRect = selectedReactionMarkerButton.getBoundingClientRect();\n\n const availableHeight = targetRect.y - playerClientRect.y - Constants.reactionsSummary.topMargin;\n\n if (availableHeight < Constants.reactionsSummary.maxHeight) {\n return availableHeight;\n }\n return Constants.reactionsSummary.maxHeight;\n };\n\n const calculateSelectedReactionSummaryLeftOffset = () => {\n // need to get smart player client bounds everytime if UI shifts without page resize\n const playerClientRect = smartPlayerRef.current.getBoundingClientRect();\n const targetClientRect = selectedReactionMarkerButton.getBoundingClientRect();\n const numberEmojiToDisplay = selectedReactionGroup.reactions.length > Constants.reactionMarkers.maxNumberEmojiToPreview ? Constants.reactionMarkers.maxNumberEmojiToPreview : selectedReactionGroup.reactions.length;\n const markerWidth = Constants.reactionMarkers.emojiWidth + (Constants.reactionMarkers.emojiOffset * (numberEmojiToDisplay - 1));\n const previewHalfWidth = Constants.reactionsSummary.width / 2;\n const halfMarkerWidth = markerWidth / 2;\n const offsetX = targetClientRect.left + halfMarkerWidth - playerClientRect.left;\n const centeredOffsetX = offsetX - previewHalfWidth > 0 ? offsetX - previewHalfWidth : Constants.reactionsSummary.edgeOffset;\n const maxX = playerClientRect.width - (Constants.reactionsSummary.width + Constants.reactionsSummary.edgeOffset);\n return centeredOffsetX < maxX ? centeredOffsetX : maxX;\n };\n\n const onReactionSummaryClose = () => {\n updateSelectedReactionGroupState({selectedReactionGroup: null, selectedReactionMarkerButton: null});\n };\n\n useEffect(() => {\n let smartPlayerSizeObserver: ResizeObserver;\n\n const addObserver = () => {\n if (!smartPlayerRef.current) {\n smartPlayerRef.current = document.querySelector('.tsc-smartplayer');\n if (!smartPlayerRef.current) {\n return;\n }\n }\n\n smartPlayerSizeObserver = new ResizeObserver(() => {\n const playerRect = smartPlayerRef.current.getBoundingClientRect();\n if (smartPlayerSizeRef.current.width !== Math.ceil(playerRect.width) || smartPlayerSizeRef.current.left !== Math.ceil(playerRect.left)) {\n setSmartPlayerSize({\n width: Math.ceil(playerRect.width),\n left: Math.ceil(playerRect.left),\n y: playerRect.y\n });\n }\n });\n smartPlayerSizeObserver.observe(document.body);\n };\n\n addObserver();\n\n return () => {\n if (smartPlayerSizeObserver) {\n smartPlayerSizeObserver.disconnect();\n }\n };\n }, []);\n\n return (\n \n {!!mediaDuration && groupedReactions && groupedReactions.length > 0 && groupedReactions.map(reactionGroup => (\n \n \n \n ))}\n {selectedReactionGroup && selectedReactionMarkerButton && (\n \n )}\n \n );\n};\n\nexport interface IReactionsPluginProps {\n mediaDuration: number;\n}\n\nexport interface IStateMappedProps {\n reactions: IEmojiReactionData[];\n selectedReactionGroup: IReactionGroup;\n selectedReactionMarkerButton: HTMLButtonElement;\n}\n\nconst mapStatesToProps = (\n {mediaDuration}: IReactionsPluginProps,\n {reactions}: Partial,\n {selectedReactionGroup, selectedReactionMarkerButton}: Partial\n): IReactionsPluginProps & IStateMappedProps => ({mediaDuration, reactions, selectedReactionGroup, selectedReactionMarkerButton});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore, selectedReactionGroupStore)(ReactionPluginBase);\n","import React, {useRef, useCallback} from 'react';\nimport styled, {keyframes} from 'styled-components';\nimport {\n ControlButton,\n Glyphs,\n TscButtonType,\n TscStyles,\n TscThemeName,\n TscThemeNames\n} from '@techsmith/tsc-cloud-style-guide';\nimport CssUtil from '../../util/CssUtil';\nimport CssConstants from '../../constants/cssConstants';\nimport {useTranslation} from 'react-i18next';\nimport {IEmojiReactionData} from '../../model/emojiReactionsModel';\nimport Constants from '../../constants/Constants';\nimport conversationApi from '../../service/conversationApi';\nimport config from '../../service/config';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\nimport {reactionsStore, updateReactionsState} from '../../context/reactionsProvider';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {useTscTheme} from '../../context/themeProvider';\n\nconst showMenuAnimation = keyframes`\n 0% {transform: scale(.25) translateX(inherit) translateY(inherit); opacity: 0;}\n 100% {transform: scale(1) translateX(inherit) translateY(inherit); opacity: 1;}\n`;\n\nconst ReactionsSummaryContainer = styled.div<{leftOffset: number; bottomOffset: number; maxHeight: number; theme: TscThemeNames}>`\n position: absolute;\n bottom: ${props => props.bottomOffset}px;\n left: ${props => props.leftOffset}px;\n display: block;\n animation: ${showMenuAnimation} 200ms ease;\n overflow: auto;\n max-height: ${props => props.maxHeight}px;\n padding: 0.25rem 0!important;\n width: ${Constants.reactionsSummary.width}px;\n color: ${props => props.theme === TscThemeName.dawn ? TscStyles.color.text.mediumDark : TscStyles.color.text.light};\n backdrop-filter: blur(4px);\n background-color: ${props => props.theme === TscThemeName.dawn ? CssUtil.toRgba(TscStyles.color.ui.dawn.lightMedium, CssConstants.reactionsSummaryBackgroundOpacity) : CssUtil.toRgba(TscStyles.color.ui.dusk.mediumDark, CssConstants.reactionsSummaryBackgroundOpacity)};\n border-radius: ${TscStyles.border.radius.md};\n box-shadow: ${TscStyles.shadow.short};\n pointer-events: auto;\n`;\n\nconst ReactionSummaryList = styled.ul`\n list-style-type: none!important;\n margin: 0!important;\n padding: 0!important;\n`;\n\nconst ReactionSummaryItem = styled.li`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 0.5rem!important;\n line-height: 2rem;\n`;\n\nconst ReactionDetails = styled.div`\n display: flex;\n`;\n\nconst ReactionDisplayName = styled.div`\n font-size: 0.875rem;\n font-weight: ${TscStyles.font.weight.semibold};\n margin: 0 .5rem!important;\n`;\n\nexport const ReactionsSummaryPopupBase: React.FC = ({reactionsToDisplay, leftOffset, bottomOffset, maxHeight, closeOnInteractions, onClose, reactions}) => {\n const {t} = useTranslation();\n const theme = useTscTheme();\n const summaryPopOver = useRef(null);\n const clickStartedOutsideOfMenu = useRef(false);\n\n // will always trigger from window.addEventListener, so native...\n const onFocusOut = useCallback((e: FocusEvent): void => {\n if (e.relatedTarget && e.relatedTarget !== summaryPopOver.current && !summaryPopOver.current?.contains(e.relatedTarget as Node)) {\n onClose();\n }\n }, []);\n\n const resetClickStartedOutsideOfMenuValue = useCallback((): void => {\n clickStartedOutsideOfMenu.current = false;\n }, []);\n\n // will always trigger from window.addEventListener, so native MouseEvent...\n const onMouseDown = useCallback((e: MouseEvent): void => {\n if (summaryPopOver.current === e.target || summaryPopOver.current?.contains(e.target as Node)) {\n e.preventDefault();\n } else {\n clickStartedOutsideOfMenu.current = true;\n e.target?.addEventListener('scroll', resetClickStartedOutsideOfMenuValue);\n window.addEventListener('scroll', resetClickStartedOutsideOfMenuValue);\n }\n }, [resetClickStartedOutsideOfMenuValue]);\n\n // will always trigger from window.addEventListener, so native MouseEvent...\n const onMouseUp = useCallback((e: MouseEvent): void => {\n e.target?.removeEventListener('scroll', resetClickStartedOutsideOfMenuValue);\n window.removeEventListener('scroll', resetClickStartedOutsideOfMenuValue);\n\n if (clickStartedOutsideOfMenu.current) {\n e.preventDefault();\n onClose();\n }\n\n resetClickStartedOutsideOfMenuValue();\n }, [resetClickStartedOutsideOfMenuValue]);\n\n React.useEffect(() => {\n if (!closeOnInteractions) {\n return;\n }\n\n window.addEventListener('mousedown', onMouseDown);\n window.addEventListener('mouseup', onMouseUp);\n window.addEventListener('focusout', onFocusOut);\n\n return () => {\n window.removeEventListener('mousedown', onMouseDown);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('focusout', onFocusOut);\n window.removeEventListener('scroll', resetClickStartedOutsideOfMenuValue);\n };\n }, []);\n\n const deleteReaction = async (reaction: IEmojiReactionData) => {\n await conversationApi.deleteReaction(reaction.ReviewConversation.Id, reaction.ReactionExternalId);\n onReactionDelete(reaction);\n };\n const getReactionsSummary = (): React.ReactFragment => {\n const reactionSummary = reactionsToDisplay.map((reaction, index) => {\n const isReactionOwner = reaction.Owner.Id === config.user.TechSmithId;\n const reactionEmoji = `${getNativeEmojiById(reaction.EmojiId)}`;\n const reactionDisplayName = `${reaction.Owner.DisplayName || Constants.reactionMarkers.defaultTextForAnonymousReaction}`;\n return (\n \n \n {reactionEmoji}\n \n {reactionDisplayName}\n \n \n {isReactionOwner && (\n }\n buttonType={TscButtonType.tertiary}\n title={t('conversations.deleteReactionTitle')}\n themeName={theme}\n onClick={() => {\n void deleteReaction(reaction);\n onClose();\n }}\n />\n ) }\n \n );\n });\n return reactionSummary;\n };\n\n const onReactionDelete = (deletedReaction: IEmojiReactionData) => {\n const deletedReactionIndex = reactions.findIndex(reaction => reaction.ReactionExternalId === deletedReaction.ReactionExternalId);\n if (deletedReactionIndex > -1) {\n const updatedReactions = reactions.concat([]);\n updatedReactions.splice(deletedReactionIndex, 1);\n updateReactionsState({reactions: updatedReactions});\n }\n };\n\n return (\n \n \n {getReactionsSummary()}\n \n \n );\n};\n\nexport interface IReactionsSummaryPopupProps {\n reactionsToDisplay: IEmojiReactionData[];\n leftOffset: number;\n bottomOffset: number;\n maxHeight: number;\n closeOnInteractions: boolean;\n onClose: () => void;\n}\n\nexport interface IStateMappedProps {\n reactions: IEmojiReactionData[];\n}\n\nconst mapStatesToProps = (\n {reactionsToDisplay, leftOffset, bottomOffset, maxHeight, closeOnInteractions, onClose}: IReactionsSummaryPopupProps,\n {reactions}: Partial\n): IReactionsSummaryPopupProps & IStateMappedProps => ({reactionsToDisplay, leftOffset, bottomOffset, maxHeight, closeOnInteractions, onClose, reactions});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore)(ReactionsSummaryPopupBase);\n","import React from 'react';\nimport {ScreenReaderOnly} from './StyledElements';\n\nconst ScreenReaderHelper: React.FC = ({href, text}) => (\n \n \n \n {text}\n \n \n);\n\ninterface IScreenReaderHelperProps {\n href: string;\n text: string;\n}\n\nexport default ScreenReaderHelper;","export interface IEmojiData {\n id: string;\n name: string;\n skin: number;\n}\n\nconst emojiReactions: IEmojiData[] = [\n {\n id: '+1',\n name: 'Thumbs Up',\n skin: 0\n },\n {\n id: '-1',\n name: 'Thumbs Down',\n skin: 0\n },\n {\n id: 'open_mouth',\n name: 'Face with Open Mouth',\n skin: 0\n },\n {\n id: 'joy',\n name: 'Face with Tears of Joy',\n skin: 0\n },\n {\n id: 'heart',\n name: 'Red Heart',\n skin: 0\n },\n {\n id: 'tada',\n name: 'Party Popper',\n skin: 0\n }\n];\n\nexport default emojiReactions;\n","import {TscStyles} from '@techsmith/tsc-cloud-style-guide';\nimport cssConstants from './cssConstants';\n\ntype SmartPlayerEnvironment = 0 | 1 | 2 | 3 | 4;\n\ninterface SmartPlayerConstants {\n environments: {\n [environmentName: string]: SmartPlayerEnvironment;\n };\n contentType: {\n unknown: string;\n audio: string;\n image: string;\n video: string;\n youtube: string;\n };\n analytics: {\n viewEvent: string;\n viewAction: {\n FromLti: string;\n FromEmbed: string;\n FromViewPage: string;\n FromUnknown: string;\n };\n };\n imageBackgroundColorDawn: string;\n imageBackgroundColorDusk: string;\n videoBackgroundColor: string;\n minPlayerHeight: string;\n youtubeControls: string;\n}\n\nexport default {\n environments: {\n local: 1,\n dev: 1,\n stage: 2,\n live: 3,\n test: 4\n },\n contentType: {\n unknown: 'unknown',\n audio: 'audio',\n image: 'image',\n video: 'video',\n youtube: 'youtube'\n },\n analytics: {\n viewEvent: 'view',\n viewAction: {\n FromLti: 'Viewed On LTI Page',\n FromEmbed: 'Viewed On Embed Page',\n FromViewPage: 'Viewed On The View Page',\n FromUnknown: 'Viewed From Unknown Source'\n }\n },\n imageBackgroundColorDawn: cssConstants.dawnPageBackgroundColor,\n imageBackgroundColorDusk: TscStyles.color.ui.dusk.dark,\n videoBackgroundColor: '#000',\n // this is roughly the height of the quizzing email required input form, seems a reasonable cut-off, else this dialog is unusable\n minPlayerHeight: '360px',\n youtubeControls: 'youtube'\n} as SmartPlayerConstants;\n","import {IUserProfileModel} from '../model/appModel';\nimport profileApi from '../service/profileApi';\nimport config from '../service/config';\nimport useSWR from 'swr';\nimport {GetKey, GetSessionStorage, SetSessionStorage} from '../util/StorageHelper';\nimport Constants from '../constants/Constants';\n\nconst fetchUserProfile = async (techSmithId: string) => techSmithId ? await profileApi.getUserProfileInfo(techSmithId) : {} as IUserProfileModel;\n\nexport const useUserProfileData = () => {\n const tscId = config?.user?.TechSmithId;\n const userProfileId = `UserProfileInfo-${tscId}`;\n const {data, error} = useSWR(userProfileId, () => fetchUserProfile(tscId), {\n revalidateOnFocus: false,\n onSuccess: results => SetSessionStorage(GetKey(Constants.swrKey, userProfileId), JSON.stringify(results)),\n fallback: () => JSON.parse(GetSessionStorage(GetKey(Constants.swrKey, userProfileId))) as IUserProfileModel\n });\n\n return {\n userProfile: data,\n isWorking: !error && !data,\n hasError: error\n };\n};\n","const getProgressLocalStorageKey = (techSmithId: string, hash: string) => `${techSmithId}:${hash}`;\n\nconst getProgress = (techSmithId: string, hash: string) => {\n try {\n const localStorageProgress = window.localStorage.getItem(getProgressLocalStorageKey(techSmithId, hash));\n const progress = localStorageProgress ? parseFloat(localStorageProgress) : 0;\n return isNaN(progress) ? 0 : progress;\n } catch {\n // Local storage not supported\n }\n return 0;\n};\n\nconst setProgress = (techSmithId: string, hash: string, progress: string) => {\n try {\n window.localStorage.setItem(getProgressLocalStorageKey(techSmithId, hash), progress);\n } catch {\n // Local storage not supported\n }\n};\n\nconst removeProgress = (techSmithId: string, hash: string) => {\n try {\n window.localStorage.removeItem(getProgressLocalStorageKey(techSmithId, hash));\n } catch {\n // Local storage not supported\n }\n};\n\nexport default\n{\n getProgress,\n setProgress,\n removeProgress\n};\n","import Constants from '../constants/Constants';\nimport userApi from './userApi';\nimport config from './config';\nimport {updateSelfIdentifiedUserProviderState} from '../context/selfIdentifiedUserProvider';\n\nconst setSelfIdentifiedUser = async (displayName: string): Promise => {\n const user = await userApi.createSelfIdentifiedUser(displayName);\n\n window.localStorage.setItem(Constants.localStorageKeys.selfIdentifiedId, user.Id);\n window.localStorage.setItem(Constants.localStorageKeys.selfIdentifiedName, user.DisplayName);\n window.localStorage.setItem(Constants.localStorageKeys.selfIdentifiedSecret, user.Secret);\n\n config.user.Secret = user.Secret;\n config.user.DisplayName = user.DisplayName;\n config.user.TechSmithId = user.Id;\n\n updateSelfIdentifiedUserProviderState({userIsSelfIdentified: true});\n};\n\nconst setupSelfIdentifiedUserFromLocalStorage = (): void => {\n const {selfIdentifiedId, selfIdentifiedName, selfIdentifiedSecret} = Constants.localStorageKeys;\n try {\n const userId = window.localStorage.getItem(selfIdentifiedId);\n const secret = window.localStorage.getItem(selfIdentifiedSecret);\n const name = window.localStorage.getItem(selfIdentifiedName);\n\n if (userId && secret && name) {\n config.user.Secret = secret;\n config.user.DisplayName = name;\n config.user.TechSmithId = userId;\n updateSelfIdentifiedUserProviderState({userIsSelfIdentified: true});\n }\n } catch (e) {\n console.warn('Could not get self identified users from local storage');\n }\n};\n\nconst forgetSelfIdentifiedUser = (): void => {\n const {selfIdentifiedId, selfIdentifiedName, selfIdentifiedSecret} = Constants.localStorageKeys;\n window.localStorage.removeItem(selfIdentifiedId);\n window.localStorage.removeItem(selfIdentifiedName);\n window.localStorage.removeItem(selfIdentifiedSecret);\n\n config.user.Secret = '';\n config.user.DisplayName = '';\n config.user.TechSmithId = Constants.nullTechSmithId;\n\n updateSelfIdentifiedUserProviderState({userIsSelfIdentified: false});\n};\n\nexport default {\n setSelfIdentifiedUser,\n setupSelfIdentifiedUserFromLocalStorage,\n forgetSelfIdentifiedUser\n};\n","import data from '@emoji-mart/data';\nimport {EmojiMartData} from '../type/emoji-mart-data';\n\nexport const getNativeEmojiById = (id: string, skin: number = 0): string => {\n const castData: EmojiMartData = data as EmojiMartData;\n return castData.emojis[id]?.skins[skin]?.native;\n};\nexport const findEmojiByCode = (emojiCodeWithColons: string): string => getNativeEmojiById(emojiCodeWithColons.replace(/:/g, ''));\n","import config from '../service/config';\n\nimport {CreationProducts} from '../constants/Constants';\n\nexport const showEmbeddedSnagitMarketing = () => config.featureSwitches.IsScreencast && config.embedConfig.media.CreationProduct === CreationProducts.SNAGIT && !config.embedConfig.disableProductBanner;\nexport const showEmbeddedCamtasiaMarketing = () => config.featureSwitches.IsScreencast && config.embedConfig.media.CreationProduct === CreationProducts.CAMTASIA && !config.embedConfig.disableProductBanner;\nexport const showEmbeddedCaptureMarketing = () => config.featureSwitches.IsScreencast && config.embedConfig.media.CreationProduct === CreationProducts.CAPTURE && !config.embedConfig.disableProductBanner;\nexport const showEmbeddedWebUploadMarketing = () => config.featureSwitches.IsScreencast && config.embedConfig.media.CreationProduct === CreationProducts.WEBUPLOAD && !config.embedConfig.disableProductBanner;\nexport const showEmbeddedMarketing = () => showEmbeddedSnagitMarketing() || showEmbeddedCamtasiaMarketing() || showEmbeddedCaptureMarketing() || showEmbeddedWebUploadMarketing();\n\nexport const showWatchPageSnagitMessage = () => config.featureSwitches.IsScreencast && !config.watchConfig.isOwner && config.watchConfig.media.CreationProduct === CreationProducts.SNAGIT && !config.watchConfig.disableProductBanner;\nexport const showWatchPageCamtasiaMessage = () => config.featureSwitches.IsScreencast && !config.watchConfig.isOwner && config.watchConfig.media.CreationProduct === CreationProducts.CAMTASIA && !config.watchConfig.disableProductBanner;\nexport const showWatchPageCaptureMessage = () => config.featureSwitches.IsScreencast && !config.watchConfig.isOwner && config.watchConfig.media.CreationProduct === CreationProducts.CAPTURE && !config.watchConfig.disableProductBanner;\nexport const showWatchPageWebUploadMessage = () => config.featureSwitches.IsScreencast && !config.watchConfig.isOwner && config.watchConfig.media.CreationProduct === CreationProducts.WEBUPLOAD && !config.watchConfig.disableProductBanner;\nexport const showWatchProductMessage = () => showWatchPageSnagitMessage() || showWatchPageCaptureMessage() || showWatchPageCamtasiaMessage() || showWatchPageWebUploadMessage();\n","const numberNotNeedingPadding = 10;\nconst secondsInHour = 3600;\nconst secondsInMinute = 60;\n\nconst padZero = (num: number): string => num >= numberNotNeedingPadding ? `${num}` : `0${num}`;\n\nconst formatTime = (totalSeconds: number): string => {\n const negative = totalSeconds < 0 ? '-' : '';\n const roundedTotalSeconds = negative ? Math.round(totalSeconds * -1) : Math.round(totalSeconds);\n const hoursPlace = Math.floor(roundedTotalSeconds / secondsInHour);\n const secondsWithoutHours = roundedTotalSeconds % secondsInHour;\n const minutesPlace = Math.floor(secondsWithoutHours / secondsInMinute);\n const secondsPlace = secondsWithoutHours % secondsInMinute;\n\n if (hoursPlace > 0) {\n return `${negative}${hoursPlace}:${padZero(minutesPlace)}:${padZero(secondsPlace)}`;\n } else if (minutesPlace > 0) {\n return `${negative}${minutesPlace}:${padZero(secondsPlace)}`;\n }\n\n return `${negative}00:${padZero(secondsPlace)}`;\n};\n\nconst formatTimeForSpeech = (totalSeconds: number): string => {\n const negative = totalSeconds < 0 ? '-' : '';\n const roundedTotalSeconds = negative ? Math.round(totalSeconds * -1) : Math.round(totalSeconds);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n return Math.floor(roundedTotalSeconds) === 0 ? '0 seconds' : new Date(roundedTotalSeconds * 1000).toISOString().substr(11, 8);\n};\n\nconst getRoundedTime = (time: number): number => Math.floor(time * 1000) / 1000;\n\nconst getSecondsFromTimeString = (time: string): number => {\n const timecodeDelimiter = ':';\n const maxSupportTimecodePlaces = 3;\n const secondsMultiplier = 60;\n let timeInSeconds = 0;\n let multiplier = 1;\n const timecodeParts = time.split(timecodeDelimiter);\n const lowTimeBounds = timecodeParts.length > maxSupportTimecodePlaces ? timecodeParts.length - maxSupportTimecodePlaces : 0;\n\n for (let i = timecodeParts.length - 1; i >= lowTimeBounds; i--) {\n const timePartAsNumber = parseInt(timecodeParts[i], 10);\n if (!isNaN(timePartAsNumber)) {\n timeInSeconds += timePartAsNumber * multiplier;\n }\n multiplier *= secondsMultiplier;\n }\n\n return timeInSeconds;\n};\n\n// convert milliseconds to hh:mm:ss format with hh being included only if necessary\nconst millisecondsToFormattedTimeString = (milliseconds: number): string => {\n const seconds = Math.round(milliseconds / 1000);\n const hours = Math.floor(seconds / secondsInHour);\n const minutes = Math.floor((seconds - (hours * secondsInHour)) / secondsInMinute);\n const remainingSeconds = seconds - (hours * secondsInHour) - (minutes * secondsInMinute);\n return `${hours ? `${hours}:` : ''}${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`;\n};\n\nexport default {\n formatTime,\n formatTimeForSpeech,\n getRoundedTime,\n getSecondsFromTimeString,\n millisecondsToFormattedTimeString\n};\n","import {Captions, ICaption, ITranscript} from '../model/captionModels';\nimport TimeFormatter from '../util/TimeFormatter';\n\nexport const generateTranscriptFromCaptions = (captions: Captions): ITranscript => {\n if (!captions || captions.length === 0) {\n return null;\n }\n const transcript: ITranscript = {};\n captions.forEach((caption: ICaption) => {\n const displayTime = TimeFormatter.millisecondsToFormattedTimeString(caption.startTime);\n const duration = Math.ceil(caption.duration / 1000);\n const text = caption.plainText;\n const key = Math.round(caption.startTime / 1000).toString();\n if (key && displayTime && duration && text) {\n transcript[key] = {\n duration: duration,\n displayTime: displayTime,\n text: text\n };\n }\n });\n return transcript;\n};\n"],"names":["_react","_interopRequireDefault","require","_excluded","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","exports","_ref","styles","props","_objectWithoutProperties2","default","React","createElement","fill","xmlns","viewBox","d","opacity","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","_ref$styles","width","height","className","clipRule","xmlnsXlink","gradientTransform","xlinkHref","style","isolation","mixBlendMode","x","y","rx","ry","cx","cy","r","stroke","strokeOpacity","_templateObject","_interopRequireWildcard","_fabric","_reactI18next","_styledComponents","_Arrow","_Constants","_contextContainerHoC","_selectedConversationProvider","_canvasProvider","_annotationManagerProvider","_commentsProvider","_StyledElements","_quizDataProvider","_mediaProvider","_logging","_dynamicImport","_getRequireWildcardCache","e","WeakMap","t","__esModule","_typeof","has","get","n","__proto__","a","defineProperty","getOwnPropertyDescriptor","u","set","editingInputTypes","Constants","elementInputTypes","input","textArea","search","AnnotationWrapper","styled","div","_taggedTemplateLiteral2","pointerEvents","AnnotationBase","_document$querySelect","SelectedComment","annotationMode","annotationColor","comments","IsImage","Width","useTranslation","_useState","useState","_useState2","_slicedToArray2","showAnnotationAccessibilityAlert","setShowAnnotationAccessibilityAlert","_useState3","_useState4","setStyle","useLegacyScaleRef","useRef","canvasRef","mediaContentRef","document","querySelector","onFabricObjectLoad","jsonToIgnore","object","selectable","hoverCursor","cursors","strokeWidth","current","freeDrawingBrush","animate","duration","annotation","animationDuration","onChange","requestRenderAll","useEffect","timeoutId","getElementById","display","window","setTimeout","clearTimeout","loadAnnotations","parentCommentId","find","c","clear","includes","newScaleAnnotationFlag","scaleCanvas","loadFromJSON","error","logging","concat","removeOutOfViewObject","event","bounds","getBoundingRect","pastLeft","left","pastTop","top","pastRight","pastBottom","remove","scale","Math","max","clientWidth","clientHeight","setZoom","getObjects","forEach","obj","color","getActiveObjects","transparentColor","onKeyDown","useCallback","AnnotationModes","edit","isInputSelected","some","type","isRemoveEvent","keyCode","KeyCodes","backspace","delete","preventDefault","importMediaInterface","then","mediaInterface","singleClickControlEnabled","doubleClickControlEnabled","pause","isDrawingMode","selection","resetDimensions","setDimensions","fabric","padding","controlsPadding","centeredRotation","centeredScaling","strokeUniform","objectCaching","Group","hasControls","canvas","Canvas","uniformScaling","defaultCursor","perPixelTargetFind","enableRetinaScaling","PencilBrush","on","Arrow","initializeEventListeners","updateCanvasState","setupCanvas","observer","ResizeObserver","observe","disconnect","updateQuizData","IsQuizzing","dispose","addEventListener","removeEventListener","updatedStyle","margin","position","right","bottom","Fragment","AriaAlert","role","withMemoizedContexts","_ref2","_ref3","_ref4","_ref5","_ref6","_objectDestructuringEmpty2","selectedConversationStore","annotationManagerStore","commentsStore","mediaStore","radToDeg","PI","arrowHead","arrowConst","calcAngle","startCoords","endCoords","atan2","turnOnMouseEventListeners","setAnnotationExists","mouseMove","arrow","getActiveObject","mouse","getPointer","controlsOffset","angle","distance","hypot","scaleX","scaleY","path","pathOffset","setCoords","mouseUp","discardActiveObject","fire","off","Path","originX","originY","lockScalingFlip","name","shape","setControlsVisibility","bl","br","mb","ml","mr","mt","tl","tr","mtr","add","setActiveObject","__corner","newOrigins","getPointByOrigin","oCoords","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_TimeFormatter","_tscCloudStyleGuide","_CommentMarker","_themeProvider","CommentMarkerPlugin","CommentMarkerWrapper","leftOffset","isHovering","TscStyles","ui","dusk","mediumDark","isSelected","action","primary","theme","TscThemeName","text","dawn","lightMedium","CommentPreview","light","border","radius","lg","PreviewText","PreviewAuthor","CommentMarkersBase","mediaDuration","useTscTheme","showPreview","previewXoffset","authorName","comment","previewState","setPreviewState","onMarkerClick","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_context","prev","next","updateSelectedConversationState","updateAnnotationManagerState","none","sent","currentTime","time","stop","_x","getPreviewText","isDeleted","map","index","min","onMouseEnter","user","DisplayName","targetRect","getBoundingClientRect","playerRect","offsetX","markerWidth","centeredOffsetX","commentPreviewWidth","maxX","onMouseLeave","ControlButton","glyph","buttonType","TscButtonType","floating","onClick","title","ariaLabel","TimeFormatter","formatTimeForSpeech","commentText","onBlur","themeName","testId","quizDataStore","_techsmithSmartplayer","CaptionDisplayStatusPlugin","md","CaptionDisplayStatusPluginBase","showMessage","setShowMessage","messageTimeoutIdRef","onSmartPlayerCaptionsHidden","onSmartPlayerCaptionsVisible","events","External","CaptionsHidden","CaptionsVisible","_ProgressLoader","_config","PizzaTrackerContainerDiv","isEmbedView","PizzaTrackerBase","isOwnerOrAdmin","HasEncodingError","EncodingProgress","MediaStoreWorkerState","config","entryPoint","EntryPoint","embed","isWorking","hasError","StyledAnchor","href","navigation","contactSupportLink","uploadProgress","_reactDeviceDetect","_useQueryParams","_smartPlayerConstants","_analytics","_mediaApi","_resumablePlayback","_StringUtil","_CommentMarkers","_MarketingEmbedPlugin","_MarketingHelper","_reactDom","_Annotation","_disableConversationProvider","_userProfileProvider","_cssConstants","_ReactionsPlugin","_ReactionsPlaybackPlugin","_appModel","_CaptionDisplayStatusPlugin","_captionModels","_TranscriptGenerator","_transcriptProvider","smartPlayerApp","started","lastSavedTime","SmartPlayerWrapper","isEmbedded","SmartPlayerContainerDiv","isQuizUserSelfIdentifyOpen","cssConstants","smartPlayerQuizSetupWidth","smartPlayerQuizSetupHeight","isMobile","isImage","smartPlayerMinWidth","SmartPlayerBase","embedPlatform","onDisplayModeChange","ContentUrl","Hash","IsVideo","IsYouTube","Title","Description","HlsTokenInjectionProxyContentUrl","PosterUrl","SpriteUrl","AllowViewerToFastForwardVideo","XmpUrl","AudioDescriptionUrl","QuizId","Rotate","PreviewThumbnailsUri","PreviewThumbnailsInterval","PreviewThumbnailsMaxColumns","PreviewThumbnailsThumbHeight","PreviewThumbnailsThumbWidth","CaptioningType","Chapters","transcript","_useQueryParam","useQueryParam","queryParams","smartPlayerStartTime","StringParam","smartPlayerTimeQueryString","_useQueryParam3","smartPlayerStartTimeUppercase","smartPlayerTimeQueryStringUppercase","_useQueryParam5","commentId","smartPlayerContainer","commentMarkerDomElement","setCommentMarkerDomElement","annotationDomElement","setAnnotationDomElement","_useState5","_useState6","reactionsDomElement","setReactionsDomElement","_useState7","_useState8","reactionsPlaybackDomElement","setReactionsPlaybackDomElement","_useState9","_useState10","marketingMediaDomElement","setMarketingMediaDomElement","_useState11","_useState12","captionDisplayStatusDomElement","setCaptionDisplayStatusDomElement","_useState13","_useState14","setMediaDuration","_useState15","_useState16","showMarketingPlugin","setShowMarketingPlugin","_useState17","_useState18","userHasHiddenMarketing","setUserHasHiddenMarketing","_useState19","_useState20","quizUserSelfIdentifyIsOpen","setQuizUserSelfIdentifyIsOpen","_useState21","_useState22","smartPlayerMediaError","setSmartPlayerMediaError","_useUserProfileData","useUserProfileData","userProfileIsLoading","userProfile","console","info","version","conditionallyConfigurePlaybackResume","savedTime","abrupt","resumablePlayback","getProgress","TechSmithId","getSafeSeekTime","recordGAViewEvent","playerOrigin","referrer","RegExp","environmentData","GoogleAnalyticsDomain","exec","SmartPlayerConstants","analytics","viewAction","FromEmbed","FromViewPage","FromUnknown","ga4Event","eventName","SmartPlayerEventsPrefix","viewEvent","eventParams","player_origin","media_hash","Analytics","gaEvent","videoStartEventListener","_callee2","_context2","MediaApi","incrementView","controls","mediaInterfaceConstants","autohide","VideoPlay","mediaReadyEventListener","updateDisableConversationState","isAnnotatingDisabled","isCommentingDisabled","displayModeChangedEventListener","displayMode","addEventListeners","_callee3","_context3","log","warn","ShowStartQuizPrompt","HideStartQuizPrompt","QuizVisible","true","QuizHidden","ExternalVideo","VideoLoadedData","VideoEnd","VideoReplay","VideoLoadedMetadata","CaptionsReady","_mediaInterface$capti","mediaTranscript","generateTranscriptFromCaptions","captions","updateTranscriptDataState","MediaError","aiEvent","label","value","PlayerControlsHidden","PlayerControlsVisible","VideoTimeUpdate","roundedTime","floor","setProgress","toString","MediaReady","DisplayModeChanged","GoogleAnalytics4Event","keys","AnalyticsEvent","sanitizedEvent","category","JSON","stringify","PlayerRumData","categorySuffix","rum","rumItem","aiMeasurement","configure","_callee4","_config$watchConfig","_config$embedConfig","chaptersString","_context4","addSrc","replace","disableContinueWithoutQuestions","posterSrc","tocSrc","rememberUserInfo","featureSwitches","IsScreencast","enableTheaterMode","allowFastForward","StringUtil","isNullOrWhiteSpace","xmpSrc","audioDescriptionMediaSrc","EmbedPlatforms","slack","disablePictureInPicture","showAcknowledgementLink","showADACompliantCaptions","ForceADACompliantCaptionStyle","Environment","EnvironmentType","live","quizServiceBaseUrl","QuizzingServiceUrl","resultsServiceBaseUrl","ResultsRootUrl","quizCreateInstanceUrl","QuizzingServiceCreateInstanceUrl","quizId","rotation","youtubeControls","videoThumbnailsSrc","videoThumbnailWidth","videoThumbnailHeight","videoThumbnailInterval","videoThumbnailColumns","useLargerProgressBar","watch","preload","preloadOptions","metadata","customFullScreenDomElement","getElementsByClassName","mainElementClassName","chapters","chapter","formatTime","timeInMilliseconds","join","createTocFromDescription","encodeURIComponent","background","imageBackgroundColorDawn","imageBackgroundColorDusk","videoBackgroundColor","contextMenu","ignoreXmpControllerParameters","setUserInfo","userSignedIn","IsSignedIn","watchConfig","isOwner","embedConfig","DisableSmartPlayerAccessToken","_callee5","_context5","userInfo","firstName","lastName","email","EmailAddress","run","_ref7","_callee6","reactionsPluginInfo","reactionsPlaybackPluginInfo","commentMarkerPluginInfo","annotationPluginInfo","marketingPluginInfo","captionDisplayStatusPluginInfo","_context6","mediaTitle","EnableReactions","registerPlugin","pluginElements","progressBar","pluginContainerElement","classList","player","t0","media","showEmbeddedMarketing","t1","setTheme","handleHideAnnotationsAndSelectComment","_ref8","_callee7","commentToSelect","timeDifference","_context7","getRoundedTime","abs","timeTolerance","updateMediaStateFromServer","_ref9","_callee8","_context8","destroy","contains","appendChild","ref","isYouTube","ReactDOM","createPortal","CaptioningTypes","AutoTranscribed","canClose","linkToMoreInfo","onClose","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","transcriptStore","_rectPlaceholder","SmartPlayerPlaceholder","contentWidth","_SnagitLogo24x","_CamtasiaLogo","_CssUtil","MarketingEmbedPlugin","font","family","CssUtil","toRgba","medium","CloseButton","span","IconSvg","IconText","button","displayCloseButton","linked","MarketingEmbedPluginBase","isSnagitPlugin","showEmbeddedSnagitMarketing","isCamtasiaPlugin","showEmbeddedCamtasiaMarketing","isCapturePlugin","showEmbeddedCaptureMarketing","isWebUploadsPlugin","showEmbeddedWebUploadMarketing","SnagitEmbeddedBannerDisplayed","CamtasiaEmbeddedBannerDisplayed","CaptureEmbeddedBannerDisplayed","WebUploadEmbeddedBannerDisplayed","banner_variant","open","banners","screenCapture","camtasiaProduct","SnagitEmbeddedButtonClicked","CamtasiaEmbeddedButtonClicked","CaptureEmbeddedButtonClicked","WebUploadEmbeddedButtonClicked","Glyphs","Close16x16","tertiary","_SelfIdentifyBadge","_selfIdentifyservice","_ModalPortalHelper","FormBody","TitleWrapper","InlineAnchorWrapper","InputWrapper","SelfIdentifyModalBase","showTosMessage","showSignInMessage","guestName","setGuestName","loadingState","setLoadingState","submit","selfIdentifyservice","setSelfIdentifiedUser","inputErrorText","maxSelfIdentifyNameLength","BasicModalPortal","headerVisible","isLoading","termsOfServiceScreencastLink","termsOfServiceLink","StyledWarning","TextInput","placeholder","errorText","onEscape","onEnter","autoFocus","disabled","SignInUrl","memo","reactions","groupedReactions","reaction","existingGroup","reactionGroup","startTime","endTime","getReactionGroupAtTime","Time","push","groupRangeInSeconds","createReactionGroup","groupReactionsByTime","_EmojiSearch","_selectedReactionProvider","ReactionMarker","EmojiWrapper","ReactionMarkerBase","selectedReactionGroup","markerActiveOnMouseDown","setMarkerActiveOnMouseDown","numberEmojiToDisplay","reactionMarkers","maxNumberEmojiToPreview","emojiWidth","emojiOffset","currentMarkerIsSelected","onMouseDown","updateSelectedReactionGroupState","selectedReactionMarkerButton","slice","posIndex","getNativeEmojiById","EmojiId","selectedReactionGroupStore","buttonThemes","_defineProperty2","normal","borderColor","hoverBackground","CssConstants","reactionsButtonHoverOpacity","activeBackground","activeBoxShadow","embedded","reactionsButtonEmbedHoverOpacity","secondaryDusk","ReactionMenuButton","borderRadius","hasBorder","buttonTheme","isActive","fontSize","isDisabled","ReactionUIButtonBase","children","_ReactionsSummaryPopup","_reactionsProvider","_ReactionUIButton","ReactionsImageWidgetContainer","EmojiContainer","containerWidth","ReactionCount","dark","ReactionsImageWidgetBase","numberEmojiToPreview","showSummary","setShowSummary","reactionsToDisplay","bottomOffset","maxHeight","reactionsSummary","closeOnInteractions","reactionsStore","_reactionEmojis","_conversationApi","_useStateRef3","_selfIdentifiedUserProvider","ReactionsEmojiMenu","controlsHidden","ReactionsMenuBase","conversationId","userIsSelfIdentified","_useStateRef","useStateRef","_useStateRef2","setControlsHidden","pendingEmojiData","setPendingEmojiData","userHasAlreadyAddedReactionAtTime","emojiData","toFixed","Owner","Id","createNewReaction","reactionTimeAsMillisecondInt","reactionEmojiData","updatedReactions","indexToInsertReaction","round","conversationApi","createReaction","findIndex","CreateDate","getTime","splice","updateReactionsState","onSmartPlayerControlsHidden","onSmartPlayerControlsVisible","reactionEmojis","emojiToDisplay","skin","reactionEmoji","nullTechSmithId","updateSelfIdentifiedUserProviderState","showSelfIdentifyModal","selfIdentifiedUserStore","ReactionsPlaybackPlugin","ReactionPlaybackPluginBase","reactionContainerRef","mediaDurationRef","controlsHiddenRef","reactionsRef","displayedReactions","Map","onAnimationEnd","reactionDisplayElement","reactionId","getAttribute","createAnimatedReaction","newReaction","randomAnimationClass","ceil","random","setAttribute","ReactionExternalId","innerHTML","findReactionsToDisplayByTime","videoTime","filter","InitialDisplay","displayReactionsByTime","playbackRate","displayNewReactions","hasInitialDisplayedReaction","reactionElement","_ReactionMarker","_ReactionGroups","ReactionsPlugin","ReactionWrapper","ReactionPluginBase","playerClientRect","targetClientRect","previewHalfWidth","halfMarkerWidth","setSmartPlayerSize","smartPlayerSizeRef","smartPlayerRef","getReactionGroups","smartPlayerSizeObserver","body","edgeOffset","availableHeight","topMargin","calculateSelectedReactionSummaryMaxHeight","_templateObject6","showMenuAnimation","keyframes","ReactionsSummaryContainer","reactionsSummaryBackgroundOpacity","shadow","short","ReactionSummaryList","ul","ReactionSummaryItem","li","ReactionDetails","ReactionDisplayName","weight","semibold","ReactionsSummaryPopupBase","summaryPopOver","clickStartedOutsideOfMenu","onFocusOut","_summaryPopOver$curre","relatedTarget","resetClickStartedOutsideOfMenuValue","_summaryPopOver$curre2","_e$target","onMouseUp","_e$target2","deleteReaction","ReviewConversation","onReactionDelete","deletedReaction","deletedReactionIndex","isReactionOwner","reactionDisplayName","defaultTextForAnonymousReaction","Delete16x16","ScreenReaderOnly","environments","local","dev","stage","test","contentType","unknown","audio","image","video","youtube","FromLti","dawnPageBackgroundColor","minPlayerHeight","_profileApi","_swr","_StorageHelper","fetchUserProfile","techSmithId","profileApi","getUserProfileInfo","_config$user","tscId","userProfileId","_useSWR","useSWR","revalidateOnFocus","onSuccess","results","SetSessionStorage","GetKey","swrKey","fallback","parse","GetSessionStorage","data","getProgressLocalStorageKey","hash","localStorageProgress","localStorage","getItem","progress","parseFloat","isNaN","_unused","setItem","_unused2","removeProgress","removeItem","_unused3","_userApi","displayName","userApi","createSelfIdentifiedUser","localStorageKeys","selfIdentifiedId","selfIdentifiedName","selfIdentifiedSecret","Secret","setupSelfIdentifiedUserFromLocalStorage","_Constants$localStora","userId","secret","forgetSelfIdentifiedUser","_Constants$localStora2","_data","_castData$emojis$id","_castData$emojis$id$s","undefined","emojis","skins","native","emojiCodeWithColons","CreationProduct","CreationProducts","SNAGIT","disableProductBanner","CAMTASIA","CAPTURE","WEBUPLOAD","showWatchPageSnagitMessage","showWatchPageCamtasiaMessage","showWatchPageCaptureMessage","showWatchPageWebUploadMessage","padZero","num","totalSeconds","negative","roundedTotalSeconds","hoursPlace","secondsWithoutHours","minutesPlace","secondsPlace","Date","toISOString","substr","getSecondsFromTimeString","timeInSeconds","multiplier","timecodeParts","split","lowTimeBounds","timePartAsNumber","parseInt","millisecondsToFormattedTimeString","milliseconds","seconds","hours","minutes","remainingSeconds","padStart","caption","displayTime","plainText"],"sourceRoot":""}