airdcpp-webui 2.11.2 → 2.11.3-beta.1

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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.html +2 -2
  3. package/dist/js/{285.902dc3166e82226541a5.chunk.js → 285.c10a92f5e683562b290c.chunk.js} +2 -2
  4. package/dist/js/285.c10a92f5e683562b290c.chunk.js.gz +0 -0
  5. package/dist/js/{285.902dc3166e82226541a5.chunk.js.map → 285.c10a92f5e683562b290c.chunk.js.map} +1 -1
  6. package/dist/js/334.f0dae385c5c4aa9ceb6d.chunk.js +2 -0
  7. package/dist/js/334.f0dae385c5c4aa9ceb6d.chunk.js.gz +0 -0
  8. package/dist/js/334.f0dae385c5c4aa9ceb6d.chunk.js.map +1 -0
  9. package/dist/js/{424.b407aaf3218fa480b144.chunk.js → 424.2b137728423ffe5720b9.chunk.js} +1 -1
  10. package/dist/js/424.2b137728423ffe5720b9.chunk.js.gz +0 -0
  11. package/dist/js/{424.b407aaf3218fa480b144.chunk.js.map → 424.2b137728423ffe5720b9.chunk.js.map} +1 -1
  12. package/dist/js/{668.d0b45ae92f54a69beee3.chunk.js → 668.d8fc363a0da7c52c6cf3.chunk.js} +1 -1
  13. package/dist/js/668.d8fc363a0da7c52c6cf3.chunk.js.gz +0 -0
  14. package/dist/js/{668.d0b45ae92f54a69beee3.chunk.js.map → 668.d8fc363a0da7c52c6cf3.chunk.js.map} +1 -1
  15. package/dist/js/{69.8ca10b3d679cc4c52a20.chunk.js → 69.90201ebd79a3d236605f.chunk.js} +2 -2
  16. package/dist/js/69.90201ebd79a3d236605f.chunk.js.gz +0 -0
  17. package/dist/js/69.90201ebd79a3d236605f.chunk.js.map +1 -0
  18. package/dist/js/{702.99e6ce480dc579b6e542.chunk.js → 702.d36d38b2be52ab51c0a9.chunk.js} +1 -1
  19. package/dist/js/702.d36d38b2be52ab51c0a9.chunk.js.gz +0 -0
  20. package/dist/js/{702.99e6ce480dc579b6e542.chunk.js.map → 702.d36d38b2be52ab51c0a9.chunk.js.map} +1 -1
  21. package/dist/js/760.28a29fef05eb0889fc25.chunk.js +3 -0
  22. package/dist/js/{760.75d229a05d7b9bdf414b.chunk.js.LICENSE.txt → 760.28a29fef05eb0889fc25.chunk.js.LICENSE.txt} +0 -0
  23. package/dist/js/760.28a29fef05eb0889fc25.chunk.js.gz +0 -0
  24. package/dist/js/760.28a29fef05eb0889fc25.chunk.js.map +1 -0
  25. package/dist/js/{favorite-hubs.8e51f1debd3cd6c6d6c7.chunk.js → favorite-hubs.d78427e6a9006438d07b.chunk.js} +1 -1
  26. package/dist/js/favorite-hubs.d78427e6a9006438d07b.chunk.js.gz +0 -0
  27. package/dist/js/{favorite-hubs.8e51f1debd3cd6c6d6c7.chunk.js.map → favorite-hubs.d78427e6a9006438d07b.chunk.js.map} +1 -1
  28. package/dist/js/{filelists.a1ecb558a5c0c376191d.chunk.js → filelists.726450e0ff6e77eaa054.chunk.js} +1 -1
  29. package/dist/js/filelists.726450e0ff6e77eaa054.chunk.js.gz +0 -0
  30. package/dist/js/{filelists.a1ecb558a5c0c376191d.chunk.js.map → filelists.726450e0ff6e77eaa054.chunk.js.map} +1 -1
  31. package/dist/js/{files.9b2b25680e1e04de1931.chunk.js → files.50c047ffc599c58eb13a.chunk.js} +2 -2
  32. package/dist/js/files.50c047ffc599c58eb13a.chunk.js.gz +0 -0
  33. package/dist/js/{files.9b2b25680e1e04de1931.chunk.js.map → files.50c047ffc599c58eb13a.chunk.js.map} +1 -1
  34. package/dist/js/home.ed1091a84aa53f290563.chunk.js +3 -0
  35. package/dist/js/{home.21a1fe21d45ac82fafe5.chunk.js.LICENSE.txt → home.ed1091a84aa53f290563.chunk.js.LICENSE.txt} +0 -0
  36. package/dist/js/home.ed1091a84aa53f290563.chunk.js.gz +0 -0
  37. package/dist/js/home.ed1091a84aa53f290563.chunk.js.map +1 -0
  38. package/dist/js/{hubs.f336a1aeaac00fab20ce.chunk.js → hubs.eed2f41d894688465906.chunk.js} +2 -2
  39. package/dist/js/hubs.eed2f41d894688465906.chunk.js.gz +0 -0
  40. package/dist/js/{hubs.f336a1aeaac00fab20ce.chunk.js.map → hubs.eed2f41d894688465906.chunk.js.map} +1 -1
  41. package/dist/js/locales/{ca.7409d603c21de58635a6.chunk.js → ca.ed09d3a3d4bcca929ba1.chunk.js} +0 -0
  42. package/dist/js/locales/{ca.7409d603c21de58635a6.chunk.js.gz → ca.ed09d3a3d4bcca929ba1.chunk.js.gz} +0 -0
  43. package/dist/js/locales/{da.bd0c6f71e355d0794e71.chunk.js → da.6f60a77e9ef082dd3bf4.chunk.js} +0 -0
  44. package/dist/js/locales/{da.bd0c6f71e355d0794e71.chunk.js.gz → da.6f60a77e9ef082dd3bf4.chunk.js.gz} +0 -0
  45. package/dist/js/locales/{de.5adea2a7ce417c784479.chunk.js → de.3b7d3665460384259e82.chunk.js} +0 -0
  46. package/dist/js/locales/{de.5adea2a7ce417c784479.chunk.js.gz → de.3b7d3665460384259e82.chunk.js.gz} +0 -0
  47. package/dist/js/locales/{el.648369d465eb99118703.chunk.js → el.598573d2a5ed18804fe0.chunk.js} +0 -0
  48. package/dist/js/locales/{el.648369d465eb99118703.chunk.js.gz → el.598573d2a5ed18804fe0.chunk.js.gz} +0 -0
  49. package/dist/js/locales/{en.c66f69f706afd2da9eb5.chunk.js → en.f0fe75dca201449e5e47.chunk.js} +0 -0
  50. package/dist/js/locales/{en.c66f69f706afd2da9eb5.chunk.js.gz → en.f0fe75dca201449e5e47.chunk.js.gz} +0 -0
  51. package/dist/js/locales/{es.793f17d88083bf7f0738.chunk.js → es.cbe6378a22cf5ee485cd.chunk.js} +0 -0
  52. package/dist/js/locales/{es.793f17d88083bf7f0738.chunk.js.gz → es.cbe6378a22cf5ee485cd.chunk.js.gz} +0 -0
  53. package/dist/js/locales/{eu.010416cbe0a067839d4a.chunk.js → eu.7734fc077f26418d6b32.chunk.js} +0 -0
  54. package/dist/js/locales/{eu.010416cbe0a067839d4a.chunk.js.gz → eu.7734fc077f26418d6b32.chunk.js.gz} +0 -0
  55. package/dist/js/locales/{fi.7ecbf3197777fb8fd70f.chunk.js → fi.d1f8a5f4048236243b0f.chunk.js} +0 -0
  56. package/dist/js/locales/{fi.7ecbf3197777fb8fd70f.chunk.js.gz → fi.d1f8a5f4048236243b0f.chunk.js.gz} +0 -0
  57. package/dist/js/locales/fr.f46ce4fb57ed20dea8b5.chunk.js +1 -0
  58. package/dist/js/locales/fr.f46ce4fb57ed20dea8b5.chunk.js.gz +0 -0
  59. package/dist/js/locales/{hu.37c8f09717da5f1bc37c.chunk.js → hu.d0d2c38a03a3b38c2bc5.chunk.js} +0 -0
  60. package/dist/js/locales/{hu.37c8f09717da5f1bc37c.chunk.js.gz → hu.d0d2c38a03a3b38c2bc5.chunk.js.gz} +0 -0
  61. package/dist/js/locales/{it.9842f3b2b5bb3b7420c5.chunk.js → it.0c911d75c50ea83190ad.chunk.js} +0 -0
  62. package/dist/js/locales/{it.9842f3b2b5bb3b7420c5.chunk.js.gz → it.0c911d75c50ea83190ad.chunk.js.gz} +0 -0
  63. package/dist/js/locales/{nl.88085590f152551ec225.chunk.js → nl.36d288d75b3d3cbabf11.chunk.js} +0 -0
  64. package/dist/js/locales/{nl.88085590f152551ec225.chunk.js.gz → nl.36d288d75b3d3cbabf11.chunk.js.gz} +0 -0
  65. package/dist/js/locales/{no.cfa0a90ce428e087e846.chunk.js → no.8f2f465d5f785650175d.chunk.js} +0 -0
  66. package/dist/js/locales/{no.cfa0a90ce428e087e846.chunk.js.gz → no.8f2f465d5f785650175d.chunk.js.gz} +0 -0
  67. package/dist/js/locales/{pl.89540648cb16acad8d27.chunk.js → pl.06e51d7d7b09ba14714d.chunk.js} +0 -0
  68. package/dist/js/locales/{pl.89540648cb16acad8d27.chunk.js.gz → pl.06e51d7d7b09ba14714d.chunk.js.gz} +0 -0
  69. package/dist/js/locales/{pt-br.a537d1e531731dbec9dd.chunk.js → pt-br.9d19d92899e8c0917c66.chunk.js} +0 -0
  70. package/dist/js/locales/{pt-br.a537d1e531731dbec9dd.chunk.js.gz → pt-br.9d19d92899e8c0917c66.chunk.js.gz} +0 -0
  71. package/dist/js/locales/{pt.08213e494539393b14d1.chunk.js → pt.4390db3955db29b0e7dd.chunk.js} +0 -0
  72. package/dist/js/locales/{pt.08213e494539393b14d1.chunk.js.gz → pt.4390db3955db29b0e7dd.chunk.js.gz} +0 -0
  73. package/dist/js/locales/{ro.23f02315e6d9ab090aac.chunk.js → ro.705fcd327263fcf419bf.chunk.js} +0 -0
  74. package/dist/js/locales/{ro.23f02315e6d9ab090aac.chunk.js.gz → ro.705fcd327263fcf419bf.chunk.js.gz} +0 -0
  75. package/dist/js/locales/{ru.c775ae5709b4e2affc37.chunk.js → ru.8ab7e1c0d9eee7aa7afb.chunk.js} +0 -0
  76. package/dist/js/locales/{ru.c775ae5709b4e2affc37.chunk.js.gz → ru.8ab7e1c0d9eee7aa7afb.chunk.js.gz} +0 -0
  77. package/dist/js/locales/{sv.60ec4539680a48384a56.chunk.js → sv.be546e605910932db11f.chunk.js} +0 -0
  78. package/dist/js/locales/{sv.60ec4539680a48384a56.chunk.js.gz → sv.be546e605910932db11f.chunk.js.gz} +0 -0
  79. package/dist/js/locales/{tr.c19f95d7bf191aad9a74.chunk.js → tr.25a0d0f19e007e2febc9.chunk.js} +0 -0
  80. package/dist/js/locales/{tr.c19f95d7bf191aad9a74.chunk.js.gz → tr.25a0d0f19e007e2febc9.chunk.js.gz} +0 -0
  81. package/dist/js/locales/uk_UA.64a1a537c623ae0259dd.chunk.js +1 -0
  82. package/dist/js/locales/uk_UA.64a1a537c623ae0259dd.chunk.js.gz +0 -0
  83. package/dist/js/locales/{zh_CN.d27ea53dd79304789681.chunk.js → zh_CN.4b75674e4815a965ccea.chunk.js} +0 -0
  84. package/dist/js/locales/{zh_CN.d27ea53dd79304789681.chunk.js.gz → zh_CN.4b75674e4815a965ccea.chunk.js.gz} +0 -0
  85. package/dist/js/{main.d64158ea2453985dde98.entry.js → main.ad3d59f07b32feb5be60.entry.js} +3 -3
  86. package/dist/js/{main.d64158ea2453985dde98.entry.js.LICENSE.txt → main.ad3d59f07b32feb5be60.entry.js.LICENSE.txt} +0 -0
  87. package/dist/js/main.ad3d59f07b32feb5be60.entry.js.gz +0 -0
  88. package/dist/js/main.ad3d59f07b32feb5be60.entry.js.map +1 -0
  89. package/dist/js/{messages.e4523315258f6dab0f37.chunk.js → messages.d213dd0ac314a64b5a6c.chunk.js} +1 -1
  90. package/dist/js/messages.d213dd0ac314a64b5a6c.chunk.js.gz +0 -0
  91. package/dist/js/{messages.e4523315258f6dab0f37.chunk.js.map → messages.d213dd0ac314a64b5a6c.chunk.js.map} +1 -1
  92. package/dist/js/{queue.e52e481f79bce96a17e1.chunk.js → queue.2fcf7a1381f1fb4af03f.chunk.js} +1 -1
  93. package/dist/js/{queue.e52e481f79bce96a17e1.chunk.js.gz → queue.2fcf7a1381f1fb4af03f.chunk.js.gz} +0 -0
  94. package/dist/js/{queue.e52e481f79bce96a17e1.chunk.js.map → queue.2fcf7a1381f1fb4af03f.chunk.js.map} +1 -1
  95. package/dist/js/{search.321f771dd92b51431378.chunk.js → search.24ec8c5fe5f45b1180a9.chunk.js} +2 -2
  96. package/dist/js/search.24ec8c5fe5f45b1180a9.chunk.js.gz +0 -0
  97. package/dist/js/{search.321f771dd92b51431378.chunk.js.map → search.24ec8c5fe5f45b1180a9.chunk.js.map} +1 -1
  98. package/dist/js/settings.83541ccd8eafaab78d16.chunk.js +2 -0
  99. package/dist/js/settings.83541ccd8eafaab78d16.chunk.js.gz +0 -0
  100. package/dist/js/settings.83541ccd8eafaab78d16.chunk.js.map +1 -0
  101. package/dist/js/{share.ecb413c8d6a1cc8a6154.chunk.js → share.d94de2f3077842a88c25.chunk.js} +2 -2
  102. package/dist/js/share.d94de2f3077842a88c25.chunk.js.gz +0 -0
  103. package/dist/js/{share.ecb413c8d6a1cc8a6154.chunk.js.map → share.d94de2f3077842a88c25.chunk.js.map} +1 -1
  104. package/dist/js/{system-log.7aa8ba9d8b4a5711c4fc.chunk.js → system-log.b3fc65678cc7480e44e0.chunk.js} +1 -1
  105. package/dist/js/system-log.b3fc65678cc7480e44e0.chunk.js.gz +0 -0
  106. package/dist/js/{system-log.7aa8ba9d8b4a5711c4fc.chunk.js.map → system-log.b3fc65678cc7480e44e0.chunk.js.map} +1 -1
  107. package/dist/js/{transfers.5a7661c5701a462d4c53.chunk.js → transfers.5ec21f789068ff2e228f.chunk.js} +2 -2
  108. package/dist/js/transfers.5ec21f789068ff2e228f.chunk.js.gz +0 -0
  109. package/dist/js/{transfers.5a7661c5701a462d4c53.chunk.js.map → transfers.5ec21f789068ff2e228f.chunk.js.map} +1 -1
  110. package/dist/sw.js +1 -1
  111. package/dist/sw.js.gz +0 -0
  112. package/package.json +53 -51
  113. package/dist/js/285.902dc3166e82226541a5.chunk.js.gz +0 -0
  114. package/dist/js/334.f72694a737e72404ed6e.chunk.js +0 -2
  115. package/dist/js/334.f72694a737e72404ed6e.chunk.js.gz +0 -0
  116. package/dist/js/334.f72694a737e72404ed6e.chunk.js.map +0 -1
  117. package/dist/js/424.b407aaf3218fa480b144.chunk.js.gz +0 -0
  118. package/dist/js/668.d0b45ae92f54a69beee3.chunk.js.gz +0 -0
  119. package/dist/js/69.8ca10b3d679cc4c52a20.chunk.js.gz +0 -0
  120. package/dist/js/69.8ca10b3d679cc4c52a20.chunk.js.map +0 -1
  121. package/dist/js/702.99e6ce480dc579b6e542.chunk.js.gz +0 -0
  122. package/dist/js/760.75d229a05d7b9bdf414b.chunk.js +0 -3
  123. package/dist/js/760.75d229a05d7b9bdf414b.chunk.js.gz +0 -0
  124. package/dist/js/760.75d229a05d7b9bdf414b.chunk.js.map +0 -1
  125. package/dist/js/favorite-hubs.8e51f1debd3cd6c6d6c7.chunk.js.gz +0 -0
  126. package/dist/js/filelists.a1ecb558a5c0c376191d.chunk.js.gz +0 -0
  127. package/dist/js/files.9b2b25680e1e04de1931.chunk.js.gz +0 -0
  128. package/dist/js/home.21a1fe21d45ac82fafe5.chunk.js +0 -3
  129. package/dist/js/home.21a1fe21d45ac82fafe5.chunk.js.gz +0 -0
  130. package/dist/js/home.21a1fe21d45ac82fafe5.chunk.js.map +0 -1
  131. package/dist/js/hubs.f336a1aeaac00fab20ce.chunk.js.gz +0 -0
  132. package/dist/js/locales/fr.cf760489c7a0a9a02e31.chunk.js +0 -1
  133. package/dist/js/locales/fr.cf760489c7a0a9a02e31.chunk.js.gz +0 -0
  134. package/dist/js/locales/uk_UA.0678837b62a41e004e9c.chunk.js +0 -1
  135. package/dist/js/locales/uk_UA.0678837b62a41e004e9c.chunk.js.gz +0 -0
  136. package/dist/js/main.d64158ea2453985dde98.entry.js.gz +0 -0
  137. package/dist/js/main.d64158ea2453985dde98.entry.js.map +0 -1
  138. package/dist/js/messages.e4523315258f6dab0f37.chunk.js.gz +0 -0
  139. package/dist/js/search.321f771dd92b51431378.chunk.js.gz +0 -0
  140. package/dist/js/settings.3c031a77619c7df3a86e.chunk.js +0 -2
  141. package/dist/js/settings.3c031a77619c7df3a86e.chunk.js.gz +0 -0
  142. package/dist/js/settings.3c031a77619c7df3a86e.chunk.js.map +0 -1
  143. package/dist/js/share.ecb413c8d6a1cc8a6154.chunk.js.gz +0 -0
  144. package/dist/js/system-log.7aa8ba9d8b4a5711c4fc.chunk.js.gz +0 -0
  145. package/dist/js/transfers.5a7661c5701a462d4c53.chunk.js.gz +0 -0
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunkairdcpp_webui=self.webpackChunkairdcpp_webui||[]).push([[382],{24392:(e,t,n)=>{n.d(t,{Z:()=>a});var o=n(87537),r=n.n(o),i=n(23645),s=n.n(i)()(r());s.push([e.id,".virtual-table .cell-wrapper.connected, \r\n.virtual-table .cell-wrapper.connected span,\r\n.virtual-table .cell-wrapper.connected strong {\r\n color: green;\r\n}\r\n\r\n.virtual-table .cell-wrapper.connecting, \r\n.virtual-table .cell-wrapper.connecting span,\r\n.virtual-table .cell-wrapper.connecting strong {\r\n color: orange;\r\n}\r\n\r\n.virtual-table .cell-wrapper.disconnected, \r\n.virtual-table .cell-wrapper.disconnected span,\r\n.virtual-table .cell-wrapper.disconnected strong {\r\n color: dimslategray;\r\n}","",{version:3,sources:["webpack://./src/routes/FavoriteHubs/style.css"],names:[],mappings:"AAAA;;;EAGE,YAAY;AACd;;AAEA;;;EAGE,aAAa;AACf;;AAEA;;;EAGE,mBAAmB;AACrB",sourcesContent:[".virtual-table .cell-wrapper.connected, \r\n.virtual-table .cell-wrapper.connected span,\r\n.virtual-table .cell-wrapper.connected strong {\r\n color: green;\r\n}\r\n\r\n.virtual-table .cell-wrapper.connecting, \r\n.virtual-table .cell-wrapper.connecting span,\r\n.virtual-table .cell-wrapper.connecting strong {\r\n color: orange;\r\n}\r\n\r\n.virtual-table .cell-wrapper.disconnected, \r\n.virtual-table .cell-wrapper.disconnected span,\r\n.virtual-table .cell-wrapper.disconnected strong {\r\n color: dimslategray;\r\n}"],sourceRoot:""}]);const a=s},82633:(e,t,n)=>{n.d(t,{Z:()=>r});const o="share_profiles",r={MODULE_URL:o,PROFILES_URL:o,PROFILE_ADDED:"share_profile_added",PROFILE_UPDATED:"share_profile_updated",PROFILE_REMOVED:"share_profile_removed",HIDDEN_PROFILE_ID:1}},75426:(e,t,n)=>{n.d(t,{D:()=>a,Z:()=>c});var o=n(96486),r=n(82633),i=n(42090),s=n(2445);const a=e=>({id:e.id,name:e.str}),c=function(e,t,n,a=!0){return(0,i.Z)(e,(0,o.merge)(n,{urls:{profiles:r.Z.PROFILES_URL},dataConverters:{profiles:(e,{t:n})=>e.filter((e=>t||e.id!==r.Z.HIDDEN_PROFILE_ID)).map((e=>((e,t)=>{let n=e.str;return a&&e.id!==r.Z.HIDDEN_PROFILE_ID&&(n+=` (${(0,s.BU)(e.size,t)})`),Object.assign(Object.assign({},e),{str:n})})(e,n)))},onSocketConnected:(e,{refetchData:t})=>{e(r.Z.MODULE_URL,r.Z.PROFILE_ADDED,(()=>t())),e(r.Z.MODULE_URL,r.Z.PROFILE_UPDATED,(()=>t())),e(r.Z.MODULE_URL,r.Z.PROFILE_REMOVED,(()=>t()))}}))}},85244:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var o=n(85893),r=n(67294),i=n(518);const s="favorite_hubs",a=s;var c=n(48117),l=n(20097),d=n(76249),p=n(32347);const u={create:{displayName:"Add new",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.CREATE,handler:()=>{l.Z.push("/favorite-hubs/entries")}}},h={edit:{displayName:"Edit",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.EDIT,handler:({data:e})=>{l.Z.push(`/favorite-hubs/entries/${e.id}`)}},remove:{displayName:"Remove",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.REMOVE,confirmation:{content:"Are you sure that you want to remove the favorite hub {{item.name}}?",approveCaption:"Remove favorite hub",rejectCaption:"Don't remove"},handler:({data:e})=>i.Z.delete("favorite_hubs/"+e.id)}},v={create:{moduleId:p.jv.FAVORITE_HUBS,actions:u},edit:{moduleId:p.jv.FAVORITE_HUBS,actions:h}},m=(e,t)=>i.Z.patch("favorite_hubs/"+e.id,{password:t}),E=({data:e},t)=>m(e,t),_=e=>e.has_password,f={create:{displayName:"Set password",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.LOCK,filter:e=>!_(e),input:{content:"Set password for the hub {{item.name}}",approveCaption:"Set password",inputProps:{placeholder:"Enter password",type:"password"}},handler:E},change:{displayName:"Change password",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.EDIT,filter:_,input:{content:"Enter new password for the hub {{item.name}}",approveCaption:"Update password",inputProps:{placeholder:"Enter password",type:"password"}},handler:E},remove:{displayName:"Remove password",access:d.PS.FAVORITE_HUBS_EDIT,icon:c.Z.REMOVE,filter:_,confirmation:{content:"Are you sure that you want to reset the password of the hub {{item.name}}?",approveCaption:"Remove password",rejectCaption:"Don't remove"},handler:({data:e})=>m(e,null)}},y={moduleId:p.jv.FAVORITE_HUBS,subId:"password",actions:f};var b=n(10293),I=n.n(b),w=n(93836);const C=I().createStore({_viewName:"favorite_hub_view",_apiUrl:"favorite_hubs",mixins:[(0,w.Z)("name")]});var O=n(28427),g=n(92245),A=n(82633),D=n(75426),S=n(95887),T=n(43496),R=n(18603);const N=({locals:e})=>{const t=(0,r.useRef)();return(0,r.useEffect)((()=>{t.current&&("boolean"==typeof e.value?t.current.indeterminate=!1:t.current.indeterminate=!0)}),[e.value]),(0,o.jsx)("input",Object.assign({ref:t,type:"checkbox"},e.attrs,{onChange:t=>{!1===e.value?e.onChange(null):e.onChange(t.target.checked)}}),void 0)},j={renderCheckbox:e=>(0,o.jsx)(N,{locals:e},void 0)},Z=S.ZP.form.Form.templates.checkbox.clone(j),U=[{id:d.pJ.DISABLED,name:"Disabled"},{id:d.pJ.ACTIVE_MODE,name:"Active mode"},{id:d.pJ.PASSIVE_MODE,name:"Passive mode"}],x=[{key:"generic",title:"Hub properties",type:d.Y2.STRUCT,definitions:[{key:"name",title:"Name",type:d.Y2.STRING},{key:"hub_url",title:"Hub URL",type:d.Y2.STRING},{key:"hub_description",title:"Hub description",type:d.Y2.STRING,optional:!0},{key:"share_profile",title:"Share profile",type:d.Y2.NUMBER,help:"Custom share profiles can be selected only after entering an ADC hub address (starting with adc:// or adcs://)",optional:!0},{key:"auto_connect",title:"Auto connect",type:d.Y2.BOOLEAN}]},{key:"user",title:"User setting overrides",type:d.Y2.STRUCT,definitions:[{key:"nick",title:"Nick",type:d.Y2.STRING,optional:!0},{key:"user_description",title:"User description",type:d.Y2.STRING,optional:!0}]},{key:"connectivityV4",title:"Connectivity setting overrides (IPv4)",type:d.Y2.STRUCT,definitions:[{key:"connection_mode_v4",title:"Connectivity mode",type:d.Y2.NUMBER,optional:!0,options:U},{key:"connection_ip_v4",title:"IP address",type:d.Y2.STRING,optional:!0}]},{key:"connectivityV6",title:"Connectivity setting overrides (IPv6)",type:d.Y2.STRUCT,definitions:[{key:"connection_mode_v6",title:"Connectivity mode",type:d.Y2.NUMBER,optional:!0,options:U},{key:"connection_ip_v6",title:"IP address",type:d.Y2.STRING,optional:!0}]},{key:"misc",title:"Miscellaneous overrides",type:d.Y2.STRUCT,definitions:[{key:"use_main_chat_notify",title:"Use chat notification",type:d.Y2.BOOLEAN,optional:!0},{key:"show_joins",title:"Show joins/parts",type:d.Y2.BOOLEAN,optional:!0},{key:"away_message",title:"Away message",type:d.Y2.TEXT,optional:!0}]}],F=e=>!!e&&(0===e.indexOf("adc://")||0===e.indexOf("adcs://"));class k extends r.Component{constructor(e){super(e),this.isNew=()=>!this.props.hubEntry,this.onFieldChanged=(e,t,n)=>-1===e.indexOf("hub_url")||F(t.generic.hub_url)||t.share_profile===A.Z.HIDDEN_PROFILE_ID?null:Promise.resolve({share_profile:null}),this.save=()=>this.form.save(),this.onSave=e=>{const t=(n=e,Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},n.generic),n.user),n.connectivityV4),n.connectivityV6),n.misc));var n;return this.isNew()?i.Z.post(a,t):i.Z.patch(`favorite_hubs/${this.props.hubEntry.id}`,t)},this.onFieldSetting=(e,t,n)=>{if("share_profile"===e){const e=n.generic?n.generic.hub_url:void 0;Object.assign(t,{nullOption:this.nullOption,factory:S.ZP.form.Select,options:(o=this.props.profiles,r=e,o.filter((e=>F(r)||e.id===A.Z.HIDDEN_PROFILE_ID)).map(D.D).map(R.kE)),transformer:R.QA})}else"connection_mode_v4"===e||"connection_mode_v6"===e?Object.assign(t,{nullOption:this.nullOption,transformer:R.QA}):"use_main_chat_notify"!==e&&"show_joins"!==e||Object.assign(t,{template:Z,transformer:{format:e=>void 0===e?null:e,parse:e=>e}});var o,r},this.formValue=(e=>{if(e)return{generic:e,user:e,connectivityV4:e,connectivityV6:e,misc:e}})(e.hubEntry),this.definitions=(0,R.rv)(x,e.favT),this.nullOption={value:"null",text:e.favT.translate("Global default")}}render(){const{translate:e}=this.props.favT,t=e(this.isNew()?"Add favorite hub":"Edit favorite hub");return(0,o.jsx)(O.Z,Object.assign({className:"fav-hub",title:t,onApprove:this.save,closable:!1,icon:c.Z.FAVORITE},this.props,{children:(0,o.jsx)(T.Z,{ref:e=>this.form=e,onFieldChanged:this.onFieldChanged,onFieldSetting:this.onFieldSetting,onSave:this.onSave,fieldDefinitions:this.definitions,value:this.formValue,location:this.props.location},void 0)}),void 0)}}k.displayName="FavoriteHubDialog";const P=(0,g.ZP)((0,D.Z)(k,!0,{urls:{hubEntry:({match:e},t)=>e.params.entryId?t.get(`favorite_hubs/${e.params.entryId}`):Promise.resolve(void 0)}}),"entries/:entryId?");var L=n(78230),V=n(35108),B=n(68126),H=n(94184),G=n.n(H),Y=n(16119),M=n(93281),K=n(35936),$=n(5977);const J=e=>{switch(e.id){case d.lh.CONNECTING:return"yellow remove";case d.lh.CONNECTED:return"grey remove";case d.lh.DISCONNECTED:return"green video play"}return""};class Q extends r.Component{constructor(){super(...arguments),this.handleCreateSession=()=>{const{location:e,rowDataGetter:t}=this.props;Y.Z.createSession(e,t().hub_url,M.Z)},this.handleRemoveSession=()=>{const{cellData:e}=this.props;Y.Z.removeSession({id:e.current_hub_id})},this.getClickAction=()=>{switch(this.props.cellData.id){case d.lh.CONNECTING:case d.lh.CONNECTED:return this.handleRemoveSession;case d.lh.DISCONNECTED:default:return this.handleCreateSession}}}render(){const{cellData:e,width:t}=this.props;return(0,o.jsxs)("div",Object.assign({className:"connect-state"},{children:[(0,o.jsx)(K.Z,{icon:G()("icon large link",J(e)),onClick:this.getClickAction()},void 0),t>120&&e.str]}),void 0)}}const W=(0,$.EN)(Q);var z=n(47021),X=n(45807),q=n(66883),ee=n(93379),te=n.n(ee),ne=n(7795),oe=n.n(ne),re=n(90569),ie=n.n(re),se=n(3565),ae=n.n(se),ce=n(19216),le=n.n(ce),de=n(44589),pe=n.n(de),ue=n(24392),he={};he.styleTagTransform=pe(),he.setAttributes=ae(),he.insert=ie().bind(null,"head"),he.domAPI=oe(),he.insertStyleElement=le(),te()(ue.Z,he),ue.Z&&ue.Z.locals&&ue.Z.locals;var ve=n(8717),me=n(91768),Ee=n(89519),_e=n(4333);const fe=({cellData:e,rowDataGetter:t,t:n})=>(0,o.jsx)(z.B2,{caption:e?(0,o.jsx)("strong",{children:(0,ve.Iu)("Set",n,p.jv.FAVORITE_HUBS)},void 0):(0,ve.Iu)("Not set",n,p.jv.FAVORITE_HUBS),actions:y,itemData:t},void 0);class ye extends r.Component{constructor(){super(...arguments),this.rowClassNameGetter=e=>{switch(e.connect_state.id){case d.lh.CONNECTING:return"connecting";case d.lh.CONNECTED:return"connected";case d.lh.DISCONNECTED:return"disconnected"}return""},this.onChangeAutoConnect=(e,t)=>(0,Ee.h9)((()=>{return n=t,o={auto_connect:e},i.Z.patch("favorite_hubs/"+n.id,o);var n,o}),this.props.t),this.favT=(0,ve.HY)(this.props.t,p.jv.FAVORITE_HUBS)}render(){const e=(0,o.jsx)(X.Z,{actions:v.create,actionId:"create"},void 0),t=q.Z.hasAccess(d.PS.HUBS_EDIT);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(L.Z,Object.assign({rowClassNameGetter:this.rowClassNameGetter,footerData:e,store:C,moduleId:p.jv.FAVORITE_HUBS},{children:[(0,o.jsx)(V.Column,{name:"State",width:45,columnKey:"connect_state",cell:t&&(0,o.jsx)(W,{},void 0),flexGrow:3},void 0),(0,o.jsx)(V.Column,{name:"Name",width:150,columnKey:"name",flexGrow:6,cell:(0,o.jsx)(B.CW,{actions:v.edit,remoteMenuId:_e.Z.FAVORITE_HUB},void 0)},void 0),(0,o.jsx)(V.Column,{name:"Address",width:270,columnKey:"hub_url",flexGrow:3,hideWidth:700},void 0),(0,o.jsx)(V.Column,{name:"Auto connect",width:65,columnKey:"auto_connect",cell:t&&(0,o.jsx)(B.wn,{onChange:this.onChangeAutoConnect,type:"toggle"},void 0)},void 0),(0,o.jsx)(V.Column,{name:"Share profile",width:100,columnKey:"share_profile",flexGrow:1},void 0),(0,o.jsx)(V.Column,{name:"Nick",width:100,columnKey:"nick",flexGrow:1},void 0),(0,o.jsx)(V.Column,{name:"Password",width:100,columnKey:"has_password",cell:(0,o.jsx)(fe,{},void 0)},void 0)]}),void 0),(0,o.jsx)(P,{favT:this.favT},void 0)]},void 0)}}ye.displayName="FavoriteHubs";const be=(0,me.Z)()(ye)}}]);
2
- //# sourceMappingURL=favorite-hubs.8e51f1debd3cd6c6d6c7.chunk.js.map
2
+ //# sourceMappingURL=favorite-hubs.d78427e6a9006438d07b.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"js/favorite-hubs.8e51f1debd3cd6c6d6c7.chunk.js","mappings":"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","sources":["webpack://airdcpp-webui/./src/routes/FavoriteHubs/style.css","webpack://airdcpp-webui/./src/constants/ShareProfileConstants.ts","webpack://airdcpp-webui/./src/decorators/ShareProfileDecorator.tsx","webpack://airdcpp-webui/./src/constants/FavoriteHubConstants.ts","webpack://airdcpp-webui/./src/actions/ui/FavoriteHubActions.ts","webpack://airdcpp-webui/./src/actions/ui/FavoriteHubPasswordActions.ts","webpack://airdcpp-webui/./src/stores/FavoriteHubStore.js","webpack://airdcpp-webui/./src/components/form/fields/IndeterminateCheckboxField.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/FavoriteHubDialog.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/ConnectStateCell.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/style.css?f7f3","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/FavoriteHubs.tsx","webpack://airdcpp-webui/./src/services/api/FavoriteHubApi.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".virtual-table .cell-wrapper.connected, \\r\\n.virtual-table .cell-wrapper.connected span,\\r\\n.virtual-table .cell-wrapper.connected strong {\\r\\n color: green;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.connecting, \\r\\n.virtual-table .cell-wrapper.connecting span,\\r\\n.virtual-table .cell-wrapper.connecting strong {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.disconnected, \\r\\n.virtual-table .cell-wrapper.disconnected span,\\r\\n.virtual-table .cell-wrapper.disconnected strong {\\r\\n color: dimslategray;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/FavoriteHubs/style.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE,YAAY;AACd;;AAEA;;;EAGE,aAAa;AACf;;AAEA;;;EAGE,mBAAmB;AACrB\",\"sourcesContent\":[\".virtual-table .cell-wrapper.connected, \\r\\n.virtual-table .cell-wrapper.connected span,\\r\\n.virtual-table .cell-wrapper.connected strong {\\r\\n color: green;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.connecting, \\r\\n.virtual-table .cell-wrapper.connecting span,\\r\\n.virtual-table .cell-wrapper.connecting strong {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.disconnected, \\r\\n.virtual-table .cell-wrapper.disconnected span,\\r\\n.virtual-table .cell-wrapper.disconnected strong {\\r\\n color: dimslategray;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","const MODULE_URL = 'share_profiles';\r\nexport default {\r\n MODULE_URL: MODULE_URL,\r\n PROFILES_URL: MODULE_URL,\r\n\r\n PROFILE_ADDED: 'share_profile_added',\r\n PROFILE_UPDATED: 'share_profile_updated',\r\n PROFILE_REMOVED: 'share_profile_removed',\r\n\r\n HIDDEN_PROFILE_ID: 1\r\n}\r\n;\r\n","import * as React from 'react';\r\nimport { merge } from 'lodash';\r\n\r\nimport ShareProfileConstants from 'constants/ShareProfileConstants';\r\n\r\nimport DataProviderDecorator, { \r\n DataProviderDecoratorChildProps, DataProviderDecoratorSettings, DataConverter \r\n} from 'decorators/DataProviderDecorator';\r\n\r\nimport { formatSize } from 'utils/ValueFormat';\r\n\r\nimport * as API from 'types/api';\r\nimport { TFunction } from 'i18next';\r\n\r\n\r\ninterface ShareProfileDecoratorDataProps {\r\n profiles: API.ShareProfile[];\r\n}\r\n\r\nexport const profileToEnumValue = (profile: API.ShareProfile) => {\r\n return {\r\n id: profile.id,\r\n name: profile.str,\r\n };\r\n};\r\n\r\nexport type ShareProfileDecoratorChildProps = DataProviderDecoratorChildProps & ShareProfileDecoratorDataProps;\r\n\r\nconst ShareProfileDecorator = function <PropsT extends object>(\r\n Component: React.ComponentType<PropsT & ShareProfileDecoratorChildProps>, \r\n listHidden: boolean, \r\n dataProviderDecoratorSettings?: DataProviderDecoratorSettings<PropsT, ShareProfileDecoratorDataProps>,\r\n addSize: boolean = true\r\n) {\r\n const convertProfile = (profile: API.ShareProfile, t: TFunction): API.ShareProfile => {\r\n let str = profile.str;\r\n if (addSize && profile.id !== ShareProfileConstants.HIDDEN_PROFILE_ID) {\r\n str += ` (${formatSize(profile.size, t)})`;\r\n }\r\n\r\n return {\r\n ...profile,\r\n str,\r\n };\r\n };\r\n\r\n const convertProfiles: DataConverter<PropsT> = (data: API.ShareProfile[], { t }) => {\r\n const profiles = data\r\n .filter(p => listHidden || p.id !== ShareProfileConstants.HIDDEN_PROFILE_ID)\r\n .map(p => convertProfile(p, t));\r\n\r\n return profiles;\r\n };\r\n\r\n return DataProviderDecorator<PropsT, ShareProfileDecoratorDataProps>(\r\n Component, \r\n merge(dataProviderDecoratorSettings, {\r\n urls: {\r\n profiles: ShareProfileConstants.PROFILES_URL,\r\n },\r\n dataConverters: {\r\n profiles: convertProfiles,\r\n },\r\n onSocketConnected: (addSocketListener, { refetchData }) => {\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_ADDED, () => refetchData());\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_UPDATED, () => refetchData());\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_REMOVED, () => refetchData());\r\n },\r\n } as DataProviderDecoratorSettings<PropsT, ShareProfileDecoratorDataProps>)\r\n );\r\n};\r\n\r\nexport default ShareProfileDecorator;\r\n","const MODULE_URL = 'favorite_hubs';\r\n\r\nexport default {\r\n MODULE_URL: MODULE_URL,\r\n HUBS_URL: MODULE_URL,\r\n};\r\n","\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport History from 'utils/History';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\n\r\nconst handleCreate = () => {\r\n History.push('/favorite-hubs/entries');\r\n};\r\n\r\nconst handleEdit: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n History.push(`/favorite-hubs/entries/${hub.id}`);\r\n};\r\n\r\nconst handleRemove: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n return SocketService.delete(FavoriteHubConstants.HUBS_URL + '/' + hub.id);\r\n};\r\n\r\n\r\nconst FavoriteHubCreateActions: UI.ActionListType<undefined> = {\r\n create: {\r\n displayName: 'Add new',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.CREATE,\r\n handler: handleCreate,\r\n },\r\n};\r\n\r\nconst FavoriteHubEditActions: UI.ActionListType<API.FavoriteHubEntry> = {\r\n edit: { \r\n displayName: 'Edit',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.EDIT,\r\n handler: handleEdit,\r\n },\r\n remove: {\r\n displayName: 'Remove',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.REMOVE,\r\n confirmation: {\r\n content: 'Are you sure that you want to remove the favorite hub {{item.name}}?',\r\n approveCaption: 'Remove favorite hub',\r\n rejectCaption: `Don't remove`,\r\n },\r\n handler: handleRemove,\r\n //notifications: {\r\n // onSuccess: 'The hub {{item.name}} was removed successfully',\r\n //}\r\n }\r\n};\r\n\r\n\r\nexport default {\r\n create: {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n actions: FavoriteHubCreateActions,\r\n },\r\n edit: {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n actions: FavoriteHubEditActions,\r\n }\r\n};\r\n","\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\n\r\nconst sendPassword = (\r\n hub: API.FavoriteHubEntry,\r\n password: string | null\r\n) => {\r\n return SocketService.patch(FavoriteHubConstants.HUBS_URL + '/' + hub.id, { \r\n password \r\n });\r\n};\r\n\r\n\r\nconst handleSetPassword: UI.ActionHandler<API.FavoriteHubEntry> = (\r\n { data: hub },\r\n password: string\r\n) => {\r\n return sendPassword(hub, password);\r\n};\r\n\r\nconst handleRemovePassword: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n return sendPassword(hub, null);\r\n};\r\n\r\nconst hasPassword = (data: API.FavoriteHubEntry) => data.has_password;\r\nconst noPassword = (data: API.FavoriteHubEntry) => !hasPassword(data);\r\n\r\n\r\nconst FavoriteHubPasswordActions: UI.ActionListType<API.FavoriteHubEntry> = {\r\n create: {\r\n displayName: 'Set password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT, \r\n icon: IconConstants.LOCK,\r\n filter: noPassword,\r\n input: {\r\n content: 'Set password for the hub {{item.name}}',\r\n approveCaption: 'Set password',\r\n inputProps: {\r\n placeholder: 'Enter password',\r\n type: 'password',\r\n }\r\n },\r\n handler: handleSetPassword,\r\n },\r\n change: {\r\n displayName: 'Change password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT, \r\n icon: IconConstants.EDIT,\r\n filter: hasPassword,\r\n input: {\r\n content: 'Enter new password for the hub {{item.name}}',\r\n approveCaption: 'Update password',\r\n inputProps: {\r\n placeholder: 'Enter password',\r\n type: 'password',\r\n }\r\n },\r\n handler: handleSetPassword,\r\n },\r\n remove: {\r\n displayName: 'Remove password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.REMOVE,\r\n filter: hasPassword,\r\n confirmation: {\r\n content: 'Are you sure that you want to reset the password of the hub {{item.name}}?',\r\n approveCaption: 'Remove password',\r\n rejectCaption: `Don't remove`,\r\n },\r\n handler: handleRemovePassword,\r\n },\r\n};\r\n\r\nexport default {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n subId: 'password',\r\n actions: FavoriteHubPasswordActions,\r\n};\r\n","import Reflux from 'reflux';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport ViewStoreMixin from 'mixins/ViewStoreMixin';\r\n\r\n\r\nexport default Reflux.createStore({\r\n _viewName: 'favorite_hub_view',\r\n _apiUrl: FavoriteHubConstants.MODULE_URL,\r\n mixins: [ ViewStoreMixin('name') ],\r\n});\r\n","import { useEffect, useRef } from 'react';\r\nimport * as React from 'react';\r\n\r\nimport * as UI from 'types/ui';\r\nimport t from 'utils/tcomb-form';\r\n\r\n\r\ninterface IndeterminateCheckboxProps {\r\n locals: UI.FormLocals<any, boolean | null, {}>;\r\n}\r\n\r\nconst IndeterminateCheckbox: React.FC<IndeterminateCheckboxProps> = ({ locals }) => {\r\n const inputRef = useRef<HTMLInputElement>();\r\n\r\n useEffect(\r\n () => {\r\n if (!inputRef.current) {\r\n return;\r\n }\r\n\r\n if (typeof locals.value === 'boolean') {\r\n inputRef.current.indeterminate = false;\r\n } else {\r\n inputRef.current.indeterminate = true;\r\n }\r\n },\r\n [ locals.value ]\r\n );\r\n\r\n return (\r\n <input \r\n ref={ inputRef }\r\n type=\"checkbox\"\r\n {...locals.attrs}\r\n onChange={(evt) => {\r\n // Toggle between true/false/indeterminate\r\n if (locals.value === false) {\r\n locals.onChange(null);\r\n } else {\r\n locals.onChange(evt.target.checked);\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\ntype TCombTemplate = { \r\n renderCheckbox: (locals: UI.FormLocals<any, boolean | null, {}>) => React.ReactNode; \r\n};\r\n\r\nconst IndeterminateCheckboxTemplate: TCombTemplate = {\r\n renderCheckbox(locals) {\r\n return (\r\n <IndeterminateCheckbox\r\n locals={ locals }\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport const IndeterminateCheckboxField = t.form.Form.templates.checkbox.clone(IndeterminateCheckboxTemplate);","import { Component } from 'react';\r\nimport Modal from 'components/semantic/Modal';\r\n\r\nimport ModalRouteDecorator, { ModalRouteDecoratorChildProps } from 'decorators/ModalRouteDecorator';\r\n\r\nimport ShareProfileConstants from 'constants/ShareProfileConstants';\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\n\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport ShareProfileDecorator, { profileToEnumValue, ShareProfileDecoratorChildProps } from 'decorators/ShareProfileDecorator';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport t from 'utils/tcomb-form';\r\n\r\nimport Form, { FormFieldChangeHandler, FormFieldSettingHandler, FormSaveHandler } from 'components/form/Form';\r\nimport { normalizeEnumValue, intTransformer, translateForm } from 'utils/FormUtils';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { FavoriteHubEntry } from 'types/api';\r\nimport { IndeterminateCheckboxField } from 'components/form/fields/IndeterminateCheckboxField';\r\n\r\n\r\nconst ConnectivityModeOptions: API.SettingEnumOption[] = [\r\n {\r\n id: API.ConnectivityModeEnum.DISABLED,\r\n name: 'Disabled'\r\n }, {\r\n id: API.ConnectivityModeEnum.ACTIVE_MODE,\r\n name: 'Active mode'\r\n }, {\r\n id: API.ConnectivityModeEnum.PASSIVE_MODE,\r\n name: 'Passive mode'\r\n }\r\n];\r\n\r\nconst Fields: UI.FormFieldDefinition[] = [\r\n {\r\n key: 'generic',\r\n title: 'Hub properties',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'name',\r\n title: 'Name',\r\n type: API.SettingTypeEnum.STRING,\r\n }, {\r\n key: 'hub_url',\r\n title: 'Hub URL',\r\n type: API.SettingTypeEnum.STRING,\r\n }, {\r\n key: 'hub_description',\r\n title: 'Hub description',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }, {\r\n key: 'share_profile',\r\n title: 'Share profile',\r\n type: API.SettingTypeEnum.NUMBER,\r\n // tslint:disable-next-line:max-line-length\r\n help: 'Custom share profiles can be selected only after entering an ADC hub address (starting with adc:// or adcs://)',\r\n optional: true,\r\n }, {\r\n key: 'auto_connect',\r\n title: 'Auto connect',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n }\r\n ]\r\n }, {\r\n key: 'user',\r\n title: 'User setting overrides',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'nick',\r\n title: 'Nick',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }, {\r\n key: 'user_description',\r\n title: 'User description',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ], \r\n }, {\r\n key: 'connectivityV4',\r\n title: 'Connectivity setting overrides (IPv4)',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'connection_mode_v4',\r\n title: 'Connectivity mode',\r\n type: API.SettingTypeEnum.NUMBER,\r\n optional: true,\r\n options: ConnectivityModeOptions,\r\n }, {\r\n key: 'connection_ip_v4',\r\n title: 'IP address',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ]\r\n }, {\r\n key: 'connectivityV6',\r\n title: 'Connectivity setting overrides (IPv6)',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'connection_mode_v6',\r\n title: 'Connectivity mode',\r\n type: API.SettingTypeEnum.NUMBER,\r\n optional: true,\r\n options: ConnectivityModeOptions,\r\n }, {\r\n key: 'connection_ip_v6',\r\n title: 'IP address',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ]\r\n }, {\r\n key: 'misc',\r\n title: 'Miscellaneous overrides',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'use_main_chat_notify',\r\n title: 'Use chat notification',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n optional: true,\r\n }, {\r\n key: 'show_joins',\r\n title: 'Show joins/parts',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n optional: true,\r\n }, {\r\n key: 'away_message',\r\n title: 'Away message',\r\n type: API.SettingTypeEnum.TEXT,\r\n optional: true,\r\n }\r\n ]\r\n }\r\n];\r\n\r\ninterface Entry extends UI.FormValueMap {\r\n generic: Pick<FavoriteHubEntry, 'name' | 'hub_url' | 'hub_description' | 'auto_connect' | 'share_profile'>;\r\n user: Pick<FavoriteHubEntry, 'nick' | 'user_description'>;\r\n connectivityV4: Pick<FavoriteHubEntry, 'connection_mode_v4' | 'connection_ip_v4'>;\r\n connectivityV6: Pick<FavoriteHubEntry, 'connection_mode_v6' | 'connection_ip_v6'>;\r\n misc: Pick<FavoriteHubEntry, 'use_main_chat_notify' | 'show_joins' | 'away_message'>;\r\n}\r\n\r\nconst toFormEntry = (entry?: API.FavoriteHubEntry): Entry | undefined => {\r\n if (!entry) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n generic: entry,\r\n user: entry,\r\n connectivityV4: entry,\r\n connectivityV6: entry,\r\n misc: entry,\r\n };\r\n};\r\n\r\nconst toFavoriteHub = (entry: RecursivePartial<Entry>): RecursivePartial<API.FavoriteHubEntry> => {\r\n return {\r\n ...entry.generic,\r\n ...entry.user,\r\n ...entry.connectivityV4,\r\n ...entry.connectivityV6,\r\n ...entry.misc,\r\n };\r\n};\r\n\r\nconst isAdcHub = (hubUrl?: string) => !!hubUrl && (hubUrl.indexOf('adc://') === 0 || hubUrl.indexOf('adcs://') === 0);\r\n\r\n// Get selection values for the profiles field\r\nconst getFieldProfiles = (profiles: API.SettingEnumOption[], url?: string): UI.FormOption[] => {\r\n return profiles\r\n .filter(p => isAdcHub(url) || p.id === ShareProfileConstants.HIDDEN_PROFILE_ID)\r\n .map(profileToEnumValue)\r\n .map(normalizeEnumValue);\r\n};\r\n\r\ninterface FavoriteHubDialogProps {\r\n //t: TFunction;\r\n favT: UI.ModuleTranslator;\r\n}\r\n\r\ninterface DataProps {\r\n hubEntry?: API.FavoriteHubEntry;\r\n}\r\n\r\ninterface RouteProps {\r\n entryId: string;\r\n}\r\n\r\ntype Props = FavoriteHubDialogProps & DataProps & ShareProfileDecoratorChildProps & \r\n ModalRouteDecoratorChildProps<RouteProps>;\r\n\r\nclass FavoriteHubDialog extends Component<Props> {\r\n static displayName = 'FavoriteHubDialog';\r\n\r\n formValue: Entry | undefined;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.formValue = toFormEntry(props.hubEntry);\r\n this.definitions = translateForm(Fields, props.favT);\r\n this.nullOption = { \r\n value: 'null', \r\n text: props.favT.translate('Global default') \r\n };\r\n }\r\n\r\n isNew = () => {\r\n return !this.props.hubEntry;\r\n }\r\n\r\n nullOption: UI.FormOption<string>;\r\n definitions: UI.FormFieldDefinition[];\r\n\r\n form: Form<Entry>;\r\n\r\n onFieldChanged: FormFieldChangeHandler<Entry> = (id, value, hasChanges) => {\r\n if (id.indexOf('hub_url') !== -1) {\r\n if (!isAdcHub(value.generic!.hub_url) && value.share_profile !== ShareProfileConstants.HIDDEN_PROFILE_ID) {\r\n // Reset share profile\r\n return Promise.resolve({ \r\n share_profile: null \r\n });\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n save = () => {\r\n return this.form.save();\r\n }\r\n\r\n onSave: FormSaveHandler<Entry> = (changedFields) => {\r\n const hubEntry = toFavoriteHub(changedFields);\r\n if (this.isNew()) {\r\n return SocketService.post(FavoriteHubConstants.HUBS_URL, hubEntry);\r\n }\r\n\r\n return SocketService.patch(`${FavoriteHubConstants.HUBS_URL}/${this.props.hubEntry!.id}`, hubEntry);\r\n }\r\n\r\n onFieldSetting: FormFieldSettingHandler<Entry> = (id, fieldOptions, formValue) => {\r\n if (id === 'share_profile') {\r\n const hubUrl = formValue.generic ? formValue.generic.hub_url : undefined;\r\n\r\n // Since the options are added dynamically based on the URL protocol, they must be \r\n // normalized to use the tcomb format\r\n Object.assign(fieldOptions, {\r\n nullOption: this.nullOption,\r\n factory: t.form.Select,\r\n options: getFieldProfiles(this.props.profiles, hubUrl),\r\n transformer: intTransformer,\r\n });\r\n } else if (id === 'connection_mode_v4' || id === 'connection_mode_v6') {\r\n Object.assign(fieldOptions, {\r\n nullOption: this.nullOption,\r\n transformer: intTransformer,\r\n });\r\n } else if (id === 'use_main_chat_notify' || id === 'show_joins') {\r\n Object.assign(fieldOptions, {\r\n template: IndeterminateCheckboxField,\r\n transformer: {\r\n format: (value: boolean | null) => value === undefined ? null : value,\r\n parse: (value: boolean | null) => value\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { translate } = this.props.favT;\r\n const title = translate(this.isNew() ? 'Add favorite hub' : 'Edit favorite hub');\r\n return (\r\n <Modal \r\n className=\"fav-hub\" \r\n title={ title } \r\n onApprove={ this.save } \r\n closable={ false } \r\n icon={ IconConstants.FAVORITE } \r\n { ...this.props }\r\n >\r\n <Form<Entry>\r\n ref={ c => this.form = c! }\r\n onFieldChanged={ this.onFieldChanged }\r\n onFieldSetting={ this.onFieldSetting }\r\n onSave={ this.onSave }\r\n fieldDefinitions={ this.definitions }\r\n value={ this.formValue }\r\n location={ this.props.location }\r\n />\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default ModalRouteDecorator<FavoriteHubDialogProps, RouteProps>(\r\n ShareProfileDecorator(\r\n FavoriteHubDialog, \r\n true,\r\n {\r\n urls: {\r\n hubEntry: ({ match }, socket) => {\r\n if (!match.params.entryId) {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n return socket.get(`${FavoriteHubConstants.HUBS_URL}/${match.params.entryId}`);\r\n }\r\n }\r\n }\r\n ),\r\n 'entries/:entryId?',\r\n);","import { Component } from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport HubActions from 'actions/reflux/HubActions';\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\n\r\nimport Icon from 'components/semantic/Icon';\r\nimport { RowWrapperCellChildProps } from 'components/table/RowWrapperCell';\r\n\r\nimport * as API from 'types/api';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\n\r\n\r\nexport interface ConnectStateCellProps extends \r\n RowWrapperCellChildProps<API.FavoriteHubConnectState, API.FavoriteHubEntry> {\r\n\r\n}\r\n\r\nconst getIcon = (state: API.FavoriteHubConnectState) => {\r\n switch (state.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n return 'yellow remove';\r\n case API.FavoriteHubConnectStateEnum.CONNECTED:\r\n return 'grey remove';\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n return 'green video play';\r\n default:\r\n }\r\n\r\n return '';\r\n};\r\n\r\nclass ConnectStateCell extends Component<ConnectStateCellProps & RouteComponentProps> {\r\n handleCreateSession = () => {\r\n const { location, rowDataGetter } = this.props;\r\n HubActions.createSession(location, rowDataGetter!().hub_url, HubSessionStore);\r\n }\r\n\r\n handleRemoveSession = () => {\r\n const { cellData } = this.props;\r\n HubActions.removeSession({ id: cellData!.current_hub_id });\r\n }\r\n\r\n getClickAction = () => {\r\n switch (this.props.cellData!.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n case API.FavoriteHubConnectStateEnum.CONNECTED: return this.handleRemoveSession;\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n default: return this.handleCreateSession;\r\n }\r\n }\r\n\r\n render() {\r\n const { cellData, width } = this.props;\r\n return (\r\n <div className=\"connect-state\">\r\n <Icon \r\n icon={ classNames('icon large link', getIcon(cellData!)) } \r\n onClick={ this.getClickAction() }\r\n />\r\n { width! > 120 && cellData!.str }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst Decorated = withRouter(ConnectStateCell);\r\n\r\nexport default Decorated;","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!./style.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!./style.css\";\n export default content && content.locals ? content.locals : undefined;\n","import * as React from 'react';\r\n\r\nimport FavoriteHubActions from 'actions/ui/FavoriteHubActions';\r\nimport FavoriteHubPasswordActions from 'actions/ui/FavoriteHubPasswordActions';\r\nimport FavoriteHubStore from 'stores/FavoriteHubStore';\r\nimport FavoriteHubDialog from './FavoriteHubDialog';\r\n\r\nimport VirtualTable from 'components/table/VirtualTable';\r\nimport { Column } from 'fixed-data-table-2';\r\nimport { CheckboxCell, ActionMenuCell } from 'components/table/Cell';\r\nimport ConnectStateCell from './ConnectStateCell';\r\n\r\nimport { TableActionMenu } from 'components/menu';\r\nimport ActionButton from 'components/ActionButton';\r\nimport { RowWrapperCellChildProps } from 'components/table/RowWrapperCell';\r\n\r\nimport LoginStore from 'stores/LoginStore';\r\n\r\nimport '../style.css';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { translate, getModuleT } from 'utils/TranslationUtils';\r\nimport { withTranslation, WithTranslation } from 'react-i18next';\r\nimport { updateFavoriteHub } from 'services/api/FavoriteHubApi';\r\nimport { runBackgroundSocketAction } from 'utils/ActionUtils';\r\nimport MenuConstants from 'constants/MenuConstants';\r\n\r\n\r\nconst PasswordCell: React.FC<RowWrapperCellChildProps<string, API.FavoriteHubEntry>> = (\r\n { cellData, rowDataGetter, t }\r\n) => (\r\n <TableActionMenu \r\n caption={ cellData ? (\r\n <strong>\r\n { translate('Set', t!, UI.Modules.FAVORITE_HUBS) }\r\n </strong>\r\n ) : translate('Not set', t!, UI.Modules.FAVORITE_HUBS) } \r\n actions={ FavoriteHubPasswordActions } \r\n itemData={ rowDataGetter! }\r\n />\r\n);\r\n\r\nclass FavoriteHubs extends React.Component<WithTranslation> {\r\n static displayName = 'FavoriteHubs';\r\n\r\n rowClassNameGetter = (rowData: API.FavoriteHubEntry) => {\r\n switch (rowData.connect_state.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n return 'connecting';\r\n case API.FavoriteHubConnectStateEnum.CONNECTED:\r\n return 'connected';\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n return 'disconnected';\r\n default:\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onChangeAutoConnect = (checked: boolean, rowData: API.FavoriteHubEntry) => {\r\n return runBackgroundSocketAction(\r\n () => updateFavoriteHub(rowData, { \r\n auto_connect: checked \r\n }),\r\n this.props.t\r\n );\r\n }\r\n\r\n favT = getModuleT(this.props.t, UI.Modules.FAVORITE_HUBS);\r\n render() {\r\n const footerData = (\r\n <ActionButton \r\n actions={ FavoriteHubActions.create }\r\n actionId=\"create\"\r\n />\r\n );\r\n\r\n const editAccess = LoginStore.hasAccess(API.AccessEnum.HUBS_EDIT);\r\n return (\r\n <>\r\n <VirtualTable\r\n rowClassNameGetter={ this.rowClassNameGetter }\r\n footerData={ footerData }\r\n store={ FavoriteHubStore }\r\n moduleId={ UI.Modules.FAVORITE_HUBS }\r\n >\r\n <Column\r\n name=\"State\"\r\n width={ 45 }\r\n columnKey=\"connect_state\"\r\n cell={ editAccess && <ConnectStateCell/> }\r\n flexGrow={ 3 }\r\n />\r\n <Column\r\n name=\"Name\"\r\n width={ 150 }\r\n columnKey=\"name\"\r\n flexGrow={ 6 }\r\n cell={ \r\n <ActionMenuCell \r\n actions={ FavoriteHubActions.edit }\r\n remoteMenuId={ MenuConstants.FAVORITE_HUB }\r\n /> \r\n }\r\n />\r\n <Column\r\n name=\"Address\"\r\n width={ 270 }\r\n columnKey=\"hub_url\"\r\n flexGrow={ 3 }\r\n hideWidth={ 700 }\r\n />\r\n <Column\r\n name=\"Auto connect\"\r\n width={ 65 }\r\n columnKey=\"auto_connect\"\r\n cell={ editAccess && (\r\n <CheckboxCell \r\n onChange={ this.onChangeAutoConnect } \r\n type=\"toggle\"\r\n />\r\n ) }\r\n />\r\n <Column\r\n name=\"Share profile\"\r\n width={ 100 }\r\n columnKey=\"share_profile\"\r\n flexGrow={ 1 }\r\n />\r\n <Column\r\n name=\"Nick\"\r\n width={ 100 }\r\n columnKey=\"nick\"\r\n flexGrow={ 1 }\r\n />\r\n <Column\r\n name=\"Password\"\r\n width={ 100 }\r\n columnKey=\"has_password\"\r\n cell={ <PasswordCell/> }\r\n />\r\n </VirtualTable>\r\n <FavoriteHubDialog\r\n favT={ this.favT }\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FavoriteHubs);\r\n","import * as API from 'types/api';\r\n\r\nimport SocketService from 'services/SocketService';\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\n\r\n\r\nexport const updateFavoriteHub = (\r\n hub: API.FavoriteHubEntry, \r\n data: Partial<API.FavoriteHubEntryBase>\r\n) => {\r\n return SocketService.patch(FavoriteHubConstants.HUBS_URL + '/' + hub.id, data);\r\n};"],"names":["___CSS_LOADER_EXPORT___","push","module","id","MODULE_URL","PROFILES_URL","PROFILE_ADDED","PROFILE_UPDATED","PROFILE_REMOVED","HIDDEN_PROFILE_ID","profileToEnumValue","profile","name","str","Component","listHidden","dataProviderDecoratorSettings","addSize","merge","urls","profiles","dataConverters","data","t","filter","p","map","size","convertProfile","onSocketConnected","addSocketListener","refetchData","FavoriteHubCreateActions","create","displayName","access","icon","IconConstants","handler","History","FavoriteHubEditActions","edit","hub","remove","confirmation","content","approveCaption","rejectCaption","SocketService","FavoriteHubConstants","moduleId","actions","sendPassword","password","handleSetPassword","hasPassword","has_password","FavoriteHubPasswordActions","input","inputProps","placeholder","type","change","subId","_viewName","_apiUrl","mixins","ViewStoreMixin","IndeterminateCheckbox","locals","inputRef","useRef","useEffect","current","value","indeterminate","ref","attrs","onChange","evt","target","checked","IndeterminateCheckboxTemplate","renderCheckbox","IndeterminateCheckboxField","ConnectivityModeOptions","Fields","key","title","definitions","optional","help","options","isAdcHub","hubUrl","indexOf","FavoriteHubDialog","constructor","props","super","isNew","this","hubEntry","onFieldChanged","hasChanges","generic","hub_url","share_profile","ShareProfileConstants","Promise","resolve","save","form","onSave","changedFields","entry","user","connectivityV4","connectivityV6","misc","onFieldSetting","fieldOptions","formValue","undefined","Object","assign","nullOption","factory","url","transformer","template","format","parse","toFormEntry","favT","text","translate","render","Modal","className","onApprove","closable","Form","c","fieldDefinitions","location","ModalRouteDecorator","ShareProfileDecorator","match","socket","params","entryId","get","getIcon","state","ConnectStateCell","handleCreateSession","rowDataGetter","HubActions","HubSessionStore","handleRemoveSession","cellData","current_hub_id","getClickAction","width","Icon","onClick","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","PasswordCell","caption","itemData","FavoriteHubs","rowClassNameGetter","rowData","connect_state","onChangeAutoConnect","updateFavoriteHub","auto_connect","footerData","ActionButton","FavoriteHubActions","actionId","editAccess","LoginStore","VirtualTable","store","FavoriteHubStore","Column","columnKey","cell","flexGrow","remoteMenuId","MenuConstants","hideWidth","withTranslation"],"sourceRoot":""}
1
+ {"version":3,"file":"js/favorite-hubs.d78427e6a9006438d07b.chunk.js","mappings":"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","sources":["webpack://airdcpp-webui/./src/routes/FavoriteHubs/style.css","webpack://airdcpp-webui/./src/constants/ShareProfileConstants.ts","webpack://airdcpp-webui/./src/decorators/ShareProfileDecorator.tsx","webpack://airdcpp-webui/./src/constants/FavoriteHubConstants.ts","webpack://airdcpp-webui/./src/actions/ui/FavoriteHubActions.ts","webpack://airdcpp-webui/./src/actions/ui/FavoriteHubPasswordActions.ts","webpack://airdcpp-webui/./src/stores/FavoriteHubStore.js","webpack://airdcpp-webui/./src/components/form/fields/IndeterminateCheckboxField.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/FavoriteHubDialog.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/ConnectStateCell.tsx","webpack://airdcpp-webui/./src/routes/FavoriteHubs/style.css?f7f3","webpack://airdcpp-webui/./src/routes/FavoriteHubs/components/FavoriteHubs.tsx","webpack://airdcpp-webui/./src/services/api/FavoriteHubApi.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".virtual-table .cell-wrapper.connected, \\r\\n.virtual-table .cell-wrapper.connected span,\\r\\n.virtual-table .cell-wrapper.connected strong {\\r\\n color: green;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.connecting, \\r\\n.virtual-table .cell-wrapper.connecting span,\\r\\n.virtual-table .cell-wrapper.connecting strong {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.disconnected, \\r\\n.virtual-table .cell-wrapper.disconnected span,\\r\\n.virtual-table .cell-wrapper.disconnected strong {\\r\\n color: dimslategray;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/FavoriteHubs/style.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE,YAAY;AACd;;AAEA;;;EAGE,aAAa;AACf;;AAEA;;;EAGE,mBAAmB;AACrB\",\"sourcesContent\":[\".virtual-table .cell-wrapper.connected, \\r\\n.virtual-table .cell-wrapper.connected span,\\r\\n.virtual-table .cell-wrapper.connected strong {\\r\\n color: green;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.connecting, \\r\\n.virtual-table .cell-wrapper.connecting span,\\r\\n.virtual-table .cell-wrapper.connecting strong {\\r\\n color: orange;\\r\\n}\\r\\n\\r\\n.virtual-table .cell-wrapper.disconnected, \\r\\n.virtual-table .cell-wrapper.disconnected span,\\r\\n.virtual-table .cell-wrapper.disconnected strong {\\r\\n color: dimslategray;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","const MODULE_URL = 'share_profiles';\r\nexport default {\r\n MODULE_URL: MODULE_URL,\r\n PROFILES_URL: MODULE_URL,\r\n\r\n PROFILE_ADDED: 'share_profile_added',\r\n PROFILE_UPDATED: 'share_profile_updated',\r\n PROFILE_REMOVED: 'share_profile_removed',\r\n\r\n HIDDEN_PROFILE_ID: 1\r\n}\r\n;\r\n","import * as React from 'react';\r\nimport { merge } from 'lodash';\r\n\r\nimport ShareProfileConstants from 'constants/ShareProfileConstants';\r\n\r\nimport DataProviderDecorator, { \r\n DataProviderDecoratorChildProps, DataProviderDecoratorSettings, DataConverter \r\n} from 'decorators/DataProviderDecorator';\r\n\r\nimport { formatSize } from 'utils/ValueFormat';\r\n\r\nimport * as API from 'types/api';\r\nimport { TFunction } from 'i18next';\r\n\r\n\r\ninterface ShareProfileDecoratorDataProps {\r\n profiles: API.ShareProfile[];\r\n}\r\n\r\nexport const profileToEnumValue = (profile: API.ShareProfile) => {\r\n return {\r\n id: profile.id,\r\n name: profile.str,\r\n };\r\n};\r\n\r\nexport type ShareProfileDecoratorChildProps = DataProviderDecoratorChildProps & ShareProfileDecoratorDataProps;\r\n\r\nconst ShareProfileDecorator = function <PropsT extends object>(\r\n Component: React.ComponentType<PropsT & ShareProfileDecoratorChildProps>, \r\n listHidden: boolean, \r\n dataProviderDecoratorSettings?: DataProviderDecoratorSettings<PropsT, ShareProfileDecoratorDataProps>,\r\n addSize: boolean = true\r\n) {\r\n const convertProfile = (profile: API.ShareProfile, t: TFunction): API.ShareProfile => {\r\n let str = profile.str;\r\n if (addSize && profile.id !== ShareProfileConstants.HIDDEN_PROFILE_ID) {\r\n str += ` (${formatSize(profile.size, t)})`;\r\n }\r\n\r\n return {\r\n ...profile,\r\n str,\r\n };\r\n };\r\n\r\n const convertProfiles: DataConverter<PropsT> = (data: API.ShareProfile[], { t }) => {\r\n const profiles = data\r\n .filter(p => listHidden || p.id !== ShareProfileConstants.HIDDEN_PROFILE_ID)\r\n .map(p => convertProfile(p, t));\r\n\r\n return profiles;\r\n };\r\n\r\n return DataProviderDecorator<PropsT, ShareProfileDecoratorDataProps>(\r\n Component, \r\n merge(dataProviderDecoratorSettings, {\r\n urls: {\r\n profiles: ShareProfileConstants.PROFILES_URL,\r\n },\r\n dataConverters: {\r\n profiles: convertProfiles,\r\n },\r\n onSocketConnected: (addSocketListener, { refetchData }) => {\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_ADDED, () => refetchData());\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_UPDATED, () => refetchData());\r\n addSocketListener(ShareProfileConstants.MODULE_URL, ShareProfileConstants.PROFILE_REMOVED, () => refetchData());\r\n },\r\n } as DataProviderDecoratorSettings<PropsT, ShareProfileDecoratorDataProps>)\r\n );\r\n};\r\n\r\nexport default ShareProfileDecorator;\r\n","const MODULE_URL = 'favorite_hubs';\r\n\r\nexport default {\r\n MODULE_URL: MODULE_URL,\r\n HUBS_URL: MODULE_URL,\r\n};\r\n","\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport History from 'utils/History';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\n\r\nconst handleCreate = () => {\r\n History.push('/favorite-hubs/entries');\r\n};\r\n\r\nconst handleEdit: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n History.push(`/favorite-hubs/entries/${hub.id}`);\r\n};\r\n\r\nconst handleRemove: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n return SocketService.delete(FavoriteHubConstants.HUBS_URL + '/' + hub.id);\r\n};\r\n\r\n\r\nconst FavoriteHubCreateActions: UI.ActionListType<undefined> = {\r\n create: {\r\n displayName: 'Add new',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.CREATE,\r\n handler: handleCreate,\r\n },\r\n};\r\n\r\nconst FavoriteHubEditActions: UI.ActionListType<API.FavoriteHubEntry> = {\r\n edit: { \r\n displayName: 'Edit',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.EDIT,\r\n handler: handleEdit,\r\n },\r\n remove: {\r\n displayName: 'Remove',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.REMOVE,\r\n confirmation: {\r\n content: 'Are you sure that you want to remove the favorite hub {{item.name}}?',\r\n approveCaption: 'Remove favorite hub',\r\n rejectCaption: `Don't remove`,\r\n },\r\n handler: handleRemove,\r\n //notifications: {\r\n // onSuccess: 'The hub {{item.name}} was removed successfully',\r\n //}\r\n }\r\n};\r\n\r\n\r\nexport default {\r\n create: {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n actions: FavoriteHubCreateActions,\r\n },\r\n edit: {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n actions: FavoriteHubEditActions,\r\n }\r\n};\r\n","\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\n\r\nconst sendPassword = (\r\n hub: API.FavoriteHubEntry,\r\n password: string | null\r\n) => {\r\n return SocketService.patch(FavoriteHubConstants.HUBS_URL + '/' + hub.id, { \r\n password \r\n });\r\n};\r\n\r\n\r\nconst handleSetPassword: UI.ActionHandler<API.FavoriteHubEntry> = (\r\n { data: hub },\r\n password: string\r\n) => {\r\n return sendPassword(hub, password);\r\n};\r\n\r\nconst handleRemovePassword: UI.ActionHandler<API.FavoriteHubEntry> = ({ data: hub }) => {\r\n return sendPassword(hub, null);\r\n};\r\n\r\nconst hasPassword = (data: API.FavoriteHubEntry) => data.has_password;\r\nconst noPassword = (data: API.FavoriteHubEntry) => !hasPassword(data);\r\n\r\n\r\nconst FavoriteHubPasswordActions: UI.ActionListType<API.FavoriteHubEntry> = {\r\n create: {\r\n displayName: 'Set password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT, \r\n icon: IconConstants.LOCK,\r\n filter: noPassword,\r\n input: {\r\n content: 'Set password for the hub {{item.name}}',\r\n approveCaption: 'Set password',\r\n inputProps: {\r\n placeholder: 'Enter password',\r\n type: 'password',\r\n }\r\n },\r\n handler: handleSetPassword,\r\n },\r\n change: {\r\n displayName: 'Change password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT, \r\n icon: IconConstants.EDIT,\r\n filter: hasPassword,\r\n input: {\r\n content: 'Enter new password for the hub {{item.name}}',\r\n approveCaption: 'Update password',\r\n inputProps: {\r\n placeholder: 'Enter password',\r\n type: 'password',\r\n }\r\n },\r\n handler: handleSetPassword,\r\n },\r\n remove: {\r\n displayName: 'Remove password',\r\n access: API.AccessEnum.FAVORITE_HUBS_EDIT,\r\n icon: IconConstants.REMOVE,\r\n filter: hasPassword,\r\n confirmation: {\r\n content: 'Are you sure that you want to reset the password of the hub {{item.name}}?',\r\n approveCaption: 'Remove password',\r\n rejectCaption: `Don't remove`,\r\n },\r\n handler: handleRemovePassword,\r\n },\r\n};\r\n\r\nexport default {\r\n moduleId: UI.Modules.FAVORITE_HUBS,\r\n subId: 'password',\r\n actions: FavoriteHubPasswordActions,\r\n};\r\n","import Reflux from 'reflux';\r\n\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\nimport ViewStoreMixin from 'mixins/ViewStoreMixin';\r\n\r\n\r\nexport default Reflux.createStore({\r\n _viewName: 'favorite_hub_view',\r\n _apiUrl: FavoriteHubConstants.MODULE_URL,\r\n mixins: [ ViewStoreMixin('name') ],\r\n});\r\n","import { useEffect, useRef } from 'react';\r\nimport * as React from 'react';\r\n\r\nimport * as UI from 'types/ui';\r\nimport t from 'utils/tcomb-form';\r\n\r\n\r\ninterface IndeterminateCheckboxProps {\r\n locals: UI.FormLocals<any, boolean | null, {}>;\r\n}\r\n\r\nconst IndeterminateCheckbox: React.FC<IndeterminateCheckboxProps> = ({ locals }) => {\r\n const inputRef = useRef<HTMLInputElement>();\r\n\r\n useEffect(\r\n () => {\r\n if (!inputRef.current) {\r\n return;\r\n }\r\n\r\n if (typeof locals.value === 'boolean') {\r\n inputRef.current.indeterminate = false;\r\n } else {\r\n inputRef.current.indeterminate = true;\r\n }\r\n },\r\n [ locals.value ]\r\n );\r\n\r\n return (\r\n <input \r\n ref={ inputRef }\r\n type=\"checkbox\"\r\n {...locals.attrs}\r\n onChange={(evt) => {\r\n // Toggle between true/false/indeterminate\r\n if (locals.value === false) {\r\n locals.onChange(null);\r\n } else {\r\n locals.onChange(evt.target.checked);\r\n }\r\n }}\r\n />\r\n );\r\n};\r\n\r\ntype TCombTemplate = { \r\n renderCheckbox: (locals: UI.FormLocals<any, boolean | null, {}>) => React.ReactNode; \r\n};\r\n\r\nconst IndeterminateCheckboxTemplate: TCombTemplate = {\r\n renderCheckbox(locals) {\r\n return (\r\n <IndeterminateCheckbox\r\n locals={ locals }\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport const IndeterminateCheckboxField = t.form.Form.templates.checkbox.clone(IndeterminateCheckboxTemplate);","import { Component } from 'react';\r\nimport Modal from 'components/semantic/Modal';\r\n\r\nimport ModalRouteDecorator, { ModalRouteDecoratorChildProps } from 'decorators/ModalRouteDecorator';\r\n\r\nimport ShareProfileConstants from 'constants/ShareProfileConstants';\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\n\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport ShareProfileDecorator, { profileToEnumValue, ShareProfileDecoratorChildProps } from 'decorators/ShareProfileDecorator';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\nimport t from 'utils/tcomb-form';\r\n\r\nimport Form, { FormFieldChangeHandler, FormFieldSettingHandler, FormSaveHandler } from 'components/form/Form';\r\nimport { normalizeEnumValue, intTransformer, translateForm } from 'utils/FormUtils';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { FavoriteHubEntry } from 'types/api';\r\nimport { IndeterminateCheckboxField } from 'components/form/fields/IndeterminateCheckboxField';\r\n\r\n\r\nconst ConnectivityModeOptions: API.SettingEnumOption[] = [\r\n {\r\n id: API.ConnectivityModeEnum.DISABLED,\r\n name: 'Disabled'\r\n }, {\r\n id: API.ConnectivityModeEnum.ACTIVE_MODE,\r\n name: 'Active mode'\r\n }, {\r\n id: API.ConnectivityModeEnum.PASSIVE_MODE,\r\n name: 'Passive mode'\r\n }\r\n];\r\n\r\nconst Fields: UI.FormFieldDefinition[] = [\r\n {\r\n key: 'generic',\r\n title: 'Hub properties',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'name',\r\n title: 'Name',\r\n type: API.SettingTypeEnum.STRING,\r\n }, {\r\n key: 'hub_url',\r\n title: 'Hub URL',\r\n type: API.SettingTypeEnum.STRING,\r\n }, {\r\n key: 'hub_description',\r\n title: 'Hub description',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }, {\r\n key: 'share_profile',\r\n title: 'Share profile',\r\n type: API.SettingTypeEnum.NUMBER,\r\n // tslint:disable-next-line:max-line-length\r\n help: 'Custom share profiles can be selected only after entering an ADC hub address (starting with adc:// or adcs://)',\r\n optional: true,\r\n }, {\r\n key: 'auto_connect',\r\n title: 'Auto connect',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n }\r\n ]\r\n }, {\r\n key: 'user',\r\n title: 'User setting overrides',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'nick',\r\n title: 'Nick',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }, {\r\n key: 'user_description',\r\n title: 'User description',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ], \r\n }, {\r\n key: 'connectivityV4',\r\n title: 'Connectivity setting overrides (IPv4)',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'connection_mode_v4',\r\n title: 'Connectivity mode',\r\n type: API.SettingTypeEnum.NUMBER,\r\n optional: true,\r\n options: ConnectivityModeOptions,\r\n }, {\r\n key: 'connection_ip_v4',\r\n title: 'IP address',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ]\r\n }, {\r\n key: 'connectivityV6',\r\n title: 'Connectivity setting overrides (IPv6)',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'connection_mode_v6',\r\n title: 'Connectivity mode',\r\n type: API.SettingTypeEnum.NUMBER,\r\n optional: true,\r\n options: ConnectivityModeOptions,\r\n }, {\r\n key: 'connection_ip_v6',\r\n title: 'IP address',\r\n type: API.SettingTypeEnum.STRING,\r\n optional: true,\r\n }\r\n ]\r\n }, {\r\n key: 'misc',\r\n title: 'Miscellaneous overrides',\r\n type: API.SettingTypeEnum.STRUCT,\r\n definitions: [\r\n {\r\n key: 'use_main_chat_notify',\r\n title: 'Use chat notification',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n optional: true,\r\n }, {\r\n key: 'show_joins',\r\n title: 'Show joins/parts',\r\n type: API.SettingTypeEnum.BOOLEAN,\r\n optional: true,\r\n }, {\r\n key: 'away_message',\r\n title: 'Away message',\r\n type: API.SettingTypeEnum.TEXT,\r\n optional: true,\r\n }\r\n ]\r\n }\r\n];\r\n\r\ninterface Entry extends UI.FormValueMap {\r\n generic: Pick<FavoriteHubEntry, 'name' | 'hub_url' | 'hub_description' | 'auto_connect' | 'share_profile'>;\r\n user: Pick<FavoriteHubEntry, 'nick' | 'user_description'>;\r\n connectivityV4: Pick<FavoriteHubEntry, 'connection_mode_v4' | 'connection_ip_v4'>;\r\n connectivityV6: Pick<FavoriteHubEntry, 'connection_mode_v6' | 'connection_ip_v6'>;\r\n misc: Pick<FavoriteHubEntry, 'use_main_chat_notify' | 'show_joins' | 'away_message'>;\r\n}\r\n\r\nconst toFormEntry = (entry?: API.FavoriteHubEntry): Entry | undefined => {\r\n if (!entry) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n generic: entry,\r\n user: entry,\r\n connectivityV4: entry,\r\n connectivityV6: entry,\r\n misc: entry,\r\n };\r\n};\r\n\r\nconst toFavoriteHub = (entry: RecursivePartial<Entry>): RecursivePartial<API.FavoriteHubEntry> => {\r\n return {\r\n ...entry.generic,\r\n ...entry.user,\r\n ...entry.connectivityV4,\r\n ...entry.connectivityV6,\r\n ...entry.misc,\r\n };\r\n};\r\n\r\nconst isAdcHub = (hubUrl?: string) => !!hubUrl && (hubUrl.indexOf('adc://') === 0 || hubUrl.indexOf('adcs://') === 0);\r\n\r\n// Get selection values for the profiles field\r\nconst getFieldProfiles = (profiles: API.SettingEnumOption[], url?: string): UI.FormOption[] => {\r\n return profiles\r\n .filter(p => isAdcHub(url) || p.id === ShareProfileConstants.HIDDEN_PROFILE_ID)\r\n .map(profileToEnumValue)\r\n .map(normalizeEnumValue);\r\n};\r\n\r\ninterface FavoriteHubDialogProps {\r\n //t: TFunction;\r\n favT: UI.ModuleTranslator;\r\n}\r\n\r\ninterface DataProps {\r\n hubEntry?: API.FavoriteHubEntry;\r\n}\r\n\r\ninterface RouteProps {\r\n entryId: string;\r\n}\r\n\r\ntype Props = FavoriteHubDialogProps & DataProps & ShareProfileDecoratorChildProps & \r\n ModalRouteDecoratorChildProps<RouteProps>;\r\n\r\nclass FavoriteHubDialog extends Component<Props> {\r\n static displayName = 'FavoriteHubDialog';\r\n\r\n formValue: Entry | undefined;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.formValue = toFormEntry(props.hubEntry);\r\n this.definitions = translateForm(Fields, props.favT);\r\n this.nullOption = { \r\n value: 'null', \r\n text: props.favT.translate('Global default') \r\n };\r\n }\r\n\r\n isNew = () => {\r\n return !this.props.hubEntry;\r\n }\r\n\r\n nullOption: UI.FormOption<string>;\r\n definitions: UI.FormFieldDefinition[];\r\n\r\n form: Form<Entry>;\r\n\r\n onFieldChanged: FormFieldChangeHandler<Entry> = (id, value, hasChanges) => {\r\n if (id.indexOf('hub_url') !== -1) {\r\n if (!isAdcHub(value.generic!.hub_url) && value.share_profile !== ShareProfileConstants.HIDDEN_PROFILE_ID) {\r\n // Reset share profile\r\n return Promise.resolve({ \r\n share_profile: null \r\n });\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n save = () => {\r\n return this.form.save();\r\n }\r\n\r\n onSave: FormSaveHandler<Entry> = (changedFields) => {\r\n const hubEntry = toFavoriteHub(changedFields);\r\n if (this.isNew()) {\r\n return SocketService.post(FavoriteHubConstants.HUBS_URL, hubEntry);\r\n }\r\n\r\n return SocketService.patch(`${FavoriteHubConstants.HUBS_URL}/${this.props.hubEntry!.id}`, hubEntry);\r\n }\r\n\r\n onFieldSetting: FormFieldSettingHandler<Entry> = (id, fieldOptions, formValue) => {\r\n if (id === 'share_profile') {\r\n const hubUrl = formValue.generic ? formValue.generic.hub_url : undefined;\r\n\r\n // Since the options are added dynamically based on the URL protocol, they must be \r\n // normalized to use the tcomb format\r\n Object.assign(fieldOptions, {\r\n nullOption: this.nullOption,\r\n factory: t.form.Select,\r\n options: getFieldProfiles(this.props.profiles, hubUrl),\r\n transformer: intTransformer,\r\n });\r\n } else if (id === 'connection_mode_v4' || id === 'connection_mode_v6') {\r\n Object.assign(fieldOptions, {\r\n nullOption: this.nullOption,\r\n transformer: intTransformer,\r\n });\r\n } else if (id === 'use_main_chat_notify' || id === 'show_joins') {\r\n Object.assign(fieldOptions, {\r\n template: IndeterminateCheckboxField,\r\n transformer: {\r\n format: (value: boolean | null) => value === undefined ? null : value,\r\n parse: (value: boolean | null) => value\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { translate } = this.props.favT;\r\n const title = translate(this.isNew() ? 'Add favorite hub' : 'Edit favorite hub');\r\n return (\r\n <Modal \r\n className=\"fav-hub\" \r\n title={ title } \r\n onApprove={ this.save } \r\n closable={ false } \r\n icon={ IconConstants.FAVORITE } \r\n { ...this.props }\r\n >\r\n <Form<Entry>\r\n ref={ c => this.form = c! }\r\n onFieldChanged={ this.onFieldChanged }\r\n onFieldSetting={ this.onFieldSetting }\r\n onSave={ this.onSave }\r\n fieldDefinitions={ this.definitions }\r\n value={ this.formValue }\r\n location={ this.props.location }\r\n />\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nexport default ModalRouteDecorator<FavoriteHubDialogProps, RouteProps>(\r\n ShareProfileDecorator(\r\n FavoriteHubDialog, \r\n true,\r\n {\r\n urls: {\r\n hubEntry: ({ match }, socket) => {\r\n if (!match.params.entryId) {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n return socket.get(`${FavoriteHubConstants.HUBS_URL}/${match.params.entryId}`);\r\n }\r\n }\r\n }\r\n ),\r\n 'entries/:entryId?',\r\n);","import { Component } from 'react';\r\nimport classNames from 'classnames';\r\n\r\nimport HubActions from 'actions/reflux/HubActions';\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\n\r\nimport Icon from 'components/semantic/Icon';\r\nimport { RowWrapperCellChildProps } from 'components/table/RowWrapperCell';\r\n\r\nimport * as API from 'types/api';\r\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\r\n\r\n\r\nexport interface ConnectStateCellProps extends \r\n RowWrapperCellChildProps<API.FavoriteHubConnectState, API.FavoriteHubEntry> {\r\n\r\n}\r\n\r\nconst getIcon = (state: API.FavoriteHubConnectState) => {\r\n switch (state.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n return 'yellow remove';\r\n case API.FavoriteHubConnectStateEnum.CONNECTED:\r\n return 'grey remove';\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n return 'green video play';\r\n default:\r\n }\r\n\r\n return '';\r\n};\r\n\r\nclass ConnectStateCell extends Component<ConnectStateCellProps & RouteComponentProps> {\r\n handleCreateSession = () => {\r\n const { location, rowDataGetter } = this.props;\r\n HubActions.createSession(location, rowDataGetter!().hub_url, HubSessionStore);\r\n }\r\n\r\n handleRemoveSession = () => {\r\n const { cellData } = this.props;\r\n HubActions.removeSession({ id: cellData!.current_hub_id });\r\n }\r\n\r\n getClickAction = () => {\r\n switch (this.props.cellData!.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n case API.FavoriteHubConnectStateEnum.CONNECTED: return this.handleRemoveSession;\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n default: return this.handleCreateSession;\r\n }\r\n }\r\n\r\n render() {\r\n const { cellData, width } = this.props;\r\n return (\r\n <div className=\"connect-state\">\r\n <Icon \r\n icon={ classNames('icon large link', getIcon(cellData!)) } \r\n onClick={ this.getClickAction() }\r\n />\r\n { width! > 120 && cellData!.str }\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst Decorated = withRouter(ConnectStateCell);\r\n\r\nexport default Decorated;","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!./style.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!./style.css\";\n export default content && content.locals ? content.locals : undefined;\n","import * as React from 'react';\r\n\r\nimport FavoriteHubActions from 'actions/ui/FavoriteHubActions';\r\nimport FavoriteHubPasswordActions from 'actions/ui/FavoriteHubPasswordActions';\r\nimport FavoriteHubStore from 'stores/FavoriteHubStore';\r\nimport FavoriteHubDialog from './FavoriteHubDialog';\r\n\r\nimport VirtualTable from 'components/table/VirtualTable';\r\nimport { Column } from 'fixed-data-table-2';\r\nimport { CheckboxCell, ActionMenuCell } from 'components/table/Cell';\r\nimport ConnectStateCell from './ConnectStateCell';\r\n\r\nimport { TableActionMenu } from 'components/menu';\r\nimport ActionButton from 'components/ActionButton';\r\nimport { RowWrapperCellChildProps } from 'components/table/RowWrapperCell';\r\n\r\nimport LoginStore from 'stores/LoginStore';\r\n\r\nimport '../style.css';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { translate, getModuleT } from 'utils/TranslationUtils';\r\nimport { withTranslation, WithTranslation } from 'react-i18next';\r\nimport { updateFavoriteHub } from 'services/api/FavoriteHubApi';\r\nimport { runBackgroundSocketAction } from 'utils/ActionUtils';\r\nimport MenuConstants from 'constants/MenuConstants';\r\n\r\n\r\nconst PasswordCell: React.FC<RowWrapperCellChildProps<string, API.FavoriteHubEntry>> = (\r\n { cellData, rowDataGetter, t }\r\n) => (\r\n <TableActionMenu \r\n caption={ cellData ? (\r\n <strong>\r\n { translate('Set', t!, UI.Modules.FAVORITE_HUBS) }\r\n </strong>\r\n ) : translate('Not set', t!, UI.Modules.FAVORITE_HUBS) } \r\n actions={ FavoriteHubPasswordActions } \r\n itemData={ rowDataGetter! }\r\n />\r\n);\r\n\r\nclass FavoriteHubs extends React.Component<WithTranslation> {\r\n static displayName = 'FavoriteHubs';\r\n\r\n rowClassNameGetter = (rowData: API.FavoriteHubEntry) => {\r\n switch (rowData.connect_state.id) {\r\n case API.FavoriteHubConnectStateEnum.CONNECTING:\r\n return 'connecting';\r\n case API.FavoriteHubConnectStateEnum.CONNECTED:\r\n return 'connected';\r\n case API.FavoriteHubConnectStateEnum.DISCONNECTED:\r\n return 'disconnected';\r\n default:\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onChangeAutoConnect = (checked: boolean, rowData: API.FavoriteHubEntry) => {\r\n return runBackgroundSocketAction(\r\n () => updateFavoriteHub(rowData, { \r\n auto_connect: checked \r\n }),\r\n this.props.t\r\n );\r\n }\r\n\r\n favT = getModuleT(this.props.t, UI.Modules.FAVORITE_HUBS);\r\n render() {\r\n const footerData = (\r\n <ActionButton \r\n actions={ FavoriteHubActions.create }\r\n actionId=\"create\"\r\n />\r\n );\r\n\r\n const editAccess = LoginStore.hasAccess(API.AccessEnum.HUBS_EDIT);\r\n return (\r\n <>\r\n <VirtualTable\r\n rowClassNameGetter={ this.rowClassNameGetter }\r\n footerData={ footerData }\r\n store={ FavoriteHubStore }\r\n moduleId={ UI.Modules.FAVORITE_HUBS }\r\n >\r\n <Column\r\n name=\"State\"\r\n width={ 45 }\r\n columnKey=\"connect_state\"\r\n cell={ editAccess && <ConnectStateCell/> }\r\n flexGrow={ 3 }\r\n />\r\n <Column\r\n name=\"Name\"\r\n width={ 150 }\r\n columnKey=\"name\"\r\n flexGrow={ 6 }\r\n cell={ \r\n <ActionMenuCell \r\n actions={ FavoriteHubActions.edit }\r\n remoteMenuId={ MenuConstants.FAVORITE_HUB }\r\n /> \r\n }\r\n />\r\n <Column\r\n name=\"Address\"\r\n width={ 270 }\r\n columnKey=\"hub_url\"\r\n flexGrow={ 3 }\r\n hideWidth={ 700 }\r\n />\r\n <Column\r\n name=\"Auto connect\"\r\n width={ 65 }\r\n columnKey=\"auto_connect\"\r\n cell={ editAccess && (\r\n <CheckboxCell \r\n onChange={ this.onChangeAutoConnect } \r\n type=\"toggle\"\r\n />\r\n ) }\r\n />\r\n <Column\r\n name=\"Share profile\"\r\n width={ 100 }\r\n columnKey=\"share_profile\"\r\n flexGrow={ 1 }\r\n />\r\n <Column\r\n name=\"Nick\"\r\n width={ 100 }\r\n columnKey=\"nick\"\r\n flexGrow={ 1 }\r\n />\r\n <Column\r\n name=\"Password\"\r\n width={ 100 }\r\n columnKey=\"has_password\"\r\n cell={ <PasswordCell/> }\r\n />\r\n </VirtualTable>\r\n <FavoriteHubDialog\r\n favT={ this.favT }\r\n />\r\n </>\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FavoriteHubs);\r\n","import * as API from 'types/api';\r\n\r\nimport SocketService from 'services/SocketService';\r\nimport FavoriteHubConstants from 'constants/FavoriteHubConstants';\r\n\r\n\r\nexport const updateFavoriteHub = (\r\n hub: API.FavoriteHubEntry, \r\n data: Partial<API.FavoriteHubEntryBase>\r\n) => {\r\n return SocketService.patch(FavoriteHubConstants.HUBS_URL + '/' + hub.id, data);\r\n};"],"names":["___CSS_LOADER_EXPORT___","push","module","id","MODULE_URL","PROFILES_URL","PROFILE_ADDED","PROFILE_UPDATED","PROFILE_REMOVED","HIDDEN_PROFILE_ID","profileToEnumValue","profile","name","str","Component","listHidden","dataProviderDecoratorSettings","addSize","merge","urls","profiles","dataConverters","data","t","filter","p","map","size","convertProfile","onSocketConnected","addSocketListener","refetchData","FavoriteHubCreateActions","create","displayName","access","icon","IconConstants","handler","History","FavoriteHubEditActions","edit","hub","remove","confirmation","content","approveCaption","rejectCaption","SocketService","FavoriteHubConstants","moduleId","actions","sendPassword","password","handleSetPassword","hasPassword","has_password","FavoriteHubPasswordActions","input","inputProps","placeholder","type","change","subId","_viewName","_apiUrl","mixins","ViewStoreMixin","IndeterminateCheckbox","locals","inputRef","useRef","useEffect","current","value","indeterminate","ref","attrs","onChange","evt","target","checked","IndeterminateCheckboxTemplate","renderCheckbox","IndeterminateCheckboxField","ConnectivityModeOptions","Fields","key","title","definitions","optional","help","options","isAdcHub","hubUrl","indexOf","FavoriteHubDialog","constructor","props","super","isNew","this","hubEntry","onFieldChanged","hasChanges","generic","hub_url","share_profile","ShareProfileConstants","Promise","resolve","save","form","onSave","changedFields","entry","user","connectivityV4","connectivityV6","misc","onFieldSetting","fieldOptions","formValue","undefined","Object","assign","nullOption","factory","url","transformer","template","format","parse","toFormEntry","favT","text","translate","render","Modal","className","onApprove","closable","Form","c","fieldDefinitions","location","ModalRouteDecorator","ShareProfileDecorator","match","socket","params","entryId","get","getIcon","state","ConnectStateCell","handleCreateSession","rowDataGetter","HubActions","HubSessionStore","handleRemoveSession","cellData","current_hub_id","getClickAction","width","Icon","onClick","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","PasswordCell","caption","itemData","FavoriteHubs","rowClassNameGetter","rowData","connect_state","onChangeAutoConnect","updateFavoriteHub","auto_connect","footerData","ActionButton","FavoriteHubActions","actionId","editAccess","LoginStore","VirtualTable","store","FavoriteHubStore","Column","columnKey","cell","flexGrow","remoteMenuId","MenuConstants","hideWidth","withTranslation"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
1
  "use strict";(self.webpackChunkairdcpp_webui=self.webpackChunkairdcpp_webui||[]).push([[228],{48366:(e,t,s)=>{s.d(t,{Z:()=>a});var i=s(87537),n=s.n(i),r=s(23645),o=s.n(r)()(n());o.push([e.id,"\r\n.fileitem.info.segment .dupe-paths .path {\r\n overflow-x: hidden;\r\n}\r\n\r\n.fileitem.info.segment .download.ui.dropdown {\r\n max-width: 150px;\r\n margin-top: 10px;\r\n}\r\n\r\n.fileitem.info.segment .title.column {\r\n margin-top: auto;\r\n margin-bottom: auto;\r\n}\r\n\r\n.fileitem.info.segment .value.column {\r\n word-break: break-all;\r\n}\r\n","",{version:3,sources:["webpack://./src/components/file-item-info/style.css"],names:[],mappings:";AACA;EACE,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,qBAAqB;AACvB",sourcesContent:["\r\n.fileitem.info.segment .dupe-paths .path {\r\n overflow-x: hidden;\r\n}\r\n\r\n.fileitem.info.segment .download.ui.dropdown {\r\n max-width: 150px;\r\n margin-top: 10px;\r\n}\r\n\r\n.fileitem.info.segment .title.column {\r\n margin-top: auto;\r\n margin-bottom: auto;\r\n}\r\n\r\n.fileitem.info.segment .value.column {\r\n word-break: break-all;\r\n}\r\n"],sourceRoot:""}]);const a=o},21671:(e,t,s)=>{s.d(t,{Z:()=>a});var i=s(87537),n=s.n(i),r=s(23645),o=s.n(r)()(n());o.push([e.id,"#sidebar .virtual-table {\r\n flex: 1 100 100%;\r\n}\r\n\r\n.filelist.session .browser, \r\n.filelist.session .browser .virtual-table {\r\n height: calc(100% - 35px);\r\n}\r\n\r\n#mobile-layout .filelist.session .browser {\r\n height: 100%;\r\n}\r\n\r\n#mobile-layout .filelist.session .browser {\r\n height: calc(100% - 10px);\r\n}\r\n\r\n@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) {\r\n /* Safari specific CSS */\r\n .filelist.session .browser {\r\n height: calc(100% - 95px);\r\n }\r\n\r\n #mobile-layout .filelist.session .browser {\r\n height: calc(100% - 60px);\r\n }\r\n}\r\n\r\n.filelist.session .browser .ui.segment {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.filelist.session {\r\n max-height: 100%;\r\n overflow: hidden;\r\n margin-top: 10px;\r\n flex: 1 1 100%;\r\n}\r\n\r\n.session.new .profile.ui.dropdown {\r\n margin-top: 10px;\r\n color: gray;\r\n align-self: flex-end;\r\n}","",{version:3,sources:["webpack://./src/routes/Sidebar/routes/Filelists/style.css"],names:[],mappings:"AAAA;EACE,gBAAgB;AAClB;;AAEA;;EAEE,yBAAyB;AAC3B;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,wBAAwB;EACxB;IACE,yBAAyB;EAC3B;;EAEA;IACE,yBAAyB;EAC3B;AACF;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;EAChB,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,gBAAgB;EAChB,WAAW;EACX,oBAAoB;AACtB",sourcesContent:["#sidebar .virtual-table {\r\n flex: 1 100 100%;\r\n}\r\n\r\n.filelist.session .browser, \r\n.filelist.session .browser .virtual-table {\r\n height: calc(100% - 35px);\r\n}\r\n\r\n#mobile-layout .filelist.session .browser {\r\n height: 100%;\r\n}\r\n\r\n#mobile-layout .filelist.session .browser {\r\n height: calc(100% - 10px);\r\n}\r\n\r\n@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) {\r\n /* Safari specific CSS */\r\n .filelist.session .browser {\r\n height: calc(100% - 95px);\r\n }\r\n\r\n #mobile-layout .filelist.session .browser {\r\n height: calc(100% - 60px);\r\n }\r\n}\r\n\r\n.filelist.session .browser .ui.segment {\r\n margin-bottom: 10px;\r\n}\r\n\r\n.filelist.session {\r\n max-height: 100%;\r\n overflow: hidden;\r\n margin-top: 10px;\r\n flex: 1 1 100%;\r\n}\r\n\r\n.session.new .profile.ui.dropdown {\r\n margin-top: 10px;\r\n color: gray;\r\n align-self: flex-end;\r\n}"],sourceRoot:""}]);const a=o},28252:(e,t,s)=>{s.d(t,{Y:()=>C});var i=s(85893),n=(s(67294),s(2445)),r=s(47021),o=s(76249),a=s(32347),l=s(26793),d=s(8717),c=s(93379),p=s.n(c),h=s(7795),u=s.n(h),m=s(90569),f=s.n(m),A=s(3565),v=s.n(A),x=s(19216),g=s.n(x),E=s(44589),y=s.n(E),b=s(48366),w={};w.styleTagTransform=y(),w.setAttributes=v(),w.insert=f().bind(null,"head"),w.domAPI=u(),w.insertStyleElement=g(),p()(b.Z,w),b.Z&&b.Z.locals&&b.Z.locals;var I=s(24101);const S={[o.V9.SHARE_PARTIAL]:"Share (partial)",[o.V9.SHARE_FULL]:"Share (full)",[o.V9.QUEUE_PARTIAL]:"Queue (partial)",[o.V9.QUEUE_FULL]:"Queue (full)",[o.V9.FINISHED_PARTIAL]:"Finished (partial)",[o.V9.FINISHED_FULL]:"Finished (full)",[o.V9.SHARE_QUEUE]:"Share and queue"},j=({paths:e})=>(0,i.jsx)("div",Object.assign({className:"dupe-paths"},{children:e.map((e=>(0,i.jsx)("div",Object.assign({className:"path"},{children:e}),e)))}),void 0),C=({session:e,fileItem:t,user:s,downloadHandler:o,showPath:c=!0})=>{const{t:p}=(0,l.$)(),h=e=>(0,d.Iu)(e,p,a.jv.COMMON);return(0,i.jsxs)("div",Object.assign({className:"ui fileitem info segment"},{children:[(0,i.jsxs)(I.rj,Object.assign({columns:"two",stackable:!0},{children:[(0,i.jsx)(I.X2,{title:h("Name"),text:t.name},void 0),(0,i.jsx)(I.X2,{title:h("Type/content"),text:t.type.str},void 0),(0,i.jsx)(I.X2,{title:h("Size"),text:(0,n.BU)(t.size,p,!0)},void 0),(0,i.jsx)(I.X2,{title:h("Last modified"),text:(0,n.SY)(t.time||0)},void 0),"file"===t.type.id&&(0,i.jsx)(I.X2,{title:h("TTH"),text:t.tth},void 0),!!t.dupe&&(0,i.jsx)(I.X2,{title:h("Dupe type"),text:h(S[t.dupe.id])},void 0),!!t.dupe&&(0,i.jsx)(I.X2,{title:h("Dupe paths"),text:(0,i.jsx)(j,{paths:t.dupe.paths},void 0)},void 0),c&&(0,i.jsx)(I.X2,{title:h("Path"),text:t.path},void 0)]}),void 0),(0,i.jsx)(r.Yk,{caption:h("Actions..."),button:!0,user:s,itemInfoGetter:()=>t,downloadHandler:o,contextElement:".ui.modal > .content",session:e},void 0)]}),void 0)}},82633:(e,t,s)=>{s.d(t,{Z:()=>n});const i="share_profiles",n={MODULE_URL:i,PROFILES_URL:i,PROFILE_ADDED:"share_profile_added",PROFILE_UPDATED:"share_profile_updated",PROFILE_REMOVED:"share_profile_removed",HIDDEN_PROFILE_ID:1}},75426:(e,t,s)=>{s.d(t,{D:()=>a,Z:()=>l});var i=s(96486),n=s(82633),r=s(42090),o=s(2445);const a=e=>({id:e.id,name:e.str}),l=function(e,t,s,a=!0){return(0,r.Z)(e,(0,i.merge)(s,{urls:{profiles:n.Z.PROFILES_URL},dataConverters:{profiles:(e,{t:s})=>e.filter((e=>t||e.id!==n.Z.HIDDEN_PROFILE_ID)).map((e=>((e,t)=>{let s=e.str;return a&&e.id!==n.Z.HIDDEN_PROFILE_ID&&(s+=` (${(0,o.BU)(e.size,t)})`),Object.assign(Object.assign({},e),{str:s})})(e,s)))},onSocketConnected:(e,{refetchData:t})=>{e(n.Z.MODULE_URL,n.Z.PROFILE_ADDED,(()=>t())),e(n.Z.MODULE_URL,n.Z.PROFILE_UPDATED,(()=>t())),e(n.Z.MODULE_URL,n.Z.PROFILE_REMOVED,(()=>t()))}}))}},3267:(e,t,s)=>{s.d(t,{Z:()=>p});var i=s(85893),n=(s(67294),s(42090)),r=s(2445),o=s(91462),a=s(60026),l=s(15479),d=s(32347),c=s(8717);const p=(0,n.Z)((({entries:e,entryTitleRenderer:t,hasSession:s,entryIcon:n,t:l})=>0===e.length?null:(0,i.jsxs)("div",Object.assign({className:"recents"},{children:[(0,i.jsx)(o.Z,{title:(0,c.Iu)("Recent sessions",l,d.jv.COMMON),size:""},void 0),(0,i.jsx)("div",Object.assign({className:"ui relaxed divided list"},{children:e.map(((e,o)=>(0,i.jsx)(a.H,{header:t(e),description:!!e.last_opened&&l((0,c.zS)("openedAgo",d.jv.COMMON),{defaultValue:"Opened {{timeAgo}}",replace:{timeAgo:(0,r.SY)(e.last_opened)}}),icon:(s(e)?"green ":"")+n},o)))}),void 0)]}),void 0)),{urls:{entries:({entryType:e},t)=>t.get(`${l.ZP.SESSIONS_URL}/${e}/0`)}})},203:(e,t,s)=>{s.d(t,{Z:()=>l});var i=s(85893),n=s(55019),r=s(47021),o=s(54578),a=s(4333);function l(e){return{itemNameGetter:e=>e.user.nicks,itemStatusGetter(e){const{flags:t}=e.user;return(0,n.zg)(t)},itemHeaderDescriptionGetter:e=>e.user.hub_names,itemHeaderIconGetter:e=>(0,i.jsx)(o.Z,{flags:e.user.flags},void 0),itemHeaderTitleGetter(t,s,n){const{user:o}=t;return(0,i.jsx)(r.Ie,Object.assign({user:o,ids:e,remoteMenuId:a.Z.HINTED_USER},{children:n}),void 0)}}}},99922:(e,t,s)=>{s.r(t),s.d(t,{default:()=>_e});var i=s(85893),n=s(67294),r=s(10907),o=s(203),a=s(77744),l=s(45659),d=s(38982),c=s(76249),p=s(32347);const h=(0,d.Z)({},l.Z.SESSIONS_URL,c.PS.FILELISTS_EDIT),u={moduleId:p.jv.FILELISTS,actions:h};var m=s(45241),f=s(3267),A=s(68662),v=s(98374),x=s(75426);class g extends n.Component{constructor(){super(...arguments),this.onClick=e=>{this.props.onProfileChanged(e.id)},this.getDropdownItem=e=>(0,i.jsx)(v.Z,Object.assign({onClick:()=>this.props.onProfileChanged(e.id)},{children:e.str}),e.id)}render(){const{sessionT:e,profiles:t}=this.props;return(0,i.jsx)(A.Z,Object.assign({className:"profile top right pointing",caption:e.translate("Browse own share..."),triggerIcon:""},{children:t.map(this.getDropdownItem)}),void 0)}}const E=(0,x.Z)(g,!1);var y=s(15479),b=s(48117),w=s(78522);class I extends n.Component{constructor(){super(...arguments),this.handleSubmit=e=>{m.Z.createSession(this.props.location,e,a.Z)},this.onProfileChanged=e=>{m.Z.ownList(this.props.location,e,a.Z)},this.recentUserRender=e=>(0,i.jsx)("a",Object.assign({onClick:t=>this.handleSubmit(e.user)},{children:e.user.nicks+(e.description?` (${e.description})`:"")}),void 0),this.hasSession=e=>a.Z.getSession(e.user.cid)}render(){const{sessionT:e}=this.props;return(0,i.jsxs)("div",Object.assign({className:"filelist session new"},{children:[(0,i.jsx)(w.v,{onChange:this.handleSubmit,offlineMessage:e.t("offlineMessage","You must to be connected to at least one hub in order to download filelists from other users"),isClearable:!1,autoFocus:!0},void 0),(0,i.jsx)(E,{onProfileChanged:this.onProfileChanged,sessionT:e},void 0),(0,i.jsx)(f.Z,{entryType:y.WJ.FILELIST,hasSession:this.hasSession,entryTitleRenderer:this.recentUserRender,entryIcon:b.Z.FILELISTS_PLAIN},void 0)]}),void 0)}}const S=I;var j=s(5977),C=s(518),Z=s(20097),L=s(74225);const O={reloadDirectory:{displayName:"Reload",access:c.PS.FILELISTS_VIEW,icon:b.Z.RELOAD,filter:e=>(({session:e})=>e.partial_list)(e)&&(({item:e})=>"directory"===e.type.id)(e),handler:({data:e})=>{const{session:t,item:s}=e;return C.Z.post(`${l.Z.SESSIONS_URL}/${t.id}/directory`,{list_path:s.path,reload:!0})}},refreshShare:{displayName:"Refresh in share",access:c.PS.SETTINGS_EDIT,icon:b.Z.REFRESH_COLORED,filter:({session:e})=>-1!==e.user.flags.indexOf("self"),handler:({data:e})=>(0,L.u4)(e.item.path)},details:{displayName:"Details",icon:b.Z.OPEN,handler:({data:e,location:t})=>{Z.Z.push(`${t.pathname}/item/${e.item.id}`)},filter:e=>!(({item:e})=>"/"===e.path)(e)}},D={moduleId:p.jv.FILELISTS,subId:"item",actions:O};var _=s(73209),R=s(47021),T=s(57136),B=s(62285),P=s(28427),N=s(20368),F=s(92245),U=s(42090),k=s(28252),G=s(81685);const H=e=>(t,s)=>s.get(`${l.Z.MODULE_URL}/${e.id}/items/${t}`);class M extends n.Component{render(){const{fileItem:e,session:t}=this.props;return(0,i.jsxs)(P.Z,Object.assign({className:"filelist-item",title:e.name,closable:!0,icon:(0,i.jsx)(N.Z,{typeInfo:e.type},void 0),fullHeight:!0},this.props,{children:[(0,i.jsx)(B.Z,{downloadHandler:G.Ru,itemDataGetter:H(t),userGetter:()=>t.user,session:t},void 0),(0,i.jsx)(k.Y,{fileItem:e,downloadHandler:G.Ru,user:t.user,session:t},void 0)]}),void 0)}}M.displayName="FilelistItemInfoDialog";const $=(0,F.ZP)((0,U.Z)(M,{urls:{fileItem:({match:e,session:t},s)=>H(t)(e.params.itemId,s)}}),"item/:itemId");var z=s(55019),V=s(93836),X=s(10293);const Y=s.n(X)().createStore({_viewName:"filelist_view",_apiUrl:l.Z.SESSIONS_URL,_sessionStore:a.Z,mixins:[(0,V.Z)("name")]});var K=s(78230),W=s(68126),Q=s(35108),q=s(54883),J=s(27695),ee=s(4333);const te=e=>{var{rowDataGetter:t,onClickDirectory:s,session:r}=e,o=function(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(s[i[n]]=e[i[n]])}return s}(e,["rowDataGetter","onClickDirectory","session"]);const a=(0,n.useMemo)((()=>()=>({item:t(),session:r})),[r]);return(0,i.jsx)(W.iK,Object.assign({clickHandlerGetter:s,userGetter:()=>r.user,downloadHandler:G.Ru,rowDataGetter:t,session:r,entityId:r.id,remoteMenuId:ee.Z.FILELIST_ITEM},o,{children:(0,i.jsx)(R.B2,{actions:D,itemData:a,ids:["refreshShare","details"]},void 0)}),void 0)};class se extends n.Component{constructor(){super(...arguments),this.rowClassNameGetter=e=>(0,z.r)(e.dupe),this.emptyRowsNodeGetter=()=>{const{location:e,state:t}=this.props.session,{translate:s}=this.props.sessionT;if("download_failed"===t.id)return(0,i.jsx)(J.Z,{icon:b.Z.ERROR,title:s("Download failed"),description:t.str},void 0);const{files:n,directories:r}=e.type;return 0!==n||0!==r?(0,i.jsx)(q.Z,{text:s("Updating view")},void 0):e.complete?(0,i.jsx)(J.Z,{title:s("No content to display"),description:s("The directory is empty")},void 0):(0,i.jsx)(q.Z,{text:s("Preparing download")},void 0)},this.onClickDirectory=(e,t)=>{if("directory"===t().type.id)return()=>this.props.onClickDirectory(this.props.session.location.path+e+"/")},this.userGetter=()=>this.props.session.user}render(){const{session:e}=this.props;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(K.Z,Object.assign({emptyRowsNodeGetter:this.emptyRowsNodeGetter,rowClassNameGetter:this.rowClassNameGetter,store:Y,entityId:e.id,viewId:e.location.path,sessionStore:a.Z,moduleId:D.moduleId},{children:[(0,i.jsx)(Q.Column,{name:"Name",width:200,columnKey:"name",cell:(0,i.jsx)(te,{onClickDirectory:this.onClickDirectory,session:e},void 0),flexGrow:8},void 0),(0,i.jsx)(Q.Column,{name:"Size",width:60,columnKey:"size",cell:(0,i.jsx)(W.Eh,{},void 0),flexGrow:1},void 0),(0,i.jsx)(Q.Column,{name:"Type",width:70,columnKey:"type",flexGrow:1,hideWidth:500},void 0),(0,i.jsx)(Q.Column,{name:"Last modified",width:80,columnKey:"time",cell:(0,i.jsx)(W.Ks,{},void 0),flexGrow:1},void 0)]}),void 0),(0,i.jsx)($,{session:e},void 0)]},void 0)}}const ie=se;var ne=s(89519);class re extends n.Component{constructor(){super(...arguments),this.hasClickedDirectory=!1,this.routerWillLeave=(e,t)=>{if("POP"===t&&this.hasClickedDirectory&&e.pathname!==this.props.location.pathname){const{sessionT:e}=this.props;return this.hasClickedDirectory=!1,T.Z.info({title:e.t("confirmLeave","Confirm action"),message:e.t("confirmLeaveDesc","Click the back button again to leave this filelist")}),!1}return!0},this.handleClickDirectory=e=>{this.hasClickedDirectory=!0,Z.Z.push({state:{directory:e}})},this.sendChangeDirectory=e=>{(0,ne.h9)((()=>(0,G.fF)(this.props.session,e)),this.props.sessionT.plainT)},this.getCurrentDirectory=()=>this.props.session.location,this.selectedNameFormatter=e=>{const{session:t}=this.props;return(0,i.jsx)(R.Yk,Object.assign({caption:e,user:t.user,itemInfoGetter:this.getCurrentDirectory,downloadHandler:G.Ru,contextElement:".session-container",session:t,remoteMenuId:ee.Z.FILELIST_ITEM,entityId:t.id},{children:(0,i.jsx)(R.PC,{itemData:{item:t.location,session:t},actions:D},void 0)}),void 0)},this.userGetter=()=>this.props.session.user,this.filelistItemFetcher=H(this.props.session)}componentDidMount(){const{session:e,location:t}=this.props,s=t.state;s&&s.directory||Z.Z.replace({state:{directory:e.location.path}})}componentDidUpdate(e){const t=this.props.location.state;if(!t||!t.directory)return;if(this.props.session.location.path===t.directory)return;const s=e.location.state;s&&s.directory!==t.directory?this.sendChangeDirectory(t.directory):Z.Z.replace({state:{directory:this.props.session.location.path}})}render(){const{session:e,sessionT:t}=this.props;return(0,i.jsxs)("div",Object.assign({className:"browser"},{children:[(0,i.jsx)(j.NL,{message:this.routerWillLeave},void 0),(0,i.jsx)(_.Z,{path:e.location.path,separator:"/",rootPath:"/",rootName:t.translate("Root"),itemClickHandler:this.handleClickDirectory,selectedNameFormatter:this.selectedNameFormatter,entityId:e.id},void 0),(0,i.jsx)(ie,{session:e,sessionT:t,onClickDirectory:this.handleClickDirectory},void 0),(0,i.jsx)(B.Z,{downloadHandler:G.Ru,itemDataGetter:this.filelistItemFetcher,userGetter:this.userGetter,session:e},void 0)]}),void 0)}}const oe=re;var ae=s(2445),le=s(88998),de=s(10606);const ce=({session:e,sessionT:t})=>{if((0,de.wd)())return null;let s=e.location.type.str;return s.length>0&&(s=`${(0,ae.BU)(e.location.size,t.plainT)} (${s})`),(0,i.jsxs)(le.C,{children:[(0,i.jsx)(le.o,{label:t.translate("Directory size"),text:s},void 0),(0,i.jsx)(le.o,{label:t.translate("Total list size"),text:(0,ae.BU)(e.total_size,t.plainT)},void 0)]},void 0)};var pe=s(8576);class he extends n.Component{render(){const{session:e,sessionT:t}=this.props,{user:s,location:n,state:r}=e;return-1!==s.flags.indexOf("offline")&&-1===s.flags.indexOf("self")?(0,i.jsx)("div",Object.assign({className:"filelist session"},{children:(0,i.jsx)(J.Z,{title:t.t("userOffline","User offline"),description:t.t("userOfflineDesc","You will be able to continue browsing when the user comes back online")},void 0)}),void 0):"loaded"!==r.id&&"download_failed"!==r.id||!n?(0,i.jsx)("div",Object.assign({className:"filelist session"},{children:(0,i.jsx)(q.Z,{text:r.str},void 0)}),void 0):(0,i.jsxs)("div",Object.assign({className:"filelist session"},{children:[(0,i.jsx)(oe,{location:this.props.location,session:e,sessionT:t},void 0),(0,i.jsx)(ce,{session:e,sessionT:t},void 0)]}),void 0)}}he.displayName="FilelistSession";const ue=(0,pe.Z)(he);var me=s(93379),fe=s.n(me),Ae=s(7795),ve=s.n(Ae),xe=s(90569),ge=s.n(xe),Ee=s(3565),ye=s.n(Ee),be=s(19216),we=s.n(be),Ie=s(44589),Se=s.n(Ie),je=s(21671),Ce={};Ce.styleTagTransform=Se(),Ce.setAttributes=ye(),Ce.insert=ge().bind(null,"head"),Ce.domAPI=ve(),Ce.insertStyleElement=we(),fe()(je.Z,Ce),je.Z&&je.Z.locals&&je.Z.locals;var Ze=s(93101),Le=s(8717);const Oe=(0,o.Z)(["message"]),De={itemLabelGetter:()=>null,itemNameGetter:e=>e.share_profile?e.share_profile.str:Oe.itemNameGetter(e),itemStatusGetter:e=>e.share_profile?"blue":Oe.itemStatusGetter(e),itemHeaderTitleGetter:(e,t,s)=>e.share_profile?s:Oe.itemHeaderTitleGetter(e,t,s),itemHeaderDescriptionGetter:e=>e.share_profile?null:Oe.itemHeaderDescriptionGetter(e),itemHeaderIconGetter:e=>e.share_profile?"green server":Oe.itemHeaderIconGetter(e)},_e=(0,Ze.J)((e=>{const{match:t,t:s}=e,n=function(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(s[i[n]]=e[i[n]])}return s}(e,["match","t"]);return(0,i.jsx)(r.Z,Object.assign({activeId:t.params.id,baseUrl:"filelists",newCaption:s((0,Le.zS)("new",p.jv.FILELISTS),"Open filelist"),newDescription:s((0,Le.zS)("newDesc",p.jv.FILELISTS),"Start browsing a new filelist"),newIcon:b.Z.FILELISTS_PLAIN,disableSideMenu:!0,editAccess:c.PS.FILELISTS_EDIT,uiActions:u,sessionApi:m.Z,unreadInfoStore:a.Z,sessionItemLayout:ue,newLayout:S,t:s},De,n),void 0)}),a.Z)},34698:(e,t,s)=>{s.d(t,{S:()=>o,b:()=>a});var i=s(66883),n=s(37576),r=function(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}l((i=i.apply(e,t||[])).next())}))};const o=e=>r(void 0,void 0,void 0,(function*(){try{return(yield(0,n.r)(`${getBasePath()}temp`,{method:"POST",headers:{"X-Authorization":i.Z.authToken,Authorization:i.Z.authToken},body:e})).headers.get("Location")}catch(e){throw e}})),a=(e,t,s)=>r(void 0,void 0,void 0,(function*(){try{const r=yield(0,n.r)((e=>`${window.location.origin}${getBasePath()}proxy?url=${encodeURIComponent(e)}`)(e),Object.assign({headers:{"X-Authorization":i.Z.authToken,"Cache-Control":"no-store, must-revalidate, max-age=0"}},s));return(yield t)?r.json():r.text()}catch(t){throw console.error(`CORS HTTP request failed (${e})`,t),t}}))},74225:(e,t,s)=>{s.d(t,{Pd:()=>a,_L:()=>l,u4:()=>d,Ki:()=>c});var i=s(4047),n=s(518),r=s(34698),o=s(76249);const a=(e,t,s)=>{return o=void 0,a=void 0,d=function*(){try{const o=yield(0,r.S)(e);return yield n.Z.post(i.Z.TEMP_SHARES_URL,{name:e.name,file_id:o,hub_url:t,cid:s})}catch(e){throw e}},new((l=void 0)||(l=Promise))((function(e,t){function s(e){try{n(d.next(e))}catch(e){t(e)}}function i(e){try{n(d.throw(e))}catch(e){t(e)}}function n(t){var n;t.done?e(t.value):(n=t.value,n instanceof l?n:new l((function(e){e(n)}))).then(s,i)}n((d=d.apply(o,a||[])).next())}));var o,a,l,d},l=e=>n.Z.post(i.Z.REFRESH_PATHS_URL,{paths:e,priority:o.VL.MANUAL}),d=e=>n.Z.post(i.Z.REFRESH_VIRTUAL_URL,{path:e}),c=e=>n.Z.delete(`${i.Z.REFRESH_TASKS_URL}/${e}`)}}]);
2
- //# sourceMappingURL=filelists.a1ecb558a5c0c376191d.chunk.js.map
2
+ //# sourceMappingURL=filelists.726450e0ff6e77eaa054.chunk.js.map