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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. function sto_evh() {
  2. clog("sto_evh2",arguments,this)
  3. }
  4. // clog(getEventListeners())
  5. // window.addEventListener('storage',sto_evh )
  6. function replacer_(){
  7. clog("r",arguments,this)
  8. }
  9. function reviver(){
  10. clog("rv",arguments,this)
  11. }
  12. function replacer(key, value) {
  13. var {gk,gv,gthis,gthats,} = gr
  14. var bv = gr.gv==this
  15. var bt = gr.gthis==this
  16. // clog("r",bt,bv,arguments,this)
  17. var sq = ""
  18. if(!bt && !bv){
  19. cx = 0
  20. if (gr.cnt){
  21. // clog("CNT!!!!!")
  22. while(gr.gkeys){
  23. cx+=1
  24. if(cx>10){
  25. break
  26. }
  27. kx = gr.gkeys.pop()
  28. vx = gr.gthats.pop()
  29. if(vx == this){
  30. break
  31. }
  32. clog(vx == this,kx,vx)
  33. }
  34. }
  35. // clog("FF")
  36. // clog("FF")
  37. sq = "FF"
  38. } else if (bt && !bv) {
  39. // clog("TF")
  40. sq = "TF"
  41. } else if (!bt && bv) {
  42. // clog("FT")
  43. // gr.gthats.push(this)
  44. // gr.gkeys.push(key)
  45. if (gr.cnt > 1){
  46. gr.gthats.push(gr.gthis)
  47. gr.gkeys.push(gr.gk)
  48. }
  49. sq = "FT"
  50. } else {
  51. clog("We shouldn't be here")
  52. }
  53. // clog(sq,[gr.gk,gr.gv])
  54. // Exclude the 'age' property from the JSON string
  55. // if (key === "age") {
  56. // return undefined;
  57. // }
  58. if (typeof(value) != "object"){
  59. // clog("leaf",[...gr.gkeys,key],[...gr.gkeys,key].join("."),":",value,deep_prop_v0(gr.o,[...gr.gkeys,key]))
  60. var v3 = deep_prop_v3(gr.o,[...gr.gkeys,key])
  61. deep_prop_v3(gr.r,[...gr.gkeys,key],v3.v)
  62. var v0 = deep_prop_v0(gr.o,[...gr.gkeys,key])
  63. // clog("leaf",[...gr.gkeys,key],[...gr.gkeys,key].join("."),":",value,"!!!",deep_prop_v3(gr.o,[...gr.gkeys,key]),deep_prop_v0(gr.o,[...gr.gkeys,key]))
  64. clog("leaf",{"":[[...gr.gkeys,key],[...gr.gkeys,key].join("."),":"],value},"!!!",v3.v==v0,v3,v0)
  65. } else if (gr.cnt) {
  66. if (!value){/*null*/} else {
  67. var v3 = deep_prop_v3(gr.o,[...gr.gkeys,key])
  68. if (Array.isArray(value)) {
  69. deep_prop_v3(gr.r,[...gr.gkeys,key],[])
  70. } else {
  71. deep_prop_v3(gr.r,[...gr.gkeys,key],{})
  72. }
  73. }
  74. }
  75. gr.cnt +=1
  76. gr.gthis = this
  77. gr.gv = value
  78. gr.gk = key
  79. // clog("~",[value])
  80. return value;
  81. }
  82. // const jsonString = '{"name": "Alice", "age": 25, "birthdate": "1998-02-11T00:00:00Z"}';
  83. // Default reviver function to handle date strings
  84. function defaultReviver(key, value) {
  85. // clog()
  86. clog("rv",arguments,this)
  87. // Check if the value is a date string
  88. const dateFormat = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/;
  89. if (typeof value === 'string' && dateFormat.test(value)) {
  90. return new Date(value);
  91. }
  92. return value;
  93. }
  94. function deep_prop_v0(o,p){
  95. try {
  96. var arr = jc(p)
  97. var ret = o
  98. while (arr.length){
  99. ret = ret[arr.shift()]
  100. }
  101. return ret
  102. } catch(err){console.error("DEEP_PROP ERR:",err)}
  103. }
  104. function deep_prop_v3(o,p,set_val="DEFAULT_VAL"){
  105. // clog("deep_prop_v3",{o,p,set_val})
  106. try {
  107. var arr = jc(p)
  108. var ret = o
  109. var retm = {}
  110. var key
  111. if (typeof(arr)=="string"){
  112. arr = arr.split(".")
  113. }
  114. retm.arr = arr
  115. retm.arr0 = p
  116. while (arr.length){
  117. // clog("deep_prop",arr,ret)
  118. key = arr.shift()
  119. if (!arr.length){
  120. retm.v_exist = key in ret
  121. }
  122. if (!arr.length && set_val!="DEFAULT_VAL" ){
  123. retm.orig_val = ret[key]
  124. ret[key] = set_val
  125. }
  126. ret = ret[key]
  127. retm.v = ret
  128. // clog("arr_len:",arr.length)
  129. // set_val=="DEFAULT_VAL"
  130. }
  131. if (set_val!="DEFAULT_VAL"){
  132. // ret[key] = set_val
  133. retm.valset=true
  134. }
  135. // clog("deep_prop ret",ret)
  136. // return retm
  137. } catch(err){
  138. retm.err=err
  139. retm.key=key
  140. retm.v="ERR"
  141. // console.error("DEEP_PROP ERR:",err)
  142. }
  143. // clog("deep_prop_v3<",{o,p,set_val,retm})
  144. return retm
  145. }
  146. function o3_jdb0(o){
  147. // clo
  148. // gk = []
  149. // gv = "???"
  150. // gthis = ""
  151. // gthats = []
  152. y = {a:1,b:2,c:3,o:{arr:[1,2],z:{q:1}},"qqq":"///",
  153. o1:{a:"123"},
  154. }
  155. x = {c:"s",o:"","c2":1,b:{q:{"A":"????","B":{"~~":"~~~"},C:":"},"a00":""},"a0":1,"a":null,
  156. o1:{a:"ooo"},
  157. }
  158. // x = {c:"s",o:"","c2":1,b:{q:{"A":"????","B":{}}},"a0":1,"a":null}
  159. gr = {
  160. cnt:0,
  161. gkeys:[],
  162. gk:"init",
  163. gv:"init",
  164. gthis:"init",
  165. gthats:[],
  166. r:{},
  167. // r:jc(y),
  168. o:y,
  169. }
  170. var k,v
  171. // for
  172. s=JSON.stringify(x,replacer)
  173. clog(":",s)
  174. clog("~")
  175. // ox=JSON.parse(s,defaultReviver)
  176. // clog("~",ox)
  177. return gr
  178. }
  179. function t3_info(){
  180. var o,en,k,v,j,i
  181. for (o of z.scene.children){
  182. clog(o)
  183. }
  184. }
  185. t3_info()
  186. function o3_jdb(){
  187. var o3t = {
  188. uuid:"",id:"",type:"",name:"",
  189. geometry:{type:""},
  190. material:{
  191. color:{r:"",g:"",b:"",isColor:""}
  192. }
  193. }
  194. var o
  195. msto.o3 = []
  196. var ret = {arr:[]}
  197. for (o of z.scene.children){
  198. gr = {
  199. cnt:0,
  200. gkeys:[],
  201. gk:"init",
  202. gv:"init",
  203. gthis:"init",
  204. gthats:[],
  205. r:{},
  206. o,
  207. // r:jc(y),
  208. }
  209. var k,v
  210. // for
  211. s=JSON.stringify(o3t,replacer)
  212. ret.arr.push(gr)
  213. msto.o3.push(gr.r)
  214. }
  215. return ret
  216. }
  217. // geometry:{type:""},