{"version":3,"file":"pwc-250.a6ab2122.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","hooks/useStateRef.ts","service/resumablePlayback.ts","service/selfIdentifyservice.ts","util/EmojiSearch.ts","util/MarketingHelper.ts","util/TimeFormatter.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 xmlns: \"http://www.w3.org/2000/svg\",\n width: \"28\",\n height: \"28\",\n viewBox: \"0 -2 32 30\",\n fill: \"none\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.38 0A2.63 2.63 0 0128 2.63v22.75A2.63 2.63 0 0125.37 28H2.63A2.63 2.63 0 010 25.37V2.63A2.62 2.62 0 012.63 0h22.75z\",\n fill: \"url(#paint0_linear_384_323)\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.28 3.63L5.25 7.88h14.06a.4.4 0 00.29-.13l3.32-3.5c.12-.13.15-.31.1-.47a.43.43 0 00-.4-.28H9.58a.4.4 0 00-.3.13zM9.28 24.37l-4.03-4.25h14.06a.4.4 0 01.29.13l3.32 3.5c.12.13.15.31.1.47a.43.43 0 01-.4.28H9.58a.4.4 0 01-.29-.13\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n opacity: \".74\",\n d: \"M9.62 7.88H5.25v12.25h4.37V7.88z\",\n fill: \"#fff\"\n}), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_384_323\",\n x1: \"0\",\n y1: \"0\",\n x2: \"0\",\n y2: \"28\",\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 className: styles[\"comment-marker-glyph\"] || \"comment-marker-glyph\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 14 16\",\n preserveAspectRatio: \"none\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n className: styles[\"glyph-outer\"] || \"glyph-outer\",\n d: \"M13.3 10.6L7 16 .7 10.6A2 2 0 010 9.08V2a2 2 0 012-2h10a2 2 0 012 2v7.08a2 2 0 01-.7 1.52z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n className: styles[\"glyph-inner\"] || \"glyph-inner\",\n d: \"M1.35 9.84A1 1 0 011 9.08V2a1 1 0 011-1h10a1 1 0 011 1v7.08a1 1 0 01-.35.76L7 14.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})));","/* eslint-disable no-underscore-dangle */\nimport React, {useRef, useEffect, useState} from 'react';\nimport {fabric} from 'fabric';\nimport {useTranslation} from 'react-i18next';\nimport styled from 'styled-components';\nimport {mediaInterface} from '@techsmith/techsmith-smartplayer';\nimport Arrow from './AnnotationShapes/Arrow';\nimport Constants, {AnnotationColors, AnnotationModes, AnnotationTools, 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';\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 annotationTool: AnnotationTools;\n comments: IComment[];\n IsImage: boolean;\n Width: number;\n}\n\nexport const AnnotationBase: React.FC = ({SelectedComment, annotationMode, annotationColor, annotationTool, 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 return;\n }\n\n setShowAnnotationAccessibilityAlert(true);\n canvasRef.current.clear();\n useLegacyScaleRef.current = annotation.indexOf(Constants.annotation.newScaleAnnotationFlag) === -1;\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 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 }, [SelectedComment?.annotation, annotationMode, mediaInterface.currentTime]);\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 if (!canvasRef.current) {\n return;\n }\n\n useLegacyScaleRef.current = false;\n scaleCanvas();\n }, [annotationTool]);\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 {t('annotation.annotationExistsAlert')}\n \n );\n};\n\nconst mapStatesToProps = (\n // eslint-disable-next-line no-empty-pattern\n {},\n {SelectedComment}: Partial,\n {annotationMode, annotationColor, annotationTool}: Partial,\n {comments}: Partial,\n {IsImage, Width}: Partial\n): IStateMappedProps => ({SelectedComment, annotationMode, annotationColor, annotationTool, comments, IsImage, Width});\n\nexport default withMemoizedContexts(mapStatesToProps, selectedConversationStore, annotationManagerStore, commentsStore, mediaStore)(AnnotationBase);\n","/* eslint-disable no-underscore-dangle */\nimport 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;\nconst minArrow = arrowConst * 4; // eslint-disable-line no-magic-numbers\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 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 {mediaInterface} from '@techsmith/techsmith-smartplayer';\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 {themeStore} from '../../context/themeProvider';\nimport {quizDataStore} from '../../context/quizDataProvider';\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.75rem;\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: .125rem;\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, theme, IsQuizzing}) => {\n const {t} = useTranslation();\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 = (comment: IComment) => {\n updateSelectedConversationState({SelectedComment: comment});\n\n if (comment.annotation) {\n updateAnnotationManagerState({annotationMode: IsQuizzing ? AnnotationModes.none : AnnotationModes.display});\n }\n\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.75rem\"\n themeName={theme}\n testId={`comment-marker-${index}`}\n />\n \n ))}\n {previewState.showPreview &&\n \n {previewState.authorName}\n {previewState.text}\n \n }\n \n );\n};\n\nexport interface ICommentMarkersProps {\n mediaDuration: number;\n}\n\nexport interface IStateMappedProps {\n SelectedComment?: IComment;\n comments: IComment[];\n theme: TscThemeNames;\n IsQuizzing: boolean;\n}\n\nconst mapStatesToProps = (\n {mediaDuration}: ICommentMarkersProps,\n {SelectedComment}: Partial,\n {comments}: Partial,\n {theme}: Partial,\n {IsQuizzing}: Partial\n): ICommentMarkersProps & IStateMappedProps => ({mediaDuration, SelectedComment, comments, theme, IsQuizzing});\n\nexport default withMemoizedContexts(mapStatesToProps, selectedConversationStore, commentsStore, themeStore, quizDataStore)(CommentMarkersBase);\n","import React, {useEffect, useState, useRef} from 'react';\nimport styled from 'styled-components';\nimport {useTranslation} from 'react-i18next';\nimport {events, mediaInterface} from '@techsmith/techsmith-smartplayer';\nimport {TscStyles} from '@techsmith/tsc-cloud-style-guide';\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.small};\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 mediaInterface.addEventListener(events.External.CaptionsHidden, onSmartPlayerCaptionsHidden);\n mediaInterface.addEventListener(events.External.CaptionsVisible, onSmartPlayerCaptionsVisible);\n return () => {\n mediaInterface.removeEventListener(events.External.CaptionsHidden, onSmartPlayerCaptionsHidden);\n mediaInterface.removeEventListener(events.External.CaptionsVisible, onSmartPlayerCaptionsVisible);\n };\n }, []);\n\n return (\n showMessage && \n {t('smartPlayerPlugins.captionDisplayStatus.visibleAutoTranscribed')}\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

{t('FetchingMediaProgressTitle')}

\n

{t('FetchingMediaProgressSubTitle')}

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

{t('MediaProcessingFailedTitle')}

\n {isOwnerOrAdmin &&

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

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

{t('MediaBeingProcessedTitle')}

\n

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

\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 events,\n ISmartPlayerGACustomEvent,\n ISmartPlayerRumDataEvent,\n ISmartPlayerTimeUpdateEvent,\n log,\n mediaInterface,\n mediaInterfaceConstants,\n preloadOptions\n} from '@techsmith/techsmith-smartplayer';\nimport {StringParam, useQueryParam} from 'use-query-params';\nimport SmartPlayerConstants from '../../constants/smartPlayerConstants';\nimport Analytics 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, TscThemeNames} 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 {themeStore} 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} from '../../model/captionModels';\nimport {IMediaChapters} from '../../model/mediaDetails';\n\nconst smartPlayerApp = document.createElement('div');\nsmartPlayerApp.id = 'tscMediaContent';\nsmartPlayerApp.style.margin = 'auto';\nlet started = false;\nlet lastSavedTime = 0;\nconst timeBuffer = 3;\n\n// eslint-disable-next-line no-console\nconsole.info(`%cUsing TechSmith Smart Player version: ${mediaInterface.version}`, 'color:blue; font-size:18px');\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, annotationMode, SelectedComment, comments, theme, ContentUrl, Hash, IsImage, IsVideo, IsYouTube, Title, Description, HlsTokenInjectionProxyContentUrl, PosterUrl, SpriteUrl, AllowViewerToFastForwardVideo, XmpUrl, AudioDescriptionUrl, QuizId, Rotate, PreviewThumbnailsUri, PreviewThumbnailsInterval, PreviewThumbnailsMaxColumns, PreviewThumbnailsThumbHeight, PreviewThumbnailsThumbWidth, CaptioningType, Chapters}) => {\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 const conditionallyConfigurePlaybackResume = () => {\n if (smartPlayerTimeQueryStringUppercase || smartPlayerTimeQueryString || commentId) {\n return;\n }\n\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 const gaViewEvent = {\n category: SmartPlayerConstants.analytics.viewEvent,\n action: '',\n label: Hash,\n value: 0\n };\n\n if (config.environmentData.IsLti) {\n gaViewEvent.action = SmartPlayerConstants.analytics.viewAction.FromLti;\n } else if (!window.document.referrer) {\n gaViewEvent.action = SmartPlayerConstants.analytics.viewAction.FromUnknown;\n } else if (RegExp(config.environmentData.GoogleAnalyticsDomain).exec(window.document.referrer) === null) {\n gaViewEvent.action = SmartPlayerConstants.analytics.viewAction.FromEmbed;\n } else {\n gaViewEvent.action = SmartPlayerConstants.analytics.viewAction.FromViewPage;\n }\n Analytics.gaEvent(gaViewEvent);\n };\n\n const videoStartEventListener = () => {\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 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 = () => {\n if (log && log.addEventListener) {\n log.addEventListener('EXCEPTION', e => {\n logging.warn('Encountered exception in Smart Player', e);\n });\n }\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, () => {\n conditionallyConfigurePlaybackResume();\n });\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.MediaError, () => {\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.GoogleAnalyticsCustomEvent, 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 our code to throw errors without this\n const sanitizedEvent: ISmartPlayerGACustomEvent = {\n category: JSON.stringify(e.category),\n action: JSON.stringify(e.action),\n label: JSON.stringify(e.label),\n value: e.value\n };\n Analytics.gaEvent(sanitizedEvent);\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.gaMeasurement({\n category: `SmartPlayerRUM_PresentationWebClient${categorySuffix}`,\n variable: rumItem.name,\n value: rumItem.time\n });\n\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 = () => {\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 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 setUserInfo();\n\n mediaInterface.userSignedIn = config.user.IsSignedIn && (config.watchConfig?.isOwner || config.embedConfig?.isOwner || !config.featureSwitches.DisableSmartPlayerAccessToken);\n };\n\n const setUserInfo = () => {\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 if (!started) {\n started = true;\n 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 setUserInfo();\n }\n }, [userProfileIsLoading]);\n\n useEffect(() => {\n mediaInterface.setTheme(theme);\n }, [theme]);\n\n useEffect(() => {\n const handleHideAnnotationsAndSelectComment = () => {\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 mediaInterface.addEventListener(events.ExternalVideo.VideoTimeUpdate, handleHideAnnotationsAndSelectComment);\n\n return () => {\n mediaInterface.removeEventListener(events.ExternalVideo.VideoTimeUpdate, handleHideAnnotationsAndSelectComment);\n };\n }, [SelectedComment, annotationMode, comments]);\n\n useEffect(() => {\n mediaInterface.doubleClickControlEnabled = annotationMode !== AnnotationModes.edit;\n }, [annotationMode]);\n\n useEffect(() => {\n if (smartPlayerMediaError) {\n void updateMediaStateFromServer();\n setSmartPlayerMediaError(false);\n }\n }, [smartPlayerMediaError]);\n\n useEffect(() => {\n if (ContentUrl) {\n if (started) {\n mediaInterface.destroy();\n started = false;\n }\n configure();\n appendSmartPlayerApp();\n void run();\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(, marketingMediaDomElement as Element)}\n \n );\n};\n\nexport interface ISmartPlayerProps {\n isEmbedded: boolean;\n embedPlatform?: EmbedPlatforms;\n onDisplayModeChange?: (displayMode: string) => void;\n}\n\nexport interface IStateMappedProps {\n annotationMode: AnnotationModes;\n SelectedComment: IComment;\n comments: IComment[];\n theme: TscThemeNames;\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}\n\nconst mapStatesToProps = (\n {isEmbedded, embedPlatform, onDisplayModeChange}: ISmartPlayerProps,\n {annotationMode}: Partial,\n {SelectedComment}: Partial,\n {comments}: Partial,\n {theme}: 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): IStateMappedProps & ISmartPlayerProps => ({isEmbedded, embedPlatform, onDisplayModeChange, annotationMode, SelectedComment, comments, theme, ContentUrl, Hash, IsImage, IsVideo, IsYouTube, Title, Description, HlsTokenInjectionProxyContentUrl, PosterUrl, SpriteUrl, AllowViewerToFastForwardVideo, XmpUrl, AudioDescriptionUrl, QuizId, Rotate, PreviewThumbnailsUri, PreviewThumbnailsInterval, PreviewThumbnailsMaxColumns, PreviewThumbnailsThumbHeight, PreviewThumbnailsThumbWidth, CaptioningType, Chapters});\n\nexport default withMemoizedContexts(mapStatesToProps, annotationManagerStore, selectedConversationStore, commentsStore, themeStore, mediaStore)(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 {themeStore} 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 from '../../service/analytics';\nimport {mediaStore} from '../../context/mediaProvider';\nimport {showEmbeddedCamtasiaMarketing, showEmbeddedSnagitMarketing} from '../../util/MarketingHelper';\n\nconst backgroundColorOpacity = .95;\n\nconst MarketingEmbedPlugin = styled.div<{theme: TscThemeNames}>`\n position: absolute;\n top: 1rem;\n left: 1rem;\n display: flex;\n border-radius: 6px;\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: 8px;\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: \"Proxima Nova\", proxima-nova, 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, theme, Hash}) => {\n const {t} = useTranslation();\n const isSnagitPlugin = showEmbeddedSnagitMarketing();\n const isCamtasiaPlugin = showEmbeddedCamtasiaMarketing();\n\n const recordGAEmbeddedBannerButtonClickedEvent = () => {\n const action = isSnagitPlugin ? Constants.analytics.madeWithSnagitEmbeddedButtonClicked : Constants.analytics.madeWithCamtasiaEmbeddedButtonClicked;\n const gaEvent = {\n category: Constants.analytics.promotionsCategory,\n action: action,\n label: Hash\n };\n Analytics.gaEvent(gaEvent);\n };\n\n const recordGABannerDisplayedEvent = () => {\n const action = isSnagitPlugin ? Constants.analytics.madeWithSnagitEmbeddedBannerDisplayed : Constants.analytics.madeWithCamtasiaEmbeddedBannerDisplayed;\n const gaEvent = {\n category: Constants.analytics.promotionsCategory,\n action: action,\n label: Hash\n };\n Analytics.gaEvent(gaEvent);\n };\n\n useEffect(() => {\n recordGABannerDisplayedEvent();\n }, []);\n\n const navigateToMarketingPage = () => {\n window.open(\n isSnagitPlugin ? Constants.navigation.screencast.madeWithSnagitMarketingEmbeddedLink : Constants.navigation.screencast.madeWithCamtasiaMarketingEmbeddedLink,\n '_blank'\n );\n recordGAEmbeddedBannerButtonClickedEvent();\n };\n\n return (\n \n \n {isSnagitPlugin && }\n {isCamtasiaPlugin && }\n \n \n {isSnagitPlugin && t('marketing.snagitIconText1')}\n {isCamtasiaPlugin && t('marketing.camtasiaIconText1')}\n \n {canClose && (\n }\n buttonType={TscButtonType.tertiary}\n themeName={theme}\n title={t('marketing.closeSnagitPaneAccessibleLabel')}\n testId=\"hide-conversation-pane-button\"\n ariaLabel={t('marketing.closeSnagitPaneAccessibleLabel')}\n onClick={onClose}\n />\n ) }\n \n );\n};\n\nexport interface IStateMappedProps {\n canClose: boolean;\n linkToMoreInfo: boolean;\n onClose: (event: React.MouseEvent) => void;\n theme: TscThemeNames;\n Hash: string;\n}\n\nconst mapStatesToProps = (\n {canClose, linkToMoreInfo, onClose}: Partial,\n {theme}: Partial,\n {Hash}: Partial\n): IStateMappedProps => ({canClose, linkToMoreInfo, onClose, theme, Hash});\n\nexport default withMemoizedContexts(mapStatesToProps, themeStore, mediaStore)(MarketingEmbedPluginBase);\n","import React, {useState} from 'react';\nimport Constants from '../../constants/Constants';\nimport {useTranslation} from 'react-i18next';\nimport {TextInput, ControlButton, TscThemeNames} 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 withMemoizedContexts from '../../context/contextContainerHoC';\nimport {themeStore} 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, theme}) => {\n const {t} = useTranslation();\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 {t('selfIdentify.badgeText')}\n {\n showTosMessage && \n {t('selfIdentify.tos')}\n {t('selfIdentify.tosLink')}\n \n }\n {loadingState.hasError && {t('general.errorText')}}\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 {t('selfIdentify.signin')}\n {t('selfIdentify.signinLink')}\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 interface IStateMappedProps {\n theme: TscThemeNames;\n}\n\nconst mapStatesToProps = (\n {showTosMessage, showSignInMessage, isEmbedded, onClose}: ISelfIdentifyModalProps,\n {theme}: Partial\n): IStateMappedProps & ISelfIdentifyModalProps => ({showTosMessage, showSignInMessage, isEmbedded, onClose, theme});\n\nexport default withMemoizedContexts(mapStatesToProps, themeStore)(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.medium};\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 ({getNativeEmojiById(reaction.EmojiId)});\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, TscThemeNames} from '@techsmith/tsc-cloud-style-guide';\nimport CssUtil from '../../util/CssUtil';\nimport CssConstants from '../../constants/cssConstants';\nimport React from 'react';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport {themeStore} 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: 'Proxima Nova', 'proxima-nova', 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.medium};\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 theme\n}) => (\n \n {children}\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 interface IStateMappedProps {\n theme: TscThemeNames;\n}\n\nconst mapStatesToProps = (\n {children, isEmbedded, isActive, isDisabled, width, height, fontSize, padding, margin, borderRadius, hasBorder, title, ariaLabel, className, onClick}: IReactionUIButtonProps,\n {theme}: Partial\n): IReactionUIButtonProps & IStateMappedProps => ({children, isEmbedded, isActive, isDisabled, width, height, fontSize, padding, margin, borderRadius, hasBorder, title, ariaLabel, className, onClick, theme});\n\nexport default withMemoizedContexts(mapStatesToProps, themeStore)(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 {themeStore} 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 = .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.large}`};\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, theme, reactions}) => {\n const {t} = useTranslation();\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 ({getNativeEmojiById(reaction.EmojiId)});\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 {getNewestEmoji()}\n {reactions.length}\n \n {showSummary && }\n \n );\n};\n\nexport interface IReactionsImageWidgetProps {\n isEmbedded: boolean;\n}\n\nexport interface IStateMappedProps {\n theme: TscThemeNames;\n reactions: IEmojiReactionData[];\n}\n\nconst mapStatesToProps = (\n // eslint-disable-next-line no-empty-pattern\n {isEmbedded}: IReactionsImageWidgetProps,\n {theme}: Partial,\n {reactions}: Partial\n): IStateMappedProps & IReactionsImageWidgetProps => ({isEmbedded, theme, reactions});\n\nexport default withMemoizedContexts(mapStatesToProps, themeStore, 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 {events, mediaInterface} from '@techsmith/techsmith-smartplayer';\nimport withMemoizedContexts from '../../context/contextContainerHoC';\nimport reactionEmojis, {IEmojiData} from '../../constants/reactionEmojis';\nimport {themeStore} 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';\n\nconst timeComparisonPrecisionPlaces = 3;\nconst millisecondBase = 1000;\nconst backgroundColorOpacity = .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 border-right: ${props => props.isEmbedded ? 'none' : `1px solid ${props.theme === TscThemeName.dawn ? TscStyles.color.ui.dawn.mediumDark : TscStyles.color.ui.dusk.medium}`};\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.large : `${TscStyles.border.radius.large} 0 0 ${TscStyles.border.radius.large} `};\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.large} 0 0 ${TscStyles.border.radius.large}`}`};\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, theme, reactions, userIsSelfIdentified}) => {\n const {t} = useTranslation();\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 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 if (!userHasAlreadyAddedReactionAtTime(mediaInterface.currentTime, emojiData)) {\n void createNewReaction(emojiData);\n }\n }}\n >{emojiToDisplay}\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 mediaInterface.addEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.addEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n }\n return () => {\n if (isEmbedded) {\n mediaInterface.removeEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.removeEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\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 {getEmojiMenuItems()}\n \n );\n};\n\nexport interface IReactionsMenuProps {\n isEmbedded: boolean;\n conversationId: string;\n}\n\nexport interface IStateMappedProps {\n IsVideo: boolean;\n theme: TscThemeNames;\n reactions: IEmojiReactionData[];\n userIsSelfIdentified: boolean;\n}\n\nconst mapStatesToProps = (\n {isEmbedded, conversationId}: IReactionsMenuProps,\n {IsVideo}: Partial,\n {theme}: Partial,\n {reactions}: Partial,\n {userIsSelfIdentified}: Partial\n): IReactionsMenuProps & IStateMappedProps => ({isEmbedded, conversationId, IsVideo, theme, reactions, userIsSelfIdentified});\n\nexport default withMemoizedContexts(mapStatesToProps, mediaStore, themeStore, 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 {events, mediaInterface} from '@techsmith/techsmith-smartplayer';\nimport {getNativeEmojiById} from '../../util/EmojiSearch';\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 = .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 = () => {\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 mediaInterface.addEventListener(events.ExternalVideo.VideoTimeUpdate, displayReactionsByTime);\n mediaInterface.addEventListener(events.External.PlayerControlsHidden, onSmartPlayerControlsHidden);\n mediaInterface.addEventListener(events.External.PlayerControlsVisible, onSmartPlayerControlsVisible);\n return () => {\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 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 {themeStore} 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, theme}) => {\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 theme: TscThemeNames;\n}\n\nconst mapStatesToProps = (\n {mediaDuration}: IReactionsPluginProps,\n {reactions}: Partial,\n {selectedReactionGroup, selectedReactionMarkerButton}: Partial,\n {theme}: Partial\n): IReactionsPluginProps & IStateMappedProps => ({mediaDuration, reactions, selectedReactionGroup, selectedReactionMarkerButton, theme});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore, selectedReactionGroupStore, themeStore)(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 {themeStore} 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.large};\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, theme}) => {\n const {t} = useTranslation();\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 // eslint-disable-next-line consistent-return\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 {reactionEmoji}{reactionDisplayName}\n {isReactionOwner && }\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 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 theme: TscThemeNames;\n}\n\nconst mapStatesToProps = (\n {reactionsToDisplay, leftOffset, bottomOffset, maxHeight, closeOnInteractions, onClose}: IReactionsSummaryPopupProps,\n {reactions}: Partial,\n {theme}: Partial\n): IReactionsSummaryPopupProps & IStateMappedProps => ({reactionsToDisplay, leftOffset, bottomOffset, maxHeight, closeOnInteractions, onClose, reactions, theme});\n\nexport default withMemoizedContexts(mapStatesToProps, reactionsStore, themeStore)(ReactionsSummaryPopupBase);\n","import React from 'react';\nimport {ScreenReaderOnly} from './StyledElements';\n\nconst ScreenReaderHelper: React.FC = ({href, text}) => (\n \n \n {text}\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\n// eslint-disable-next-line no-magic-numbers\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","// Borrowed from https://github.com/Aminadav/react-useStateRef/blob/master/index.ts\n\nimport {useCallback, useRef, useState, SetStateAction, Dispatch} from 'react';\n\ninterface ReadOnlyRefObject {\n readonly current: S;\n}\n\ntype UseStateRefValue = [S, Dispatch>, ReadOnlyRefObject];\n\nconst isFunction = (setStateAction: SetStateAction): setStateAction is (prevState: S) => S => typeof setStateAction === 'function';\n\nconst useStateRef = (initialState?: S | (() => S)): UseStateRefValue => {\n const [state, setState] = useState(initialState);\n const ref = useRef(state);\n\n const dispatch: typeof setState = useCallback((setStateAction: any) => {\n ref.current = isFunction(setStateAction) ? setStateAction(ref.current) : setStateAction;\n setState(ref.current);\n }, []);\n\n return [state, dispatch, ref];\n};\n\nexport default useStateRef;","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 showEmbeddedMarketing = () => showEmbeddedSnagitMarketing() || showEmbeddedCamtasiaMarketing();\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 showWatchProductMessage = () => showWatchPageSnagitMessage() || showWatchPageCaptureMessage() || showWatchPageCamtasiaMessage();","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 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\nexport default {\n formatTime,\n formatTimeForSpeech,\n getRoundedTime,\n getSecondsFromTimeString\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","xmlns","width","height","viewBox","fill","d","opacity","id","x1","y1","x2","y2","gradientUnits","stopColor","offset","_ref$styles","className","preserveAspectRatio","xmlnsXlink","gradientTransform","xlinkHref","style","isolation","mixBlendMode","x","y","rx","ry","cx","cy","r","stroke","strokeOpacity","_templateObject","_interopRequireWildcard","_fabric","_reactI18next","_styledComponents","_techsmithSmartplayer","_Arrow","_Constants","_contextContainerHoC","_selectedConversationProvider","_canvasProvider","_annotationManagerProvider","_commentsProvider","_StyledElements","_quizDataProvider","_mediaProvider","_logging","_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","annotationTool","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","indexOf","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","mediaInterface","singleClickControlEnabled","doubleClickControlEnabled","pause","isDrawingMode","selection","currentTime","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","PreviewText","PreviewAuthor","CommentMarkersBase","mediaDuration","showPreview","previewXoffset","authorName","comment","previewState","setPreviewState","getPreviewText","isDeleted","map","index","time","min","onMouseEnter","user","DisplayName","targetRect","getBoundingClientRect","playerRect","offsetX","markerWidth","centeredOffsetX","commentPreviewWidth","maxX","onMouseLeave","ControlButton","glyph","buttonType","TscButtonType","floating","onClick","updateSelectedConversationState","updateAnnotationManagerState","none","onMarkerClick","title","ariaLabel","TimeFormatter","formatTimeForSpeech","commentText","onBlur","themeName","testId","themeStore","quizDataStore","CaptionDisplayStatusPlugin","border","radius","small","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","smartPlayerApp","started","lastSavedTime","console","info","version","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","_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","videoStartEventListener","gaViewEvent","category","SmartPlayerConstants","analytics","viewEvent","label","value","environmentData","IsLti","viewAction","FromLti","referrer","RegExp","GoogleAnalyticsDomain","exec","FromEmbed","FromViewPage","FromUnknown","Analytics","gaEvent","MediaApi","incrementView","controls","mediaInterfaceConstants","autohide","VideoPlay","mediaReadyEventListener","updateDisableConversationState","isAnnotatingDisabled","isCommentingDisabled","displayModeChangedEventListener","displayMode","addEventListeners","log","warn","ShowStartQuizPrompt","HideStartQuizPrompt","QuizVisible","true","QuizHidden","ExternalVideo","VideoLoadedData","savedTime","resumablePlayback","getProgress","TechSmithId","getSafeSeekTime","conditionallyConfigurePlaybackResume","VideoEnd","VideoReplay","VideoLoadedMetadata","MediaError","PlayerControlsHidden","PlayerControlsVisible","VideoTimeUpdate","roundedTime","floor","setProgress","toString","MediaReady","DisplayModeChanged","GoogleAnalyticsCustomEvent","sanitizedEvent","JSON","stringify","aiEvent","PlayerRumData","categorySuffix","rum","rumItem","gaMeasurement","variable","aiMeasurement","setUserInfo","userInfo","firstName","lastName","email","EmailAddress","run","_asyncToGenerator2","_regenerator","mark","_callee","reactionsPluginInfo","reactionsPlaybackPluginInfo","commentMarkerPluginInfo","annotationPluginInfo","marketingPluginInfo","captionDisplayStatusPluginInfo","wrap","_context","prev","next","mediaTitle","youtubeControls","featureSwitches","EnableReactions","registerPlugin","pluginElements","progressBar","sent","pluginContainerElement","classList","player","t0","media","showEmbeddedMarketing","t1","stop","setTheme","handleHideAnnotationsAndSelectComment","commentToSelect","getRoundedTime","abs","timeTolerance","updateMediaStateFromServer","destroy","_config$watchConfig","_config$embedConfig","addSrc","replace","disableContinueWithoutQuestions","posterSrc","tocSrc","rememberUserInfo","IsScreencast","enableTheaterMode","allowFastForward","StringUtil","isNullOrWhiteSpace","xmpSrc","audioDescriptionMediaSrc","EmbedPlatforms","slack","disablePictureInPicture","showADACompliantCaptions","ForceADACompliantCaptionStyle","Environment","EnvironmentType","live","quizServiceBaseUrl","QuizzingServiceUrl","resultsServiceBaseUrl","ResultsRootUrl","quizCreateInstanceUrl","QuizzingServiceCreateInstanceUrl","quizId","rotation","videoThumbnailsSrc","videoThumbnailWidth","videoThumbnailHeight","videoThumbnailInterval","videoThumbnailColumns","useLargerProgressBar","watch","preload","preloadOptions","metadata","customFullScreenDomElement","getElementsByClassName","mainElementClassName","chaptersString","chapters","chapter","formatTime","timeInMilliseconds","join","createTocFromDescription","encodeURIComponent","background","imageBackgroundColorDawn","imageBackgroundColorDusk","videoBackgroundColor","contextMenu","ignoreXmpControllerParameters","userSignedIn","IsSignedIn","watchConfig","isOwner","embedConfig","DisableSmartPlayerAccessToken","configure","contains","appendChild","ref","isYouTube","ReactDOM","createPortal","CaptioningTypes","AutoTranscribed","canClose","linkToMoreInfo","onClose","_ref7","_ref8","_rectPlaceholder","SmartPlayerPlaceholder","contentWidth","_SnagitLogo24x","_CamtasiaLogo","_CssUtil","MarketingEmbedPlugin","font","family","CssUtil","toRgba","medium","CloseButton","span","IconSvg","IconText","button","displayCloseButton","linked","MarketingEmbedPluginBase","isSnagitPlugin","showEmbeddedSnagitMarketing","isCamtasiaPlugin","showEmbeddedCamtasiaMarketing","madeWithSnagitEmbeddedBannerDisplayed","madeWithCamtasiaEmbeddedBannerDisplayed","promotionsCategory","open","screencast","madeWithSnagitMarketingEmbeddedLink","madeWithCamtasiaMarketingEmbeddedLink","madeWithSnagitEmbeddedButtonClicked","madeWithCamtasiaEmbeddedButtonClicked","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","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","large","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","createNewReaction","emojiData","reactionTimeAsMillisecondInt","reactionEmojiData","updatedReactions","indexToInsertReaction","round","conversationApi","createReaction","findIndex","CreateDate","getTime","splice","updateReactionsState","_x","onSmartPlayerControlsHidden","onSmartPlayerControlsVisible","reactionEmojis","emojiToDisplay","skin","reactionEmoji","nullTechSmithId","updateSelfIdentifiedUserProviderState","showSelfIdentifyModal","toFixed","Owner","Id","userHasAlreadyAddedReactionAtTime","selfIdentifiedUserStore","ReactionsPlaybackPlugin","ReactionPlaybackPluginBase","reactionContainerRef","mediaDurationRef","controlsHiddenRef","reactionsRef","displayedReactions","Map","onAnimationEnd","reactionDisplayElement","reactionId","getAttribute","createAnimatedReaction","newReaction","randomAnimationClass","ceil","random","setAttribute","ReactionExternalId","innerHTML","displayReactionsByTime","videoTime","playbackRate","filter","InitialDisplay","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","dawnPageBackgroundColor","minPlayerHeight","_profileApi","_swr","_StorageHelper","fetchUserProfile","techSmithId","profileApi","getUserProfileInfo","abrupt","_config$user","tscId","userProfileId","_useSWR","useSWR","revalidateOnFocus","onSuccess","results","SetSessionStorage","GetKey","swrKey","fallback","parse","GetSessionStorage","data","initialState","state","setState","setStateAction","isFunction","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","showWatchPageSnagitMessage","showWatchPageCamtasiaMessage","showWatchPageCaptureMessage","CAPTURE","padZero","num","totalSeconds","negative","roundedTotalSeconds","hoursPlace","secondsWithoutHours","minutesPlace","secondsPlace","Date","toISOString","substr","getSecondsFromTimeString","timeInSeconds","multiplier","timecodeParts","split","lowTimeBounds","timePartAsNumber","parseInt"],"sourceRoot":""}