Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
5 lines
No EOL
1.8 KiB
JavaScript
5 lines
No EOL
1.8 KiB
JavaScript
|
|
(function(exports){'use strict';var ActivityHandler={_readyPromise:null,_targetPanelId:null,_targetPanelOptions:null,_currentActivity:null,_handlers:{'configure':function ah_configureHandler(activitySource){var targetPanelId=activitySource.data.section||'root';var targetPanel=document.getElementById(targetPanelId);if(!targetPanel||targetPanel.tagName!=='SECTION'){var msg='Trying to open an non-existent section: '+targetPanelId;console.warn(msg);targetPanelId='root';targetPanel=document.getElementById(targetPanelId);}
|
|
switch(targetPanelId){case'root':document.body.dataset.filterBy=activitySource.data.filterBy||'all';break;default:targetPanel.dataset.dialog=true;break;}
|
|
return{targetPanelId:targetPanelId,options:activitySource.data.options};}},_handleActivity:function ah_handler(activitySource){var handle=this._handlers[activitySource.name];if(handle){var{targetPanelId,options}=handle(activitySource);this._targetPanelId=targetPanelId;this._targetPanelOptions=options;}},_registerListener:function ah_registerListener(){document.addEventListener('visibilitychange',function change(){if(document.hidden){document.removeEventListener('visibilitychange',change);if(this._currentActivity){this._currentActivity.postResult(null);}}}.bind(this));},get targetPanelId(){return this._targetPanelId;},get targetPanelOptions(){return this._targetPanelOptions;},ready:function ah_ready(){if(!this._readyPromise){this._readyPromise=new Promise((resolve)=>{navigator.mozSetMessageHandler('activity',(activity)=>{this._currentActivity=activity;this._handleActivity(this._currentActivity.source);this._registerListener();resolve();});});}
|
|
return this._readyPromise;},postResult:function ah_postResult(result){return this.ready().then(()=>{if(this._currentActivity){this._currentActivity.postResult(result);}});}};exports.ActivityHandler=ActivityHandler;})(window); |