view.js 1016 B

12345678910111213141516171819202122232425262728293031
  1. import { api, converse } from '@converse/headless/converse-core';
  2. const u = converse.env.utils;
  3. converse.plugins.add('converse-rootview', {
  4. initialize () {
  5. api.settings.extend({
  6. 'auto_insert': true
  7. });
  8. function ensureElement () {
  9. if (!api.settings.get('auto_insert')) {
  10. return;
  11. }
  12. const root = api.settings.get('root');
  13. if (!root.querySelector('converse-root#conversejs')) {
  14. const el = document.createElement('converse-root');
  15. el.setAttribute('id', 'conversejs');
  16. u.addClass(`theme-${api.settings.get('theme')}`, el);
  17. const body = root.querySelector('body');
  18. if (body) {
  19. body.appendChild(el);
  20. } else {
  21. root.appendChild(el); // Perhaps inside a web component?
  22. }
  23. }
  24. }
  25. api.listen.on('chatBoxesInitialized', ensureElement);
  26. }
  27. });