airdcpp-webui 2.11.2-beta.2 → 2.11.3-beta.2

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 (174) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.html +2 -2
  3. package/dist/js/285.14157e0f1f25fb9aaecd.chunk.js +2 -0
  4. package/dist/js/285.14157e0f1f25fb9aaecd.chunk.js.gz +0 -0
  5. package/dist/js/285.14157e0f1f25fb9aaecd.chunk.js.map +1 -0
  6. package/dist/js/334.dba054251a3e485f3ea9.chunk.js +2 -0
  7. package/dist/js/334.dba054251a3e485f3ea9.chunk.js.gz +0 -0
  8. package/dist/js/334.dba054251a3e485f3ea9.chunk.js.map +1 -0
  9. package/dist/js/424.44413ba27808d4072f7f.chunk.js +2 -0
  10. package/dist/js/424.44413ba27808d4072f7f.chunk.js.gz +0 -0
  11. package/dist/js/424.44413ba27808d4072f7f.chunk.js.map +1 -0
  12. package/dist/js/{668.ca79db34c1e147bd25d0.chunk.js → 668.2579506f7fa8bed8a452.chunk.js} +2 -2
  13. package/dist/js/668.2579506f7fa8bed8a452.chunk.js.gz +0 -0
  14. package/dist/js/668.2579506f7fa8bed8a452.chunk.js.map +1 -0
  15. package/dist/js/69.7b5fa94bd7c4e6f23ed6.chunk.js +2 -0
  16. package/dist/js/69.7b5fa94bd7c4e6f23ed6.chunk.js.gz +0 -0
  17. package/dist/js/69.7b5fa94bd7c4e6f23ed6.chunk.js.map +1 -0
  18. package/dist/js/{702.dd4be667774bce5de14f.chunk.js → 702.d36d38b2be52ab51c0a9.chunk.js} +1 -1
  19. package/dist/js/702.d36d38b2be52ab51c0a9.chunk.js.gz +0 -0
  20. package/dist/js/{702.dd4be667774bce5de14f.chunk.js.map → 702.d36d38b2be52ab51c0a9.chunk.js.map} +1 -1
  21. package/dist/js/760.83634ca054e04ff6c7e2.chunk.js +3 -0
  22. package/dist/js/{760.5448a03d335f92bedb53.chunk.js.LICENSE.txt → 760.83634ca054e04ff6c7e2.chunk.js.LICENSE.txt} +0 -0
  23. package/dist/js/760.83634ca054e04ff6c7e2.chunk.js.gz +0 -0
  24. package/dist/js/760.83634ca054e04ff6c7e2.chunk.js.map +1 -0
  25. package/dist/js/favorite-hubs.f8dc4d8768878d9cab6a.chunk.js +2 -0
  26. package/dist/js/favorite-hubs.f8dc4d8768878d9cab6a.chunk.js.gz +0 -0
  27. package/dist/js/favorite-hubs.f8dc4d8768878d9cab6a.chunk.js.map +1 -0
  28. package/dist/js/filelists.c550cdaa211edb6f733f.chunk.js +2 -0
  29. package/dist/js/filelists.c550cdaa211edb6f733f.chunk.js.gz +0 -0
  30. package/dist/js/filelists.c550cdaa211edb6f733f.chunk.js.map +1 -0
  31. package/dist/js/files.51c49d6a2825cbc64879.chunk.js +2 -0
  32. package/dist/js/files.51c49d6a2825cbc64879.chunk.js.gz +0 -0
  33. package/dist/js/files.51c49d6a2825cbc64879.chunk.js.map +1 -0
  34. package/dist/js/home.895154334c98dbe0f183.chunk.js +3 -0
  35. package/dist/js/{home.727a64f6586ed95a66bb.chunk.js.LICENSE.txt → home.895154334c98dbe0f183.chunk.js.LICENSE.txt} +0 -0
  36. package/dist/js/home.895154334c98dbe0f183.chunk.js.gz +0 -0
  37. package/dist/js/home.895154334c98dbe0f183.chunk.js.map +1 -0
  38. package/dist/js/hubs.42526e43270139eb1849.chunk.js +2 -0
  39. package/dist/js/hubs.42526e43270139eb1849.chunk.js.gz +0 -0
  40. package/dist/js/hubs.42526e43270139eb1849.chunk.js.map +1 -0
  41. package/dist/js/locales/{ca.78b3bea781886ff158b4.chunk.js → ca.ed09d3a3d4bcca929ba1.chunk.js} +0 -0
  42. package/dist/js/locales/{ca.78b3bea781886ff158b4.chunk.js.gz → ca.ed09d3a3d4bcca929ba1.chunk.js.gz} +0 -0
  43. package/dist/js/locales/{da.6f097ed425797ab32cb3.chunk.js → da.6f60a77e9ef082dd3bf4.chunk.js} +0 -0
  44. package/dist/js/locales/{da.6f097ed425797ab32cb3.chunk.js.gz → da.6f60a77e9ef082dd3bf4.chunk.js.gz} +0 -0
  45. package/dist/js/locales/{de.fce9df327aeebd67e9a1.chunk.js → de.3b7d3665460384259e82.chunk.js} +0 -0
  46. package/dist/js/locales/{de.fce9df327aeebd67e9a1.chunk.js.gz → de.3b7d3665460384259e82.chunk.js.gz} +0 -0
  47. package/dist/js/locales/{el.c325cc8141993f493ad0.chunk.js → el.598573d2a5ed18804fe0.chunk.js} +0 -0
  48. package/dist/js/locales/{el.c325cc8141993f493ad0.chunk.js.gz → el.598573d2a5ed18804fe0.chunk.js.gz} +0 -0
  49. package/dist/js/locales/{en.ebb20d0566fd8e7cb3b8.chunk.js → en.f0fe75dca201449e5e47.chunk.js} +0 -0
  50. package/dist/js/locales/{en.ebb20d0566fd8e7cb3b8.chunk.js.gz → en.f0fe75dca201449e5e47.chunk.js.gz} +0 -0
  51. package/dist/js/locales/es.645f0fc5dd1cb8c8c5e6.chunk.js +1 -0
  52. package/dist/js/locales/es.645f0fc5dd1cb8c8c5e6.chunk.js.gz +0 -0
  53. package/dist/js/locales/{eu.13252b0f7f7534b39e34.chunk.js → eu.7734fc077f26418d6b32.chunk.js} +0 -0
  54. package/dist/js/locales/{eu.13252b0f7f7534b39e34.chunk.js.gz → eu.7734fc077f26418d6b32.chunk.js.gz} +0 -0
  55. package/dist/js/locales/{fi.1641c49d1e7154261df8.chunk.js → fi.d1f8a5f4048236243b0f.chunk.js} +0 -0
  56. package/dist/js/locales/{fi.1641c49d1e7154261df8.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.5aa0843ba5ebefad56b2.chunk.js → hu.d0d2c38a03a3b38c2bc5.chunk.js} +0 -0
  60. package/dist/js/locales/{hu.5aa0843ba5ebefad56b2.chunk.js.gz → hu.d0d2c38a03a3b38c2bc5.chunk.js.gz} +0 -0
  61. package/dist/js/locales/{it.63acad3d71352720e323.chunk.js → it.0c911d75c50ea83190ad.chunk.js} +0 -0
  62. package/dist/js/locales/{it.63acad3d71352720e323.chunk.js.gz → it.0c911d75c50ea83190ad.chunk.js.gz} +0 -0
  63. package/dist/js/locales/{nl.a23ef3d4aff66ca3b215.chunk.js → nl.36d288d75b3d3cbabf11.chunk.js} +0 -0
  64. package/dist/js/locales/{nl.a23ef3d4aff66ca3b215.chunk.js.gz → nl.36d288d75b3d3cbabf11.chunk.js.gz} +0 -0
  65. package/dist/js/locales/{no.da135b9c1614a4616b47.chunk.js → no.8f2f465d5f785650175d.chunk.js} +0 -0
  66. package/dist/js/locales/{no.da135b9c1614a4616b47.chunk.js.gz → no.8f2f465d5f785650175d.chunk.js.gz} +0 -0
  67. package/dist/js/locales/{pl.36e1b3baf978ef6c184a.chunk.js → pl.06e51d7d7b09ba14714d.chunk.js} +0 -0
  68. package/dist/js/locales/{pl.36e1b3baf978ef6c184a.chunk.js.gz → pl.06e51d7d7b09ba14714d.chunk.js.gz} +0 -0
  69. package/dist/js/locales/{pt-br.57dff49b32efd65d6825.chunk.js → pt-br.9d19d92899e8c0917c66.chunk.js} +0 -0
  70. package/dist/js/locales/{pt-br.57dff49b32efd65d6825.chunk.js.gz → pt-br.9d19d92899e8c0917c66.chunk.js.gz} +0 -0
  71. package/dist/js/locales/{pt.ab93507031a40179f7c7.chunk.js → pt.4390db3955db29b0e7dd.chunk.js} +0 -0
  72. package/dist/js/locales/{pt.ab93507031a40179f7c7.chunk.js.gz → pt.4390db3955db29b0e7dd.chunk.js.gz} +0 -0
  73. package/dist/js/locales/{ro.551cd0a17581b2159112.chunk.js → ro.705fcd327263fcf419bf.chunk.js} +0 -0
  74. package/dist/js/locales/{ro.551cd0a17581b2159112.chunk.js.gz → ro.705fcd327263fcf419bf.chunk.js.gz} +0 -0
  75. package/dist/js/locales/{ru.cbf29ad6736a21d83bcb.chunk.js → ru.8ab7e1c0d9eee7aa7afb.chunk.js} +0 -0
  76. package/dist/js/locales/{ru.cbf29ad6736a21d83bcb.chunk.js.gz → ru.8ab7e1c0d9eee7aa7afb.chunk.js.gz} +0 -0
  77. package/dist/js/locales/{sv.d33f4b4be982814b6343.chunk.js → sv.be546e605910932db11f.chunk.js} +0 -0
  78. package/dist/js/locales/{sv.d33f4b4be982814b6343.chunk.js.gz → sv.be546e605910932db11f.chunk.js.gz} +0 -0
  79. package/dist/js/locales/{tr.88e97bf59131df380c5a.chunk.js → tr.25a0d0f19e007e2febc9.chunk.js} +0 -0
  80. package/dist/js/locales/{tr.88e97bf59131df380c5a.chunk.js.gz → tr.25a0d0f19e007e2febc9.chunk.js.gz} +0 -0
  81. package/dist/js/locales/uk_UA.61073eae675491639925.chunk.js +1 -0
  82. package/dist/js/locales/uk_UA.61073eae675491639925.chunk.js.gz +0 -0
  83. package/dist/js/locales/{zh_CN.a9edec208d0cfe49d94b.chunk.js → zh_CN.4b75674e4815a965ccea.chunk.js} +0 -0
  84. package/dist/js/locales/{zh_CN.a9edec208d0cfe49d94b.chunk.js.gz → zh_CN.4b75674e4815a965ccea.chunk.js.gz} +0 -0
  85. package/dist/js/main.51b1144fdbc0a681eb6c.entry.js +3 -0
  86. package/dist/js/{main.c01c26460331633a96e2.entry.js.LICENSE.txt → main.51b1144fdbc0a681eb6c.entry.js.LICENSE.txt} +0 -0
  87. package/dist/js/main.51b1144fdbc0a681eb6c.entry.js.gz +0 -0
  88. package/dist/js/main.51b1144fdbc0a681eb6c.entry.js.map +1 -0
  89. package/dist/js/messages.6f74e67a600c48f367ad.chunk.js +2 -0
  90. package/dist/js/messages.6f74e67a600c48f367ad.chunk.js.gz +0 -0
  91. package/dist/js/messages.6f74e67a600c48f367ad.chunk.js.map +1 -0
  92. package/dist/js/queue.82a405ba14b60974cb0f.chunk.js +2 -0
  93. package/dist/js/queue.82a405ba14b60974cb0f.chunk.js.gz +0 -0
  94. package/dist/js/queue.82a405ba14b60974cb0f.chunk.js.map +1 -0
  95. package/dist/js/search.af59b1b20b4d7194457b.chunk.js +2 -0
  96. package/dist/js/search.af59b1b20b4d7194457b.chunk.js.gz +0 -0
  97. package/dist/js/search.af59b1b20b4d7194457b.chunk.js.map +1 -0
  98. package/dist/js/settings.b543eade40a723e95c77.chunk.js +2 -0
  99. package/dist/js/settings.b543eade40a723e95c77.chunk.js.gz +0 -0
  100. package/dist/js/settings.b543eade40a723e95c77.chunk.js.map +1 -0
  101. package/dist/js/share.f06abf75f7f2a6afc1b3.chunk.js +2 -0
  102. package/dist/js/share.f06abf75f7f2a6afc1b3.chunk.js.gz +0 -0
  103. package/dist/js/share.f06abf75f7f2a6afc1b3.chunk.js.map +1 -0
  104. package/dist/js/{system-log.45dba574bcb91efd176c.chunk.js → system-log.b9763d1c0f5cf5966f21.chunk.js} +2 -2
  105. package/dist/js/system-log.b9763d1c0f5cf5966f21.chunk.js.gz +0 -0
  106. package/dist/js/system-log.b9763d1c0f5cf5966f21.chunk.js.map +1 -0
  107. package/dist/js/transfers.22e0a37c676d2a0996a8.chunk.js +2 -0
  108. package/dist/js/transfers.22e0a37c676d2a0996a8.chunk.js.gz +0 -0
  109. package/dist/js/transfers.22e0a37c676d2a0996a8.chunk.js.map +1 -0
  110. package/dist/sw.js +1 -1
  111. package/dist/sw.js.gz +0 -0
  112. package/package.json +65 -64
  113. package/dist/js/285.744e520b1611ce9c52a5.chunk.js +0 -2
  114. package/dist/js/285.744e520b1611ce9c52a5.chunk.js.gz +0 -0
  115. package/dist/js/285.744e520b1611ce9c52a5.chunk.js.map +0 -1
  116. package/dist/js/334.27c2467ccb3a5cb23acf.chunk.js +0 -2
  117. package/dist/js/334.27c2467ccb3a5cb23acf.chunk.js.gz +0 -0
  118. package/dist/js/334.27c2467ccb3a5cb23acf.chunk.js.map +0 -1
  119. package/dist/js/424.83f0cedf9d07b9d54fcb.chunk.js +0 -2
  120. package/dist/js/424.83f0cedf9d07b9d54fcb.chunk.js.gz +0 -0
  121. package/dist/js/424.83f0cedf9d07b9d54fcb.chunk.js.map +0 -1
  122. package/dist/js/668.ca79db34c1e147bd25d0.chunk.js.gz +0 -0
  123. package/dist/js/668.ca79db34c1e147bd25d0.chunk.js.map +0 -1
  124. package/dist/js/69.779bd39a66fa5ea5248b.chunk.js +0 -2
  125. package/dist/js/69.779bd39a66fa5ea5248b.chunk.js.gz +0 -0
  126. package/dist/js/69.779bd39a66fa5ea5248b.chunk.js.map +0 -1
  127. package/dist/js/702.dd4be667774bce5de14f.chunk.js.gz +0 -0
  128. package/dist/js/760.5448a03d335f92bedb53.chunk.js +0 -3
  129. package/dist/js/760.5448a03d335f92bedb53.chunk.js.gz +0 -0
  130. package/dist/js/760.5448a03d335f92bedb53.chunk.js.map +0 -1
  131. package/dist/js/favorite-hubs.82de31826d6a7541ec24.chunk.js +0 -2
  132. package/dist/js/favorite-hubs.82de31826d6a7541ec24.chunk.js.gz +0 -0
  133. package/dist/js/favorite-hubs.82de31826d6a7541ec24.chunk.js.map +0 -1
  134. package/dist/js/filelists.7a9e00969dcca088a27c.chunk.js +0 -2
  135. package/dist/js/filelists.7a9e00969dcca088a27c.chunk.js.gz +0 -0
  136. package/dist/js/filelists.7a9e00969dcca088a27c.chunk.js.map +0 -1
  137. package/dist/js/files.bb297a4f890216386a57.chunk.js +0 -2
  138. package/dist/js/files.bb297a4f890216386a57.chunk.js.gz +0 -0
  139. package/dist/js/files.bb297a4f890216386a57.chunk.js.map +0 -1
  140. package/dist/js/home.727a64f6586ed95a66bb.chunk.js +0 -3
  141. package/dist/js/home.727a64f6586ed95a66bb.chunk.js.gz +0 -0
  142. package/dist/js/home.727a64f6586ed95a66bb.chunk.js.map +0 -1
  143. package/dist/js/hubs.8b51f0869cdfed35644e.chunk.js +0 -2
  144. package/dist/js/hubs.8b51f0869cdfed35644e.chunk.js.gz +0 -0
  145. package/dist/js/hubs.8b51f0869cdfed35644e.chunk.js.map +0 -1
  146. package/dist/js/locales/es.784f05fd27d172e4ff10.chunk.js +0 -1
  147. package/dist/js/locales/es.784f05fd27d172e4ff10.chunk.js.gz +0 -0
  148. package/dist/js/locales/fr.ede93bff1e1571d56404.chunk.js +0 -1
  149. package/dist/js/locales/fr.ede93bff1e1571d56404.chunk.js.gz +0 -0
  150. package/dist/js/locales/uk_UA.2b396266bb670b4b7a59.chunk.js +0 -1
  151. package/dist/js/locales/uk_UA.2b396266bb670b4b7a59.chunk.js.gz +0 -0
  152. package/dist/js/main.c01c26460331633a96e2.entry.js +0 -3
  153. package/dist/js/main.c01c26460331633a96e2.entry.js.gz +0 -0
  154. package/dist/js/main.c01c26460331633a96e2.entry.js.map +0 -1
  155. package/dist/js/messages.cfb23ba34e3a288ca289.chunk.js +0 -2
  156. package/dist/js/messages.cfb23ba34e3a288ca289.chunk.js.gz +0 -0
  157. package/dist/js/messages.cfb23ba34e3a288ca289.chunk.js.map +0 -1
  158. package/dist/js/queue.0e532f2a56e464d1626b.chunk.js +0 -2
  159. package/dist/js/queue.0e532f2a56e464d1626b.chunk.js.gz +0 -0
  160. package/dist/js/queue.0e532f2a56e464d1626b.chunk.js.map +0 -1
  161. package/dist/js/search.ef2d64870dc65f549d8c.chunk.js +0 -2
  162. package/dist/js/search.ef2d64870dc65f549d8c.chunk.js.gz +0 -0
  163. package/dist/js/search.ef2d64870dc65f549d8c.chunk.js.map +0 -1
  164. package/dist/js/settings.b3fd7918efe3c8bfae88.chunk.js +0 -2
  165. package/dist/js/settings.b3fd7918efe3c8bfae88.chunk.js.gz +0 -0
  166. package/dist/js/settings.b3fd7918efe3c8bfae88.chunk.js.map +0 -1
  167. package/dist/js/share.c0cdc71a867839f5c8b3.chunk.js +0 -2
  168. package/dist/js/share.c0cdc71a867839f5c8b3.chunk.js.gz +0 -0
  169. package/dist/js/share.c0cdc71a867839f5c8b3.chunk.js.map +0 -1
  170. package/dist/js/system-log.45dba574bcb91efd176c.chunk.js.gz +0 -0
  171. package/dist/js/system-log.45dba574bcb91efd176c.chunk.js.map +0 -1
  172. package/dist/js/transfers.4ed15c9e5e62fe968fbc.chunk.js +0 -2
  173. package/dist/js/transfers.4ed15c9e5e62fe968fbc.chunk.js.gz +0 -0
  174. package/dist/js/transfers.4ed15c9e5e62fe968fbc.chunk.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkairdcpp_webui=self.webpackChunkairdcpp_webui||[]).push([[364],{80803:(e,s,t)=>{t.d(s,{Z:()=>a});var n=t(87537),o=t.n(n),i=t(23645),r=t.n(i)()(o());r.push([e.id,".hub-action-prompt {\r\n flex-direction: column;\r\n align-items: flex-start !important;\r\n}\r\n\r\n.hub-action-prompt .header {\r\n margin: 0 0 1rem !important;\r\n}\r\n\r\n.hub-action-prompt .password.prompt .help {\r\n margin-top: 10px;\r\n}\r\n\r\n.hub-action-prompt .redirect.prompt {\r\n max-width: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n.hub.session .virtual-table,\r\n.hub.session .offline-message,\r\n.hub.session .loader-wrapper {\r\n flex: 1;\r\n margin-top: 5px;\r\n}\r\n\r\n.hub.session .cell-wrapper.tag,\r\n.hub.session .cell-wrapper.nick,\r\n.hub.session .cell-wrapper.description,\r\n.hub.session .cell-wrapper.share_size {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n}\r\n\r\n.hub.session .cell-wrapper.nick.op {\r\n color: steelblue;\r\n}\r\n.hub.session .session-footer .actions-wrapper > a,\r\n.hub.session .session-footer .actions-wrapper > div {\r\n /* Don't cut the shadow */\r\n padding-left: 1px;\r\n padding-bottom: 1px;\r\n}\r\n\r\n.hub.session .session-footer .userlist-button label {\r\n color: grey;\r\n font-size: small;\r\n}\r\n\r\n.hub.session .session-footer .actions-wrapper .dropdown {\r\n margin-left: 10px;\r\n}","",{version:3,sources:["webpack://./src/routes/Sidebar/routes/Hubs/style.css"],names:[],mappings:"AAAA;EACE,sBAAsB;EACtB,kCAAkC;AACpC;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;;;EAGE,OAAO;EACP,eAAe;AACjB;;AAEA;;;;EAIE,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;AACA;;EAEE,yBAAyB;EACzB,iBAAiB;EACjB,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,iBAAiB;AACnB",sourcesContent:[".hub-action-prompt {\r\n flex-direction: column;\r\n align-items: flex-start !important;\r\n}\r\n\r\n.hub-action-prompt .header {\r\n margin: 0 0 1rem !important;\r\n}\r\n\r\n.hub-action-prompt .password.prompt .help {\r\n margin-top: 10px;\r\n}\r\n\r\n.hub-action-prompt .redirect.prompt {\r\n max-width: 100%;\r\n overflow: hidden;\r\n}\r\n\r\n.hub.session .virtual-table,\r\n.hub.session .offline-message,\r\n.hub.session .loader-wrapper {\r\n flex: 1;\r\n margin-top: 5px;\r\n}\r\n\r\n.hub.session .cell-wrapper.tag,\r\n.hub.session .cell-wrapper.nick,\r\n.hub.session .cell-wrapper.description,\r\n.hub.session .cell-wrapper.share_size {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n}\r\n\r\n.hub.session .cell-wrapper.nick.op {\r\n color: steelblue;\r\n}\r\n.hub.session .session-footer .actions-wrapper > a,\r\n.hub.session .session-footer .actions-wrapper > div {\r\n /* Don't cut the shadow */\r\n padding-left: 1px;\r\n padding-bottom: 1px;\r\n}\r\n\r\n.hub.session .session-footer .userlist-button label {\r\n color: grey;\r\n font-size: small;\r\n}\r\n\r\n.hub.session .session-footer .actions-wrapper .dropdown {\r\n margin-left: 10px;\r\n}"],sourceRoot:""}]);const a=r},48005:(e,s,t)=>{t.d(s,{Z:()=>r});var n=t(85893),o=(t(67294),t(35936)),i=t(55019);const r=e=>{var{hub:s}=e,t=function(e,s){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&s.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)s.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(t[n[o]]=e[n[o]])}return t}(e,["hub"]);return(0,n.jsx)(o.Z,Object.assign({},t,{icon:(0,i.iU)(s.connect_state.id)+" sitemap"}))}},6659:(e,s,t)=>{t.r(s),t.d(s,{default:()=>De});var n=t(85893),o=t(67294),i=t(64935),r=t(10907),a=t(93281),c=t(21222),l=t(518),p=t(50566),h=t(38982),d=t(48117),u=t(76249),m=t(32347);const S={reconnect:{displayName:"Reconnect",access:u.PS.HUBS_EDIT,icon:d.Z.REFRESH_COLORED,handler:({data:e})=>l.Z.post(`${c.Z.SESSIONS_URL}/${e.id}/reconnect`)},favorite:{access:u.PS.HUBS_EDIT,displayName:"Add to favorites",icon:d.Z.FAVORITE,filter:e=>!e.favorite_hub,handler:({data:e})=>l.Z.post(`${c.Z.SESSIONS_URL}/${e.id}/favorite`),notifications:{onSuccess:"The hub {{item.identity.name}} was added in favorites"}},toggleChatNotify:{access:u.PS.HUBS_EDIT,displayName:"Use chat notification",handler:({data:e})=>l.Z.patch(`${c.Z.SESSIONS_URL}/${e.id}`,{use_main_chat_notify:!e.settings.use_main_chat_notify}),checked:e=>e.settings.use_main_chat_notify},toggleShowJoins:{access:u.PS.HUBS_EDIT,displayName:"Show joins/parts",handler:({data:e})=>l.Z.patch(`${c.Z.SESSIONS_URL}/${e.id}`,{show_joins:!e.settings.show_joins}),checked:e=>e.settings.show_joins}},A=(0,h.Z)((0,p.Z)(S,c.Z.SESSIONS_URL,u.PS.HUBS_EDIT),c.Z.SESSIONS_URL,u.PS.HUBS_EDIT),b={moduleId:m.jv.HUBS,actions:A};var g=t(16119),w=t(55019),x=t(10293),E=t.n(x),j=t(41143),f=t.n(j),_=t(14936),C=t(94897),Z=t(46614);const y=E().createStore({scroll:(0,Z.$)(),onSocketConnected(e){f()(!this.hasMessages(),"No existing hub messages should exist on socket connect"),f()(!this.hasInitializedSessions(),"No initialized hub sessions should exist on socket connect"),e(c.Z.MODULE_URL,c.Z.HUB_MESSAGE,this._onChatMessage),e(c.Z.MODULE_URL,c.Z.HUB_STATUS_MESSAGE,this._onStatusMessage),e(c.Z.MODULE_URL,c.Z.SESSION_UPDATED,this._onSessionUpdated),e(c.Z.MODULE_URL,c.Z.SESSION_REMOVED,this._onSessionRemoved)}}),O=(0,_.Z)(y,g.Z,C.Z.HUBS_VIEW);var U=t(10606),N=t(70516),v=t(40479),I=t(45697),B=t.n(I),T=t(93836);const R=E().createStore({_viewName:"hub_user_view",_apiUrl:c.Z.SESSIONS_URL,_sessionStore:a.Z,mixins:[(0,T.Z)("nick")]});var L=t(35108),D=t(78230),H=t(68126),G=t(47021),P=t(27695),k=t(54883),$=t(4333);const F=({cellData:e,rowDataGetter:s,session:t})=>(0,n.jsx)(G.cG,{text:e,user:s(),userIcon:!0,remoteMenuId:$.Z.HUB_USER,entityId:t.id});class M extends o.Component{constructor(){super(...arguments),this.rowClassNameGetter=e=>e.flags.join(" "),this.emptyRowsNodeGetter=()=>{const{session:e,sessionT:s}=this.props,t=e.connect_state.id;if(t===u.XF.DISCONNECTED||t===u.XF.REDIRECT)return(0,n.jsx)("div",Object.assign({className:"offline-message"},{children:(0,n.jsx)(P.Z,{className:"offline",title:s.translate("Not connected to the hub"),icon:d.Z.OFFLINE})}));const o=s.translate(t!==u.XF.CONNECTED?"Connecting":"Loading userlist");return(0,n.jsx)("div",Object.assign({className:"loader-wrapper"},{children:(0,n.jsx)(k.Z,{text:o})}))}}render(){const{session:e}=this.props;return(0,n.jsxs)(D.Z,Object.assign({store:R,entityId:e.id,sessionStore:a.Z,rowClassNameGetter:this.rowClassNameGetter,emptyRowsNodeGetter:this.emptyRowsNodeGetter,moduleId:m.jv.HUBS},{children:[(0,n.jsx)(L.Column,{name:"Nick",width:170,columnKey:"nick",flexGrow:8,cell:(0,n.jsx)(F,{session:e})}),(0,n.jsx)(L.Column,{name:"Share size",width:85,columnKey:"share_size",cell:(0,n.jsx)(H.Eh,{}),flexGrow:1}),(0,n.jsx)(L.Column,{name:"Description",width:100,columnKey:"description",flexGrow:1}),(0,n.jsx)(L.Column,{name:"Tag",width:150,columnKey:"tag",flexGrow:2}),(0,n.jsx)(L.Column,{name:"Upload speed",width:80,columnKey:"upload_speed",cell:(0,n.jsx)(H.$A,{}),flexGrow:2}),(0,n.jsx)(L.Column,{name:"Download speed",width:80,columnKey:"download_speed",cell:(0,n.jsx)(H.$A,{}),flexGrow:2}),(0,n.jsx)(L.Column,{name:"IP (v4)",width:120,columnKey:"ip4",flexGrow:3,cell:(0,n.jsx)(H.fI,{})}),(0,n.jsx)(L.Column,{name:"IP (v6)",width:120,columnKey:"ip6",flexGrow:3,cell:(0,n.jsx)(H.fI,{})}),(0,n.jsx)(L.Column,{name:"Files",width:70,columnKey:"file_count",flexGrow:3})]}))}}M.propTypes={session:B().object};const K=M;var z=t(2445),V=t(88998),X=t(68325),J=t(11485),W=t(54080);const q=(0,J.i)((e=>{const[s,t]=(0,o.useState)({share_size:0,user_count:0});(0,o.useEffect)((()=>{l.Z.get(`${c.Z.SESSIONS_URL}/${e.session.id}/counts`).then(t).catch((e=>console.error("Failed to fetch hub counts",e.message)));const s=c.Z.SESSIONS_URL;return e.addSocketListener(s,c.Z.SESSION_COUNTS_UPDATED,(e=>t(e)),e.session.id),()=>e.removeSocketListeners(e)}),[e.session]);const i=(0,o.useContext)(W.c),{userlistToggle:r,session:a,sessionT:p}=e,{user_count:h,share_size:d}=s,u=(0,z.BU)(h>0?d/h:0,p.plainT);return(0,n.jsxs)(V.C,{children:[(0,n.jsx)(V.o,{text:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(X.Z,{encryption:a.encryption}),p.t("xUsers",{defaultValue:"{{count}} user",defaultValue_plural:"{{count}} users",count:h,replace:{count:h}})]})}),!(0,U.wd)(i)&&(0,n.jsx)(V.o,{text:p.t("sharePerUser",{defaultValue:"{{total}} ({{average}}/user)",replace:{total:(0,z.BU)(d,p.plainT),average:u}})}),(0,n.jsx)("div",Object.assign({className:"actions-wrapper"},{children:(0,n.jsxs)("div",Object.assign({className:"actions"},{children:[r,(0,n.jsx)(G.PC,{className:"top left pointing",actions:b,ids:["toggleChatNotify","toggleShowJoins"],header:p.translate("Notification settings"),itemData:a,triggerIcon:a.settings.use_main_chat_notify||a.settings.show_joins?"yellow bell":"bell"})]}))}))]})}),(({session:e})=>!!a.Z.getSession(e.id)));var Q=t(78217),Y=t(84807),ee=t(66883),se=t(35936),te=t(85444),ne=t(94076);(0,ne.yE)(c.Z.SESSIONS_URL),(0,ne.c8)(c.Z.SESSIONS_URL),(0,ne._b)(c.Z.SESSIONS_URL),(0,ne.pJ)(c.Z.SESSIONS_URL);var oe=t(89519);const ie=({icon:e,title:s,content:t})=>ee.Z.hasAccess(u.PS.HUBS_EDIT)?(0,n.jsxs)("div",Object.assign({className:"ui icon message hub-action-prompt"},{children:[(0,n.jsxs)("h3",Object.assign({className:"ui header"},{children:[(0,n.jsx)(se.Z,{icon:e}),(0,n.jsx)("div",Object.assign({className:"content"},{children:s}))]})),t]})):null,re=({hub:e,sessionT:s})=>(0,n.jsxs)("div",Object.assign({className:"password prompt"},{children:[(0,n.jsx)(Q.Z,{placeholder:s.translate("Password"),caption:s.translate("Submit"),icon:d.Z.CONNECT,handleAction:t=>(0,oe.h9)((()=>((e,s)=>l.Z.post(`${c.Z.SESSIONS_URL}/${e.id}/password`,{password:s}))(e,t)),s.plainT)}),(0,n.jsx)("div",Object.assign({className:"help"},{children:(0,n.jsx)(te.c,Object.assign({i18nKey:s.toI18nKey("passwordPromptHelp")},{children:"This usually means that there's a registered account associated with your nick. If you don't remember having a registered account in this hub, there may be someone else using the same nick."}))}))]})),ae=({hub:e,sessionT:s})=>(0,n.jsx)(Y.Z,{className:"redirect prompt",icon:d.Z.CONNECT,onClick:t=>(0,oe.h9)((()=>(e=>l.Z.post(`${c.Z.SESSIONS_URL}/${e.id}/redirect`))(e)),s.plainT),caption:s.t("acceptRedirect",{defaultValue:"Accept redirect to {{url}}",replace:{url:e.connect_state.data.hub_url}})});var ce=t(93379),le=t.n(ce),pe=t(7795),he=t.n(pe),de=t(90569),ue=t.n(de),me=t(3565),Se=t.n(me),Ae=t(19216),be=t.n(Ae),ge=t(44589),we=t.n(ge),xe=t(80803),Ee={};Ee.styleTagTransform=we(),Ee.setAttributes=Se(),Ee.insert=ue().bind(null,"head"),Ee.domAPI=he(),Ee.insertStyleElement=be(),le()(xe.Z,Ee),xe.Z&&xe.Z.locals&&xe.Z.locals;var je=t(74225);const fe=e=>`view_userlist_${e.session.id}`,_e=e=>(0,U.TG)(fe(e),!1);class Ce extends o.Component{constructor(){super(...arguments),this.state={showList:_e(this.props)},this.toggleListState=()=>{this.setState({showList:!this.state.showList})},this.getMessage=()=>{const{session:e,sessionT:s}=this.props,t=e.connect_state.id;return t===u.XF.PASSWORD?(0,n.jsx)(ie,{title:s.translate("Password required"),icon:d.Z.LOCK,content:(0,n.jsx)(re,{hub:e,sessionT:s})}):t===u.XF.REDIRECT?(0,n.jsx)(ie,{title:s.translate("Redirect requested"),icon:d.Z.REDIRECT,content:(0,n.jsx)(ae,{hub:e,sessionT:s})}):null},this.onClickUsers=()=>{this.toggleListState(),(0,U.nG)(fe(this.props),this.state.showList)},this.handleFileUpload=e=>{const{hub_url:s}=this.props.session;return(0,je.Pd)(e,s,void 0)}}componentDidUpdate(e){e.session.id!==this.props.session.id&&this.state.showList!==_e(this.props)&&this.toggleListState()}render(){const{session:e,sessionApi:s,sessionT:t,uiActions:o}=this.props,{showList:i}=this.state,r=(0,n.jsx)(N.Z,{className:"userlist-button",type:"toggle",caption:t.translate("User list"),onChange:this.onClickUsers,checked:i});return(0,n.jsxs)("div",Object.assign({className:"hub chat session"},{children:[this.getMessage(),i?(0,n.jsx)(K,{session:e,sessionT:t}):(0,n.jsx)(v.Z,{messageStore:O,chatApi:g.Z,sessionApi:s,chatActions:o,chatAccess:u.PS.HUBS_SEND,session:e,handleFileUpload:this.handleFileUpload,highlightRemoteMenuId:$.Z.HUB_MESSAGE_HIGHLIGHT}),(0,n.jsx)(q,{userlistToggle:r,session:e,sessionT:t})]}))}}Ce.displayName="HubSession";const Ze=Ce;var ye=t(61283),Oe=t(3267),Ue=t(73727),Ne=t(15479);class ve extends o.Component{constructor(){super(...arguments),this.handleConnect=e=>{g.Z.createSession(this.props.location,e,a.Z)},this.hasSession=e=>a.Z.getSessionByUrl(e.hub_url),this.recentHubRender=e=>(0,n.jsx)("a",Object.assign({onClick:s=>this.handleConnect(e.hub_url)},{children:e.name}))}render(){const{sessionT:e}=this.props;return(0,n.jsxs)("div",Object.assign({className:"hub session new"},{children:[(0,n.jsx)(ye.Z,{submitHandler:this.handleConnect,button:(0,n.jsx)(Y.Z,{icon:d.Z.CONNECT,caption:e.translate("Connect")})}),(0,n.jsx)(P.Z,{description:(0,n.jsxs)(te.c,Object.assign({i18nKey:e.toI18nKey("favoriteHubsHint")},{children:["Tip: visit the ",(0,n.jsx)(Ue.rU,Object.assign({to:"/favorite-hubs"},{children:"Favorite hubs"}))," page to connect using custom settings"]}))}),(0,n.jsx)(Oe.Z,{entryType:Ne.WJ.HUB,hasSession:this.hasSession,entryTitleRenderer:this.recentHubRender,entryIcon:"sitemap"})]}))}}const Ie=ve;var Be=t(48005),Te=t(93101),Re=t(8717);const Le={itemNameGetter:e=>e.identity.name,itemStatusGetter:e=>(0,w.iU)(e.connect_state.id),itemHeaderDescriptionGetter:e=>(0,n.jsx)(i.lB,{text:e.identity.description,emojify:!0}),itemHeaderIconGetter:e=>(0,n.jsx)(Be.Z,{hub:e})},De=(0,Te.J)((e=>{const{match:s,t}=e,o=function(e,s){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&s.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)s.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(t[n[o]]=e[n[o]])}return t}(e,["match","t"]);return(0,n.jsx)(r.Z,Object.assign({activeId:(i=s.params,i.id?parseInt(i.id):null),baseUrl:"hubs",newCaption:t((0,Re.zS)("new",m.jv.HUBS),"Connect"),newDescription:t((0,Re.zS)("newDesc",m.jv.HUBS),"Connect to a new hub"),newIcon:d.Z.HUBS_PLAIN,editAccess:u.PS.HUBS_EDIT,uiActions:b,actionIds:["reconnect","clear","favorite"],sessionApi:g.Z,sessionItemLayout:Ze,newLayout:Ie,t,unreadInfoStore:a.Z},Le,o));var i}),a.Z)}}]);
2
+ //# sourceMappingURL=hubs.42526e43270139eb1849.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/hubs.42526e43270139eb1849.chunk.js","mappings":"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","sources":["webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/style.css","webpack://airdcpp-webui/./src/components/icon/HubIcon.tsx","webpack://airdcpp-webui/./src/actions/ui/HubActions.ts","webpack://airdcpp-webui/./src/stores/HubMessageStore.ts","webpack://airdcpp-webui/./src/stores/HubUserViewStore.js","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/HubUserTable.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/HubFooter.tsx","webpack://airdcpp-webui/./src/services/api/HubApi.ts","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/HubPrompt.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/style.css?5587","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/HubSession.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/HubNew.tsx","webpack://airdcpp-webui/./src/routes/Sidebar/routes/Hubs/components/Hubs.tsx"],"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, \".hub-action-prompt {\\r\\n flex-direction: column;\\r\\n align-items: flex-start !important;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .header {\\r\\n margin: 0 0 1rem !important;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .password.prompt .help {\\r\\n margin-top: 10px;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .redirect.prompt {\\r\\n max-width: 100%;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.hub.session .virtual-table,\\r\\n.hub.session .offline-message,\\r\\n.hub.session .loader-wrapper {\\r\\n flex: 1;\\r\\n margin-top: 5px;\\r\\n}\\r\\n\\r\\n.hub.session .cell-wrapper.tag,\\r\\n.hub.session .cell-wrapper.nick,\\r\\n.hub.session .cell-wrapper.description,\\r\\n.hub.session .cell-wrapper.share_size {\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n}\\r\\n\\r\\n.hub.session .cell-wrapper.nick.op {\\r\\n color: steelblue;\\r\\n}\\r\\n.hub.session .session-footer .actions-wrapper > a,\\r\\n.hub.session .session-footer .actions-wrapper > div {\\r\\n /* Don't cut the shadow */\\r\\n padding-left: 1px;\\r\\n padding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.hub.session .session-footer .userlist-button label {\\r\\n color: grey;\\r\\n font-size: small;\\r\\n}\\r\\n\\r\\n.hub.session .session-footer .actions-wrapper .dropdown {\\r\\n margin-left: 10px;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/Sidebar/routes/Hubs/style.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,kCAAkC;AACpC;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;;;EAGE,OAAO;EACP,eAAe;AACjB;;AAEA;;;;EAIE,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;AACA;;EAEE,yBAAyB;EACzB,iBAAiB;EACjB,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,iBAAiB;AACnB\",\"sourcesContent\":[\".hub-action-prompt {\\r\\n flex-direction: column;\\r\\n align-items: flex-start !important;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .header {\\r\\n margin: 0 0 1rem !important;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .password.prompt .help {\\r\\n margin-top: 10px;\\r\\n}\\r\\n\\r\\n.hub-action-prompt .redirect.prompt {\\r\\n max-width: 100%;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.hub.session .virtual-table,\\r\\n.hub.session .offline-message,\\r\\n.hub.session .loader-wrapper {\\r\\n flex: 1;\\r\\n margin-top: 5px;\\r\\n}\\r\\n\\r\\n.hub.session .cell-wrapper.tag,\\r\\n.hub.session .cell-wrapper.nick,\\r\\n.hub.session .cell-wrapper.description,\\r\\n.hub.session .cell-wrapper.share_size {\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n}\\r\\n\\r\\n.hub.session .cell-wrapper.nick.op {\\r\\n color: steelblue;\\r\\n}\\r\\n.hub.session .session-footer .actions-wrapper > a,\\r\\n.hub.session .session-footer .actions-wrapper > div {\\r\\n /* Don't cut the shadow */\\r\\n padding-left: 1px;\\r\\n padding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.hub.session .session-footer .userlist-button label {\\r\\n color: grey;\\r\\n font-size: small;\\r\\n}\\r\\n\\r\\n.hub.session .session-footer .actions-wrapper .dropdown {\\r\\n margin-left: 10px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","//import PropTypes from 'prop-types';\r\nimport * as React from 'react';\r\n\r\nimport Icon, { IconProps } from 'components/semantic/Icon';\r\nimport { hubOnlineStatusToColor } from 'utils/TypeConvert';\r\n\r\nimport * as API from 'types/api';\r\n\r\n\r\ninterface HubIconProps extends IconProps {\r\n hub: API.Hub;\r\n}\r\n\r\nconst HubIcon: React.FC<HubIconProps> = ({ hub, ...other }) => (\r\n <Icon\r\n { ...other }\r\n icon={ hubOnlineStatusToColor(hub.connect_state.id) + ' sitemap' }\r\n />\r\n);\r\n\r\n/*HubIcon.propTypes = {\r\n // Hub object\r\n hub: PropTypes.object.isRequired,\r\n};*/\r\n\r\nexport default HubIcon;","import HubConstants from 'constants/HubConstants';\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport ChatActionDecorator from './decorators/ChatActionDecorator';\r\nimport SessionActionDecorator from './decorators/SessionActionDecorator';\r\n\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 showFav = (hub: API.Hub) => !hub.favorite_hub;\r\n\r\n\r\nconst handleFavorite: UI.ActionHandler<API.Hub> = ({ data: hub }) => {\r\n return SocketService.post(`${HubConstants.SESSIONS_URL}/${hub.id}/favorite`);\r\n};\r\n\r\nconst handleToggleChatNotify: UI.ActionHandler<API.Hub> = ({ data: hub }) => {\r\n return SocketService.patch(`${HubConstants.SESSIONS_URL}/${hub.id}`, {\r\n use_main_chat_notify: !hub.settings.use_main_chat_notify,\r\n });\r\n};\r\n\r\nconst handleToggleJoins: UI.ActionHandler<API.Hub> = ({ data: hub }) => {\r\n return SocketService.patch(`${HubConstants.SESSIONS_URL}/${hub.id}`, {\r\n show_joins: !hub.settings.show_joins,\r\n });\r\n};\r\n\r\nconst handleReconnect: UI.ActionHandler<API.Hub> = ({ data: hub }) => {\r\n return SocketService.post(`${HubConstants.SESSIONS_URL}/${hub.id}/reconnect`);\r\n};\r\n\r\nconst HubActions: UI.ActionListType<API.Hub> = {\r\n reconnect: { \r\n displayName: 'Reconnect',\r\n access: API.AccessEnum.HUBS_EDIT, \r\n icon: IconConstants.REFRESH_COLORED,\r\n handler: handleReconnect,\r\n },\r\n favorite: { \r\n access: API.AccessEnum.HUBS_EDIT, \r\n displayName: 'Add to favorites', \r\n icon: IconConstants.FAVORITE,\r\n filter: showFav,\r\n handler: handleFavorite,\r\n notifications: {\r\n onSuccess: 'The hub {{item.identity.name}} was added in favorites',\r\n }\r\n },\r\n toggleChatNotify: { \r\n access: API.AccessEnum.HUBS_EDIT, \r\n displayName: 'Use chat notification',\r\n handler: handleToggleChatNotify,\r\n checked: hub => {\r\n return hub.settings.use_main_chat_notify;\r\n }\r\n },\r\n toggleShowJoins: { \r\n access: API.AccessEnum.HUBS_EDIT, \r\n displayName: 'Show joins/parts', \r\n handler: handleToggleJoins,\r\n checked: hub => {\r\n return hub.settings.show_joins;\r\n }\r\n },\r\n};\r\n\r\n\r\nconst HubActionsDecorated = SessionActionDecorator(\r\n ChatActionDecorator(\r\n HubActions, \r\n HubConstants.SESSIONS_URL, \r\n API.AccessEnum.HUBS_EDIT\r\n ), \r\n HubConstants.SESSIONS_URL, \r\n API.AccessEnum.HUBS_EDIT\r\n);\r\n\r\nexport default {\r\n moduleId: UI.Modules.HUBS,\r\n actions: HubActionsDecorated,\r\n};\r\n","//@ts-ignore\r\nimport Reflux from 'reflux';\r\nimport invariant from 'invariant';\r\n\r\nimport HubConstants from 'constants/HubConstants';\r\nimport HubActions from 'actions/reflux/HubActions';\r\n\r\nimport MessageStoreDecorator from './decorators/MessageStoreDecorator';\r\n\r\nimport AccessConstants from 'constants/AccessConstants';\r\nimport { SessionScrollPositionKeeper } from './helpers/SessionScrollPositionKeeper';\r\nimport { AddSocketListener } from 'decorators/SocketSubscriptionDecorator';\r\n\r\n\r\nconst HubMessageStore = Reflux.createStore({\r\n scroll: SessionScrollPositionKeeper(),\r\n\r\n onSocketConnected(addSocketListener: AddSocketListener) {\r\n invariant(!this.hasMessages(), 'No existing hub messages should exist on socket connect');\r\n invariant(!this.hasInitializedSessions(), 'No initialized hub sessions should exist on socket connect');\r\n\r\n addSocketListener(HubConstants.MODULE_URL, HubConstants.HUB_MESSAGE, this._onChatMessage);\r\n addSocketListener(HubConstants.MODULE_URL, HubConstants.HUB_STATUS_MESSAGE, this._onStatusMessage);\r\n\r\n addSocketListener(HubConstants.MODULE_URL, HubConstants.SESSION_UPDATED, this._onSessionUpdated);\r\n addSocketListener(HubConstants.MODULE_URL, HubConstants.SESSION_REMOVED, this._onSessionRemoved);\r\n },\r\n});\r\n\r\nexport default MessageStoreDecorator(HubMessageStore, HubActions, AccessConstants.HUBS_VIEW)\r\n;\r\n","import ViewStoreMixin from 'mixins/ViewStoreMixin';\r\nimport Reflux from 'reflux';\r\nimport HubConstants from 'constants/HubConstants';\r\nimport HubSessionStore from './HubSessionStore';\r\n\r\nexport default Reflux.createStore({\r\n _viewName: 'hub_user_view',\r\n _apiUrl: HubConstants.SESSIONS_URL,\r\n _sessionStore: HubSessionStore,\r\n mixins: [ ViewStoreMixin('nick') ],\r\n});\r\n","import PropTypes from 'prop-types';\r\nimport * as React from 'react';\r\n\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\nimport HubUserViewStore from 'stores/HubUserViewStore';\r\n\r\nimport { Column } from 'fixed-data-table-2';\r\nimport VirtualTable from 'components/table/VirtualTable';\r\nimport { SizeCell, ConnectionCell, IpCell } from 'components/table/Cell';\r\n\r\nimport { TableUserMenu } from 'components/menu';\r\n\r\nimport Message from 'components/semantic/Message';\r\nimport Loader from 'components/semantic/Loader';\r\nimport { RowWrapperCellChildProps } from 'components/table/RowWrapperCell';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\nimport IconConstants from 'constants/IconConstants';\r\nimport MenuConstants from 'constants/MenuConstants';\r\n\r\n\r\ninterface NickCellProps extends RowWrapperCellChildProps<string, API.HubUser> {\r\n session: API.Hub;\r\n}\r\n\r\nconst NickCell: React.FC<NickCellProps> = (\r\n { cellData, rowDataGetter, session }\r\n) => (\r\n <TableUserMenu \r\n text={ cellData } \r\n user={ rowDataGetter!() }\r\n userIcon={ true }\r\n remoteMenuId={ MenuConstants.HUB_USER }\r\n entityId={ session.id }\r\n />\r\n);\r\n\r\n\r\ninterface HubUserTableProps {\r\n session: API.Hub;\r\n sessionT: UI.ModuleTranslator;\r\n}\r\n\r\nclass HubUserTable extends React.Component<HubUserTableProps> {\r\n static propTypes = {\r\n session: PropTypes.object, // required\r\n };\r\n\r\n rowClassNameGetter = (user: API.HubUser) => {\r\n return user.flags.join(' ');\r\n }\r\n\r\n emptyRowsNodeGetter = () => {\r\n const { session, sessionT } = this.props;\r\n const connectState = session.connect_state.id;\r\n\r\n if (connectState === API.HubConnectStateEnum.DISCONNECTED || connectState === API.HubConnectStateEnum.REDIRECT) {\r\n return (\r\n <div className=\"offline-message\">\r\n <Message \r\n className=\"offline\"\r\n title={ sessionT.translate('Not connected to the hub') }\r\n icon={ IconConstants.OFFLINE }\r\n />\r\n </div>\r\n );\r\n } \r\n\r\n const text = sessionT.translate(\r\n connectState !== API.HubConnectStateEnum.CONNECTED ? 'Connecting' : 'Loading userlist'\r\n );\r\n \r\n return (\r\n <div className=\"loader-wrapper\">\r\n <Loader text={ text }/>\r\n </div>\r\n );\r\n }\r\n\r\n render() {\r\n const { session } = this.props;\r\n return (\r\n <VirtualTable\r\n store={ HubUserViewStore }\r\n entityId={ session.id }\r\n sessionStore={ HubSessionStore }\r\n rowClassNameGetter={ this.rowClassNameGetter }\r\n emptyRowsNodeGetter={ this.emptyRowsNodeGetter }\r\n moduleId={ UI.Modules.HUBS }\r\n >\r\n <Column\r\n name=\"Nick\"\r\n width={170}\r\n columnKey=\"nick\"\r\n flexGrow={8}\r\n cell={ <NickCell session={ session }/> }\r\n />\r\n <Column\r\n name=\"Share size\"\r\n width={85}\r\n columnKey=\"share_size\"\r\n cell={ <SizeCell/> }\r\n flexGrow={1}\r\n />\r\n <Column\r\n name=\"Description\"\r\n width={100}\r\n columnKey=\"description\"\r\n flexGrow={1}\r\n />\r\n <Column\r\n name=\"Tag\"\r\n width={150}\r\n columnKey=\"tag\"\r\n flexGrow={2}\r\n />\r\n <Column\r\n name=\"Upload speed\"\r\n width={80}\r\n columnKey=\"upload_speed\"\r\n cell={ <ConnectionCell/> }\r\n flexGrow={2}\r\n />\r\n <Column\r\n name=\"Download speed\"\r\n width={80}\r\n columnKey=\"download_speed\"\r\n cell={ <ConnectionCell/> }\r\n flexGrow={2}\r\n />\r\n <Column\r\n name=\"IP (v4)\"\r\n width={120}\r\n columnKey=\"ip4\"\r\n flexGrow={3}\r\n cell={ <IpCell/> }\r\n />\r\n <Column\r\n name=\"IP (v6)\"\r\n width={120}\r\n columnKey=\"ip6\"\r\n flexGrow={3}\r\n cell={ <IpCell/> }\r\n />\r\n <Column\r\n name=\"Files\"\r\n width={70}\r\n columnKey=\"file_count\"\r\n flexGrow={3}\r\n />\r\n </VirtualTable>\r\n );\r\n }\r\n}\r\n\r\nexport default HubUserTable;","//import PropTypes from 'prop-types';\r\nimport { useEffect, useState, useContext } from 'react';\r\n\r\nimport * as React from 'react';\r\n\r\nimport HubConstants from 'constants/HubConstants';\r\nimport SocketService from 'services/SocketService';\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\n\r\nimport { formatSize } from 'utils/ValueFormat';\r\nimport { SessionFooter, FooterItem } from 'routes/Sidebar/components/SessionFooter';\r\nimport EncryptionState from 'components/EncryptionState';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\n\r\nimport { ErrorResponse } from 'airdcpp-apisocket';\r\nimport { \r\n SocketSubscriptionDecorator, SocketSubscriptionDecoratorChildProps\r\n} from 'decorators/SocketSubscriptionDecorator';\r\nimport { useMobileLayout } from 'utils/BrowserUtils';\r\nimport { LayoutWidthContext } from 'context/LayoutWidthContext';\r\nimport { ActionMenu } from 'components/menu';\r\nimport HubActions from 'actions/ui/HubActions';\r\n\r\n\r\ninterface HubFooterProps {\r\n session: API.Hub;\r\n userlistToggle: React.ReactNode;\r\n sessionT: UI.ModuleTranslator;\r\n}\r\n\r\n\r\ntype DataProps = SocketSubscriptionDecoratorChildProps<HubFooterProps>;\r\nconst HubFooter: React.FC<HubFooterProps & DataProps> = (props) => {\r\n const [ counts, setCounts ] = useState<API.HubCounts>({\r\n share_size: 0,\r\n user_count: 0\r\n });\r\n\r\n useEffect(\r\n () => {\r\n // Fetch initial\r\n SocketService.get<API.HubCounts>(`${HubConstants.SESSIONS_URL}/${props.session.id}/counts`)\r\n .then(setCounts)\r\n .catch((error: ErrorResponse) => console.error('Failed to fetch hub counts', error.message));\r\n\r\n // Subscription\r\n const url = HubConstants.SESSIONS_URL;\r\n props.addSocketListener(\r\n url, \r\n HubConstants.SESSION_COUNTS_UPDATED, \r\n (data: API.HubCounts) => setCounts(data), \r\n props.session.id\r\n );\r\n\r\n return () => props.removeSocketListeners(props);\r\n },\r\n [ props.session ]\r\n );\r\n\r\n const layoutWidth = useContext(LayoutWidthContext);\r\n\r\n const { userlistToggle, session, sessionT } = props;\r\n const { user_count: users, share_size: shared } = counts;\r\n\r\n const averageShare = formatSize(users > 0 ? (shared / users) : 0, sessionT.plainT);\r\n return (\r\n <SessionFooter>\r\n <FooterItem \r\n text={(\r\n <>\r\n <EncryptionState encryption={ session.encryption }/>\r\n { sessionT.t('xUsers', {\r\n defaultValue: '{{count}} user',\r\n defaultValue_plural: '{{count}} users',\r\n count: users,\r\n replace: {\r\n count: users\r\n }\r\n }\r\n ) }\r\n </>\r\n )}\r\n />\r\n { !useMobileLayout(layoutWidth) && (\r\n <FooterItem \r\n text={ sessionT.t('sharePerUser', {\r\n defaultValue: '{{total}} ({{average}}/user)',\r\n replace: {\r\n total: formatSize(shared, sessionT.plainT),\r\n average: averageShare\r\n }\r\n }) }\r\n /> \r\n ) }\r\n <div className=\"actions-wrapper\">\r\n <div className=\"actions\">\r\n { userlistToggle }\r\n <ActionMenu\r\n className=\"top left pointing\"\r\n actions={ HubActions }\r\n ids={[ 'toggleChatNotify', 'toggleShowJoins' ]}\r\n header={ sessionT.translate('Notification settings') } \r\n itemData={ session }\r\n triggerIcon={ \r\n session.settings.use_main_chat_notify || session.settings.show_joins ? 'yellow bell' : 'bell' \r\n }\r\n />\r\n </div>\r\n </div>\r\n </SessionFooter>\r\n );\r\n};\r\n\r\nexport default SocketSubscriptionDecorator(\r\n HubFooter,\r\n ({ session }) => !!HubSessionStore.getSession(session.id)\r\n);","import HubConstants from 'constants/HubConstants';\r\nimport SocketService from 'services/SocketService';\r\n\r\nimport * as API from 'types/api';\r\nimport { \r\n sendChatMessageDecorator, clearMessagesDecorator, setReadDecorator, fetchMessagesDecorator \r\n} from './common/ChatActions';\r\n//import * as UI from 'types/ui';\r\n\r\n\r\nexport const sendHubPassword = (\r\n hub: API.Hub, \r\n password: string\r\n) => {\r\n return SocketService.post(`${HubConstants.SESSIONS_URL}/${hub.id}/password`, { password: password });\r\n};\r\n\r\nexport const acceptHubRedirect = (hub: API.Hub) => {\r\n return SocketService.post(`${HubConstants.SESSIONS_URL}/${hub.id}/redirect`);\r\n};\r\n\r\nexport const sendHubChatMessage = sendChatMessageDecorator(HubConstants.SESSIONS_URL);\r\nexport const clearHubChatMessages = clearMessagesDecorator(HubConstants.SESSIONS_URL);\r\nexport const fetchHubChatMessages = fetchMessagesDecorator(HubConstants.SESSIONS_URL);\r\n\r\nexport const setHubSessionRead = setReadDecorator(HubConstants.SESSIONS_URL);\r\n","//import PropTypes from 'prop-types';\r\nimport * as React from 'react';\r\n\r\nimport ActionInput from 'components/semantic/ActionInput';\r\nimport Button from 'components/semantic/Button';\r\n\r\nimport LoginStore from 'stores/LoginStore';\r\nimport Icon, { IconType } from 'components/semantic/Icon';\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\nimport { Trans } from 'react-i18next';\r\nimport { sendHubPassword, acceptHubRedirect } from 'services/api/HubApi';\r\nimport { runBackgroundSocketAction } from 'utils/ActionUtils';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\n\r\ninterface HubActionPromptProps {\r\n icon: IconType;\r\n title: React.ReactNode;\r\n content: React.ReactNode;\r\n}\r\n\r\n// Main prompt (HUBS_EDIT permission is required for the content to be rendered)\r\nconst HubActionPrompt: React.FC<HubActionPromptProps> = (\r\n { icon, title, content }\r\n) => {\r\n if (!LoginStore.hasAccess(API.AccessEnum.HUBS_EDIT)) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div className=\"ui icon message hub-action-prompt\">\r\n <h3 className=\"ui header\">\r\n <Icon icon={ icon }/>\r\n <div className=\"content\">\r\n { title }\r\n </div>\r\n </h3>\r\n { content }\r\n </div>\r\n );\r\n};\r\n\r\n/*HubActionPrompt.propTypes = {\r\n // Message title\r\n title: PropTypes.node.isRequired,\r\n\r\n // Children\r\n content: PropTypes.node.isRequired,\r\n};*/\r\n\r\n\r\ninterface PasswordPromptProps {\r\n hub: API.Hub;\r\n sessionT: UI.ModuleTranslator;\r\n}\r\n\r\n// Sub prompts\r\nconst PasswordPrompt: React.FC<PasswordPromptProps> = ({ hub, sessionT }) => (\r\n <div className=\"password prompt\">\r\n <ActionInput \r\n placeholder={ sessionT.translate('Password') } \r\n caption={ sessionT.translate('Submit') }\r\n icon={ IconConstants.CONNECT }\r\n handleAction={ text => \r\n runBackgroundSocketAction(\r\n () => sendHubPassword(hub, text),\r\n sessionT.plainT\r\n )\r\n }\r\n />\r\n <div className=\"help\">\r\n <Trans i18nKey={ sessionT.toI18nKey('passwordPromptHelp') }>\r\n This usually means that there's a registered account associated with your nick. \r\n If you don't remember having a registered account in this hub, \r\n there may be someone else using the same nick.\r\n </Trans>\r\n </div>\r\n </div>\r\n);\r\n\r\ninterface RedirectPromptProps {\r\n hub: API.Hub;\r\n sessionT: UI.ModuleTranslator;\r\n}\r\n\r\nconst RedirectPrompt: React.FC<RedirectPromptProps> = ({ hub, sessionT }) => (\r\n <Button\r\n className=\"redirect prompt\"\r\n icon={ IconConstants.CONNECT }\r\n onClick={ _ => \r\n runBackgroundSocketAction(\r\n () => acceptHubRedirect(hub),\r\n sessionT.plainT\r\n )\r\n }\r\n caption={ sessionT.t('acceptRedirect', {\r\n defaultValue: 'Accept redirect to {{url}}',\r\n replace: {\r\n url: hub.connect_state.data!.hub_url\r\n }\r\n }) }\r\n />\r\n);\r\n\r\nexport { RedirectPrompt, PasswordPrompt, HubActionPrompt };","\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 { Component } from 'react';\r\n\r\nimport HubMessageStore from 'stores/HubMessageStore';\r\n\r\nimport { loadSessionProperty, saveSessionProperty } from 'utils/BrowserUtils';\r\nimport Checkbox from 'components/semantic/Checkbox';\r\n\r\nimport ChatLayout, { ChatAPI, ChatActionList } from 'routes/Sidebar/components/chat/ChatLayout';\r\nimport HubUserTable from 'routes/Sidebar/routes/Hubs/components/HubUserTable';\r\n\r\nimport HubFooter from 'routes/Sidebar/routes/Hubs/components/HubFooter';\r\nimport { RedirectPrompt, PasswordPrompt, HubActionPrompt } from 'routes/Sidebar/routes/Hubs/components/HubPrompt';\r\n\r\nimport '../style.css';\r\n\r\nimport * as API from 'types/api';\r\nimport { SessionChildProps } from 'routes/Sidebar/components/SessionLayout';\r\nimport { shareTempFile } from 'services/api/ShareApi';\r\nimport HubActions from 'actions/reflux/HubActions';\r\nimport IconConstants from 'constants/IconConstants';\r\nimport MenuConstants from 'constants/MenuConstants';\r\n\r\n\r\nconst getStorageKey = (props: HubSessionProps) => {\r\n return `view_userlist_${props.session.id}`;\r\n};\r\n\r\nconst checkList = (props: HubSessionProps) => {\r\n return loadSessionProperty(getStorageKey(props), false);\r\n};\r\n\r\ninterface HubSessionProps extends SessionChildProps<API.Hub, {}, ChatActionList> {\r\n\r\n}\r\n\r\nclass HubSession extends Component<HubSessionProps> {\r\n static displayName = 'HubSession';\r\n\r\n state = {\r\n showList: checkList(this.props),\r\n };\r\n \r\n componentDidUpdate(prevProps: HubSessionProps) {\r\n if (prevProps.session.id !== this.props.session.id && this.state.showList !== checkList(this.props)) {\r\n this.toggleListState();\r\n }\r\n }\r\n\r\n toggleListState = () => {\r\n this.setState({ showList: !this.state.showList });\r\n }\r\n\r\n getMessage = () => {\r\n const { session, sessionT } = this.props;\r\n const connectState = session.connect_state.id;\r\n\r\n if (connectState === API.HubConnectStateEnum.PASSWORD) {\r\n return (\r\n <HubActionPrompt \r\n title={ sessionT.translate('Password required') }\r\n icon={ IconConstants.LOCK }\r\n content={ <PasswordPrompt hub={ session } sessionT={ sessionT }/> }\r\n />\r\n );\r\n }\r\n\r\n if (connectState === API.HubConnectStateEnum.REDIRECT) {\r\n return (\r\n <HubActionPrompt \r\n title={ sessionT.translate('Redirect requested') }\r\n icon={ IconConstants.REDIRECT }\r\n content={ <RedirectPrompt hub={ session } sessionT={ sessionT }/> }\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n onClickUsers = () => {\r\n this.toggleListState();\r\n\r\n saveSessionProperty(getStorageKey(this.props), this.state.showList);\r\n }\r\n\r\n handleFileUpload = (file: File) => {\r\n const { hub_url } = this.props.session;\r\n return shareTempFile(file, hub_url, undefined);\r\n }\r\n\r\n render() {\r\n const { session, sessionApi, sessionT, uiActions } = this.props;\r\n const { showList } = this.state;\r\n\r\n const checkbox = (\r\n <Checkbox\r\n className=\"userlist-button\"\r\n type=\"toggle\"\r\n caption={ sessionT.translate('User list') }\r\n onChange={ this.onClickUsers }\r\n checked={ showList }\r\n />\r\n );\r\n\r\n return (\r\n <div className=\"hub chat session\">\r\n { this.getMessage() }\r\n { showList ? (\r\n <HubUserTable\r\n session={ session }\r\n sessionT={ sessionT }\r\n />\r\n ) : (\r\n <ChatLayout\r\n messageStore={ HubMessageStore }\r\n chatApi={ HubActions as ChatAPI }\r\n sessionApi={ sessionApi }\r\n chatActions={ uiActions }\r\n chatAccess={ API.AccessEnum.HUBS_SEND }\r\n session={ session }\r\n handleFileUpload={ this.handleFileUpload }\r\n highlightRemoteMenuId={ MenuConstants.HUB_MESSAGE_HIGHLIGHT }\r\n />\r\n ) }\r\n <HubFooter\r\n userlistToggle={ checkbox }\r\n session={ session }\r\n sessionT={ sessionT }\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default HubSession;","import { Component } from 'react';\r\n\r\nimport HubSearchInput from 'components/autosuggest/HubSearchInput';\r\nimport RecentLayout from 'routes/Sidebar/components/RecentLayout';\r\n\r\nimport Message from 'components/semantic/Message';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport HubActions from 'actions/reflux/HubActions';\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\n\r\nimport { HistoryEntryEnum } from 'constants/HistoryConstants';\r\n\r\nimport * as API from 'types/api';\r\n\r\nimport { Trans } from 'react-i18next';\r\nimport { NewSessionLayoutProps } from 'routes/Sidebar/components/SessionLayout';\r\nimport IconConstants from 'constants/IconConstants';\r\nimport Button from 'components/semantic/Button';\r\n\r\n\r\nclass HubNew extends Component<NewSessionLayoutProps> {\r\n handleConnect = (hubUrl: string) => {\r\n HubActions.createSession(this.props.location, hubUrl, HubSessionStore);\r\n }\r\n\r\n hasSession = (entry: API.HistoryItem) => {\r\n return HubSessionStore.getSessionByUrl(entry.hub_url);\r\n }\r\n\r\n recentHubRender = (entry: API.HistoryItem) => {\r\n return (\r\n <a onClick={ _ => this.handleConnect(entry.hub_url) }>\r\n { entry.name }\r\n </a> \r\n );\r\n }\r\n\r\n render() {\r\n const { sessionT } = this.props;\r\n return (\r\n <div className=\"hub session new\">\r\n <HubSearchInput \r\n submitHandler={ this.handleConnect }\r\n button={ \r\n <Button\r\n icon={ IconConstants.CONNECT }\r\n caption={ sessionT.translate('Connect') }\r\n />\r\n }\r\n />\r\n <Message\r\n description={(\r\n <Trans i18nKey={ sessionT.toI18nKey('favoriteHubsHint') }>\r\n Tip: visit the <Link to=\"/favorite-hubs\">Favorite hubs</Link> page to connect using custom settings\r\n </Trans>\r\n )}\r\n />\r\n <RecentLayout\r\n entryType={ HistoryEntryEnum.HUB }\r\n hasSession={ this.hasSession }\r\n entryTitleRenderer={ this.recentHubRender }\r\n entryIcon=\"sitemap\"\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default HubNew;\r\n","import * as React from 'react';\r\n\r\nimport { TextDecorator } from 'components/text';\r\n\r\nimport SessionLayout from 'routes/Sidebar/components/SessionLayout';\r\n\r\nimport HubSessionStore from 'stores/HubSessionStore';\r\nimport HubUIActions from 'actions/ui/HubActions';\r\nimport HubAPIActions from 'actions/reflux/HubActions';\r\n\r\nimport { hubOnlineStatusToColor } from 'utils/TypeConvert';\r\n\r\nimport HubSession from 'routes/Sidebar/routes/Hubs/components/HubSession';\r\nimport HubNew from 'routes/Sidebar/routes/Hubs/components/HubNew';\r\nimport HubIcon from 'components/icon/HubIcon';\r\n\r\n\r\nimport * as API from 'types/api';\r\nimport * as UI from 'types/ui';\r\nimport { \r\n SessionProviderDecorator, SessionProviderDecoratorChildProps \r\n} from 'routes/Sidebar/decorators/SessionProviderDecorator';\r\nimport { toI18nKey } from 'utils/TranslationUtils';\r\nimport IconConstants from 'constants/IconConstants';\r\n\r\n\r\nconst ItemHandler: UI.SessionInfoGetter<API.Hub> = {\r\n itemNameGetter(session) {\r\n return session.identity.name;\r\n },\r\n\r\n itemStatusGetter(session) {\r\n return hubOnlineStatusToColor(session.connect_state.id);\r\n },\r\n\r\n itemHeaderDescriptionGetter(session) {\r\n return (\r\n <TextDecorator\r\n text={ session.identity.description }\r\n emojify={ true }\r\n />\r\n );\r\n },\r\n\r\n itemHeaderIconGetter(session) {\r\n return <HubIcon hub={ session } />;\r\n },\r\n};\r\n\r\nconst parseNumericId = (params: UI.SessionRouteParams) => {\r\n if (!params.id) {\r\n return null;\r\n }\r\n\r\n return parseInt(params['id']);\r\n};\r\n\r\n//const hubActions = [ 'reconnect', 'favorite', 'clear' ];\r\n\r\nconst Hubs: React.FC<SessionProviderDecoratorChildProps<API.Hub>> = props => {\r\n const { match, t, ...other } = props;\r\n return (\r\n <SessionLayout \r\n activeId={ parseNumericId(match.params) }\r\n baseUrl=\"hubs\"\r\n newCaption={ t(toI18nKey('new', UI.Modules.HUBS), 'Connect') }\r\n newDescription={ t(toI18nKey('newDesc', UI.Modules.HUBS), 'Connect to a new hub') } \r\n newIcon={ IconConstants.HUBS_PLAIN }\r\n editAccess={ API.AccessEnum.HUBS_EDIT }\r\n uiActions={ HubUIActions }\r\n actionIds={[ 'reconnect', 'clear', 'favorite' ]}\r\n sessionApi={ HubAPIActions as UI.SessionActions<API.Hub> }\r\n sessionItemLayout={ HubSession }\r\n newLayout={ HubNew }\r\n t={ t }\r\n unreadInfoStore={ HubSessionStore }\r\n { ...ItemHandler }\r\n { ...other }\r\n />\r\n );\r\n};\r\n\r\nexport default SessionProviderDecorator(Hubs, HubSessionStore);\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","hub","other","icon","connect_state","HubActions","reconnect","displayName","access","IconConstants","handler","data","SocketService","HubConstants","favorite","filter","favorite_hub","notifications","onSuccess","toggleChatNotify","use_main_chat_notify","settings","checked","toggleShowJoins","show_joins","HubActionsDecorated","SessionActionDecorator","ChatActionDecorator","moduleId","actions","HubMessageStore","scroll","SessionScrollPositionKeeper","onSocketConnected","addSocketListener","this","hasMessages","hasInitializedSessions","_onChatMessage","_onStatusMessage","_onSessionUpdated","_onSessionRemoved","MessageStoreDecorator","AccessConstants","_viewName","_apiUrl","_sessionStore","HubSessionStore","mixins","ViewStoreMixin","NickCell","cellData","rowDataGetter","session","text","user","userIcon","remoteMenuId","MenuConstants","entityId","HubUserTable","rowClassNameGetter","flags","join","emptyRowsNodeGetter","sessionT","props","connectState","className","Message","title","translate","Loader","render","VirtualTable","store","HubUserViewStore","sessionStore","Column","name","width","columnKey","flexGrow","cell","propTypes","SocketSubscriptionDecorator","counts","setCounts","useState","share_size","user_count","useEffect","then","catch","error","console","message","url","removeSocketListeners","layoutWidth","useContext","LayoutWidthContext","userlistToggle","users","shared","averageShare","plainT","SessionFooter","EncryptionState","encryption","t","defaultValue","defaultValue_plural","count","replace","total","average","ids","header","itemData","triggerIcon","HubActionPrompt","content","LoginStore","Icon","PasswordPrompt","ActionInput","placeholder","caption","handleAction","password","sendHubPassword","Trans","i18nKey","toI18nKey","RedirectPrompt","Button","onClick","_","acceptHubRedirect","hub_url","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","getStorageKey","checkList","HubSession","Component","state","showList","toggleListState","setState","getMessage","onClickUsers","handleFileUpload","file","undefined","componentDidUpdate","prevProps","sessionApi","uiActions","checkbox","Checkbox","type","onChange","ChatLayout","messageStore","chatApi","chatActions","chatAccess","highlightRemoteMenuId","HubNew","handleConnect","hubUrl","location","hasSession","entry","recentHubRender","HubSearchInput","submitHandler","button","description","to","RecentLayout","entryType","entryTitleRenderer","entryIcon","ItemHandler","itemNameGetter","identity","itemStatusGetter","itemHeaderDescriptionGetter","emojify","itemHeaderIconGetter","HubIcon","SessionProviderDecorator","match","SessionLayout","activeId","params","parseInt","baseUrl","newCaption","newDescription","newIcon","editAccess","actionIds","sessionItemLayout","newLayout","unreadInfoStore"],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkairdcpp_webui=self.webpackChunkairdcpp_webui||[]).push([[673],{16722:e=>{e.exports=JSON.parse('{"widgets":{"application":{"widgetName":"Aplicación","addWidget":"Añadir widget...","loggedInAs":"Conectado como","clientStarted":"Cliente iniciado","activeSessions":"Sesiones activas"},"rss":{"widgetName":"Feed RSS","invalidUrl":"URL inválida","lastUpdated":"Última actualización: {{time}}","actions":{"openLink":"Abrir enlace","search":"Buscar"},"loadingFeed":"Cargando feed","form":{"feedUrlName":"URL del feed","feedUrlHelp":"Se soportan feeds RSS y Atom","feedCacheMinutesName":"Intervalo mínimo de recuperación (minutos)"},"invalidFeed":"Feed no soportado / inválido: {{error}}"},"transfers":{"widgetName":"Transferencias","trafficBps":"Tráfico (bps)","downloads":"Descargas","uploads":"Subidas","downloaded":"Descargado","uploaded":"Subido","downloadLimit":"Límite de descarga","uploadLimit":"Límite de subida"},"notepad":{"widgetName":"Notas"},"extensions":{"widgetName":"Extensiones lanzadas","updatedAgo":"Actualizado {{date}}"},"actions":{"editWidget":"Editar widget","removeWidget":"Eliminar widget","prompts":{"removeApprove":"Eliminar widget","removeReject":"No eliminar","removeContent":"¿Estás seguro de querer eliminar el widget {{item.settings.name}}?"}},"form":{"nameName":"Nombre"},"widgetPositionHint":"Los widgets y su posición son específicos del navegador.","accessDenied":"No tienes permiso para acceder a este widget","settingsMissing":"Faltan los ajustes del widget"},"events":{"events":"Eventos","loadingMessages":"Cargando mensajes","noMessagesToShow":"No hay mensajes que mostrar","actions":{"clear":"Limpiar"},"notifications":{"information":"Información","info":"INFO","warning":"ADVERTENCIA","error":"ERROR","actions":{"viewEvents":"Ver eventos"}}},"table":{"filter":{"filter":"Filtro","matchType":"Tipo de comparación","partial":"Parcial","regex":"Expresión regular","wildcard":"Comodín","exact":"Exacto","filterByProfile":"Filtrar por perfil","allProfiles":"Todos los perfiles"}},"search":{"table":{"name":"Nombre","size":"Tamaño","relevance":"Relevancia","type":"Tipo","connection":"Conexión","users":"Usuarios","time":"Última modificación","slots":"Slots"},"actions":{"resultDetails":"Detalles del resultado","browseContent":"Examinar contenido"},"form":{"fileTypeName":"Tipo de archivo","hubUrlsName":"Hubs","maxSizeName":"Tamaño máximo","minSizeName":"Tamaño mínimo","sizeLimitsName":"Limites de tamaño"},"resetAll":"Reiniciar todo","user":"Usuario","hubs":"Hubs","connection":"Conexión","slots":"Slots","ip":"IP","path":"Ruta","searchOffline":"Debe estar conectado a al menos un hub para realizar búsquedas","enterSearchString":"Introducir texto de búsqueda...","search":"Buscar","usersCount":"Usuario ({{count}})","usersCount_plural":"Usuarios ({{count}})","xUsersNicks":"{{count}} usuario ({{user.nicks}})","xUsersNicks_plural":"{{count}} usuarios ({{user.nicks}})","noResults":"No se han encontrado resultados para \\"{{searchString}}\\"","noResultsHint":"<0><0>Asegúrate de haber escrito las palabras correctamente</0><1>Usa palabras clave diferentes</1><2>Estás buscando muy rápido (los hubs a menudo tienen un intervalo mínimo de búsqueda</2><3>Si no recibes resultados para búsquedas comunes, asegúrate de que tus ajustes de conectividad están configurados correctamente (router, firewall, antivirus y aplicación)</3></0>"},"share":{"table":{"path":"Ruta","size":"Tamaño","virtual_name":"Nombre virtual","profiles":"Perfiles","last_refresh_time":"Última actualización","type":"Contenido","virtualName":"Nombre virtual","lastRefreshTime":"Última actualización"},"actions":{"editDirectory":"Editar directorio","removeDirectory":"Eliminar carpeta","addDirectory":"Añadir directorio","refreshAll":"Actualizar todo","prompts":{"removeRootApprove":"Eliminar carpeta","removeRootReject":"No eliminar","removeRootContent":"¿Estás seguro de que quieres eliminar el directorio {{item.virtual_name}} de tu compartido? Se eliminará de todos los perfiles compartidos."}},"actionsCaption":"Acciones...","shareActions":"Acciones de compartido","hashingInformation":"Información de hasheo","hashingInformationDesc":"<0>Los nuevos archivos aparecerán en tu compartido solo después de que haya finalizado el indexado (el cliente haya calculado las sumas de comprobación para ellos). La información sobre el progreso de indexado se publicará en el registro de eventos.</0>","addShareDirectory":"Añadir directorio para compartir","editShareDirectory":"Editar directorio para compartir","unknown":"Desconocido","form":{"pathName":"Ruta","virtualNameName":"Nombre virtual","virtualNameHelp":"Los directorios con los mismos nombres virtuales se fusionarán en la lista de archivos.","profilesName":"Perfiles de compartido","profilesHelp":"Se pueden crear nuevos perfiles de compartido desde la configuración de la aplicación","incomingName":"Entrante"}},"favoriteHubs":{"actions":{"addNew":"Añadir nuevo","setPassword":"Establecer contraseña","edit":"Editar","remove":"Eliminar","changePassword":"Cambiar contraseña","removePassword":"Eliminar contraseña","prompts":{"changePasswordPlaceholder":"Introducir contraseña","changePasswordApprove":"Actualizar contraseña","changePasswordContent":"Introduzca la nueva contraseña para el hub {{item.name}}","removePasswordApprove":"Eliminar contraseña","removePasswordReject":"No eliminar","removePasswordContent":"¿Estás seguro de querer reiniciar la contraseña del hub {{item.name}}?","createPasswordPlaceholder":"Introducir contraseña","createPasswordApprove":"Establecer contraseña","createPasswordContent":"Establecer la contraseña para el hub {{item.name}}","removeApprove":"Eliminar hub favorito","removeReject":"No eliminar","removeContent":"¿Estás seguro de querer eliminar el hub favorito {{item.name}}?"}},"table":{"connectState":"Estado","name":"Nombre","autoConnect":"Auto conectar","nick":"Nick","hasPassword":"Contraseña","hubUrl":"Dirección","shareProfile":"Perfil de compartido"},"notSet":"No establecido","set":"Establecido","globalDefault":"Global por defecto","addFavoriteHub":"Añadir hub favorito","editFavoriteHub":"Editar hub favorito","form":{"genericName":"Propiedades del hub","nameName":"Nombre","hubUrlName":"URL del hub","hubDescriptionName":"Descipción del hub","shareProfileName":"Perfil de compartido","shareProfileHelp":"Los perfiles de compartido personalizados solo se pueden seleccionar tras entrar a un hub ADC (la dirección empieza por adc:// o adcs://)","autoConnectName":"Auto conectar","userName":"Anulaciones en los ajustes de usuario","nickName":"Nick","userDescriptionName":"Descripción del usuario","connectivityV4Name":"Anulaciones de los ajustes de conectividad (IPv4)","connectionModeV4Name":"Modo de conectividad","connectionModeV4Option-1":"Desactivado","connectionModeV4Option0":"Modo activo","connectionModeV4Option2":"Modo pasivo","connectionIpV4Name":"Dirección IP","connectivityV6Name":"Anulaciones de los ajustes de conectividad (IPv6)","connectionModeV6Name":"Modo de conectividad","connectionModeV6Option-1":"Desactivado","connectionModeV6Option0":"Modo activo","connectionModeV6Option2":"Modo pasivo","connectionIpV6Name":"Dirección IP","miscName":"Anulaciones varias","useMainChatNotifyName":"Usar notificación de chat","awayMessageName":"Mensaje de ausente","showJoinsName":"Mostrar uniones/partes"}},"filelists":{"new":"Abrir lista de archivos","newDesc":"Empezar a navegar por una nueva lista de archivos","offlineMessage":"Debes estar conectado al menos a un hub para poder descargar listas de archivos de otros usuarios","directorySize":"Tamaño del directorio","totalListSize":"Tamaño total de la lista","browseOwnShare":"Navegar por tu propio compartido","root":"Raíz","userOffline":"Usuario desconectado","userOfflineDesc":"Podrás seguir navegando cuando el usuario se vuelva a conectar.","noContentToDisplay":"No hay contenido para mostrar","theDirectoryIsEmpty":"El directorio está vacío","updatingView":"Actualizando vista","downloadFailed":"Descarga fallida","confirmLeave":"Confirmar acción","confirmLeaveDesc":"Vuelve a pinchar en el botón de atrás para abandonar esta lista de archivos","table":{"name":"Nombre","size":"Tamaño","time":"Última modificación","type":"Tipo"},"actions":{"reload":"Recargar","refreshInShare":"Actualizar en compartidos","close":"Cerrar","details":"Detalles"}},"common":{"actions":{"copy":"Copiar","download":"Descargar","downloadTo":"Descargar a…","findNfo":"Encontrar NFO","search":"Buscar","sendMessage":"Enviar mensaje","browseShare":"Navegar por el compartido","ignoreMessages":"Ignorar mensajes","viewAsText":"Ver como texto","playVideo":"Reproducir video","viewImage":"Ver imagen","playAudio":"Reproducir sonido","copyMagnetLink":"Copiar enlace magnet","shutDownApplication":"Apagar aplicación","restartWebServer":"Reiniciar servidor web","unignoreMessages":"Designorar mensajes","closeAndDontShowAgain":"Cerrar y no volver a mostrar","notifications":{"ignoreUserSuccess":"Se ha añadido al usuario {{item.nicks}} a la lista de usuarios ignorados","unignoreUserSuccess":"Se ha eliminado al usuario {{item.nicks}} de la lista de usuarios ignorados","copyMagnetSuccess":"Enlace magnet copiado al portapapeles","copySuccess":"El texto se ha copiado al portapapeles"},"prompts":{"restartWebSystemApprove":"Continuar y reiniciar","restartWebSystemReject":"No reiniciar","restartWebSystemContent":"Cuando cambies las opciones del enlace, se recomienda reiniciar únicamente el servidor web \\n cuando puedas acceder al servidor para solucionar problemas. Si el servidor web no vuelve a conectarse deberías iniciar la aplicación manualmente \\n para ver si hay mensajes de error. El archivo de configuración está ubicado en tu directorio de usuario por defecto (Dentro del directorio .airdc++) en caso de que necesites editarlo manualmente.","shutdownSystemApprove":"Continuar y apagar","shutdownSystemReject":"Cancelar","shutdownSystemContent":"¿Estás seguro de que deseas cerrar la aplicación?"}},"units":{"b":"B","kib":"KiB","mib":"MiB","gib":"GiB","tib":"TiB","pib":"PiB","eib":"EiB","bits":"bit/s","kbits":"Kbit/s","mbits":"Mbit/s","gbits":"Gbit/s"},"filename":"Nombre de archivo","xBytes":"{{bytes}} bytes","unitsPerSecond":"{{units}}/s","today":"Hoy","yesterday":"Ayer","tomorrow":"Mañana","lastWeek":"{{weekDay}} [pasado]","awayModeWasEnabled":"Se ha activado el modo ausente","awayModeWasDisabled":"Se ha desactivado el modo ausente","actionSucceed":"Acción realizada con éxito","actionFailed":"Acción fallida","queueingFailed":"Fallo al poner en cola el elemento {{item.name}}","noNfoResultsWereReceived":"No se han recibido resultados NFO","networkClientError":"Error de red/cliente","failedToFetchData":"Error al buscar los datos","failedToLoadContent":"Fallo al cargar el contenido","loadingItems":"Cargando elementos","root":"Raíz","name":"Nombre","size":"Tamaño","path":"Ruta","createDirectory":"Cerar directorio","create":"Crear","directoryName":"Nombre del directorio","computer":"Ordenador","history":"Anterior","shared":"Compartido","favorites":"Favoritos","dupes":"Duplicados","browse":"Navegar","download":"Descargar","close":"Cerrar","noPathsToDisplay":"No hay rutas para mostrar","spaceFree":"{{freeSpace}} libres","select":"Seleccionar","new":"Nuevo","currentSessions":"Sesión actual","closeAll":"Cerrar todo","recentSessions":"Sesiones recientes","openedAgo":"Abierto hace {{timeAgo}}","waitingForServerResponse":"Esperando respuesta del servidor","loadingMessages":"Cargando mensajes","loadingSession":"Cargando sesión","yes":"Sí","no":"No","cancel":"Cancelar","loading":"Cargando","loadingData":"Cargando datos...","noOnlineHubs":"No hay hubs en línea","installAsLocalApplication":"Instalar como aplicación local","pwaInstallDesc":"Esta aplicación web se puede instalar localmente, proporcionando una experiencia de usuario mejorada","install":"Instalar","dontInstall":"No instalar","statisticsNotAvailable":"Estadísticas no disponibles","save":"Guardar","enterNick":"Introduzca el nick...","disabled":"Desactivado","enterLimitUnit":"Introducir límite ({{unit}}/s)","enterLimit":"Introducir límite...","removeLimit":"Eliminar límite","tlsOk":"Se ha validado la autenticidad del certificado","tlsOutdatedWarning":"Protocolo de seguridad antiguo con vulnerabilidades conocidas","tlsAuthenticityWarning":"No se ha podido validar la autenticidad del certificado","upload":"Subida","sendFiles":"Enviar archivos","removeSharedFile":"Borrar archivo compartido","fileNoLongerShared":"El archivo {{file.name}} ya no se comparte","fileTooLarge":"El archivo es muy grande (el tamaño máximo es {{maxSize}})","previewIsNotAvailable":"Previsualización no disponible","failedToFetchContent":"Error al buscar el contenido","noItemsToShow":"No hay elementos que mostrar","noSessionEditAccess":"No tienes permiso para abrir una nueva sesión","noChatAccess":"No tienes permiso para enviar nuevos mensajes","loadingSessions":"Cargando sesiones","typeContent":"Tipo/contenido","lastModified":"Última modificación","dupeType":"Tipo de duplicado","shareFull":"Compartido (total)","sharePartial":"Compartido (parcial)","queueFull":"Cola (total)","queuePartial":"Cola (parcial)","finishedFull":"Finalizado (total) ","finishedPartial":"Finalizado (parcial)","shareAndQueue":"Compartir y poner en cola","dupePaths":"Rutas de duplicados","actionsCaption":"Acciones...","tth":"TTH","na":"N/A","noActionsAvailable":"No hay acciones disponibles","continue":"Continuar","form":{"browse":"Navegar","noOptions":"Sin opciones","fieldOptional":"{{definition.title}} (opcional)","minimumValueError":"El valor mínimo permitido es {{value}}","maximumValueError":"El valor máximo permitido es {{value}}","any":"Cualquiera","directory":"Carpeta","file":"Archivo","add":"Añadir","down":"Bajar","remove":"Eliminar","up":"Subir","offlineMessage":"No hay hubs conectados","loading":"Cargando"}},"hubs":{"table":{"nick":"Nick","shareSize":"Tamaño compartido","description":"Descripción","tag":"Etiqueta","uploadSpeed":"Velocidad de Subida","downloadSpeed":"Velocidad de Bajada","ip4":"IP (v4)","ip6":"IP (v6)","fileCount":"Archivos"},"actions":{"reconnect":"Reconectar","clearChat":"Limpiar chat","close":"Cerrar","addToFavorites":"Añadir a favoritos","useChatNotification":"Usar notificación de chat","showJoinsParts":"Mostrar uniones/partes","notifications":{"favoriteSuccess":"Se ha agregado el hub {{item.identity.name}} a favoritos"}},"notifications":{"actions":{"viewChat":"Ver chat"}},"notificationSettings":"Ajustes de notificaciones","enterHubAddress":"Introduzca la dirección del hub...","connect":"Conectar","notConnectedToTheHub":"No conectado al hub","connecting":"Conectando","loadingUserlist":"Cargando lista de usuarios","favoriteHubsHint":"Consejo: visita la página de <1>hubs favoritos</1> para conectarte usando ajustes personalizados","new":"Conectar","newDesc":"Conectarse a un hub nuevo","userList":"Lista de usuarios","sharePerUser":"{{total}} ({{average}}/usuario)","xUsers":"{{count}} usuarios","xUsers_plural":"{{count}} usuarios","redirectRequested":"Redirección solicitada","acceptRedirect":"Aceptar la redirección a {{url}}","passwordRequired":"Se requiere contraseña","password":"Contraseña","submit":"Enviar","passwordPromptHelp":"Esto normalmente significa que ya hay una cuenta registrada asociada con tu nick. Si no recuerdas haber registrado una cuenta en ese hub, puede que haya otra persona usando el mismo nick."},"queue":{"table":{"name":"Nombre","size":"Tamaño","status":"Estado","sources":"Fuentes","secondsLeft":"Tiempo restante","speed":"Velocidad","priority":"Prioridad","type":"Tipo/contenido","timeAdded":"Añadido","timeFinished":"Acabado"},"actionsCaption":"Acciones...","queueActions":"Acciones en cola","pausedForced":"Pausado (forzado)","queueEmpty":"La cola está vacía","queueEmptyDesc":"Se pueden agregar elementos a la cola desde las búsquedas o las listas de archivos.","actions":{"removeCompletedBundles":"Eliminar paquetes completados","pauseAllBundles":"Pausar todos los paquetes","resumeAllBundles":"Reanudar todos los paquetes","manageFiles":"Administrar archivos...","manageSources":"Administrar fuentes...","searchForeground":"Búsqueda (en primer plano)","searchForAlternates":"Buscar alternativas","remove":"Eliminar","removeSource":"Eliminar fuente","rescanForErrors":"Reescaneo de errores","forceInShare":"Forzar en el compartido","prompts":{"removeBundleApprove":"Eliminar paquete","removeBundleReject":"No eliminar","removeBundleContent":"¿Estás seguro de querer eliminar el paquete {{item.name}}?","removeBundleCheckbox":"Eliminar archivos finalizados","removeFileApprove":"Eliminar archivo","removeFileReject":"No eliminar","removeFileContent":"¿Estás seguro de querer eliminar el archivo {{item.name}}?","removeFileCheckbox":"Eliminar en disco"},"notifications":{"removeFileSuccess":"Se ha eliminado el archivo {{item.name}} de la cola","removeCompletedSuccess":"Se han eliminado {{result.count}} paquetes completados","searchBundleAlternatesSuccess":"Se han buscado alternativas para el paquete {{item.name}}"}},"paused":"Pausado","lowest":"Mínima","low":"Baja","normal":"Normal","high":"Alta","highest":"Máxima","auto":"Auto","sources":"Fuentes","user":"Usuario","hubs":"Hubs","lastKnownSpeed":"Última velocidad conocida","files":"Archivos","size":"Tamaño","notifications":{"bundleWasAddedInQueue":"Se ha añadido el paquete a la cola","bundleDownloadError":"Error de descarga: {{error}}","bundleContentValidationError":"Ha fallado la validación del contenido del paquete: {{error}} ({{hook}})","validatingDownloadedBundle":"Validando paquete descargado","bundleWasCompletedSuccessfully":"El paquete se ha completado con éxito","bundleWasAddedInShare":"El paquete se ha añadido a tu compartido","actions":{"viewQueue":"Ver cola"}}},"transfers":{"table":{"user":"Usuario","name":"Nombre","size":"Segmento","status":"Estado","secondsLeft":"Tiempo restante","speed":"Velocidad","flags":"Flags","ip":"IP"},"actions":{"forceConnect":"Forzar conexión","disconnect":"Desconectar","removeFileFromQueue":"Borrar archivo de la cola","removeUserFromQueue":"Eliminar usuario de la cola","notifications":{"removeFileSuccess":"Se ha eliminado el archivo {{item.name}} de la cola","removeSourceSuccess":"Se ha eliminado al usuario {{item.user.nicks}} de {{result.count}} archivos"}},"noActiveTransfers":"No hay transferencias activas"},"settings":{"actions":{"detectNow":"Detectar ahora","addDirectory":"Añadir directorio","addUser":"Añadir usuario","editUser":"Editar usuario","editDirectory":"Editar directorio","removeDirectory":"Eliminar carpeta","addProfile":"Añadir perfil","browseFiles":"Navegar por archivos","renameProfile":"Renombrar perfil","addPath":"Añadir ruta","removePath":"Eliminar ruta","removeUser":"Eliminar usuario","setAsDefault":"Establecer como por defecto","removeProfile":"Eliminar perfil","addType":"Añadir tipo","editType":"Editar tipo","removeType":"Eliminar tipo","prompts":{"createProfilePlaceholder":"Introducir nombre","createProfileApprove":"Crear","createProfileContent":"Introducir nombre para el perfil","editProfilePlaceholder":"Introducir nombre","editProfileApprove":"Renombrar","editProfileContent":"Introducir nuevo nombre para el perfil {{item.name}}","removeShareExcludeApprove":"Eliminar ruta","removeShareExcludeReject":"No eliminar","removeShareExcludeContent":"¿Estás seguro de querer eliminar la ruta excluida {{item}}?","removeWebUserApprove":"Eliminar usuario","removeWebUserReject":"No eliminar","removeWebUserContent":"¿Estás seguro de querer eliminar al usuario {{item.username}}?","removeFavoriteDirectoryApprove":"Eliminar carpeta","removeFavoriteDirectoryReject":"No eliminar","removeFavoriteDirectoryContent":"¿Estás seguro de querer eliminar la carpeta favorita {{item.name}}?","removeSearchTypeApprove":"Eliminar tipo","removeSearchTypeReject":"No eliminar","removeSearchTypeContent":"¿Estás seguro de querer eliminar el tipo de búsqueda {{item.name}}?"}},"navigation":{"profile":"Perfil","connectivity":"Conectividad","speedAndLimits":"Velocidad y límites","downloads":"Descargas","sharing":"Compartir","view":"Ver","about":"Acerca de","extensions":"Extensiones","extensionEngines":"Motores de extensiones","system":"Sistema","autoDetection":"Auto detección","iPv4ConnectivityManual":"Conectividad IPv4 (manual)","iPv6ConnectivityManual":"Conectividad IPv6 (manual)","portsManual":"Puertos (manual)","proxies":"Proxies","encryption":"Cifrado","user":"Usuario","awayMode":"Modo ausente","ignoredUsers":"Usuarios ignorados","miscellaneous":"Misceláneas","manageInstalled":"Administrar instaladas","extensionCatalog":"Catálogo de extensiones","extensionOptions":"Opciones de extensiones","application":"Aplicación","transferStatistics":"Estadísticas de transferencia","shareStatistics":"Estadísticas de compartido","hubStatistics":"Estadísticas de hub","users":"Usuarios","logging":"Registros","webServer":"Servidor web","advancedServerSettings":"Ajustes avanzados del servidor","refreshOptions":"Opciones de actualización","shareProfiles":"Perfiles de compartido","sharingOptions":"Opciones de compartir","hashing":"Hasheando","excludedPaths":"Rutas excluidas","connectionSpeed":"Velocidad de conexión","bandwidthLimiting":"Limitación del ancho de banda","downloadLimits":"Límites de descarga","uploadLimits":"Límites de subida","perUserLimits":"Límites por usuario","locations":"Ubicaciones","skippingOptions":"Opciones de omisión","searchMatching":"Coincidencias de búsquedas","searchTypes":"Tipos de búsqueda","downloadOptions":"Opciones de descarga","priorities":"Prioridades","notificationsCaption":"Notificaciones","histories":"Historial","events":"Eventos","appearance":"Apariencia"},"advanced":"Avanzado","noUnsavedChanges":"No hay cambios sin guardar","noSavePermission":"Sin permiso de guardado","saveChanges":"Guardar cambios","savingCompleted":"Guardado completado","settingsWereSavedSuccessfully":"Los ajustes se han guardado correctamente","unsavedChangesPrompt":"Tienes cambios sin guardar. ¿Seguro que quieres salir?","connectivity":{"detection":{"connectivityDetectionNote":"En caso de que haya problemas de conectividad en la transferencia de archivos, por favor confirma que tus puertos TCP están abiertos usando <1>un comprobador de puertos online</1>. Ten en cuenta que el puerto UDP de búsqueda no se puede comprobar online. Para más información sobre los distintos modos de conectividad, por favor visita <4>el FAQ de conectividad de DC++</4>.","currentAutoDetectionStatus":"Estado actual de la auto-detección","iPv4Connectivity":"Conectividad IPv4","iPv6Connectivity":"Conectividad IPv6","manualConfiguration":"{{status}} (configuración manual)","autoDetected":"{{status}} (auto detectada)","detecting":"Detectando..."},"ports":{"portsAutoValuesNote":"Los números de puertos, listados en esta página, se pueden anular por los mapeadores de puertos (si están habilitados)","form":{"tcpPortHelp":"El puerto TCP se usa para transferencias sin cifrar","udpPortHelp":"El puerto UDP se usa para las búsquedas","tlsPortHelp":"El puerto TLS (TCP) se usa para transferencias cifradas"}},"v6":{"protocolAutoValuesNote":"La detección automática de conectividad está habilitada actualmente; los valores de los ajustes listados en esta página no se usan."},"v4":{"protocolAutoValuesNote":"La detección automática de conectividad está habilitada actualmente; los valores de los ajustes listados en esta página no se usan."}},"profile":{"user":{"form":{"settingProfileHelp0":"El cliente se usa en hubs normales privados/públicos para transferir archivos vía Internet. Usa este perfil si no estás seguro.","settingProfileHelp1":"El cliente se usa para transferir archivos que están partidos en archivos RAR (o en otros formatos de tamaño pequeño)","settingProfileHelp2":"El cliente se usa para transferir archivos en la red local (por ejemplo LAN parties) o en otras redes cerradas (por ejemplo la red de una universidad)","languageFileHelp":"<0>Se debe reiniciar la aplicación para que el cambio de idioma tenga efecto.</0><1>Si quieres ayudar a mejorar las traducciones existentes o traducir la aplicación a un idioma nuevo, por favor lee las <1>instrucciones para traductores.</1>"}},"ignoredUsers":{"user":"Usuario","messagesIgnored":"Mensajes ignorados","noIgnoredUsers":"No hay usuarios ignorados"},"miscellaneous":{"form":{"nmdcEncodingHelp":"<0>Los ajustes de codificación solo se usan en hubs NMDC. Los hubs ADC siempre usarán codificación UTF-8.<1></1><2></2><3>Valores usados normalmente:<1><0>Europa central: cp1250</0><1>Cirílico: cp1251</1><2>Europa occidental: cp1252</2><3>Griego: cp1253</3><4>Turco: cp1254</4><5>Hebreo: cp1256</5></1></3></0>"}}},"extensions":{"packages":{"byAuthor":"por {{author}}","latestVersion":"Última versión","installedVersion":"Versión instalada","datePublished":"{{version}} (publicada el {{date}})","readMore":"Leer más","defaultExtensionEngineMissing":"El motor de extensiones por defecto <1>node</1>no está instalado en su sistema. Por favor visita <3>engine\'s home page</3> para seguir las instrucciones de instalación.","manage":"Administrar..."},"manage":{"byAuthor":"por {{author}}","latestVersion":"Última versión","installedVersion":"Versión instalada","nonListedExtension":"Extensión no listada","readMore":"Leer más","noInstalledExtensions":"Se han encontrado extensiones no instaladas. Las extensiones nuevas se pueden instalar desde la página del <1>Catálogo de extensiones</1>.","defaultExtensionEngineMissing":"El motor de extensiones por defecto <1>node</1>no está instalado en su sistema. Por favor visita <3>engine\'s home page</3> para seguir las instrucciones de instalación.","extensionDirectoryFetchError":"Fallo al buscar la información en el directorio de extensiones: {{error}}","unmanagedExtension":"Extensión no administrada","manage":"Administrar..."}},"about":{"application":{"applicationVersion":"Versión de la aplicación","webUiVersion":"Versión de Web UI","webUiBuildDate":"Fecha de compilación de Web UI","apiVersion":"Versión de la API","apiFeatureLevel":"Nivel de características de la API","started":"Iniciado","activeSessions":"Sesiones activas","serverThreads":"Hilos del servidor","resources":"Recursos","homePage":"Página de inicio","featureRequestBugTracker":"Solicitud de funciones/seguidor de errores","documentation":"Documentación","thirdPartyCredits":"Créditos de terceros"},"transfers":{"totalDownloaded":"Total descargado","totalUploaded":"Total subido","session":"Sesión","sessionDownloaded":"Descargado en la sesión","sessionUploaded":"Subido en la sesión"},"share":{"noFilesShared":"No hay archivos compartidos","totalShareSize":"Tamaño total compartido","totalFiles":"Archivos totales","totalFilesValue":"{{totalCount}} ({{uniqueCount}} únicos)","totalDirectories":"Directorios totales","averageFileAge":"Edad media de los archivos","averageFilesPerDirectory":"Media de archivos por directorio","incomingSearches":"Búsquedas entrantes","totalSearches":"Búsquedas totales","searchesTotalValue":"{{totalCount}} ({{perSecondCount}} por segundo)","tthSearches":"Búsquedas TTH","textSearches":"Búsquedas de texto","searchesPerSecondValue":"{{totalCount}} ({{matchedCount}} coincidencias por segundo)","filteredTextSearches":"Búsquedas filtradas por texto","searchesFilteredValue":"{{filteredPercentage}} ({{resultPercentage}} de las que tenían coincidencias han devuelto resultados)","averageTextSearchTokensNonFiltered":"Media de tokens de búsqueda de texto (sin filtrar)","searchesAverageTokensValue":"{{tokenCount}} ({{tokenLength}} bytes por token)","averageMatchingTimePerTextSearch":"Tiempo medio de coincidencia por búsqueda de texto","searchesAverageMatchTimeValue":"{{matchTime}} ms"},"hubs":{"noHubsOnline":"No hay hubs en línea","totalUsers":"Usuarios totales","uniqueUsers":"Usuarios únicos","activeUsers":"Usuarios activos","totalShare":"Total compartido","averageSharePerUser":"Compartido medio por usuario","averageAdcDownloadSpeed":"Velocidad media de descarga ADC","clients":"Clientes","averageAdcUploadSpeed":"Velocidad media de subida ADC"}},"system":{"logging":{"messages":"Mensajes","transfers":"Transferencias","variableHelp":"Información variable para los campos Nombre de archivo y Formato"},"serverSettings":{"defaultCertNote":"El certificado de cliente por defecto se usa si las rutas de certificado están vacías"},"advancedServerSettings":{"hookTimeouts":"Tiempo límite para el hook"},"users":{"username":"Nombre de usuario","permissions":"Permisos","activeSessions":"Sesiones activas","lastLoggedIn":"Último inicio de sesión","administrator":"Administrador","form":{"usernameName":"Nombre de usuario","passwordName":"Contraseña","permissionsName":"Permisos"},"permissionSelector":{"administrator":"Administrador","search":"Buscar","download":"Descargar","transfers":"Transferencias","events":"Eventos","view":"Ver","edit":"Editar","queue":"Cola","favoriteHubs":"Hubs favoritos","settings":"Ajustes","localFilesystem":"Sistema de archivos local","hubs":"Hubs","sendMessages":"Enviar mensajes","privateChat":"Chat privado","filelists":"Lista de archivos","viewedFiles":"Archivos vistos"},"addWebUser":"Añadir usuario web","editUser":"Editar usuario","adminPermissionNote":"Se requieren permisos de administrador para acceder a la sección Sistema de los ajustes"}},"sharing":{"excludes":{"shareRefreshNote":"Se debe actualizar el compartido para que los cambios surtan efecto","addExcludedPath":"Añadir ruta excluida","path":"Ruta"},"profiles":{"name":"Nombre","totalSize":"Tamaño total","totalFiles":"Archivos totales","shareProfilesNote":"<0>Los archivos en cola se comparten mediante la función de compartir archivos parciales en todos los hubs en los que el contenido compartido no se haya ocultado, a pesar de la configuración de los perfiles de compartido.</0><1>Los perfiles de compartido se asignan individualmente para los directorios desde la <1>página</1> Compartir</1>"},"sharingOptions":{"skiplist":"Archivos a no compartir"},"hashing":{"hashDatabase":"Base de datos de hasheo","fileIndexSize":"Tamaño del índice de archivos","hashStoreSize":"Tamaño del almacén hash","maintenance":"Mantenimiento","verifyIntegrityOfHashData":"Verificar integridad de los datos de hash","optimizeNow":"Optimizar ahora","hashDBOptimizeNote":"Esta operación borrará toda la información de hash de los archivos que no estén compartidos actualmente. Si compartes archivos desde discos en red o desde un medio de almacenamiento extraíble, asegúrate de que los archivos se muestran en tu compartido (si no es así tendrás que volver a hashearlos)"}},"speedLimits":{"speed":{"connectionSpeedNote":"Por favor, sé lo más preciso que puedas y establece la velocidad REAL de tu conexión. Puedes usar un comprobador online, como <1>Speedtest.net</1>, para probar tu velocidad."},"uploadLimits":{"manuallySet":"Ajustar manualmente"},"downloadLimits":{"manuallySet":"Ajustar manualmente"}},"downloads":{"locations":{"availablePathVariables":"Variables de rutas disponible","favoriteDownloadDirectories":"Carpetas de descargas favoritas","name":"Nombre","path":"Ruta","form":{"pathName":"Ruta","nameName":"Nombre"},"addFavoriteDirectory":"Añadir directorio favorito","editFavoriteDirectory":"Editar directorio favorito"},"skippingOptions":{"skiplist":"Archivos a no compartir"},"priorities":{"filePriorities":"Prioridades de archivos","highPriorityFiles":"Archivos con prioridad alta"},"searchTypes":{"name":"Nombre","fileExtensions":"Extensiones de archivo","default":"Por defecto","searchTypesNote":"Nota: ¡Los tipos de búsqueda personalizados solo se aplican a hubs ADC! En hubs NMDC, al utilizar un tipo de búsqueda predefinida solo buscará un conjunto de extensiones predefinidas y no configurables; al usar un tipo de búsqueda personalizado se buscará cualquier extensión.","form":{"nameName":"Nombre","extensionsName":"Extensiones de archivo"},"addSearchType":"Añadir tipo de búsqueda","editSearchType":"Editar tipo de búsqueda"},"downloadOptions":{"segments":"Segmentos","compression":"Compresión","buffers":"Buffers"}},"browserSpecificNote":"Los ajustes listados en esta página son específicos para el navegador","view":{"notifications":{"popupNotifications":"Notificaciones emergentes","form":{"notifyMentionMyNickName":"Menciones de mi nick","notifyPmUserName":"Mensajes privados (usuarios)","notifyPmBotName":"Mensajes privados (bots)","notifyHubMessageName":"Mensajes de chat del hub (solo en los hubs donde las notificaciones están activadas)","notifyBundleStatusName":"Cambios de estado en los paquetes","notifyEventsInfoName":"Eventos de información","notifyEventsWarningName":"Eventos de aviso","notifyEventsErrorName":"Eventos de error"}},"histories":{"maxMessageHistory":"Número máximo de mensajes a cachear","maxSessionHistory":"Número máximo de sesiones abiertas anteriormente"},"miscellaneous":{"form":{"unreadLabelDelayName":"Retraso para marcar sesiones de chat como leídas (segundos)","backgroundImageUrlName":"URL para imagen de fondo personalizada","noInstallPromptName":"No mostrar el indicador de instalación de la aplicación en la vista de Inicio"}}}},"extensions":{"actions":{"uninstall":"Desinstalar","start":"Iniciar","installFromUrl":"Instalar desde URL","install":"Instalar","update":"Actualizar","stop":"Parar","configure":"Configurar","prompts":{"installUrlPlaceholder":"Introducir URL","installUrlApprove":"Instalar","installUrlContent":"Introducir URL de descarga","removeApprove":"Eliminar extensión","removeReject":"No eliminar","removeContent":"¿Está seguro de que desea eliminar la extensión {{item.name}}? Esto también eliminará posibles ajustes específicos de la conexión."}}},"navigation":{"home":"Inicio","queue":"Cola","search":"Buscar","transfers":"Transferencias","hubs":"Hubs","messages":"Mensajes","filelists":"Lista de archivos","files":"Archivos","events":"Eventos","favoriteHubs":"Hubs favoritos","share":"Compartir","settings":"Ajustes","logout":"Cerrar sesión","more":"Más..."},"login":{"username":"Nombre de usuario","password":"Contraseña","keepMeLoggedIn":"Mantenerme conectado","login":"Iniciar sesión","authenticationFailed":"Autenticación fallida: {{lastError}}","connectingToTheServer":"Conectando al servidor...","reestablishConnection":"Intentando restablecer la conexión...","sessionLost":"Sesión perdida","connectionClosed":"Conexión cerrada","privateBrowsingNotSupported":"Este sitio no se puede usar con su navegador si el modo de navegación privada está habilitado","dataStorageNotSupported":"Este sitio no se puede usar con su navegador porque no soporta el almacenamiento de datos"},"viewedFiles":{"actions":{"close":"Cerrar"},"noFiles":"No hay ficheros para ver","noFilesDesc":"Puedes abrir archivos de texto o multimedia para verlos aquí desde la búsqueda o la lista de archivos","preparingView":"Preparando vista","opened":"Abierto","downloaded":"Descargado","unsupportedFormat":"Formato no soportado","downloadFailed":"Descarga fallida","notifications":{"fileHasFinishedDownloading":"El archivo ha terminado de descargarse","fileWasLoaded":"Se ha cargado el fichero","actions":{"viewFile":"Ver archivo"}}},"messages":{"actions":{"clearChat":"Limpiar chat","close":"Cerrar","connect":"Conectar","disconnect":"Desconectar"},"new":"Nueva sesión","newDesc":"Abrir una nueva sesión de chat privada","offlineMessage":"Debes estar conectado como mínimo a un hub para enviar mensajes privados","directEncryptedChannelAvailable":"Canal directo cifrado disponible","establishingConnection":"Estableciendo conexxión","directEncryptedChannelEstablished":"Conexión directa cifrada establecida","notifications":{"actions":{"viewMessage":"Ver mensaje"}}},"home":{"newUserIntro":"Información para un usuario nuevo","newUserIntroDesc":"<0><0>Añade algunos directorios para compartirlos con los demás en la <1>página</1> Compartir.</0><1>Seguramente quieras echar un vistazo a cada página principal en <1>los ajustes del cliente</1> antes de empezar.  <3>Es importante que <1>configures tu velocidad de conexión </1> correctamente para que el cliente pueda utilizar tu ancho de banda eficientemente.</3></1><2>Todavía no hay un listado de hubs públicos, por lo que necesitas saber la dirección de los hubs a los que te quieres conectar.</2></0><1>Visita la <1>página de inicio</1> para obtener más información sobre el cliente y sus funciones.</1><2>Si tienes preguntas, puedes plantearlas en el <1>tracker de GitHub</1> o unirte al hub de desarrollo y soporte: <3></3></2>"},"hash":{"actions":{"pause":"Pausar","resume":"Reanudar","stop":"Parar"},"status":"Estado","paused":"Pausado","filesLeft":"Archivos restantes","maximumSpeedPerHasher":"Velocidad máxima por hasheador","runningThreads":"Ejecutando ({{threadCount}} hilos)","speed":"Velocidad","timeLeft":"Tiempo restante","idle":"En espera","hashProgress":"Progreso del hasheo"}}')}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkairdcpp_webui=self.webpackChunkairdcpp_webui||[]).push([[293],{52365:e=>{e.exports=JSON.parse('{"widgets":{"application":{"widgetName":"Application","addWidget":"Ajouter un widget...","loggedInAs":"Connecté en tant que","clientStarted":"Client démarré","activeSessions":"Sessions actives"},"rss":{"widgetName":"Flux RSS","invalidUrl":"URL invalide","lastUpdated":"Mis à jour : {{time}}","actions":{"openLink":"Ouvrir le lien","search":"Recherche"},"loadingFeed":"Chargement des flux","form":{"feedUrlName":"URL du flux","feedUrlHelp":"Les flux Atom et RSS sont supportés","feedCacheMinutesName":"Intervalle minimum de réinitialisation (minutes)"},"invalidFeed":"Flux invalide/non pris en charge: {{erreur}}"},"transfers":{"widgetName":"Transferts","trafficBps":"Bande passante (bps)","downloads":"Téléchargements","uploads":"Envois","downloaded":"Téléchargé","uploaded":"Envoyé","downloadLimit":"Limite de téléchargement","uploadLimit":"Limite d\'envoi"},"notepad":{"widgetName":"Notes"},"extensions":{"widgetName":"Versions d\'extension","updatedAgo":"Mis à jour le {{date}}"},"actions":{"editWidget":"Éditer le widget","removeWidget":"Retirer le widget","prompts":{"removeApprove":"Retirer le widget","removeReject":"Ne pas retirer","removeContent":"Êtes-vous sûr de vouloir retirer le widget {{item.settings.name}} ?"}},"form":{"nameName":"Nom"},"widgetPositionHint":"Les widgets et leurs positions sont spécifiques au navigateur","accessDenied":"Vous n\'êtes pas autorisé à accéder à ce widget","settingsMissing":"Paramètres de widget manquants"},"events":{"events":"Événements","loadingMessages":"Chargement des messages","noMessagesToShow":"Aucun nouveau message","actions":{"clear":"Effacer"},"notifications":{"information":"Informations","info":"INFO","warning":"AVERTISSEMENT","error":"ERREUR","actions":{"viewEvents":"Voir les événements"}}},"table":{"filter":{"filter":"Filtrer","matchType":"Type à comparer","partial":"Partiel","regex":"RegEx","wildcard":"Wildcard","exact":"Exact","filterByProfile":"Filtrer par profil","allProfiles":"Tous les profils"}},"search":{"table":{"name":"Nom","size":"Taille","relevance":"Pertinence","type":"Type","connection":"Connexion","users":"Utilisateurs","time":"Dernière modification","slots":"Slots"},"actions":{"resultDetails":"Détails des résultats","browseContent":"Parcourir le contenu"},"form":{"fileTypeName":"type de fichier","hubUrlsName":"Hubs","maxSizeName":"Taille maximum","minSizeName":"Taille minimum","sizeLimitsName":"Tailles limites"},"resetAll":"Réinitialiser tout","user":"Utilisateur","hubs":"Hubs","connection":"Connexion","slots":"Slots","ip":"IP","path":"Chemin","searchOffline":"Vous devez être connecté à au moins un hub pour pouvoir effectuer une recherche.","enterSearchString":"Entrez votre recherche...","search":"Recherche","usersCount":"Utilisateur ({{count}})","usersCount_plural":"Utilisateurs ({{count}})","xUsersNicks":"{{count}} utilisateur ({{user.nicks}})","xUsersNicks_plural":"{{count}} utilisateurs ({{user.nicks}})","noResults":"Pas de résultat pour \\"{{searchString}}\\"","noResultsHint":"<0><0>Assurez-vous d\'avoir correctement orthographié les mots</0><1>Utilisez des mots-clés différents</1><2>Vous effectuez des recherches trop fréquemment (les hubs ont souvent un intervalle de recherche minimum)</2><3>Si vous ne recevez jamais de résultats pour les termes de recherche courants, assurez-vous que vos paramètres de connectivité sont correctement configurés</3></0>"},"share":{"table":{"path":"Chemin","size":"Taille","virtual_name":"Nom virtuel","profiles":"Profils","last_refresh_time":"Dernier rafraîchissement","type":"Contenu","virtualName":"Nom virtuel","lastRefreshTime":"Dernier rafraîchissement"},"actions":{"editDirectory":"Éditer le dossier","removeDirectory":"Supprimer le dossier","addDirectory":"Ajouter un dossier","refreshAll":"Tout rafraîchir","prompts":{"removeRootApprove":"Supprimer le dossier","removeRootReject":"Ne pas retirer","removeRootContent":"Voulez-vous vraiment supprimer le répertoire {{item.virtual_name}} du partage ? Il sera retiré de tous les profils de partage. "}},"actionsCaption":"Actions…","shareActions":"Actions de partage","hashingInformation":"Infos de hachage","hashingInformationDesc":"<0>Nouveaux fichiers n\'apparaîtront dans le partage qu\'une fois le hachage terminé (le client a calculé les sommes de contrôle pour eux). Les infos sur la progression du hachage seront publiées dans le journal des événements.</0> ","addShareDirectory":"Ajouter un dossier à partager","editShareDirectory":"Éditer un dossier à partager","unknown":"Inconnu","form":{"pathName":"Chemin","virtualNameName":"Nom virtuel","virtualNameHelp":"Les répertoires avec des noms virtuels identiques seront fusionnés dans la liste de fichiers","profilesName":"Profiles de partage","profilesHelp":"De nouveaux profils de partage peuvent être créés à partir des paramètres de l\'application","incomingName":"Réception"}},"favoriteHubs":{"actions":{"addNew":"Nouveau","setPassword":"Entrer le mot de passe","edit":"Modif.","remove":"Retirer","changePassword":"Changer de mot de passe","removePassword":"Retirer le mot de passe","prompts":{"changePasswordPlaceholder":"Entrer le mot de passe","changePasswordApprove":"Mettre à jour le mot de passe","changePasswordContent":"Entrez le nouveau mot de passe pour le hub {{item.name}}","removePasswordApprove":"Retirer le mot de passe","removePasswordReject":"Ne pas retirer","removePasswordContent":"Êtes-vous sûr de vouloir réinitialiser le mot de passe du hub {{item.name}}?","createPasswordPlaceholder":"Entrer le mot de passe","createPasswordApprove":"Entrer le mot de passe","createPasswordContent":"Définir mot de passe pour le hub {{item.name}}","removeApprove":"Retirer le hub favori","removeReject":"Ne pas retirer","removeContent":"Êtes-vous sûr de vouloir retirer le hub favori {{item.name}}?"}},"table":{"connectState":"État","name":"Nom","autoConnect":"Connexion auto","nick":"Pseudo","hasPassword":"Mot de passe","hubUrl":"Adresse","shareProfile":"Profil de partage"},"notSet":"Non défini","set":"Définir","globalDefault":"Valeur globale par défaut","addFavoriteHub":"Ajouter un hub favori","editFavoriteHub":"Éditer hub favori","form":{"genericName":"Propriétés de hub","nameName":"Nom","hubUrlName":"URL du hub","hubDescriptionName":"Description du hub","shareProfileName":"Profil de partage","shareProfileHelp":"Profils de partage personnalisés ne peuvent être sélectionnés qu\'après avoir saisi une adresse de hub ADC (débutant par adc:// ou adcs://)","autoConnectName":"Connexion auto","userName":"Remplacement des réglages utilisateur","nickName":"Pseudo","userDescriptionName":"Description utilisateur","connectivityV4Name":"Remplacements du réglage de connectivité (IPv4)","connectionModeV4Name":"Mode de connectivité","connectionModeV4Option-1":"Désactivé","connectionModeV4Option0":"Mode actif","connectionModeV4Option2":"Mode passif","connectionIpV4Name":"Adresse IP","connectivityV6Name":"Remplacements du réglage de connectivité (IPv6)","connectionModeV6Name":"Mode de connectivité","connectionModeV6Option-1":"Désactivé","connectionModeV6Option0":"Mode actif","connectionModeV6Option2":"Mode passif","connectionIpV6Name":"Adresse IP","miscName":"Diverses dérogations","useMainChatNotifyName":"Utiliser notification de chat","awayMessageName":"Message d’absence","showJoinsName":"Afficher les entrées/sorties"}},"filelists":{"new":"Ouvrir la liste de fichiers","newDesc":"Commencer à parcourir une nouvelle liste de fichiers","offlineMessage":"Vous devez être connecté à au moins un hub pour pouvoir télécharger les listes de fichiers d\'autres utilisateurs","directorySize":"Taille du répertoire","totalListSize":"Taille totale de la liste","browseOwnShare":"Parcourir sa propre liste...","root":"Root","userOffline":"Utilisateur déconnecté","userOfflineDesc":"Vous pourrez continuer à naviguer lorsque l\'utilisateur se reconnectera","noContentToDisplay":"Pas de contenu à afficher","theDirectoryIsEmpty":"Le dossier est vide","updatingView":"Mettre à jour l\'affichage","downloadFailed":"Téléchargement échoué","confirmLeave":"Confirmer l\'action","confirmLeaveDesc":"Cliquez à nouveau sur bouton Retour pour quitter cette liste de fichiers","table":{"name":"Nom","size":"Taille","time":"Dernière modification","type":"Type"},"actions":{"reload":"Recharger","refreshInShare":"Rafraîchir le partageur","close":"Fermer","details":"Détails"}},"common":{"actions":{"copy":"Copier","download":"Réception","downloadTo":"Télécharger vers...","findNfo":"Trouver le NFO","search":"Recherche","sendMessage":"Envoyer un message","browseShare":"Parcourir le dossier de partage","ignoreMessages":"Ignorer les messages","viewAsText":"Afficher comme texte","playVideo":"Visualiser la vidéo","viewImage":"Voir l\'image","playAudio":"Jouer le son","copyMagnetLink":"Copier le lien magnet","shutDownApplication":"Quitter l\'application","restartWebServer":"Redémarrer le serveur web","unignoreMessages":"Ne plus ignorer les messages","closeAndDontShowAgain":"Fermer et ne plus afficher","notifications":{"ignoreUserSuccess":"L\'utilisateur {{item.nicks}} est maintenant ignoré","unignoreUserSuccess":"L\'utilisateur {{item.nicks}} n\'est maintenant plus ignoré","copyMagnetSuccess":"Le lien Magnet a été copié dans le presse-papiers","copySuccess":"Le texte a été copié dans le presse-papier"},"prompts":{"restartWebSystemApprove":"Continuer et redémarrer","restartWebSystemReject":"Ne pas redémarrer","restartWebSystemContent":"Lors de la modification des options de liaison, il est recommandé de redémarrer le serveur Web uniquement quand vous pouvez accéder au serveur pour le dépannage. Si le serveur Web ne revient pas en ligne, vous devez lancer l\'application manuellement pour voir s\'il y a des messages d\'erreur. Le fichier de config se trouve par défaut dans votre répertoire utilisateur (dans le répertoire .AirDC++) au cas où vous auriez besoin de le modifier manuellement. ","shutdownSystemApprove":"Continuer et arrêter","shutdownSystemReject":"Annuler","shutdownSystemContent":"Êtes-vous sûr de vouloir fermer l\'application?"}},"units":{"b":"B","kib":"Ko","mib":"Mo","gib":"Go","tib":"To","pib":"PiB","eib":"EiB","bits":"bit/s","kbits":"Kbit/s","mbits":"Hashing","gbits":"Gbit/s"},"filename":"Fichier","xBytes":"{{octets}} octets","unitsPerSecond":"{{units}}/s","today":"Aujourd’hui","yesterday":"Hier","tomorrow":"Demain","lastWeek":"[Dernier] {{weekDay}}","awayModeWasEnabled":"Le mode Absent est activé","awayModeWasDisabled":"Le mode Absent est désactivé","actionSucceed":"Action réussie","actionFailed":"L\'action a échoué","queueingFailed":"Échec de mise en file d\'attente de l\'élément {{item.name}}","noNfoResultsWereReceived":"Aucun résultat NFO n\'a été reçu","networkClientError":"Erreur de réseau/client","failedToFetchData":"Échec de récupération des données","failedToLoadContent":"Échec chargement du contenu","loadingItems":"Chargement des éléments","root":"Root","name":"Nom","size":"Taille","path":"Chemin","createDirectory":"Créer un répertoire","create":"Créer","directoryName":"Nom du répertoire","computer":"Ordinateur","history":"Précédent","shared":"Partagé","favorites":"Favoris","dupes":"Doublons","browse":"Parcourir","download":"Réception","close":"Fermer","noPathsToDisplay":"Aucun chemin à afficher","spaceFree":"{{freeSpace}} gratuit","select":"Sélectionner","new":"Nouveau","currentSessions":"Sessions actuelles","closeAll":"Tout fermer","recentSessions":"Sessions récentes","openedAgo":"Ouvert {{timeAgo}}","waitingForServerResponse":"Attente de la réponse du serveur","loadingMessages":"Chargement des messages","loadingSession":"Chargement session","yes":"Oui","no":"Non","cancel":"Annuler","loading":"Chargement","loadingData":"Chargement des données","noOnlineHubs":"Aucun hub en ligne","installAsLocalApplication":"Installer en tant qu’application locale","pwaInstallDesc":"Cette application Web peut être installée localement, offrant une meilleure expérience utilisateur","install":"Installer","dontInstall":"Ne pas installer","statisticsNotAvailable":"Statistiques indisponibles","save":"Sauvegarder","enterNick":"Entrer un pseudo","disabled":"Désactivé","enterLimitUnit":"Entrer la limite ({{unit}}/s)","enterLimit":"Entrer les limites…","removeLimit":"Retirer les limites","tlsOk":"Authenticité du certificat est validé","tlsOutdatedWarning":"Protocole de chiffrement obsolète avec des vulnérabilités de sécurité connues","tlsAuthenticityWarning":"Impossible de valider l\'authenticité du certificat","upload":"Envoi","sendFiles":"Envoyer des fichiers","removeSharedFile":"Retirer fichier partagé","fileNoLongerShared":"Fichier {{file.name}} n\'est plus partagé","fileTooLarge":"Fichier est trop volumineux (taille max: {{maxSize}})","previewIsNotAvailable":"Aperçu indisponible","failedToFetchContent":"Échec récupération du contenu","noItemsToShow":"Rien à afficher","noSessionEditAccess":"Vous n\'êtes pas autorisé à ouvrir de nouvelles sessions","noChatAccess":"Vous n\'êtes pas autorisé à envoyer de nouveaux messages","loadingSessions":"Chargement des sessions","typeContent":"Type/contenu","lastModified":"Dernière modification","dupeType":"Type de doublon","shareFull":"Partage (complet)","sharePartial":"Partage (partiel)","queueFull":"File d\'attente (complète)","queuePartial":"File d\'attente (partielle)","finishedFull":"Achevé (complet)","finishedPartial":"Achevé (partiel)","shareAndQueue":"Partager et mettre en file d\'attente","dupePaths":"Chemins des doublons","actionsCaption":"Actions…","tth":"TTH","na":"N/A","noActionsAvailable":"Aucune action disponible","continue":"Continuer","form":{"browse":"Parcourir","noOptions":"Pas d\'options","fieldOptional":"{{definition.title}} (optionnel)","minimumValueError":"Valeur minimale autorisée est {{value}}","maximumValueError":"Valeur maximale autorisée est {{value}}","any":"Tous","directory":"Dossier","file":"&amp;Fichier","add":"Ajouter","down":"vers le bas","remove":"Retirer","up":"En haut","offlineMessage":"Aucun hub connecté","loading":"Chargement"}},"hubs":{"table":{"nick":"Pseudo","shareSize":"Taille du dossier de partage","description":"Description","tag":"Tag","uploadSpeed":"Vitesse d\'envoi","downloadSpeed":"Vitesse de réception","ip4":"IP (v4)","ip6":"IP (v6)","fileCount":"Fichiers"},"actions":{"reconnect":"Se reconnecter","clearChat":"Effacer la discussion","close":"Fermer","addToFavorites":"Ajouter aux Favoris","useChatNotification":"Utiliser notification de chat","showJoinsParts":"Afficher les entrées/sorties","notifications":{"favoriteSuccess":"Le hub {{item.identity.name}} a été ajouté aux favoris"}},"notifications":{"actions":{"viewChat":"Afficher le chat"}},"notificationSettings":"Paramètres de notification","enterHubAddress":"Entrer l\'adresse du hub","connect":"Se connecter","notConnectedToTheHub":"Pas connecter au hub","connecting":"En cours de connexion","loadingUserlist":"Chargement liste des utilisateurs","favoriteHubsHint":"Astuce: visitez page<1> des hubs favoris</1> pour vous connecter à l\'aide de paramètres personnalisés","new":"Se connecter","newDesc":"Connectez-vous à un nouveau hub","userList":"Liste d\'utilisateurs","sharePerUser":"{{total}} ({{moyenne}}/utilisateur)","xUsers":"{{count}} utilisateurs","xUsers_plural":"{{count}} utilisateurs","redirectRequested":"Redirection demandée","acceptRedirect":"Accepter redirection vers {{url}}","passwordRequired":"Mot de passe requis","password":"Mot de passe","submit":"Soumettre","passwordPromptHelp":"Cela signifie généralement qu\'un compte enregistré est associé à votre pseudo. Si vous ne vous souvenez pas d\'avoir un compte enregistré dans ce hub, il se peut que quelqu\'un d\'autre utilise le même pseudo. "},"queue":{"table":{"name":"Nom","size":"Taille","status":"État","sources":"Sources","secondsLeft":"Temps restant","speed":"Vitesse","priority":"Priorité","type":"Type/contenu","timeAdded":"Ajouté","timeFinished":"Terminé"},"actionsCaption":"Actions…","queueActions":"Actions de la fille d\'att.","pausedForced":"Pause (forcé)","queueEmpty":"La file d\'attente est vide","queueEmptyDesc":"Nouveaux éléments peuvent être mis en file d\'attente depuis liste recherche ou fichiers","actions":{"removeCompletedBundles":"Retirer les paquets terminés","pauseAllBundles":"Mettre en pause tous les paquets","resumeAllBundles":"Reprendre tous les paquets","manageFiles":"Gérer les fichiers…","manageSources":"Gérer les sources…","searchForeground":"Rechercher (nouvelle fenêtre)","searchForAlternates":"Rechercher d\'autres sources","remove":"Retirer","removeSource":"Retirer la source","rescanForErrors":"Réanalyser les erreurs","forceInShare":"Forcer à partager","prompts":{"removeBundleApprove":"Retirer le paquet","removeBundleReject":"Ne pas retirer","removeBundleContent":"Voulez-vous vraiment retirer le paquet {{item.name}} ?","removeBundleCheckbox":"Retirer les fichiers finis","removeFileApprove":"Retirer le fichier","removeFileReject":"Ne pas retirer","removeFileContent":"Voulez-vous vraiment retirer le fichier {{item.name}} ?","removeFileCheckbox":"Supprimer le fichier"},"notifications":{"removeFileSuccess":"Fichier {{item.name}} a été retiré de la file d\'attente","removeCompletedSuccess":"{{result.count}} les paquets terminés ont été retirés","searchBundleAlternatesSuccess":"Paquet {{item.name}} a été recherché pour des alternatives"}},"paused":"En pause","lowest":"La plus basse","low":"Basse","normal":"Normal","high":"Haute","highest":"La plus haute","auto":"Auto","sources":"Sources","user":"Utilisateur","hubs":"Hubs","lastKnownSpeed":"Dernière vitesse connue","files":"Fichiers","size":"Taille","notifications":{"bundleWasAddedInQueue":"Le paquet a été ajouté en file d\'attente","bundleDownloadError":"Erreur de téléchargement : {{error}}","bundleContentValidationError":"Validation contenu du paquet a échoué: {{error}} ({{hook}})","validatingDownloadedBundle":"Validation du paquet téléchargé","bundleWasCompletedSuccessfully":"Le paquet a été téléchargé entièrement","bundleWasAddedInShare":"Le paquet a été mis en partage","actions":{"viewQueue":"Voir la file d\'attente"}}},"transfers":{"table":{"user":"Utilisateur","name":"Nom","size":"Segment","status":"État","secondsLeft":"Temps restant","speed":"Vitesse","flags":"Drapeaux","ip":"IP"},"actions":{"forceConnect":"Forcer la connexion","disconnect":"Déconnecter","removeFileFromQueue":"Retirer le paquet de la file d\'attente","removeUserFromQueue":"Retirer l\'utilisateur de la file d\'attente","notifications":{"removeFileSuccess":"Fichier {{item.name}} a été retiré de la file d\'attente","removeSourceSuccess":"L\'utilisateur {{item.user.nicks}} a été retiré des fichiers {{result.count}}."}},"noActiveTransfers":"Pas de transfert actif"},"settings":{"actions":{"detectNow":"Détecter maintenant","addDirectory":"Ajouter un dossier","addUser":"Ajouter un utilisateur","editUser":"Éditer un utilisateur","editDirectory":"Éditer un dossier","removeDirectory":"Supprimer le dossier","addProfile":"Ajouter un profil","browseFiles":"Parcourir les fichiers","renameProfile":"Renommer le profil","addPath":"Ajouter chemin","removePath":"Retirer le chemin","removeUser":"Retirer l\'utilisateur","setAsDefault":"Définir par défaut","removeProfile":"Retirer le profil","addType":"Ajouter un type","editType":"Éditer type","removeType":"Retirer type","prompts":{"createProfilePlaceholder":"Entrez le nom","createProfileApprove":"Créer","createProfileContent":"Entrez le nom du profil","editProfilePlaceholder":"Entrez le nom","editProfileApprove":"Renommer","editProfileContent":"Entrer le nouveau nom du profil {{item.name}}","removeShareExcludeApprove":"Retirer le chemin","removeShareExcludeReject":"Ne pas retirer","removeShareExcludeContent":"Êtes-vous sûr de vouloir retirer le chemin exclu {{item}} ?","removeWebUserApprove":"Retirer l\'utilisateur","removeWebUserReject":"Ne pas retirer","removeWebUserContent":"Êtes-vous sûr de vouloir retirer l\'utilisateur {{item.username}} ?","removeFavoriteDirectoryApprove":"Supprimer le dossier","removeFavoriteDirectoryReject":"Ne pas retirer","removeFavoriteDirectoryContent":"Êtes-vous sûr de vouloir retirer le dossier favori {{item.name}} ?","removeSearchTypeApprove":"Retirer type","removeSearchTypeReject":"Ne pas retirer","removeSearchTypeContent":"Êtes-vous sûr de retirer le type de recherche {{item.name}} ?"}},"navigation":{"profile":"Profil","connectivity":"Connectivité","speedAndLimits":"Vitesse et limites","downloads":"Téléchargements","sharing":"En partage","view":"Voir","about":"À propos","extensions":"Extensions","extensionEngines":"Outils d\'extension","system":"Système","autoDetection":"Détection auto","iPv4ConnectivityManual":"Connectivité IPv4 (manuelle)","iPv6ConnectivityManual":"Connectivité IPv6 (manuelle)","portsManual":"Ports (manuel)","proxies":"Proxys","encryption":"Chiffrement","user":"Utilisateur","awayMode":"Mode absence","ignoredUsers":"Utilisateurs ignorés","miscellaneous":"Divers","manageInstalled":"Gérer installation","extensionCatalog":"Catalogue d’extensions","extensionOptions":"Options des extensions","application":"Application","transferStatistics":"Statistiques de transfert","shareStatistics":"Partager des statistiques","hubStatistics":"Statistiques des hubs","users":"Utilisateurs","logging":"Enregistrement journal","webServer":"Serveur web","advancedServerSettings":"Paramètres ue serveur avancés","refreshOptions":"Option de rafraîchissement","shareProfiles":"Profiles de partage","sharingOptions":"Option de partage","hashing":"Hachage","excludedPaths":"Chemins exclus","connectionSpeed":"Vitesse de connexion","bandwidthLimiting":"Limitation bande passante","downloadLimits":"Limite de téléchargement","uploadLimits":"Limite d\'envoi","perUserLimits":"Limites par utilisateur","locations":"Locations","skippingOptions":"Option d\'ignorance","searchMatching":"Correspondance de recherche","searchTypes":"Types de recherche","downloadOptions":"Options de téléchargement","priorities":"Priorités","notificationsCaption":"Notifications","histories":"Historiques","events":"Événements","appearance":"Apparence"},"advanced":"Avancé","noUnsavedChanges":"Pas de changements non sauvés","noSavePermission":"Pas de permission de sauvegarde","saveChanges":"Sauvegarder les changements","savingCompleted":"Sauvegarde terminée","settingsWereSavedSuccessfully":"Les paramètres ont bien été enregistrés","unsavedChangesPrompt":"Vous avez des changements non enregistrés. Êtes-vous sûr de vouloir quitter?","connectivity":{"detection":{"connectivityDetectionNote":"En cas de problèmes de connectivité de transfert de fichiers, veuillez confirmer que vos ports TCP sont vraiment ouverts en utilisant<1> un vérificateur de port en ligne</1>. Notez que la validité du port UDP (recherche) ne peut pas être vérifiée en ligne. Pour plus d\'infos sur les différents modes de connectivité, veuillez visiter<4> la FAQ sur la connectivité de DC++</4>. ","currentAutoDetectionStatus":"État actuel de la détection auto","iPv4Connectivity":"Connectivité IPv4","iPv6Connectivity":"Connectivité IPv6","manualConfiguration":"{{status}} (configuration manuelle)","autoDetected":"{{status}} (détection auto)","detecting":"En cours de détection…"},"ports":{"portsAutoValuesNote":"Numéros de port énumérés sur cette page peuvent être remplacés par les mappeurs de port (s\'ils sont activés)","form":{"tcpPortHelp":"Le port TCP est utilisé pour les transferts non chiffrés.","udpPortHelp":"Le port UDP est utilisé pour la recherche","tlsPortHelp":"Port TLS (TCP) est utilisé pour les transferts cryptés"}},"v6":{"protocolAutoValuesNote":"Détection auto de la connectivité est en activité; valeurs de réglage indiquées sur cette page ne sont pas utilisées"},"v4":{"protocolAutoValuesNote":"Détection auto de la connectivité est en activité; valeurs de réglage indiquées sur cette page ne sont pas utilisées"}},"profile":{"user":{"form":{"settingProfileHelp0":"Le client est utilisé dans des hubs privés / publics normaux pour transférer des fichiers via Internet. Utilisez ce profil en cas de doute.","settingProfileHelp1":"Client est utilisé pour transférer des fichiers divisés dans des archives RAR (ou dans d\'autres formats de petite taille)","settingProfileHelp2":"Client est utilisé pour transférer des fichiers dans un réseau local (ex: des parties de réseau local) ou dans un autre réseau fermé (ex: un réseau universitaire)","languageFileHelp":"<0>L\'application doit être redémarrée pour que la nouvelle langue prenne effet</0><1>. Si vous souhaitez aider à améliorer les traductions existantes ou traduire l\'application dans une nouvelle langue, veuillez consulter les<1> instructions pour les traducteurs</1>.</1>"}},"ignoredUsers":{"user":"Utilisateur","messagesIgnored":"Messages ignorés","noIgnoredUsers":"Aucun utilisateur ignoré"},"miscellaneous":{"form":{"nmdcEncodingHelp":"<0>Paramètre encodage n\'est utilisé que dans hubs NMDC. Hubs ADC utiliseront toujours l\'encodage UTF-8. <1></1><2></2><3>Valeurs couramment utilisées: <1><0>Europe centrale: cp1250</0><1>Cyrillique: cp1251</1><2>Europe occidentale: cp1252</2><3>Grec: cp1253</3><4>Turc: cp1254</4><5>Hébreu: cp1256 </5></1></3></0>"}}},"extensions":{"packages":{"byAuthor":"par {{author}}","latestVersion":"Dernière version","installedVersion":"Version installée","datePublished":"{{version}} (publié le {{date}})","readMore":"En savoir plus","defaultExtensionEngineMissing":"Le <1>nœud</1> du moteur d\'extension par défaut n\'est pas installé sur votre système. Veuillez visiter<3> la page d\'accueil</3> du moteur pour les instructions d\'installation. ","manage":"Gérer..."},"manage":{"byAuthor":"par {{author}}","latestVersion":"Dernière version","installedVersion":"Version installée","nonListedExtension":"Extension non listée","readMore":"En savoir plus","noInstalledExtensions":"Aucune extension installée trouvée. Nouvelles extensions peuvent être installées depuis la<1> page du catalogue d\'extensions</1>. ","defaultExtensionEngineMissing":"Le <1>nœud</1> du moteur d\'extension par défaut n\'est pas installé sur votre système. Veuillez visiter<3> la page d\'accueil</3> du moteur pour les instructions d\'installation. ","extensionDirectoryFetchError":"Échec de la récupération des infos du dossier d\'extension: {{error}}","unmanagedExtension":"Extension non gérée","manage":"Gérer..."}},"about":{"application":{"applicationVersion":"Version de l\'application","webUiVersion":"Version de l\'interface web","webUiBuildDate":"Date de création de l\'UI Web","apiVersion":"Version de l\'API","apiFeatureLevel":"Niveau de fonction API","started":"Démarré","activeSessions":"Sessions actives","serverThreads":"Threads de serveur","resources":"Ressources","homePage":"Page d\'accueil","featureRequestBugTracker":"Demande de fonctionnalité/suiveur de bugs","documentation":"Documentation","thirdPartyCredits":"Crédits tiers"},"transfers":{"totalDownloaded":"Total téléchargé","totalUploaded":"Total chargé","session":"Session","sessionDownloaded":"Session téléchargée","sessionUploaded":"Session chargée"},"share":{"noFilesShared":"Aucun fichier partagé","totalShareSize":"Taille totale du partage","totalFiles":"Total des fichiers","totalFilesValue":"{{totalCount}} ({{uniqueCount}} unique)","totalDirectories":"Total des dossiers","averageFileAge":"Nombre moyen du fichier","averageFilesPerDirectory":"Nombre moyen de fichiers par dossier","incomingSearches":"Recherches entrantes","totalSearches":"Total des recherches","searchesTotalValue":"{{totalCount}} ({{perSecondCount}} par seconde)","tthSearches":"Recherches TTH","textSearches":"Recherches de texte","searchesPerSecondValue":"{{totalCount}} ({{matchedCount}} correspond par seconde)","filteredTextSearches":"Recherches de texte filtré","searchesFilteredValue":"{{filteredPercentage}} ({{resultPercentage}} des correspondants ont renvoyé des résultats)","averageTextSearchTokensNonFiltered":"Moyenne des jetons de recherche de texte (non filtrés)","searchesAverageTokensValue":"{{tokenCount}} ({{tokenLength}} octets par jeton)","averageMatchingTimePerTextSearch":"Temps de correspondance moyen par recherche de texte","searchesAverageMatchTimeValue":"{{matchTime}} ms"},"hubs":{"noHubsOnline":"Aucun hub en ligne","totalUsers":"Nombre total d\'utilisateurs","uniqueUsers":"Utilisateurs uniques","activeUsers":"Utilisateurs actifs","totalShare":"Partage total","averageSharePerUser":"Partage moyen par utilisateur","averageAdcDownloadSpeed":"Vitesse moyenne de téléchargement ADC","clients":"Clients","averageAdcUploadSpeed":"Vitesse moyenne de chargement de l\'ADC"}},"system":{"logging":{"messages":"Messages","transfers":"Transferts","variableHelp":"Infos variables pour champs Nom de fichier et Format"},"serverSettings":{"defaultCertNote":"Certificat client par défaut est utilisé si les chemins de certificat sont vides"},"advancedServerSettings":{"hookTimeouts":"Délais d\'attente des crochets"},"users":{"username":"Nom d\'utilisateur","permissions":"Permissions","activeSessions":"Sessions actives","lastLoggedIn":"Dernière connexion","administrator":"Administrateur","form":{"usernameName":"Nom d\'utilisateur","passwordName":"Mot de passe","permissionsName":"Permissions"},"permissionSelector":{"administrator":"Administrateur","search":"Recherche","download":"Réception","transfers":"Transferts","events":"Événements","view":"Voir","edit":"Modif.","queue":"File d\'attente","favoriteHubs":"Hubs favoris","settings":"Paramètres","localFilesystem":"Système de fichiers local","hubs":"Hubs","sendMessages":"Envoyer les messages","privateChat":"Discussion privée","filelists":"Liste de fichiers","viewedFiles":"Fichiers consultés"},"addWebUser":"Ajouter un utilisateur web","editUser":"Éditer un utilisateur","adminPermissionNote":"Autorisation de l\'administrateur requise afin d\'accéder à la section Système dans les paramètres"}},"sharing":{"excludes":{"shareRefreshNote":"Partage doit être actualisé pour que modifs prennent effet","addExcludedPath":"Ajouter un chemin exclu","path":"Chemin"},"profiles":{"name":"Nom","totalSize":"Taille totale","totalFiles":"Total des fichiers","shareProfilesNote":"<0>Fichiers en file d\'attente sont partagés via fonction de partage de fichiers partiel dans tous les hubs où le partage n\'a pas été masqué, quels que soient les profils de partage configurés.</0><1>Profils de partage sont attribués à des dossiers individuels depuis la<1> page</1> Partager.</1>"},"sharingOptions":{"skiplist":"Liste de sauts"},"hashing":{"hashDatabase":"Données des hachages","fileIndexSize":"Taille d\'index de fichier","hashStoreSize":"Taille du fichier de hachage","maintenance":"Maintenance","verifyIntegrityOfHashData":"Vérifier l\'intégrité des données de hachage","optimizeNow":"Optimisez","hashDBOptimizeNote":"Cette opération supprimera toutes infos de hachage pour les fichiers qui ne sont pas actuellement partagés. Si vous partagez des fichiers depuis disques réseau ou d\'un stockage amovible, assurez-vous que les fichiers sont actuellement affichés dans le partage (sinon, ils doivent être rehachés) "}},"speedLimits":{"speed":{"connectionSpeedNote":"Veuillez être aussi précis que possible et définir le débit RÉEL de votre connexion. Possibilité d\'utiliser un site, tel que<1> Speedtest.net, pour tester votre débit</1>. "},"uploadLimits":{"manuallySet":"Définir manuellement"},"downloadLimits":{"manuallySet":"Définir manuellement"}},"downloads":{"locations":{"availablePathVariables":"Variables de chemin disponibles","favoriteDownloadDirectories":"Répertoires de téléchargement favori","name":"Nom","path":"Chemin","form":{"pathName":"Chemin","nameName":"Nom"},"addFavoriteDirectory":"Ajouter un dossier favori","editFavoriteDirectory":"Éditer le dossier favori"},"skippingOptions":{"skiplist":"Liste de sauts"},"priorities":{"filePriorities":"Priorités des fichiers","highPriorityFiles":"Fichiers de haute priorité"},"searchTypes":{"name":"Nom","fileExtensions":"Extensions de fichiers","default":"Défaut","searchTypesNote":"PS: Types de recherche personnalisés ne fonctionnent que dans les hubs ADC! Dans les hubs NMDC, l\'utilisation de types de recherche prédéfinis ne recherchera que des ensembles d\'extensions prédéfinies non définissables; l\'utilisation de types personnalisés recherchera n\'importe quelle extension par défaut","form":{"nameName":"Nom","extensionsName":"Extensions de fichiers"},"addSearchType":"Ajouter type de recherche","editSearchType":"Éditer type de recherche"},"downloadOptions":{"segments":"Segments","compression":"Compression","buffers":"Tampons"}},"browserSpecificNote":"Paramètres répertoriés sur cette page sont propres au navigateur","view":{"notifications":{"popupNotifications":"Notifications pop-up","form":{"notifyMentionMyNickName":"Mentions de mon pseudo","notifyPmUserName":"Messages privés (utilisateurs)","notifyPmBotName":"Messages privés (bots)","notifyHubMessageName":"Messages de chat du hub (seulement dans les hubs où les notifications de chat sont activées)","notifyBundleStatusName":"Changements de statut des paquets","notifyEventsInfoName":"Infos événements","notifyEventsWarningName":"Événements d\'alerte","notifyEventsErrorName":"Événements d\'erreur"}},"histories":{"maxMessageHistory":"Nombre maximum de messages en cache","maxSessionHistory":"Nombre maximal de sessions ouvertes précédemment"},"miscellaneous":{"form":{"unreadLabelDelayName":"Délai pour marquer sessions de chat comme lues (secondes)","backgroundImageUrlName":"URL de l\'image d\'arrière-plan personnalisée","noInstallPromptName":"Jamais montrer l\'invite d\'installation d\'application dans vue Accueil"}}}},"extensions":{"actions":{"uninstall":"Désinstaller","start":"Démarrer","installFromUrl":"Installer depuis l\'URL","install":"Installer","update":"MàJ","stop":"Stop","configure":"Configurer","prompts":{"installUrlPlaceholder":"Entrez l\'URL","installUrlApprove":"Installer","installUrlContent":"Entrer l\'URL de téléchargement","removeApprove":"Retirer l\'extension","removeReject":"Ne pas retirer","removeContent":"Voulez-vous vraiment retirer l\'extension {{item.name}} ? Cela retirera également les éventuels paramètres spécifiques à l\'extension. "}}},"navigation":{"home":"Accueil","queue":"File d\'attente","search":"Recherche","transfers":"Transferts","hubs":"Hubs","messages":"Messages","filelists":"Liste de fichiers","files":"Fichiers","events":"Événements","favoriteHubs":"Hubs favoris","share":"Partager","settings":"Paramètres","logout":"Se déconnecter","more":"Plus..."},"login":{"username":"Nom d\'utilisateur","password":"Mot de passe","keepMeLoggedIn":"Maintenir la connexion","login":"Login","authenticationFailed":"Authentification a échoué: {{lastError}}","connectingToTheServer":"Connexion en cours…","reestablishConnection":"Tentative de rétablir la connexion...","sessionLost":"Session perdue","connectionClosed":"Connexion fermée","privateBrowsingNotSupported":"Ce site ne peut pas être utilisé avec votre navigateur si le mode navigation privée est activé","dataStorageNotSupported":"Ce site ne peut pas être utilisé avec votre navigateur car il ne prend pas en charge le stockage des données."},"viewedFiles":{"actions":{"close":"Fermer"},"noFiles":"Aucun fichier à visualiser","noFilesDesc":"Vous pouvez ouvrir des fichiers texte ou multimédia à afficher ici depuis des listes de recherche ou de fichiers","preparingView":"Préparation de la vue","opened":"Ouvert","downloaded":"Téléchargé","unsupportedFormat":"Format non supporté","downloadFailed":"Téléchargement échoué","notifications":{"fileHasFinishedDownloading":"Le fichier a fini de télécharger","fileWasLoaded":"Le fichier a été chargé","actions":{"viewFile":"Voir le fichier"}}},"messages":{"actions":{"clearChat":"Effacer la discussion","close":"Fermer","connect":"Se connecter","disconnect":"Déconnecter"},"new":"Nouvelle session","newDesc":"Ouvrir une nouvelle session de chat privé","offlineMessage":"Vous devez être connecté à au moins un hub afin d\'envoyer des messages privés","directEncryptedChannelAvailable":"Canal direct et chiffré disponible","establishingConnection":"Établissement de la connexion...","directEncryptedChannelEstablished":"Canal direct crypté établi","notifications":{"actions":{"viewMessage":"Voir le message"}}},"home":{"newUserIntro":"Info pour nouvel utilisateur","newUserIntroDesc":"<0><0>Ajoutez quelques dossiers partagés avec d\'autres utilisateurs à depuis la<1> page</1> Partager</0><1> Vous souhaiterez peut-être parcourir au moins chaque page principale<1> des paramètres du client </1>avant de commencer. <3>Il est important que vous<1> configuriez correctement votre dédit</1> de connexion, car le client ne pourra pas utiliser votre bande passante efficacement autrement.</3></1><2>Il n\'y a pas encore de liste de hubs publics, vous devez donc connaître les adresses de hub auxquelles vous souhaitez vous connecter.</2></0><1>Visiter <1>page d\'accueil</1> pour plus d\'infos sur le client et ses fonctionnalités. </1><2>Si vous avez des questions, vous pouvez les poster sur le tracker <1>GitHub</1> ou rejoindre le hub dev/support:<3></3></2>"},"hash":{"actions":{"pause":"Pause","resume":"Reprendre","stop":"Stop"},"status":"État","paused":"En pause","filesLeft":"Fichiers à gauche","maximumSpeedPerHasher":"Vitesse maximale par hachage","runningThreads":"En cours d\'exécution ({{threadCount}} threads)","speed":"Vitesse","timeLeft":"Temps restant","idle":"Inactif","hashProgress":"Progression du hachage"}}')}}]);