UNPKG

kekule

Version:

Open source JavaScript toolkit for chemoinformatics

1 lines 4.41 kB
!function(e){"use strict";var t=Kekule.$jsRoot||e||{},o=Kekule.EmscriptenUtils,n={usingModulaize:!0,moduleName:"IndigoModule",moduleInitEventName:"Indigo.Initialized",moduleInitCallbackName:"__$indigoInitialized$__",indigoAdaptFuncName:"CreateIndigo"};Kekule.Indigo={_autoEnabled:!0,_module:null,_indigo:null,SCRIPT_FILE:"indigo.js",HELPER_SCRIPT_FILE:"indigoAdapter.js",_enableFuncs:[],isScriptLoaded:function(){return o.isSupported(n.moduleName)&&void 0!==t[n.indigoAdaptFuncName]},getIndigoInitOptions:function(){return n},getModule:function(){return i._module||(i._module=o.getRootModule(n.moduleName,n)),i._module},setModule:function(e){i._module=e,o.setRootModule(n.moduleName,e)},getIndigo:function(){if(!i._indigo){var e=i.getModule();e&&(i._indigo=t[n.indigoAdaptFuncName](e))}return i._indigo},getClassCtor:function(e){return o.getClassCtor(e,i.getModule())},isAvailable:function(){return i.getModule()&&i.getIndigo()},enable:function(e){i.isScriptLoaded()?(i._enableAllFunctions(),e&&e()):i.loadIndigoScript(Kekule.$jsRoot.document,function(t){t||i._enableAllFunctions(),e&&e(t)})},_enableAllFunctions:function(){if(o.isModuleReady(n.moduleName))for(var e=i._enableFuncs,t=0,r=e.length;t<r;++t){var l=e[t];l&&l()}}},Kekule.Indigo.getIndigoPath=function(){var e=Kekule.environment.getEnvVar("indigo.path");e||(e=Kekule.isUsingMinJs()?"extra/":"_extras/Indigo/",e=Kekule.getScriptPath()+e);return e},Kekule.Indigo.getIndigoScriptUrl=function(){var e=Kekule.environment.getEnvVar("indigo.scriptSrc");e||(e=i.getIndigoPath()+i.SCRIPT_FILE,Kekule.isUsingMinJs()||(e+=".dev"));return e},Kekule.Indigo.getIndigoHelperScriptUrl=function(){return i.getIndigoPath()+i.HELPER_SCRIPT_FILE},Kekule.Indigo.loadIndigoScript=function(e,t){e||(e=Kekule.$jsRoot.document);var r=function(e){i._scriptLoadedBySelf=!e,e||Kekule.Indigo.getIndigo(),t&&t(e)};if(i._scriptLoadedBySelf||i.isScriptLoaded())r();else{var l=i.getIndigoScriptUrl();o.loadScript(l,function(t){t?r(t):Kekule.ScriptFileUtils.appendScriptFiles(e,[i.getIndigoHelperScriptUrl()],r)},e,n)}};var i=Kekule.Indigo;Kekule.Indigo.AdaptUtils={iMolToKekule:function(e){var t=i.getIndigo(),o=t.molfile(e);return t.free(e),Kekule.IO.loadFormatData(o,Kekule.IO.DataFormat.MOL)},kMolToIndigo:function(e){var t=i.getIndigo(),o=Kekule.IO.saveFormatData(e,Kekule.IO.DataFormat.MOL);return t.loadMoleculeFromString(o)}},Kekule._registerAfterLoadSysProc(function(){i._autoEnabled&&i.isScriptLoaded()&&o.ensureModuleReady(Kekule.$jsRoot.document,n,i._enableAllFunctions)})}(this),function(){"use strict";Kekule.EmscriptenUtils;var e=Kekule.Indigo;Kekule.IO.IndigoReader=Class.create(Kekule.IO.ChemDataReader,{CLASS_NAME:"Kekule.IO.IndigoReader",doReadData:function(t,o,n,i){var r=e.getIndigo(),l=r.loadMoleculeFromString(t);if(l>=0){if(n===Kekule.IO.DataFormat.SMILES){!i||i.autoLayout||Kekule.ObjUtils.isUnset(i.autoLayout);0}var u=r.molfile(l);return r.free(l),Kekule.IO.loadFormatData(u,Kekule.IO.DataFormat.MOL)}return null}}),Kekule.IO.registerAllIndigoFormats=function(){e.isAvailable()&&Kekule.IO.ChemDataReaderManager.register("Indigo-smiles",Kekule.IO.IndigoReader,Kekule.IO.DataFormat.SMILES)},Kekule.IO.enableIndigoFormats=function(){e.isAvailable()?Kekule.IO.registerAllIndigoFormats():e.loadIndigoScript(document,function(){Kekule.IO.registerAllIndigoFormats()})},e._enableFuncs.push(Kekule.IO.registerAllIndigoFormats)}(),function(){"use strict";var e=Kekule.Indigo;Kekule.Indigo.StructUtils={generate2DStructure:function(t,o,n){var i=e.getIndigo(),r=e.AdaptUtils.kMolToIndigo(t);return i.setOption("smart-layout","true"),i.layout(r),e.AdaptUtils.iMolToKekule(r)}},Kekule.Calculator&&(Kekule.Calculator.IndigoStructure2DGenerator=Class.create(Kekule.Calculator.AbstractStructureGenerator,{CLASS_NAME:"Kekule.Calculator.IndigoStructure2DGenerator",execute:function(e){var t,o;try{o=this.executeSync(e)}catch(e){t=e}t?(Kekule.error(t),this.error(t)):o&&(t?this.error(t):this.done())},doExecuteSync:function(e){if(Kekule.Indigo){var t=this;Kekule.Indigo.loadIndigoScript(null,function(){var o;try{var n=Kekule.Indigo.StructUtils.generate2DStructure(t.getSourceMol(),t.getOptions());t.setGeneratedMol(n)}catch(e){o=e}o||t.done(),e&&e(o)})}else Kekule.error(Kekule.$L("ErrorMsg.MODULE_NOT_LOADED").format("Indigo"));return!1}}),Kekule.Calculator.ServiceManager.register(Kekule.Calculator.Services.GEN2D,Kekule.Calculator.IndigoStructure2DGenerator,"indigo",0))}();