Jake Vanderwerf
5 days ago 0dfe1d8afafc59c4a5559c498342668d5a58d6ef
assets/js/concise/UploadManager.js
@@ -177,9 +177,10 @@
            inputs: 'input,textarea,select'
         },
         setup({el, refs, manyRefs, data}) {
            if (refs.inputs) {
               refs.inputs.forEach(input => {
            if (manyRefs.inputs) {
               manyRefs.inputs.forEach(input => {
                  let wrapper = input.closest('[data-field]');
                  input.dataset.groupId = data.groupId;
                  window.prefixInput(input, `${data.groupId}-`, wrapper);
               });
            }
@@ -502,7 +503,6 @@
      if (this.fields.has(upload.field)) {
         let field = this.fields.get(upload.field);
         console.log('Upload Status: ', upload.status);
         switch (upload.status) {
            case 'local_processing':
               this.notify('upload-received', {
@@ -608,7 +608,6 @@
      }
      let field = this.fields.get(fieldId);
      if (field.config.destination === 'post_group') {
         this.handleGroupMetaChange(e.target);
      } else {
@@ -620,7 +619,7 @@
      const groupId = input.dataset.groupId;
      if (!groupId) return;
      // Capture values immediately (before debouncer)
      // Capture values immediately
      const inputName = input.name;
      if (!inputName) return;
      const inputValue = input.value;
@@ -1079,7 +1078,21 @@
   *********************************************************************/
   getWorker() {
      if (!this.workerState.worker && typeof OffscreenCanvas !== 'undefined') {
         this.workerState.worker = new Worker('worker.js');
         const workerCode = `
            self.onmessage = function(e) {
                const { id, imageBitmap, width, height, type, quality } = e.data;
                const canvas = new OffscreenCanvas(width, height);
                const ctx = canvas.getContext('2d');
                ctx.drawImage(imageBitmap, 0, 0, width, height);
                canvas.convertToBlob({ type, quality }).then(blob => {
                    self.postMessage({ id, blob });
                });
            };
        `;
         const blob = new Blob([workerCode], { type: 'application/javascript' });
         const url = URL.createObjectURL(blob);
         this.workerState.worker = new Worker(url);
         URL.revokeObjectURL(url); // Safe to revoke immediately after Worker is created
         this.workerState.worker.onmessage = (e) => this.handleWorkerMessage(e);
         this.workerState.worker.onerror = (e) => this.handleWorkerError(e);
      }
@@ -1838,14 +1851,20 @@
         if (selectionHandler?.destroy) {
            selectionHandler.destroy();
         }
         this.selectionHandlers.get(group.field)?.removeWrapper(element.element);
         if (this.selectionHandlers.get(group.field) && element && element.element) {
            this.selectionHandlers.get(group.field).removeWrapper(element.element)
         }
         // Existing sortable cleanup
         const sortable = this.sortables.get(sortableKey);
         if (sortable?.destroy) {
            sortable.destroy();
         if (this.sortables.has(sortableKey)) {
            const sortable = this.sortables.get(sortableKey);
            if (sortable?.destroy) {
               sortable.destroy();
            }
            this.sortables.delete(sortableKey);
         }
         this.sortables.delete(sortableKey);
      }
      if (element?.element) {