codex 1.5.6__py3-none-any.whl → 1.5.7__py3-none-any.whl

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.

Potentially problematic release.


This version of codex might be problematic. Click here for more details.

Files changed (361) hide show
  1. codex/static_root/assets/{VCheckbox-DY1Y0qsq.5973caad55d6.js → VCheckbox-DLjoJtr0.5d60599395a5.js} +1 -1
  2. codex/static_root/assets/VCheckbox-DLjoJtr0.5d60599395a5.js.br +0 -0
  3. codex/static_root/assets/VCheckbox-DLjoJtr0.5d60599395a5.js.gz +0 -0
  4. codex/static_root/assets/{VCheckbox-DY1Y0qsq.js → VCheckbox-DLjoJtr0.js} +1 -1
  5. codex/static_root/assets/VCheckbox-DLjoJtr0.js.br +0 -0
  6. codex/static_root/assets/VCheckbox-DLjoJtr0.js.gz +0 -0
  7. codex/static_root/assets/{VCheckboxBtn-DoFCs6Y9.88abdf571754.js → VCheckboxBtn-rYCIroIq.75dabef40e06.js} +1 -1
  8. codex/static_root/assets/VCheckboxBtn-rYCIroIq.75dabef40e06.js.br +0 -0
  9. codex/static_root/assets/VCheckboxBtn-rYCIroIq.75dabef40e06.js.gz +0 -0
  10. codex/static_root/assets/{VCheckboxBtn-DoFCs6Y9.js → VCheckboxBtn-rYCIroIq.js} +1 -1
  11. codex/static_root/assets/VCheckboxBtn-rYCIroIq.js.br +0 -0
  12. codex/static_root/assets/VCheckboxBtn-rYCIroIq.js.gz +0 -0
  13. codex/static_root/assets/{VCombobox-C005saY4.2ee5c283b1af.js → VCombobox-BU9dgajj.d9b7d9dd727c.js} +1 -1
  14. codex/static_root/assets/VCombobox-BU9dgajj.d9b7d9dd727c.js.br +0 -0
  15. codex/static_root/assets/VCombobox-BU9dgajj.d9b7d9dd727c.js.gz +0 -0
  16. codex/static_root/assets/{VCombobox-C005saY4.js → VCombobox-BU9dgajj.js} +1 -1
  17. codex/static_root/assets/VCombobox-BU9dgajj.js.br +0 -0
  18. codex/static_root/assets/VCombobox-BU9dgajj.js.gz +0 -0
  19. codex/static_root/assets/{VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js → VDataTableVirtual-BE-h8GKr.cc7a0ac5d14e.js} +1 -1
  20. codex/static_root/assets/VDataTableVirtual-BE-h8GKr.cc7a0ac5d14e.js.br +0 -0
  21. codex/static_root/assets/VDataTableVirtual-BE-h8GKr.cc7a0ac5d14e.js.gz +0 -0
  22. codex/static_root/assets/{VDataTableVirtual-Crv_Nkla.js → VDataTableVirtual-BE-h8GKr.js} +1 -1
  23. codex/static_root/assets/VDataTableVirtual-BE-h8GKr.js.br +0 -0
  24. codex/static_root/assets/VDataTableVirtual-BE-h8GKr.js.gz +0 -0
  25. codex/static_root/assets/{VExpansionPanel-DLEh10A9.0934876f09cd.js → VExpansionPanel-C_YE4cHg.021b797cc0a6.js} +1 -1
  26. codex/static_root/assets/VExpansionPanel-C_YE4cHg.021b797cc0a6.js.br +0 -0
  27. codex/static_root/assets/VExpansionPanel-C_YE4cHg.021b797cc0a6.js.gz +0 -0
  28. codex/static_root/assets/{VExpansionPanel-DLEh10A9.js → VExpansionPanel-C_YE4cHg.js} +1 -1
  29. codex/static_root/assets/VExpansionPanel-C_YE4cHg.js.br +0 -0
  30. codex/static_root/assets/VExpansionPanel-C_YE4cHg.js.gz +0 -0
  31. codex/static_root/assets/{VMain-kAL6AAJw.679a45a634cd.js → VMain-BPAmFsfk.70418abd97a2.js} +1 -1
  32. codex/static_root/assets/VMain-BPAmFsfk.70418abd97a2.js.br +0 -0
  33. codex/static_root/assets/VMain-BPAmFsfk.70418abd97a2.js.gz +0 -0
  34. codex/static_root/assets/{VMain-kAL6AAJw.js → VMain-BPAmFsfk.js} +1 -1
  35. codex/static_root/assets/VMain-BPAmFsfk.js.br +0 -0
  36. codex/static_root/assets/VMain-BPAmFsfk.js.gz +0 -0
  37. codex/static_root/assets/{VRadioGroup-Dxdhr9bL.140138bee214.js → VRadioGroup-BNX77cb6.9735cbcf7ba7.js} +1 -1
  38. codex/static_root/assets/VRadioGroup-BNX77cb6.9735cbcf7ba7.js.br +0 -0
  39. codex/static_root/assets/VRadioGroup-BNX77cb6.9735cbcf7ba7.js.gz +0 -0
  40. codex/static_root/assets/{VRadioGroup-Dxdhr9bL.js → VRadioGroup-BNX77cb6.js} +1 -1
  41. codex/static_root/assets/VRadioGroup-BNX77cb6.js.br +0 -0
  42. codex/static_root/assets/VRadioGroup-BNX77cb6.js.gz +0 -0
  43. codex/static_root/assets/{VSelect-CZ9zKx45.js → VSelect-Cu3Kzlmc.e8dd6415829e.js} +1 -1
  44. codex/static_root/assets/VSelect-Cu3Kzlmc.e8dd6415829e.js.br +0 -0
  45. codex/static_root/assets/VSelect-Cu3Kzlmc.e8dd6415829e.js.gz +0 -0
  46. codex/static_root/assets/{VSelect-CZ9zKx45.02b646b81ba7.js → VSelect-Cu3Kzlmc.js} +1 -1
  47. codex/static_root/assets/VSelect-Cu3Kzlmc.js.br +0 -0
  48. codex/static_root/assets/VSelect-Cu3Kzlmc.js.gz +0 -0
  49. codex/static_root/assets/{VSelectionControl-DmGWAnkU.0b1a0ca19c10.js → VSelectionControl-CwCfBXjB.f49d7348da17.js} +1 -1
  50. codex/static_root/assets/VSelectionControl-CwCfBXjB.f49d7348da17.js.br +0 -0
  51. codex/static_root/assets/VSelectionControl-CwCfBXjB.f49d7348da17.js.gz +0 -0
  52. codex/static_root/assets/{VSelectionControl-DmGWAnkU.js → VSelectionControl-CwCfBXjB.js} +1 -1
  53. codex/static_root/assets/VSelectionControl-CwCfBXjB.js.br +0 -0
  54. codex/static_root/assets/VSelectionControl-CwCfBXjB.js.gz +0 -0
  55. codex/static_root/assets/{VSlideGroup-Lzhz1ElM.13cda1a2d31f.js → VSlideGroup-Bvm3Umct.9e302c3e6ef0.js} +1 -1
  56. codex/static_root/assets/VSlideGroup-Bvm3Umct.9e302c3e6ef0.js.br +0 -0
  57. codex/static_root/assets/VSlideGroup-Bvm3Umct.9e302c3e6ef0.js.gz +0 -0
  58. codex/static_root/assets/{VSlideGroup-Lzhz1ElM.js → VSlideGroup-Bvm3Umct.js} +1 -1
  59. codex/static_root/assets/VSlideGroup-Bvm3Umct.js.br +0 -0
  60. codex/static_root/assets/VSlideGroup-Bvm3Umct.js.gz +0 -0
  61. codex/static_root/assets/{VTable-Cs7OqRnv.6c1c551e1d50.js → VTable-DyY94cHK.fd42e5569db9.js} +1 -1
  62. codex/static_root/assets/VTable-DyY94cHK.fd42e5569db9.js.br +0 -0
  63. codex/static_root/assets/VTable-DyY94cHK.fd42e5569db9.js.gz +0 -0
  64. codex/static_root/assets/{VTable-Cs7OqRnv.js → VTable-DyY94cHK.js} +1 -1
  65. codex/static_root/assets/VTable-DyY94cHK.js.br +0 -0
  66. codex/static_root/assets/VTable-DyY94cHK.js.gz +0 -0
  67. codex/static_root/assets/{VToolbar-B45qQyqr.js → VToolbar-BoY3uXeQ.153fc4b00597.js} +2 -2
  68. codex/static_root/assets/VToolbar-BoY3uXeQ.153fc4b00597.js.br +0 -0
  69. codex/static_root/assets/VToolbar-BoY3uXeQ.153fc4b00597.js.gz +0 -0
  70. codex/static_root/assets/{VToolbar-B45qQyqr.5bad042a0a32.js → VToolbar-BoY3uXeQ.js} +2 -2
  71. codex/static_root/assets/VToolbar-BoY3uXeQ.js.br +0 -0
  72. codex/static_root/assets/VToolbar-BoY3uXeQ.js.gz +0 -0
  73. codex/static_root/assets/{VWindowItem-CPdSif3f.c8c60df1a06e.js → VWindowItem-dh08pIme.34a698c1de90.js} +1 -1
  74. codex/static_root/assets/VWindowItem-dh08pIme.34a698c1de90.js.br +0 -0
  75. codex/static_root/assets/VWindowItem-dh08pIme.34a698c1de90.js.gz +0 -0
  76. codex/static_root/assets/{VWindowItem-CPdSif3f.js → VWindowItem-dh08pIme.js} +1 -1
  77. codex/static_root/assets/VWindowItem-dh08pIme.js.br +0 -0
  78. codex/static_root/assets/VWindowItem-dh08pIme.js.gz +0 -0
  79. codex/static_root/assets/{admin-CuJft8Kj.7896b0403a73.js → admin-at7U-7a0.5c4ad1f03eb5.js} +1 -1
  80. codex/static_root/assets/admin-at7U-7a0.5c4ad1f03eb5.js.br +0 -0
  81. codex/static_root/assets/admin-at7U-7a0.5c4ad1f03eb5.js.gz +0 -0
  82. codex/static_root/assets/{admin-CuJft8Kj.js → admin-at7U-7a0.js} +1 -1
  83. codex/static_root/assets/admin-at7U-7a0.js.br +0 -0
  84. codex/static_root/assets/admin-at7U-7a0.js.gz +0 -0
  85. codex/static_root/assets/{admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js → admin-drawer-panel-DBj4RoBP.4b2b2a512064.js} +1 -1
  86. codex/static_root/assets/admin-drawer-panel-DBj4RoBP.4b2b2a512064.js.br +0 -0
  87. codex/static_root/assets/{admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js.gz → admin-drawer-panel-DBj4RoBP.4b2b2a512064.js.gz} +0 -0
  88. codex/static_root/assets/{admin-drawer-panel-Bw6sRseo.js → admin-drawer-panel-DBj4RoBP.js} +1 -1
  89. codex/static_root/assets/admin-drawer-panel-DBj4RoBP.js.br +0 -0
  90. codex/static_root/assets/{admin-drawer-panel-Bw6sRseo.js.gz → admin-drawer-panel-DBj4RoBP.js.gz} +0 -0
  91. codex/static_root/assets/{browser-C8SJwVGz.0f7daf93b064.css → browser-DK20egTr.b1e739ab9e9f.css} +1 -1
  92. codex/static_root/assets/browser-DK20egTr.b1e739ab9e9f.css.br +0 -0
  93. codex/static_root/assets/browser-DK20egTr.b1e739ab9e9f.css.gz +0 -0
  94. codex/static_root/assets/{browser-C8SJwVGz.css → browser-DK20egTr.css} +1 -1
  95. codex/static_root/assets/browser-DK20egTr.css.br +0 -0
  96. codex/static_root/assets/browser-DK20egTr.css.gz +0 -0
  97. codex/static_root/assets/browser-ufllJIOQ.8dfc9872d60d.js +1 -0
  98. codex/static_root/assets/browser-ufllJIOQ.8dfc9872d60d.js.br +0 -0
  99. codex/static_root/assets/browser-ufllJIOQ.8dfc9872d60d.js.gz +0 -0
  100. codex/static_root/assets/browser-ufllJIOQ.js +1 -0
  101. codex/static_root/assets/browser-ufllJIOQ.js.br +0 -0
  102. codex/static_root/assets/browser-ufllJIOQ.js.gz +0 -0
  103. codex/static_root/assets/{change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js → change-password-dialog-B1VVvJN-.c686a7b0141b.js} +1 -1
  104. codex/static_root/assets/change-password-dialog-B1VVvJN-.c686a7b0141b.js.br +0 -0
  105. codex/static_root/assets/change-password-dialog-B1VVvJN-.c686a7b0141b.js.gz +0 -0
  106. codex/static_root/assets/{change-password-dialog-Baa-qXXZ.js → change-password-dialog-B1VVvJN-.js} +1 -1
  107. codex/static_root/assets/change-password-dialog-B1VVvJN-.js.br +0 -0
  108. codex/static_root/assets/change-password-dialog-B1VVvJN-.js.gz +0 -0
  109. codex/static_root/assets/{confirm-dialog-GFYaCGnF.74926361ce10.js → confirm-dialog-B1cfqAyU.707e24950f0e.js} +1 -1
  110. codex/static_root/assets/confirm-dialog-B1cfqAyU.707e24950f0e.js.br +0 -0
  111. codex/static_root/assets/confirm-dialog-B1cfqAyU.707e24950f0e.js.gz +0 -0
  112. codex/static_root/assets/{confirm-dialog-GFYaCGnF.js → confirm-dialog-B1cfqAyU.js} +1 -1
  113. codex/static_root/assets/confirm-dialog-B1cfqAyU.js.br +0 -0
  114. codex/static_root/assets/confirm-dialog-B1cfqAyU.js.gz +0 -0
  115. codex/static_root/assets/{confirm-footer-BZ5z6tl1.js → confirm-footer-BU8uNZMI.a856f455bc53.js} +1 -1
  116. codex/static_root/assets/confirm-footer-BU8uNZMI.a856f455bc53.js.br +0 -0
  117. codex/static_root/assets/confirm-footer-BU8uNZMI.a856f455bc53.js.gz +0 -0
  118. codex/static_root/assets/{confirm-footer-BZ5z6tl1.3251a6549976.js → confirm-footer-BU8uNZMI.js} +1 -1
  119. codex/static_root/assets/confirm-footer-BU8uNZMI.js.br +0 -0
  120. codex/static_root/assets/confirm-footer-BU8uNZMI.js.gz +0 -0
  121. codex/static_root/assets/{datetime-column-B1V0cYaU.0c46b8a368b1.js → datetime-column-CO-AnRK_.1fcc919f69d8.js} +1 -1
  122. codex/static_root/assets/datetime-column-CO-AnRK_.1fcc919f69d8.js.br +0 -0
  123. codex/static_root/assets/datetime-column-CO-AnRK_.1fcc919f69d8.js.gz +0 -0
  124. codex/static_root/assets/{datetime-column-B1V0cYaU.js → datetime-column-CO-AnRK_.js} +1 -1
  125. codex/static_root/assets/datetime-column-CO-AnRK_.js.br +0 -0
  126. codex/static_root/assets/datetime-column-CO-AnRK_.js.gz +0 -0
  127. codex/static_root/assets/{filter-D8l3lzk8.042233ea3486.js → filter-Bj65Z2NW.92ea74a7c1fe.js} +1 -1
  128. codex/static_root/assets/filter-Bj65Z2NW.92ea74a7c1fe.js.br +0 -0
  129. codex/static_root/assets/filter-Bj65Z2NW.92ea74a7c1fe.js.gz +0 -0
  130. codex/static_root/assets/{filter-D8l3lzk8.js → filter-Bj65Z2NW.js} +1 -1
  131. codex/static_root/assets/filter-Bj65Z2NW.js.br +0 -0
  132. codex/static_root/assets/filter-Bj65Z2NW.js.gz +0 -0
  133. codex/static_root/assets/{flag-tab-BDPywFPd.63518f50890d.js → flag-tab-9MO7gSJ6.6abaf7b54c5a.js} +1 -1
  134. codex/static_root/assets/flag-tab-9MO7gSJ6.6abaf7b54c5a.js.br +0 -0
  135. codex/static_root/assets/flag-tab-9MO7gSJ6.6abaf7b54c5a.js.gz +0 -0
  136. codex/static_root/assets/{flag-tab-BDPywFPd.js → flag-tab-9MO7gSJ6.js} +1 -1
  137. codex/static_root/assets/flag-tab-9MO7gSJ6.js.br +0 -0
  138. codex/static_root/assets/flag-tab-9MO7gSJ6.js.gz +0 -0
  139. codex/static_root/assets/{group-tab-KqXSGW5M.01cbb8a1405f.js → group-tab-DJ1JSrhB.7d5f4cc8e30e.js} +1 -1
  140. codex/static_root/assets/group-tab-DJ1JSrhB.7d5f4cc8e30e.js.br +0 -0
  141. codex/static_root/assets/group-tab-DJ1JSrhB.7d5f4cc8e30e.js.gz +0 -0
  142. codex/static_root/assets/{group-tab-KqXSGW5M.js → group-tab-DJ1JSrhB.js} +1 -1
  143. codex/static_root/assets/group-tab-DJ1JSrhB.js.br +0 -0
  144. codex/static_root/assets/group-tab-DJ1JSrhB.js.gz +0 -0
  145. codex/static_root/assets/{http-error-5WhCKib6.b2f36af25a6f.js → http-error-T3TJcTMI.382a9674d552.js} +1 -1
  146. codex/static_root/assets/http-error-T3TJcTMI.382a9674d552.js.br +0 -0
  147. codex/static_root/assets/http-error-T3TJcTMI.382a9674d552.js.gz +0 -0
  148. codex/static_root/assets/{http-error-5WhCKib6.js → http-error-T3TJcTMI.js} +1 -1
  149. codex/static_root/assets/http-error-T3TJcTMI.js.br +0 -0
  150. codex/static_root/assets/http-error-T3TJcTMI.js.gz +0 -0
  151. codex/static_root/assets/{library-tab-BqoBlTet.89bd37b52a52.js → library-tab-CFVsD5Op.70ca2094335e.js} +1 -1
  152. codex/static_root/assets/library-tab-CFVsD5Op.70ca2094335e.js.br +0 -0
  153. codex/static_root/assets/library-tab-CFVsD5Op.70ca2094335e.js.gz +0 -0
  154. codex/static_root/assets/{library-tab-BqoBlTet.js → library-tab-CFVsD5Op.js} +1 -1
  155. codex/static_root/assets/library-tab-CFVsD5Op.js.br +0 -0
  156. codex/static_root/assets/library-tab-CFVsD5Op.js.gz +0 -0
  157. codex/static_root/assets/{main-D3DHt-EP.js → main-GviMPb0H.0209121e233c.js} +3 -3
  158. codex/static_root/assets/main-GviMPb0H.0209121e233c.js.br +0 -0
  159. codex/static_root/assets/main-GviMPb0H.0209121e233c.js.gz +0 -0
  160. codex/static_root/assets/{main-D3DHt-EP.d53d3204d5c3.js → main-GviMPb0H.js} +3 -3
  161. codex/static_root/assets/main-GviMPb0H.js.br +0 -0
  162. codex/static_root/assets/main-GviMPb0H.js.gz +0 -0
  163. codex/static_root/assets/metadata-dialog-BoA0P4eW.4c0f8d92c58d.js +1 -0
  164. codex/static_root/assets/metadata-dialog-BoA0P4eW.4c0f8d92c58d.js.br +0 -0
  165. codex/static_root/assets/metadata-dialog-BoA0P4eW.4c0f8d92c58d.js.gz +0 -0
  166. codex/static_root/assets/metadata-dialog-BoA0P4eW.js +1 -0
  167. codex/static_root/assets/metadata-dialog-BoA0P4eW.js.br +0 -0
  168. codex/static_root/assets/metadata-dialog-BoA0P4eW.js.gz +0 -0
  169. codex/static_root/assets/metadata-dialog-CyXPt4KJ.69deb8a02537.css +1 -0
  170. codex/static_root/assets/metadata-dialog-CyXPt4KJ.69deb8a02537.css.br +0 -0
  171. codex/static_root/assets/metadata-dialog-CyXPt4KJ.69deb8a02537.css.gz +0 -0
  172. codex/static_root/assets/metadata-dialog-CyXPt4KJ.css +1 -0
  173. codex/static_root/assets/metadata-dialog-CyXPt4KJ.css.br +0 -0
  174. codex/static_root/assets/metadata-dialog-CyXPt4KJ.css.gz +0 -0
  175. codex/static_root/assets/{pdf-doc-CAMtvE6R.995dfc33e383.js → pdf-doc-CRQcNJLE.7a8ff9d95240.js} +1 -1
  176. codex/static_root/assets/pdf-doc-CRQcNJLE.7a8ff9d95240.js.br +0 -0
  177. codex/static_root/assets/pdf-doc-CRQcNJLE.7a8ff9d95240.js.gz +0 -0
  178. codex/static_root/assets/{pdf-doc-CAMtvE6R.js → pdf-doc-CRQcNJLE.js} +1 -1
  179. codex/static_root/assets/pdf-doc-CRQcNJLE.js.br +0 -0
  180. codex/static_root/assets/pdf-doc-CRQcNJLE.js.gz +0 -0
  181. codex/static_root/assets/reader-D0glX_SR.cf6412239d02.js +7 -0
  182. codex/static_root/assets/reader-D0glX_SR.cf6412239d02.js.br +0 -0
  183. codex/static_root/assets/reader-D0glX_SR.cf6412239d02.js.gz +0 -0
  184. codex/static_root/assets/reader-D0glX_SR.js +7 -0
  185. codex/static_root/assets/reader-D0glX_SR.js.br +0 -0
  186. codex/static_root/assets/reader-D0glX_SR.js.gz +0 -0
  187. codex/static_root/assets/{stats-tab-qkgb7Upv.8768847dc063.js → stats-tab-6wQAa1PR.1eaae7fcf4df.js} +1 -1
  188. codex/static_root/assets/stats-tab-6wQAa1PR.1eaae7fcf4df.js.br +0 -0
  189. codex/static_root/assets/stats-tab-6wQAa1PR.1eaae7fcf4df.js.gz +0 -0
  190. codex/static_root/assets/{stats-tab-qkgb7Upv.js → stats-tab-6wQAa1PR.js} +1 -1
  191. codex/static_root/assets/stats-tab-6wQAa1PR.js.br +0 -0
  192. codex/static_root/assets/stats-tab-6wQAa1PR.js.gz +0 -0
  193. codex/static_root/assets/{task-tab-BN1YRCAx.6fcf833588f3.js → task-tab-ChM8mr0J.79214f27fe08.js} +1 -1
  194. codex/static_root/assets/task-tab-ChM8mr0J.79214f27fe08.js.br +0 -0
  195. codex/static_root/assets/task-tab-ChM8mr0J.79214f27fe08.js.gz +0 -0
  196. codex/static_root/assets/{task-tab-BN1YRCAx.js → task-tab-ChM8mr0J.js} +1 -1
  197. codex/static_root/assets/task-tab-ChM8mr0J.js.br +0 -0
  198. codex/static_root/assets/task-tab-ChM8mr0J.js.gz +0 -0
  199. codex/static_root/assets/{user-tab-CUFrpTg3.7e1cbcbed523.js → user-tab-Bh03ciSs.d20c8dfc58a3.js} +1 -1
  200. codex/static_root/assets/user-tab-Bh03ciSs.d20c8dfc58a3.js.br +0 -0
  201. codex/static_root/assets/user-tab-Bh03ciSs.d20c8dfc58a3.js.gz +0 -0
  202. codex/static_root/assets/{user-tab-CUFrpTg3.js → user-tab-Bh03ciSs.js} +1 -1
  203. codex/static_root/assets/user-tab-Bh03ciSs.js.br +0 -0
  204. codex/static_root/assets/user-tab-Bh03ciSs.js.gz +0 -0
  205. codex/static_root/{manifest.2e1bd449ab2a.json → manifest.24a00c718a41.json} +208 -208
  206. codex/static_root/manifest.24a00c718a41.json.br +0 -0
  207. codex/static_root/manifest.24a00c718a41.json.gz +0 -0
  208. codex/static_root/manifest.json +208 -208
  209. codex/static_root/manifest.json.br +0 -0
  210. codex/static_root/manifest.json.gz +0 -0
  211. codex/static_root/staticfiles.json +1 -1
  212. codex/views/browser/browser.py +50 -27
  213. {codex-1.5.6.dist-info → codex-1.5.7.dist-info}/METADATA +1 -1
  214. {codex-1.5.6.dist-info → codex-1.5.7.dist-info}/RECORD +217 -217
  215. codex/static_root/assets/VCheckbox-DY1Y0qsq.5973caad55d6.js.br +0 -0
  216. codex/static_root/assets/VCheckbox-DY1Y0qsq.5973caad55d6.js.gz +0 -0
  217. codex/static_root/assets/VCheckbox-DY1Y0qsq.js.br +0 -0
  218. codex/static_root/assets/VCheckbox-DY1Y0qsq.js.gz +0 -0
  219. codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.88abdf571754.js.br +0 -0
  220. codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.88abdf571754.js.gz +0 -0
  221. codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.js.br +0 -0
  222. codex/static_root/assets/VCheckboxBtn-DoFCs6Y9.js.gz +0 -0
  223. codex/static_root/assets/VCombobox-C005saY4.2ee5c283b1af.js.br +0 -0
  224. codex/static_root/assets/VCombobox-C005saY4.2ee5c283b1af.js.gz +0 -0
  225. codex/static_root/assets/VCombobox-C005saY4.js.br +0 -0
  226. codex/static_root/assets/VCombobox-C005saY4.js.gz +0 -0
  227. codex/static_root/assets/VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js.br +0 -0
  228. codex/static_root/assets/VDataTableVirtual-Crv_Nkla.07f4fc817ffb.js.gz +0 -0
  229. codex/static_root/assets/VDataTableVirtual-Crv_Nkla.js.br +0 -0
  230. codex/static_root/assets/VDataTableVirtual-Crv_Nkla.js.gz +0 -0
  231. codex/static_root/assets/VExpansionPanel-DLEh10A9.0934876f09cd.js.br +0 -0
  232. codex/static_root/assets/VExpansionPanel-DLEh10A9.0934876f09cd.js.gz +0 -0
  233. codex/static_root/assets/VExpansionPanel-DLEh10A9.js.br +0 -0
  234. codex/static_root/assets/VExpansionPanel-DLEh10A9.js.gz +0 -0
  235. codex/static_root/assets/VMain-kAL6AAJw.679a45a634cd.js.br +0 -0
  236. codex/static_root/assets/VMain-kAL6AAJw.679a45a634cd.js.gz +0 -0
  237. codex/static_root/assets/VMain-kAL6AAJw.js.br +0 -0
  238. codex/static_root/assets/VMain-kAL6AAJw.js.gz +0 -0
  239. codex/static_root/assets/VRadioGroup-Dxdhr9bL.140138bee214.js.br +0 -5
  240. codex/static_root/assets/VRadioGroup-Dxdhr9bL.140138bee214.js.gz +0 -0
  241. codex/static_root/assets/VRadioGroup-Dxdhr9bL.js.br +0 -5
  242. codex/static_root/assets/VRadioGroup-Dxdhr9bL.js.gz +0 -0
  243. codex/static_root/assets/VSelect-CZ9zKx45.02b646b81ba7.js.br +0 -0
  244. codex/static_root/assets/VSelect-CZ9zKx45.02b646b81ba7.js.gz +0 -0
  245. codex/static_root/assets/VSelect-CZ9zKx45.js.br +0 -0
  246. codex/static_root/assets/VSelect-CZ9zKx45.js.gz +0 -0
  247. codex/static_root/assets/VSelectionControl-DmGWAnkU.0b1a0ca19c10.js.br +0 -0
  248. codex/static_root/assets/VSelectionControl-DmGWAnkU.0b1a0ca19c10.js.gz +0 -0
  249. codex/static_root/assets/VSelectionControl-DmGWAnkU.js.br +0 -0
  250. codex/static_root/assets/VSelectionControl-DmGWAnkU.js.gz +0 -0
  251. codex/static_root/assets/VSlideGroup-Lzhz1ElM.13cda1a2d31f.js.br +0 -0
  252. codex/static_root/assets/VSlideGroup-Lzhz1ElM.13cda1a2d31f.js.gz +0 -0
  253. codex/static_root/assets/VSlideGroup-Lzhz1ElM.js.br +0 -0
  254. codex/static_root/assets/VSlideGroup-Lzhz1ElM.js.gz +0 -0
  255. codex/static_root/assets/VTable-Cs7OqRnv.6c1c551e1d50.js.br +0 -0
  256. codex/static_root/assets/VTable-Cs7OqRnv.6c1c551e1d50.js.gz +0 -0
  257. codex/static_root/assets/VTable-Cs7OqRnv.js.br +0 -0
  258. codex/static_root/assets/VTable-Cs7OqRnv.js.gz +0 -0
  259. codex/static_root/assets/VToolbar-B45qQyqr.5bad042a0a32.js.br +0 -0
  260. codex/static_root/assets/VToolbar-B45qQyqr.5bad042a0a32.js.gz +0 -0
  261. codex/static_root/assets/VToolbar-B45qQyqr.js.br +0 -0
  262. codex/static_root/assets/VToolbar-B45qQyqr.js.gz +0 -0
  263. codex/static_root/assets/VWindowItem-CPdSif3f.c8c60df1a06e.js.br +0 -0
  264. codex/static_root/assets/VWindowItem-CPdSif3f.c8c60df1a06e.js.gz +0 -0
  265. codex/static_root/assets/VWindowItem-CPdSif3f.js.br +0 -0
  266. codex/static_root/assets/VWindowItem-CPdSif3f.js.gz +0 -0
  267. codex/static_root/assets/admin-CuJft8Kj.7896b0403a73.js.br +0 -0
  268. codex/static_root/assets/admin-CuJft8Kj.7896b0403a73.js.gz +0 -0
  269. codex/static_root/assets/admin-CuJft8Kj.js.br +0 -0
  270. codex/static_root/assets/admin-CuJft8Kj.js.gz +0 -0
  271. codex/static_root/assets/admin-drawer-panel-Bw6sRseo.9b53ff3b9d60.js.br +0 -0
  272. codex/static_root/assets/admin-drawer-panel-Bw6sRseo.js.br +0 -0
  273. codex/static_root/assets/browser-9_vS5P8d.52c168ccc66e.js +0 -1
  274. codex/static_root/assets/browser-9_vS5P8d.52c168ccc66e.js.br +0 -0
  275. codex/static_root/assets/browser-9_vS5P8d.52c168ccc66e.js.gz +0 -0
  276. codex/static_root/assets/browser-9_vS5P8d.js +0 -1
  277. codex/static_root/assets/browser-9_vS5P8d.js.br +0 -0
  278. codex/static_root/assets/browser-9_vS5P8d.js.gz +0 -0
  279. codex/static_root/assets/browser-C8SJwVGz.0f7daf93b064.css.br +0 -0
  280. codex/static_root/assets/browser-C8SJwVGz.0f7daf93b064.css.gz +0 -0
  281. codex/static_root/assets/browser-C8SJwVGz.css.br +0 -0
  282. codex/static_root/assets/browser-C8SJwVGz.css.gz +0 -0
  283. codex/static_root/assets/change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js.br +0 -0
  284. codex/static_root/assets/change-password-dialog-Baa-qXXZ.2dd5799b9e0f.js.gz +0 -0
  285. codex/static_root/assets/change-password-dialog-Baa-qXXZ.js.br +0 -0
  286. codex/static_root/assets/change-password-dialog-Baa-qXXZ.js.gz +0 -0
  287. codex/static_root/assets/confirm-dialog-GFYaCGnF.74926361ce10.js.br +0 -0
  288. codex/static_root/assets/confirm-dialog-GFYaCGnF.74926361ce10.js.gz +0 -0
  289. codex/static_root/assets/confirm-dialog-GFYaCGnF.js.br +0 -0
  290. codex/static_root/assets/confirm-dialog-GFYaCGnF.js.gz +0 -0
  291. codex/static_root/assets/confirm-footer-BZ5z6tl1.3251a6549976.js.br +0 -0
  292. codex/static_root/assets/confirm-footer-BZ5z6tl1.3251a6549976.js.gz +0 -0
  293. codex/static_root/assets/confirm-footer-BZ5z6tl1.js.br +0 -0
  294. codex/static_root/assets/confirm-footer-BZ5z6tl1.js.gz +0 -0
  295. codex/static_root/assets/datetime-column-B1V0cYaU.0c46b8a368b1.js.br +0 -0
  296. codex/static_root/assets/datetime-column-B1V0cYaU.0c46b8a368b1.js.gz +0 -0
  297. codex/static_root/assets/datetime-column-B1V0cYaU.js.br +0 -0
  298. codex/static_root/assets/datetime-column-B1V0cYaU.js.gz +0 -0
  299. codex/static_root/assets/filter-D8l3lzk8.042233ea3486.js.br +0 -0
  300. codex/static_root/assets/filter-D8l3lzk8.042233ea3486.js.gz +0 -0
  301. codex/static_root/assets/filter-D8l3lzk8.js.br +0 -0
  302. codex/static_root/assets/filter-D8l3lzk8.js.gz +0 -0
  303. codex/static_root/assets/flag-tab-BDPywFPd.63518f50890d.js.br +0 -0
  304. codex/static_root/assets/flag-tab-BDPywFPd.63518f50890d.js.gz +0 -0
  305. codex/static_root/assets/flag-tab-BDPywFPd.js.br +0 -0
  306. codex/static_root/assets/flag-tab-BDPywFPd.js.gz +0 -0
  307. codex/static_root/assets/group-tab-KqXSGW5M.01cbb8a1405f.js.br +0 -0
  308. codex/static_root/assets/group-tab-KqXSGW5M.01cbb8a1405f.js.gz +0 -0
  309. codex/static_root/assets/group-tab-KqXSGW5M.js.br +0 -0
  310. codex/static_root/assets/group-tab-KqXSGW5M.js.gz +0 -0
  311. codex/static_root/assets/http-error-5WhCKib6.b2f36af25a6f.js.br +0 -4
  312. codex/static_root/assets/http-error-5WhCKib6.b2f36af25a6f.js.gz +0 -0
  313. codex/static_root/assets/http-error-5WhCKib6.js.br +0 -4
  314. codex/static_root/assets/http-error-5WhCKib6.js.gz +0 -0
  315. codex/static_root/assets/library-tab-BqoBlTet.89bd37b52a52.js.br +0 -0
  316. codex/static_root/assets/library-tab-BqoBlTet.89bd37b52a52.js.gz +0 -0
  317. codex/static_root/assets/library-tab-BqoBlTet.js.br +0 -0
  318. codex/static_root/assets/library-tab-BqoBlTet.js.gz +0 -0
  319. codex/static_root/assets/main-D3DHt-EP.d53d3204d5c3.js.br +0 -0
  320. codex/static_root/assets/main-D3DHt-EP.d53d3204d5c3.js.gz +0 -0
  321. codex/static_root/assets/main-D3DHt-EP.js.br +0 -0
  322. codex/static_root/assets/main-D3DHt-EP.js.gz +0 -0
  323. codex/static_root/assets/metadata-dialog-CJcprkxf.3042328b6353.js +0 -1
  324. codex/static_root/assets/metadata-dialog-CJcprkxf.3042328b6353.js.br +0 -0
  325. codex/static_root/assets/metadata-dialog-CJcprkxf.3042328b6353.js.gz +0 -0
  326. codex/static_root/assets/metadata-dialog-CJcprkxf.js +0 -1
  327. codex/static_root/assets/metadata-dialog-CJcprkxf.js.br +0 -0
  328. codex/static_root/assets/metadata-dialog-CJcprkxf.js.gz +0 -0
  329. codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css +0 -1
  330. codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css.br +0 -0
  331. codex/static_root/assets/metadata-dialog-DPxDDFDy.34b7c11509ec.css.gz +0 -0
  332. codex/static_root/assets/metadata-dialog-DPxDDFDy.css +0 -1
  333. codex/static_root/assets/metadata-dialog-DPxDDFDy.css.br +0 -0
  334. codex/static_root/assets/metadata-dialog-DPxDDFDy.css.gz +0 -0
  335. codex/static_root/assets/pdf-doc-CAMtvE6R.995dfc33e383.js.br +0 -0
  336. codex/static_root/assets/pdf-doc-CAMtvE6R.995dfc33e383.js.gz +0 -0
  337. codex/static_root/assets/pdf-doc-CAMtvE6R.js.br +0 -0
  338. codex/static_root/assets/pdf-doc-CAMtvE6R.js.gz +0 -0
  339. codex/static_root/assets/reader-zEw6Fz0p.c832c228c37b.js +0 -7
  340. codex/static_root/assets/reader-zEw6Fz0p.c832c228c37b.js.br +0 -0
  341. codex/static_root/assets/reader-zEw6Fz0p.c832c228c37b.js.gz +0 -0
  342. codex/static_root/assets/reader-zEw6Fz0p.js +0 -7
  343. codex/static_root/assets/reader-zEw6Fz0p.js.br +0 -0
  344. codex/static_root/assets/reader-zEw6Fz0p.js.gz +0 -0
  345. codex/static_root/assets/stats-tab-qkgb7Upv.8768847dc063.js.br +0 -0
  346. codex/static_root/assets/stats-tab-qkgb7Upv.8768847dc063.js.gz +0 -0
  347. codex/static_root/assets/stats-tab-qkgb7Upv.js.br +0 -0
  348. codex/static_root/assets/stats-tab-qkgb7Upv.js.gz +0 -0
  349. codex/static_root/assets/task-tab-BN1YRCAx.6fcf833588f3.js.br +0 -0
  350. codex/static_root/assets/task-tab-BN1YRCAx.6fcf833588f3.js.gz +0 -0
  351. codex/static_root/assets/task-tab-BN1YRCAx.js.br +0 -0
  352. codex/static_root/assets/task-tab-BN1YRCAx.js.gz +0 -0
  353. codex/static_root/assets/user-tab-CUFrpTg3.7e1cbcbed523.js.br +0 -0
  354. codex/static_root/assets/user-tab-CUFrpTg3.7e1cbcbed523.js.gz +0 -0
  355. codex/static_root/assets/user-tab-CUFrpTg3.js.br +0 -0
  356. codex/static_root/assets/user-tab-CUFrpTg3.js.gz +0 -0
  357. codex/static_root/manifest.2e1bd449ab2a.json.br +0 -0
  358. codex/static_root/manifest.2e1bd449ab2a.json.gz +0 -0
  359. {codex-1.5.6.dist-info → codex-1.5.7.dist-info}/LICENSE +0 -0
  360. {codex-1.5.6.dist-info → codex-1.5.7.dist-info}/WHEEL +0 -0
  361. {codex-1.5.6.dist-info → codex-1.5.7.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- import{_ as L}from"./confirm-dialog-GFYaCGnF.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-Crv_Nkla.js";import{cp as ee,a$ as $,M as w,t as f,a9 as te,_ as k,Q as b,R as c,ay as _,L as l,P as s,aD as r,ae as g,O as V,aa as d,ad as T,aB as A,al as B,az as oe,aH as j,aI as N,am as P,k as x,N as v,ag as le,aX as re,cq as se,cr as ae,aC as ie,b5 as ne,c9 as de,ab as me}from"./admin-drawer-panel-Bw6sRseo.js";import{D as W}from"./datetime-column-B1V0cYaU.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-DLEh10A9.js";import{V as ue}from"./VTable-Cs7OqRnv.js";import{a as pe}from"./VSlideGroup-Lzhz1ElM.js";import{a as S,u as ce}from"./main-D3DHt-EP.js";import{V as he}from"./VCombobox-C005saY4.js";import{V as I}from"./VCheckbox-DY1Y0qsq.js";import{V as U}from"./VCheckboxBtn-DoFCs6Y9.js";import"./confirm-footer-BZ5z6tl1.js";import"./VSelect-CZ9zKx45.js";import"./VSelectionControl-DmGWAnkU.js";import"./filter-D8l3lzk8.js";const fe={name:"AdminFailedImportsPanel",components:{DateTimeColumn:W},data(){return{mdiBookAlert:ee,mdiOpenInNew:$}},computed:{...w(f,["failedImports"]),...te(f,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},y=e=>(j("data-v-bc6470a2"),e=e(),N(),e),be={key:0,id:"failedImports"},_e=y(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),ye={class:"dateCol"},ge=y(()=>r("h4",null,"Failed Imports Help",-1)),we=y(()=>r("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),ke=y(()=>r("h4",null,"Fixing comics",-1)),Fe=y(()=>r("p",null,[d(" Try using the zip fixer to fix comics: "),r("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),r("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),r("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),r("code",null,"zip -FF"),d(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),ve=y(()=>r("h4",null,"Reporting Issues",-1)),Pe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Ie=y(()=>r("code",null,"config/logs/codex.log",-1));function Ce(e,t,m,h,o,u){const i=b("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(c(),_("div",be,[l(O,null,{default:s(()=>[l(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=p=>e.unseenFailedImports=!1)},{default:s(()=>[l(E,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(c(),V(T,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),l(R,null,{default:s(()=>[l(ue,{class:"highlight-table"},{default:s(()=>[_e,r("tbody",null,[(c(!0),_(B,null,oe(e.failedImports,p=>(c(),_("tr",{key:`fi:${p.path}`},[r("td",null,g(p.path),1),r("td",ye,[l(i,{dttm:p.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(O,null,{default:s(()=>[l(D,{id:"failedImportsHelp"},{default:s(()=>[l(E,null,{default:s(()=>[ge]),_:1}),l(R,null,{default:s(()=>[we,ke,Fe,ve,r("p",null,[d(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an "),r("a",Pe,[d("Issue Report"),l(T,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Ie,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const Ve=k(fe,[["render",Ce],["__scopeId","data-v-bc6470a2"]]),Te={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function Ae(e,t,m,h,o,u){return c(),V(pe,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const K=k(Te,[["render",Ae]]),xe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(f,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(x,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...v(f,["clearFolders","loadFolders"]),...v(x,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let h="";return this.formErrors.length===0&&(this.path=h=this.rootFolder),this.$emit("change",h)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},De={id:"folderPicker"};function Ee(e,t,m,h,o,u){return c(),_("div",De,[l(he,P({modelValue:o.path,"onUpdate:modelValue":t[0]||(t[0]=i=>o.path=i),menu:o.menuOpen,"onUpdate:menu":t[1]||(t[1]=i=>o.menuOpen=i)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:u.onBlur,"onClick:clear":u.onClear,onKeydown:re(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:p})=>[l(le,P(p,{title:i.title,value:i.value,onClick:F=>u.onItemClick(i.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),l(I,{modelValue:o.showHidden,"onUpdate:modelValue":t[2]||(t[2]=i=>o.showHidden=i),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const Re=k(xe,[["render",Ee],["__scopeId","data-v-3cf2705f"]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const C={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(C);const H=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Oe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:Q,AdminServerFolderPicker:Re,TimeTextField:K},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(H(t,e))return"Path is a child of an existing library";if(H(e,t))return"Path is a parent of an existing library"}return!0}]},row:S.cloneDeep(this.oldRow||C)}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=S.cloneDeep(e)},deep:!0}},methods:{...v(f,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:C},Se={key:1};function Ue(e,t,m,h,o,u){const i=b("AdminServerFolderPicker"),p=K,F=b("AdminRelationPicker");return c(),_(B,null,[m.oldRow?(c(),_("div",Se,g(m.oldRow.path),1)):(c(),V(i,{key:0,rules:o.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=n=>o.row.path=n)},null,8,["rules"])),l(I,{modelValue:o.row.events,"onUpdate:modelValue":t[1]||(t[1]=n=>o.row.events=n),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),l(I,{modelValue:o.row.poll,"onUpdate:modelValue":t[2]||(t[2]=n=>o.row.poll=n),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),l(p,{modelValue:o.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=n=>o.row.pollEvery=n),label:"Poll Every",disabled:!o.row.poll},null,8,["modelValue","disabled"]),l(F,{modelValue:o.row.groups,"onUpdate:modelValue":t[4]||(t[4]=n=>o.row.groups=n),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"])],64)}const He=k(Oe,[["render",Ue]]),Le={name:"AdminLibrariesTab",components:{AdminDeleteRowDialog:X,AdminFailedImportsPanel:Ve,AdminCreateUpdateDialog:J,RelationChips:z,ConfirmDialog:L,DateTimeColumn:W},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:se,mdiDatabaseSyncOutline:ae,mdiOpenInNew:$,AdminLibraryCreateUpdateInputs:ie(He),headers:[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"},{title:"Groups",key:"groups"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(ce,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(f,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?ne(e,(void 0).twentyFourHourTime):"",changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const h={[t]:m};this.updateRow("Library",e,h)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},poll(e){this.librarianTask("poll",`Poll Library ${e}`,e)},forcePoll(e){this.librarianTask("poll_force",`Force Poll Library ${e}`,e)}}},ze=e=>(j("data-v-4107b305"),e=e(),N(),e),$e={class:"tabHeader"},Be=ze(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function je(e,t,m,h,o,u){const i=b("AdminCreateUpdateDialog"),p=b("DateTimeColumn"),F=z,n=L,Y=b("AdminDeleteRowDialog"),G=b("AdminFailedImportsPanel");return c(),_("div",null,[r("header",$e,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(Z,{class:"adminTable","fixed-header":"","item-value":"pk",headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[Be]),"item.events":s(({item:a})=>[l(U,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(U,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:me({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(p,{dttm:a.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:a})=>[l(F,{pks:a.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:a})=>[l(n,{icon:o.mdiDatabaseClockOutline,"title-text":"Poll for updated comics","object-name":a.path,"confirm-text":"Poll Library",size:"small",density:"compact",onConfirm:q=>u.poll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(n,{icon:o.mdiDatabaseSyncOutline,"title-text":"Force update every comic","object-name":a.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:q=>u.forcePoll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(i,{table:"Library","old-row":a,inputs:o.AdminLibraryCreateUpdateInputs,"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs"]),l(Y,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(de,null,{default:s(()=>[l(G)]),_:1})])}const rt=k(Le,[["render",je],["__scopeId","data-v-4107b305"]]);export{rt as default};
1
+ import{_ as L}from"./confirm-dialog-B1cfqAyU.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-BE-h8GKr.js";import{cp as ee,a$ as $,M as w,t as f,a9 as te,_ as k,Q as b,R as c,ay as _,L as l,P as s,aD as r,ae as g,O as V,aa as d,ad as T,aB as A,al as B,az as oe,aH as j,aI as N,am as P,k as x,N as v,ag as le,aX as re,cq as se,cr as ae,aC as ie,b5 as ne,c9 as de,ab as me}from"./admin-drawer-panel-DBj4RoBP.js";import{D as W}from"./datetime-column-CO-AnRK_.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-C_YE4cHg.js";import{V as ue}from"./VTable-DyY94cHK.js";import{a as pe}from"./VSlideGroup-Bvm3Umct.js";import{a as S,u as ce}from"./main-GviMPb0H.js";import{V as he}from"./VCombobox-BU9dgajj.js";import{V as I}from"./VCheckbox-DLjoJtr0.js";import{V as U}from"./VCheckboxBtn-rYCIroIq.js";import"./confirm-footer-BU8uNZMI.js";import"./VSelect-Cu3Kzlmc.js";import"./VSelectionControl-CwCfBXjB.js";import"./filter-Bj65Z2NW.js";const fe={name:"AdminFailedImportsPanel",components:{DateTimeColumn:W},data(){return{mdiBookAlert:ee,mdiOpenInNew:$}},computed:{...w(f,["failedImports"]),...te(f,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},y=e=>(j("data-v-bc6470a2"),e=e(),N(),e),be={key:0,id:"failedImports"},_e=y(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),ye={class:"dateCol"},ge=y(()=>r("h4",null,"Failed Imports Help",-1)),we=y(()=>r("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),ke=y(()=>r("h4",null,"Fixing comics",-1)),Fe=y(()=>r("p",null,[d(" Try using the zip fixer to fix comics: "),r("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),r("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),r("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),r("code",null,"zip -FF"),d(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),ve=y(()=>r("h4",null,"Reporting Issues",-1)),Pe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Ie=y(()=>r("code",null,"config/logs/codex.log",-1));function Ce(e,t,m,h,o,u){const i=b("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(c(),_("div",be,[l(O,null,{default:s(()=>[l(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=p=>e.unseenFailedImports=!1)},{default:s(()=>[l(E,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(c(),V(T,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),l(R,null,{default:s(()=>[l(ue,{class:"highlight-table"},{default:s(()=>[_e,r("tbody",null,[(c(!0),_(B,null,oe(e.failedImports,p=>(c(),_("tr",{key:`fi:${p.path}`},[r("td",null,g(p.path),1),r("td",ye,[l(i,{dttm:p.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(O,null,{default:s(()=>[l(D,{id:"failedImportsHelp"},{default:s(()=>[l(E,null,{default:s(()=>[ge]),_:1}),l(R,null,{default:s(()=>[we,ke,Fe,ve,r("p",null,[d(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an "),r("a",Pe,[d("Issue Report"),l(T,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Ie,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const Ve=k(fe,[["render",Ce],["__scopeId","data-v-bc6470a2"]]),Te={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function Ae(e,t,m,h,o,u){return c(),V(pe,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const K=k(Te,[["render",Ae]]),xe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(f,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(x,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...v(f,["clearFolders","loadFolders"]),...v(x,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let h="";return this.formErrors.length===0&&(this.path=h=this.rootFolder),this.$emit("change",h)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},De={id:"folderPicker"};function Ee(e,t,m,h,o,u){return c(),_("div",De,[l(he,P({modelValue:o.path,"onUpdate:modelValue":t[0]||(t[0]=i=>o.path=i),menu:o.menuOpen,"onUpdate:menu":t[1]||(t[1]=i=>o.menuOpen=i)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:u.onBlur,"onClick:clear":u.onClear,onKeydown:re(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:p})=>[l(le,P(p,{title:i.title,value:i.value,onClick:F=>u.onItemClick(i.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),l(I,{modelValue:o.showHidden,"onUpdate:modelValue":t[2]||(t[2]=i=>o.showHidden=i),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const Re=k(xe,[["render",Ee],["__scopeId","data-v-3cf2705f"]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const C={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(C);const H=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Oe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:Q,AdminServerFolderPicker:Re,TimeTextField:K},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(H(t,e))return"Path is a child of an existing library";if(H(e,t))return"Path is a parent of an existing library"}return!0}]},row:S.cloneDeep(this.oldRow||C)}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=S.cloneDeep(e)},deep:!0}},methods:{...v(f,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:C},Se={key:1};function Ue(e,t,m,h,o,u){const i=b("AdminServerFolderPicker"),p=K,F=b("AdminRelationPicker");return c(),_(B,null,[m.oldRow?(c(),_("div",Se,g(m.oldRow.path),1)):(c(),V(i,{key:0,rules:o.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=n=>o.row.path=n)},null,8,["rules"])),l(I,{modelValue:o.row.events,"onUpdate:modelValue":t[1]||(t[1]=n=>o.row.events=n),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),l(I,{modelValue:o.row.poll,"onUpdate:modelValue":t[2]||(t[2]=n=>o.row.poll=n),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),l(p,{modelValue:o.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=n=>o.row.pollEvery=n),label:"Poll Every",disabled:!o.row.poll},null,8,["modelValue","disabled"]),l(F,{modelValue:o.row.groups,"onUpdate:modelValue":t[4]||(t[4]=n=>o.row.groups=n),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"])],64)}const He=k(Oe,[["render",Ue]]),Le={name:"AdminLibrariesTab",components:{AdminDeleteRowDialog:X,AdminFailedImportsPanel:Ve,AdminCreateUpdateDialog:J,RelationChips:z,ConfirmDialog:L,DateTimeColumn:W},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:se,mdiDatabaseSyncOutline:ae,mdiOpenInNew:$,AdminLibraryCreateUpdateInputs:ie(He),headers:[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"},{title:"Groups",key:"groups"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(ce,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(f,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?ne(e,(void 0).twentyFourHourTime):"",changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const h={[t]:m};this.updateRow("Library",e,h)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},poll(e){this.librarianTask("poll",`Poll Library ${e}`,e)},forcePoll(e){this.librarianTask("poll_force",`Force Poll Library ${e}`,e)}}},ze=e=>(j("data-v-4107b305"),e=e(),N(),e),$e={class:"tabHeader"},Be=ze(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function je(e,t,m,h,o,u){const i=b("AdminCreateUpdateDialog"),p=b("DateTimeColumn"),F=z,n=L,Y=b("AdminDeleteRowDialog"),G=b("AdminFailedImportsPanel");return c(),_("div",null,[r("header",$e,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(Z,{class:"adminTable","fixed-header":"","item-value":"pk",headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[Be]),"item.events":s(({item:a})=>[l(U,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(U,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:me({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(p,{dttm:a.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:a})=>[l(F,{pks:a.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:a})=>[l(n,{icon:o.mdiDatabaseClockOutline,"title-text":"Poll for updated comics","object-name":a.path,"confirm-text":"Poll Library",size:"small",density:"compact",onConfirm:q=>u.poll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(n,{icon:o.mdiDatabaseSyncOutline,"title-text":"Force update every comic","object-name":a.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:q=>u.forcePoll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(i,{table:"Library","old-row":a,inputs:o.AdminLibraryCreateUpdateInputs,"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs"]),l(Y,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(de,null,{default:s(()=>[l(G)]),_:1})])}const rt=k(Le,[["render",je],["__scopeId","data-v-4107b305"]]);export{rt as default};
@@ -1 +1 @@
1
- import{_ as L}from"./confirm-dialog-GFYaCGnF.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-Crv_Nkla.js";import{cp as ee,a$ as $,M as w,t as f,a9 as te,_ as k,Q as b,R as c,ay as _,L as l,P as s,aD as r,ae as g,O as V,aa as d,ad as T,aB as A,al as B,az as oe,aH as j,aI as N,am as P,k as x,N as v,ag as le,aX as re,cq as se,cr as ae,aC as ie,b5 as ne,c9 as de,ab as me}from"./admin-drawer-panel-Bw6sRseo.js";import{D as W}from"./datetime-column-B1V0cYaU.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-DLEh10A9.js";import{V as ue}from"./VTable-Cs7OqRnv.js";import{a as pe}from"./VSlideGroup-Lzhz1ElM.js";import{a as S,u as ce}from"./main-D3DHt-EP.js";import{V as he}from"./VCombobox-C005saY4.js";import{V as I}from"./VCheckbox-DY1Y0qsq.js";import{V as U}from"./VCheckboxBtn-DoFCs6Y9.js";import"./confirm-footer-BZ5z6tl1.js";import"./VSelect-CZ9zKx45.js";import"./VSelectionControl-DmGWAnkU.js";import"./filter-D8l3lzk8.js";const fe={name:"AdminFailedImportsPanel",components:{DateTimeColumn:W},data(){return{mdiBookAlert:ee,mdiOpenInNew:$}},computed:{...w(f,["failedImports"]),...te(f,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},y=e=>(j("data-v-bc6470a2"),e=e(),N(),e),be={key:0,id:"failedImports"},_e=y(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),ye={class:"dateCol"},ge=y(()=>r("h4",null,"Failed Imports Help",-1)),we=y(()=>r("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),ke=y(()=>r("h4",null,"Fixing comics",-1)),Fe=y(()=>r("p",null,[d(" Try using the zip fixer to fix comics: "),r("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),r("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),r("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),r("code",null,"zip -FF"),d(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),ve=y(()=>r("h4",null,"Reporting Issues",-1)),Pe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Ie=y(()=>r("code",null,"config/logs/codex.log",-1));function Ce(e,t,m,h,o,u){const i=b("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(c(),_("div",be,[l(O,null,{default:s(()=>[l(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=p=>e.unseenFailedImports=!1)},{default:s(()=>[l(E,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(c(),V(T,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),l(R,null,{default:s(()=>[l(ue,{class:"highlight-table"},{default:s(()=>[_e,r("tbody",null,[(c(!0),_(B,null,oe(e.failedImports,p=>(c(),_("tr",{key:`fi:${p.path}`},[r("td",null,g(p.path),1),r("td",ye,[l(i,{dttm:p.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(O,null,{default:s(()=>[l(D,{id:"failedImportsHelp"},{default:s(()=>[l(E,null,{default:s(()=>[ge]),_:1}),l(R,null,{default:s(()=>[we,ke,Fe,ve,r("p",null,[d(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an "),r("a",Pe,[d("Issue Report"),l(T,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Ie,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const Ve=k(fe,[["render",Ce],["__scopeId","data-v-bc6470a2"]]),Te={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function Ae(e,t,m,h,o,u){return c(),V(pe,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const K=k(Te,[["render",Ae]]),xe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(f,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(x,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...v(f,["clearFolders","loadFolders"]),...v(x,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let h="";return this.formErrors.length===0&&(this.path=h=this.rootFolder),this.$emit("change",h)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},De={id:"folderPicker"};function Ee(e,t,m,h,o,u){return c(),_("div",De,[l(he,P({modelValue:o.path,"onUpdate:modelValue":t[0]||(t[0]=i=>o.path=i),menu:o.menuOpen,"onUpdate:menu":t[1]||(t[1]=i=>o.menuOpen=i)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:u.onBlur,"onClick:clear":u.onClear,onKeydown:re(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:p})=>[l(le,P(p,{title:i.title,value:i.value,onClick:F=>u.onItemClick(i.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),l(I,{modelValue:o.showHidden,"onUpdate:modelValue":t[2]||(t[2]=i=>o.showHidden=i),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const Re=k(xe,[["render",Ee],["__scopeId","data-v-3cf2705f"]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const C={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(C);const H=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Oe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:Q,AdminServerFolderPicker:Re,TimeTextField:K},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(H(t,e))return"Path is a child of an existing library";if(H(e,t))return"Path is a parent of an existing library"}return!0}]},row:S.cloneDeep(this.oldRow||C)}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=S.cloneDeep(e)},deep:!0}},methods:{...v(f,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:C},Se={key:1};function Ue(e,t,m,h,o,u){const i=b("AdminServerFolderPicker"),p=K,F=b("AdminRelationPicker");return c(),_(B,null,[m.oldRow?(c(),_("div",Se,g(m.oldRow.path),1)):(c(),V(i,{key:0,rules:o.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=n=>o.row.path=n)},null,8,["rules"])),l(I,{modelValue:o.row.events,"onUpdate:modelValue":t[1]||(t[1]=n=>o.row.events=n),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),l(I,{modelValue:o.row.poll,"onUpdate:modelValue":t[2]||(t[2]=n=>o.row.poll=n),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),l(p,{modelValue:o.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=n=>o.row.pollEvery=n),label:"Poll Every",disabled:!o.row.poll},null,8,["modelValue","disabled"]),l(F,{modelValue:o.row.groups,"onUpdate:modelValue":t[4]||(t[4]=n=>o.row.groups=n),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"])],64)}const He=k(Oe,[["render",Ue]]),Le={name:"AdminLibrariesTab",components:{AdminDeleteRowDialog:X,AdminFailedImportsPanel:Ve,AdminCreateUpdateDialog:J,RelationChips:z,ConfirmDialog:L,DateTimeColumn:W},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:se,mdiDatabaseSyncOutline:ae,mdiOpenInNew:$,AdminLibraryCreateUpdateInputs:ie(He),headers:[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"},{title:"Groups",key:"groups"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(ce,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(f,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?ne(e,(void 0).twentyFourHourTime):"",changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const h={[t]:m};this.updateRow("Library",e,h)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},poll(e){this.librarianTask("poll",`Poll Library ${e}`,e)},forcePoll(e){this.librarianTask("poll_force",`Force Poll Library ${e}`,e)}}},ze=e=>(j("data-v-4107b305"),e=e(),N(),e),$e={class:"tabHeader"},Be=ze(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function je(e,t,m,h,o,u){const i=b("AdminCreateUpdateDialog"),p=b("DateTimeColumn"),F=z,n=L,Y=b("AdminDeleteRowDialog"),G=b("AdminFailedImportsPanel");return c(),_("div",null,[r("header",$e,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(Z,{class:"adminTable","fixed-header":"","item-value":"pk",headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[Be]),"item.events":s(({item:a})=>[l(U,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(U,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:me({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(p,{dttm:a.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:a})=>[l(F,{pks:a.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:a})=>[l(n,{icon:o.mdiDatabaseClockOutline,"title-text":"Poll for updated comics","object-name":a.path,"confirm-text":"Poll Library",size:"small",density:"compact",onConfirm:q=>u.poll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(n,{icon:o.mdiDatabaseSyncOutline,"title-text":"Force update every comic","object-name":a.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:q=>u.forcePoll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(i,{table:"Library","old-row":a,inputs:o.AdminLibraryCreateUpdateInputs,"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs"]),l(Y,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(de,null,{default:s(()=>[l(G)]),_:1})])}const rt=k(Le,[["render",je],["__scopeId","data-v-4107b305"]]);export{rt as default};
1
+ import{_ as L}from"./confirm-dialog-B1cfqAyU.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-BE-h8GKr.js";import{cp as ee,a$ as $,M as w,t as f,a9 as te,_ as k,Q as b,R as c,ay as _,L as l,P as s,aD as r,ae as g,O as V,aa as d,ad as T,aB as A,al as B,az as oe,aH as j,aI as N,am as P,k as x,N as v,ag as le,aX as re,cq as se,cr as ae,aC as ie,b5 as ne,c9 as de,ab as me}from"./admin-drawer-panel-DBj4RoBP.js";import{D as W}from"./datetime-column-CO-AnRK_.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-C_YE4cHg.js";import{V as ue}from"./VTable-DyY94cHK.js";import{a as pe}from"./VSlideGroup-Bvm3Umct.js";import{a as S,u as ce}from"./main-GviMPb0H.js";import{V as he}from"./VCombobox-BU9dgajj.js";import{V as I}from"./VCheckbox-DLjoJtr0.js";import{V as U}from"./VCheckboxBtn-rYCIroIq.js";import"./confirm-footer-BU8uNZMI.js";import"./VSelect-Cu3Kzlmc.js";import"./VSelectionControl-CwCfBXjB.js";import"./filter-Bj65Z2NW.js";const fe={name:"AdminFailedImportsPanel",components:{DateTimeColumn:W},data(){return{mdiBookAlert:ee,mdiOpenInNew:$}},computed:{...w(f,["failedImports"]),...te(f,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},y=e=>(j("data-v-bc6470a2"),e=e(),N(),e),be={key:0,id:"failedImports"},_e=y(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),ye={class:"dateCol"},ge=y(()=>r("h4",null,"Failed Imports Help",-1)),we=y(()=>r("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),ke=y(()=>r("h4",null,"Fixing comics",-1)),Fe=y(()=>r("p",null,[d(" Try using the zip fixer to fix comics: "),r("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),r("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),r("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),r("code",null,"zip -FF"),d(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),ve=y(()=>r("h4",null,"Reporting Issues",-1)),Pe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Ie=y(()=>r("code",null,"config/logs/codex.log",-1));function Ce(e,t,m,h,o,u){const i=b("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(c(),_("div",be,[l(O,null,{default:s(()=>[l(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=p=>e.unseenFailedImports=!1)},{default:s(()=>[l(E,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(c(),V(T,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),l(R,null,{default:s(()=>[l(ue,{class:"highlight-table"},{default:s(()=>[_e,r("tbody",null,[(c(!0),_(B,null,oe(e.failedImports,p=>(c(),_("tr",{key:`fi:${p.path}`},[r("td",null,g(p.path),1),r("td",ye,[l(i,{dttm:p.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(O,null,{default:s(()=>[l(D,{id:"failedImportsHelp"},{default:s(()=>[l(E,null,{default:s(()=>[ge]),_:1}),l(R,null,{default:s(()=>[we,ke,Fe,ve,r("p",null,[d(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an "),r("a",Pe,[d("Issue Report"),l(T,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Ie,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const Ve=k(fe,[["render",Ce],["__scopeId","data-v-bc6470a2"]]),Te={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function Ae(e,t,m,h,o,u){return c(),V(pe,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const K=k(Te,[["render",Ae]]),xe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(f,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(x,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...v(f,["clearFolders","loadFolders"]),...v(x,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let h="";return this.formErrors.length===0&&(this.path=h=this.rootFolder),this.$emit("change",h)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},De={id:"folderPicker"};function Ee(e,t,m,h,o,u){return c(),_("div",De,[l(he,P({modelValue:o.path,"onUpdate:modelValue":t[0]||(t[0]=i=>o.path=i),menu:o.menuOpen,"onUpdate:menu":t[1]||(t[1]=i=>o.menuOpen=i)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:u.onBlur,"onClick:clear":u.onClear,onKeydown:re(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:p})=>[l(le,P(p,{title:i.title,value:i.value,onClick:F=>u.onItemClick(i.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),l(I,{modelValue:o.showHidden,"onUpdate:modelValue":t[2]||(t[2]=i=>o.showHidden=i),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const Re=k(xe,[["render",Ee],["__scopeId","data-v-3cf2705f"]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const C={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(C);const H=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Oe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:Q,AdminServerFolderPicker:Re,TimeTextField:K},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(H(t,e))return"Path is a child of an existing library";if(H(e,t))return"Path is a parent of an existing library"}return!0}]},row:S.cloneDeep(this.oldRow||C)}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=S.cloneDeep(e)},deep:!0}},methods:{...v(f,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:C},Se={key:1};function Ue(e,t,m,h,o,u){const i=b("AdminServerFolderPicker"),p=K,F=b("AdminRelationPicker");return c(),_(B,null,[m.oldRow?(c(),_("div",Se,g(m.oldRow.path),1)):(c(),V(i,{key:0,rules:o.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=n=>o.row.path=n)},null,8,["rules"])),l(I,{modelValue:o.row.events,"onUpdate:modelValue":t[1]||(t[1]=n=>o.row.events=n),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),l(I,{modelValue:o.row.poll,"onUpdate:modelValue":t[2]||(t[2]=n=>o.row.poll=n),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),l(p,{modelValue:o.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=n=>o.row.pollEvery=n),label:"Poll Every",disabled:!o.row.poll},null,8,["modelValue","disabled"]),l(F,{modelValue:o.row.groups,"onUpdate:modelValue":t[4]||(t[4]=n=>o.row.groups=n),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"])],64)}const He=k(Oe,[["render",Ue]]),Le={name:"AdminLibrariesTab",components:{AdminDeleteRowDialog:X,AdminFailedImportsPanel:Ve,AdminCreateUpdateDialog:J,RelationChips:z,ConfirmDialog:L,DateTimeColumn:W},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:se,mdiDatabaseSyncOutline:ae,mdiOpenInNew:$,AdminLibraryCreateUpdateInputs:ie(He),headers:[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"},{title:"Groups",key:"groups"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...w(f,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(ce,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(f,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?ne(e,(void 0).twentyFourHourTime):"",changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const h={[t]:m};this.updateRow("Library",e,h)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},poll(e){this.librarianTask("poll",`Poll Library ${e}`,e)},forcePoll(e){this.librarianTask("poll_force",`Force Poll Library ${e}`,e)}}},ze=e=>(j("data-v-4107b305"),e=e(),N(),e),$e={class:"tabHeader"},Be=ze(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function je(e,t,m,h,o,u){const i=b("AdminCreateUpdateDialog"),p=b("DateTimeColumn"),F=z,n=L,Y=b("AdminDeleteRowDialog"),G=b("AdminFailedImportsPanel");return c(),_("div",null,[r("header",$e,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(Z,{class:"adminTable","fixed-header":"","item-value":"pk",headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[Be]),"item.events":s(({item:a})=>[l(U,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(U,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:me({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(p,{dttm:a.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:a})=>[l(F,{pks:a.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:a})=>[l(n,{icon:o.mdiDatabaseClockOutline,"title-text":"Poll for updated comics","object-name":a.path,"confirm-text":"Poll Library",size:"small",density:"compact",onConfirm:q=>u.poll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(n,{icon:o.mdiDatabaseSyncOutline,"title-text":"Force update every comic","object-name":a.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:q=>u.forcePoll(a.pk)},null,8,["icon","object-name","onConfirm"]),l(i,{table:"Library","old-row":a,inputs:o.AdminLibraryCreateUpdateInputs,"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs"]),l(Y,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(de,null,{default:s(()=>[l(G)]),_:1})])}const rt=k(Le,[["render",je],["__scopeId","data-v-4107b305"]]);export{rt as default};
@@ -1,14 +1,14 @@
1
1
  function __vite__mapDeps(indexes) {
2
2
  if (!__vite__mapDeps.viteFileDeps) {
3
- __vite__mapDeps.viteFileDeps = ["assets/admin-CuJft8Kj.js","assets/VToolbar-B45qQyqr.js","assets/admin-drawer-panel-Bw6sRseo.js","assets/admin-drawer-panel-DEYM8FWr.css","assets/index-DUjeNg4x.js","assets/confirm-footer-BZ5z6tl1.js","assets/confirm-footer-VFepxcJs.css","assets/change-password-dialog-Baa-qXXZ.js","assets/VSlideGroup-Lzhz1ElM.js","assets/VSelectionControl-DmGWAnkU.js","assets/VSelectionControl-BFq--28I.css","assets/VSlideGroup-rAVUcz72.css","assets/change-password-dialog-BRmvkNir.css","assets/VToolbar-BfNszTMd.css","assets/VWindowItem-CPdSif3f.js","assets/VWindowItem-ByIod57Y.css","assets/VMain-kAL6AAJw.js","assets/VMain-Byt37V4c.css","assets/admin-Df82-Qcj.css","assets/browser-9_vS5P8d.js","assets/metadata-dialog-CJcprkxf.js","assets/VSelect-CZ9zKx45.js","assets/VCheckboxBtn-DoFCs6Y9.js","assets/VSelect-udkSZJsa.css","assets/to-case-kUm8NPpW.js","assets/metadata-dialog-DPxDDFDy.css","assets/VCombobox-C005saY4.js","assets/filter-D8l3lzk8.js","assets/VCombobox-BksEr4D_.css","assets/VTable-Cs7OqRnv.js","assets/VTable-DflzroDq.css","assets/VCheckbox-DY1Y0qsq.js","assets/VCheckbox-CMKdyl0R.css","assets/confirm-dialog-GFYaCGnF.js","assets/confirm-dialog-BmhedLCx.css","assets/browser-C8SJwVGz.css","assets/http-error-5WhCKib6.js","assets/http-error-C25WdjWC.css","assets/reader-zEw6Fz0p.js","assets/VRadioGroup-Dxdhr9bL.js","assets/VRadioGroup-i2qP9Wu9.css","assets/VExpansionPanel-DLEh10A9.js","assets/VExpansionPanel-BgvW2DKJ.css","assets/reader-CG6zrLXl.css","assets/flag-tab-BDPywFPd.js","assets/flag-tab-BTiZcgOa.css","assets/user-tab-CUFrpTg3.js","assets/VDataTableVirtual-Crv_Nkla.js","assets/VDataTableVirtual-Cbj7IGxa.css","assets/datetime-column-B1V0cYaU.js","assets/datetime-column-BWWfvyhn.css","assets/group-tab-KqXSGW5M.js","assets/group-tab-3DXxSetf.css","assets/library-tab-BqoBlTet.js","assets/library-tab-DZKDtQ5v.css","assets/task-tab-BN1YRCAx.js","assets/task-tab-DoX9OA37.css","assets/stats-tab-qkgb7Upv.js","assets/stats-tab-BTZLMBCU.css"]
3
+ __vite__mapDeps.viteFileDeps = ["assets/admin-at7U-7a0.js","assets/VToolbar-BoY3uXeQ.js","assets/admin-drawer-panel-DBj4RoBP.js","assets/admin-drawer-panel-DEYM8FWr.css","assets/index-DUjeNg4x.js","assets/confirm-footer-BU8uNZMI.js","assets/confirm-footer-VFepxcJs.css","assets/change-password-dialog-B1VVvJN-.js","assets/VSlideGroup-Bvm3Umct.js","assets/VSelectionControl-CwCfBXjB.js","assets/VSelectionControl-BFq--28I.css","assets/VSlideGroup-rAVUcz72.css","assets/change-password-dialog-BRmvkNir.css","assets/VToolbar-BfNszTMd.css","assets/VWindowItem-dh08pIme.js","assets/VWindowItem-ByIod57Y.css","assets/VMain-BPAmFsfk.js","assets/VMain-Byt37V4c.css","assets/admin-Df82-Qcj.css","assets/browser-ufllJIOQ.js","assets/metadata-dialog-BoA0P4eW.js","assets/VSelect-Cu3Kzlmc.js","assets/VCheckboxBtn-rYCIroIq.js","assets/VSelect-udkSZJsa.css","assets/to-case-kUm8NPpW.js","assets/metadata-dialog-CyXPt4KJ.css","assets/VCombobox-BU9dgajj.js","assets/filter-Bj65Z2NW.js","assets/VCombobox-BksEr4D_.css","assets/VTable-DyY94cHK.js","assets/VTable-DflzroDq.css","assets/VCheckbox-DLjoJtr0.js","assets/VCheckbox-CMKdyl0R.css","assets/confirm-dialog-B1cfqAyU.js","assets/confirm-dialog-BmhedLCx.css","assets/browser-DK20egTr.css","assets/http-error-T3TJcTMI.js","assets/http-error-C25WdjWC.css","assets/reader-D0glX_SR.js","assets/VRadioGroup-BNX77cb6.js","assets/VRadioGroup-i2qP9Wu9.css","assets/VExpansionPanel-C_YE4cHg.js","assets/VExpansionPanel-BgvW2DKJ.css","assets/reader-CG6zrLXl.css","assets/flag-tab-9MO7gSJ6.js","assets/flag-tab-BTiZcgOa.css","assets/user-tab-Bh03ciSs.js","assets/VDataTableVirtual-BE-h8GKr.js","assets/VDataTableVirtual-Cbj7IGxa.css","assets/datetime-column-CO-AnRK_.js","assets/datetime-column-BWWfvyhn.css","assets/group-tab-DJ1JSrhB.js","assets/group-tab-3DXxSetf.css","assets/library-tab-CFVsD5Op.js","assets/library-tab-DZKDtQ5v.css","assets/task-tab-ChM8mr0J.js","assets/task-tab-DoX9OA37.css","assets/stats-tab-6wQAa1PR.js","assets/stats-tab-BTZLMBCU.css"]
4
4
  }
5
5
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
6
6
  }
7
- import{n as Ji,v as K1,i as Ot,u as cn,r as to,w as xf,a as Qi,g as Sf,o as Ef,b as bf,c as Lf,s as Cn,d as j1,e as Af,f as Gt,h as Ae,j as Tf,p as nr,H as Dn,k as no,l as wf,m as $i,q as z1,t as Gi,x as uo,y as k1,z as _r,A as Rf,B as Z1,C as Of,D as Y1,E as X1,F as J1,G as Q1,I as _1,J as q1,K as e0,L as Ui,M as Mu,N as t0,_ as n0,O as r0,P as o0,Q as i0,R as s0,S as a0,T as Du,U as fo,V as ar,W as u0,X as f0,Y as l0,Z as c0,$ as d0,a0 as h0,a1 as p0,a2 as v0,a3 as Hu,a4 as Fu,a5 as Bu,a6 as Wu,a7 as g0,a8 as m0}from"./admin-drawer-panel-Bw6sRseo.js";function Vi(s,o={},n){for(const i in s){const u=s[i],f=n?`${n}:${i}`:i;typeof u=="object"&&u!==null?Vi(u,o,f):typeof u=="function"&&(o[f]=u)}return o}const y0={run:s=>s()},x0=()=>y0,If=typeof console.createTask<"u"?console.createTask:x0;function S0(s,o){const n=o.shift(),i=If(n);return s.reduce((u,f)=>u.then(()=>i.run(()=>f(...o))),Promise.resolve())}function E0(s,o){const n=o.shift(),i=If(n);return Promise.all(s.map(u=>i.run(()=>u(...o))))}function Di(s,o){for(const n of[...s])n(o)}class b0{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(o,n,i={}){if(!o||typeof n!="function")return()=>{};const u=o;let f;for(;this._deprecatedHooks[o];)f=this._deprecatedHooks[o],o=f.to;if(f&&!i.allowDeprecated){let l=f.message;l||(l=`${u} hook has been deprecated`+(f.to?`, please use ${f.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(l)||(console.warn(l),this._deprecatedMessages.add(l))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+o.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[o]=this._hooks[o]||[],this._hooks[o].push(n),()=>{n&&(this.removeHook(o,n),n=void 0)}}hookOnce(o,n){let i,u=(...f)=>(typeof i=="function"&&i(),i=void 0,u=void 0,n(...f));return i=this.hook(o,u),i}removeHook(o,n){if(this._hooks[o]){const i=this._hooks[o].indexOf(n);i!==-1&&this._hooks[o].splice(i,1),this._hooks[o].length===0&&delete this._hooks[o]}}deprecateHook(o,n){this._deprecatedHooks[o]=typeof n=="string"?{to:n}:n;const i=this._hooks[o]||[];delete this._hooks[o];for(const u of i)this.hook(o,u)}deprecateHooks(o){Object.assign(this._deprecatedHooks,o);for(const n in o)this.deprecateHook(n,o[n])}addHooks(o){const n=Vi(o),i=Object.keys(n).map(u=>this.hook(u,n[u]));return()=>{for(const u of i.splice(0,i.length))u()}}removeHooks(o){const n=Vi(o);for(const i in n)this.removeHook(i,n[i])}removeAllHooks(){for(const o in this._hooks)delete this._hooks[o]}callHook(o,...n){return n.unshift(o),this.callHookWith(S0,o,...n)}callHookParallel(o,...n){return n.unshift(o),this.callHookWith(E0,o,...n)}callHookWith(o,n,...i){const u=this._before||this._after?{name:n,args:i,context:{}}:void 0;this._before&&Di(this._before,u);const f=o(n in this._hooks?[...this._hooks[n]]:[],i);return f instanceof Promise?f.finally(()=>{this._after&&u&&Di(this._after,u)}):(this._after&&u&&Di(this._after,u),f)}beforeEach(o){return this._before=this._before||[],this._before.push(o),()=>{if(this._before!==void 0){const n=this._before.indexOf(o);n!==-1&&this._before.splice(n,1)}}}afterEach(o){return this._after=this._after||[],this._after.push(o),()=>{if(this._after!==void 0){const n=this._after.indexOf(o);n!==-1&&this._after.splice(n,1)}}}}function L0(){return new b0}function A0(s){return Array.isArray(s)?s:[s]}const T0=["title","titleTemplate","script","style","noscript"],qr=["base","meta","link","style","script","noscript"],w0=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],R0=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Cf=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],O0=typeof window<"u";function _i(s){let o=9;for(let n=0;n<s.length;)o=Math.imul(o^s.charCodeAt(n++),9**9);return((o^o>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Nu(s){return s._h||_i(s._d?s._d:`${s.tag}:${s.textContent||s.innerHTML||""}:${Object.entries(s.props).map(([o,n])=>`${o}:${String(n)}`).join(",")}`)}function Pf(s,o){const{props:n,tag:i}=s;if(R0.includes(i))return i;if(i==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const u=["id"];i==="meta"&&u.push("name","property","http-equiv");for(const f of u)if(typeof n[f]<"u"){const l=String(n[f]);return o&&!o(l)?!1:`${i}:${f}:${l}`}return!1}function $u(s,o){return s==null?o||null:typeof s=="function"?s(o):s}async function I0(s,o,n){const i={tag:s,props:await Mf(typeof o=="object"&&typeof o!="function"&&!(o instanceof Promise)?{...o}:{[["script","noscript","style"].includes(s)?"innerHTML":"textContent"]:o},["templateParams","titleTemplate"].includes(s))};return Cf.forEach(u=>{const f=typeof i.props[u]<"u"?i.props[u]:n[u];typeof f<"u"&&((!["innerHTML","textContent","children"].includes(u)||T0.includes(i.tag))&&(i[u==="children"?"innerHTML":u]=f),delete i.props[u])}),i.props.body&&(i.tagPosition="bodyClose",delete i.props.body),i.tag==="script"&&typeof i.innerHTML=="object"&&(i.innerHTML=JSON.stringify(i.innerHTML),i.props.type=i.props.type||"application/json"),Array.isArray(i.props.content)?i.props.content.map(u=>({...i,props:{...i.props,content:u}})):i}function C0(s,o){const n=s==="class"?" ":";";return typeof o=="object"&&!Array.isArray(o)&&(o=Object.entries(o).filter(([,i])=>i).map(([i,u])=>s==="style"?`${i}:${u}`:i)),(Array.isArray(o)?o.join(n):o).split(n).filter(i=>i.trim()).filter(Boolean).join(n)}async function Mf(s,o){for(const n of Object.keys(s)){if(["class","style"].includes(n)){s[n]=C0(n,s[n]);continue}if(s[n]instanceof Promise&&(s[n]=await s[n]),!o&&!Cf.includes(n)){const i=String(s[n]),u=n.startsWith("data-");i==="true"||i===""?s[n]=u?"true":!0:s[n]||(u&&i==="false"?s[n]="false":delete s[n])}}return s}const P0=10;async function M0(s){const o=[];return Object.entries(s.resolvedInput).filter(([n,i])=>typeof i<"u"&&w0.includes(n)).forEach(([n,i])=>{const u=A0(i);o.push(...u.map(f=>I0(n,f,s)).flat())}),(await Promise.all(o)).flat().filter(Boolean).map((n,i)=>(n._e=s._i,s.mode&&(n._m=s.mode),n._p=(s._i<<P0)+i,n))}const Gu={base:-10,title:10},Uu={critical:-80,high:-10,low:20};function ro(s){let o=100;const n=s.tagPriority;return typeof n=="number"?n:(s.tag==="meta"?(s.props["http-equiv"]==="content-security-policy"&&(o=-30),s.props.charset&&(o=-20),s.props.name==="viewport"&&(o=-15)):s.tag==="link"&&s.props.rel==="preconnect"?o=20:s.tag in Gu&&(o=Gu[s.tag]),typeof n=="string"&&n in Uu?o+Uu[n]:o)}const D0=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],Hi=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function eo(s,o,n){if(typeof s!="string"||!s.includes("%"))return s;function i(l){let v;return["s","pageTitle"].includes(l)?v=o.pageTitle:l.includes(".")?v=l.split(".").reduce((d,m)=>d&&d[m]||void 0,o):v=o[l],typeof v<"u"?(v||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(l=>{const v=i(l.slice(1));typeof v=="string"&&(s=s.replace(new RegExp(`\\${l}(\\W|$)`,"g"),(d,m)=>`${v}${m}`).trim())}),s.includes(Qt)&&(s.endsWith(Qt)&&(s=s.slice(0,-Qt.length).trim()),s.startsWith(Qt)&&(s=s.slice(Qt.length).trim()),s=s.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),s=eo(s,{separator:n},n)),s}async function H0(s,o={}){var p;const n=o.document||s.resolvedOptions.document;if(!n||!s.dirty)return;const i={shouldRender:!0,tags:[]};if(await s.hooks.callHook("dom:beforeRender",i),!i.shouldRender)return;const u=(await s.resolveTags()).map(x=>({tag:x,id:qr.includes(x.tag)?Nu(x):x.tag,shouldRender:!0}));let f=s._dom;if(!f){f={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const x of["body","head"]){const y=(p=n[x])==null?void 0:p.children,E=[];for(const L of[...y].filter(A=>qr.includes(A.tagName.toLowerCase()))){const A={tag:L.tagName.toLowerCase(),props:await Mf(L.getAttributeNames().reduce((O,P)=>({...O,[P]:L.getAttribute(P)}),{})),innerHTML:L.innerHTML};let T=1,I=Pf(A);for(;I&&E.find(O=>O._d===I);)I=`${I}:${T++}`;A._d=I||void 0,E.push(A),f.elMap[L.getAttribute("data-hid")||Nu(A)]=L}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function l(x,y,E){const L=`${x}:${y}`;f.sideEffects[L]=E,delete f.pendingSideEffects[L]}function v({id:x,$el:y,tag:E}){const L=E.tag.endsWith("Attrs");f.elMap[x]=y,L||(["textContent","innerHTML"].forEach(A=>{E[A]&&E[A]!==y[A]&&(y[A]=E[A])}),l(x,"el",()=>{var A;(A=f.elMap[x])==null||A.remove(),delete f.elMap[x]}));for(const[A,T]of Object.entries(E._eventHandlers||{}))y.getAttribute(`data-${A}`)!==""&&((E.tag==="bodyAttrs"?n.defaultView:y).addEventListener(A.replace("on",""),T.bind(y)),y.setAttribute(`data-${A}`,""));Object.entries(E.props).forEach(([A,T])=>{const I=`attr:${A}`;if(A==="class")for(const O of(T||"").split(" ").filter(Boolean))L&&l(x,`${I}:${O}`,()=>y.classList.remove(O)),!y.classList.contains(O)&&y.classList.add(O);else if(A==="style")for(const O of(T||"").split(";").filter(Boolean)){const[P,...$]=O.split(":").map(j=>j.trim());l(x,`${I}:${O}:${P}`,()=>{y.style.removeProperty(P)}),y.style.setProperty(P,$.join(":"))}else y.getAttribute(A)!==T&&y.setAttribute(A,T===!0?"":String(T)),L&&l(x,I,()=>y.removeAttribute(A))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const x of u){const{tag:y,shouldRender:E,id:L}=x;if(E){if(y.tag==="title"){n.title=y.textContent;continue}x.$el=x.$el||f.elMap[L],x.$el?v(x):qr.includes(y.tag)&&d.push(x)}}for(const x of d){const y=x.tag.tagPosition||"head";x.$el=n.createElement(x.tag.tag),v(x),m[y]=m[y]||n.createDocumentFragment(),m[y].appendChild(x.$el)}for(const x of u)await s.hooks.callHook("dom:renderTag",x,n,l);m.head&&n.head.appendChild(m.head),m.bodyOpen&&n.body.insertBefore(m.bodyOpen,n.body.firstChild),m.bodyClose&&n.body.appendChild(m.bodyClose),Object.values(f.pendingSideEffects).forEach(x=>x()),s._dom=f,s.dirty=!1,await s.hooks.callHook("dom:rendered",{renders:u})}async function F0(s,o={}){const n=o.delayFn||(i=>setTimeout(i,10));return s._domUpdatePromise=s._domUpdatePromise||new Promise(i=>n(async()=>{await H0(s,o),delete s._domUpdatePromise,i()}))}function B0(s){return o=>{var i,u;const n=((u=(i=o.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:u.innerHTML)||!1;return n&&o.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(f){F0(f,s)}}}}}const W0=["templateParams","htmlAttrs","bodyAttrs"],N0={hooks:{"tag:normalise":function({tag:s}){["hid","vmid","key"].forEach(i=>{s.props[i]&&(s.key=s.props[i],delete s.props[i])});const n=Pf(s)||(s.key?`${s.tag}:${s.key}`:!1);n&&(s._d=n)},"tags:resolve":function(s){const o={};s.tags.forEach(i=>{const u=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,f=o[u];if(f){let v=i==null?void 0:i.tagDuplicateStrategy;if(!v&&W0.includes(i.tag)&&(v="merge"),v==="merge"){const d=f.props;["class","style"].forEach(m=>{d[m]&&(i.props[m]?(m==="style"&&!d[m].endsWith(";")&&(d[m]+=";"),i.props[m]=`${d[m]} ${i.props[m]}`):i.props[m]=d[m])}),o[u].props={...d,...i.props};return}else if(i._e===f._e){f._duped=f._duped||[],i._d=`${f._d}:${f._duped.length+1}`,f._duped.push(i);return}else if(ro(i)>ro(f))return}const l=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(qr.includes(i.tag)&&l===0){delete o[u];return}o[u]=i});const n=[];Object.values(o).forEach(i=>{const u=i._duped;delete i._duped,n.push(i),u&&n.push(...u)}),s.tags=n,s.tags=s.tags.filter(i=>!(i.tag==="meta"&&(i.props.name||i.props.property)&&!i.props.content))}}},$0={mode:"server",hooks:{"tags:resolve":function(s){const o={};s.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{o[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(o).length&&s.tags.push({tag:"script",innerHTML:JSON.stringify(o),props:{id:"unhead:payload",type:"application/json"}})}}},G0=["script","link","bodyAttrs"],U0=s=>({hooks:{"tags:resolve":function(o){for(const n of o.tags.filter(i=>G0.includes(i.tag)))Object.entries(n.props).forEach(([i,u])=>{i.startsWith("on")&&typeof u=="function"&&(s.ssr&&Hi.includes(i)?(n.props[i]=`this.dataset.${i} = true`,n.props["data-unhead-events"]=""):delete n.props[i],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[i]=u)}),s.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||_i(n.props.src||n.props.href))},"dom:renderTag":function(o){const n=o.$el;if(!(n!=null&&n.dataset)||!("unheadEvents"in n.dataset))return;delete n.dataset.unheadEvents;const i=u=>{var f,l;return(l=(f=o.tag._eventHandlers)==null?void 0:f[u])==null?void 0:l.call(o.$el,new Event(u.replace("on","")))};for(const u of Object.keys(n.dataset).filter(f=>Hi.includes(f)))i(u);typeof MutationObserver<"u"&&new MutationObserver(f=>{f.filter(l=>l.attributeName&&Hi.includes(l.attributeName.replace("data-",""))).map(l=>l.attributeName.replace("data-","")).map(i)}).observe(o.$el,{attributes:!0})}}}),V0=["link","style","script","noscript"],K0={hooks:{"tag:normalise":({tag:s})=>{s.key&&V0.includes(s.tag)&&(s.props["data-hid"]=s._h=_i(s.key))}}},j0={hooks:{"tags:resolve":s=>{const o=n=>{var i;return(i=s.tags.find(u=>u._d===n))==null?void 0:i._p};for(const{prefix:n,offset:i}of D0)for(const u of s.tags.filter(f=>typeof f.tagPriority=="string"&&f.tagPriority.startsWith(n))){const f=o(u.tagPriority.replace(n,""));typeof f<"u"&&(u._p=f+i)}s.tags.sort((n,i)=>n._p-i._p).sort((n,i)=>ro(n)-ro(i))}}},z0={meta:"content",link:"href",htmlAttrs:"lang"},k0=s=>({hooks:{"tags:resolve":o=>{var v;const{tags:n}=o,i=(v=n.find(d=>d.tag==="title"))==null?void 0:v.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},l=f.separator||"|";delete f.separator,f.pageTitle=eo(f.pageTitle||i||"",f,l);for(const d of n.filter(m=>m.processTemplateParams!==!1)){const m=z0[d.tag];m&&typeof d.props[m]=="string"?d.props[m]=eo(d.props[m],f,l):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(p=>{typeof d[p]=="string"&&(d[p]=eo(d[p],f,l))})}s._templateParams=f,s._separator=l,o.tags=n.filter(d=>d.tag!=="templateParams")}}}),Z0={hooks:{"tags:resolve":s=>{const{tags:o}=s;let n=o.findIndex(u=>u.tag==="titleTemplate");const i=o.findIndex(u=>u.tag==="title");if(i!==-1&&n!==-1){const u=$u(o[n].textContent,o[i].textContent);u!==null?o[i].textContent=u||o[i].textContent:delete o[i]}else if(n!==-1){const u=$u(o[n].textContent);u!==null&&(o[n].textContent=u,o[n].tag="title",n=-1)}n!==-1&&delete o[n],s.tags=o.filter(Boolean)}}},Y0={hooks:{"tags:afterResolve":function(s){for(const o of s.tags)typeof o.innerHTML=="string"&&(o.innerHTML&&["application/ld+json","application/json"].includes(o.props.type)?o.innerHTML=o.innerHTML.replace(/</g,"\\u003C"):o.innerHTML=o.innerHTML.replace(new RegExp(`</${o.tag}`,"g"),`<\\/${o.tag}`))}}};let Df;function X0(s={}){const o=J0(s);return o.use(B0()),Df=o}function Vu(s,o){return!s||s==="server"&&o||s==="client"&&!o}function J0(s={}){const o=L0();o.addHooks(s.hooks||{}),s.document=s.document||(O0?document:void 0);const n=!s.document,i=()=>{v.dirty=!0,o.callHook("entries:updated",v)};let u=0,f=[];const l=[],v={plugins:l,dirty:!1,resolvedOptions:s,hooks:o,headEntries(){return f},use(d){const m=typeof d=="function"?d(v):d;(!m.key||!l.some(p=>p.key===m.key))&&(l.push(m),Vu(m.mode,n)&&o.addHooks(m.hooks||{}))},push(d,m){m==null||delete m.head;const p={_i:u++,input:d,...m};return Vu(p.mode,n)&&(f.push(p),i()),{dispose(){f=f.filter(x=>x._i!==p._i),o.callHook("entries:updated",v),i()},patch(x){f=f.map(y=>(y._i===p._i&&(y.input=p.input=x),y)),i()}}},async resolveTags(){const d={tags:[],entries:[...f]};await o.callHook("entries:resolve",d);for(const m of d.entries){const p=m.resolvedInput||m.input;if(m.resolvedInput=await(m.transform?m.transform(p):p),m.resolvedInput)for(const x of await M0(m)){const y={tag:x,entry:m,resolvedOptions:v.resolvedOptions};await o.callHook("tag:normalise",y),d.tags.push(y.tag)}}return await o.callHook("tags:beforeResolve",d),await o.callHook("tags:resolve",d),await o.callHook("tags:afterResolve",d),d.tags},ssr:n};return[N0,$0,U0,K0,j0,k0,Z0,Y0,...(s==null?void 0:s.plugins)||[]].forEach(d=>v.use(d)),v.hooks.callHook("init",v),v}function Q0(){return Df}const Hf=K1.startsWith("3");function _0(s){return typeof s=="function"?s():cn(s)}function oo(s,o=""){if(s instanceof Promise)return s;const n=_0(s);return!s||!n?n:Array.isArray(n)?n.map(i=>oo(i,o)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,u])=>i==="titleTemplate"||i.startsWith("on")?[i,cn(u)]:[i,oo(u,i)])):n}const q0={hooks:{"entries:resolve":function(s){for(const o of s.entries)o.resolvedInput=oo(o.input)}}},Ff="usehead";function em(s){return{install(n){Hf&&(n.config.globalProperties.$unhead=s,n.config.globalProperties.$head=s,n.provide(Ff,s))}}.install}function tm(s={}){s.domDelayFn=s.domDelayFn||(n=>Ji(()=>setTimeout(()=>n(),0)));const o=X0(s);return o.use(q0),o.install=em(o),o}const Ku=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ju="__unhead_injection_handler__";function nm(){if(ju in Ku)return Ku[ju]();const s=Ot(Ff);return s||Q0()}function rm(s,o={}){const n=o.head||nm();if(n)return n.ssr?n.push(s,o):om(n,s,o)}function om(s,o,n={}){const i=to(!1),u=to({});xf(()=>{u.value=i.value?{}:oo(o)});const f=s.push(u.value,n);return Qi(u,v=>{f.patch(v)}),Sf()&&(Ef(()=>{f.dispose()}),bf(()=>{i.value=!0}),Lf(()=>{i.value=!1})),f}const im={created(){let s=!1;if(Hf){const o=Sf();if(!o)return;const n=o.type;if(!n||!("head"in n))return;s=typeof n.head=="function"?()=>n.head.call(o.proxy):n.head}else{const o=this.$options.head;o&&(s=typeof o=="function"?()=>o.call(this):o)}s&&rm(s)}},sm="drag-scroller-disable",am=(()=>{const s=new WeakMap;return{mounted(o,n){let i=!1;const{onlyX:u,onlyY:f,disablechild:l}=n.modifiers,v=n.value??{};v.hideScrollbar===!0&&(o.style.overflow="hidden");const d=y=>{if(l)return y===o;for(;y&&y.parentNode;){if(y&&y!=null&&y.hasAttribute(sm))return!1;if(y===o)return!0;y=y.parentNode}return!1},m=y=>{i=d(y.target),i&&v!=null&&v.startScroll&&typeof(v==null?void 0:v.startScroll)=="function"&&v.startScroll(y)},p=y=>{i&&v!=null&&v.endScroll&&typeof(v==null?void 0:v.endScroll)=="function"&&v.endScroll(y),i=!1},x=y=>{if(!i)return!1;v!=null&&v.onScrolling&&typeof(v==null?void 0:v.onScrolling)=="function"&&v.onScrolling(y),y.stopPropagation&&y.stopPropagation(),y.preventDefault&&y.preventDefault(),y.cancelBubble=!0,y.returnValue=!1;const E=(v==null?void 0:v.speed)||1,L=v.reverseDirection?y.movementX*E:-y.movementX*E,A=v.reverseDirection?y.movementY*E:-y.movementY*E;u?o.scrollLeft+=L:(f||(o.scrollLeft+=L),o.scrollTop+=A)};s.set(o,{dragStart:m,dragEnd:p,drag:x}),o.addEventListener("pointerdown",m),addEventListener("pointerup",p),addEventListener("pointermove",x)},unmounted(o){const{dragStart:n,dragEnd:i,drag:u}=s.get(o);o.removeEventListener("pointerdown",n),removeEventListener("pointerup",i),removeEventListener("pointermove",u)}}})(),um={install(s){s.directive("drag-scroller",am)}},Bf={bookmarkFilter:[{title:"All",value:"ALL",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],q:"",topGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s"},{title:"Volumes",value:"v"},{title:"Issues",value:"c"},{title:"Folders",value:"f"},{title:"Story Arcs",value:"a"}],settingsGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s",default:!0},{title:"Volumes",value:"v"}],orderBy:[{title:"Name",value:"sort_name",default:!0},{title:"Publish Date",value:"date"},{title:"Added Time",value:"created_at",reverse:!0},{title:"Last Read",value:"bookmark_updated_at",reverse:!0},{title:"Updated Time",value:"updated_at",reverse:!0},{title:"Page Count",value:"page_count",reverse:!0},{title:"File Size",value:"size",reverse:!0},{title:"Filename",value:"path"},{title:"Critical Rating",value:"critical_rating",reverse:!0},{title:"Community Rating",value:"community_rating",reverse:!0},{title:"Age Rating",value:"age_rating"},{title:"Search Score",value:"search_score",reverse:!0},{title:"Story Arc Number",value:"story_arc_number"}],vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},route:{group:"r",pk:0,page:1},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"}},fm={fitTo:[{title:"Fit to Screen",value:"S",default:!0},{title:"Fit to Width",value:"W"},{title:"Fit to Height",value:"H"},{title:"Original Size",value:"O"},{title:"",value:""}],readingDirection:[{title:"Left to Right",value:"ltr",default:!0},{title:"Right to Left",value:"rtl"},{title:"Top to Bottom",value:"ttb"},{title:"Bottom to Top",value:"btt"},{title:"",value:""}]},lm={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Je={browser:Bf,reader:fm,websockets:lm},cm="modulepreload",dm=function(s){return window.CODEX.APP_PATH + "static"+"/"+s},zu={},It=function(o,n,i){let u=Promise.resolve();if(n&&n.length>0){const f=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),v=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));u=Promise.all(n.map(d=>{if(d=dm(d),d in zu)return;zu[d]=!0;const m=d.endsWith(".css"),p=m?'[rel="stylesheet"]':"";if(!!i)for(let E=f.length-1;E>=0;E--){const L=f[E];if(L.href===d&&(!m||L.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${p}`))return;const y=document.createElement("link");if(y.rel=m?"stylesheet":cm,m||(y.as="script",y.crossOrigin=""),y.href=d,v&&y.setAttribute("nonce",v),document.head.appendChild(y),m)return new Promise((E,L)=>{y.addEventListener("load",E),y.addEventListener("error",()=>L(new Error(`Unable to preload CSS for ${d}`)))})}))}return u.then(()=>o()).catch(f=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=f,window.dispatchEvent(l),!l.defaultPrevented)throw f})};/*!
7
+ import{n as Ji,v as K1,i as Ot,u as cn,r as to,w as xf,a as Qi,g as Sf,o as Ef,b as bf,c as Lf,s as Cn,d as j1,e as Af,f as Gt,h as Ae,j as Tf,p as nr,H as Dn,k as no,l as wf,m as $i,q as z1,t as Gi,x as uo,y as k1,z as _r,A as Rf,B as Z1,C as Of,D as Y1,E as X1,F as J1,G as Q1,I as _1,J as q1,K as e0,L as Ui,M as Mu,N as t0,_ as n0,O as r0,P as o0,Q as i0,R as s0,S as a0,T as Du,U as fo,V as ar,W as u0,X as f0,Y as l0,Z as c0,$ as d0,a0 as h0,a1 as p0,a2 as v0,a3 as Hu,a4 as Fu,a5 as Bu,a6 as Wu,a7 as g0,a8 as m0}from"./admin-drawer-panel-DBj4RoBP.js";function Vi(s,o={},n){for(const i in s){const u=s[i],f=n?`${n}:${i}`:i;typeof u=="object"&&u!==null?Vi(u,o,f):typeof u=="function"&&(o[f]=u)}return o}const y0={run:s=>s()},x0=()=>y0,If=typeof console.createTask<"u"?console.createTask:x0;function S0(s,o){const n=o.shift(),i=If(n);return s.reduce((u,f)=>u.then(()=>i.run(()=>f(...o))),Promise.resolve())}function E0(s,o){const n=o.shift(),i=If(n);return Promise.all(s.map(u=>i.run(()=>u(...o))))}function Di(s,o){for(const n of[...s])n(o)}class b0{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(o,n,i={}){if(!o||typeof n!="function")return()=>{};const u=o;let f;for(;this._deprecatedHooks[o];)f=this._deprecatedHooks[o],o=f.to;if(f&&!i.allowDeprecated){let l=f.message;l||(l=`${u} hook has been deprecated`+(f.to?`, please use ${f.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(l)||(console.warn(l),this._deprecatedMessages.add(l))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+o.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[o]=this._hooks[o]||[],this._hooks[o].push(n),()=>{n&&(this.removeHook(o,n),n=void 0)}}hookOnce(o,n){let i,u=(...f)=>(typeof i=="function"&&i(),i=void 0,u=void 0,n(...f));return i=this.hook(o,u),i}removeHook(o,n){if(this._hooks[o]){const i=this._hooks[o].indexOf(n);i!==-1&&this._hooks[o].splice(i,1),this._hooks[o].length===0&&delete this._hooks[o]}}deprecateHook(o,n){this._deprecatedHooks[o]=typeof n=="string"?{to:n}:n;const i=this._hooks[o]||[];delete this._hooks[o];for(const u of i)this.hook(o,u)}deprecateHooks(o){Object.assign(this._deprecatedHooks,o);for(const n in o)this.deprecateHook(n,o[n])}addHooks(o){const n=Vi(o),i=Object.keys(n).map(u=>this.hook(u,n[u]));return()=>{for(const u of i.splice(0,i.length))u()}}removeHooks(o){const n=Vi(o);for(const i in n)this.removeHook(i,n[i])}removeAllHooks(){for(const o in this._hooks)delete this._hooks[o]}callHook(o,...n){return n.unshift(o),this.callHookWith(S0,o,...n)}callHookParallel(o,...n){return n.unshift(o),this.callHookWith(E0,o,...n)}callHookWith(o,n,...i){const u=this._before||this._after?{name:n,args:i,context:{}}:void 0;this._before&&Di(this._before,u);const f=o(n in this._hooks?[...this._hooks[n]]:[],i);return f instanceof Promise?f.finally(()=>{this._after&&u&&Di(this._after,u)}):(this._after&&u&&Di(this._after,u),f)}beforeEach(o){return this._before=this._before||[],this._before.push(o),()=>{if(this._before!==void 0){const n=this._before.indexOf(o);n!==-1&&this._before.splice(n,1)}}}afterEach(o){return this._after=this._after||[],this._after.push(o),()=>{if(this._after!==void 0){const n=this._after.indexOf(o);n!==-1&&this._after.splice(n,1)}}}}function L0(){return new b0}function A0(s){return Array.isArray(s)?s:[s]}const T0=["title","titleTemplate","script","style","noscript"],qr=["base","meta","link","style","script","noscript"],w0=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],R0=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Cf=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],O0=typeof window<"u";function _i(s){let o=9;for(let n=0;n<s.length;)o=Math.imul(o^s.charCodeAt(n++),9**9);return((o^o>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Nu(s){return s._h||_i(s._d?s._d:`${s.tag}:${s.textContent||s.innerHTML||""}:${Object.entries(s.props).map(([o,n])=>`${o}:${String(n)}`).join(",")}`)}function Pf(s,o){const{props:n,tag:i}=s;if(R0.includes(i))return i;if(i==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const u=["id"];i==="meta"&&u.push("name","property","http-equiv");for(const f of u)if(typeof n[f]<"u"){const l=String(n[f]);return o&&!o(l)?!1:`${i}:${f}:${l}`}return!1}function $u(s,o){return s==null?o||null:typeof s=="function"?s(o):s}async function I0(s,o,n){const i={tag:s,props:await Mf(typeof o=="object"&&typeof o!="function"&&!(o instanceof Promise)?{...o}:{[["script","noscript","style"].includes(s)?"innerHTML":"textContent"]:o},["templateParams","titleTemplate"].includes(s))};return Cf.forEach(u=>{const f=typeof i.props[u]<"u"?i.props[u]:n[u];typeof f<"u"&&((!["innerHTML","textContent","children"].includes(u)||T0.includes(i.tag))&&(i[u==="children"?"innerHTML":u]=f),delete i.props[u])}),i.props.body&&(i.tagPosition="bodyClose",delete i.props.body),i.tag==="script"&&typeof i.innerHTML=="object"&&(i.innerHTML=JSON.stringify(i.innerHTML),i.props.type=i.props.type||"application/json"),Array.isArray(i.props.content)?i.props.content.map(u=>({...i,props:{...i.props,content:u}})):i}function C0(s,o){const n=s==="class"?" ":";";return typeof o=="object"&&!Array.isArray(o)&&(o=Object.entries(o).filter(([,i])=>i).map(([i,u])=>s==="style"?`${i}:${u}`:i)),(Array.isArray(o)?o.join(n):o).split(n).filter(i=>i.trim()).filter(Boolean).join(n)}async function Mf(s,o){for(const n of Object.keys(s)){if(["class","style"].includes(n)){s[n]=C0(n,s[n]);continue}if(s[n]instanceof Promise&&(s[n]=await s[n]),!o&&!Cf.includes(n)){const i=String(s[n]),u=n.startsWith("data-");i==="true"||i===""?s[n]=u?"true":!0:s[n]||(u&&i==="false"?s[n]="false":delete s[n])}}return s}const P0=10;async function M0(s){const o=[];return Object.entries(s.resolvedInput).filter(([n,i])=>typeof i<"u"&&w0.includes(n)).forEach(([n,i])=>{const u=A0(i);o.push(...u.map(f=>I0(n,f,s)).flat())}),(await Promise.all(o)).flat().filter(Boolean).map((n,i)=>(n._e=s._i,s.mode&&(n._m=s.mode),n._p=(s._i<<P0)+i,n))}const Gu={base:-10,title:10},Uu={critical:-80,high:-10,low:20};function ro(s){let o=100;const n=s.tagPriority;return typeof n=="number"?n:(s.tag==="meta"?(s.props["http-equiv"]==="content-security-policy"&&(o=-30),s.props.charset&&(o=-20),s.props.name==="viewport"&&(o=-15)):s.tag==="link"&&s.props.rel==="preconnect"?o=20:s.tag in Gu&&(o=Gu[s.tag]),typeof n=="string"&&n in Uu?o+Uu[n]:o)}const D0=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],Hi=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function eo(s,o,n){if(typeof s!="string"||!s.includes("%"))return s;function i(l){let v;return["s","pageTitle"].includes(l)?v=o.pageTitle:l.includes(".")?v=l.split(".").reduce((d,m)=>d&&d[m]||void 0,o):v=o[l],typeof v<"u"?(v||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(l=>{const v=i(l.slice(1));typeof v=="string"&&(s=s.replace(new RegExp(`\\${l}(\\W|$)`,"g"),(d,m)=>`${v}${m}`).trim())}),s.includes(Qt)&&(s.endsWith(Qt)&&(s=s.slice(0,-Qt.length).trim()),s.startsWith(Qt)&&(s=s.slice(Qt.length).trim()),s=s.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),s=eo(s,{separator:n},n)),s}async function H0(s,o={}){var p;const n=o.document||s.resolvedOptions.document;if(!n||!s.dirty)return;const i={shouldRender:!0,tags:[]};if(await s.hooks.callHook("dom:beforeRender",i),!i.shouldRender)return;const u=(await s.resolveTags()).map(x=>({tag:x,id:qr.includes(x.tag)?Nu(x):x.tag,shouldRender:!0}));let f=s._dom;if(!f){f={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const x of["body","head"]){const y=(p=n[x])==null?void 0:p.children,E=[];for(const L of[...y].filter(A=>qr.includes(A.tagName.toLowerCase()))){const A={tag:L.tagName.toLowerCase(),props:await Mf(L.getAttributeNames().reduce((O,P)=>({...O,[P]:L.getAttribute(P)}),{})),innerHTML:L.innerHTML};let T=1,I=Pf(A);for(;I&&E.find(O=>O._d===I);)I=`${I}:${T++}`;A._d=I||void 0,E.push(A),f.elMap[L.getAttribute("data-hid")||Nu(A)]=L}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function l(x,y,E){const L=`${x}:${y}`;f.sideEffects[L]=E,delete f.pendingSideEffects[L]}function v({id:x,$el:y,tag:E}){const L=E.tag.endsWith("Attrs");f.elMap[x]=y,L||(["textContent","innerHTML"].forEach(A=>{E[A]&&E[A]!==y[A]&&(y[A]=E[A])}),l(x,"el",()=>{var A;(A=f.elMap[x])==null||A.remove(),delete f.elMap[x]}));for(const[A,T]of Object.entries(E._eventHandlers||{}))y.getAttribute(`data-${A}`)!==""&&((E.tag==="bodyAttrs"?n.defaultView:y).addEventListener(A.replace("on",""),T.bind(y)),y.setAttribute(`data-${A}`,""));Object.entries(E.props).forEach(([A,T])=>{const I=`attr:${A}`;if(A==="class")for(const O of(T||"").split(" ").filter(Boolean))L&&l(x,`${I}:${O}`,()=>y.classList.remove(O)),!y.classList.contains(O)&&y.classList.add(O);else if(A==="style")for(const O of(T||"").split(";").filter(Boolean)){const[P,...$]=O.split(":").map(j=>j.trim());l(x,`${I}:${O}:${P}`,()=>{y.style.removeProperty(P)}),y.style.setProperty(P,$.join(":"))}else y.getAttribute(A)!==T&&y.setAttribute(A,T===!0?"":String(T)),L&&l(x,I,()=>y.removeAttribute(A))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const x of u){const{tag:y,shouldRender:E,id:L}=x;if(E){if(y.tag==="title"){n.title=y.textContent;continue}x.$el=x.$el||f.elMap[L],x.$el?v(x):qr.includes(y.tag)&&d.push(x)}}for(const x of d){const y=x.tag.tagPosition||"head";x.$el=n.createElement(x.tag.tag),v(x),m[y]=m[y]||n.createDocumentFragment(),m[y].appendChild(x.$el)}for(const x of u)await s.hooks.callHook("dom:renderTag",x,n,l);m.head&&n.head.appendChild(m.head),m.bodyOpen&&n.body.insertBefore(m.bodyOpen,n.body.firstChild),m.bodyClose&&n.body.appendChild(m.bodyClose),Object.values(f.pendingSideEffects).forEach(x=>x()),s._dom=f,s.dirty=!1,await s.hooks.callHook("dom:rendered",{renders:u})}async function F0(s,o={}){const n=o.delayFn||(i=>setTimeout(i,10));return s._domUpdatePromise=s._domUpdatePromise||new Promise(i=>n(async()=>{await H0(s,o),delete s._domUpdatePromise,i()}))}function B0(s){return o=>{var i,u;const n=((u=(i=o.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:u.innerHTML)||!1;return n&&o.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(f){F0(f,s)}}}}}const W0=["templateParams","htmlAttrs","bodyAttrs"],N0={hooks:{"tag:normalise":function({tag:s}){["hid","vmid","key"].forEach(i=>{s.props[i]&&(s.key=s.props[i],delete s.props[i])});const n=Pf(s)||(s.key?`${s.tag}:${s.key}`:!1);n&&(s._d=n)},"tags:resolve":function(s){const o={};s.tags.forEach(i=>{const u=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,f=o[u];if(f){let v=i==null?void 0:i.tagDuplicateStrategy;if(!v&&W0.includes(i.tag)&&(v="merge"),v==="merge"){const d=f.props;["class","style"].forEach(m=>{d[m]&&(i.props[m]?(m==="style"&&!d[m].endsWith(";")&&(d[m]+=";"),i.props[m]=`${d[m]} ${i.props[m]}`):i.props[m]=d[m])}),o[u].props={...d,...i.props};return}else if(i._e===f._e){f._duped=f._duped||[],i._d=`${f._d}:${f._duped.length+1}`,f._duped.push(i);return}else if(ro(i)>ro(f))return}const l=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(qr.includes(i.tag)&&l===0){delete o[u];return}o[u]=i});const n=[];Object.values(o).forEach(i=>{const u=i._duped;delete i._duped,n.push(i),u&&n.push(...u)}),s.tags=n,s.tags=s.tags.filter(i=>!(i.tag==="meta"&&(i.props.name||i.props.property)&&!i.props.content))}}},$0={mode:"server",hooks:{"tags:resolve":function(s){const o={};s.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{o[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(o).length&&s.tags.push({tag:"script",innerHTML:JSON.stringify(o),props:{id:"unhead:payload",type:"application/json"}})}}},G0=["script","link","bodyAttrs"],U0=s=>({hooks:{"tags:resolve":function(o){for(const n of o.tags.filter(i=>G0.includes(i.tag)))Object.entries(n.props).forEach(([i,u])=>{i.startsWith("on")&&typeof u=="function"&&(s.ssr&&Hi.includes(i)?(n.props[i]=`this.dataset.${i} = true`,n.props["data-unhead-events"]=""):delete n.props[i],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[i]=u)}),s.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||_i(n.props.src||n.props.href))},"dom:renderTag":function(o){const n=o.$el;if(!(n!=null&&n.dataset)||!("unheadEvents"in n.dataset))return;delete n.dataset.unheadEvents;const i=u=>{var f,l;return(l=(f=o.tag._eventHandlers)==null?void 0:f[u])==null?void 0:l.call(o.$el,new Event(u.replace("on","")))};for(const u of Object.keys(n.dataset).filter(f=>Hi.includes(f)))i(u);typeof MutationObserver<"u"&&new MutationObserver(f=>{f.filter(l=>l.attributeName&&Hi.includes(l.attributeName.replace("data-",""))).map(l=>l.attributeName.replace("data-","")).map(i)}).observe(o.$el,{attributes:!0})}}}),V0=["link","style","script","noscript"],K0={hooks:{"tag:normalise":({tag:s})=>{s.key&&V0.includes(s.tag)&&(s.props["data-hid"]=s._h=_i(s.key))}}},j0={hooks:{"tags:resolve":s=>{const o=n=>{var i;return(i=s.tags.find(u=>u._d===n))==null?void 0:i._p};for(const{prefix:n,offset:i}of D0)for(const u of s.tags.filter(f=>typeof f.tagPriority=="string"&&f.tagPriority.startsWith(n))){const f=o(u.tagPriority.replace(n,""));typeof f<"u"&&(u._p=f+i)}s.tags.sort((n,i)=>n._p-i._p).sort((n,i)=>ro(n)-ro(i))}}},z0={meta:"content",link:"href",htmlAttrs:"lang"},k0=s=>({hooks:{"tags:resolve":o=>{var v;const{tags:n}=o,i=(v=n.find(d=>d.tag==="title"))==null?void 0:v.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},l=f.separator||"|";delete f.separator,f.pageTitle=eo(f.pageTitle||i||"",f,l);for(const d of n.filter(m=>m.processTemplateParams!==!1)){const m=z0[d.tag];m&&typeof d.props[m]=="string"?d.props[m]=eo(d.props[m],f,l):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(p=>{typeof d[p]=="string"&&(d[p]=eo(d[p],f,l))})}s._templateParams=f,s._separator=l,o.tags=n.filter(d=>d.tag!=="templateParams")}}}),Z0={hooks:{"tags:resolve":s=>{const{tags:o}=s;let n=o.findIndex(u=>u.tag==="titleTemplate");const i=o.findIndex(u=>u.tag==="title");if(i!==-1&&n!==-1){const u=$u(o[n].textContent,o[i].textContent);u!==null?o[i].textContent=u||o[i].textContent:delete o[i]}else if(n!==-1){const u=$u(o[n].textContent);u!==null&&(o[n].textContent=u,o[n].tag="title",n=-1)}n!==-1&&delete o[n],s.tags=o.filter(Boolean)}}},Y0={hooks:{"tags:afterResolve":function(s){for(const o of s.tags)typeof o.innerHTML=="string"&&(o.innerHTML&&["application/ld+json","application/json"].includes(o.props.type)?o.innerHTML=o.innerHTML.replace(/</g,"\\u003C"):o.innerHTML=o.innerHTML.replace(new RegExp(`</${o.tag}`,"g"),`<\\/${o.tag}`))}}};let Df;function X0(s={}){const o=J0(s);return o.use(B0()),Df=o}function Vu(s,o){return!s||s==="server"&&o||s==="client"&&!o}function J0(s={}){const o=L0();o.addHooks(s.hooks||{}),s.document=s.document||(O0?document:void 0);const n=!s.document,i=()=>{v.dirty=!0,o.callHook("entries:updated",v)};let u=0,f=[];const l=[],v={plugins:l,dirty:!1,resolvedOptions:s,hooks:o,headEntries(){return f},use(d){const m=typeof d=="function"?d(v):d;(!m.key||!l.some(p=>p.key===m.key))&&(l.push(m),Vu(m.mode,n)&&o.addHooks(m.hooks||{}))},push(d,m){m==null||delete m.head;const p={_i:u++,input:d,...m};return Vu(p.mode,n)&&(f.push(p),i()),{dispose(){f=f.filter(x=>x._i!==p._i),o.callHook("entries:updated",v),i()},patch(x){f=f.map(y=>(y._i===p._i&&(y.input=p.input=x),y)),i()}}},async resolveTags(){const d={tags:[],entries:[...f]};await o.callHook("entries:resolve",d);for(const m of d.entries){const p=m.resolvedInput||m.input;if(m.resolvedInput=await(m.transform?m.transform(p):p),m.resolvedInput)for(const x of await M0(m)){const y={tag:x,entry:m,resolvedOptions:v.resolvedOptions};await o.callHook("tag:normalise",y),d.tags.push(y.tag)}}return await o.callHook("tags:beforeResolve",d),await o.callHook("tags:resolve",d),await o.callHook("tags:afterResolve",d),d.tags},ssr:n};return[N0,$0,U0,K0,j0,k0,Z0,Y0,...(s==null?void 0:s.plugins)||[]].forEach(d=>v.use(d)),v.hooks.callHook("init",v),v}function Q0(){return Df}const Hf=K1.startsWith("3");function _0(s){return typeof s=="function"?s():cn(s)}function oo(s,o=""){if(s instanceof Promise)return s;const n=_0(s);return!s||!n?n:Array.isArray(n)?n.map(i=>oo(i,o)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,u])=>i==="titleTemplate"||i.startsWith("on")?[i,cn(u)]:[i,oo(u,i)])):n}const q0={hooks:{"entries:resolve":function(s){for(const o of s.entries)o.resolvedInput=oo(o.input)}}},Ff="usehead";function em(s){return{install(n){Hf&&(n.config.globalProperties.$unhead=s,n.config.globalProperties.$head=s,n.provide(Ff,s))}}.install}function tm(s={}){s.domDelayFn=s.domDelayFn||(n=>Ji(()=>setTimeout(()=>n(),0)));const o=X0(s);return o.use(q0),o.install=em(o),o}const Ku=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ju="__unhead_injection_handler__";function nm(){if(ju in Ku)return Ku[ju]();const s=Ot(Ff);return s||Q0()}function rm(s,o={}){const n=o.head||nm();if(n)return n.ssr?n.push(s,o):om(n,s,o)}function om(s,o,n={}){const i=to(!1),u=to({});xf(()=>{u.value=i.value?{}:oo(o)});const f=s.push(u.value,n);return Qi(u,v=>{f.patch(v)}),Sf()&&(Ef(()=>{f.dispose()}),bf(()=>{i.value=!0}),Lf(()=>{i.value=!1})),f}const im={created(){let s=!1;if(Hf){const o=Sf();if(!o)return;const n=o.type;if(!n||!("head"in n))return;s=typeof n.head=="function"?()=>n.head.call(o.proxy):n.head}else{const o=this.$options.head;o&&(s=typeof o=="function"?()=>o.call(this):o)}s&&rm(s)}},sm="drag-scroller-disable",am=(()=>{const s=new WeakMap;return{mounted(o,n){let i=!1;const{onlyX:u,onlyY:f,disablechild:l}=n.modifiers,v=n.value??{};v.hideScrollbar===!0&&(o.style.overflow="hidden");const d=y=>{if(l)return y===o;for(;y&&y.parentNode;){if(y&&y!=null&&y.hasAttribute(sm))return!1;if(y===o)return!0;y=y.parentNode}return!1},m=y=>{i=d(y.target),i&&v!=null&&v.startScroll&&typeof(v==null?void 0:v.startScroll)=="function"&&v.startScroll(y)},p=y=>{i&&v!=null&&v.endScroll&&typeof(v==null?void 0:v.endScroll)=="function"&&v.endScroll(y),i=!1},x=y=>{if(!i)return!1;v!=null&&v.onScrolling&&typeof(v==null?void 0:v.onScrolling)=="function"&&v.onScrolling(y),y.stopPropagation&&y.stopPropagation(),y.preventDefault&&y.preventDefault(),y.cancelBubble=!0,y.returnValue=!1;const E=(v==null?void 0:v.speed)||1,L=v.reverseDirection?y.movementX*E:-y.movementX*E,A=v.reverseDirection?y.movementY*E:-y.movementY*E;u?o.scrollLeft+=L:(f||(o.scrollLeft+=L),o.scrollTop+=A)};s.set(o,{dragStart:m,dragEnd:p,drag:x}),o.addEventListener("pointerdown",m),addEventListener("pointerup",p),addEventListener("pointermove",x)},unmounted(o){const{dragStart:n,dragEnd:i,drag:u}=s.get(o);o.removeEventListener("pointerdown",n),removeEventListener("pointerup",i),removeEventListener("pointermove",u)}}})(),um={install(s){s.directive("drag-scroller",am)}},Bf={bookmarkFilter:[{title:"All",value:"ALL",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],q:"",topGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s"},{title:"Volumes",value:"v"},{title:"Issues",value:"c"},{title:"Folders",value:"f"},{title:"Story Arcs",value:"a"}],settingsGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s",default:!0},{title:"Volumes",value:"v"}],orderBy:[{title:"Name",value:"sort_name",default:!0},{title:"Publish Date",value:"date"},{title:"Added Time",value:"created_at",reverse:!0},{title:"Last Read",value:"bookmark_updated_at",reverse:!0},{title:"Updated Time",value:"updated_at",reverse:!0},{title:"Page Count",value:"page_count",reverse:!0},{title:"File Size",value:"size",reverse:!0},{title:"Filename",value:"path"},{title:"Critical Rating",value:"critical_rating",reverse:!0},{title:"Community Rating",value:"community_rating",reverse:!0},{title:"Age Rating",value:"age_rating"},{title:"Search Score",value:"search_score",reverse:!0},{title:"Story Arc Number",value:"story_arc_number"}],vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},route:{group:"r",pk:0,page:1},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"}},fm={fitTo:[{title:"Fit to Screen",value:"S",default:!0},{title:"Fit to Width",value:"W"},{title:"Fit to Height",value:"H"},{title:"Original Size",value:"O"},{title:"",value:""}],readingDirection:[{title:"Left to Right",value:"ltr",default:!0},{title:"Right to Left",value:"rtl"},{title:"Top to Bottom",value:"ttb"},{title:"Bottom to Top",value:"btt"},{title:"",value:""}]},lm={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Je={browser:Bf,reader:fm,websockets:lm},cm="modulepreload",dm=function(s){return window.CODEX.APP_PATH + "static"+"/"+s},zu={},It=function(o,n,i){let u=Promise.resolve();if(n&&n.length>0){const f=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),v=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));u=Promise.all(n.map(d=>{if(d=dm(d),d in zu)return;zu[d]=!0;const m=d.endsWith(".css"),p=m?'[rel="stylesheet"]':"";if(!!i)for(let E=f.length-1;E>=0;E--){const L=f[E];if(L.href===d&&(!m||L.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${d}"]${p}`))return;const y=document.createElement("link");if(y.rel=m?"stylesheet":cm,m||(y.as="script",y.crossOrigin=""),y.href=d,v&&y.setAttribute("nonce",v),document.head.appendChild(y),m)return new Promise((E,L)=>{y.addEventListener("load",E),y.addEventListener("error",()=>L(new Error(`Unable to preload CSS for ${d}`)))})}))}return u.then(()=>o()).catch(f=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=f,window.dispatchEvent(l),!l.defaultPrevented)throw f})};/*!
8
8
  * vue-router v4.3.0
9
9
  * (c) 2024 Eduardo San Martin Morote
10
10
  * @license MIT
11
- */const On=typeof document<"u";function hm(s){return s.__esModule||s[Symbol.toStringTag]==="Module"}const Se=Object.assign;function Fi(s,o){const n={};for(const i in o){const u=o[i];n[i]=At(u)?u.map(s):s(u)}return n}const rr=()=>{},At=Array.isArray,Wf=/#/g,pm=/&/g,vm=/\//g,gm=/=/g,mm=/\?/g,Nf=/\+/g,ym=/%5B/g,xm=/%5D/g,$f=/%5E/g,Sm=/%60/g,Gf=/%7B/g,Em=/%7C/g,Uf=/%7D/g,bm=/%20/g;function qi(s){return encodeURI(""+s).replace(Em,"|").replace(ym,"[").replace(xm,"]")}function Lm(s){return qi(s).replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Ki(s){return qi(s).replace(Nf,"%2B").replace(bm,"+").replace(Wf,"%23").replace(pm,"%26").replace(Sm,"`").replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Am(s){return Ki(s).replace(gm,"%3D")}function Tm(s){return qi(s).replace(Wf,"%23").replace(mm,"%3F")}function wm(s){return s==null?"":Tm(s).replace(vm,"%2F")}function ir(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const Rm=/\/$/,Om=s=>s.replace(Rm,"");function Bi(s,o,n="/"){let i,u={},f="",l="";const v=o.indexOf("#");let d=o.indexOf("?");return v<d&&v>=0&&(d=-1),d>-1&&(i=o.slice(0,d),f=o.slice(d+1,v>-1?v:o.length),u=s(f)),v>-1&&(i=i||o.slice(0,v),l=o.slice(v,o.length)),i=Mm(i??o,n),{fullPath:i+(f&&"?")+f+l,path:i,query:u,hash:ir(l)}}function Im(s,o){const n=o.query?s(o.query):"";return o.path+(n&&"?")+n+(o.hash||"")}function ku(s,o){return!o||!s.toLowerCase().startsWith(o.toLowerCase())?s:s.slice(o.length)||"/"}function Cm(s,o,n){const i=o.matched.length-1,u=n.matched.length-1;return i>-1&&i===u&&Pn(o.matched[i],n.matched[u])&&Vf(o.params,n.params)&&s(o.query)===s(n.query)&&o.hash===n.hash}function Pn(s,o){return(s.aliasOf||s)===(o.aliasOf||o)}function Vf(s,o){if(Object.keys(s).length!==Object.keys(o).length)return!1;for(const n in s)if(!Pm(s[n],o[n]))return!1;return!0}function Pm(s,o){return At(s)?Zu(s,o):At(o)?Zu(o,s):s===o}function Zu(s,o){return At(o)?s.length===o.length&&s.every((n,i)=>n===o[i]):s.length===1&&s[0]===o}function Mm(s,o){if(s.startsWith("/"))return s;if(!s)return o;const n=o.split("/"),i=s.split("/"),u=i[i.length-1];(u===".."||u===".")&&i.push("");let f=n.length-1,l,v;for(l=0;l<i.length;l++)if(v=i[l],v!==".")if(v==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(l).join("/")}var sr;(function(s){s.pop="pop",s.push="push"})(sr||(sr={}));var or;(function(s){s.back="back",s.forward="forward",s.unknown=""})(or||(or={}));function Dm(s){if(!s)if(On){const o=document.querySelector("base");s=o&&o.getAttribute("href")||"/",s=s.replace(/^\w+:\/\/[^\/]+/,"")}else s="/";return s[0]!=="/"&&s[0]!=="#"&&(s="/"+s),Om(s)}const Hm=/^[^#]+#/;function Fm(s,o){return s.replace(Hm,"#")+o}function Bm(s,o){const n=document.documentElement.getBoundingClientRect(),i=s.getBoundingClientRect();return{behavior:o.behavior,left:i.left-n.left-(o.left||0),top:i.top-n.top-(o.top||0)}}const lo=()=>({left:window.scrollX,top:window.scrollY});function Wm(s){let o;if("el"in s){const n=s.el,i=typeof n=="string"&&n.startsWith("#"),u=typeof n=="string"?i?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!u)return;o=Bm(u,s)}else o=s;"scrollBehavior"in document.documentElement.style?window.scrollTo(o):window.scrollTo(o.left!=null?o.left:window.scrollX,o.top!=null?o.top:window.scrollY)}function Yu(s,o){return(history.state?history.state.position-o:-1)+s}const ji=new Map;function Nm(s,o){ji.set(s,o)}function $m(s){const o=ji.get(s);return ji.delete(s),o}let Gm=()=>location.protocol+"//"+location.host;function Kf(s,o){const{pathname:n,search:i,hash:u}=o,f=s.indexOf("#");if(f>-1){let v=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(v);return d[0]!=="/"&&(d="/"+d),ku(d,"")}return ku(n,s)+i+u}function Um(s,o,n,i){let u=[],f=[],l=null;const v=({state:y})=>{const E=Kf(s,location),L=n.value,A=o.value;let T=0;if(y){if(n.value=E,o.value=y,l&&l===L){l=null;return}T=A?y.position-A.position:0}else i(E);u.forEach(I=>{I(n.value,L,{delta:T,type:sr.pop,direction:T?T>0?or.forward:or.back:or.unknown})})};function d(){l=n.value}function m(y){u.push(y);const E=()=>{const L=u.indexOf(y);L>-1&&u.splice(L,1)};return f.push(E),E}function p(){const{history:y}=window;y.state&&y.replaceState(Se({},y.state,{scroll:lo()}),"")}function x(){for(const y of f)y();f=[],window.removeEventListener("popstate",v),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",v),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:d,listen:m,destroy:x}}function Xu(s,o,n,i=!1,u=!1){return{back:s,current:o,forward:n,replaced:i,position:window.history.length,scroll:u?lo():null}}function Vm(s){const{history:o,location:n}=window,i={value:Kf(s,n)},u={value:o.state};u.value||f(i.value,{back:null,current:i.value,forward:null,position:o.length-1,replaced:!0,scroll:null},!0);function f(d,m,p){const x=s.indexOf("#"),y=x>-1?(n.host&&document.querySelector("base")?s:s.slice(x))+d:Gm()+s+d;try{o[p?"replaceState":"pushState"](m,"",y),u.value=m}catch(E){console.error(E),n[p?"replace":"assign"](y)}}function l(d,m){const p=Se({},o.state,Xu(u.value.back,d,u.value.forward,!0),m,{position:u.value.position});f(d,p,!0),i.value=d}function v(d,m){const p=Se({},u.value,o.state,{forward:d,scroll:lo()});f(p.current,p,!0);const x=Se({},Xu(i.value,d,null),{position:p.position+1},m);f(d,x,!1),i.value=d}return{location:i,state:u,push:v,replace:l}}function Km(s){s=Dm(s);const o=Vm(s),n=Um(s,o.state,o.location,o.replace);function i(f,l=!0){l||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:Fm.bind(null,s)},o,n);return Object.defineProperty(u,"location",{enumerable:!0,get:()=>o.location.value}),Object.defineProperty(u,"state",{enumerable:!0,get:()=>o.state.value}),u}function jm(s){return typeof s=="string"||s&&typeof s=="object"}function jf(s){return typeof s=="string"||typeof s=="symbol"}const _t={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},zf=Symbol("");var Ju;(function(s){s[s.aborted=4]="aborted",s[s.cancelled=8]="cancelled",s[s.duplicated=16]="duplicated"})(Ju||(Ju={}));function Mn(s,o){return Se(new Error,{type:s,[zf]:!0},o)}function $t(s,o){return s instanceof Error&&zf in s&&(o==null||!!(s.type&o))}const Qu="[^/]+?",zm={sensitive:!1,strict:!1,start:!0,end:!0},km=/[.+*?^${}()[\]/\\]/g;function Zm(s,o){const n=Se({},zm,o),i=[];let u=n.start?"^":"";const f=[];for(const m of s){const p=m.length?[]:[90];n.strict&&!m.length&&(u+="/");for(let x=0;x<m.length;x++){const y=m[x];let E=40+(n.sensitive?.25:0);if(y.type===0)x||(u+="/"),u+=y.value.replace(km,"\\$&"),E+=40;else if(y.type===1){const{value:L,repeatable:A,optional:T,regexp:I}=y;f.push({name:L,repeatable:A,optional:T});const O=I||Qu;if(O!==Qu){E+=10;try{new RegExp(`(${O})`)}catch($){throw new Error(`Invalid custom RegExp for param "${L}" (${O}): `+$.message)}}let P=A?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;x||(P=T&&m.length<2?`(?:/${P})`:"/"+P),T&&(P+="?"),u+=P,E+=20,T&&(E+=-8),A&&(E+=-20),O===".*"&&(E+=-50)}p.push(E)}i.push(p)}if(n.strict&&n.end){const m=i.length-1;i[m][i[m].length-1]+=.7000000000000001}n.strict||(u+="/?"),n.end?u+="$":n.strict&&(u+="(?:/|$)");const l=new RegExp(u,n.sensitive?"":"i");function v(m){const p=m.match(l),x={};if(!p)return null;for(let y=1;y<p.length;y++){const E=p[y]||"",L=f[y-1];x[L.name]=E&&L.repeatable?E.split("/"):E}return x}function d(m){let p="",x=!1;for(const y of s){(!x||!p.endsWith("/"))&&(p+="/"),x=!1;for(const E of y)if(E.type===0)p+=E.value;else if(E.type===1){const{value:L,repeatable:A,optional:T}=E,I=L in m?m[L]:"";if(At(I)&&!A)throw new Error(`Provided param "${L}" is an array but it is not repeatable (* or + modifiers)`);const O=At(I)?I.join("/"):I;if(!O)if(T)y.length<2&&(p.endsWith("/")?p=p.slice(0,-1):x=!0);else throw new Error(`Missing required param "${L}"`);p+=O}}return p||"/"}return{re:l,score:i,keys:f,parse:v,stringify:d}}function Ym(s,o){let n=0;for(;n<s.length&&n<o.length;){const i=o[n]-s[n];if(i)return i;n++}return s.length<o.length?s.length===1&&s[0]===80?-1:1:s.length>o.length?o.length===1&&o[0]===80?1:-1:0}function Xm(s,o){let n=0;const i=s.score,u=o.score;for(;n<i.length&&n<u.length;){const f=Ym(i[n],u[n]);if(f)return f;n++}if(Math.abs(u.length-i.length)===1){if(_u(i))return 1;if(_u(u))return-1}return u.length-i.length}function _u(s){const o=s[s.length-1];return s.length>0&&o[o.length-1]<0}const Jm={type:0,value:""},Qm=/[a-zA-Z0-9_]/;function _m(s){if(!s)return[[]];if(s==="/")return[[Jm]];if(!s.startsWith("/"))throw new Error(`Invalid path "${s}"`);function o(E){throw new Error(`ERR (${n})/"${m}": ${E}`)}let n=0,i=n;const u=[];let f;function l(){f&&u.push(f),f=[]}let v=0,d,m="",p="";function x(){m&&(n===0?f.push({type:0,value:m}):n===1||n===2||n===3?(f.length>1&&(d==="*"||d==="+")&&o(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),f.push({type:1,value:m,regexp:p,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):o("Invalid state to consume buffer"),m="")}function y(){m+=d}for(;v<s.length;){if(d=s[v++],d==="\\"&&n!==2){i=n,n=4;continue}switch(n){case 0:d==="/"?(m&&x(),l()):d===":"?(x(),n=1):y();break;case 4:y(),n=i;break;case 1:d==="("?n=2:Qm.test(d)?y():(x(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&v--);break;case 2:d===")"?p[p.length-1]=="\\"?p=p.slice(0,-1)+d:n=3:p+=d;break;case 3:x(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&v--,p="";break;default:o("Unknown state");break}}return n===2&&o(`Unfinished custom RegExp for param "${m}"`),x(),l(),u}function qm(s,o,n){const i=Zm(_m(s.path),n),u=Se(i,{record:s,parent:o,children:[],alias:[]});return o&&!u.record.aliasOf==!o.record.aliasOf&&o.children.push(u),u}function ey(s,o){const n=[],i=new Map;o=tf({strict:!1,end:!0,sensitive:!1},o);function u(p){return i.get(p)}function f(p,x,y){const E=!y,L=ty(p);L.aliasOf=y&&y.record;const A=tf(o,p),T=[L];if("alias"in p){const P=typeof p.alias=="string"?[p.alias]:p.alias;for(const $ of P)T.push(Se({},L,{components:y?y.record.components:L.components,path:$,aliasOf:y?y.record:L}))}let I,O;for(const P of T){const{path:$}=P;if(x&&$[0]!=="/"){const j=x.record.path,H=j[j.length-1]==="/"?"":"/";P.path=x.record.path+($&&H+$)}if(I=qm(P,x,A),y?y.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),E&&p.name&&!ef(I)&&l(p.name)),L.children){const j=L.children;for(let H=0;H<j.length;H++)f(j[H],I,y&&y.children[H])}y=y||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{l(O)}:rr}function l(p){if(jf(p)){const x=i.get(p);x&&(i.delete(p),n.splice(n.indexOf(x),1),x.children.forEach(l),x.alias.forEach(l))}else{const x=n.indexOf(p);x>-1&&(n.splice(x,1),p.record.name&&i.delete(p.record.name),p.children.forEach(l),p.alias.forEach(l))}}function v(){return n}function d(p){let x=0;for(;x<n.length&&Xm(p,n[x])>=0&&(p.record.path!==n[x].record.path||!kf(p,n[x]));)x++;n.splice(x,0,p),p.record.name&&!ef(p)&&i.set(p.record.name,p)}function m(p,x){let y,E={},L,A;if("name"in p&&p.name){if(y=i.get(p.name),!y)throw Mn(1,{location:p});A=y.record.name,E=Se(qu(x.params,y.keys.filter(O=>!O.optional).concat(y.parent?y.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),p.params&&qu(p.params,y.keys.map(O=>O.name))),L=y.stringify(E)}else if(p.path!=null)L=p.path,y=n.find(O=>O.re.test(L)),y&&(E=y.parse(L),A=y.record.name);else{if(y=x.name?i.get(x.name):n.find(O=>O.re.test(x.path)),!y)throw Mn(1,{location:p,currentLocation:x});A=y.record.name,E=Se({},x.params,p.params),L=y.stringify(E)}const T=[];let I=y;for(;I;)T.unshift(I.record),I=I.parent;return{name:A,path:L,params:E,matched:T,meta:ry(T)}}return s.forEach(p=>f(p)),{addRoute:f,resolve:m,removeRoute:l,getRoutes:v,getRecordMatcher:u}}function qu(s,o){const n={};for(const i of o)i in s&&(n[i]=s[i]);return n}function ty(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:ny(s),children:s.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in s?s.components||null:s.component&&{default:s.component}}}function ny(s){const o={},n=s.props||!1;if("component"in s)o.default=n;else for(const i in s.components)o[i]=typeof n=="object"?n[i]:n;return o}function ef(s){for(;s;){if(s.record.aliasOf)return!0;s=s.parent}return!1}function ry(s){return s.reduce((o,n)=>Se(o,n.meta),{})}function tf(s,o){const n={};for(const i in s)n[i]=i in o?o[i]:s[i];return n}function kf(s,o){return o.children.some(n=>n===s||kf(s,n))}function oy(s){const o={};if(s===""||s==="?")return o;const i=(s[0]==="?"?s.slice(1):s).split("&");for(let u=0;u<i.length;++u){const f=i[u].replace(Nf," "),l=f.indexOf("="),v=ir(l<0?f:f.slice(0,l)),d=l<0?null:ir(f.slice(l+1));if(v in o){let m=o[v];At(m)||(m=o[v]=[m]),m.push(d)}else o[v]=d}return o}function nf(s){let o="";for(let n in s){const i=s[n];if(n=Am(n),i==null){i!==void 0&&(o+=(o.length?"&":"")+n);continue}(At(i)?i.map(f=>f&&Ki(f)):[i&&Ki(i)]).forEach(f=>{f!==void 0&&(o+=(o.length?"&":"")+n,f!=null&&(o+="="+f))})}return o}function iy(s){const o={};for(const n in s){const i=s[n];i!==void 0&&(o[n]=At(i)?i.map(u=>u==null?null:""+u):i==null?i:""+i)}return o}const sy=Symbol(""),rf=Symbol(""),es=Symbol(""),Zf=Symbol(""),zi=Symbol("");function qn(){let s=[];function o(i){return s.push(i),()=>{const u=s.indexOf(i);u>-1&&s.splice(u,1)}}function n(){s=[]}return{add:o,list:()=>s.slice(),reset:n}}function qt(s,o,n,i,u,f=l=>l()){const l=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((v,d)=>{const m=y=>{y===!1?d(Mn(4,{from:n,to:o})):y instanceof Error?d(y):jm(y)?d(Mn(2,{from:o,to:y})):(l&&i.enterCallbacks[u]===l&&typeof y=="function"&&l.push(y),v())},p=f(()=>s.call(i&&i.instances[u],o,n,m));let x=Promise.resolve(p);s.length<3&&(x=x.then(m)),x.catch(y=>d(y))})}function Wi(s,o,n,i,u=f=>f()){const f=[];for(const l of s)for(const v in l.components){let d=l.components[v];if(!(o!=="beforeRouteEnter"&&!l.instances[v]))if(ay(d)){const p=(d.__vccOpts||d)[o];p&&f.push(qt(p,n,i,l,v,u))}else{let m=d();f.push(()=>m.then(p=>{if(!p)return Promise.reject(new Error(`Couldn't resolve component "${v}" at "${l.path}"`));const x=hm(p)?p.default:p;l.components[v]=x;const E=(x.__vccOpts||x)[o];return E&&qt(E,n,i,l,v,u)()}))}}return f}function ay(s){return typeof s=="object"||"displayName"in s||"props"in s||"__vccOpts"in s}function of(s){const o=Ot(es),n=Ot(Zf),i=Ae(()=>o.resolve(cn(s.to))),u=Ae(()=>{const{matched:d}=i.value,{length:m}=d,p=d[m-1],x=n.matched;if(!p||!x.length)return-1;const y=x.findIndex(Pn.bind(null,p));if(y>-1)return y;const E=sf(d[m-2]);return m>1&&sf(p)===E&&x[x.length-1].path!==E?x.findIndex(Pn.bind(null,d[m-2])):y}),f=Ae(()=>u.value>-1&&cy(n.params,i.value.params)),l=Ae(()=>u.value>-1&&u.value===n.matched.length-1&&Vf(n.params,i.value.params));function v(d={}){return ly(d)?o[cn(s.replace)?"replace":"push"](cn(s.to)).catch(rr):Promise.resolve()}return{route:i,href:Ae(()=>i.value.href),isActive:f,isExactActive:l,navigate:v}}const uy=Af({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:of,setup(s,{slots:o}){const n=Gt(of(s)),{options:i}=Ot(es),u=Ae(()=>({[af(s.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[af(s.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const f=o.default&&o.default(n);return s.custom?f:Tf("a",{"aria-current":n.isExactActive?s.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:u.value},f)}}}),fy=uy;function ly(s){if(!(s.metaKey||s.altKey||s.ctrlKey||s.shiftKey)&&!s.defaultPrevented&&!(s.button!==void 0&&s.button!==0)){if(s.currentTarget&&s.currentTarget.getAttribute){const o=s.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(o))return}return s.preventDefault&&s.preventDefault(),!0}}function cy(s,o){for(const n in o){const i=o[n],u=s[n];if(typeof i=="string"){if(i!==u)return!1}else if(!At(u)||u.length!==i.length||i.some((f,l)=>f!==u[l]))return!1}return!0}function sf(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const af=(s,o,n)=>s??o??n,dy=Af({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(s,{attrs:o,slots:n}){const i=Ot(zi),u=Ae(()=>s.route||i.value),f=Ot(rf,0),l=Ae(()=>{let m=cn(f);const{matched:p}=u.value;let x;for(;(x=p[m])&&!x.components;)m++;return m}),v=Ae(()=>u.value.matched[l.value]);nr(rf,Ae(()=>l.value+1)),nr(sy,v),nr(zi,u);const d=to();return Qi(()=>[d.value,v.value,s.name],([m,p,x],[y,E,L])=>{p&&(p.instances[x]=m,E&&E!==p&&m&&m===y&&(p.leaveGuards.size||(p.leaveGuards=E.leaveGuards),p.updateGuards.size||(p.updateGuards=E.updateGuards))),m&&p&&(!E||!Pn(p,E)||!y)&&(p.enterCallbacks[x]||[]).forEach(A=>A(m))},{flush:"post"}),()=>{const m=u.value,p=s.name,x=v.value,y=x&&x.components[p];if(!y)return uf(n.default,{Component:y,route:m});const E=x.props[p],L=E?E===!0?m.params:typeof E=="function"?E(m):E:null,T=Tf(y,Se({},L,o,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(x.instances[p]=null)},ref:d}));return uf(n.default,{Component:T,route:m})||T}}});function uf(s,o){if(!s)return null;const n=s(o);return n.length===1?n[0]:n}const hy=dy;function py(s){const o=ey(s.routes,s),n=s.parseQuery||oy,i=s.stringifyQuery||nf,u=s.history,f=qn(),l=qn(),v=qn(),d=Cn(_t);let m=_t;On&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=Fi.bind(null,W=>""+W),x=Fi.bind(null,wm),y=Fi.bind(null,ir);function E(W,X){let z,_;return jf(W)?(z=o.getRecordMatcher(W),_=X):_=W,o.addRoute(_,z)}function L(W){const X=o.getRecordMatcher(W);X&&o.removeRoute(X)}function A(){return o.getRoutes().map(W=>W.record)}function T(W){return!!o.getRecordMatcher(W)}function I(W,X){if(X=Se({},X||d.value),typeof W=="string"){const ee=Bi(n,W,X.path),we=o.resolve({path:ee.path},X),en=u.createHref(ee.fullPath);return Se(ee,we,{params:y(we.params),hash:ir(ee.hash),redirectedFrom:void 0,href:en})}let z;if(W.path!=null)z=Se({},W,{path:Bi(n,W.path,X.path).path});else{const ee=Se({},W.params);for(const we in ee)ee[we]==null&&delete ee[we];z=Se({},W,{params:x(ee)}),X.params=x(X.params)}const _=o.resolve(z,X),ge=W.hash||"";_.params=p(y(_.params));const Te=Im(i,Se({},W,{hash:Lm(ge),path:_.path})),fe=u.createHref(Te);return Se({fullPath:Te,hash:ge,query:i===nf?iy(W.query):W.query||{}},_,{redirectedFrom:void 0,href:fe})}function O(W){return typeof W=="string"?Bi(n,W,d.value.path):Se({},W)}function P(W,X){if(m!==W)return Mn(8,{from:X,to:W})}function $(W){return G(W)}function j(W){return $(Se(O(W),{replace:!0}))}function H(W){const X=W.matched[W.matched.length-1];if(X&&X.redirect){const{redirect:z}=X;let _=typeof z=="function"?z(W):z;return typeof _=="string"&&(_=_.includes("?")||_.includes("#")?_=O(_):{path:_},_.params={}),Se({query:W.query,hash:W.hash,params:_.path!=null?{}:W.params},_)}}function G(W,X){const z=m=I(W),_=d.value,ge=W.state,Te=W.force,fe=W.replace===!0,ee=H(z);if(ee)return G(Se(O(ee),{state:typeof ee=="object"?Se({},ge,ee.state):ge,force:Te,replace:fe}),X||z);const we=z;we.redirectedFrom=X;let en;return!Te&&Cm(i,_,z)&&(en=Mn(16,{to:we,from:_}),Ce(_,_,!0,!1)),(en?Promise.resolve(en):V(we,_)).catch(Oe=>$t(Oe)?$t(Oe,2)?Oe:ve(Oe):ce(Oe,we,_)).then(Oe=>{if(Oe){if($t(Oe,2))return G(Se({replace:fe},O(Oe.to),{state:typeof Oe.to=="object"?Se({},ge,Oe.to.state):ge,force:Te}),X||we)}else Oe=Z(we,_,!0,fe,ge);return K(we,_,Oe),Oe})}function M(W,X){const z=P(W,X);return z?Promise.reject(z):Promise.resolve()}function N(W){const X=vt.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(W):W()}function V(W,X){let z;const[_,ge,Te]=vy(W,X);z=Wi(_.reverse(),"beforeRouteLeave",W,X);for(const ee of _)ee.leaveGuards.forEach(we=>{z.push(qt(we,W,X))});const fe=M.bind(null,W,X);return z.push(fe),De(z).then(()=>{z=[];for(const ee of f.list())z.push(qt(ee,W,X));return z.push(fe),De(z)}).then(()=>{z=Wi(ge,"beforeRouteUpdate",W,X);for(const ee of ge)ee.updateGuards.forEach(we=>{z.push(qt(we,W,X))});return z.push(fe),De(z)}).then(()=>{z=[];for(const ee of Te)if(ee.beforeEnter)if(At(ee.beforeEnter))for(const we of ee.beforeEnter)z.push(qt(we,W,X));else z.push(qt(ee.beforeEnter,W,X));return z.push(fe),De(z)}).then(()=>(W.matched.forEach(ee=>ee.enterCallbacks={}),z=Wi(Te,"beforeRouteEnter",W,X,N),z.push(fe),De(z))).then(()=>{z=[];for(const ee of l.list())z.push(qt(ee,W,X));return z.push(fe),De(z)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(W,X,z){v.list().forEach(_=>N(()=>_(W,X,z)))}function Z(W,X,z,_,ge){const Te=P(W,X);if(Te)return Te;const fe=X===_t,ee=On?history.state:{};z&&(_||fe?u.replace(W.fullPath,Se({scroll:fe&&ee&&ee.scroll},ge)):u.push(W.fullPath,ge)),d.value=W,Ce(W,X,z,fe),ve()}let Y;function pe(){Y||(Y=u.listen((W,X,z)=>{const _=I(W),ge=H(_);if(ge){G(Se(ge,{replace:!0}),_).catch(rr);return}m=_;const Te=d.value;On&&Nm(Yu(Te.fullPath,z.delta),lo()),V(_,Te).catch(fe=>$t(fe,12)?fe:$t(fe,2)?(G(fe.to,_).then(ee=>{$t(ee,20)&&!z.delta&&z.type===sr.pop&&u.go(-1,!1)}).catch(rr),Promise.reject()):(z.delta&&u.go(-z.delta,!1),ce(fe,_,Te))).then(fe=>{fe=fe||Z(_,Te,!1),fe&&(z.delta&&!$t(fe,8)?u.go(-z.delta,!1):z.type===sr.pop&&$t(fe,20)&&u.go(-1,!1)),K(_,Te,fe)}).catch(rr)}))}let Ee=qn(),We=qn(),ue;function ce(W,X,z){ve(W);const _=We.list();return _.length?_.forEach(ge=>ge(W,X,z)):console.error(W),Promise.reject(W)}function Me(){return ue&&d.value!==_t?Promise.resolve():new Promise((W,X)=>{Ee.add([W,X])})}function ve(W){return ue||(ue=!W,pe(),Ee.list().forEach(([X,z])=>W?z(W):X()),Ee.reset()),W}function Ce(W,X,z,_){const{scrollBehavior:ge}=s;if(!On||!ge)return Promise.resolve();const Te=!z&&$m(Yu(W.fullPath,0))||(_||!z)&&history.state&&history.state.scroll||null;return Ji().then(()=>ge(W,X,Te)).then(fe=>fe&&Wm(fe)).catch(fe=>ce(fe,W,X))}const je=W=>u.go(W);let Ge;const vt=new Set,gt={currentRoute:d,listening:!0,addRoute:E,removeRoute:L,hasRoute:T,getRoutes:A,resolve:I,options:s,push:$,replace:j,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:f.add,beforeResolve:l.add,afterEach:v.add,onError:We.add,isReady:Me,install(W){const X=this;W.component("RouterLink",fy),W.component("RouterView",hy),W.config.globalProperties.$router=X,Object.defineProperty(W.config.globalProperties,"$route",{enumerable:!0,get:()=>cn(d)}),On&&!Ge&&d.value===_t&&(Ge=!0,$(u.location).catch(ge=>{}));const z={};for(const ge in _t)Object.defineProperty(z,ge,{get:()=>d.value[ge],enumerable:!0});W.provide(es,X),W.provide(Zf,j1(z)),W.provide(zi,d);const _=W.unmount;vt.add(W),W.unmount=function(){vt.delete(W),vt.size<1&&(m=_t,Y&&Y(),Y=null,d.value=_t,Ge=!1,ue=!1),_()}}};function De(W){return W.reduce((X,z)=>X.then(()=>N(z)),Promise.resolve())}return gt}function vy(s,o){const n=[],i=[],u=[],f=Math.max(o.matched.length,s.matched.length);for(let l=0;l<f;l++){const v=o.matched[l];v&&(s.matched.find(m=>Pn(m,v))?i.push(v):n.push(v));const d=s.matched[l];d&&(o.matched.find(m=>Pn(m,d))||u.push(d))}return[n,i,u]}const gy=()=>It(()=>import("./admin-CuJft8Kj.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),my=()=>It(()=>import("./browser-9_vS5P8d.js"),__vite__mapDeps([19,1,2,3,4,5,6,7,8,9,10,11,12,13,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,17,35])),yy=()=>It(()=>import("./http-error-5WhCKib6.js"),__vite__mapDeps([36,2,3,16,17,37])),xy=()=>It(()=>import("./reader-zEw6Fz0p.js"),__vite__mapDeps([38,1,2,3,4,5,6,7,8,9,10,11,12,13,20,21,22,23,24,25,14,15,39,40,31,32,41,42,16,17,43])),Sy=()=>It(()=>import("./flag-tab-BDPywFPd.js"),__vite__mapDeps([44,2,3,29,30,31,22,9,10,32,45])),Ey=()=>It(()=>import("./user-tab-CUFrpTg3.js"),__vite__mapDeps([46,7,8,5,2,3,6,9,10,11,12,47,33,34,21,22,23,29,30,27,48,49,50,31,32])),by=()=>It(()=>import("./group-tab-KqXSGW5M.js"),__vite__mapDeps([51,47,2,3,8,5,6,9,10,11,33,34,21,22,23,29,30,27,48,39,40,52])),Ly=()=>It(()=>import("./library-tab-BqoBlTet.js"),__vite__mapDeps([53,33,5,2,3,6,34,47,8,9,10,11,21,22,23,29,30,27,48,49,50,41,42,26,28,31,32,54])),Ay=()=>It(()=>import("./task-tab-BN1YRCAx.js"),__vite__mapDeps([55,33,5,2,3,6,34,56])),Ty=()=>It(()=>import("./stats-tab-qkgb7Upv.js"),__vite__mapDeps([57,33,5,2,3,6,34,4,24,29,30,58])),wy={name:"browser",params:window.CODEX.LAST_ROUTE||Bf.route},Ry=[{name:"home",path:"/",redirect:wy},{name:"reader",path:"/c/:pk/:page",component:xy},{name:"browser",path:"/:group/:pk/:page",component:my},{name:"admin",path:"/admin",component:gy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:Ey},{name:"admin-groups",path:"groups",component:by},{name:"admin-libraries",path:"libraries",component:Ly},{name:"admin-flags",path:"flags",component:Sy},{name:"admin-tasks",path:"tasks",component:Ay},{name:"admin-stats",path:"stats",component:Ty}]},{name:"error",path:"/error/:code",component:yy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Lt=new py({history:Km(window.CODEX.APP_PATH),routes:Ry});var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Yf(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function Y2(s){if(s.__esModule)return s;var o=s.default;if(typeof o=="function"){var n=function i(){return this instanceof i?Reflect.construct(o,arguments,this.constructor):o.apply(this,arguments)};n.prototype=o.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var u=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(n,i,u.get?u:{enumerable:!0,get:function(){return s[i]}})}),n}var io={exports:{}};/**
11
+ */const On=typeof document<"u";function hm(s){return s.__esModule||s[Symbol.toStringTag]==="Module"}const Se=Object.assign;function Fi(s,o){const n={};for(const i in o){const u=o[i];n[i]=At(u)?u.map(s):s(u)}return n}const rr=()=>{},At=Array.isArray,Wf=/#/g,pm=/&/g,vm=/\//g,gm=/=/g,mm=/\?/g,Nf=/\+/g,ym=/%5B/g,xm=/%5D/g,$f=/%5E/g,Sm=/%60/g,Gf=/%7B/g,Em=/%7C/g,Uf=/%7D/g,bm=/%20/g;function qi(s){return encodeURI(""+s).replace(Em,"|").replace(ym,"[").replace(xm,"]")}function Lm(s){return qi(s).replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Ki(s){return qi(s).replace(Nf,"%2B").replace(bm,"+").replace(Wf,"%23").replace(pm,"%26").replace(Sm,"`").replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Am(s){return Ki(s).replace(gm,"%3D")}function Tm(s){return qi(s).replace(Wf,"%23").replace(mm,"%3F")}function wm(s){return s==null?"":Tm(s).replace(vm,"%2F")}function ir(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const Rm=/\/$/,Om=s=>s.replace(Rm,"");function Bi(s,o,n="/"){let i,u={},f="",l="";const v=o.indexOf("#");let d=o.indexOf("?");return v<d&&v>=0&&(d=-1),d>-1&&(i=o.slice(0,d),f=o.slice(d+1,v>-1?v:o.length),u=s(f)),v>-1&&(i=i||o.slice(0,v),l=o.slice(v,o.length)),i=Mm(i??o,n),{fullPath:i+(f&&"?")+f+l,path:i,query:u,hash:ir(l)}}function Im(s,o){const n=o.query?s(o.query):"";return o.path+(n&&"?")+n+(o.hash||"")}function ku(s,o){return!o||!s.toLowerCase().startsWith(o.toLowerCase())?s:s.slice(o.length)||"/"}function Cm(s,o,n){const i=o.matched.length-1,u=n.matched.length-1;return i>-1&&i===u&&Pn(o.matched[i],n.matched[u])&&Vf(o.params,n.params)&&s(o.query)===s(n.query)&&o.hash===n.hash}function Pn(s,o){return(s.aliasOf||s)===(o.aliasOf||o)}function Vf(s,o){if(Object.keys(s).length!==Object.keys(o).length)return!1;for(const n in s)if(!Pm(s[n],o[n]))return!1;return!0}function Pm(s,o){return At(s)?Zu(s,o):At(o)?Zu(o,s):s===o}function Zu(s,o){return At(o)?s.length===o.length&&s.every((n,i)=>n===o[i]):s.length===1&&s[0]===o}function Mm(s,o){if(s.startsWith("/"))return s;if(!s)return o;const n=o.split("/"),i=s.split("/"),u=i[i.length-1];(u===".."||u===".")&&i.push("");let f=n.length-1,l,v;for(l=0;l<i.length;l++)if(v=i[l],v!==".")if(v==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(l).join("/")}var sr;(function(s){s.pop="pop",s.push="push"})(sr||(sr={}));var or;(function(s){s.back="back",s.forward="forward",s.unknown=""})(or||(or={}));function Dm(s){if(!s)if(On){const o=document.querySelector("base");s=o&&o.getAttribute("href")||"/",s=s.replace(/^\w+:\/\/[^\/]+/,"")}else s="/";return s[0]!=="/"&&s[0]!=="#"&&(s="/"+s),Om(s)}const Hm=/^[^#]+#/;function Fm(s,o){return s.replace(Hm,"#")+o}function Bm(s,o){const n=document.documentElement.getBoundingClientRect(),i=s.getBoundingClientRect();return{behavior:o.behavior,left:i.left-n.left-(o.left||0),top:i.top-n.top-(o.top||0)}}const lo=()=>({left:window.scrollX,top:window.scrollY});function Wm(s){let o;if("el"in s){const n=s.el,i=typeof n=="string"&&n.startsWith("#"),u=typeof n=="string"?i?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!u)return;o=Bm(u,s)}else o=s;"scrollBehavior"in document.documentElement.style?window.scrollTo(o):window.scrollTo(o.left!=null?o.left:window.scrollX,o.top!=null?o.top:window.scrollY)}function Yu(s,o){return(history.state?history.state.position-o:-1)+s}const ji=new Map;function Nm(s,o){ji.set(s,o)}function $m(s){const o=ji.get(s);return ji.delete(s),o}let Gm=()=>location.protocol+"//"+location.host;function Kf(s,o){const{pathname:n,search:i,hash:u}=o,f=s.indexOf("#");if(f>-1){let v=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(v);return d[0]!=="/"&&(d="/"+d),ku(d,"")}return ku(n,s)+i+u}function Um(s,o,n,i){let u=[],f=[],l=null;const v=({state:y})=>{const E=Kf(s,location),L=n.value,A=o.value;let T=0;if(y){if(n.value=E,o.value=y,l&&l===L){l=null;return}T=A?y.position-A.position:0}else i(E);u.forEach(I=>{I(n.value,L,{delta:T,type:sr.pop,direction:T?T>0?or.forward:or.back:or.unknown})})};function d(){l=n.value}function m(y){u.push(y);const E=()=>{const L=u.indexOf(y);L>-1&&u.splice(L,1)};return f.push(E),E}function p(){const{history:y}=window;y.state&&y.replaceState(Se({},y.state,{scroll:lo()}),"")}function x(){for(const y of f)y();f=[],window.removeEventListener("popstate",v),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",v),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:d,listen:m,destroy:x}}function Xu(s,o,n,i=!1,u=!1){return{back:s,current:o,forward:n,replaced:i,position:window.history.length,scroll:u?lo():null}}function Vm(s){const{history:o,location:n}=window,i={value:Kf(s,n)},u={value:o.state};u.value||f(i.value,{back:null,current:i.value,forward:null,position:o.length-1,replaced:!0,scroll:null},!0);function f(d,m,p){const x=s.indexOf("#"),y=x>-1?(n.host&&document.querySelector("base")?s:s.slice(x))+d:Gm()+s+d;try{o[p?"replaceState":"pushState"](m,"",y),u.value=m}catch(E){console.error(E),n[p?"replace":"assign"](y)}}function l(d,m){const p=Se({},o.state,Xu(u.value.back,d,u.value.forward,!0),m,{position:u.value.position});f(d,p,!0),i.value=d}function v(d,m){const p=Se({},u.value,o.state,{forward:d,scroll:lo()});f(p.current,p,!0);const x=Se({},Xu(i.value,d,null),{position:p.position+1},m);f(d,x,!1),i.value=d}return{location:i,state:u,push:v,replace:l}}function Km(s){s=Dm(s);const o=Vm(s),n=Um(s,o.state,o.location,o.replace);function i(f,l=!0){l||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:Fm.bind(null,s)},o,n);return Object.defineProperty(u,"location",{enumerable:!0,get:()=>o.location.value}),Object.defineProperty(u,"state",{enumerable:!0,get:()=>o.state.value}),u}function jm(s){return typeof s=="string"||s&&typeof s=="object"}function jf(s){return typeof s=="string"||typeof s=="symbol"}const _t={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},zf=Symbol("");var Ju;(function(s){s[s.aborted=4]="aborted",s[s.cancelled=8]="cancelled",s[s.duplicated=16]="duplicated"})(Ju||(Ju={}));function Mn(s,o){return Se(new Error,{type:s,[zf]:!0},o)}function $t(s,o){return s instanceof Error&&zf in s&&(o==null||!!(s.type&o))}const Qu="[^/]+?",zm={sensitive:!1,strict:!1,start:!0,end:!0},km=/[.+*?^${}()[\]/\\]/g;function Zm(s,o){const n=Se({},zm,o),i=[];let u=n.start?"^":"";const f=[];for(const m of s){const p=m.length?[]:[90];n.strict&&!m.length&&(u+="/");for(let x=0;x<m.length;x++){const y=m[x];let E=40+(n.sensitive?.25:0);if(y.type===0)x||(u+="/"),u+=y.value.replace(km,"\\$&"),E+=40;else if(y.type===1){const{value:L,repeatable:A,optional:T,regexp:I}=y;f.push({name:L,repeatable:A,optional:T});const O=I||Qu;if(O!==Qu){E+=10;try{new RegExp(`(${O})`)}catch($){throw new Error(`Invalid custom RegExp for param "${L}" (${O}): `+$.message)}}let P=A?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;x||(P=T&&m.length<2?`(?:/${P})`:"/"+P),T&&(P+="?"),u+=P,E+=20,T&&(E+=-8),A&&(E+=-20),O===".*"&&(E+=-50)}p.push(E)}i.push(p)}if(n.strict&&n.end){const m=i.length-1;i[m][i[m].length-1]+=.7000000000000001}n.strict||(u+="/?"),n.end?u+="$":n.strict&&(u+="(?:/|$)");const l=new RegExp(u,n.sensitive?"":"i");function v(m){const p=m.match(l),x={};if(!p)return null;for(let y=1;y<p.length;y++){const E=p[y]||"",L=f[y-1];x[L.name]=E&&L.repeatable?E.split("/"):E}return x}function d(m){let p="",x=!1;for(const y of s){(!x||!p.endsWith("/"))&&(p+="/"),x=!1;for(const E of y)if(E.type===0)p+=E.value;else if(E.type===1){const{value:L,repeatable:A,optional:T}=E,I=L in m?m[L]:"";if(At(I)&&!A)throw new Error(`Provided param "${L}" is an array but it is not repeatable (* or + modifiers)`);const O=At(I)?I.join("/"):I;if(!O)if(T)y.length<2&&(p.endsWith("/")?p=p.slice(0,-1):x=!0);else throw new Error(`Missing required param "${L}"`);p+=O}}return p||"/"}return{re:l,score:i,keys:f,parse:v,stringify:d}}function Ym(s,o){let n=0;for(;n<s.length&&n<o.length;){const i=o[n]-s[n];if(i)return i;n++}return s.length<o.length?s.length===1&&s[0]===80?-1:1:s.length>o.length?o.length===1&&o[0]===80?1:-1:0}function Xm(s,o){let n=0;const i=s.score,u=o.score;for(;n<i.length&&n<u.length;){const f=Ym(i[n],u[n]);if(f)return f;n++}if(Math.abs(u.length-i.length)===1){if(_u(i))return 1;if(_u(u))return-1}return u.length-i.length}function _u(s){const o=s[s.length-1];return s.length>0&&o[o.length-1]<0}const Jm={type:0,value:""},Qm=/[a-zA-Z0-9_]/;function _m(s){if(!s)return[[]];if(s==="/")return[[Jm]];if(!s.startsWith("/"))throw new Error(`Invalid path "${s}"`);function o(E){throw new Error(`ERR (${n})/"${m}": ${E}`)}let n=0,i=n;const u=[];let f;function l(){f&&u.push(f),f=[]}let v=0,d,m="",p="";function x(){m&&(n===0?f.push({type:0,value:m}):n===1||n===2||n===3?(f.length>1&&(d==="*"||d==="+")&&o(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),f.push({type:1,value:m,regexp:p,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):o("Invalid state to consume buffer"),m="")}function y(){m+=d}for(;v<s.length;){if(d=s[v++],d==="\\"&&n!==2){i=n,n=4;continue}switch(n){case 0:d==="/"?(m&&x(),l()):d===":"?(x(),n=1):y();break;case 4:y(),n=i;break;case 1:d==="("?n=2:Qm.test(d)?y():(x(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&v--);break;case 2:d===")"?p[p.length-1]=="\\"?p=p.slice(0,-1)+d:n=3:p+=d;break;case 3:x(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&v--,p="";break;default:o("Unknown state");break}}return n===2&&o(`Unfinished custom RegExp for param "${m}"`),x(),l(),u}function qm(s,o,n){const i=Zm(_m(s.path),n),u=Se(i,{record:s,parent:o,children:[],alias:[]});return o&&!u.record.aliasOf==!o.record.aliasOf&&o.children.push(u),u}function ey(s,o){const n=[],i=new Map;o=tf({strict:!1,end:!0,sensitive:!1},o);function u(p){return i.get(p)}function f(p,x,y){const E=!y,L=ty(p);L.aliasOf=y&&y.record;const A=tf(o,p),T=[L];if("alias"in p){const P=typeof p.alias=="string"?[p.alias]:p.alias;for(const $ of P)T.push(Se({},L,{components:y?y.record.components:L.components,path:$,aliasOf:y?y.record:L}))}let I,O;for(const P of T){const{path:$}=P;if(x&&$[0]!=="/"){const j=x.record.path,H=j[j.length-1]==="/"?"":"/";P.path=x.record.path+($&&H+$)}if(I=qm(P,x,A),y?y.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),E&&p.name&&!ef(I)&&l(p.name)),L.children){const j=L.children;for(let H=0;H<j.length;H++)f(j[H],I,y&&y.children[H])}y=y||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{l(O)}:rr}function l(p){if(jf(p)){const x=i.get(p);x&&(i.delete(p),n.splice(n.indexOf(x),1),x.children.forEach(l),x.alias.forEach(l))}else{const x=n.indexOf(p);x>-1&&(n.splice(x,1),p.record.name&&i.delete(p.record.name),p.children.forEach(l),p.alias.forEach(l))}}function v(){return n}function d(p){let x=0;for(;x<n.length&&Xm(p,n[x])>=0&&(p.record.path!==n[x].record.path||!kf(p,n[x]));)x++;n.splice(x,0,p),p.record.name&&!ef(p)&&i.set(p.record.name,p)}function m(p,x){let y,E={},L,A;if("name"in p&&p.name){if(y=i.get(p.name),!y)throw Mn(1,{location:p});A=y.record.name,E=Se(qu(x.params,y.keys.filter(O=>!O.optional).concat(y.parent?y.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),p.params&&qu(p.params,y.keys.map(O=>O.name))),L=y.stringify(E)}else if(p.path!=null)L=p.path,y=n.find(O=>O.re.test(L)),y&&(E=y.parse(L),A=y.record.name);else{if(y=x.name?i.get(x.name):n.find(O=>O.re.test(x.path)),!y)throw Mn(1,{location:p,currentLocation:x});A=y.record.name,E=Se({},x.params,p.params),L=y.stringify(E)}const T=[];let I=y;for(;I;)T.unshift(I.record),I=I.parent;return{name:A,path:L,params:E,matched:T,meta:ry(T)}}return s.forEach(p=>f(p)),{addRoute:f,resolve:m,removeRoute:l,getRoutes:v,getRecordMatcher:u}}function qu(s,o){const n={};for(const i of o)i in s&&(n[i]=s[i]);return n}function ty(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:ny(s),children:s.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in s?s.components||null:s.component&&{default:s.component}}}function ny(s){const o={},n=s.props||!1;if("component"in s)o.default=n;else for(const i in s.components)o[i]=typeof n=="object"?n[i]:n;return o}function ef(s){for(;s;){if(s.record.aliasOf)return!0;s=s.parent}return!1}function ry(s){return s.reduce((o,n)=>Se(o,n.meta),{})}function tf(s,o){const n={};for(const i in s)n[i]=i in o?o[i]:s[i];return n}function kf(s,o){return o.children.some(n=>n===s||kf(s,n))}function oy(s){const o={};if(s===""||s==="?")return o;const i=(s[0]==="?"?s.slice(1):s).split("&");for(let u=0;u<i.length;++u){const f=i[u].replace(Nf," "),l=f.indexOf("="),v=ir(l<0?f:f.slice(0,l)),d=l<0?null:ir(f.slice(l+1));if(v in o){let m=o[v];At(m)||(m=o[v]=[m]),m.push(d)}else o[v]=d}return o}function nf(s){let o="";for(let n in s){const i=s[n];if(n=Am(n),i==null){i!==void 0&&(o+=(o.length?"&":"")+n);continue}(At(i)?i.map(f=>f&&Ki(f)):[i&&Ki(i)]).forEach(f=>{f!==void 0&&(o+=(o.length?"&":"")+n,f!=null&&(o+="="+f))})}return o}function iy(s){const o={};for(const n in s){const i=s[n];i!==void 0&&(o[n]=At(i)?i.map(u=>u==null?null:""+u):i==null?i:""+i)}return o}const sy=Symbol(""),rf=Symbol(""),es=Symbol(""),Zf=Symbol(""),zi=Symbol("");function qn(){let s=[];function o(i){return s.push(i),()=>{const u=s.indexOf(i);u>-1&&s.splice(u,1)}}function n(){s=[]}return{add:o,list:()=>s.slice(),reset:n}}function qt(s,o,n,i,u,f=l=>l()){const l=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((v,d)=>{const m=y=>{y===!1?d(Mn(4,{from:n,to:o})):y instanceof Error?d(y):jm(y)?d(Mn(2,{from:o,to:y})):(l&&i.enterCallbacks[u]===l&&typeof y=="function"&&l.push(y),v())},p=f(()=>s.call(i&&i.instances[u],o,n,m));let x=Promise.resolve(p);s.length<3&&(x=x.then(m)),x.catch(y=>d(y))})}function Wi(s,o,n,i,u=f=>f()){const f=[];for(const l of s)for(const v in l.components){let d=l.components[v];if(!(o!=="beforeRouteEnter"&&!l.instances[v]))if(ay(d)){const p=(d.__vccOpts||d)[o];p&&f.push(qt(p,n,i,l,v,u))}else{let m=d();f.push(()=>m.then(p=>{if(!p)return Promise.reject(new Error(`Couldn't resolve component "${v}" at "${l.path}"`));const x=hm(p)?p.default:p;l.components[v]=x;const E=(x.__vccOpts||x)[o];return E&&qt(E,n,i,l,v,u)()}))}}return f}function ay(s){return typeof s=="object"||"displayName"in s||"props"in s||"__vccOpts"in s}function of(s){const o=Ot(es),n=Ot(Zf),i=Ae(()=>o.resolve(cn(s.to))),u=Ae(()=>{const{matched:d}=i.value,{length:m}=d,p=d[m-1],x=n.matched;if(!p||!x.length)return-1;const y=x.findIndex(Pn.bind(null,p));if(y>-1)return y;const E=sf(d[m-2]);return m>1&&sf(p)===E&&x[x.length-1].path!==E?x.findIndex(Pn.bind(null,d[m-2])):y}),f=Ae(()=>u.value>-1&&cy(n.params,i.value.params)),l=Ae(()=>u.value>-1&&u.value===n.matched.length-1&&Vf(n.params,i.value.params));function v(d={}){return ly(d)?o[cn(s.replace)?"replace":"push"](cn(s.to)).catch(rr):Promise.resolve()}return{route:i,href:Ae(()=>i.value.href),isActive:f,isExactActive:l,navigate:v}}const uy=Af({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:of,setup(s,{slots:o}){const n=Gt(of(s)),{options:i}=Ot(es),u=Ae(()=>({[af(s.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[af(s.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const f=o.default&&o.default(n);return s.custom?f:Tf("a",{"aria-current":n.isExactActive?s.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:u.value},f)}}}),fy=uy;function ly(s){if(!(s.metaKey||s.altKey||s.ctrlKey||s.shiftKey)&&!s.defaultPrevented&&!(s.button!==void 0&&s.button!==0)){if(s.currentTarget&&s.currentTarget.getAttribute){const o=s.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(o))return}return s.preventDefault&&s.preventDefault(),!0}}function cy(s,o){for(const n in o){const i=o[n],u=s[n];if(typeof i=="string"){if(i!==u)return!1}else if(!At(u)||u.length!==i.length||i.some((f,l)=>f!==u[l]))return!1}return!0}function sf(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const af=(s,o,n)=>s??o??n,dy=Af({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(s,{attrs:o,slots:n}){const i=Ot(zi),u=Ae(()=>s.route||i.value),f=Ot(rf,0),l=Ae(()=>{let m=cn(f);const{matched:p}=u.value;let x;for(;(x=p[m])&&!x.components;)m++;return m}),v=Ae(()=>u.value.matched[l.value]);nr(rf,Ae(()=>l.value+1)),nr(sy,v),nr(zi,u);const d=to();return Qi(()=>[d.value,v.value,s.name],([m,p,x],[y,E,L])=>{p&&(p.instances[x]=m,E&&E!==p&&m&&m===y&&(p.leaveGuards.size||(p.leaveGuards=E.leaveGuards),p.updateGuards.size||(p.updateGuards=E.updateGuards))),m&&p&&(!E||!Pn(p,E)||!y)&&(p.enterCallbacks[x]||[]).forEach(A=>A(m))},{flush:"post"}),()=>{const m=u.value,p=s.name,x=v.value,y=x&&x.components[p];if(!y)return uf(n.default,{Component:y,route:m});const E=x.props[p],L=E?E===!0?m.params:typeof E=="function"?E(m):E:null,T=Tf(y,Se({},L,o,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(x.instances[p]=null)},ref:d}));return uf(n.default,{Component:T,route:m})||T}}});function uf(s,o){if(!s)return null;const n=s(o);return n.length===1?n[0]:n}const hy=dy;function py(s){const o=ey(s.routes,s),n=s.parseQuery||oy,i=s.stringifyQuery||nf,u=s.history,f=qn(),l=qn(),v=qn(),d=Cn(_t);let m=_t;On&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=Fi.bind(null,W=>""+W),x=Fi.bind(null,wm),y=Fi.bind(null,ir);function E(W,X){let z,_;return jf(W)?(z=o.getRecordMatcher(W),_=X):_=W,o.addRoute(_,z)}function L(W){const X=o.getRecordMatcher(W);X&&o.removeRoute(X)}function A(){return o.getRoutes().map(W=>W.record)}function T(W){return!!o.getRecordMatcher(W)}function I(W,X){if(X=Se({},X||d.value),typeof W=="string"){const ee=Bi(n,W,X.path),we=o.resolve({path:ee.path},X),en=u.createHref(ee.fullPath);return Se(ee,we,{params:y(we.params),hash:ir(ee.hash),redirectedFrom:void 0,href:en})}let z;if(W.path!=null)z=Se({},W,{path:Bi(n,W.path,X.path).path});else{const ee=Se({},W.params);for(const we in ee)ee[we]==null&&delete ee[we];z=Se({},W,{params:x(ee)}),X.params=x(X.params)}const _=o.resolve(z,X),ge=W.hash||"";_.params=p(y(_.params));const Te=Im(i,Se({},W,{hash:Lm(ge),path:_.path})),fe=u.createHref(Te);return Se({fullPath:Te,hash:ge,query:i===nf?iy(W.query):W.query||{}},_,{redirectedFrom:void 0,href:fe})}function O(W){return typeof W=="string"?Bi(n,W,d.value.path):Se({},W)}function P(W,X){if(m!==W)return Mn(8,{from:X,to:W})}function $(W){return G(W)}function j(W){return $(Se(O(W),{replace:!0}))}function H(W){const X=W.matched[W.matched.length-1];if(X&&X.redirect){const{redirect:z}=X;let _=typeof z=="function"?z(W):z;return typeof _=="string"&&(_=_.includes("?")||_.includes("#")?_=O(_):{path:_},_.params={}),Se({query:W.query,hash:W.hash,params:_.path!=null?{}:W.params},_)}}function G(W,X){const z=m=I(W),_=d.value,ge=W.state,Te=W.force,fe=W.replace===!0,ee=H(z);if(ee)return G(Se(O(ee),{state:typeof ee=="object"?Se({},ge,ee.state):ge,force:Te,replace:fe}),X||z);const we=z;we.redirectedFrom=X;let en;return!Te&&Cm(i,_,z)&&(en=Mn(16,{to:we,from:_}),Ce(_,_,!0,!1)),(en?Promise.resolve(en):V(we,_)).catch(Oe=>$t(Oe)?$t(Oe,2)?Oe:ve(Oe):ce(Oe,we,_)).then(Oe=>{if(Oe){if($t(Oe,2))return G(Se({replace:fe},O(Oe.to),{state:typeof Oe.to=="object"?Se({},ge,Oe.to.state):ge,force:Te}),X||we)}else Oe=Z(we,_,!0,fe,ge);return K(we,_,Oe),Oe})}function M(W,X){const z=P(W,X);return z?Promise.reject(z):Promise.resolve()}function N(W){const X=vt.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(W):W()}function V(W,X){let z;const[_,ge,Te]=vy(W,X);z=Wi(_.reverse(),"beforeRouteLeave",W,X);for(const ee of _)ee.leaveGuards.forEach(we=>{z.push(qt(we,W,X))});const fe=M.bind(null,W,X);return z.push(fe),De(z).then(()=>{z=[];for(const ee of f.list())z.push(qt(ee,W,X));return z.push(fe),De(z)}).then(()=>{z=Wi(ge,"beforeRouteUpdate",W,X);for(const ee of ge)ee.updateGuards.forEach(we=>{z.push(qt(we,W,X))});return z.push(fe),De(z)}).then(()=>{z=[];for(const ee of Te)if(ee.beforeEnter)if(At(ee.beforeEnter))for(const we of ee.beforeEnter)z.push(qt(we,W,X));else z.push(qt(ee.beforeEnter,W,X));return z.push(fe),De(z)}).then(()=>(W.matched.forEach(ee=>ee.enterCallbacks={}),z=Wi(Te,"beforeRouteEnter",W,X,N),z.push(fe),De(z))).then(()=>{z=[];for(const ee of l.list())z.push(qt(ee,W,X));return z.push(fe),De(z)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(W,X,z){v.list().forEach(_=>N(()=>_(W,X,z)))}function Z(W,X,z,_,ge){const Te=P(W,X);if(Te)return Te;const fe=X===_t,ee=On?history.state:{};z&&(_||fe?u.replace(W.fullPath,Se({scroll:fe&&ee&&ee.scroll},ge)):u.push(W.fullPath,ge)),d.value=W,Ce(W,X,z,fe),ve()}let Y;function pe(){Y||(Y=u.listen((W,X,z)=>{const _=I(W),ge=H(_);if(ge){G(Se(ge,{replace:!0}),_).catch(rr);return}m=_;const Te=d.value;On&&Nm(Yu(Te.fullPath,z.delta),lo()),V(_,Te).catch(fe=>$t(fe,12)?fe:$t(fe,2)?(G(fe.to,_).then(ee=>{$t(ee,20)&&!z.delta&&z.type===sr.pop&&u.go(-1,!1)}).catch(rr),Promise.reject()):(z.delta&&u.go(-z.delta,!1),ce(fe,_,Te))).then(fe=>{fe=fe||Z(_,Te,!1),fe&&(z.delta&&!$t(fe,8)?u.go(-z.delta,!1):z.type===sr.pop&&$t(fe,20)&&u.go(-1,!1)),K(_,Te,fe)}).catch(rr)}))}let Ee=qn(),We=qn(),ue;function ce(W,X,z){ve(W);const _=We.list();return _.length?_.forEach(ge=>ge(W,X,z)):console.error(W),Promise.reject(W)}function Me(){return ue&&d.value!==_t?Promise.resolve():new Promise((W,X)=>{Ee.add([W,X])})}function ve(W){return ue||(ue=!W,pe(),Ee.list().forEach(([X,z])=>W?z(W):X()),Ee.reset()),W}function Ce(W,X,z,_){const{scrollBehavior:ge}=s;if(!On||!ge)return Promise.resolve();const Te=!z&&$m(Yu(W.fullPath,0))||(_||!z)&&history.state&&history.state.scroll||null;return Ji().then(()=>ge(W,X,Te)).then(fe=>fe&&Wm(fe)).catch(fe=>ce(fe,W,X))}const je=W=>u.go(W);let Ge;const vt=new Set,gt={currentRoute:d,listening:!0,addRoute:E,removeRoute:L,hasRoute:T,getRoutes:A,resolve:I,options:s,push:$,replace:j,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:f.add,beforeResolve:l.add,afterEach:v.add,onError:We.add,isReady:Me,install(W){const X=this;W.component("RouterLink",fy),W.component("RouterView",hy),W.config.globalProperties.$router=X,Object.defineProperty(W.config.globalProperties,"$route",{enumerable:!0,get:()=>cn(d)}),On&&!Ge&&d.value===_t&&(Ge=!0,$(u.location).catch(ge=>{}));const z={};for(const ge in _t)Object.defineProperty(z,ge,{get:()=>d.value[ge],enumerable:!0});W.provide(es,X),W.provide(Zf,j1(z)),W.provide(zi,d);const _=W.unmount;vt.add(W),W.unmount=function(){vt.delete(W),vt.size<1&&(m=_t,Y&&Y(),Y=null,d.value=_t,Ge=!1,ue=!1),_()}}};function De(W){return W.reduce((X,z)=>X.then(()=>N(z)),Promise.resolve())}return gt}function vy(s,o){const n=[],i=[],u=[],f=Math.max(o.matched.length,s.matched.length);for(let l=0;l<f;l++){const v=o.matched[l];v&&(s.matched.find(m=>Pn(m,v))?i.push(v):n.push(v));const d=s.matched[l];d&&(o.matched.find(m=>Pn(m,d))||u.push(d))}return[n,i,u]}const gy=()=>It(()=>import("./admin-at7U-7a0.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),my=()=>It(()=>import("./browser-ufllJIOQ.js"),__vite__mapDeps([19,1,2,3,4,5,6,7,8,9,10,11,12,13,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,16,17,35])),yy=()=>It(()=>import("./http-error-T3TJcTMI.js"),__vite__mapDeps([36,2,3,16,17,37])),xy=()=>It(()=>import("./reader-D0glX_SR.js"),__vite__mapDeps([38,1,2,3,4,5,6,7,8,9,10,11,12,13,20,21,22,23,24,25,14,15,39,40,31,32,41,42,16,17,43])),Sy=()=>It(()=>import("./flag-tab-9MO7gSJ6.js"),__vite__mapDeps([44,2,3,29,30,31,22,9,10,32,45])),Ey=()=>It(()=>import("./user-tab-Bh03ciSs.js"),__vite__mapDeps([46,7,8,5,2,3,6,9,10,11,12,47,33,34,21,22,23,29,30,27,48,49,50,31,32])),by=()=>It(()=>import("./group-tab-DJ1JSrhB.js"),__vite__mapDeps([51,47,2,3,8,5,6,9,10,11,33,34,21,22,23,29,30,27,48,39,40,52])),Ly=()=>It(()=>import("./library-tab-CFVsD5Op.js"),__vite__mapDeps([53,33,5,2,3,6,34,47,8,9,10,11,21,22,23,29,30,27,48,49,50,41,42,26,28,31,32,54])),Ay=()=>It(()=>import("./task-tab-ChM8mr0J.js"),__vite__mapDeps([55,33,5,2,3,6,34,56])),Ty=()=>It(()=>import("./stats-tab-6wQAa1PR.js"),__vite__mapDeps([57,33,5,2,3,6,34,4,24,29,30,58])),wy={name:"browser",params:window.CODEX.LAST_ROUTE||Bf.route},Ry=[{name:"home",path:"/",redirect:wy},{name:"reader",path:"/c/:pk/:page",component:xy},{name:"browser",path:"/:group/:pk/:page",component:my},{name:"admin",path:"/admin",component:gy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:Ey},{name:"admin-groups",path:"groups",component:by},{name:"admin-libraries",path:"libraries",component:Ly},{name:"admin-flags",path:"flags",component:Sy},{name:"admin-tasks",path:"tasks",component:Ay},{name:"admin-stats",path:"stats",component:Ty}]},{name:"error",path:"/error/:code",component:yy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Lt=new py({history:Km(window.CODEX.APP_PATH),routes:Ry});var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Yf(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function Y2(s){if(s.__esModule)return s;var o=s.default;if(typeof o=="function"){var n=function i(){return this instanceof i?Reflect.construct(o,arguments,this.constructor):o.apply(this,arguments)};n.prototype=o.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(s).forEach(function(i){var u=Object.getOwnPropertyDescriptor(s,i);Object.defineProperty(n,i,u.get?u:{enumerable:!0,get:function(){return s[i]}})}),n}var io={exports:{}};/**
12
12
  * @license
13
13
  * Lodash <https://lodash.com/>
14
14
  * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>