dev.esm.html 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>Converse</title>
  5. <meta charset="utf-8">
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  8. <meta name="description" content="Converse XMPP/Jabber Chat" />
  9. <meta name="author" content="JC Brand" />
  10. <meta name="keywords" content="xmpp chat webchat converse.js" />
  11. <link rel="manifest" href="./manifest.json">
  12. <link rel="shortcut icon" type="image/ico" href="images/favicon.ico"/>
  13. <link type="text/css" rel="stylesheet" media="screen" href="dist/converse.css" />
  14. <!-- Modern browsers will execute this -->
  15. <script type="module">
  16. (async () => {
  17. try {
  18. // Feature detection
  19. if (typeof window.Promise === 'undefined' ||
  20. typeof window.WeakMap === 'undefined') {
  21. throw new Error('Browser lacks required features');
  22. }
  23. const { default: converse } = await import('./dist/converse.esm.js');
  24. converse.plugins.add('converse-debug', {
  25. initialize () {
  26. // Expose for debugging but warn about direct usage
  27. if (window._converse) {
  28. console.warn('_converse already exists on window');
  29. }
  30. Object.defineProperty(window, '_converse', {
  31. get: () => this._converse,
  32. configurable: true // Allows tests to redefine
  33. });
  34. }
  35. });
  36. await converse.initialize({
  37. i18n: 'af',
  38. theme: 'nordic',
  39. dark_theme: 'dracula',
  40. auto_away: 300,
  41. loglevel: 'debug',
  42. show_background: true,
  43. message_archiving: 'always',
  44. muc_show_logs_before_join: true,
  45. notify_all_room_messages: ['discuss@conference.conversejs.org'],
  46. fetch_url_headers: true,
  47. whitelisted_plugins: ['converse-debug'],
  48. bosh_service_url: 'https://conversejs.org/http-bind/', // Please use this connection manager only for testing purposes
  49. show_controlbox_by_default: true,
  50. // view_mode: 'overlayed',
  51. // websocket_url: 'wss://conversejs.org/xmpp-websocket',
  52. // websocket_url: 'ws://chat.example.org:5380/xmpp-websocket',
  53. // connection_options: { worker: '/dist/shared-connection-worker.js' }
  54. });
  55. } catch (error) {
  56. console.error('Failed to load Converse.js ESM:', error);
  57. document.getElementById('fallback-script').hidden = false;
  58. }
  59. })();
  60. </script>
  61. <!-- Older browsers will execute this -->
  62. <script nomodule id="fallback-script" hidden>
  63. console.warn('Using legacy CJS build due to lack of module support');
  64. document.write('<script src="dist/converse.js"><\/script>');
  65. </script>
  66. <!-- Error display -->
  67. <div id="load-error" style="display:none; padding:1em; background:#fcc; margin:1em">
  68. <h2>Loading Error</h2>
  69. <p>Failed to load Converse.js. Please try:</p>
  70. <ul>
  71. <li>Using a modern browser (Chrome, Firefox, Edge, Safari)</li>
  72. <li>Checking console for errors</li>
  73. </ul>
  74. </div>
  75. <script>
  76. window.addEventListener('error', () => {
  77. document.getElementById('load-error').style.display = 'block';
  78. });
  79. </script>
  80. </body>
  81. </html>