{"version":3,"file":"index.mjs","sources":["../src/context/widgetOptions.ts","../src/components/contactStep.ts","../src/components/feedbackStep.ts","../src/components/satisfactionStep.ts","../src/components/title.ts","../src/context/widgetState.ts","../src/components/thanksStep.ts","../src/components/modal.ts","../src/components/button.ts","../src/index.ts"],"sourcesContent":["import { reCreateButton } from '../components/button';\nimport { CustomizationOptionsInterface } from '../types/options';\n\nexport class WidgetOptions {\n  static customizationOptions: CustomizationOptionsInterface = {\n    color: '#5555D8',\n    submitText: 'Send',\n    titleSatisfaction: 'Give us your feedback',\n    placeholderFeedback: '💡 Describe your needs...',\n    titleContact: 'We will keep you updated',\n    placeholderContact: 'email@domain.com',\n    token: '',\n    testingMode: false\n  };\n\n  constructor() {\n    throw new Error('WidgetOptions is a static class');\n  }\n\n  static setOptions(options: Partial<CustomizationOptionsInterface>): void {\n    this.customizationOptions = {\n      ...this.customizationOptions,\n      ...options\n    };\n\n    reCreateButton();\n  }\n}\n","import { WidgetOptions } from '../context/widgetOptions';\nimport { WidgetState } from '../context/widgetState';\n\nimport { shadowRoot } from './modal';\n\nexport const focusInput = () => {\n  const feedbackTextarea = shadowRoot().querySelector(\n    '#gravite_widget_modal_content #contact-step .input-field input'\n  ) as HTMLInputElement;\n  feedbackTextarea.focus();\n};\n\nexport const hideContactStep = () => {\n  const contactStep = shadowRoot().querySelector(\n    '#gravite_widget_modal_content #contact-step'\n  ) as HTMLElement;\n\n  const titleContact = shadowRoot().querySelector(\n    '#gravite_widget_modal_content .title-contact'\n  ) as HTMLElement;\n\n  if (contactStep && titleContact) {\n    contactStep.style.display = 'none';\n    titleContact.style.display = 'none';\n  }\n};\n\nconst transition = () => {\n  const modalContent = shadowRoot().querySelector(\n    '#gravite_widget_modal_content'\n  ) as HTMLElement;\n\n  const modalContentChilds = modalContent.children;\n\n  for (let i = 0; i < modalContentChilds.length; i++) {\n    const element = modalContentChilds[i] as HTMLElement;\n    element.style.transition = 'opacity 0.3s ease-in-out';\n    element.style.opacity = '0';\n  }\n};\n\nconst setCookie = (value: string, days: number) => {\n  let expires = '';\n  if (days) {\n    const date = new Date();\n    date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n    expires = `; expires=${date.toUTCString()}`;\n  }\n  document.cookie = `gravite_widget_email=${value}${expires}; path=/`;\n};\n\nconst getCookie = (name: string): string | undefined => {\n  const nameEQ = `${name}=`;\n  const ca = document.cookie.split(';');\n  for (let i = 0; i < ca.length; i++) {\n    let c = ca[i];\n    if (c) {\n      while (c.charAt(0) === ' ') {\n        c = c.substring(1, c.length);\n      }\n      if (c.indexOf(nameEQ) === 0) {\n        return c.substring(nameEQ.length, c.length);\n      }\n    } else {\n      return undefined;\n    }\n  }\n  return undefined;\n};\n\n// send feedback to https://api.gravite.io/api/widget/feedbacks with header X-TOKEN\nconst sendFeedback = async (skip: boolean) => {\n  const completeFeedback: {\n    description: string;\n    email?: string;\n    rate: number;\n  } = {\n    description: WidgetState.feedback,\n    rate: WidgetState.satisfaction\n  };\n\n  if (!skip && WidgetState.email) {\n    completeFeedback.email = WidgetState.email;\n  }\n\n  let url = '';\n\n  if (WidgetOptions.customizationOptions.testingMode) {\n    url = `https://api.esylva.com/api/widget/feedbacks`;\n  } else {\n    url = `https://api.gravite.io/api/widget/feedbacks`;\n  }\n\n  return await fetch(url, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'X-Token': WidgetOptions.customizationOptions.token\n    },\n    body: JSON.stringify(completeFeedback)\n  });\n};\n\nconst handleClick = async (skip: boolean) => {\n  const buttonSubmit = shadowRoot().querySelector(\n    '#gravite_widget_modal_content #contact-step .send-button'\n  ) as HTMLButtonElement;\n  const buttonSkip = shadowRoot().querySelector(\n    '#gravite_widget_modal_content #contact-step .skip-button'\n  ) as HTMLButtonElement;\n  buttonSkip.disabled = true;\n  buttonSubmit.disabled = true;\n\n  transition();\n  await sendFeedback(skip).finally(() => {\n    setTimeout(async () => {\n      WidgetState.changeStep(4);\n    }, 300);\n  });\n};\n\nconst handleInput = (event: Event) => {\n  const inputElement = event.target as HTMLInputElement;\n  const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\n  const buttonSubmit = shadowRoot().querySelector(\n    '#gravite_widget_modal_content #contact-step .send-button'\n  ) as HTMLButtonElement;\n\n  if (inputElement.value.match(emailRegex)) {\n    buttonSubmit.disabled = false;\n    WidgetState.email = inputElement.value;\n  } else {\n    buttonSubmit.disabled = true;\n  }\n};\n\nexport const createContactStep = () => {\n  const contactStep = document.createElement('div');\n  contactStep.id = 'contact-step';\n  contactStep.classList.add('contact-step');\n\n  const inputField = document.createElement('div');\n  inputField.classList.add('input-field');\n\n  const inputElement = document.createElement('input');\n  inputElement.type = 'text';\n  inputElement.placeholder =\n    WidgetOptions.customizationOptions.placeholderContact;\n  const email = getCookie('gravite_widget_email') || '';\n  inputElement.value = email;\n  WidgetState.email = email;\n  inputElement.addEventListener('input', handleInput);\n\n  const buttonContainer = document.createElement('div');\n  buttonContainer.classList.add('button-container');\n\n  const skipButton = document.createElement('button');\n  skipButton.classList.add('skip-button');\n  skipButton.textContent = 'Skip';\n  skipButton.type = 'button';\n\n  const sendButton = document.createElement('button');\n  sendButton.classList.add('send-button');\n  sendButton.textContent = WidgetOptions.customizationOptions.submitText;\n  sendButton.type = 'button';\n  sendButton.style.backgroundColor = WidgetOptions.customizationOptions.color;\n\n  if (\n    inputElement.value &&\n    inputElement.value.match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/)\n  ) {\n    sendButton.disabled = false;\n  } else {\n    sendButton.disabled = true;\n  }\n\n  skipButton.addEventListener('click', () => {\n    handleClick(true);\n  });\n\n  sendButton.addEventListener('click', () => {\n    const inputVal = shadowRoot().querySelector(\n      '#gravite_widget_modal_content #contact-step .input-field input'\n    ) as HTMLInputElement;\n\n    setCookie(inputVal.value, 7);\n\n    handleClick(false);\n  });\n\n  inputField.appendChild(inputElement);\n  inputField.appendChild(skipButton);\n  inputField.appendChild(sendButton);\n\n  contactStep.appendChild(inputField);\n\n  return contactStep;\n};\n","import { WidgetOptions } from '../context/widgetOptions';\nimport { WidgetState } from '../context/widgetState';\n\nimport { shadowRoot } from './modal';\n\nexport const focusTextarea = () => {\n  const feedbackTextarea = shadowRoot().querySelector(\n    '#gravite_widget_feedback_step .feedback-textarea'\n  ) as HTMLTextAreaElement;\n  feedbackTextarea.focus();\n};\n\nexport const hideFeedbackStep = () => {\n  const feedbackStep = shadowRoot().querySelector(\n    '#gravite_widget_feedback_step'\n  ) as HTMLElement;\n  const satisfactionStep = shadowRoot().querySelector(\n    '#gravite_widget_modal_content .satisfaction-select'\n  ) as HTMLElement;\n\n  const titleSatisfaction = shadowRoot().querySelector(\n    '#gravite_widget_modal_content .title-satisfaction'\n  ) as HTMLElement;\n\n  if (feedbackStep && satisfactionStep && titleSatisfaction) {\n    feedbackStep.style.display = 'none';\n    satisfactionStep.style.display = 'none';\n    titleSatisfaction.style.display = 'none';\n  }\n};\n\nconst transition = () => {\n  const modalContent = shadowRoot().querySelector(\n    '#gravite_widget_modal_content'\n  ) as HTMLElement;\n\n  const modalContentChilds = modalContent.children;\n\n  for (let i = 0; i < modalContentChilds.length; i++) {\n    const element = modalContentChilds[i] as HTMLElement;\n    element.style.transition = 'opacity 0.3s ease-in-out';\n    // element.style.transform = 'translateY(-200%)';\n    // fade out\n    element.style.opacity = '0';\n  }\n};\n\nexport const createFeedbackStep = () => {\n  const feedbackStepOld = shadowRoot().querySelector(\n    '#gravite_widget_feedback_step'\n  ) as HTMLElement;\n  if (feedbackStepOld) {\n    feedbackStepOld.remove();\n  }\n\n  const feedbackStep = document.createElement('div');\n  feedbackStep.id = 'gravite_widget_feedback_step';\n  feedbackStep.classList.add('feedback-step');\n\n  const submitButton = document.createElement('button');\n  submitButton.classList.add('submit-button');\n  submitButton.textContent = WidgetOptions.customizationOptions.submitText;\n  submitButton.type = 'button';\n  submitButton.style.backgroundColor = WidgetOptions.customizationOptions.color;\n\n  submitButton.disabled = true;\n\n  const feedbackTextarea = document.createElement('textarea');\n  feedbackTextarea.classList.add('feedback-textarea');\n  feedbackTextarea.placeholder =\n    WidgetOptions.customizationOptions.placeholderFeedback;\n\n  feedbackTextarea.onclick = (e: any) => {\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  feedbackTextarea.addEventListener('input', e => {\n    const target = e.target as HTMLTextAreaElement;\n    submitButton.disabled = target.value.length <= 0;\n  });\n\n  submitButton.onclick = (e: any) => {\n    e.stopPropagation();\n    e.preventDefault();\n    WidgetState.feedback = feedbackTextarea.value;\n    transition();\n    WidgetState.changeStep(3);\n  };\n\n  feedbackStep.appendChild(feedbackTextarea);\n  feedbackStep.appendChild(submitButton);\n\n  return feedbackStep;\n};\n","import { WidgetState } from '../context/widgetState';\n\nimport { shadowRoot } from './modal';\n\nconst setSelected = (value: any) => {\n  WidgetState.satisfaction = value;\n\n  const flexItems = shadowRoot().querySelectorAll(\n    '.satisfaction-select .flex-item'\n  ) as NodeListOf<HTMLElement>;\n  flexItems.forEach((item, index) => {\n    if (index + 1 === value) {\n      item.style.opacity = '1';\n    } else {\n      item.style.opacity = '0.3';\n    }\n  });\n};\n\nconst handleClick = (e: any, i: number) => {\n  e.stopPropagation();\n  e.preventDefault();\n  setSelected(i + 1);\n  transition();\n  setTimeout(() => {\n    WidgetState.changeStep(2);\n  }, 500);\n};\n\nconst transition = () => {\n  const titleSatisfaction = shadowRoot().querySelector(\n    '.title-satisfaction'\n  ) as HTMLElement;\n\n  const satisfactionSelect = shadowRoot().querySelector(\n    '.satisfaction-select'\n  ) as HTMLElement;\n\n  titleSatisfaction.style.height = '0';\n  satisfactionSelect.style.transform = 'translateY(0)';\n  satisfactionSelect.style.height = 'fit-content';\n\n  const flexContainer = shadowRoot().querySelector(\n    '.satisfaction-select .flex-container'\n  ) as HTMLElement;\n  flexContainer.style.justifyContent = 'flex-start';\n  flexContainer.style.gap = '12px';\n\n  const flexItems = shadowRoot().querySelectorAll(\n    '.satisfaction-select .flex-container .flex-item'\n  ) as NodeListOf<HTMLElement>;\n  flexItems.forEach(item => {\n    item.style.width = '24px';\n    const emoji = item.firstChild as HTMLElement;\n    emoji.style.fontSize = '24px';\n    emoji.style.lineHeight = '32px';\n  });\n\n  setTimeout(() => {\n    titleSatisfaction.style.display = 'none';\n    const flexItems = shadowRoot().querySelectorAll(\n      '.satisfaction-select .flex-container .flex-item div:nth-child(2)'\n    ) as NodeListOf<HTMLElement>;\n    flexItems.forEach(item => {\n      item.style.display = 'none';\n    });\n  }, 500);\n};\n\nexport const createSatisfactionStep = () => {\n  const satisfactionSelect = document.createElement('div');\n  satisfactionSelect.classList.add('satisfaction-select');\n\n  const flexContainer = document.createElement('div');\n  flexContainer.classList.add('flex-container');\n  satisfactionSelect.appendChild(flexContainer);\n\n  const emojis = ['😩', '🙁', '😐', '🙂', '😍'];\n  const labels = ['Hate', 'Dislike', 'Neutral', 'Like', 'Love'];\n\n  for (let i = 0; i < emojis.length; i++) {\n    const flexItem = document.createElement('div');\n    flexItem.classList.add('flex-item');\n\n    const emojiText = document.createElement('div');\n    emojiText.textContent = emojis[i] as string;\n    flexItem.appendChild(emojiText);\n\n    const labelText = document.createElement('div');\n    labelText.textContent = labels[i] as string;\n    flexItem.appendChild(labelText);\n\n    flexItem.addEventListener('click', e => {\n      handleClick(e, i);\n    });\n\n    flexContainer.appendChild(flexItem);\n  }\n\n  setSelected(0);\n\n  return satisfactionSelect;\n};\n","export const createTitle = (title: string, stepName: string) => {\n  const titleEl = document.createElement('div');\n  titleEl.classList.add('title');\n  titleEl.classList.add(`title-${stepName}`);\n  titleEl.textContent = title;\n\n  return titleEl;\n};\n","import {\n  createContactStep,\n  focusInput,\n  hideContactStep\n} from '../components/contactStep';\nimport {\n  createFeedbackStep,\n  focusTextarea,\n  hideFeedbackStep\n} from '../components/feedbackStep';\nimport { closeModal, shadowRoot } from '../components/modal';\nimport { createSatisfactionStep } from '../components/satisfactionStep';\nimport { createThanksStep } from '../components/thanksStep';\nimport { createTitle } from '../components/title';\n\nimport { WidgetOptions } from './widgetOptions';\n\nexport class WidgetState {\n  static step = 0;\n  static satisfaction = 0;\n  static feedback = '';\n  static email = '';\n\n  constructor() {\n    throw new Error('FormContext is a static class');\n  }\n\n  static changeStep(step: number) {\n    WidgetState.step = step;\n    const modalContent = shadowRoot().querySelector(\n      '#gravite_widget_modal_content'\n    ) as HTMLElement;\n\n    switch (step) {\n      case 0:\n        break;\n      case 1:\n        modalContent.appendChild(\n          createTitle(\n            WidgetOptions.customizationOptions.titleSatisfaction,\n            'satisfaction'\n          )\n        );\n        modalContent.appendChild(createSatisfactionStep());\n        break;\n      case 2:\n        modalContent.appendChild(createFeedbackStep());\n        focusTextarea();\n\n        break;\n      case 3:\n        setTimeout(() => {\n          hideFeedbackStep();\n          modalContent.appendChild(\n            createTitle(\n              WidgetOptions.customizationOptions.titleContact,\n              'contact'\n            )\n          );\n          modalContent.appendChild(createContactStep());\n          focusInput();\n        }, 300);\n        break;\n      case 4:\n        hideContactStep();\n        setTimeout(() => {\n          modalContent.appendChild(createThanksStep());\n        }, 500);\n\n        setTimeout(() => {\n          closeModal();\n        }, 2000);\n        break;\n      default:\n        break;\n    }\n  }\n}\n","export const createThanksStep = () => {\n  const thanksStep = document.createElement('div');\n  thanksStep.id = 'thanks-step';\n\n  const icon = document.createElement('div');\n  icon.classList.add('check-icon');\n  icon.innerHTML = `<svg width=\"57\" height=\"56\" viewBox=\"0 0 57 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <rect x=\"4.5\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#D1FADF\"/>\n  <path d=\"M38.5 27.0799V27.9999C38.4988 30.1563 37.8005 32.2545 36.5093 33.9817C35.2182 35.7088 33.4033 36.9723 31.3354 37.5838C29.2674 38.1952 27.0573 38.1218 25.0345 37.3744C23.0117 36.6271 21.2847 35.246 20.111 33.4369C18.9373 31.6279 18.3798 29.4879 18.5217 27.3362C18.6636 25.1844 19.4972 23.1362 20.8983 21.4969C22.2994 19.8577 24.1928 18.7152 26.2962 18.24C28.3996 17.7648 30.6003 17.9822 32.57 18.8599M38.5 19.9999L28.5 30.0099L25.5 27.0099\" stroke=\"#039855\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n  <rect x=\"4.5\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#ECFDF3\" stroke-width=\"8\"/>\n  </svg>\n  `;\n\n  const text = document.createElement('div');\n  text.classList.add('thanks-text');\n  text.textContent = 'Thank you';\n\n  thanksStep.appendChild(icon);\n  thanksStep.appendChild(text);\n\n  return thanksStep;\n};\n","import { init } from '..';\nimport { WidgetOptions } from '../context/widgetOptions';\nimport { WidgetState } from '../context/widgetState';\n\nexport const createModal = () => {\n  const modalContainerOld = document.getElementById(\n    'gravite_widget_modal_container'\n  ) as HTMLElement;\n\n  if (modalContainerOld) {\n    modalContainerOld.remove();\n  }\n\n  const modalContainer = document.createElement('div');\n  modalContainer.id = 'gravite_widget_modal_container';\n\n  const modal = document.createElement('div');\n  modal.id = 'gravite_widget_modal';\n  modal.addEventListener('click', e => {\n    e.stopPropagation();\n    e.preventDefault();\n  });\n\n  const modalContent = document.createElement('div');\n  modalContent.id = 'gravite_widget_modal_content';\n\n  const closeButton = document.createElement('button');\n  closeButton.id = 'gravite_widget_modal_close_button';\n  closeButton.classList.add('close-button');\n  closeButton.classList.add('gravite_widget_close_button');\n  closeButton.innerHTML = `<svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"gravite_widget_close_button\">\n  <path d=\"M11.5 1.5L1.5 11.5M1.5 1.5L11.5 11.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n  </svg>`;\n  closeButton.addEventListener('click', e => {\n    e.stopPropagation();\n    e.preventDefault();\n    closeModal();\n  });\n\n  const poweredByContainer = document.createElement('div');\n  poweredByContainer.classList.add('powered-by-container');\n  poweredByContainer.style.cursor = 'pointer';\n\n  poweredByContainer.addEventListener('click', e => {\n    e.stopPropagation();\n    e.preventDefault();\n    window.open('https://gravite.io/real-time-feedback-tool', '_blank');\n  });\n\n  const graviteLogo = document.createElement('div');\n  graviteLogo.classList.add('gravite-logo');\n  graviteLogo.innerHTML = `<svg width=\"13\" height=\"13\" viewBox=\"0 0 13 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n  <g filter=\"url(#filter0_dd_15952_447859)\">\n  <circle cx=\"6.4843\" cy=\"5.48497\" r=\"0.914772\" transform=\"rotate(-14.0344 6.4843 5.48497)\" fill=\"#3535F3\"/>\n  <path d=\"M8.34836 3.50282C8.63721 3.19583 8.62532 2.70398 8.26289 2.48874C7.76814 2.1949 7.20469 2.02607 6.62182 2.00291C5.78271 1.96957 4.95978 2.24038 4.30445 2.76551C3.64912 3.29064 3.20547 4.03476 3.05513 4.86097C2.90479 5.68718 3.05787 6.53988 3.48621 7.2622C3.91455 7.98452 4.58934 8.52786 5.3864 8.79224C6.18347 9.05663 7.04921 9.02428 7.82432 8.70114C8.59944 8.37801 9.23179 7.78583 9.60503 7.03356C9.86429 6.511 9.98641 5.93562 9.9659 5.36056C9.95088 4.93931 9.52501 4.69294 9.11709 4.79914C8.70917 4.90535 8.48058 5.33082 8.42382 5.7485C8.39537 5.95785 8.33302 6.16285 8.23762 6.35512C8.02788 6.77786 7.67253 7.11063 7.23696 7.29222C6.80139 7.4738 6.31489 7.49198 5.86698 7.34341C5.41907 7.19484 5.03988 6.88951 4.79917 6.48361C4.55847 6.0777 4.47244 5.59853 4.55693 5.13424C4.64141 4.66996 4.89072 4.2518 5.25898 3.95671C5.62724 3.66161 6.08968 3.50943 6.56122 3.52817C6.77568 3.53669 6.98547 3.5803 7.18281 3.65576C7.57653 3.8063 8.05951 3.80981 8.34836 3.50282Z\" fill=\"#3535F3\"/>\n  </g>\n  <defs>\n  <filter id=\"filter0_dd_15952_447859\" x=\"0\" y=\"0\" width=\"13\" height=\"13\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n  <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n  <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n  <feOffset dy=\"1\"/>\n  <feGaussianBlur stdDeviation=\"1\"/>\n  <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.06 0\"/>\n  <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_15952_447859\"/>\n  <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n  <feOffset dy=\"1\"/>\n  <feGaussianBlur stdDeviation=\"1.5\"/>\n  <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.1 0\"/>\n  <feBlend mode=\"normal\" in2=\"effect1_dropShadow_15952_447859\" result=\"effect2_dropShadow_15952_447859\"/>\n  <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect2_dropShadow_15952_447859\" result=\"shape\"/>\n  </filter>\n  </defs>\n  </svg>\n  `;\n\n  const smallPoweredBy = document.createElement('small');\n  smallPoweredBy.classList.add('powered-by');\n  smallPoweredBy.innerText = 'Powered by ';\n\n  const poweredBy = document.createElement('a');\n  poweredBy.href = 'https://gravite.io/real-time-feedback-tool';\n  poweredBy.target = '_blank';\n  poweredBy.innerText = 'Gravite';\n\n  smallPoweredBy.appendChild(poweredBy);\n\n  poweredByContainer.appendChild(graviteLogo);\n  poweredByContainer.appendChild(smallPoweredBy);\n  // from index.css\n\n  const style = document.createElement('style');\n  style.setAttribute('rel', 'stylesheet');\n  style.setAttribute('type', 'text/css');\n  style.innerHTML = `\n  :host * {\n    box-sizing: border-box;\n    font-family: 'Inter', sans-serif;\n  }\n  \n  :host .close-button {\n    position: absolute;\n    right: 16px;\n    top: -10px;\n    background-color: #fff;\n    border: 1px solid #d0d5dd;\n    border-radius: 8px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: 27px;\n    width: 27px;\n  }\n  \n  :host .powered-by-container {\n    position: absolute;\n    bottom: 3px;\n    left: 16px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n  }\n  \n  :host .powered-by-container .gravite-logo {\n    height: 15px;\n  }\n  \n  :host .powered-by-container .gravite-logo svg {\n    vertical-align: baseline;\n  }\n  \n  :host .powered-by {\n    font-size: 10px;\n    line-height: 17px;\n    color: #a0aec0;\n  }\n  :host .powered-by a {\n    font-size: 10px;\n    line-height: 17px;\n    color: #a0aec0;\n    text-decoration: underline;\n  }\n  \n  #gravite_widget_modal_content {\n    width: 100%;\n    height: 100%;\n    padding: 12px 16px;\n    overflow: hidden;\n    transition: transform 3s ease-in-out;\n  }\n  /* SATISFACTION STEP */\n  #gravite_widget_modal_content .title {\n    font-weight: 400;\n    font-size: 14px;\n    line-height: 20px;\n    width: 100%;\n    overflow: hidden;\n    opacity: 1;\n    transition: all 0.3s ease-in-out;\n  }\n  \n  #gravite_widget_modal_content .satisfaction-select {\n    width: 100%;\n    transition: all 0.3s ease-in-out;\n    transform: translateY(70%);\n  }\n  \n  #gravite_widget_modal_content .satisfaction-select .flex-container {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    width: 100%;\n    gap: 12px;\n  }\n  \n  #gravite_widget_modal_content .satisfaction-select .flex-container .flex-item {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    cursor: pointer;\n    width: 45px;\n    opacity: 1;\n    transition: all 0.3s ease-in-out;\n  }\n  \n  #gravite_widget_modal_content\n    .satisfaction-select\n    .flex-container\n    .flex-item\n    > div:first-child {\n    font-size: 30px;\n    line-height: 38px;\n    font-weight: 400;\n  }\n  \n  #gravite_widget_modal_content\n    .satisfaction-select\n    .flex-container\n    .flex-item:hover\n    > div:last-child {\n    visibility: visible;\n  }\n  \n  #gravite_widget_modal_content\n    .satisfaction-select\n    .flex-container\n    .flex-item\n    > div:last-child {\n    visibility: hidden;\n    font-size: 12px;\n    color: #a0aec0;\n  }\n  \n  /* FEEDBACK STEP */\n  #gravite_widget_modal_content .feedback-step {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    width: 100%;\n    height: 75%;\n    position: relative;\n  }\n  \n  #gravite_widget_modal_content .feedback-step .feedback-textarea {\n    width: 281px;\n    height: 98px;\n    resize: none;\n    padding: 10px 14px;\n    font-weight: 400;\n    font-size: 12px;\n    line-height: 18px;\n    border: 1px solid #d0d5dd;\n    box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);\n    border-radius: 8px;\n    margin-top: 5px;\n  }\n  \n  #gravite_widget_modal_content .feedback-step .submit-button {\n    color: #ffffff;\n    border: none;\n    cursor: pointer;\n    position: absolute;\n    bottom: 20px;\n    right: 5px;\n    padding: 5px 14px;\n    border-radius: 8px;\n    opacity: 1;\n    box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);\n  }\n  \n  #gravite_widget_modal_content .feedback-step .submit-button:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n  \n  /* CONTACT STEP */\n  #gravite_widget_modal_content .contact-step {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    height: 75%;\n    position: relative;\n  }\n  \n  #gravite_widget_modal_content .contact-step .input-field {\n    width: 281px;\n    height: 40px;\n    padding: 0 3px;\n    text-align: center;\n    font-weight: 400;\n    font-size: 12px;\n    line-height: 18px;\n    border: 1px solid #d0d5dd;\n    box-shadow: 0px 1px 2px rgba(16, 24, 40, 0.05);\n    border-radius: 8px;\n    margin-top: 5px;\n    position: relative;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n  }\n  \n  #gravite_widget_modal_content .contact-step .input-field input {\n    width: 100%;\n    height: 100%;\n    border: none;\n    background-color: transparent;\n    outline: none;\n    border: none;\n  }\n  \n  #gravite_widget_modal_content .contact-step .input-field input::placeholder {\n    font-size: 12px;\n    font-weight: 400;\n  }\n  \n  #gravite_widget_modal_content .contact-step .button-group {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n  }\n  \n  #gravite_widget_modal_content .contact-step .skip-button,\n  #gravite_widget_modal_content .contact-step .send-button {\n    background-color: transparent;\n    border: none;\n    cursor: pointer;\n    padding: 5px 14px;\n    border-radius: 8px;\n  }\n  \n  #gravite_widget_modal_content .contact-step .skip-button {\n    color: #98a2b3;\n    text-decoration: underline;\n    font-size: 12px;\n    font-weight: 400;\n    line-height: 20px;\n  }\n  \n  #gravite_widget_modal_content .contact-step .skip-button:active {\n    box-shadow: none;\n  }\n  \n  #gravite_widget_modal_content .contact-step .send-button {\n    color: #ffffff;\n    background-color: #5555d8;\n  }\n  #gravite_widget_modal_content .contact-step .send-button:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n  }\n  \n  /* THANK STEP */\n  \n  #gravite_widget_modal_content #thanks-step {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    gap: 20px;\n    width: 100%;\n    height: 100%;\n  }\n  \n  #gravite_widget_modal_content #thanks-step .thanks-text {\n    font-weight: 500;\n    font-size: 18px;\n    line-height: 28px;\n    text-align: center;\n  }\n  `;\n\n  const shadowRoot = modal.attachShadow({ mode: 'open' });\n  shadowRoot.appendChild(style);\n  shadowRoot.appendChild(closeButton);\n  shadowRoot.appendChild(modalContent);\n  shadowRoot.appendChild(poweredByContainer);\n  modalContainer.appendChild(modal);\n  document.body.appendChild(modalContainer);\n};\n\nexport const openModal = () => {\n  const modalContainer = document.getElementById(\n    'gravite_widget_modal_container'\n  ) as HTMLElement;\n  const modal = document.getElementById('gravite_widget_modal') as HTMLElement;\n  const buttonContainer = document.getElementById(\n    'gravite_widget_button_container'\n  ) as HTMLElement;\n\n  if (modal && modalContainer && buttonContainer) {\n    modalContainer.style.display = 'flex';\n    modalContainer.addEventListener('click', e => {\n      e.stopPropagation();\n      e.preventDefault();\n      closeModal();\n    });\n    setTimeout(() => {\n      buttonContainer.classList.add('translate');\n      modal.classList.add('translate');\n    }, 10);\n  }\n};\n\nexport const closeModal = () => {\n  const modalContainer = document.getElementById(\n    'gravite_widget_modal_container'\n  ) as HTMLElement;\n  const modal = document.getElementById('gravite_widget_modal') as HTMLElement;\n\n  const buttonContainer = document.getElementById(\n    'gravite_widget_button_container'\n  ) as HTMLElement;\n\n  WidgetState.step = 1;\n  WidgetState.satisfaction = 0;\n  WidgetState.feedback = '';\n  WidgetState.email = '';\n\n  if (modal && modalContainer && buttonContainer) {\n    modalContainer.onclick = null;\n    buttonContainer.classList.remove('translate');\n    modal.classList.remove('translate');\n    setTimeout(() => {\n      modalContainer.style.display = 'none';\n      init(WidgetOptions.customizationOptions);\n    }, 300);\n  }\n};\n\nexport const shadowRoot = (): ShadowRoot => {\n  const modal = document.getElementById('gravite_widget_modal') as HTMLElement;\n  return modal.shadowRoot as ShadowRoot;\n};\n","import { WidgetOptions } from '../context/widgetOptions';\n\nimport { openModal } from './modal';\n\nexport const createButton = () => {\n  const buttonContainer = document.getElementById(\n    'gravite_widget_button_container'\n  );\n  if (buttonContainer) {\n    buttonContainer.remove();\n  }\n\n  const container = document.createElement('div');\n  container.classList.add('button-container');\n  container.id = 'gravite_widget_button_container';\n\n  const buttonText = document.createElement('span');\n  buttonText.innerText = 'Feedback';\n\n  const button = document.createElement('button');\n  button.id = 'gravite_widget_button';\n  button.style.backgroundColor = WidgetOptions.customizationOptions.color;\n\n  const buttonIcon = document.createElement('div');\n  buttonIcon.classList.add('button-icon');\n  buttonIcon.innerHTML = `\n  <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path d=\"M11.5 1.5C11.942 1.5 12.3659 1.67559 12.6785 1.98816C12.9911 2.30072 13.1667 2.72464 13.1667 3.16667L13.1667 13.1667L16.5 16.5L3.16667 16.5C2.72464 16.5 2.30072 16.3244 1.98816 16.0118C1.67559 15.6993 1.5 15.2754 1.5 14.8333L1.5 3.16667C1.5 2.72464 1.67559 2.30072 1.98815 1.98816C2.30072 1.6756 2.72464 1.5 3.16667 1.5L11.5 1.5Z\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n  </svg>\n`;\n\n  button.appendChild(buttonIcon);\n  button.appendChild(buttonText);\n\n  button.onclick = openModal;\n\n  container.appendChild(button);\n  document.body.appendChild(container);\n};\n\nexport const reCreateButton = () => {\n  const buttonContainer = document.getElementById(\n    'gravite_widget_button_container'\n  );\n  if (buttonContainer) {\n    buttonContainer.remove();\n  }\n  createButton();\n};\n","import { createButton } from './components/button';\nimport { createModal } from './components/modal';\nimport { WidgetOptions } from './context/widgetOptions';\nimport { WidgetState } from './context/widgetState';\nimport { CustomizationOptionsInterface } from './types/options';\nimport './styles.css';\n\nexport const init = (options: Partial<CustomizationOptionsInterface>) => {\n  if (options && Object.keys(options).length > 0) {\n    WidgetOptions.setOptions(options);\n    if (!options.token) {\n      console.error(\n        'Gravite Widget: You must provide a token to use the widget'\n      );\n    }\n  } else {\n    const dataset = document.currentScript?.dataset;\n    const datasetOptions: Partial<CustomizationOptionsInterface> = {};\n    if (dataset) {\n      dataset.color && (datasetOptions.color = dataset.color);\n      dataset.submitText &&\n        (datasetOptions.submitText =\n          dataset.submitText.charAt(0).toUpperCase() +\n          dataset.submitText.slice(1));\n      dataset.titleSatisfaction &&\n        (datasetOptions.titleSatisfaction =\n          dataset.titleSatisfaction.charAt(0).toUpperCase() +\n          dataset.titleSatisfaction.slice(1));\n      dataset.placeholderFeedback &&\n        (datasetOptions.placeholderFeedback =\n          dataset.placeholderFeedback.charAt(0).toUpperCase() +\n          dataset.placeholderFeedback.slice(1));\n      dataset.titleContact &&\n        (datasetOptions.titleContact =\n          dataset.titleContact.charAt(0).toUpperCase() +\n          dataset.titleContact.slice(1));\n      dataset.placeholderContact &&\n        (datasetOptions.placeholderContact =\n          dataset.placeholderContact.charAt(0).toUpperCase() +\n          dataset.placeholderContact.slice(1));\n      if (!dataset.token) {\n        console.error(\n          'Gravite Widget: You must provide a token to use the widget'\n        );\n      } else {\n        datasetOptions.token = dataset.token;\n      }\n\n      if (dataset.testingMode) {\n        datasetOptions.testingMode = Boolean(dataset.testingMode);\n      }\n    }\n\n    WidgetOptions.setOptions(datasetOptions);\n  }\n\n  createButton();\n  createModal();\n\n  WidgetState.changeStep(1);\n};\n\ninit({});\n"],"names":["WidgetOptions","Error","setOptions","options","this","customizationOptions","_extends","reCreateButton","color","submitText","titleSatisfaction","placeholderFeedback","titleContact","placeholderContact","token","testingMode","handleClick","skip","buttonSubmit","shadowRoot","querySelector","disabled","modalContentChilds","children","i","length","element","style","transition","opacity","Promise","resolve","completeFeedback","description","WidgetState","feedback","rate","satisfaction","email","fetch","method","headers","body","JSON","stringify","e","reject","sendFeedback","setTimeout","changeStep","then","handleInput","event","inputElement","target","value","match","createContactStep","contactStep","document","createElement","id","classList","add","inputField","type","placeholder","name","ca","cookie","split","c","charAt","substring","indexOf","nameEQ","getCookie","addEventListener","skipButton","textContent","sendButton","backgroundColor","expires","date","Date","setTime","getTime","days","toUTCString","appendChild","createFeedbackStep","feedbackStepOld","remove","feedbackStep","submitButton","feedbackTextarea","onclick","stopPropagation","preventDefault","setSelected","querySelectorAll","forEach","item","index","createSatisfactionStep","satisfactionSelect","flexContainer","emojis","labels","_loop","flexItem","emojiText","labelText","height","transform","justifyContent","gap","width","emoji","firstChild","fontSize","lineHeight","display","createTitle","title","stepName","titleEl","step","modalContent","focus","satisfactionStep","thanksStep","icon","innerHTML","text","createThanksStep","closeModal","openModal","modalContainer","getElementById","modal","buttonContainer","init","createButton","container","buttonText","innerText","button","buttonIcon","Object","keys","console","error","_document$currentScri","dataset","currentScript","datasetOptions","toUpperCase","slice","Boolean","modalContainerOld","closeButton","poweredByContainer","cursor","window","open","graviteLogo","smallPoweredBy","poweredBy","href","setAttribute","attachShadow","mode","createModal"],"mappings":"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"}