[399] Fix build by integrating with Mirador 3 + Image Tools Plugin #402
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR resolves #399 by manually building Mirador 3 with grunt-webpack to enable packaging the image tools plugin and potentially other future plugins.
This required the implementation of a wrapper object to provide access to Mirador's state while in the context of the angularjs app.
The destroy method in particular is needed to properly unmount the Mirador instance when the contentViewer directive is unloaded by angularjs. This is necessary to prevent rendering issues if a user navigates to another Mirador based discovery view.
This solution appears to be working without issue, but I couldn't find any documented examples of dynamically generating and destroying Mirador instances. The 'proper' use of Mirador 3 seems to be loading one instance and then using redux actions to update it as needed.
We are using redux actions to manipulate the state of the Mirador instance, but due to angularjs's dom element manipulation, we can't sanely preserve a single instance across user navigation.
This wrapper does provide a good starting point for a more generalized component that's not specific to SAGE.