code constant

String const code

Implementation

static const String code = r'''
function bindFileUploads() {
  document.querySelectorAll('.arcane-file-upload').forEach(function(dropzone) {
    if (dropzone.dataset.arcaneInteractive === 'true') return;
    dropzone.dataset.arcaneInteractive = 'true';

    var fileInput = dropzone.querySelector('.arcane-file-input');
    if (!fileInput) return;

    dropzone.addEventListener('click', function(e) {
      if (e.target !== fileInput) {
        fileInput.click();
      }
    });

    fileInput.addEventListener('change', function() {
      var files = fileInput.files;
      if (!files || files.length === 0) return;

      var fileList = dropzone.querySelector('.arcane-file-list');
      if (fileList) {
        fileList.innerHTML = '';
        for (var i = 0; i < files.length; i++) {
          var file = files[i];
          var size = file.size < 1024 ? file.size + ' B' :
                     file.size < 1024 * 1024 ? (file.size / 1024).toFixed(1) + ' KB' :
                     (file.size / (1024 * 1024)).toFixed(1) + ' MB';

          var item = document.createElement('div');
          item.style.cssText = 'display: flex; align-items: center; justify-content: space-between; padding: 8px; background: var(--arcane-surface-variant); border-radius: 4px; font-size: 0.875rem;';
          item.innerHTML = '<span>' + file.name + '</span><span style="color: var(--arcane-muted);">' + size + '</span>';
          fileList.appendChild(item);
        }
      }
    });

    dropzone.addEventListener('dragover', function(e) {
      e.preventDefault();
      dropzone.style.borderColor = 'var(--arcane-accent)';
    });

    dropzone.addEventListener('dragleave', function() {
      dropzone.style.borderColor = 'var(--arcane-border)';
    });

    dropzone.addEventListener('drop', function(e) {
      e.preventDefault();
      dropzone.style.borderColor = 'var(--arcane-border)';
      if (e.dataTransfer?.files?.length > 0) {
        fileInput.files = e.dataTransfer.files;
        fileInput.dispatchEvent(new Event('change'));
      }
    });
  });
}
''';