Компонент GJS завершается с ошибкой «undefined helper» при отображении через сервис модального окна (Discourse 3.5.0)

Здравствуйте,

Продолжаю обсуждение этой проблемы: я создал плагин minimal-modal-test, как и предлагалось.

  • Успех: Когда компонент модального окна тестового плагина (minimal-modal.gjs) содержал только базовые элементы (например, <p>, <textarea>, стандартные <DModal>, <DButton> и даже встроенные хелперы, такие как #if для условных блоков или if для иконки кнопки отправки), он корректно отображался без ошибок при открытии через modal.show(), вызванном из компонента кнопки, добавленного с помощью трансформера значений post-menu-buttons. Это подтверждает, что базовый сервис модальных окон, рендеринг компонентов, трансформер значений и встроенные хелперы работают корректно в изоляции в моей среде (Discourse v3.5.0.beta3-dev).

  • Неудача: Ошибка (TypeError: userProvidedCallback is undefined / ранее Attempted to use a value as a helper... undefined) возвращается постоянно в тот момент, когда я снова добавляю дочерний компонент <StarRatingInput> в шаблон модального окна (minimal-modal.gjs или feedback-form-modal.gjs).

Я убедился, что сам компонент StarRatingInput использует ранее выявленные обходные пути (inline SVG вместо хелпера dIcon, стрелочные функции для методов, таких как starClass, чтобы исправить контекст this, стандартный JS Array.from вместо хелпера range). Внутренний код StarRatingInput теперь, кажется, корректен.

Это указывает на то, что ошибка вызывается рендерингом вложенного компонента <StarRatingInput> (который содержит цикл #each, динамические привязки классов и обработчики событий) внутри родительского компонента модального окна в этом конкретном контексте рендеринга.

https://github.com/rahul-rakesh/discourse-modal-render-test

Шаги для воспроизведения

  1. У вас запущена последняя версия среды разработки Discourse.

  2. Войдите в систему под любым пользователем.

  3. Перейдите к любой теме и откройте первый пост.

  4. Нажмите кнопку “Test Failing Modal”, добавленную в меню поста.

  5. Откройте консоль разработчика в браузере.

Ожидаемый результат

Должно появиться простое модальное окно, содержащее поле ввода рейтинга звезд.

Фактический результат

Модальное окно не отображается полностью. В консоли браузера отображается ошибка.