{"version":3,"sources":["../js/GreenlightEventMessages.js"],"names":["g_oEventMessages","EventMessages","this","g_oEventMessageTypes","SaveActiveAnnotations","ChangeApprovalView","g_oEventDomains","prototype","setupEventMessages","szEventDomains","setupEventMessageDomains","length","window","addEventListener","evt","processEventMessage","attachEvent","oSplitDomains","split","i","trim","push","displayEventMessageError","szErrorMessage","szEventType","g_oGreenlightMessages","displayErrorBubble","c_szEventMessageError","event","origin","checkEventDomain","oEventData","getEventData","data","type","saveActiveAnnotations","changeApprovalView","c_szEventMessageUnknown","sendReturnEvent","c_szEventMessageUnauthorised","szDomain","indexOf","szData","JSON","parse","err","postMessage","stringify","$","is","click","trigger","g_oAnnotations","g_oAnnotationsMade","id","remove","splice","iApprovalId","parseInt","undefined","c_szEventMessageInvalidId","toString","iMatchingViewIndex","g_oMultiView","getIndexForApprovalId","Change","c_szEventMessageNoViewFound","c_szEventMessageNotMultiView"],"mappings":"AAcA,IAAIA,iBAAmB,IAEtB,WACA,aASA,SAASC,gBAKRC,KAAKC,qBAAuB,CAC3BC,sBAAuB,kBACvBC,mBAAoB,sBAMrBH,KAAKI,gBAAkB,GAMxBL,cAAcM,UAAUC,mBAAqB,SAAUC,gBAGtDT,iBAAiBU,yBAAyBD,gBAGK,GAA3CT,iBAAiBM,gBAAgBK,SAKjCC,OAAOC,iBAEVD,OAAOC,iBAAiB,UAAW,SAAUC,KAC5Cd,iBAAiBe,oBAAoBD,OACnC,GAIHF,OAAOI,YAAY,YAAa,SAAUF,KACzCd,iBAAiBe,oBAAoBD,SASxCb,cAAcM,UAAUG,yBAA2B,SAAUD,gBAM5D,IAHA,IAAIQ,cAAgBR,eAAeS,MAAM,KAGhCC,EAAI,EAAGA,EAAIF,cAAcN,OAAQQ,IACJ,EAAjCF,cAAcE,GAAGC,OAAOT,QAC3BX,iBAAiBM,gBAAgBe,KAAKJ,cAAcE,GAAGC,SAU1DnB,cAAcM,UAAUe,yBAA2B,SAAUC,eAAgBC,aAC5EC,sBAAsBC,mBAAmB1B,iBAAiB2B,sBAAwB,KAAsB,MAAfH,YAAsB,KAAOA,YAAc,KAAO,IAAMD,iBAOlJtB,cAAcM,UAAUQ,oBAAsB,SAAUa,OAGvD,GAAIA,MAAMC,QAAUjB,OAAOiB,OAK3B,GAAK7B,iBAAiB8B,iBAAiBF,MAAMC,QAA7C,CAMA,IAAIE,WAAa/B,iBAAiBgC,aAAaJ,MAAMK,MAOrD,OAHAF,WAAoB,SAAI,EAGhBA,WAAWG,MAGlB,KAAKlC,iBAAiBG,qBAAqBC,sBAC1CJ,iBAAiBmC,sBAAsBJ,YACvC,MAGD,KAAK/B,iBAAiBG,qBAAqBE,mBAC1CL,iBAAiBoC,mBAAmBL,YACpC,MAGD,QACC/B,iBAAiBsB,yBAAyBtB,iBAAiBqC,wBAAyBN,WAAWG,MAKjGlC,iBAAiBsC,gBAAgBP,iBA/BhC/B,iBAAiBsB,yBAAyBtB,iBAAiBuC,6BAA8B,OAsC3FtC,cAAcM,UAAUuB,iBAAmB,SAAUU,UAGpD,IAAK,IAAIrB,EAAI,EAAGA,EAAInB,iBAAiBM,gBAAgBK,OAAQQ,IAC5D,IAA6H,IAAzHqB,SAASC,QAAQzC,iBAAiBM,gBAAgBa,GAAIqB,SAAS7B,OAASX,iBAAiBM,gBAAgBa,GAAGR,QAG/G,OAAO,EAKT,OAAO,GAQRV,cAAcM,UAAUyB,aAAe,SAAUU,QAGhD,IAAIX,WAAa,GAGjB,GAAkB,mBAAdH,MAAMK,KACT,MAAO,CAAEC,KAAM,mBAIhB,IACCH,WAAaY,KAAKC,MAAMF,QAEzB,MAAOG,KACNd,WAAa,GAId,OAAOA,YAOR9B,cAAcM,UAAU+B,gBAAkB,SAAUP,YACnDnB,OAAOkC,YAAYH,KAAKI,UAAUhB,YAAanB,OAAOiB,SAMvD5B,cAAcM,UAAU4B,sBAAwB,SAAUJ,YAGrDiB,EAAE,qBAAqBC,GAAG,aAC7BD,EAAE,0BAA0BE,QAI7BF,EAAE,qBAAqBG,QAAQ,eAG/BpB,WAAoB,SAAI,GAOzB9B,cAAcM,UAAU6B,mBAAqB,SAAUL,YAGtD/B,iBAAiBmC,sBAAsB,IAGvC,IAAK,IAAIhB,EAAI,EAAGA,EAAIiC,eAAeC,mBAAmB1C,OAAQQ,IACzDiC,eAAeC,mBAAmBlC,GAAGmC,GAAK,IAC7CN,EAAE,IAAMI,eAAeC,mBAAmBlC,GAAGmC,IAAIC,SACjDH,eAAeC,mBAAmBG,OAAOrC,EAAG,GAC5CA,KAKF,IAAIsC,YAAcC,SAAS3B,WAAWuB,MAAQ,EAG9C,GAAmBK,MAAfF,aAA2C,MAAfA,aAAuBA,YAAc,EACpEzD,iBAAiBsB,yBAAyBtB,iBAAiB4D,0BAA4B,IAAMH,YAAYI,WAAY7D,iBAAiBG,qBAAqBE,yBAK5J,GAA6B,oBAAlB,aAAX,CAMA,IAAIyD,mBAAqBC,aAAaC,sBAAsBP,cAGjC,GAAvBK,oBAMJC,aAAaE,OAAOH,oBAGpB/B,WAAoB,SAAI,GARvB/B,iBAAiBsB,yBAAyBtB,iBAAiBkE,4BAA8B,IAAMT,YAAazD,iBAAiBG,qBAAqBE,yBATlJL,iBAAiBsB,yBAAyBtB,iBAAiBmE,6BAA8BnE,iBAAiBG,qBAAqBE,qBAqBjIO,OAAOX,cAAgBA,cAxPxB","file":"GreenlightEventMessages-9a44c20135.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 2017 SGS Europe.\r\n* Any unauthorised use, reproduction, or transfer of this program is strictly\r\n* prohibited.\r\n*\r\n* File Name: GreenlightEventMessages.js\r\n*\r\n* Description: Contains the code for the Greenlight Message Events.\r\n*\r\n*/\r\n\r\n// The event messages object.\r\nvar g_oEventMessages = {};\r\n\r\n(function () {\r\n\t\"use strict\";\r\n\r\n\t/*\r\n\t * Event Data is passed in and returned in the following format:\r\n\t * { type: \"typeValue\", id: \"idValue\", response: false }\r\n\t * Type - Mandatory String - The event message type.\r\n\t * Id - Optional String - The id to be used by the event.\r\n\t * Success - Response Boolean - Set and returned based on the result.\r\n\t */\r\n\tfunction EventMessages() {\r\n\r\n\t\t/**\r\n\t\t * The supported event message types.\r\n\t\t */\r\n\t\tthis.g_oEventMessageTypes = {\r\n\t\t\tSaveActiveAnnotations: \"saveactiveannot\",\r\n\t\t\tChangeApprovalView: \"changeapprovalview\"\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * The event domains to be populated on setup.\r\n\t\t */\r\n\t\tthis.g_oEventDomains = [];\r\n\t};\r\n\r\n\t/**\r\n\t * Sets up the event messages for the session.\r\n\t */\r\n\tEventMessages.prototype.setupEventMessages = function (szEventDomains) {\r\n\t\t\r\n\t\t// Setup the event domains.\r\n\t\tg_oEventMessages.setupEventMessageDomains(szEventDomains);\r\n\r\n\t\t// Ensure we have event domains.\r\n\t\tif (g_oEventMessages.g_oEventDomains.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Add an event lister so that external pages can send post messages to Greenlight to execute particular actions.\r\n\t\tif (window.addEventListener) {\r\n\t\t\t// For standards-compliant web browsers.\r\n\t\t\twindow.addEventListener(\"message\", function (evt) {\r\n\t\t\t\tg_oEventMessages.processEventMessage(evt);\r\n\t\t\t}, false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// For non-standards-compliant web browsers.\r\n\t\t\twindow.attachEvent(\"onmessage\", function (evt) {\r\n\t\t\t\tg_oEventMessages.processEventMessage(evt);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Sets up the event message domains.\r\n\t * @param {string} szEventDomains - The event domains list.\r\n\t */\r\n\tEventMessages.prototype.setupEventMessageDomains = function (szEventDomains) {\r\n\r\n\t\t// Split the domains.\r\n\t\tvar oSplitDomains = szEventDomains.split(\",\");\r\n\r\n\t\t// Add each of the split domains.\r\n\t\tfor (var i = 0; i < oSplitDomains.length; i++) {\r\n\t\t\tif (oSplitDomains[i].trim().length > 0) {\r\n\t\t\t\tg_oEventMessages.g_oEventDomains.push(oSplitDomains[i].trim());\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Displays an event message error.\r\n\t * @param {string} szErrorMessage - The error message.\r\n\t * @param {string} szEventType - The optional event type.\r\n\t */\r\n\tEventMessages.prototype.displayEventMessageError = function (szErrorMessage, szEventType) {\r\n\t\tg_oGreenlightMessages.displayErrorBubble(g_oEventMessages.c_szEventMessageError + \" \" + (szEventType != null ? \" (\" + szEventType + \") \" : \"\") + szErrorMessage);\r\n\t};\r\n\r\n\t/**\r\n\t * Processes an event message.\r\n\t * @param {object} event - The event to be processed.\r\n\t */\r\n\tEventMessages.prototype.processEventMessage = function (event) {\r\n\t\t\r\n\t\t// Ignore messages from internal domains.\r\n\t\tif (event.origin == window.origin) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ensure the domain is valid.\r\n\t\tif (!g_oEventMessages.checkEventDomain(event.origin)) {\r\n\t\t\tg_oEventMessages.displayEventMessageError(g_oEventMessages.c_szEventMessageUnauthorised, null);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Extract the event data.\r\n\t\tvar oEventData = g_oEventMessages.getEventData(event.data);\r\n\r\n\t\t// Start the event as unsuccessful.\r\n\t\t// This is set to successful during the below actions once performed.\r\n\t\toEventData[\"success\"] = false;\r\n\r\n\t\t// Determine the event to process.\r\n\t\tswitch (oEventData.type) {\r\n\r\n\t\t\t// Saving active annotations.\r\n\t\t\tcase g_oEventMessages.g_oEventMessageTypes.SaveActiveAnnotations:\r\n\t\t\t\tg_oEventMessages.saveActiveAnnotations(oEventData);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Changing the approval view.\r\n\t\t\tcase g_oEventMessages.g_oEventMessageTypes.ChangeApprovalView:\r\n\t\t\t\tg_oEventMessages.changeApprovalView(oEventData);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Unknown message type.\r\n\t\t\tdefault:\r\n\t\t\t\tg_oEventMessages.displayEventMessageError(g_oEventMessages.c_szEventMessageUnknown, oEventData.type);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t// Send the return event.\r\n\t\tg_oEventMessages.sendReturnEvent(oEventData);\r\n\t};\r\n\r\n\t/**\r\n\t * Checks the event domain to ensure it is valid.\r\n\t * @param {string} szDomain - The domain to be checked.\r\n\t */\r\n\tEventMessages.prototype.checkEventDomain = function (szDomain) {\r\n\r\n\t\t// Check the domain against each of the event domains.\r\n\t\tfor (var i = 0; i < g_oEventMessages.g_oEventDomains.length; i++) {\r\n\t\t\tif (szDomain.indexOf(g_oEventMessages.g_oEventDomains[i], szDomain.length - g_oEventMessages.g_oEventDomains[i].length) !== -1) {\r\n\r\n\t\t\t\t// Return the domain is valid.\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Return the domain is invalid.\r\n\t\treturn false;\r\n\t};\r\n\r\n\t/**\r\n\t * Gets the event data.\r\n\t * @param {string} szData - The event data.\r\n\t * @returns {object} - Parsed event data.\r\n\t */\r\n\tEventMessages.prototype.getEventData = function (szData) {\r\n\r\n\t\t// Outline the event data to be returned.\r\n\t\tvar oEventData = {};\r\n\r\n\t\t// Add backwards compatibility for the original \"saveactiveannot\" format.\r\n\t\tif (event.data == \"saveactiveannot\") {\r\n\t\t\treturn { type: \"saveactiveannot\" };\r\n\t\t}\r\n\r\n\t\t// Parse the event data.\r\n\t\ttry {\r\n\t\t\toEventData = JSON.parse(szData);\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\toEventData = {};\r\n\t\t}\r\n\r\n\t\t// Return the event data.\r\n\t\treturn oEventData;\r\n\t};\r\n\r\n\t/**\r\n\t * Send the return event message.\r\n\t * @param {object} oEventData - The event data.\r\n\t */\r\n\tEventMessages.prototype.sendReturnEvent = function (oEventData) {\r\n\t\twindow.postMessage(JSON.stringify(oEventData), window.origin);\r\n\t};\r\n\r\n\t/**\r\n\t * Performs the action to save active annotations.\r\n\t */\r\n\tEventMessages.prototype.saveActiveAnnotations = function (oEventData) {\r\n\t\t\r\n\t\t// If the attachment window is open, close this.\r\n\t\tif ($(\"#divUploadOverlay\").is(\":visible\")) {\r\n\t\t\t$(\"#divCloseUploadOverlay\").click();\r\n\t\t}\r\n\r\n\t\t// Simulate the user clicking onto the canvas to trigger the annotation save.\r\n\t\t$(\"#AnnotationViewer\").trigger(\"pointerdown\");\r\n\r\n\t\t// Set that the event has been successful.\r\n\t\toEventData[\"success\"] = true;\r\n\t};\r\n\r\n\t/**\r\n\t * Changes the approval view.\r\n\t * @param {string} oEventData - The event data.\r\n\t */\r\n\tEventMessages.prototype.changeApprovalView = function (oEventData) {\r\n\t\t\r\n\t\t// Save any annotations that are open.\r\n\t\tg_oEventMessages.saveActiveAnnotations({});\r\n\r\n\t\t// Clear out any new annotations that have now been saved so we do not try to delete these on the document change event.\r\n\t\tfor (var i = 0; i < g_oAnnotations.g_oAnnotationsMade.length; i++) {\r\n\t\t\tif (g_oAnnotations.g_oAnnotationsMade[i].id < 0) {\r\n\t\t\t\t$(\"#\" + g_oAnnotations.g_oAnnotationsMade[i].id).remove();\r\n\t\t\t\tg_oAnnotations.g_oAnnotationsMade.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Parse the approval id.\r\n\t\tvar iApprovalId = parseInt(oEventData.id) || -1;\r\n\r\n\t\t// Ensure we have parsed the approval id.\r\n\t\tif (iApprovalId == undefined || iApprovalId == null || iApprovalId < 0) {\r\n\t\t\tg_oEventMessages.displayEventMessageError(g_oEventMessages.c_szEventMessageInvalidId + \" \" + iApprovalId.toString(), g_oEventMessages.g_oEventMessageTypes.ChangeApprovalView);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Ensure we are not in a multi view.\r\n\t\tif (typeof (g_oMultiView) == \"undefined\") {\r\n\t\t\tg_oEventMessages.displayEventMessageError(g_oEventMessages.c_szEventMessageNotMultiView, g_oEventMessages.g_oEventMessageTypes.ChangeApprovalView);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get the view index for the matching approval id.\r\n\t\tvar iMatchingViewIndex = g_oMultiView.getIndexForApprovalId(iApprovalId);\r\n\r\n\t\t// Ensure we have found a matching index.\r\n\t\tif (iMatchingViewIndex == -1) {\r\n\t\t\tg_oEventMessages.displayEventMessageError(g_oEventMessages.c_szEventMessageNoViewFound + \" \" + iApprovalId, g_oEventMessages.g_oEventMessageTypes.ChangeApprovalView);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Change the view.\r\n\t\tg_oMultiView.Change(iMatchingViewIndex);\r\n\r\n\t\t// Set that the event has been successful.\r\n\t\toEventData[\"success\"] = true;\r\n\t};\r\n\r\n\t// Add the Text Tools UI object to the window.\r\n\twindow.EventMessages = EventMessages;\r\n}());"]}