codex 1.6.0a0__py3-none-any.whl → 1.6.0a2__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 (349) hide show
  1. codex/exceptions.py +7 -15
  2. codex/search/backend_search.py +5 -8
  3. codex/serializers/redirect.py +3 -2
  4. codex/static_root/assets/{VCheckbox-Aq_ImMNC.da711f8b6a15.js → VCheckbox-H0aBoP9N.becc7bcda4fe.js} +1 -1
  5. codex/static_root/assets/VCheckbox-H0aBoP9N.becc7bcda4fe.js.br +0 -0
  6. codex/static_root/assets/VCheckbox-H0aBoP9N.becc7bcda4fe.js.gz +0 -0
  7. codex/static_root/assets/{VCheckbox-Aq_ImMNC.js → VCheckbox-H0aBoP9N.js} +1 -1
  8. codex/static_root/assets/VCheckbox-H0aBoP9N.js.br +0 -0
  9. codex/static_root/assets/VCheckbox-H0aBoP9N.js.gz +0 -0
  10. codex/static_root/assets/{VCheckboxBtn-D3izCBa7.54f4d7f48bbf.js → VCheckboxBtn-CTJ47tuf.895028f44ec0.js} +1 -1
  11. codex/static_root/assets/VCheckboxBtn-CTJ47tuf.895028f44ec0.js.br +0 -0
  12. codex/static_root/assets/VCheckboxBtn-CTJ47tuf.895028f44ec0.js.gz +0 -0
  13. codex/static_root/assets/{VCheckboxBtn-D3izCBa7.js → VCheckboxBtn-CTJ47tuf.js} +1 -1
  14. codex/static_root/assets/VCheckboxBtn-CTJ47tuf.js.br +0 -0
  15. codex/static_root/assets/VCheckboxBtn-CTJ47tuf.js.gz +0 -0
  16. codex/static_root/assets/{VCombobox-DLL1EsSN.55622a0cd4ab.js → VCombobox-CN1HkVdW.4e967f4996b8.js} +1 -1
  17. codex/static_root/assets/VCombobox-CN1HkVdW.4e967f4996b8.js.br +0 -0
  18. codex/static_root/assets/VCombobox-CN1HkVdW.4e967f4996b8.js.gz +0 -0
  19. codex/static_root/assets/{VCombobox-DLL1EsSN.js → VCombobox-CN1HkVdW.js} +1 -1
  20. codex/static_root/assets/VCombobox-CN1HkVdW.js.br +0 -0
  21. codex/static_root/assets/VCombobox-CN1HkVdW.js.gz +0 -0
  22. codex/static_root/assets/{VDialog-yDKzaGEj.e8dba78ac8db.js → VDialog-DhRhufg-.7823263dc08c.js} +1 -1
  23. codex/static_root/assets/VDialog-DhRhufg-.7823263dc08c.js.br +0 -0
  24. codex/static_root/assets/VDialog-DhRhufg-.7823263dc08c.js.gz +0 -0
  25. codex/static_root/assets/{VDialog-yDKzaGEj.js → VDialog-DhRhufg-.js} +1 -1
  26. codex/static_root/assets/VDialog-DhRhufg-.js.br +0 -0
  27. codex/static_root/assets/VDialog-DhRhufg-.js.gz +0 -0
  28. codex/static_root/assets/{VExpansionPanels-Cpo8QLLq.d733b7906e00.js → VExpansionPanels-BFGZaci1.44e8d898794f.js} +1 -1
  29. codex/static_root/assets/VExpansionPanels-BFGZaci1.44e8d898794f.js.br +0 -0
  30. codex/static_root/assets/VExpansionPanels-BFGZaci1.44e8d898794f.js.gz +0 -0
  31. codex/static_root/assets/{VExpansionPanels-Cpo8QLLq.js → VExpansionPanels-BFGZaci1.js} +1 -1
  32. codex/static_root/assets/VExpansionPanels-BFGZaci1.js.br +0 -0
  33. codex/static_root/assets/VExpansionPanels-BFGZaci1.js.gz +0 -0
  34. codex/static_root/assets/{VRadioGroup-DEezv8bL.4a609e74e507.js → VRadioGroup-XG50xIIN.2980bd8d85c3.js} +1 -1
  35. codex/static_root/assets/VRadioGroup-XG50xIIN.2980bd8d85c3.js.br +0 -0
  36. codex/static_root/assets/VRadioGroup-XG50xIIN.2980bd8d85c3.js.gz +0 -0
  37. codex/static_root/assets/{VRadioGroup-DEezv8bL.js → VRadioGroup-XG50xIIN.js} +1 -1
  38. codex/static_root/assets/VRadioGroup-XG50xIIN.js.br +0 -0
  39. codex/static_root/assets/VRadioGroup-XG50xIIN.js.gz +0 -0
  40. codex/static_root/assets/{VSelect-BKXcujPy.8871035f5634.js → VSelect-DaalAg2L.1d47bbfdea51.js} +1 -1
  41. codex/static_root/assets/VSelect-DaalAg2L.1d47bbfdea51.js.br +0 -0
  42. codex/static_root/assets/VSelect-DaalAg2L.1d47bbfdea51.js.gz +0 -0
  43. codex/static_root/assets/{VSelect-BKXcujPy.js → VSelect-DaalAg2L.js} +1 -1
  44. codex/static_root/assets/VSelect-DaalAg2L.js.br +0 -0
  45. codex/static_root/assets/VSelect-DaalAg2L.js.gz +0 -0
  46. codex/static_root/assets/{VSelectionControl-DJAPiluk.402a7ad84a8e.js → VSelectionControl-wVVkmChP.6f6cd52d60c6.js} +1 -1
  47. codex/static_root/assets/VSelectionControl-wVVkmChP.6f6cd52d60c6.js.br +0 -0
  48. codex/static_root/assets/VSelectionControl-wVVkmChP.6f6cd52d60c6.js.gz +0 -0
  49. codex/static_root/assets/{VSelectionControl-DJAPiluk.js → VSelectionControl-wVVkmChP.js} +1 -1
  50. codex/static_root/assets/VSelectionControl-wVVkmChP.js.br +0 -0
  51. codex/static_root/assets/VSelectionControl-wVVkmChP.js.gz +0 -0
  52. codex/static_root/assets/{VSlideGroup-C-kO93Va.8c9e31362dc5.js → VSlideGroup-DCfSQ-Vx.4616e3c229cb.js} +1 -1
  53. codex/static_root/assets/VSlideGroup-DCfSQ-Vx.4616e3c229cb.js.br +0 -0
  54. codex/static_root/assets/VSlideGroup-DCfSQ-Vx.4616e3c229cb.js.gz +0 -0
  55. codex/static_root/assets/{VSlideGroup-C-kO93Va.js → VSlideGroup-DCfSQ-Vx.js} +1 -1
  56. codex/static_root/assets/VSlideGroup-DCfSQ-Vx.js.br +0 -0
  57. codex/static_root/assets/VSlideGroup-DCfSQ-Vx.js.gz +0 -0
  58. codex/static_root/assets/{VTable-9vsIQObs.0a135029e924.js → VTable-icaTTwDw.4849eb93242f.js} +1 -1
  59. codex/static_root/assets/VTable-icaTTwDw.4849eb93242f.js.br +0 -0
  60. codex/static_root/assets/VTable-icaTTwDw.4849eb93242f.js.gz +0 -0
  61. codex/static_root/assets/{VTable-9vsIQObs.js → VTable-icaTTwDw.js} +1 -1
  62. codex/static_root/assets/VTable-icaTTwDw.js.br +0 -0
  63. codex/static_root/assets/VTable-icaTTwDw.js.gz +0 -0
  64. codex/static_root/assets/{VTextField-DI9HAmWh.0de01739bbf9.js → VTextField-BzSMerR0.0d18ae12389f.js} +1 -1
  65. codex/static_root/assets/VTextField-BzSMerR0.0d18ae12389f.js.br +0 -0
  66. codex/static_root/assets/VTextField-BzSMerR0.0d18ae12389f.js.gz +0 -0
  67. codex/static_root/assets/{VTextField-DI9HAmWh.js → VTextField-BzSMerR0.js} +1 -1
  68. codex/static_root/assets/VTextField-BzSMerR0.js.br +0 -0
  69. codex/static_root/assets/VTextField-BzSMerR0.js.gz +0 -0
  70. codex/static_root/assets/{VWindowItem-DpnYkF3y.017d99c27b7b.js → VWindowItem-CJBsFzH7.182ab7c56e32.js} +1 -1
  71. codex/static_root/assets/VWindowItem-CJBsFzH7.182ab7c56e32.js.br +0 -0
  72. codex/static_root/assets/VWindowItem-CJBsFzH7.182ab7c56e32.js.gz +0 -0
  73. codex/static_root/assets/{VWindowItem-DpnYkF3y.js → VWindowItem-CJBsFzH7.js} +1 -1
  74. codex/static_root/assets/VWindowItem-CJBsFzH7.js.br +0 -0
  75. codex/static_root/assets/VWindowItem-CJBsFzH7.js.gz +0 -0
  76. codex/static_root/assets/{admin-2BTkfSQA.e7ef29cb106d.js → admin-CWIp315V.645a8df20a44.js} +1 -1
  77. codex/static_root/assets/admin-CWIp315V.645a8df20a44.js.br +0 -0
  78. codex/static_root/assets/admin-CWIp315V.645a8df20a44.js.gz +0 -0
  79. codex/static_root/assets/{admin-2BTkfSQA.js → admin-CWIp315V.js} +1 -1
  80. codex/static_root/assets/admin-CWIp315V.js.br +0 -0
  81. codex/static_root/assets/admin-CWIp315V.js.gz +0 -0
  82. codex/static_root/assets/{admin-drawer-panel-mtdde7vY.c172dbae9463.js → admin-drawer-panel-BNRI3VNZ.86c14bd98bd6.js} +1 -1
  83. codex/static_root/assets/admin-drawer-panel-BNRI3VNZ.86c14bd98bd6.js.br +0 -0
  84. codex/static_root/assets/admin-drawer-panel-BNRI3VNZ.86c14bd98bd6.js.gz +0 -0
  85. codex/static_root/assets/{admin-drawer-panel-mtdde7vY.js → admin-drawer-panel-BNRI3VNZ.js} +1 -1
  86. codex/static_root/assets/admin-drawer-panel-BNRI3VNZ.js.br +0 -0
  87. codex/static_root/assets/admin-drawer-panel-BNRI3VNZ.js.gz +0 -0
  88. codex/static_root/assets/{browser-BA-AwUn-.23bb4b2f6a29.js → browser-CPtVXHUw.8b5c70db6763.js} +1 -1
  89. codex/static_root/assets/browser-CPtVXHUw.8b5c70db6763.js.br +0 -0
  90. codex/static_root/assets/browser-CPtVXHUw.8b5c70db6763.js.gz +0 -0
  91. codex/static_root/assets/{browser-BA-AwUn-.js → browser-CPtVXHUw.js} +1 -1
  92. codex/static_root/assets/browser-CPtVXHUw.js.br +0 -0
  93. codex/static_root/assets/browser-CPtVXHUw.js.gz +0 -0
  94. codex/static_root/assets/{change-password-dialog-C8YONrId.49aa6df6a91d.js → change-password-dialog-C-8Ixgjj.3652325fd252.js} +1 -1
  95. codex/static_root/assets/change-password-dialog-C-8Ixgjj.3652325fd252.js.br +0 -0
  96. codex/static_root/assets/change-password-dialog-C-8Ixgjj.3652325fd252.js.gz +0 -0
  97. codex/static_root/assets/{change-password-dialog-C8YONrId.js → change-password-dialog-C-8Ixgjj.js} +1 -1
  98. codex/static_root/assets/change-password-dialog-C-8Ixgjj.js.br +0 -0
  99. codex/static_root/assets/change-password-dialog-C-8Ixgjj.js.gz +0 -0
  100. codex/static_root/assets/{confirm-dialog-Clg-o2G-.e11d8efef3fb.js → confirm-dialog-C4NOgXW9.6a4b11a365a5.js} +1 -1
  101. codex/static_root/assets/confirm-dialog-C4NOgXW9.6a4b11a365a5.js.br +0 -0
  102. codex/static_root/assets/confirm-dialog-C4NOgXW9.6a4b11a365a5.js.gz +0 -0
  103. codex/static_root/assets/{confirm-dialog-Clg-o2G-.js → confirm-dialog-C4NOgXW9.js} +1 -1
  104. codex/static_root/assets/confirm-dialog-C4NOgXW9.js.br +0 -0
  105. codex/static_root/assets/confirm-dialog-C4NOgXW9.js.gz +0 -0
  106. codex/static_root/assets/{datetime-column-DejrPZxl.9fd36bef6fdd.js → datetime-column-Dbxk_0ER.e8e0fe9ebd90.js} +1 -1
  107. codex/static_root/assets/datetime-column-Dbxk_0ER.e8e0fe9ebd90.js.br +0 -0
  108. codex/static_root/assets/datetime-column-Dbxk_0ER.e8e0fe9ebd90.js.gz +0 -0
  109. codex/static_root/assets/{datetime-column-DejrPZxl.js → datetime-column-Dbxk_0ER.js} +1 -1
  110. codex/static_root/assets/datetime-column-Dbxk_0ER.js.br +0 -0
  111. codex/static_root/assets/datetime-column-Dbxk_0ER.js.gz +0 -0
  112. codex/static_root/assets/{filter-DHo57nTp.4d79a276d806.js → filter-DrwUDlyj.a6d17d3d7c6c.js} +1 -1
  113. codex/static_root/assets/filter-DrwUDlyj.a6d17d3d7c6c.js.br +0 -0
  114. codex/static_root/assets/filter-DrwUDlyj.a6d17d3d7c6c.js.gz +0 -0
  115. codex/static_root/assets/{filter-DHo57nTp.js → filter-DrwUDlyj.js} +1 -1
  116. codex/static_root/assets/filter-DrwUDlyj.js.br +0 -0
  117. codex/static_root/assets/filter-DrwUDlyj.js.gz +0 -0
  118. codex/static_root/assets/{flag-tab-CagMLGSE.125739911c45.js → flag-tab-CBkrOBs1.e505e2ec12e8.js} +1 -1
  119. codex/static_root/assets/flag-tab-CBkrOBs1.e505e2ec12e8.js.br +0 -0
  120. codex/static_root/assets/flag-tab-CBkrOBs1.e505e2ec12e8.js.gz +0 -0
  121. codex/static_root/assets/{flag-tab-CagMLGSE.js → flag-tab-CBkrOBs1.js} +1 -1
  122. codex/static_root/assets/flag-tab-CBkrOBs1.js.br +0 -0
  123. codex/static_root/assets/flag-tab-CBkrOBs1.js.gz +0 -0
  124. codex/static_root/assets/{group-tab-BTAjhv32.ac196780d0a9.js → group-tab-CmqOuOJM.eef499d163cb.js} +1 -1
  125. codex/static_root/assets/group-tab-CmqOuOJM.eef499d163cb.js.br +0 -0
  126. codex/static_root/assets/group-tab-CmqOuOJM.eef499d163cb.js.gz +0 -0
  127. codex/static_root/assets/{group-tab-BTAjhv32.js → group-tab-CmqOuOJM.js} +1 -1
  128. codex/static_root/assets/group-tab-CmqOuOJM.js.br +0 -0
  129. codex/static_root/assets/group-tab-CmqOuOJM.js.gz +0 -0
  130. codex/static_root/assets/{http-error-DaHEsKbT.55d56ce2b9b4.js → http-error-DQn3mkP_.39be7808902f.js} +1 -1
  131. codex/static_root/assets/http-error-DQn3mkP_.39be7808902f.js.br +0 -0
  132. codex/static_root/assets/http-error-DQn3mkP_.39be7808902f.js.gz +0 -0
  133. codex/static_root/assets/{http-error-DaHEsKbT.js → http-error-DQn3mkP_.js} +1 -1
  134. codex/static_root/assets/http-error-DQn3mkP_.js.br +0 -0
  135. codex/static_root/assets/http-error-DQn3mkP_.js.gz +0 -0
  136. codex/static_root/assets/{library-tab-Cud4639b.7f5a50aaabe8.js → library-tab-eRhFvDgA.2393d6de04e0.js} +1 -1
  137. codex/static_root/assets/library-tab-eRhFvDgA.2393d6de04e0.js.br +0 -0
  138. codex/static_root/assets/library-tab-eRhFvDgA.2393d6de04e0.js.gz +0 -0
  139. codex/static_root/assets/{library-tab-Cud4639b.js → library-tab-eRhFvDgA.js} +1 -1
  140. codex/static_root/assets/library-tab-eRhFvDgA.js.br +0 -0
  141. codex/static_root/assets/library-tab-eRhFvDgA.js.gz +0 -0
  142. codex/static_root/assets/{main-BnzL_Byv.js → main-BJYrxs0x.7cc1623ba51f.js} +3 -3
  143. codex/static_root/assets/main-BJYrxs0x.7cc1623ba51f.js.br +0 -0
  144. codex/static_root/assets/main-BJYrxs0x.7cc1623ba51f.js.gz +0 -0
  145. codex/static_root/assets/{main-BnzL_Byv.22f98ee91990.js → main-BJYrxs0x.js} +3 -3
  146. codex/static_root/assets/main-BJYrxs0x.js.br +0 -0
  147. codex/static_root/assets/main-BJYrxs0x.js.gz +0 -0
  148. codex/static_root/assets/{pagination-toolbar-Covpd-k8.b71277bd7a2d.js → pagination-toolbar-DcauC4Lw.dad9bb484e5d.js} +1 -1
  149. codex/static_root/assets/pagination-toolbar-DcauC4Lw.dad9bb484e5d.js.br +0 -0
  150. codex/static_root/assets/pagination-toolbar-DcauC4Lw.dad9bb484e5d.js.gz +0 -0
  151. codex/static_root/assets/{pagination-toolbar-Covpd-k8.js → pagination-toolbar-DcauC4Lw.js} +1 -1
  152. codex/static_root/assets/pagination-toolbar-DcauC4Lw.js.br +0 -0
  153. codex/static_root/assets/pagination-toolbar-DcauC4Lw.js.gz +0 -0
  154. codex/static_root/assets/{pdf-doc-CD2lnB32.1cef3bf498be.js → pdf-doc-D3W9I2V8.d51a33004ceb.js} +1 -1
  155. codex/static_root/assets/pdf-doc-D3W9I2V8.d51a33004ceb.js.br +0 -0
  156. codex/static_root/assets/pdf-doc-D3W9I2V8.d51a33004ceb.js.gz +0 -0
  157. codex/static_root/assets/{pdf-doc-CD2lnB32.js → pdf-doc-D3W9I2V8.js} +1 -1
  158. codex/static_root/assets/pdf-doc-D3W9I2V8.js.br +0 -0
  159. codex/static_root/assets/pdf-doc-D3W9I2V8.js.gz +0 -0
  160. codex/static_root/assets/{reader-L85y7IXD.6de58f450421.js → reader-DoS_6GK6.e925ddad76cb.js} +2 -2
  161. codex/static_root/assets/reader-DoS_6GK6.e925ddad76cb.js.br +0 -0
  162. codex/static_root/assets/reader-DoS_6GK6.e925ddad76cb.js.gz +0 -0
  163. codex/static_root/assets/{reader-L85y7IXD.js → reader-DoS_6GK6.js} +2 -2
  164. codex/static_root/assets/reader-DoS_6GK6.js.br +0 -0
  165. codex/static_root/assets/reader-DoS_6GK6.js.gz +0 -0
  166. codex/static_root/assets/{relation-chips-BpuqEeqM.1372d8a3e6cf.js → relation-chips-BoGgSbRW.70d218bd068a.js} +1 -1
  167. codex/static_root/assets/relation-chips-BoGgSbRW.70d218bd068a.js.br +0 -0
  168. codex/static_root/assets/relation-chips-BoGgSbRW.70d218bd068a.js.gz +0 -0
  169. codex/static_root/assets/{relation-chips-BpuqEeqM.js → relation-chips-BoGgSbRW.js} +1 -1
  170. codex/static_root/assets/relation-chips-BoGgSbRW.js.br +0 -0
  171. codex/static_root/assets/relation-chips-BoGgSbRW.js.gz +0 -0
  172. codex/static_root/assets/{settings-drawer-CLMcxfVd.js → settings-drawer-B433DlG2.8938c9836391.js} +2 -2
  173. codex/static_root/assets/settings-drawer-B433DlG2.8938c9836391.js.br +0 -0
  174. codex/static_root/assets/settings-drawer-B433DlG2.8938c9836391.js.gz +0 -0
  175. codex/static_root/assets/{settings-drawer-CLMcxfVd.b9619341ad48.js → settings-drawer-B433DlG2.js} +2 -2
  176. codex/static_root/assets/settings-drawer-B433DlG2.js.br +0 -0
  177. codex/static_root/assets/settings-drawer-B433DlG2.js.gz +0 -0
  178. codex/static_root/assets/{stats-tab-CQa3-W05.3d7c61418528.js → stats-tab-Cboz3cW4.ce1fe3f93f78.js} +1 -1
  179. codex/static_root/assets/stats-tab-Cboz3cW4.ce1fe3f93f78.js.br +0 -0
  180. codex/static_root/assets/stats-tab-Cboz3cW4.ce1fe3f93f78.js.gz +0 -0
  181. codex/static_root/assets/{stats-tab-CQa3-W05.js → stats-tab-Cboz3cW4.js} +1 -1
  182. codex/static_root/assets/stats-tab-Cboz3cW4.js.br +0 -0
  183. codex/static_root/assets/stats-tab-Cboz3cW4.js.gz +0 -0
  184. codex/static_root/assets/{task-tab-OPhBm-O2.8f31f4215114.js → task-tab-DJAAAC9L.3f66c1fbf32f.js} +1 -1
  185. codex/static_root/assets/task-tab-DJAAAC9L.3f66c1fbf32f.js.br +0 -0
  186. codex/static_root/assets/task-tab-DJAAAC9L.3f66c1fbf32f.js.gz +0 -0
  187. codex/static_root/assets/{task-tab-OPhBm-O2.js → task-tab-DJAAAC9L.js} +1 -1
  188. codex/static_root/assets/task-tab-DJAAAC9L.js.br +0 -0
  189. codex/static_root/assets/task-tab-DJAAAC9L.js.gz +0 -0
  190. codex/static_root/assets/{unauthorized-ClQNhRb5.32a8a84d1781.js → unauthorized-DFTKS7Wr.bb45c7944ddc.js} +1 -1
  191. codex/static_root/assets/unauthorized-DFTKS7Wr.bb45c7944ddc.js.br +0 -0
  192. codex/static_root/assets/unauthorized-DFTKS7Wr.bb45c7944ddc.js.gz +0 -0
  193. codex/static_root/assets/{unauthorized-ClQNhRb5.js → unauthorized-DFTKS7Wr.js} +1 -1
  194. codex/static_root/assets/unauthorized-DFTKS7Wr.js.br +0 -0
  195. codex/static_root/assets/unauthorized-DFTKS7Wr.js.gz +0 -0
  196. codex/static_root/assets/{user-tab-BKkxa2WL.50d83951c09f.js → user-tab-Dpe-epEv.662e0945ac0a.js} +1 -1
  197. codex/static_root/assets/user-tab-Dpe-epEv.662e0945ac0a.js.br +0 -0
  198. codex/static_root/assets/user-tab-Dpe-epEv.662e0945ac0a.js.gz +0 -0
  199. codex/static_root/assets/{user-tab-BKkxa2WL.js → user-tab-Dpe-epEv.js} +1 -1
  200. codex/static_root/assets/user-tab-Dpe-epEv.js.br +0 -0
  201. codex/static_root/assets/user-tab-Dpe-epEv.js.gz +0 -0
  202. codex/static_root/{manifest.c5fa10a7dfdc.json → manifest.2f8dc912af05.json} +227 -227
  203. codex/static_root/manifest.2f8dc912af05.json.br +0 -0
  204. codex/static_root/manifest.2f8dc912af05.json.gz +0 -0
  205. codex/static_root/manifest.json +227 -227
  206. codex/static_root/manifest.json.br +0 -0
  207. codex/static_root/manifest.json.gz +0 -0
  208. codex/static_root/staticfiles.json +1 -1
  209. codex/views/browser/browser.py +0 -1
  210. codex/views/browser/browser_annotations.py +1 -0
  211. {codex-1.6.0a0.dist-info → codex-1.6.0a2.dist-info}/METADATA +1 -1
  212. {codex-1.6.0a0.dist-info → codex-1.6.0a2.dist-info}/RECORD +215 -215
  213. codex/static_root/assets/VCheckbox-Aq_ImMNC.da711f8b6a15.js.br +0 -0
  214. codex/static_root/assets/VCheckbox-Aq_ImMNC.da711f8b6a15.js.gz +0 -0
  215. codex/static_root/assets/VCheckbox-Aq_ImMNC.js.br +0 -0
  216. codex/static_root/assets/VCheckbox-Aq_ImMNC.js.gz +0 -0
  217. codex/static_root/assets/VCheckboxBtn-D3izCBa7.54f4d7f48bbf.js.br +0 -0
  218. codex/static_root/assets/VCheckboxBtn-D3izCBa7.54f4d7f48bbf.js.gz +0 -0
  219. codex/static_root/assets/VCheckboxBtn-D3izCBa7.js.br +0 -0
  220. codex/static_root/assets/VCheckboxBtn-D3izCBa7.js.gz +0 -0
  221. codex/static_root/assets/VCombobox-DLL1EsSN.55622a0cd4ab.js.br +0 -0
  222. codex/static_root/assets/VCombobox-DLL1EsSN.55622a0cd4ab.js.gz +0 -0
  223. codex/static_root/assets/VCombobox-DLL1EsSN.js.br +0 -0
  224. codex/static_root/assets/VCombobox-DLL1EsSN.js.gz +0 -0
  225. codex/static_root/assets/VDialog-yDKzaGEj.e8dba78ac8db.js.br +0 -0
  226. codex/static_root/assets/VDialog-yDKzaGEj.e8dba78ac8db.js.gz +0 -0
  227. codex/static_root/assets/VDialog-yDKzaGEj.js.br +0 -0
  228. codex/static_root/assets/VDialog-yDKzaGEj.js.gz +0 -0
  229. codex/static_root/assets/VExpansionPanels-Cpo8QLLq.d733b7906e00.js.br +0 -0
  230. codex/static_root/assets/VExpansionPanels-Cpo8QLLq.d733b7906e00.js.gz +0 -0
  231. codex/static_root/assets/VExpansionPanels-Cpo8QLLq.js.br +0 -0
  232. codex/static_root/assets/VExpansionPanels-Cpo8QLLq.js.gz +0 -0
  233. codex/static_root/assets/VRadioGroup-DEezv8bL.4a609e74e507.js.br +0 -0
  234. codex/static_root/assets/VRadioGroup-DEezv8bL.4a609e74e507.js.gz +0 -0
  235. codex/static_root/assets/VRadioGroup-DEezv8bL.js.br +0 -0
  236. codex/static_root/assets/VRadioGroup-DEezv8bL.js.gz +0 -0
  237. codex/static_root/assets/VSelect-BKXcujPy.8871035f5634.js.br +0 -0
  238. codex/static_root/assets/VSelect-BKXcujPy.8871035f5634.js.gz +0 -0
  239. codex/static_root/assets/VSelect-BKXcujPy.js.br +0 -0
  240. codex/static_root/assets/VSelect-BKXcujPy.js.gz +0 -0
  241. codex/static_root/assets/VSelectionControl-DJAPiluk.402a7ad84a8e.js.br +0 -0
  242. codex/static_root/assets/VSelectionControl-DJAPiluk.402a7ad84a8e.js.gz +0 -0
  243. codex/static_root/assets/VSelectionControl-DJAPiluk.js.br +0 -0
  244. codex/static_root/assets/VSelectionControl-DJAPiluk.js.gz +0 -0
  245. codex/static_root/assets/VSlideGroup-C-kO93Va.8c9e31362dc5.js.br +0 -0
  246. codex/static_root/assets/VSlideGroup-C-kO93Va.8c9e31362dc5.js.gz +0 -0
  247. codex/static_root/assets/VSlideGroup-C-kO93Va.js.br +0 -0
  248. codex/static_root/assets/VSlideGroup-C-kO93Va.js.gz +0 -0
  249. codex/static_root/assets/VTable-9vsIQObs.0a135029e924.js.br +0 -0
  250. codex/static_root/assets/VTable-9vsIQObs.0a135029e924.js.gz +0 -0
  251. codex/static_root/assets/VTable-9vsIQObs.js.br +0 -0
  252. codex/static_root/assets/VTable-9vsIQObs.js.gz +0 -0
  253. codex/static_root/assets/VTextField-DI9HAmWh.0de01739bbf9.js.br +0 -0
  254. codex/static_root/assets/VTextField-DI9HAmWh.0de01739bbf9.js.gz +0 -0
  255. codex/static_root/assets/VTextField-DI9HAmWh.js.br +0 -0
  256. codex/static_root/assets/VTextField-DI9HAmWh.js.gz +0 -0
  257. codex/static_root/assets/VWindowItem-DpnYkF3y.017d99c27b7b.js.br +0 -0
  258. codex/static_root/assets/VWindowItem-DpnYkF3y.017d99c27b7b.js.gz +0 -0
  259. codex/static_root/assets/VWindowItem-DpnYkF3y.js.br +0 -0
  260. codex/static_root/assets/VWindowItem-DpnYkF3y.js.gz +0 -0
  261. codex/static_root/assets/admin-2BTkfSQA.e7ef29cb106d.js.br +0 -0
  262. codex/static_root/assets/admin-2BTkfSQA.e7ef29cb106d.js.gz +0 -0
  263. codex/static_root/assets/admin-2BTkfSQA.js.br +0 -0
  264. codex/static_root/assets/admin-2BTkfSQA.js.gz +0 -0
  265. codex/static_root/assets/admin-drawer-panel-mtdde7vY.c172dbae9463.js.br +0 -0
  266. codex/static_root/assets/admin-drawer-panel-mtdde7vY.c172dbae9463.js.gz +0 -0
  267. codex/static_root/assets/admin-drawer-panel-mtdde7vY.js.br +0 -0
  268. codex/static_root/assets/admin-drawer-panel-mtdde7vY.js.gz +0 -0
  269. codex/static_root/assets/browser-BA-AwUn-.23bb4b2f6a29.js.br +0 -0
  270. codex/static_root/assets/browser-BA-AwUn-.23bb4b2f6a29.js.gz +0 -0
  271. codex/static_root/assets/browser-BA-AwUn-.js.br +0 -0
  272. codex/static_root/assets/browser-BA-AwUn-.js.gz +0 -0
  273. codex/static_root/assets/change-password-dialog-C8YONrId.49aa6df6a91d.js.br +0 -0
  274. codex/static_root/assets/change-password-dialog-C8YONrId.49aa6df6a91d.js.gz +0 -0
  275. codex/static_root/assets/change-password-dialog-C8YONrId.js.br +0 -0
  276. codex/static_root/assets/change-password-dialog-C8YONrId.js.gz +0 -0
  277. codex/static_root/assets/confirm-dialog-Clg-o2G-.e11d8efef3fb.js.br +0 -0
  278. codex/static_root/assets/confirm-dialog-Clg-o2G-.e11d8efef3fb.js.gz +0 -0
  279. codex/static_root/assets/confirm-dialog-Clg-o2G-.js.br +0 -0
  280. codex/static_root/assets/confirm-dialog-Clg-o2G-.js.gz +0 -0
  281. codex/static_root/assets/datetime-column-DejrPZxl.9fd36bef6fdd.js.br +0 -0
  282. codex/static_root/assets/datetime-column-DejrPZxl.9fd36bef6fdd.js.gz +0 -0
  283. codex/static_root/assets/datetime-column-DejrPZxl.js.br +0 -0
  284. codex/static_root/assets/datetime-column-DejrPZxl.js.gz +0 -0
  285. codex/static_root/assets/filter-DHo57nTp.4d79a276d806.js.br +0 -0
  286. codex/static_root/assets/filter-DHo57nTp.4d79a276d806.js.gz +0 -0
  287. codex/static_root/assets/filter-DHo57nTp.js.br +0 -0
  288. codex/static_root/assets/filter-DHo57nTp.js.gz +0 -0
  289. codex/static_root/assets/flag-tab-CagMLGSE.125739911c45.js.br +0 -0
  290. codex/static_root/assets/flag-tab-CagMLGSE.125739911c45.js.gz +0 -0
  291. codex/static_root/assets/flag-tab-CagMLGSE.js.br +0 -0
  292. codex/static_root/assets/flag-tab-CagMLGSE.js.gz +0 -0
  293. codex/static_root/assets/group-tab-BTAjhv32.ac196780d0a9.js.br +0 -0
  294. codex/static_root/assets/group-tab-BTAjhv32.ac196780d0a9.js.gz +0 -0
  295. codex/static_root/assets/group-tab-BTAjhv32.js.br +0 -0
  296. codex/static_root/assets/group-tab-BTAjhv32.js.gz +0 -0
  297. codex/static_root/assets/http-error-DaHEsKbT.55d56ce2b9b4.js.br +0 -0
  298. codex/static_root/assets/http-error-DaHEsKbT.55d56ce2b9b4.js.gz +0 -0
  299. codex/static_root/assets/http-error-DaHEsKbT.js.br +0 -0
  300. codex/static_root/assets/http-error-DaHEsKbT.js.gz +0 -0
  301. codex/static_root/assets/library-tab-Cud4639b.7f5a50aaabe8.js.br +0 -0
  302. codex/static_root/assets/library-tab-Cud4639b.7f5a50aaabe8.js.gz +0 -0
  303. codex/static_root/assets/library-tab-Cud4639b.js.br +0 -0
  304. codex/static_root/assets/library-tab-Cud4639b.js.gz +0 -0
  305. codex/static_root/assets/main-BnzL_Byv.22f98ee91990.js.br +0 -0
  306. codex/static_root/assets/main-BnzL_Byv.22f98ee91990.js.gz +0 -0
  307. codex/static_root/assets/main-BnzL_Byv.js.br +0 -0
  308. codex/static_root/assets/main-BnzL_Byv.js.gz +0 -0
  309. codex/static_root/assets/pagination-toolbar-Covpd-k8.b71277bd7a2d.js.br +0 -0
  310. codex/static_root/assets/pagination-toolbar-Covpd-k8.b71277bd7a2d.js.gz +0 -0
  311. codex/static_root/assets/pagination-toolbar-Covpd-k8.js.br +0 -0
  312. codex/static_root/assets/pagination-toolbar-Covpd-k8.js.gz +0 -0
  313. codex/static_root/assets/pdf-doc-CD2lnB32.1cef3bf498be.js.br +0 -0
  314. codex/static_root/assets/pdf-doc-CD2lnB32.1cef3bf498be.js.gz +0 -0
  315. codex/static_root/assets/pdf-doc-CD2lnB32.js.br +0 -0
  316. codex/static_root/assets/pdf-doc-CD2lnB32.js.gz +0 -0
  317. codex/static_root/assets/reader-L85y7IXD.6de58f450421.js.br +0 -0
  318. codex/static_root/assets/reader-L85y7IXD.6de58f450421.js.gz +0 -0
  319. codex/static_root/assets/reader-L85y7IXD.js.br +0 -0
  320. codex/static_root/assets/reader-L85y7IXD.js.gz +0 -0
  321. codex/static_root/assets/relation-chips-BpuqEeqM.1372d8a3e6cf.js.br +0 -0
  322. codex/static_root/assets/relation-chips-BpuqEeqM.1372d8a3e6cf.js.gz +0 -0
  323. codex/static_root/assets/relation-chips-BpuqEeqM.js.br +0 -0
  324. codex/static_root/assets/relation-chips-BpuqEeqM.js.gz +0 -0
  325. codex/static_root/assets/settings-drawer-CLMcxfVd.b9619341ad48.js.br +0 -0
  326. codex/static_root/assets/settings-drawer-CLMcxfVd.b9619341ad48.js.gz +0 -0
  327. codex/static_root/assets/settings-drawer-CLMcxfVd.js.br +0 -0
  328. codex/static_root/assets/settings-drawer-CLMcxfVd.js.gz +0 -0
  329. codex/static_root/assets/stats-tab-CQa3-W05.3d7c61418528.js.br +0 -0
  330. codex/static_root/assets/stats-tab-CQa3-W05.3d7c61418528.js.gz +0 -0
  331. codex/static_root/assets/stats-tab-CQa3-W05.js.br +0 -0
  332. codex/static_root/assets/stats-tab-CQa3-W05.js.gz +0 -0
  333. codex/static_root/assets/task-tab-OPhBm-O2.8f31f4215114.js.br +0 -0
  334. codex/static_root/assets/task-tab-OPhBm-O2.8f31f4215114.js.gz +0 -0
  335. codex/static_root/assets/task-tab-OPhBm-O2.js.br +0 -0
  336. codex/static_root/assets/task-tab-OPhBm-O2.js.gz +0 -0
  337. codex/static_root/assets/unauthorized-ClQNhRb5.32a8a84d1781.js.br +0 -0
  338. codex/static_root/assets/unauthorized-ClQNhRb5.32a8a84d1781.js.gz +0 -0
  339. codex/static_root/assets/unauthorized-ClQNhRb5.js.br +0 -0
  340. codex/static_root/assets/unauthorized-ClQNhRb5.js.gz +0 -0
  341. codex/static_root/assets/user-tab-BKkxa2WL.50d83951c09f.js.br +0 -0
  342. codex/static_root/assets/user-tab-BKkxa2WL.50d83951c09f.js.gz +0 -0
  343. codex/static_root/assets/user-tab-BKkxa2WL.js.br +0 -0
  344. codex/static_root/assets/user-tab-BKkxa2WL.js.gz +0 -0
  345. codex/static_root/manifest.c5fa10a7dfdc.json.br +0 -0
  346. codex/static_root/manifest.c5fa10a7dfdc.json.gz +0 -0
  347. {codex-1.6.0a0.dist-info → codex-1.6.0a2.dist-info}/LICENSE +0 -0
  348. {codex-1.6.0a0.dist-info → codex-1.6.0a2.dist-info}/WHEEL +0 -0
  349. {codex-1.6.0a0.dist-info → codex-1.6.0a2.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- import{_ as u,ag as _,m,P as r,T as a,Q as s,R as n,aK as t,ai as i,L as h,aL as l,aM as f}from"./admin-drawer-panel-mtdde7vY.js";import{U as k,V as S}from"./unauthorized-ClQNhRb5.js";import"./change-password-dialog-C8YONrId.js";import"./VTextField-DI9HAmWh.js";import"./VDialog-yDKzaGEj.js";import"./main-BnzL_Byv.js";import"./VSelectionControl-DJAPiluk.js";const d={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(d);const b={name:"HttpError",components:{Unauthorized:k},data(){return{}},computed:{..._(m,["isCodexViewable"]),code:function(){return+this.$route.params.code},title:function(){let e=d[this.code];return e||(e="Unknown Error"),e}}},x=e=>(l("data-v-54a4436b"),e=e(),f(),e),C={id:"httpCode"},E={id:"title"},V=x(()=>t("h2",null,"Codex Home",-1));function w(e,I,U,v,z,o){const c=s("router-link"),p=s("Unauthorized");return e.isCodexViewable?(n(),r(S,{key:0,id:"httpError"},{default:a(()=>[t("h1",C,i(o.code),1),t("h1",E,i(o.title),1),h(c,{id:"link",to:{name:"home"}},{default:a(()=>[V]),_:1})]),_:1})):(n(),r(p,{key:1}))}const F=u(b,[["render",w],["__scopeId","data-v-54a4436b"]]);export{F as default};
1
+ import{_ as u,ag as _,m,P as r,T as a,Q as s,R as n,aK as t,ai as i,L as h,aL as l,aM as f}from"./admin-drawer-panel-BNRI3VNZ.js";import{U as k,V as S}from"./unauthorized-DFTKS7Wr.js";import"./change-password-dialog-C-8Ixgjj.js";import"./VTextField-BzSMerR0.js";import"./VDialog-DhRhufg-.js";import"./main-BJYrxs0x.js";import"./VSelectionControl-wVVkmChP.js";const d={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(d);const b={name:"HttpError",components:{Unauthorized:k},data(){return{}},computed:{..._(m,["isCodexViewable"]),code:function(){return+this.$route.params.code},title:function(){let e=d[this.code];return e||(e="Unknown Error"),e}}},x=e=>(l("data-v-54a4436b"),e=e(),f(),e),C={id:"httpCode"},E={id:"title"},V=x(()=>t("h2",null,"Codex Home",-1));function w(e,I,U,v,z,o){const c=s("router-link"),p=s("Unauthorized");return e.isCodexViewable?(n(),r(S,{key:0,id:"httpError"},{default:a(()=>[t("h1",C,i(o.code),1),t("h1",E,i(o.title),1),h(c,{id:"link",to:{name:"home"}},{default:a(()=>[V]),_:1})]),_:1})):(n(),r(p,{key:1}))}const F=u(b,[["render",w],["__scopeId","data-v-54a4436b"]]);export{F as default};
@@ -1 +1 @@
1
- import{N as w,t as b,k as A,O as v,_ as k,R as h,aA as y,L as l,T as s,ak as Y,ap as P,bb as q,P as T,Q as m,ai as g,M as H,cv as Q,aG as z,bg as J,aK as r,ad as d,ah as V,aD as x,aB as X,aL as B,aM as j,cw as Z,cx as ee,bs as te,aU as oe,c7 as le,ae as re}from"./admin-drawer-panel-mtdde7vY.js";import{A as se,a as ae,b as ie,c as ne,R as de}from"./relation-chips-BpuqEeqM.js";import{a as D,u as me}from"./main-BnzL_Byv.js";import{V as pe}from"./VCombobox-DLL1EsSN.js";import{V as C}from"./VCheckbox-Aq_ImMNC.js";import{V as ue}from"./VTextField-DI9HAmWh.js";import{D as $}from"./datetime-column-DejrPZxl.js";import{V as E,a as R,b as O,c as U}from"./VExpansionPanels-Cpo8QLLq.js";import{V as ce}from"./VTable-9vsIQObs.js";import{C as he}from"./confirm-dialog-Clg-o2G-.js";import{V as S}from"./VCheckboxBtn-D3izCBa7.js";import"./VDialog-yDKzaGEj.js";import"./VSelect-BKXcujPy.js";import"./VSelectionControl-DJAPiluk.js";import"./VSlideGroup-C-kO93Va.js";import"./filter-DHo57nTp.js";const fe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(b,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(A,{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(b,["clearFolders","loadFolders"]),...v(A,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,p=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=p;let f="";return this.formErrors.length===0&&(this.path=f=this.rootFolder),this.$emit("change",f)}).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)}}},be={id:"folderPicker"};function ye(e,t,p,f,o,u){return h(),y("div",be,[l(pe,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:q(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:c})=>[l(Y,P(c,{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(C,{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 _e=k(fe,[["render",ye],["__scopeId","data-v-49f10642"]]),ge={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 we(e,t,p,f,o,u){return h(),T(ue,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=k(ge,[["render",we]]),N=["events","poll","pollEvery","groups"];Object.freeze(N);const I={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(I);const L=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Fe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:se,AdminServerFolderPicker:_e,TimeTextField:ke},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(L(t,e))return"Path is a child of an existing library";if(L(e,t))return"Path is a parent of an existing library"}return!0}]},row:D.cloneDeep(this.oldRow||I)}},computed:{...w(b,{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=D.cloneDeep(e)},deep:!0}},methods:{...v(b,["nameSet"])},UPDATE_KEYS:N,EMPTY_ROW:I},ve={key:1};function Pe(e,t,p,f,o,u){const i=m("AdminServerFolderPicker"),c=m("TimeTextField"),F=m("AdminRelationPicker");return h(),y(H,null,[p.oldRow?(h(),y("div",ve,g(p.oldRow.path),1)):(h(),T(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(C,{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(C,{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(c,{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 Ce=k(Fe,[["render",Pe]]),Ie={name:"AdminFailedImportsPanel",components:{DateTimeColumn:$},data(){return{mdiBookAlert:Q,mdiOpenInNew:z}},computed:{...w(b,["failedImports"]),...J(b,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},_=e=>(B("data-v-a5fc117c"),e=e(),j(),e),Te={key:0,id:"failedImports"},Ae=_(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),Ve={class:"dateCol"},xe=_(()=>r("h4",null,"Failed Imports Help",-1)),De=_(()=>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)),Ee=_(()=>r("h4",null,"Fixing comics",-1)),Re=_(()=>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)),Oe=_(()=>r("h4",null,"Reporting Issues",-1)),Ue={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Se=_(()=>r("code",null,"config/logs/codex.log",-1));function Le(e,t,p,f,o,u){const i=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(h(),y("div",Te,[l(U,null,{default:s(()=>[l(E,{id:"failedImportsPanel",onClick:t[0]||(t[0]=c=>e.unseenFailedImports=!1)},{default:s(()=>[l(R,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(h(),T(V,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):x("",!0)]),_:1}),l(O,null,{default:s(()=>[l(ce,{class:"highlight-table"},{default:s(()=>[Ae,r("tbody",null,[(h(!0),y(H,null,X(e.failedImports,c=>(h(),y("tr",{key:`fi:${c.path}`},[r("td",null,g(c.path),1),r("td",Ve,[l(i,{dttm:c.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(U,null,{default:s(()=>[l(E,{id:"failedImportsHelp"},{default:s(()=>[l(R,null,{default:s(()=>[xe]),_:1}),l(O,null,{default:s(()=>[De,Ee,Re,Oe,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",Ue,[d("Issue Report"),l(V,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Se,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):x("",!0)}const He=k(Ie,[["render",Le],["__scopeId","data-v-a5fc117c"]]),ze={name:"AdminLibrariesTab",components:{AdminTable:ae,AdminDeleteRowDialog:ie,AdminFailedImportsPanel:He,AdminCreateUpdateDialog:ne,RelationChips:de,ConfirmDialog:he,DateTimeColumn:$},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:ee,mdiOpenInNew:z,AdminLibraryCreateUpdateInputs:te(Ce),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(b,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(me,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(b,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?oe(e,(void 0).twentyFourHourTime):"",changeCol(e,t,p){this.lastUpdate.pk=e,this.lastUpdate.field=t;const f={[t]:p};this.updateRow("Library",e,f)},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)}}},Be=e=>(B("data-v-ed190b94"),e=e(),j(),e),je={class:"tabHeader"},$e=Be(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ne(e,t,p,f,o,u){const i=m("AdminCreateUpdateDialog"),c=m("DateTimeColumn"),F=m("RelationChips"),n=m("ConfirmDialog"),W=m("AdminDeleteRowDialog"),K=m("AdminTable"),M=m("AdminFailedImportsPanel");return h(),y("div",null,[r("header",je,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(K,{headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[$e]),"item.events":s(({item:a})=>[l(S,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(S,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:re({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(c,{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:G=>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:G=>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(W,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(le,null,{default:s(()=>[l(M)]),_:1})])}const at=k(ze,[["render",Ne],["__scopeId","data-v-ed190b94"]]);export{at as default};
1
+ import{N as w,t as b,k as A,O as v,_ as k,R as h,aA as y,L as l,T as s,ak as Y,ap as P,bb as q,P as T,Q as m,ai as g,M as H,cv as Q,aG as z,bg as J,aK as r,ad as d,ah as V,aD as x,aB as X,aL as B,aM as j,cw as Z,cx as ee,bs as te,aU as oe,c7 as le,ae as re}from"./admin-drawer-panel-BNRI3VNZ.js";import{A as se,a as ae,b as ie,c as ne,R as de}from"./relation-chips-BoGgSbRW.js";import{a as D,u as me}from"./main-BJYrxs0x.js";import{V as pe}from"./VCombobox-CN1HkVdW.js";import{V as C}from"./VCheckbox-H0aBoP9N.js";import{V as ue}from"./VTextField-BzSMerR0.js";import{D as $}from"./datetime-column-Dbxk_0ER.js";import{V as E,a as R,b as O,c as U}from"./VExpansionPanels-BFGZaci1.js";import{V as ce}from"./VTable-icaTTwDw.js";import{C as he}from"./confirm-dialog-C4NOgXW9.js";import{V as S}from"./VCheckboxBtn-CTJ47tuf.js";import"./VDialog-DhRhufg-.js";import"./VSelect-DaalAg2L.js";import"./VSelectionControl-wVVkmChP.js";import"./VSlideGroup-DCfSQ-Vx.js";import"./filter-DrwUDlyj.js";const fe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(b,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(A,{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(b,["clearFolders","loadFolders"]),...v(A,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,p=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=p;let f="";return this.formErrors.length===0&&(this.path=f=this.rootFolder),this.$emit("change",f)}).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)}}},be={id:"folderPicker"};function ye(e,t,p,f,o,u){return h(),y("div",be,[l(pe,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:q(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:c})=>[l(Y,P(c,{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(C,{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 _e=k(fe,[["render",ye],["__scopeId","data-v-49f10642"]]),ge={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 we(e,t,p,f,o,u){return h(),T(ue,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=k(ge,[["render",we]]),N=["events","poll","pollEvery","groups"];Object.freeze(N);const I={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(I);const L=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Fe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:se,AdminServerFolderPicker:_e,TimeTextField:ke},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(L(t,e))return"Path is a child of an existing library";if(L(e,t))return"Path is a parent of an existing library"}return!0}]},row:D.cloneDeep(this.oldRow||I)}},computed:{...w(b,{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=D.cloneDeep(e)},deep:!0}},methods:{...v(b,["nameSet"])},UPDATE_KEYS:N,EMPTY_ROW:I},ve={key:1};function Pe(e,t,p,f,o,u){const i=m("AdminServerFolderPicker"),c=m("TimeTextField"),F=m("AdminRelationPicker");return h(),y(H,null,[p.oldRow?(h(),y("div",ve,g(p.oldRow.path),1)):(h(),T(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(C,{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(C,{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(c,{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 Ce=k(Fe,[["render",Pe]]),Ie={name:"AdminFailedImportsPanel",components:{DateTimeColumn:$},data(){return{mdiBookAlert:Q,mdiOpenInNew:z}},computed:{...w(b,["failedImports"]),...J(b,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},_=e=>(B("data-v-a5fc117c"),e=e(),j(),e),Te={key:0,id:"failedImports"},Ae=_(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),Ve={class:"dateCol"},xe=_(()=>r("h4",null,"Failed Imports Help",-1)),De=_(()=>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)),Ee=_(()=>r("h4",null,"Fixing comics",-1)),Re=_(()=>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)),Oe=_(()=>r("h4",null,"Reporting Issues",-1)),Ue={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Se=_(()=>r("code",null,"config/logs/codex.log",-1));function Le(e,t,p,f,o,u){const i=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(h(),y("div",Te,[l(U,null,{default:s(()=>[l(E,{id:"failedImportsPanel",onClick:t[0]||(t[0]=c=>e.unseenFailedImports=!1)},{default:s(()=>[l(R,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(h(),T(V,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):x("",!0)]),_:1}),l(O,null,{default:s(()=>[l(ce,{class:"highlight-table"},{default:s(()=>[Ae,r("tbody",null,[(h(!0),y(H,null,X(e.failedImports,c=>(h(),y("tr",{key:`fi:${c.path}`},[r("td",null,g(c.path),1),r("td",Ve,[l(i,{dttm:c.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(U,null,{default:s(()=>[l(E,{id:"failedImportsHelp"},{default:s(()=>[l(R,null,{default:s(()=>[xe]),_:1}),l(O,null,{default:s(()=>[De,Ee,Re,Oe,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",Ue,[d("Issue Report"),l(V,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Se,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):x("",!0)}const He=k(Ie,[["render",Le],["__scopeId","data-v-a5fc117c"]]),ze={name:"AdminLibrariesTab",components:{AdminTable:ae,AdminDeleteRowDialog:ie,AdminFailedImportsPanel:He,AdminCreateUpdateDialog:ne,RelationChips:de,ConfirmDialog:he,DateTimeColumn:$},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:ee,mdiOpenInNew:z,AdminLibraryCreateUpdateInputs:te(Ce),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(b,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(me,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(b,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?oe(e,(void 0).twentyFourHourTime):"",changeCol(e,t,p){this.lastUpdate.pk=e,this.lastUpdate.field=t;const f={[t]:p};this.updateRow("Library",e,f)},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)}}},Be=e=>(B("data-v-ed190b94"),e=e(),j(),e),je={class:"tabHeader"},$e=Be(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ne(e,t,p,f,o,u){const i=m("AdminCreateUpdateDialog"),c=m("DateTimeColumn"),F=m("RelationChips"),n=m("ConfirmDialog"),W=m("AdminDeleteRowDialog"),K=m("AdminTable"),M=m("AdminFailedImportsPanel");return h(),y("div",null,[r("header",je,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(K,{headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[$e]),"item.events":s(({item:a})=>[l(S,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(S,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:re({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(c,{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:G=>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:G=>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(W,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(le,null,{default:s(()=>[l(M)]),_:1})])}const at=k(ze,[["render",Ne],["__scopeId","data-v-ed190b94"]]);export{at as default};
@@ -1 +1 @@
1
- import{N as w,t as b,k as A,O as v,_ as k,R as h,aA as y,L as l,T as s,ak as Y,ap as P,bb as q,P as T,Q as m,ai as g,M as H,cv as Q,aG as z,bg as J,aK as r,ad as d,ah as V,aD as x,aB as X,aL as B,aM as j,cw as Z,cx as ee,bs as te,aU as oe,c7 as le,ae as re}from"./admin-drawer-panel-mtdde7vY.js";import{A as se,a as ae,b as ie,c as ne,R as de}from"./relation-chips-BpuqEeqM.js";import{a as D,u as me}from"./main-BnzL_Byv.js";import{V as pe}from"./VCombobox-DLL1EsSN.js";import{V as C}from"./VCheckbox-Aq_ImMNC.js";import{V as ue}from"./VTextField-DI9HAmWh.js";import{D as $}from"./datetime-column-DejrPZxl.js";import{V as E,a as R,b as O,c as U}from"./VExpansionPanels-Cpo8QLLq.js";import{V as ce}from"./VTable-9vsIQObs.js";import{C as he}from"./confirm-dialog-Clg-o2G-.js";import{V as S}from"./VCheckboxBtn-D3izCBa7.js";import"./VDialog-yDKzaGEj.js";import"./VSelect-BKXcujPy.js";import"./VSelectionControl-DJAPiluk.js";import"./VSlideGroup-C-kO93Va.js";import"./filter-DHo57nTp.js";const fe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(b,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(A,{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(b,["clearFolders","loadFolders"]),...v(A,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,p=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=p;let f="";return this.formErrors.length===0&&(this.path=f=this.rootFolder),this.$emit("change",f)}).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)}}},be={id:"folderPicker"};function ye(e,t,p,f,o,u){return h(),y("div",be,[l(pe,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:q(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:c})=>[l(Y,P(c,{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(C,{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 _e=k(fe,[["render",ye],["__scopeId","data-v-49f10642"]]),ge={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 we(e,t,p,f,o,u){return h(),T(ue,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=k(ge,[["render",we]]),N=["events","poll","pollEvery","groups"];Object.freeze(N);const I={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(I);const L=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Fe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:se,AdminServerFolderPicker:_e,TimeTextField:ke},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(L(t,e))return"Path is a child of an existing library";if(L(e,t))return"Path is a parent of an existing library"}return!0}]},row:D.cloneDeep(this.oldRow||I)}},computed:{...w(b,{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=D.cloneDeep(e)},deep:!0}},methods:{...v(b,["nameSet"])},UPDATE_KEYS:N,EMPTY_ROW:I},ve={key:1};function Pe(e,t,p,f,o,u){const i=m("AdminServerFolderPicker"),c=m("TimeTextField"),F=m("AdminRelationPicker");return h(),y(H,null,[p.oldRow?(h(),y("div",ve,g(p.oldRow.path),1)):(h(),T(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(C,{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(C,{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(c,{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 Ce=k(Fe,[["render",Pe]]),Ie={name:"AdminFailedImportsPanel",components:{DateTimeColumn:$},data(){return{mdiBookAlert:Q,mdiOpenInNew:z}},computed:{...w(b,["failedImports"]),...J(b,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},_=e=>(B("data-v-a5fc117c"),e=e(),j(),e),Te={key:0,id:"failedImports"},Ae=_(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),Ve={class:"dateCol"},xe=_(()=>r("h4",null,"Failed Imports Help",-1)),De=_(()=>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)),Ee=_(()=>r("h4",null,"Fixing comics",-1)),Re=_(()=>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)),Oe=_(()=>r("h4",null,"Reporting Issues",-1)),Ue={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Se=_(()=>r("code",null,"config/logs/codex.log",-1));function Le(e,t,p,f,o,u){const i=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(h(),y("div",Te,[l(U,null,{default:s(()=>[l(E,{id:"failedImportsPanel",onClick:t[0]||(t[0]=c=>e.unseenFailedImports=!1)},{default:s(()=>[l(R,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(h(),T(V,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):x("",!0)]),_:1}),l(O,null,{default:s(()=>[l(ce,{class:"highlight-table"},{default:s(()=>[Ae,r("tbody",null,[(h(!0),y(H,null,X(e.failedImports,c=>(h(),y("tr",{key:`fi:${c.path}`},[r("td",null,g(c.path),1),r("td",Ve,[l(i,{dttm:c.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(U,null,{default:s(()=>[l(E,{id:"failedImportsHelp"},{default:s(()=>[l(R,null,{default:s(()=>[xe]),_:1}),l(O,null,{default:s(()=>[De,Ee,Re,Oe,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",Ue,[d("Issue Report"),l(V,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Se,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):x("",!0)}const He=k(Ie,[["render",Le],["__scopeId","data-v-a5fc117c"]]),ze={name:"AdminLibrariesTab",components:{AdminTable:ae,AdminDeleteRowDialog:ie,AdminFailedImportsPanel:He,AdminCreateUpdateDialog:ne,RelationChips:de,ConfirmDialog:he,DateTimeColumn:$},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:ee,mdiOpenInNew:z,AdminLibraryCreateUpdateInputs:te(Ce),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(b,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(me,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(b,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?oe(e,(void 0).twentyFourHourTime):"",changeCol(e,t,p){this.lastUpdate.pk=e,this.lastUpdate.field=t;const f={[t]:p};this.updateRow("Library",e,f)},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)}}},Be=e=>(B("data-v-ed190b94"),e=e(),j(),e),je={class:"tabHeader"},$e=Be(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ne(e,t,p,f,o,u){const i=m("AdminCreateUpdateDialog"),c=m("DateTimeColumn"),F=m("RelationChips"),n=m("ConfirmDialog"),W=m("AdminDeleteRowDialog"),K=m("AdminTable"),M=m("AdminFailedImportsPanel");return h(),y("div",null,[r("header",je,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(K,{headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[$e]),"item.events":s(({item:a})=>[l(S,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(S,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:re({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(c,{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:G=>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:G=>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(W,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(le,null,{default:s(()=>[l(M)]),_:1})])}const at=k(ze,[["render",Ne],["__scopeId","data-v-ed190b94"]]);export{at as default};
1
+ import{N as w,t as b,k as A,O as v,_ as k,R as h,aA as y,L as l,T as s,ak as Y,ap as P,bb as q,P as T,Q as m,ai as g,M as H,cv as Q,aG as z,bg as J,aK as r,ad as d,ah as V,aD as x,aB as X,aL as B,aM as j,cw as Z,cx as ee,bs as te,aU as oe,c7 as le,ae as re}from"./admin-drawer-panel-BNRI3VNZ.js";import{A as se,a as ae,b as ie,c as ne,R as de}from"./relation-chips-BoGgSbRW.js";import{a as D,u as me}from"./main-BJYrxs0x.js";import{V as pe}from"./VCombobox-CN1HkVdW.js";import{V as C}from"./VCheckbox-H0aBoP9N.js";import{V as ue}from"./VTextField-BzSMerR0.js";import{D as $}from"./datetime-column-Dbxk_0ER.js";import{V as E,a as R,b as O,c as U}from"./VExpansionPanels-BFGZaci1.js";import{V as ce}from"./VTable-icaTTwDw.js";import{C as he}from"./confirm-dialog-C4NOgXW9.js";import{V as S}from"./VCheckboxBtn-CTJ47tuf.js";import"./VDialog-DhRhufg-.js";import"./VSelect-DaalAg2L.js";import"./VSelectionControl-wVVkmChP.js";import"./VSlideGroup-DCfSQ-Vx.js";import"./filter-DrwUDlyj.js";const fe={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...w(b,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...w(A,{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(b,["clearFolders","loadFolders"]),...v(A,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,p=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=p;let f="";return this.formErrors.length===0&&(this.path=f=this.rootFolder),this.$emit("change",f)}).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)}}},be={id:"folderPicker"};function ye(e,t,p,f,o,u){return h(),y("div",be,[l(pe,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:q(u.onKeyDownEnter,["enter"])}),{item:s(({item:i,props:c})=>[l(Y,P(c,{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(C,{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 _e=k(fe,[["render",ye],["__scopeId","data-v-49f10642"]]),ge={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 we(e,t,p,f,o,u){return h(),T(ue,P({ref:"timeField",density:"compact",filled:"",hint:o.FORMAT,round:"",rules:o.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=k(ge,[["render",we]]),N=["events","poll","pollEvery","groups"];Object.freeze(N);const I={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(I);const L=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Fe={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:se,AdminServerFolderPicker:_e,TimeTextField:ke},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(L(t,e))return"Path is a child of an existing library";if(L(e,t))return"Path is a parent of an existing library"}return!0}]},row:D.cloneDeep(this.oldRow||I)}},computed:{...w(b,{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=D.cloneDeep(e)},deep:!0}},methods:{...v(b,["nameSet"])},UPDATE_KEYS:N,EMPTY_ROW:I},ve={key:1};function Pe(e,t,p,f,o,u){const i=m("AdminServerFolderPicker"),c=m("TimeTextField"),F=m("AdminRelationPicker");return h(),y(H,null,[p.oldRow?(h(),y("div",ve,g(p.oldRow.path),1)):(h(),T(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(C,{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(C,{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(c,{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 Ce=k(Fe,[["render",Pe]]),Ie={name:"AdminFailedImportsPanel",components:{DateTimeColumn:$},data(){return{mdiBookAlert:Q,mdiOpenInNew:z}},computed:{...w(b,["failedImports"]),...J(b,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},_=e=>(B("data-v-a5fc117c"),e=e(),j(),e),Te={key:0,id:"failedImports"},Ae=_(()=>r("thead",null,[r("tr",null,[r("th",null,"Path"),r("th",null,"Created")])],-1)),Ve={class:"dateCol"},xe=_(()=>r("h4",null,"Failed Imports Help",-1)),De=_(()=>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)),Ee=_(()=>r("h4",null,"Fixing comics",-1)),Re=_(()=>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)),Oe=_(()=>r("h4",null,"Reporting Issues",-1)),Ue={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},Se=_(()=>r("code",null,"config/logs/codex.log",-1));function Le(e,t,p,f,o,u){const i=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(h(),y("div",Te,[l(U,null,{default:s(()=>[l(E,{id:"failedImportsPanel",onClick:t[0]||(t[0]=c=>e.unseenFailedImports=!1)},{default:s(()=>[l(R,null,{default:s(()=>[r("h4",null,"Failed Imports: "+g(e.failedImports.length),1),e.unseenFailedImports?(h(),T(V,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(g(o.mdiBookAlert),1)]),_:1})):x("",!0)]),_:1}),l(O,null,{default:s(()=>[l(ce,{class:"highlight-table"},{default:s(()=>[Ae,r("tbody",null,[(h(!0),y(H,null,X(e.failedImports,c=>(h(),y("tr",{key:`fi:${c.path}`},[r("td",null,g(c.path),1),r("td",Ve,[l(i,{dttm:c.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),l(U,null,{default:s(()=>[l(E,{id:"failedImportsHelp"},{default:s(()=>[l(R,null,{default:s(()=>[xe]),_:1}),l(O,null,{default:s(()=>[De,Ee,Re,Oe,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",Ue,[d("Issue Report"),l(V,{size:"small"},{default:s(()=>[d(g(o.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),Se,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):x("",!0)}const He=k(Ie,[["render",Le],["__scopeId","data-v-a5fc117c"]]),ze={name:"AdminLibrariesTab",components:{AdminTable:ae,AdminDeleteRowDialog:ie,AdminFailedImportsPanel:He,AdminCreateUpdateDialog:ne,RelationChips:de,ConfirmDialog:he,DateTimeColumn:$},data(){return{lastUpdate:{pk:0,field:void 0},mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:ee,mdiOpenInNew:z,AdminLibraryCreateUpdateInputs:te(Ce),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(b,{groups:e=>e.groups,libraries:e=>e.libraries,formErrors:e=>e.form.errors}),...w(me,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...v(b,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?oe(e,(void 0).twentyFourHourTime):"",changeCol(e,t,p){this.lastUpdate.pk=e,this.lastUpdate.field=t;const f={[t]:p};this.updateRow("Library",e,f)},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)}}},Be=e=>(B("data-v-ed190b94"),e=e(),j(),e),je={class:"tabHeader"},$e=Be(()=>r("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ne(e,t,p,f,o,u){const i=m("AdminCreateUpdateDialog"),c=m("DateTimeColumn"),F=m("RelationChips"),n=m("ConfirmDialog"),W=m("AdminDeleteRowDialog"),K=m("AdminTable"),M=m("AdminFailedImportsPanel");return h(),y("div",null,[r("header",je,[l(i,{table:"Library",inputs:o.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),l(K,{headers:o.headers,items:e.libraries,"sort-by":[{key:"path",order:"asc"}]},{"no-data":s(()=>[$e]),"item.events":s(({item:a})=>[l(S,{"model-value":a.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:a})=>[l(S,{"model-value":a.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:a})=>[r("span",{class:re({disabled:!a.poll})},g(a.pollEvery),3)]),"item.lastPoll":s(({item:a})=>[l(c,{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:G=>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:G=>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(W,{table:"Library",pk:a.pk,name:a.path,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),l(le,null,{default:s(()=>[l(M)]),_:1})])}const at=k(ze,[["render",Ne],["__scopeId","data-v-ed190b94"]]);export{at as default};
@@ -1,9 +1,9 @@
1
- const __vite__fileDeps=["assets/admin-2BTkfSQA.js","assets/admin-drawer-panel-mtdde7vY.js","assets/admin-drawer-panel-BF0dMvEE.css","assets/settings-drawer-CLMcxfVd.js","assets/unauthorized-ClQNhRb5.js","assets/change-password-dialog-C8YONrId.js","assets/VTextField-DI9HAmWh.js","assets/VDialog-yDKzaGEj.js","assets/VDialog-C5Nxd_zP.css","assets/VSelectionControl-DJAPiluk.js","assets/VSelectionControl-BFq--28I.css","assets/VTextField-DuIIp-VY.css","assets/change-password-dialog-HvIvmmIE.css","assets/unauthorized-DWgytUow.css","assets/index-DUjeNg4x.js","assets/settings-drawer-BgUazs7O.css","assets/VWindowItem-DpnYkF3y.js","assets/VWindowItem-ByIod57Y.css","assets/VSlideGroup-C-kO93Va.js","assets/VSlideGroup-Dk_1upHt.css","assets/admin-BbrOU9Y9.css","assets/browser-BA-AwUn-.js","assets/VTable-9vsIQObs.js","assets/VTable-DflzroDq.css","assets/VCheckbox-Aq_ImMNC.js","assets/VCheckboxBtn-D3izCBa7.js","assets/VCheckbox-CMKdyl0R.css","assets/pagination-toolbar-Covpd-k8.js","assets/VSelect-BKXcujPy.js","assets/VSelect-ARDhJiQK.css","assets/to-case-kUm8NPpW.js","assets/pagination-toolbar-B3wS4_7p.css","assets/confirm-dialog-Clg-o2G-.js","assets/confirm-dialog-BmhedLCx.css","assets/VCombobox-DLL1EsSN.js","assets/filter-DHo57nTp.js","assets/VCombobox-BksEr4D_.css","assets/browser-CZeVqRNy.css","assets/http-error-DaHEsKbT.js","assets/http-error-_wlDqEcp.css","assets/reader-L85y7IXD.js","assets/VExpansionPanels-Cpo8QLLq.js","assets/VExpansionPanels-DsEXVcCv.css","assets/VRadioGroup-DEezv8bL.js","assets/VRadioGroup-i2qP9Wu9.css","assets/reader-Dspy46e8.css","assets/flag-tab-CagMLGSE.js","assets/flag-tab-BacZLlVi.css","assets/user-tab-BKkxa2WL.js","assets/relation-chips-BpuqEeqM.js","assets/relation-chips-D6T6FX7G.css","assets/datetime-column-DejrPZxl.js","assets/datetime-column-Dg_RxTVM.css","assets/group-tab-BTAjhv32.js","assets/group-tab-CBKuS3Iv.css","assets/library-tab-Cud4639b.js","assets/library-tab-CXbkxNZt.css","assets/task-tab-OPhBm-O2.js","assets/task-tab-1XiWn9xP.css","assets/stats-tab-CQa3-W05.js","assets/stats-tab-TsyG3wH_.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
- import{n as Mn,v as _1,i as Lt,u as ln,r as so,w as Tf,a as Qi,g as Af,o as wf,b as Rf,c as Of,s as or,d as q1,e as If,f as Gt,h as Ce,j as Cf,p as ir,H as Dn,k as sr,l as Pf,m as Vi,q as em,t as Ki,x as ho,y as Mf,z as Df,A as tm,B as Du,C as ro,D as nm,E as rm,F as om,G as im,I as sm,J as Hf,K as am,L as nr,S as um,M as fm,N as Hu,O as cm,_ as lm,P as dm,Q as hm,R as pm,T as gm,U as vm,V as Fu,W as dn,X as dr,Y as mm,Z as ym,$ as xm,a0 as Sm,a1 as bm,a2 as Em,a3 as Lm,a4 as Tm,a5 as Am,a6 as wm,a7 as Bu,a8 as Wu,a9 as Nu,aa as $u,ab as Rm,ac as Om}from"./admin-drawer-panel-mtdde7vY.js";function ki(s,r={},n){for(const i in s){const u=s[i],f=n?`${n}:${i}`:i;typeof u=="object"&&u!==null?ki(u,r,f):typeof u=="function"&&(r[f]=u)}return r}const Im={run:s=>s()},Cm=()=>Im,Ff=typeof console.createTask<"u"?console.createTask:Cm;function Pm(s,r){const n=r.shift(),i=Ff(n);return s.reduce((u,f)=>u.then(()=>i.run(()=>f(...r))),Promise.resolve())}function Mm(s,r){const n=r.shift(),i=Ff(n);return Promise.all(s.map(u=>i.run(()=>u(...r))))}function Bi(s,r){for(const n of[...s])n(r)}class Dm{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(r,n,i={}){if(!r||typeof n!="function")return()=>{};const u=r;let f;for(;this._deprecatedHooks[r];)f=this._deprecatedHooks[r],r=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:()=>"_"+r.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[r]=this._hooks[r]||[],this._hooks[r].push(n),()=>{n&&(this.removeHook(r,n),n=void 0)}}hookOnce(r,n){let i,u=(...f)=>(typeof i=="function"&&i(),i=void 0,u=void 0,n(...f));return i=this.hook(r,u),i}removeHook(r,n){if(this._hooks[r]){const i=this._hooks[r].indexOf(n);i!==-1&&this._hooks[r].splice(i,1),this._hooks[r].length===0&&delete this._hooks[r]}}deprecateHook(r,n){this._deprecatedHooks[r]=typeof n=="string"?{to:n}:n;const i=this._hooks[r]||[];delete this._hooks[r];for(const u of i)this.hook(r,u)}deprecateHooks(r){Object.assign(this._deprecatedHooks,r);for(const n in r)this.deprecateHook(n,r[n])}addHooks(r){const n=ki(r),i=Object.keys(n).map(u=>this.hook(u,n[u]));return()=>{for(const u of i.splice(0,i.length))u()}}removeHooks(r){const n=ki(r);for(const i in n)this.removeHook(i,n[i])}removeAllHooks(){for(const r in this._hooks)delete this._hooks[r]}callHook(r,...n){return n.unshift(r),this.callHookWith(Pm,r,...n)}callHookParallel(r,...n){return n.unshift(r),this.callHookWith(Mm,r,...n)}callHookWith(r,n,...i){const u=this._before||this._after?{name:n,args:i,context:{}}:void 0;this._before&&Bi(this._before,u);const f=r(n in this._hooks?[...this._hooks[n]]:[],i);return f instanceof Promise?f.finally(()=>{this._after&&u&&Bi(this._after,u)}):(this._after&&u&&Bi(this._after,u),f)}beforeEach(r){return this._before=this._before||[],this._before.push(r),()=>{if(this._before!==void 0){const n=this._before.indexOf(r);n!==-1&&this._before.splice(n,1)}}}afterEach(r){return this._after=this._after||[],this._after.push(r),()=>{if(this._after!==void 0){const n=this._after.indexOf(r);n!==-1&&this._after.splice(n,1)}}}}function Hm(){return new Dm}function Fm(s){return Array.isArray(s)?s:[s]}const Bm=["title","titleTemplate","script","style","noscript"],oo=["base","meta","link","style","script","noscript"],Wm=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],Nm=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Bf=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],$m=typeof window<"u";function _i(s){let r=9;for(let n=0;n<s.length;)r=Math.imul(r^s.charCodeAt(n++),9**9);return((r^r>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Gu(s){return s._h||_i(s._d?s._d:`${s.tag}:${s.textContent||s.innerHTML||""}:${Object.entries(s.props).map(([r,n])=>`${r}:${String(n)}`).join(",")}`)}function Wf(s,r){const{props:n,tag:i}=s;if(Nm.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`${i}:${f}:${c}`}return!1}function Uu(s,r){return s==null?r||null:typeof s=="function"?s(r):s}async function Gm(s,r,n){const i={tag:s,props:await Nf(typeof r=="object"&&typeof r!="function"&&!(r instanceof Promise)?{...r}:{[["script","noscript","style"].includes(s)?"innerHTML":"textContent"]:r},["templateParams","titleTemplate"].includes(s))};return Bf.forEach(u=>{const f=typeof i.props[u]<"u"?i.props[u]:n[u];typeof f<"u"&&((!["innerHTML","textContent","children"].includes(u)||Bm.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 Um(s,r){var i;const n=s==="class"?" ":";";return typeof r=="object"&&!Array.isArray(r)&&(r=Object.entries(r).filter(([,u])=>u).map(([u,f])=>s==="style"?`${u}:${f}`:u)),(i=Array.isArray(r)?r.join(n):r)==null?void 0:i.split(n).filter(u=>u.trim()).filter(Boolean).join(n)}async function Nf(s,r){for(const n of Object.keys(s)){if(["class","style"].includes(n)){s[n]=Um(n,s[n]);continue}if(s[n]instanceof Promise&&(s[n]=await s[n]),!r&&!Bf.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 Vm=10;async function Km(s){const r=[];return Object.entries(s.resolvedInput).filter(([n,i])=>typeof i<"u"&&Wm.includes(n)).forEach(([n,i])=>{const u=Fm(i);r.push(...u.map(f=>Gm(n,f,s)).flat())}),(await Promise.all(r)).flat().filter(Boolean).map((n,i)=>(n._e=s._i,s.mode&&(n._m=s.mode),n._p=(s._i<<Vm)+i,n))}const Vu={base:-10,title:10},Ku={critical:-80,high:-10,low:20};function ao(s){let r=100;const n=s.tagPriority;return typeof n=="number"?n:(s.tag==="meta"?(s.props["http-equiv"]==="content-security-policy"&&(r=-30),s.props.charset&&(r=-20),s.props.name==="viewport"&&(r=-15)):s.tag==="link"&&s.props.rel==="preconnect"?r=20:s.tag in Vu&&(r=Vu[s.tag]),typeof n=="string"&&n in Ku?r+Ku[n]:r)}const km=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],ku=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function io(s,r,n){if(typeof s!="string"||!s.includes("%"))return s;function i(c){let p;return["s","pageTitle"].includes(c)?p=r.pageTitle:c.includes(".")?p=c.split(".").reduce((d,m)=>d&&d[m]||void 0,r):p=r[c],typeof p<"u"?(p||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(c=>{const p=i(c.slice(1));typeof p=="string"&&(s=s.replace(new RegExp(`\\${c}(\\W|$)`,"g"),(d,m)=>`${p}${m}`).trim())}),s.includes(Qt)&&(s.endsWith(Qt)&&(s=s.slice(0,-Qt.length).trim()),s.startsWith(Qt)&&(s=s.slice(Qt.length).trim()),s=s.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),s=io(s,{separator:n},n)),s}async function jm(s,r={}){var h;const n=r.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:oo.includes(y.tag)?Gu(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=(h=n[y])==null?void 0:h.children,b=[];for(const T of[...x].filter(E=>oo.includes(E.tagName.toLowerCase()))){const E={tag:T.tagName.toLowerCase(),props:await Nf(T.getAttributeNames().reduce((O,P)=>({...O,[P]:T.getAttribute(P)}),{})),innerHTML:T.innerHTML};let A=1,I=Wf(E);for(;I&&b.find(O=>O._d===I);)I=`${I}:${A++}`;E._d=I||void 0,b.push(E),f.elMap[T.getAttribute("data-hid")||Gu(E)]=T}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function c(y,x,b){const T=`${y}:${x}`;f.sideEffects[T]=b,delete f.pendingSideEffects[T]}function p({id:y,$el:x,tag:b}){const T=b.tag.endsWith("Attrs");f.elMap[y]=x,T||(["textContent","innerHTML"].forEach(E=>{b[E]&&b[E]!==x[E]&&(x[E]=b[E])}),c(y,"el",()=>{var E;(E=f.elMap[y])==null||E.remove(),delete f.elMap[y]}));for(const[E,A]of Object.entries(b._eventHandlers||{}))x.getAttribute(`data-${E}`)!==""&&((b.tag==="bodyAttrs"?n.defaultView:x).addEventListener(E.replace("on",""),A.bind(x)),x.setAttribute(`data-${E}`,""));Object.entries(b.props).forEach(([E,A])=>{const I=`attr:${E}`;if(E==="class")for(const O of(A||"").split(" ").filter(Boolean))T&&c(y,`${I}:${O}`,()=>x.classList.remove(O)),!x.classList.contains(O)&&x.classList.add(O);else if(E==="style")for(const O of(A||"").split(";").filter(Boolean)){const[P,...N]=O.split(":").map(V=>V.trim());c(y,`${I}:${O}:${P}`,()=>{x.style.removeProperty(P)}),x.style.setProperty(P,N.join(":"))}else x.getAttribute(E)!==A&&x.setAttribute(E,A===!0?"":String(A)),T&&c(y,I,()=>x.removeAttribute(E))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of u){const{tag:x,shouldRender:b,id:T}=y;if(b){if(x.tag==="title"){n.title=x.textContent;continue}y.$el=y.$el||f.elMap[T],y.$el?p(y):oo.includes(x.tag)&&d.push(y)}}for(const y of d){const x=y.tag.tagPosition||"head";y.$el=n.createElement(y.tag.tag),p(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 zm(s,r={}){const n=r.delayFn||(i=>setTimeout(i,10));return s._domUpdatePromise=s._domUpdatePromise||new Promise(i=>n(async()=>{await jm(s,r),delete s._domUpdatePromise,i()}))}function Ym(s){return r=>{var i,u;const n=((u=(i=r.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:u.innerHTML)||!1;return n&&r.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(f){zm(f,s)}}}}}const Zm=["templateParams","htmlAttrs","bodyAttrs"],Xm={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=Wf(s)||(s.key?`${s.tag}:${s.key}`:!1);n&&(s._d=n)},"tags:resolve":function(s){const r={};s.tags.forEach(i=>{const u=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,f=r[u];if(f){let p=i==null?void 0:i.tagDuplicateStrategy;if(!p&&Zm.includes(i.tag)&&(p="merge"),p==="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])}),r[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(ao(i)>ao(f))return}const c=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(oo.includes(i.tag)&&c===0){delete r[u];return}r[u]=i});const n=[];Object.values(r).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))}}},Jm={mode:"server",hooks:{"tags:resolve":function(s){const r={};s.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{r[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(r).length&&s.tags.push({tag:"script",innerHTML:JSON.stringify(r),props:{id:"unhead:payload",type:"application/json"}})}}},Qm=["script","link","bodyAttrs"],_m=s=>({hooks:{"tags:resolve":function(r){for(const n of r.tags.filter(i=>Qm.includes(i.tag)))Object.entries(n.props).forEach(([i,u])=>{i.startsWith("on")&&typeof u=="function"&&(s.ssr&&ku.includes(i)?n.props[i]=`this.dataset.${i}fired = true`: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({$el:r,tag:n}){var i,u;for(const f of Object.keys((r==null?void 0:r.dataset)||{}).filter(c=>ku.some(p=>`${p}fired`===c))){const c=f.replace("fired","");(u=(i=n._eventHandlers)==null?void 0:i[c])==null||u.call(r,new Event(c.replace("on","")))}}}}),qm=["link","style","script","noscript"],e0={hooks:{"tag:normalise":({tag:s})=>{s.key&&qm.includes(s.tag)&&(s.props["data-hid"]=s._h=_i(s.key))}}},t0={hooks:{"tags:resolve":s=>{const r=n=>{var i;return(i=s.tags.find(u=>u._d===n))==null?void 0:i._p};for(const{prefix:n,offset:i}of km)for(const u of s.tags.filter(f=>typeof f.tagPriority=="string"&&f.tagPriority.startsWith(n))){const f=r(u.tagPriority.replace(n,""));typeof f<"u"&&(u._p=f+i)}s.tags.sort((n,i)=>n._p-i._p).sort((n,i)=>ao(n)-ao(i))}}},n0={meta:"content",link:"href",htmlAttrs:"lang"},r0=s=>({hooks:{"tags:resolve":r=>{var p;const{tags:n}=r,i=(p=n.find(d=>d.tag==="title"))==null?void 0:p.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},c=f.separator||"|";delete f.separator,f.pageTitle=io(f.pageTitle||i||"",f,c);for(const d of n.filter(m=>m.processTemplateParams!==!1)){const m=n0[d.tag];m&&typeof d.props[m]=="string"?d.props[m]=io(d.props[m],f,c):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(h=>{typeof d[h]=="string"&&(d[h]=io(d[h],f,c))})}s._templateParams=f,s._separator=c,r.tags=n.filter(d=>d.tag!=="templateParams")}}}),o0={hooks:{"tags:resolve":s=>{const{tags:r}=s;let n=r.findIndex(u=>u.tag==="titleTemplate");const i=r.findIndex(u=>u.tag==="title");if(i!==-1&&n!==-1){const u=Uu(r[n].textContent,r[i].textContent);u!==null?r[i].textContent=u||r[i].textContent:delete r[i]}else if(n!==-1){const u=Uu(r[n].textContent);u!==null&&(r[n].textContent=u,r[n].tag="title",n=-1)}n!==-1&&delete r[n],s.tags=r.filter(Boolean)}}},i0={hooks:{"tags:afterResolve":function(s){for(const r of s.tags)typeof r.innerHTML=="string"&&(r.innerHTML&&["application/ld+json","application/json"].includes(r.props.type)?r.innerHTML=r.innerHTML.replace(/</g,"\\u003C"):r.innerHTML=r.innerHTML.replace(new RegExp(`</${r.tag}`,"g"),`<\\/${r.tag}`))}}};let $f;function s0(s={}){const r=a0(s);return r.use(Ym()),$f=r}function ju(s,r){return!s||s==="server"&&r||s==="client"&&!r}function a0(s={}){const r=Hm();r.addHooks(s.hooks||{}),s.document=s.document||($m?document:void 0);const n=!s.document,i=()=>{p.dirty=!0,r.callHook("entries:updated",p)};let u=0,f=[];const c=[],p={plugins:c,dirty:!1,resolvedOptions:s,hooks:r,headEntries(){return f},use(d){const m=typeof d=="function"?d(p):d;(!m.key||!c.some(h=>h.key===m.key))&&(c.push(m),ju(m.mode,n)&&r.addHooks(m.hooks||{}))},push(d,m){m==null||delete m.head;const h={_i:u++,input:d,...m};return ju(h.mode,n)&&(f.push(h),i()),{dispose(){f=f.filter(y=>y._i!==h._i),r.callHook("entries:updated",p),i()},patch(y){f=f.map(x=>(x._i===h._i&&(x.input=h.input=y),x)),i()}}},async resolveTags(){const d={tags:[],entries:[...f]};await r.callHook("entries:resolve",d);for(const m of d.entries){const h=m.resolvedInput||m.input;if(m.resolvedInput=await(m.transform?m.transform(h):h),m.resolvedInput)for(const y of await Km(m)){const x={tag:y,entry:m,resolvedOptions:p.resolvedOptions};await r.callHook("tag:normalise",x),d.tags.push(x.tag)}}return await r.callHook("tags:beforeResolve",d),await r.callHook("tags:resolve",d),await r.callHook("tags:afterResolve",d),d.tags},ssr:n};return[Xm,Jm,_m,e0,t0,r0,o0,i0,...(s==null?void 0:s.plugins)||[]].forEach(d=>p.use(d)),p.hooks.callHook("init",p),p}function u0(){return $f}const Gf=_1.startsWith("3");function f0(s){return typeof s=="function"?s():ln(s)}function uo(s,r=""){if(s instanceof Promise)return s;const n=f0(s);return!s||!n?n:Array.isArray(n)?n.map(i=>uo(i,r)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,u])=>i==="titleTemplate"||i.startsWith("on")?[i,ln(u)]:[i,uo(u,i)])):n}const c0={hooks:{"entries:resolve":function(s){for(const r of s.entries)r.resolvedInput=uo(r.input)}}},Uf="usehead";function l0(s){return{install(n){Gf&&(n.config.globalProperties.$unhead=s,n.config.globalProperties.$head=s,n.provide(Uf,s))}}.install}function d0(s={}){s.domDelayFn=s.domDelayFn||(n=>Mn(()=>setTimeout(()=>n(),0)));const r=s0(s);return r.use(c0),r.install=l0(r),r}const zu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Yu="__unhead_injection_handler__";function h0(){if(Yu in zu)return zu[Yu]();const s=Lt(Uf);return s||u0()}function p0(s,r={}){const n=r.head||h0();if(n)return n.ssr?n.push(s,r):g0(n,s,r)}function g0(s,r,n={}){const i=so(!1),u=so({});Tf(()=>{u.value=i.value?{}:uo(r)});const f=s.push(u.value,n);return Qi(u,p=>{f.patch(p)}),Af()&&(wf(()=>{f.dispose()}),Rf(()=>{i.value=!0}),Of(()=>{i.value=!1})),f}const v0={created(){let s=!1;if(Gf){const r=Af();if(!r)return;const n=r.type;if(!n||!("head"in n))return;s=typeof n.head=="function"?()=>n.head.call(r.proxy):n.head}else{const r=this.$options.head;r&&(s=typeof r=="function"?()=>r.call(this):r)}s&&p0(s)}},m0="drag-scroller-disable",y0=(()=>{const s=new WeakMap;return{mounted(r,n){let i=!1;const{onlyX:u,onlyY:f,disablechild:c}=n.modifiers,p=n.value??{},d=new Event("scrollStart",{bubbles:!0}),m=new Event("scrollMoving",{bubbles:!0}),h=new Event("scrollEnd",{bubbles:!0});p.hideScrollbar===!0&&(r.style.overflow="hidden");const y=E=>{if(c)return E===r;for(;E&&E.parentNode;){if(E&&E!=null&&E.hasAttribute(m0))return!1;if(E===r)return!0;E=E.parentNode}return!1},x=E=>{i=y(E.target),r.dispatchEvent(d),i&&p!=null&&p.startScroll&&typeof(p==null?void 0:p.startScroll)=="function"&&p.startScroll(E)},b=E=>{r.dispatchEvent(h),i&&p!=null&&p.endScroll&&typeof(p==null?void 0:p.endScroll)=="function"&&p.endScroll(E),i=!1},T=E=>{if(!i)return!1;r.dispatchEvent(m),p!=null&&p.onScrolling&&typeof(p==null?void 0:p.onScrolling)=="function"&&p.onScrolling(E),E.stopPropagation&&E.stopPropagation(),E.preventDefault&&E.preventDefault(),E.cancelBubble=!0,E.returnValue=!1;const A=(p==null?void 0:p.speed)||1,I=p.reverseDirection?E.movementX*A:-E.movementX*A,O=p.reverseDirection?E.movementY*A:-E.movementY*A;u?r.scrollLeft+=I:(f||(r.scrollLeft+=I),r.scrollTop+=O)};s.set(r,{dragStart:x,dragEnd:b,drag:T}),r.addEventListener("pointerdown",x),addEventListener("pointerup",b),addEventListener("pointermove",T)},unmounted(r){const{dragStart:n,dragEnd:i,drag:u}=s.get(r);r.removeEventListener("pointerdown",n),removeEventListener("pointerup",i),removeEventListener("pointermove",u)}}})(),x0={install(s){s.directive("drag-scroller",y0)}},Vf={bookmarkFilter:[{title:"All",value:"ALL",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],breadcrumbs:[{group:"r",pks:"0",page:1}],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"}],searchResultsLimit:100,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:"filename"},{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"}],orderReverse:!1,vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"}},S0={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:""}]},b0={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},je={browser:Vf,reader:S0,websockets:b0},E0="modulepreload",L0=function(s){return window.CODEX.APP_PATH + "static"+"/"+s},Zu={},It=function(r,n,i){let u=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),c=(f==null?void 0:f.nonce)||(f==null?void 0:f.getAttribute("nonce"));u=Promise.all(n.map(p=>{if(p=L0(p),p in Zu)return;Zu[p]=!0;const d=p.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${m}`))return;const h=document.createElement("link");if(h.rel=d?"stylesheet":E0,d||(h.as="script",h.crossOrigin=""),h.href=p,c&&h.setAttribute("nonce",c),document.head.appendChild(h),d)return new Promise((y,x)=>{h.addEventListener("load",y),h.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${p}`)))})}))}return u.then(()=>r()).catch(f=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=f,window.dispatchEvent(c),!c.defaultPrevented)throw f})};/*!
1
+ const __vite__fileDeps=["assets/admin-CWIp315V.js","assets/admin-drawer-panel-BNRI3VNZ.js","assets/admin-drawer-panel-BF0dMvEE.css","assets/settings-drawer-B433DlG2.js","assets/unauthorized-DFTKS7Wr.js","assets/change-password-dialog-C-8Ixgjj.js","assets/VTextField-BzSMerR0.js","assets/VDialog-DhRhufg-.js","assets/VDialog-C5Nxd_zP.css","assets/VSelectionControl-wVVkmChP.js","assets/VSelectionControl-BFq--28I.css","assets/VTextField-DuIIp-VY.css","assets/change-password-dialog-HvIvmmIE.css","assets/unauthorized-DWgytUow.css","assets/index-DUjeNg4x.js","assets/settings-drawer-BgUazs7O.css","assets/VWindowItem-CJBsFzH7.js","assets/VWindowItem-ByIod57Y.css","assets/VSlideGroup-DCfSQ-Vx.js","assets/VSlideGroup-Dk_1upHt.css","assets/admin-BbrOU9Y9.css","assets/browser-CPtVXHUw.js","assets/VTable-icaTTwDw.js","assets/VTable-DflzroDq.css","assets/VCheckbox-H0aBoP9N.js","assets/VCheckboxBtn-CTJ47tuf.js","assets/VCheckbox-CMKdyl0R.css","assets/pagination-toolbar-DcauC4Lw.js","assets/VSelect-DaalAg2L.js","assets/VSelect-ARDhJiQK.css","assets/to-case-kUm8NPpW.js","assets/pagination-toolbar-B3wS4_7p.css","assets/confirm-dialog-C4NOgXW9.js","assets/confirm-dialog-BmhedLCx.css","assets/VCombobox-CN1HkVdW.js","assets/filter-DrwUDlyj.js","assets/VCombobox-BksEr4D_.css","assets/browser-CZeVqRNy.css","assets/http-error-DQn3mkP_.js","assets/http-error-_wlDqEcp.css","assets/reader-DoS_6GK6.js","assets/VExpansionPanels-BFGZaci1.js","assets/VExpansionPanels-DsEXVcCv.css","assets/VRadioGroup-XG50xIIN.js","assets/VRadioGroup-i2qP9Wu9.css","assets/reader-Dspy46e8.css","assets/flag-tab-CBkrOBs1.js","assets/flag-tab-BacZLlVi.css","assets/user-tab-Dpe-epEv.js","assets/relation-chips-BoGgSbRW.js","assets/relation-chips-D6T6FX7G.css","assets/datetime-column-Dbxk_0ER.js","assets/datetime-column-Dg_RxTVM.css","assets/group-tab-CmqOuOJM.js","assets/group-tab-CBKuS3Iv.css","assets/library-tab-eRhFvDgA.js","assets/library-tab-CXbkxNZt.css","assets/task-tab-DJAAAC9L.js","assets/task-tab-1XiWn9xP.css","assets/stats-tab-Cboz3cW4.js","assets/stats-tab-TsyG3wH_.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
+ import{n as Mn,v as _1,i as Lt,u as ln,r as so,w as Tf,a as Qi,g as Af,o as wf,b as Rf,c as Of,s as or,d as q1,e as If,f as Gt,h as Ce,j as Cf,p as ir,H as Dn,k as sr,l as Pf,m as Vi,q as em,t as Ki,x as ho,y as Mf,z as Df,A as tm,B as Du,C as ro,D as nm,E as rm,F as om,G as im,I as sm,J as Hf,K as am,L as nr,S as um,M as fm,N as Hu,O as cm,_ as lm,P as dm,Q as hm,R as pm,T as gm,U as vm,V as Fu,W as dn,X as dr,Y as mm,Z as ym,$ as xm,a0 as Sm,a1 as bm,a2 as Em,a3 as Lm,a4 as Tm,a5 as Am,a6 as wm,a7 as Bu,a8 as Wu,a9 as Nu,aa as $u,ab as Rm,ac as Om}from"./admin-drawer-panel-BNRI3VNZ.js";function ki(s,r={},n){for(const i in s){const u=s[i],f=n?`${n}:${i}`:i;typeof u=="object"&&u!==null?ki(u,r,f):typeof u=="function"&&(r[f]=u)}return r}const Im={run:s=>s()},Cm=()=>Im,Ff=typeof console.createTask<"u"?console.createTask:Cm;function Pm(s,r){const n=r.shift(),i=Ff(n);return s.reduce((u,f)=>u.then(()=>i.run(()=>f(...r))),Promise.resolve())}function Mm(s,r){const n=r.shift(),i=Ff(n);return Promise.all(s.map(u=>i.run(()=>u(...r))))}function Bi(s,r){for(const n of[...s])n(r)}class Dm{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(r,n,i={}){if(!r||typeof n!="function")return()=>{};const u=r;let f;for(;this._deprecatedHooks[r];)f=this._deprecatedHooks[r],r=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:()=>"_"+r.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[r]=this._hooks[r]||[],this._hooks[r].push(n),()=>{n&&(this.removeHook(r,n),n=void 0)}}hookOnce(r,n){let i,u=(...f)=>(typeof i=="function"&&i(),i=void 0,u=void 0,n(...f));return i=this.hook(r,u),i}removeHook(r,n){if(this._hooks[r]){const i=this._hooks[r].indexOf(n);i!==-1&&this._hooks[r].splice(i,1),this._hooks[r].length===0&&delete this._hooks[r]}}deprecateHook(r,n){this._deprecatedHooks[r]=typeof n=="string"?{to:n}:n;const i=this._hooks[r]||[];delete this._hooks[r];for(const u of i)this.hook(r,u)}deprecateHooks(r){Object.assign(this._deprecatedHooks,r);for(const n in r)this.deprecateHook(n,r[n])}addHooks(r){const n=ki(r),i=Object.keys(n).map(u=>this.hook(u,n[u]));return()=>{for(const u of i.splice(0,i.length))u()}}removeHooks(r){const n=ki(r);for(const i in n)this.removeHook(i,n[i])}removeAllHooks(){for(const r in this._hooks)delete this._hooks[r]}callHook(r,...n){return n.unshift(r),this.callHookWith(Pm,r,...n)}callHookParallel(r,...n){return n.unshift(r),this.callHookWith(Mm,r,...n)}callHookWith(r,n,...i){const u=this._before||this._after?{name:n,args:i,context:{}}:void 0;this._before&&Bi(this._before,u);const f=r(n in this._hooks?[...this._hooks[n]]:[],i);return f instanceof Promise?f.finally(()=>{this._after&&u&&Bi(this._after,u)}):(this._after&&u&&Bi(this._after,u),f)}beforeEach(r){return this._before=this._before||[],this._before.push(r),()=>{if(this._before!==void 0){const n=this._before.indexOf(r);n!==-1&&this._before.splice(n,1)}}}afterEach(r){return this._after=this._after||[],this._after.push(r),()=>{if(this._after!==void 0){const n=this._after.indexOf(r);n!==-1&&this._after.splice(n,1)}}}}function Hm(){return new Dm}function Fm(s){return Array.isArray(s)?s:[s]}const Bm=["title","titleTemplate","script","style","noscript"],oo=["base","meta","link","style","script","noscript"],Wm=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],Nm=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Bf=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],$m=typeof window<"u";function _i(s){let r=9;for(let n=0;n<s.length;)r=Math.imul(r^s.charCodeAt(n++),9**9);return((r^r>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function Gu(s){return s._h||_i(s._d?s._d:`${s.tag}:${s.textContent||s.innerHTML||""}:${Object.entries(s.props).map(([r,n])=>`${r}:${String(n)}`).join(",")}`)}function Wf(s,r){const{props:n,tag:i}=s;if(Nm.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`${i}:${f}:${c}`}return!1}function Uu(s,r){return s==null?r||null:typeof s=="function"?s(r):s}async function Gm(s,r,n){const i={tag:s,props:await Nf(typeof r=="object"&&typeof r!="function"&&!(r instanceof Promise)?{...r}:{[["script","noscript","style"].includes(s)?"innerHTML":"textContent"]:r},["templateParams","titleTemplate"].includes(s))};return Bf.forEach(u=>{const f=typeof i.props[u]<"u"?i.props[u]:n[u];typeof f<"u"&&((!["innerHTML","textContent","children"].includes(u)||Bm.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 Um(s,r){var i;const n=s==="class"?" ":";";return typeof r=="object"&&!Array.isArray(r)&&(r=Object.entries(r).filter(([,u])=>u).map(([u,f])=>s==="style"?`${u}:${f}`:u)),(i=Array.isArray(r)?r.join(n):r)==null?void 0:i.split(n).filter(u=>u.trim()).filter(Boolean).join(n)}async function Nf(s,r){for(const n of Object.keys(s)){if(["class","style"].includes(n)){s[n]=Um(n,s[n]);continue}if(s[n]instanceof Promise&&(s[n]=await s[n]),!r&&!Bf.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 Vm=10;async function Km(s){const r=[];return Object.entries(s.resolvedInput).filter(([n,i])=>typeof i<"u"&&Wm.includes(n)).forEach(([n,i])=>{const u=Fm(i);r.push(...u.map(f=>Gm(n,f,s)).flat())}),(await Promise.all(r)).flat().filter(Boolean).map((n,i)=>(n._e=s._i,s.mode&&(n._m=s.mode),n._p=(s._i<<Vm)+i,n))}const Vu={base:-10,title:10},Ku={critical:-80,high:-10,low:20};function ao(s){let r=100;const n=s.tagPriority;return typeof n=="number"?n:(s.tag==="meta"?(s.props["http-equiv"]==="content-security-policy"&&(r=-30),s.props.charset&&(r=-20),s.props.name==="viewport"&&(r=-15)):s.tag==="link"&&s.props.rel==="preconnect"?r=20:s.tag in Vu&&(r=Vu[s.tag]),typeof n=="string"&&n in Ku?r+Ku[n]:r)}const km=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],ku=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function io(s,r,n){if(typeof s!="string"||!s.includes("%"))return s;function i(c){let p;return["s","pageTitle"].includes(c)?p=r.pageTitle:c.includes(".")?p=c.split(".").reduce((d,m)=>d&&d[m]||void 0,r):p=r[c],typeof p<"u"?(p||"").replace(/"/g,'\\"'):!1}let u=s;try{u=decodeURI(s)}catch{}return(u.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(c=>{const p=i(c.slice(1));typeof p=="string"&&(s=s.replace(new RegExp(`\\${c}(\\W|$)`,"g"),(d,m)=>`${p}${m}`).trim())}),s.includes(Qt)&&(s.endsWith(Qt)&&(s=s.slice(0,-Qt.length).trim()),s.startsWith(Qt)&&(s=s.slice(Qt.length).trim()),s=s.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),s=io(s,{separator:n},n)),s}async function jm(s,r={}){var h;const n=r.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:oo.includes(y.tag)?Gu(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=(h=n[y])==null?void 0:h.children,b=[];for(const T of[...x].filter(E=>oo.includes(E.tagName.toLowerCase()))){const E={tag:T.tagName.toLowerCase(),props:await Nf(T.getAttributeNames().reduce((O,P)=>({...O,[P]:T.getAttribute(P)}),{})),innerHTML:T.innerHTML};let A=1,I=Wf(E);for(;I&&b.find(O=>O._d===I);)I=`${I}:${A++}`;E._d=I||void 0,b.push(E),f.elMap[T.getAttribute("data-hid")||Gu(E)]=T}}}f.pendingSideEffects={...f.sideEffects||{}},f.sideEffects={};function c(y,x,b){const T=`${y}:${x}`;f.sideEffects[T]=b,delete f.pendingSideEffects[T]}function p({id:y,$el:x,tag:b}){const T=b.tag.endsWith("Attrs");f.elMap[y]=x,T||(["textContent","innerHTML"].forEach(E=>{b[E]&&b[E]!==x[E]&&(x[E]=b[E])}),c(y,"el",()=>{var E;(E=f.elMap[y])==null||E.remove(),delete f.elMap[y]}));for(const[E,A]of Object.entries(b._eventHandlers||{}))x.getAttribute(`data-${E}`)!==""&&((b.tag==="bodyAttrs"?n.defaultView:x).addEventListener(E.replace("on",""),A.bind(x)),x.setAttribute(`data-${E}`,""));Object.entries(b.props).forEach(([E,A])=>{const I=`attr:${E}`;if(E==="class")for(const O of(A||"").split(" ").filter(Boolean))T&&c(y,`${I}:${O}`,()=>x.classList.remove(O)),!x.classList.contains(O)&&x.classList.add(O);else if(E==="style")for(const O of(A||"").split(";").filter(Boolean)){const[P,...N]=O.split(":").map(V=>V.trim());c(y,`${I}:${O}:${P}`,()=>{x.style.removeProperty(P)}),x.style.setProperty(P,N.join(":"))}else x.getAttribute(E)!==A&&x.setAttribute(E,A===!0?"":String(A)),T&&c(y,I,()=>x.removeAttribute(E))})}const d=[],m={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of u){const{tag:x,shouldRender:b,id:T}=y;if(b){if(x.tag==="title"){n.title=x.textContent;continue}y.$el=y.$el||f.elMap[T],y.$el?p(y):oo.includes(x.tag)&&d.push(y)}}for(const y of d){const x=y.tag.tagPosition||"head";y.$el=n.createElement(y.tag.tag),p(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 zm(s,r={}){const n=r.delayFn||(i=>setTimeout(i,10));return s._domUpdatePromise=s._domUpdatePromise||new Promise(i=>n(async()=>{await jm(s,r),delete s._domUpdatePromise,i()}))}function Ym(s){return r=>{var i,u;const n=((u=(i=r.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:u.innerHTML)||!1;return n&&r.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(f){zm(f,s)}}}}}const Zm=["templateParams","htmlAttrs","bodyAttrs"],Xm={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=Wf(s)||(s.key?`${s.tag}:${s.key}`:!1);n&&(s._d=n)},"tags:resolve":function(s){const r={};s.tags.forEach(i=>{const u=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,f=r[u];if(f){let p=i==null?void 0:i.tagDuplicateStrategy;if(!p&&Zm.includes(i.tag)&&(p="merge"),p==="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])}),r[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(ao(i)>ao(f))return}const c=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(oo.includes(i.tag)&&c===0){delete r[u];return}r[u]=i});const n=[];Object.values(r).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))}}},Jm={mode:"server",hooks:{"tags:resolve":function(s){const r={};s.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{r[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(r).length&&s.tags.push({tag:"script",innerHTML:JSON.stringify(r),props:{id:"unhead:payload",type:"application/json"}})}}},Qm=["script","link","bodyAttrs"],_m=s=>({hooks:{"tags:resolve":function(r){for(const n of r.tags.filter(i=>Qm.includes(i.tag)))Object.entries(n.props).forEach(([i,u])=>{i.startsWith("on")&&typeof u=="function"&&(s.ssr&&ku.includes(i)?n.props[i]=`this.dataset.${i}fired = true`: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({$el:r,tag:n}){var i,u;for(const f of Object.keys((r==null?void 0:r.dataset)||{}).filter(c=>ku.some(p=>`${p}fired`===c))){const c=f.replace("fired","");(u=(i=n._eventHandlers)==null?void 0:i[c])==null||u.call(r,new Event(c.replace("on","")))}}}}),qm=["link","style","script","noscript"],e0={hooks:{"tag:normalise":({tag:s})=>{s.key&&qm.includes(s.tag)&&(s.props["data-hid"]=s._h=_i(s.key))}}},t0={hooks:{"tags:resolve":s=>{const r=n=>{var i;return(i=s.tags.find(u=>u._d===n))==null?void 0:i._p};for(const{prefix:n,offset:i}of km)for(const u of s.tags.filter(f=>typeof f.tagPriority=="string"&&f.tagPriority.startsWith(n))){const f=r(u.tagPriority.replace(n,""));typeof f<"u"&&(u._p=f+i)}s.tags.sort((n,i)=>n._p-i._p).sort((n,i)=>ao(n)-ao(i))}}},n0={meta:"content",link:"href",htmlAttrs:"lang"},r0=s=>({hooks:{"tags:resolve":r=>{var p;const{tags:n}=r,i=(p=n.find(d=>d.tag==="title"))==null?void 0:p.textContent,u=n.findIndex(d=>d.tag==="templateParams"),f=u!==-1?n[u].props:{},c=f.separator||"|";delete f.separator,f.pageTitle=io(f.pageTitle||i||"",f,c);for(const d of n.filter(m=>m.processTemplateParams!==!1)){const m=n0[d.tag];m&&typeof d.props[m]=="string"?d.props[m]=io(d.props[m],f,c):(d.processTemplateParams===!0||["titleTemplate","title"].includes(d.tag))&&["innerHTML","textContent"].forEach(h=>{typeof d[h]=="string"&&(d[h]=io(d[h],f,c))})}s._templateParams=f,s._separator=c,r.tags=n.filter(d=>d.tag!=="templateParams")}}}),o0={hooks:{"tags:resolve":s=>{const{tags:r}=s;let n=r.findIndex(u=>u.tag==="titleTemplate");const i=r.findIndex(u=>u.tag==="title");if(i!==-1&&n!==-1){const u=Uu(r[n].textContent,r[i].textContent);u!==null?r[i].textContent=u||r[i].textContent:delete r[i]}else if(n!==-1){const u=Uu(r[n].textContent);u!==null&&(r[n].textContent=u,r[n].tag="title",n=-1)}n!==-1&&delete r[n],s.tags=r.filter(Boolean)}}},i0={hooks:{"tags:afterResolve":function(s){for(const r of s.tags)typeof r.innerHTML=="string"&&(r.innerHTML&&["application/ld+json","application/json"].includes(r.props.type)?r.innerHTML=r.innerHTML.replace(/</g,"\\u003C"):r.innerHTML=r.innerHTML.replace(new RegExp(`</${r.tag}`,"g"),`<\\/${r.tag}`))}}};let $f;function s0(s={}){const r=a0(s);return r.use(Ym()),$f=r}function ju(s,r){return!s||s==="server"&&r||s==="client"&&!r}function a0(s={}){const r=Hm();r.addHooks(s.hooks||{}),s.document=s.document||($m?document:void 0);const n=!s.document,i=()=>{p.dirty=!0,r.callHook("entries:updated",p)};let u=0,f=[];const c=[],p={plugins:c,dirty:!1,resolvedOptions:s,hooks:r,headEntries(){return f},use(d){const m=typeof d=="function"?d(p):d;(!m.key||!c.some(h=>h.key===m.key))&&(c.push(m),ju(m.mode,n)&&r.addHooks(m.hooks||{}))},push(d,m){m==null||delete m.head;const h={_i:u++,input:d,...m};return ju(h.mode,n)&&(f.push(h),i()),{dispose(){f=f.filter(y=>y._i!==h._i),r.callHook("entries:updated",p),i()},patch(y){f=f.map(x=>(x._i===h._i&&(x.input=h.input=y),x)),i()}}},async resolveTags(){const d={tags:[],entries:[...f]};await r.callHook("entries:resolve",d);for(const m of d.entries){const h=m.resolvedInput||m.input;if(m.resolvedInput=await(m.transform?m.transform(h):h),m.resolvedInput)for(const y of await Km(m)){const x={tag:y,entry:m,resolvedOptions:p.resolvedOptions};await r.callHook("tag:normalise",x),d.tags.push(x.tag)}}return await r.callHook("tags:beforeResolve",d),await r.callHook("tags:resolve",d),await r.callHook("tags:afterResolve",d),d.tags},ssr:n};return[Xm,Jm,_m,e0,t0,r0,o0,i0,...(s==null?void 0:s.plugins)||[]].forEach(d=>p.use(d)),p.hooks.callHook("init",p),p}function u0(){return $f}const Gf=_1.startsWith("3");function f0(s){return typeof s=="function"?s():ln(s)}function uo(s,r=""){if(s instanceof Promise)return s;const n=f0(s);return!s||!n?n:Array.isArray(n)?n.map(i=>uo(i,r)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([i,u])=>i==="titleTemplate"||i.startsWith("on")?[i,ln(u)]:[i,uo(u,i)])):n}const c0={hooks:{"entries:resolve":function(s){for(const r of s.entries)r.resolvedInput=uo(r.input)}}},Uf="usehead";function l0(s){return{install(n){Gf&&(n.config.globalProperties.$unhead=s,n.config.globalProperties.$head=s,n.provide(Uf,s))}}.install}function d0(s={}){s.domDelayFn=s.domDelayFn||(n=>Mn(()=>setTimeout(()=>n(),0)));const r=s0(s);return r.use(c0),r.install=l0(r),r}const zu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Yu="__unhead_injection_handler__";function h0(){if(Yu in zu)return zu[Yu]();const s=Lt(Uf);return s||u0()}function p0(s,r={}){const n=r.head||h0();if(n)return n.ssr?n.push(s,r):g0(n,s,r)}function g0(s,r,n={}){const i=so(!1),u=so({});Tf(()=>{u.value=i.value?{}:uo(r)});const f=s.push(u.value,n);return Qi(u,p=>{f.patch(p)}),Af()&&(wf(()=>{f.dispose()}),Rf(()=>{i.value=!0}),Of(()=>{i.value=!1})),f}const v0={created(){let s=!1;if(Gf){const r=Af();if(!r)return;const n=r.type;if(!n||!("head"in n))return;s=typeof n.head=="function"?()=>n.head.call(r.proxy):n.head}else{const r=this.$options.head;r&&(s=typeof r=="function"?()=>r.call(this):r)}s&&p0(s)}},m0="drag-scroller-disable",y0=(()=>{const s=new WeakMap;return{mounted(r,n){let i=!1;const{onlyX:u,onlyY:f,disablechild:c}=n.modifiers,p=n.value??{},d=new Event("scrollStart",{bubbles:!0}),m=new Event("scrollMoving",{bubbles:!0}),h=new Event("scrollEnd",{bubbles:!0});p.hideScrollbar===!0&&(r.style.overflow="hidden");const y=E=>{if(c)return E===r;for(;E&&E.parentNode;){if(E&&E!=null&&E.hasAttribute(m0))return!1;if(E===r)return!0;E=E.parentNode}return!1},x=E=>{i=y(E.target),r.dispatchEvent(d),i&&p!=null&&p.startScroll&&typeof(p==null?void 0:p.startScroll)=="function"&&p.startScroll(E)},b=E=>{r.dispatchEvent(h),i&&p!=null&&p.endScroll&&typeof(p==null?void 0:p.endScroll)=="function"&&p.endScroll(E),i=!1},T=E=>{if(!i)return!1;r.dispatchEvent(m),p!=null&&p.onScrolling&&typeof(p==null?void 0:p.onScrolling)=="function"&&p.onScrolling(E),E.stopPropagation&&E.stopPropagation(),E.preventDefault&&E.preventDefault(),E.cancelBubble=!0,E.returnValue=!1;const A=(p==null?void 0:p.speed)||1,I=p.reverseDirection?E.movementX*A:-E.movementX*A,O=p.reverseDirection?E.movementY*A:-E.movementY*A;u?r.scrollLeft+=I:(f||(r.scrollLeft+=I),r.scrollTop+=O)};s.set(r,{dragStart:x,dragEnd:b,drag:T}),r.addEventListener("pointerdown",x),addEventListener("pointerup",b),addEventListener("pointermove",T)},unmounted(r){const{dragStart:n,dragEnd:i,drag:u}=s.get(r);r.removeEventListener("pointerdown",n),removeEventListener("pointerup",i),removeEventListener("pointermove",u)}}})(),x0={install(s){s.directive("drag-scroller",y0)}},Vf={bookmarkFilter:[{title:"All",value:"ALL",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],breadcrumbs:[{group:"r",pks:"0",page:1}],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"}],searchResultsLimit:100,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:"filename"},{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"}],orderReverse:!1,vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"}},S0={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:""}]},b0={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},je={browser:Vf,reader:S0,websockets:b0},E0="modulepreload",L0=function(s){return window.CODEX.APP_PATH + "static"+"/"+s},Zu={},It=function(r,n,i){let u=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),c=(f==null?void 0:f.nonce)||(f==null?void 0:f.getAttribute("nonce"));u=Promise.all(n.map(p=>{if(p=L0(p),p in Zu)return;Zu[p]=!0;const d=p.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${m}`))return;const h=document.createElement("link");if(h.rel=d?"stylesheet":E0,d||(h.as="script",h.crossOrigin=""),h.href=p,c&&h.setAttribute("nonce",c),document.head.appendChild(h),d)return new Promise((y,x)=>{h.addEventListener("load",y),h.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${p}`)))})}))}return u.then(()=>r()).catch(f=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=f,window.dispatchEvent(c),!c.defaultPrevented)throw f})};/*!
3
3
  * vue-router v4.3.2
4
4
  * (c) 2024 Eduardo San Martin Morote
5
5
  * @license MIT
6
- */const In=typeof document<"u";function T0(s){return s.__esModule||s[Symbol.toStringTag]==="Module"}const Se=Object.assign;function Wi(s,r){const n={};for(const i in r){const u=r[i];n[i]=Tt(u)?u.map(s):s(u)}return n}const ar=()=>{},Tt=Array.isArray,Kf=/#/g,A0=/&/g,w0=/\//g,R0=/=/g,O0=/\?/g,kf=/\+/g,I0=/%5B/g,C0=/%5D/g,jf=/%5E/g,P0=/%60/g,zf=/%7B/g,M0=/%7C/g,Yf=/%7D/g,D0=/%20/g;function qi(s){return encodeURI(""+s).replace(M0,"|").replace(I0,"[").replace(C0,"]")}function H0(s){return qi(s).replace(zf,"{").replace(Yf,"}").replace(jf,"^")}function ji(s){return qi(s).replace(kf,"%2B").replace(D0,"+").replace(Kf,"%23").replace(A0,"%26").replace(P0,"`").replace(zf,"{").replace(Yf,"}").replace(jf,"^")}function F0(s){return ji(s).replace(R0,"%3D")}function B0(s){return qi(s).replace(Kf,"%23").replace(O0,"%3F")}function W0(s){return s==null?"":B0(s).replace(w0,"%2F")}function fr(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const N0=/\/$/,$0=s=>s.replace(N0,"");function Ni(s,r,n="/"){let i,u={},f="",c="";const p=r.indexOf("#");let d=r.indexOf("?");return p<d&&p>=0&&(d=-1),d>-1&&(i=r.slice(0,d),f=r.slice(d+1,p>-1?p:r.length),u=s(f)),p>-1&&(i=i||r.slice(0,p),c=r.slice(p,r.length)),i=K0(i??r,n),{fullPath:i+(f&&"?")+f+c,path:i,query:u,hash:fr(c)}}function G0(s,r){const n=r.query?s(r.query):"";return r.path+(n&&"?")+n+(r.hash||"")}function Xu(s,r){return!r||!s.toLowerCase().startsWith(r.toLowerCase())?s:s.slice(r.length)||"/"}function U0(s,r,n){const i=r.matched.length-1,u=n.matched.length-1;return i>-1&&i===u&&Cn(r.matched[i],n.matched[u])&&Zf(r.params,n.params)&&s(r.query)===s(n.query)&&r.hash===n.hash}function Cn(s,r){return(s.aliasOf||s)===(r.aliasOf||r)}function Zf(s,r){if(Object.keys(s).length!==Object.keys(r).length)return!1;for(const n in s)if(!V0(s[n],r[n]))return!1;return!0}function V0(s,r){return Tt(s)?Ju(s,r):Tt(r)?Ju(r,s):s===r}function Ju(s,r){return Tt(r)?s.length===r.length&&s.every((n,i)=>n===r[i]):s.length===1&&s[0]===r}function K0(s,r){if(s.startsWith("/"))return s;if(!s)return r;const n=r.split("/"),i=s.split("/"),u=i[i.length-1];(u===".."||u===".")&&i.push("");let f=n.length-1,c,p;for(c=0;c<i.length;c++)if(p=i[c],p!==".")if(p==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(c).join("/")}var cr;(function(s){s.pop="pop",s.push="push"})(cr||(cr={}));var ur;(function(s){s.back="back",s.forward="forward",s.unknown=""})(ur||(ur={}));function k0(s){if(!s)if(In){const r=document.querySelector("base");s=r&&r.getAttribute("href")||"/",s=s.replace(/^\w+:\/\/[^\/]+/,"")}else s="/";return s[0]!=="/"&&s[0]!=="#"&&(s="/"+s),$0(s)}const j0=/^[^#]+#/;function z0(s,r){return s.replace(j0,"#")+r}function Y0(s,r){const n=document.documentElement.getBoundingClientRect(),i=s.getBoundingClientRect();return{behavior:r.behavior,left:i.left-n.left-(r.left||0),top:i.top-n.top-(r.top||0)}}const po=()=>({left:window.scrollX,top:window.scrollY});function Z0(s){let r;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;r=Y0(u,s)}else r=s;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function Qu(s,r){return(history.state?history.state.position-r:-1)+s}const zi=new Map;function X0(s,r){zi.set(s,r)}function J0(s){const r=zi.get(s);return zi.delete(s),r}let Q0=()=>location.protocol+"//"+location.host;function Xf(s,r){const{pathname:n,search:i,hash:u}=r,f=s.indexOf("#");if(f>-1){let p=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(p);return d[0]!=="/"&&(d="/"+d),Xu(d,"")}return Xu(n,s)+i+u}function _0(s,r,n,i){let u=[],f=[],c=null;const p=({state:x})=>{const b=Xf(s,location),T=n.value,E=r.value;let A=0;if(x){if(n.value=b,r.value=x,c&&c===T){c=null;return}A=E?x.position-E.position:0}else i(b);u.forEach(I=>{I(n.value,T,{delta:A,type:cr.pop,direction:A?A>0?ur.forward:ur.back:ur.unknown})})};function d(){c=n.value}function m(x){u.push(x);const b=()=>{const T=u.indexOf(x);T>-1&&u.splice(T,1)};return f.push(b),b}function h(){const{history:x}=window;x.state&&x.replaceState(Se({},x.state,{scroll:po()}),"")}function y(){for(const x of f)x();f=[],window.removeEventListener("popstate",p),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",p),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:d,listen:m,destroy:y}}function _u(s,r,n,i=!1,u=!1){return{back:s,current:r,forward:n,replaced:i,position:window.history.length,scroll:u?po():null}}function q0(s){const{history:r,location:n}=window,i={value:Xf(s,n)},u={value:r.state};u.value||f(i.value,{back:null,current:i.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function f(d,m,h){const y=s.indexOf("#"),x=y>-1?(n.host&&document.querySelector("base")?s:s.slice(y))+d:Q0()+s+d;try{r[h?"replaceState":"pushState"](m,"",x),u.value=m}catch(b){console.error(b),n[h?"replace":"assign"](x)}}function c(d,m){const h=Se({},r.state,_u(u.value.back,d,u.value.forward,!0),m,{position:u.value.position});f(d,h,!0),i.value=d}function p(d,m){const h=Se({},u.value,r.state,{forward:d,scroll:po()});f(h.current,h,!0);const y=Se({},_u(i.value,d,null),{position:h.position+1},m);f(d,y,!1),i.value=d}return{location:i,state:u,push:p,replace:c}}function ey(s){s=k0(s);const r=q0(s),n=_0(s,r.state,r.location,r.replace);function i(f,c=!0){c||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:z0.bind(null,s)},r,n);return Object.defineProperty(u,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(u,"state",{enumerable:!0,get:()=>r.state.value}),u}function ty(s){return typeof s=="string"||s&&typeof s=="object"}function Jf(s){return typeof s=="string"||typeof s=="symbol"}const _t={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Qf=Symbol("");var qu;(function(s){s[s.aborted=4]="aborted",s[s.cancelled=8]="cancelled",s[s.duplicated=16]="duplicated"})(qu||(qu={}));function Pn(s,r){return Se(new Error,{type:s,[Qf]:!0},r)}function $t(s,r){return s instanceof Error&&Qf in s&&(r==null||!!(s.type&r))}const ef="[^/]+?",ny={sensitive:!1,strict:!1,start:!0,end:!0},ry=/[.+*?^${}()[\]/\\]/g;function oy(s,r){const n=Se({},ny,r),i=[];let u=n.start?"^":"";const f=[];for(const m of s){const h=m.length?[]:[90];n.strict&&!m.length&&(u+="/");for(let y=0;y<m.length;y++){const x=m[y];let b=40+(n.sensitive?.25:0);if(x.type===0)y||(u+="/"),u+=x.value.replace(ry,"\\$&"),b+=40;else if(x.type===1){const{value:T,repeatable:E,optional:A,regexp:I}=x;f.push({name:T,repeatable:E,optional:A});const O=I||ef;if(O!==ef){b+=10;try{new RegExp(`(${O})`)}catch(N){throw new Error(`Invalid custom RegExp for param "${T}" (${O}): `+N.message)}}let P=E?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;y||(P=A&&m.length<2?`(?:/${P})`:"/"+P),A&&(P+="?"),u+=P,b+=20,A&&(b+=-8),E&&(b+=-20),O===".*"&&(b+=-50)}h.push(b)}i.push(h)}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 p(m){const h=m.match(c),y={};if(!h)return null;for(let x=1;x<h.length;x++){const b=h[x]||"",T=f[x-1];y[T.name]=b&&T.repeatable?b.split("/"):b}return y}function d(m){let h="",y=!1;for(const x of s){(!y||!h.endsWith("/"))&&(h+="/"),y=!1;for(const b of x)if(b.type===0)h+=b.value;else if(b.type===1){const{value:T,repeatable:E,optional:A}=b,I=T in m?m[T]:"";if(Tt(I)&&!E)throw new Error(`Provided param "${T}" is an array but it is not repeatable (* or + modifiers)`);const O=Tt(I)?I.join("/"):I;if(!O)if(A)x.length<2&&(h.endsWith("/")?h=h.slice(0,-1):y=!0);else throw new Error(`Missing required param "${T}"`);h+=O}}return h||"/"}return{re:c,score:i,keys:f,parse:p,stringify:d}}function iy(s,r){let n=0;for(;n<s.length&&n<r.length;){const i=r[n]-s[n];if(i)return i;n++}return s.length<r.length?s.length===1&&s[0]===80?-1:1:s.length>r.length?r.length===1&&r[0]===80?1:-1:0}function sy(s,r){let n=0;const i=s.score,u=r.score;for(;n<i.length&&n<u.length;){const f=iy(i[n],u[n]);if(f)return f;n++}if(Math.abs(u.length-i.length)===1){if(tf(i))return 1;if(tf(u))return-1}return u.length-i.length}function tf(s){const r=s[s.length-1];return s.length>0&&r[r.length-1]<0}const ay={type:0,value:""},uy=/[a-zA-Z0-9_]/;function fy(s){if(!s)return[[]];if(s==="/")return[[ay]];if(!s.startsWith("/"))throw new Error(`Invalid path "${s}"`);function r(b){throw new Error(`ERR (${n})/"${m}": ${b}`)}let n=0,i=n;const u=[];let f;function c(){f&&u.push(f),f=[]}let p=0,d,m="",h="";function y(){m&&(n===0?f.push({type:0,value:m}):n===1||n===2||n===3?(f.length>1&&(d==="*"||d==="+")&&r(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),f.push({type:1,value:m,regexp:h,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):r("Invalid state to consume buffer"),m="")}function x(){m+=d}for(;p<s.length;){if(d=s[p++],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:uy.test(d)?x():(y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&p--);break;case 2:d===")"?h[h.length-1]=="\\"?h=h.slice(0,-1)+d:n=3:h+=d;break;case 3:y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&p--,h="";break;default:r("Unknown state");break}}return n===2&&r(`Unfinished custom RegExp for param "${m}"`),y(),c(),u}function cy(s,r,n){const i=oy(fy(s.path),n),u=Se(i,{record:s,parent:r,children:[],alias:[]});return r&&!u.record.aliasOf==!r.record.aliasOf&&r.children.push(u),u}function ly(s,r){const n=[],i=new Map;r=of({strict:!1,end:!0,sensitive:!1},r);function u(h){return i.get(h)}function f(h,y,x){const b=!x,T=dy(h);T.aliasOf=x&&x.record;const E=of(r,h),A=[T];if("alias"in h){const P=typeof h.alias=="string"?[h.alias]:h.alias;for(const N of P)A.push(Se({},T,{components:x?x.record.components:T.components,path:N,aliasOf:x?x.record:T}))}let I,O;for(const P of A){const{path:N}=P;if(y&&N[0]!=="/"){const V=y.record.path,G=V[V.length-1]==="/"?"":"/";P.path=y.record.path+(N&&G+N)}if(I=cy(P,y,E),x?x.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),b&&h.name&&!rf(I)&&c(h.name)),T.children){const V=T.children;for(let G=0;G<V.length;G++)f(V[G],I,x&&x.children[G])}x=x||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{c(O)}:ar}function c(h){if(Jf(h)){const y=i.get(h);y&&(i.delete(h),n.splice(n.indexOf(y),1),y.children.forEach(c),y.alias.forEach(c))}else{const y=n.indexOf(h);y>-1&&(n.splice(y,1),h.record.name&&i.delete(h.record.name),h.children.forEach(c),h.alias.forEach(c))}}function p(){return n}function d(h){let y=0;for(;y<n.length&&sy(h,n[y])>=0&&(h.record.path!==n[y].record.path||!_f(h,n[y]));)y++;n.splice(y,0,h),h.record.name&&!rf(h)&&i.set(h.record.name,h)}function m(h,y){let x,b={},T,E;if("name"in h&&h.name){if(x=i.get(h.name),!x)throw Pn(1,{location:h});E=x.record.name,b=Se(nf(y.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),h.params&&nf(h.params,x.keys.map(O=>O.name))),T=x.stringify(b)}else if(h.path!=null)T=h.path,x=n.find(O=>O.re.test(T)),x&&(b=x.parse(T),E=x.record.name);else{if(x=y.name?i.get(y.name):n.find(O=>O.re.test(y.path)),!x)throw Pn(1,{location:h,currentLocation:y});E=x.record.name,b=Se({},y.params,h.params),T=x.stringify(b)}const A=[];let I=x;for(;I;)A.unshift(I.record),I=I.parent;return{name:E,path:T,params:b,matched:A,meta:py(A)}}return s.forEach(h=>f(h)),{addRoute:f,resolve:m,removeRoute:c,getRoutes:p,getRecordMatcher:u}}function nf(s,r){const n={};for(const i of r)i in s&&(n[i]=s[i]);return n}function dy(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:hy(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 hy(s){const r={},n=s.props||!1;if("component"in s)r.default=n;else for(const i in s.components)r[i]=typeof n=="object"?n[i]:n;return r}function rf(s){for(;s;){if(s.record.aliasOf)return!0;s=s.parent}return!1}function py(s){return s.reduce((r,n)=>Se(r,n.meta),{})}function of(s,r){const n={};for(const i in s)n[i]=i in r?r[i]:s[i];return n}function _f(s,r){return r.children.some(n=>n===s||_f(s,n))}function gy(s){const r={};if(s===""||s==="?")return r;const i=(s[0]==="?"?s.slice(1):s).split("&");for(let u=0;u<i.length;++u){const f=i[u].replace(kf," "),c=f.indexOf("="),p=fr(c<0?f:f.slice(0,c)),d=c<0?null:fr(f.slice(c+1));if(p in r){let m=r[p];Tt(m)||(m=r[p]=[m]),m.push(d)}else r[p]=d}return r}function sf(s){let r="";for(let n in s){const i=s[n];if(n=F0(n),i==null){i!==void 0&&(r+=(r.length?"&":"")+n);continue}(Tt(i)?i.map(f=>f&&ji(f)):[i&&ji(i)]).forEach(f=>{f!==void 0&&(r+=(r.length?"&":"")+n,f!=null&&(r+="="+f))})}return r}function vy(s){const r={};for(const n in s){const i=s[n];i!==void 0&&(r[n]=Tt(i)?i.map(u=>u==null?null:""+u):i==null?i:""+i)}return r}const my=Symbol(""),af=Symbol(""),es=Symbol(""),qf=Symbol(""),Yi=Symbol("");function qn(){let s=[];function r(i){return s.push(i),()=>{const u=s.indexOf(i);u>-1&&s.splice(u,1)}}function n(){s=[]}return{add:r,list:()=>s.slice(),reset:n}}function qt(s,r,n,i,u,f=c=>c()){const c=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((p,d)=>{const m=x=>{x===!1?d(Pn(4,{from:n,to:r})):x instanceof Error?d(x):ty(x)?d(Pn(2,{from:r,to:x})):(c&&i.enterCallbacks[u]===c&&typeof x=="function"&&c.push(x),p())},h=f(()=>s.call(i&&i.instances[u],r,n,m));let y=Promise.resolve(h);s.length<3&&(y=y.then(m)),y.catch(x=>d(x))})}function $i(s,r,n,i,u=f=>f()){const f=[];for(const c of s)for(const p in c.components){let d=c.components[p];if(!(r!=="beforeRouteEnter"&&!c.instances[p]))if(yy(d)){const h=(d.__vccOpts||d)[r];h&&f.push(qt(h,n,i,c,p,u))}else{let m=d();f.push(()=>m.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${p}" at "${c.path}"`));const y=T0(h)?h.default:h;c.components[p]=y;const b=(y.__vccOpts||y)[r];return b&&qt(b,n,i,c,p,u)()}))}}return f}function yy(s){return typeof s=="object"||"displayName"in s||"props"in s||"__vccOpts"in s}function uf(s){const r=Lt(es),n=Lt(qf),i=Ce(()=>{const d=ln(s.to);return r.resolve(d)}),u=Ce(()=>{const{matched:d}=i.value,{length:m}=d,h=d[m-1],y=n.matched;if(!h||!y.length)return-1;const x=y.findIndex(Cn.bind(null,h));if(x>-1)return x;const b=ff(d[m-2]);return m>1&&ff(h)===b&&y[y.length-1].path!==b?y.findIndex(Cn.bind(null,d[m-2])):x}),f=Ce(()=>u.value>-1&&Ey(n.params,i.value.params)),c=Ce(()=>u.value>-1&&u.value===n.matched.length-1&&Zf(n.params,i.value.params));function p(d={}){return by(d)?r[ln(s.replace)?"replace":"push"](ln(s.to)).catch(ar):Promise.resolve()}return{route:i,href:Ce(()=>i.value.href),isActive:f,isExactActive:c,navigate:p}}const xy=If({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:uf,setup(s,{slots:r}){const n=Gt(uf(s)),{options:i}=Lt(es),u=Ce(()=>({[cf(s.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[cf(s.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const f=r.default&&r.default(n);return s.custom?f:Cf("a",{"aria-current":n.isExactActive?s.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:u.value},f)}}}),Sy=xy;function by(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 r=s.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return s.preventDefault&&s.preventDefault(),!0}}function Ey(s,r){for(const n in r){const i=r[n],u=s[n];if(typeof i=="string"){if(i!==u)return!1}else if(!Tt(u)||u.length!==i.length||i.some((f,c)=>f!==u[c]))return!1}return!0}function ff(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const cf=(s,r,n)=>s??r??n,Ly=If({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(s,{attrs:r,slots:n}){const i=Lt(Yi),u=Ce(()=>s.route||i.value),f=Lt(af,0),c=Ce(()=>{let m=ln(f);const{matched:h}=u.value;let y;for(;(y=h[m])&&!y.components;)m++;return m}),p=Ce(()=>u.value.matched[c.value]);ir(af,Ce(()=>c.value+1)),ir(my,p),ir(Yi,u);const d=so();return Qi(()=>[d.value,p.value,s.name],([m,h,y],[x,b,T])=>{h&&(h.instances[y]=m,b&&b!==h&&m&&m===x&&(h.leaveGuards.size||(h.leaveGuards=b.leaveGuards),h.updateGuards.size||(h.updateGuards=b.updateGuards))),m&&h&&(!b||!Cn(h,b)||!x)&&(h.enterCallbacks[y]||[]).forEach(E=>E(m))},{flush:"post"}),()=>{const m=u.value,h=s.name,y=p.value,x=y&&y.components[h];if(!x)return lf(n.default,{Component:x,route:m});const b=y.props[h],T=b?b===!0?m.params:typeof b=="function"?b(m):b:null,A=Cf(x,Se({},T,r,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(y.instances[h]=null)},ref:d}));return lf(n.default,{Component:A,route:m})||A}}});function lf(s,r){if(!s)return null;const n=s(r);return n.length===1?n[0]:n}const Ty=Ly;function Ay(s){const r=ly(s.routes,s),n=s.parseQuery||gy,i=s.stringifyQuery||sf,u=s.history,f=qn(),c=qn(),p=qn(),d=or(_t);let m=_t;In&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=Wi.bind(null,D=>""+D),y=Wi.bind(null,W0),x=Wi.bind(null,fr);function b(D,X){let j,_;return Jf(D)?(j=r.getRecordMatcher(D),_=X):_=D,r.addRoute(_,j)}function T(D){const X=r.getRecordMatcher(D);X&&r.removeRoute(X)}function E(){return r.getRoutes().map(D=>D.record)}function A(D){return!!r.getRecordMatcher(D)}function I(D,X){if(X=Se({},X||d.value),typeof D=="string"){const ee=Ni(n,D,X.path),we=r.resolve({path:ee.path},X),en=u.createHref(ee.fullPath);return Se(ee,we,{params:x(we.params),hash:fr(ee.hash),redirectedFrom:void 0,href:en})}let j;if(D.path!=null)j=Se({},D,{path:Ni(n,D.path,X.path).path});else{const ee=Se({},D.params);for(const we in ee)ee[we]==null&&delete ee[we];j=Se({},D,{params:y(ee)}),X.params=y(X.params)}const _=r.resolve(j,X),ge=D.hash||"";_.params=h(x(_.params));const Ae=G0(i,Se({},D,{hash:H0(ge),path:_.path})),ce=u.createHref(Ae);return Se({fullPath:Ae,hash:ge,query:i===sf?vy(D.query):D.query||{}},_,{redirectedFrom:void 0,href:ce})}function O(D){return typeof D=="string"?Ni(n,D,d.value.path):Se({},D)}function P(D,X){if(m!==D)return Pn(8,{from:X,to:D})}function N(D){return B(D)}function V(D){return N(Se(O(D),{replace:!0}))}function G(D){const X=D.matched[D.matched.length-1];if(X&&X.redirect){const{redirect:j}=X;let _=typeof j=="function"?j(D):j;return typeof _=="string"&&(_=_.includes("?")||_.includes("#")?_=O(_):{path:_},_.params={}),Se({query:D.query,hash:D.hash,params:_.path!=null?{}:D.params},_)}}function B(D,X){const j=m=I(D),_=d.value,ge=D.state,Ae=D.force,ce=D.replace===!0,ee=G(j);if(ee)return B(Se(O(ee),{state:typeof ee=="object"?Se({},ge,ee.state):ge,force:Ae,replace:ce}),X||j);const we=j;we.redirectedFrom=X;let en;return!Ae&&U0(i,_,j)&&(en=Pn(16,{to:we,from:_}),Ee(_,_,!0,!1)),(en?Promise.resolve(en):K(we,_)).catch(Oe=>$t(Oe)?$t(Oe,2)?Oe:pe(Oe):fe(Oe,we,_)).then(Oe=>{if(Oe){if($t(Oe,2))return B(Se({replace:ce},O(Oe.to),{state:typeof Oe.to=="object"?Se({},ge,Oe.to.state):ge,force:Ae}),X||we)}else Oe=Z(we,_,!0,ce,ge);return k(we,_,Oe),Oe})}function W(D,X){const j=P(D,X);return j?Promise.reject(j):Promise.resolve()}function $(D){const X=et.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(D):D()}function K(D,X){let j;const[_,ge,Ae]=wy(D,X);j=$i(_.reverse(),"beforeRouteLeave",D,X);for(const ee of _)ee.leaveGuards.forEach(we=>{j.push(qt(we,D,X))});const ce=W.bind(null,D,X);return j.push(ce),tt(j).then(()=>{j=[];for(const ee of f.list())j.push(qt(ee,D,X));return j.push(ce),tt(j)}).then(()=>{j=$i(ge,"beforeRouteUpdate",D,X);for(const ee of ge)ee.updateGuards.forEach(we=>{j.push(qt(we,D,X))});return j.push(ce),tt(j)}).then(()=>{j=[];for(const ee of Ae)if(ee.beforeEnter)if(Tt(ee.beforeEnter))for(const we of ee.beforeEnter)j.push(qt(we,D,X));else j.push(qt(ee.beforeEnter,D,X));return j.push(ce),tt(j)}).then(()=>(D.matched.forEach(ee=>ee.enterCallbacks={}),j=$i(Ae,"beforeRouteEnter",D,X,$),j.push(ce),tt(j))).then(()=>{j=[];for(const ee of c.list())j.push(qt(ee,D,X));return j.push(ce),tt(j)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function k(D,X,j){p.list().forEach(_=>$(()=>_(D,X,j)))}function Z(D,X,j,_,ge){const Ae=P(D,X);if(Ae)return Ae;const ce=X===_t,ee=In?history.state:{};j&&(_||ce?u.replace(D.fullPath,Se({scroll:ce&&ee&&ee.scroll},ge)):u.push(D.fullPath,ge)),d.value=D,Ee(D,X,j,ce),pe()}let Y;function me(){Y||(Y=u.listen((D,X,j)=>{const _=I(D),ge=G(_);if(ge){B(Se(ge,{replace:!0}),_).catch(ar);return}m=_;const Ae=d.value;In&&X0(Qu(Ae.fullPath,j.delta),po()),K(_,Ae).catch(ce=>$t(ce,12)?ce:$t(ce,2)?(B(ce.to,_).then(ee=>{$t(ee,20)&&!j.delta&&j.type===cr.pop&&u.go(-1,!1)}).catch(ar),Promise.reject()):(j.delta&&u.go(-j.delta,!1),fe(ce,_,Ae))).then(ce=>{ce=ce||Z(_,Ae,!1),ce&&(j.delta&&!$t(ce,8)?u.go(-j.delta,!1):j.type===cr.pop&&$t(ce,20)&&u.go(-1,!1)),k(_,Ae,ce)}).catch(ar)}))}let be=qn(),De=qn(),ue;function fe(D,X,j){pe(D);const _=De.list();return _.length?_.forEach(ge=>ge(D,X,j)):console.error(D),Promise.reject(D)}function Be(){return ue&&d.value!==_t?Promise.resolve():new Promise((D,X)=>{be.add([D,X])})}function pe(D){return ue||(ue=!D,me(),be.list().forEach(([X,j])=>D?j(D):X()),be.reset()),D}function Ee(D,X,j,_){const{scrollBehavior:ge}=s;if(!In||!ge)return Promise.resolve();const Ae=!j&&J0(Qu(D.fullPath,0))||(_||!j)&&history.state&&history.state.scroll||null;return Mn().then(()=>ge(D,X,Ae)).then(ce=>ce&&Z0(ce)).catch(ce=>fe(ce,D,X))}const Xe=D=>u.go(D);let Ve;const et=new Set,At={currentRoute:d,listening:!0,addRoute:b,removeRoute:T,hasRoute:A,getRoutes:E,resolve:I,options:s,push:N,replace:V,go:Xe,back:()=>Xe(-1),forward:()=>Xe(1),beforeEach:f.add,beforeResolve:c.add,afterEach:p.add,onError:De.add,isReady:Be,install(D){const X=this;D.component("RouterLink",Sy),D.component("RouterView",Ty),D.config.globalProperties.$router=X,Object.defineProperty(D.config.globalProperties,"$route",{enumerable:!0,get:()=>ln(d)}),In&&!Ve&&d.value===_t&&(Ve=!0,N(u.location).catch(ge=>{}));const j={};for(const ge in _t)Object.defineProperty(j,ge,{get:()=>d.value[ge],enumerable:!0});D.provide(es,X),D.provide(qf,q1(j)),D.provide(Yi,d);const _=D.unmount;et.add(D),D.unmount=function(){et.delete(D),et.size<1&&(m=_t,Y&&Y(),Y=null,d.value=_t,Ve=!1,ue=!1),_()}}};function tt(D){return D.reduce((X,j)=>X.then(()=>$(j)),Promise.resolve())}return At}function wy(s,r){const n=[],i=[],u=[],f=Math.max(r.matched.length,s.matched.length);for(let c=0;c<f;c++){const p=r.matched[c];p&&(s.matched.find(m=>Cn(m,p))?i.push(p):n.push(p));const d=s.matched[c];d&&(r.matched.find(m=>Cn(m,d))||u.push(d))}return[n,i,u]}const Ry=()=>It(()=>import("./admin-2BTkfSQA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),Oy=()=>It(()=>import("./browser-BA-AwUn-.js"),__vite__mapDeps([21,1,2,22,23,7,8,24,25,9,10,26,3,4,5,6,11,12,13,14,15,27,28,18,19,29,30,31,32,33,34,35,36,37])),Iy=()=>It(()=>import("./http-error-DaHEsKbT.js"),__vite__mapDeps([38,1,2,4,5,6,7,8,9,10,11,12,13,39])),Cy=()=>It(()=>import("./reader-L85y7IXD.js").then(s=>s.r),__vite__mapDeps([40,1,2,14,27,28,6,7,8,9,10,11,25,18,19,29,30,3,4,5,12,13,15,31,16,17,41,42,43,44,24,26,45])),Py=()=>It(()=>import("./flag-tab-CagMLGSE.js"),__vite__mapDeps([46,1,2,22,23,24,25,9,10,26,47])),My=()=>It(()=>import("./user-tab-BKkxa2WL.js"),__vite__mapDeps([48,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,24,26,51,52,5,12])),Dy=()=>It(()=>import("./group-tab-BTAjhv32.js"),__vite__mapDeps([53,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,43,44,54])),Hy=()=>It(()=>import("./library-tab-Cud4639b.js"),__vite__mapDeps([55,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,34,36,24,26,51,52,41,42,56])),Fy=()=>It(()=>import("./task-tab-OPhBm-O2.js"),__vite__mapDeps([57,1,2,32,7,8,33,58])),By=()=>It(()=>import("./stats-tab-CQa3-W05.js"),__vite__mapDeps([59,1,2,32,7,8,33,14,30,22,23,60])),Wy={name:"browser",params:window.CODEX.LAST_ROUTE||Vf.route},Ny=[{name:"home",path:"/",redirect:Wy},{name:"reader",path:"/c/:pk/:page",component:Cy},{name:"browser",path:"/:group/:pks/:page",component:Oy},{name:"admin",path:"/admin",component:Ry,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:My},{name:"admin-groups",path:"groups",component:Dy},{name:"admin-libraries",path:"libraries",component:Hy},{name:"admin-flags",path:"flags",component:Py},{name:"admin-tasks",path:"tasks",component:Fy},{name:"admin-stats",path:"stats",component:By}]},{name:"error",path:"/error/:code",component:Iy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],vt=new Ay({history:ey(window.CODEX.APP_PATH),routes:Ny});var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ec(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function ux(s){if(s.__esModule)return s;var r=s.default;if(typeof r=="function"){var n=function i(){return this instanceof i?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};n.prototype=r.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 fo={exports:{}};/**
6
+ */const In=typeof document<"u";function T0(s){return s.__esModule||s[Symbol.toStringTag]==="Module"}const Se=Object.assign;function Wi(s,r){const n={};for(const i in r){const u=r[i];n[i]=Tt(u)?u.map(s):s(u)}return n}const ar=()=>{},Tt=Array.isArray,Kf=/#/g,A0=/&/g,w0=/\//g,R0=/=/g,O0=/\?/g,kf=/\+/g,I0=/%5B/g,C0=/%5D/g,jf=/%5E/g,P0=/%60/g,zf=/%7B/g,M0=/%7C/g,Yf=/%7D/g,D0=/%20/g;function qi(s){return encodeURI(""+s).replace(M0,"|").replace(I0,"[").replace(C0,"]")}function H0(s){return qi(s).replace(zf,"{").replace(Yf,"}").replace(jf,"^")}function ji(s){return qi(s).replace(kf,"%2B").replace(D0,"+").replace(Kf,"%23").replace(A0,"%26").replace(P0,"`").replace(zf,"{").replace(Yf,"}").replace(jf,"^")}function F0(s){return ji(s).replace(R0,"%3D")}function B0(s){return qi(s).replace(Kf,"%23").replace(O0,"%3F")}function W0(s){return s==null?"":B0(s).replace(w0,"%2F")}function fr(s){try{return decodeURIComponent(""+s)}catch{}return""+s}const N0=/\/$/,$0=s=>s.replace(N0,"");function Ni(s,r,n="/"){let i,u={},f="",c="";const p=r.indexOf("#");let d=r.indexOf("?");return p<d&&p>=0&&(d=-1),d>-1&&(i=r.slice(0,d),f=r.slice(d+1,p>-1?p:r.length),u=s(f)),p>-1&&(i=i||r.slice(0,p),c=r.slice(p,r.length)),i=K0(i??r,n),{fullPath:i+(f&&"?")+f+c,path:i,query:u,hash:fr(c)}}function G0(s,r){const n=r.query?s(r.query):"";return r.path+(n&&"?")+n+(r.hash||"")}function Xu(s,r){return!r||!s.toLowerCase().startsWith(r.toLowerCase())?s:s.slice(r.length)||"/"}function U0(s,r,n){const i=r.matched.length-1,u=n.matched.length-1;return i>-1&&i===u&&Cn(r.matched[i],n.matched[u])&&Zf(r.params,n.params)&&s(r.query)===s(n.query)&&r.hash===n.hash}function Cn(s,r){return(s.aliasOf||s)===(r.aliasOf||r)}function Zf(s,r){if(Object.keys(s).length!==Object.keys(r).length)return!1;for(const n in s)if(!V0(s[n],r[n]))return!1;return!0}function V0(s,r){return Tt(s)?Ju(s,r):Tt(r)?Ju(r,s):s===r}function Ju(s,r){return Tt(r)?s.length===r.length&&s.every((n,i)=>n===r[i]):s.length===1&&s[0]===r}function K0(s,r){if(s.startsWith("/"))return s;if(!s)return r;const n=r.split("/"),i=s.split("/"),u=i[i.length-1];(u===".."||u===".")&&i.push("");let f=n.length-1,c,p;for(c=0;c<i.length;c++)if(p=i[c],p!==".")if(p==="..")f>1&&f--;else break;return n.slice(0,f).join("/")+"/"+i.slice(c).join("/")}var cr;(function(s){s.pop="pop",s.push="push"})(cr||(cr={}));var ur;(function(s){s.back="back",s.forward="forward",s.unknown=""})(ur||(ur={}));function k0(s){if(!s)if(In){const r=document.querySelector("base");s=r&&r.getAttribute("href")||"/",s=s.replace(/^\w+:\/\/[^\/]+/,"")}else s="/";return s[0]!=="/"&&s[0]!=="#"&&(s="/"+s),$0(s)}const j0=/^[^#]+#/;function z0(s,r){return s.replace(j0,"#")+r}function Y0(s,r){const n=document.documentElement.getBoundingClientRect(),i=s.getBoundingClientRect();return{behavior:r.behavior,left:i.left-n.left-(r.left||0),top:i.top-n.top-(r.top||0)}}const po=()=>({left:window.scrollX,top:window.scrollY});function Z0(s){let r;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;r=Y0(u,s)}else r=s;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function Qu(s,r){return(history.state?history.state.position-r:-1)+s}const zi=new Map;function X0(s,r){zi.set(s,r)}function J0(s){const r=zi.get(s);return zi.delete(s),r}let Q0=()=>location.protocol+"//"+location.host;function Xf(s,r){const{pathname:n,search:i,hash:u}=r,f=s.indexOf("#");if(f>-1){let p=u.includes(s.slice(f))?s.slice(f).length:1,d=u.slice(p);return d[0]!=="/"&&(d="/"+d),Xu(d,"")}return Xu(n,s)+i+u}function _0(s,r,n,i){let u=[],f=[],c=null;const p=({state:x})=>{const b=Xf(s,location),T=n.value,E=r.value;let A=0;if(x){if(n.value=b,r.value=x,c&&c===T){c=null;return}A=E?x.position-E.position:0}else i(b);u.forEach(I=>{I(n.value,T,{delta:A,type:cr.pop,direction:A?A>0?ur.forward:ur.back:ur.unknown})})};function d(){c=n.value}function m(x){u.push(x);const b=()=>{const T=u.indexOf(x);T>-1&&u.splice(T,1)};return f.push(b),b}function h(){const{history:x}=window;x.state&&x.replaceState(Se({},x.state,{scroll:po()}),"")}function y(){for(const x of f)x();f=[],window.removeEventListener("popstate",p),window.removeEventListener("beforeunload",h)}return window.addEventListener("popstate",p),window.addEventListener("beforeunload",h,{passive:!0}),{pauseListeners:d,listen:m,destroy:y}}function _u(s,r,n,i=!1,u=!1){return{back:s,current:r,forward:n,replaced:i,position:window.history.length,scroll:u?po():null}}function q0(s){const{history:r,location:n}=window,i={value:Xf(s,n)},u={value:r.state};u.value||f(i.value,{back:null,current:i.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function f(d,m,h){const y=s.indexOf("#"),x=y>-1?(n.host&&document.querySelector("base")?s:s.slice(y))+d:Q0()+s+d;try{r[h?"replaceState":"pushState"](m,"",x),u.value=m}catch(b){console.error(b),n[h?"replace":"assign"](x)}}function c(d,m){const h=Se({},r.state,_u(u.value.back,d,u.value.forward,!0),m,{position:u.value.position});f(d,h,!0),i.value=d}function p(d,m){const h=Se({},u.value,r.state,{forward:d,scroll:po()});f(h.current,h,!0);const y=Se({},_u(i.value,d,null),{position:h.position+1},m);f(d,y,!1),i.value=d}return{location:i,state:u,push:p,replace:c}}function ey(s){s=k0(s);const r=q0(s),n=_0(s,r.state,r.location,r.replace);function i(f,c=!0){c||n.pauseListeners(),history.go(f)}const u=Se({location:"",base:s,go:i,createHref:z0.bind(null,s)},r,n);return Object.defineProperty(u,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(u,"state",{enumerable:!0,get:()=>r.state.value}),u}function ty(s){return typeof s=="string"||s&&typeof s=="object"}function Jf(s){return typeof s=="string"||typeof s=="symbol"}const _t={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Qf=Symbol("");var qu;(function(s){s[s.aborted=4]="aborted",s[s.cancelled=8]="cancelled",s[s.duplicated=16]="duplicated"})(qu||(qu={}));function Pn(s,r){return Se(new Error,{type:s,[Qf]:!0},r)}function $t(s,r){return s instanceof Error&&Qf in s&&(r==null||!!(s.type&r))}const ef="[^/]+?",ny={sensitive:!1,strict:!1,start:!0,end:!0},ry=/[.+*?^${}()[\]/\\]/g;function oy(s,r){const n=Se({},ny,r),i=[];let u=n.start?"^":"";const f=[];for(const m of s){const h=m.length?[]:[90];n.strict&&!m.length&&(u+="/");for(let y=0;y<m.length;y++){const x=m[y];let b=40+(n.sensitive?.25:0);if(x.type===0)y||(u+="/"),u+=x.value.replace(ry,"\\$&"),b+=40;else if(x.type===1){const{value:T,repeatable:E,optional:A,regexp:I}=x;f.push({name:T,repeatable:E,optional:A});const O=I||ef;if(O!==ef){b+=10;try{new RegExp(`(${O})`)}catch(N){throw new Error(`Invalid custom RegExp for param "${T}" (${O}): `+N.message)}}let P=E?`((?:${O})(?:/(?:${O}))*)`:`(${O})`;y||(P=A&&m.length<2?`(?:/${P})`:"/"+P),A&&(P+="?"),u+=P,b+=20,A&&(b+=-8),E&&(b+=-20),O===".*"&&(b+=-50)}h.push(b)}i.push(h)}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 p(m){const h=m.match(c),y={};if(!h)return null;for(let x=1;x<h.length;x++){const b=h[x]||"",T=f[x-1];y[T.name]=b&&T.repeatable?b.split("/"):b}return y}function d(m){let h="",y=!1;for(const x of s){(!y||!h.endsWith("/"))&&(h+="/"),y=!1;for(const b of x)if(b.type===0)h+=b.value;else if(b.type===1){const{value:T,repeatable:E,optional:A}=b,I=T in m?m[T]:"";if(Tt(I)&&!E)throw new Error(`Provided param "${T}" is an array but it is not repeatable (* or + modifiers)`);const O=Tt(I)?I.join("/"):I;if(!O)if(A)x.length<2&&(h.endsWith("/")?h=h.slice(0,-1):y=!0);else throw new Error(`Missing required param "${T}"`);h+=O}}return h||"/"}return{re:c,score:i,keys:f,parse:p,stringify:d}}function iy(s,r){let n=0;for(;n<s.length&&n<r.length;){const i=r[n]-s[n];if(i)return i;n++}return s.length<r.length?s.length===1&&s[0]===80?-1:1:s.length>r.length?r.length===1&&r[0]===80?1:-1:0}function sy(s,r){let n=0;const i=s.score,u=r.score;for(;n<i.length&&n<u.length;){const f=iy(i[n],u[n]);if(f)return f;n++}if(Math.abs(u.length-i.length)===1){if(tf(i))return 1;if(tf(u))return-1}return u.length-i.length}function tf(s){const r=s[s.length-1];return s.length>0&&r[r.length-1]<0}const ay={type:0,value:""},uy=/[a-zA-Z0-9_]/;function fy(s){if(!s)return[[]];if(s==="/")return[[ay]];if(!s.startsWith("/"))throw new Error(`Invalid path "${s}"`);function r(b){throw new Error(`ERR (${n})/"${m}": ${b}`)}let n=0,i=n;const u=[];let f;function c(){f&&u.push(f),f=[]}let p=0,d,m="",h="";function y(){m&&(n===0?f.push({type:0,value:m}):n===1||n===2||n===3?(f.length>1&&(d==="*"||d==="+")&&r(`A repeatable param (${m}) must be alone in its segment. eg: '/:ids+.`),f.push({type:1,value:m,regexp:h,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):r("Invalid state to consume buffer"),m="")}function x(){m+=d}for(;p<s.length;){if(d=s[p++],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:uy.test(d)?x():(y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&p--);break;case 2:d===")"?h[h.length-1]=="\\"?h=h.slice(0,-1)+d:n=3:h+=d;break;case 3:y(),n=0,d!=="*"&&d!=="?"&&d!=="+"&&p--,h="";break;default:r("Unknown state");break}}return n===2&&r(`Unfinished custom RegExp for param "${m}"`),y(),c(),u}function cy(s,r,n){const i=oy(fy(s.path),n),u=Se(i,{record:s,parent:r,children:[],alias:[]});return r&&!u.record.aliasOf==!r.record.aliasOf&&r.children.push(u),u}function ly(s,r){const n=[],i=new Map;r=of({strict:!1,end:!0,sensitive:!1},r);function u(h){return i.get(h)}function f(h,y,x){const b=!x,T=dy(h);T.aliasOf=x&&x.record;const E=of(r,h),A=[T];if("alias"in h){const P=typeof h.alias=="string"?[h.alias]:h.alias;for(const N of P)A.push(Se({},T,{components:x?x.record.components:T.components,path:N,aliasOf:x?x.record:T}))}let I,O;for(const P of A){const{path:N}=P;if(y&&N[0]!=="/"){const V=y.record.path,G=V[V.length-1]==="/"?"":"/";P.path=y.record.path+(N&&G+N)}if(I=cy(P,y,E),x?x.alias.push(I):(O=O||I,O!==I&&O.alias.push(I),b&&h.name&&!rf(I)&&c(h.name)),T.children){const V=T.children;for(let G=0;G<V.length;G++)f(V[G],I,x&&x.children[G])}x=x||I,(I.record.components&&Object.keys(I.record.components).length||I.record.name||I.record.redirect)&&d(I)}return O?()=>{c(O)}:ar}function c(h){if(Jf(h)){const y=i.get(h);y&&(i.delete(h),n.splice(n.indexOf(y),1),y.children.forEach(c),y.alias.forEach(c))}else{const y=n.indexOf(h);y>-1&&(n.splice(y,1),h.record.name&&i.delete(h.record.name),h.children.forEach(c),h.alias.forEach(c))}}function p(){return n}function d(h){let y=0;for(;y<n.length&&sy(h,n[y])>=0&&(h.record.path!==n[y].record.path||!_f(h,n[y]));)y++;n.splice(y,0,h),h.record.name&&!rf(h)&&i.set(h.record.name,h)}function m(h,y){let x,b={},T,E;if("name"in h&&h.name){if(x=i.get(h.name),!x)throw Pn(1,{location:h});E=x.record.name,b=Se(nf(y.params,x.keys.filter(O=>!O.optional).concat(x.parent?x.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),h.params&&nf(h.params,x.keys.map(O=>O.name))),T=x.stringify(b)}else if(h.path!=null)T=h.path,x=n.find(O=>O.re.test(T)),x&&(b=x.parse(T),E=x.record.name);else{if(x=y.name?i.get(y.name):n.find(O=>O.re.test(y.path)),!x)throw Pn(1,{location:h,currentLocation:y});E=x.record.name,b=Se({},y.params,h.params),T=x.stringify(b)}const A=[];let I=x;for(;I;)A.unshift(I.record),I=I.parent;return{name:E,path:T,params:b,matched:A,meta:py(A)}}return s.forEach(h=>f(h)),{addRoute:f,resolve:m,removeRoute:c,getRoutes:p,getRecordMatcher:u}}function nf(s,r){const n={};for(const i of r)i in s&&(n[i]=s[i]);return n}function dy(s){return{path:s.path,redirect:s.redirect,name:s.name,meta:s.meta||{},aliasOf:void 0,beforeEnter:s.beforeEnter,props:hy(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 hy(s){const r={},n=s.props||!1;if("component"in s)r.default=n;else for(const i in s.components)r[i]=typeof n=="object"?n[i]:n;return r}function rf(s){for(;s;){if(s.record.aliasOf)return!0;s=s.parent}return!1}function py(s){return s.reduce((r,n)=>Se(r,n.meta),{})}function of(s,r){const n={};for(const i in s)n[i]=i in r?r[i]:s[i];return n}function _f(s,r){return r.children.some(n=>n===s||_f(s,n))}function gy(s){const r={};if(s===""||s==="?")return r;const i=(s[0]==="?"?s.slice(1):s).split("&");for(let u=0;u<i.length;++u){const f=i[u].replace(kf," "),c=f.indexOf("="),p=fr(c<0?f:f.slice(0,c)),d=c<0?null:fr(f.slice(c+1));if(p in r){let m=r[p];Tt(m)||(m=r[p]=[m]),m.push(d)}else r[p]=d}return r}function sf(s){let r="";for(let n in s){const i=s[n];if(n=F0(n),i==null){i!==void 0&&(r+=(r.length?"&":"")+n);continue}(Tt(i)?i.map(f=>f&&ji(f)):[i&&ji(i)]).forEach(f=>{f!==void 0&&(r+=(r.length?"&":"")+n,f!=null&&(r+="="+f))})}return r}function vy(s){const r={};for(const n in s){const i=s[n];i!==void 0&&(r[n]=Tt(i)?i.map(u=>u==null?null:""+u):i==null?i:""+i)}return r}const my=Symbol(""),af=Symbol(""),es=Symbol(""),qf=Symbol(""),Yi=Symbol("");function qn(){let s=[];function r(i){return s.push(i),()=>{const u=s.indexOf(i);u>-1&&s.splice(u,1)}}function n(){s=[]}return{add:r,list:()=>s.slice(),reset:n}}function qt(s,r,n,i,u,f=c=>c()){const c=i&&(i.enterCallbacks[u]=i.enterCallbacks[u]||[]);return()=>new Promise((p,d)=>{const m=x=>{x===!1?d(Pn(4,{from:n,to:r})):x instanceof Error?d(x):ty(x)?d(Pn(2,{from:r,to:x})):(c&&i.enterCallbacks[u]===c&&typeof x=="function"&&c.push(x),p())},h=f(()=>s.call(i&&i.instances[u],r,n,m));let y=Promise.resolve(h);s.length<3&&(y=y.then(m)),y.catch(x=>d(x))})}function $i(s,r,n,i,u=f=>f()){const f=[];for(const c of s)for(const p in c.components){let d=c.components[p];if(!(r!=="beforeRouteEnter"&&!c.instances[p]))if(yy(d)){const h=(d.__vccOpts||d)[r];h&&f.push(qt(h,n,i,c,p,u))}else{let m=d();f.push(()=>m.then(h=>{if(!h)return Promise.reject(new Error(`Couldn't resolve component "${p}" at "${c.path}"`));const y=T0(h)?h.default:h;c.components[p]=y;const b=(y.__vccOpts||y)[r];return b&&qt(b,n,i,c,p,u)()}))}}return f}function yy(s){return typeof s=="object"||"displayName"in s||"props"in s||"__vccOpts"in s}function uf(s){const r=Lt(es),n=Lt(qf),i=Ce(()=>{const d=ln(s.to);return r.resolve(d)}),u=Ce(()=>{const{matched:d}=i.value,{length:m}=d,h=d[m-1],y=n.matched;if(!h||!y.length)return-1;const x=y.findIndex(Cn.bind(null,h));if(x>-1)return x;const b=ff(d[m-2]);return m>1&&ff(h)===b&&y[y.length-1].path!==b?y.findIndex(Cn.bind(null,d[m-2])):x}),f=Ce(()=>u.value>-1&&Ey(n.params,i.value.params)),c=Ce(()=>u.value>-1&&u.value===n.matched.length-1&&Zf(n.params,i.value.params));function p(d={}){return by(d)?r[ln(s.replace)?"replace":"push"](ln(s.to)).catch(ar):Promise.resolve()}return{route:i,href:Ce(()=>i.value.href),isActive:f,isExactActive:c,navigate:p}}const xy=If({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:uf,setup(s,{slots:r}){const n=Gt(uf(s)),{options:i}=Lt(es),u=Ce(()=>({[cf(s.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[cf(s.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const f=r.default&&r.default(n);return s.custom?f:Cf("a",{"aria-current":n.isExactActive?s.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:u.value},f)}}}),Sy=xy;function by(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 r=s.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return s.preventDefault&&s.preventDefault(),!0}}function Ey(s,r){for(const n in r){const i=r[n],u=s[n];if(typeof i=="string"){if(i!==u)return!1}else if(!Tt(u)||u.length!==i.length||i.some((f,c)=>f!==u[c]))return!1}return!0}function ff(s){return s?s.aliasOf?s.aliasOf.path:s.path:""}const cf=(s,r,n)=>s??r??n,Ly=If({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(s,{attrs:r,slots:n}){const i=Lt(Yi),u=Ce(()=>s.route||i.value),f=Lt(af,0),c=Ce(()=>{let m=ln(f);const{matched:h}=u.value;let y;for(;(y=h[m])&&!y.components;)m++;return m}),p=Ce(()=>u.value.matched[c.value]);ir(af,Ce(()=>c.value+1)),ir(my,p),ir(Yi,u);const d=so();return Qi(()=>[d.value,p.value,s.name],([m,h,y],[x,b,T])=>{h&&(h.instances[y]=m,b&&b!==h&&m&&m===x&&(h.leaveGuards.size||(h.leaveGuards=b.leaveGuards),h.updateGuards.size||(h.updateGuards=b.updateGuards))),m&&h&&(!b||!Cn(h,b)||!x)&&(h.enterCallbacks[y]||[]).forEach(E=>E(m))},{flush:"post"}),()=>{const m=u.value,h=s.name,y=p.value,x=y&&y.components[h];if(!x)return lf(n.default,{Component:x,route:m});const b=y.props[h],T=b?b===!0?m.params:typeof b=="function"?b(m):b:null,A=Cf(x,Se({},T,r,{onVnodeUnmounted:I=>{I.component.isUnmounted&&(y.instances[h]=null)},ref:d}));return lf(n.default,{Component:A,route:m})||A}}});function lf(s,r){if(!s)return null;const n=s(r);return n.length===1?n[0]:n}const Ty=Ly;function Ay(s){const r=ly(s.routes,s),n=s.parseQuery||gy,i=s.stringifyQuery||sf,u=s.history,f=qn(),c=qn(),p=qn(),d=or(_t);let m=_t;In&&s.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const h=Wi.bind(null,D=>""+D),y=Wi.bind(null,W0),x=Wi.bind(null,fr);function b(D,X){let j,_;return Jf(D)?(j=r.getRecordMatcher(D),_=X):_=D,r.addRoute(_,j)}function T(D){const X=r.getRecordMatcher(D);X&&r.removeRoute(X)}function E(){return r.getRoutes().map(D=>D.record)}function A(D){return!!r.getRecordMatcher(D)}function I(D,X){if(X=Se({},X||d.value),typeof D=="string"){const ee=Ni(n,D,X.path),we=r.resolve({path:ee.path},X),en=u.createHref(ee.fullPath);return Se(ee,we,{params:x(we.params),hash:fr(ee.hash),redirectedFrom:void 0,href:en})}let j;if(D.path!=null)j=Se({},D,{path:Ni(n,D.path,X.path).path});else{const ee=Se({},D.params);for(const we in ee)ee[we]==null&&delete ee[we];j=Se({},D,{params:y(ee)}),X.params=y(X.params)}const _=r.resolve(j,X),ge=D.hash||"";_.params=h(x(_.params));const Ae=G0(i,Se({},D,{hash:H0(ge),path:_.path})),ce=u.createHref(Ae);return Se({fullPath:Ae,hash:ge,query:i===sf?vy(D.query):D.query||{}},_,{redirectedFrom:void 0,href:ce})}function O(D){return typeof D=="string"?Ni(n,D,d.value.path):Se({},D)}function P(D,X){if(m!==D)return Pn(8,{from:X,to:D})}function N(D){return B(D)}function V(D){return N(Se(O(D),{replace:!0}))}function G(D){const X=D.matched[D.matched.length-1];if(X&&X.redirect){const{redirect:j}=X;let _=typeof j=="function"?j(D):j;return typeof _=="string"&&(_=_.includes("?")||_.includes("#")?_=O(_):{path:_},_.params={}),Se({query:D.query,hash:D.hash,params:_.path!=null?{}:D.params},_)}}function B(D,X){const j=m=I(D),_=d.value,ge=D.state,Ae=D.force,ce=D.replace===!0,ee=G(j);if(ee)return B(Se(O(ee),{state:typeof ee=="object"?Se({},ge,ee.state):ge,force:Ae,replace:ce}),X||j);const we=j;we.redirectedFrom=X;let en;return!Ae&&U0(i,_,j)&&(en=Pn(16,{to:we,from:_}),Ee(_,_,!0,!1)),(en?Promise.resolve(en):K(we,_)).catch(Oe=>$t(Oe)?$t(Oe,2)?Oe:pe(Oe):fe(Oe,we,_)).then(Oe=>{if(Oe){if($t(Oe,2))return B(Se({replace:ce},O(Oe.to),{state:typeof Oe.to=="object"?Se({},ge,Oe.to.state):ge,force:Ae}),X||we)}else Oe=Z(we,_,!0,ce,ge);return k(we,_,Oe),Oe})}function W(D,X){const j=P(D,X);return j?Promise.reject(j):Promise.resolve()}function $(D){const X=et.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(D):D()}function K(D,X){let j;const[_,ge,Ae]=wy(D,X);j=$i(_.reverse(),"beforeRouteLeave",D,X);for(const ee of _)ee.leaveGuards.forEach(we=>{j.push(qt(we,D,X))});const ce=W.bind(null,D,X);return j.push(ce),tt(j).then(()=>{j=[];for(const ee of f.list())j.push(qt(ee,D,X));return j.push(ce),tt(j)}).then(()=>{j=$i(ge,"beforeRouteUpdate",D,X);for(const ee of ge)ee.updateGuards.forEach(we=>{j.push(qt(we,D,X))});return j.push(ce),tt(j)}).then(()=>{j=[];for(const ee of Ae)if(ee.beforeEnter)if(Tt(ee.beforeEnter))for(const we of ee.beforeEnter)j.push(qt(we,D,X));else j.push(qt(ee.beforeEnter,D,X));return j.push(ce),tt(j)}).then(()=>(D.matched.forEach(ee=>ee.enterCallbacks={}),j=$i(Ae,"beforeRouteEnter",D,X,$),j.push(ce),tt(j))).then(()=>{j=[];for(const ee of c.list())j.push(qt(ee,D,X));return j.push(ce),tt(j)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function k(D,X,j){p.list().forEach(_=>$(()=>_(D,X,j)))}function Z(D,X,j,_,ge){const Ae=P(D,X);if(Ae)return Ae;const ce=X===_t,ee=In?history.state:{};j&&(_||ce?u.replace(D.fullPath,Se({scroll:ce&&ee&&ee.scroll},ge)):u.push(D.fullPath,ge)),d.value=D,Ee(D,X,j,ce),pe()}let Y;function me(){Y||(Y=u.listen((D,X,j)=>{const _=I(D),ge=G(_);if(ge){B(Se(ge,{replace:!0}),_).catch(ar);return}m=_;const Ae=d.value;In&&X0(Qu(Ae.fullPath,j.delta),po()),K(_,Ae).catch(ce=>$t(ce,12)?ce:$t(ce,2)?(B(ce.to,_).then(ee=>{$t(ee,20)&&!j.delta&&j.type===cr.pop&&u.go(-1,!1)}).catch(ar),Promise.reject()):(j.delta&&u.go(-j.delta,!1),fe(ce,_,Ae))).then(ce=>{ce=ce||Z(_,Ae,!1),ce&&(j.delta&&!$t(ce,8)?u.go(-j.delta,!1):j.type===cr.pop&&$t(ce,20)&&u.go(-1,!1)),k(_,Ae,ce)}).catch(ar)}))}let be=qn(),De=qn(),ue;function fe(D,X,j){pe(D);const _=De.list();return _.length?_.forEach(ge=>ge(D,X,j)):console.error(D),Promise.reject(D)}function Be(){return ue&&d.value!==_t?Promise.resolve():new Promise((D,X)=>{be.add([D,X])})}function pe(D){return ue||(ue=!D,me(),be.list().forEach(([X,j])=>D?j(D):X()),be.reset()),D}function Ee(D,X,j,_){const{scrollBehavior:ge}=s;if(!In||!ge)return Promise.resolve();const Ae=!j&&J0(Qu(D.fullPath,0))||(_||!j)&&history.state&&history.state.scroll||null;return Mn().then(()=>ge(D,X,Ae)).then(ce=>ce&&Z0(ce)).catch(ce=>fe(ce,D,X))}const Xe=D=>u.go(D);let Ve;const et=new Set,At={currentRoute:d,listening:!0,addRoute:b,removeRoute:T,hasRoute:A,getRoutes:E,resolve:I,options:s,push:N,replace:V,go:Xe,back:()=>Xe(-1),forward:()=>Xe(1),beforeEach:f.add,beforeResolve:c.add,afterEach:p.add,onError:De.add,isReady:Be,install(D){const X=this;D.component("RouterLink",Sy),D.component("RouterView",Ty),D.config.globalProperties.$router=X,Object.defineProperty(D.config.globalProperties,"$route",{enumerable:!0,get:()=>ln(d)}),In&&!Ve&&d.value===_t&&(Ve=!0,N(u.location).catch(ge=>{}));const j={};for(const ge in _t)Object.defineProperty(j,ge,{get:()=>d.value[ge],enumerable:!0});D.provide(es,X),D.provide(qf,q1(j)),D.provide(Yi,d);const _=D.unmount;et.add(D),D.unmount=function(){et.delete(D),et.size<1&&(m=_t,Y&&Y(),Y=null,d.value=_t,Ve=!1,ue=!1),_()}}};function tt(D){return D.reduce((X,j)=>X.then(()=>$(j)),Promise.resolve())}return At}function wy(s,r){const n=[],i=[],u=[],f=Math.max(r.matched.length,s.matched.length);for(let c=0;c<f;c++){const p=r.matched[c];p&&(s.matched.find(m=>Cn(m,p))?i.push(p):n.push(p));const d=s.matched[c];d&&(r.matched.find(m=>Cn(m,d))||u.push(d))}return[n,i,u]}const Ry=()=>It(()=>import("./admin-CWIp315V.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),Oy=()=>It(()=>import("./browser-CPtVXHUw.js"),__vite__mapDeps([21,1,2,22,23,7,8,24,25,9,10,26,3,4,5,6,11,12,13,14,15,27,28,18,19,29,30,31,32,33,34,35,36,37])),Iy=()=>It(()=>import("./http-error-DQn3mkP_.js"),__vite__mapDeps([38,1,2,4,5,6,7,8,9,10,11,12,13,39])),Cy=()=>It(()=>import("./reader-DoS_6GK6.js").then(s=>s.r),__vite__mapDeps([40,1,2,14,27,28,6,7,8,9,10,11,25,18,19,29,30,3,4,5,12,13,15,31,16,17,41,42,43,44,24,26,45])),Py=()=>It(()=>import("./flag-tab-CBkrOBs1.js"),__vite__mapDeps([46,1,2,22,23,24,25,9,10,26,47])),My=()=>It(()=>import("./user-tab-Dpe-epEv.js"),__vite__mapDeps([48,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,24,26,51,52,5,12])),Dy=()=>It(()=>import("./group-tab-CmqOuOJM.js"),__vite__mapDeps([53,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,43,44,54])),Hy=()=>It(()=>import("./library-tab-eRhFvDgA.js"),__vite__mapDeps([55,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,34,36,24,26,51,52,41,42,56])),Fy=()=>It(()=>import("./task-tab-DJAAAC9L.js"),__vite__mapDeps([57,1,2,32,7,8,33,58])),By=()=>It(()=>import("./stats-tab-Cboz3cW4.js"),__vite__mapDeps([59,1,2,32,7,8,33,14,30,22,23,60])),Wy={name:"browser",params:window.CODEX.LAST_ROUTE||Vf.route},Ny=[{name:"home",path:"/",redirect:Wy},{name:"reader",path:"/c/:pk/:page",component:Cy},{name:"browser",path:"/:group/:pks/:page",component:Oy},{name:"admin",path:"/admin",component:Ry,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:My},{name:"admin-groups",path:"groups",component:Dy},{name:"admin-libraries",path:"libraries",component:Hy},{name:"admin-flags",path:"flags",component:Py},{name:"admin-tasks",path:"tasks",component:Fy},{name:"admin-stats",path:"stats",component:By}]},{name:"error",path:"/error/:code",component:Iy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],vt=new Ay({history:ey(window.CODEX.APP_PATH),routes:Ny});var er=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ec(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function ux(s){if(s.__esModule)return s;var r=s.default;if(typeof r=="function"){var n=function i(){return this instanceof i?Reflect.construct(r,arguments,this.constructor):r.apply(this,arguments)};n.prototype=r.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 fo={exports:{}};/**
7
7
  * @license
8
8
  * Lodash <https://lodash.com/>
9
9
  * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>