{
  "version": 3,
  "file": "bundle.css",
  "sources": [
    "App.svelte",
    "Confetti.svelte",
    "Keyboard.svelte",
    "Cell.svelte",
    "Clue.svelte",
    "ClueBar.svelte",
    "ClueList.svelte",
    "Clues.svelte",
    "CompletedMessage.svelte",
    "Crossword.svelte",
    "Home.svelte",
    "Loader.svelte",
    "Puzzle.svelte",
    "Toolbar.svelte"
  ],
  "sourcesContent": [
    "<script>\n  import Crossword from \"../src/Crossword.svelte\";\n  import dataNYTMini from \"./data/nyt-mini.json\";\n  import dataNYTDaily from \"./data/nyt-daily.json\";\n  import dataOreo from \"./data/oreo.json\";\n  import dataUSA from \"./data/usa.json\";\n  import checkMobile from \"../src/helpers/checkMobile\";\n  import { Router, Route } from \"svelte-routing\";\n  import Home from \"../src/Home.svelte\";\n  import NotFound from \"../src/NotFound.svelte\";\n  let revealedUSA;\n  let theme;\n  // let isMobile;\n  // let showKeyboard = false;\n  // isMobile = checkMobile();\n\n  // if (isMobile) {\n  //   showKeyboard = true;\n  // }\n\n  export let url = \"\";\n  const urlParams = new URLSearchParams(window.location.search);\n  const isEmbeded = urlParams.has('version');\n</script>\n\n<Router url=\"{url}\">\n  <article style=\"{`${\n    isEmbeded == false ? '' : 'max-width: 100% !important;padding:1px 0px !important;'\n  }`}\">\n    <section id=\"mobile\"  style=\"{`${\n      isEmbeded == false ? 'max-width: 825px;' : ''\n    }`}\">\n      <Route path=\"/error-404\" exact component=\"{NotFound}\" />\n\n      <!-- <Crossword data=\"{dataNYTMini}\" showKeyboard=\"{showKeyboard}\" /> -->\n    </section>\n    <Route path=\"/:url\" component=\"{Crossword}\" />\n\n  </article>\n  <Route path=\"/\" component=\"{Home}\" />\n</Router>\n\n<style>\n\n  article {\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 1em;\n    font-family: sans-serif;\n  }\n  /* .intro {\n    text-align: left;\n    max-width: 760px;\n    font-size: 1.5em;\n  } */\n  section {\n    max-width: 960px;\n    margin: 1em 0;\n  }\n  /* \n  .info {\n    max-width: 640px;\n\n    text-align: left;\n    font-size: 1.125em;\n  } */\n  /* .info a {\n    margin-right: 0.25em;\n  }\n  h1 {\n    font-size: 1.5em;\n  }\n  h2 {\n    font-family: 'Arial';\n    font-style: normal;\n    font-weight: 700;\n    font-size: 16px;\n    line-height: 123.5%;\n\n\n\n    color: #000000;\n  }\n  p {\n    font-family: 'Arial';\n    font-style: normal;\n    font-weight: 300;\n    font-size: 15px;\n    line-height: 123.5%;\n\n  }\n\n  #themes {\n    padding: 1em;\n  }\n\n  #themes.dark {\n    background: #1a1a1a;\n    color: #fff;\n  }\n  code {\n    font-size: 0.85em;\n    background-color: #efefef;\n    padding: 0 0.25em;\n  }\n\n  button {\n    cursor: pointer;\n  } */\n  @media only screen and (max-width: 720px) {\n    /* keyboard styling */\n  article {\n    padding-top: 10px !important;\n  }\n  :global(.keyboard button){\n    border: 1px solid white !important;\n    background:white !important;\n    color: black !important;\n    margin: 5px 2.5px !important;\n    font-size: 22px !important;\n    width: 8.2% !important;\n  }\n  :global(.keyboard){\n    background:#e4eaef !important;\n  }\n  :global(.toolbar){\n   padding-top: 0px !important;\n  }\n  :global(.clue-bar-margin-top){\n    margin-top: 10px !important;\n  }\n\n  /* :global(body){\n    font-family: 'Comic Sans MS', cursive !important;\n  } */\n}\n\n@media only screen and (max-width: 425px) {\n  /* article { */\n    /* height: 100%;\n    max-height: 440px;\n    overflow: scroll; */\n  /* } */\n  :global(.keyboard button){\n    margin: 4px 2.5px !important;\n    font-size: 20px !important;\n    width: 8% !important;\n  }\n  :global(.clue-bar-margin-top .bar){\n    padding: 13px 0px !important;\n  }\n}\n</style>\n",
    "<script>\r\n  import { onMount } from \"svelte\"\r\n\r\n  export let size = 10\r\n  export let x = [-0.5, 0.5]\r\n  export let y = [0.25, 1]\r\n  export let duration = 2000\r\n  export let infinite = false\r\n  export let delay = [0, 50]\r\n  export let colorRange = [0, 360]\r\n  export let colorArray = []\r\n  export let amount = 50\r\n  export let iterationCount = 1\r\n  export let fallDistance = \"100px\"\r\n  export let rounded = false\r\n  export let cone = false\r\n  export let noGravity = false\r\n  export let xSpread = 0.15\r\n  export let destroyOnComplete = true\r\n\r\n  let complete = false\r\n\r\n  onMount(() => {\r\n    if (!destroyOnComplete || infinite || iterationCount == \"infinite\") return\r\n\r\n    setTimeout(() => complete = true, (duration + delay[1]) * iterationCount)\r\n  })\r\n\r\n  function randomBetween(min, max) {\r\n    return Math.random() * (max - min) + min\r\n  }\r\n\r\n  function getColor() {\r\n    if (colorArray.length) return colorArray[Math.round(Math.random() * (colorArray.length - 1))]\r\n    else return `hsl(${Math.round(randomBetween(colorRange[0], colorRange[1]))}, 75%, 50%`\r\n  }\r\n</script>\r\n\r\n\r\n\r\n{#if !complete}\r\n  <div class=\"confetti-holder\" class:rounded class:cone class:no-gravity={noGravity}>\r\n    {#each { length: amount } as _}\r\n      <div\r\n        class=\"confetti\"\r\n        style=\"\r\n        --fall-distance: {fallDistance};\r\n        --size: {size}px;\r\n        --color: {getColor()};\r\n        --skew: {randomBetween(-45, 45)}deg,{randomBetween(-45, 45)}deg;\r\n        --rotation-xyz: {randomBetween(-10, 10)}, {randomBetween(-10, 10)}, {randomBetween(-10, 10)};\r\n        --rotation-deg: {randomBetween(0, 360)}deg;\r\n        --translate-y-multiplier: {randomBetween(y[0], y[1])};\r\n        --translate-x-multiplier: {randomBetween(x[0], x[1])};\r\n        --scale: {0.1 * randomBetween(2, 10)};\r\n        --transition-duration: {infinite ? `calc(${duration}ms * var(--scale))` : `${duration}ms`};\r\n        --transition-delay: {randomBetween(delay[0], delay[1])}ms;\r\n        --transition-iteration-count: {infinite ? 'infinite' : iterationCount};\r\n        --x-spread: {(1 - xSpread)}\" />\r\n    {/each}\r\n  </div>\r\n{/if}\r\n\r\n\r\n\r\n<style>\r\n  .confetti-holder {\r\n    position: relative;\r\n  }\r\n\r\n  @keyframes rotate {\r\n    0% {\r\n      transform: skew(var(--skew)) rotate3d(var(--full-rotation));\r\n    }\r\n\r\n    100% {\r\n      transform: skew(var(--skew)) rotate3d(var(--rotation-xyz), calc(var(--rotation-deg) + 360deg));\r\n    }\r\n  }\r\n\r\n  @keyframes translate {\r\n    0% {\r\n      opacity: 1;\r\n    }\r\n\r\n    8% {\r\n      transform: translateY(calc(var(--translate-y) * 0.95)) translateX(calc(var(--translate-x) * (var(--x-spread) * 0.9)));\r\n      opacity: 1;\r\n    }\r\n\r\n    12% {\r\n      transform: translateY(var(--translate-y)) translateX(calc(var(--translate-x) * (var(--x-spread) * 0.95)));\r\n      opacity: 1;\r\n    }\r\n\r\n    16% {\r\n      transform: translateY(var(--translate-y)) translateX(calc(var(--translate-x) * var(--x-spread)));\r\n      opacity: 1;\r\n    }\r\n\r\n    100% {\r\n      transform: translateY(calc(var(--translate-y) + var(--fall-distance))) translateX(var(--translate-x));\r\n      opacity: 0;\r\n    }\r\n  }\r\n\r\n  @keyframes no-gravity-translate {\r\n    0% {\r\n      opacity: 1;\r\n    }\r\n\r\n    100% {\r\n      transform: translateY(var(--translate-y)) translateX(var(--translate-x));\r\n      opacity: 0;\r\n    }\r\n  }\r\n\r\n  .confetti {\r\n    --translate-y: calc(-200px * var(--translate-y-multiplier));\r\n    --translate-x: calc(200px * var(--translate-x-multiplier));\r\n    position: absolute;\r\n    height: calc(var(--size) * var(--scale));\r\n    width: calc(var(--size) * var(--scale));\r\n    animation: translate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear;\r\n    opacity: 0;\r\n    pointer-events: none;\r\n  }\r\n\r\n  .confetti::before {\r\n    --full-rotation: var(--rotation-xyz), var(--rotation-deg);\r\n    content: '';\r\n    display: block;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: var(--color);\r\n    background-size: contain;\r\n    transform: skew(var(--skew)) rotate3d(var(--full-rotation));\r\n    animation: rotate var(--transition-duration) var(--transition-delay) var(--transition-iteration-count) linear;\r\n  }\r\n\r\n  .rounded .confetti::before {\r\n    border-radius: 50%;\r\n  }\r\n\r\n  .cone .confetti {\r\n    --translate-x: calc(200px * var(--translate-y-multiplier) * var(--translate-x-multiplier));\r\n  }\r\n\r\n  .no-gravity .confetti {\r\n    animation-name: no-gravity-translate;\r\n    animation-timing-function: ease-out;\r\n  }\r\n\r\n  @media (prefers-reduced-motion) {\r\n    .confetti,\r\n    .confetti::before {\r\n      animation: none;\r\n    }\r\n  }\r\n</style>\r\n",
    "<script>\n  import { createEventDispatcher } from \"svelte\";\n  import standard from \"./layouts/standard.js\";\n  import crossword from \"./layouts/crossword.js\";\n\n  import backspaceSVG from \"./svg/backspace.js\";\n  import enterSVG from \"./svg/enter.js\";\n\n  const dispatch = createEventDispatcher();\n\n  export let custom;\n  export let style = \"\";\n  export let layout = \"standard\";\n\n  let page = 0;\n  let shifted = false;\n\n  const alphabet = \"abcdefghijklmnopqrstuvwxyz\";\n  const layouts = { standard, crossword };\n\n  const swaps = {\n    Page0: \"abc\",\n    Page1: \"?123\",\n    Space: \" \",\n    Shift: \"abc\",\n    Enter: enterSVG,\n    Backspace: backspaceSVG,\n  };\n\n  const unique = (arr) => [...new Set(arr)];\n\n  $: rawData = custom || layouts[layout];\n  $: data = rawData.map((d) => {\n    let display = d.display;\n    if (swaps[d.value]) display = swaps[d.value];\n    if (!display) display = shifted ? d.value.toUpperCase() : d.value;\n    if (d.value === \"Shift\")\n      display = shifted ? swaps[d.value] : swaps[d.value].toUpperCase();\n    return {\n      ...d,\n      display,\n    };\n  });\n\n  $: page0 = data.filter((d) => !d.page);\n  $: page1 = data.filter((d) => d.page);\n\n  $: rows0 = unique(page0.map((d) => d.row));\n  $: rows0, rows0.sort((a, b) => a - b);\n\n  $: rows1 = unique(page1.map((d) => d.row));\n  $: rows1, rows1.sort((a, b) => a - b);\n\n  $: rowData0 = rows0.map((r) => page0.filter((k) => k.row === r));\n  $: rowData1 = rows0.map((r) => page1.filter((k) => k.row === r));\n  $: rowData = [rowData0, rowData1];\n  $: maxInRow0 = Math.max(...rowData0.map((r) => r.length));\n  $: maxInRow1 = Math.max(...rowData1.map((r) => r.length));\n  $: maxInRow = Math.max(maxInRow0, maxInRow1);\n  $: percentWidth = `${(1 / maxInRow) * 100}%`;\n\n  function onKey(value, event) {\n    event.preventDefault();\n    if (value.includes(\"Page\")) {\n      page = +value.substr(-1);\n    } else if (value === \"Shift\") {\n      shifted = !shifted;\n    } else {\n      let output = value;\n      if (shifted && alphabet.includes(value)) output = value.toUpperCase();\n      if (value === \"Space\") output = \" \";\n      dispatch(\"keydown\", output);\n    }\n    event.stopPropagation();\n    return false;\n  }\n</script>\n\n<div class=\"keyboard\">\n  {#each rowData as row, i}\n    <div class=\"page\" class:visible=\"{i === page}\">\n      {#each row as keys}\n        <div class=\"row row--{i}\">\n          {#each keys as { value, display }}\n            <button\n              style=\"--w: {percentWidth};\"\n              class=\"{style} key--{value}\"\n              class:single=\"{value.length === 1}\"\n              on:touchstart=\"{(e) => onKey(value, e)}\"\n              on:mousedown=\"{(e) => onKey(value, e)}\">\n              {#if display.includes('<svg')}\n                {@html display}\n              {:else}{display}{/if}\n            </button>\n          {/each}\n        </div>\n      {/each}\n    </div>\n  {/each}\n</div>\n\n<style>\n  .row {\n    display: flex;\n    justify-content: center;\n  }\n\n  button {\n    display: inline-block;\n    font-family: sans-serif;\n    font-size: 1em;\n    text-align: center;\n    padding: 0.5em;\n    margin: 0.1em;\n    border-radius: 2px;\n    background-color: #efefef;\n    border: none;\n    cursor: pointer;\n    line-height: 1;\n    vertical-align: baseline;\n    width: var(--w);\n  }\n\n  button.depth {\n    box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, 0.25);\n    margin: 0.2em;\n  }\n\n  button.outline {\n    border: 1px solid rgba(0, 0, 0, 0.25);\n  }\n\n  button:active {\n    transform: scale(2);\n    background-color: #cdcdcd;\n  }\n\n  button.single {\n    padding: 0.5em 0;\n  }\n\n  .page {\n    display: none;\n  }\n\n  .page.visible {\n    display: block;\n  }\n\n  button.key--Space {\n    width: 20%;\n  }\n\n  button.key--Page0,\n  button.key--Page1,\n  button.key--Shift,\n  button.key--Backspace,\n  button.key--Enter {\n    width: auto;\n    min-width: var(--w);\n  }\n</style>\n",
    "<script>\n  import { onMount } from 'svelte';\n  import Crossword from \"./Crossword.svelte\";\n  export let x;\n  export let y;\n  export let value;\n  export let answer;\n  export let number;\n  export let disabled;\n  export let index;\n  export let custom;\n  export let fontFamily;\n  export let changeDelay = 0;\n  export let isRevealing = false;\n  export let isChecking = false;\n  export let isFocused = false;\n  export let isSecondarilyFocused = false;\n  export let onFocusCell = () => {};\n  export let onCellUpdate = () => {};\n  export let onFocusClueDiff = () => {};\n  export let onMoveFocus = () => {};\n  export let onFlipDirection = () => {};\n  export let onHistoricalChange = () => {};\n\n\n\n  //here i am checking if the query paramter have embebed version parameter\n  const urlParams = new URLSearchParams(window.location.search);\n  const isEmbeded = urlParams.has('version');\n\n\n  let element;\n\n  $: isFocused, onFocusSelf();\n  $: correct = answer === value;\n  $: showCheck = isChecking && value;\n\n  export function onFocusSelf() {\n    if (!element) return;\n    if (isFocused) element.focus();\n  }\n\n\n  function getToStorage() {\n    let keyword;\n    // if(isEmbeded == false){\n      keyword = localStorage.getItem(\"keyword\");\n    // }\n\n    if (keyword!=null) {\n      return JSON.parse(keyword);\n    }\n    return [];\n  }\n  function setToStorage(data){\n    // if(isEmbeded == false){\n      localStorage.setItem(\"keyword\", JSON.stringify(data));\n    // }\n\n\n  }\n\n  function onKeydown(e) {\n\n    // return fsalse;\n    if (disabled == true) {\n      return false;\n    }\n    if (e.ctrlKey && e.key.toLowerCase() == \"z\") {\n      onHistoricalChange(e.shiftKey ? 1 : -1);\n    }\n\n    if (e.ctrlKey) return;\n    if (e.altKey) return;\n\n    if (e.key === \"Tab\") {\n      onFocusClueDiff(e.shiftKey ? -1 : 1);\n      e.preventDefault();\n      e.stopPropagation();\n      return;\n    }\n\n    if (e.key == \" \") {\n      onFlipDirection();\n      e.preventDefault();\n      e.stopPropagation();\n      return;\n    }\n\n    if ([\"Delete\", \"Backspace\"].includes(e.key)) {\n      // alert('backspace');\n        // if(isEmbeded == false){\n          localStorage.setItem('isKeepTrying','true');\n        // }\n        let data = getToStorage();\n        if(data.length){\n          data = data.filter(item => item.index !== index);\n          setToStorage(data);\n        }\n      \n        if(data.length==0){\n          localStorage.removeItem('keyword');\n        }\n       \n      onCellUpdate(index, \"\", -1, true);\n      return;\n    }\n\n    const isKeyInAlphabet = /^[a-zA-Z()]$/.test(e.key);\n    if (isKeyInAlphabet) {\n      let data = getToStorage();\n      if (data.length) {\n        const object = { index: index, value: e.key.toUpperCase() };\n        data = data.filter(item => item.index !== index);\n\n        data.push(object);\n        setToStorage(data);\n       \n      } else {\n        const array = [{ index: index, value: e.key.toUpperCase() }];\n        setToStorage(array);\n      }\n    \n      onCellUpdate(index, e.key.toUpperCase());\n      return;\n    }\n\n    const diff = {\n      ArrowLeft: [\"across\", -1],\n      ArrowRight: [\"across\", 1],\n      ArrowUp: [\"down\", -1],\n      ArrowDown: [\"down\", 1],\n    }[e.key];\n    if (diff) {\n      onMoveFocus(...diff);\n      e.preventDefault();\n      e.stopPropagation();\n      return;\n    }\n  }\n\n  function onClick() {\n    onFocusCell(index);\n  }\n  \n\n  function pop(node, { delay = 0, duration = 250 }) {\n    return {\n      delay,\n      duration,\n      css: (t) =>\n        [\n          `transform: translate(0, ${1 - t}px)`, //\n        ].join(\";\"),\n    };\n  }\n\n  onMount(() => {\n\t\tif (!element) return;\n    if (isFocused) element.focus();\n\t});\n\n</script>\n\n<g\n  class=\"cell {custom} cell-{x}-{y}\"\n  class:is-focused=\"{isFocused}\"\n  class:is-secondarily-focused=\"{isSecondarilyFocused}\"\n  class:is-correct=\"{showCheck && correct}\"\n  class:is-incorrect=\"{showCheck && !correct}\"\n  transform=\"{`translate(${x}, ${y})`}\"\n  tabIndex=\"0\"\n  on:click=\"{onClick}\"\n  on:keydown=\"{onKeydown}\"\n  bind:this=\"{element}\"\n>\n  <rect width=\"1\" height=\"1\"></rect>\n\n  {#if showCheck && !correct}\n    <line x1=\"0\" y1=\"1\" x2=\"1\" y2=\"0\"></line>\n  {/if}\n\n  {#if value}\n    <text\n    style:font-family={fontFamily ? fontFamily : ''}\n      transition:pop=\"{{\n        y: 5,\n        delay: changeDelay,\n        duration: isRevealing ? 250 : 0,\n      }}\"\n      class=\"value\"\n      x=\"0.5\"\n      y=\"0.9\"\n      text-anchor=\"middle\"\n    >\n      {value}\n    </text>\n  {/if}\n  <text style:font-family={fontFamily ? fontFamily : ''} class=\"number\" x=\"0.08\" y=\"0.3\" text-anchor=\"start\">{number}</text>\n</g>\n\n<style>\n  g {\n    cursor: pointer;\n    user-select: none;\n  }\n\n  g:focus {\n    outline: none;\n  }\n\n  g.is-secondarily-focused rect {\n    fill: var(--secondary-highlight-color);\n  }\n\n  g.is-focused rect {\n    fill: var(--primary-highlight-color);\n  }\n\n  text {\n    pointer-events: none;\n    line-height: 1;\n    font-family: var(--font);\n    fill: var(--main-color);\n  }\n\n  .value {\n    font-size: 0.7em;\n    font-weight: 400;\n  }\n\n  .number {\n    font-size: 0.3em;\n    font-weight: 400;\n    fill: var(--main-color);\n    opacity: 0.5;\n  }\n\n  rect {\n    fill: var(--bg-color);\n    stroke: var(--main-color);\n    stroke-width: 0.01em;\n    transition: fill 0.1s ease-out;\n  }\n\n  line {\n    stroke: var(--main-color);\n    stroke-width: 0.02em;\n  }\n</style>\n",
    "<script>\n  import scrollTo from \"./helpers/scrollTo.js\";\n\n  export let number;\n  export let clue;\n  export let news_url;\n  export let custom;\n  export let isFilled;\n  export let isNumberFocused = false;\n  export let isDirectionFocused = false;\n  export let isDisableHighlight = false;\n  export let onFocus = () => {};\n  export let fontFamily;\n\n  let element;\n\n  $: isFocused = isNumberFocused;\n  $: clueLink = true;\n</script>\n\n<li bind:this=\"{element}\" use:scrollTo=\"{isFocused}\">\n  <!-- href=\"{news_url ? '#' : '#'}\" -->\n  <!-- target=\"{news_url ? '_blank' : ''}\" -->\n  <span\n   style:font-family={fontFamily ? fontFamily : ''}\n    class=\"clue {custom} no-underline\"\n    class:is-disable-highlight=\"{isDisableHighlight}\"\n    class:is-number-focused=\"{isNumberFocused}\"\n    class:clu-link=\"{clueLink}\"\n    class:is-direction-focused=\"{isDirectionFocused}\"\n    class:is-filled=\"{isFilled}\"\n    on:click=\"{onFocus}\"\n  >\n    <strong>{number}</strong>\n    {clue}\n    \n  </span>\n  {#if news_url}\n  <a href=\"{news_url ? news_url : '#'}\" target=\"_parent\"><img src=\"{`/external_link.png`}\" class=\"external_link_icon\" alt=\"News article\"/></a>\n  {/if}\n</li>\n\n<style>\n  .external_link_icon{\n    width: 15px;\n    margin-right: 10px;\n    height: 15px;\n    display: inline-block;\n    float: right;\n    margin-top: -25px;\n  }\n  /* button {\n    display: flex;\n    width: 100%;\n    background: none;\n    text-align: left;\n    appearance: none;\n    outline: none;\n    border: none;\n    border-left: 6px solid transparent;\n    padding: 0.5em;\n    cursor: pointer;\n    line-height: 1.325;\n    color: var(--main-color);\n    font-family: var(--font);\n    font-size: 1em;\n    cursor: pointer;\n  } */\n  .underline {\n    text-decoration: underline !important;\n  }\n  .no-underline {\n    text-decoration: none !important;\n  }\n  .clu-link {\n    /* text-decoration: none !important; */\n    display: flex;\n    width: 100%;\n    background: none;\n    text-align: left;\n    appearance: none;\n    outline: none;\n    border: none;\n    border-left: 6px solid transparent;\n    padding: 0.5em;\n    cursor: pointer;\n    line-height: 1.325;\n    color: var(--main-color);\n    font-family: var(--font);\n    font-size: 1em;\n    cursor: pointer;\n  }\n\n  strong {\n    min-width: 1.25em;\n    display: inline-block;\n    text-align: right;\n    margin-right: 0.5em;\n  }\n\n\n  .clue:focus:not(.is-disable-highlight) {\n    border-color: var(--secondary-highlight-color);\n  }\n  .is-number-focused:not(.is-disable-highlight) {\n    border-left-color: var(--secondary-highlight-color);\n  }\n  .is-number-focused.is-direction-focused:not(.is-disable-highlight) {\n    background: var(--secondary-highlight-color);\n  }\n  .is-filled {\n    opacity: 0.5;\n  }\n</style>\n",
    "<script>\n  import { createEventDispatcher } from \"svelte\";\n  const dispatch = createEventDispatcher();\n\n  export let currentClue = {};\n  export let fontFamily;\n  $: clue = currentClue[\"clue\"];\n  $: news_url = currentClue[\"news_url\"];\n  $: custom = currentClue[\"custom\"] || \"\";\n</script>\n\n<div class=\"bar {custom}\">\n  <button on:click=\"{() => dispatch('nextClue', currentClue.index - 1)}\">\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      class=\"feather feather-chevron-left\"\n    >\n      <polyline points=\"15 18 9 12 15 6\"></polyline>\n    </svg>\n  </button>\n  <!-- _blank -->\n  <a\n   style:font-family={fontFamily ? fontFamily : ''}\n    href=\"{news_url ? news_url : '#'}\"\n    target=\"{news_url ? '_parent' : ''}\"\n    class=\"link-style {news_url ? 'underline' : 'no-underline'}\">{clue}</a\n  >\n  <button on:click=\"{() => dispatch('nextClue', currentClue.index + 1)}\">\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      stroke-width=\"2\"\n      stroke-linecap=\"round\"\n      stroke-linejoin=\"round\"\n      class=\"feather feather-chevron-right\"\n    >\n      <polyline points=\"9 18 15 12 9 6\"></polyline>\n    </svg>\n  </button>\n</div>\n\n<style>\n  .bar {\n    width: 100%;\n    display: flex;\n    justify-content: space-between;\n    background-color: var(--secondary-highlight-color);\n    align-items: center;\n    padding: 15px 0px;\n  }\n  .underline{\n    text-decoration: underline!important;\n  }\n  .no-underline{\n    text-decoration: none!important;\n  }\n\n  .link-style {\n    padding: 0 1em;\n    line-height: 1.325;\n    font-family: var(--font);\n    margin-bottom: 0px !important;\n    color: black;\n  }\n  button {\n    cursor: pointer;\n    font-size: 1em;\n    border: none;\n    line-height: 1;\n    color: var(--main-color);\n    background-color: transparent;\n  }\n</style>\n",
    "<script>\n  import Clue from \"./Clue.svelte\";\n\n  export let direction;\n  export let clues;\n  export let focusedClueNumbers;\n  export let isDirectionFocused;\n  export let onClueFocus;\n  export let isDisableHighlight;\n  export let fontFamily;\n</script>\n\n<p style:font-family={fontFamily ? fontFamily : ''}>{direction}</p>\n<div class=\"list\">\n  <ul>\n    {#each clues as clue}\n      <Clue\n        fontFamily = \"{fontFamily}\"\n        clue=\"{clue.clue}\"\n        news_url=\"{clue.news_url}\"\n        number=\"{clue.number}\"\n        custom=\"{clue.custom}\"\n        isFilled=\"{clue.isFilled}\"\n        isNumberFocused=\"{focusedClueNumbers[direction] === clue.number}\"\n        isDirectionFocused=\"{isDirectionFocused}\"\n        isDisableHighlight=\"{isDisableHighlight}\"\n        onFocus=\"{() => onClueFocus(clue)}\" />\n    {/each}\n  </ul>\n</div>\n\n<style>\n  .list {\n    position: relative;\n    max-height: 45vh;\n    margin-bottom: 2em;\n    overflow: auto;\n  }\n\n  p {\n    font-family: var(--font);\n    color: var(--main-color);\n    font-weight: 700;\n    text-transform: uppercase;\n    padding-left: calc(2.5em + 6px);\n    padding-bottom: 0.5em;\n    font-size: 0.85em;\n    border-bottom: 1px solid var(--accent-color);\n    margin: 0;\n  }\n\n  ul {\n    list-style-type: none;\n    padding-left: 0;\n    margin: 0;\n    margin-top: 1em;\n  }\n\n  ::-moz-scrollbar {\n    width: 9px;\n  }\n  ::-webkit-scrollbar {\n    width: 9px;\n  }\n\n  ::-moz-scrollbar-track {\n    box-shadow: none;\n    border-radius: 8px;\n    background-color: var(--accent-color);\n  }\n  ::-webkit-scrollbar-track {\n    box-shadow: none;\n    border-radius: 8px;\n    background-color: var(--accent-color);\n  }\n  ::scrollbar-thumb {\n    border-radius: 8px;\n    background-color: var(--scrollbar-color);\n    box-shadow: none;\n  }\n  ::-moz-scrollbar-thumb {\n    background-color: var(--scrollbar-color);\n    border-radius: 6px;\n  }\n  ::-webkit-scrollbar-thumb {\n    background-color: var(--scrollbar-color);\n    border-radius: 6px;\n  }\n</style>\n",
    "<script>\n  import ClueList from \"./ClueList.svelte\";\n  import ClueBar from \"./ClueBar.svelte\";\n\n  export let clues;\n  export let cellIndexMap;\n  export let focusedDirection;\n  export let focusedCellIndex;\n  export let focusedCell;\n  export let stacked;\n  export let isDisableHighlight;\n  export let isLoaded;\n  export let fontFamily;\n\n  $: focusedClueNumbers = focusedCell.clueNumbers || {};\n  $: currentClue =\n    clues.find(\n      c =>\n        c.direction === focusedDirection &&\n        c.number === focusedClueNumbers[focusedDirection]\n    ) || {};\n\n  function onClueFocus({ direction, id }) {\n    focusedDirection = direction;\n    focusedCellIndex = cellIndexMap[id] || 0;\n  }\n\n  function onNextClue({ detail }) {\n    let next = detail;\n    if (next < 0) next = clues.length - 1;\n    else if (next > clues.length - 1) next = 0;\n    const { direction, id } = clues[next];\n    onClueFocus({ direction, id });\n  }\n</script>\n\n<section class=\"clues\" class:stacked class:is-loaded=\"{isLoaded}\">\n  <!-- <div class=\"clues--stacked\">\n    <ClueBar {currentClue} on:nextClue=\"{onNextClue}\" />\n  </div> -->\n\n  <div class=\"clues--list\">\n    {#each ['across', 'down'] as direction}\n      <ClueList\n        {direction}\n        fontFamily = \"{fontFamily}\"\n        {focusedClueNumbers}\n        clues=\"{clues.filter(d => d.direction === direction)}\"\n        isDirectionFocused=\"{focusedDirection === direction}\"\n        {isDisableHighlight}\n        {onClueFocus} />\n    {/each}\n  </div>\n</section>\n\n<style>\n  .clues{\n    margin-left: 50px;\n  }\n  section {\n    position: sticky;\n    top: 1em;\n    flex: 0 1 16em;\n    height: fit-content;\n    margin: 0;\n    margin-right: 1em;\n  }\n\n  section.is-loaded.stacked {\n    position: static;\n    height: auto;\n    top: auto;\n    display: block;\n    margin: 1em 0;\n    flex: auto;\n  }\n\n  /* .clues--stacked {\n    margin: 0;\n    display: block;\n  }\n\n  .is-loaded.stacked .clues--stacked {\n    display: block;\n  } */\n\n  .is-loaded.stacked .clues--list {\n    display: none;\n  }\n\n  @media only screen and (max-width: 720px) {\n    section:not(.is-loaded) {\n      position: static;\n      height: auto;\n      top: auto;\n      display: block;\n      margin: 1em 0;\n      flex: auto;\n    }\n\n    /* .clues--stacked:not(.is-loaded) {\n      display: block;\n    } */\n\n    .clues--list:not(.is-loaded) {\n      display: none;\n    }\n  }\n</style>\n",
    "<script>\n  import { fade } from \"svelte/transition\";\n  // import Confetti from \"./Confetti.svelte\";\n  import { Confetti } from \"svelte-confetti\";\n  import { confetti } from '@neoconfetti/svelte';\n  export let showConfetti = false;\n  \n export let isOpen = true;\n export let NotIncognito = true;\n//  export let isWordConnectionsShow = false;\n export let keepTrying;\n export let isTryAgain;\n   //here i am checking if the query paramter have embebed version parameter\n\n  const urlParams = new URLSearchParams(window.location.search);\n  const isEmbeded = urlParams.has('version');\n</script>\n<!-- on:click=\"{() => (isOpen = false)}\" -->\n{#if isOpen}\n  <div class=\"completed {isEmbeded==true ? 'complete-embeded':''}\" transition:fade=\"{{ y: 20 }}\" style=\"{NotIncognito == false ? 'top:142px !important;':''}\">\n    <div class=\"content\" style=\"{NotIncognito == false ? 'padding: 25px 20px 10px 20px  !important;':''}\">\n      <!-- {#if isWordConnectionsShow && NotIncognito} -->\n      <div\n        style=\"    width: 100%; text-align: right;  margin-top: -18px;\"\n      >\n        {#if isTryAgain}\n          <img src=\"/cross-icon.png\" on:click={keepTrying}  style=\"cursor: pointer;\"/>\n        {/if}\n\n        {#if !isTryAgain}\n          <img src=\"/cross-icon.png\"  on:click=\"{() => (isOpen = false)}\"  style=\"cursor: pointer;\"/>\n        {/if}\n      </div>\n      <!-- {/if} -->\n      <div class=\"message\" style=\"    width: 100%;\">\n        <slot />\n      </div>\n      <!-- <button on:click=\"{() => (isOpen = false)}\">View puzzle</button> -->\n    </div>\n    <!-- https://github.com/puruvj/neoconfetti/tree/main/packages/svelte#readme -->\n    {#if showConfetti}\n    \n      <div class=\"confetti\">\n        <!-- ,stageHeight: 1000,stageWidth: 1600 -->\n         <div class=\"confitti\" use:confetti={{ particleCount: 500, force: 1,particleSize:15,particleShape: 'mix',duration: 4000,colors: [\"#26ccff\",\"#a25afd\",\"#ff5e7e\",\"#88ff5a\",\"#fcff42\",\"#ffa62d\",\"#ff36ff\"],stageHeight: 800,stageWidth: 1200}} />\n      </div> \n    {/if}\n  </div>\n  <!-- <div\n    class=\"curtain\"\n    transition:fade=\"{{ duration: 250 }}\"\n    on:click=\"{() => (isOpen = false)}\"\n  ></div> -->\n{/if}\n\n<style>\n  /* :global(body) {\n\t\toverflow: scroll;\n\n\t} */\n\n\t.confitti {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n    \n\t}\n  .word-connections{\n    font-family: 'Arial';\n    font-style: normal;\n    font-weight: 400;\n    font-size: 16px;\n    line-height: 18px;\n    color: #000000;\n  }\n  .completed {\n    position: absolute;\n    top: min(46%, 20em);\n    left: 50%;\n    background-color: var(--bg-color);\n    transform: translate(-50%, -50%);\n    border-radius: 4px;\n    z-index: 100;\n    box-shadow: 0 4px 8px 4px rgba(0, 0, 0, 0.2);\n    font-family: var(--font);\n    width: 50%;\n    box-shadow: 1px 2px 91px gainsboro;\n    background: #FFFFFF;\n    border: 1px solid #E1E1E1;\n    border-radius: 10px;\n  }\n  @media (max-width: 600px) {\n    .completed {\n      width: 100% !important;\n    }\n  }\n  @media only screen and (max-width: 500px) {\n    .completed {\n      top: min(65%, 22em);\n    }\n    .complete-embeded{\n      top: min(60%, 16.5em) !important;\n    }\n  }\n  .curtain {\n    position: absolute;\n    top: 0;\n    right: -2px;\n    bottom: 0;\n    left: 0;\n    background-color: var(--bg-color);\n    opacity: 0.9;\n    cursor: pointer;\n    z-index: 1;\n  }\n\n  button {\n    cursor: pointer;\n    margin-left: 1em;\n    font-size: 1em;\n    font-family: var(--font);\n    background-color: var(--accent-color);\n    border-radius: 4px;\n    color: var(--main-color);\n    padding: 0.75em;\n    border: none;\n    font-weight: 400;\n    transition: background-color 150ms;\n  }\n\n  button:hover {\n    background-color: var(--secondary-highlight-color);\n  }\n\n  .content {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    padding: 2em;\n  }\n\n  .message {\n    margin-bottom: 1em;\n  }\n\n  .confetti {\n    position: absolute;\n    top: 30%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n  }\n</style>\n",
    "<script>\n  import { onMount } from \"svelte\";\n  import { Confetti } from \"svelte-confetti\";\n  import { Link } from \"svelte-routing\";\n  import Toolbar from \"./Toolbar.svelte\";\n  import Puzzle from \"./Puzzle.svelte\";\n  import Clues from \"./Clues.svelte\";\n  import CompletedMessage from \"./CompletedMessage.svelte\";\n  import createClues from \"./helpers/createClues.js\";\n  import createCells from \"./helpers/createCells.js\";\n  import validateClues from \"./helpers/validateClues.js\";\n  import { fromPairs } from \"./helpers/utils.js\";\n  import checkMobile from \"./helpers/checkMobile\";\n  import themeStyles from \"./helpers/themeStyles.js\";\n  import dataNYTMini from \"../example/data/nyt-mini.json\";\n  import Config from \"../src/config/config\";\n  import axios from \"axios\";\n  import { navigate } from \"svelte-routing\";\n  import Loader from \"./Loader.svelte\";\n  // let data = dataNYTMini;\n  let data = [];\n  // export let actions = [\"clear\", \"reveal\", \"check\"];\n  const isMobile = checkMobile();\n  let showKeyboard = false;\n  if (isMobile) {\n    showKeyboard = true;\n  }\n  export let theme = \"classic\";\n  export let revealDuration = 1000;\n  export let breakpoint = 720;\n  export let revealed = false;\n  export let disableHighlight = false;\n  export let showCompleteMessage = true;\n  export let showConfetti = false;\n  export let keyboardStyle = \"\";\n  let width = 0;\n  let focusedDirection = \"across\";\n  let focusedCellIndex = 0;\n  let isRevealing = false;\n  let isLoaded = false;\n  let isChecking = false;\n  let revealTimeout;\n  let clueCompletion;\n  let puzzleData;\n  let email_signup_url = '';\n  let isKeepTryingButtonValue = null;\n  let originalClues = [];\n  let validated = [];\n  let clues = [];\n  let cells = [];\n  let isSaveData = true;\n  let isWordConnectionsShow = false;\n  let dontAskAgainInput = false; \n  let isIncognitoWindowError = false;\n  // let isIpadDevice = navigator.userAgent.match(/iPad|iPod/i) ? true : false;\n  // let isIpadDevice =  false;\n\n  //here i am checking if the query paramter have embebed version parameter\n\n  const urlParams = new URLSearchParams(window.location.search);\n  const isEmbeded = urlParams.has('version');\n\n\n  const onDataUpdate = () => {\n    if (data.length) {\n      crossSolvedPuzzle = data.filter((item) => {\n        return item.news_url !== null && item.news_url !== \"\" ;\n      });\n    }\n    originalClues = createClues(data);\n    validated = validateClues(originalClues);\n    clues = originalClues.map((d) => ({ ...d }));\n    cells = createCells(originalClues);\n    reset();\n  };\n  const saveToDatabase = async (data) => {\n    const response = await axios.post(`${api_path}save-puzzle`, data);\n    const res = response.data;\n    return res;\n  };\n\n  const onStatusUpdate = (percentCorrect) => {\n\n    try {\n      let isWon = 'no';\n      if (percentCorrect == 1) {\n        toolBarEvents.stop();\n        // if(isEmbeded == false){\n          localStorage.setItem(\"start\",true);\n          //remove localstorage\n          localStorage.removeItem('isKeepTrying');\n\n          isWon = localStorage.getItem('w');\n        // }\n        \n\n        loading = true;\n        disabled = true;\n        playTime = toolBarEvents.getTime();\n        // if(playTime == undefined){\n        //   playTime = '00:00';\n        // }\n        //  console.log(isWon);\n\n        if(isWon == null || isWon == 'no'){\n          isComplete = false;\n          showCompleteMessage = false;\n          // alert('save to databse');\n          //it means user already have not won and its first time so we need to store it in database\n          let response = saveToDatabase({\n          status: 1,\n          time: playTime,\n          puzzle_id: puzzleDetail.puzzle_id,\n          }).then((res) => {\n            if (res.success) {\n              loading = false;\n              // localStorage.getItem(\"dontAskAgainInput\") === null\n              // let dontAskAgainChecked = localStorage.getItem('dontAskAgainInput');\n              if(localStorage.getItem(\"dontAskAgainInput\") === null && email_signup_url==''){\n                isWordConnectionsShow = true;\n              }else if(localStorage.getItem(\"dontAskAgainInput\") === null && email_signup_url!=''){\n                isWordConnectionsShow = false;\n              }\n              \n              setTimeout(function() { \n\n                showConfetti = true;\n                isComplete = true;\n              \n                showCompleteMessage = true;\n              }, 1000);\n       \n                //w means won and y means yes;\n                localStorage.setItem('w','y');\n                //I commented below\n                // showKeyboard = false;\n            \n\n            }\n          });\n        }else{\n          loading = false;\n          isComplete = true;\n        }\n\n        // let dontAskAgainChecked = localStorage.getItem('dontAskAgainInput');\n        if(localStorage.getItem(\"dontAskAgainInput\") != null){\n          isWordConnectionsShow = true;\n        }\n\n        // console.log(isWordConnectionsShow);\n        return true;\n      } else {\n        return false;\n      }\n    }catch(err){\n      //local storage not working\n      isIncognitoWindowError = true;\n      loading = false;\n      return false;\n    }\n    \n  };\n\n  const IsNotCompleted = (percentNotCorrect, percentCorrect) => {\n    try {\n\n     isKeepTryingButtonValue = localStorage.getItem('isKeepTrying');\n   \n   \n      if(isKeepTryingButtonValue == null){\n          isKeepTryingButtonValue = 'true';\n      }\n\n    //its just for showing the popup\n    let isTryAgainPopup = localStorage.getItem('isTryAgainPopup');\n   \n      if (percentNotCorrect && percentCorrect !== 1 && isKeepTryingButtonValue == 'true') {\n        if (toolBarEvents.length || toolBarEvents!='') {\n          toolBarEvents.stop();\n          // if(isEmbeded == false){\n            localStorage.setItem(\"start\",true);\n          // }\n          loading = true;\n          disabled = true;\n          playTime = toolBarEvents.getTime();\n          if(playTime==undefined){\n            playTime = '00:00';\n          }\n\n          // console.log(playTime);\n          let response = saveToDatabase({\n            status: 0,\n            time: playTime,\n            puzzle_id: puzzleDetail.puzzle_id,\n          }).then((res) => {\n            if (res.success) {\n              // alert('ok');\n              loading = false;\n              isInCompleted = true;\n              isClosePopup = true;\n              // if(isEmbeded == false){\n              localStorage.setItem('isKeepTrying','false');\n              localStorage.setItem('isTryAgainPopup','show');\n              //I commented below\n              // showKeyboard = false;\n              // }\n            }\n          });\n        }\n      }else if(isKeepTryingButtonValue != 'true' && isTryAgainPopup =='show'){\n        isInCompleted = true;\n        isClosePopup = true;\n        //I commented below\n        // showKeyboard = false;\n        return true;\n      } else {\n        return false;\n      }\n    } catch( e ) {\n      isIncognitoWindowError = true;\n      loading = false;\n      return false;\n    }\n    \n  };\n  \n\n  $: data, onDataUpdate();\n  $: focusedCell = cells[focusedCellIndex] || {};\n  $: cellIndexMap = fromPairs(cells.map((cell) => [cell.id, cell.index]));\n  $: percentCorrect =\n    cells.filter((d) => d.answer === d.value).length / cells.length;\n  $: percentNotCorrect =\n    cells.filter((d) => d.value !== \"\").length == cells.length;\n  $: isComplete = onStatusUpdate(percentCorrect);\n  $: isInCompleted = IsNotCompleted(percentNotCorrect, percentCorrect);\n  $: isDisableHighlight = isComplete && disableHighlight;\n  $: cells, (clues = checkClues());\n  $: cells, (revealed = !clues.filter((d) => !d.isCorrect).length);\n  $: stacked = width < breakpoint;\n  $: inlineStyles = themeStyles[theme];\n  $: loading = false;\n  $: crossSolvedPuzzle = [];\n  $: stylePuzzle = [];\n  $: puzzleDetail = [];\n  $: is_puzzle_show = false;\n  $: show_alert = false;\n  $: playTime = \"\";\n  $: disabled = false;\n  $: toolBarEvents = [];\n  $: days = [\n    \"Sunday\",\n    \"Monday\",\n    \"Tuesday\",\n    \"Wednesday\",\n    \"Thursday\",\n    \"Friday\",\n    \"Saturday\",\n  ];\n  $: months = [\n    \"January\",\n    \"February\",\n    \"March\",\n    \"April\",\n    \"May\",\n    \"June\",\n    \"July\",\n    \"August\",\n    \"September\",\n    \"October\",\n    \"November\",\n    \"December\",\n  ];\n\n  export let url;\n\n  const api_path = Config.api_path;\n  const changeDateFormat = (date) => {\n    if (date) {\n      var st = date;\n      var dt = new Date(st);\n      if (dt) {\n        const dateFormat = `${days[dt.getDay()]}, ${\n          months[dt.getMonth()]\n        } ${dt.getDate()}, ${dt.getFullYear()}`;\n        return dateFormat;\n      }\n    }\n    return date;\n  };\n  onMount(async () => {\n    try {\n    \n      loading = true;\n      isInCompleted = false;\n      show_alert = false;\n      is_puzzle_show = false;\n      const response = await axios.get(`${api_path}get-company-url?url=${url}`);\n      const res = response.data;\n      \n      if (res.success == true) {\n        data = res.data;\n        email_signup_url = res.detail.email_signup_url;\n        if(email_signup_url==''){\n          isWordConnectionsShow = true;\n        }\n        // if(isEmbeded == false){\n\n        //here i am setting local storage when its not in iframe it means user is accessing directly from website.\n        const get_run_date=localStorage.getItem('run_date');\n        const getUrl=localStorage.getItem('url');\n        if( (get_run_date!==res.detail.run_date) || (getUrl!==url)){\n            localStorage.removeItem('keyword');\n            localStorage.removeItem('timmer');\n            localStorage.removeItem('start');\n            localStorage.removeItem('w');\n            localStorage.removeItem('isKeepTrying');\n            localStorage.removeItem('isTryAgainPopup');\n            localStorage.removeItem('isReveal');\n            localStorage.removeItem('url');\n            localStorage.removeItem('dontAskAgainInput');\n            \n        }\n        localStorage.setItem('run_date',res.detail.run_date);\n        localStorage.setItem('url',url);\n\n      //  }\n        // res.detail.formated_run_date = changeDateFormat(res.detail.run_date);\n        puzzleDetail = res.detail;\n        is_puzzle_show = true;\n      } else {\n        // if(isEmbeded == false){\n          localStorage.removeItem('keyword');\n        // }\n        if (res.is_url_exist == true && res.is_word == false) {\n          show_alert = true;\n        } else {\n          navigate(\"/error-404\", { replace: false });\n        }\n      \n      }\n      if (res.style) {\n        stylePuzzle = res.style;\n      }\n      loading = false;\n    }catch(err){\n      //local storage not working\n      isIncognitoWindowError = true;\n      loading = false;\n      return false;\n    }\n\n    \n  });\n  function disabled({ detail }) {}\n  function checkClues() {\n    return clues.map((d) => {\n      const index = d.index;\n      const cellChecks = d.cells.map((c) => {\n        const { value } = cells.find((e) => e.id === c.id);\n        const hasValue = !!value;\n        const hasCorrect = value === c.answer;\n        return { hasValue, hasCorrect };\n      });\n      const isCorrect =\n        cellChecks.filter((c) => c.hasCorrect).length === d.answer.length;\n      const isFilled =\n        cellChecks.filter((c) => c.hasValue).length === d.answer.length;\n      return {\n        ...d,\n        isCorrect,\n        isFilled,\n      };\n    });\n  }\n\n  function reset() {\n    isRevealing = false;\n    isChecking = false;\n    focusedCellIndex = 0;\n    focusedDirection = \"across\";\n  }\n\n  function onClear() {\n\n    reset();\n    if (revealTimeout) clearTimeout(revealTimeout);\n    cells = cells.map((cell) => ({\n      ...cell,\n      value: \"\",\n    }));\n  }\n\n  const toolBarData = (event) => {\n    toolBarEvents = event.detail?.toolBarData;\n    // console.log(toolBarEvents);\n  };\n  function onReveal() {\n    if (revealed) return true;\n    reset();\n    cells = cells.map((cell) => ({\n      ...cell,\n      value: cell.answer,\n    }));\n    startReveal();\n  }\n\n  function onCheck() {\n    isChecking = true;\n  }\n\n  function redirectToExternal(url){\n\n    if(url!=''){\n      window.open(url, '_blank').focus();\n    }\n    isWordConnectionsShow = true;\n  }\n\n  function dontAskAgainFun(event){\n    dontAskAgainInput = !dontAskAgainInput;\n    setTimeout(() => event.target.checked = dontAskAgainInput, 0);\n    localStorage.setItem('dontAskAgainInput',dontAskAgainInput);\n  }\n\n  function startReveal() {\n    isRevealing = true;\n    isChecking = false;\n   \n    if (revealTimeout) clearTimeout(revealTimeout);\n    revealTimeout = setTimeout(() => {\n      isRevealing = false;\n    }, revealDuration + 250);\n  }\n\n  function onToolbarEvent({ detail }) {\n    if (detail === \"clear\") onClear();\n    else if (detail === \"reveal\") onReveal();\n    else if (detail === \"check\") onCheck();\n  }\n  function keyEnabled({ detail }) {\n    disabled = detail;\n  }\n  let isClosePopup = true;\n  const keepTrying=()=>{\n    isClosePopup = false;\n    // if(isEmbeded == false){\n    localStorage.removeItem(\"start\");\n    // }/\n    isInCompleted = false;\n    toolBarEvents.startTimer();\n    toolBarEvents.incrementTimer();\n    disabled = false;\n    isKeepTryingButtonValue = 'false';\n    if(isMobile){\n      showKeyboard = true;\n    }\n   \n    // if(isEmbeded == false){\n      //these two lines i have added latest at 7/7/2022\n    localStorage.setItem('isKeepTrying','false');\n    localStorage.setItem('isTryAgainPopup','notShow');\n    // }\n    // puzzleData.onToolbarEvent({detail:'clear'});\n  }\n\n\n  \n</script>\n\n{#if loading == true}\n  <Loader bind:loading />\n{/if}\n{#if validated}\n  <section id=\"mobile\" style=\"{`${\n    isEmbeded == false ? 'max-width:825px;margin: auto;' : ''\n  }`}\">\n    <article\n      class=\"svelte-crossword\"\n      bind:offsetWidth=\"{width}\"\n      style=\"{inlineStyles}\"\n    >\n      <!-- <slot\n      name=\"toolbar\"\n      onClear=\"{onClear}\"\n      onReveal=\"{onReveal}\"\n      onCheck=\"{onCheck}\">\n      <Toolbar actions=\"{actions}\" on:event=\"{onToolbarEvent}\" />\n    </slot> -->\n    <!-- && isIpadDevice == false -->\n      {#if is_puzzle_show == true }\n        <div class=\"play\" class:stacked class:is-loaded=\"{isLoaded}\">\n          <Puzzle\n            fontFamily=\"{stylePuzzle.font}\"\n            cellIndexMap=\"{cellIndexMap}\"\n            clues=\"{clues}\"\n            focusedCell=\"{focusedCell}\"\n            isRevealing=\"{isRevealing}\"\n            isChecking=\"{isChecking}\"\n            isDisableHighlight=\"{isDisableHighlight}\"\n            revealDuration=\"{revealDuration}\"\n            showKeyboard=\"{showKeyboard}\"\n            stacked=\"{stacked}\"\n            isLoaded=\"{isLoaded}\"\n            keyboardStyle=\"{keyboardStyle}\"\n            puzzleDetail=\"{puzzleDetail}\"\n            disabled=\"{disabled}\"\n            on:toolBarData=\"{toolBarData}\"\n            bind:this=\"{puzzleData}\"\n            on:keyEnabled=\"{keyEnabled}\"\n            bind:cells\n            bind:focusedCellIndex\n            bind:focusedDirection\n          />\n\n          <Clues\n            fontFamily=\"{stylePuzzle.font}\"\n            clues=\"{clues}\"\n            cellIndexMap=\"{cellIndexMap}\"\n            stacked=\"{stacked}\"\n            isDisableHighlight=\"{isDisableHighlight}\"\n            isLoaded=\"{isLoaded}\"\n            bind:focusedCellIndex\n            bind:focusedCell\n            bind:focusedDirection\n          />\n        </div>\n      {/if}\n      {#if isComplete && !isRevealing && showCompleteMessage}\n        <CompletedMessage showConfetti=\"{showConfetti}\" isWordConnectionsShow=\"{isWordConnectionsShow}\">\n          <slot name=\"message\">\n            <h3 class=\"complete-popup-message-heading margin-top-reduce\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>Well done!</h3>\n            <p class=\"complete-time\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>You solved it in \n              \n              <b>{playTime!=undefined?playTime :'0:00'}</b>\n            </p>\n            <!-- <br /> -->\n            <div class=\"border-line\"></div>\n            <!-- <br /> -->\n            {#if !isWordConnectionsShow && email_signup_url!=''}\n            <!--Get Notified buttons Section start-->\n            <div class=\"word-connections-main\">\n              <p class=\"word-connections\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>Would you like to get notified each time we publish a new crossword?</p>\n\n              <div class=\"btns-main-block\" style=\"{isEmbeded ? 'margin-top:20px !important;' : ''}\">\n                <div class=\"custom-btns\">\n                  <button type=\"button\" on:click={event => redirectToExternal(email_signup_url)} class=\"btn custom-btn-css\">Yes, sign me up!</button>\n                </div>\n                <div class=\"custom-btns\">\n                  <button type=\"button\" on:click={ event =>redirectToExternal('')} class=\"btn custom-btn-css\">No, thanks</button>\n                </div>\n                <div class=\"custom-btns\">\n                  <button type=\"button\" on:click={ event =>redirectToExternal('')} class=\"btn custom-btn-css\">I'm already signed up</button>\n                </div>\n                <div class=\"custom-btns\" style=\"{isEmbeded ? 'margin-top:17px !important;' : ''}\">\n                  <input type=\"checkbox\" checked={dontAskAgainInput} on:click|preventDefault={dontAskAgainFun}> <span style=\"font-size:15px;\">Don't ask again</span>\n                </div>\n              </div>\n            </div>\n            <!--Get Notified buttons Section end-->\n            {/if}\n            <div class=\"word-connections-main {isEmbeded==true ? 'word-connections-main-embedded':''}\">\n            {#if crossSolvedPuzzle.length && isWordConnectionsShow}\n              <p class=\"word-connections\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>Words tied to the news:</p>\n              {#each crossSolvedPuzzle as solvePuzzle}\n                <div style=\"margin-bottom: 19px;\">\n                  <h3 class=\"word-name\" style=\"margin-bottom: 0;\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>\n                    {solvePuzzle.answer}\n                  </h3>\n                  <a\n                  target=\"_blank\"\n                    href=\"{solvePuzzle.news_url ? solvePuzzle.news_url : '#'}\"\n                    style=\"{`color:${\n                      stylePuzzle.color ? stylePuzzle.color : '#0d6efd'\n                    };`}\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>{solvePuzzle.link_name}</a\n                  >\n                </div>\n              {/each}\n            {/if}\n            </div><!--word connections main div-->\n          </slot>\n\n          \n        </CompletedMessage>\n      {/if}\n\n      {#if isInCompleted}\n        <CompletedMessage\n        isOpen=\"{isClosePopup}\"\n        keepTrying = \"{keepTrying}\"\n        isTryAgain = {true}\n        >\n          <slot name=\"message\">\n            <h3 class=\"complete-popup-message-heading\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>Not quite.</h3>\n            <p class=\"complete-time\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>\n              The puzzle is filled, but at least one square’s incorrect. \n            </p>\n            <br />\n            <div style=\"text-align: center;\">\n              <button style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} class=\"keep-btn-style\" on:click={keepTrying}>Keep Trying</button>\n            </div>\n          </slot>\n        </CompletedMessage>\n      {/if}\n\n      {#if isIncognitoWindowError}\n      <CompletedMessage  isOpen=\"{isClosePopup}\" NotIncognito=\"{false}\" style=\"margin-top:100px;\">\n        <slot name=\"message\">\n          <h3 class=\"complete-popup-message-heading\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} style=\"font-size: 25px;\"> Chrome Incognito Mode</h3>\n          <p class=\"complete-time\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} style=\"font-size: 15px;margin-top: -10px;\">Please note that the crossword doesn't display when you are in Chrome's Incognito mode (private browsing mode). To play the crossword, please visit this page without Incognito mode turned on.\n          </p>\n          <!-- <br /> -->\n          <div style=\"text-align: center;\">\n            <button style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} class=\"keep-btn-style\" on:click=\"{() => (isClosePopup = false)}\">OK</button>\n          </div>\n        </slot>\n      </CompletedMessage>\n      {/if}\n\n      <!-- {#if !isIncognitoWindowError && isIpadDevice}\n      <CompletedMessage  isOpen=\"{isClosePopup}\" NotIncognito=\"{false}\" style=\"margin-top:100px;\">\n        <slot name=\"message\">\n          <h3 class=\"complete-popup-message-heading\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} style=\"font-size: 25px;\">Alert</h3>\n          <p class=\"complete-time\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} style=\"font-size: 15px;margin-top: -10px;\">The crossword isn’t compatible with iPads yet. We are working on an iPad version - please check back soon. In the meantime, you can play the crossword using your phone or computer.\n          </p>\n          <div style=\"text-align: center;\">\n            <button style:font-family={stylePuzzle.font ? stylePuzzle.font : ''} class=\"keep-btn-style\" on:click=\"{() => (isClosePopup = false)}\">OK</button>\n          </div>\n        </slot>\n      </CompletedMessage>\n      {/if} -->\n\n      \n    </article>\n  </section>\n{/if}\n\n{#if show_alert == true && is_puzzle_show == false}\n  <div\n    style=\"    display: flex;flex-direction: column;  justify-content: center;  height: 90vh;  align-items: center; \"\n  >\n    <h3\n      style=\"text-transform: capitalize;  font-weight: 700;  color: #939191;    text-align: center;\" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}\n    >\n     No crossword right now. Please check again later.\n    </h3>\n    {#if isEmbeded == false}\n    <div style=\"text-align: center; margin-top: 31px;\">\n      <Link to=\"/\" style=\"text-decoration: none!important;\"\n        ><span class=\"button-style \" style:font-family={stylePuzzle.font ? stylePuzzle.font : ''}>Back to site</span></Link\n      >\n    </div>\n    {/if}\n  </div>\n{/if}\n\n<style>\n  .custom-btn-css:focus,.custom-btn-css:active {\n   outline: none !important;\n   box-shadow: none;\n}\n  .custom-btn-css{\n    border: 1px solid black;\n    width: 100%;\n    padding: 10px 0px;\n    border-radius: 50px;\n  }\n  .btns-main-block{\n    margin-top:30px; \n\n  }\n  .custom-btns{\n    margin-top: 20px;\n  }\n  .word-connections{\n    font-weight: 700;\n    font-size: 22px;\n    line-height: 25px;\n  }\n  .word-connections-main{\n    height: 100%;\n    max-height: 390px;\n    overflow: scroll;\n    /* border-right: 2px solid #d1d1d1; */\n    -ms-overflow-style: none;  /* Internet Explorer 10+ */\n    scrollbar-width: none;  /* Firefox */\n}\n.word-connections-main::-webkit-scrollbar { \n    display: none;  /* Safari and Chrome */\n}\n  \n  article {\n    position: relative;\n    background-color: transparent;\n    font-size: 16px;\n  }\n  .keep-btn-style {\n    background: white;\n    padding: 12px;\n    padding-left: 32px;\n    padding-right: 32px;\n    text-decoration: none !important;\n    font-family: \"Arial\";\n    font-style: normal;\n    font-weight: 400;\n    font-size: 16px;\n    line-height: 18px;\n    text-align: center;\n    border: 0.75px solid #000000;\n    border-radius: 23.5px;\n    color: #000000;\n  }\n  .word-name {\n    font-family: \"Arial\";\n    font-style: normal;\n    font-weight: 700;\n    font-size: 16px;\n    line-height: 18px;\n\n    color: #000000;\n  }\n  .border-line {\n    border-bottom: 0.75px solid #b6b6b6;\n    margin-bottom: 15px;\n  }\n  .complete-popup-message-heading {\n    font-family: \"Arial\";\n    font-style: normal;\n    font-weight: 700;\n    font-size: 36px;\n    line-height: 41px;\n    color: #000000;\n  }\n  .margin-top-reduce{\n    margin-top: -10px !important;\n  } \n  .complete-time {\n    font-family: \"Arial\";\n    font-style: normal;\n    font-weight: 400;\n    font-size: 22px;\n    line-height: 25px;\n    margin-bottom: 15px;\n    color: #000000;\n  }\n\n  .play {\n    display: flex;\n    flex-direction: var(--order, row);\n  }\n\n  .play.is-loaded.stacked {\n    flex-direction: column;\n  }\n\n  h3 {\n    margin: 0;\n    margin-bottom: 0.5em;\n  }\n\n\n  @media only screen and (max-width: 870px) {\n    .word-connections-main{\n      /* max-height: 300px; */\n      max-height: 310px;\n    }\n  }\n\n  @media only screen and (max-width: 720px) {\n    .play:not(.is-loaded) {\n      flex-direction: column;\n    }\n  }\n  \n  @media only screen and (max-width: 500px) {\n    .word-connections-main-embedded{\n      max-height: 320px !important;\n    }\n    .word-connections-main{\n      max-height: 460px;\n    }\n\n  }\n</style>\n",
    "<div style=\"margin-top: 50px\">\r\n  <div style=\"text-align: center\">\r\n    <div class=\"image-center\">\r\n      <img src=\"{`/logo.png`}\" alt=\"News Crossword\" style=\"width: 170px\" />\r\n    </div>\r\n    <h2 class=\"cross-word-title\" style=\"    margin-top: 20px;\">News Crossword</h2>\r\n    <p class=\"home-discription\">Create your own mini crossword puzzles.</p>\r\n    <div class=\"image-center\">\r\n      <a href=\"/member-area/register\" class=\"signBtn\" style=\"    margin-top: 16px;\">\r\n        <span class=\"sign-up-text\">Sign up</span>\r\n      </a>\r\n    </div>\r\n    <div style=\"margin-top: 22px\">\r\n      <a href=\"/member-area/login\" class=\"loginLink\">\r\n        <span>Log in</span>\r\n      </a>\r\n    </div>\r\n\r\n    <div>\r\n      <div class=\"bottom-text\">\r\n        <div style=\"    margin-bottom: 15px;\">\r\n          <a\r\n            href=\"https://www.newsgames.org/about\"\r\n            style=\" color: #a7a7a7;text-decoration: underline\"\r\n            target=\"_blank\"\r\n          >\r\n            About\r\n          </a>\r\n          &nbsp;&nbsp;<b>.</b>&nbsp;&nbsp;\r\n          <a\r\n            href=\"https://www.newsgames.org/terms\"\r\n            style=\" color: #a7a7a7;text-decoration: underline\"\r\n            target=\"_blank\"\r\n          >\r\n            Terms\r\n          </a>\r\n          &nbsp;&nbsp;<b>.</b>&nbsp;&nbsp;\r\n          <a\r\n            href=\"https://www.newsgames.org/privacy\"\r\n            style=\" color: #a7a7a7;text-decoration: underline\"\r\n            target=\"_blank\"\r\n          >\r\n            Privacy\r\n          </a>\r\n          &nbsp;&nbsp;\r\n        </div>\r\n        <span style=\"    margin-left: -9px;\">© 2022 <a href=\"https://www.newsgames.org\" style=\"color: rgb(167, 167, 167); text-decoration: underline;\"  target=\"_blank\">News Games</a></span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<style>\r\n  .image-center {\r\n    text-align: center;\r\n    justify-content: center;\r\n    display: flex;\r\n  }\r\n  .cross-word-title{\r\n    font-family: 'Arial';\r\n    font-style: normal;\r\n    font-weight: 700;\r\n    font-size: 50px;\r\n    line-height: 57px;\r\n    text-align: center;\r\n    color: #000000;\r\n  }\r\n\r\n  .home-discription {\r\n    font-family: 'Arial';\r\n    font-style: normal;\r\n    font-weight: 700;\r\n    font-size: 28px;\r\n    line-height: 32px;\r\n    text-align: center;\r\n\r\n    color: #000000;\r\n  }\r\n  @media (max-width: 500px) {\r\n    .home-discription {\r\n      font-size: 23px;\r\n    }\r\n  }\r\n\r\n  .signBtn {\r\n    background: #47a1f4;\r\n    color: white;\r\n    text-decoration: none !important;\r\n    height: 57px;\r\n    width: 267px;\r\n\r\n    font-family: Arial;\r\n    font-weight: 400;\r\n    font-style: normal;\r\n    font-size: 22px;\r\n    line-height: 35.3px;\r\n    color: #ffffff;\r\n    display: block;\r\n    text-align: center;\r\n    border-radius: 10px;\r\n  }\r\n  .sign-up-text {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    height: 100%;\r\n  }\r\n\r\n  .loginLink {\r\n    font-family: Arial;\r\n    font-weight: 400;\r\n    font-style: normal;\r\n    font-size: 22px;\r\n    line-height: 25.3px;\r\n    color: #47a1f4;\r\n    text-decoration: none!important;\r\n    text-align: center;\r\n  }\r\n\r\n  .bottom-text {\r\n    position: absolute;\r\n    left: 51%;\r\n    top: 99%;\r\n    transform: translate(-50%, -99%);\r\n    font-weight: 400;\r\n    font-size: 12px;\r\n    line-height: 13.8px;\r\n    font-family: Arial;\r\n    color: #a7a7a7;\r\n    text-align: center;\r\n  }\r\n</style>\r\n",
    "<div class=\"shawbrook-loader\">\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n  <div class=\"shawbrook-loader-dot\"></div>\r\n</div>\r\n\r\n<style>\r\n  .shawbrook-loader {\r\n    position: absolute;\r\n    z-index: 2000;\r\n    width: 100% !important;\r\n    left: 0;\r\n    right: 0;\r\n    top: 0;\r\n    bottom: 0;\r\n    height: 100% !important;\r\n    padding: 0px;\r\n    margin: 0;\r\n    align-items: center;\r\n  }\r\n  :root {\r\n    --clr0: yellow;\r\n    --clr1: yellow;\r\n    --clr2: yellow;\r\n    --clr3: yellow;\r\n    --clr4: yellow;\r\n    --clr5: yellow;\r\n    --clr6: yellow;\r\n    --clr7: yellow;\r\n    --clr8: yellow;\r\n    --clr9: yellow;\r\n  }\r\n  div {\r\n    background: #76686800;\r\n    margin: 1.5em;\r\n    font-family: sans-serif;\r\n    font-weight: bolder;\r\n    color: var(--clr6);\r\n  }\r\n\r\n  .shawbrook-loader {\r\n    width: 7rem;\r\n    height: 4rem;\r\n    display: flex;\r\n    justify-content: center;\r\n    background: linear-gradient(40deg,#121212db, #141414a1);\r\n    /* box-shadow: black 1px 1px; */\r\n  }\r\n  .shawbrook-loader-dot:after {\r\n    content: \"\";\r\n    position: absolute;\r\n    width: 1rem;\r\n    height: 1rem;\r\n    background: radial-gradient(\r\n      var(--clr2),\r\n      var(--clr2) 0.1rem,\r\n      transparent 0.1rem\r\n    );\r\n    animation: 1.6s pulse infinite;\r\n  }\r\n  .shawbrook-loader-dot {\r\n    position: absolute;\r\n    transform-origin: bottom;\r\n    width: 1rem;\r\n    height: 2rem;\r\n  }\r\n  .shawbrook-loader-dot:nth-child(1) {\r\n    animation-delay: calc(2 * 0.1s);\r\n    transform: rotate(45deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(2) {\r\n    animation-delay: calc(2 * 0.2s);\r\n    transform: rotate(90deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(3) {\r\n    animation-delay: calc(2 * 0.3s);\r\n    transform: rotate(135deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(4) {\r\n    animation-delay: calc(2 * 0.4s);\r\n    transform: rotate(180deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(5) {\r\n    animation-delay: calc(2 * 0.5s);\r\n    transform: rotate(225deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(6) {\r\n    animation-delay: calc(2 * 0.6s);\r\n    transform: rotate(270deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(7) {\r\n    animation-delay: calc(2 * 0.7s);\r\n    transform: rotate(315deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(8) {\r\n    animation-delay: calc(2 * 0.8s);\r\n    transform: rotate(360deg);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(1):after {\r\n    animation-delay: calc(2 * 0.1s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(2):after {\r\n    animation-delay: calc(2 * 0.2s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(3):after {\r\n    animation-delay: calc(2 * 0.3s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(4):after {\r\n    animation-delay: calc(2 * 0.4s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(5):after {\r\n    animation-delay: calc(2 * 0.5s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(6):after {\r\n    animation-delay: calc(2 * 0.6s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(7):after {\r\n    animation-delay: calc(2 * 0.7s);\r\n  }\r\n  .shawbrook-loader-dot:nth-child(8):after {\r\n    animation-delay: calc(2 * 0.8s);\r\n  }\r\n  @keyframes pulse {\r\n    0% {\r\n      transform: scale(1);\r\n    }\r\n    40% {\r\n      transform: scale(2.4);\r\n    }\r\n    100% {\r\n      transform: scale(1);\r\n    }\r\n  }\r\n</style>\r\n",
    "<script>\n  import { onMount } from \"svelte\";\n  import Keyboard from \"svelte-keyboard\";\n  import getSecondarilyFocusedCells from \"./helpers/getSecondarilyFocusedCells.js\";\n  import getCellAfterDiff from \"./helpers/getCellAfterDiff.js\";\n  import checkMobile from \"./helpers/checkMobile.js\";\n  import checkIpad from './helpers/checkIpad.js';\n  import ClueBar from \"./ClueBar.svelte\";\n  import Cell from \"./Cell.svelte\";\n  import Toolbar from \"./Toolbar.svelte\";\n  import { createEventDispatcher } from \"svelte\";\n\n  export let clues;\n  export let disabled;\n  export let cells;\n  export let focusedDirection;\n  export let focusedCellIndex;\n  export let focusedCell;\n  export let isRevealing;\n  export let isChecking;\n  export let isDisableHighlight;\n  export let stacked;\n  export let revealDuration = 1000;\n  export let showKeyboard;\n  export let fontFamily;\n  export let isLoaded;\n  export let keyboardStyle;\n  export let puzzleDetail;\n  let toolBarData;\n  let clearPuzzleNowActiveFirstBox;\n\n  //these are for toolbar\n  export let actions = [\"clear\", \"reveal\", \"check\"];\n  export let revealed = false;\n  let revealTimeout;\n\n  //these are for slider\n\n  export let cellIndexMap;\n\n  \n   //here i am checking if the query paramter have embebed version parameter\n  const urlParams = new URLSearchParams(window.location.search);\n  const isEmbeded = urlParams.has('version');\n\n\n  let element;\n  let run = true;\n  let cellsHistoryIndex = 0;\n  let cellsHistory = [];\n  let focusedCellIndexHistoryIndex = 0;\n  let focusedCellIndexHistory = [];\n  let secondarilyFocusedCells = [];\n  let isMobile = false;\n  let isPuzzleFocused = false;\n  let isIpadDevice = false;\n  const numberOfStatesInHistory = 10;\n  $: w = Math.max(...cells.map((d) => d.x)) + 1;\n  $: h = Math.max(...cells.map((d) => d.y)) + 1;\n  $: timmerStart = false;\n  $: alreadyFilledData = [];\n  $: keyboardVisible =\n    typeof showKeyboard === \"boolean\" ? showKeyboard : isMobile;\n\n  $: cells, focusedCellIndex, focusedDirection, updateSecondarilyFocusedCells();\n  $: sortedCellsInDirection = [...cells].sort((a, b) =>\n    focusedDirection == \"down\" ? a.x - b.x || a.y - b.y : a.y - b.y || a.x - b.x\n  );\n\n  onMount(() => {\n    isMobile = checkMobile();\n    isIpadDevice = checkIpad();\n\n    // alert(isMobile);\n    let isWon = localStorage.getItem('w');\n    let start = localStorage.getItem('start');\n    let isReveal = localStorage.getItem('isReveal');\n    let keyword;\n \n    keyword = localStorage.getItem(\"keyword\");  \n    if (isMobile && isWon == 'y') {\n      showKeyboard = false;\n    }\n    // if (isMobile && start == 'true') {\n    //   showKeyboard = false;\n    // }\n    // if (isMobile && isReveal == 'true') {\n    //   showKeyboard = true;\n    // }\n    dispatch(\"toolBarData\", {\n      toolBarData: toolBarData,\n    });\n  \n  \n    \n    if (keyword !=null || alreadyFilledData.length) {\n      alreadyFilledData = JSON.parse(keyword);\n      const allCells = cells;\n      for (const item of allCells) {\n        const find = alreadyFilledData.find((data) => {\n          return data.index === item.index;\n        });\n        if (find) {\n          const value = find.value;\n          cells[item.index].value = value;\n        }\n      }\n    }\n  });\n\n  function updateSecondarilyFocusedCells() {\n    secondarilyFocusedCells = getSecondarilyFocusedCells({\n      cells,\n      focusedDirection,\n      focusedCell,\n    });\n  }\n  const dispatch = createEventDispatcher();\n\n  function onCellUpdate(index, newValue, diff = 1, doReplaceFilledCells) {\n    doReplaceFilledCells = doReplaceFilledCells || !!cells[index].value;\n\n    if(keyboardVisible==true){\n      let data = getToStorage();\n      if (data.length) {\n        const object = { index: index, value: newValue.toUpperCase() };\n        data = data.filter(item => item.index !== index);\n        if(newValue){\n          data.push(object);\n\n        }\n        setToStorage(data);\n       \n      } else {\n        const array = [{ index: index, value: newValue.toUpperCase() }];\n        if(newValue){\n          setToStorage(array);\n\n        }\n      }\n    }\n    const dimension = focusedDirection == \"across\" ? \"x\" : \"y\";\n    const clueIndex = cells[index].clueNumbers[focusedDirection];\n    const cellsInClue = cells.filter(\n      (cell) =>\n        cell.clueNumbers[focusedDirection] == clueIndex &&\n        (doReplaceFilledCells || !cell.value)\n    );\n    const cellsInCluePositions = cellsInClue\n      .map((cell) => cell[dimension])\n      .filter(Number.isFinite);\n    const isAtEndOfClue =\n      cells[index][dimension] == Math.max(...cellsInCluePositions);\n\n    const newCells = [\n      ...cells.slice(0, index),\n      { ...cells[index], value: newValue },\n      ...cells.slice(index + 1),\n    ];\n    cellsHistory = [newCells, ...cellsHistory.slice(cellsHistoryIndex)].slice(\n      0,\n      numberOfStatesInHistory\n    );\n    cellsHistoryIndex = 0;\n    cells = newCells;\n\n    if (isAtEndOfClue && diff > 0) {\n      onFocusClueDiff(diff);\n    } else {\n      onFocusCellDiff(diff, doReplaceFilledCells);\n    }\n\n    // if(isEmbeded == false){\n      const timmer = localStorage.getItem(\"timmer\");\n      if (!timmer) {\n        if (run == true) {\n          toolBarData.startTimer();\n          run = false;\n        }\n      }\n    // }else{\n    //   if (run == true) {\n    //       toolBarData.startTimer();\n    //       run = false;\n    //     }\n    // }\n\n  }\n\n  function onHistoricalChange(diff) {\n    cellsHistoryIndex += -diff;\n    cells = cellsHistory[cellsHistoryIndex] || cells;\n    focusedCellIndexHistoryIndex += -diff;\n    focusedCellIndex =\n      focusedCellIndexHistory[cellsHistoryIndex] || focusedCellIndex;\n  }\n\n  function onFocusCell(index) {\n    if (isPuzzleFocused && index == focusedCellIndex) {\n      onFlipDirection();\n    } else {\n      focusedCellIndex = index;\n\n      if (!cells[focusedCellIndex].clueNumbers[focusedDirection]) {\n        const newDirection = focusedDirection === \"across\" ? \"down\" : \"across\";\n        focusedDirection = newDirection;\n      }\n\n      focusedCellIndexHistory = [\n        index,\n        ...focusedCellIndexHistory.slice(0, numberOfStatesInHistory),\n      ];\n      focusedCellIndexHistoryIndex = 0;\n    }\n  }\n\n  function onFocusCellDiff(diff, doReplaceFilledCells = true) {\n    const sortedCellsInDirectionFiltered = sortedCellsInDirection.filter((d) =>\n      doReplaceFilledCells ? true : !d.value\n    );\n    const currentCellIndex = sortedCellsInDirectionFiltered.findIndex(\n      (d) => d.index == focusedCellIndex\n    );\n    const nextCellIndex = (\n      sortedCellsInDirectionFiltered[currentCellIndex + diff] || {}\n    ).index;\n    const nextCell = cells[nextCellIndex];\n    if (!nextCell) return;\n    onFocusCell(nextCellIndex);\n  }\n\n  function onFocusClueDiff(diff = 1) {\n    const currentNumber = focusedCell.clueNumbers[focusedDirection];\n    let nextCluesInDirection = clues.filter(\n      (clue) =>\n        !clue.isFilled &&\n        (diff > 0\n          ? clue.number > currentNumber\n          : clue.number < currentNumber) &&\n        clue.direction == focusedDirection\n    );\n    if (diff < 0) {\n      nextCluesInDirection = nextCluesInDirection.reverse();\n    }\n    let nextClue = nextCluesInDirection[Math.abs(diff) - 1];\n    if (!nextClue) {\n      onFlipDirection();\n      nextClue = clues.filter((clue) => clue.direction == focusedDirection)[0];\n    }\n    const nextFocusedCell =\n      sortedCellsInDirection.find(\n        (cell) =>\n          !cell.value && cell.clueNumbers[focusedDirection] == nextClue.number\n      ) || {};\n    focusedCellIndex = nextFocusedCell.index || 0;\n  }\n\n  function onMoveFocus(direction, diff) {\n    if (focusedDirection != direction) {\n      const dimension = direction == \"across\" ? \"x\" : \"y\";\n      focusedDirection = direction;\n    } else {\n      const nextCell = getCellAfterDiff({\n        diff,\n        cells,\n        direction,\n        focusedCell,\n      });\n      if (!nextCell) return;\n      onFocusCell(nextCell.index);\n    }\n  }\n\n  function onFlipDirection() {\n    const newDirection = focusedDirection === \"across\" ? \"down\" : \"across\";\n    const hasClueInNewDirection = !!focusedCell[\"clueNumbers\"][newDirection];\n    if (hasClueInNewDirection) focusedDirection = newDirection;\n  }\n\n  function getToStorage() {\n    let keyword;\n    // if(isEmbeded == false){\n      keyword = localStorage.getItem(\"keyword\");\n    // }\n\n    if (keyword!=null) {\n      return JSON.parse(keyword);\n    }\n    return [];\n  }\n  function setToStorage(data) {\n    // if(isEmbeded == false){\n      localStorage.setItem(\"keyword\", JSON.stringify(data));\n    // /}\n\n  }\n\n  // function onKeydown({ detail }) {\n  \n  //   const diff = detail === \"Backspace\" ? -1 : 1;\n  //   const value = detail === \"Backspace\" ? \"\" : detail;\n  //   onCellUpdate(focusedCellIndex, value, diff);\n  // }\n\n  function onKeydown({ detail }) {\n\n    const diff = detail === \"Backspace\" ? -1 : 1;\n    const value = detail === \"Backspace\" ? \"\" : detail;\n    //   onCellUpdate(focusedCellIndex, value, diff);\n    if (detail == \"Backspace\") {\n\n      onCellUpdate(focusedCellIndex, \"\", -1, true);\n      // return;\n    }else{\n      onCellUpdate(focusedCellIndex, value, diff);\n      // return false;\n    }\n    return false;\n  \n  }\n\n  function onClick() {\n    isPuzzleFocused = element.contains(document.activeElement);\n  }\n\n  //ClueBar script start here\n  $: focusedClueNumbers = focusedCell.clueNumbers || {};\n  $: currentClue =\n    clues.find(\n      (c) =>\n        c.direction === focusedDirection &&\n        c.number === focusedClueNumbers[focusedDirection]\n    ) || {};\n\n  function onClueFocus({ direction, id }) {\n    focusedDirection = direction;\n    focusedCellIndex = cellIndexMap[id] || 0;\n  }\n\n  function onNextClue({ detail }) {\n    let next = detail;\n    if (next < 0) next = clues.length - 1;\n    else if (next > clues.length - 1) next = 0;\n    const { direction, id } = clues[next];\n    onClueFocus({ direction, id });\n  }\n\n  ///ClueBar script end here\n\n  function checkClues() {\n    return clues.map((d) => {\n      const index = d.index;\n      const cellChecks = d.cells.map((c) => {\n        const { value } = cells.find((e) => e.id === c.id);\n        const hasValue = !!value;\n        const hasCorrect = value === c.answer;\n        return { hasValue, hasCorrect };\n      });\n      const isCorrect =\n        cellChecks.filter((c) => c.hasCorrect).length === d.answer.length;\n      const isFilled =\n        cellChecks.filter((c) => c.hasValue).length === d.answer.length;\n      return {\n        ...d,\n        isCorrect,\n        isFilled,\n      };\n    });\n  }\n\n  function reset() {\n    isRevealing = false;\n    isChecking = false;\n    focusedCellIndex = 0;\n    focusedDirection = \"across\";\n  }\n\n  function onClear() {\n    // if(isEmbeded == false){\n      //here i am removing the localstorage won and keeptrying variables\n      localStorage.removeItem('isKeepTrying');\n      localStorage.removeItem('w');\n      if (isMobile) {\n        showKeyboard = true;\n      }\n    // }\n    //this clearPuzzleNowActiveFirstBox i made to inital active first slot so user and enter directly letter instead of first click on slot and then enter it same i did in mount function inside the cell.svelete\n    clearPuzzleNowActiveFirstBox();\n    reset();\n    if (revealTimeout) clearTimeout(revealTimeout);\n    cells = cells.map((cell) => ({\n      ...cell,\n      value: \"\",\n    }));\n  }\n\n  function onReveal() {\n    if (revealed) return true;\n    reset();\n    cells = cells.map((cell) => ({\n     \n      ...cell,\n      value: cell.answer,\n    }));\n    startReveal();\n    if (isMobile) {\n      showKeyboard = false;\n    }\n    clearPuzzleNowActiveFirstBox();\n    onFocusCell(1);\n    localStorage.setItem('isReveal','true');\n    console.log('cells'+cells[0]);\n    console.log('clues'+clues[0]);\n    let arr = [];\n    let index = 0;\n    clues.map((row) => {\n      if(row.direction == 'across'){\n        row.cells.map((singleClueLetter) =>{\n          arr.push({ index:index, value: singleClueLetter.answer });\n          index++;\n        });\n      }\n    });\n    // alert('Revealed');\n    setToStorage(arr);\n    updateCellsWithKeywords();\n\n\n \n  }\n\n  function updateCellsWithKeywords(){\n    \n   let keyword = localStorage.getItem(\"keyword\");  \n      if (keyword !=null || alreadyFilledData.length) {\n        alreadyFilledData = JSON.parse(keyword);\n        const allCells = cells;\n        for (const item of allCells) {\n          const find = alreadyFilledData.find((data) => {\n            return data.index === item.index;\n          });\n          if (find) {\n            const value = find.value;\n            cells[item.index].value = value;\n          }\n        }\n      }\n  }\n\n  function onCheck() {\n    isChecking = true;\n  }\n\n  function startReveal() {\n    isRevealing = true;\n    isChecking = false;\n    if (revealTimeout) clearTimeout(revealTimeout);\n    revealTimeout = setTimeout(() => {\n      isRevealing = false;\n    }, revealDuration + 250);\n  }\n\n  export function onToolbarEvent({ detail }) {\n    if (detail === \"clear\") {\n      onClear();\n      // if(isEmbeded == false){\n        localStorage.removeItem(\"keyword\");\n        localStorage.removeItem(\"timmer\");\n        localStorage.removeItem(\"start\");\n        localStorage.removeItem('w');\n        localStorage.removeItem('isKeepTrying');\n        localStorage.removeItem('isTryAgainPopup');\n        localStorage.removeItem('isReveal');\n      // }\n\n       toolBarData.stopAndZero();\n       toolBarData.startTimer();\n      dispatch(\"keyEnabled\", false);\n    } else if (detail === \"reveal\") {\n      onReveal();\n    } else if (detail === \"check\") {\n      onCheck();\n    }\n  }\n</script>\n\n<svelte:window on:click=\"{onClick}\" />\n\n<section\n style:font-family={fontFamily ? fontFamily : ''}\n  class=\"puzzle {isEmbeded && isIpadDevice ? 'ipad-devices-margin-bottom':''}\"\n  class:stacked\n  class:is-loaded=\"{isLoaded}\"\n  bind:this=\"{element}\"\n>\n  <slot\n    name=\"toolbar\"\n    onClear=\"{onClear}\"\n    onReveal=\"{onReveal}\"\n    onCheck=\"{onCheck}\"\n  >\n    <Toolbar\n      actions=\"{actions}\"\n      fontFamily = \"{fontFamily}\"\n      bind:this=\"{toolBarData}\"\n      puzzleDetail=\"{puzzleDetail}\"\n      on:event=\"{onToolbarEvent}\"\n    />\n  </slot>\n  <svg viewBox=\"0 0 {w} {h}\" class=\"{isIpadDevice && !isEmbeded ? 'ipad-puzzle-box ipad-screen-puzzle-width':''}\">\n    {#each cells as { x, y, value, answer, index, number, custom }}\n      <Cell\n        bind:onFocusSelf={clearPuzzleNowActiveFirstBox}\n        x=\"{x}\"\n        y=\"{y}\"\n        fontFamily = \"{fontFamily}\"\n        index=\"{index}\"\n        value=\"{value}\"\n        answer=\"{answer}\"\n        number=\"{number}\"\n        custom=\"{custom}\"\n        disabled=\"{disabled}\"\n        changeDelay=\"{isRevealing\n          ? (revealDuration / cells.length) * index\n          : 0}\"\n        isRevealing=\"{isRevealing}\"\n        isChecking=\"{isChecking}\"\n        isFocused=\"{focusedCellIndex == index && !isDisableHighlight}\"\n        isSecondarilyFocused=\"{secondarilyFocusedCells.includes(index) &&\n          !isDisableHighlight}\"\n        onFocusCell=\"{onFocusCell}\"\n        onCellUpdate=\"{onCellUpdate}\"\n        onFocusClueDiff=\"{onFocusClueDiff}\"\n        onMoveFocus=\"{onMoveFocus}\"\n        onFlipDirection=\"{onFlipDirection}\"\n        onHistoricalChange=\"{onHistoricalChange}\"\n      />\n    {/each}\n  </svg>\n\n  <div class=\"clues--stacked clue-bar-margin-top  {isIpadDevice && !isEmbeded ? 'ipad-screen-puzzle-width':''}\">\n    <ClueBar fontFamily = \"{fontFamily}\" currentClue=\"{currentClue}\" on:nextClue=\"{onNextClue}\" />\n  </div>\n</section>\n<!-- fixed-bottom -->\n<!-- margin-bottom -->\n{#if keyboardVisible}\n  <div class=\"keyboard {isEmbeded == false? 'fixed-bottom':''} {isMobile && isEmbeded ? 'display-none':''} {isIpadDevice && isEmbeded ? 'fixed-bottom':''}\" fontFamily = \"{fontFamily}\">\n    <Keyboard\n      fontFamily = \"{fontFamily}\"\n      layout=\"crossword\"\n      style=\"{keyboardStyle}\"\n      on:keydown=\"{onKeydown}\"\n    />\n  </div>\n{/if}\n\n<style>\n  .ipad-devices-margin-bottom{\n    margin-bottom: 120px;\n  }\n  .ipad-screen{\n    /* position: absolute !important;\n    top: 100% !important;\n    margin-top: 20px; */\n  }\n\n  /* .fixed-bottom{\n    position: absolute !important;\n    top: 100%;\n  } */\n  .margin-bottom{\n    margin-bottom:20px;\n  }\n  .clues--stacked {\n    margin-top: 20px;\n  }\n  section {\n    position: sticky;\n    top: 1em;\n    order: 0;\n    flex: 1;\n    height: fit-content;\n  }\n\n  section.is-loaded.stacked {\n    position: relative;\n    top: auto;\n    height: auto;\n    order: -1;\n  }\n\n  svg {\n    width: 100%;\n    display: block;\n    font-size: 1px;\n    background: var(--main-color);\n    border: 4px solid var(--main-color);\n    box-sizing: border-box;\n  }\n\n  .keyboard {\n    order: 3;\n  }\n  .ipad-puzzle-box{\n      background: white;\n    }\n  \n  /* .fix-keyboard{\n    top: 570px;\n    position: absolute;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1030;\n  } */\n  @media only screen and (max-width: 720px) {\n    section:not(.is-loaded) {\n      position: relative;\n      top: auto;\n      height: auto;\n      order: -1;\n    }\n    /* .fix-keyboard{\n      position: unset !important;\n    } */\n  }\n  @media only screen and (max-height: 850px) {\n    .ipad-screen-puzzle-width{\n      width: 100%;\n    }\n  }\n\n\n  @media only screen and (max-height: 810px) {\n    .ipad-screen-puzzle-width{\n      width: 95%;\n    }\n  }\n\n\n\n  @media only screen and (max-height: 780px) {\n    .ipad-screen-puzzle-width{\n      width: 88%;\n    }\n  }\n\n  @media only screen and (max-height: 750px) {\n    .ipad-screen-puzzle-width{\n      width: 85%;\n    }\n  }\n\n  @media only screen and (max-height: 730px) {\n    .ipad-screen-puzzle-width{\n      width: 80%;\n    }\n  }\n\n  @media only screen and (max-height: 700px) {\n\n    .ipad-screen-puzzle-width{\n      width: 75%;\n    }\n  }\n\n\n  @media only screen and (max-height: 680px) {\n    .ipad-screen-puzzle-width{\n      width: 70%;\n    }\n  }\n\n\n  @media only screen and (max-height: 650px) {\n    .ipad-screen-puzzle-width{\n      width: 65%;\n    }\n  }\n\n\n  @media only screen and (max-height: 620px) {\n    .ipad-screen-puzzle-width{\n      width: 60%;\n    }\n  }\n\n\n  \n  @media only screen and (max-height: 600px) {\n    .ipad-screen-puzzle-width{\n      width: 55%;\n    }\n  }\n\n  @media only screen and (max-height: 580px) {\n    .ipad-screen-puzzle-width{\n      width: 50%;\n    }\n  }\n\n  @media only screen and (max-height: 550px) {\n    .ipad-screen-puzzle-width{\n      width: 45%;\n    }\n  }\n\n  @media only screen and (max-height: 530px) {\n    .ipad-screen-puzzle-width{\n      width: 40%;\n    }\n  }\n\n  @media only screen and (max-height: 500px) {\n    .ipad-screen-puzzle-width{\n      width: 35%;\n    }\n  }\n\n  @media only screen and (min-width: 721px) {\n    .display-none{\n      /* display: none !important; */\n      /* position: absolute;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      z-index: 1030; */\n    }\n  }\n</style>\n",
    "<script>\n  import { onMount, onDestroy } from \"svelte\";\n  import checkMobile from \"./helpers/checkMobile.js\";\n  import checkIpad from './helpers/checkIpad.js';\n  import { createEventDispatcher } from \"svelte\";\n  const dispatch = createEventDispatcher();\n\n  let timerTime = 0;\n  let isRunning = false;\n  let interval;\n  let TotalTime;\n  let isMobile = '';\n  let isIpadDevice = false;\n  export let puzzleDetail;\n\n   //here i am checking if the query paramter have embebed version parameter\n\n  const urlParams = new URLSearchParams(window.location.search);\n  let isEmbeded = urlParams.has('version');\n  \n  export const incrementTimer = () => {\n    let start;\n    let puzzleDate;\n    // if(isEmbeded == false){\n      start = localStorage.getItem(\"start\");\n      puzzleDate = localStorage.getItem(\"run_date\");\n    // }\n    // const start = localStorage.getItem(\"start\");\n\n    const minutes = document.querySelector(\".minutes\");\n    const seconds = document.querySelector(\".seconds\");\n    const timer = document.getElementById(\"timer\");\n    timerTime = parseInt(timerTime) + parseInt(1);\n\n    const numberMinutes = Math.floor(timerTime / 60);\n    const numberSeconds = timerTime % 60;\n\n    minutes.innerText = pad(numberMinutes);\n    seconds.innerText = pad(numberSeconds);\n    timer.value = pad(numberMinutes) + \" : \" + pad(numberSeconds);\n    TotalTime = pad(numberMinutes) + \":\" + pad(numberSeconds);\n\n    if(!start && puzzleDate!=null){\n      // console.log(timerTime+ 'timerTime');/\n      localStorage.setItem(\"timmer\", timerTime);\n      // localStorage.setItem(\"start\", true);\n\n    }\n  };\n  const pad = (number) => {\n    return number < 10 ? \"0\" + number : number;\n  };\n\n  export const stop = () => {\n    isRunning = false;\n    clearInterval(interval);\n  };\n  export const getTime = () => {\n    return TotalTime;\n  };\n  export const startTimer = () => {\n    isRunning = true;\n    // if(isEmbeded == false){\n      const get_time = localStorage.getItem(\"timmer\");\n      if (get_time!=null) {\n        // console.log(get_time+'get_time');\n        timerTime = get_time;\n      }\n    // }\n\n    if (isRunning) {\n      interval = setInterval(incrementTimer, 1000);\n    }\n  };\n\n  onMount(() => {\n    // console.log(isEmbeded+'isEmbeded');\n    // if(isEmbeded == false){\n      isMobile = checkMobile();\n      isIpadDevice = checkIpad();\n      const get_time = localStorage.getItem(\"timmer\");\n      const start = localStorage.getItem(\"start\");\n      if (get_time) {\n        if(start==='true')\n        {\n          timerTime=get_time-1 > 0 ? get_time-1 : 0;\n          incrementTimer();\n        }else{\n          startTimer();\n\n        }\n      \n      }\n    // }\n\n  });\n\n  export const stopAndZero = () => {\n    isRunning = false;\n    timerTime = 0;\n    const minutes = document.querySelector(\".minutes\");\n    const seconds = document.querySelector(\".seconds\");\n    const timer = document.getElementById(\"timer\");\n    minutes.innerText = \"00\";\n    seconds.innerText = \"00\";\n    timer.value = pad(\"00\") + \" : \" + pad(\"00\");\n    TotalTime = pad(\"00\") + \":\" + pad(\"00\");\n  };\n\n  export let actions = [\"clear\", \"reveal\", \"check\"];\n  export let fontFamily;\n</script>\n\n<div class=\"toolbar {isIpadDevice ? 'Ipad-screen-toolbar-width':''}\">\n  <div class=\"info float-start\">\n    <h2 style:font-family={fontFamily ? fontFamily : ''}>\n      {puzzleDetail?.formated_run_date ? puzzleDetail?.formated_run_date : \"\"}\n    </h2>\n    <p style:font-family={fontFamily ? fontFamily : ''}>By {puzzleDetail?.author ? puzzleDetail?.author : \"\"}</p>\n  </div>\n\n  <div class=\"dropdown dropstart float-end flex-box\">\n    <!-- timer -->\n    <span>\n      <div class=\"jumbotron text-center\" style:font-family={fontFamily ? fontFamily : ''}>\n        <div class=\"timer\" style=\"    margin-right: 13px;\">\n          <span class=\"minutes\"> 00 </span>\n          :\n          <span class=\"seconds\"> 00 </span>\n          <input type=\"hidden\" name=\"timer\" id=\"timer\" />\n        </div>\n      </div>\n    </span>\n    <!-- timer -->\n\n    <span\n      class=\"menu_button\"\n      type=\"button\"\n      id=\"dropdownMenuButton1\"\n      data-bs-toggle=\"dropdown\"\n      aria-expanded=\"false\"\n    >\n      <img src=\"menu_icon.png\" alt=\"\" />\n    </span>\n    <ul class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuButton1\">\n      {#each actions as action}\n        {#if action === \"clear\"}\n          <li style:font-family={fontFamily ? fontFamily : ''}\n            class=\"dropdown-item\"\n            on:click=\"{() => dispatch('event', 'clear')}\"\n          >\n            Clear\n          </li>\n        {:else if action === \"reveal\"}\n          <li style:font-family={fontFamily ? fontFamily : ''}\n            class=\"dropdown-item\"\n            on:click=\"{() => dispatch('event', 'reveal')}\"\n          >\n            Reveal\n          </li>\n        {:else if action === \"check\"}\n          <li style:font-family={fontFamily ? fontFamily : ''}\n            class=\"dropdown-item\"\n            on:click=\"{() => dispatch('event', 'check')}\"\n          >\n            Check\n          </li>\n        {/if}\n      {/each}\n\n     \n    </ul>\n  </div>\n\n \n</div>\n\n<style>\n  .info {\n    line-height: 123.5%;\n  }\n  .info p {\n    font-family: \"Arial\";\n    font-style: normal;\n  }\n  .info h2 {\n    font-family: \"Arial\";\n    font-style: normal;\n    font-weight: 700;\n    font-size: 16px;\n  }\n  .toolbar {\n    margin-bottom: 1em;\n    padding: 1em 0;\n    /* display: flex;\n    justify-content: flex-end; */\n    font-family: var(--font);\n    font-size: 0.85em;\n    background-color: transparent;\n  }\n\n  .dropdown-menu li {\n    cursor: pointer;\n  }\n\n  .menu_button {\n    background: none;\n  }\n  .flex-box {\n    display: flex;\n    align-items: center;\n  }\n  @media only screen and (max-height: 850px) {\n    .Ipad-screen-toolbar-width{\n      width: 100% !important;\n    }\n  }\n\n \n  @media only screen and (max-height: 810px) {\n    .Ipad-screen-toolbar-width{\n      width: 95%;\n    }\n  }\n\n\n\n  @media only screen and (max-height: 780px) {\n    .Ipad-screen-toolbar-width{\n      width: 88%;\n    }\n  }\n\n  @media only screen and (max-height: 750px) {\n    .Ipad-screen-toolbar-width{\n      width: 85%;\n    }\n  }\n\n  @media only screen and (max-height: 730px) {\n    .Ipad-screen-toolbar-width{\n      width: 80%;\n    }\n  }\n\n  @media only screen and (max-height: 700px) {\n\n    .Ipad-screen-toolbar-width{\n      width: 75%;\n    }\n  }\n\n\n  @media only screen and (max-height: 680px) {\n    .Ipad-screen-toolbar-width{\n      width: 70%;\n    }\n  }\n\n\n  @media only screen and (max-height: 650px) {\n    .Ipad-screen-toolbar-width{\n      width: 65%;\n    }\n  }\n\n\n  @media only screen and (max-height: 620px) {\n    .Ipad-screen-toolbar-width{\n      width: 60%;\n    }\n  }\n\n\n  \n  @media only screen and (max-height: 600px) {\n    .Ipad-screen-toolbar-width{\n      width: 55%;\n    }\n  }\n\n  @media only screen and (max-height: 580px) {\n    .Ipad-screen-toolbar-width{\n      width: 50%;\n    }\n  }\n\n  @media only screen and (max-height: 550px) {\n    .Ipad-screen-toolbar-width{\n      width: 45%;\n    }\n  }\n\n  @media only screen and (max-height: 530px) {\n    .Ipad-screen-toolbar-width{\n      width: 40%;\n    }\n  }\n\n  @media only screen and (max-height: 500px) {\n    .Ipad-screen-toolbar-width{\n      width: 35%;\n    }\n  }\n</style>\n"
  ],
  "names": [],
  "mappings": "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"
}