codex 1.5.0rc4__py3-none-any.whl → 1.5.2__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 (353) hide show
  1. codex/models/groups.py +5 -7
  2. codex/static_root/assets/{VCheckbox-Cz-fF2b5.d2885ebafa4d.js → VCheckbox-CIImgJ1M.7da55af0361a.js} +1 -1
  3. codex/static_root/assets/VCheckbox-CIImgJ1M.7da55af0361a.js.br +0 -0
  4. codex/static_root/assets/VCheckbox-CIImgJ1M.7da55af0361a.js.gz +0 -0
  5. codex/static_root/assets/{VCheckbox-Cz-fF2b5.js → VCheckbox-CIImgJ1M.js} +1 -1
  6. codex/static_root/assets/VCheckbox-CIImgJ1M.js.br +0 -0
  7. codex/static_root/assets/VCheckbox-CIImgJ1M.js.gz +0 -0
  8. codex/static_root/assets/{VCheckboxBtn-DdE8nBUu.dfd3152dd295.js → VCheckboxBtn-ByXBODq8.ec5505c4edee.js} +1 -1
  9. codex/static_root/assets/VCheckboxBtn-ByXBODq8.ec5505c4edee.js.br +0 -0
  10. codex/static_root/assets/VCheckboxBtn-ByXBODq8.ec5505c4edee.js.gz +0 -0
  11. codex/static_root/assets/{VCheckboxBtn-DdE8nBUu.js → VCheckboxBtn-ByXBODq8.js} +1 -1
  12. codex/static_root/assets/VCheckboxBtn-ByXBODq8.js.br +0 -0
  13. codex/static_root/assets/VCheckboxBtn-ByXBODq8.js.gz +0 -0
  14. codex/static_root/assets/{VCombobox-DPgfLJGo.29fd227b8558.js → VCombobox-g48TQOSv.af93dc36ce8c.js} +1 -1
  15. codex/static_root/assets/VCombobox-g48TQOSv.af93dc36ce8c.js.br +0 -0
  16. codex/static_root/assets/VCombobox-g48TQOSv.af93dc36ce8c.js.gz +0 -0
  17. codex/static_root/assets/{VCombobox-DPgfLJGo.js → VCombobox-g48TQOSv.js} +1 -1
  18. codex/static_root/assets/VCombobox-g48TQOSv.js.br +0 -0
  19. codex/static_root/assets/VCombobox-g48TQOSv.js.gz +0 -0
  20. codex/static_root/assets/{VDataTableVirtual-CECOrU_F.8fad0114605f.js → VDataTableVirtual-C6eUX_Wh.49e588b8426d.js} +1 -1
  21. codex/static_root/assets/VDataTableVirtual-C6eUX_Wh.49e588b8426d.js.br +0 -0
  22. codex/static_root/assets/VDataTableVirtual-C6eUX_Wh.49e588b8426d.js.gz +0 -0
  23. codex/static_root/assets/{VDataTableVirtual-CECOrU_F.js → VDataTableVirtual-C6eUX_Wh.js} +1 -1
  24. codex/static_root/assets/VDataTableVirtual-C6eUX_Wh.js.br +0 -0
  25. codex/static_root/assets/VDataTableVirtual-C6eUX_Wh.js.gz +0 -0
  26. codex/static_root/assets/{VExpansionPanel-CidIcFye.7d90e31ede57.js → VExpansionPanel-BULgocde.72ac9840474e.js} +1 -1
  27. codex/static_root/assets/VExpansionPanel-BULgocde.72ac9840474e.js.br +0 -0
  28. codex/static_root/assets/VExpansionPanel-BULgocde.72ac9840474e.js.gz +0 -0
  29. codex/static_root/assets/{VExpansionPanel-CidIcFye.js → VExpansionPanel-BULgocde.js} +1 -1
  30. codex/static_root/assets/VExpansionPanel-BULgocde.js.br +0 -0
  31. codex/static_root/assets/VExpansionPanel-BULgocde.js.gz +0 -0
  32. codex/static_root/assets/{VMain-DDkd9vCz.8e5c09a16212.js → VMain-BhPxl6Q7.3f4df10adac2.js} +1 -1
  33. codex/static_root/assets/VMain-BhPxl6Q7.3f4df10adac2.js.br +0 -0
  34. codex/static_root/assets/VMain-BhPxl6Q7.3f4df10adac2.js.gz +0 -0
  35. codex/static_root/assets/{VMain-DDkd9vCz.js → VMain-BhPxl6Q7.js} +1 -1
  36. codex/static_root/assets/VMain-BhPxl6Q7.js.br +0 -0
  37. codex/static_root/assets/VMain-BhPxl6Q7.js.gz +0 -0
  38. codex/static_root/assets/{VRadioGroup-0Yh0Pifq.8f4876f3f1b4.js → VRadioGroup-Bozw2p_1.7691e5a0eea9.js} +1 -1
  39. codex/static_root/assets/VRadioGroup-Bozw2p_1.7691e5a0eea9.js.br +0 -0
  40. codex/static_root/assets/VRadioGroup-Bozw2p_1.7691e5a0eea9.js.gz +0 -0
  41. codex/static_root/assets/{VRadioGroup-0Yh0Pifq.js → VRadioGroup-Bozw2p_1.js} +1 -1
  42. codex/static_root/assets/VRadioGroup-Bozw2p_1.js.br +0 -0
  43. codex/static_root/assets/VRadioGroup-Bozw2p_1.js.gz +0 -0
  44. codex/static_root/assets/{VSelect-CBe3fYvb.js → VSelect-CZufOuDi.7edb26e0dc04.js} +1 -1
  45. codex/static_root/assets/VSelect-CZufOuDi.7edb26e0dc04.js.br +0 -0
  46. codex/static_root/assets/VSelect-CZufOuDi.7edb26e0dc04.js.gz +0 -0
  47. codex/static_root/assets/{VSelect-CBe3fYvb.cd9f58e20df6.js → VSelect-CZufOuDi.js} +1 -1
  48. codex/static_root/assets/VSelect-CZufOuDi.js.br +0 -0
  49. codex/static_root/assets/VSelect-CZufOuDi.js.gz +0 -0
  50. codex/static_root/assets/{VSelectionControl-4G7mLXDz.3db68d576207.js → VSelectionControl-Dv_nBx-5.d88cba95b708.js} +1 -1
  51. codex/static_root/assets/VSelectionControl-Dv_nBx-5.d88cba95b708.js.br +0 -0
  52. codex/static_root/assets/VSelectionControl-Dv_nBx-5.d88cba95b708.js.gz +0 -0
  53. codex/static_root/assets/{VSelectionControl-4G7mLXDz.js → VSelectionControl-Dv_nBx-5.js} +1 -1
  54. codex/static_root/assets/VSelectionControl-Dv_nBx-5.js.br +0 -0
  55. codex/static_root/assets/VSelectionControl-Dv_nBx-5.js.gz +0 -0
  56. codex/static_root/assets/{VSlideGroup-tVqicDbS.2b9b6952e4d1.js → VSlideGroup-D201p9z_.af8b51b3f862.js} +1 -1
  57. codex/static_root/assets/VSlideGroup-D201p9z_.af8b51b3f862.js.br +0 -0
  58. codex/static_root/assets/VSlideGroup-D201p9z_.af8b51b3f862.js.gz +0 -0
  59. codex/static_root/assets/{VSlideGroup-tVqicDbS.js → VSlideGroup-D201p9z_.js} +1 -1
  60. codex/static_root/assets/VSlideGroup-D201p9z_.js.br +0 -0
  61. codex/static_root/assets/VSlideGroup-D201p9z_.js.gz +0 -0
  62. codex/static_root/assets/{VTable-8-Q-Vp-o.9a15f0d61b7a.js → VTable-BVYOEBy1.520dc1a29dc0.js} +1 -1
  63. codex/static_root/assets/VTable-BVYOEBy1.520dc1a29dc0.js.br +0 -0
  64. codex/static_root/assets/VTable-BVYOEBy1.520dc1a29dc0.js.gz +0 -0
  65. codex/static_root/assets/{VTable-8-Q-Vp-o.js → VTable-BVYOEBy1.js} +1 -1
  66. codex/static_root/assets/VTable-BVYOEBy1.js.br +0 -0
  67. codex/static_root/assets/VTable-BVYOEBy1.js.gz +0 -0
  68. codex/static_root/assets/{VToolbar-C7oKf1eF.753dcf345497.js → VToolbar-_0Wvb2vs.344f6ef76f7d.js} +2 -2
  69. codex/static_root/assets/VToolbar-_0Wvb2vs.344f6ef76f7d.js.br +0 -0
  70. codex/static_root/assets/VToolbar-_0Wvb2vs.344f6ef76f7d.js.gz +0 -0
  71. codex/static_root/assets/{VToolbar-C7oKf1eF.js → VToolbar-_0Wvb2vs.js} +2 -2
  72. codex/static_root/assets/VToolbar-_0Wvb2vs.js.br +0 -0
  73. codex/static_root/assets/VToolbar-_0Wvb2vs.js.gz +0 -0
  74. codex/static_root/assets/{VWindowItem-DpDNSczO.579040c0cb45.js → VWindowItem-D5GjOCct.7fc16a687d73.js} +1 -1
  75. codex/static_root/assets/VWindowItem-D5GjOCct.7fc16a687d73.js.br +0 -0
  76. codex/static_root/assets/VWindowItem-D5GjOCct.7fc16a687d73.js.gz +0 -0
  77. codex/static_root/assets/{VWindowItem-DpDNSczO.js → VWindowItem-D5GjOCct.js} +1 -1
  78. codex/static_root/assets/VWindowItem-D5GjOCct.js.br +0 -0
  79. codex/static_root/assets/VWindowItem-D5GjOCct.js.gz +0 -0
  80. codex/static_root/assets/{admin-BJ30SRLy.ab1e1b596aee.js → admin-WlT1dvZa.cab0efaf72d6.js} +1 -1
  81. codex/static_root/assets/admin-WlT1dvZa.cab0efaf72d6.js.br +0 -0
  82. codex/static_root/assets/admin-WlT1dvZa.cab0efaf72d6.js.gz +0 -0
  83. codex/static_root/assets/{admin-BJ30SRLy.js → admin-WlT1dvZa.js} +1 -1
  84. codex/static_root/assets/admin-WlT1dvZa.js.br +0 -0
  85. codex/static_root/assets/admin-WlT1dvZa.js.gz +0 -0
  86. codex/static_root/assets/{admin-drawer-panel-BRuAet3Q.4f5b6fe57fb0.js → admin-drawer-panel-DUIS97I8.a2a0acd00cdd.js} +1 -1
  87. codex/static_root/assets/admin-drawer-panel-DUIS97I8.a2a0acd00cdd.js.br +0 -0
  88. codex/static_root/assets/admin-drawer-panel-DUIS97I8.a2a0acd00cdd.js.gz +0 -0
  89. codex/static_root/assets/{admin-drawer-panel-BRuAet3Q.js → admin-drawer-panel-DUIS97I8.js} +1 -1
  90. codex/static_root/assets/admin-drawer-panel-DUIS97I8.js.br +0 -0
  91. codex/static_root/assets/admin-drawer-panel-DUIS97I8.js.gz +0 -0
  92. codex/static_root/assets/{browser-B8oeFF1T.38d4f1fc176d.js → browser-DvwU-fm8.ad566034425b.js} +1 -1
  93. codex/static_root/assets/browser-DvwU-fm8.ad566034425b.js.br +0 -0
  94. codex/static_root/assets/browser-DvwU-fm8.ad566034425b.js.gz +0 -0
  95. codex/static_root/assets/{browser-B8oeFF1T.js → browser-DvwU-fm8.js} +1 -1
  96. codex/static_root/assets/browser-DvwU-fm8.js.br +0 -0
  97. codex/static_root/assets/browser-DvwU-fm8.js.gz +0 -0
  98. codex/static_root/assets/{change-password-dialog-BMRwjcWV.24ed0008e5bf.js → change-password-dialog-F3sfkpZ6.3af87cd99cf0.js} +1 -1
  99. codex/static_root/assets/change-password-dialog-F3sfkpZ6.3af87cd99cf0.js.br +0 -0
  100. codex/static_root/assets/change-password-dialog-F3sfkpZ6.3af87cd99cf0.js.gz +0 -0
  101. codex/static_root/assets/{change-password-dialog-BMRwjcWV.js → change-password-dialog-F3sfkpZ6.js} +1 -1
  102. codex/static_root/assets/change-password-dialog-F3sfkpZ6.js.br +0 -0
  103. codex/static_root/assets/change-password-dialog-F3sfkpZ6.js.gz +0 -0
  104. codex/static_root/assets/{confirm-dialog-DY4z7Lw0.5cf95cee934f.js → confirm-dialog-CaG5Q8Zk.70b5f8ca624d.js} +1 -1
  105. codex/static_root/assets/confirm-dialog-CaG5Q8Zk.70b5f8ca624d.js.br +0 -0
  106. codex/static_root/assets/confirm-dialog-CaG5Q8Zk.70b5f8ca624d.js.gz +0 -0
  107. codex/static_root/assets/{confirm-dialog-DY4z7Lw0.js → confirm-dialog-CaG5Q8Zk.js} +1 -1
  108. codex/static_root/assets/confirm-dialog-CaG5Q8Zk.js.br +0 -0
  109. codex/static_root/assets/confirm-dialog-CaG5Q8Zk.js.gz +0 -0
  110. codex/static_root/assets/{confirm-footer-2FbvnpYZ.3cf447d2e96f.js → confirm-footer-DK40GINK.2fc3890c6900.js} +1 -1
  111. codex/static_root/assets/confirm-footer-DK40GINK.2fc3890c6900.js.br +0 -0
  112. codex/static_root/assets/confirm-footer-DK40GINK.2fc3890c6900.js.gz +0 -0
  113. codex/static_root/assets/{confirm-footer-2FbvnpYZ.js → confirm-footer-DK40GINK.js} +1 -1
  114. codex/static_root/assets/confirm-footer-DK40GINK.js.br +0 -0
  115. codex/static_root/assets/confirm-footer-DK40GINK.js.gz +0 -0
  116. codex/static_root/assets/{datetime-column-B0i_87u5.48f9477dd081.js → datetime-column-BcF_nMoj.8aca95246315.js} +1 -1
  117. codex/static_root/assets/datetime-column-BcF_nMoj.8aca95246315.js.br +0 -0
  118. codex/static_root/assets/datetime-column-BcF_nMoj.8aca95246315.js.gz +0 -0
  119. codex/static_root/assets/{datetime-column-B0i_87u5.js → datetime-column-BcF_nMoj.js} +1 -1
  120. codex/static_root/assets/datetime-column-BcF_nMoj.js.br +0 -0
  121. codex/static_root/assets/datetime-column-BcF_nMoj.js.gz +0 -0
  122. codex/static_root/assets/{filter-CmORDU_g.ac158cde95de.js → filter-CQJpHAdr.f234fbd835ee.js} +1 -1
  123. codex/static_root/assets/filter-CQJpHAdr.f234fbd835ee.js.br +0 -0
  124. codex/static_root/assets/filter-CQJpHAdr.f234fbd835ee.js.gz +0 -0
  125. codex/static_root/assets/{filter-CmORDU_g.js → filter-CQJpHAdr.js} +1 -1
  126. codex/static_root/assets/filter-CQJpHAdr.js.br +0 -0
  127. codex/static_root/assets/filter-CQJpHAdr.js.gz +0 -0
  128. codex/static_root/assets/{flag-tab-BQzHCCCx.34f766316f6a.js → flag-tab-CRhZsR80.111f2f559248.js} +1 -1
  129. codex/static_root/assets/flag-tab-CRhZsR80.111f2f559248.js.br +0 -0
  130. codex/static_root/assets/flag-tab-CRhZsR80.111f2f559248.js.gz +0 -0
  131. codex/static_root/assets/{flag-tab-BQzHCCCx.js → flag-tab-CRhZsR80.js} +1 -1
  132. codex/static_root/assets/flag-tab-CRhZsR80.js.br +0 -0
  133. codex/static_root/assets/flag-tab-CRhZsR80.js.gz +0 -0
  134. codex/static_root/assets/{group-tab-07XKbcg7.9c7f72b1d7f0.js → group-tab-C14FhVzU.5372415ff8b4.js} +1 -1
  135. codex/static_root/assets/group-tab-C14FhVzU.5372415ff8b4.js.br +0 -0
  136. codex/static_root/assets/group-tab-C14FhVzU.5372415ff8b4.js.gz +0 -0
  137. codex/static_root/assets/{group-tab-07XKbcg7.js → group-tab-C14FhVzU.js} +1 -1
  138. codex/static_root/assets/group-tab-C14FhVzU.js.br +0 -0
  139. codex/static_root/assets/group-tab-C14FhVzU.js.gz +0 -0
  140. codex/static_root/assets/{http-error-CXcReeqY.6d94ccbba719.js → http-error-Blh7S2R3.52024dd928ae.js} +1 -1
  141. codex/static_root/assets/http-error-Blh7S2R3.52024dd928ae.js.br +0 -0
  142. codex/static_root/assets/http-error-Blh7S2R3.52024dd928ae.js.gz +0 -0
  143. codex/static_root/assets/{http-error-CXcReeqY.js → http-error-Blh7S2R3.js} +1 -1
  144. codex/static_root/assets/http-error-Blh7S2R3.js.br +0 -0
  145. codex/static_root/assets/http-error-Blh7S2R3.js.gz +0 -0
  146. codex/static_root/assets/{library-tab-BjgHtQN3.b3f5bc8e8589.js → library-tab-ChRZE74e.900111366264.js} +1 -1
  147. codex/static_root/assets/library-tab-ChRZE74e.900111366264.js.br +0 -0
  148. codex/static_root/assets/library-tab-ChRZE74e.900111366264.js.gz +0 -0
  149. codex/static_root/assets/{library-tab-BjgHtQN3.js → library-tab-ChRZE74e.js} +1 -1
  150. codex/static_root/assets/library-tab-ChRZE74e.js.br +0 -0
  151. codex/static_root/assets/library-tab-ChRZE74e.js.gz +0 -0
  152. codex/static_root/assets/{main-BlILxt8L.js → main-CWVbF8zM.ee43112f7ba0.js} +3 -3
  153. codex/static_root/assets/main-CWVbF8zM.ee43112f7ba0.js.br +0 -0
  154. codex/static_root/assets/main-CWVbF8zM.ee43112f7ba0.js.gz +0 -0
  155. codex/static_root/assets/{main-BlILxt8L.ee4d6064ab2c.js → main-CWVbF8zM.js} +3 -3
  156. codex/static_root/assets/main-CWVbF8zM.js.br +0 -0
  157. codex/static_root/assets/main-CWVbF8zM.js.gz +0 -0
  158. codex/static_root/assets/{metadata-dialog-CuTJYycc.51bc953bf0a2.js → metadata-dialog-DKGh0MEn.1e1f7e84cdcc.js} +1 -1
  159. codex/static_root/assets/metadata-dialog-DKGh0MEn.1e1f7e84cdcc.js.br +0 -0
  160. codex/static_root/assets/metadata-dialog-DKGh0MEn.1e1f7e84cdcc.js.gz +0 -0
  161. codex/static_root/assets/{metadata-dialog-CuTJYycc.js → metadata-dialog-DKGh0MEn.js} +1 -1
  162. codex/static_root/assets/metadata-dialog-DKGh0MEn.js.br +0 -0
  163. codex/static_root/assets/metadata-dialog-DKGh0MEn.js.gz +0 -0
  164. codex/static_root/assets/{pdf-doc-DuICIl5T.a50b44c4e1cf.js → pdf-doc-Ba9ow1e-.4aa0aef47de4.js} +1 -1
  165. codex/static_root/assets/pdf-doc-Ba9ow1e-.4aa0aef47de4.js.br +0 -0
  166. codex/static_root/assets/pdf-doc-Ba9ow1e-.4aa0aef47de4.js.gz +0 -0
  167. codex/static_root/assets/{pdf-doc-DuICIl5T.js → pdf-doc-Ba9ow1e-.js} +1 -1
  168. codex/static_root/assets/pdf-doc-Ba9ow1e-.js.br +0 -0
  169. codex/static_root/assets/pdf-doc-Ba9ow1e-.js.gz +0 -0
  170. codex/static_root/assets/reader-C5_plHx4.da5bc84edbfc.js +7 -0
  171. codex/static_root/assets/reader-C5_plHx4.da5bc84edbfc.js.br +0 -0
  172. codex/static_root/assets/reader-C5_plHx4.da5bc84edbfc.js.gz +0 -0
  173. codex/static_root/assets/reader-C5_plHx4.js +7 -0
  174. codex/static_root/assets/reader-C5_plHx4.js.br +0 -0
  175. codex/static_root/assets/reader-C5_plHx4.js.gz +0 -0
  176. codex/static_root/assets/{reader-DHZzx6Jl.17879ea49fff.css → reader-Dw8mWNBY.7fc27da46f51.css} +1 -1
  177. codex/static_root/assets/reader-Dw8mWNBY.7fc27da46f51.css.br +0 -0
  178. codex/static_root/assets/reader-Dw8mWNBY.7fc27da46f51.css.gz +0 -0
  179. codex/static_root/assets/{reader-DHZzx6Jl.css → reader-Dw8mWNBY.css} +1 -1
  180. codex/static_root/assets/reader-Dw8mWNBY.css.br +0 -0
  181. codex/static_root/assets/reader-Dw8mWNBY.css.gz +0 -0
  182. codex/static_root/assets/{stats-tab-D8Qi4MzQ.e10afbaf36ae.js → stats-tab-1aM4LZXM.c070b714fc09.js} +1 -1
  183. codex/static_root/assets/stats-tab-1aM4LZXM.c070b714fc09.js.br +0 -0
  184. codex/static_root/assets/stats-tab-1aM4LZXM.c070b714fc09.js.gz +0 -0
  185. codex/static_root/assets/{stats-tab-D8Qi4MzQ.js → stats-tab-1aM4LZXM.js} +1 -1
  186. codex/static_root/assets/stats-tab-1aM4LZXM.js.br +0 -0
  187. codex/static_root/assets/stats-tab-1aM4LZXM.js.gz +0 -0
  188. codex/static_root/assets/{task-tab-okFK5v4-.38cd43005666.js → task-tab-CDjmS4B3.3312dd39a895.js} +1 -1
  189. codex/static_root/assets/task-tab-CDjmS4B3.3312dd39a895.js.br +0 -0
  190. codex/static_root/assets/task-tab-CDjmS4B3.3312dd39a895.js.gz +0 -0
  191. codex/static_root/assets/{task-tab-okFK5v4-.js → task-tab-CDjmS4B3.js} +1 -1
  192. codex/static_root/assets/task-tab-CDjmS4B3.js.br +0 -0
  193. codex/static_root/assets/task-tab-CDjmS4B3.js.gz +0 -0
  194. codex/static_root/assets/{user-tab-u5aYpXjb.9d815fa086ca.js → user-tab-DdB6DfEt.8e1ab4c4c0ed.js} +1 -1
  195. codex/static_root/assets/user-tab-DdB6DfEt.8e1ab4c4c0ed.js.br +0 -0
  196. codex/static_root/assets/user-tab-DdB6DfEt.8e1ab4c4c0ed.js.gz +0 -0
  197. codex/static_root/assets/{user-tab-u5aYpXjb.js → user-tab-DdB6DfEt.js} +1 -1
  198. codex/static_root/assets/user-tab-DdB6DfEt.js.br +0 -0
  199. codex/static_root/assets/user-tab-DdB6DfEt.js.gz +0 -0
  200. codex/static_root/{manifest.111b696c308e.json → manifest.00073a8456a2.json} +206 -206
  201. codex/static_root/manifest.00073a8456a2.json.br +0 -0
  202. codex/static_root/manifest.00073a8456a2.json.gz +0 -0
  203. codex/static_root/manifest.json +206 -206
  204. codex/static_root/manifest.json.br +0 -0
  205. codex/static_root/manifest.json.gz +0 -0
  206. codex/static_root/staticfiles.json +1 -1
  207. codex/templates/opds_v1/index.xml +1 -1
  208. codex/views/browser/browser_annotations.py +1 -1
  209. codex/views/browser/browser_order_by.py +6 -2
  210. codex/views/opds/v1/feed.py +3 -3
  211. codex/views/opds/v2/links.py +2 -2
  212. codex/views/opds/v2/publications.py +1 -1
  213. {codex-1.5.0rc4.dist-info → codex-1.5.2.dist-info}/METADATA +1 -1
  214. {codex-1.5.0rc4.dist-info → codex-1.5.2.dist-info}/RECORD +217 -217
  215. codex/static_root/assets/VCheckbox-Cz-fF2b5.d2885ebafa4d.js.br +0 -0
  216. codex/static_root/assets/VCheckbox-Cz-fF2b5.d2885ebafa4d.js.gz +0 -0
  217. codex/static_root/assets/VCheckbox-Cz-fF2b5.js.br +0 -0
  218. codex/static_root/assets/VCheckbox-Cz-fF2b5.js.gz +0 -0
  219. codex/static_root/assets/VCheckboxBtn-DdE8nBUu.dfd3152dd295.js.br +0 -0
  220. codex/static_root/assets/VCheckboxBtn-DdE8nBUu.dfd3152dd295.js.gz +0 -0
  221. codex/static_root/assets/VCheckboxBtn-DdE8nBUu.js.br +0 -0
  222. codex/static_root/assets/VCheckboxBtn-DdE8nBUu.js.gz +0 -0
  223. codex/static_root/assets/VCombobox-DPgfLJGo.29fd227b8558.js.br +0 -0
  224. codex/static_root/assets/VCombobox-DPgfLJGo.29fd227b8558.js.gz +0 -0
  225. codex/static_root/assets/VCombobox-DPgfLJGo.js.br +0 -0
  226. codex/static_root/assets/VCombobox-DPgfLJGo.js.gz +0 -0
  227. codex/static_root/assets/VDataTableVirtual-CECOrU_F.8fad0114605f.js.br +0 -0
  228. codex/static_root/assets/VDataTableVirtual-CECOrU_F.8fad0114605f.js.gz +0 -0
  229. codex/static_root/assets/VDataTableVirtual-CECOrU_F.js.br +0 -0
  230. codex/static_root/assets/VDataTableVirtual-CECOrU_F.js.gz +0 -0
  231. codex/static_root/assets/VExpansionPanel-CidIcFye.7d90e31ede57.js.br +0 -0
  232. codex/static_root/assets/VExpansionPanel-CidIcFye.7d90e31ede57.js.gz +0 -0
  233. codex/static_root/assets/VExpansionPanel-CidIcFye.js.br +0 -0
  234. codex/static_root/assets/VExpansionPanel-CidIcFye.js.gz +0 -0
  235. codex/static_root/assets/VMain-DDkd9vCz.8e5c09a16212.js.br +0 -0
  236. codex/static_root/assets/VMain-DDkd9vCz.8e5c09a16212.js.gz +0 -0
  237. codex/static_root/assets/VMain-DDkd9vCz.js.br +0 -0
  238. codex/static_root/assets/VMain-DDkd9vCz.js.gz +0 -0
  239. codex/static_root/assets/VRadioGroup-0Yh0Pifq.8f4876f3f1b4.js.br +0 -0
  240. codex/static_root/assets/VRadioGroup-0Yh0Pifq.8f4876f3f1b4.js.gz +0 -0
  241. codex/static_root/assets/VRadioGroup-0Yh0Pifq.js.br +0 -0
  242. codex/static_root/assets/VRadioGroup-0Yh0Pifq.js.gz +0 -0
  243. codex/static_root/assets/VSelect-CBe3fYvb.cd9f58e20df6.js.br +0 -0
  244. codex/static_root/assets/VSelect-CBe3fYvb.cd9f58e20df6.js.gz +0 -0
  245. codex/static_root/assets/VSelect-CBe3fYvb.js.br +0 -0
  246. codex/static_root/assets/VSelect-CBe3fYvb.js.gz +0 -0
  247. codex/static_root/assets/VSelectionControl-4G7mLXDz.3db68d576207.js.br +0 -0
  248. codex/static_root/assets/VSelectionControl-4G7mLXDz.3db68d576207.js.gz +0 -0
  249. codex/static_root/assets/VSelectionControl-4G7mLXDz.js.br +0 -0
  250. codex/static_root/assets/VSelectionControl-4G7mLXDz.js.gz +0 -0
  251. codex/static_root/assets/VSlideGroup-tVqicDbS.2b9b6952e4d1.js.br +0 -0
  252. codex/static_root/assets/VSlideGroup-tVqicDbS.2b9b6952e4d1.js.gz +0 -0
  253. codex/static_root/assets/VSlideGroup-tVqicDbS.js.br +0 -0
  254. codex/static_root/assets/VSlideGroup-tVqicDbS.js.gz +0 -0
  255. codex/static_root/assets/VTable-8-Q-Vp-o.9a15f0d61b7a.js.br +0 -0
  256. codex/static_root/assets/VTable-8-Q-Vp-o.9a15f0d61b7a.js.gz +0 -0
  257. codex/static_root/assets/VTable-8-Q-Vp-o.js.br +0 -0
  258. codex/static_root/assets/VTable-8-Q-Vp-o.js.gz +0 -0
  259. codex/static_root/assets/VToolbar-C7oKf1eF.753dcf345497.js.br +0 -0
  260. codex/static_root/assets/VToolbar-C7oKf1eF.753dcf345497.js.gz +0 -0
  261. codex/static_root/assets/VToolbar-C7oKf1eF.js.br +0 -0
  262. codex/static_root/assets/VToolbar-C7oKf1eF.js.gz +0 -0
  263. codex/static_root/assets/VWindowItem-DpDNSczO.579040c0cb45.js.br +0 -0
  264. codex/static_root/assets/VWindowItem-DpDNSczO.579040c0cb45.js.gz +0 -0
  265. codex/static_root/assets/VWindowItem-DpDNSczO.js.br +0 -0
  266. codex/static_root/assets/VWindowItem-DpDNSczO.js.gz +0 -0
  267. codex/static_root/assets/admin-BJ30SRLy.ab1e1b596aee.js.br +0 -0
  268. codex/static_root/assets/admin-BJ30SRLy.ab1e1b596aee.js.gz +0 -0
  269. codex/static_root/assets/admin-BJ30SRLy.js.br +0 -0
  270. codex/static_root/assets/admin-BJ30SRLy.js.gz +0 -0
  271. codex/static_root/assets/admin-drawer-panel-BRuAet3Q.4f5b6fe57fb0.js.br +0 -0
  272. codex/static_root/assets/admin-drawer-panel-BRuAet3Q.4f5b6fe57fb0.js.gz +0 -0
  273. codex/static_root/assets/admin-drawer-panel-BRuAet3Q.js.br +0 -0
  274. codex/static_root/assets/admin-drawer-panel-BRuAet3Q.js.gz +0 -0
  275. codex/static_root/assets/browser-B8oeFF1T.38d4f1fc176d.js.br +0 -0
  276. codex/static_root/assets/browser-B8oeFF1T.38d4f1fc176d.js.gz +0 -0
  277. codex/static_root/assets/browser-B8oeFF1T.js.br +0 -0
  278. codex/static_root/assets/browser-B8oeFF1T.js.gz +0 -0
  279. codex/static_root/assets/change-password-dialog-BMRwjcWV.24ed0008e5bf.js.br +0 -0
  280. codex/static_root/assets/change-password-dialog-BMRwjcWV.24ed0008e5bf.js.gz +0 -0
  281. codex/static_root/assets/change-password-dialog-BMRwjcWV.js.br +0 -0
  282. codex/static_root/assets/change-password-dialog-BMRwjcWV.js.gz +0 -0
  283. codex/static_root/assets/confirm-dialog-DY4z7Lw0.5cf95cee934f.js.br +0 -0
  284. codex/static_root/assets/confirm-dialog-DY4z7Lw0.5cf95cee934f.js.gz +0 -0
  285. codex/static_root/assets/confirm-dialog-DY4z7Lw0.js.br +0 -0
  286. codex/static_root/assets/confirm-dialog-DY4z7Lw0.js.gz +0 -0
  287. codex/static_root/assets/confirm-footer-2FbvnpYZ.3cf447d2e96f.js.br +0 -0
  288. codex/static_root/assets/confirm-footer-2FbvnpYZ.3cf447d2e96f.js.gz +0 -0
  289. codex/static_root/assets/confirm-footer-2FbvnpYZ.js.br +0 -0
  290. codex/static_root/assets/confirm-footer-2FbvnpYZ.js.gz +0 -0
  291. codex/static_root/assets/datetime-column-B0i_87u5.48f9477dd081.js.br +0 -0
  292. codex/static_root/assets/datetime-column-B0i_87u5.48f9477dd081.js.gz +0 -0
  293. codex/static_root/assets/datetime-column-B0i_87u5.js.br +0 -0
  294. codex/static_root/assets/datetime-column-B0i_87u5.js.gz +0 -0
  295. codex/static_root/assets/filter-CmORDU_g.ac158cde95de.js.br +0 -0
  296. codex/static_root/assets/filter-CmORDU_g.ac158cde95de.js.gz +0 -0
  297. codex/static_root/assets/filter-CmORDU_g.js.br +0 -0
  298. codex/static_root/assets/filter-CmORDU_g.js.gz +0 -0
  299. codex/static_root/assets/flag-tab-BQzHCCCx.34f766316f6a.js.br +0 -0
  300. codex/static_root/assets/flag-tab-BQzHCCCx.34f766316f6a.js.gz +0 -0
  301. codex/static_root/assets/flag-tab-BQzHCCCx.js.br +0 -0
  302. codex/static_root/assets/flag-tab-BQzHCCCx.js.gz +0 -0
  303. codex/static_root/assets/group-tab-07XKbcg7.9c7f72b1d7f0.js.br +0 -0
  304. codex/static_root/assets/group-tab-07XKbcg7.9c7f72b1d7f0.js.gz +0 -0
  305. codex/static_root/assets/group-tab-07XKbcg7.js.br +0 -0
  306. codex/static_root/assets/group-tab-07XKbcg7.js.gz +0 -0
  307. codex/static_root/assets/http-error-CXcReeqY.6d94ccbba719.js.br +0 -0
  308. codex/static_root/assets/http-error-CXcReeqY.6d94ccbba719.js.gz +0 -0
  309. codex/static_root/assets/http-error-CXcReeqY.js.br +0 -0
  310. codex/static_root/assets/http-error-CXcReeqY.js.gz +0 -0
  311. codex/static_root/assets/library-tab-BjgHtQN3.b3f5bc8e8589.js.br +0 -0
  312. codex/static_root/assets/library-tab-BjgHtQN3.b3f5bc8e8589.js.gz +0 -0
  313. codex/static_root/assets/library-tab-BjgHtQN3.js.br +0 -0
  314. codex/static_root/assets/library-tab-BjgHtQN3.js.gz +0 -0
  315. codex/static_root/assets/main-BlILxt8L.ee4d6064ab2c.js.br +0 -0
  316. codex/static_root/assets/main-BlILxt8L.ee4d6064ab2c.js.gz +0 -0
  317. codex/static_root/assets/main-BlILxt8L.js.br +0 -0
  318. codex/static_root/assets/main-BlILxt8L.js.gz +0 -0
  319. codex/static_root/assets/metadata-dialog-CuTJYycc.51bc953bf0a2.js.br +0 -0
  320. codex/static_root/assets/metadata-dialog-CuTJYycc.51bc953bf0a2.js.gz +0 -0
  321. codex/static_root/assets/metadata-dialog-CuTJYycc.js.br +0 -0
  322. codex/static_root/assets/metadata-dialog-CuTJYycc.js.gz +0 -0
  323. codex/static_root/assets/pdf-doc-DuICIl5T.a50b44c4e1cf.js.br +0 -0
  324. codex/static_root/assets/pdf-doc-DuICIl5T.a50b44c4e1cf.js.gz +0 -0
  325. codex/static_root/assets/pdf-doc-DuICIl5T.js.br +0 -0
  326. codex/static_root/assets/pdf-doc-DuICIl5T.js.gz +0 -0
  327. codex/static_root/assets/reader-CjlaRLJj.ac6384353f22.js +0 -7
  328. codex/static_root/assets/reader-CjlaRLJj.ac6384353f22.js.br +0 -0
  329. codex/static_root/assets/reader-CjlaRLJj.ac6384353f22.js.gz +0 -0
  330. codex/static_root/assets/reader-CjlaRLJj.js +0 -7
  331. codex/static_root/assets/reader-CjlaRLJj.js.br +0 -0
  332. codex/static_root/assets/reader-CjlaRLJj.js.gz +0 -0
  333. codex/static_root/assets/reader-DHZzx6Jl.17879ea49fff.css.br +0 -0
  334. codex/static_root/assets/reader-DHZzx6Jl.17879ea49fff.css.gz +0 -0
  335. codex/static_root/assets/reader-DHZzx6Jl.css.br +0 -0
  336. codex/static_root/assets/reader-DHZzx6Jl.css.gz +0 -0
  337. codex/static_root/assets/stats-tab-D8Qi4MzQ.e10afbaf36ae.js.br +0 -0
  338. codex/static_root/assets/stats-tab-D8Qi4MzQ.e10afbaf36ae.js.gz +0 -0
  339. codex/static_root/assets/stats-tab-D8Qi4MzQ.js.br +0 -0
  340. codex/static_root/assets/stats-tab-D8Qi4MzQ.js.gz +0 -0
  341. codex/static_root/assets/task-tab-okFK5v4-.38cd43005666.js.br +0 -0
  342. codex/static_root/assets/task-tab-okFK5v4-.38cd43005666.js.gz +0 -0
  343. codex/static_root/assets/task-tab-okFK5v4-.js.br +0 -0
  344. codex/static_root/assets/task-tab-okFK5v4-.js.gz +0 -0
  345. codex/static_root/assets/user-tab-u5aYpXjb.9d815fa086ca.js.br +0 -0
  346. codex/static_root/assets/user-tab-u5aYpXjb.9d815fa086ca.js.gz +0 -0
  347. codex/static_root/assets/user-tab-u5aYpXjb.js.br +0 -0
  348. codex/static_root/assets/user-tab-u5aYpXjb.js.gz +0 -0
  349. codex/static_root/manifest.111b696c308e.json.br +0 -0
  350. codex/static_root/manifest.111b696c308e.json.gz +0 -0
  351. {codex-1.5.0rc4.dist-info → codex-1.5.2.dist-info}/LICENSE +0 -0
  352. {codex-1.5.0rc4.dist-info → codex-1.5.2.dist-info}/WHEEL +0 -0
  353. {codex-1.5.0rc4.dist-info → codex-1.5.2.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- import{_ as c,O as d,P as r,Q as i,R as p,aD as t,ae as a,L as _,aH as u,aI as l}from"./admin-drawer-panel-BRuAet3Q.js";import{V as h}from"./VMain-DDkd9vCz.js";import"./main-BlILxt8L.js";const n={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(n);const m={name:"HttpError",data(){return{}},computed:{code:function(){return+this.$route.params.code},title:function(){let e=n[this.code];return e||(e="Unknown Error"),e}}},f=e=>(u("data-v-e215aa2c"),e=e(),l(),e),k={id:"httpCode"},I={id:"title"},S=f(()=>t("h2",null,"Codex Home",-1));function x(e,E,v,B,C,o){const s=i("router-link");return p(),d(h,{id:"main"},{default:r(()=>[t("h1",k,a(o.code),1),t("h1",I,a(o.title),1),_(s,{id:"link",to:{name:"home"}},{default:r(()=>[S]),_:1})]),_:1})}const N=c(m,[["render",x],["__scopeId","data-v-e215aa2c"]]);export{N as default};
1
+ import{_ as c,O as d,P as r,Q as i,R as p,aD as t,ae as a,L as _,aH as u,aI as l}from"./admin-drawer-panel-DUIS97I8.js";import{V as h}from"./VMain-BhPxl6Q7.js";import"./main-CWVbF8zM.js";const n={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(n);const m={name:"HttpError",data(){return{}},computed:{code:function(){return+this.$route.params.code},title:function(){let e=n[this.code];return e||(e="Unknown Error"),e}}},f=e=>(u("data-v-e215aa2c"),e=e(),l(),e),k={id:"httpCode"},I={id:"title"},S=f(()=>t("h2",null,"Codex Home",-1));function x(e,E,v,B,C,o){const s=i("router-link");return p(),d(h,{id:"main"},{default:r(()=>[t("h1",k,a(o.code),1),t("h1",I,a(o.title),1),_(s,{id:"link",to:{name:"home"}},{default:r(()=>[S]),_:1})]),_:1})}const N=c(m,[["render",x],["__scopeId","data-v-e215aa2c"]]);export{N as default};
@@ -1 +1 @@
1
- import{_ as L}from"./confirm-dialog-DY4z7Lw0.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-CECOrU_F.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-BRuAet3Q.js";import{D as W}from"./datetime-column-B0i_87u5.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-CidIcFye.js";import{V as ue}from"./VTable-8-Q-Vp-o.js";import{a as pe}from"./VSlideGroup-tVqicDbS.js";import{a as S,u as ce}from"./main-BlILxt8L.js";import{V as he}from"./VCombobox-DPgfLJGo.js";import{V as I}from"./VCheckbox-Cz-fF2b5.js";import{V as U}from"./VCheckboxBtn-DdE8nBUu.js";import"./confirm-footer-2FbvnpYZ.js";import"./VSelect-CBe3fYvb.js";import"./VSelectionControl-4G7mLXDz.js";import"./filter-CmORDU_g.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-CaG5Q8Zk.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-C6eUX_Wh.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-DUIS97I8.js";import{D as W}from"./datetime-column-BcF_nMoj.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-BULgocde.js";import{V as ue}from"./VTable-BVYOEBy1.js";import{a as pe}from"./VSlideGroup-D201p9z_.js";import{a as S,u as ce}from"./main-CWVbF8zM.js";import{V as he}from"./VCombobox-g48TQOSv.js";import{V as I}from"./VCheckbox-CIImgJ1M.js";import{V as U}from"./VCheckboxBtn-ByXBODq8.js";import"./confirm-footer-DK40GINK.js";import"./VSelect-CZufOuDi.js";import"./VSelectionControl-Dv_nBx-5.js";import"./filter-CQJpHAdr.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-DY4z7Lw0.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-CECOrU_F.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-BRuAet3Q.js";import{D as W}from"./datetime-column-B0i_87u5.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-CidIcFye.js";import{V as ue}from"./VTable-8-Q-Vp-o.js";import{a as pe}from"./VSlideGroup-tVqicDbS.js";import{a as S,u as ce}from"./main-BlILxt8L.js";import{V as he}from"./VCombobox-DPgfLJGo.js";import{V as I}from"./VCheckbox-Cz-fF2b5.js";import{V as U}from"./VCheckboxBtn-DdE8nBUu.js";import"./confirm-footer-2FbvnpYZ.js";import"./VSelect-CBe3fYvb.js";import"./VSelectionControl-4G7mLXDz.js";import"./filter-CmORDU_g.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-CaG5Q8Zk.js";import{A as Q,a as X,b as J,_ as z,V as Z}from"./VDataTableVirtual-C6eUX_Wh.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-DUIS97I8.js";import{D as W}from"./datetime-column-BcF_nMoj.js";import{V as D,a as E,b as R,c as O}from"./VExpansionPanel-BULgocde.js";import{V as ue}from"./VTable-BVYOEBy1.js";import{a as pe}from"./VSlideGroup-D201p9z_.js";import{a as S,u as ce}from"./main-CWVbF8zM.js";import{V as he}from"./VCombobox-g48TQOSv.js";import{V as I}from"./VCheckbox-CIImgJ1M.js";import{V as U}from"./VCheckboxBtn-ByXBODq8.js";import"./confirm-footer-DK40GINK.js";import"./VSelect-CZufOuDi.js";import"./VSelectionControl-Dv_nBx-5.js";import"./filter-CQJpHAdr.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-BJ30SRLy.js","assets/VToolbar-C7oKf1eF.js","assets/admin-drawer-panel-BRuAet3Q.js","assets/admin-drawer-panel-CsBUDBLE.css","assets/index-DUjeNg4x.js","assets/confirm-footer-2FbvnpYZ.js","assets/confirm-footer-VFepxcJs.css","assets/change-password-dialog-BMRwjcWV.js","assets/VSlideGroup-tVqicDbS.js","assets/VSelectionControl-4G7mLXDz.js","assets/VSelectionControl-BFq--28I.css","assets/VSlideGroup-Z7BhHtYB.css","assets/change-password-dialog-BRmvkNir.css","assets/VToolbar-C5QbEltS.css","assets/VWindowItem-DpDNSczO.js","assets/VWindowItem-ByIod57Y.css","assets/VMain-DDkd9vCz.js","assets/VMain-Byt37V4c.css","assets/admin-Df82-Qcj.css","assets/browser-B8oeFF1T.js","assets/metadata-dialog-CuTJYycc.js","assets/VSelect-CBe3fYvb.js","assets/VCheckboxBtn-DdE8nBUu.js","assets/VSelect-udkSZJsa.css","assets/to-case-kUm8NPpW.js","assets/metadata-dialog-DPxDDFDy.css","assets/VCombobox-DPgfLJGo.js","assets/filter-CmORDU_g.js","assets/VCombobox-BksEr4D_.css","assets/VTable-8-Q-Vp-o.js","assets/VTable-DflzroDq.css","assets/VCheckbox-Cz-fF2b5.js","assets/VCheckbox-CMKdyl0R.css","assets/confirm-dialog-DY4z7Lw0.js","assets/confirm-dialog-BmhedLCx.css","assets/browser-C8SJwVGz.css","assets/http-error-CXcReeqY.js","assets/http-error-C25WdjWC.css","assets/reader-CjlaRLJj.js","assets/VRadioGroup-0Yh0Pifq.js","assets/VRadioGroup-i2qP9Wu9.css","assets/VExpansionPanel-CidIcFye.js","assets/VExpansionPanel-BgvW2DKJ.css","assets/reader-DHZzx6Jl.css","assets/flag-tab-BQzHCCCx.js","assets/flag-tab-BTiZcgOa.css","assets/user-tab-u5aYpXjb.js","assets/VDataTableVirtual-CECOrU_F.js","assets/VDataTableVirtual-Cbj7IGxa.css","assets/datetime-column-B0i_87u5.js","assets/datetime-column-BWWfvyhn.css","assets/group-tab-07XKbcg7.js","assets/group-tab-3DXxSetf.css","assets/library-tab-BjgHtQN3.js","assets/library-tab-DZKDtQ5v.css","assets/task-tab-okFK5v4-.js","assets/task-tab-DoX9OA37.css","assets/stats-tab-D8Qi4MzQ.js","assets/stats-tab-BTZLMBCU.css"]
3
+ __vite__mapDeps.viteFileDeps = ["assets/admin-WlT1dvZa.js","assets/VToolbar-_0Wvb2vs.js","assets/admin-drawer-panel-DUIS97I8.js","assets/admin-drawer-panel-CsBUDBLE.css","assets/index-DUjeNg4x.js","assets/confirm-footer-DK40GINK.js","assets/confirm-footer-VFepxcJs.css","assets/change-password-dialog-F3sfkpZ6.js","assets/VSlideGroup-D201p9z_.js","assets/VSelectionControl-Dv_nBx-5.js","assets/VSelectionControl-BFq--28I.css","assets/VSlideGroup-Z7BhHtYB.css","assets/change-password-dialog-BRmvkNir.css","assets/VToolbar-C5QbEltS.css","assets/VWindowItem-D5GjOCct.js","assets/VWindowItem-ByIod57Y.css","assets/VMain-BhPxl6Q7.js","assets/VMain-Byt37V4c.css","assets/admin-Df82-Qcj.css","assets/browser-DvwU-fm8.js","assets/metadata-dialog-DKGh0MEn.js","assets/VSelect-CZufOuDi.js","assets/VCheckboxBtn-ByXBODq8.js","assets/VSelect-udkSZJsa.css","assets/to-case-kUm8NPpW.js","assets/metadata-dialog-DPxDDFDy.css","assets/VCombobox-g48TQOSv.js","assets/filter-CQJpHAdr.js","assets/VCombobox-BksEr4D_.css","assets/VTable-BVYOEBy1.js","assets/VTable-DflzroDq.css","assets/VCheckbox-CIImgJ1M.js","assets/VCheckbox-CMKdyl0R.css","assets/confirm-dialog-CaG5Q8Zk.js","assets/confirm-dialog-BmhedLCx.css","assets/browser-C8SJwVGz.css","assets/http-error-Blh7S2R3.js","assets/http-error-C25WdjWC.css","assets/reader-C5_plHx4.js","assets/VRadioGroup-Bozw2p_1.js","assets/VRadioGroup-i2qP9Wu9.css","assets/VExpansionPanel-BULgocde.js","assets/VExpansionPanel-BgvW2DKJ.css","assets/reader-Dw8mWNBY.css","assets/flag-tab-CRhZsR80.js","assets/flag-tab-BTiZcgOa.css","assets/user-tab-DdB6DfEt.js","assets/VDataTableVirtual-C6eUX_Wh.js","assets/VDataTableVirtual-Cbj7IGxa.css","assets/datetime-column-BcF_nMoj.js","assets/datetime-column-BWWfvyhn.css","assets/group-tab-C14FhVzU.js","assets/group-tab-3DXxSetf.css","assets/library-tab-ChRZE74e.js","assets/library-tab-DZKDtQ5v.css","assets/task-tab-CDjmS4B3.js","assets/task-tab-DoX9OA37.css","assets/stats-tab-1aM4LZXM.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 ln,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 c0,Z as l0,$ 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-BRuAet3Q.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 c=f.message;c||(c=`${u} hook has been deprecated`+(f.to?`, please use ${f.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(c)||(console.warn(c),this._deprecatedMessages.add(c))}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 c=String(n[f]);return o&&!o(c)?!1:`${i}:${f}:${c}`}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"],Jt="%separator";function eo(s,o,n){if(typeof s!="string"||!s.includes("%"))return s;function i(c){let g;return["s","pageTitle"].includes(c)?g=o.pageTitle:c.includes(".")?g=c.split(".").reduce((d,m)=>d&&d[m]||void 0,o):g=o[c],typeof g<"u"?(g||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(c=>{const g=i(c.slice(1));typeof g=="string"&&(s=s.replace(new RegExp(`\\${c}(\\W|$)`,"g"),(d,m)=>`${g}${m}`).trim())}),s.includes(Jt)&&(s.endsWith(Jt)&&(s=s.slice(0,-Jt.length).trim()),s.startsWith(Jt)&&(s=s.slice(Jt.length).trim()),s=s.replace(new RegExp(`\\${Jt}\\s*\\${Jt}`,"g"),Jt),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(y=>({tag:y,id:qr.includes(y.tag)?Nu(y):y.tag,shouldRender:!0}));let f=s._dom;if(!f){f={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const y of["body","head"]){const x=(p=n[y])==null?void 0:p.children,E=[];for(const A of[...x].filter(T=>qr.includes(T.tagName.toLowerCase()))){const T={tag:A.tagName.toLowerCase(),props:await Mf(A.getAttributeNames().reduce((O,P)=>({...O,[P]:A.getAttribute(P)}),{})),innerHTML:A.innerHTML};let L=1,I=Pf(T);for(;I&&E.find(O=>O._d===I);)I=`${I}:${L++}`;T._d=I||void 0,E.push(T),f.elMap[A.getAttribute("data-hid")||Nu(T)]=A}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function c(y,x,E){const A=`${y}:${x}`;f.sideEffects[A]=E,delete f.pendingSideEffects[A]}function g({id:y,$el:x,tag:E}){const A=E.tag.endsWith("Attrs");f.elMap[y]=x,A||(["textContent","innerHTML"].forEach(T=>{E[T]&&E[T]!==x[T]&&(x[T]=E[T])}),c(y,"el",()=>{var T;(T=f.elMap[y])==null||T.remove(),delete f.elMap[y]}));for(const[T,L]of Object.entries(E._eventHandlers||{}))x.getAttribute(`data-${T}`)!==""&&((E.tag==="bodyAttrs"?n.defaultView:x).addEventListener(T.replace("on",""),L.bind(x)),x.setAttribute(`data-${T}`,""));Object.entries(E.props).forEach(([T,L])=>{const I=`attr:${T}`;if(T==="class")for(const O of(L||"").split(" ").filter(Boolean))A&&c(y,`${I}:${O}`,()=>x.classList.remove(O)),!x.classList.contains(O)&&x.classList.add(O);else if(T==="style")for(const O of(L||"").split(";").filter(Boolean)){const[P,...$]=O.split(":").map(j=>j.trim());c(y,`${I}:${O}:${P}`,()=>{x.style.removeProperty(P)}),x.style.setProperty(P,$.join(":"))}else x.getAttribute(T)!==L&&x.setAttribute(T,L===!0?"":String(L)),A&&c(y,I,()=>x.removeAttribute(T))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of u){const{tag:x,shouldRender:E,id:A}=y;if(E){if(x.tag==="title"){n.title=x.textContent;continue}y.$el=y.$el||f.elMap[A],y.$el?g(y):qr.includes(x.tag)&&d.push(y)}}for(const y of d){const x=y.tag.tagPosition||"head";y.$el=n.createElement(y.tag.tag),g(y),m[x]=m[x]||n.createDocumentFragment(),m[x].appendChild(y.$el)}for(const y of u)await s.hooks.callHook("dom:renderTag",y,n,c);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(y=>y()),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 g=i==null?void 0:i.tagDuplicateStrategy;if(!g&&W0.includes(i.tag)&&(g="merge"),g==="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 c=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(qr.includes(i.tag)&&c===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,c;return(c=(f=o.tag._eventHandlers)==null?void 0:f[u])==null?void 0:c.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(c=>c.attributeName&&Hi.includes(c.attributeName.replace("data-",""))).map(c=>c.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 g;const{tags:n}=o,i=(g=n.find(d=>d.tag==="title"))==null?void 0:g.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},c=f.separator||"|";delete f.separator,f.pageTitle=eo(f.pageTitle||i||"",f,c);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,c):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(p=>{typeof d[p]=="string"&&(d[p]=eo(d[p],f,c))})}s._templateParams=f,s._separator=c,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=()=>{g.dirty=!0,o.callHook("entries:updated",g)};let u=0,f=[];const c=[],g={plugins:c,dirty:!1,resolvedOptions:s,hooks:o,headEntries(){return f},use(d){const m=typeof d=="function"?d(g):d;(!m.key||!c.some(p=>p.key===m.key))&&(c.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(y=>y._i!==p._i),o.callHook("entries:updated",g),i()},patch(y){f=f.map(x=>(x._i===p._i&&(x.input=p.input=y),x)),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 y of await M0(m)){const x={tag:y,entry:m,resolvedOptions:g.resolvedOptions};await o.callHook("tag:normalise",x),d.tags.push(x.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=>g.use(d)),g.hooks.callHook("init",g),g}function Q0(){return Df}const Hf=K1.startsWith("3");function _0(s){return typeof s=="function"?s():ln(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,ln(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,g=>{f.patch(g)}),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)}},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"}},sm={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:""}]},am={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Je={browser:Bf,reader:sm,websockets:am},um="modulepreload",fm=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");u=Promise.all(n.map(c=>{if(c=fm(c),c in zu)return;zu[c]=!0;const g=c.endsWith(".css"),d=g?'[rel="stylesheet"]':"";if(!!i)for(let y=f.length-1;y>=0;y--){const x=f[y];if(x.href===c&&(!g||x.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${d}`))return;const p=document.createElement("link");if(p.rel=g?"stylesheet":um,g||(p.as="script",p.crossOrigin=""),p.href=c,document.head.appendChild(p),g)return new Promise((y,x)=>{p.addEventListener("load",y),p.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${c}`)))})}))}return u.then(()=>o()).catch(f=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=f,window.dispatchEvent(c),!c.defaultPrevented)throw f})};/*!
7
+ import{n as Ji,v as K1,i as Ot,u as ln,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 c0,Z as l0,$ 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-DUIS97I8.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 c=f.message;c||(c=`${u} hook has been deprecated`+(f.to?`, please use ${f.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(c)||(console.warn(c),this._deprecatedMessages.add(c))}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 c=String(n[f]);return o&&!o(c)?!1:`${i}:${f}:${c}`}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"],Jt="%separator";function eo(s,o,n){if(typeof s!="string"||!s.includes("%"))return s;function i(c){let g;return["s","pageTitle"].includes(c)?g=o.pageTitle:c.includes(".")?g=c.split(".").reduce((d,m)=>d&&d[m]||void 0,o):g=o[c],typeof g<"u"?(g||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(c=>{const g=i(c.slice(1));typeof g=="string"&&(s=s.replace(new RegExp(`\\${c}(\\W|$)`,"g"),(d,m)=>`${g}${m}`).trim())}),s.includes(Jt)&&(s.endsWith(Jt)&&(s=s.slice(0,-Jt.length).trim()),s.startsWith(Jt)&&(s=s.slice(Jt.length).trim()),s=s.replace(new RegExp(`\\${Jt}\\s*\\${Jt}`,"g"),Jt),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(y=>({tag:y,id:qr.includes(y.tag)?Nu(y):y.tag,shouldRender:!0}));let f=s._dom;if(!f){f={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const y of["body","head"]){const x=(p=n[y])==null?void 0:p.children,E=[];for(const A of[...x].filter(T=>qr.includes(T.tagName.toLowerCase()))){const T={tag:A.tagName.toLowerCase(),props:await Mf(A.getAttributeNames().reduce((O,P)=>({...O,[P]:A.getAttribute(P)}),{})),innerHTML:A.innerHTML};let L=1,I=Pf(T);for(;I&&E.find(O=>O._d===I);)I=`${I}:${L++}`;T._d=I||void 0,E.push(T),f.elMap[A.getAttribute("data-hid")||Nu(T)]=A}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function c(y,x,E){const A=`${y}:${x}`;f.sideEffects[A]=E,delete f.pendingSideEffects[A]}function g({id:y,$el:x,tag:E}){const A=E.tag.endsWith("Attrs");f.elMap[y]=x,A||(["textContent","innerHTML"].forEach(T=>{E[T]&&E[T]!==x[T]&&(x[T]=E[T])}),c(y,"el",()=>{var T;(T=f.elMap[y])==null||T.remove(),delete f.elMap[y]}));for(const[T,L]of Object.entries(E._eventHandlers||{}))x.getAttribute(`data-${T}`)!==""&&((E.tag==="bodyAttrs"?n.defaultView:x).addEventListener(T.replace("on",""),L.bind(x)),x.setAttribute(`data-${T}`,""));Object.entries(E.props).forEach(([T,L])=>{const I=`attr:${T}`;if(T==="class")for(const O of(L||"").split(" ").filter(Boolean))A&&c(y,`${I}:${O}`,()=>x.classList.remove(O)),!x.classList.contains(O)&&x.classList.add(O);else if(T==="style")for(const O of(L||"").split(";").filter(Boolean)){const[P,...$]=O.split(":").map(j=>j.trim());c(y,`${I}:${O}:${P}`,()=>{x.style.removeProperty(P)}),x.style.setProperty(P,$.join(":"))}else x.getAttribute(T)!==L&&x.setAttribute(T,L===!0?"":String(L)),A&&c(y,I,()=>x.removeAttribute(T))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of u){const{tag:x,shouldRender:E,id:A}=y;if(E){if(x.tag==="title"){n.title=x.textContent;continue}y.$el=y.$el||f.elMap[A],y.$el?g(y):qr.includes(x.tag)&&d.push(y)}}for(const y of d){const x=y.tag.tagPosition||"head";y.$el=n.createElement(y.tag.tag),g(y),m[x]=m[x]||n.createDocumentFragment(),m[x].appendChild(y.$el)}for(const y of u)await s.hooks.callHook("dom:renderTag",y,n,c);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(y=>y()),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 g=i==null?void 0:i.tagDuplicateStrategy;if(!g&&W0.includes(i.tag)&&(g="merge"),g==="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 c=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(qr.includes(i.tag)&&c===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,c;return(c=(f=o.tag._eventHandlers)==null?void 0:f[u])==null?void 0:c.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(c=>c.attributeName&&Hi.includes(c.attributeName.replace("data-",""))).map(c=>c.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 g;const{tags:n}=o,i=(g=n.find(d=>d.tag==="title"))==null?void 0:g.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},c=f.separator||"|";delete f.separator,f.pageTitle=eo(f.pageTitle||i||"",f,c);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,c):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(p=>{typeof d[p]=="string"&&(d[p]=eo(d[p],f,c))})}s._templateParams=f,s._separator=c,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=()=>{g.dirty=!0,o.callHook("entries:updated",g)};let u=0,f=[];const c=[],g={plugins:c,dirty:!1,resolvedOptions:s,hooks:o,headEntries(){return f},use(d){const m=typeof d=="function"?d(g):d;(!m.key||!c.some(p=>p.key===m.key))&&(c.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(y=>y._i!==p._i),o.callHook("entries:updated",g),i()},patch(y){f=f.map(x=>(x._i===p._i&&(x.input=p.input=y),x)),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 y of await M0(m)){const x={tag:y,entry:m,resolvedOptions:g.resolvedOptions};await o.callHook("tag:normalise",x),d.tags.push(x.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=>g.use(d)),g.hooks.callHook("init",g),g}function Q0(){return Df}const Hf=K1.startsWith("3");function _0(s){return typeof s=="function"?s():ln(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,ln(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,g=>{f.patch(g)}),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)}},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"}},sm={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:""}]},am={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Je={browser:Bf,reader:sm,websockets:am},um="modulepreload",fm=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");u=Promise.all(n.map(c=>{if(c=fm(c),c in zu)return;zu[c]=!0;const g=c.endsWith(".css"),d=g?'[rel="stylesheet"]':"";if(!!i)for(let y=f.length-1;y>=0;y--){const x=f[y];if(x.href===c&&(!g||x.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${d}`))return;const p=document.createElement("link");if(p.rel=g?"stylesheet":um,g||(p.as="script",p.crossOrigin=""),p.href=c,document.head.appendChild(p),g)return new Promise((y,x)=>{p.addEventListener("load",y),p.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${c}`)))})}))}return u.then(()=>o()).catch(f=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=f,window.dispatchEvent(c),!c.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 cm(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,lm=/&/g,dm=/\//g,hm=/=/g,pm=/\?/g,Nf=/\+/g,vm=/%5B/g,gm=/%5D/g,$f=/%5E/g,mm=/%60/g,Gf=/%7B/g,ym=/%7C/g,Uf=/%7D/g,xm=/%20/g;function qi(s){return encodeURI(""+s).replace(ym,"|").replace(vm,"[").replace(gm,"]")}function Sm(s){return qi(s).replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Ki(s){return qi(s).replace(Nf,"%2B").replace(xm,"+").replace(Wf,"%23").replace(lm,"%26").replace(mm,"`").replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Em(s){return Ki(s).replace(hm,"%3D")}function bm(s){return qi(s).replace(Wf,"%23").replace(pm,"%3F")}function Lm(s){return s==null?"":bm(s).replace(dm,"%2F")}function ir(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const Am=/\/$/,Tm=s=>s.replace(Am,"");function Bi(s,o,n="/"){let i,u={},f="",c="";const g=o.indexOf("#");let d=o.indexOf("?");return g<d&&g>=0&&(d=-1),d>-1&&(i=o.slice(0,d),f=o.slice(d+1,g>-1?g:o.length),u=s(f)),g>-1&&(i=i||o.slice(0,g),c=o.slice(g,o.length)),i=Im(i??o,n),{fullPath:i+(f&&"?")+f+c,path:i,query:u,hash:ir(c)}}function wm(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 Rm(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(!Om(s[n],o[n]))return!1;return!0}function Om(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 Im(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,c,g;for(c=0;c<i.length;c++)if(g=i[c],g!==".")if(g==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(c).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 Cm(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),Tm(s)}const Pm=/^[^#]+#/;function Mm(s,o){return s.replace(Pm,"#")+o}function Dm(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 co=()=>({left:window.scrollX,top:window.scrollY});function Hm(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=Dm(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 Fm(s,o){ji.set(s,o)}function Bm(s){const o=ji.get(s);return ji.delete(s),o}let Wm=()=>location.protocol+"//"+location.host;function Kf(s,o){const{pathname:n,search:i,hash:u}=o,f=s.indexOf("#");if(f>-1){let g=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(g);return d[0]!=="/"&&(d="/"+d),ku(d,"")}return ku(n,s)+i+u}function Nm(s,o,n,i){let u=[],f=[],c=null;const g=({state:x})=>{const E=Kf(s,location),A=n.value,T=o.value;let L=0;if(x){if(n.value=E,o.value=x,c&&c===A){c=null;return}L=T?x.position-T.position:0}else i(E);u.forEach(I=>{I(n.value,A,{delta:L,type:sr.pop,direction:L?L>0?or.forward:or.back:or.unknown})})};function d(){c=n.value}function m(x){u.push(x);const E=()=>{const A=u.indexOf(x);A>-1&&u.splice(A,1)};return f.push(E),E}function p(){const{history:x}=window;x.state&&x.replaceState(Se({},x.state,{scroll:co()}),"")}function y(){for(const x of f)x();f=[],window.removeEventListener("popstate",g),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",g),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:d,listen:m,destroy:y}}function Xu(s,o,n,i=!1,u=!1){return{back:s,current:o,forward:n,replaced:i,position:window.history.length,scroll:u?co():null}}function $m(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 y=s.indexOf("#"),x=y>-1?(n.host&&document.querySelector("base")?s:s.slice(y))+d:Wm()+s+d;try{o[p?"replaceState":"pushState"](m,"",x),u.value=m}catch(E){console.error(E),n[p?"replace":"assign"](x)}}function c(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 g(d,m){const p=Se({},u.value,o.state,{forward:d,scroll:co()});f(p.current,p,!0);const y=Se({},Xu(i.value,d,null),{position:p.position+1},m);f(d,y,!1),i.value=d}return{location:i,state:u,push:g,replace:c}}function Gm(s){s=Cm(s);const o=$m(s),n=Nm(s,o.state,o.location,o.replace);function i(f,c=!0){c||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:Mm.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 Um(s){return typeof s=="string"||s&&typeof s=="object"}function jf(s){return typeof s=="string"||typeof s=="symbol"}const Qt={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="[^/]+?",Vm={sensitive:!1,strict:!1,start:!0,end:!0},Km=/[.+*?^${}()[\]/\\]/g;function jm(s,o){const n=Se({},Vm,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 y=0;y<m.length;y++){const x=m[y];let E=40+(n.sensitive?.25:0);if(x.type===0)y||(u+="/"),u+=x.value.replace(Km,"\\$&"),E+=40;else if(x.type===1){const{value:A,repeatable:T,optional:L,regexp:I}=x;f.push({name:A,repeatable:T,optional:L});const O=I||Qu;if(O!==Qu){E+=10;try{new RegExp(`(${O})`)}catch($){throw new Error(`Invalid custom RegExp for param "${A}" (${O}): `+$.message)}}let P=T?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;y||(P=L&&m.length<2?`(?:/${P})`:"/"+P),L&&(P+="?"),u+=P,E+=20,L&&(E+=-8),T&&(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 c=new RegExp(u,n.sensitive?"":"i");function g(m){const p=m.match(c),y={};if(!p)return null;for(let x=1;x<p.length;x++){const E=p[x]||"",A=f[x-1];y[A.name]=E&&A.repeatable?E.split("/"):E}return y}function d(m){let p="",y=!1;for(const x of s){(!y||!p.endsWith("/"))&&(p+="/"),y=!1;for(const E of x)if(E.type===0)p+=E.value;else if(E.type===1){const{value:A,repeatable:T,optional:L}=E,I=A in m?m[A]:"";if(At(I)&&!T)throw new Error(`Provided param "${A}" is an array but it is not repeatable (* or + modifiers)`);const O=At(I)?I.join("/"):I;if(!O)if(L)x.length<2&&(p.endsWith("/")?p=p.slice(0,-1):y=!0);else throw new Error(`Missing required param "${A}"`);p+=O}}return p||"/"}return{re:c,score:i,keys:f,parse:g,stringify:d}}function zm(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 km(s,o){let n=0;const i=s.score,u=o.score;for(;n<i.length&&n<u.length;){const f=zm(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 Zm={type:0,value:""},Ym=/[a-zA-Z0-9_]/;function Xm(s){if(!s)return[[]];if(s==="/")return[[Zm]];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 c(){f&&u.push(f),f=[]}let g=0,d,m="",p="";function y(){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 x(){m+=d}for(;g<s.length;){if(d=s[g++],d==="\\"&&n!==2){i=n,n=4;continue}switch(n){case 0:d==="/"?(m&&y(),c()):d===":"?(y(),n=1):x();break;case 4:x(),n=i;break;case 1:d==="("?n=2:Ym.test(d)?x():(y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&g--);break;case 2:d===")"?p[p.length-1]=="\\"?p=p.slice(0,-1)+d:n=3:p+=d;break;case 3:y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&g--,p="";break;default:o("Unknown state");break}}return n===2&&o(`Unfinished custom RegExp for param "${m}"`),y(),c(),u}function Jm(s,o,n){const i=jm(Xm(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 Qm(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,y,x){const E=!x,A=_m(p);A.aliasOf=x&&x.record;const T=tf(o,p),L=[A];if("alias"in p){const P=typeof p.alias=="string"?[p.alias]:p.alias;for(const $ of P)L.push(Se({},A,{components:x?x.record.components:A.components,path:$,aliasOf:x?x.record:A}))}let I,O;for(const P of L){const{path:$}=P;if(y&&$[0]!=="/"){const j=y.record.path,H=j[j.length-1]==="/"?"":"/";P.path=y.record.path+($&&H+$)}if(I=Jm(P,y,T),x?x.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),E&&p.name&&!ef(I)&&c(p.name)),A.children){const j=A.children;for(let H=0;H<j.length;H++)f(j[H],I,x&&x.children[H])}x=x||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{c(O)}:rr}function c(p){if(jf(p)){const y=i.get(p);y&&(i.delete(p),n.splice(n.indexOf(y),1),y.children.forEach(c),y.alias.forEach(c))}else{const y=n.indexOf(p);y>-1&&(n.splice(y,1),p.record.name&&i.delete(p.record.name),p.children.forEach(c),p.alias.forEach(c))}}function g(){return n}function d(p){let y=0;for(;y<n.length&&km(p,n[y])>=0&&(p.record.path!==n[y].record.path||!kf(p,n[y]));)y++;n.splice(y,0,p),p.record.name&&!ef(p)&&i.set(p.record.name,p)}function m(p,y){let x,E={},A,T;if("name"in p&&p.name){if(x=i.get(p.name),!x)throw Mn(1,{location:p});T=x.record.name,E=Se(qu(y.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),p.params&&qu(p.params,x.keys.map(O=>O.name))),A=x.stringify(E)}else if(p.path!=null)A=p.path,x=n.find(O=>O.re.test(A)),x&&(E=x.parse(A),T=x.record.name);else{if(x=y.name?i.get(y.name):n.find(O=>O.re.test(y.path)),!x)throw Mn(1,{location:p,currentLocation:y});T=x.record.name,E=Se({},y.params,p.params),A=x.stringify(E)}const L=[];let I=x;for(;I;)L.unshift(I.record),I=I.parent;return{name:T,path:A,params:E,matched:L,meta:ey(L)}}return s.forEach(p=>f(p)),{addRoute:f,resolve:m,removeRoute:c,getRoutes:g,getRecordMatcher:u}}function qu(s,o){const n={};for(const i of o)i in s&&(n[i]=s[i]);return n}function _m(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:qm(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 qm(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 ey(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 ty(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," "),c=f.indexOf("="),g=ir(c<0?f:f.slice(0,c)),d=c<0?null:ir(f.slice(c+1));if(g in o){let m=o[g];At(m)||(m=o[g]=[m]),m.push(d)}else o[g]=d}return o}function nf(s){let o="";for(let n in s){const i=s[n];if(n=Em(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 ny(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 ry=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 _t(s,o,n,i,u,f=c=>c()){const c=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((g,d)=>{const m=x=>{x===!1?d(Mn(4,{from:n,to:o})):x instanceof Error?d(x):Um(x)?d(Mn(2,{from:o,to:x})):(c&&i.enterCallbacks[u]===c&&typeof x=="function"&&c.push(x),g())},p=f(()=>s.call(i&&i.instances[u],o,n,m));let y=Promise.resolve(p);s.length<3&&(y=y.then(m)),y.catch(x=>d(x))})}function Wi(s,o,n,i,u=f=>f()){const f=[];for(const c of s)for(const g in c.components){let d=c.components[g];if(!(o!=="beforeRouteEnter"&&!c.instances[g]))if(oy(d)){const p=(d.__vccOpts||d)[o];p&&f.push(_t(p,n,i,c,g,u))}else{let m=d();f.push(()=>m.then(p=>{if(!p)return Promise.reject(new Error(`Couldn't resolve component "${g}" at "${c.path}"`));const y=cm(p)?p.default:p;c.components[g]=y;const E=(y.__vccOpts||y)[o];return E&&_t(E,n,i,c,g,u)()}))}}return f}function oy(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(ln(s.to))),u=Ae(()=>{const{matched:d}=i.value,{length:m}=d,p=d[m-1],y=n.matched;if(!p||!y.length)return-1;const x=y.findIndex(Pn.bind(null,p));if(x>-1)return x;const E=sf(d[m-2]);return m>1&&sf(p)===E&&y[y.length-1].path!==E?y.findIndex(Pn.bind(null,d[m-2])):x}),f=Ae(()=>u.value>-1&&uy(n.params,i.value.params)),c=Ae(()=>u.value>-1&&u.value===n.matched.length-1&&Vf(n.params,i.value.params));function g(d={}){return ay(d)?o[ln(s.replace)?"replace":"push"](ln(s.to)).catch(rr):Promise.resolve()}return{route:i,href:Ae(()=>i.value.href),isActive:f,isExactActive:c,navigate:g}}const iy=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)}}}),sy=iy;function ay(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 uy(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,c)=>f!==u[c]))return!1}return!0}function sf(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const af=(s,o,n)=>s??o??n,fy=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),c=Ae(()=>{let m=ln(f);const{matched:p}=u.value;let y;for(;(y=p[m])&&!y.components;)m++;return m}),g=Ae(()=>u.value.matched[c.value]);nr(rf,Ae(()=>c.value+1)),nr(ry,g),nr(zi,u);const d=to();return Qi(()=>[d.value,g.value,s.name],([m,p,y],[x,E,A])=>{p&&(p.instances[y]=m,E&&E!==p&&m&&m===x&&(p.leaveGuards.size||(p.leaveGuards=E.leaveGuards),p.updateGuards.size||(p.updateGuards=E.updateGuards))),m&&p&&(!E||!Pn(p,E)||!x)&&(p.enterCallbacks[y]||[]).forEach(T=>T(m))},{flush:"post"}),()=>{const m=u.value,p=s.name,y=g.value,x=y&&y.components[p];if(!x)return uf(n.default,{Component:x,route:m});const E=y.props[p],A=E?E===!0?m.params:typeof E=="function"?E(m):E:null,L=Tf(x,Se({},A,o,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(y.instances[p]=null)},ref:d}));return uf(n.default,{Component:L,route:m})||L}}});function uf(s,o){if(!s)return null;const n=s(o);return n.length===1?n[0]:n}const cy=fy;function ly(s){const o=Qm(s.routes,s),n=s.parseQuery||ty,i=s.stringifyQuery||nf,u=s.history,f=qn(),c=qn(),g=qn(),d=Cn(Qt);let m=Qt;On&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=Fi.bind(null,W=>""+W),y=Fi.bind(null,Lm),x=Fi.bind(null,ir);function E(W,X){let z,_;return jf(W)?(z=o.getRecordMatcher(W),_=X):_=W,o.addRoute(_,z)}function A(W){const X=o.getRecordMatcher(W);X&&o.removeRoute(X)}function T(){return o.getRoutes().map(W=>W.record)}function L(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:x(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:y(ee)}),X.params=y(X.params)}const _=o.resolve(z,X),ge=W.hash||"";_.params=p(x(_.params));const Te=wm(i,Se({},W,{hash:Sm(ge),path:_.path})),fe=u.createHref(Te);return Se({fullPath:Te,hash:ge,query:i===nf?ny(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&&Rm(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):le(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]=dy(W,X);z=Wi(_.reverse(),"beforeRouteLeave",W,X);for(const ee of _)ee.leaveGuards.forEach(we=>{z.push(_t(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(_t(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(_t(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(_t(we,W,X));else z.push(_t(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 c.list())z.push(_t(ee,W,X));return z.push(fe),De(z)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(W,X,z){g.list().forEach(_=>N(()=>_(W,X,z)))}function Z(W,X,z,_,ge){const Te=P(W,X);if(Te)return Te;const fe=X===Qt,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&&Fm(Yu(Te.fullPath,z.delta),co()),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),le(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 le(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!==Qt?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&&Bm(Yu(W.fullPath,0))||(_||!z)&&history.state&&history.state.scroll||null;return Ji().then(()=>ge(W,X,Te)).then(fe=>fe&&Hm(fe)).catch(fe=>le(fe,W,X))}const je=W=>u.go(W);let Ge;const vt=new Set,gt={currentRoute:d,listening:!0,addRoute:E,removeRoute:A,hasRoute:L,getRoutes:T,resolve:I,options:s,push:$,replace:j,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:f.add,beforeResolve:c.add,afterEach:g.add,onError:We.add,isReady:Me,install(W){const X=this;W.component("RouterLink",sy),W.component("RouterView",cy),W.config.globalProperties.$router=X,Object.defineProperty(W.config.globalProperties,"$route",{enumerable:!0,get:()=>ln(d)}),On&&!Ge&&d.value===Qt&&(Ge=!0,$(u.location).catch(ge=>{}));const z={};for(const ge in Qt)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=Qt,Y&&Y(),Y=null,d.value=Qt,Ge=!1,ue=!1),_()}}};function De(W){return W.reduce((X,z)=>X.then(()=>N(z)),Promise.resolve())}return gt}function dy(s,o){const n=[],i=[],u=[],f=Math.max(o.matched.length,s.matched.length);for(let c=0;c<f;c++){const g=o.matched[c];g&&(s.matched.find(m=>Pn(m,g))?i.push(g):n.push(g));const d=s.matched[c];d&&(o.matched.find(m=>Pn(m,d))||u.push(d))}return[n,i,u]}const hy=()=>It(()=>import("./admin-BJ30SRLy.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),py=()=>It(()=>import("./browser-B8oeFF1T.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])),vy=()=>It(()=>import("./http-error-CXcReeqY.js"),__vite__mapDeps([36,2,3,16,17,37])),gy=()=>It(()=>import("./reader-CjlaRLJj.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])),my=()=>It(()=>import("./flag-tab-BQzHCCCx.js"),__vite__mapDeps([44,2,3,29,30,31,22,9,10,32,45])),yy=()=>It(()=>import("./user-tab-u5aYpXjb.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])),xy=()=>It(()=>import("./group-tab-07XKbcg7.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])),Sy=()=>It(()=>import("./library-tab-BjgHtQN3.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])),Ey=()=>It(()=>import("./task-tab-okFK5v4-.js"),__vite__mapDeps([55,33,5,2,3,6,34,56])),by=()=>It(()=>import("./stats-tab-D8Qi4MzQ.js"),__vite__mapDeps([57,33,5,2,3,6,34,4,24,29,30,58])),Ly={name:"browser",params:window.CODEX.LAST_ROUTE||Bf.route},Ay=[{name:"home",path:"/",redirect:Ly},{name:"reader",path:"/c/:pk/:page",component:gy},{name:"browser",path:"/:group/:pk/:page",component:py},{name:"admin",path:"/admin",component:hy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:yy},{name:"admin-groups",path:"groups",component:xy},{name:"admin-libraries",path:"libraries",component:Sy},{name:"admin-flags",path:"flags",component:my},{name:"admin-tasks",path:"tasks",component:Ey},{name:"admin-stats",path:"stats",component:by}]},{name:"error",path:"/error/:code",component:vy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Lt=new ly({history:Gm(window.CODEX.APP_PATH),routes:Ay});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 z2(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 cm(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,lm=/&/g,dm=/\//g,hm=/=/g,pm=/\?/g,Nf=/\+/g,vm=/%5B/g,gm=/%5D/g,$f=/%5E/g,mm=/%60/g,Gf=/%7B/g,ym=/%7C/g,Uf=/%7D/g,xm=/%20/g;function qi(s){return encodeURI(""+s).replace(ym,"|").replace(vm,"[").replace(gm,"]")}function Sm(s){return qi(s).replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Ki(s){return qi(s).replace(Nf,"%2B").replace(xm,"+").replace(Wf,"%23").replace(lm,"%26").replace(mm,"`").replace(Gf,"{").replace(Uf,"}").replace($f,"^")}function Em(s){return Ki(s).replace(hm,"%3D")}function bm(s){return qi(s).replace(Wf,"%23").replace(pm,"%3F")}function Lm(s){return s==null?"":bm(s).replace(dm,"%2F")}function ir(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const Am=/\/$/,Tm=s=>s.replace(Am,"");function Bi(s,o,n="/"){let i,u={},f="",c="";const g=o.indexOf("#");let d=o.indexOf("?");return g<d&&g>=0&&(d=-1),d>-1&&(i=o.slice(0,d),f=o.slice(d+1,g>-1?g:o.length),u=s(f)),g>-1&&(i=i||o.slice(0,g),c=o.slice(g,o.length)),i=Im(i??o,n),{fullPath:i+(f&&"?")+f+c,path:i,query:u,hash:ir(c)}}function wm(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 Rm(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(!Om(s[n],o[n]))return!1;return!0}function Om(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 Im(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,c,g;for(c=0;c<i.length;c++)if(g=i[c],g!==".")if(g==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(c).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 Cm(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),Tm(s)}const Pm=/^[^#]+#/;function Mm(s,o){return s.replace(Pm,"#")+o}function Dm(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 co=()=>({left:window.scrollX,top:window.scrollY});function Hm(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=Dm(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 Fm(s,o){ji.set(s,o)}function Bm(s){const o=ji.get(s);return ji.delete(s),o}let Wm=()=>location.protocol+"//"+location.host;function Kf(s,o){const{pathname:n,search:i,hash:u}=o,f=s.indexOf("#");if(f>-1){let g=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(g);return d[0]!=="/"&&(d="/"+d),ku(d,"")}return ku(n,s)+i+u}function Nm(s,o,n,i){let u=[],f=[],c=null;const g=({state:x})=>{const E=Kf(s,location),A=n.value,T=o.value;let L=0;if(x){if(n.value=E,o.value=x,c&&c===A){c=null;return}L=T?x.position-T.position:0}else i(E);u.forEach(I=>{I(n.value,A,{delta:L,type:sr.pop,direction:L?L>0?or.forward:or.back:or.unknown})})};function d(){c=n.value}function m(x){u.push(x);const E=()=>{const A=u.indexOf(x);A>-1&&u.splice(A,1)};return f.push(E),E}function p(){const{history:x}=window;x.state&&x.replaceState(Se({},x.state,{scroll:co()}),"")}function y(){for(const x of f)x();f=[],window.removeEventListener("popstate",g),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",g),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:d,listen:m,destroy:y}}function Xu(s,o,n,i=!1,u=!1){return{back:s,current:o,forward:n,replaced:i,position:window.history.length,scroll:u?co():null}}function $m(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 y=s.indexOf("#"),x=y>-1?(n.host&&document.querySelector("base")?s:s.slice(y))+d:Wm()+s+d;try{o[p?"replaceState":"pushState"](m,"",x),u.value=m}catch(E){console.error(E),n[p?"replace":"assign"](x)}}function c(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 g(d,m){const p=Se({},u.value,o.state,{forward:d,scroll:co()});f(p.current,p,!0);const y=Se({},Xu(i.value,d,null),{position:p.position+1},m);f(d,y,!1),i.value=d}return{location:i,state:u,push:g,replace:c}}function Gm(s){s=Cm(s);const o=$m(s),n=Nm(s,o.state,o.location,o.replace);function i(f,c=!0){c||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:Mm.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 Um(s){return typeof s=="string"||s&&typeof s=="object"}function jf(s){return typeof s=="string"||typeof s=="symbol"}const Qt={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="[^/]+?",Vm={sensitive:!1,strict:!1,start:!0,end:!0},Km=/[.+*?^${}()[\]/\\]/g;function jm(s,o){const n=Se({},Vm,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 y=0;y<m.length;y++){const x=m[y];let E=40+(n.sensitive?.25:0);if(x.type===0)y||(u+="/"),u+=x.value.replace(Km,"\\$&"),E+=40;else if(x.type===1){const{value:A,repeatable:T,optional:L,regexp:I}=x;f.push({name:A,repeatable:T,optional:L});const O=I||Qu;if(O!==Qu){E+=10;try{new RegExp(`(${O})`)}catch($){throw new Error(`Invalid custom RegExp for param "${A}" (${O}): `+$.message)}}let P=T?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;y||(P=L&&m.length<2?`(?:/${P})`:"/"+P),L&&(P+="?"),u+=P,E+=20,L&&(E+=-8),T&&(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 c=new RegExp(u,n.sensitive?"":"i");function g(m){const p=m.match(c),y={};if(!p)return null;for(let x=1;x<p.length;x++){const E=p[x]||"",A=f[x-1];y[A.name]=E&&A.repeatable?E.split("/"):E}return y}function d(m){let p="",y=!1;for(const x of s){(!y||!p.endsWith("/"))&&(p+="/"),y=!1;for(const E of x)if(E.type===0)p+=E.value;else if(E.type===1){const{value:A,repeatable:T,optional:L}=E,I=A in m?m[A]:"";if(At(I)&&!T)throw new Error(`Provided param "${A}" is an array but it is not repeatable (* or + modifiers)`);const O=At(I)?I.join("/"):I;if(!O)if(L)x.length<2&&(p.endsWith("/")?p=p.slice(0,-1):y=!0);else throw new Error(`Missing required param "${A}"`);p+=O}}return p||"/"}return{re:c,score:i,keys:f,parse:g,stringify:d}}function zm(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 km(s,o){let n=0;const i=s.score,u=o.score;for(;n<i.length&&n<u.length;){const f=zm(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 Zm={type:0,value:""},Ym=/[a-zA-Z0-9_]/;function Xm(s){if(!s)return[[]];if(s==="/")return[[Zm]];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 c(){f&&u.push(f),f=[]}let g=0,d,m="",p="";function y(){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 x(){m+=d}for(;g<s.length;){if(d=s[g++],d==="\\"&&n!==2){i=n,n=4;continue}switch(n){case 0:d==="/"?(m&&y(),c()):d===":"?(y(),n=1):x();break;case 4:x(),n=i;break;case 1:d==="("?n=2:Ym.test(d)?x():(y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&g--);break;case 2:d===")"?p[p.length-1]=="\\"?p=p.slice(0,-1)+d:n=3:p+=d;break;case 3:y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&g--,p="";break;default:o("Unknown state");break}}return n===2&&o(`Unfinished custom RegExp for param "${m}"`),y(),c(),u}function Jm(s,o,n){const i=jm(Xm(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 Qm(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,y,x){const E=!x,A=_m(p);A.aliasOf=x&&x.record;const T=tf(o,p),L=[A];if("alias"in p){const P=typeof p.alias=="string"?[p.alias]:p.alias;for(const $ of P)L.push(Se({},A,{components:x?x.record.components:A.components,path:$,aliasOf:x?x.record:A}))}let I,O;for(const P of L){const{path:$}=P;if(y&&$[0]!=="/"){const j=y.record.path,H=j[j.length-1]==="/"?"":"/";P.path=y.record.path+($&&H+$)}if(I=Jm(P,y,T),x?x.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),E&&p.name&&!ef(I)&&c(p.name)),A.children){const j=A.children;for(let H=0;H<j.length;H++)f(j[H],I,x&&x.children[H])}x=x||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{c(O)}:rr}function c(p){if(jf(p)){const y=i.get(p);y&&(i.delete(p),n.splice(n.indexOf(y),1),y.children.forEach(c),y.alias.forEach(c))}else{const y=n.indexOf(p);y>-1&&(n.splice(y,1),p.record.name&&i.delete(p.record.name),p.children.forEach(c),p.alias.forEach(c))}}function g(){return n}function d(p){let y=0;for(;y<n.length&&km(p,n[y])>=0&&(p.record.path!==n[y].record.path||!kf(p,n[y]));)y++;n.splice(y,0,p),p.record.name&&!ef(p)&&i.set(p.record.name,p)}function m(p,y){let x,E={},A,T;if("name"in p&&p.name){if(x=i.get(p.name),!x)throw Mn(1,{location:p});T=x.record.name,E=Se(qu(y.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),p.params&&qu(p.params,x.keys.map(O=>O.name))),A=x.stringify(E)}else if(p.path!=null)A=p.path,x=n.find(O=>O.re.test(A)),x&&(E=x.parse(A),T=x.record.name);else{if(x=y.name?i.get(y.name):n.find(O=>O.re.test(y.path)),!x)throw Mn(1,{location:p,currentLocation:y});T=x.record.name,E=Se({},y.params,p.params),A=x.stringify(E)}const L=[];let I=x;for(;I;)L.unshift(I.record),I=I.parent;return{name:T,path:A,params:E,matched:L,meta:ey(L)}}return s.forEach(p=>f(p)),{addRoute:f,resolve:m,removeRoute:c,getRoutes:g,getRecordMatcher:u}}function qu(s,o){const n={};for(const i of o)i in s&&(n[i]=s[i]);return n}function _m(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:qm(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 qm(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 ey(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 ty(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," "),c=f.indexOf("="),g=ir(c<0?f:f.slice(0,c)),d=c<0?null:ir(f.slice(c+1));if(g in o){let m=o[g];At(m)||(m=o[g]=[m]),m.push(d)}else o[g]=d}return o}function nf(s){let o="";for(let n in s){const i=s[n];if(n=Em(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 ny(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 ry=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 _t(s,o,n,i,u,f=c=>c()){const c=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((g,d)=>{const m=x=>{x===!1?d(Mn(4,{from:n,to:o})):x instanceof Error?d(x):Um(x)?d(Mn(2,{from:o,to:x})):(c&&i.enterCallbacks[u]===c&&typeof x=="function"&&c.push(x),g())},p=f(()=>s.call(i&&i.instances[u],o,n,m));let y=Promise.resolve(p);s.length<3&&(y=y.then(m)),y.catch(x=>d(x))})}function Wi(s,o,n,i,u=f=>f()){const f=[];for(const c of s)for(const g in c.components){let d=c.components[g];if(!(o!=="beforeRouteEnter"&&!c.instances[g]))if(oy(d)){const p=(d.__vccOpts||d)[o];p&&f.push(_t(p,n,i,c,g,u))}else{let m=d();f.push(()=>m.then(p=>{if(!p)return Promise.reject(new Error(`Couldn't resolve component "${g}" at "${c.path}"`));const y=cm(p)?p.default:p;c.components[g]=y;const E=(y.__vccOpts||y)[o];return E&&_t(E,n,i,c,g,u)()}))}}return f}function oy(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(ln(s.to))),u=Ae(()=>{const{matched:d}=i.value,{length:m}=d,p=d[m-1],y=n.matched;if(!p||!y.length)return-1;const x=y.findIndex(Pn.bind(null,p));if(x>-1)return x;const E=sf(d[m-2]);return m>1&&sf(p)===E&&y[y.length-1].path!==E?y.findIndex(Pn.bind(null,d[m-2])):x}),f=Ae(()=>u.value>-1&&uy(n.params,i.value.params)),c=Ae(()=>u.value>-1&&u.value===n.matched.length-1&&Vf(n.params,i.value.params));function g(d={}){return ay(d)?o[ln(s.replace)?"replace":"push"](ln(s.to)).catch(rr):Promise.resolve()}return{route:i,href:Ae(()=>i.value.href),isActive:f,isExactActive:c,navigate:g}}const iy=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)}}}),sy=iy;function ay(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 uy(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,c)=>f!==u[c]))return!1}return!0}function sf(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const af=(s,o,n)=>s??o??n,fy=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),c=Ae(()=>{let m=ln(f);const{matched:p}=u.value;let y;for(;(y=p[m])&&!y.components;)m++;return m}),g=Ae(()=>u.value.matched[c.value]);nr(rf,Ae(()=>c.value+1)),nr(ry,g),nr(zi,u);const d=to();return Qi(()=>[d.value,g.value,s.name],([m,p,y],[x,E,A])=>{p&&(p.instances[y]=m,E&&E!==p&&m&&m===x&&(p.leaveGuards.size||(p.leaveGuards=E.leaveGuards),p.updateGuards.size||(p.updateGuards=E.updateGuards))),m&&p&&(!E||!Pn(p,E)||!x)&&(p.enterCallbacks[y]||[]).forEach(T=>T(m))},{flush:"post"}),()=>{const m=u.value,p=s.name,y=g.value,x=y&&y.components[p];if(!x)return uf(n.default,{Component:x,route:m});const E=y.props[p],A=E?E===!0?m.params:typeof E=="function"?E(m):E:null,L=Tf(x,Se({},A,o,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(y.instances[p]=null)},ref:d}));return uf(n.default,{Component:L,route:m})||L}}});function uf(s,o){if(!s)return null;const n=s(o);return n.length===1?n[0]:n}const cy=fy;function ly(s){const o=Qm(s.routes,s),n=s.parseQuery||ty,i=s.stringifyQuery||nf,u=s.history,f=qn(),c=qn(),g=qn(),d=Cn(Qt);let m=Qt;On&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=Fi.bind(null,W=>""+W),y=Fi.bind(null,Lm),x=Fi.bind(null,ir);function E(W,X){let z,_;return jf(W)?(z=o.getRecordMatcher(W),_=X):_=W,o.addRoute(_,z)}function A(W){const X=o.getRecordMatcher(W);X&&o.removeRoute(X)}function T(){return o.getRoutes().map(W=>W.record)}function L(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:x(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:y(ee)}),X.params=y(X.params)}const _=o.resolve(z,X),ge=W.hash||"";_.params=p(x(_.params));const Te=wm(i,Se({},W,{hash:Sm(ge),path:_.path})),fe=u.createHref(Te);return Se({fullPath:Te,hash:ge,query:i===nf?ny(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&&Rm(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):le(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]=dy(W,X);z=Wi(_.reverse(),"beforeRouteLeave",W,X);for(const ee of _)ee.leaveGuards.forEach(we=>{z.push(_t(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(_t(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(_t(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(_t(we,W,X));else z.push(_t(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 c.list())z.push(_t(ee,W,X));return z.push(fe),De(z)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(W,X,z){g.list().forEach(_=>N(()=>_(W,X,z)))}function Z(W,X,z,_,ge){const Te=P(W,X);if(Te)return Te;const fe=X===Qt,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&&Fm(Yu(Te.fullPath,z.delta),co()),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),le(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 le(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!==Qt?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&&Bm(Yu(W.fullPath,0))||(_||!z)&&history.state&&history.state.scroll||null;return Ji().then(()=>ge(W,X,Te)).then(fe=>fe&&Hm(fe)).catch(fe=>le(fe,W,X))}const je=W=>u.go(W);let Ge;const vt=new Set,gt={currentRoute:d,listening:!0,addRoute:E,removeRoute:A,hasRoute:L,getRoutes:T,resolve:I,options:s,push:$,replace:j,go:je,back:()=>je(-1),forward:()=>je(1),beforeEach:f.add,beforeResolve:c.add,afterEach:g.add,onError:We.add,isReady:Me,install(W){const X=this;W.component("RouterLink",sy),W.component("RouterView",cy),W.config.globalProperties.$router=X,Object.defineProperty(W.config.globalProperties,"$route",{enumerable:!0,get:()=>ln(d)}),On&&!Ge&&d.value===Qt&&(Ge=!0,$(u.location).catch(ge=>{}));const z={};for(const ge in Qt)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=Qt,Y&&Y(),Y=null,d.value=Qt,Ge=!1,ue=!1),_()}}};function De(W){return W.reduce((X,z)=>X.then(()=>N(z)),Promise.resolve())}return gt}function dy(s,o){const n=[],i=[],u=[],f=Math.max(o.matched.length,s.matched.length);for(let c=0;c<f;c++){const g=o.matched[c];g&&(s.matched.find(m=>Pn(m,g))?i.push(g):n.push(g));const d=s.matched[c];d&&(o.matched.find(m=>Pn(m,d))||u.push(d))}return[n,i,u]}const hy=()=>It(()=>import("./admin-WlT1dvZa.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),py=()=>It(()=>import("./browser-DvwU-fm8.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])),vy=()=>It(()=>import("./http-error-Blh7S2R3.js"),__vite__mapDeps([36,2,3,16,17,37])),gy=()=>It(()=>import("./reader-C5_plHx4.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])),my=()=>It(()=>import("./flag-tab-CRhZsR80.js"),__vite__mapDeps([44,2,3,29,30,31,22,9,10,32,45])),yy=()=>It(()=>import("./user-tab-DdB6DfEt.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])),xy=()=>It(()=>import("./group-tab-C14FhVzU.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])),Sy=()=>It(()=>import("./library-tab-ChRZE74e.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])),Ey=()=>It(()=>import("./task-tab-CDjmS4B3.js"),__vite__mapDeps([55,33,5,2,3,6,34,56])),by=()=>It(()=>import("./stats-tab-1aM4LZXM.js"),__vite__mapDeps([57,33,5,2,3,6,34,4,24,29,30,58])),Ly={name:"browser",params:window.CODEX.LAST_ROUTE||Bf.route},Ay=[{name:"home",path:"/",redirect:Ly},{name:"reader",path:"/c/:pk/:page",component:gy},{name:"browser",path:"/:group/:pk/:page",component:py},{name:"admin",path:"/admin",component:hy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:yy},{name:"admin-groups",path:"groups",component:xy},{name:"admin-libraries",path:"libraries",component:Sy},{name:"admin-flags",path:"flags",component:my},{name:"admin-tasks",path:"tasks",component:Ey},{name:"admin-stats",path:"stats",component:by}]},{name:"error",path:"/error/:code",component:vy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Lt=new ly({history:Gm(window.CODEX.APP_PATH),routes:Ay});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 z2(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/>