aircall-everywhere
Version:
Library to embed and communicate with aircall-workspace in any webpage
2 lines • 6.65 kB
JavaScript
module.exports=function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}n.r(t);var a=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{debug:!0};o(this,e),this.workspaceWindow=null,this.integrationSettings={},this.path=null,this.userSettings={},this.eventsRegistered={},this.workspaceLoginState=!1;var r=/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi;this.workspaceUrl=void 0!==n.workspaceUrl&&!0===r.test(n.workspaceUrl)?n.workspaceUrl:"https://workspace.aircall.io",this.domToLoadWorkspace=n.domToLoadWorkspace,this.integrationToLoad=n.integrationToLoad,this.path=n.path,this.debug=n.debug,this.size=n.size||"big",this.onLogin=function(){if("function"==typeof n.onLogin&&!1===t.workspaceLoginState){t.workspaceLoginState=!0;var e={user:t.userSettings};Object.keys(t.integrationSettings).length>0&&(e.settings=t.integrationSettings),n.onLogin(e)}},this.onLogout=function(){"function"==typeof n.onLogout&&n.onLogout()},this.w=n.window||window,this._messageListener(),this.domToLoadWorkspace&&this._createWorkspaceIframe()}var t,n,a;return t=e,(n=[{key:"_resetData",value:function(){this.workspaceWindow=null,this.path=null,this.integrationSettings={},this.userSettings={},this.workspaceLoginState=!1}},{key:"_createWorkspaceIframe",value:function(){var e="";switch(this.size){case"big":e="height:666px; width:376px;";break;case"small":e="height:600px; width:376px;";break;case"auto":e="height:100%; width:100%;"}try{document.querySelector(this.domToLoadWorkspace).innerHTML='<iframe allow="microphone; autoplay; clipboard-read; clipboard-write; hid" src="'.concat(this.getUrlToLoad(),'" style="').concat(e,'"></iframe>')}catch(e){this._log("error","[AircallEverywhere] [iframe creation] ".concat(this.domToLoadWorkspace," not be found. Error:"),e)}}},{key:"_messageListener",value:function(){var e=this;this.w.addEventListener("message",(function(t){if(e._log("info","[AircallEverywhere] [event listener] received event",t),!t.data||!t.data.name||!/^apm_phone_/.test(t.data.name))return!1;if("apm_phone_loaded"!==t.data.name){if("apm_phone_integration_settings"===t.data.name&&t.data.value)return e.integrationSettings=t.data.value,void e.onLogin();if("apm_phone_logout"===t.data.name)return e._resetData(),void e.onLogout();for(var n in e.eventsRegistered)t.data.name==="apm_phone_".concat(n)&&e.eventsRegistered[n](t.data.value)}else e._handleInitMessage(t)}),!1)}},{key:"_handleInitMessage",value:function(e){this.workspaceWindow={source:e.source,origin:e.origin},e.data.value&&(this.userSettings=e.data.value),this.workspaceWindow.source.postMessage({name:"apm_app_isready",path:this.path},this.workspaceWindow.origin),this.integrationToLoad?this.workspaceWindow.source.postMessage({name:"apm_app_get_settings",value:this.integrationToLoad},this.workspaceWindow.origin):this.onLogin()}},{key:"_log",value:function(e){var t,n;if("string"!=typeof e)throw new Error("[AircallEverywhere] [_log] Must provide valid console action");if(this.debug){for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];console[e]?(t=console)[e].apply(t,r):(n=console).info.apply(n,r)}}},{key:"getUrlToLoad",value:function(){return"".concat(this.workspaceUrl,"?integration=generic")}},{key:"on",value:function(e,t){if(!e||"function"!=typeof t)throw new Error("[AircallEverywhere] [on function] Invalid parameters format. Expected non empty string and function");this.eventsRegistered[e]=t}},{key:"_handleSendError",value:function(e,t){if(e&&e.code||(e={code:"unknown_error"}),e&&!e.message)switch(e.code){case"unknown_error":e.message="Unknown error. Contact aircall developers dev@aircall.io";break;case"no_event_name":e.message="Invalid parameter eventName. Expected an non empty string";break;case"not_ready":e.message='Aircall Workspace has not been identified yet or is not ready. Wait for "onLogin" callback';break;case"no_answer":e.message="No answer from the workspace. Check if the workspace is logged in";break;case"invalid_response":e.message="Invalid response from the workspace. Contact aircall developers dev@aircall.io";break;default:e.message="Generic error message"}this._log("error","[AircallEverywhere] [send function] ".concat(e.message)),"function"==typeof t&&t(!1,e)}},{key:"send",value:function(e,t,n){var o=this;if("function"!=typeof t||n||(n=t,t=void 0),!e)return this._handleSendError({code:"no_event_name"},n),!1;if(!this.workspaceWindow||!this.workspaceWindow.source)return this._handleSendError({code:"not_ready"},n),!1;var r=null;this.workspaceWindow.source.postMessage({name:"apm_app_".concat(e),value:t},this.workspaceWindow.origin),this.on("".concat(e,"_response"),(function(t){o.removeListener("".concat(e,"_response")),clearTimeout(r),t&&!1===t.success?o._handleSendError({code:t.errorCode,message:t.errorMessage},n):t&&!0===t.success?"function"==typeof n&&n(!0,t.data):o._handleSendError({code:"invalid_response"},n)})),r=setTimeout((function(){o.removeListener("".concat(e,"_response")),o._handleSendError({code:"no_answer"},n)}),2e3)}},{key:"removeListener",value:function(e){var t=this;return!!this.eventsRegistered[e]&&(Object.keys(this.eventsRegistered).filter((function(t){return t===e})).forEach((function(e){return delete t.eventsRegistered[e]})),!0)}},{key:"isLoggedIn",value:function(e){this.send("is_logged_in",(function(t,n){e(t,n)}))}}])&&r(t.prototype,n),a&&r(t,a),e}();t.default=a}]);
//# sourceMappingURL=index.js.map