@xuda.io/runtime-bundle 1.0.1414 → 1.0.1415

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.
Files changed (46) hide show
  1. package/js/modules/xuda-actions-module.esm.js +10 -10
  2. package/js/modules/xuda-actions-module.esm.min.js +1 -1
  3. package/js/modules/xuda-api-library.min.mjs +1 -1
  4. package/js/modules/xuda-api-library.mjs +1 -1
  5. package/js/modules/xuda-datasource-db-adapter-module.min.mjs +1 -1
  6. package/js/modules/xuda-datasource-db-adapter-module.mjs +4 -4
  7. package/js/modules/xuda-db-adapter-module.min.mjs +1 -1
  8. package/js/modules/xuda-db-adapter-module.mjs +9 -9
  9. package/js/modules/xuda-debug-utils-module.min.mjs +1 -1
  10. package/js/modules/xuda-debug-utils-module.mjs +6 -6
  11. package/js/modules/xuda-event-ui-elements-module.esm.js +6 -6
  12. package/js/modules/xuda-event-ui-elements-module.esm.min.js +1 -1
  13. package/js/modules/xuda-get-cast-util-module.min.mjs +1 -1
  14. package/js/modules/xuda-get-cast-util-module.mjs +5 -10
  15. package/js/modules/xuda-get-support-module.esm.js +15 -12
  16. package/js/modules/xuda-get-support-module.esm.min.js +1 -1
  17. package/js/modules/xuda-input-musk-utils-module.min.mjs +1 -1
  18. package/js/modules/xuda-input-musk-utils-module.mjs +22 -35
  19. package/js/modules/xuda-live-preview-module.esm.js +36 -31
  20. package/js/modules/xuda-live-preview-module.esm.min.js +1 -1
  21. package/js/modules/xuda-peer-actions-module.esm.js +5 -5
  22. package/js/modules/xuda-peer-actions-module.esm.min.js +1 -1
  23. package/js/modules/xuda-progs-loader-module.min.mjs +1 -1
  24. package/js/modules/xuda-progs-loader-module.mjs +8 -7
  25. package/js/modules/xuda-project-loader-module.esm.js +17 -12
  26. package/js/modules/xuda-project-loader-module.esm.min.js +1 -1
  27. package/js/modules/xuda-studio-checker.min.mjs +1 -1
  28. package/js/modules/xuda-studio-checker.mjs +79 -80
  29. package/js/xuda-runtime-bundle.js +1562 -1170
  30. package/js/xuda-runtime-bundle.min.js +5 -5
  31. package/js/xuda-runtime-mini-bundle.js +22 -52
  32. package/js/xuda-runtime-mini-bundle.min.js +1 -1
  33. package/js/xuda-runtime-slim.js +1562 -1095
  34. package/js/xuda-runtime-slim.min.es.js +1563 -1171
  35. package/js/xuda-runtime-slim.min.js +4 -4
  36. package/js/xuda-runtime-vendor.js +1 -212
  37. package/js/xuda-runtime-vendor.min.js +2 -2
  38. package/js/xuda-server-bundle.min.mjs +2 -2
  39. package/js/xuda-server-bundle.mjs +730 -155
  40. package/js/xuda-worker-bundle.js +730 -155
  41. package/js/xuda-worker-bundle.min.js +2 -2
  42. package/js/xuda_common-bundle.js +221 -26
  43. package/js/xuda_common-bundle.min.js +1 -1
  44. package/js/xuda_worker.js +0 -6
  45. package/js/xuda_worker.min.js +1 -1
  46. package/package.json +1 -1
@@ -54,12 +54,13 @@ export const init_peer = async function (SESSION_ID, peer_regional_server) {
54
54
  peer_id,
55
55
  });
56
56
  setTimeout(() => {
57
- $("body").addClass("get_support_request");
58
- $("body")
59
- .remove(".get_support_request_title")
60
- .append(
61
- "<div class='get_support_request_title'>Support processing</div>"
62
- );
57
+ document.body.classList.add("get_support_request");
58
+ const existingTitle = document.querySelector(".get_support_request_title");
59
+ if (existingTitle) existingTitle.remove();
60
+ const titleDiv = document.createElement("div");
61
+ titleDiv.className = "get_support_request_title";
62
+ titleDiv.textContent = "Support processing";
63
+ document.body.appendChild(titleDiv);
63
64
  }, 2000);
64
65
  });
65
66
 
@@ -79,7 +80,7 @@ export const init_peer = async function (SESSION_ID, peer_regional_server) {
79
80
  // SUPPORT_PEER_CONN = conn;
80
81
  SUPPORT_PEER_CONN = conn.send.bind(conn);
81
82
 
82
- $("body").addClass("get_support_online");
83
+ document.body.classList.add("get_support_online");
83
84
  // if (SESSION_OBJ[SESSION_ID].system_ready) {
84
85
  // conn.send({
85
86
  // service: "system_ready",
@@ -105,7 +106,7 @@ export const init_peer = async function (SESSION_ID, peer_regional_server) {
105
106
  });
106
107
 
107
108
  conn.on("close", function (conn) {
108
- $("body").removeClass("get_support_online");
109
+ document.body.classList.remove("get_support_online");
109
110
  });
110
111
  });
111
112
 
@@ -148,10 +149,12 @@ export const terminate_peer = async function (SESSION_ID) {
148
149
  // var app_id = _session.app_id;
149
150
 
150
151
  SUPPORT_PEER.disconnect();
151
- $("body").removeClass("get_support_request");
152
- $("body").find(".get_support_request_title").remove();
153
- $("body").removeClass("get_support_online");
154
- $("body").find(".get_support_online_title").remove();
152
+ document.body.classList.remove("get_support_request");
153
+ const reqTitle = document.querySelector(".get_support_request_title");
154
+ if (reqTitle) reqTitle.remove();
155
+ document.body.classList.remove("get_support_online");
156
+ const onlineTitle = document.querySelector(".get_support_online_title");
157
+ if (onlineTitle) onlineTitle.remove();
155
158
 
156
159
  func.common.db(SESSION_ID, "cancel_support", {});
157
160
  // func.common.db(Object.keys(SESSION_OBJ)[0], "cancel_support", {});
@@ -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 init_peer=async function(SESSION_ID,peer_regional_server){var _session=_this.SESSION_OBJ[SESSION_ID];const peer=new Peer(_session.SYS_GLOBAL_OBJ_CLIENT_INFO.fingerprint,{host:`https://${peer_regional_server}`,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"}]}});SUPPORT_PEER=peer;peer.on("open",function(peer_id){func.common.db(SESSION_ID,"get_support",{peer_id:peer_id});setTimeout(()=>{$("body").addClass("get_support_request");$("body").remove(".get_support_request_title").append("<div class='get_support_request_title'>Support processing</div>")},2e3)});peer.on("connection",async function(conn){conn.on("open",()=>{SUPPORT_PEER_CONN=conn.send.bind(conn);$("body").addClass("get_support_online")});const peer_actions_module=await func.common.get_module(SESSION_ID,"xuda-peer-actions-module.esm.js");conn.on("data",data=>{console.log(data);peer_actions_module.peer_actions(SESSION_ID,SUPPORT_PEER_CONN,data)});conn.on("close",function(conn){$("body").removeClass("get_support_online")})});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)}});peer.on("error",function(err){console.error(err)})};export const terminate_peer=async function(SESSION_ID){SUPPORT_PEER.disconnect();$("body").removeClass("get_support_request");$("body").find(".get_support_request_title").remove();$("body").removeClass("get_support_online");$("body").find(".get_support_online_title").remove();func.common.db(SESSION_ID,"cancel_support",{});SUPPORT_PEER=null;SUPPORT_PEER_CONN=null};
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 init_peer=async function(SESSION_ID,peer_regional_server){var _session=_this.SESSION_OBJ[SESSION_ID];const peer=new Peer(_session.SYS_GLOBAL_OBJ_CLIENT_INFO.fingerprint,{host:`https://${peer_regional_server}`,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"}]}});SUPPORT_PEER=peer;peer.on("open",function(peer_id){func.common.db(SESSION_ID,"get_support",{peer_id:peer_id});setTimeout(()=>{document.body.classList.add("get_support_request");const existingTitle=document.querySelector(".get_support_request_title");if(existingTitle)existingTitle.remove();const titleDiv=document.createElement("div");titleDiv.className="get_support_request_title";titleDiv.textContent="Support processing";document.body.appendChild(titleDiv)},2e3)});peer.on("connection",async function(conn){conn.on("open",()=>{SUPPORT_PEER_CONN=conn.send.bind(conn);document.body.classList.add("get_support_online")});const peer_actions_module=await func.common.get_module(SESSION_ID,"xuda-peer-actions-module.esm.js");conn.on("data",data=>{console.log(data);peer_actions_module.peer_actions(SESSION_ID,SUPPORT_PEER_CONN,data)});conn.on("close",function(conn){document.body.classList.remove("get_support_online")})});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)}});peer.on("error",function(err){console.error(err)})};export const terminate_peer=async function(SESSION_ID){SUPPORT_PEER.disconnect();document.body.classList.remove("get_support_request");const reqTitle=document.querySelector(".get_support_request_title");if(reqTitle)reqTitle.remove();document.body.classList.remove("get_support_online");const onlineTitle=document.querySelector(".get_support_online_title");if(onlineTitle)onlineTitle.remove();func.common.db(SESSION_ID,"cancel_support",{});SUPPORT_PEER=null;SUPPORT_PEER_CONN=null};
@@ -1 +1 @@
1
- export const input_mask=function(actionP,valP,typeP,maskP,elemP,grid_objP,grid_row_idP,grid_col_idP,dsSessionP){var nonCharPatt=/\W/;var wordPatt=/[A-Z,a-z]/;var digitPatt=/\d/;const get_properties=function(typeP,maskP){var ret={custom_pfx:false,customChar_pfx:"",positive_pfx:false,positiveChar_pfx:"+",negative_pfx:false,negativeChar_pfx:"-",size:0,whole:0,decimal:0,zeros:false,zerosChar:"0",do_null:false,nullChar:"",autoTab:false,autoFill:false,negative_sfx:false,negativeChar_sfx:"",positive_sfx:false,positiveChar_sfx:"",custom_sfx:false,customChar_sfx:"",type:typeP,mask:"",maskPos:null,error:""};var get_char=function(valP,defaultP){var ret=defaultP;if(valP.length>1)ret=valP.substr(1,valP.length);return ret};var fill_mask=function(lenP,charP){var s="";for(var i=0;i<lenP;i++){s+=charP}return s};var mask_Arr=maskP.split("/");_.forEach(mask_Arr,function(val,key){if(typeP==="number"){if(/[0-9.#]/.test(val)&&!/[TNCZ+-]/.test(val.substr(0,1)))ret.maskPos=key}if(typeP==="string"){if(/[0-9XAaUL#]/.test(val)&&!/[T]/.test(val.substr(0,1)))ret.maskPos=key}});if(ret.maskPos===null){ret.error="SYS_MSG_0612 - missing mask definition";return ret}var mask=mask_Arr[ret.maskPos];if(typeP==="number"){var whole=mask.split(".")[0];var decimal=mask.split(".")[1];if(whole&&whole>15){ret.error="SYS_MSG_0632 - Too big";return ret}if(decimal&&decimal>5){ret.error="SYS_MSG_0632 - Too big";return ret}if(/\D/.test(whole))ret.mask=whole;else ret.mask=fill_mask(whole,"#");if(decimal&&ret.mask){if(/\D/.test(decimal))ret.mask+="."+decimal;else ret.mask+="."+fill_mask(decimal,"#")}}if(typeP==="string"){if(/\D/.test(mask)){if(/\d/.test(mask)){var patt=/[ULXAa#]/g;var str="";var Arr=[];for(var i=0;i<=mask.length;i++){var val=mask.substr(i,1);if(patt.test(val))str+="@"+val;else str+=val}var s=str.split("@");for(var i=1;i<=s.length-1;i++){Arr[i-1]=fill_mask(s[i].substr(1),s[i].substr(0,1))}ret.mask=Arr.join("")}else ret.mask=mask}else ret.mask=fill_mask(mask,"X")}if(!ret.mask){ret.error="SYS_MSG_0614 - wrong mask definition";return ret}var patt=/[#]/g;if(typeP==="number"){if(ret.mask.match(patt)){ret.size=ret.mask.match(patt).join("").length;ret.whole=ret.mask.split(".")[0].match(patt).join("").length;if(ret.mask.split(".")[1])ret.decimal=ret.mask.split(".")[1].match(patt).join("").length}}patt=/[X#AaUL]/g;if(typeP==="string"){if(ret.mask.match(patt))ret.size=ret.mask.match(patt).join("").length}if(!ret.size){ret.error="SYS_MSG_0616 - size parser";return ret}for(let[key,val]of Object.entries(mask_Arr)){if(!val)continue;if(val.trim()==="Z"||val.substr(0,1)==="Z"){ret.zeros=true;ret.zerosChar=get_char(val,"0");if(typeP==="string")ret.error="SYS_MSG_0618 - Illegal 'Z' in string mask";continue}else{if(val.trim()==="N"||val.substr(0,1)==="N"){ret.do_null=true;ret.nullChar=get_char(val,"");if(typeP==="string")ret.error="SYS_MSG_0620 - Illegal 'N' in string mask";continue}else{if(val.trim()==="+"||val.substr(0,1)==="+"){if(key<ret.maskPos){ret.positive_pfx=true;ret.positiveChar_pfx=get_char(val,"+")}if(key>ret.maskPos){ret.positive_sfx=true;ret.positiveChar_sfx=get_char(val,"+")}if(typeP==="string"&&val.trim()==="+")ret.error="SYS_MSG_0622 - Illegal '+' in string mask";continue}else{if(val.trim()==="-"||val.substr(0,1)==="-"){if(key<ret.maskPos){ret.negative_pfx=true;ret.negativeChar_pfx=get_char(val,"-")}if(key>ret.maskPos){ret.negative_sfx=true;ret.negativeChar_sfx=get_char(val,"-")}if(typeP==="string"&&val.trim()==="-")ret.error="SYS_MSG_0624 - Illegal '-' in string mask";continue}else{if(val.trim()==="C"||val.substr(0,1)==="C"){if(key<ret.maskPos){ret.custom_pfx=true;ret.customChar_pfx=get_char(val,"C")}if(key>ret.maskPos){ret.custom_sfx=true;ret.customChar_sfx=get_char(val,"C")}if(typeP==="string"&&val.trim()==="C")ret.error="SYS_MSG_0626 - Illegal 'C' in string mask";continue}else{if(val.trim()==="T"||val.substr(0,1)==="T"){ret.autoTab=true;continue}else{if(key!==ret.maskPos)ret.error="SYS_MSG_0628 - invalid /"+val+" switch"}}}}}}}return ret};const run_mask=function(dataP,validateP,prev_val,mask){var str="";var i=-1;var prop=get_properties(typeP,mask);if(prop.error)return prop.error;if(typeP==="number"){var fill_zeros=function(maskLenP,valLenP,charP){var s="";for(var i=0;i<maskLenP-valLenP;i++){if(charP)s+=charP;else s+="0"}return s};var str_pfx=prop.customChar_pfx;if(prop.positive_pfx&&dataP>0)str_pfx+=prop.positiveChar_pfx;if(prop.negative_pfx&&dataP<0)str_pfx+=prop.negativeChar_pfx;var str_sfx="";if(prop.negative_sfx&&dataP<0)str_sfx+=prop.negativeChar_sfx;if(prop.positive_sfx&&dataP>0)str_sfx+=prop.positiveChar_sfx;str_sfx+=prop.customChar_sfx;if(dataP&&dataP!=="0"){var val_whole=Math.abs(dataP.toString().split(".")[0]).toString();var val_decimal=dataP.toString().split(".")[1];var whole_truncated=val_whole;if(val_whole.length>prop.whole)whole_truncated=val_whole.substr(val_whole.length-prop.whole,val_whole.length);if(prop.zeros)str+=fill_zeros(prop.whole,whole_truncated.length,prop.zerosChar)+whole_truncated;else str+=whole_truncated;if(prop.decimal){if(val_decimal)str+="."+val_decimal+fill_zeros(prop.decimal,val_decimal.length,prop.zerosChar);else str+="."+fill_zeros(prop.decimal,0,prop.zerosChar)}}else{if(prop.zeros)str=fill_zeros(prop.whole,0);else str="0";if(prop.decimal)str+="."+fill_zeros(prop.decimal,0,prop.zerosChar)}if(prop.do_null&&(!dataP||dataP==="0"))str=prop.nullChar;else str=str_pfx+str+str_sfx;return str}if(typeP==="string"){var err;for(var x=0;x<=prop.mask.length;x++){var val=prop.mask.substr(x,1);if(!dataP)return;if(dataP.length>i){if(nonCharPatt.test(val)&&val!=="#"){str+=val}else{i++;var s="";s=dataP.substr(i,1);if(val==="X"){str+=s}if(val==="U"){if(wordPatt.test(s)||s===" ")str+=s.toUpperCase()}if(val==="A"){str+=s.toUpperCase()}if(val==="a"){str+=s.toLowerCase()}if(val==="L"){if(wordPatt.test(s)||s===" ")str+=s.toLowerCase()}if(val==="#"){if(digitPatt.test(s))str+=s}}}}if(validateP&&err)return prev_val;else return str}};var run_value=function(dataP,mask){if(!dataP)return;var str="";if(typeP==="string"){if(mask)for(var i=0;i<=dataP.length;i++){var val=dataP.substr(i,1);var s=mask.substr(i,1);if(s===val&&nonCharPatt.test(s)&&s!=="#")str+="";else str+=val}}if(typeP==="number"){var patt=/[0-9-.]/g;var arr=dataP.toString().match(patt);if(arr&&arr.length>0)str=parseFloat(arr.join(""))}return str};if(actionP==="init"){if(!elemP)return"SYS_MSG_0630 - Missing DOM Element";$(elemP).data({mask:maskP});$(elemP).off("keypress.mask");$(elemP).on("keypress.mask",function(e){var _this=this;setTimeout(function(){var prev_val=$(_this).data("prev_val");var mask=$(_this).data("mask");var prop=get_properties(typeP,mask);if(typeP==="number"&&!/[0-9-.+]/.test(String.fromCharCode(e.keyCode))){e.preventDefault();return false}var val=$(_this).val();if(typeP==="string"&&val){var res=run_mask(run_value(val,mask),true,prev_val,mask);$(_this).val(res).data({prev_val:res})}},50)});$(elemP).off("blur.mask");$(elemP).on("blur.mask",function(e){var prev_val=$(this).data("prev_val");var mask=$(this).data("mask");var val=$(this).val();if(typeP==="number"&&!/[0-9-.+]/.test(val))return;if(typeP==="number"&&val){var res=run_mask(run_value(val,mask),true,prev_val,mask);$(this).val(res).data({prev_val:res});setTimeout(function(){if(grid_objP)grid_objP.cells(grid_row_idP,grid_col_idP).setValue(res)},50)}})}if(actionP==="get")return run_mask(valP,null,null,maskP);if(actionP==="val")return run_value(valP,maskP);if(actionP==="properties"){var prop={};prop=get_properties(typeP,maskP);if(valP)prop.val_size=run_value(valP,maskP).toString().length;return prop}};
1
+ export const input_mask=function(actionP,valP,typeP,maskP,elemP,grid_objP,grid_row_idP,grid_col_idP,dsSessionP){var nonCharPatt=/\W/;var wordPatt=/[A-Z,a-z]/;var digitPatt=/\d/;const get_properties=function(typeP,maskP){var ret={custom_pfx:false,customChar_pfx:"",positive_pfx:false,positiveChar_pfx:"+",negative_pfx:false,negativeChar_pfx:"-",size:0,whole:0,decimal:0,zeros:false,zerosChar:"0",do_null:false,nullChar:"",autoTab:false,autoFill:false,negative_sfx:false,negativeChar_sfx:"",positive_sfx:false,positiveChar_sfx:"",custom_sfx:false,customChar_sfx:"",type:typeP,mask:"",maskPos:null,error:""};var get_char=function(valP,defaultP){var ret=defaultP;if(valP.length>1)ret=valP.substr(1,valP.length);return ret};var fill_mask=function(lenP,charP){var s="";for(var i=0;i<lenP;i++){s+=charP}return s};var mask_Arr=maskP.split("/");mask_Arr.forEach(function(val,key){if(typeP==="number"){if(/[0-9.#]/.test(val)&&!/[TNCZ+-]/.test(val.substr(0,1)))ret.maskPos=key}if(typeP==="string"){if(/[0-9XAaUL#]/.test(val)&&!/[T]/.test(val.substr(0,1)))ret.maskPos=key}});if(ret.maskPos===null){ret.error="SYS_MSG_0612 - missing mask definition";return ret}var mask=mask_Arr[ret.maskPos];if(typeP==="number"){var whole=mask.split(".")[0];var decimal=mask.split(".")[1];if(whole&&whole>15){ret.error="SYS_MSG_0632 - Too big";return ret}if(decimal&&decimal>5){ret.error="SYS_MSG_0632 - Too big";return ret}if(/\D/.test(whole))ret.mask=whole;else ret.mask=fill_mask(whole,"#");if(decimal&&ret.mask){if(/\D/.test(decimal))ret.mask+="."+decimal;else ret.mask+="."+fill_mask(decimal,"#")}}if(typeP==="string"){if(/\D/.test(mask)){if(/\d/.test(mask)){var patt=/[ULXAa#]/g;var str="";var Arr=[];for(var i=0;i<=mask.length;i++){var val=mask.substr(i,1);if(patt.test(val))str+="@"+val;else str+=val}var s=str.split("@");for(var i=1;i<=s.length-1;i++){Arr[i-1]=fill_mask(s[i].substr(1),s[i].substr(0,1))}ret.mask=Arr.join("")}else ret.mask=mask}else ret.mask=fill_mask(mask,"X")}if(!ret.mask){ret.error="SYS_MSG_0614 - wrong mask definition";return ret}var patt=/[#]/g;if(typeP==="number"){if(ret.mask.match(patt)){ret.size=ret.mask.match(patt).join("").length;ret.whole=ret.mask.split(".")[0].match(patt).join("").length;if(ret.mask.split(".")[1])ret.decimal=ret.mask.split(".")[1].match(patt).join("").length}}patt=/[X#AaUL]/g;if(typeP==="string"){if(ret.mask.match(patt))ret.size=ret.mask.match(patt).join("").length}if(!ret.size){ret.error="SYS_MSG_0616 - size parser";return ret}for(let[key,val]of Object.entries(mask_Arr)){if(!val)continue;if(val.trim()==="Z"||val.substr(0,1)==="Z"){ret.zeros=true;ret.zerosChar=get_char(val,"0");if(typeP==="string")ret.error="SYS_MSG_0618 - Illegal 'Z' in string mask";continue}else{if(val.trim()==="N"||val.substr(0,1)==="N"){ret.do_null=true;ret.nullChar=get_char(val,"");if(typeP==="string")ret.error="SYS_MSG_0620 - Illegal 'N' in string mask";continue}else{if(val.trim()==="+"||val.substr(0,1)==="+"){if(key<ret.maskPos){ret.positive_pfx=true;ret.positiveChar_pfx=get_char(val,"+")}if(key>ret.maskPos){ret.positive_sfx=true;ret.positiveChar_sfx=get_char(val,"+")}if(typeP==="string"&&val.trim()==="+")ret.error="SYS_MSG_0622 - Illegal '+' in string mask";continue}else{if(val.trim()==="-"||val.substr(0,1)==="-"){if(key<ret.maskPos){ret.negative_pfx=true;ret.negativeChar_pfx=get_char(val,"-")}if(key>ret.maskPos){ret.negative_sfx=true;ret.negativeChar_sfx=get_char(val,"-")}if(typeP==="string"&&val.trim()==="-")ret.error="SYS_MSG_0624 - Illegal '-' in string mask";continue}else{if(val.trim()==="C"||val.substr(0,1)==="C"){if(key<ret.maskPos){ret.custom_pfx=true;ret.customChar_pfx=get_char(val,"C")}if(key>ret.maskPos){ret.custom_sfx=true;ret.customChar_sfx=get_char(val,"C")}if(typeP==="string"&&val.trim()==="C")ret.error="SYS_MSG_0626 - Illegal 'C' in string mask";continue}else{if(val.trim()==="T"||val.substr(0,1)==="T"){ret.autoTab=true;continue}else{if(key!==ret.maskPos)ret.error="SYS_MSG_0628 - invalid /"+val+" switch"}}}}}}}return ret};const run_mask=function(dataP,validateP,prev_val,mask){var str="";var i=-1;var prop=get_properties(typeP,mask);if(prop.error)return prop.error;if(typeP==="number"){var fill_zeros=function(maskLenP,valLenP,charP){var s="";for(var i=0;i<maskLenP-valLenP;i++){if(charP)s+=charP;else s+="0"}return s};var str_pfx=prop.customChar_pfx;if(prop.positive_pfx&&dataP>0)str_pfx+=prop.positiveChar_pfx;if(prop.negative_pfx&&dataP<0)str_pfx+=prop.negativeChar_pfx;var str_sfx="";if(prop.negative_sfx&&dataP<0)str_sfx+=prop.negativeChar_sfx;if(prop.positive_sfx&&dataP>0)str_sfx+=prop.positiveChar_sfx;str_sfx+=prop.customChar_sfx;if(dataP&&dataP!=="0"){var val_whole=Math.abs(dataP.toString().split(".")[0]).toString();var val_decimal=dataP.toString().split(".")[1];var whole_truncated=val_whole;if(val_whole.length>prop.whole)whole_truncated=val_whole.substr(val_whole.length-prop.whole,val_whole.length);if(prop.zeros)str+=fill_zeros(prop.whole,whole_truncated.length,prop.zerosChar)+whole_truncated;else str+=whole_truncated;if(prop.decimal){if(val_decimal)str+="."+val_decimal+fill_zeros(prop.decimal,val_decimal.length,prop.zerosChar);else str+="."+fill_zeros(prop.decimal,0,prop.zerosChar)}}else{if(prop.zeros)str=fill_zeros(prop.whole,0);else str="0";if(prop.decimal)str+="."+fill_zeros(prop.decimal,0,prop.zerosChar)}if(prop.do_null&&(!dataP||dataP==="0"))str=prop.nullChar;else str=str_pfx+str+str_sfx;return str}if(typeP==="string"){var err;for(var x=0;x<=prop.mask.length;x++){var val=prop.mask.substr(x,1);if(!dataP)return;if(dataP.length>i){if(nonCharPatt.test(val)&&val!=="#"){str+=val}else{i++;var s="";s=dataP.substr(i,1);if(val==="X"){str+=s}if(val==="U"){if(wordPatt.test(s)||s===" ")str+=s.toUpperCase()}if(val==="A"){str+=s.toUpperCase()}if(val==="a"){str+=s.toLowerCase()}if(val==="L"){if(wordPatt.test(s)||s===" ")str+=s.toLowerCase()}if(val==="#"){if(digitPatt.test(s))str+=s}}}}if(validateP&&err)return prev_val;else return str}};var run_value=function(dataP,mask){if(!dataP)return;var str="";if(typeP==="string"){if(mask)for(var i=0;i<=dataP.length;i++){var val=dataP.substr(i,1);var s=mask.substr(i,1);if(s===val&&nonCharPatt.test(s)&&s!=="#")str+="";else str+=val}}if(typeP==="number"){var patt=/[0-9-.]/g;var arr=dataP.toString().match(patt);if(arr&&arr.length>0)str=parseFloat(arr.join(""))}return str};if(actionP==="init"){if(!elemP)return"SYS_MSG_0630 - Missing DOM Element";const _el=elemP?.nodeType?elemP:elemP?.[0];if(!_el)return;_el.__mask_data={mask:maskP};if(_el.__mask_keypress)_el.removeEventListener("keypress",_el.__mask_keypress);_el.__mask_keypress=function(e){var _this=this;setTimeout(function(){var prev_val=_this.__mask_data?.prev_val;var mask=_this.__mask_data?.mask;var prop=get_properties(typeP,mask);if(typeP==="number"&&!/[0-9-.+]/.test(String.fromCharCode(e.keyCode))){e.preventDefault();return false}var val=_this.value;if(typeP==="string"&&val){var res=run_mask(run_value(val,mask),true,prev_val,mask);_this.value=res;_this.__mask_data.prev_val=res}},50)};_el.addEventListener("keypress",_el.__mask_keypress);if(_el.__mask_blur)_el.removeEventListener("blur",_el.__mask_blur);_el.__mask_blur=function(e){var prev_val=this.__mask_data?.prev_val;var mask=this.__mask_data?.mask;var val=this.value;if(typeP==="number"&&!/[0-9-.+]/.test(val))return;if(typeP==="number"&&val){var res=run_mask(run_value(val,mask),true,prev_val,mask);this.value=res;this.__mask_data.prev_val=res;setTimeout(function(){if(grid_objP)grid_objP.cells(grid_row_idP,grid_col_idP).setValue(res)},50)}};_el.addEventListener("blur",_el.__mask_blur)}if(actionP==="get")return run_mask(valP,null,null,maskP);if(actionP==="val")return run_value(valP,maskP);if(actionP==="properties"){var prop={};prop=get_properties(typeP,maskP);if(valP)prop.val_size=run_value(valP,maskP).toString().length;return prop}};
@@ -79,7 +79,7 @@ export const input_mask = function (
79
79
  var mask_Arr = maskP.split("/");
80
80
  // find mask pos
81
81
 
82
- _.forEach(mask_Arr, function (val, key) {
82
+ mask_Arr.forEach(function (val, key) {
83
83
  if (typeP === "number") {
84
84
  if (/[0-9.#]/.test(val) && !/[TNCZ+-]/.test(val.substr(0, 1)))
85
85
  ret.maskPos = key;
@@ -363,18 +363,16 @@ export const input_mask = function (
363
363
 
364
364
  if (actionP === "init") {
365
365
  if (!elemP) return "SYS_MSG_0630 - Missing DOM Element";
366
- $(elemP).data({
367
- mask: maskP,
368
- });
369
- $(elemP).off("keypress.mask");
370
- $(elemP).on("keypress.mask", function (e) {
366
+ const _el = elemP?.nodeType ? elemP : elemP?.[0];
367
+ if (!_el) return;
368
+ _el.__mask_data = { mask: maskP };
369
+ if (_el.__mask_keypress) _el.removeEventListener("keypress", _el.__mask_keypress);
370
+ _el.__mask_keypress = function (e) {
371
371
  var _this = this;
372
372
  setTimeout(function () {
373
- var prev_val = $(_this).data("prev_val");
374
- var mask = $(_this).data("mask");
373
+ var prev_val = _this.__mask_data?.prev_val;
374
+ var mask = _this.__mask_data?.mask;
375
375
  var prop = get_properties(typeP, mask);
376
- // var is_autoTab = prop.autoTab;
377
- // return on non character key
378
376
  if (
379
377
  typeP === "number" &&
380
378
  !/[0-9-.+]/.test(String.fromCharCode(e.keyCode))
@@ -382,43 +380,32 @@ export const input_mask = function (
382
380
  e.preventDefault();
383
381
  return false;
384
382
  }
385
- var val = $(_this).val();
383
+ var val = _this.value;
386
384
  if (typeP === "string" && val) {
387
385
  var res = run_mask(run_value(val, mask), true, prev_val, mask);
388
- $(_this).val(res).data({
389
- prev_val: res,
390
- });
386
+ _this.value = res;
387
+ _this.__mask_data.prev_val = res;
391
388
  }
392
- // if (grid_objP) {
393
- // // auto skip for grid
394
- // if (run_value(val, mask).toString().length >= prop.size)
395
- // func.UI.grid.next_field(
396
- // grid_objP,
397
- // grid_row_idP,
398
- // grid_col_idP,
399
- // dsSessionP
400
- // );
401
- // }
402
389
  }, 50);
403
- });
404
- $(elemP).off("blur.mask");
405
- $(elemP).on("blur.mask", function (e) {
406
- var prev_val = $(this).data("prev_val");
407
- var mask = $(this).data("mask");
408
- var val = $(this).val();
409
- // return on non character key
390
+ };
391
+ _el.addEventListener("keypress", _el.__mask_keypress);
392
+ if (_el.__mask_blur) _el.removeEventListener("blur", _el.__mask_blur);
393
+ _el.__mask_blur = function (e) {
394
+ var prev_val = this.__mask_data?.prev_val;
395
+ var mask = this.__mask_data?.mask;
396
+ var val = this.value;
410
397
  if (typeP === "number" && !/[0-9-.+]/.test(val)) return;
411
398
  if (typeP === "number" && val) {
412
399
  var res = run_mask(run_value(val, mask), true, prev_val, mask);
413
- $(this).val(res).data({
414
- prev_val: res,
415
- });
400
+ this.value = res;
401
+ this.__mask_data.prev_val = res;
416
402
  setTimeout(function () {
417
403
  if (grid_objP)
418
404
  grid_objP.cells(grid_row_idP, grid_col_idP).setValue(res);
419
405
  }, 50);
420
406
  }
421
- });
407
+ };
408
+ _el.addEventListener("blur", _el.__mask_blur);
422
409
  }
423
410
  if (actionP === "get") return run_mask(valP, null, null, maskP);
424
411
  if (actionP === "val") return run_value(valP, maskP);
@@ -19,7 +19,7 @@ export const live_preview_loader = async function (SESSION_ID) {
19
19
 
20
20
  const ret = await init_studio_websocket(SESSION_ID);
21
21
  if (ret.error) {
22
- $(_session.root_element).show();
22
+ _session.root_element.style.display = '';
23
23
  _this.func.UI.utils.progressScreen.show(SESSION_ID, 'Connection closed :(', null, true);
24
24
  throw 'Connection closed :(';
25
25
  }
@@ -98,8 +98,10 @@ const init_studio_websocket = async function (SESSION_ID) {
98
98
  peer.on('open', function (peer_id) {
99
99
  var peer_token = _session.gtp_token;
100
100
  const connect_peer = function () {
101
- if ($('.loader').length) {
102
- $('.loader_msg').html('Awaiting connection to Xuda Studio');
101
+ const loaderEl = document.querySelector('.loader');
102
+ if (loaderEl) {
103
+ const loaderMsgEl = document.querySelector('.loader_msg');
104
+ if (loaderMsgEl) loaderMsgEl.innerHTML = 'Awaiting connection to Xuda Studio';
103
105
  }
104
106
 
105
107
  const conn = peer.connect(peer_token, {
@@ -147,7 +149,7 @@ const init_studio_websocket = async function (SESSION_ID) {
147
149
 
148
150
  conn.on('close', function (conn) {
149
151
  set_connected(0);
150
- $('body').removeClass('live_preview_online');
152
+ document.body.classList.remove('live_preview_online');
151
153
  if (_session.opt.live_token_stat === 2) {
152
154
  func.UI.utils.progressScreen.show(SESSION_ID, 'Connection lost. Attempting to reconnect...', false, true);
153
155
 
@@ -201,8 +203,10 @@ const init_studio_websocket = async function (SESSION_ID) {
201
203
  connect_peer();
202
204
  });
203
205
  peer.on('error', function (e) {
204
- if ($('.loader').length) {
205
- $('.loader_msg').html('Session has expired. Please renew the token session in Studio and reload.');
206
+ const loaderEl2 = document.querySelector('.loader');
207
+ if (loaderEl2) {
208
+ const loaderMsgEl2 = document.querySelector('.loader_msg');
209
+ if (loaderMsgEl2) loaderMsgEl2.innerHTML = 'Session has expired. Please renew the token session in Studio and reload.';
206
210
  }
207
211
  });
208
212
 
@@ -348,12 +352,12 @@ const init_studio_websocket = async function (SESSION_ID) {
348
352
  reconnected: true,
349
353
  });
350
354
  }
351
- $(_session.root_element).addClass('live_preview_connected');
355
+ _session.root_element.classList.add('live_preview_connected');
352
356
  // $("body").addClass("live_preview_connected");
353
357
  });
354
358
  STUDIO_WEBSOCKET.on('user-disconnected', (data) => {
355
- $(_session.root_element).removeClass('live_preview_connected');
356
- $(_session.root_element).removeClass('live_preview_online');
359
+ _session.root_element.classList.remove('live_preview_connected');
360
+ _session.root_element.classList.remove('live_preview_online');
357
361
  });
358
362
 
359
363
  STUDIO_WEBSOCKET.on('disconnect', () => {
@@ -405,7 +409,7 @@ func.runtime.ui.live_preview_hot_module_reload = async function (SESSION_ID, doc
405
409
  // );
406
410
 
407
411
  // console.log($elm);
408
- const $elm = func.UI.utils.find_in_element_data('xuPanelData', $(SESSION_OBJ[SESSION_ID].root_element), 'parent_element_ui_id');
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');
409
413
  var panels_obj = {};
410
414
 
411
415
  if (!$elm.length) {
@@ -421,10 +425,10 @@ func.runtime.ui.live_preview_hot_module_reload = async function (SESSION_ID, doc
421
425
  // refresh panels
422
426
  for await (const [elem_key, elem_val] of Object.entries($elm)) {
423
427
  if (elem_key === 'length') break;
424
- var $div = $(elem_val);
425
- let xuData = $div.data().xuData;
428
+ var div = elem_val;
429
+ let xuData = func.runtime.ui.get_data(div, 'xuData');
426
430
 
427
- if (!$div.data().xuPanelData) continue;
431
+ if (!func.runtime.ui.get_data(div, 'xuPanelData')) continue;
428
432
 
429
433
  let dsSession = xuData.paramsP.dsSessionP;
430
434
  var _session = SESSION_OBJ[SESSION_ID];
@@ -435,45 +439,46 @@ func.runtime.ui.live_preview_hot_module_reload = async function (SESSION_ID, doc
435
439
  continue;
436
440
  }
437
441
 
438
- const parent_element_ui_id = $div.data().xuPanelData.parent_element_ui_id;
442
+ const parent_element_ui_id = func.runtime.ui.get_data(div, 'xuPanelData').parent_element_ui_id;
439
443
  if (!panels_obj[parent_element_ui_id]) {
440
444
  panels_obj[parent_element_ui_id] = {
441
445
  _ds,
442
- $div,
446
+ div,
443
447
  ids: [],
444
448
  };
445
449
  }
446
- panels_obj[parent_element_ui_id].ids.push($div.attr('xu-ui-id'));
450
+ panels_obj[parent_element_ui_id].ids.push(div.getAttribute('xu-ui-id'));
447
451
  }
448
452
 
449
453
  for await (const [parent_element_ui_id, panel_val] of Object.entries(panels_obj)) {
450
- var $div_elm = panel_val.$div
451
- .parent()
452
- .parent()
453
- .find("[xu-ui-id='" + parent_element_ui_id + "']");
454
+ var div_elm = panel_val.div
455
+ .parentElement
456
+ .parentElement
457
+ .querySelector("[xu-ui-id='" + parent_element_ui_id + "']");
454
458
 
455
459
  // restore original panel
456
460
  try {
457
- const $org_panel = panel_val.$div.data().xuPanelData.$panel_div; //panel_val.$div.clone(true);
461
+ const org_panel = func.runtime.ui.get_data(panel_val.div, 'xuPanelData').$panel_div; //panel_val.div.cloneNode(true);
458
462
 
459
- const new_$div = await func.runtime.render.render_ui_tree(
463
+ const new_div = await func.runtime.render.render_ui_tree(
460
464
  SESSION_ID,
461
- $div_elm,
462
- _.cloneDeep(panel_val.$div.data().xuPanelData.node),
465
+ div_elm,
466
+ klona.klona(func.runtime.ui.get_data(panel_val.div, 'xuPanelData').node),
463
467
  {},
464
- $org_panel.data().xuData.paramsP,
468
+ func.runtime.ui.get_data(org_panel, 'xuData').paramsP,
465
469
  null,
466
470
  null,
467
- $org_panel.data().xuData.key,
471
+ func.runtime.ui.get_data(org_panel, 'xuData').key,
468
472
  null,
469
- $org_panel.data().xuData.parent_node,
473
+ func.runtime.ui.get_data(org_panel, 'xuData').parent_node,
470
474
  null,
471
- $org_panel.data().xuData.$root_container,
475
+ func.runtime.ui.get_data(org_panel, 'xuData').$root_container,
472
476
  );
473
477
  // remove old panel content
474
- $.each(panel_val.ids, async function (key, val) {
475
- $("[xu-ui-id='" + val + "']").remove();
476
- });
478
+ for (const val of panel_val.ids) {
479
+ const oldEl = document.querySelector("[xu-ui-id='" + val + "']");
480
+ if (oldEl) oldEl.remove();
481
+ }
477
482
  } catch (error) {
478
483
  debugger;
479
484
  }
@@ -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).show();_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(){if($(".loader").length){$(".loader_msg").html("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);$("body").removeClass("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){if($(".loader").length){$(".loader_msg").html("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).addClass("live_preview_connected")});STUDIO_WEBSOCKET.on("user-disconnected",data=>{$(_session.root_element).removeClass("live_preview_connected");$(_session.root_element).removeClass("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",$(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=$div.data().xuData;if(!$div.data().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=$div.data().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.attr("xu-ui-id"))}for await(const[parent_element_ui_id,panel_val]of Object.entries(panels_obj)){var $div_elm=panel_val.$div.parent().parent().find("[xu-ui-id='"+parent_element_ui_id+"']");try{const $org_panel=panel_val.$div.data().xuPanelData.$panel_div;const new_$div=await func.runtime.render.render_ui_tree(SESSION_ID,$div_elm,_.cloneDeep(panel_val.$div.data().xuPanelData.node),{},$org_panel.data().xuData.paramsP,null,null,$org_panel.data().xuData.key,null,$org_panel.data().xuData.parent_node,null,$org_panel.data().xuData.$root_container);$.each(panel_val.ids,async function(key,val){$("[xu-ui-id='"+val+"']").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.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,klona.klona(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};
@@ -103,7 +103,7 @@ export const peer_actions = async function (SESSION_ID, conn_send, data) {
103
103
  }
104
104
 
105
105
  case "live_preview_get_session": {
106
- let _session = _.cloneDeep(_this.SESSION_OBJ[SESSION_ID]);
106
+ let _session = klona.klona(_this.SESSION_OBJ[SESSION_ID]);
107
107
  for (const [key, val] of Object.entries(_session.DS_GLB)) {
108
108
  _session.DS_GLB[key] = await func.utils.clean_returned_datasource(
109
109
  SESSION_ID,
@@ -142,12 +142,12 @@ export const peer_actions = async function (SESSION_ID, conn_send, data) {
142
142
  }
143
143
 
144
144
  case "live_preview_connected": {
145
- $(_session.root_element).addClass("live_preview_online");
145
+ _session.root_element.classList.add("live_preview_online");
146
146
  break;
147
147
  }
148
148
 
149
149
  case "live_preview_disconnected": {
150
- $(_session.root_element).removeClass("live_preview_online");
150
+ _session.root_element.classList.remove("live_preview_online");
151
151
  break;
152
152
  }
153
153
  case "live_preview_kickoff": {
@@ -191,13 +191,13 @@ export const peer_actions = async function (SESSION_ID, conn_send, data) {
191
191
 
192
192
  case "live_preview_get_obj_response": {
193
193
  if (!data?.data?._id) return;
194
- $("body").trigger("live_preview_get_obj_response_" + data.data._id, {
194
+ func.runtime.platform.emit("live_preview_get_obj_response_" + data.data._id, {
195
195
  data: data.data,
196
196
  });
197
197
  break;
198
198
  }
199
199
  case "rpi_request_response": {
200
- $("body").trigger("rpi_request_response_" + data.req_id, {
200
+ func.runtime.platform.emit("rpi_request_response_" + data.req_id, {
201
201
  data: data.data,
202
202
  });
203
203
  break;
@@ -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 peer_actions=async function(SESSION_ID,conn_send,data){var _session=_this.SESSION_OBJ[SESSION_ID];const take_screenshot=async function(service){await _this.func.utils.load_js_on_demand("https://html2canvas.hertzen.com/dist/html2canvas.js");html2canvas(document.body).then(canvas=>{conn_send({service:service,data:canvas.toDataURL("image/png"),id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,gtp_token:_session.gtp_token,app_token:_session.app_token,session_id:SESSION_ID,ts:Date.now(),session:{SYS_GLOBAL_OBJ_CLIENT_INFO:_this.SESSION_OBJ[SESSION_ID].SYS_GLOBAL_OBJ_CLIENT_INFO}})})};switch(data.service){case"send_object_to_runtime":{if(STUDIO_WEBSOCKET_CONNECTION_ID===data.data.connection_id){if(RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id]){RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id].data=data.data}}break}case"live_preview_element_reference":case"live_preview_element_info":case"live_preview_element_dnd":{if(data.data.action==="on"){_this.func.UI.utils.live_preview_element_inspect_off();_this.func.UI.utils.live_preview_element_inspect_on(SESSION_ID,data.service)}else{_this.func.UI.utils.live_preview_element_inspect_off()}break}case"live_preview_show_selected_element":{_this.func.UI.utils.live_preview_show_selected_element(data.data.nodeid);break}case"live_preview_cmd_execute":{let res;try{res={data:eval(data.data.execute)}}catch(e){res={data:e.message,error:true}}conn_send({service:"debug_log",data:res,id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"live_preview_hard_reload":{await func.index.delete_pouch(SESSION_ID);location.reload();break}case"live_preview_screenshot":{await take_screenshot("live_preview_screenshot_captured");break}case"live_preview_get_session":{let _session=_.cloneDeep(_this.SESSION_OBJ[SESSION_ID]);for(const[key,val]of Object.entries(_session.DS_GLB)){_session.DS_GLB[key]=await func.utils.clean_returned_datasource(SESSION_ID,key)}delete _session.root_element;delete _session.WORKER_OBJ;conn_send({service:"live_preview_session_result",data:_session,id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"live_preview_screen_share_start":{_this.live_preview_screen_share_interval=setInterval(async()=>{await take_screenshot("live_preview_screen_share")},500);break}case"live_preview_screen_share_end":{clearInterval(_this.live_preview_screen_share_interval);break}case"live_preview_connected":{$(_session.root_element).addClass("live_preview_online");break}case"live_preview_disconnected":{$(_session.root_element).removeClass("live_preview_online");break}case"live_preview_kickoff":{_session.opt.live_token_stat=2;func.UI.utils.progressScreen.show(SESSION_ID,"Session closed by the host",false,true);break}case"document_changed":{console.log("document_changed",data);func.runtime.ui.refresh_document_changes_for_realtime_update(SESSION_ID,data.data);break}case"live_preview_get_obj_response":{if(!data?.data?._id)return;$("body").trigger("live_preview_get_obj_response_"+data.data._id,{data:data.data});break}case"rpi_request_response":{$("body").trigger("rpi_request_response_"+data.req_id,{data:data.data});break}case"ping":{conn_send({service:"pong",data:{},id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"studio_doc_saved":{var _session=SESSION_OBJ[SESSION_ID];DOCS_OBJ[_session.app_id][data.data._id]=data.data;func.runtime.ui.live_preview_hot_module_reload(SESSION_ID,data.data);break}default:break}};
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 peer_actions=async function(SESSION_ID,conn_send,data){var _session=_this.SESSION_OBJ[SESSION_ID];const take_screenshot=async function(service){await _this.func.utils.load_js_on_demand("https://html2canvas.hertzen.com/dist/html2canvas.js");html2canvas(document.body).then(canvas=>{conn_send({service:service,data:canvas.toDataURL("image/png"),id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,gtp_token:_session.gtp_token,app_token:_session.app_token,session_id:SESSION_ID,ts:Date.now(),session:{SYS_GLOBAL_OBJ_CLIENT_INFO:_this.SESSION_OBJ[SESSION_ID].SYS_GLOBAL_OBJ_CLIENT_INFO}})})};switch(data.service){case"send_object_to_runtime":{if(STUDIO_WEBSOCKET_CONNECTION_ID===data.data.connection_id){if(RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id]){RESPONSE_FROM_STUDIO_QUEUE[data.data.req_id].data=data.data}}break}case"live_preview_element_reference":case"live_preview_element_info":case"live_preview_element_dnd":{if(data.data.action==="on"){_this.func.UI.utils.live_preview_element_inspect_off();_this.func.UI.utils.live_preview_element_inspect_on(SESSION_ID,data.service)}else{_this.func.UI.utils.live_preview_element_inspect_off()}break}case"live_preview_show_selected_element":{_this.func.UI.utils.live_preview_show_selected_element(data.data.nodeid);break}case"live_preview_cmd_execute":{let res;try{res={data:eval(data.data.execute)}}catch(e){res={data:e.message,error:true}}conn_send({service:"debug_log",data:res,id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"live_preview_hard_reload":{await func.index.delete_pouch(SESSION_ID);location.reload();break}case"live_preview_screenshot":{await take_screenshot("live_preview_screenshot_captured");break}case"live_preview_get_session":{let _session=klona.klona(_this.SESSION_OBJ[SESSION_ID]);for(const[key,val]of Object.entries(_session.DS_GLB)){_session.DS_GLB[key]=await func.utils.clean_returned_datasource(SESSION_ID,key)}delete _session.root_element;delete _session.WORKER_OBJ;conn_send({service:"live_preview_session_result",data:_session,id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"live_preview_screen_share_start":{_this.live_preview_screen_share_interval=setInterval(async()=>{await take_screenshot("live_preview_screen_share")},500);break}case"live_preview_screen_share_end":{clearInterval(_this.live_preview_screen_share_interval);break}case"live_preview_connected":{_session.root_element.classList.add("live_preview_online");break}case"live_preview_disconnected":{_session.root_element.classList.remove("live_preview_online");break}case"live_preview_kickoff":{_session.opt.live_token_stat=2;func.UI.utils.progressScreen.show(SESSION_ID,"Session closed by the host",false,true);break}case"document_changed":{console.log("document_changed",data);func.runtime.ui.refresh_document_changes_for_realtime_update(SESSION_ID,data.data);break}case"live_preview_get_obj_response":{if(!data?.data?._id)return;func.runtime.platform.emit("live_preview_get_obj_response_"+data.data._id,{data:data.data});break}case"rpi_request_response":{func.runtime.platform.emit("rpi_request_response_"+data.req_id,{data:data.data});break}case"ping":{conn_send({service:"pong",data:{},id:data.id,uid:_session.USR_OBJ._id,source:"runtime",app_id:_session.app_id,session_id:SESSION_ID,gtp_token:_session.gtp_token,app_token:_session.app_token,ts:Date.now()});break}case"studio_doc_saved":{var _session=SESSION_OBJ[SESSION_ID];DOCS_OBJ[_session.app_id][data.data._id]=data.data;func.runtime.ui.live_preview_hot_module_reload(SESSION_ID,data.data);break}default:break}};
@@ -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 get_doc_from_studio=async function(SESSION_ID,app_id,idP){return new Promise(function(resolve,reject){var _session=_this.SESSION_OBJ[SESSION_ID];if(glb.IS_WORKER){func.utils.post_back_to_client(SESSION_ID,"get_doc_from_studio",_session.worker_id,{doc_id:idP});self.addEventListener("live_preview_get_obj_response_worker_"+idP,event=>{resolve(event.detail.data)})}else{STUDIO_PEER_CONN_SEND_METHOD({service:"get_doc_obj",data:{doc_id:idP},session_id:SESSION_ID,id:STUDIO_PEER.id,source:"runtime",app_id:app_id});$("body").on("live_preview_get_obj_response_"+idP,function(e,data){resolve(data.data);$("body").off("live_preview_get_obj_response_"+idP)})}})};export const get_doc_from_websocket=async function(SESSION_ID,app_id,idP){var _session=_this.SESSION_OBJ[SESSION_ID];return new Promise(function(resolve,reject){if(glb.IS_WORKER){func.utils.post_back_to_client(SESSION_ID,"get_doc_from_websocket",_session.worker_id,{doc_id:idP});self.addEventListener("get_doc_obj_from_build_worker_"+idP,event=>{resolve(event.detail.data)})}else{if(RUNTIME_SERVER_WEBSOCKET&&RUNTIME_SERVER_WEBSOCKET_CONNECTED){RUNTIME_SERVER_WEBSOCKET.emit("message",{service:"get_doc_obj_from_build",data:{doc_id:idP}});$("body").on("get_doc_obj_from_build_response_"+idP,(e,data)=>{resolve(data.data);$("body").off("get_doc_obj_from_build_response_"+idP)})}else{throw new Error("fail to fetch from ws websocket inactive")}}})};export const DOCS_OBJ_get=async function(SESSION_ID,idP){if(!idP)return;if(idP==="_empty_panel_program"){return{_id:"_empty_panel_program",properties:{menuName:"_empty_panel_program",menuTitle:"_empty_panel_program",menuType:"component",renderType:"form"},progUi:[{id:"node-empty_panel_program",tagName:"xu-single-view",children:[{id:"node-empty_panel_program-span",tagName:"span",children:[],content:"",type:"element",attributes:{}}],content:"",type:"element",attributes:{}}],progDataSource:{},progFields:[],progEvents:[]}}var _session=_this.SESSION_OBJ[SESSION_ID];const app_id=_session.app_id;var views_ret;if(_session.engine_mode==="live_preview"){return await get_doc_from_studio(SESSION_ID,app_id,idP)}if(glb.register_startup_programs){func.common.db(SESSION_ID,"register_startup_programs",{prog_id:idP,build_id:_session?.build_info?.build||0})}views_ret=await read_objects_cache(SESSION_ID,idP,"DOCS_OBJ");if(!views_ret){if(typeof _this.IS_DOCKER==="undefined"&&typeof _this.IS_PROCESS_SERVER==="undefined"){let url=_this.func.common.get_url(SESSION_ID,"rpi","");if(["master"].includes(_this.APP_OBJ[app_id].app_type)){url+="get_doc_obj_raw"}else{url+="get_doc_obj_from_build"}let app_id_reference=_this.APP_OBJ[app_id].app_id_reference;const http=async function(){const response=await fetch(url,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","xu-gtp-token":_session.gtp_token,"xu-app-token":_session.app_token},body:JSON.stringify({app_id:app_id,doc_id:idP,build:_session.build_info.instance_build||_session.build_info.build||_session.opt.app_build_id,app_id_reference:app_id_reference,engine_mode:_session.engine_mode})});const json=await response.json();if(response){if(response&&response.status===400){return _this.func.utils.request_error(SESSION_ID,"ajax",response.statusText)}views_ret=json.data}};if(_session.engine_mode==="miniapp"){await http()}else{views_ret=await get_doc_from_websocket(SESSION_ID,app_id,idP)}}if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){var ret=await __.rpi.get_prog(app_id,idP);if(ret.data){views_ret=ret.data}}if(views_ret){if(views_ret.error){console.error(views_ret);views_ret="";return}await save_objects_cache(SESSION_ID,idP,"DOCS_OBJ",views_ret)}}return views_ret};export const save_objects_cache=async function(SESSION_ID,id,obj_type,data){var _session=_this.SESSION_OBJ[SESSION_ID];if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"||_session.worker_type==="Dev"){return}var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);var doc={_id:`cache_${build_id}_${obj_type}_${id}`,id:id,docType:"cache_objects",build_id:build_id.toString(),obj_type:obj_type,data:data};setTimeout(async function(){try{await db.get(doc_id);return}catch(e){if(await read_objects_cache(SESSION_ID,id,obj_type)){return}if(!doc.data||doc.data&&typeof doc.data==="string"&&doc.data.indexOf("error")>-1){return}try{return await db.put(doc)}catch(err){return}}},1e3)};export const read_objects_cache=async function(SESSION_ID,id,obj_type){if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){try{const data=fs.readFileSync("/var/xuda/progs/"+id+".json","utf8");return JSON.parse(data)}catch(err){console.error("read_objects_cache",err);return}}var _session=_this.SESSION_OBJ[SESSION_ID];var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);var ret;try{ret=await db.get(`cache_${build_id}_${obj_type}_${id}`);if(ret.data&&typeof ret.data==="string"&&ret.data.indexOf("error")>-1){return""}return ret.data}catch(err){return ret}};export const delete_objects_cache=async function(SESSION_ID,id,obj_type){const app_id=_this.SESSION_OBJ[SESSION_ID].app_id;var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);try{var doc=await db.get(`cache_${build_id}_${obj_type}_${id}`);if(!doc)return;var ret=await db.remove(doc)}catch(err){return}return ret};export const load_objects_cache=async function(SESSION_ID){var _session=_this.SESSION_OBJ[SESSION_ID];if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){return}const app_id=_session.app_id;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);const build_id=_this.APP_OBJ[app_id].app_build_id;let ret=await db.find({selector:{docType:"cache_objects",build_id:build_id}});for(let val of ret.docs){eval(val.obj_type)[_session.app_id][val.id]=val.data}};
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 get_doc_from_studio=async function(SESSION_ID,app_id,idP){return new Promise(function(resolve,reject){var _session=_this.SESSION_OBJ[SESSION_ID];if(glb.IS_WORKER){func.utils.post_back_to_client(SESSION_ID,"get_doc_from_studio",_session.worker_id,{doc_id:idP});self.addEventListener("live_preview_get_obj_response_worker_"+idP,event=>{resolve(event.detail.data)})}else{STUDIO_PEER_CONN_SEND_METHOD({service:"get_doc_obj",data:{doc_id:idP},session_id:SESSION_ID,id:STUDIO_PEER.id,source:"runtime",app_id:app_id});const _lp_handler=function(data){resolve(data.data);func.runtime.platform.off("live_preview_get_obj_response_"+idP,_lp_handler)};func.runtime.platform.on("live_preview_get_obj_response_"+idP,_lp_handler)}})};export const get_doc_from_websocket=async function(SESSION_ID,app_id,idP){var _session=_this.SESSION_OBJ[SESSION_ID];return new Promise(function(resolve,reject){if(glb.IS_WORKER){func.utils.post_back_to_client(SESSION_ID,"get_doc_from_websocket",_session.worker_id,{doc_id:idP});self.addEventListener("get_doc_obj_from_build_worker_"+idP,event=>{resolve(event.detail.data)})}else{if(RUNTIME_SERVER_WEBSOCKET&&RUNTIME_SERVER_WEBSOCKET_CONNECTED){RUNTIME_SERVER_WEBSOCKET.emit("message",{service:"get_doc_obj_from_build",data:{doc_id:idP}});const _doc_handler=function(data){resolve(data.data);func.runtime.platform.off("get_doc_obj_from_build_response_"+idP,_doc_handler)};func.runtime.platform.on("get_doc_obj_from_build_response_"+idP,_doc_handler)}else{throw new Error("fail to fetch from ws websocket inactive")}}})};export const DOCS_OBJ_get=async function(SESSION_ID,idP){if(!idP)return;if(idP==="_empty_panel_program"){return{_id:"_empty_panel_program",properties:{menuName:"_empty_panel_program",menuTitle:"_empty_panel_program",menuType:"component",renderType:"form"},progUi:[{id:"node-empty_panel_program",tagName:"xu-single-view",children:[{id:"node-empty_panel_program-span",tagName:"span",children:[],content:"",type:"element",attributes:{}}],content:"",type:"element",attributes:{}}],progDataSource:{},progFields:[],progEvents:[]}}var _session=_this.SESSION_OBJ[SESSION_ID];const app_id=_session.app_id;var views_ret;if(_session.engine_mode==="live_preview"){return await get_doc_from_studio(SESSION_ID,app_id,idP)}if(glb.register_startup_programs){func.common.db(SESSION_ID,"register_startup_programs",{prog_id:idP,build_id:_session?.build_info?.build||0})}views_ret=await read_objects_cache(SESSION_ID,idP,"DOCS_OBJ");if(!views_ret){if(typeof _this.IS_DOCKER==="undefined"&&typeof _this.IS_PROCESS_SERVER==="undefined"){let url=_this.func.common.get_url(SESSION_ID,"rpi","");if(["master"].includes(_this.APP_OBJ[app_id].app_type)){url+="get_doc_obj_raw"}else{url+="get_doc_obj_from_build"}let app_id_reference=_this.APP_OBJ[app_id].app_id_reference;const http=async function(){const response=await fetch(url,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","xu-gtp-token":_session.gtp_token,"xu-app-token":_session.app_token},body:JSON.stringify({app_id:app_id,doc_id:idP,build:_session.build_info.instance_build||_session.build_info.build||_session.opt.app_build_id,app_id_reference:app_id_reference,engine_mode:_session.engine_mode})});const json=await response.json();if(response){if(response&&response.status===400){return _this.func.utils.request_error(SESSION_ID,"ajax",response.statusText)}views_ret=json.data}};if(_session.engine_mode==="miniapp"){await http()}else{views_ret=await get_doc_from_websocket(SESSION_ID,app_id,idP)}}if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){var ret=await __.rpi.get_prog(app_id,idP);if(ret.data){views_ret=ret.data}}if(views_ret){if(views_ret.error){console.error(views_ret);views_ret="";return}await save_objects_cache(SESSION_ID,idP,"DOCS_OBJ",views_ret)}}return views_ret};export const save_objects_cache=async function(SESSION_ID,id,obj_type,data){var _session=_this.SESSION_OBJ[SESSION_ID];if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"||_session.worker_type==="Dev"){return}var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);var doc={_id:`cache_${build_id}_${obj_type}_${id}`,id:id,docType:"cache_objects",build_id:build_id.toString(),obj_type:obj_type,data:data};setTimeout(async function(){try{await db.get(doc_id);return}catch(e){if(await read_objects_cache(SESSION_ID,id,obj_type)){return}if(!doc.data||doc.data&&typeof doc.data==="string"&&doc.data.indexOf("error")>-1){return}try{return await db.put(doc)}catch(err){return}}},1e3)};export const read_objects_cache=async function(SESSION_ID,id,obj_type){if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){try{const data=fs.readFileSync("/var/xuda/progs/"+id+".json","utf8");return JSON.parse(data)}catch(err){console.error("read_objects_cache",err);return}}var _session=_this.SESSION_OBJ[SESSION_ID];var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);var ret;try{ret=await db.get(`cache_${build_id}_${obj_type}_${id}`);if(ret.data&&typeof ret.data==="string"&&ret.data.indexOf("error")>-1){return""}return ret.data}catch(err){return ret}};export const delete_objects_cache=async function(SESSION_ID,id,obj_type){const app_id=_this.SESSION_OBJ[SESSION_ID].app_id;var build_id=_session?.build_info?.build||0;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);try{var doc=await db.get(`cache_${build_id}_${obj_type}_${id}`);if(!doc)return;var ret=await db.remove(doc)}catch(err){return}return ret};export const load_objects_cache=async function(SESSION_ID){var _session=_this.SESSION_OBJ[SESSION_ID];if(typeof _this.IS_DOCKER!=="undefined"||typeof _this.IS_PROCESS_SERVER!=="undefined"){return}const app_id=_session.app_id;const db=await _this.func.utils.connect_pouchdb(SESSION_ID);const build_id=_this.APP_OBJ[app_id].app_build_id;let ret=await db.find({selector:{docType:"cache_objects",build_id:build_id}});for(let val of ret.docs){eval(val.obj_type)[_session.app_id][val.id]=val.data}};
@@ -30,10 +30,11 @@ export const get_doc_from_studio = async function (SESSION_ID, app_id, idP) {
30
30
  app_id,
31
31
  });
32
32
 
33
- $('body').on('live_preview_get_obj_response_' + idP, function (e, data) {
33
+ const _lp_handler = function (data) {
34
34
  resolve(data.data);
35
- $('body').off('live_preview_get_obj_response_' + idP);
36
- });
35
+ func.runtime.platform.off('live_preview_get_obj_response_' + idP, _lp_handler);
36
+ };
37
+ func.runtime.platform.on('live_preview_get_obj_response_' + idP, _lp_handler);
37
38
  }
38
39
  });
39
40
  };
@@ -54,11 +55,11 @@ export const get_doc_from_websocket = async function (SESSION_ID, app_id, idP) {
54
55
  service: 'get_doc_obj_from_build',
55
56
  data: { doc_id: idP },
56
57
  });
57
- $('body').on('get_doc_obj_from_build_response_' + idP, (e, data) => {
58
- // views_ret = data.data;
58
+ const _doc_handler = function (data) {
59
59
  resolve(data.data);
60
- $('body').off('get_doc_obj_from_build_response_' + idP);
61
- });
60
+ func.runtime.platform.off('get_doc_obj_from_build_response_' + idP, _doc_handler);
61
+ };
62
+ func.runtime.platform.on('get_doc_obj_from_build_response_' + idP, _doc_handler);
62
63
  } else {
63
64
  throw new Error('fail to fetch from ws websocket inactive');
64
65
  }