- Fix Array.from syntax in nonmultiple file upload as Array.from(<non-array or string>) returns an empty array which is the case when a file is selected from an input element (when multiple attribute isn't supported) which can be found in Array.from(element.files[0]) -> results in an empty array.
* Implement Command class for Command Pattern
Created a base `Command` class to implement the **Command Pattern**. This class provides a skeletal implementation for `execute`, `undo`, and `redo` methods.
**Note:** This class is intended to be subclassed and not instantiated directly.
* Add undo/redo stacks and operations
* Use rotate element command to perform execute/undo/redo operations
* Handle commands executed through events
- Add "command-execution" event listener to execute commands that are not invoked from the same class while adding the command to the undo stack and clearing the redo stack.
* Add and use rotate all command to rotate/redo/undo all elements
* Use command pattern to delete pages
* Use command pattern for page selection
* Use command pattern to move pages up and down
* Use command pattern to remove selected pages
* Use command pattern to perform the splitting operation
* Add undo/redo functionality with filename input exclusion
- Implement undo (Ctrl+Z) and redo (Ctrl+Y) functionality.
- Prevent undo/redo actions when the filename input field is focused.
- Ensures proper handling of undo/redo actions without interfering with text editing.
* Introduce UndoManager for managing undo/redo operations
- Encapsulate undo/redo stacks and operations within UndoManager.
- Simplify handling of undo/redo functionality through a dedicated manager.
* Call execute on splitAllCommand
- Fix a bug that caused split all functionality to not work as execute() wasn't called on splitAllCommand
* Add undo/redo buttons to multi tool
- Add undo/redo buttons to multi tool
- Dispatch an event upon state change (such as changes in the undo/redo stacks) to update the UI accordingly.
* Add undo/redo to translations
* Replace hard-coded "Undo"/"Redo" with translation keys in multi tool
---------
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
* Azerbaijani flag and dropdown item added
* Azerbaijani Language file Added
* AZ - ignore_translation.toml init
* AZ Translation Enterprise Edition Section
* Translation for Generic
* translation-az pipeline
* Translation for Analytics
* Translation for NAVBAR
* Translation for SETTINGS
* translation-az homepage
* Translation for #login
* Translation for (showJS)
* Translation for #showJS
* Translation for #PDFToWord
* Translation for #PDFToPresentation
* Translation for #PDFToText
* Translation for #PDFToHTML
* Translation for #PDFToXML
* Translation for #PDFToCSV
* Translation for #repair
* Translation for #pageLayout
* Translation for #pdfToSinglePage
* Translation for #pageExtracter
* Translation for #getPdfInfo
* Translation for #markdown-to-pdf
* Translation for #PDFToXML
* Translation for #html-to-pdf
* Translation for #PDFToHTML
* Translation for #PDFToText
* Translation for #PDFToPresentation
* Translation for #PDFToWord
* Translation for #PDFToCSV
* Translation for #url-to-pdf
* Translation for #pdfToImage
* Translation for #BookToPDF
* Translation for #PDFToBook
* Translation for #autoRedact
* Translation for #Add image
* Translation for #File to PDF
* Translation for (remove-image)
* Translation for (remove-image)
* Translation for (survey)
* Translation for (licenses)
* Translation for (printFile)
* Translation for (split-bysections)
* Translation for (overlay-pdfs)
* Translation for (split-by-size-or-count)
* Translation for (addPageNumbers)
* Translation for (adjustContrast)
* Translation for (autoSplitPDF)
* Translation for (scalePages)
* Translation for (removeCertSign)
* Translation for (removeAnnotations)
* Translation for (sign)
* Translation for (flatten)
* Translation for (extractImages)
* Translation for (merge)
* Translation for (view pdf)
* Translation for (pageRemover)
* Translation for (rotate)
* az Translation for replace-invert-color
* az Translation for addstamprequest
* Translation for (remove-image)
* Translation for #url-to-pdf
* Update messages_az_AZ.properties
* Update README.md
* Update README.md
* Update messages_az_AZ.properties
* Translation for #compress
* Translation for #Change permissions
* Translation for #remove password
* Translation for #pdfToPDFA
* Translation for #changeMetadata
* Translation for #merge
* Translation for #split-pdfs
* translation-az addpass
* translation-az watermark
* translation-az removeblanks
* translation-az compare
* translation-az certsign
* Translation for #pdfOrganiser
* Translation for #multiTool
* Translation for #multiTool
* az translation scannerimagesplit
* az translation ocr
* az translation fix
* az translation linebreak fix
* az translation linebreak fix
---------
Co-authored-by: Lucifer25x <lucifer25x@protonmail.com>
Co-authored-by: islamd7 <vusal04999@gmail.com>
Co-authored-by: Valida Rahmanova <validerehmanova04@gmail.com>
Co-authored-by: yusif043-bit <yusif.abbaszade.043@gmail.com>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
* Fix input files being overwritten by newly uploaded files
- Fix a bug that caused existing selected/uploaded files to be overwritten when a new input file is uploaded through input element.
- Add source property to change event to differentiate between uploaded files using input element and drag/drop uploads to avoid processing drag/drop files more than once, thus avoiding file duplication (file duplication resulting from copying drop/drop files to input files on each 'change' event).
* Dispatch and use file-input-change instead of change event for merging
- Dispatch "file-input-change" event after each "change" event in file upload, to notify other functions/components relying on the files provided by the \<input\> element.
- Use "file-input-change" instead of "change" event to display the latest version of uploaded files.
# FAQ:
- Why use "file-input-change" instead of "change" in merge.js?
= "change" event is automatically triggered when a file is uploaded through \<input\> element which would replace all the existing selected/uploaded files including the drag/drop files.
## Example:
Let's say that the user wants to upload/select the x.pdf, y.pdf and z.pdf all together:
- user selects "x.pdf" -> file selected successfully.
= selected files: x.pdf
- user drags and drops "y.pdf" -> file dropped successfully
= selected files: x.pdf, y.pdf
- user selects again using \<input\> "z.pdf" -> file selected succesfully overwriting selected files.
= selected files: z.pdf
* Add Tabula dependency and exclude slf4j-simple
- Add tabula-java dependency to extract tables into CSV.
- Exclude slf4j-simple due to Logback
* Add a flexible CSVWriter
- Add FlexibleCSVWriter which extends CSVWriter to pass a custom CSVFormat, as CSVWriter's parameterized constructor (that allows changing CSVFormat) is protected.
* Use Tabula in extracting tables from PDF
- Use Tabula in extracting tables from PDF instead of the existing implementation
* Delete PDFTableStripper as It is unneeded
- Delete PDFTableStripper as It is unneeded as Tabula-Java is used instead.
* Use correct class in ExtractCSVController logger
* Exclude gson and bcprov-jdk15on dependencies from tabula
- Exclude gson and bcprov-jdk15on from tabula-java due to detected security vulnerabilities.
* French translations for multiTool
* fix french translation invalidPasswordMessage/confirmPasswordErrorMessage
* french translation : reset/navbar.search/sign.saved
* fix my invalidPasswordMessage french translation :)