@xuda.io/runtime-bundle 1.0.1435 → 1.0.1437

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,7 @@ const get_ui_ids = function (SESSION_ID, event_prop) {
18
18
  if (event_prop.selector === '@_THIS') event_prop.selector = elementP;
19
19
  // var ui_ids = [];
20
20
  if (event_prop.selector_type == 'tree_id') {
21
- let $elm = func.UI.utils.find_in_element_data('xuData', func.runtime.ui.as_jquery(SESSION_OBJ[SESSION_ID].root_element), 'ui_id', event_prop.selector);
21
+ let $elm = func.UI.utils.find_in_element_data('xuData', func.runtime.ui._wrap_matches([SESSION_OBJ[SESSION_ID].root_element]), 'ui_id', event_prop.selector);
22
22
  return [
23
23
  {
24
24
  ui_id: event_prop.selector,
@@ -1 +1 @@
1
- const log_error=function(SESSION_ID,action,descP,detailsP,warning,prog_id){func.utils.debug.log(SESSION_ID,log_nodeId,{module:"event",action:action,source:"",prop:descP,details:detailsP,result:null,error:!warning,warning:warning,fields:null,type:"event",prog_id:prog_id})};const get_ui_ids=function(SESSION_ID,event_prop){if(event_prop.selector==="@_THIS")event_prop.selector=elementP;if(event_prop.selector_type=="tree_id"){let $elm=func.UI.utils.find_in_element_data("xuData",func.runtime.ui.as_jquery(SESSION_OBJ[SESSION_ID].root_element),"ui_id",event_prop.selector);return[{ui_id:event_prop.selector,tagName:func.runtime.ui.get_data($elm)?.xuData?.node.tagName}]}return Array.from(SESSION_OBJ[SESSION_ID].root_element.querySelectorAll(event_prop.selector)).map(function(val,key){return{ui_id:func.runtime.ui.get_data(val,"xuData")?.ui_id,tagName:func.runtime.ui.get_data(val,"xuData")?.node.tagName}})};const get_ui_id=async function(SESSION_ID,dsSession,event_prop,rowP){if(event_prop.selector==="@_THIS")event_prop.selector=elementP;return await func.expression.get(SESSION_ID,event_prop.selector,dsSession,"ui_id",rowP)};const set_info_value=async function(SESSION_ID,value,source,event_prop,resolve){var _session=SESSION_OBJ[SESSION_ID];if(!event_prop.field_return_value){log_error(SESSION_ID,source," Field cannot be empty");return}var fieldId=event_prop.field_return_value.substr(1);if(event_prop.field_return_value.substr(0,1)!=="@"){log_error(SESSION_ID,source,fieldId+" Field not valid");return}var fieldsChanged_arr=[];var rows_changed_arr=[];var returned_ds;const update_ds=async function(dsP,rowIdP){if(!dsP||!_session.DS_GLB[dsP])return;var _ds=_session.DS_GLB[dsP];try{const row_idx=func.common.find_ROWID_idx(_ds,rowIdP);if(_ds.data_feed?.rows?.[row_idx]?.[fieldId])_ds.data_feed.rows[row_idx][fieldId]=value}catch(err){console.error(err)}if(!fieldsChanged_arr.includes(fieldId))fieldsChanged_arr.push(fieldId);if(!rows_changed_arr.includes(rowIdP))rows_changed_arr.push(rowIdP);returned_ds=dsP;const _view_obj=await func.utils.VIEWS_OBJ.get(SESSION_ID,_ds.prog_id);var field_row_id=func.common.find_item_by_key(_view_obj.progFields,"field_id",fieldId)?.id;func.utils.debug.watch(SESSION_ID,_ds.prog_id+"%"+field_row_id,"view_field","Source: "+source,value)};const ret=await func.datasource.get_value(SESSION_ID,fieldId,dsSession,_session.DS_GLB[dsSession].currentRecordId);await update_ds(ret.dsSessionP,ret.currentRecordId);if(returned_ds){var obj={sessionChanged:returned_ds,viewType_target:_session.DS_GLB[returned_ds].viewType,rows_changed:rows_changed_arr,fieldsChanged:fieldsChanged_arr};await func.datasource.update(SESSION_ID,obj);resolve()}};const element_not_found=function(SESSION_ID,dsP,jobNoP,alter_attr,ui_id){var _session=SESSION_OBJ[SESSION_ID];if(xu_isEmpty(SCREEN_BLOCKER_OBJ)){if(_session.DS_GLB[dsP]){log_error(SESSION_ID,"UI element not found",alter_attr+" > "+ui_id,null,_session.DS_GLB[dsP].prog_id)}}if(jobNoP){func.events.delete_job(SESSION_ID,jobNoP)}};
1
+ const log_error=function(SESSION_ID,action,descP,detailsP,warning,prog_id){func.utils.debug.log(SESSION_ID,log_nodeId,{module:"event",action:action,source:"",prop:descP,details:detailsP,result:null,error:!warning,warning:warning,fields:null,type:"event",prog_id:prog_id})};const get_ui_ids=function(SESSION_ID,event_prop){if(event_prop.selector==="@_THIS")event_prop.selector=elementP;if(event_prop.selector_type=="tree_id"){let $elm=func.UI.utils.find_in_element_data("xuData",func.runtime.ui._wrap_matches([SESSION_OBJ[SESSION_ID].root_element]),"ui_id",event_prop.selector);return[{ui_id:event_prop.selector,tagName:func.runtime.ui.get_data($elm)?.xuData?.node.tagName}]}return Array.from(SESSION_OBJ[SESSION_ID].root_element.querySelectorAll(event_prop.selector)).map(function(val,key){return{ui_id:func.runtime.ui.get_data(val,"xuData")?.ui_id,tagName:func.runtime.ui.get_data(val,"xuData")?.node.tagName}})};const get_ui_id=async function(SESSION_ID,dsSession,event_prop,rowP){if(event_prop.selector==="@_THIS")event_prop.selector=elementP;return await func.expression.get(SESSION_ID,event_prop.selector,dsSession,"ui_id",rowP)};const set_info_value=async function(SESSION_ID,value,source,event_prop,resolve){var _session=SESSION_OBJ[SESSION_ID];if(!event_prop.field_return_value){log_error(SESSION_ID,source," Field cannot be empty");return}var fieldId=event_prop.field_return_value.substr(1);if(event_prop.field_return_value.substr(0,1)!=="@"){log_error(SESSION_ID,source,fieldId+" Field not valid");return}var fieldsChanged_arr=[];var rows_changed_arr=[];var returned_ds;const update_ds=async function(dsP,rowIdP){if(!dsP||!_session.DS_GLB[dsP])return;var _ds=_session.DS_GLB[dsP];try{const row_idx=func.common.find_ROWID_idx(_ds,rowIdP);if(_ds.data_feed?.rows?.[row_idx]?.[fieldId])_ds.data_feed.rows[row_idx][fieldId]=value}catch(err){console.error(err)}if(!fieldsChanged_arr.includes(fieldId))fieldsChanged_arr.push(fieldId);if(!rows_changed_arr.includes(rowIdP))rows_changed_arr.push(rowIdP);returned_ds=dsP;const _view_obj=await func.utils.VIEWS_OBJ.get(SESSION_ID,_ds.prog_id);var field_row_id=func.common.find_item_by_key(_view_obj.progFields,"field_id",fieldId)?.id;func.utils.debug.watch(SESSION_ID,_ds.prog_id+"%"+field_row_id,"view_field","Source: "+source,value)};const ret=await func.datasource.get_value(SESSION_ID,fieldId,dsSession,_session.DS_GLB[dsSession].currentRecordId);await update_ds(ret.dsSessionP,ret.currentRecordId);if(returned_ds){var obj={sessionChanged:returned_ds,viewType_target:_session.DS_GLB[returned_ds].viewType,rows_changed:rows_changed_arr,fieldsChanged:fieldsChanged_arr};await func.datasource.update(SESSION_ID,obj);resolve()}};const element_not_found=function(SESSION_ID,dsP,jobNoP,alter_attr,ui_id){var _session=SESSION_OBJ[SESSION_ID];if(xu_isEmpty(SCREEN_BLOCKER_OBJ)){if(_session.DS_GLB[dsP]){log_error(SESSION_ID,"UI element not found",alter_attr+" > "+ui_id,null,_session.DS_GLB[dsP].prog_id)}}if(jobNoP){func.events.delete_job(SESSION_ID,jobNoP)}};
@@ -409,7 +409,7 @@ func.runtime.ui.live_preview_hot_module_reload = async function (SESSION_ID, doc
409
409
  // );
410
410
 
411
411
  // console.log($elm);
412
- const $elm = func.UI.utils.find_in_element_data('xuPanelData', func.runtime.ui.as_jquery(SESSION_OBJ[SESSION_ID].root_element), 'parent_element_ui_id');
412
+ const $elm = func.UI.utils.find_in_element_data('xuPanelData', func.runtime.ui._wrap_matches([SESSION_OBJ[SESSION_ID].root_element]), 'parent_element_ui_id');
413
413
  var panels_obj = {};
414
414
 
415
415
  if (!$elm.length) {
@@ -1 +1 @@
1
- const _this={};export const init_module=e=>{_this.func=e.func;_this.glb=e.glb;_this.SESSION_OBJ=e.SESSION_OBJ;_this.APP_OBJ=e.APP_OBJ;_this.IS_DOCKER=e.IS_DOCKER;_this.IS_API_SERVER=e.IS_API_SERVER;_this.IS_PROCESS_SERVER=e.IS_PROCESS_SERVER};export const live_preview_loader=async function(SESSION_ID){_this.glb.DEBUG_MODE=true;const ret=await init_studio_websocket(SESSION_ID);if(ret.error){_session.root_element.style.display="";_this.func.UI.utils.progressScreen.show(SESSION_ID,"Connection closed :(",null,true);throw"Connection closed :("}var data=ret.e;if(data.service==="init_runtime_websocket"){await _this.func.UI.main.embed_loader(SESSION_ID)}else{var data=e;const call_embed=function(){_session.prog_id=data.data.id;console.log("call_embed",data.data.id);_this.func.runtime.ui.call_embed(SESSION_ID,data.data.id)};if(data.service==="run_program_command"){if(_this.func.UI.utils.get_url_attribute(SESSION_ID,"prog")||typeof live_preview_getCookie!=="undefined"&&live_preview_getCookie("prog_id")&&data.data.id!==live_preview_getCookie("prog_id")&&live_preview_getCookie("gtp_prog_dynamic")==="0"&&_this.func.utils.get_device())return;try{throw"run new program, terminate prev execution"}catch(ex){call_embed()}}if(data.service==="debug_command"){_this.func.utils.debug.read_command(data.data);return}}};const init_studio_websocket=async function(SESSION_ID){return new Promise(async function(resolve,reject){var _session=_this.SESSION_OBJ[SESSION_ID];var app_id=_session.app_id;const set_connected=async function(stat){var datasource_changes={[0]:{["data_system"]:{SYS_GLOBAL_BOL_CONNECTED:stat}}};await func.datasource.update(SESSION_ID,datasource_changes)};const peer_actions_module=await func.common.get_module(SESSION_ID,"xuda-peer-actions-module.esm.js");var preview_name=_session.url_params.preview_name||_session.opt.preview_name;const connect_peer=function(){const peer=new Peer(SESSION_ID,{host:`${_session.domain}`,path:"/peer",secure:true,config:{iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.l.google.com:5349"},{urls:"stun:stun1.l.google.com:3478"},{urls:"stun:stun1.l.google.com:5349"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun2.l.google.com:5349"},{urls:"stun:stun3.l.google.com:3478"},{urls:"stun:stun3.l.google.com:5349"},{urls:"stun:stun4.l.google.com:19302"},{urls:"stun:stun4.l.google.com:5349"}]}});STUDIO_PEER=peer;peer.on("open",function(peer_id){var peer_token=_session.gtp_token;const connect_peer=function(){const loaderEl=document.querySelector(".loader");if(loaderEl){const loaderMsgEl=document.querySelector(".loader_msg");if(loaderMsgEl)loaderMsgEl.innerHTML="Awaiting connection to Xuda Studio"}const conn=peer.connect(peer_token,{metadata:{url_params:_session.url_params,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,preview_name:preview_name,user_info:_session.login_info,live_token_id:_session.opt.live_token_id,live_token_stat:_session.opt.live_token_stat}});conn.on("open",e=>{STUDIO_PEER_CONN_SEND_METHOD=conn.send.bind(conn);STUDIO_PEER_CONN_ID=conn.connectionId;set_connected(1);conn.on("data",data=>{if(data.service==="auth"&&data.data.live_token_stat===2){if(SESSION_OBJ[SESSION_ID].system_ready){conn.send({service:"system_ready"});if(STUDIO_PEER_CONN_MSG_QUEUE.length){for(let val of STUDIO_PEER_CONN_MSG_QUEUE){val.id=conn.connectionId;conn.send(val)}STUDIO_PEER_CONN_MSG_QUEUE=[]}}return connect_to_ws(peer_id)}peer_actions_module.peer_actions(SESSION_ID,STUDIO_PEER_CONN_SEND_METHOD,data)});conn.on("error",e=>{console.error("peer conn",e)});conn.on("close",function(conn){set_connected(0);document.body.classList.remove("live_preview_online");if(_session.opt.live_token_stat===2){func.UI.utils.progressScreen.show(SESSION_ID,"Connection lost. Attempting to reconnect...",false,true);console.log("Connection lost. Attempting to reconnect...");setTimeout(function(){location.reload()},5e3)}})});conn.on("error",e=>{console.error("peer conn",e)});peer.on("call",function(call){const displayMediaStreamConstraints={video:{cursor:"always"},audio:true,preferCurrentTab:true};const success=function(stream){call.answer(stream)};const error=function(error){call.answer(error)};if(navigator.mediaDevices.getDisplayMedia){navigator.mediaDevices.getDisplayMedia(displayMediaStreamConstraints).then(success).catch(error)}else{navigator.getDisplayMedia(displayMediaStreamConstraints).then(success).catch(error)}})};connect_peer()});peer.on("error",function(e){const loaderEl2=document.querySelector(".loader");if(loaderEl2){const loaderMsgEl2=document.querySelector(".loader_msg");if(loaderMsgEl2)loaderMsgEl2.innerHTML="Session has expired. Please renew the token session in Studio and reload."}})};const broadcast_channel=function(){const channel=new BroadcastChannel(_session.gtp_token);STUDIO_PEER=channel;channel.onmessage=event=>{if(event.data.session_id!==SESSION_ID)return;peer_actions_module.peer_actions(SESSION_ID,STUDIO_PEER_CONN_SEND_METHOD,event.data)};channel.postMessage({service:"connection",metadata:{url_params:_session.url_params,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,preview_name:preview_name,user_info:_session.login_info,session_id:SESSION_ID}});STUDIO_PEER_CONN_SEND_METHOD=channel.postMessage.bind(channel);set_connected(1);window.addEventListener("onCloseWindow",event=>{console.log("onCloseWindow");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"onCloseWindow"})});window.addEventListener("beforeunload",event=>{console.log("beforeunload");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"beforeunload"})});window.addEventListener("unload",event=>{console.log("beforeunload");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"unload"})});resolve({e:{service:"init_runtime_websocket"}})};const connect_to_ws=function(peer_id){try{const url="https://"+_session.domain;STUDIO_WEBSOCKET=io(url,{secure:true,reconnection:_this.glb.debug_js?false:true,rejectUnauthorized:false,path:"/ws/socket.io"});const ws_data={service:"init",id:peer_id,uid:_session.USR_OBJ._id,source:"runtime",app_id:app_id,preview_name:preview_name,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token};STUDIO_WEBSOCKET.on("connect",()=>{STUDIO_WEBSOCKET_CONNECTION_ID=STUDIO_WEBSOCKET.id;STUDIO_WEBSOCKET.emit("join-room",ws_data);resolve({e:{service:"init_runtime_websocket"}})});STUDIO_WEBSOCKET.on("studio-connected",data=>{if(!data.reconnected){STUDIO_WEBSOCKET.emit("init-studio",{...ws_data,reconnected:true})}_session.root_element.classList.add("live_preview_connected")});STUDIO_WEBSOCKET.on("user-disconnected",data=>{_session.root_element.classList.remove("live_preview_connected");_session.root_element.classList.remove("live_preview_online")});STUDIO_WEBSOCKET.on("disconnect",()=>{console.log("disconnect",STUDIO_WEBSOCKET.id)});STUDIO_WEBSOCKET.io.on("reconnect",attempt=>{console.log("reconnect",attempt)})}catch(e){resolve(true)}};if(_session.local_live_preview==="true"){return broadcast_channel()}connect_peer()})};export const send_STUDIO_WEBSOCKET=function(SESSION_ID,service){var _session=_this.SESSION_OBJ[SESSION_ID];const data={service:service,data:_session.USR_OBJ,id:STUDIO_PEER_CONN_ID,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,gtp_token:_session.gtp_token,app_token:_session.app_token};if(!STUDIO_PEER_CONN_SEND_METHOD){STUDIO_PEER_CONN_MSG_QUEUE.push(data);return}STUDIO_PEER_CONN_SEND_METHOD(data)};func.runtime.ui.live_preview_hot_module_reload=async function(SESSION_ID,doc){const $elm=func.UI.utils.find_in_element_data("xuPanelData",func.runtime.ui.as_jquery(SESSION_OBJ[SESSION_ID].root_element),"parent_element_ui_id");var panels_obj={};if(!$elm.length){for await(const[key,val]of Object.entries(SESSION_OBJ[SESSION_ID].DS_GLB)){if(val.prog_id===doc._id){await func.action.execute(SESSION_ID,"act_reload",val);break}}return}for await(const[elem_key,elem_val]of Object.entries($elm)){if(elem_key==="length")break;var div=elem_val;let xuData=func.runtime.ui.get_data(div,"xuData");if(!func.runtime.ui.get_data(div,"xuPanelData"))continue;let dsSession=xuData.paramsP.dsSessionP;var _session=SESSION_OBJ[SESSION_ID];let _ds=_session?.DS_GLB[dsSession];if(!_ds)continue;if(_ds.prog_id!==doc._id){continue}const parent_element_ui_id=func.runtime.ui.get_data(div,"xuPanelData").parent_element_ui_id;if(!panels_obj[parent_element_ui_id]){panels_obj[parent_element_ui_id]={_ds:_ds,div:div,ids:[]}}panels_obj[parent_element_ui_id].ids.push(div.getAttribute("xu-ui-id"))}for await(const[parent_element_ui_id,panel_val]of Object.entries(panels_obj)){var div_elm=panel_val.div.parentElement.parentElement.querySelector("[xu-ui-id='"+parent_element_ui_id+"']");try{const org_panel=func.runtime.ui.get_data(panel_val.div,"xuPanelData").$panel_div;const new_div=await func.runtime.render.render_ui_tree(SESSION_ID,div_elm,structuredClone(func.runtime.ui.get_data(panel_val.div,"xuPanelData").node),{},func.runtime.ui.get_data(org_panel,"xuData").paramsP,null,null,func.runtime.ui.get_data(org_panel,"xuData").key,null,func.runtime.ui.get_data(org_panel,"xuData").parent_node,null,func.runtime.ui.get_data(org_panel,"xuData").$root_container);for(const val of panel_val.ids){const oldEl=document.querySelector("[xu-ui-id='"+val+"']");if(oldEl)oldEl.remove()}}catch(error){debugger}}return panels_obj};
1
+ const _this={};export const init_module=e=>{_this.func=e.func;_this.glb=e.glb;_this.SESSION_OBJ=e.SESSION_OBJ;_this.APP_OBJ=e.APP_OBJ;_this.IS_DOCKER=e.IS_DOCKER;_this.IS_API_SERVER=e.IS_API_SERVER;_this.IS_PROCESS_SERVER=e.IS_PROCESS_SERVER};export const live_preview_loader=async function(SESSION_ID){_this.glb.DEBUG_MODE=true;const ret=await init_studio_websocket(SESSION_ID);if(ret.error){_session.root_element.style.display="";_this.func.UI.utils.progressScreen.show(SESSION_ID,"Connection closed :(",null,true);throw"Connection closed :("}var data=ret.e;if(data.service==="init_runtime_websocket"){await _this.func.UI.main.embed_loader(SESSION_ID)}else{var data=e;const call_embed=function(){_session.prog_id=data.data.id;console.log("call_embed",data.data.id);_this.func.runtime.ui.call_embed(SESSION_ID,data.data.id)};if(data.service==="run_program_command"){if(_this.func.UI.utils.get_url_attribute(SESSION_ID,"prog")||typeof live_preview_getCookie!=="undefined"&&live_preview_getCookie("prog_id")&&data.data.id!==live_preview_getCookie("prog_id")&&live_preview_getCookie("gtp_prog_dynamic")==="0"&&_this.func.utils.get_device())return;try{throw"run new program, terminate prev execution"}catch(ex){call_embed()}}if(data.service==="debug_command"){_this.func.utils.debug.read_command(data.data);return}}};const init_studio_websocket=async function(SESSION_ID){return new Promise(async function(resolve,reject){var _session=_this.SESSION_OBJ[SESSION_ID];var app_id=_session.app_id;const set_connected=async function(stat){var datasource_changes={[0]:{["data_system"]:{SYS_GLOBAL_BOL_CONNECTED:stat}}};await func.datasource.update(SESSION_ID,datasource_changes)};const peer_actions_module=await func.common.get_module(SESSION_ID,"xuda-peer-actions-module.esm.js");var preview_name=_session.url_params.preview_name||_session.opt.preview_name;const connect_peer=function(){const peer=new Peer(SESSION_ID,{host:`${_session.domain}`,path:"/peer",secure:true,config:{iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun.l.google.com:5349"},{urls:"stun:stun1.l.google.com:3478"},{urls:"stun:stun1.l.google.com:5349"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun2.l.google.com:5349"},{urls:"stun:stun3.l.google.com:3478"},{urls:"stun:stun3.l.google.com:5349"},{urls:"stun:stun4.l.google.com:19302"},{urls:"stun:stun4.l.google.com:5349"}]}});STUDIO_PEER=peer;peer.on("open",function(peer_id){var peer_token=_session.gtp_token;const connect_peer=function(){const loaderEl=document.querySelector(".loader");if(loaderEl){const loaderMsgEl=document.querySelector(".loader_msg");if(loaderMsgEl)loaderMsgEl.innerHTML="Awaiting connection to Xuda Studio"}const conn=peer.connect(peer_token,{metadata:{url_params:_session.url_params,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,preview_name:preview_name,user_info:_session.login_info,live_token_id:_session.opt.live_token_id,live_token_stat:_session.opt.live_token_stat}});conn.on("open",e=>{STUDIO_PEER_CONN_SEND_METHOD=conn.send.bind(conn);STUDIO_PEER_CONN_ID=conn.connectionId;set_connected(1);conn.on("data",data=>{if(data.service==="auth"&&data.data.live_token_stat===2){if(SESSION_OBJ[SESSION_ID].system_ready){conn.send({service:"system_ready"});if(STUDIO_PEER_CONN_MSG_QUEUE.length){for(let val of STUDIO_PEER_CONN_MSG_QUEUE){val.id=conn.connectionId;conn.send(val)}STUDIO_PEER_CONN_MSG_QUEUE=[]}}return connect_to_ws(peer_id)}peer_actions_module.peer_actions(SESSION_ID,STUDIO_PEER_CONN_SEND_METHOD,data)});conn.on("error",e=>{console.error("peer conn",e)});conn.on("close",function(conn){set_connected(0);document.body.classList.remove("live_preview_online");if(_session.opt.live_token_stat===2){func.UI.utils.progressScreen.show(SESSION_ID,"Connection lost. Attempting to reconnect...",false,true);console.log("Connection lost. Attempting to reconnect...");setTimeout(function(){location.reload()},5e3)}})});conn.on("error",e=>{console.error("peer conn",e)});peer.on("call",function(call){const displayMediaStreamConstraints={video:{cursor:"always"},audio:true,preferCurrentTab:true};const success=function(stream){call.answer(stream)};const error=function(error){call.answer(error)};if(navigator.mediaDevices.getDisplayMedia){navigator.mediaDevices.getDisplayMedia(displayMediaStreamConstraints).then(success).catch(error)}else{navigator.getDisplayMedia(displayMediaStreamConstraints).then(success).catch(error)}})};connect_peer()});peer.on("error",function(e){const loaderEl2=document.querySelector(".loader");if(loaderEl2){const loaderMsgEl2=document.querySelector(".loader_msg");if(loaderMsgEl2)loaderMsgEl2.innerHTML="Session has expired. Please renew the token session in Studio and reload."}})};const broadcast_channel=function(){const channel=new BroadcastChannel(_session.gtp_token);STUDIO_PEER=channel;channel.onmessage=event=>{if(event.data.session_id!==SESSION_ID)return;peer_actions_module.peer_actions(SESSION_ID,STUDIO_PEER_CONN_SEND_METHOD,event.data)};channel.postMessage({service:"connection",metadata:{url_params:_session.url_params,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,preview_name:preview_name,user_info:_session.login_info,session_id:SESSION_ID}});STUDIO_PEER_CONN_SEND_METHOD=channel.postMessage.bind(channel);set_connected(1);window.addEventListener("onCloseWindow",event=>{console.log("onCloseWindow");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"onCloseWindow"})});window.addEventListener("beforeunload",event=>{console.log("beforeunload");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"beforeunload"})});window.addEventListener("unload",event=>{console.log("beforeunload");channel.postMessage({service:"disconnected",session_id:SESSION_ID,type:"unload"})});resolve({e:{service:"init_runtime_websocket"}})};const connect_to_ws=function(peer_id){try{const url="https://"+_session.domain;STUDIO_WEBSOCKET=io(url,{secure:true,reconnection:_this.glb.debug_js?false:true,rejectUnauthorized:false,path:"/ws/socket.io"});const ws_data={service:"init",id:peer_id,uid:_session.USR_OBJ._id,source:"runtime",app_id:app_id,preview_name:preview_name,client_info:_session.SYS_GLOBAL_OBJ_CLIENT_INFO,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token};STUDIO_WEBSOCKET.on("connect",()=>{STUDIO_WEBSOCKET_CONNECTION_ID=STUDIO_WEBSOCKET.id;STUDIO_WEBSOCKET.emit("join-room",ws_data);resolve({e:{service:"init_runtime_websocket"}})});STUDIO_WEBSOCKET.on("studio-connected",data=>{if(!data.reconnected){STUDIO_WEBSOCKET.emit("init-studio",{...ws_data,reconnected:true})}_session.root_element.classList.add("live_preview_connected")});STUDIO_WEBSOCKET.on("user-disconnected",data=>{_session.root_element.classList.remove("live_preview_connected");_session.root_element.classList.remove("live_preview_online")});STUDIO_WEBSOCKET.on("disconnect",()=>{console.log("disconnect",STUDIO_WEBSOCKET.id)});STUDIO_WEBSOCKET.io.on("reconnect",attempt=>{console.log("reconnect",attempt)})}catch(e){resolve(true)}};if(_session.local_live_preview==="true"){return broadcast_channel()}connect_peer()})};export const send_STUDIO_WEBSOCKET=function(SESSION_ID,service){var _session=_this.SESSION_OBJ[SESSION_ID];const data={service:service,data:_session.USR_OBJ,id:STUDIO_PEER_CONN_ID,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,gtp_token:_session.gtp_token,app_token:_session.app_token};if(!STUDIO_PEER_CONN_SEND_METHOD){STUDIO_PEER_CONN_MSG_QUEUE.push(data);return}STUDIO_PEER_CONN_SEND_METHOD(data)};func.runtime.ui.live_preview_hot_module_reload=async function(SESSION_ID,doc){const $elm=func.UI.utils.find_in_element_data("xuPanelData",func.runtime.ui._wrap_matches([SESSION_OBJ[SESSION_ID].root_element]),"parent_element_ui_id");var panels_obj={};if(!$elm.length){for await(const[key,val]of Object.entries(SESSION_OBJ[SESSION_ID].DS_GLB)){if(val.prog_id===doc._id){await func.action.execute(SESSION_ID,"act_reload",val);break}}return}for await(const[elem_key,elem_val]of Object.entries($elm)){if(elem_key==="length")break;var div=elem_val;let xuData=func.runtime.ui.get_data(div,"xuData");if(!func.runtime.ui.get_data(div,"xuPanelData"))continue;let dsSession=xuData.paramsP.dsSessionP;var _session=SESSION_OBJ[SESSION_ID];let _ds=_session?.DS_GLB[dsSession];if(!_ds)continue;if(_ds.prog_id!==doc._id){continue}const parent_element_ui_id=func.runtime.ui.get_data(div,"xuPanelData").parent_element_ui_id;if(!panels_obj[parent_element_ui_id]){panels_obj[parent_element_ui_id]={_ds:_ds,div:div,ids:[]}}panels_obj[parent_element_ui_id].ids.push(div.getAttribute("xu-ui-id"))}for await(const[parent_element_ui_id,panel_val]of Object.entries(panels_obj)){var div_elm=panel_val.div.parentElement.parentElement.querySelector("[xu-ui-id='"+parent_element_ui_id+"']");try{const org_panel=func.runtime.ui.get_data(panel_val.div,"xuPanelData").$panel_div;const new_div=await func.runtime.render.render_ui_tree(SESSION_ID,div_elm,structuredClone(func.runtime.ui.get_data(panel_val.div,"xuPanelData").node),{},func.runtime.ui.get_data(org_panel,"xuData").paramsP,null,null,func.runtime.ui.get_data(org_panel,"xuData").key,null,func.runtime.ui.get_data(org_panel,"xuData").parent_node,null,func.runtime.ui.get_data(org_panel,"xuData").$root_container);for(const val of panel_val.ids){const oldEl=document.querySelector("[xu-ui-id='"+val+"']");if(oldEl)oldEl.remove()}}catch(error){debugger}}return panels_obj};