@noatgnu/cupcake-vanilla 1.2.21 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, signal, computed, EventEmitter, inject, Output, Input, Component, effect, ViewChild } from '@angular/core';
3
3
  import * as i3 from '@noatgnu/cupcake-core';
4
- import { BaseApiService, WebSocketService, NotificationService as NotificationService$1, LabGroupService, ToastService, ResourceVisibility } from '@noatgnu/cupcake-core';
4
+ import { BaseApiService, WebSocketService, NotificationService as NotificationService$1, LabGroupService, ToastService, TaskStatus, TaskType, ResourceVisibility } from '@noatgnu/cupcake-core';
5
5
  import { switchMap, map, tap, takeUntil, filter as filter$1 } from 'rxjs/operators';
6
6
  import { from, Observable, throwError, NEVER, debounceTime, distinctUntilChanged, filter, switchMap as switchMap$1, map as map$1, catchError, of, tap as tap$1, Subject, BehaviorSubject, firstValueFrom, takeUntil as takeUntil$1 } from 'rxjs';
7
7
  import jsSHA from 'jssha';
@@ -502,35 +502,6 @@ function isSdrfColumnRequired(name) {
502
502
  return column?.isRequired === true;
503
503
  }
504
504
 
505
- // Helper constants
506
- const TASK_TYPE_LABELS = {
507
- 'EXPORT_EXCEL': 'Export Excel Template',
508
- 'EXPORT_SDRF': 'Export SDRF File',
509
- 'IMPORT_SDRF': 'Import SDRF File',
510
- 'IMPORT_EXCEL': 'Import Excel File',
511
- 'EXPORT_MULTIPLE_SDRF': 'Export Multiple SDRF Files',
512
- 'EXPORT_MULTIPLE_EXCEL': 'Export Multiple Excel Templates',
513
- 'VALIDATE_TABLE': 'Validate Metadata Table',
514
- 'REORDER_TABLE_COLUMNS': 'Reorder Table Columns',
515
- 'REORDER_TEMPLATE_COLUMNS': 'Reorder Template Columns',
516
- 'TRANSCRIBE_AUDIO': 'Transcribe Audio',
517
- 'TRANSCRIBE_VIDEO': 'Transcribe Video',
518
- };
519
- const TASK_STATUS_LABELS = {
520
- 'QUEUED': 'Queued',
521
- 'STARTED': 'In Progress',
522
- 'SUCCESS': 'Completed',
523
- 'FAILURE': 'Failed',
524
- 'CANCELLED': 'Cancelled',
525
- };
526
- const TASK_STATUS_COLORS = {
527
- 'QUEUED': 'secondary',
528
- 'STARTED': 'primary',
529
- 'SUCCESS': 'success',
530
- 'FAILURE': 'danger',
531
- 'CANCELLED': 'warning',
532
- };
533
-
534
505
  class MetadataTableService extends BaseApiService {
535
506
  /**
536
507
  * Get all metadata tables with optional filtering
@@ -1247,8 +1218,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImpor
1247
1218
  class Websocket extends WebSocketService {
1248
1219
  constructor(authService) {
1249
1220
  super(authService);
1250
- this.endpoint = 'ccv/notifications';
1251
- this.config.endpoint = 'ccv/notifications';
1221
+ this.endpoint = 'notifications';
1222
+ this.config.endpoint = 'notifications';
1252
1223
  this.config.url = this.getWebSocketUrl();
1253
1224
  }
1254
1225
  getMetadataTableUpdates() {
@@ -1514,6 +1485,12 @@ class NotificationService extends NotificationService$1 {
1514
1485
  case 'REORDER_TEMPLATE_COLUMNS':
1515
1486
  operation = 'Template Column Reordering';
1516
1487
  break;
1488
+ case 'TRANSCRIBE_AUDIO':
1489
+ operation = 'Audio Transcription';
1490
+ break;
1491
+ case 'TRANSCRIBE_VIDEO':
1492
+ operation = 'Video Transcription';
1493
+ break;
1517
1494
  }
1518
1495
  switch (status) {
1519
1496
  case 'QUEUED':
@@ -3919,33 +3896,37 @@ class AsyncTaskUIService {
3919
3896
  tasks$ = this.tasksSubject.asObservable();
3920
3897
  activeTasks$ = this.tasks$.pipe(map(tasks => {
3921
3898
  const taskArray = Array.isArray(tasks) ? tasks : [];
3922
- return taskArray.filter(task => task.status === 'QUEUED' || task.status === 'STARTED');
3899
+ return taskArray.filter(task => task.status === TaskStatus.QUEUED || task.status === TaskStatus.STARTED);
3923
3900
  }));
3924
3901
  metadataTableRefresh$ = this.metadataTableRefreshSubject.asObservable();
3925
3902
  taskCompleted$ = this.taskCompletedSubject.asObservable();
3926
3903
  exportTaskCompleted$ = this.exportTaskCompletedSubject.asObservable();
3927
3904
  constructor() {
3928
- this.initializeService();
3929
3905
  }
3930
3906
  ngOnDestroy() {
3931
3907
  this.destroy$.next();
3932
3908
  this.destroy$.complete();
3933
3909
  }
3934
- initializeService() {
3935
- this.startRealtimeUpdates();
3936
- }
3937
3910
  startRealtimeUpdates() {
3938
3911
  if (this.isSubscribed) {
3912
+ console.log('AsyncTaskUIService: Already subscribed to real-time updates');
3939
3913
  return;
3940
3914
  }
3915
+ console.log('AsyncTaskUIService: Starting real-time updates');
3941
3916
  this.isSubscribed = true;
3942
3917
  if (!this.websocket.connectionState$() || this.websocket.connectionState$() === 'disconnected') {
3918
+ console.log('AsyncTaskUIService: WebSocket not connected, connecting now...');
3943
3919
  this.websocket.connect();
3944
3920
  }
3921
+ else {
3922
+ console.log('AsyncTaskUIService: WebSocket already connected');
3923
+ }
3945
3924
  this.websocket.isConnected$.pipe(takeUntil(this.destroy$), filter$1(connected => connected)).subscribe(() => {
3925
+ console.log('AsyncTaskUIService: WebSocket connected, subscribing to async_task_updates');
3946
3926
  this.websocket.subscribe('async_task_updates');
3947
3927
  });
3948
3928
  this.websocket.filterMessages('async_task.update').pipe(takeUntil(this.destroy$)).subscribe((message) => {
3929
+ console.log('AsyncTaskUIService: Received async_task.update message:', message);
3949
3930
  this.handleTaskUpdate(message);
3950
3931
  });
3951
3932
  this.getTasks().subscribe({
@@ -3959,6 +3940,7 @@ class AsyncTaskUIService {
3959
3940
  });
3960
3941
  }
3961
3942
  stopRealtimeUpdates() {
3943
+ console.log('AsyncTaskUIService: Stopping real-time updates');
3962
3944
  this.isSubscribed = false;
3963
3945
  this.destroy$.next();
3964
3946
  }
@@ -4050,7 +4032,7 @@ class AsyncTaskUIService {
4050
4032
  const existingTaskIndex = currentTasks.findIndex(t => t.id === taskId);
4051
4033
  if (existingTaskIndex >= 0) {
4052
4034
  const existingTask = currentTasks[existingTaskIndex];
4053
- const wasRunning = existingTask.status === 'QUEUED' || existingTask.status === 'STARTED';
4035
+ const wasRunning = existingTask.status === TaskStatus.QUEUED || existingTask.status === TaskStatus.STARTED;
4054
4036
  const updatedTask = {
4055
4037
  ...existingTask,
4056
4038
  status: message.status,
@@ -4062,14 +4044,14 @@ class AsyncTaskUIService {
4062
4044
  const updatedTasks = [...currentTasks];
4063
4045
  updatedTasks[existingTaskIndex] = updatedTask;
4064
4046
  this.tasksSubject.next(updatedTasks);
4065
- if (message.status === 'STARTED') {
4047
+ if (message.status === TaskStatus.STARTED) {
4066
4048
  this.showTaskProgressNotification(updatedTask, existingTask);
4067
4049
  }
4068
- if (wasRunning && (message.status === 'SUCCESS' || message.status === 'FAILURE' || message.status === 'CANCELLED')) {
4050
+ if (wasRunning && (message.status === TaskStatus.SUCCESS || message.status === TaskStatus.FAILURE || message.status === TaskStatus.CANCELLED)) {
4069
4051
  this.showTaskCompletionNotification(updatedTask);
4070
4052
  const isTaskFromThisTab = this.isTaskInitiatedByThisTab(updatedTask.id);
4071
4053
  this.taskCompletedSubject.next(updatedTask);
4072
- if (message.status === 'SUCCESS') {
4054
+ if (message.status === TaskStatus.SUCCESS) {
4073
4055
  if (this.isImportTask(updatedTask.taskType) && updatedTask.metadataTable) {
4074
4056
  this.metadataTableRefreshSubject.next(updatedTask.metadataTable);
4075
4057
  }
@@ -4077,10 +4059,10 @@ class AsyncTaskUIService {
4077
4059
  this.exportTaskCompletedSubject.next(updatedTask);
4078
4060
  this.handleExportTaskCompletion(updatedTask);
4079
4061
  }
4080
- if (updatedTask.taskType === 'VALIDATE_TABLE' && updatedTask.metadataTable) {
4062
+ if (updatedTask.taskType === TaskType.VALIDATE_TABLE && updatedTask.metadataTable) {
4081
4063
  this.metadataTableRefreshSubject.next(updatedTask.metadataTable);
4082
4064
  }
4083
- if ((updatedTask.taskType === 'REORDER_TABLE_COLUMNS') && updatedTask.metadataTable) {
4065
+ if ((updatedTask.taskType === TaskType.REORDER_TABLE_COLUMNS) && updatedTask.metadataTable) {
4084
4066
  this.metadataTableRefreshSubject.next(updatedTask.metadataTable);
4085
4067
  }
4086
4068
  }
@@ -4094,11 +4076,11 @@ class AsyncTaskUIService {
4094
4076
  const taskArray = Array.isArray(tasks) ? tasks : [];
4095
4077
  this.tasksSubject.next(taskArray);
4096
4078
  const refreshedTask = taskArray.find(t => t.id === taskId);
4097
- if (refreshedTask && (message.status === 'SUCCESS' || message.status === 'FAILURE' || message.status === 'CANCELLED')) {
4079
+ if (refreshedTask && (message.status === TaskStatus.SUCCESS || message.status === TaskStatus.FAILURE || message.status === TaskStatus.CANCELLED)) {
4098
4080
  this.showTaskCompletionNotification(refreshedTask);
4099
4081
  const isTaskFromThisTab = this.isTaskInitiatedByThisTab(refreshedTask.id);
4100
4082
  this.taskCompletedSubject.next(refreshedTask);
4101
- if (message.status === 'SUCCESS') {
4083
+ if (message.status === TaskStatus.SUCCESS) {
4102
4084
  if (this.isImportTask(refreshedTask.taskType) && refreshedTask.metadataTable) {
4103
4085
  this.metadataTableRefreshSubject.next(refreshedTask.metadataTable);
4104
4086
  }
@@ -4106,10 +4088,10 @@ class AsyncTaskUIService {
4106
4088
  this.exportTaskCompletedSubject.next(refreshedTask);
4107
4089
  this.handleExportTaskCompletion(refreshedTask);
4108
4090
  }
4109
- if (refreshedTask.taskType === 'VALIDATE_TABLE' && refreshedTask.metadataTable) {
4091
+ if (refreshedTask.taskType === TaskType.VALIDATE_TABLE && refreshedTask.metadataTable) {
4110
4092
  this.metadataTableRefreshSubject.next(refreshedTask.metadataTable);
4111
4093
  }
4112
- if ((refreshedTask.taskType === 'REORDER_TABLE_COLUMNS') && refreshedTask.metadataTable) {
4094
+ if ((refreshedTask.taskType === TaskType.REORDER_TABLE_COLUMNS) && refreshedTask.metadataTable) {
4113
4095
  this.metadataTableRefreshSubject.next(refreshedTask.metadataTable);
4114
4096
  }
4115
4097
  }
@@ -4139,53 +4121,55 @@ class AsyncTaskUIService {
4139
4121
  showTaskCompletionNotification(task) {
4140
4122
  const taskName = this.getTaskDisplayName(task.taskType);
4141
4123
  const tableName = task.metadataTableName ? ` for "${task.metadataTableName}"` : '';
4142
- if (task.taskType === 'VALIDATE_TABLE') {
4124
+ if (task.taskType === TaskType.VALIDATE_TABLE) {
4143
4125
  this.handleValidationTaskCompletion(task);
4144
4126
  return;
4145
4127
  }
4146
- if (task.taskType === 'IMPORT_SDRF' || task.taskType === 'IMPORT_EXCEL') {
4128
+ if (task.taskType === TaskType.IMPORT_SDRF || task.taskType === TaskType.IMPORT_EXCEL) {
4147
4129
  this.handleImportTaskCompletion(task);
4148
4130
  return;
4149
4131
  }
4150
- if (task.taskType === 'REORDER_TABLE_COLUMNS' || task.taskType === 'REORDER_TEMPLATE_COLUMNS') {
4132
+ if (task.taskType === TaskType.REORDER_TABLE_COLUMNS || task.taskType === TaskType.REORDER_TEMPLATE_COLUMNS) {
4151
4133
  this.handleReorderTaskCompletion(task);
4152
4134
  return;
4153
4135
  }
4154
4136
  const progressInfo = task.progressPercentage && task.progressPercentage > 0 ? ` (${task.progressPercentage}%)` : '';
4155
4137
  const progressDesc = task.progressDescription ? `: ${task.progressDescription}` : '';
4156
4138
  switch (task.status) {
4157
- case 'SUCCESS':
4139
+ case TaskStatus.SUCCESS:
4158
4140
  this.toastService.success(`Task Completed: ${taskName}${tableName}${progressInfo} completed successfully${progressDesc}`);
4159
4141
  break;
4160
- case 'FAILURE':
4142
+ case TaskStatus.FAILURE:
4161
4143
  this.toastService.error(`Task Failed: ${taskName}${tableName}${progressInfo} failed: ${task.errorMessage || 'Unknown error'}${progressDesc}`);
4162
4144
  break;
4163
- case 'CANCELLED':
4145
+ case TaskStatus.CANCELLED:
4164
4146
  this.toastService.warning(`Task Cancelled: ${taskName}${tableName}${progressInfo} was cancelled${progressDesc}`);
4165
4147
  break;
4166
4148
  }
4167
4149
  }
4168
4150
  getTaskDisplayName(taskType) {
4169
4151
  const typeMap = {
4170
- 'EXPORT_EXCEL': 'Excel export',
4171
- 'EXPORT_SDRF': 'SDRF export',
4172
- 'IMPORT_SDRF': 'SDRF import',
4173
- 'IMPORT_EXCEL': 'Excel import',
4174
- 'EXPORT_MULTIPLE_SDRF': 'Bulk SDRF export',
4175
- 'EXPORT_MULTIPLE_EXCEL': 'Bulk Excel export',
4176
- 'VALIDATE_TABLE': 'Table validation',
4177
- 'REORDER_TABLE_COLUMNS': 'Column reordering',
4178
- 'REORDER_TEMPLATE_COLUMNS': 'Template column reordering',
4152
+ [TaskType.EXPORT_EXCEL]: 'Excel export',
4153
+ [TaskType.EXPORT_SDRF]: 'SDRF export',
4154
+ [TaskType.IMPORT_SDRF]: 'SDRF import',
4155
+ [TaskType.IMPORT_EXCEL]: 'Excel import',
4156
+ [TaskType.EXPORT_MULTIPLE_SDRF]: 'Bulk SDRF export',
4157
+ [TaskType.EXPORT_MULTIPLE_EXCEL]: 'Bulk Excel export',
4158
+ [TaskType.VALIDATE_TABLE]: 'Table validation',
4159
+ [TaskType.REORDER_TABLE_COLUMNS]: 'Column reordering',
4160
+ [TaskType.REORDER_TEMPLATE_COLUMNS]: 'Template column reordering',
4161
+ [TaskType.TRANSCRIBE_AUDIO]: 'Audio transcription',
4162
+ [TaskType.TRANSCRIBE_VIDEO]: 'Video transcription',
4179
4163
  };
4180
4164
  return typeMap[taskType] || taskType;
4181
4165
  }
4182
4166
  getTaskStatusClass(status) {
4183
4167
  const statusMap = {
4184
- 'QUEUED': 'badge-secondary',
4185
- 'STARTED': 'badge-primary',
4186
- 'SUCCESS': 'badge-success',
4187
- 'FAILURE': 'badge-danger',
4188
- 'CANCELLED': 'badge-warning',
4168
+ [TaskStatus.QUEUED]: 'badge-secondary',
4169
+ [TaskStatus.STARTED]: 'badge-primary',
4170
+ [TaskStatus.SUCCESS]: 'badge-success',
4171
+ [TaskStatus.FAILURE]: 'badge-danger',
4172
+ [TaskStatus.CANCELLED]: 'badge-warning',
4189
4173
  };
4190
4174
  return statusMap[status] || 'badge-secondary';
4191
4175
  }
@@ -4206,24 +4190,24 @@ class AsyncTaskUIService {
4206
4190
  }
4207
4191
  }
4208
4192
  canCancelTask(status) {
4209
- return status === 'QUEUED' || status === 'STARTED';
4193
+ return status === TaskStatus.QUEUED || status === TaskStatus.STARTED;
4210
4194
  }
4211
4195
  canDownloadResult(task) {
4212
- return task.status === 'SUCCESS' &&
4213
- (task.taskType === 'EXPORT_EXCEL' || task.taskType === 'EXPORT_SDRF' ||
4214
- task.taskType === 'EXPORT_MULTIPLE_SDRF' || task.taskType === 'EXPORT_MULTIPLE_EXCEL');
4196
+ return task.status === TaskStatus.SUCCESS &&
4197
+ (task.taskType === TaskType.EXPORT_EXCEL || task.taskType === TaskType.EXPORT_SDRF ||
4198
+ task.taskType === TaskType.EXPORT_MULTIPLE_SDRF || task.taskType === TaskType.EXPORT_MULTIPLE_EXCEL);
4215
4199
  }
4216
4200
  isImportTask(taskType) {
4217
- return taskType === 'IMPORT_SDRF' || taskType === 'IMPORT_EXCEL';
4201
+ return taskType === TaskType.IMPORT_SDRF || taskType === TaskType.IMPORT_EXCEL;
4218
4202
  }
4219
4203
  isExportTask(taskType) {
4220
- return taskType === 'EXPORT_SDRF' || taskType === 'EXPORT_EXCEL' ||
4221
- taskType === 'EXPORT_MULTIPLE_SDRF' || taskType === 'EXPORT_MULTIPLE_EXCEL';
4204
+ return taskType === TaskType.EXPORT_SDRF || taskType === TaskType.EXPORT_EXCEL ||
4205
+ taskType === TaskType.EXPORT_MULTIPLE_SDRF || taskType === TaskType.EXPORT_MULTIPLE_EXCEL;
4222
4206
  }
4223
4207
  handleExportTaskCompletion(task) {
4224
4208
  const taskName = this.getTaskDisplayName(task.taskType);
4225
4209
  const tableName = task.metadataTableName ? ` for "${task.metadataTableName}"` : '';
4226
- if (task.taskType === 'EXPORT_SDRF' || task.taskType === 'EXPORT_EXCEL') {
4210
+ if (task.taskType === TaskType.EXPORT_SDRF || task.taskType === TaskType.EXPORT_EXCEL) {
4227
4211
  setTimeout(() => {
4228
4212
  this.downloadTaskResult(task.id);
4229
4213
  }, 1500);
@@ -4239,7 +4223,7 @@ class AsyncTaskUIService {
4239
4223
  const progressInfo = task.progressPercentage && task.progressPercentage > 0 ? ` (${task.progressPercentage}%)` : '';
4240
4224
  const progressDesc = task.progressDescription ? `: ${task.progressDescription}` : '';
4241
4225
  switch (task.status) {
4242
- case 'SUCCESS':
4226
+ case TaskStatus.SUCCESS:
4243
4227
  const result = task.result;
4244
4228
  if (result && result.success === false) {
4245
4229
  const errorCount = result.errors?.length || 0;
@@ -4254,10 +4238,10 @@ class AsyncTaskUIService {
4254
4238
  }
4255
4239
  }
4256
4240
  break;
4257
- case 'FAILURE':
4241
+ case TaskStatus.FAILURE:
4258
4242
  this.toastService.error(`Validation Error: ${taskName}${tableName} failed: ${task.errorMessage || 'Unknown error'}`);
4259
4243
  break;
4260
- case 'CANCELLED':
4244
+ case TaskStatus.CANCELLED:
4261
4245
  this.toastService.warning(`Validation Cancelled: ${taskName}${tableName} was cancelled`);
4262
4246
  break;
4263
4247
  }
@@ -4283,7 +4267,7 @@ class AsyncTaskUIService {
4283
4267
  const progressInfo = task.progressPercentage && task.progressPercentage > 0 ? ` (${task.progressPercentage}%)` : '';
4284
4268
  const progressDesc = task.progressDescription ? `: ${task.progressDescription}` : '';
4285
4269
  switch (task.status) {
4286
- case 'SUCCESS':
4270
+ case TaskStatus.SUCCESS:
4287
4271
  const result = task.result;
4288
4272
  let message = `${taskName}${tableName} completed successfully!`;
4289
4273
  if (result) {
@@ -4306,10 +4290,10 @@ class AsyncTaskUIService {
4306
4290
  }
4307
4291
  this.toastService.success(message, 6000);
4308
4292
  break;
4309
- case 'FAILURE':
4293
+ case TaskStatus.FAILURE:
4310
4294
  this.toastService.error(`${taskName} Failed${progressInfo}: ${task.errorMessage || 'Import failed due to an unknown error'}${progressDesc}`);
4311
4295
  break;
4312
- case 'CANCELLED':
4296
+ case TaskStatus.CANCELLED:
4313
4297
  this.toastService.warning(`${taskName} Cancelled${progressInfo}: Import was cancelled${progressDesc}`);
4314
4298
  break;
4315
4299
  }
@@ -4320,7 +4304,7 @@ class AsyncTaskUIService {
4320
4304
  const progressInfo = task.progressPercentage && task.progressPercentage > 0 ? ` (${task.progressPercentage}%)` : '';
4321
4305
  const progressDesc = task.progressDescription ? `: ${task.progressDescription}` : '';
4322
4306
  switch (task.status) {
4323
- case 'SUCCESS':
4307
+ case TaskStatus.SUCCESS:
4324
4308
  const result = task.result;
4325
4309
  let message = `${taskName}${tableName} completed successfully!`;
4326
4310
  if (result) {
@@ -4340,10 +4324,10 @@ class AsyncTaskUIService {
4340
4324
  }
4341
4325
  this.toastService.success(message, 5000);
4342
4326
  break;
4343
- case 'FAILURE':
4327
+ case TaskStatus.FAILURE:
4344
4328
  this.toastService.error(`${taskName} Failed: ${task.errorMessage || 'Unknown error'}${progressInfo}${progressDesc}`);
4345
4329
  break;
4346
- case 'CANCELLED':
4330
+ case TaskStatus.CANCELLED:
4347
4331
  this.toastService.warning(`${taskName} Cancelled: ${taskName}${tableName} was cancelled`);
4348
4332
  break;
4349
4333
  }
@@ -9901,5 +9885,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImpor
9901
9885
  * Generated bundle index. Do not edit.
9902
9886
  */
9903
9887
 
9904
- export { AdminWebSocketService, AsyncExportService, AsyncImportService, AsyncTaskService, AsyncTaskUIService, AsyncValidationService, COLUMN_TYPE_CONFIGS, ChunkedImportService, ChunkedUploadService, ColumnEditModal, ColumnTemplateEditModal, ColumnTemplates, ColumnType, CupcakeVanilla, ElectronService, ExcelExportModalComponent, FavoriteManagement, FavouriteMetadataOptionService, MSTermType, MetadataColumnAutofillModal, MetadataColumnHistoryModal, MetadataColumnService, MetadataColumnTemplateService, MetadataColumnTemplateShareService, MetadataManagementService, MetadataTableDetails, MetadataTableEditModal, MetadataTableService, MetadataTableTemplateEditModal, MetadataTableTemplateService, MetadataTableTemplates, MetadataValidationModal, MetadataValueEditModal, NotificationService, NotificationType, OFFICIAL_SDRF_COLUMNS, ONTOLOGY_TYPE_CONFIGS, OntologySearchService, OntologyType, OntologyTypeLabels, OntologyUtils, SDRFDefaultsService, SamplePoolCreateModal, SamplePoolDetailsModal, SamplePoolEditModal, SamplePoolService, SchemaSelectionModal, SchemaService, SdrfAgeInput, SdrfCleavageInput, SdrfColumnCategory, SdrfModificationInput, SdrfSpikedCompoundInput, SdrfSyntaxService, SearchReplaceModal, TASK_STATUS_COLORS, TASK_STATUS_LABELS, TASK_TYPE_LABELS, TableCreationModalComponent, TemplatePermissionLabels, TemplatePermissionLevel, TemplateSchemaSelectionModal, ValidationResultsModal, Websocket, getRequiredSdrfColumns, getSdrfColumnByName, getSdrfColumnsByCategory, isSdrfColumnRequired, isUnimodFullData };
9888
+ export { AdminWebSocketService, AsyncExportService, AsyncImportService, AsyncTaskService, AsyncTaskUIService, AsyncValidationService, COLUMN_TYPE_CONFIGS, ChunkedImportService, ChunkedUploadService, ColumnEditModal, ColumnTemplateEditModal, ColumnTemplates, ColumnType, CupcakeVanilla, ElectronService, ExcelExportModalComponent, FavoriteManagement, FavouriteMetadataOptionService, MSTermType, MetadataColumnAutofillModal, MetadataColumnHistoryModal, MetadataColumnService, MetadataColumnTemplateService, MetadataColumnTemplateShareService, MetadataManagementService, MetadataTableDetails, MetadataTableEditModal, MetadataTableService, MetadataTableTemplateEditModal, MetadataTableTemplateService, MetadataTableTemplates, MetadataValidationModal, MetadataValueEditModal, NotificationService, NotificationType, OFFICIAL_SDRF_COLUMNS, ONTOLOGY_TYPE_CONFIGS, OntologySearchService, OntologyType, OntologyTypeLabels, OntologyUtils, SDRFDefaultsService, SamplePoolCreateModal, SamplePoolDetailsModal, SamplePoolEditModal, SamplePoolService, SchemaSelectionModal, SchemaService, SdrfAgeInput, SdrfCleavageInput, SdrfColumnCategory, SdrfModificationInput, SdrfSpikedCompoundInput, SdrfSyntaxService, SearchReplaceModal, TableCreationModalComponent, TemplatePermissionLabels, TemplatePermissionLevel, TemplateSchemaSelectionModal, ValidationResultsModal, Websocket, getRequiredSdrfColumns, getSdrfColumnByName, getSdrfColumnsByCategory, isSdrfColumnRequired, isUnimodFullData };
9905
9889
  //# sourceMappingURL=noatgnu-cupcake-vanilla.mjs.map