{"version":3,"file":"dictionary.min.js","sources":["https:\/\/mecp.distanceed.org\/theme\/remui\/amd\/src\/dictionary.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/**\n * @module theme_remui\/dictionary\n * @copyright (c) 2023 WisdmLabs (https:\/\/wisdmlabs.com\/)\n * @license http:\/\/www.gnu.org\/copyleft\/gpl.html GNU GPL v3 or later\n *\/\n\n'use strict';\ndefine(['jquery', 'core\/notification'], function($, Notification) {\n \/**\n * Function getSelected data will give the selected text\n * @return {String} Selection string\n *\/\n function getSelectedText() {\n if (window.getSelection) {\n return window.getSelection().toString();\n } else if (document.selection) {\n return document.selection.createRange().text;\n }\n return '';\n }\n\n \/**\n * Ajax to fetch the word meaning\n * @param {Number} x screen x cordinate\n * @param {Number} y screen y cordinate\n * @param {String} token token name\n * @param {String} search Search query\n *\/\n function getWord(x, y, token, search) {\n var searchword = token + '=' + search;\n var url = \"https:\/\/api.pearson.com\/v2\/dictionaries\/entries?\" + searchword;\n var settings = {\n \"async\": true,\n \"crossDomain\": true,\n \"url\": url,\n \"method\": \"GET\",\n \"success\": function(response) {\n\n if (response !== '' && response !== null) {\n $(\"#dictionarypopup\").remove();\n\n var meaning = 'No definition found.';\n var i = 0;\n for (i = 0; i < response.results.length; i++) {\n if (response.results[i].senses[0].definition !== null) {\n meaning = response.results[i].senses[0].definition;\n break;\n }\n }\n var data = \"
\";\n data += '
<\/div>';\n data += '

' + search + '<\/h3>';\n data += '

' + meaning + '<\/p><\/div><\/div>';\n data += '<\/div>';\n $(\"body\").append(data);\n\n }\n },\n \"failure\": Notification.exception\n };\n $.ajax(settings);\n }\n\n \/**\n * Get location of selected text\n * @return {Object} Mouse click cordinates\n *\/\n function getSelectionCoords() {\n var doc = window.document;\n var sel = doc.selection,\n range, rects, rect;\n var x = 0,\n y = 0;\n if (sel) {\n if (sel.toString().trim() == \"\" || sel.toString().trim() == \"undefined\") {\n return false;\n }\n if (sel.type != \"Control\" && sel.toString != \"\") {\n range = sel.createRange();\n range.collapse(true);\n x = range.boundingLeft;\n y = range.boundingTop;\n }\n } else if (window.getSelection) {\n sel = window.getSelection();\n if (sel.toString().trim() == \"\" || sel.toString().trim() == \"undefined\") {\n return false;\n }\n if (sel.rangeCount && sel.toString() != \"\") {\n range = sel.getRangeAt(0).cloneRange();\n if (range.getClientRects) {\n range.collapse(true);\n rects = range.getClientRects();\n if (rects.length > 0) {\n rect = rects[0];\n }\n x = rect.left;\n y = rect.top;\n }\n \/\/ Fall back to inserting a temporary element.\n if (x == 0 && y == 0) {\n var span = doc.createElement(\"span\");\n if (span.getClientRects) {\n \/\/ Ensure span has dimensions and position by adding a zero-width space character.\n span.appendChild(doc.createTextNode(\"\\u200b\"));\n range.insertNode(span);\n rect = span.getClientRects()[0];\n x = rect.left;\n y = rect.top;\n var spanParent = span.parentNode;\n spanParent.removeChild(span);\n\n \/\/ Glue any broken text nodes back together.\n spanParent.normalize();\n }\n }\n }\n }\n return {\n x: x,\n y: y\n };\n }\n\n \/**\n * Initialise events\n *\/\n function initialise() {\n \/\/ Event trigger for text selection.\n $('body').mouseup(function() {\n var search = getSelectedText();\n if (search.trim() == \"\") {\n return;\n }\n var obj = getSelectionCoords();\n if (obj.x != 'undefined' && obj.y != 'undefined') {\n \/\/ Old code var x = obj.x-152; end.\n var x = obj.x;\n x += 'px';\n \/\/ Old code var y = obj.y+12; end.\n var y = obj.y + 17;\n y += 'px';\n getWord(x, y, 'headword', search);\n }\n });\n\n \/\/ Close the Tooltip Event.\n $(window).scroll(function() {\n $(\"#dictionarypopup\").remove();\n });\n\n $('body').click(function() {\n $(\"#dictionarypopup\").remove();\n });\n }\n\n return {\n init: initialise\n };\n});\n"],"names":["define","$","Notification","init","mouseup","search","window","getSelection","toString","document","selection","createRange","text","trim","obj","range","rects","rect","doc","sel","x","y","type","collapse","boundingLeft","boundingTop","rangeCount","getRangeAt","cloneRange","getClientRects","length","left","top","span","createElement","appendChild","createTextNode","insertNode","spanParent","parentNode","removeChild","normalize","getSelectionCoords","token","settings","response","remove","meaning","i","results","senses","definition","data","append","exception","ajax","getWord","scroll","click"],"mappings":";;;;;AAsBAA,gCAAO,CAAC,SAAU,sBAAsB,SAASC,EAAGC,oBAsJzC,CACHC,gBA5BAF,EAAE,QAAQG,SAAQ,eACVC,OAtHJC,OAAOC,aACAD,OAAOC,eAAeC,WACtBC,SAASC,UACTD,SAASC,UAAUC,cAAcC,KAErC,MAkHkB,IAAjBP,OAAOQ,YAGPC,mBAhEJC,MAAOC,MAAOC,KAFdC,IAAMZ,OAAOG,SACbU,IAAMD,IAAIR,UAEVU,EAAI,EACJC,EAAI,KACJF,IAAK,IACwB,IAAzBA,IAAIX,WAAWK,QAAyC,aAAzBM,IAAIX,WAAWK,cACvC,EAEK,WAAZM,IAAIG,MAAqC,IAAhBH,IAAIX,YAC7BO,MAAQI,IAAIR,eACNY,UAAS,GACfH,EAAIL,MAAMS,aACVH,EAAIN,MAAMU,kBAEX,GAAInB,OAAOC,aAAc,IAEC,KAD7BY,IAAMb,OAAOC,gBACLC,WAAWK,QAAyC,aAAzBM,IAAIX,WAAWK,cACvC,KAEPM,IAAIO,YAAgC,IAAlBP,IAAIX,cACtBO,MAAQI,IAAIQ,WAAW,GAAGC,cAChBC,iBACNd,MAAMQ,UAAS,IACfP,MAAQD,MAAMc,kBACJC,OAAS,IACfb,KAAOD,MAAM,IAEjBI,EAAIH,KAAKc,KACTV,EAAIJ,KAAKe,KAGJ,GAALZ,GAAe,GAALC,GAAQ,KACdY,KAAOf,IAAIgB,cAAc,WACzBD,KAAKJ,eAAgB,CAErBI,KAAKE,YAAYjB,IAAIkB,eAAe,MACpCrB,MAAMsB,WAAWJ,MAEjBb,GADAH,KAAOgB,KAAKJ,iBAAiB,IACpBE,KACTV,EAAIJ,KAAKe,QACLM,WAAaL,KAAKM,WACtBD,WAAWE,YAAYP,MAGvBK,WAAWG,oBAKpB,CACHrB,EAAGA,EACHC,EAAGA,GAcOqB,MACG,aAAT5B,IAAIM,GAA6B,aAATN,IAAIO,EAAkB,KAE1CD,EAAIN,IAAIM,EACZA,GAAK,SAEDC,EAAIP,IAAIO,EAAI,aAjHXD,EAAGC,EAAGsB,MAAOtC,YAGtBuC,SAAW,QACF,eACM,MAHT,mDADOD,MAAQ,IAAMtC,cAMjB,cACC,SAASwC,aAEC,KAAbA,UAAgC,OAAbA,SAAmB,CACtC5C,EAAE,oBAAoB6C,aAElBC,QAAU,uBACVC,EAAI,MACHA,EAAI,EAAGA,EAAIH,SAASI,QAAQnB,OAAQkB,OACY,OAA7CH,SAASI,QAAQD,GAAGE,OAAO,GAAGC,WAAqB,CACnDJ,QAAUF,SAASI,QAAQD,GAAGE,OAAO,GAAGC,qBAI5CC,KAAO,wEAA0EhC,EACrF,QAAUC,EAAI,mBACd+B,MAAQ,oEACRA,MAAQ,8BAAgC\/C,OAAS,QACjD+C,MAAQ,gCAAkCL,QAAU,mBACpDK,MAAQ,SACRnD,EAAE,QAAQoD,OAAOD,gBAIdlD,aAAaoD,WAE5BrD,EAAEsD,KAAKX,WAkFCY,CAAQpC,EADRC,GAAK,KACS,WAAYhB,aAKlCJ,EAAEK,QAAQmD,QAAO,WACbxD,EAAE,oBAAoB6C,YAG1B7C,EAAE,QAAQyD,OAAM,WACZzD,EAAE,oBAAoB6C"}