* 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>
* 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
* Sign multiple PDF pages at the same time in the same location (#2008)
* Modifying the functionality of how the signature is added to all pages (#2008)
* Adding the functionality to reverse the addition on all pages and implementing buttons to navigate to the first and last pages (#2008)
* Multitool - Select multiple pages for rotation tool
* Multitool multi select delete feature
* Multitool multi select UI improvements and big fixes
* Multitool multi select select all and UI improvements
* Multi tool multi select, download selected, clean up and bug fixes
* Groundwork for multiselect drag and drop
* Multi select drag and drop finalised
* Update translation files
Signed-off-by: GitHub Action <action@github.com>
* Turn off select mode after multidrag
---------
Signed-off-by: GitHub Action <action@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Fix: Bored waiting button doesnt remove itself after processing (#2079)
hide bored waiting? button after request handling both success and error cases to properly hide the button.
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
* Hide empty menus that don't match search criteria
- Hide empty menus (accordions/feature groups) that don't match search criteria.
* Expand menus automatically for matching search results
- Fix a bug where menus (accordions/feature groups) did not automatically expand on the homepage when search results matched.
---------
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
* Implement Diff.js
* Compare feature - add service worker and improve efficiency for large files
* Compare - messages updated to be compatable with language packs
* Compare - Acknowledge Diff.js usage
* Add message warning there is no text in uploaded pdf to messages file
---------
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
* Add feautre group header fragment for homepage.
* Add feature group headers to feature groups.
* Style feature groups.
* Add collapsing/expanding functionality as well as a favorites section.
* Cards are now sorted in the order of update link > favorite > alphabetical on the homepage.
* Decrease space between section title and cards.
* Add filtering buttons and view options to homepage.
* Hide list view button in preparation for release.
---------
Co-authored-by: FiratUsta <ahmetfiratusta@gmail.com>
* Add image support to multi-tool page
Related to #278
* changes to support image types
* final touches
* final touches
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* final touches
Signed-off-by: a <a>
* Update translation files (#1888)
Signed-off-by: GitHub Action <action@github.com>
Co-authored-by: GitHub Action <action@github.com>
---------
Signed-off-by: a <a>
Signed-off-by: GitHub Action <action@github.com>
Co-authored-by: a <a>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
* Add <br> when Bored Waiting Button Appears
* Added <br> below progress bar as well
* Removed <br>
Two <br> tags were added which were taking lot of space. I dynamically added space when needed.
* Fix the add file button on the multi-tools page.
* Fix a bug where the page numbers wouldn't be removed on page move on Firefox.
---------
Co-authored-by: kazandaki <ahmetfiratusta@gmail.com>
* Add a split button on top of the insert button in multitool viewer.
* Add placeholder splitFileButtonCallback method.
* Remove unused splitFileButtonContainer element.
* Add this binding to setActions for splitFileButtonCallback
* Add test log for adding separators.
* Add test log for adding separators.
* Remove test logs and add visual indicators to separators instead.
* Add splitting functionality to multi-tools.
* Prevent trying to split from index 0.
* Hide the split button for the first page to avoid confusion.
* Change the class name 'cutBefore' to 'split-before' to fall mroe in line with already existing classes.
* Add dummy methods for splitting and compressing documents.
* Remove form submission, begin work on client side splitting.
* Add client side document splitting.
* Add client side archiving for the split documents.
* Fix a bug that adds an empty page to splitted documents due to a sorting error.
* Add a 'Split All' button and the relevant functionality.
---------
Co-authored-by: kazandaki <ahmetfiratusta@gmail.com>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>