{"version":3,"sources":["../js/Text/GreenlightTextTools_RemoveTextHighlight.js"],"names":["g_oTextTools_RemoveTextHighlight","TextTools_RemoveTextHighlight","this","g_oSplitHighlightContent","prototype","initialiseHighlight","oViewer","g_oTextTools","g_bHighlightOnCompareCanvas","g_oCompare","g_oCompareViewer","g_oViewer","g_oArtworkViewer","oAnnotationViewer","g_oCompareAnnotationViewer","g_oAnnotationViewer","szHighlightCanvas","szNonHighlightCanvas","splitSections","g_oAnnotationText","removeHighlights","highlightSections","changeCanvasFunction","$","event","mouseMove","mouseDown","css","g_oGreenlightMessages","displayWarningBubble","c_szHighlightUnavailableCanvas","oArtworkCanvas","oAnnotationCanvas","oPosition","convertMousePositionToPercentages","g_oCurrentText","findText","x","y","szCanvasId","findClosestText","oAnnotationText","removeTextHighlightFromTextData","deepCopyArray","isTextHighlightLeftToRight","g_oStartingText","g_oEndingText","szCurrentCanvas","mouseDrag","mouseUp","c_szNoLiveTextFound","length","initialiseTextTool","g_eToolTypes","RemoveTextHighlight","g_eActiveAnnotationType","g_bHighlightIsCharacterAccuracy","g_szHighlightColour","oMergedAnnotationText","mergeSections","oTextData","startingText","endingText","leftToRight","removeTextHighlightFromTextData_Characters","removeTextHighlightFromTextData_Words","oTextHighlightWords","getSectionWords","i","bWordRemoved","j","paragraph","line","word","splice","oTextHighlightCharacters","getSectionCharacters","bCharacterRemoved","character","window"],"mappings":"AAcA,IAAIA,iCAAmC,IAEtC,WACA,aAKA,SAASC,gCAGRC,KAAKC,yBAA2B,GAMjCF,8BAA8BG,UAAUC,oBAAsB,WAG7D,IAAIC,QAAWC,aAAaC,4BAA2DC,WAAWC,iBAAxCC,UAAUC,iBAChEC,kBAAqBN,aAAaC,4BAA8DC,WAAWK,2BAA3CH,UAAUI,oBAC1EC,kBAAqBT,aAAaC,4BAAmD,0BAArB,mBAChES,qBAAwBV,aAAaC,4BAA0D,mBAA5B,0BAGvER,iCAAiCG,yBAA2BI,aAAaW,cAAcX,aAAaY,kBAAmBb,QAASO,mBAGhIN,aAAaa,iBAAiBP,mBAC9BN,aAAac,kBAAkBrB,iCAAiCG,yBAA0BG,QAASO,mBAGnGS,qBAAqBC,EAAE,IAAMP,mBAAoB,2BAA4B,SAAUQ,OACtFxB,iCAAiCyB,UAAUD,MAAOlB,QAASO,qBAI5DS,qBAAqBC,EAAE,IAAMP,mBAAoB,cAAe,SAAUQ,OACzExB,iCAAiC0B,UAAUF,MAAOlB,QAASO,qBAI5DU,EAAE,IAAMN,sBAAsBU,IAAI,SAAU,WAC5CL,qBAAqBC,EAAE,IAAMN,sBAAuB,cAAe,SAAUO,OAC5EI,sBAAsBC,qBAAqBtB,aAAauB,mCAU1D7B,8BAA8BG,UAAUqB,UAAY,SAAUD,MAAOO,eAAgBC,mBAGpF,IAAIC,UAAY1B,aAAa2B,kCAAkCV,MAAOO,eAAgBC,mBACtFzB,aAAa4B,eAAiB5B,aAAa6B,SAASH,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,mBAG9F,IAAIO,WAAa,KAAQhC,aAAaC,4BAAmD,0BAArB,oBAWpE,GARAe,EAAEgB,YAAYZ,IAAI,SAAyC,MAA/BpB,aAAa4B,eAAyB,UAAY,QAG3C,MAA/B5B,aAAa4B,iBAChB5B,aAAa4B,eAAiB5B,aAAaiC,gBAAgBP,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,oBAInE,MAA/BzB,aAAa4B,eAGhB,OAFA5B,aAAaa,iBAAiBY,wBAC9BzB,aAAac,kBAAkBrB,iCAAiCG,yBAA0B4B,eAAgBC,mBAK3G,IAAIS,gBAAkBzC,iCAAiC0C,gCAAgCC,cAAc3C,iCAAiCG,0BAA2BI,aAAa4B,eAAgB5B,aAAa4B,eAAgB5B,aAAaqC,6BAA8Bb,eAAgBC,mBAGtRzB,aAAaa,iBAAiBY,mBAC9BzB,aAAac,kBAAkBoB,gBAAiBV,eAAgBC,oBASjE/B,8BAA8BG,UAAUsB,UAAY,SAAUF,MAAOO,eAAgBC,mBAGpF,IAAIC,UAAY1B,aAAa2B,kCAAkCV,MAAOO,eAAgBC,mBAStF,GARAzB,aAAa4B,eAAiB5B,aAAa6B,SAASH,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,mBAG3D,MAA/BzB,aAAa4B,iBAChB5B,aAAa4B,eAAiB5B,aAAaiC,gBAAgBP,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,oBAInE,MAA/BzB,aAAa4B,eAAjB,CAMA5B,aAAasC,gBAAkBtC,aAAauC,cAAgBvC,aAAa4B,eAGzE,IAAIM,gBAAkBzC,iCAAiC0C,gCAAgCC,cAAc3C,iCAAiCG,0BAA2BI,aAAasC,gBAAiBtC,aAAauC,cAAevC,aAAaqC,6BAA8Bb,eAAgBC,mBAGtRzB,aAAaa,iBAAiBY,mBAC9BzB,aAAac,kBAAkBoB,gBAAiBV,eAAgBC,mBAGhEV,uBAGA,IAAIyB,gBAAmBxC,aAAaC,4BAAmD,0BAArB,mBAGlEe,EAAE,IAAMwB,iBAAiBpB,IAAI,SAAU,QAGvCL,qBAAqBC,EAAE,IAAMwB,iBAAkB,2BAA4B,SAAUvB,OACpFxB,iCAAiCgD,UAAUxB,MAAOO,eAAgBC,qBAInEV,qBAAqBC,EAAE,IAAMwB,iBAAkB,YAAa,SAAUvB,OACrExB,iCAAiCiD,QAAQzB,MAAOO,eAAgBC,0BA9BhEJ,sBAAsBC,qBAAqBtB,aAAa2C,sBAwC1DjD,8BAA8BG,UAAU4C,UAAY,SAAUxB,MAAOO,eAAgBC,mBAGpF,IAAIC,UAAY1B,aAAa2B,kCAAkCV,MAAOO,eAAgBC,mBAStF,GARAzB,aAAa4B,eAAiB5B,aAAa6B,SAASH,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,mBAG3D,MAA/BzB,aAAa4B,iBAChB5B,aAAa4B,eAAiB5B,aAAaiC,gBAAgBP,UAAUI,EAAGJ,UAAUK,EAAGP,eAAgBC,oBAInE,MAA/BzB,aAAa4B,eAAjB,CAKA5B,aAAauC,cAAgBvC,aAAa4B,eAG1C,IAAIM,gBAAkBzC,iCAAiC0C,gCAAgCC,cAAc3C,iCAAiCG,0BAA2BI,aAAasC,gBAAiBtC,aAAauC,cAAevC,aAAaqC,6BAA8Bb,eAAgBC,mBAGtRzB,aAAaa,iBAAiBY,mBAC9BzB,aAAac,kBAAkBoB,gBAAiBV,eAAgBC,qBASjE/B,8BAA8BG,UAAU6C,QAAU,SAAUzB,MAAOO,eAAgBC,mBAGlF,IAAIS,gBAAkBzC,iCAAiC0C,gCAAgCC,cAAc3C,iCAAiCG,0BAA2BI,aAAasC,gBAAiBtC,aAAauC,cAAevC,aAAaqC,6BAA8Bb,eAAgBC,mBAGtR,GAA8B,GAA1BS,gBAAgBU,OAGnB,OAFAvB,sBAAsBC,qBAAqB,oCAC3CtB,aAAa6C,mBAAmB7C,aAAa8C,aAAaC,oBAAqB/C,aAAagD,wBAAyBhD,aAAaiD,gCAAiCjD,aAAaC,4BAA6BD,aAAakD,qBAK3N,IAAIC,sBAAwBnD,aAAaoD,cAAclB,gBAAiBV,eAAgBC,mBAGxFzB,aAAaY,kBAAoBuC,sBACjCnD,aAAa6C,mBAAmB7C,aAAa8C,aAAaC,oBAAqB/C,aAAagD,wBAAyBhD,aAAaiD,gCAAiCjD,aAAaC,4BAA6BD,aAAakD,sBAY3NxD,8BAA8BG,UAAUsC,gCAAkC,SAAUkB,UAAWC,aAAcC,WAAYC,YAAahC,eAAgBC,mBACrJ,OAAOzB,aAAaiD,gCAAkCxD,iCAAiCgE,2CAA2CJ,UAAWC,aAAcC,WAAYC,YAAahC,eAAgBC,mBAAqBhC,iCAAiCiE,sCAAsCL,UAAWC,aAAcC,WAAYC,YAAahC,eAAgBC,oBAYnW/B,8BAA8BG,UAAU6D,sCAAwC,SAAUL,UAAWC,aAAcC,WAAYC,YAAahC,eAAgBC,mBAM3J,IAHA,IAAIkC,oBAAsB3D,aAAa4D,gBAAgBN,aAAcC,WAAYC,YAAahC,eAAgBC,mBAGrGoC,EAAI,EAAGA,EAAIR,UAAUT,OAAQiB,IAAK,CAI1C,IADA,IAAIC,cAAe,EACVC,EAAI,EAAGA,EAAIJ,oBAAoBf,OAAQmB,IAC/C,GAAIV,UAAUQ,GAAGP,aAAaU,WAAaL,oBAAoBI,GAAGC,WACjEX,UAAUQ,GAAGP,aAAaW,MAAQN,oBAAoBI,GAAGE,MACzDZ,UAAUQ,GAAGP,aAAaY,MAAQP,oBAAoBI,GAAGG,KAAM,CAC/DJ,cAAe,EACf,MAKEA,eACHT,UAAUc,OAAON,EAAG,GACpBA,KAKF,OAAOR,WAYR3D,8BAA8BG,UAAU4D,2CAA6C,SAAUJ,UAAWC,aAAcC,WAAYC,YAAahC,eAAgBC,mBAMhK,IAHA,IAAI2C,yBAA2BpE,aAAaqE,qBAAqBf,aAAcC,WAAYC,YAAahC,eAAgBC,mBAG/GoC,EAAI,EAAGA,EAAIR,UAAUT,OAAQiB,IAAK,CAI1C,IADA,IAAIS,mBAAoB,EACfP,EAAI,EAAGA,EAAIK,yBAAyBxB,OAAQmB,IACpD,GAAIV,UAAUQ,GAAGP,aAAaU,WAAaI,yBAAyBL,GAAGC,WACtEX,UAAUQ,GAAGP,aAAaW,MAAQG,yBAAyBL,GAAGE,MAC9DZ,UAAUQ,GAAGP,aAAaY,MAAQE,yBAAyBL,GAAGG,MAC9Db,UAAUQ,GAAGP,aAAaiB,WAAaH,yBAAyBL,GAAGQ,UAAW,CAC9ED,mBAAoB,EACpB,MAKEA,oBACHjB,UAAUc,OAAON,EAAG,GACpBA,KAKF,OAAOR,WAIRmB,OAAO9E,8BAAgCA,8BAlSxC","file":"GreenlightTextTools_RemoveTextHighlight-2fe9ec2e5c.js","sourcesContent":["/*\r\n * Copyright (c) 2021 SGS Europe. All rights reserved.\r\n *\r\n * This program is the CONFIDENTIAL and PROPRIETARY property of SGS Europe.\r\n * Any unauthorised use, reproduction, or transfer of this program is strictly\r\n * prohibited.\r\n *\r\n * File Name:\tGreenlightTextTools_RemoveTextHighlight.js\r\n *\r\n * Description:\tThe class containing the functionality required by the Greenlight for text tools for a text removal highlight.\r\n * \r\n */\r\n\r\n// The text tools object.\r\nvar g_oTextTools_RemoveTextHighlight = {};\r\n\r\n(function () {\r\n\t\"use strict\";\r\n\r\n\t/**\r\n\t * Load the remove text highlight tool for the page.\r\n\t */\r\n\tfunction TextTools_RemoveTextHighlight() {\r\n\r\n\t\t// For removing highlights, we need to keep a copy of the original highlight, split into its individual items.\r\n\t\tthis.g_oSplitHighlightContent = [];\r\n\t};\r\n\r\n\t/**\r\n\t * Initialises a remove text highlight.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.initialiseHighlight = function () {\r\n\r\n\t\t// Determine the canvas to highlight on, and the non highlight canvas.\r\n\t\tvar oViewer = !g_oTextTools.g_bHighlightOnCompareCanvas ? g_oViewer.g_oArtworkViewer : g_oCompare.g_oCompareViewer;\r\n\t\tvar oAnnotationViewer = !g_oTextTools.g_bHighlightOnCompareCanvas ? g_oViewer.g_oAnnotationViewer : g_oCompare.g_oCompareAnnotationViewer;\r\n\t\tvar szHighlightCanvas = !g_oTextTools.g_bHighlightOnCompareCanvas ? \"AnnotationViewer\" : \"CompareAnnotationViewer\";\r\n\t\tvar szNonHighlightCanvas = !g_oTextTools.g_bHighlightOnCompareCanvas ? \"CompareAnnotationViewer\" : \"AnnotationViewer\";\r\n\r\n\t\t// Split the content into individual items.\r\n\t\tg_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent = g_oTextTools.splitSections(g_oTextTools.g_oAnnotationText, oViewer, oAnnotationViewer);\r\n\r\n\t\t// Reset the highlighting to the existing sections.\r\n\t\tg_oTextTools.removeHighlights(oAnnotationViewer);\r\n\t\tg_oTextTools.highlightSections(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent, oViewer, oAnnotationViewer);\r\n\r\n\t\t// Activate the mouse move event.\r\n\t\tchangeCanvasFunction($(\"#\" + szHighlightCanvas), 'pointermove.annotationUI', function (event) {\r\n\t\t\tg_oTextTools_RemoveTextHighlight.mouseMove(event, oViewer, oAnnotationViewer);\r\n\t\t});\r\n\r\n\t\t// Activate the mouse down event.\r\n\t\tchangeCanvasFunction($(\"#\" + szHighlightCanvas), 'pointerdown', function (event) {\r\n\t\t\tg_oTextTools_RemoveTextHighlight.mouseDown(event, oViewer, oAnnotationViewer);\r\n\t\t});\r\n\r\n\t\t// Activate the mouse down event for the compare canvas.\r\n\t\t$(\"#\" + szNonHighlightCanvas).css(\"cursor\", \"default\");\r\n\t\tchangeCanvasFunction($(\"#\" + szNonHighlightCanvas), 'pointerdown', function (event) {\r\n\t\t\tg_oGreenlightMessages.displayWarningBubble(g_oTextTools.c_szHighlightUnavailableCanvas);\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Mouse move event for a remove text highlight.\r\n\t * @param {object} event - The event.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.mouseMove = function (event, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Search for text.\r\n\t\tvar oPosition = g_oTextTools.convertMousePositionToPercentages(event, oArtworkCanvas, oAnnotationCanvas);\r\n\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Determine the canvas id.\r\n\t\tvar szCanvasId = \"#\" + (!g_oTextTools.g_bHighlightOnCompareCanvas ? \"AnnotationViewer\" : \"CompareAnnotationViewer\");\r\n\r\n\t\t// Change the cursor based on if a word was found.\r\n\t\t$(szCanvasId).css(\"cursor\", g_oTextTools.g_oCurrentText == null ? \"default\" : \"text\");\r\n\r\n\t\t// If we have not found any text, find the closest text.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findClosestText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t}\r\n\r\n\t\t// If we have still not found any text, highlight the existing sections.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\tg_oTextTools.removeHighlights(oAnnotationCanvas);\r\n\t\t\tg_oTextTools.highlightSections(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Create a copy of the annotation text, removing the text we have highlighted.\r\n\t\tvar oAnnotationText = g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData(deepCopyArray(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent), g_oTextTools.g_oCurrentText, g_oTextTools.g_oCurrentText, g_oTextTools.isTextHighlightLeftToRight(), oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Highlight the remaining words.\r\n\t\tg_oTextTools.removeHighlights(oAnnotationCanvas);\r\n\t\tg_oTextTools.highlightSections(oAnnotationText, oArtworkCanvas, oAnnotationCanvas);\r\n\t};\r\n\r\n\t/**\r\n\t * Mouse down event for a remove text highlight.\r\n\t * @param {object} event - The event.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.mouseDown = function (event, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Search for text.\r\n\t\tvar oPosition = g_oTextTools.convertMousePositionToPercentages(event, oArtworkCanvas, oAnnotationCanvas);\r\n\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// If we have not found any text, find the closest text.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findClosestText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t}\r\n\r\n\t\t// Ensure we have moused down on text.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\tg_oGreenlightMessages.displayWarningBubble(g_oTextTools.c_szNoLiveTextFound);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Update the starting and ending text.\r\n\t\tg_oTextTools.g_oStartingText = g_oTextTools.g_oEndingText = g_oTextTools.g_oCurrentText;\r\n\r\n\t\t// Create a copy of the annotation text, removing the text we have highlighted.\r\n\t\tvar oAnnotationText = g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData(deepCopyArray(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent), g_oTextTools.g_oStartingText, g_oTextTools.g_oEndingText, g_oTextTools.isTextHighlightLeftToRight(), oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Highlight the remaining words.\r\n\t\tg_oTextTools.removeHighlights(oAnnotationCanvas);\r\n\t\tg_oTextTools.highlightSections(oAnnotationText, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Clear all bindings.\r\n\t\tchangeCanvasFunction();\r\n\r\n\t\t// Determine the canvas we are currently on.\r\n\t\tvar szCurrentCanvas = !g_oTextTools.g_bHighlightOnCompareCanvas ? \"AnnotationViewer\" : \"CompareAnnotationViewer\";\r\n\r\n\t\t// Change the cursor to text.\r\n\t\t$(\"#\" + szCurrentCanvas).css(\"cursor\", \"text\");\r\n\r\n\t\t// Set the mouse drag event.\r\n\t\tchangeCanvasFunction($(\"#\" + szCurrentCanvas), 'pointermove.annotationUI', function (event) {\r\n\t\t\tg_oTextTools_RemoveTextHighlight.mouseDrag(event, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\r\n\t\t// Set the mouse up event.\r\n\t\tchangeCanvasFunction($(\"#\" + szCurrentCanvas), 'pointerup', function (event) {\r\n\t\t\tg_oTextTools_RemoveTextHighlight.mouseUp(event, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Mouse drag event for a remove text highlight.\r\n\t * @param {object} event - The event.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.mouseDrag = function (event, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Search for text.\r\n\t\tvar oPosition = g_oTextTools.convertMousePositionToPercentages(event, oArtworkCanvas, oAnnotationCanvas);\r\n\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// If we have not found any text, find the closest text.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\tg_oTextTools.g_oCurrentText = g_oTextTools.findClosestText(oPosition.x, oPosition.y, oArtworkCanvas, oAnnotationCanvas);\r\n\t\t}\r\n\r\n\t\t// Check a word has been found.\r\n\t\tif (g_oTextTools.g_oCurrentText == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Update the ending word for the highlight.\r\n\t\tg_oTextTools.g_oEndingText = g_oTextTools.g_oCurrentText;\r\n\r\n\t\t// Create a copy of the annotation text, removing the text we have highlighted.\r\n\t\tvar oAnnotationText = g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData(deepCopyArray(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent), g_oTextTools.g_oStartingText, g_oTextTools.g_oEndingText, g_oTextTools.isTextHighlightLeftToRight(), oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Highlight the remaining words.\r\n\t\tg_oTextTools.removeHighlights(oAnnotationCanvas);\r\n\t\tg_oTextTools.highlightSections(oAnnotationText, oArtworkCanvas, oAnnotationCanvas);\r\n\t};\r\n\r\n\t/**\r\n\t * Mouse up event for a remove text highlight.\r\n\t * @param {object} event - The event.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.mouseUp = function (event, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Create a copy of the annotation text, removing the text we have highlighted.\r\n\t\tvar oAnnotationText = g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData(deepCopyArray(g_oTextTools_RemoveTextHighlight.g_oSplitHighlightContent), g_oTextTools.g_oStartingText, g_oTextTools.g_oEndingText, g_oTextTools.isTextHighlightLeftToRight(), oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Ensure we still have words remaining.\r\n\t\tif (oAnnotationText.length == 0) {\r\n\t\t\tg_oGreenlightMessages.displayWarningBubble(\"All text cannot be removed.\");\r\n\t\t\tg_oTextTools.initialiseTextTool(g_oTextTools.g_eToolTypes.RemoveTextHighlight, g_oTextTools.g_eActiveAnnotationType, g_oTextTools.g_bHighlightIsCharacterAccuracy, g_oTextTools.g_bHighlightOnCompareCanvas, g_oTextTools.g_szHighlightColour);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Merge the split content.\r\n\t\tvar oMergedAnnotationText = g_oTextTools.mergeSections(oAnnotationText, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Update the text.\r\n\t\tg_oTextTools.g_oAnnotationText = oMergedAnnotationText;\r\n\t\tg_oTextTools.initialiseTextTool(g_oTextTools.g_eToolTypes.RemoveTextHighlight, g_oTextTools.g_eActiveAnnotationType, g_oTextTools.g_bHighlightIsCharacterAccuracy, g_oTextTools.g_bHighlightOnCompareCanvas, g_oTextTools.g_szHighlightColour);\r\n\t};\r\n\r\n\t/**\r\n\t * Removes a text highlight from text data.\r\n\t * @param {object} oTextData - The text data.\r\n\t * @param {object} startingText - The starting text.\r\n\t * @param {object} endingText - The ending text.\r\n\t * @param {bool} leftToRight - If the highlight is right to left.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.removeTextHighlightFromTextData = function (oTextData, startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas) {\r\n\t\treturn g_oTextTools.g_bHighlightIsCharacterAccuracy ? g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData_Characters(oTextData, startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas) : g_oTextTools_RemoveTextHighlight.removeTextHighlightFromTextData_Words(oTextData, startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas);\r\n\t};\r\n\r\n\t/**\r\n\t * Removes a word text highlight from text data.\r\n\t * @param {object} oTextData - The text data.\r\n\t * @param {object} startingText - The starting text.\r\n\t * @param {object} endingText - The ending text.\r\n\t * @param {bool} leftToRight - If the highlight is right to left.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.removeTextHighlightFromTextData_Words = function (oTextData, startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Get the words for the section.\r\n\t\tvar oTextHighlightWords = g_oTextTools.getSectionWords(startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Loop through each word in the text data.\r\n\t\tfor (var i = 0; i < oTextData.length; i++) {\r\n\r\n\t\t\t// Check if this word needs to be removed.\r\n\t\t\tvar bWordRemoved = false;\r\n\t\t\tfor (var j = 0; j < oTextHighlightWords.length; j++) {\r\n\t\t\t\tif (oTextData[i].startingText.paragraph == oTextHighlightWords[j].paragraph &&\r\n\t\t\t\t\toTextData[i].startingText.line == oTextHighlightWords[j].line &&\r\n\t\t\t\t\toTextData[i].startingText.word == oTextHighlightWords[j].word) {\r\n\t\t\t\t\tbWordRemoved = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove the word if required.\r\n\t\t\tif (bWordRemoved) {\r\n\t\t\t\toTextData.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Return the result.\r\n\t\treturn oTextData;\r\n\t};\r\n\r\n\t/**\r\n\t * Removes a character text highlight from text data.\r\n\t * @param {object} oTextData - The text data.\r\n\t * @param {object} startingText - The starting text.\r\n\t * @param {object} endingText - The ending text.\r\n\t * @param {bool} leftToRight - If the highlight is right to left.\r\n\t * @param {object} oArtworkCanvas - The artwork canvas.\r\n\t * @param {object} oAnnotationCanvas - The annotation canvas.\r\n\t */\r\n\tTextTools_RemoveTextHighlight.prototype.removeTextHighlightFromTextData_Characters = function (oTextData, startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas) {\r\n\r\n\t\t// Get the characters for the section.\r\n\t\tvar oTextHighlightCharacters = g_oTextTools.getSectionCharacters(startingText, endingText, leftToRight, oArtworkCanvas, oAnnotationCanvas);\r\n\r\n\t\t// Loop through each character in the text data.\r\n\t\tfor (var i = 0; i < oTextData.length; i++) {\r\n\r\n\t\t\t// Check if this character needs to be removed.\r\n\t\t\tvar bCharacterRemoved = false;\r\n\t\t\tfor (var j = 0; j < oTextHighlightCharacters.length; j++) {\r\n\t\t\t\tif (oTextData[i].startingText.paragraph == oTextHighlightCharacters[j].paragraph &&\r\n\t\t\t\t\toTextData[i].startingText.line == oTextHighlightCharacters[j].line &&\r\n\t\t\t\t\toTextData[i].startingText.word == oTextHighlightCharacters[j].word &&\r\n\t\t\t\t\toTextData[i].startingText.character == oTextHighlightCharacters[j].character) {\r\n\t\t\t\t\tbCharacterRemoved = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove the character if required.\r\n\t\t\tif (bCharacterRemoved) {\r\n\t\t\t\toTextData.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Return the result.\r\n\t\treturn oTextData;\r\n\t};\r\n\r\n\t// Add the Text Tools tool object to the window.\r\n\twindow.TextTools_RemoveTextHighlight = TextTools_RemoveTextHighlight;\r\n}());"]}