{"version":3,"mappings":"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","names":["PAP_Click_ReplayProtoolsConnectButton","properties","PAP_Dismiss_ReplayProtoolsConnectionModal","ProToolsConnectSnackbar","proToolsConnectionState","useAtomValue","proToolsConnectionStateAtom","showProToolsConnectionSnackbar","setShowProToolsConnectionSnackbar","useAtom","showProToolsConnectionSnackbarAtom","intl","useIntl","React","ProToolsConnectionState","onClose","connectingMessage","connectedMessage","errorMessage","messages","jsxs","ReelSnackbar","jsx","UIIcon","CheckmarkCircleLine","CloseLine","Snackbar","Text","ProgressBar","Button","SnackbarCloseMessage","ModalContainer","styled","color","IllustrationContainer","AsyncMusicianSpot","lazy","__vitePreload","mod","loadDigIllustration","ProToolsConnectModal","loggingClient","useLoggingClient","redCarpet","sendMessage","useExtensionContext","hasDismissedModal","replayStorage","HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL","proToolsAppDetected","proToolsAppDetectedAtom","setProToolsConnectionState","showProToolsConnectionModal","setShowProToolsConnectionModal","showProToolsConnectionModalAtom","sendMessageCallback","waitUntil","ms","resolve","reject","SendMessageType","connectToProTools","onDismiss","source","modalPreconditions","RedCarpetMode","PAP_Shown_ReplayProtoolsConnectionModal","Fragment","Modal","Suspense","FormattedMessage"],"ignoreList":[0,1],"sources":["../../node_modules/pap-events/replay/click_replay_protools_connect_button.js","../../node_modules/pap-events/replay/dismiss_replay_protools_connection_modal.js","../../src/components/pro_tools_connect_modal.tsx"],"sourcesContent":["export function PAP_Click_ReplayProtoolsConnectButton(properties) {\n    return {\n        class: 'replay',\n        action: 'click',\n        object: 'replay_protools_connect_button',\n        properties,\n    };\n}\n//# sourceMappingURL=click_replay_protools_connect_button.js.map","export function PAP_Dismiss_ReplayProtoolsConnectionModal(properties) {\n    return {\n        class: 'replay',\n        action: 'dismiss',\n        object: 'replay_protools_connection_modal',\n        properties,\n    };\n}\n//# sourceMappingURL=dismiss_replay_protools_connection_modal.js.map","import React, {Suspense} from 'react';\n\nimport {useAtom, useAtomValue} from 'jotai';\nimport {PAP_Click_ReplayProtoolsConnectButton} from 'pap-events/replay/click_replay_protools_connect_button';\nimport {PAP_Dismiss_ReplayProtoolsConnectionModal} from 'pap-events/replay/dismiss_replay_protools_connection_modal';\nimport {PAP_Shown_ReplayProtoolsConnectionModal} from 'pap-events/replay/shown_replay_protools_connection_modal';\nimport {FormattedMessage, useIntl} from 'react-intl';\nimport styled from 'styled-components';\n\nimport {Modal} from '@dropbox/dig-components/modal';\nimport {ProgressBar} from '@dropbox/dig-components/progress_indicators';\nimport {Snackbar} from '@dropbox/dig-components/snackbar';\nimport {Text} from '@dropbox/dig-components/typography';\nimport {UIIcon} from '@dropbox/dig-icons';\nimport {CheckmarkCircleLine, CloseLine} from '@dropbox/dig-icons/assets';\n\nimport {Button} from '~/components/button';\nimport {useExtensionContext} from '~/components/extension_context';\nimport {ReelSnackbar, SnackbarCloseMessage} from '~/components/snackbar';\nimport {color} from '~/components/styled';\nimport {lazy} from '~/lib/lazy';\nimport {HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL, replayStorage} from '~/lib/storage';\nimport {useLoggingClient} from '~/lib/use_logging_client';\nimport {\n  proToolsAppDetectedAtom,\n  ProToolsConnectionState,\n  proToolsConnectionStateAtom,\n  showProToolsConnectionModalAtom,\n  showProToolsConnectionSnackbarAtom,\n} from '~/state/pro_tools';\nimport {RedCarpetMode, SendMessageType} from '~/use_extensions';\n\nexport const ProToolsConnectSnackbar = () => {\n  const proToolsConnectionState = useAtomValue(proToolsConnectionStateAtom);\n  const [showProToolsConnectionSnackbar, setShowProToolsConnectionSnackbar] = useAtom(\n    showProToolsConnectionSnackbarAtom,\n  );\n  const intl = useIntl();\n\n  React.useEffect(() => {\n    if (proToolsConnectionState === ProToolsConnectionState.Disconnected) {\n      setShowProToolsConnectionSnackbar(false);\n    } else {\n      setShowProToolsConnectionSnackbar(true);\n    }\n  }, [proToolsConnectionState, setShowProToolsConnectionSnackbar]);\n\n  const onClose = React.useCallback(() => {\n    setShowProToolsConnectionSnackbar(false);\n  }, [setShowProToolsConnectionSnackbar]);\n\n  const connectingMessage = intl.formatMessage({\n    defaultMessage: 'Connecting Pro Tools...',\n    id: 'e3RRBD',\n    description: 'Snackbar message indicating that Replay is connecting to Pro Tools',\n  });\n\n  const connectedMessage = intl.formatMessage({\n    defaultMessage: 'Connected Pro Tools.',\n    id: 'r8rHU2',\n    description: 'Snackbar message indicating that Replay has connected to Pro Tools',\n  });\n\n  const errorMessage = intl.formatMessage({\n    defaultMessage: 'Can’t connect. Open a Pro Tools session and try again.',\n    id: 'hCaXv9',\n    description: 'Snackbar message indicating that Replay cannot connect to Pro Tools',\n  });\n\n  const messages = new Map<ProToolsConnectionState, string>();\n  messages.set(ProToolsConnectionState.Connecting, connectingMessage);\n  messages.set(ProToolsConnectionState.Connected, connectedMessage);\n  messages.set(ProToolsConnectionState.Errored, errorMessage);\n\n  return (\n    <ReelSnackbar\n      onRequestClose={onClose}\n      open={showProToolsConnectionSnackbar}\n      timeout={proToolsConnectionState === ProToolsConnectionState.Connected ? 5000 : 0}\n    >\n      {proToolsConnectionState === ProToolsConnectionState.Connected && (\n        <UIIcon src={CheckmarkCircleLine} />\n      )}\n      {proToolsConnectionState === ProToolsConnectionState.Errored && <UIIcon src={CloseLine} />}\n      <Snackbar.Message>\n        <Text color=\"standard\">{messages.get(proToolsConnectionState)}</Text>\n        {proToolsConnectionState === ProToolsConnectionState.Connecting && (\n          <ProgressBar in={true} isIndeterminate={true} />\n        )}\n      </Snackbar.Message>\n\n      <Snackbar.Actions>\n        <Button onClick={onClose} variant=\"transparent\">\n          <SnackbarCloseMessage />\n        </Button>\n      </Snackbar.Actions>\n    </ReelSnackbar>\n  );\n};\n\nconst ModalContainer = styled.div`\n  background-color: ${color('Background Raised')};\n`;\n\nconst IllustrationContainer = styled.div`\n  max-width: 100%;\n\n  & svg {\n    max-width: 100%;\n    max-height: 338px;\n    color: ${color('Text Base')};\n  }\n`;\n\nconst AsyncMusicianSpot = lazy(() =>\n  import(/* webpackChunkName: 'spot_musician' */ '@dropbox/dig-illustrations/spot/musician').then(\n    (mod) => ({default: mod.MusicianSpot}),\n  ),\n);\n\nlet loadDigIllustration = false;\nexport const ProToolsConnectModal = () => {\n  const loggingClient = useLoggingClient();\n  const {redCarpet, sendMessage} = useExtensionContext();\n  const hasDismissedModal = Boolean(replayStorage.get(HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL));\n  const proToolsAppDetected = useAtomValue(proToolsAppDetectedAtom);\n  const [proToolsConnectionState, setProToolsConnectionState] = useAtom(\n    proToolsConnectionStateAtom,\n  );\n  const [showProToolsConnectionModal, setShowProToolsConnectionModal] = useAtom(\n    showProToolsConnectionModalAtom,\n  );\n  loadDigIllustration ||= showProToolsConnectionModal;\n\n  const sendMessageCallback = React.useCallback(async () => {\n    if (sendMessage) {\n      // We won't get a Promise back if ProToolsRegisterConnectionRequest doesn't exist in\n      // Red Carpet, aka this is an older version of the Mac app.\n      // Until we build more smarts into Red Carpet, reject if this takes too long.\n      const waitUntil = (ms: number) =>\n        new Promise((resolve, reject) => setTimeout(() => reject(), ms));\n      try {\n        await Promise.race([\n          sendMessage(SendMessageType.ProToolsRegisterConnectionRequest),\n          waitUntil(30000),\n        ]);\n      } catch (error) {\n        setProToolsConnectionState(ProToolsConnectionState.Errored);\n      }\n    }\n  }, [sendMessage, setProToolsConnectionState]);\n\n  React.useEffect(() => {\n    if (proToolsConnectionState === ProToolsConnectionState.Errored) {\n      setShowProToolsConnectionModal(true);\n    }\n  }, [proToolsConnectionState, setShowProToolsConnectionModal]);\n\n  React.useEffect(() => {\n    if (proToolsConnectionState === ProToolsConnectionState.Connecting) {\n      sendMessageCallback();\n    }\n    if (proToolsConnectionState === ProToolsConnectionState.Connected) {\n      replayStorage.set(HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL, true);\n    }\n  }, [proToolsConnectionState, sendMessageCallback]);\n\n  const connectToProTools = React.useCallback(async () => {\n    loggingClient.logPap(PAP_Click_ReplayProtoolsConnectButton({}));\n    // eslint-disable-next-line deprecation/deprecation\n    loggingClient.logEvent('click_protools_connect_button');\n    setShowProToolsConnectionModal(false);\n    setProToolsConnectionState(ProToolsConnectionState.Connecting);\n  }, [setProToolsConnectionState, setShowProToolsConnectionModal, loggingClient]);\n\n  const onDismiss = React.useCallback(\n    (source: 'clicked_outside' | 'close_button') => {\n      replayStorage.set(HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL, true);\n      setShowProToolsConnectionModal(false);\n      loggingClient.logPap(PAP_Dismiss_ReplayProtoolsConnectionModal({modalDismissSource: source}));\n      // eslint-disable-next-line deprecation/deprecation\n      loggingClient.logEvent('dismiss_protools_connection_modal', {modal_dismiss_source: source});\n      if (proToolsConnectionState === ProToolsConnectionState.Errored) {\n        setProToolsConnectionState(ProToolsConnectionState.Disconnected);\n      }\n    },\n    [\n      setShowProToolsConnectionModal,\n      loggingClient,\n      proToolsConnectionState,\n      setProToolsConnectionState,\n    ],\n  );\n\n  const modalPreconditions =\n    redCarpet.mode === RedCarpetMode.MAC && proToolsAppDetected && hasDismissedModal === false;\n  proToolsConnectionState !== ProToolsConnectionState.Connected &&\n    proToolsConnectionState !== ProToolsConnectionState.Connecting;\n\n  React.useEffect(() => {\n    setShowProToolsConnectionModal(modalPreconditions);\n  }, [modalPreconditions, setShowProToolsConnectionModal]);\n\n  React.useEffect(() => {\n    if (\n      modalPreconditions === true &&\n      replayStorage.get(HAS_DISMISSED_PROTOOLS_CONNECTION_MODAL) === null\n    ) {\n      loggingClient.logPap(\n        PAP_Shown_ReplayProtoolsConnectionModal({\n          replayProtoolsConnectionModalReason: 'onboarding',\n        }),\n      );\n      // eslint-disable-next-line deprecation/deprecation\n      loggingClient.logEvent('shown_protools_connection_modal', {\n        connection_reason: 'onboarding',\n      });\n    }\n  }, [modalPreconditions, loggingClient]);\n\n  return (\n    <>\n      <Modal\n        isCentered\n        onRequestClose={() => onDismiss('clicked_outside')}\n        open={showProToolsConnectionModal}\n      >\n        <ModalContainer>\n          <IllustrationContainer>\n            <Suspense fallback={null}>\n              {loadDigIllustration ? <AsyncMusicianSpot /> : null}\n            </Suspense>\n          </IllustrationContainer>\n          <Modal.Header hasBottomSpacing=\"title-standard\">\n            <Modal.Title>\n              <FormattedMessage\n                defaultMessage=\"Want to connect to Avid Pro Tools?\"\n                description=\"Modal title for connecting the Replay Mac app to Avid Pro Tools\"\n                id=\"IZQFK4\"\n              />\n            </Modal.Title>\n          </Modal.Header>\n          <Modal.Body>\n            <FormattedMessage\n              defaultMessage=\"First, open a Pro Tools session on your desktop. Then, come back here to connect.\"\n              description=\"Modal body text describing how to connect the Replay Mac app to Avid Pro Tools\"\n              id=\"us/xCu\"\n            />\n          </Modal.Body>\n          <Modal.Footer>\n            <Button onClick={() => onDismiss('close_button')} variant=\"opacity\">\n              <FormattedMessage\n                defaultMessage=\"Cancel\"\n                description=\"Do not connect the Replay Mac app to Avid Pro Tools\"\n                id=\"ForwmE\"\n              />\n            </Button>\n            <Button onClick={connectToProTools} variant=\"primary\">\n              <FormattedMessage\n                defaultMessage=\"Connect\"\n                description=\"Connect the Replay Mac app to Avid Pro Tools\"\n                id=\"lShg9J\"\n              />\n            </Button>\n          </Modal.Footer>\n        </ModalContainer>\n      </Modal>\n      <ProToolsConnectSnackbar />\n    </>\n  );\n};\n"],"file":"static/pro_tools_connect_modal-BWzJ_pGj.js"}