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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. function jclone(obj){
  2. return Array.isArray(obj) ? $.extend(true,[],obj) : $.extend(true,{},obj)
  3. }
  4. function jx(obj){
  5. return JSON.parse(JSON.stringify(obj))
  6. }
  7. function jx_r(name,val){
  8. if(typeof(val) == "function"){
  9. // clog("FN!",name,val)
  10. return val.name + "()"
  11. }
  12. return val
  13. }
  14. function jx_fn(obj){
  15. return JSON.parse(JSON.stringify(obj,jx_r))
  16. }
  17. function flat_proto(arr,d=1){
  18. var k,v,o,o2
  19. var cnt = 0
  20. o = []
  21. o2 = []
  22. o2 = arr
  23. while (d>0){
  24. // clog(d)
  25. o = o2
  26. o2 = []
  27. for (v of o){
  28. o2 = o2.concat(v)
  29. }
  30. d -= 1
  31. }
  32. return o2
  33. }
  34. function alog(arr,d=1){
  35. clog(...flat_proto(arr,d))
  36. }
  37. function spread(itr) {
  38. return [...itr]
  39. }
  40. function nop(){}
  41. function jx_cr(name,val){
  42. if(typeof(val) == "function"){
  43. // clog("FN!",name,val)
  44. return val.name + "()"
  45. }
  46. clog("JX-CR",this,arguments)
  47. return val
  48. }
  49. function dec_walker(argument) {
  50. var dw = {N:"dw",cnt:0,omap:new Map(),path:[]}
  51. // _obj
  52. var uobj
  53. return function (name,val){
  54. dw.path.push(name)
  55. var ret = val
  56. dw.cnt += 1
  57. if(typeof(val) == "function"){
  58. // clog("FN!",name,val)
  59. ret = val.name + "()"
  60. // return val.name + "()"
  61. }
  62. if (typeof(ret) != "object" || !ret){
  63. dw.path.pop()
  64. }
  65. if (typeof(ret) == "object" && ret){
  66. uobj = dw.omap.get(ret)
  67. dw.omap.setD(ret,dw.path + "")
  68. if (uobj){
  69. return uobj + "~"
  70. dw.path.pop()
  71. }
  72. }
  73. // clog("JX-DW",name,typeof(val),"\n",this,dw,arguments)
  74. return ret
  75. }
  76. }
  77. function jx_rec_fn(obj){
  78. // return JSON.parse(JSON.stringify(obj,jx_cr))
  79. // return JSON.stringify(obj,jx_cr)
  80. return JSON.stringify(obj,dec_walker())
  81. }
  82. function jx_rec_fn_clone(obj){
  83. return JSON.parse(jx_rec_fn(obj,jx_cr))
  84. }
  85. window.jx_rec_fn = jx_rec_fn
  86. window.jx_rec_fn_clone = jx_rec_fn_clone
  87. window.nop = nop
  88. window.fn_utils = {single_fns:{},}
  89. window.zlog = nop
  90. window.spread = spread
  91. window.keys = Object.keys
  92. window.entries = Object.entries
  93. window.items = Object.entries
  94. window.alog = alog
  95. window.flat_proto = flat_proto
  96. window.dev_glob = {}
  97. window.jc_u = "UTILS"
  98. window.jc = jclone
  99. window.jx = jx
  100. window.jx_fn = jx_rec_fn_clone
  101. window.jx_fn_orig = jx_fn
  102. window.jclone = jclone