-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chore: Cleaning up and consolidating annotation methods #288
Conversation
pramodsum
commented
Aug 9, 2017
•
edited
Loading
edited
- Combines annotation mode specific handler methods in Annotator.js
- Fixes point annotation button so that it turns blue when in annotation mode
- Moves mode handler creation/destruction into Annotator.js
- Cleans up annotations methods in BaseViewer.js (removing as much as possible)
ee22037
to
0441ccf
Compare
src/lib/annotations/Annotator.js
Outdated
return this.annotatedElement.classList.contains(CLASS_ANNOTATION_DRAW_MODE); | ||
isInAnnotationMode(mode) { | ||
return this.annotationMode === mode; | ||
// return this.annotatedElement.classList.contains(this[`CLASS_ANNOTATION_${mode.toUpperCase()}_MODE`]); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove this?
src/lib/annotations/Annotator.js
Outdated
const drawEnterEl = buttonEl.querySelector(SELECTOR_ANNOTATION_BUTTON_DRAW_ENTER); | ||
const drawCancelEl = buttonEl.querySelector(SELECTOR_ANNOTATION_BUTTON_DRAW_CANCEL); | ||
const postButtonEl = this.previewUI.getAnnotateButton(SELECTOR_ANNOTATION_BUTTON_DRAW_POST); | ||
if (postButtonEl && drawEnterEl && drawCancelEl) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can use annotatorUtil.show/hideElement on each buttonElement in this case. On (postButtonEl && drawEnterEl && drawCancelEl)
we assume that all buttons will be included. This allows for custom implementations to include an enter and cancel but no post. Or post/enter/draw but no undo/redo and so forth.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're right... I didn't really read what the method did while refactoring it haha
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, I believe the draw button showing should only be done on draw mode.
@@ -6,7 +6,7 @@ import AnnotationService from '../AnnotationService'; | |||
import { | |||
STATES, | |||
TYPES, | |||
CLASS_ANNOTATION_POINT_MODE, | |||
, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extra ,
src/lib/annotations/Annotator.js
Outdated
const buttonEl = event.target || this.previewUI.getAnnotateButton(drawButtonSelector); | ||
const postButtonEl = this.previewUI.getAnnotateButton(SELECTOR_ANNOTATION_BUTTON_DRAW_POST); | ||
const drawEnterEl = buttonEl.querySelector(SELECTOR_ANNOTATION_BUTTON_DRAW_ENTER); | ||
annotatorUtil.hideElement(drawEnterEl); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is actually the case that the enterButton and drawButton are just SVGs under the same button. On mode change, we simply toggle the graphics.
On disable, we want to show the drawEnterEl (this button lets us enter draw mode), hide the cancelEl (exit draw mode without saving) and hide the postButtonEl (post is the hard commit button).
src/lib/annotations/Annotator.js
Outdated
} | ||
|
||
const buttonSelector = this.modeButtons[type].selector; | ||
const buttonEl = event.target || this.previewUI.getAnnotateButton(buttonSelector); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think event is in the scope of this function. Might be a good idea to have modeButtons hold a tuple of modeName -> (selector, element). Otherwise previewUI.getAnnotateButton should be good enough.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yea i wasn't really sure why it was being checked here. it seemed like it was always null. I'll just make use of getAnnotateButton
src/lib/annotations/Annotator.js
Outdated
func: pointFunc, | ||
eventObj: this.annotatedElement | ||
bindModeListeners(mode) { | ||
let handlers = []; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for each handler in handlers, we need to push the object to this.annotationModeHandler. (line 624) That way it will be unbound when unbindModeHandlers is called. Handlers is a local array.
src/lib/annotations/Annotator.js
Outdated
if (this.isInPointMode()) { | ||
this.togglePointAnnotationHandler(); | ||
disableAnnotationMode(mode, buttonEl) { | ||
this.emit('annotationmodeexit'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we move annotationmodeexit
, "enter" and any other message strings to a constant we can reference around the code base? Or are they ever only used in one place, each?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
src/lib/annotations/Annotator.js
Outdated
const handlers = []; | ||
if (mode === TYPES.point) { | ||
const pointFunc = this.pointClickHandler.bind(this.annotatedElement); | ||
handlers.extend([ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My mistake on this syntax, extend is a python function.
Looks like we need to use a spread operator: handlers.push(...[h1,h2,h3])
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yea i realized that once my dev vm was up and running for me to test this! :)
@minhhnguyen @JustinHoldstock I ended up moving cleaning up more annotations methods. Was able to remove more from BaseViewer.js Let me know what you think! |
Also moved any handler creation/deletion into Annotator.js itself rather than in BaseViewer.js so that we're not making extra checks to see if annotations is even enabled in order to clean up the viewer |
16951b9
to
290d60f
Compare
I still have one more edge case to fix up with these (relating to highlight handlers) |
src/lib/annotations/Annotator.js
Outdated
* Shows the annotate button for the specified mode | ||
* | ||
* @param {string} currentMode - Annotation mode | ||
* @param {Object[]} modeButtons - Annotation modes which require buttons |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This isn't a param anymore is it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nope i removed it in a later commit
- Combines point and draw annotation specific handler methods in Annotator.js - Cleans up how annotation mode handlers are dealt with in BaseViewer.js - Fixes point annotation button so that it turns blue when in annotation mode
@@ -75,6 +77,13 @@ class Annotator extends EventEmitter { | |||
}); | |||
} | |||
|
|||
// Destroy all annotate buttons | |||
Object.keys(this.modeButtons).forEach((type) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are there cases in which modeButtons is null or undefined?
Perhaps this should be wrapped just to make sure its safe (just like line 72 above)
if (this.modeButtons) {}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just looked at the code in BaseViewer. Looks like this is fine since baseviewer passes in a constant object that always exists.
@@ -103,13 +111,79 @@ class Annotator extends EventEmitter { | |||
this.setupMobileDialog(); | |||
} | |||
|
|||
// Show the annotate button for all enabled types for the | |||
// current viewer | |||
Object.keys(this.modeButtons).forEach((type) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment as line 81
this.annotatedElement.removeEventListener('dblclick', this.highlightMouseupHandler); | ||
this.annotatedElement.removeEventListener('mousedown', this.highlightMousedownHandler); | ||
this.annotatedElement.removeEventListener('contextmenu', this.highlightMousedownHandler); | ||
this.annotatedElement.removeEventListener('mousemove', this.getHighlightMouseMoveHandler()); | ||
this.annotatedElement.removeEventListener('mousemove', this.getHighlightMouseMoveHandler); | ||
this.highlightMousedownHandler = null; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this supposed to be this.highlightMousemoveHandler? I noticed this.getHightlightMouseMoveHandler() sets this.highlightMousemoveHandler.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea i need to clarify this w/ @JustinHoldstock
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And also this needed to be this.highlightMousemoveHandler = null
not this.highlightMouseDownHandler = null
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I talked to Justin and it should be ...this.highlightMousemoveHandler); the addition of () was a mistake
Aside from the possible change in DocAnnotator, looks good to me. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@minhhnguyen beat me to the concerns I had.
This is a SERIOUS cleanup effort. Awesome job
https://github.com/box/box-annotations/releases/tag/v3.7.0 ## 3.7.0 (2019-01-22) * Fix: Creation of highlights on Edge/IE11/Firefox browsers (box#322) ([3d9ee7f](box/box-annotations@3d9ee7f)), closes [box#322](box/box-annotations#322) * Docs: Update badges (box#324) ([daf18a7](box/box-annotations@daf18a7)), closes [box#324](box/box-annotations#324) ## 3.6.0 (2019-01-15) * Fix: Don't display @mention selector in ACF (box#323) ([a474251](box/box-annotations@a474251)), closes [box#323](box/box-annotations#323) * Fix: Drawing threads now destroy their event handlers properly (box#317) ([ba3795d](box/box-annotations@ba3795d)), closes [box#317](box/box-annotations#317) * Fix: Functional tests (box#320) ([bba4a9c](box/box-annotations@bba4a9c)), closes [box#320](box/box-annotations#320) * Fix: Only unbind listeners from existing DOM elements (box#321) ([6a71a9e](box/box-annotations@6a71a9e)), closes [box#321](box/box-annotations#321) * Update: Improve and simplify annotation button and icon styles (box#318) ([538fbd2](box/box-annotations@538fbd2)), closes [box#318](box/box-annotations#318) * Chore: Add webpack-dev-server and basic fixture for local dev (box#316) ([7e3c01b](box/box-annotations@7e3c01b)), closes [box#316](box/box-annotations#316) * Chore: Update doc and test fixtures to support IE11 (box#319) ([6f9d783](box/box-annotations@6f9d783)), closes [box#319](box/box-annotations#319) ## 3.5.0 (2018-12-13) * Fix: AnnotationPopover CSS to not hide popover svgs (box#304) ([83ca5b7](box/box-annotations@83ca5b7)), closes [box#304](box/box-annotations#304) * Fix: date appears incorrectly for point annotations in IE11 (box#312) ([bcd6ae5](box/box-annotations@bcd6ae5)), closes [box#312](box/box-annotations#312) * Fix: Don't render until AFTER all are fetched (box#311) ([0e3fbff](box/box-annotations@0e3fbff)), closes [box#311](box/box-annotations#311) * Fix: Ensure dialog is still visible on undo/redo (box#302) ([1c8a7e2](box/box-annotations@1c8a7e2)), closes [box#302](box/box-annotations#302) * Fix: Ensure thread number is persisted for annotation replies (box#307) ([734fc6c](box/box-annotations@734fc6c)), closes [box#307](box/box-annotations#307) * Fix: Functional tests to work with React components (box#303) ([4f0418e](box/box-annotations@4f0418e)), closes [box#303](box/box-annotations#303) * Fix: Get mode button from header element rather than container (box#308) ([b50d72b](box/box-annotations@b50d72b)), closes [box#308](box/box-annotations#308) * Fix: Point image annotations popover should be on annotated element (box#305) ([6d71dee](box/box-annotations@6d71dee)), closes [box#305](box/box-annotations#305) * Fix: Reset current annotation thread immediately on save (box#313) ([19c89cc](box/box-annotations@19c89cc)), closes [box#313](box/box-annotations#313) * Fix: Reset undo/redo buttons on drawing save/delete (box#306) ([441f0f2](box/box-annotations@441f0f2)), closes [box#306](box/box-annotations#306) * Fix: Show comment list scrollbars only on overflow (box#314) ([83c143e](box/box-annotations@83c143e)), closes [box#314](box/box-annotations#314) * Chore: Remove NSP from build (defunct) (box#315) ([720802f](box/box-annotations@720802f)), closes [box#315](box/box-annotations#315) * Chore: Update test page for annotations 3.4 (box#301) ([71afd21](box/box-annotations@71afd21)), closes [box#301](box/box-annotations#301) * Update: CSS className constants for react classNames (box#299) ([b472a2e](box/box-annotations@b472a2e)), closes [box#299](box/box-annotations#299) ## 3.4.0 (2018-11-28) * Fix: Dialog not showing when creating points (box#295) ([c0ee86f](box/box-annotations@c0ee86f)), closes [box#295](box/box-annotations#295) * Fix: Don't clear selection if selecting outside of annotated element (box#298) ([5e277a0](box/box-annotations@5e277a0)), closes [box#298](box/box-annotations#298) * Fix: Fix test site for IE 11 (box#300) ([359bda3](box/box-annotations@359bda3)), closes [box#300](box/box-annotations#300) * Fix: Positioning of undo/redo drawing buttons in header on mobile (box#296) ([873394f](box/box-annotations@873394f)), closes [box#296](box/box-annotations#296) * Chore: Add Annotations test page to be hosted by github pages (box#294) ([b91ade9](box/box-annotations@b91ade9)), closes [box#294](box/box-annotations#294) * Chore: Ignore js and json in i18n (box#297) ([e691bdc](box/box-annotations@e691bdc)), closes [box#297](box/box-annotations#297) ## 3.3.0 (2018-11-20) * Fix: Clear highlight selection on mousedown and hideAnnotations() (box#293) ([b60bc56](box/box-annotations@b60bc56)), closes [box#293](box/box-annotations#293) * Fix: Ensure deleteSuccessHandler destroys thread when necessary (box#289) ([e972a72](box/box-annotations@e972a72)), closes [box#289](box/box-annotations#289) * Fix: Ensure popover parent element is determined correctly (box#292) ([eab98ec](box/box-annotations@eab98ec)), closes [box#292](box/box-annotations#292) * Fix: Popover CSS issues (box#287) ([e64b3f8](box/box-annotations@e64b3f8)), closes [box#287](box/box-annotations#287) * Fix: Reset create highlight UI when mouse hasn't moved on mouseup (box#290) ([4abd611](box/box-annotations@4abd611)), closes [box#290](box/box-annotations#290) * Fix: Reset popover UI on re-render/scale events (box#284) ([43e5cb0](box/box-annotations@43e5cb0)), closes [box#284](box/box-annotations#284) * Fix: Unfocus textarea on comment post/cancel (box#286) ([448347c](box/box-annotations@448347c)), closes [box#286](box/box-annotations#286) * Fix: Unregister drawing on mode cancel (box#288) ([12d5f6d](box/box-annotations@12d5f6d)), closes [box#288](box/box-annotations#288) * Chore: Remove unecesary highlightThread.onMouseDown() (box#291) ([a01db9f](box/box-annotations@a01db9f)), closes [box#291](box/box-annotations#291) * Update: Husky scripts (box#285) ([eaff0f0](box/box-annotations@eaff0f0)), closes [box#285](box/box-annotations#285) * Mojito: Update translations (box#283) ([529bbc0](box/box-annotations@529bbc0)), closes [box#283](box/box-annotations#283) ## 3.2.0 (2018-11-13) * Mojito: Update translations (box#282) ([48d2f8f](box/box-annotations@48d2f8f)), closes [box#282](box/box-annotations#282) ## 3.1.0 (2018-11-07) * Fix: Alignment of createdAt timestamp and user's name (box#277) ([b4980fb](box/box-annotations@b4980fb)), closes [box#277](box/box-annotations#277) * Fix: Ensure drawings are only registered once with the controller (box#278) ([feedc87](box/box-annotations@feedc87)), closes [box#278](box/box-annotations#278) * Fix: Ensure onSelectionChange isn't triggered while creating highlights (box#281) ([3130210](box/box-annotations@3130210)), closes [box#281](box/box-annotations#281) * Fix: Remove clickHandler from DrawingModeController (box#280) ([0c7fe0f](box/box-annotations@0c7fe0f)), closes [box#280](box/box-annotations#280) * Fix: Remove focus trap on AnnotationPopover on mobile (box#279) ([a14fe6b](box/box-annotations@a14fe6b)), closes [box#279](box/box-annotations#279) * Chore: Fix publish script (box#275) ([25c40f7](box/box-annotations@25c40f7)), closes [box#275](box/box-annotations#275) * Chore: Upgrade husky (box#276) ([14bda8a](box/box-annotations@14bda8a)), closes [box#276](box/box-annotations#276) ## 3.0.0 (2018-10-31) * Chore: Adding rsync to yarn run watch (box#241) ([afe6ab6](box/box-annotations@afe6ab6)), closes [box#241](box/box-annotations#241) * Chore: Cleanup flow types (box#274) ([33adb47](box/box-annotations@33adb47)), closes [box#274](box/box-annotations#274) * Chore: Reduce redundant point creation via buffering (box#237) ([2bfc2f1](box/box-annotations@2bfc2f1)), closes [box#237](box/box-annotations#237) * Breaking: Migrate Annotations UI into React (box#251) ([d853b80](box/box-annotations@d853b80)), closes [box#251](box/box-annotations#251) ## 2.3.0 (2018-10-16) * Chore: Add supported excel types. Remove greenkeeper badge (box#227) ([8bd1bb9](box/box-annotations@8bd1bb9)), closes [box#227](box/box-annotations#227) * Chore: break text to fit into dialog (box#230) ([3a5cc86](box/box-annotations@3a5cc86)), closes [box#230](box/box-annotations#230) * Chore: Remove unused thread.mouseoutHandler() (box#206) ([1017082](box/box-annotations@1017082)), closes [box#206](box/box-annotations#206) * Chore: Replace Karma with Jest for testing framework (box#199) ([a847b01](box/box-annotations@a847b01)), closes [box#199](box/box-annotations#199) * Chore: Update preview version to 1.54.0 in functional tests (box#239) ([6de2cf4](box/box-annotations@6de2cf4)), closes [box#239](box/box-annotations#239) * Fix: Cursor type in annotation dialog (box#195) ([b568288](box/box-annotations@b568288)), closes [box#195](box/box-annotations#195) * Fix: Functional tests scripts ([2dfc22e](box/box-annotations@2dfc22e)) * Fix: travis.yml config (box#203) ([a71ecb6](box/box-annotations@a71ecb6)), closes [box#203](box/box-annotations#203) * Update: Annotations with header (box#233) ([91cdce3](box/box-annotations@91cdce3)), closes [box#233](box/box-annotations#233) * Update: box-react-ui to v25.6.0 (box#204) ([398b4c3](box/box-annotations@398b4c3)), closes [box#204](box/box-annotations#204) * Update: Filter multi-image functional tests separately from image tests ([b15a007](box/box-annotations@b15a007)) * Update: Test yaml changes ([bb58296](box/box-annotations@bb58296)) * Update: Webpack 4 + dependencies (box#208) ([b2ba5df](box/box-annotations@b2ba5df)), closes [box#208](box/box-annotations#208) * Update .travis.yml ([9c09e8e](box/box-annotations@9c09e8e)) * Update .travis.yml ([236c383](box/box-annotations@236c383)) * Update add-annotation-type.md ([fcceb3e](box/box-annotations@fcceb3e)) * Update add-annotation-type.md ([ca5c6f0](box/box-annotations@ca5c6f0)) * Update webpack.selenium.config.js ([e008f68](box/box-annotations@e008f68)) * New: Add functional tests for image files (box#197) ([7c7b39e](box/box-annotations@7c7b39e)), closes [box#197](box/box-annotations#197)
https://github.com/box/box-annotations/releases/tag/v3.7.1 ## 3.7.0 (2019-01-22) * Fix: Creation of highlights on Edge/IE11/Firefox browsers (box#322) ([3d9ee7f](box/box-annotations@3d9ee7f)), closes [box#322](box/box-annotations#322) * Docs: Update badges (box#324) ([daf18a7](box/box-annotations@daf18a7)), closes [box#324](box/box-annotations#324) ## 3.6.0 (2019-01-15) * Fix: Don't display @mention selector in ACF (box#323) ([a474251](box/box-annotations@a474251)), closes [box#323](box/box-annotations#323) * Fix: Drawing threads now destroy their event handlers properly (box#317) ([ba3795d](box/box-annotations@ba3795d)), closes [box#317](box/box-annotations#317) * Fix: Functional tests (box#320) ([bba4a9c](box/box-annotations@bba4a9c)), closes [box#320](box/box-annotations#320) * Fix: Only unbind listeners from existing DOM elements (box#321) ([6a71a9e](box/box-annotations@6a71a9e)), closes [box#321](box/box-annotations#321) * Update: Improve and simplify annotation button and icon styles (box#318) ([538fbd2](box/box-annotations@538fbd2)), closes [box#318](box/box-annotations#318) * Chore: Add webpack-dev-server and basic fixture for local dev (box#316) ([7e3c01b](box/box-annotations@7e3c01b)), closes [box#316](box/box-annotations#316) * Chore: Update doc and test fixtures to support IE11 (box#319) ([6f9d783](box/box-annotations@6f9d783)), closes [box#319](box/box-annotations#319) ## 3.5.0 (2018-12-13) * Fix: AnnotationPopover CSS to not hide popover svgs (box#304) ([83ca5b7](box/box-annotations@83ca5b7)), closes [box#304](box/box-annotations#304) * Fix: date appears incorrectly for point annotations in IE11 (box#312) ([bcd6ae5](box/box-annotations@bcd6ae5)), closes [box#312](box/box-annotations#312) * Fix: Don't render until AFTER all are fetched (box#311) ([0e3fbff](box/box-annotations@0e3fbff)), closes [box#311](box/box-annotations#311) * Fix: Ensure dialog is still visible on undo/redo (box#302) ([1c8a7e2](box/box-annotations@1c8a7e2)), closes [box#302](box/box-annotations#302) * Fix: Ensure thread number is persisted for annotation replies (box#307) ([734fc6c](box/box-annotations@734fc6c)), closes [box#307](box/box-annotations#307) * Fix: Functional tests to work with React components (box#303) ([4f0418e](box/box-annotations@4f0418e)), closes [box#303](box/box-annotations#303) * Fix: Get mode button from header element rather than container (box#308) ([b50d72b](box/box-annotations@b50d72b)), closes [box#308](box/box-annotations#308) * Fix: Point image annotations popover should be on annotated element (box#305) ([6d71dee](box/box-annotations@6d71dee)), closes [box#305](box/box-annotations#305) * Fix: Reset current annotation thread immediately on save (box#313) ([19c89cc](box/box-annotations@19c89cc)), closes [box#313](box/box-annotations#313) * Fix: Reset undo/redo buttons on drawing save/delete (box#306) ([441f0f2](box/box-annotations@441f0f2)), closes [box#306](box/box-annotations#306) * Fix: Show comment list scrollbars only on overflow (box#314) ([83c143e](box/box-annotations@83c143e)), closes [box#314](box/box-annotations#314) * Chore: Remove NSP from build (defunct) (box#315) ([720802f](box/box-annotations@720802f)), closes [box#315](box/box-annotations#315) * Chore: Update test page for annotations 3.4 (box#301) ([71afd21](box/box-annotations@71afd21)), closes [box#301](box/box-annotations#301) * Update: CSS className constants for react classNames (box#299) ([b472a2e](box/box-annotations@b472a2e)), closes [box#299](box/box-annotations#299) ## 3.4.0 (2018-11-28) * Fix: Dialog not showing when creating points (box#295) ([c0ee86f](box/box-annotations@c0ee86f)), closes [box#295](box/box-annotations#295) * Fix: Don't clear selection if selecting outside of annotated element (box#298) ([5e277a0](box/box-annotations@5e277a0)), closes [box#298](box/box-annotations#298) * Fix: Fix test site for IE 11 (box#300) ([359bda3](box/box-annotations@359bda3)), closes [box#300](box/box-annotations#300) * Fix: Positioning of undo/redo drawing buttons in header on mobile (box#296) ([873394f](box/box-annotations@873394f)), closes [box#296](box/box-annotations#296) * Chore: Add Annotations test page to be hosted by github pages (box#294) ([b91ade9](box/box-annotations@b91ade9)), closes [box#294](box/box-annotations#294) * Chore: Ignore js and json in i18n (box#297) ([e691bdc](box/box-annotations@e691bdc)), closes [box#297](box/box-annotations#297) ## 3.3.0 (2018-11-20) * Fix: Clear highlight selection on mousedown and hideAnnotations() (box#293) ([b60bc56](box/box-annotations@b60bc56)), closes [box#293](box/box-annotations#293) * Fix: Ensure deleteSuccessHandler destroys thread when necessary (box#289) ([e972a72](box/box-annotations@e972a72)), closes [box#289](box/box-annotations#289) * Fix: Ensure popover parent element is determined correctly (box#292) ([eab98ec](box/box-annotations@eab98ec)), closes [box#292](box/box-annotations#292) * Fix: Popover CSS issues (box#287) ([e64b3f8](box/box-annotations@e64b3f8)), closes [box#287](box/box-annotations#287) * Fix: Reset create highlight UI when mouse hasn't moved on mouseup (box#290) ([4abd611](box/box-annotations@4abd611)), closes [box#290](box/box-annotations#290) * Fix: Reset popover UI on re-render/scale events (box#284) ([43e5cb0](box/box-annotations@43e5cb0)), closes [box#284](box/box-annotations#284) * Fix: Unfocus textarea on comment post/cancel (box#286) ([448347c](box/box-annotations@448347c)), closes [box#286](box/box-annotations#286) * Fix: Unregister drawing on mode cancel (box#288) ([12d5f6d](box/box-annotations@12d5f6d)), closes [box#288](box/box-annotations#288) * Chore: Remove unecesary highlightThread.onMouseDown() (box#291) ([a01db9f](box/box-annotations@a01db9f)), closes [box#291](box/box-annotations#291) * Update: Husky scripts (box#285) ([eaff0f0](box/box-annotations@eaff0f0)), closes [box#285](box/box-annotations#285) * Mojito: Update translations (box#283) ([529bbc0](box/box-annotations@529bbc0)), closes [box#283](box/box-annotations#283) ## 3.2.0 (2018-11-13) * Mojito: Update translations (box#282) ([48d2f8f](box/box-annotations@48d2f8f)), closes [box#282](box/box-annotations#282) ## 3.1.0 (2018-11-07) * Fix: Alignment of createdAt timestamp and user's name (box#277) ([b4980fb](box/box-annotations@b4980fb)), closes [box#277](box/box-annotations#277) * Fix: Ensure drawings are only registered once with the controller (box#278) ([feedc87](box/box-annotations@feedc87)), closes [box#278](box/box-annotations#278) * Fix: Ensure onSelectionChange isn't triggered while creating highlights (box#281) ([3130210](box/box-annotations@3130210)), closes [box#281](box/box-annotations#281) * Fix: Remove clickHandler from DrawingModeController (box#280) ([0c7fe0f](box/box-annotations@0c7fe0f)), closes [box#280](box/box-annotations#280) * Fix: Remove focus trap on AnnotationPopover on mobile (box#279) ([a14fe6b](box/box-annotations@a14fe6b)), closes [box#279](box/box-annotations#279) * Chore: Fix publish script (box#275) ([25c40f7](box/box-annotations@25c40f7)), closes [box#275](box/box-annotations#275) * Chore: Upgrade husky (box#276) ([14bda8a](box/box-annotations@14bda8a)), closes [box#276](box/box-annotations#276) ## 3.0.0 (2018-10-31) * Chore: Adding rsync to yarn run watch (box#241) ([afe6ab6](box/box-annotations@afe6ab6)), closes [box#241](box/box-annotations#241) * Chore: Cleanup flow types (box#274) ([33adb47](box/box-annotations@33adb47)), closes [box#274](box/box-annotations#274) * Chore: Reduce redundant point creation via buffering (box#237) ([2bfc2f1](box/box-annotations@2bfc2f1)), closes [box#237](box/box-annotations#237) * Breaking: Migrate Annotations UI into React (box#251) ([d853b80](box/box-annotations@d853b80)), closes [box#251](box/box-annotations#251) ## 2.3.0 (2018-10-16) * Chore: Add supported excel types. Remove greenkeeper badge (box#227) ([8bd1bb9](box/box-annotations@8bd1bb9)), closes [box#227](box/box-annotations#227) * Chore: break text to fit into dialog (box#230) ([3a5cc86](box/box-annotations@3a5cc86)), closes [box#230](box/box-annotations#230) * Chore: Remove unused thread.mouseoutHandler() (box#206) ([1017082](box/box-annotations@1017082)), closes [box#206](box/box-annotations#206) * Chore: Replace Karma with Jest for testing framework (box#199) ([a847b01](box/box-annotations@a847b01)), closes [box#199](box/box-annotations#199) * Chore: Update preview version to 1.54.0 in functional tests (box#239) ([6de2cf4](box/box-annotations@6de2cf4)), closes [box#239](box/box-annotations#239) * Fix: Cursor type in annotation dialog (box#195) ([b568288](box/box-annotations@b568288)), closes [box#195](box/box-annotations#195) * Fix: Functional tests scripts ([2dfc22e](box/box-annotations@2dfc22e)) * Fix: travis.yml config (box#203) ([a71ecb6](box/box-annotations@a71ecb6)), closes [box#203](box/box-annotations#203) * Update: Annotations with header (box#233) ([91cdce3](box/box-annotations@91cdce3)), closes [box#233](box/box-annotations#233) * Update: box-react-ui to v25.6.0 (box#204) ([398b4c3](box/box-annotations@398b4c3)), closes [box#204](box/box-annotations#204) * Update: Filter multi-image functional tests separately from image tests ([b15a007](box/box-annotations@b15a007)) * Update: Test yaml changes ([bb58296](box/box-annotations@bb58296)) * Update: Webpack 4 + dependencies (box#208) ([b2ba5df](box/box-annotations@b2ba5df)), closes [box#208](box/box-annotations#208) * Update .travis.yml ([9c09e8e](box/box-annotations@9c09e8e)) * Update .travis.yml ([236c383](box/box-annotations@236c383)) * Update add-annotation-type.md ([fcceb3e](box/box-annotations@fcceb3e)) * Update add-annotation-type.md ([ca5c6f0](box/box-annotations@ca5c6f0)) * Update webpack.selenium.config.js ([e008f68](box/box-annotations@e008f68)) * New: Add functional tests for image files (box#197) ([7c7b39e](box/box-annotations@7c7b39e)), closes [box#197](box/box-annotations#197)