{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = initializeBuildWatcher;\n\nvar _eventsource = require(\"./error-overlay/eventsource\");\n\nfunction initializeBuildWatcher() {\n  var shadowHost = document.createElement('div');\n  shadowHost.id = '__next-build-watcher'; // Make sure container is fixed and on a high zIndex so it shows\n\n  shadowHost.style.position = 'fixed';\n  shadowHost.style.bottom = '10px';\n  shadowHost.style.right = '20px';\n  shadowHost.style.width = 0;\n  shadowHost.style.height = 0;\n  shadowHost.style.zIndex = 99999;\n  document.body.appendChild(shadowHost);\n  var shadowRoot;\n  var prefix = '';\n\n  if (shadowHost.attachShadow) {\n    shadowRoot = shadowHost.attachShadow({\n      mode: 'open'\n    });\n  } else {\n    // If attachShadow is undefined then the browser does not support\n    // the Shadow DOM, we need to prefix all the names so there\n    // will be no conflicts\n    shadowRoot = shadowHost;\n    prefix = '__next-build-watcher-';\n  } // Container\n\n\n  var container = createContainer(prefix);\n  shadowRoot.appendChild(container); // CSS\n\n  var css = createCss(prefix);\n  shadowRoot.appendChild(css); // State\n\n  var isVisible = false;\n  var isBuilding = false;\n  var timeoutId = null; // Handle events\n\n  var evtSource = (0, _eventsource.getEventSourceWrapper)({\n    path: '/_next/webpack-hmr'\n  });\n  evtSource.addMessageListener(function (event) {\n    // This is the heartbeat event\n    if (event.data === \"\\uD83D\\uDC93\") {\n      return;\n    }\n\n    try {\n      handleMessage(event);\n    } catch (_unused) {}\n  });\n\n  function handleMessage(event) {\n    var obj = JSON.parse(event.data); // eslint-disable-next-line default-case\n\n    switch (obj.action) {\n      case 'building':\n        timeoutId && clearTimeout(timeoutId);\n        isVisible = true;\n        isBuilding = true;\n        updateContainer();\n        break;\n\n      case 'built':\n      case 'sync':\n        isBuilding = false; // Wait for the fade out transtion to complete\n\n        timeoutId = setTimeout(function () {\n          isVisible = false;\n          updateContainer();\n        }, 100);\n        updateContainer();\n        break;\n    }\n  }\n\n  function updateContainer() {\n    if (isBuilding) {\n      container.classList.add(\"\".concat(prefix, \"building\"));\n    } else {\n      container.classList.remove(\"\".concat(prefix, \"building\"));\n    }\n\n    if (isVisible) {\n      container.classList.add(\"\".concat(prefix, \"visible\"));\n    } else {\n      container.classList.remove(\"\".concat(prefix, \"visible\"));\n    }\n  }\n}\n\nfunction createContainer(prefix) {\n  var container = document.createElement('div');\n  container.id = \"\".concat(prefix, \"container\");\n  container.innerHTML = \"\\n    <div id=\\\"\".concat(prefix, \"icon-wrapper\\\">\\n      <svg viewBox=\\\"0 0 226 200\\\">\\n        <defs>\\n          <linearGradient\\n            x1=\\\"114.720775%\\\"\\n            y1=\\\"181.283245%\\\"\\n            x2=\\\"39.5399306%\\\"\\n            y2=\\\"100%\\\"\\n            id=\\\"\").concat(prefix, \"linear-gradient\\\"\\n          >\\n            <stop stop-color=\\\"#000000\\\" offset=\\\"0%\\\" />\\n            <stop stop-color=\\\"#FFFFFF\\\" offset=\\\"100%\\\" />\\n          </linearGradient>\\n        </defs>\\n        <g id=\\\"\").concat(prefix, \"icon-group\\\" fill=\\\"none\\\" stroke=\\\"url(#\").concat(prefix, \"linear-gradient)\\\" stroke-width=\\\"18\\\">\\n          <path d=\\\"M113,5.08219117 L4.28393801,197.5 L221.716062,197.5 L113,5.08219117 Z\\\" />\\n        </g>\\n      </svg>\\n    </div>\\n  \");\n  return container;\n}\n\nfunction createCss(prefix) {\n  var css = document.createElement('style');\n  css.textContent = \"\\n    #\".concat(prefix, \"container {\\n      position: absolute;\\n      bottom: 10px;\\n      right: 30px;\\n\\n      border-radius: 3px;\\n      background: #000;\\n      color: #fff;\\n      font: initial;\\n      cursor: initial;\\n      letter-spacing: initial;\\n      text-shadow: initial;\\n      text-transform: initial;\\n      visibility: initial;\\n\\n      padding: 7px 10px 8px 10px;\\n      align-items: center;\\n      box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\\n\\n      display: none;\\n      opacity: 0;\\n      transition: opacity 0.1s ease, bottom 0.1s ease;\\n      animation: \").concat(prefix, \"fade-in 0.1s ease-in-out;\\n    }\\n\\n    #\").concat(prefix, \"container.\").concat(prefix, \"visible {\\n      display: flex;\\n    }\\n\\n    #\").concat(prefix, \"container.\").concat(prefix, \"building {\\n      bottom: 20px;\\n      opacity: 1;\\n    }\\n\\n    #\").concat(prefix, \"icon-wrapper {\\n      width: 16px;\\n      height: 16px;\\n    }\\n\\n    #\").concat(prefix, \"icon-wrapper > svg {\\n      width: 100%;\\n      height: 100%;\\n    }\\n\\n    #\").concat(prefix, \"icon-group {\\n      animation: \").concat(prefix, \"strokedash 1s ease-in-out both infinite;\\n    }\\n\\n    @keyframes \").concat(prefix, \"fade-in {\\n      from {\\n        bottom: 10px;\\n        opacity: 0;\\n      }\\n      to {\\n        bottom: 20px;\\n        opacity: 1;\\n      }\\n    }\\n\\n    @keyframes \").concat(prefix, \"strokedash {\\n      0% {\\n        stroke-dasharray: 0 226;\\n      }\\n      80%,\\n      100% {\\n        stroke-dasharray: 659 226;\\n      }\\n    }\\n  \");\n  return css;\n}","map":{"version":3,"sources":["../../../client/dev/dev-build-watcher.js"],"names":["shadowHost","document","prefix","shadowRoot","mode","container","createContainer","css","createCss","isVisible","isBuilding","timeoutId","evtSource","path","event","handleMessage","obj","JSON","clearTimeout","updateContainer","setTimeout"],"mappings":"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","sourcesContent":["import { getEventSourceWrapper } from './error-overlay/eventsource'\n\nexport default function initializeBuildWatcher() {\n  const shadowHost = document.createElement('div')\n  shadowHost.id = '__next-build-watcher'\n  // Make sure container is fixed and on a high zIndex so it shows\n  shadowHost.style.position = 'fixed'\n  shadowHost.style.bottom = '10px'\n  shadowHost.style.right = '20px'\n  shadowHost.style.width = 0\n  shadowHost.style.height = 0\n  shadowHost.style.zIndex = 99999\n  document.body.appendChild(shadowHost)\n\n  let shadowRoot\n  let prefix = ''\n\n  if (shadowHost.attachShadow) {\n    shadowRoot = shadowHost.attachShadow({ mode: 'open' })\n  } else {\n    // If attachShadow is undefined then the browser does not support\n    // the Shadow DOM, we need to prefix all the names so there\n    // will be no conflicts\n    shadowRoot = shadowHost\n    prefix = '__next-build-watcher-'\n  }\n\n  // Container\n  const container = createContainer(prefix)\n  shadowRoot.appendChild(container)\n\n  // CSS\n  const css = createCss(prefix)\n  shadowRoot.appendChild(css)\n\n  // State\n  let isVisible = false\n  let isBuilding = false\n  let timeoutId = null\n\n  // Handle events\n  const evtSource = getEventSourceWrapper({ path: '/_next/webpack-hmr' })\n  evtSource.addMessageListener((event) => {\n    // This is the heartbeat event\n    if (event.data === '\\uD83D\\uDC93') {\n      return\n    }\n\n    try {\n      handleMessage(event)\n    } catch {}\n  })\n\n  function handleMessage(event) {\n    const obj = JSON.parse(event.data)\n\n    // eslint-disable-next-line default-case\n    switch (obj.action) {\n      case 'building':\n        timeoutId && clearTimeout(timeoutId)\n        isVisible = true\n        isBuilding = true\n        updateContainer()\n        break\n      case 'built':\n      case 'sync':\n        isBuilding = false\n        // Wait for the fade out transtion to complete\n        timeoutId = setTimeout(() => {\n          isVisible = false\n          updateContainer()\n        }, 100)\n        updateContainer()\n        break\n    }\n  }\n\n  function updateContainer() {\n    if (isBuilding) {\n      container.classList.add(`${prefix}building`)\n    } else {\n      container.classList.remove(`${prefix}building`)\n    }\n\n    if (isVisible) {\n      container.classList.add(`${prefix}visible`)\n    } else {\n      container.classList.remove(`${prefix}visible`)\n    }\n  }\n}\n\nfunction createContainer(prefix) {\n  const container = document.createElement('div')\n  container.id = `${prefix}container`\n  container.innerHTML = `\n    <div id=\"${prefix}icon-wrapper\">\n      <svg viewBox=\"0 0 226 200\">\n        <defs>\n          <linearGradient\n            x1=\"114.720775%\"\n            y1=\"181.283245%\"\n            x2=\"39.5399306%\"\n            y2=\"100%\"\n            id=\"${prefix}linear-gradient\"\n          >\n            <stop stop-color=\"#000000\" offset=\"0%\" />\n            <stop stop-color=\"#FFFFFF\" offset=\"100%\" />\n          </linearGradient>\n        </defs>\n        <g id=\"${prefix}icon-group\" fill=\"none\" stroke=\"url(#${prefix}linear-gradient)\" stroke-width=\"18\">\n          <path d=\"M113,5.08219117 L4.28393801,197.5 L221.716062,197.5 L113,5.08219117 Z\" />\n        </g>\n      </svg>\n    </div>\n  `\n\n  return container\n}\n\nfunction createCss(prefix) {\n  const css = document.createElement('style')\n  css.textContent = `\n    #${prefix}container {\n      position: absolute;\n      bottom: 10px;\n      right: 30px;\n\n      border-radius: 3px;\n      background: #000;\n      color: #fff;\n      font: initial;\n      cursor: initial;\n      letter-spacing: initial;\n      text-shadow: initial;\n      text-transform: initial;\n      visibility: initial;\n\n      padding: 7px 10px 8px 10px;\n      align-items: center;\n      box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\n\n      display: none;\n      opacity: 0;\n      transition: opacity 0.1s ease, bottom 0.1s ease;\n      animation: ${prefix}fade-in 0.1s ease-in-out;\n    }\n\n    #${prefix}container.${prefix}visible {\n      display: flex;\n    }\n\n    #${prefix}container.${prefix}building {\n      bottom: 20px;\n      opacity: 1;\n    }\n\n    #${prefix}icon-wrapper {\n      width: 16px;\n      height: 16px;\n    }\n\n    #${prefix}icon-wrapper > svg {\n      width: 100%;\n      height: 100%;\n    }\n\n    #${prefix}icon-group {\n      animation: ${prefix}strokedash 1s ease-in-out both infinite;\n    }\n\n    @keyframes ${prefix}fade-in {\n      from {\n        bottom: 10px;\n        opacity: 0;\n      }\n      to {\n        bottom: 20px;\n        opacity: 1;\n      }\n    }\n\n    @keyframes ${prefix}strokedash {\n      0% {\n        stroke-dasharray: 0 226;\n      }\n      80%,\n      100% {\n        stroke-dasharray: 659 226;\n      }\n    }\n  `\n\n  return css\n}\n"]},"metadata":{},"sourceType":"script"}