UNPKG

@ncp-web/portal-communication

Version:

portal 通讯工具

2 lines (1 loc) 2.98 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(){if(!window.origin){var n=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");window.origin=n}}();var PortalAction,n=function(){function n(){this._observerList=[]}return n.prototype.subscribe=function(n){var e=this,o=this._observerList.push(n)-1;return{unsubscribe:function(){e._observerList.splice(o,1)}}},n.prototype.dispatch=function(n){var e=this._observerList.values(),o=function(){var t=e.next();try{for(;!t.done;)t.value(n),t=e.next()}catch(n){console.warn("执行失败:"+n+":\n"+t.value.toString()),o()}};o()},n}(),i={},o=function(e){i[e]=new n},t=function(n){i.hasOwnProperty(n)&&delete i[n]},e=[],r={add:function(n){return-1===e.indexOf(n)&&(e.push(n),o(n)),n},delete:function(n){var o=e.indexOf(n);-1!==o&&(e.splice(o,1),t(n))}},s={sendToParent:function(n,e){e=e||window.origin,window.parent.postMessage(n,e)},sendMessage:function(n,e){e=e||window.origin,window.postMessage(n,e)},sendToAll:function(n){window.postMessage(n,"*")}},a={init:function(){window.addEventListener("message",(function(n){var e=n.data?n.data.type:"";e&&i.hasOwnProperty(e)&&(n.data.origin=n.origin,i[e].dispatch(n.data))}))},initWithOrigin:function(n){window.addEventListener("message",(function(e){var o=e.data?e.data.type:"";e.origin===n&&o&&i.hasOwnProperty(o)&&i[o].dispatch(e.data)}))},listenMessage:function(n,e){return i[e]?i[e].subscribe(n):(console.error("未实现对"+e+"类型的消息监听"),{unsubscribe:function(){console.error("未实现对"+e+"类型的消息监听")}})}};!function(n){n.info="info",n.warn="warn",n.error="error",n.sessionTimeout="sessionTimeout",n.openMenu="openMenu",n.message="message"}(PortalAction||(PortalAction={})),a.init();var portalMessageReceive={onShowInfo:function(n){return a.listenMessage(n,r.add(PortalAction.info))},onShowError:function(n){return a.listenMessage(n,r.add(PortalAction.error))},onShowWarn:function(n){return a.listenMessage(n,r.add(PortalAction.warn))},onSessionTimeout:function(n){return a.listenMessage(n,r.add(PortalAction.sessionTimeout))},onOpenMenu:function(n){return a.listenMessage(n,r.add(PortalAction.openMenu))},onMessage:function(n){return a.listenMessage(n,r.add(PortalAction.message))}},_domain=window.origin,ShowMessage=function(n,e,o){s.sendToParent({message:n,type:e},o||_domain)},SendObject=function(n,e,o){s.sendToParent({data:n,type:e},o||_domain)},portalMessageSend={parent:{set domain(n){_domain=n}},showInfo:function(n,e){ShowMessage(n,PortalAction.info,e)},showWarn:function(n,e){ShowMessage(n,PortalAction.warn,e)},showError:function(n,e){ShowMessage(n,PortalAction.error,e)},notifySessionTimeout:function(n,e){ShowMessage(n,PortalAction.sessionTimeout,e)},openMenu:function(n,e){SendObject(n,PortalAction.openMenu,e)},message:function(n,e){SendObject(n,PortalAction.message,e)}};exports.portalMessageReceive=portalMessageReceive,exports.portalMessageSend=portalMessageSend;