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