You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

vcon0.js 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. // clog("dbg_+ vcon0")
  2. mod_templates_vcon = $(`<span><!--#include virtual="/ign/xf/vc/vcon.html" --></span>`)
  3. // C:\bspace\repos\jc4\ign4\xf\vc\vcon.html
  4. glob_mx.filmstrip_handlers[undefined] = function function_name(argument) {
  5. clog("default FN HANDLER")
  6. }
  7. // glob_mx.vcon = 0
  8. glob_mx.vcon = glob_mx.vcon || {
  9. fn:{}
  10. }
  11. glob_mx.filmstrip_tile_handlers[undefined] = function function_name(argument) {
  12. clog("default FN TILE HANDLER")
  13. }
  14. window.glob_dev_fns.sv_onContainerClick = function(a,b,c,d,e,f){
  15. clog("sv_onContainerClick",a.kv,{that:this,a,b,c,d,e,f})
  16. var event = a.kv.event
  17. clog(":EVENT",event)
  18. event.eobj ? 0 : event.eobj = {}
  19. event.eobj.triggerPin = a.kv.triggerPin
  20. // return
  21. if (event.stopPropagation && !a.kv.triggerPin ){
  22. // event.stopPropagation();
  23. // event.preventDefault();
  24. }
  25. // console.trace("sv_onContainerClick")
  26. return {}
  27. }
  28. function vspace_click(jevent,b,c,d,e){
  29. // clog("vspace_click.",{that:this,jevent,b,c,d,e},{t:jevent.target,ab:$(jevent.originalEvent.target).parents().addBack()})
  30. clog("vspace_click.")
  31. // clog("vspace_click.",{that:this,jevent,b,c,d,e},{t:jevent.target,ab:$(jevent.originalEvent.target).parents().addBack()})
  32. // clog("vspace_click_x",{that:this,jevent,b,c,d,e},{jevent,eobj:jevent.originalEvent.eobj})
  33. // clog("vspace_click",{that:this,jevent,b,c,d,e,args:arguments})
  34. jevent.originalEvent.eobj ? 0 : jevent.originalEvent.eobj = {}
  35. // jevent.originalEvent.eobj
  36. // set_corner
  37. // clog("vspace_click2",jevent,jevent.originalEvent.eobj)
  38. if (!("triggerPin" in jevent.originalEvent.eobj) || jevent.originalEvent.eobj.triggerPin){
  39. // $(jevent.originalEvent.target).has(".icont")
  40. // jevent.originalEvent.target
  41. // .addBack()
  42. let ab = $(jevent.originalEvent.target).parents().addBack()
  43. if (!ab.filter(".icont")[0]){
  44. return
  45. }
  46. if (ab.filter(".maf_vid_template")[0]){
  47. return
  48. }
  49. set_corner(
  50. $(jevent.originalEvent.target).parents().addBack().filter(".icont")[0].dataset.corner
  51. )
  52. /*
  53. clog("TRI",$(jevent.originalEvent.target).hasClass("icont"),
  54. $(jevent.originalEvent.target).parents().hasClass("icont"),
  55. $(jevent.originalEvent.target).parents().addBack().hasClass("icont"),
  56. // $(jevent.originalEvent.target).parents().hasClass("vspace"),
  57. "...",
  58. $(jevent.originalEvent.target).parents().addBack().filter(".icont")[0].dataset.corner,
  59. [jevent.originalEvent.target],)
  60. */
  61. } else {
  62. clog("~TRI~")
  63. }
  64. // clog("~TRI2~",!"triggerPin" in jevent.originalEvent.eobj,!("triggerPin" in jevent.originalEvent.eobj),"triggerPin" in jevent.originalEvent.eobj)
  65. }
  66. function init_apix_info(){
  67. clog("init_apix_info 4",window.msto,window.glob_td)
  68. }
  69. function _init_apix(){
  70. clog("init_apix")
  71. clog("init_apix_ ~4")
  72. try {
  73. init_apix_info()
  74. } catch (err){
  75. console.error("init_apix_info err:",err)
  76. }
  77. clog("init_apix...",jc(glob_mx.qxi_cb))
  78. saftly_remove(".plugin_top")
  79. // return
  80. // return
  81. var n,nj,p
  82. var ps0,ps1,ps2,ps3,ps4
  83. nj = mod_templates_vcon.find("#vspace_filmstrip_template")
  84. clog("init_apix",nj.length,nj)
  85. clog("init_apix",$(".vspace"),$("#videospace"))
  86. if (nj.length){
  87. // n= mod_templates_vcon.find("#vspace_filmstrip_template")[0].outerHTML
  88. n= mod_templates_vcon.find("#vspace_filmstrip_template").clone()
  89. ps0= mod_templates_vcon.find(".pseudo_vid_anon")[0].outerHTML
  90. ps1= mod_templates_vcon.find(".pseudo_vid_dflt")[0].outerHTML
  91. ps2= mod_templates_vcon.find(".pseudo_vid_named")[0].outerHTML
  92. ps3= mod_templates_vcon.find(".pseudo_num_1")[0].outerHTML
  93. n=$(n)
  94. glob_mx.override_fns.iapx_hdec? glob_mx.override_fns.iapx_hdec(n):0
  95. // n.find(".ic1").append(ps0)
  96. // n.find(".ic1").append(ps1)
  97. // n.find(".ic1").append(ps2)
  98. // n.find(".ic1,.ic2").append(ps3,ps1)
  99. // n.find(".ic1").append(ps3)
  100. // n.find(".ic1").append(p)
  101. add_node(n,`.vspace`,"append")
  102. // $(".vspace").off("click")
  103. $(".vspace").click(vspace_click)
  104. place_psuedo_vids()
  105. // html_hooks.create_video_tile(p)
  106. }
  107. }
  108. function td_init_apix(arg_obj,o,cb_meta){
  109. clog("init_apix")
  110. clog("rhc",arg_obj,o,cb_meta)
  111. if (o.skip_default_fn){
  112. return
  113. }
  114. clog("td_init_apix_ ~4")
  115. try {
  116. init_apix_info()
  117. } catch (err){
  118. console.error("init_apix_info err:",err)
  119. }
  120. // clog("init_apix...",jc(glob_mx.qxi_cb))
  121. saftly_remove(".plugin_top")
  122. // return
  123. // return
  124. var n,nj,p
  125. var ps0,ps1,ps2,ps3,ps4
  126. nj = mod_templates_vcon.find("#vspace_filmstrip_template")
  127. clog("init_apix",nj.length,nj)
  128. clog("init_apix",$(".vspace"),$("#videospace"))
  129. if (nj.length){
  130. // n= mod_templates_vcon.find("#vspace_filmstrip_template")[0].outerHTML
  131. n= mod_templates_vcon.find("#vspace_filmstrip_template").clone()
  132. ps0= mod_templates_vcon.find(".pseudo_vid_anon")[0].outerHTML
  133. ps1= mod_templates_vcon.find(".pseudo_vid_dflt")[0].outerHTML
  134. ps2= mod_templates_vcon.find(".pseudo_vid_named")[0].outerHTML
  135. ps3= mod_templates_vcon.find(".pseudo_num_1")[0].outerHTML
  136. n=$(n)
  137. glob_mx.override_fns.iapx_hdec? glob_mx.override_fns.iapx_hdec(n):0
  138. // n.find(".ic1").append(ps0)
  139. // n.find(".ic1").append(ps1)
  140. // n.find(".ic1").append(ps2)
  141. // n.find(".ic1,.ic2").append(ps3,ps1)
  142. // n.find(".ic1").append(ps3)
  143. // n.find(".ic1").append(p)
  144. add_node(n,`.vspace`,"append")
  145. $(".vspace").off("click")
  146. $(".vspace").click(vspace_click)
  147. place_psuedo_vids()
  148. // html_hooks.create_video_tile(p)
  149. }
  150. }
  151. function gen_arr(val,len){
  152. var arr = []
  153. if (len){
  154. arr[len-1]=1
  155. }
  156. arr.fill(val)
  157. return arr
  158. }
  159. function set_vid_names(){
  160. var i,k,v,j
  161. var cnt = 0
  162. j=$(".small_vid")
  163. for (v of j){
  164. cnt += 1
  165. $(v).css({
  166. "--vindex":`"${cnt}"`,
  167. "--vindex2":`"${cnt}~"`,
  168. })
  169. }
  170. }
  171. function oslc_0(obj,index,attrs){
  172. var ret = {}
  173. var i,j,k,v
  174. var i2,j2,k2,v2
  175. var key
  176. var val
  177. for ([i,k,v] of keyVal2(obj)) {
  178. if (typeof(index)=="object"){
  179. switch (index[0]){
  180. case "i":
  181. key = i
  182. break;
  183. case "k":
  184. key = k
  185. break;
  186. default:
  187. key = i
  188. }
  189. } else {
  190. key = v[index]
  191. }
  192. val = {}
  193. val.ik = {i,k,t:typeof(index),key}
  194. ret[key]=val
  195. for ([i2,k2,v2] of keyVal2(attrs)){
  196. val[k2] = v[v2]
  197. }
  198. }
  199. return ret
  200. }
  201. function oslc_0x(obj,index,attrs){
  202. var ret = {}
  203. var i,j,k,v
  204. var i2,j2,k2,v2
  205. var key
  206. var val
  207. for ([i,k,v] of keyVal2(obj)) {
  208. if (typeof(index)=="object"){
  209. switch (index[0]){
  210. case "i":
  211. key = i
  212. break;
  213. case "k":
  214. key = k
  215. break;
  216. default:
  217. key = i
  218. }
  219. } else {
  220. key = v[index]
  221. }
  222. val = {}
  223. val.ik = {i,k,t:typeof(index),key}
  224. ret[key]=val
  225. for ([i2,k2,v2] of keyVal2(attrs)){
  226. val[k2] = v[v2]
  227. }
  228. if (attrs == "val"){
  229. ret[key] = v
  230. // clog("VAL",attrs)
  231. }
  232. }
  233. return ret
  234. }
  235. function oslc(obj,index,attrs){
  236. var ret = {}
  237. var i,j,k,v
  238. var i2,j2,k2,v2
  239. var key
  240. var val
  241. for ([i,k,v] of keyVal2(obj)) {
  242. if (typeof(index)=="object"){
  243. switch (index[0]){
  244. case "i":
  245. key = i
  246. break;
  247. case "k":
  248. key = k
  249. break;
  250. default:
  251. key = i
  252. }
  253. } else {
  254. key = v[index]
  255. }
  256. val = {}
  257. val.ik = {i,k,t:typeof(index),key}
  258. ret[key]=val
  259. for ([i2,k2,v2] of keyVal2(attrs)){
  260. // val[k2] = v[v2]
  261. ret[key] = v[v2]
  262. }
  263. }
  264. return ret
  265. }
  266. function set_volume_(vloc,retx,k,vlow){
  267. clog("jev_v","set_volume_")
  268. if (vloc != msto.my_data.corner.loc ){
  269. retx[k].$container.addClass("a0 ax")
  270. retx[k].$container.removeClass("a1 a2")
  271. // let
  272. // let among_us = msto.my_data.corner.loc == "ic1" && glob_mx.among_us ? 0 : .09
  273. let among_us = msto.my_data.corner.loc == "ic1" && glob_mx.among_us ? 0 : vlow
  274. // let among_us = msto.my_data.corner.loc == "ic1" ? 0 : .1
  275. // retx[k].$container.find("audio,video").prop("volume",.1)
  276. // retx[k].$container.find("audio,video").prop("volume",among_us)
  277. let av = retx[k].$container.find("audio,video")
  278. av.prop("volume",among_us)
  279. av.addClass("vlow")
  280. av.removeClass("vhi")
  281. // let = retx[k].$container.find("audio,video").prop("volume",among_us)
  282. // clog(":~:_0",retx[k].isLocal,jc(loc),retx[k])
  283. // clog("dbg_a_10","!=")
  284. } else if (!retx[k].isLocal){
  285. // clog("dbg_a_10","elif")
  286. // } else if (!retx[k].isLocal){
  287. retx[k].$container.addClass("a1 ax")
  288. retx[k].$container.removeClass("a0 a2")
  289. // retx[k].$container.find("audio,video").prop("volume",1)
  290. let av = retx[k].$container.find("audio,video")
  291. av.prop("volume",1)
  292. av.removeClass("vlow")
  293. av.addClass("vhi")
  294. // clog("")
  295. // clog(":~:_1",retx[k].isLocal,jc(loc),retx[k])
  296. } else {
  297. // clog("dbg_a_10","else")
  298. retx[k].$container.addClass("a2 ax")
  299. retx[k].$container.removeClass("a1 a0")
  300. if (msto.my_data.corner.loc == "ic1" && glob_mx.among_us ){
  301. $(".fs_container").addClass("among_us")
  302. } else {
  303. $(".fs_container").removeClass("among_us")
  304. }
  305. // $(".local_corner").removeClass("local_corner")
  306. // $("."+vloc).parents(".cont").addClass("local_corner")
  307. // clog(":~:_2",retx[k].isLocal,jc(loc),retx[k])
  308. }
  309. }
  310. function place_remote_vids(){
  311. // return
  312. var i,k,v,j
  313. // clog("dbg_ place_remote_vids",msto.my_data.corner.loc,glob_mx.flags["VCON_INITED"])
  314. if (glob_dbg.prv_ret){
  315. return
  316. }
  317. // clog("dbg_a_","\n\n")
  318. // clog("dbg_ place_remote_vids")
  319. // console.trace("dbg_place_remote_vids")
  320. // j = $(".remote_vid,.local_vid")
  321. // var loc = msto.my_data.corner.loc
  322. // msto.conference.corners.corner_list
  323. // vsto.corners
  324. var loc = msto.conference.corners.corner_list[msto.my_data.corner.loc] || {}
  325. // 35
  326. // row_template
  327. // column_template
  328. // loc.row_template
  329. // loc.column_template
  330. // msto.conference.corners.corner_list[msto.my_data.corner.loc]
  331. // if (glob_mx.vcon.){}
  332. if (glob_mx.vcon.fn.grid_cb){
  333. glob_mx.vcon.fn.grid_cb()
  334. } else {
  335. glob_dev_fns.vdec ? glob_dev_fns.vdec() : 0
  336. $('.fs_container').css({
  337. // "--gt_rows": 65,
  338. // "--gt_columns": 65,
  339. "--gt_rows": loc.row_template,
  340. "--gt_columns": loc.column_template,
  341. // "--gt_columns": 35,
  342. })
  343. }
  344. var small_vids = get_smallvids()
  345. var retx = oslc_0x(get_smallvids(),"id","val")
  346. var vhi = 1
  347. var vlow = .089
  348. if (msto.private_local.vcon && !isNaN(msto.private_local.vcon.vlow) ){
  349. vlow = msto.private_local.vcon.vlow
  350. // msto.private_local.vcon.vlow
  351. }
  352. // oslc_0x(get_smallvids(),"id","val")
  353. //
  354. // return
  355. var animation_flag = 0
  356. var dev_flag = 3
  357. dev_flag = 3
  358. var iv,ik,ik_
  359. // for ([ik_,iv] of Object.entries(smallvids)){
  360. for ([ik,iv] of Object.entries(retx)){
  361. k = ik
  362. v = msto.participants[k] || {}
  363. // for ([k,v] of Object.entries(msto.participants)){
  364. // if
  365. // loc
  366. // clog(":-:",k,retx[k],v)
  367. var vloc
  368. // clog("vcon_qxi !.")
  369. if (!v.corner){
  370. // clog("vcon_qxi !")
  371. // continue
  372. vloc = msto.conference.corners.default_corner
  373. // continue
  374. } else {
  375. vloc = v.corner.loc
  376. }
  377. // clog("dbg_a_00",{k,v:jc(v)})
  378. // /*
  379. if (1){
  380. // retx[k].$container.removeClass("a1 a2 ax a0")
  381. if (vloc != msto.my_data.corner.loc ){
  382. } else if (!retx[k].isLocal){
  383. } else {
  384. $(".local_corner").removeClass("local_corner")
  385. $("."+vloc).parents(".cont").addClass("local_corner")
  386. }
  387. if (window.glob_dev_fns.jev_set_volume_){
  388. glob_dev_fns.jev_set_volume_(vloc,retx,k,vlow)
  389. } else {
  390. set_volume_(vloc,retx,k,vlow)
  391. }
  392. } else {}
  393. // */
  394. // clog(":~:__",retx[k],retx[k].isLocal)
  395. if (dev_flag && 2){
  396. if (retx[k].$container.parents(".vspace").length && !retx[k].$container.parents("."+vloc).length){
  397. animation_flag = 3
  398. // "."+v.corner.loc
  399. } else {
  400. animation_flag = 0
  401. }
  402. // dev_mv(retx[k].$container,"."+v.corner.loc,1)
  403. dev_mv(retx[k].$container,"."+vloc,animation_flag)
  404. }
  405. }
  406. if (dev_flag && 1){
  407. resizeThumbnailsForCustomView()
  408. }
  409. }
  410. function place_psuedo_vids(){
  411. var ps0,ps1,ps2,ps3,ps4
  412. place_remote_vids()
  413. return
  414. var arrs
  415. ps3= mod_templates_vcon.find(".pseudo_num_1")[0].outerHTML
  416. // ps3= mod_templates_vcon.find(".pseudo_vid_dflt")[0].outerHTML
  417. // ps3= mod_templates_vcon.find(".pseudo_vid_anon")[0].outerHTML
  418. // ps3= mod_templates_vcon.find(".pseudo_vid_named")[0].outerHTML
  419. arr = []
  420. // return
  421. $(".ic1").append(...gen_arr(ps3,13))
  422. $(".ic2").append(...gen_arr(ps3,2))
  423. $(".ic3").append(...gen_arr(ps3,3))
  424. $(".ic5").append(...gen_arr(ps3,2))
  425. set_vid_names()
  426. // $(".ic1").append(...gen_arr()
  427. }
  428. function fs_place(){
  429. // fs_place
  430. var smallvids_ = get_smallvids()
  431. var smallvids = []
  432. var k,v,j
  433. for (v of smallvids_){
  434. clog("?",v.container)
  435. smallvids.push(v.container)
  436. }
  437. // clog(smallvids.splice(0,3))
  438. // $(".ic1").append(smallvids.splice(0,3))
  439. $(".ic1").append(smallvids.splice(0,6))
  440. $(".ic2").append(smallvids.splice(0,3))
  441. // $(".ic3").append(smallvids.splice(0,3))
  442. $(".ic3").append(smallvids.splice(0))
  443. }
  444. function vcon_refresh(){
  445. }
  446. function set_cbs(){
  447. window.glob_mx.qxi_cb.SET_TILE_VIEW_DIMENSIONS = window.glob_mx.qxi_cb.SET_TILE_VIEW_DIMENSIONS || {}
  448. window.glob_mx.qxi_cb.SET_TILE_VIEW_DIMENSIONS.vcon = function(o){
  449. // return
  450. // clog("vcon_qxi","SET_TILE_VIEW_DIMENSIONS",jc(glob_mx.flags),o)
  451. if (glob_mx.flags.VCON_INITED){
  452. // vcon_event()
  453. // setTimeout(vcon_event,1000)
  454. setTimeout(vcon_event,1)
  455. }
  456. }
  457. window.glob_mx.qxi_cb.PARTICIPANT_JOINED.vcon = function(o){
  458. // clog("vcon_qxi","PARTICIPANT_JOINED",jc(glob_mx.flags),o)
  459. if (glob_mx.flags.VCON_INITED){
  460. // vcon_event()
  461. setTimeout(vcon_event,1000)
  462. }
  463. }
  464. window.glob_mx.qxi_cb.PARTICIPANT_LEFT.vcon = function(o){
  465. // clog("vcon_qxi","PARTICIPANT_LEFT",jc(glob_mx.flags),o)
  466. }
  467. window.glob_mx.qxi_cb.CONFERENCE_JOINED.vcon = function(o){
  468. // clog("vcon_qxi","CONFERENCE_JOINED",jc(glob_mx.flags),o)
  469. }
  470. clog("CONFERENCE_JOINED set_cbs vcon",jc(glob_mx.qxi_cb.CONFERENCE_JOINED))
  471. }
  472. set_cbs()
  473. // if
  474. if (window.reg_html_cb){
  475. // reg_html_cb()
  476. clog("CONFERENCE_JOINED reg_html_cb",jc(glob_mx.qxi_cb.CONFERENCE_JOINED))
  477. let run_now = !!glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix
  478. if (!glob_mx.cb.init_db.vcon){
  479. glob_mx.cb.init_db.vcon = nop
  480. }
  481. // glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix = function(){
  482. glob_mx.cb.init_db.init_apix = function(){
  483. run_html_cbs("vspace_filmstrip",{})
  484. run_html_cbs("tbx_top")
  485. run_html_cbs("cmenu_cont")
  486. }
  487. // reg_html_cb(glob_mx.override_fns.init_apix || _init_apix,"vspace_filmstrip","_init_apix",-1)
  488. reg_html_cb(td_init_apix,"vspace_filmstrip","_init_apix",0)
  489. // reg_html_cb(td_init_apix,"vspace_filmstrip","_init_apix",NaN,0)
  490. if (run_now){
  491. // glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix()
  492. glob_mx.cb.init_db.init_apix()
  493. }
  494. // clog("r1 init_apix_",run_now)
  495. } else if (glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix){
  496. // init_apix()
  497. glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix = glob_mx.override_fns.init_apix || _init_apix
  498. glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix()
  499. } else {
  500. glob_mx.qxi_cb.CONFERENCE_JOINED.init_apix = glob_mx.override_fns.init_apix || _init_apix
  501. }
  502. // }
  503. // set_cbs()
  504. // saftly_remove
  505. // glob_mx.override_fns
  506. // filmstrip_handlers
  507. // ...
  508. // glob_mx.filmstrip_handlers
  509. // glob_mx.flags.CONFERENCE_JOINED