/* Точка входа: монтируем Shell в #root, обёрнутый общим стором.
   Babel ждёт загрузки всех text/babel скриптов? Нет — поэтому стартуем
   из последнего скрипта, когда RD.modules.Shell уже определён. */
(function () {
  var attempts = 0;
  var maxAttempts = 100;
  
  function boot() {
    attempts++;
    
    // Debug logging
    if (attempts === 1 || attempts % 10 === 0) {
      console.log('[boot] Attempt ' + attempts + ':', {
        hasRD: !!window.RD,
        hasShell: !!(window.RD && window.RD.modules && window.RD.modules.Shell),
        hasStoreProvider: !!(window.RD && window.RD.core && window.RD.core.StoreProvider),
        hasReact: typeof React !== 'undefined',
        hasReactDOM: typeof ReactDOM !== 'undefined'
      });
    }
    
    if (attempts > maxAttempts) {
      console.error('[boot] FAILED after ' + maxAttempts + ' attempts');
      document.getElementById('root').innerHTML = 
        '<div style="padding: 40px; font-family: system-ui; color: #cf3b3b">' +
        '<h2>❌ Ошибка загрузки</h2>' +
        '<p>Не удалось загрузить модули. Откройте консоль (F12) для деталей.</p>' +
        '</div>';
      return;
    }
    
    if (!window.RD || !RD.modules.Shell || !RD.core.StoreProvider) { 
      return setTimeout(boot, 30); 
    }
    
    console.log('[boot] SUCCESS! Mounting app...');
    var root = ReactDOM.createRoot(document.getElementById('root'));
    root.render(React.createElement(RD.core.StoreProvider, null, React.createElement(RD.modules.Shell)));
  }
  
  boot();
})();

/* === Как встроить ОДИН модуль в другую вашу страницу ===
   <div id="smeta"></div>
   <script src=".../core/connector.js"></script>
   <script type="text/babel" src=".../core/format.js"></script>
   ... perms, store, Estimate ...
   <script type="text/babel">
     ReactDOM.createRoot(document.getElementById('smeta'))
       .render(<RD.core.StoreProvider><RD.modules.Estimate/></RD.core.StoreProvider>);
   </script>
   Каждый модуль самодостаточен: данные/права/тема — из общего стора. */
