text: (function () {
  
      // Get reactions element
      let reactions = document.querySelector('#reactions')
  
      // Get post path
      let path = reactions.dataset.path
  
      // Define update counts function
      let updateCounts = function () {
          // Fetch reactions json
          fetch('/-/reactions?path=' + encodeURI(path))
              .then(response => response.json())
              .then(json => {
                  // For every reaction
                  for (let reaction in json) {
                      // Get reaction buttons
                      let button = document.querySelector('#reactions button[data-reaction="' + reaction + '"]')
                      // Set reaction count
                      button.innerText = reaction + ' ' + json[reaction]
                  }
              })
      }
  
      // Get allowed reactions
      let allowed = reactions.dataset.allowed.split(',')
      allowed.forEach(allowedReaction => {
  
          // Create reaction button
          let button = document.createElement('button')
          button.dataset.reaction = allowedReaction
  
          // Set click event
          button.addEventListener('click', function () {
              // Send reaction to server
              let data = new FormData()
              data.append('path', path)
              data.append('reaction', allowedReaction)
              fetch('/-/reactions', { method: 'POST', body: data })
                  .then(updateCounts)
          })
  
          // Set reaction text
          button.innerText = allowedReaction
  
          // Add button to reactions element
          reactions.appendChild(button)
  
      })
  
      // Update reaction counts
      updateCounts()
  
  })()