pixel-sharan 1.13.83 → 1.13.85
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.
- package/lib/_virtual/index10.js +2 -2
- package/lib/_virtual/index11.js +2 -2
- package/lib/_virtual/index9.js +2 -2
- package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js +227 -204
- package/lib/components/Excel/ExcelFile/ExcelFileComponents/ActiveCell.js.map +1 -1
- package/lib/index.cjs +228 -205
- package/lib/index.cjs.map +1 -1
- package/lib/node_modules/js-beautify/js/src/css/beautifier.js +1 -1
- package/lib/node_modules/js-beautify/js/src/css/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/css/options.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
- package/package.json +1 -1
package/lib/index.cjs
CHANGED
@@ -40644,252 +40644,275 @@ const ActiveCell = props => {
|
|
40644
40644
|
const [allOption, setAllOption] = React__namespace.useState();
|
40645
40645
|
const [selectedFiles, setSelectedFiles] = React__namespace.useState([]);
|
40646
40646
|
const handleFilesChange = async (newFiles, selected, actionType) => {
|
40647
|
-
|
40648
|
-
|
40649
|
-
|
40650
|
-
|
40651
|
-
|
40652
|
-
existingFiles = JSON.parse(cell.value);
|
40653
|
-
}
|
40654
|
-
} catch (error) {
|
40655
|
-
console.error('Error parsing cell.value:', error);
|
40656
|
-
}
|
40657
|
-
// Deduplicate within newFiles and against existingFiles
|
40658
|
-
let duplicateCount = 0;
|
40659
|
-
const uniqueFiles = newFiles.filter((file, index, self) => {
|
40660
|
-
const baseName = file.name.split('*')[0];
|
40661
|
-
// Check for duplicates within newFiles
|
40662
|
-
const isDuplicateInSelf = self.findIndex(f => f.name.split('*')[0] === baseName) !== index;
|
40663
|
-
// Check for duplicates in existingFiles
|
40664
|
-
const isDuplicateInExisting = existingFiles.some(existingFile => existingFile.name.split('*')[0] === baseName);
|
40665
|
-
if (isDuplicateInSelf || isDuplicateInExisting) {
|
40666
|
-
duplicateCount++;
|
40667
|
-
return false;
|
40668
|
-
}
|
40669
|
-
return true;
|
40670
|
-
});
|
40671
|
-
// Check total file count (existing + new)
|
40672
|
-
if (existingFiles.length + uniqueFiles.length > 5) {
|
40673
|
-
toast.info('Cannot upload more than 5 files.');
|
40674
|
-
return;
|
40675
|
-
}
|
40676
|
-
if (props.attachmentAction?.addAttachment && uniqueFiles.length > 0) {
|
40647
|
+
try {
|
40648
|
+
console.log('newFiles:', newFiles, 'selected:', selected, 'actionType:', actionType);
|
40649
|
+
if (actionType === 'ADD' && cell?.inputType?.type === 'file') {
|
40650
|
+
// Parse existing cell.value
|
40651
|
+
let existingFiles = [];
|
40677
40652
|
try {
|
40678
|
-
|
40679
|
-
|
40680
|
-
|
40681
|
-
|
40682
|
-
|
40683
|
-
|
40684
|
-
|
40685
|
-
|
40686
|
-
|
40687
|
-
|
40688
|
-
|
40689
|
-
|
40690
|
-
|
40691
|
-
|
40692
|
-
|
40693
|
-
|
40694
|
-
|
40695
|
-
|
40696
|
-
|
40697
|
-
|
40698
|
-
|
40699
|
-
|
40700
|
-
|
40701
|
-
|
40702
|
-
|
40703
|
-
|
40704
|
-
|
40705
|
-
|
40706
|
-
|
40707
|
-
|
40708
|
-
|
40709
|
-
|
40710
|
-
|
40711
|
-
|
40712
|
-
|
40653
|
+
if (cell?.value) {
|
40654
|
+
existingFiles = JSON.parse(cell.value);
|
40655
|
+
}
|
40656
|
+
} catch (error) {
|
40657
|
+
console.error('Error parsing cell.value:', error);
|
40658
|
+
}
|
40659
|
+
// Deduplicate within newFiles and against existingFiles
|
40660
|
+
let duplicateCount = 0;
|
40661
|
+
const uniqueFiles = newFiles.filter((file, index, self) => {
|
40662
|
+
const baseName = file.name.split('*')[0];
|
40663
|
+
const isDuplicateInSelf = self.findIndex(f => f.name.split('*')[0] === baseName) !== index;
|
40664
|
+
const isDuplicateInExisting = existingFiles.some(existingFile => existingFile.name.split('*')[0] === baseName);
|
40665
|
+
if (isDuplicateInSelf || isDuplicateInExisting) {
|
40666
|
+
duplicateCount++;
|
40667
|
+
return false;
|
40668
|
+
}
|
40669
|
+
return true;
|
40670
|
+
});
|
40671
|
+
console.log('Unique files after deduplication:', uniqueFiles.map(f => f.name)); //Debug logs
|
40672
|
+
// Check total file count
|
40673
|
+
if (existingFiles.length + uniqueFiles.length > 5) {
|
40674
|
+
toast.info('Cannot upload more than 5 files.');
|
40675
|
+
return;
|
40676
|
+
}
|
40677
|
+
if (props.attachmentAction?.addAttachment && uniqueFiles.length > 0) {
|
40678
|
+
try {
|
40679
|
+
let successCount = 0;
|
40680
|
+
let failureCount = 0;
|
40681
|
+
const processedFiles = [...existingFiles];
|
40682
|
+
if (duplicateCount > 0) {
|
40683
|
+
toast.warning('Duplicate attachments not allowed within the same row');
|
40684
|
+
}
|
40685
|
+
const uploadPromises = uniqueFiles.map(async file => {
|
40686
|
+
try {
|
40687
|
+
if (file.name.includes('*')) {
|
40688
|
+
console.log(`Skipping ${file.name}: Already uploaded`);
|
40689
|
+
return {
|
40690
|
+
file,
|
40691
|
+
status: 'existing',
|
40692
|
+
data: {
|
40693
|
+
name: file.name
|
40694
|
+
}
|
40695
|
+
};
|
40696
|
+
}
|
40697
|
+
const response = await props?.attachmentAction?.addAttachment(file);
|
40698
|
+
console.log(`Raw response for ${file.name}:`, response); // Debug log
|
40699
|
+
if (!response || typeof response === 'string' && response.trim().length === 0) {
|
40700
|
+
console.log(`No valid response for ${file.name}`);
|
40701
|
+
return {
|
40702
|
+
file,
|
40703
|
+
status: 'failed',
|
40704
|
+
reason: 'no response'
|
40705
|
+
};
|
40706
|
+
}
|
40707
|
+
if (typeof response === 'string') {
|
40708
|
+
try {
|
40709
|
+
const parsedResponse = JSON.parse(response);
|
40710
|
+
console.log(`Parsed response for ${file.name}:`, parsedResponse); // Debug log
|
40711
|
+
if (parsedResponse.responseCode === 400) {
|
40712
|
+
console.log(`Invalid file for ${file.name}: responseCode 400`);
|
40713
|
+
return {
|
40714
|
+
file,
|
40715
|
+
status: 'failed',
|
40716
|
+
reason: 'invalid file'
|
40717
|
+
};
|
40718
|
+
}
|
40719
|
+
if (parsedResponse?.id && parsedResponse?.name) {
|
40720
|
+
console.log(`Valid response for ${file.name}`);
|
40721
|
+
return {
|
40722
|
+
file,
|
40723
|
+
status: 'success',
|
40724
|
+
data: parsedResponse
|
40725
|
+
};
|
40726
|
+
} else {
|
40727
|
+
console.error(`Invalid response structure for ${file.name}:`, parsedResponse);
|
40728
|
+
return {
|
40729
|
+
file,
|
40730
|
+
status: 'failed',
|
40731
|
+
reason: 'invalid response'
|
40732
|
+
};
|
40733
|
+
}
|
40734
|
+
} catch (error) {
|
40735
|
+
console.error(`Parse error for ${file.name}:`, error);
|
40713
40736
|
return {
|
40714
40737
|
file,
|
40715
40738
|
status: 'failed',
|
40716
|
-
reason: '
|
40739
|
+
reason: 'parse error'
|
40717
40740
|
};
|
40718
40741
|
}
|
40719
|
-
|
40720
|
-
|
40742
|
+
}
|
40743
|
+
if (typeof response === 'object' && response !== null) {
|
40744
|
+
const typedResponse = response;
|
40745
|
+
if (typedResponse?.id && typedResponse?.name) {
|
40746
|
+
console.log(`Valid response for ${file.name}`);
|
40721
40747
|
return {
|
40722
40748
|
file,
|
40723
40749
|
status: 'success',
|
40724
|
-
data:
|
40750
|
+
data: typedResponse
|
40725
40751
|
};
|
40726
40752
|
} else {
|
40753
|
+
console.error(`Invalid response structure for ${file.name}:`, response);
|
40727
40754
|
return {
|
40728
40755
|
file,
|
40729
40756
|
status: 'failed',
|
40730
40757
|
reason: 'invalid response'
|
40731
40758
|
};
|
40732
40759
|
}
|
40733
|
-
} catch (error) {
|
40734
|
-
console.error(`Parse error for ${file.name}:`, error);
|
40735
|
-
return {
|
40736
|
-
file,
|
40737
|
-
status: 'failed',
|
40738
|
-
reason: 'parse error'
|
40739
|
-
};
|
40740
40760
|
}
|
40761
|
+
console.error(`Unknown response for ${file.name}:`, response);
|
40762
|
+
return {
|
40763
|
+
file,
|
40764
|
+
status: 'failed',
|
40765
|
+
reason: 'unknown'
|
40766
|
+
};
|
40767
|
+
} catch (error) {
|
40768
|
+
console.error(`Upload failed for ${file.name}:`, error);
|
40769
|
+
return {
|
40770
|
+
file,
|
40771
|
+
status: 'failed',
|
40772
|
+
reason: 'upload error'
|
40773
|
+
};
|
40741
40774
|
}
|
40742
|
-
|
40743
|
-
|
40744
|
-
|
40745
|
-
|
40746
|
-
|
40747
|
-
|
40748
|
-
|
40749
|
-
|
40750
|
-
|
40775
|
+
});
|
40776
|
+
const results = await Promise.allSettled(uploadPromises);
|
40777
|
+
results.forEach((result, index) => {
|
40778
|
+
if (result.status === 'fulfilled' && result.value) {
|
40779
|
+
const {
|
40780
|
+
status,
|
40781
|
+
data,
|
40782
|
+
file
|
40783
|
+
} = result.value;
|
40784
|
+
console.log(`Processing result for ${file.name}:`, {
|
40785
|
+
status,
|
40786
|
+
data
|
40787
|
+
}); // Debug
|
40788
|
+
if (status === 'success' && data?.id && data?.name) {
|
40789
|
+
processedFiles.push(data);
|
40790
|
+
successCount++;
|
40791
|
+
} else if (status === 'existing' && data?.name) {
|
40792
|
+
processedFiles.push(data);
|
40751
40793
|
} else {
|
40752
|
-
|
40753
|
-
file,
|
40754
|
-
status: 'failed',
|
40755
|
-
reason: 'invalid response'
|
40756
|
-
};
|
40794
|
+
failureCount++;
|
40757
40795
|
}
|
40758
|
-
}
|
40759
|
-
return {
|
40760
|
-
file,
|
40761
|
-
status: 'failed',
|
40762
|
-
reason: 'unknown'
|
40763
|
-
};
|
40764
|
-
} catch (error) {
|
40765
|
-
console.error(`Upload failed for ${file.name}:`, error);
|
40766
|
-
return {
|
40767
|
-
file,
|
40768
|
-
status: 'failed',
|
40769
|
-
reason: 'upload error'
|
40770
|
-
};
|
40771
|
-
}
|
40772
|
-
});
|
40773
|
-
const results = await Promise.allSettled(uploadPromises);
|
40774
|
-
results.forEach(result => {
|
40775
|
-
if (result.status === 'fulfilled' && result.value) {
|
40776
|
-
const {
|
40777
|
-
status,
|
40778
|
-
data
|
40779
|
-
} = result.value;
|
40780
|
-
if (status === 'success' && data?.id && data?.name) {
|
40781
|
-
processedFiles.push(data);
|
40782
|
-
successCount++;
|
40783
|
-
} else if (status === 'existing' && data?.name) {
|
40784
|
-
processedFiles.push(data);
|
40785
|
-
} else if (result.value.reason === 'invalid file') {
|
40786
|
-
failureCount++;
|
40787
40796
|
} else {
|
40797
|
+
console.log(`Upload promise rejected for file ${index}:`, result); // Debug
|
40788
40798
|
failureCount++;
|
40789
40799
|
}
|
40800
|
+
});
|
40801
|
+
if (successCount > 0 || processedFiles.length > existingFiles.length) {
|
40802
|
+
const newValue = processedFiles.length > 0 ? JSON.stringify(processedFiles) : '';
|
40803
|
+
handleChange({
|
40804
|
+
...cell,
|
40805
|
+
value: newValue,
|
40806
|
+
style: cell?.style,
|
40807
|
+
inputType: cell?.inputType
|
40808
|
+
});
|
40809
|
+
setSelectedFiles(processedFiles.map(file => new File([new Blob()], file.name)));
|
40810
|
+
console.log('Counts:', {
|
40811
|
+
duplicateCount,
|
40812
|
+
successCount,
|
40813
|
+
failureCount
|
40814
|
+
}); // Debug log
|
40790
40815
|
} else {
|
40791
|
-
|
40816
|
+
console.log('No new valid files added, retaining cell.value'); // Debug log
|
40792
40817
|
}
|
40793
|
-
|
40794
|
-
|
40795
|
-
|
40796
|
-
|
40797
|
-
|
40798
|
-
|
40799
|
-
|
40800
|
-
|
40801
|
-
|
40802
|
-
});
|
40803
|
-
setSelectedFiles(processedFiles.map(file => new File([new Blob()], file.name)));
|
40804
|
-
}
|
40805
|
-
// Show toast messages
|
40806
|
-
if (successCount > 0) {
|
40807
|
-
toast.success(`${successCount} file${successCount > 1 ? 's' : ''} uploaded successfully`);
|
40808
|
-
}
|
40809
|
-
if (failureCount > 0) {
|
40810
|
-
toast.info(`${failureCount} unsupported ${failureCount > 1 ? 'files' : 'file'}.`);
|
40818
|
+
if (successCount > 0) {
|
40819
|
+
toast.success(`${successCount} file${successCount > 1 ? 's' : ''} uploaded successfully`);
|
40820
|
+
}
|
40821
|
+
if (failureCount > 0) {
|
40822
|
+
toast.info(`${failureCount} unsupported ${failureCount > 1 ? 'files' : 'file'}.`);
|
40823
|
+
}
|
40824
|
+
} catch (error) {
|
40825
|
+
console.error('Upload operation failed:', error);
|
40826
|
+
toast.error('Operation failed');
|
40811
40827
|
}
|
40812
|
-
}
|
40813
|
-
|
40814
|
-
toast.error('Operation failed');
|
40828
|
+
} else if (duplicateCount > 0) {
|
40829
|
+
toast.warning('Duplicate attachments not allowed within the same row');
|
40815
40830
|
}
|
40816
|
-
} else if (
|
40817
|
-
|
40818
|
-
|
40819
|
-
|
40820
|
-
|
40821
|
-
|
40822
|
-
|
40823
|
-
console.log('DELETE action:', {
|
40824
|
-
selected,
|
40825
|
-
parsedValue
|
40826
|
-
}); // Debug log
|
40827
|
-
let updatedFileDetails = [...parsedValue];
|
40828
|
-
let deletedCount = 0;
|
40829
|
-
for (const file of selected || []) {
|
40830
|
-
const index = updatedFileDetails.findIndex(originalFile => originalFile.name.split('*')[0] === file.name.split('*')[0]);
|
40831
|
-
console.log(`Comparing file ${file.name} with stored files:`, {
|
40832
|
-
index,
|
40833
|
-
storedNames: updatedFileDetails.map(f => f.name)
|
40831
|
+
} else if (actionType === 'DELETE' && cell?.inputType?.type === 'file') {
|
40832
|
+
try {
|
40833
|
+
console.log('cell.value before parse:', cell.value); // Debug log
|
40834
|
+
const parsedValue = cell && JSON.parse(cell.value);
|
40835
|
+
console.log('DELETE action:', {
|
40836
|
+
selected,
|
40837
|
+
parsedValue
|
40834
40838
|
}); // Debug log
|
40835
|
-
|
40836
|
-
|
40837
|
-
|
40838
|
-
|
40839
|
-
|
40840
|
-
console.log(`Delete response for ${file.name}:`, response); // Debug log
|
40841
|
-
if (response && (response === 'SUCCESS' || typeof response === 'object' && ('status' in response && response.status === 200 || Object.keys(response).length > 0))) {
|
40842
|
-
updatedFileDetails.splice(index, 1);
|
40843
|
-
console.log(`After splice for ${file.name}:`, updatedFileDetails); // Debug log
|
40844
|
-
deletedCount++;
|
40845
|
-
console.log(`Deleted ${file.name} successfully`); // Debug log
|
40846
|
-
} else {
|
40847
|
-
console.error(`Delete failed for ${file.name}: Invalid response`, response);
|
40848
|
-
}
|
40849
|
-
} catch (deleteError) {
|
40850
|
-
console.error(`Delete error for ${file.name}:`, deleteError);
|
40851
|
-
}
|
40852
|
-
} else {
|
40853
|
-
console.error(`Cannot delete ${file.name}: Invalid fileId or no match`, {
|
40839
|
+
let updatedFileDetails = [...parsedValue];
|
40840
|
+
let deletedCount = 0;
|
40841
|
+
for (const file of selected || []) {
|
40842
|
+
const index = updatedFileDetails.findIndex(originalFile => originalFile.name.split('*')[0] === file.name.split('*')[0]);
|
40843
|
+
console.log(`Comparing file ${file.name} with stored files:`, {
|
40854
40844
|
index,
|
40855
|
-
|
40856
|
-
hasDeleteAttachment: !!props.attachmentAction?.deleteAttachment
|
40845
|
+
storedNames: updatedFileDetails.map(f => f.name)
|
40857
40846
|
}); // Debug log
|
40847
|
+
const fileId = updatedFileDetails[index]?.id;
|
40848
|
+
if (index !== -1 && fileId && props.attachmentAction?.deleteAttachment) {
|
40849
|
+
console.log(`Deleting fileId: ${fileId}`); // Debug log
|
40850
|
+
try {
|
40851
|
+
const response = await props.attachmentAction.deleteAttachment(fileId);
|
40852
|
+
console.log(`Delete response for ${file.name}:`, response); // Debug log
|
40853
|
+
// Check for valid response
|
40854
|
+
if (response === 'SUCCESS' || typeof response === 'object' && response !== null && ('status' in response && response.status === 'SUCCESS' || 'responseCode' in response && response.responseCode === 200)) {
|
40855
|
+
updatedFileDetails.splice(index, 1);
|
40856
|
+
console.log(`After splice for ${file.name}:`, updatedFileDetails); // Debug log
|
40857
|
+
deletedCount++;
|
40858
|
+
console.log(`Deleted ${file.name} successfully`); // Debug log
|
40859
|
+
} else {
|
40860
|
+
console.error(`Delete failed for ${file.name}: Invalid response`, response);
|
40861
|
+
toast.warning('Failed to delete file: Invalid server response');
|
40862
|
+
}
|
40863
|
+
} catch (deleteError) {
|
40864
|
+
console.error(`Delete error for ${file.name}:`, deleteError);
|
40865
|
+
toast.error('Error deleting file');
|
40866
|
+
}
|
40867
|
+
} else {
|
40868
|
+
console.error(`Cannot delete ${file.name}: Invalid fileId or no match`, {
|
40869
|
+
index,
|
40870
|
+
fileId,
|
40871
|
+
hasDeleteAttachment: !!props.attachmentAction?.deleteAttachment
|
40872
|
+
}); // Debug log
|
40873
|
+
toast.error('Failed to delete file: Invalid file data');
|
40874
|
+
}
|
40858
40875
|
}
|
40859
|
-
|
40860
|
-
|
40861
|
-
|
40862
|
-
|
40863
|
-
handleChange({
|
40864
|
-
...cell,
|
40865
|
-
value: newValue,
|
40866
|
-
style: cell?.style,
|
40867
|
-
inputType: cell?.inputType
|
40868
|
-
});
|
40869
|
-
setSelectedFiles(updatedFileDetails.map(file => new File([new Blob()], file.name)));
|
40870
|
-
console.log('Updated selectedFiles:', updatedFileDetails); // Debug log
|
40871
|
-
toast.success(`${deletedCount} file${deletedCount > 1 ? 's' : ''} deleted successfully`);
|
40872
|
-
} else if (selected?.length) {
|
40873
|
-
console.log('No files deleted, retaining original state'); // Debug log
|
40874
|
-
const validFiles = updatedFileDetails.filter(file => file.id && file.name);
|
40875
|
-
if (validFiles.length < updatedFileDetails.length) {
|
40876
|
-
const newValue = validFiles.length > 0 ? JSON.stringify(validFiles) : '';
|
40877
|
-
console.log('Cleaning invalid files, new cell.value:', newValue); // Debug log
|
40876
|
+
// Update cell value and selected files
|
40877
|
+
if (deletedCount > 0) {
|
40878
|
+
const newValue = updatedFileDetails.length > 0 ? JSON.stringify(updatedFileDetails) : '';
|
40879
|
+
console.log('Updated cell.value:', newValue); // Debug log
|
40878
40880
|
handleChange({
|
40879
40881
|
...cell,
|
40880
40882
|
value: newValue,
|
40881
40883
|
style: cell?.style,
|
40882
40884
|
inputType: cell?.inputType
|
40883
40885
|
});
|
40884
|
-
setSelectedFiles(
|
40885
|
-
console.log('Updated selectedFiles
|
40886
|
+
setSelectedFiles(updatedFileDetails.map(file => new File([new Blob()], file.name)));
|
40887
|
+
console.log('Updated selectedFiles:', updatedFileDetails); // Debug log
|
40888
|
+
toast.success(`${deletedCount} file${deletedCount > 1 ? 's' : ''} deleted successfully`);
|
40889
|
+
} else if (selected?.length) {
|
40890
|
+
console.log('No files deleted, retaining original state'); // Debug log
|
40891
|
+
const validFiles = updatedFileDetails.filter(file => file.id && file.name);
|
40892
|
+
if (validFiles.length < updatedFileDetails.length) {
|
40893
|
+
const newValue = validFiles.length > 0 ? JSON.stringify(validFiles) : '';
|
40894
|
+
console.log('Cleaning invalid files, new cell.value:', newValue); // Debug log
|
40895
|
+
handleChange({
|
40896
|
+
...cell,
|
40897
|
+
value: newValue,
|
40898
|
+
style: cell?.style,
|
40899
|
+
inputType: cell?.inputType
|
40900
|
+
});
|
40901
|
+
setSelectedFiles(validFiles.map(file => new File([new Blob()], file.name)));
|
40902
|
+
console.log('Updated selectedFiles after cleanup:', validFiles); // Debug log
|
40903
|
+
toast.error('Failed to delete file(s). Invalid file data detected.');
|
40904
|
+
} else {
|
40905
|
+
toast.error('Failed to delete file(s). No valid files removed.');
|
40906
|
+
}
|
40886
40907
|
}
|
40887
|
-
|
40908
|
+
} catch (error) {
|
40909
|
+
console.error('Delete operation failed:', error);
|
40910
|
+
toast.error('Delete operation failed');
|
40888
40911
|
}
|
40889
|
-
} catch (error) {
|
40890
|
-
console.error('Delete operation failed:', error);
|
40891
|
-
toast.error('Delete operation failed');
|
40892
40912
|
}
|
40913
|
+
} catch (error) {
|
40914
|
+
console.error('handleFilesChange error:', error);
|
40915
|
+
toast.error('Operation failed');
|
40893
40916
|
}
|
40894
40917
|
};
|
40895
40918
|
const handleClick = e => {
|