.getText(), который возвращает текст поля ввода, где эмоджи являются простым текстом.const el = $('.emojionearea-editor');
el.emojioneArea({});
const text = el[0].emojioneArea.getText(); 
  
  document.getElementById('cards').innerHTML = ...
Cannot set property 'innerHTML' of null, логично. 
  
  $('#cityFilter').on('input', function() {
  const value = this.value.toLowerCase();
  $('#city-list .city')
    .hide()
    .filter((i, n) => $(n).text().toLowerCase().includes(value))
    .show();
  $('#city-list .state')
    .hide()
    .filter((i, n) => $(n).nextUntil('.state').is(':visible'))
    .show();
});document.querySelector('#cityFilter').addEventListener('input', e => {
  const value = e.target.value.toLowerCase();
  document.querySelectorAll('#city-list li').forEach(function(n) {
    if (n.matches('.state')) {
      this.splice(0, 2, n, true);
    } else {
      const hide = n.textContent.toLowerCase().indexOf(value) === -1;
      this[1] &&= hide;
      n.classList.toggle('hidden', hide);
      if (!n.nextElementSibling?.matches('.city')) {
        this[0].classList.toggle('hidden', this[1]);
      }
    }
  }, [ null, true ]);
}); 
  
  const dragndropReasons = $('.drag-and-drop .choices')
    .filter(c => c.find('input:checkbox:checked').length == 0)
    .map(() => 'select at least one correct answer for each <b>drag & drop</b> question');
const multipleReasons = $('.multiple-choice .choices')
    .filter(c => c.find('input:checkbox:checked').length == 0)
    .map(() => 'select at least one correct answer for each <b>multiple choice</b> question');
return _.uniq(dragndropReasons.concat(multipleReasons))$('#publish-activity').change(function () {
        var reasons = [];
        if (!$('#activity_activity_group_id').val()) {
            reasons.push("select activity group");
        }
        if ($('.activity-content .items .activity-content-item').length == 0) {
            reasons.push("add quiz questions");
        }
       var requiredField = $('.activity-content').find('[required=required]');
       var cnt = 0;
        for (var i = 0; i < requiredField.length; i++) {
             if ($(requiredField[i]).val() == '') {
                 $(requiredField[i]).addClass('error');
		             cnt++;
             }
		    }	 
	      if (cnt > 1) {
              	 reasons.push("you must fill enter value for all added multiple choice question options");
	      }	
        
        
        if (this.checked && reasons.length) {
            $('#unpublish-activity')[0].checked = true;
            sweetAlert({
                showCancelButton: false,
                confirmButtonText: 'OK',
                title: 'Cannot publish quiz',
                text: 'In order to publish quiz, ' + _.join(reasons, ', '),
                type: "warning"
            });
        }
    })(function(selector) {
    // не дублируем код
    function save(data) {
        localStorage.setItem(selector, JSON.stringify(data));
    }
    // и не создаем тысячи функций в цикле
    // а используем одну общую
    function onChange(event) {
        var element = event.target,
            name = element.name,
            value = element.value;
        data[name] = value;
        save(data);
    }
    var elements = document.querySelectorAll(selector),
        data = localStorage.getItem(selector);
    if(data) { // если в сторадже что-то есть
        // то можем и распарсить
        data = JSON.parse(data);
    } else {
        // иначе парсить нельзя, будет ошибка
        // присвоим дефолтное значение и сохраним
        save(data = {});
    }
    // вместо ненужного создания массива
    // обратимся напрямую к прототипу
    Array.prototype.forEach.call(elements, function(element) {
        var name = element.name,
            value = element.value;
        if(data[name] === value) { // если текущий элемент отмечен в сторадже
            // то отметим и на странице
            element.checked = true;
        }
        // навесим созданый вне цикла хандлер на событие
        element.addEventListener("change", onChange);        
    });
})(/* ".stat_inp_r"
  А еще к селектору вопрос, мы только с этим классом радио будем запоминать?
  или же у нас каждый будет помнится?
  если каждый, то может имеет смысл обработать их все за раз:
*/ "input[type=radio]");bem create my-block.{js,css,pug} -l componentsbem create my-block__{header,content,footer}.{js,css,pug} -l components./components
  my-block__content/
    my-block__content.js
    my-block__content.css
    my-block__content.pug
  my-block__footer/
    my-block__footer.js
    my-block__footer.css
    my-block__footer.pug
  my-block__header/
    my-block__header.js
    my-block__header.css
    my-block__header.pug