{"version":3,"sources":["../js/Text/GreenlightTextCompare_Equivalents.js"],"names":["g_oTextCompare_Equivalents","TextCompareEquivalents","this","g_oTextEquivalents","prototype","loadTextEquivalents","oJSON","SessionId","g_szSessionId","ConsumerId","g_oViewer","g_oArtworkViewer","g_oDoc","consumerId","$","ajax","type","url","data","JSON","stringify","contentType","dataType","success","response","loadTextEquivalents_CH","failure","g_oGreenlightMessages","displayErrorBubble","c_szTextCompareFailedToLoadEquivalents","Success","parse","Contents","length","renderTextEquivalents","szHTML","c_szTextCompareTextEquivalents","i","TextContent","EquivalentContent","html","toggleTextEquivalents","slideToggle","g_oTextCompare","updateTextCompareSectionsHeight","removeTextEquivalentsFromModifications","oModifications","g_iWhitespaceDetection","eWhitespaceDetectionLevels","On","g_eDifferenceType","eDifferenceTypes","Deletion","Addition","bEquivalentOnlySubstitution","szApprovalSubstitutionText","g_szModificationText","szCompareSubstitutionText","replaceTextEquivalents","NoDifference","g_eDifferenceMapping","CompareOnly","ApprovalOnly","szText","split","join","Off","replace","window"],"mappings":"AAcA,IAAIA,2BAA6B,IAEhC,WACA,aAKA,SAASC,yBAGRC,KAAKC,mBAAqB,KAM3BF,uBAAuBG,UAAUC,oBAAsB,WAGtD,IAAIC,MAAQ,CACXC,UAAWC,cACXC,WAAYC,UAAUC,iBAAiBC,OAAOC,YAI/CC,EAAEC,KAAK,CACNC,KAAM,OACNC,IAAK,+BACLC,KAAMC,KAAKC,UAAUd,OACrBe,YAAa,kCACbC,SAAU,OACVC,QAAS,SAAUC,UAClBxB,2BAA2ByB,uBAAuBD,WAEnDE,QAAS,SAAUF,UAClBxB,2BAA2BG,mBAAqB,GAChDwB,sBAAsBC,mBAAmB5B,2BAA2B6B,4CASvE5B,uBAAuBG,UAAUqB,uBAAyB,SAAUD,UAGnE,IAAKA,SAASM,QAGb,OAFA9B,2BAA2BG,mBAAqB,QAChDwB,sBAAsBC,mBAAmB5B,2BAA2B6B,wCAKrE7B,2BAA2BG,mBAAqBgB,KAAKY,MAAMP,SAASQ,UAGT,EAAvDhC,2BAA2BG,mBAAmB8B,QAGjDjC,2BAA2BkC,yBAO7BjC,uBAAuBG,UAAU8B,sBAAwB,WAGxD,IAAIC,OAAS,GAGbA,QAAUnC,2BAA2BoC,+BAAiC,IAGtE,IAAK,IAAIC,EAAI,EAAGA,EAAIrC,2BAA2BG,mBAAmB8B,OAAQI,IACzEF,QAAU,KAAOnC,2BAA2BG,mBAAmBkC,GAAGC,YAAc,MAAQtC,2BAA2BG,mBAAmBkC,GAAGE,kBAAoB,IAI9JzB,EAAE,qCAAqC0B,KAAKL,SAM7ClC,uBAAuBG,UAAUqC,sBAAwB,WAGxD3B,EAAE,8BAA8B4B,YAAY,KAAM,GAAI,WAGrDC,eAAeC,qCAQjB3C,uBAAuBG,UAAUyC,uCAAyC,SAAUC,gBAInF,GAAsD,MAAjD9C,2BAA2BG,oBAAsF,GAAxDH,2BAA2BG,mBAAmB8B,QAAgBU,eAAeI,wBAA0BJ,eAAeK,2BAA2BC,GAK/M,IAAK,IAAIZ,EAAI,EAAGA,EAAIS,eAAeb,OAAQI,IAG1C,GAAIS,eAAeT,GAAGa,mBAAqBP,eAAeQ,iBAAiBC,UAAaf,EAAI,EAAKS,eAAeb,QAAUa,eAAeT,EAAI,GAAGa,mBAAqBP,eAAeQ,iBAAiBE,SAAU,CAG9M,IAAIC,6BAA8B,EAG9BC,2BAA6BT,eAAeT,GAAGmB,qBAC/CC,0BAA4BX,eAAeT,EAAI,GAAGmB,qBAGlDxD,2BAA2B0D,uBAAuBH,6BAA+BvD,2BAA2B0D,uBAAuBD,6BAGtIH,6BAA8B,GAO3BA,8BAGHR,eAAeT,GAAGa,kBAAoBP,eAAeQ,iBAAiBQ,aACtEb,eAAeT,GAAGuB,qBAAuBjB,eAAeiB,qBAAqBC,YAC7Ef,eAAeT,EAAI,GAAGa,kBAAoBP,eAAeQ,iBAAiBQ,aAC1Eb,eAAeT,EAAI,GAAGuB,qBAAuBjB,eAAeiB,qBAAqBE,gBAUrF7D,uBAAuBG,UAAUsD,uBAAyB,SAAUK,QAGnE,GAAqD,MAAjD/D,2BAA2BG,mBAC9B,IAAK,IAAIkC,EAAI,EAAGA,EAAIrC,2BAA2BG,mBAAmB8B,OAAQI,IAGzE0B,OAASA,OAAOC,MAAMhE,2BAA2BG,mBAAmBkC,GAAGC,aAAa2B,KAAKjE,2BAA2BG,mBAAmBkC,GAAGE,mBAU5I,OALII,eAAeI,wBAA0BJ,eAAeK,2BAA2BkB,MACtFH,OAASA,OAAOI,QAAQ,MAAO,KAIzBJ,QAIRK,OAAOnE,uBAAyBA,uBA1KjC","file":"GreenlightTextCompare_Equivalents-b3249a1b44.js","sourcesContent":["/*\r\n * Copyright (c) 2023 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:\tGreenlightTextCompare_Equivalents.js\r\n *\r\n * Description:\tThe class containing the functionality required by the Greenlight for text compare equivalents.\r\n * \r\n */\r\n\r\n// The text compare object.\r\nvar g_oTextCompare_Equivalents = {};\r\n\r\n(function () {\r\n\t\"use strict\";\r\n\r\n\t/**\r\n\t * Load the text content for the page.\r\n\t */\r\n\tfunction TextCompareEquivalents() {\r\n\r\n\t\t// Outline the text equivalents to be populated.\r\n\t\tthis.g_oTextEquivalents = null;\r\n\t};\r\n\r\n\t/**\r\n\t * Loads the text equivalents.\r\n\t */\r\n\tTextCompareEquivalents.prototype.loadTextEquivalents = function () {\r\n\r\n\t\t// Build up the JSON to be posted.\r\n\t\tvar oJSON = {\r\n\t\t\tSessionId: g_szSessionId,\r\n\t\t\tConsumerId: g_oViewer.g_oArtworkViewer.g_oDoc.consumerId\r\n\t\t};\r\n\r\n\t\t// Call to load the text data.\r\n\t\t$.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: \"TextTools/GetTextEquivalents\",\r\n\t\t\tdata: JSON.stringify(oJSON),\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\tdataType: \"json\",\r\n\t\t\tsuccess: function (response) {\r\n\t\t\t\tg_oTextCompare_Equivalents.loadTextEquivalents_CH(response);\r\n\t\t\t},\r\n\t\t\tfailure: function (response) {\r\n\t\t\t\tg_oTextCompare_Equivalents.g_oTextEquivalents = [];\r\n\t\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextCompare_Equivalents.c_szTextCompareFailedToLoadEquivalents);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Callback for loading the text equivalents.\r\n\t * @param {object} response - The response of the load.\r\n\t */\r\n\tTextCompareEquivalents.prototype.loadTextEquivalents_CH = function (response) {\r\n\r\n\t\t// If unsuccessful, set that we have no text equivalents and display an error bubble.\r\n\t\tif (!response.Success) {\r\n\t\t\tg_oTextCompare_Equivalents.g_oTextEquivalents = [];\r\n\t\t\tg_oGreenlightMessages.displayErrorBubble(g_oTextCompare_Equivalents.c_szTextCompareFailedToLoadEquivalents);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Extract the equivalents.\r\n\t\tg_oTextCompare_Equivalents.g_oTextEquivalents = JSON.parse(response.Contents);\r\n\r\n\t\t// If we have text equivalents.\r\n\t\tif (g_oTextCompare_Equivalents.g_oTextEquivalents.length > 0) {\r\n\r\n\t\t\t// Render the text equivalents.\r\n\t\t\tg_oTextCompare_Equivalents.renderTextEquivalents();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Renders the text equivalents.\r\n\t */\r\n\tTextCompareEquivalents.prototype.renderTextEquivalents = function () {\r\n\r\n\t\t// Build up the HTML for the text equivalents.\r\n\t\tvar szHTML = '';\r\n\r\n\t\t// Add the header.\r\n\t\tszHTML += g_oTextCompare_Equivalents.c_szTextCompareTextEquivalents + \":\";\r\n\r\n\t\t// Loop through and add each of the text equivalents.\r\n\t\tfor (var i = 0; i < g_oTextCompare_Equivalents.g_oTextEquivalents.length; i++) {\r\n\t\t\tszHTML += ' [' + g_oTextCompare_Equivalents.g_oTextEquivalents[i].TextContent + ' → ' + g_oTextCompare_Equivalents.g_oTextEquivalents[i].EquivalentContent + ']';\r\n\t\t}\r\n\r\n\t\t// Apply the HTML.\r\n\t\t$(\"#divTextCompareEquivalentsContent\").html(szHTML);\r\n\t};\r\n\r\n\t/**\r\n\t * Toggles the text equivalents.\r\n\t */\r\n\tTextCompareEquivalents.prototype.toggleTextEquivalents = function () {\r\n\r\n\t\t// Slide toggle the equivalents.\r\n\t\t$(\"#divTextCompareEquivalents\").slideToggle(null, \"\", function () {\r\n\r\n\t\t\t// Update the height of the text compare sections.\r\n\t\t\tg_oTextCompare.updateTextCompareSectionsHeight();\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Removes the text equivalents from the modifications.\r\n\t * @param {object} oModifications - The modification list.\r\n\t */\r\n\tTextCompareEquivalents.prototype.removeTextEquivalentsFromModifications = function (oModifications) {\r\n\r\n\t\t// Check we have equivalents to evaluate.\r\n\t\t// White space can count as an equivalent if the setting is off.\r\n\t\tif ((g_oTextCompare_Equivalents.g_oTextEquivalents == null || g_oTextCompare_Equivalents.g_oTextEquivalents.length == 0) && g_oTextCompare.g_iWhitespaceDetection == g_oTextCompare.eWhitespaceDetectionLevels.On) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Loop through each of the modifications.\r\n\t\tfor (var i = 0; i < oModifications.length; i++) {\r\n\r\n\t\t\t// If this is a deletion followed by an addition, this is a substitution that may only be a character equivalent difference.\r\n\t\t\tif (oModifications[i].g_eDifferenceType == g_oTextCompare.eDifferenceTypes.Deletion && (i + 1) < oModifications.length && oModifications[i + 1].g_eDifferenceType == g_oTextCompare.eDifferenceTypes.Addition) {\r\n\r\n\t\t\t\t// Keep track of if this is an equivalent only substitution.\r\n\t\t\t\tvar bEquivalentOnlySubstitution = false;\r\n\r\n\t\t\t\t// Get the substitution text to be checked.\r\n\t\t\t\tvar szApprovalSubstitutionText = oModifications[i].g_szModificationText;\r\n\t\t\t\tvar szCompareSubstitutionText = oModifications[i + 1].g_szModificationText;\r\n\r\n\t\t\t\t// If this text is the same following the swapping out of equivalents.\r\n\t\t\t\tif (g_oTextCompare_Equivalents.replaceTextEquivalents(szApprovalSubstitutionText) == g_oTextCompare_Equivalents.replaceTextEquivalents(szCompareSubstitutionText)) {\r\n\r\n\t\t\t\t\t// Set that this is an equivalent only substitution.\r\n\t\t\t\t\tbEquivalentOnlySubstitution = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// We may need to add something in future to include the no difference text from either side, \r\n\t\t\t\t// then re-compare incase the equivalent is split across characters.\r\n\r\n\t\t\t\t// If this was an equivalent only substitution.\r\n\t\t\t\tif (bEquivalentOnlySubstitution) {\r\n\r\n\t\t\t\t\t// Update the statuses and mappings of these modifications.\r\n\t\t\t\t\toModifications[i].g_eDifferenceType = g_oTextCompare.eDifferenceTypes.NoDifference;\r\n\t\t\t\t\toModifications[i].g_eDifferenceMapping = g_oTextCompare.g_eDifferenceMapping.CompareOnly;\r\n\t\t\t\t\toModifications[i + 1].g_eDifferenceType = g_oTextCompare.eDifferenceTypes.NoDifference;\r\n\t\t\t\t\toModifications[i + 1].g_eDifferenceMapping = g_oTextCompare.g_eDifferenceMapping.ApprovalOnly;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Replaces text equivalents.\r\n\t * @param {string} szText - The text.\r\n\t */\r\n\tTextCompareEquivalents.prototype.replaceTextEquivalents = function (szText) {\r\n\r\n\t\t// Loop through each of the text equivalents.\r\n\t\tif (g_oTextCompare_Equivalents.g_oTextEquivalents != null) {\r\n\t\t\tfor (var i = 0; i < g_oTextCompare_Equivalents.g_oTextEquivalents.length; i++) {\r\n\r\n\t\t\t\t// Replace this text equivalent.\r\n\t\t\t\tszText = szText.split(g_oTextCompare_Equivalents.g_oTextEquivalents[i].TextContent).join(g_oTextCompare_Equivalents.g_oTextEquivalents[i].EquivalentContent);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If we are ignoring whitespace differences, count any white space as equivalents.\r\n\t\tif (g_oTextCompare.g_iWhitespaceDetection == g_oTextCompare.eWhitespaceDetectionLevels.Off) {\r\n\t\t\tszText = szText.replace(/\\s/g, '');\r\n\t\t}\r\n\r\n\t\t// Return the updated text.\r\n\t\treturn szText;\r\n\t};\r\n\r\n\t// Add the Text Compare Equivalents object to the window.\r\n\twindow.TextCompareEquivalents = TextCompareEquivalents;\r\n}());"]}