codex 1.5.13a2__py3-none-any.whl → 1.5.15__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 (404) hide show
  1. codex/librarian/importer/create_fks.py +13 -9
  2. codex/librarian/importer/importerd.py +2 -2
  3. codex/models/comic.py +24 -13
  4. codex/search/backend.py +9 -1
  5. codex/search/indexes.py +2 -0
  6. codex/settings/settings.py +34 -22
  7. codex/settings/whitenoise.py +1 -1
  8. codex/static_root/assets/{VCheckbox-BR-5qiW4.d4e12b9a3549.js → VCheckbox-BV0qJgRM.8a1f1b5bcc2e.js} +1 -1
  9. codex/static_root/assets/VCheckbox-BV0qJgRM.8a1f1b5bcc2e.js.br +0 -0
  10. codex/static_root/assets/VCheckbox-BV0qJgRM.8a1f1b5bcc2e.js.gz +0 -0
  11. codex/static_root/assets/{VCheckbox-BR-5qiW4.js → VCheckbox-BV0qJgRM.js} +1 -1
  12. codex/static_root/assets/VCheckbox-BV0qJgRM.js.br +0 -0
  13. codex/static_root/assets/VCheckbox-BV0qJgRM.js.gz +0 -0
  14. codex/static_root/assets/{VCheckboxBtn-C7T6Tf80.597cfcc88998.js → VCheckboxBtn-BdndkrO2.956f0290476e.js} +1 -1
  15. codex/static_root/assets/VCheckboxBtn-BdndkrO2.956f0290476e.js.br +0 -0
  16. codex/static_root/assets/VCheckboxBtn-BdndkrO2.956f0290476e.js.gz +0 -0
  17. codex/static_root/assets/{VCheckboxBtn-C7T6Tf80.js → VCheckboxBtn-BdndkrO2.js} +1 -1
  18. codex/static_root/assets/VCheckboxBtn-BdndkrO2.js.br +0 -0
  19. codex/static_root/assets/VCheckboxBtn-BdndkrO2.js.gz +0 -0
  20. codex/static_root/assets/{VCombobox-CA6L757N.c9c01cbc12eb.js → VCombobox-CLS5SQ-7.2fa6db80509a.js} +1 -1
  21. codex/static_root/assets/VCombobox-CLS5SQ-7.2fa6db80509a.js.br +0 -0
  22. codex/static_root/assets/VCombobox-CLS5SQ-7.2fa6db80509a.js.gz +0 -0
  23. codex/static_root/assets/{VCombobox-CA6L757N.js → VCombobox-CLS5SQ-7.js} +1 -1
  24. codex/static_root/assets/VCombobox-CLS5SQ-7.js.br +0 -0
  25. codex/static_root/assets/VCombobox-CLS5SQ-7.js.gz +0 -0
  26. codex/static_root/assets/{VDataTableVirtual-DgdQqVhC.118522d90dfd.js → VDataTableVirtual-m8mHl6dt.b13a9468bcc5.js} +1 -1
  27. codex/static_root/assets/VDataTableVirtual-m8mHl6dt.b13a9468bcc5.js.br +0 -0
  28. codex/static_root/assets/VDataTableVirtual-m8mHl6dt.b13a9468bcc5.js.gz +0 -0
  29. codex/static_root/assets/{VDataTableVirtual-DgdQqVhC.js → VDataTableVirtual-m8mHl6dt.js} +1 -1
  30. codex/static_root/assets/VDataTableVirtual-m8mHl6dt.js.br +0 -0
  31. codex/static_root/assets/VDataTableVirtual-m8mHl6dt.js.gz +0 -0
  32. codex/static_root/assets/{VExpansionPanel-DSgyCbMu.ce806293d8ad.js → VExpansionPanel-RN8wJUzD.0d5ce5a6da7a.js} +1 -1
  33. codex/static_root/assets/VExpansionPanel-RN8wJUzD.0d5ce5a6da7a.js.br +0 -0
  34. codex/static_root/assets/VExpansionPanel-RN8wJUzD.0d5ce5a6da7a.js.gz +0 -0
  35. codex/static_root/assets/{VExpansionPanel-DSgyCbMu.js → VExpansionPanel-RN8wJUzD.js} +1 -1
  36. codex/static_root/assets/VExpansionPanel-RN8wJUzD.js.br +0 -0
  37. codex/static_root/assets/VExpansionPanel-RN8wJUzD.js.gz +0 -0
  38. codex/static_root/assets/{VMain-CDWaq_uU.9350720f2523.js → VMain-BNpmVWfH.3a9306ab9ee0.js} +1 -1
  39. codex/static_root/assets/VMain-BNpmVWfH.3a9306ab9ee0.js.br +0 -0
  40. codex/static_root/assets/VMain-BNpmVWfH.3a9306ab9ee0.js.gz +0 -0
  41. codex/static_root/assets/{VMain-CDWaq_uU.js → VMain-BNpmVWfH.js} +1 -1
  42. codex/static_root/assets/VMain-BNpmVWfH.js.br +0 -0
  43. codex/static_root/assets/VMain-BNpmVWfH.js.gz +0 -0
  44. codex/static_root/assets/{VRadioGroup-1KnJv1YV.c78bc794333b.js → VRadioGroup-Chl8BuhK.e3f030585009.js} +1 -1
  45. codex/static_root/assets/VRadioGroup-Chl8BuhK.e3f030585009.js.br +0 -0
  46. codex/static_root/assets/VRadioGroup-Chl8BuhK.e3f030585009.js.gz +0 -0
  47. codex/static_root/assets/{VRadioGroup-1KnJv1YV.js → VRadioGroup-Chl8BuhK.js} +1 -1
  48. codex/static_root/assets/VRadioGroup-Chl8BuhK.js.br +0 -0
  49. codex/static_root/assets/VRadioGroup-Chl8BuhK.js.gz +0 -0
  50. codex/static_root/assets/VSelect-DAi26YRs.49259744181a.js +1 -0
  51. codex/static_root/assets/VSelect-DAi26YRs.49259744181a.js.br +0 -0
  52. codex/static_root/assets/VSelect-DAi26YRs.49259744181a.js.gz +0 -0
  53. codex/static_root/assets/VSelect-DAi26YRs.js +1 -0
  54. codex/static_root/assets/VSelect-DAi26YRs.js.br +0 -0
  55. codex/static_root/assets/VSelect-DAi26YRs.js.gz +0 -0
  56. codex/static_root/assets/{VSelectionControl-CEOyDLZC.60a1d02bebde.js → VSelectionControl-K1Fk4HTO.2dcaf33858a5.js} +1 -1
  57. codex/static_root/assets/VSelectionControl-K1Fk4HTO.2dcaf33858a5.js.br +0 -0
  58. codex/static_root/assets/VSelectionControl-K1Fk4HTO.2dcaf33858a5.js.gz +0 -0
  59. codex/static_root/assets/{VSelectionControl-CEOyDLZC.js → VSelectionControl-K1Fk4HTO.js} +1 -1
  60. codex/static_root/assets/VSelectionControl-K1Fk4HTO.js.br +0 -0
  61. codex/static_root/assets/VSelectionControl-K1Fk4HTO.js.gz +0 -0
  62. codex/static_root/assets/{VSlideGroup-r8lyA6_4.d51fe70b8cfa.js → VSlideGroup-BpKJ2pWX.7aa41334ab13.js} +1 -1
  63. codex/static_root/assets/VSlideGroup-BpKJ2pWX.7aa41334ab13.js.br +0 -0
  64. codex/static_root/assets/VSlideGroup-BpKJ2pWX.7aa41334ab13.js.gz +0 -0
  65. codex/static_root/assets/{VSlideGroup-r8lyA6_4.js → VSlideGroup-BpKJ2pWX.js} +1 -1
  66. codex/static_root/assets/VSlideGroup-BpKJ2pWX.js.br +0 -0
  67. codex/static_root/assets/VSlideGroup-BpKJ2pWX.js.gz +0 -0
  68. codex/static_root/assets/{VTable-CyZmujCR.5d4fdcc0324d.js → VTable-w7IruQG5.31c9fbb69c7a.js} +1 -1
  69. codex/static_root/assets/VTable-w7IruQG5.31c9fbb69c7a.js.br +0 -0
  70. codex/static_root/assets/VTable-w7IruQG5.31c9fbb69c7a.js.gz +0 -0
  71. codex/static_root/assets/{VTable-CyZmujCR.js → VTable-w7IruQG5.js} +1 -1
  72. codex/static_root/assets/VTable-w7IruQG5.js.br +0 -0
  73. codex/static_root/assets/VTable-w7IruQG5.js.gz +0 -0
  74. codex/static_root/assets/{VToolbar-qYCVOLXR.07eda01fd108.js → VToolbar-BgYY-L1O.a03387cf1d9c.js} +2 -2
  75. codex/static_root/assets/VToolbar-BgYY-L1O.a03387cf1d9c.js.br +0 -0
  76. codex/static_root/assets/VToolbar-BgYY-L1O.a03387cf1d9c.js.gz +0 -0
  77. codex/static_root/assets/{VToolbar-qYCVOLXR.js → VToolbar-BgYY-L1O.js} +2 -2
  78. codex/static_root/assets/VToolbar-BgYY-L1O.js.br +0 -0
  79. codex/static_root/assets/VToolbar-BgYY-L1O.js.gz +0 -0
  80. codex/static_root/assets/{VWindowItem-DAPhfogt.d9e874ecf5be.js → VWindowItem-30SgsTJ6.84daf41a1f2e.js} +1 -1
  81. codex/static_root/assets/VWindowItem-30SgsTJ6.84daf41a1f2e.js.br +0 -0
  82. codex/static_root/assets/VWindowItem-30SgsTJ6.84daf41a1f2e.js.gz +0 -0
  83. codex/static_root/assets/{VWindowItem-DAPhfogt.js → VWindowItem-30SgsTJ6.js} +1 -1
  84. codex/static_root/assets/VWindowItem-30SgsTJ6.js.br +0 -0
  85. codex/static_root/assets/VWindowItem-30SgsTJ6.js.gz +0 -0
  86. codex/static_root/assets/{admin-CfqyTXqy.b073b6fa7ebd.js → admin-C3zxbREC.47850e1531e6.js} +1 -1
  87. codex/static_root/assets/admin-C3zxbREC.47850e1531e6.js.br +0 -0
  88. codex/static_root/assets/admin-C3zxbREC.47850e1531e6.js.gz +0 -0
  89. codex/static_root/assets/{admin-CfqyTXqy.js → admin-C3zxbREC.js} +1 -1
  90. codex/static_root/assets/admin-C3zxbREC.js.br +0 -0
  91. codex/static_root/assets/admin-C3zxbREC.js.gz +0 -0
  92. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css +1 -0
  93. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css.br +0 -0
  94. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css.gz +0 -0
  95. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css +1 -0
  96. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css.br +0 -0
  97. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css.gz +0 -0
  98. codex/static_root/assets/{admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js → admin-drawer-panel-CzxhSiRn.05e55ef69fc4.js} +2 -2
  99. codex/static_root/assets/admin-drawer-panel-CzxhSiRn.05e55ef69fc4.js.br +0 -0
  100. codex/static_root/assets/admin-drawer-panel-CzxhSiRn.05e55ef69fc4.js.gz +0 -0
  101. codex/static_root/assets/{admin-drawer-panel-UQNBz5Mr.js → admin-drawer-panel-CzxhSiRn.js} +2 -2
  102. codex/static_root/assets/admin-drawer-panel-CzxhSiRn.js.br +0 -0
  103. codex/static_root/assets/admin-drawer-panel-CzxhSiRn.js.gz +0 -0
  104. codex/static_root/assets/{browser-CTxEKlCx.211d729d9165.css → browser-Bnfe7deQ.ca3f3bb6c77c.css} +1 -1
  105. codex/static_root/assets/browser-Bnfe7deQ.ca3f3bb6c77c.css.br +0 -0
  106. codex/static_root/assets/browser-Bnfe7deQ.ca3f3bb6c77c.css.gz +0 -0
  107. codex/static_root/assets/{browser-CTxEKlCx.css → browser-Bnfe7deQ.css} +1 -1
  108. codex/static_root/assets/browser-Bnfe7deQ.css.br +0 -0
  109. codex/static_root/assets/browser-Bnfe7deQ.css.gz +0 -0
  110. codex/static_root/assets/browser-D2qE3hmd.ab2969442cdb.js +1 -0
  111. codex/static_root/assets/browser-D2qE3hmd.ab2969442cdb.js.br +0 -0
  112. codex/static_root/assets/browser-D2qE3hmd.ab2969442cdb.js.gz +0 -0
  113. codex/static_root/assets/browser-D2qE3hmd.js +1 -0
  114. codex/static_root/assets/browser-D2qE3hmd.js.br +0 -0
  115. codex/static_root/assets/browser-D2qE3hmd.js.gz +0 -0
  116. codex/static_root/assets/{change-password-dialog-D80TfT-n.284c707d3d79.js → change-password-dialog-DxrgqKSG.c08c136c116f.js} +1 -1
  117. codex/static_root/assets/change-password-dialog-DxrgqKSG.c08c136c116f.js.br +0 -0
  118. codex/static_root/assets/change-password-dialog-DxrgqKSG.c08c136c116f.js.gz +0 -0
  119. codex/static_root/assets/{change-password-dialog-D80TfT-n.js → change-password-dialog-DxrgqKSG.js} +1 -1
  120. codex/static_root/assets/change-password-dialog-DxrgqKSG.js.br +0 -0
  121. codex/static_root/assets/change-password-dialog-DxrgqKSG.js.gz +0 -0
  122. codex/static_root/assets/{confirm-dialog-CTwvsrD2.8de12739f859.js → confirm-dialog-WTc9Btcl.3e03fa1aa90f.js} +1 -1
  123. codex/static_root/assets/confirm-dialog-WTc9Btcl.3e03fa1aa90f.js.br +0 -0
  124. codex/static_root/assets/confirm-dialog-WTc9Btcl.3e03fa1aa90f.js.gz +0 -0
  125. codex/static_root/assets/{confirm-dialog-CTwvsrD2.js → confirm-dialog-WTc9Btcl.js} +1 -1
  126. codex/static_root/assets/confirm-dialog-WTc9Btcl.js.br +0 -0
  127. codex/static_root/assets/confirm-dialog-WTc9Btcl.js.gz +0 -0
  128. codex/static_root/assets/{confirm-footer-CLcqjnLg.ebed69027134.js → confirm-footer-4RE1GmaG.55e3e96c37c2.js} +1 -1
  129. codex/static_root/assets/confirm-footer-4RE1GmaG.55e3e96c37c2.js.br +0 -0
  130. codex/static_root/assets/confirm-footer-4RE1GmaG.55e3e96c37c2.js.gz +0 -0
  131. codex/static_root/assets/{confirm-footer-CLcqjnLg.js → confirm-footer-4RE1GmaG.js} +1 -1
  132. codex/static_root/assets/confirm-footer-4RE1GmaG.js.br +0 -0
  133. codex/static_root/assets/confirm-footer-4RE1GmaG.js.gz +0 -0
  134. codex/static_root/assets/{datetime-column-DPVO98E2.27e26fb391ca.js → datetime-column-Tyqoi3Em.b5153e192f06.js} +1 -1
  135. codex/static_root/assets/datetime-column-Tyqoi3Em.b5153e192f06.js.br +0 -0
  136. codex/static_root/assets/datetime-column-Tyqoi3Em.b5153e192f06.js.gz +0 -0
  137. codex/static_root/assets/{datetime-column-DPVO98E2.js → datetime-column-Tyqoi3Em.js} +1 -1
  138. codex/static_root/assets/datetime-column-Tyqoi3Em.js.br +0 -0
  139. codex/static_root/assets/datetime-column-Tyqoi3Em.js.gz +0 -0
  140. codex/static_root/assets/{filter-Cqjy01SO.71710ea1c7f8.js → filter-kmJ9r_lC.3f91e167b7c7.js} +1 -1
  141. codex/static_root/assets/filter-kmJ9r_lC.3f91e167b7c7.js.br +0 -0
  142. codex/static_root/assets/filter-kmJ9r_lC.3f91e167b7c7.js.gz +0 -0
  143. codex/static_root/assets/{filter-Cqjy01SO.js → filter-kmJ9r_lC.js} +1 -1
  144. codex/static_root/assets/filter-kmJ9r_lC.js.br +0 -0
  145. codex/static_root/assets/filter-kmJ9r_lC.js.gz +0 -0
  146. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css +1 -0
  147. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.br +0 -0
  148. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.gz +0 -0
  149. codex/static_root/assets/flag-tab-D_HjkAta.css +1 -0
  150. codex/static_root/assets/flag-tab-D_HjkAta.css.br +0 -0
  151. codex/static_root/assets/flag-tab-D_HjkAta.css.gz +0 -0
  152. codex/static_root/assets/flag-tab-DgjppJj7.b299cc00da4c.js +1 -0
  153. codex/static_root/assets/flag-tab-DgjppJj7.b299cc00da4c.js.br +0 -0
  154. codex/static_root/assets/flag-tab-DgjppJj7.b299cc00da4c.js.gz +0 -0
  155. codex/static_root/assets/flag-tab-DgjppJj7.js +1 -0
  156. codex/static_root/assets/flag-tab-DgjppJj7.js.br +0 -0
  157. codex/static_root/assets/flag-tab-DgjppJj7.js.gz +0 -0
  158. codex/static_root/assets/{group-tab-DknI2YL3.7b2e5d32ee7e.js → group-tab-VLyH34rF.2a462ffea2e0.js} +1 -1
  159. codex/static_root/assets/group-tab-VLyH34rF.2a462ffea2e0.js.br +0 -0
  160. codex/static_root/assets/group-tab-VLyH34rF.2a462ffea2e0.js.gz +0 -0
  161. codex/static_root/assets/{group-tab-DknI2YL3.js → group-tab-VLyH34rF.js} +1 -1
  162. codex/static_root/assets/group-tab-VLyH34rF.js.br +0 -0
  163. codex/static_root/assets/group-tab-VLyH34rF.js.gz +0 -0
  164. codex/static_root/assets/{http-error-DxxoT0wf.8f26afe5c1dd.js → http-error-og3kcZk_.b3743f5ed8c7.js} +1 -1
  165. codex/static_root/assets/http-error-og3kcZk_.b3743f5ed8c7.js.br +0 -0
  166. codex/static_root/assets/http-error-og3kcZk_.b3743f5ed8c7.js.gz +0 -0
  167. codex/static_root/assets/{http-error-DxxoT0wf.js → http-error-og3kcZk_.js} +1 -1
  168. codex/static_root/assets/http-error-og3kcZk_.js.br +0 -0
  169. codex/static_root/assets/http-error-og3kcZk_.js.gz +0 -0
  170. codex/static_root/assets/{library-tab-DXCuu0zS.6a7b7e48a6f5.js → library-tab-CdnqJ6nG.6896ffa0dd5b.js} +1 -1
  171. codex/static_root/assets/library-tab-CdnqJ6nG.6896ffa0dd5b.js.br +0 -0
  172. codex/static_root/assets/library-tab-CdnqJ6nG.6896ffa0dd5b.js.gz +0 -0
  173. codex/static_root/assets/{library-tab-DXCuu0zS.js → library-tab-CdnqJ6nG.js} +1 -1
  174. codex/static_root/assets/library-tab-CdnqJ6nG.js.br +0 -0
  175. codex/static_root/assets/library-tab-CdnqJ6nG.js.gz +0 -0
  176. codex/static_root/assets/{main-CacfwsKA.4f849ef1c5db.css → main-ClKzvaJK.04ea1888c6b4.css} +1 -1
  177. codex/static_root/assets/main-ClKzvaJK.04ea1888c6b4.css.br +0 -0
  178. codex/static_root/assets/{main-CacfwsKA.4f849ef1c5db.css.gz → main-ClKzvaJK.04ea1888c6b4.css.gz} +0 -0
  179. codex/static_root/assets/{main-CacfwsKA.css → main-ClKzvaJK.css} +1 -1
  180. codex/static_root/assets/main-ClKzvaJK.css.br +0 -0
  181. codex/static_root/assets/{main-CacfwsKA.css.gz → main-ClKzvaJK.css.gz} +0 -0
  182. codex/static_root/assets/main-JHk9CBom.515cee8fb4da.js +37 -0
  183. codex/static_root/assets/main-JHk9CBom.515cee8fb4da.js.br +0 -0
  184. codex/static_root/assets/main-JHk9CBom.515cee8fb4da.js.gz +0 -0
  185. codex/static_root/assets/main-JHk9CBom.js +37 -0
  186. codex/static_root/assets/main-JHk9CBom.js.br +0 -0
  187. codex/static_root/assets/main-JHk9CBom.js.gz +0 -0
  188. codex/static_root/assets/{metadata-dialog-CZDWNVCD.js → metadata-dialog-aQwrbJeb.b2630b04e454.js} +1 -1
  189. codex/static_root/assets/metadata-dialog-aQwrbJeb.b2630b04e454.js.br +0 -0
  190. codex/static_root/assets/metadata-dialog-aQwrbJeb.b2630b04e454.js.gz +0 -0
  191. codex/static_root/assets/{metadata-dialog-CZDWNVCD.b78ed72bc090.js → metadata-dialog-aQwrbJeb.js} +1 -1
  192. codex/static_root/assets/metadata-dialog-aQwrbJeb.js.br +0 -0
  193. codex/static_root/assets/metadata-dialog-aQwrbJeb.js.gz +0 -0
  194. codex/static_root/assets/{pdf-doc-C_LEA8HV.6bd1dba60a0b.js → pdf-doc-ChcRJKun.a4178fd5d85b.js} +1 -1
  195. codex/static_root/assets/pdf-doc-ChcRJKun.a4178fd5d85b.js.br +0 -0
  196. codex/static_root/assets/pdf-doc-ChcRJKun.a4178fd5d85b.js.gz +0 -0
  197. codex/static_root/assets/{pdf-doc-C_LEA8HV.js → pdf-doc-ChcRJKun.js} +1 -1
  198. codex/static_root/assets/pdf-doc-ChcRJKun.js.br +0 -0
  199. codex/static_root/assets/pdf-doc-ChcRJKun.js.gz +0 -0
  200. codex/static_root/assets/{reader-DXk46jdF.0a2b0809bd02.js → reader-D3pWjpiY.df6e64f34984.js} +2 -2
  201. codex/static_root/assets/reader-D3pWjpiY.df6e64f34984.js.br +0 -0
  202. codex/static_root/assets/reader-D3pWjpiY.df6e64f34984.js.gz +0 -0
  203. codex/static_root/assets/{reader-DXk46jdF.js → reader-D3pWjpiY.js} +2 -2
  204. codex/static_root/assets/reader-D3pWjpiY.js.br +0 -0
  205. codex/static_root/assets/reader-D3pWjpiY.js.gz +0 -0
  206. codex/static_root/assets/{stats-tab-Dy0YEoJ4.f24c8ddba0d3.js → stats-tab-BN1iwTRV.68d515c72c0f.js} +1 -1
  207. codex/static_root/assets/stats-tab-BN1iwTRV.68d515c72c0f.js.br +0 -0
  208. codex/static_root/assets/stats-tab-BN1iwTRV.68d515c72c0f.js.gz +0 -0
  209. codex/static_root/assets/{stats-tab-Dy0YEoJ4.js → stats-tab-BN1iwTRV.js} +1 -1
  210. codex/static_root/assets/stats-tab-BN1iwTRV.js.br +0 -0
  211. codex/static_root/assets/stats-tab-BN1iwTRV.js.gz +0 -0
  212. codex/static_root/assets/{task-tab-Bv3B4rCC.1546850899dc.js → task-tab-DmjPFgr7.224c9932e72d.js} +1 -1
  213. codex/static_root/assets/task-tab-DmjPFgr7.224c9932e72d.js.br +0 -0
  214. codex/static_root/assets/task-tab-DmjPFgr7.224c9932e72d.js.gz +0 -0
  215. codex/static_root/assets/{task-tab-Bv3B4rCC.js → task-tab-DmjPFgr7.js} +1 -1
  216. codex/static_root/assets/task-tab-DmjPFgr7.js.br +0 -0
  217. codex/static_root/assets/task-tab-DmjPFgr7.js.gz +0 -0
  218. codex/static_root/assets/{user-tab-CSF2DZe5.8e65aaed43b2.js → user-tab-G70WK0kT.e76a0bfc1b66.js} +1 -1
  219. codex/static_root/assets/user-tab-G70WK0kT.e76a0bfc1b66.js.br +0 -0
  220. codex/static_root/assets/user-tab-G70WK0kT.e76a0bfc1b66.js.gz +0 -0
  221. codex/static_root/assets/{user-tab-CSF2DZe5.js → user-tab-G70WK0kT.js} +1 -1
  222. codex/static_root/assets/user-tab-G70WK0kT.js.br +0 -0
  223. codex/static_root/assets/user-tab-G70WK0kT.js.gz +0 -0
  224. codex/static_root/{manifest.24ec466b9bcf.json → manifest.de2177b31d14.json} +210 -210
  225. codex/static_root/manifest.de2177b31d14.json.br +0 -0
  226. codex/static_root/manifest.de2177b31d14.json.gz +0 -0
  227. codex/static_root/manifest.json +210 -210
  228. codex/static_root/manifest.json.br +0 -0
  229. codex/static_root/manifest.json.gz +0 -0
  230. codex/static_root/staticfiles.json +1 -1
  231. codex/status.py +7 -3
  232. codex/templates/search/indexes/codex/comic_text.txt +1 -0
  233. codex/views/browser/browser.py +3 -4
  234. codex/views/browser/browser_annotations.py +44 -34
  235. codex/views/browser/metadata.py +7 -5
  236. codex/views/error.py +2 -2
  237. codex/views/opds/v1/entry/entry.py +3 -1
  238. codex/views/opds/v1/entry/links.py +6 -2
  239. codex/views/opds/v1/facets.py +1 -0
  240. codex/views/opds/v1/feed.py +44 -8
  241. codex/views/opds/v1/links.py +6 -1
  242. codex/views/opds/v2/feed.py +3 -1
  243. codex/views/opds/v2/publications.py +6 -1
  244. {codex-1.5.13a2.dist-info → codex-1.5.15.dist-info}/METADATA +2 -1
  245. {codex-1.5.13a2.dist-info → codex-1.5.15.dist-info}/RECORD +248 -248
  246. codex/static_root/assets/VCheckbox-BR-5qiW4.d4e12b9a3549.js.br +0 -0
  247. codex/static_root/assets/VCheckbox-BR-5qiW4.d4e12b9a3549.js.gz +0 -0
  248. codex/static_root/assets/VCheckbox-BR-5qiW4.js.br +0 -0
  249. codex/static_root/assets/VCheckbox-BR-5qiW4.js.gz +0 -0
  250. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.597cfcc88998.js.br +0 -0
  251. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.597cfcc88998.js.gz +0 -0
  252. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.js.br +0 -0
  253. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.js.gz +0 -0
  254. codex/static_root/assets/VCombobox-CA6L757N.c9c01cbc12eb.js.br +0 -0
  255. codex/static_root/assets/VCombobox-CA6L757N.c9c01cbc12eb.js.gz +0 -0
  256. codex/static_root/assets/VCombobox-CA6L757N.js.br +0 -0
  257. codex/static_root/assets/VCombobox-CA6L757N.js.gz +0 -0
  258. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.118522d90dfd.js.br +0 -0
  259. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.118522d90dfd.js.gz +0 -0
  260. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.js.br +0 -0
  261. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.js.gz +0 -0
  262. codex/static_root/assets/VExpansionPanel-DSgyCbMu.ce806293d8ad.js.br +0 -0
  263. codex/static_root/assets/VExpansionPanel-DSgyCbMu.ce806293d8ad.js.gz +0 -0
  264. codex/static_root/assets/VExpansionPanel-DSgyCbMu.js.br +0 -0
  265. codex/static_root/assets/VExpansionPanel-DSgyCbMu.js.gz +0 -0
  266. codex/static_root/assets/VMain-CDWaq_uU.9350720f2523.js.br +0 -0
  267. codex/static_root/assets/VMain-CDWaq_uU.9350720f2523.js.gz +0 -0
  268. codex/static_root/assets/VMain-CDWaq_uU.js.br +0 -0
  269. codex/static_root/assets/VMain-CDWaq_uU.js.gz +0 -0
  270. codex/static_root/assets/VRadioGroup-1KnJv1YV.c78bc794333b.js.br +0 -0
  271. codex/static_root/assets/VRadioGroup-1KnJv1YV.c78bc794333b.js.gz +0 -0
  272. codex/static_root/assets/VRadioGroup-1KnJv1YV.js.br +0 -0
  273. codex/static_root/assets/VRadioGroup-1KnJv1YV.js.gz +0 -0
  274. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js +0 -1
  275. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js.br +0 -0
  276. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js.gz +0 -0
  277. codex/static_root/assets/VSelect-CLw1oGQg.js +0 -1
  278. codex/static_root/assets/VSelect-CLw1oGQg.js.br +0 -0
  279. codex/static_root/assets/VSelect-CLw1oGQg.js.gz +0 -0
  280. codex/static_root/assets/VSelectionControl-CEOyDLZC.60a1d02bebde.js.br +0 -0
  281. codex/static_root/assets/VSelectionControl-CEOyDLZC.60a1d02bebde.js.gz +0 -0
  282. codex/static_root/assets/VSelectionControl-CEOyDLZC.js.br +0 -0
  283. codex/static_root/assets/VSelectionControl-CEOyDLZC.js.gz +0 -0
  284. codex/static_root/assets/VSlideGroup-r8lyA6_4.d51fe70b8cfa.js.br +0 -0
  285. codex/static_root/assets/VSlideGroup-r8lyA6_4.d51fe70b8cfa.js.gz +0 -0
  286. codex/static_root/assets/VSlideGroup-r8lyA6_4.js.br +0 -0
  287. codex/static_root/assets/VSlideGroup-r8lyA6_4.js.gz +0 -0
  288. codex/static_root/assets/VTable-CyZmujCR.5d4fdcc0324d.js.br +0 -0
  289. codex/static_root/assets/VTable-CyZmujCR.5d4fdcc0324d.js.gz +0 -0
  290. codex/static_root/assets/VTable-CyZmujCR.js.br +0 -0
  291. codex/static_root/assets/VTable-CyZmujCR.js.gz +0 -0
  292. codex/static_root/assets/VToolbar-qYCVOLXR.07eda01fd108.js.br +0 -0
  293. codex/static_root/assets/VToolbar-qYCVOLXR.07eda01fd108.js.gz +0 -0
  294. codex/static_root/assets/VToolbar-qYCVOLXR.js.br +0 -0
  295. codex/static_root/assets/VToolbar-qYCVOLXR.js.gz +0 -0
  296. codex/static_root/assets/VWindowItem-DAPhfogt.d9e874ecf5be.js.br +0 -0
  297. codex/static_root/assets/VWindowItem-DAPhfogt.d9e874ecf5be.js.gz +0 -0
  298. codex/static_root/assets/VWindowItem-DAPhfogt.js.br +0 -0
  299. codex/static_root/assets/VWindowItem-DAPhfogt.js.gz +0 -0
  300. codex/static_root/assets/admin-CfqyTXqy.b073b6fa7ebd.js.br +0 -0
  301. codex/static_root/assets/admin-CfqyTXqy.b073b6fa7ebd.js.gz +0 -0
  302. codex/static_root/assets/admin-CfqyTXqy.js.br +0 -0
  303. codex/static_root/assets/admin-CfqyTXqy.js.gz +0 -0
  304. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css +0 -1
  305. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css.br +0 -0
  306. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css.gz +0 -0
  307. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css +0 -1
  308. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css.br +0 -0
  309. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css.gz +0 -0
  310. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js.br +0 -0
  311. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js.gz +0 -0
  312. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.js.br +0 -0
  313. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.js.gz +0 -0
  314. codex/static_root/assets/browser-CTxEKlCx.211d729d9165.css.br +0 -0
  315. codex/static_root/assets/browser-CTxEKlCx.211d729d9165.css.gz +0 -0
  316. codex/static_root/assets/browser-CTxEKlCx.css.br +0 -0
  317. codex/static_root/assets/browser-CTxEKlCx.css.gz +0 -0
  318. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js +0 -1
  319. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js.br +0 -0
  320. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js.gz +0 -0
  321. codex/static_root/assets/browser-CWqU3TI5.js +0 -1
  322. codex/static_root/assets/browser-CWqU3TI5.js.br +0 -0
  323. codex/static_root/assets/browser-CWqU3TI5.js.gz +0 -0
  324. codex/static_root/assets/change-password-dialog-D80TfT-n.284c707d3d79.js.br +0 -0
  325. codex/static_root/assets/change-password-dialog-D80TfT-n.284c707d3d79.js.gz +0 -0
  326. codex/static_root/assets/change-password-dialog-D80TfT-n.js.br +0 -0
  327. codex/static_root/assets/change-password-dialog-D80TfT-n.js.gz +0 -0
  328. codex/static_root/assets/confirm-dialog-CTwvsrD2.8de12739f859.js.br +0 -0
  329. codex/static_root/assets/confirm-dialog-CTwvsrD2.8de12739f859.js.gz +0 -0
  330. codex/static_root/assets/confirm-dialog-CTwvsrD2.js.br +0 -0
  331. codex/static_root/assets/confirm-dialog-CTwvsrD2.js.gz +0 -0
  332. codex/static_root/assets/confirm-footer-CLcqjnLg.ebed69027134.js.br +0 -0
  333. codex/static_root/assets/confirm-footer-CLcqjnLg.ebed69027134.js.gz +0 -0
  334. codex/static_root/assets/confirm-footer-CLcqjnLg.js.br +0 -0
  335. codex/static_root/assets/confirm-footer-CLcqjnLg.js.gz +0 -0
  336. codex/static_root/assets/datetime-column-DPVO98E2.27e26fb391ca.js.br +0 -0
  337. codex/static_root/assets/datetime-column-DPVO98E2.27e26fb391ca.js.gz +0 -0
  338. codex/static_root/assets/datetime-column-DPVO98E2.js.br +0 -0
  339. codex/static_root/assets/datetime-column-DPVO98E2.js.gz +0 -0
  340. codex/static_root/assets/filter-Cqjy01SO.71710ea1c7f8.js.br +0 -0
  341. codex/static_root/assets/filter-Cqjy01SO.71710ea1c7f8.js.gz +0 -0
  342. codex/static_root/assets/filter-Cqjy01SO.js.br +0 -0
  343. codex/static_root/assets/filter-Cqjy01SO.js.gz +0 -0
  344. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js +0 -1
  345. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js.br +0 -0
  346. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js.gz +0 -0
  347. codex/static_root/assets/flag-tab-BERamYWo.js +0 -1
  348. codex/static_root/assets/flag-tab-BERamYWo.js.br +0 -0
  349. codex/static_root/assets/flag-tab-BERamYWo.js.gz +0 -0
  350. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css +0 -1
  351. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css.br +0 -1
  352. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css.gz +0 -0
  353. codex/static_root/assets/flag-tab-DUXtbpA2.css +0 -1
  354. codex/static_root/assets/flag-tab-DUXtbpA2.css.br +0 -1
  355. codex/static_root/assets/flag-tab-DUXtbpA2.css.gz +0 -0
  356. codex/static_root/assets/group-tab-DknI2YL3.7b2e5d32ee7e.js.br +0 -0
  357. codex/static_root/assets/group-tab-DknI2YL3.7b2e5d32ee7e.js.gz +0 -0
  358. codex/static_root/assets/group-tab-DknI2YL3.js.br +0 -0
  359. codex/static_root/assets/group-tab-DknI2YL3.js.gz +0 -0
  360. codex/static_root/assets/http-error-DxxoT0wf.8f26afe5c1dd.js.br +0 -0
  361. codex/static_root/assets/http-error-DxxoT0wf.8f26afe5c1dd.js.gz +0 -0
  362. codex/static_root/assets/http-error-DxxoT0wf.js.br +0 -0
  363. codex/static_root/assets/http-error-DxxoT0wf.js.gz +0 -0
  364. codex/static_root/assets/library-tab-DXCuu0zS.6a7b7e48a6f5.js.br +0 -0
  365. codex/static_root/assets/library-tab-DXCuu0zS.6a7b7e48a6f5.js.gz +0 -0
  366. codex/static_root/assets/library-tab-DXCuu0zS.js.br +0 -0
  367. codex/static_root/assets/library-tab-DXCuu0zS.js.gz +0 -0
  368. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js +0 -37
  369. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js.br +0 -0
  370. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js.gz +0 -0
  371. codex/static_root/assets/main-CTJQvqMb.js +0 -37
  372. codex/static_root/assets/main-CTJQvqMb.js.br +0 -0
  373. codex/static_root/assets/main-CTJQvqMb.js.gz +0 -0
  374. codex/static_root/assets/main-CacfwsKA.4f849ef1c5db.css.br +0 -0
  375. codex/static_root/assets/main-CacfwsKA.css.br +0 -0
  376. codex/static_root/assets/metadata-dialog-CZDWNVCD.b78ed72bc090.js.br +0 -0
  377. codex/static_root/assets/metadata-dialog-CZDWNVCD.b78ed72bc090.js.gz +0 -0
  378. codex/static_root/assets/metadata-dialog-CZDWNVCD.js.br +0 -0
  379. codex/static_root/assets/metadata-dialog-CZDWNVCD.js.gz +0 -0
  380. codex/static_root/assets/pdf-doc-C_LEA8HV.6bd1dba60a0b.js.br +0 -0
  381. codex/static_root/assets/pdf-doc-C_LEA8HV.6bd1dba60a0b.js.gz +0 -0
  382. codex/static_root/assets/pdf-doc-C_LEA8HV.js.br +0 -0
  383. codex/static_root/assets/pdf-doc-C_LEA8HV.js.gz +0 -0
  384. codex/static_root/assets/reader-DXk46jdF.0a2b0809bd02.js.br +0 -0
  385. codex/static_root/assets/reader-DXk46jdF.0a2b0809bd02.js.gz +0 -0
  386. codex/static_root/assets/reader-DXk46jdF.js.br +0 -0
  387. codex/static_root/assets/reader-DXk46jdF.js.gz +0 -0
  388. codex/static_root/assets/stats-tab-Dy0YEoJ4.f24c8ddba0d3.js.br +0 -0
  389. codex/static_root/assets/stats-tab-Dy0YEoJ4.f24c8ddba0d3.js.gz +0 -0
  390. codex/static_root/assets/stats-tab-Dy0YEoJ4.js.br +0 -0
  391. codex/static_root/assets/stats-tab-Dy0YEoJ4.js.gz +0 -0
  392. codex/static_root/assets/task-tab-Bv3B4rCC.1546850899dc.js.br +0 -0
  393. codex/static_root/assets/task-tab-Bv3B4rCC.1546850899dc.js.gz +0 -0
  394. codex/static_root/assets/task-tab-Bv3B4rCC.js.br +0 -0
  395. codex/static_root/assets/task-tab-Bv3B4rCC.js.gz +0 -0
  396. codex/static_root/assets/user-tab-CSF2DZe5.8e65aaed43b2.js.br +0 -0
  397. codex/static_root/assets/user-tab-CSF2DZe5.8e65aaed43b2.js.gz +0 -0
  398. codex/static_root/assets/user-tab-CSF2DZe5.js.br +0 -0
  399. codex/static_root/assets/user-tab-CSF2DZe5.js.gz +0 -0
  400. codex/static_root/manifest.24ec466b9bcf.json.br +0 -0
  401. codex/static_root/manifest.24ec466b9bcf.json.gz +0 -0
  402. {codex-1.5.13a2.dist-info → codex-1.5.15.dist-info}/LICENSE +0 -0
  403. {codex-1.5.13a2.dist-info → codex-1.5.15.dist-info}/WHEEL +0 -0
  404. {codex-1.5.13a2.dist-info → codex-1.5.15.dist-info}/entry_points.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  function __vite__mapDeps(indexes) {
2
2
  if (!__vite__mapDeps.viteFileDeps) {
3
- __vite__mapDeps.viteFileDeps = ["assets/admin-drawer-panel-UQNBz5Mr.js","assets/admin-drawer-panel-Bk7z8uTR.css"]
3
+ __vite__mapDeps.viteFileDeps = ["assets/admin-drawer-panel-CzxhSiRn.js","assets/admin-drawer-panel-Cr-0BCQv.css"]
4
4
  }
5
5
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
6
6
  }
7
- import{x as ee,bY as ke,E as ie,bL as we,bK as Se,aq as le,F as ye,G as te,I as Pe,at as ae,au as Q,bZ as Te,bP as Ce,bS as Re,s as H,y as Rt,h as _,K as oe,L as r,z as X,a$ as Ge,b_ as Vt,M as z,k as re,ax as ue,m as $,N as ce,_ as M,R as p,O as S,P as h,aD as A,ae as P,ay as q,aB as N,b$ as Ye,c0 as Bt,c1 as Dt,aa as T,ad as U,be as xt,bh as Et,c2 as It,Q as J,am as W,ak as Xe,c3 as Lt,ar as be,c4 as At,r as qe,C as Nt,c5 as $t,al as Ve,c6 as Z,bQ as Ot,c7 as Mt,bT as Ut,c8 as Ft,af as Ke,b1 as Ht,b2 as zt,ag as Ze,aX as me,c9 as Qe,ca as Wt,aC as Je,bn as et,aA as Be,aT as pe,bU as tt,cb as ot,H as De,cc as nt,l as jt,cd as Gt,ce as Yt,B as st,a as K,o as at,cf as Xt,J as rt,cg as qt,bI as Kt,ch as Zt,ci as ge,cj as Qt,av as it,bV as lt,ck as Jt,n as eo,a9 as to,bi as oo}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as ut,b as ct,_ as dt,C as Ae,r as he,u as no,A as Ne,c as so,d as ao}from"./main-CTJQvqMb.js";import{c as ro,t as io}from"./index-DUjeNg4x.js";import{V as mt,a as lo}from"./confirm-footer-CLcqjnLg.js";import{_ as gt}from"./change-password-dialog-D80TfT-n.js";import{_ as ht,a as fe,b as uo}from"./VSlideGroup-r8lyA6_4.js";import{a as co,c as mo,u as go,V as $e,d as Oe}from"./VSelectionControl-CEOyDLZC.js";const ho=ee({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...ke(),...ie(),...we(),...ut(),...Se(),...le({tag:"footer"}),...ye()},"VFooter"),ft=te()({name:"VFooter",props:ho(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Pe(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ae(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Ce(e),{roundedClasses:k}=Re(e),v=H(32),{resizeRef:u}=Rt(b=>{b.length&&(v.value=b[0].target.clientHeight)}),g=_(()=>e.height==="auto"?v.value:parseInt(e.height,10)),{layoutItemStyles:m}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:_(()=>"bottom"),layoutSize:g,elementSize:_(()=>e.height==="auto"?void 0:g.value),active:_(()=>e.app),absolute:Q(e,"absolute")});return oe(()=>r(e.tag,{ref:u,class:["v-footer",a.value,n.value,i.value,l.value,k.value,e.class],style:[s.value,e.app?m.value:{height:X(e.height)},e.style]},o)),{}}}),fo={name:"VersionFooter",data(){return{mdiOpenInNew:Ge,mdiContentCopy:Vt}},computed:{...z(re,{versions:e=>e.versions}),...ue($,["isUserAdmin"]),outdated:function(){return this.isUserAdmin&&this.semverGreaterThan(this.versions.latest>this.versions.installed)},versionTitle:function(){return this.outdated?`v${this.versions.latest} is available`:"up to date"}},created(){this.loadVersions()},methods:{...ce(re,["loadVersions"]),semverGreaterThan(e,t){try{if(!e||!t)return!1;const o=e.split("."),a=t.split(".");for(const[n,s]of o.entries())if(+s>+a[n])return!0}catch(o){console.debug("compare codex versions",e,">",t,o)}return!1}}},vo={id:"version"},bo={key:0,id:"latest"};function po(e,t,o,a,n,s){return p(),S(ft,{id:"version-footer",title:s.versionTitle},{default:h(()=>[A("div",vo,"codex v"+P(e.versions.installed),1),s.outdated?(p(),q("div",bo," codex v"+P(e.versions.latest)+" is available ",1)):N("",!0)]),_:1},8,["title"])}const vt=M(fo,[["render",po],["__scopeId","data-v-cd481730"]]),_o={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ye,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?Bt:Dt},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&ro(this.url,this.showTooltip)}}},ko=["title"],wo={key:0},So={class:"copied"},yo={key:0,class:"subtitle"},Po={class:"opdsUrl"};function To(e,t,o,a,n,s){return p(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[A("h3",null,[T(P(o.title)+" ",1),s.clipBoardEnabled?(p(),q("span",wo,[r(U,{class:"clipBoardIcon",size:"small"},{default:h(()=>[T(P(s.clipBoardIcon),1)]),_:1}),r(It,null,{default:h(()=>[xt(A("span",So,"Copied",512),[[Et,n.showTooltip.show]])]),_:1})])):N("",!0)]),o.subtitle?(p(),q("div",yo,P(o.subtitle),1)):N("",!0),A("div",Po,P(o.url),1)],8,ko)}const Co=M(_o,[["render",To],["__scopeId","data-v-68a52a66"]]),Ro={name:"OPDSDialog",components:{OPDSUrl:Co},data(){return{mdiRss:Ye,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Vo={id:"opds"};function Bo(e,t,o,a,n,s){const i=J("OPDSUrl");return p(),S(mt,{"max-width":"30em"},{activator:h(({props:l})=>[r(Xe,W({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),_:2},1040)]),default:h(()=>[A("div",Vo,[A("h2",null,[r(U,{size:"x=small",class:"inline"},{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),r(i,{title:"v1.2",url:n.opdsV1URL},null,8,["url"]),r(i,{title:"v2.0",url:n.opdsV2URL,subtitle:"OPDS v2 is experimental and not widely or well supported by clients"},null,8,["url"])])]),_:1})}const Do=M(Ro,[["render",Bo],["__scopeId","data-v-741734ce"]]),xo={name:"SettingsFooter",components:{OPDSDialog:Do},data(){return{mdiOpenInNew:Ge,mdiSourceRepository:Lt}},computed:{...ue($,["isCodexViewable"])}},Eo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Io(e,t,o,a,n,s){const i=J("OPDSDialog");return p(),S(ft,{id:"settingsFooter"},{default:h(()=>[e.isCodexViewable?(p(),S(i,{key:0})):N("",!0),A("a",Eo,[r(U,{id:"repoIcon",size:"x-small"},{default:h(()=>[T(P(n.mdiSourceRepository),1)]),_:1}),T(" repository"),r(U,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:h(()=>[T(P(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const bt=M(xo,[["render",Io],["__scopeId","data-v-f9eb593e"]]),Lo=ee({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...co(),...mo()},"VSwitch"),Ao=te()({name:"VSwitch",inheritAttrs:!1,props:Lo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=be(e,"indeterminate"),s=be(e,"modelValue"),{loaderClasses:i}=At(e),{isFocused:l,focus:k,blur:v}=go(e),u=qe(),g=_(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),m=Nt(),b=_(()=>e.id||`switch-${m}`);function C(){n.value&&(n.value=!1)}function y(x){var R,V;x.stopPropagation(),x.preventDefault(),(V=(R=u.value)==null?void 0:R.input)==null||V.click()}return oe(()=>{const[x,R]=$t(o),V=$e.filterProps(e),B=Oe.filterProps(e);return r($e,W({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},x,V,{modelValue:s.value,"onUpdate:modelValue":E=>s.value=E,id:b.value,focused:l.value,style:e.style}),{...a,default:E=>{let{id:d,messagesId:c,isDisabled:f,isReadonly:w,isValid:D}=E;const I={model:s,isValid:D};return r(Oe,W({ref:u},B,{modelValue:s.value,"onUpdate:modelValue":[F=>s.value=F,C],id:d.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:f.value,readonly:w.value,onFocus:k,onBlur:v},R),{...a,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:O}=F;return r("div",{class:["v-switch__track",...j.value],style:O.value,onClick:y},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](I)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](I)])])},input:F=>{let{inputNode:j,icon:O,backgroundColorClasses:ne,backgroundColorStyles:de}=F;return r(Ve,null,[j,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset?void 0:ne.value],style:e.inset?void 0:de.value},[a.thumb?r(Z,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...I,icon:O})]}):r(Ot,null,{default:()=>[e.loading?r(Mt,{name:"v-switch",active:!0,color:D.value===!1?void 0:g.value},{default:G=>a.loader?a.loader(G):r(Ut,{active:G.isActive,color:G.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(U,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),No={name:"AuthLoginDialog",components:{SubmitFooter:ht},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,showDialog:!1,registerMode:!1,mdiLogin:Ft}},computed:{...z(re,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...z($,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),submitButtonLabel:function(){return this.registerMode?"Register":"Login"}},watch:{showDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>this.submitButtonEnabled=t).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){window.addEventListener("keyup",this._keyListener)},beforeUnmount(){window.removeEventListener("keyup",this._keyListener)},methods:{...ce($,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>this.showDialog=this.formErrors&&this.formErrors.length>0).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyListener(e){e.stopImmediatePropagation()}}};function $o(e,t,o,a,n,s){const i=ht;return p(),S(mt,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:h(({props:l})=>[r(Ze,Ht(zt(l)),{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiLogin),1)]),_:1}),T(" Login ")]),_:1})]),_:2},1040)]),default:h(()=>[r(uo,{id:"authDialog",ref:"form"},{default:h(()=>[r(fe,{modelValue:n.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>n.credentials.username=l),autocomplete:"username",label:"Username",rules:n.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=me(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(fe,{ref:"password",modelValue:n.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>n.credentials.password=l),autocomplete:n.registerMode?"new-password":"current-password",label:"Password",rules:n.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=me(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(Qe,null,{default:h(()=>[n.registerMode?(p(),S(fe,{key:0,ref:"passwordConfirm",modelValue:n.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>n.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:n.rules.passwordConfirm,clearable:"",type:"password",onKeydown:me(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):N("",!0)]),_:1}),e.adminFlags.registration?(p(),S(Ao,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:h(()=>[T(" Register ")]),_:1},8,["modelValue"])):N("",!0),r(i,{verb:n.registerMode?"Register":"Login",table:"",disabled:!n.submitButtonEnabled,onSubmit:s.submit,onCancel:t[6]||(t[6]=l=>n.showDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const Oo=M(No,[["render",$o],["__scopeId","data-v-ef06f84f"]]),Mo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Wt}},computed:{...z($,{username:e=>e.user.username})},methods:{...ce($,["logout"])}};function Uo(e,t,o,a,n,s){return p(),S(Ze,{onClick:e.logout},{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(e.mdiLogout),1)]),_:1}),T("Logout "+P(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Fo=M(Mo,[["render",Uo]]),Ho={name:"AuthMenu",components:{ChangePasswordDialog:gt,AuthLoginDialog:Oo,AuthLogoutItem:Fo},computed:{...z($,{user:e=>e.user})},methods:{...ce($,["logout"])}};function zo(e,t,o,a,n,s){const i=J("AuthLogoutItem"),l=gt,k=J("AuthLoginDialog");return p(),q(Ve,null,[e.user?(p(),S(i,{key:0})):N("",!0),e.user?(p(),S(l,{key:1,user:e.user},null,8,["user"])):(p(),S(k,{key:2}))],64)}const pt=M(Ho,[["render",zo]]),Me=Je(et(()=>dt(()=>import("./admin-drawer-panel-UQNBz5Mr.js").then(e=>e.dx),__vite__mapDeps([0,1])))),Wo={name:"SettingsCommonPanel",components:{AuthMenu:pt,AdminMenu:Me},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:Me}},computed:{...ue($,["isUserAdmin"])}},jo={id:"commonPanel"};function Go(e,t,o,a,n,s){const i=pt;return p(),q("div",jo,[r(i),e.isUserAdmin?(p(),S(pe,{key:0})):N("",!0),e.isUserAdmin?(p(),S(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):N("",!0)])}const Yo=M(Wo,[["render",Go],["__scopeId","data-v-a21632a4"]]),Xo=e=>{const t=e.pk,o=ot();return e={...e,...o},delete e.pk,De.get(`c/${t}`,{params:e})},qo=()=>{const e=ot();return De.get("c/settings",{params:e})},Ko=e=>De.put("c/settings",e),In=({pk:e,mtime:t})=>`${nt(e)}/download/comic-${e}.cbz?mtime=${t}`,Ln=({pk:e,page:t,mtime:o})=>`${nt(e)}/${t}/page.jpg?mtime=${o}`,Ue=({pk:e,page:t,mtime:o})=>`${tt(e)}/${t}/page.jpg?mtime=${o}`,Zo=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,ve={getPdfBookSource:Zo,getReaderBasePath:tt,getReaderInfo:Xo,getReaderSettings:qo,setReaderSettings:Ko},Qo=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},Jo=function({issueNumber:e,issueSuffix:t},o){let a;try{e==null&&!t&&(e=0);const n=Number.parseFloat(e),s=Math.floor(n);o===void 0&&(o=0),n===s?a=s.toString():(a=n.toString(),o+=a.split(".")[1].length+1),a=a.padStart(o,"0")}catch{a=""}return t&&(a+=t),a},en=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+Jo({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},tn=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=Qo(t),l=en({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},_t={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(_t);const kt={cacheBook:!1};Object.freeze(kt);const se=new Set(["",null,void 0]);Object.freeze(se);const wt={prev:"next",next:"prev"};Object.freeze(wt);const _e={rel:"prefetch",as:"image"};Object.freeze(_e);const xe=new Set(["ttb","btt"]);Object.freeze(xe);const St=new Set(["rtl","btt"]);Object.freeze(St);const Fe=1,yt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(yt);const on=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",He=e=>{xe.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},nn=jt("reader",{state:()=>({choices:{fitTo:Ae.reader.fitTo,readingDirection:Ae.reader.readingDirection,nullValues:se},readerSettings:{fitTo:on(),twoPages:!1,readingDirection:"ltr",readRtlInReverse:!1},books:{current:void 0,prev:!1,next:!1},arcs:[],arc:{},page:void 0,routes:{prev:!1,next:!1,books:{prev:!1,next:!1}},bookChange:void 0,reactWithScroll:!1,clientSettings:{cacheBook:!1,scale:Fe}}),getters:{groupBooks(e){const t=[];return e.books.prev[0]&&t.push[e.books.prev[0]],t.push[e.books.current],e.books.next[0]&&t.push[e.books.next[0]],t},activeSettings(e){return e.getSettings(e.books.current)||{}},activeTitle(e){var a;const t=e.books.current;let o;return((a=e.arcs[0])==null?void 0:a.group)==="f"&&(o=t==null?void 0:t.filename),o||(o=t?tn(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return xe.has(e.activeSettings.readingDirection)},isPDF(e){var t,o;return((o=(t=e.books)==null?void 0:t.current)==null?void 0:o.fileType)=="PDF"},cacheBook(e){return e.clientSettings.cacheBook&&!(this.isPDF&&this.isVertical)},isPagesNotRoutes(e){return e.isVertical||this.cacheBook},isReadInReverse(e){return St.has(e.activeSettings.readingDirection)},isBTT(e){return e.activeSettings.readingDirection==="btt"},isFirstPage(e){return e.page===0},isLastPage(e){const t=e.books.current?e.books.current.maxPage:0,o=e.activeSettings.twoPages?1:0,a=t-o;return this.page>=a}},actions:{setReadRTLInReverse(e){return this.readerSettings.readRtlInReverse&&e.readingDirection==="rtl"?{...e,readingDirection:"ltr"}:e},getSettings(e){const t={...se};let o=e?e.settings:{};o=this.setReadRTLInReverse(o);const a=[this.readerSettings,o];for(const n of a)for(const[s,i]of Object.entries(n))se.has(i)||(t[s]=i);return He(t),t},bookChangeLocation(e){let t;return this.isBTT?t=e==="next"?"left":"right":t=e==="next"?"right":"left",t},bookChangeCursorClass(e){let t;return this.isReadInReverse?t=e==="next"?"up":"down":t=e==="next"?"down":"up",t+"Cursor"},bookChangeShow(e){return e==="prev"?this.books.prev&&this.isFirstPage:this.books.next&&this.isLastPage},bookChangeIcon(e){let t=e==="next";return this.isBTT&&(t=!t),t?Gt:Yt},isCoverPage(e,t){return e.readLtr!==!1&&t===0||e.readLtr&&t===e.maxPage},_getRouteParams(e,t,o){const a=o==="prev"?-1:1;let n=1;this.getSettings(e).twoPages&&!this.isCoverPage(e,+t+a)&&(n=2),n=n*a;const i=+t+n;let l=!1;return i>=0&&i<=e.maxPage&&(l={pk:e.pk,page:i}),l},fitToClass(e){const t=this.getSettings(e),o={};let a;if(this.clientSettings.scale>Fe?a="Orig":a=yt[t.fitTo],a){let n="fitTo";n+=io(a),this.isVertical?n+="Vertical":t.twoPages&&(n+="Two"),o[n]=!0}return o},_updateSettings(e,t){t?(this.books.current.settings={...this.books.current.settings,...e},He(this.books.current.settings)):this.readerSettings={...this.readerSettings,...e}},_getBookRoutePage(e,t){let o=0;if(t&&e.readLtr!==!1||!t&&e.readLtr===!1){const n=this.getSettings(e).twoPages?-1:0;o=e.maxPage+n}return o},_getBookRoute(e,t){if(!e)return!1;const o=this._getBookRoutePage(e,t);return{pk:e.pk,page:o}},_getBookRoutes(e,t){return{prev:this._getBookRoute(e,!0),next:this._getBookRoute(t,!1)}},async setRoutesAndBookmarkPage(e){const t=this.books.current;this.$patch(o=>{o.routes.prev=this._getRouteParams(t,e,"prev"),o.routes.next=this._getRouteParams(t,e,"next")}),await this._setBookmarkPage(e).then(()=>(this.bookChange=void 0,!0))},setActivePage(e,t=!0){if(e<0)return console.warn("Page out of bounds. Redirecting to 0."),this.routeToPage(0);if(e>this.books.current.maxPage)return console.warn(`Page out of bounds. Redirecting to ${this.books.current.maxPage}.`),this.routeToPage(this.books.current.maxPage);if(this.reactWithScroll=!!t,this.page=+e,this.setRoutesAndBookmarkPage(e),this.isPagesNotRoutes){const o={params:{pk:this.books.current.pk,page:e}},{href:a}=he.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return ve.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await ve.getReaderInfo(e).then(t=>{const o=t.data,a=[o.books.prevBook,o.books.current,o.books.nextBook];for(const s of a)s&&!s.settings&&(s.settings={});const n=this._getBookRoutes(o.books.prevBook,o.books.nextBook);return this.$patch(s=>{s.books.current=o.books.current,s.books.prev=o.books.prevBook,s.books.next=o.books.nextBook,s.arcs=o.arcs,s.arc=o.arc,s.routes.prev=this._getRouteParams(s.books.current,e.page,"prev"),s.routes.next=this._getRouteParams(s.books.current,e.page,"next"),s.routes.books=n}),!0}).catch(t=>{console.debug(t);const o=no().page,a=o&&o.routes?o.routes.last:{name:"home"};return he.push(a)})},async _setBookmarkPage(e){const t={group:"c",pk:this.books.current.pk};e=Math.max(Math.min(this.books.current.maxPage,e),0);const o={page:e};await Ne.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Ne.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(_t),this.setSettingsClient(kt)},async setSettingsGlobal(e){this._updateSettings(e,!1),await ve.setReaderSettings(this.readerSettings),await this.clearSettingsLocal()},setBookChangeFlag(e){e=this.normalizeDirection(e),this.bookChange=this.routes.books[e]?e:void 0},normalizeDirection(e){return this.isReadInReverse?wt[e]:e},_validateRoute(e,t){if(t||(t=this.books.current),!t)return{};const o=t.maxPage??0;return e.page>o?(e.page=o,console.warn("Tried to navigate past the end of the book.")):e.page<0&&(e.page=0,console.warn("Tried to navigate before the beginning of the book.")),e},_routeTo(e,t){if(e=this._validateRoute(e,t),this.isPagesNotRoutes&&+e.pk===this.books.current.pk)this.setActivePage(+e.page,!0);else{const o={name:"reader",params:e};he.push(o).catch(console.debug)}},routeToDirectionOne(e){e=this.normalizeDirection(e);const t=e==="prev"?-1:1,o=this.page+=t;if(o<0||o>this.books.current.maxPage)return;const a={pk:this.books.current.pk,page:o};this._routeTo(a)},routeToDirection(e){if(e=this.normalizeDirection(e),this.routes[e]){const t=this.routes[e];this._routeTo(t)}else this.routes.books[e]?this.bookChange===e?this._routeTo(this.routes.books[e],this.books[e]):this.setBookChangeFlag(e):console.debug("No route to direction",e)},routeToPage(e){const t={pk:this.books.current.pk,page:e};this._routeTo(t)},routeToBook(e){this._routeTo(this.routes.books[e],this.books[e])},_prefetchSrc(e,t,o=!1,a=!1){if(!e)return!1;const n=o?this.books[t]:this.books.current;if(!n)return!1;let s=e.page;if(a){if(!this.getSettings(n).twoPages)return!1;s+=1}if(s>n.maxPage)return!1;const i={pk:e.pk,page:s,mtime:n.mtime};return Ue(i)},prefetchLinks(e,t,o=!1){if(!o&&this.cacheBook)return{};const a=[this._prefetchSrc(e,t,o,!1),this._prefetchSrc(e,t,o,!0)],n=[];for(const s of a)s&&n.push({..._e,href:s});return{link:n}},prefetchBook(e){if(!this.cacheBook||e.fileType=="PDF")return{};const t=e.pk,o=[];for(let a=0;a<=e.maxPage;a++){const n={pk:t,page:a,mtime:e.mtime},s=Ue(n);s&&o.push({..._e,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function sn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=H(!1),s=H(0),i=_(()=>{const v=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[v]:X(s.value)}:{top:a.value.top}]});st(()=>{K(o,v=>{v?window.addEventListener("scroll",k,{passive:!0}):window.removeEventListener("scroll",k)},{immediate:!0})}),at(()=>{window.removeEventListener("scroll",k)});let l=0;function k(){const v=l>window.scrollY?"up":"down",u=t.value.getBoundingClientRect(),g=parseFloat(a.value.top??0),m=window.scrollY-Math.max(0,s.value-g),b=u.height+Math.max(s.value,g)-window.scrollY-window.innerHeight,C=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;u.height<window.innerHeight-g?(n.value="top",s.value=g):v==="up"&&n.value==="bottom"||v==="down"&&n.value==="top"?(s.value=window.scrollY+u.top-C,n.value=!0):v==="down"&&b<=0?(s.value=0,n.value="bottom"):v==="up"&&m<=0&&(C?n.value!=="top"&&(s.value=-m+C+g,n.value="top"):(s.value=u.top+m,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const an=100,rn=20;function ze(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function We(e){if(e.length<2)return 0;if(e.length===2)return e[1].t===e[0].t?0:(e[1].d-e[0].d)/(e[1].t-e[0].t);let t=0;for(let o=e.length-1;o>0;o--){if(e[o].t===e[o-1].t)continue;const a=ze(t),n=(e[o].d-e[o-1].d)/(e[o].t-e[o-1].t);t+=(n-a)*Math.abs(n),o===e.length-1&&(t*=.5)}return ze(t)*1e3}function ln(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Xt(rn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var v;const s=(v=e[n])==null?void 0:v.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],k=[];for(const u of s){if(i[0]-u[0]>an)break;l.push({t:u[0],d:u[1].clientX}),k.push({t:u[0],d:u[1].clientY})}return{x:We(l),y:We(k),get direction(){const{x:u,y:g}=this,[m,b]=[Math.abs(u),Math.abs(g)];return m>b&&u>=0?"right":m>b&&u<=0?"left":b>m&&g>=0?"down":b>m&&g<=0?"up":un()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function un(){throw new Error}function cn(e){let{isActive:t,isTemporary:o,width:a,touchless:n,position:s}=e;st(()=>{window.addEventListener("touchstart",R,{passive:!0}),window.addEventListener("touchmove",V,{passive:!1}),window.addEventListener("touchend",B,{passive:!0})}),at(()=>{window.removeEventListener("touchstart",R),window.removeEventListener("touchmove",V),window.removeEventListener("touchend",B)});const i=_(()=>["left","right"].includes(s.value)),{addMovement:l,endTouch:k,getVelocity:v}=ln();let u=!1;const g=H(!1),m=H(0),b=H(0);let C;function y(d,c){return(s.value==="left"?d:s.value==="right"?document.documentElement.clientWidth-d:s.value==="top"?d:s.value==="bottom"?document.documentElement.clientHeight-d:Y())-(c?a.value:0)}function x(d){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const f=s.value==="left"?(d-b.value)/a.value:s.value==="right"?(document.documentElement.clientWidth-d-b.value)/a.value:s.value==="top"?(d-b.value)/a.value:s.value==="bottom"?(document.documentElement.clientHeight-d-b.value)/a.value:Y();return c?Math.max(0,Math.min(1,f)):f}function R(d){if(n.value)return;const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY,w=25,D=s.value==="left"?c<w:s.value==="right"?c>document.documentElement.clientWidth-w:s.value==="top"?f<w:s.value==="bottom"?f>document.documentElement.clientHeight-w:Y(),I=t.value&&(s.value==="left"?c<a.value:s.value==="right"?c>document.documentElement.clientWidth-a.value:s.value==="top"?f<a.value:s.value==="bottom"?f>document.documentElement.clientHeight-a.value:Y());(D||I||t.value&&o.value)&&(u=!0,C=[c,f],b.value=y(i.value?c:f,t.value),m.value=x(i.value?c:f),k(d),l(d))}function V(d){const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY;if(u){if(!d.cancelable){u=!1;return}const D=Math.abs(c-C[0]),I=Math.abs(f-C[1]);(i.value?D>I&&D>3:I>D&&I>3)?(g.value=!0,u=!1):(i.value?I:D)>3&&(u=!1)}if(!g.value)return;d.preventDefault(),l(d);const w=x(i.value?c:f,!1);m.value=Math.max(0,Math.min(1,w)),w>1?b.value=y(i.value?c:f,!0):w<0&&(b.value=y(i.value?c:f,!1))}function B(d){if(u=!1,!g.value)return;l(d),g.value=!1;const c=v(d.changedTouches[0].identifier),f=Math.abs(c.x),w=Math.abs(c.y);(i.value?f>w&&f>400:w>f&&w>3)?t.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[s.value]||Y()):t.value=m.value>.5}const E=_(()=>g.value?{transform:s.value==="left"?`translateX(calc(-100% + ${m.value*a.value}px))`:s.value==="right"?`translateX(calc(100% - ${m.value*a.value}px))`:s.value==="top"?`translateY(calc(-100% + ${m.value*a.value}px))`:s.value==="bottom"?`translateY(calc(100% - ${m.value*a.value}px))`:Y(),transition:"none"}:void 0);return{isDragging:g,dragProgress:m,dragStyles:E}}function Y(){throw new Error}const dn=["start","end","left","right","top","bottom"],mn=ee({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>dn.includes(e)},sticky:Boolean,...ke(),...ie(),...so(),...we(),...ut(),...Se(),...le({tag:"nav"}),...ye()},"VNavigationDrawer"),gn=te()({name:"VNavigationDrawer",props:mn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=rt(),{themeClasses:i}=Pe(e),{borderClasses:l}=Te(e),{backgroundColorClasses:k,backgroundColorStyles:v}=ae(Q(e,"color")),{elevationClasses:u}=Ce(e),{displayClasses:g,mobile:m}=ao(e),{roundedClasses:b}=Re(e),C=qt(),y=be(e,"modelValue",null,L=>!!L),{ssrBootStyles:x}=Kt(),{scopeId:R}=lo(),V=qe(),B=H(!1),E=_(()=>e.rail&&e.expandOnHover&&B.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),d=_(()=>Zt(e.location,s.value)),c=_(()=>!e.permanent&&(m.value||e.temporary)),f=_(()=>e.sticky&&!c.value&&d.value!=="bottom");ge(()=>e.expandOnHover&&e.rail!=null,()=>{K(B,L=>a("update:rail",!L))}),ge(()=>!e.disableResizeWatcher,()=>{K(c,L=>!e.permanent&&eo(()=>y.value=!L))}),ge(()=>!e.disableRouteWatcher&&!!C,()=>{K(C.currentRoute,()=>c.value&&(y.value=!1))}),K(()=>e.permanent,L=>{L&&(y.value=!0)}),Qt(()=>{e.modelValue!=null||c.value||(y.value=e.permanent||!m.value)});const{isDragging:w,dragProgress:D,dragStyles:I}=cn({isActive:y,isTemporary:c,width:E,touchless:Q(e,"touchless"),position:d}),F=_(()=>{const L=c.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):E.value;return w.value?L*D.value:L}),{layoutItemStyles:j,layoutItemScrimStyles:O}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:d,layoutSize:F,elementSize:E,active:_(()=>y.value||w.value),disableTransitions:_(()=>w.value),absolute:_(()=>e.absolute||f.value&&typeof ne.value!="string")}),{isStuck:ne,stickyStyles:de}=sn({rootEl:V,isSticky:f,layoutItemStyles:j}),G=ae(_(()=>typeof e.scrim=="string"?e.scrim:null)),Pt=_(()=>({...w.value?{opacity:D.value*.2,transition:"none"}:void 0,...O.value}));it({VList:{bgColor:"transparent"}});function Tt(){B.value=!0}function Ct(){B.value=!1}return oe(()=>{const L=n.image||e.image;return r(Ve,null,[r(e.tag,W({ref:V,onMouseenter:Tt,onMouseleave:Ct,class:["v-navigation-drawer",`v-navigation-drawer--${d.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":B.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":c.value,"v-navigation-drawer--active":y.value,"v-navigation-drawer--sticky":f.value},i.value,k.value,l.value,g.value,u.value,b.value,e.class],style:[v.value,j.value,I.value,x.value,de.value,e.style]},R,o),{default:()=>{var Ee,Ie,Le;return[L&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(lt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ee=n.prepend)==null?void 0:Ee.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ie=n.default)==null?void 0:Ie.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[(Le=n.append)==null?void 0:Le.call(n)])]}}),r(Jt,{name:"fade-transition"},{default:()=>[c.value&&(w.value||y.value)&&!!e.scrim&&r("div",W({class:["v-navigation-drawer__scrim",G.backgroundColorClasses.value],style:[Pt.value,G.backgroundColorStyles.value],onClick:()=>y.value=!1},R),null)]})])}),{isStuck:ne}}}),hn={name:"SettingsDrawer",components:{SettingsCommonPanel:Yo,SettingsFooter:bt,VersionFooter:vt},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...ue($,["isCodexViewable"]),...to(re,["isSettingsDrawerOpen"]),...z(nn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},fn={class:"settingsDrawerContainer"},vn={id:"topBlock"},bn={class:"settingsHeader"},pn={id:"footerGroup"};function _n(e,t,o,a,n,s){const i=J("SettingsCommonPanel"),l=bt,k=vt;return p(),S(gn,W(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=v=>e.isSettingsDrawerOpen=v),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:h(()=>[r(k)]),default:h(()=>[A("div",fn,[A("div",vn,[A("header",bn,[A("h3",null,P(o.title),1)]),e.isCodexViewable?(p(),S(Be(o.panel),{key:0})):N("",!0),e.isCodexViewable?(p(),S(pe,{key:1})):N("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(pe)]),A("div",pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const An=M(hn,[["render",_n],["__scopeId","data-v-a38da0ea"]]),je=Je(et(()=>dt(()=>import("./admin-drawer-panel-UQNBz5Mr.js").then(e=>e.dy),__vite__mapDeps([0,1])))),kn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:je},data(){return{mdiMenu:oo,AdminSettingsButtonProgress:je}},computed:{...z($,["isUserAdmin"])}};function wn(e,t,o,a,n,s){return p(),S(Xe,W(e.$attrs,{icon:"",title:"Settings"}),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(p(),S(Be(n.AdminSettingsButtonProgress),{key:0})):N("",!0)]),_:1},16)}const Nn=M(kn,[["render",wn]]),Sn=ee({text:String,...ie(),...le()},"VToolbarTitle"),yn=te()({name:"VToolbarTitle",props:Sn(),setup(e,t){let{slots:o}=t;return oe(()=>{const a=!!(o.default||o.text||e.text);return r(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var n;return[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,(n=o.default)==null?void 0:n.call(o)])]}})}),{}}}),Pn=[null,"prominent","default","comfortable","compact"],Tn=ee({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Pn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...ke(),...ie(),...we(),...Se(),...le({tag:"header"}),...ye()},"VToolbar"),$n=te()({name:"VToolbar",props:Tn(),setup(e,t){var b;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ae(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Ce(e),{roundedClasses:l}=Re(e),{themeClasses:k}=Pe(e),{rtlClasses:v}=rt(),u=H(!!(e.extended||(b=o.extension)!=null&&b.call(o))),g=_(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),m=_(()=>u.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return it({VBtn:{variant:"text"}}),oe(()=>{var R;const C=!!(e.title||o.title),y=!!(o.image||e.image),x=(R=o.extension)==null?void 0:R.call(o);return u.value=!!(e.extended||x),r(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,s.value,i.value,l.value,k.value,v.value,e.class],style:[n.value,e.style]},{default:()=>[y&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(lt,{key:"image-img",cover:!0,src:e.image},null)]),r(Z,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>{var V,B,E;return[r("div",{class:"v-toolbar__content",style:{height:X(g.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(V=o.prepend)==null?void 0:V.call(o)]),C&&r(yn,{key:"title",text:e.title},{text:o.title}),(B=o.default)==null?void 0:B.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(E=o.append)==null?void 0:E.call(o)])])]}}),r(Z,{defaults:{VTabs:{height:X(m.value)}}},{default:()=>[r(Qe,null,{default:()=>[u.value&&r("div",{class:"v-toolbar__extension",style:{height:X(m.value)}},[x])]})]})]})}),{contentHeight:g,extensionHeight:m}}});export{Nn as S,yn as V,An as _,$n as a,en as b,Fe as c,Ue as d,gn as e,Qo as f,tn as g,In as h,Ln as i,Jo as j,nn as u};
7
+ import{x as ee,bY as ke,E as ie,bL as we,bK as Se,aq as le,F as ye,G as te,I as Pe,at as ae,au as Q,bZ as Te,bP as Ce,bS as Re,s as H,y as Rt,h as _,K as oe,L as r,z as X,a$ as Ge,b_ as Vt,M as z,k as re,ax as ue,m as $,N as ce,_ as M,R as p,O as S,P as h,aD as A,ae as P,ay as q,aB as N,b$ as Ye,c0 as Bt,c1 as Dt,aa as T,ad as U,be as xt,bh as Et,c2 as It,Q as J,am as W,ak as Xe,c3 as Lt,ar as be,c4 as At,r as qe,C as Nt,c5 as $t,al as Ve,c6 as Z,bQ as Ot,c7 as Mt,bT as Ut,c8 as Ft,af as Ke,b1 as Ht,b2 as zt,ag as Ze,aX as me,c9 as Qe,ca as Wt,aC as Je,bn as et,aA as Be,aT as pe,bU as tt,cb as ot,H as De,cc as nt,l as jt,cd as Gt,ce as Yt,B as st,a as K,o as at,cf as Xt,J as rt,cg as qt,bI as Kt,ch as Zt,ci as ge,cj as Qt,av as it,bV as lt,ck as Jt,n as eo,a9 as to,bi as oo}from"./admin-drawer-panel-CzxhSiRn.js";import{m as ut,b as ct,_ as dt,C as Ae,r as he,u as no,A as Ne,c as so,d as ao}from"./main-JHk9CBom.js";import{c as ro,t as io}from"./index-DUjeNg4x.js";import{V as mt,a as lo}from"./confirm-footer-4RE1GmaG.js";import{_ as gt}from"./change-password-dialog-DxrgqKSG.js";import{_ as ht,a as fe,b as uo}from"./VSlideGroup-BpKJ2pWX.js";import{a as co,c as mo,u as go,V as $e,d as Oe}from"./VSelectionControl-K1Fk4HTO.js";const ho=ee({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...ke(),...ie(),...we(),...ut(),...Se(),...le({tag:"footer"}),...ye()},"VFooter"),ft=te()({name:"VFooter",props:ho(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Pe(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ae(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Ce(e),{roundedClasses:k}=Re(e),v=H(32),{resizeRef:u}=Rt(b=>{b.length&&(v.value=b[0].target.clientHeight)}),g=_(()=>e.height==="auto"?v.value:parseInt(e.height,10)),{layoutItemStyles:m}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:_(()=>"bottom"),layoutSize:g,elementSize:_(()=>e.height==="auto"?void 0:g.value),active:_(()=>e.app),absolute:Q(e,"absolute")});return oe(()=>r(e.tag,{ref:u,class:["v-footer",a.value,n.value,i.value,l.value,k.value,e.class],style:[s.value,e.app?m.value:{height:X(e.height)},e.style]},o)),{}}}),fo={name:"VersionFooter",data(){return{mdiOpenInNew:Ge,mdiContentCopy:Vt}},computed:{...z(re,{versions:e=>e.versions}),...ue($,["isUserAdmin"]),outdated:function(){return this.isUserAdmin&&this.semverGreaterThan(this.versions.latest>this.versions.installed)},versionTitle:function(){return this.outdated?`v${this.versions.latest} is available`:"up to date"}},created(){this.loadVersions()},methods:{...ce(re,["loadVersions"]),semverGreaterThan(e,t){try{if(!e||!t)return!1;const o=e.split("."),a=t.split(".");for(const[n,s]of o.entries())if(+s>+a[n])return!0}catch(o){console.debug("compare codex versions",e,">",t,o)}return!1}}},vo={id:"version"},bo={key:0,id:"latest"};function po(e,t,o,a,n,s){return p(),S(ft,{id:"version-footer",title:s.versionTitle},{default:h(()=>[A("div",vo,"codex v"+P(e.versions.installed),1),s.outdated?(p(),q("div",bo," codex v"+P(e.versions.latest)+" is available ",1)):N("",!0)]),_:1},8,["title"])}const vt=M(fo,[["render",po],["__scopeId","data-v-cd481730"]]),_o={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ye,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?Bt:Dt},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&ro(this.url,this.showTooltip)}}},ko=["title"],wo={key:0},So={class:"copied"},yo={key:0,class:"subtitle"},Po={class:"opdsUrl"};function To(e,t,o,a,n,s){return p(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[A("h3",null,[T(P(o.title)+" ",1),s.clipBoardEnabled?(p(),q("span",wo,[r(U,{class:"clipBoardIcon",size:"small"},{default:h(()=>[T(P(s.clipBoardIcon),1)]),_:1}),r(It,null,{default:h(()=>[xt(A("span",So,"Copied",512),[[Et,n.showTooltip.show]])]),_:1})])):N("",!0)]),o.subtitle?(p(),q("div",yo,P(o.subtitle),1)):N("",!0),A("div",Po,P(o.url),1)],8,ko)}const Co=M(_o,[["render",To],["__scopeId","data-v-68a52a66"]]),Ro={name:"OPDSDialog",components:{OPDSUrl:Co},data(){return{mdiRss:Ye,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Vo={id:"opds"};function Bo(e,t,o,a,n,s){const i=J("OPDSUrl");return p(),S(mt,{"max-width":"30em"},{activator:h(({props:l})=>[r(Xe,W({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),_:2},1040)]),default:h(()=>[A("div",Vo,[A("h2",null,[r(U,{size:"x=small",class:"inline"},{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),r(i,{title:"v1.2",url:n.opdsV1URL},null,8,["url"]),r(i,{title:"v2.0",url:n.opdsV2URL,subtitle:"OPDS v2 is experimental and not widely or well supported by clients"},null,8,["url"])])]),_:1})}const Do=M(Ro,[["render",Bo],["__scopeId","data-v-741734ce"]]),xo={name:"SettingsFooter",components:{OPDSDialog:Do},data(){return{mdiOpenInNew:Ge,mdiSourceRepository:Lt}},computed:{...ue($,["isCodexViewable"])}},Eo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Io(e,t,o,a,n,s){const i=J("OPDSDialog");return p(),S(ft,{id:"settingsFooter"},{default:h(()=>[e.isCodexViewable?(p(),S(i,{key:0})):N("",!0),A("a",Eo,[r(U,{id:"repoIcon",size:"x-small"},{default:h(()=>[T(P(n.mdiSourceRepository),1)]),_:1}),T(" repository"),r(U,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:h(()=>[T(P(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const bt=M(xo,[["render",Io],["__scopeId","data-v-f9eb593e"]]),Lo=ee({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...co(),...mo()},"VSwitch"),Ao=te()({name:"VSwitch",inheritAttrs:!1,props:Lo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=be(e,"indeterminate"),s=be(e,"modelValue"),{loaderClasses:i}=At(e),{isFocused:l,focus:k,blur:v}=go(e),u=qe(),g=_(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),m=Nt(),b=_(()=>e.id||`switch-${m}`);function C(){n.value&&(n.value=!1)}function y(x){var R,V;x.stopPropagation(),x.preventDefault(),(V=(R=u.value)==null?void 0:R.input)==null||V.click()}return oe(()=>{const[x,R]=$t(o),V=$e.filterProps(e),B=Oe.filterProps(e);return r($e,W({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},x,V,{modelValue:s.value,"onUpdate:modelValue":E=>s.value=E,id:b.value,focused:l.value,style:e.style}),{...a,default:E=>{let{id:d,messagesId:c,isDisabled:f,isReadonly:w,isValid:D}=E;const I={model:s,isValid:D};return r(Oe,W({ref:u},B,{modelValue:s.value,"onUpdate:modelValue":[F=>s.value=F,C],id:d.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:f.value,readonly:w.value,onFocus:k,onBlur:v},R),{...a,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:O}=F;return r("div",{class:["v-switch__track",...j.value],style:O.value,onClick:y},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](I)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](I)])])},input:F=>{let{inputNode:j,icon:O,backgroundColorClasses:ne,backgroundColorStyles:de}=F;return r(Ve,null,[j,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset?void 0:ne.value],style:e.inset?void 0:de.value},[a.thumb?r(Z,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...I,icon:O})]}):r(Ot,null,{default:()=>[e.loading?r(Mt,{name:"v-switch",active:!0,color:D.value===!1?void 0:g.value},{default:G=>a.loader?a.loader(G):r(Ut,{active:G.isActive,color:G.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(U,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),No={name:"AuthLoginDialog",components:{SubmitFooter:ht},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,showDialog:!1,registerMode:!1,mdiLogin:Ft}},computed:{...z(re,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...z($,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),submitButtonLabel:function(){return this.registerMode?"Register":"Login"}},watch:{showDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>this.submitButtonEnabled=t).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){window.addEventListener("keyup",this._keyListener)},beforeUnmount(){window.removeEventListener("keyup",this._keyListener)},methods:{...ce($,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>this.showDialog=this.formErrors&&this.formErrors.length>0).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyListener(e){e.stopImmediatePropagation()}}};function $o(e,t,o,a,n,s){const i=ht;return p(),S(mt,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:h(({props:l})=>[r(Ze,Ht(zt(l)),{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiLogin),1)]),_:1}),T(" Login ")]),_:1})]),_:2},1040)]),default:h(()=>[r(uo,{id:"authDialog",ref:"form"},{default:h(()=>[r(fe,{modelValue:n.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>n.credentials.username=l),autocomplete:"username",label:"Username",rules:n.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=me(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(fe,{ref:"password",modelValue:n.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>n.credentials.password=l),autocomplete:n.registerMode?"new-password":"current-password",label:"Password",rules:n.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=me(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(Qe,null,{default:h(()=>[n.registerMode?(p(),S(fe,{key:0,ref:"passwordConfirm",modelValue:n.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>n.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:n.rules.passwordConfirm,clearable:"",type:"password",onKeydown:me(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):N("",!0)]),_:1}),e.adminFlags.registration?(p(),S(Ao,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:h(()=>[T(" Register ")]),_:1},8,["modelValue"])):N("",!0),r(i,{verb:n.registerMode?"Register":"Login",table:"",disabled:!n.submitButtonEnabled,onSubmit:s.submit,onCancel:t[6]||(t[6]=l=>n.showDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const Oo=M(No,[["render",$o],["__scopeId","data-v-ef06f84f"]]),Mo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Wt}},computed:{...z($,{username:e=>e.user.username})},methods:{...ce($,["logout"])}};function Uo(e,t,o,a,n,s){return p(),S(Ze,{onClick:e.logout},{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(e.mdiLogout),1)]),_:1}),T("Logout "+P(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Fo=M(Mo,[["render",Uo]]),Ho={name:"AuthMenu",components:{ChangePasswordDialog:gt,AuthLoginDialog:Oo,AuthLogoutItem:Fo},computed:{...z($,{user:e=>e.user})},methods:{...ce($,["logout"])}};function zo(e,t,o,a,n,s){const i=J("AuthLogoutItem"),l=gt,k=J("AuthLoginDialog");return p(),q(Ve,null,[e.user?(p(),S(i,{key:0})):N("",!0),e.user?(p(),S(l,{key:1,user:e.user},null,8,["user"])):(p(),S(k,{key:2}))],64)}const pt=M(Ho,[["render",zo]]),Me=Je(et(()=>dt(()=>import("./admin-drawer-panel-CzxhSiRn.js").then(e=>e.dx),__vite__mapDeps([0,1])))),Wo={name:"SettingsCommonPanel",components:{AuthMenu:pt,AdminMenu:Me},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:Me}},computed:{...ue($,["isUserAdmin"])}},jo={id:"commonPanel"};function Go(e,t,o,a,n,s){const i=pt;return p(),q("div",jo,[r(i),e.isUserAdmin?(p(),S(pe,{key:0})):N("",!0),e.isUserAdmin?(p(),S(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):N("",!0)])}const Yo=M(Wo,[["render",Go],["__scopeId","data-v-a21632a4"]]),Xo=e=>{const t=e.pk,o=ot();return e={...e,...o},delete e.pk,De.get(`c/${t}`,{params:e})},qo=()=>{const e=ot();return De.get("c/settings",{params:e})},Ko=e=>De.put("c/settings",e),In=({pk:e,mtime:t})=>`${nt(e)}/download/comic-${e}.cbz?mtime=${t}`,Ln=({pk:e,page:t,mtime:o})=>`${nt(e)}/${t}/page.jpg?mtime=${o}`,Ue=({pk:e,page:t,mtime:o})=>`${tt(e)}/${t}/page.jpg?mtime=${o}`,Zo=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,ve={getPdfBookSource:Zo,getReaderBasePath:tt,getReaderInfo:Xo,getReaderSettings:qo,setReaderSettings:Ko},Qo=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},Jo=function({issueNumber:e,issueSuffix:t},o){let a;try{e==null&&!t&&(e=0);const n=Number.parseFloat(e),s=Math.floor(n);o===void 0&&(o=0),n===s?a=s.toString():(a=n.toString(),o+=a.split(".")[1].length+1),a=a.padStart(o,"0")}catch{a=""}return t&&(a+=t),a},en=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+Jo({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},tn=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=Qo(t),l=en({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},_t={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(_t);const kt={cacheBook:!1};Object.freeze(kt);const se=new Set(["",null,void 0]);Object.freeze(se);const wt={prev:"next",next:"prev"};Object.freeze(wt);const _e={rel:"prefetch",as:"image"};Object.freeze(_e);const xe=new Set(["ttb","btt"]);Object.freeze(xe);const St=new Set(["rtl","btt"]);Object.freeze(St);const Fe=1,yt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(yt);const on=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",He=e=>{xe.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},nn=jt("reader",{state:()=>({choices:{fitTo:Ae.reader.fitTo,readingDirection:Ae.reader.readingDirection,nullValues:se},readerSettings:{fitTo:on(),twoPages:!1,readingDirection:"ltr",readRtlInReverse:!1},books:{current:void 0,prev:!1,next:!1},arcs:[],arc:{},page:void 0,routes:{prev:!1,next:!1,books:{prev:!1,next:!1}},bookChange:void 0,reactWithScroll:!1,clientSettings:{cacheBook:!1,scale:Fe}}),getters:{groupBooks(e){const t=[];return e.books.prev[0]&&t.push[e.books.prev[0]],t.push[e.books.current],e.books.next[0]&&t.push[e.books.next[0]],t},activeSettings(e){return e.getSettings(e.books.current)||{}},activeTitle(e){var a;const t=e.books.current;let o;return((a=e.arcs[0])==null?void 0:a.group)==="f"&&(o=t==null?void 0:t.filename),o||(o=t?tn(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return xe.has(e.activeSettings.readingDirection)},isPDF(e){var t,o;return((o=(t=e.books)==null?void 0:t.current)==null?void 0:o.fileType)=="PDF"},cacheBook(e){return e.clientSettings.cacheBook&&!(this.isPDF&&this.isVertical)},isPagesNotRoutes(e){return e.isVertical||this.cacheBook},isReadInReverse(e){return St.has(e.activeSettings.readingDirection)},isBTT(e){return e.activeSettings.readingDirection==="btt"},isFirstPage(e){return e.page===0},isLastPage(e){const t=e.books.current?e.books.current.maxPage:0,o=e.activeSettings.twoPages?1:0,a=t-o;return this.page>=a}},actions:{setReadRTLInReverse(e){return this.readerSettings.readRtlInReverse&&e.readingDirection==="rtl"?{...e,readingDirection:"ltr"}:e},getSettings(e){const t={...se};let o=e?e.settings:{};o=this.setReadRTLInReverse(o);const a=[this.readerSettings,o];for(const n of a)for(const[s,i]of Object.entries(n))se.has(i)||(t[s]=i);return He(t),t},bookChangeLocation(e){let t;return this.isBTT?t=e==="next"?"left":"right":t=e==="next"?"right":"left",t},bookChangeCursorClass(e){let t;return this.isReadInReverse?t=e==="next"?"up":"down":t=e==="next"?"down":"up",t+"Cursor"},bookChangeShow(e){return e==="prev"?this.books.prev&&this.isFirstPage:this.books.next&&this.isLastPage},bookChangeIcon(e){let t=e==="next";return this.isBTT&&(t=!t),t?Gt:Yt},isCoverPage(e,t){return e.readLtr!==!1&&t===0||e.readLtr&&t===e.maxPage},_getRouteParams(e,t,o){const a=o==="prev"?-1:1;let n=1;this.getSettings(e).twoPages&&!this.isCoverPage(e,+t+a)&&(n=2),n=n*a;const i=+t+n;let l=!1;return i>=0&&i<=e.maxPage&&(l={pk:e.pk,page:i}),l},fitToClass(e){const t=this.getSettings(e),o={};let a;if(this.clientSettings.scale>Fe?a="Orig":a=yt[t.fitTo],a){let n="fitTo";n+=io(a),this.isVertical?n+="Vertical":t.twoPages&&(n+="Two"),o[n]=!0}return o},_updateSettings(e,t){t?(this.books.current.settings={...this.books.current.settings,...e},He(this.books.current.settings)):this.readerSettings={...this.readerSettings,...e}},_getBookRoutePage(e,t){let o=0;if(t&&e.readLtr!==!1||!t&&e.readLtr===!1){const n=this.getSettings(e).twoPages?-1:0;o=e.maxPage+n}return o},_getBookRoute(e,t){if(!e)return!1;const o=this._getBookRoutePage(e,t);return{pk:e.pk,page:o}},_getBookRoutes(e,t){return{prev:this._getBookRoute(e,!0),next:this._getBookRoute(t,!1)}},async setRoutesAndBookmarkPage(e){const t=this.books.current;this.$patch(o=>{o.routes.prev=this._getRouteParams(t,e,"prev"),o.routes.next=this._getRouteParams(t,e,"next")}),await this._setBookmarkPage(e).then(()=>(this.bookChange=void 0,!0))},setActivePage(e,t=!0){if(e<0)return console.warn("Page out of bounds. Redirecting to 0."),this.routeToPage(0);if(e>this.books.current.maxPage)return console.warn(`Page out of bounds. Redirecting to ${this.books.current.maxPage}.`),this.routeToPage(this.books.current.maxPage);if(this.reactWithScroll=!!t,this.page=+e,this.setRoutesAndBookmarkPage(e),this.isPagesNotRoutes){const o={params:{pk:this.books.current.pk,page:e}},{href:a}=he.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return ve.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await ve.getReaderInfo(e).then(t=>{const o=t.data,a=[o.books.prevBook,o.books.current,o.books.nextBook];for(const s of a)s&&!s.settings&&(s.settings={});const n=this._getBookRoutes(o.books.prevBook,o.books.nextBook);return this.$patch(s=>{s.books.current=o.books.current,s.books.prev=o.books.prevBook,s.books.next=o.books.nextBook,s.arcs=o.arcs,s.arc=o.arc,s.routes.prev=this._getRouteParams(s.books.current,e.page,"prev"),s.routes.next=this._getRouteParams(s.books.current,e.page,"next"),s.routes.books=n}),!0}).catch(t=>{console.debug(t);const o=no().page,a=o&&o.routes?o.routes.last:{name:"home"};return he.push(a)})},async _setBookmarkPage(e){const t={group:"c",pk:this.books.current.pk};e=Math.max(Math.min(this.books.current.maxPage,e),0);const o={page:e};await Ne.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Ne.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(_t),this.setSettingsClient(kt)},async setSettingsGlobal(e){this._updateSettings(e,!1),await ve.setReaderSettings(this.readerSettings),await this.clearSettingsLocal()},setBookChangeFlag(e){e=this.normalizeDirection(e),this.bookChange=this.routes.books[e]?e:void 0},normalizeDirection(e){return this.isReadInReverse?wt[e]:e},_validateRoute(e,t){if(t||(t=this.books.current),!t)return{};const o=t.maxPage??0;return e.page>o?(e.page=o,console.warn("Tried to navigate past the end of the book.")):e.page<0&&(e.page=0,console.warn("Tried to navigate before the beginning of the book.")),e},_routeTo(e,t){if(e=this._validateRoute(e,t),this.isPagesNotRoutes&&+e.pk===this.books.current.pk)this.setActivePage(+e.page,!0);else{const o={name:"reader",params:e};he.push(o).catch(console.debug)}},routeToDirectionOne(e){e=this.normalizeDirection(e);const t=e==="prev"?-1:1,o=this.page+=t;if(o<0||o>this.books.current.maxPage)return;const a={pk:this.books.current.pk,page:o};this._routeTo(a)},routeToDirection(e){if(e=this.normalizeDirection(e),this.routes[e]){const t=this.routes[e];this._routeTo(t)}else this.routes.books[e]?this.bookChange===e?this._routeTo(this.routes.books[e],this.books[e]):this.setBookChangeFlag(e):console.debug("No route to direction",e)},routeToPage(e){const t={pk:this.books.current.pk,page:e};this._routeTo(t)},routeToBook(e){this._routeTo(this.routes.books[e],this.books[e])},_prefetchSrc(e,t,o=!1,a=!1){if(!e)return!1;const n=o?this.books[t]:this.books.current;if(!n)return!1;let s=e.page;if(a){if(!this.getSettings(n).twoPages)return!1;s+=1}if(s>n.maxPage)return!1;const i={pk:e.pk,page:s,mtime:n.mtime};return Ue(i)},prefetchLinks(e,t,o=!1){if(!o&&this.cacheBook)return{};const a=[this._prefetchSrc(e,t,o,!1),this._prefetchSrc(e,t,o,!0)],n=[];for(const s of a)s&&n.push({..._e,href:s});return{link:n}},prefetchBook(e){if(!this.cacheBook||e.fileType=="PDF")return{};const t=e.pk,o=[];for(let a=0;a<=e.maxPage;a++){const n={pk:t,page:a,mtime:e.mtime},s=Ue(n);s&&o.push({..._e,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function sn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=H(!1),s=H(0),i=_(()=>{const v=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[v]:X(s.value)}:{top:a.value.top}]});st(()=>{K(o,v=>{v?window.addEventListener("scroll",k,{passive:!0}):window.removeEventListener("scroll",k)},{immediate:!0})}),at(()=>{window.removeEventListener("scroll",k)});let l=0;function k(){const v=l>window.scrollY?"up":"down",u=t.value.getBoundingClientRect(),g=parseFloat(a.value.top??0),m=window.scrollY-Math.max(0,s.value-g),b=u.height+Math.max(s.value,g)-window.scrollY-window.innerHeight,C=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;u.height<window.innerHeight-g?(n.value="top",s.value=g):v==="up"&&n.value==="bottom"||v==="down"&&n.value==="top"?(s.value=window.scrollY+u.top-C,n.value=!0):v==="down"&&b<=0?(s.value=0,n.value="bottom"):v==="up"&&m<=0&&(C?n.value!=="top"&&(s.value=-m+C+g,n.value="top"):(s.value=u.top+m,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const an=100,rn=20;function ze(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function We(e){if(e.length<2)return 0;if(e.length===2)return e[1].t===e[0].t?0:(e[1].d-e[0].d)/(e[1].t-e[0].t);let t=0;for(let o=e.length-1;o>0;o--){if(e[o].t===e[o-1].t)continue;const a=ze(t),n=(e[o].d-e[o-1].d)/(e[o].t-e[o-1].t);t+=(n-a)*Math.abs(n),o===e.length-1&&(t*=.5)}return ze(t)*1e3}function ln(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Xt(rn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var v;const s=(v=e[n])==null?void 0:v.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],k=[];for(const u of s){if(i[0]-u[0]>an)break;l.push({t:u[0],d:u[1].clientX}),k.push({t:u[0],d:u[1].clientY})}return{x:We(l),y:We(k),get direction(){const{x:u,y:g}=this,[m,b]=[Math.abs(u),Math.abs(g)];return m>b&&u>=0?"right":m>b&&u<=0?"left":b>m&&g>=0?"down":b>m&&g<=0?"up":un()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function un(){throw new Error}function cn(e){let{isActive:t,isTemporary:o,width:a,touchless:n,position:s}=e;st(()=>{window.addEventListener("touchstart",R,{passive:!0}),window.addEventListener("touchmove",V,{passive:!1}),window.addEventListener("touchend",B,{passive:!0})}),at(()=>{window.removeEventListener("touchstart",R),window.removeEventListener("touchmove",V),window.removeEventListener("touchend",B)});const i=_(()=>["left","right"].includes(s.value)),{addMovement:l,endTouch:k,getVelocity:v}=ln();let u=!1;const g=H(!1),m=H(0),b=H(0);let C;function y(d,c){return(s.value==="left"?d:s.value==="right"?document.documentElement.clientWidth-d:s.value==="top"?d:s.value==="bottom"?document.documentElement.clientHeight-d:Y())-(c?a.value:0)}function x(d){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const f=s.value==="left"?(d-b.value)/a.value:s.value==="right"?(document.documentElement.clientWidth-d-b.value)/a.value:s.value==="top"?(d-b.value)/a.value:s.value==="bottom"?(document.documentElement.clientHeight-d-b.value)/a.value:Y();return c?Math.max(0,Math.min(1,f)):f}function R(d){if(n.value)return;const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY,w=25,D=s.value==="left"?c<w:s.value==="right"?c>document.documentElement.clientWidth-w:s.value==="top"?f<w:s.value==="bottom"?f>document.documentElement.clientHeight-w:Y(),I=t.value&&(s.value==="left"?c<a.value:s.value==="right"?c>document.documentElement.clientWidth-a.value:s.value==="top"?f<a.value:s.value==="bottom"?f>document.documentElement.clientHeight-a.value:Y());(D||I||t.value&&o.value)&&(u=!0,C=[c,f],b.value=y(i.value?c:f,t.value),m.value=x(i.value?c:f),k(d),l(d))}function V(d){const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY;if(u){if(!d.cancelable){u=!1;return}const D=Math.abs(c-C[0]),I=Math.abs(f-C[1]);(i.value?D>I&&D>3:I>D&&I>3)?(g.value=!0,u=!1):(i.value?I:D)>3&&(u=!1)}if(!g.value)return;d.preventDefault(),l(d);const w=x(i.value?c:f,!1);m.value=Math.max(0,Math.min(1,w)),w>1?b.value=y(i.value?c:f,!0):w<0&&(b.value=y(i.value?c:f,!1))}function B(d){if(u=!1,!g.value)return;l(d),g.value=!1;const c=v(d.changedTouches[0].identifier),f=Math.abs(c.x),w=Math.abs(c.y);(i.value?f>w&&f>400:w>f&&w>3)?t.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[s.value]||Y()):t.value=m.value>.5}const E=_(()=>g.value?{transform:s.value==="left"?`translateX(calc(-100% + ${m.value*a.value}px))`:s.value==="right"?`translateX(calc(100% - ${m.value*a.value}px))`:s.value==="top"?`translateY(calc(-100% + ${m.value*a.value}px))`:s.value==="bottom"?`translateY(calc(100% - ${m.value*a.value}px))`:Y(),transition:"none"}:void 0);return{isDragging:g,dragProgress:m,dragStyles:E}}function Y(){throw new Error}const dn=["start","end","left","right","top","bottom"],mn=ee({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>dn.includes(e)},sticky:Boolean,...ke(),...ie(),...so(),...we(),...ut(),...Se(),...le({tag:"nav"}),...ye()},"VNavigationDrawer"),gn=te()({name:"VNavigationDrawer",props:mn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=rt(),{themeClasses:i}=Pe(e),{borderClasses:l}=Te(e),{backgroundColorClasses:k,backgroundColorStyles:v}=ae(Q(e,"color")),{elevationClasses:u}=Ce(e),{displayClasses:g,mobile:m}=ao(e),{roundedClasses:b}=Re(e),C=qt(),y=be(e,"modelValue",null,L=>!!L),{ssrBootStyles:x}=Kt(),{scopeId:R}=lo(),V=qe(),B=H(!1),E=_(()=>e.rail&&e.expandOnHover&&B.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),d=_(()=>Zt(e.location,s.value)),c=_(()=>!e.permanent&&(m.value||e.temporary)),f=_(()=>e.sticky&&!c.value&&d.value!=="bottom");ge(()=>e.expandOnHover&&e.rail!=null,()=>{K(B,L=>a("update:rail",!L))}),ge(()=>!e.disableResizeWatcher,()=>{K(c,L=>!e.permanent&&eo(()=>y.value=!L))}),ge(()=>!e.disableRouteWatcher&&!!C,()=>{K(C.currentRoute,()=>c.value&&(y.value=!1))}),K(()=>e.permanent,L=>{L&&(y.value=!0)}),Qt(()=>{e.modelValue!=null||c.value||(y.value=e.permanent||!m.value)});const{isDragging:w,dragProgress:D,dragStyles:I}=cn({isActive:y,isTemporary:c,width:E,touchless:Q(e,"touchless"),position:d}),F=_(()=>{const L=c.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):E.value;return w.value?L*D.value:L}),{layoutItemStyles:j,layoutItemScrimStyles:O}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:d,layoutSize:F,elementSize:E,active:_(()=>y.value||w.value),disableTransitions:_(()=>w.value),absolute:_(()=>e.absolute||f.value&&typeof ne.value!="string")}),{isStuck:ne,stickyStyles:de}=sn({rootEl:V,isSticky:f,layoutItemStyles:j}),G=ae(_(()=>typeof e.scrim=="string"?e.scrim:null)),Pt=_(()=>({...w.value?{opacity:D.value*.2,transition:"none"}:void 0,...O.value}));it({VList:{bgColor:"transparent"}});function Tt(){B.value=!0}function Ct(){B.value=!1}return oe(()=>{const L=n.image||e.image;return r(Ve,null,[r(e.tag,W({ref:V,onMouseenter:Tt,onMouseleave:Ct,class:["v-navigation-drawer",`v-navigation-drawer--${d.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":B.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":c.value,"v-navigation-drawer--active":y.value,"v-navigation-drawer--sticky":f.value},i.value,k.value,l.value,g.value,u.value,b.value,e.class],style:[v.value,j.value,I.value,x.value,de.value,e.style]},R,o),{default:()=>{var Ee,Ie,Le;return[L&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(lt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ee=n.prepend)==null?void 0:Ee.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ie=n.default)==null?void 0:Ie.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[(Le=n.append)==null?void 0:Le.call(n)])]}}),r(Jt,{name:"fade-transition"},{default:()=>[c.value&&(w.value||y.value)&&!!e.scrim&&r("div",W({class:["v-navigation-drawer__scrim",G.backgroundColorClasses.value],style:[Pt.value,G.backgroundColorStyles.value],onClick:()=>y.value=!1},R),null)]})])}),{isStuck:ne}}}),hn={name:"SettingsDrawer",components:{SettingsCommonPanel:Yo,SettingsFooter:bt,VersionFooter:vt},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...ue($,["isCodexViewable"]),...to(re,["isSettingsDrawerOpen"]),...z(nn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},fn={class:"settingsDrawerContainer"},vn={id:"topBlock"},bn={class:"settingsHeader"},pn={id:"footerGroup"};function _n(e,t,o,a,n,s){const i=J("SettingsCommonPanel"),l=bt,k=vt;return p(),S(gn,W(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=v=>e.isSettingsDrawerOpen=v),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:h(()=>[r(k)]),default:h(()=>[A("div",fn,[A("div",vn,[A("header",bn,[A("h3",null,P(o.title),1)]),e.isCodexViewable?(p(),S(Be(o.panel),{key:0})):N("",!0),e.isCodexViewable?(p(),S(pe,{key:1})):N("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(pe)]),A("div",pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const An=M(hn,[["render",_n],["__scopeId","data-v-a38da0ea"]]),je=Je(et(()=>dt(()=>import("./admin-drawer-panel-CzxhSiRn.js").then(e=>e.dy),__vite__mapDeps([0,1])))),kn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:je},data(){return{mdiMenu:oo,AdminSettingsButtonProgress:je}},computed:{...z($,["isUserAdmin"])}};function wn(e,t,o,a,n,s){return p(),S(Xe,W(e.$attrs,{icon:"",title:"Settings"}),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(p(),S(Be(n.AdminSettingsButtonProgress),{key:0})):N("",!0)]),_:1},16)}const Nn=M(kn,[["render",wn]]),Sn=ee({text:String,...ie(),...le()},"VToolbarTitle"),yn=te()({name:"VToolbarTitle",props:Sn(),setup(e,t){let{slots:o}=t;return oe(()=>{const a=!!(o.default||o.text||e.text);return r(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var n;return[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,(n=o.default)==null?void 0:n.call(o)])]}})}),{}}}),Pn=[null,"prominent","default","comfortable","compact"],Tn=ee({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Pn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...ke(),...ie(),...we(),...Se(),...le({tag:"header"}),...ye()},"VToolbar"),$n=te()({name:"VToolbar",props:Tn(),setup(e,t){var b;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ae(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Ce(e),{roundedClasses:l}=Re(e),{themeClasses:k}=Pe(e),{rtlClasses:v}=rt(),u=H(!!(e.extended||(b=o.extension)!=null&&b.call(o))),g=_(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),m=_(()=>u.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return it({VBtn:{variant:"text"}}),oe(()=>{var R;const C=!!(e.title||o.title),y=!!(o.image||e.image),x=(R=o.extension)==null?void 0:R.call(o);return u.value=!!(e.extended||x),r(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,s.value,i.value,l.value,k.value,v.value,e.class],style:[n.value,e.style]},{default:()=>[y&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(lt,{key:"image-img",cover:!0,src:e.image},null)]),r(Z,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>{var V,B,E;return[r("div",{class:"v-toolbar__content",style:{height:X(g.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(V=o.prepend)==null?void 0:V.call(o)]),C&&r(yn,{key:"title",text:e.title},{text:o.title}),(B=o.default)==null?void 0:B.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(E=o.append)==null?void 0:E.call(o)])])]}}),r(Z,{defaults:{VTabs:{height:X(m.value)}}},{default:()=>[r(Qe,null,{default:()=>[u.value&&r("div",{class:"v-toolbar__extension",style:{height:X(m.value)}},[x])]})]})]})}),{contentHeight:g,extensionHeight:m}}});export{Nn as S,yn as V,An as _,$n as a,en as b,Fe as c,Ue as d,gn as e,Qo as f,tn as g,In as h,Ln as i,Jo as j,nn as u};
@@ -1,7 +1,7 @@
1
1
  function __vite__mapDeps(indexes) {
2
2
  if (!__vite__mapDeps.viteFileDeps) {
3
- __vite__mapDeps.viteFileDeps = ["assets/admin-drawer-panel-UQNBz5Mr.js","assets/admin-drawer-panel-Bk7z8uTR.css"]
3
+ __vite__mapDeps.viteFileDeps = ["assets/admin-drawer-panel-CzxhSiRn.js","assets/admin-drawer-panel-Cr-0BCQv.css"]
4
4
  }
5
5
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
6
6
  }
7
- import{x as ee,bY as ke,E as ie,bL as we,bK as Se,aq as le,F as ye,G as te,I as Pe,at as ae,au as Q,bZ as Te,bP as Ce,bS as Re,s as H,y as Rt,h as _,K as oe,L as r,z as X,a$ as Ge,b_ as Vt,M as z,k as re,ax as ue,m as $,N as ce,_ as M,R as p,O as S,P as h,aD as A,ae as P,ay as q,aB as N,b$ as Ye,c0 as Bt,c1 as Dt,aa as T,ad as U,be as xt,bh as Et,c2 as It,Q as J,am as W,ak as Xe,c3 as Lt,ar as be,c4 as At,r as qe,C as Nt,c5 as $t,al as Ve,c6 as Z,bQ as Ot,c7 as Mt,bT as Ut,c8 as Ft,af as Ke,b1 as Ht,b2 as zt,ag as Ze,aX as me,c9 as Qe,ca as Wt,aC as Je,bn as et,aA as Be,aT as pe,bU as tt,cb as ot,H as De,cc as nt,l as jt,cd as Gt,ce as Yt,B as st,a as K,o as at,cf as Xt,J as rt,cg as qt,bI as Kt,ch as Zt,ci as ge,cj as Qt,av as it,bV as lt,ck as Jt,n as eo,a9 as to,bi as oo}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as ut,b as ct,_ as dt,C as Ae,r as he,u as no,A as Ne,c as so,d as ao}from"./main-CTJQvqMb.js";import{c as ro,t as io}from"./index-DUjeNg4x.js";import{V as mt,a as lo}from"./confirm-footer-CLcqjnLg.js";import{_ as gt}from"./change-password-dialog-D80TfT-n.js";import{_ as ht,a as fe,b as uo}from"./VSlideGroup-r8lyA6_4.js";import{a as co,c as mo,u as go,V as $e,d as Oe}from"./VSelectionControl-CEOyDLZC.js";const ho=ee({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...ke(),...ie(),...we(),...ut(),...Se(),...le({tag:"footer"}),...ye()},"VFooter"),ft=te()({name:"VFooter",props:ho(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Pe(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ae(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Ce(e),{roundedClasses:k}=Re(e),v=H(32),{resizeRef:u}=Rt(b=>{b.length&&(v.value=b[0].target.clientHeight)}),g=_(()=>e.height==="auto"?v.value:parseInt(e.height,10)),{layoutItemStyles:m}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:_(()=>"bottom"),layoutSize:g,elementSize:_(()=>e.height==="auto"?void 0:g.value),active:_(()=>e.app),absolute:Q(e,"absolute")});return oe(()=>r(e.tag,{ref:u,class:["v-footer",a.value,n.value,i.value,l.value,k.value,e.class],style:[s.value,e.app?m.value:{height:X(e.height)},e.style]},o)),{}}}),fo={name:"VersionFooter",data(){return{mdiOpenInNew:Ge,mdiContentCopy:Vt}},computed:{...z(re,{versions:e=>e.versions}),...ue($,["isUserAdmin"]),outdated:function(){return this.isUserAdmin&&this.semverGreaterThan(this.versions.latest>this.versions.installed)},versionTitle:function(){return this.outdated?`v${this.versions.latest} is available`:"up to date"}},created(){this.loadVersions()},methods:{...ce(re,["loadVersions"]),semverGreaterThan(e,t){try{if(!e||!t)return!1;const o=e.split("."),a=t.split(".");for(const[n,s]of o.entries())if(+s>+a[n])return!0}catch(o){console.debug("compare codex versions",e,">",t,o)}return!1}}},vo={id:"version"},bo={key:0,id:"latest"};function po(e,t,o,a,n,s){return p(),S(ft,{id:"version-footer",title:s.versionTitle},{default:h(()=>[A("div",vo,"codex v"+P(e.versions.installed),1),s.outdated?(p(),q("div",bo," codex v"+P(e.versions.latest)+" is available ",1)):N("",!0)]),_:1},8,["title"])}const vt=M(fo,[["render",po],["__scopeId","data-v-cd481730"]]),_o={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ye,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?Bt:Dt},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&ro(this.url,this.showTooltip)}}},ko=["title"],wo={key:0},So={class:"copied"},yo={key:0,class:"subtitle"},Po={class:"opdsUrl"};function To(e,t,o,a,n,s){return p(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[A("h3",null,[T(P(o.title)+" ",1),s.clipBoardEnabled?(p(),q("span",wo,[r(U,{class:"clipBoardIcon",size:"small"},{default:h(()=>[T(P(s.clipBoardIcon),1)]),_:1}),r(It,null,{default:h(()=>[xt(A("span",So,"Copied",512),[[Et,n.showTooltip.show]])]),_:1})])):N("",!0)]),o.subtitle?(p(),q("div",yo,P(o.subtitle),1)):N("",!0),A("div",Po,P(o.url),1)],8,ko)}const Co=M(_o,[["render",To],["__scopeId","data-v-68a52a66"]]),Ro={name:"OPDSDialog",components:{OPDSUrl:Co},data(){return{mdiRss:Ye,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Vo={id:"opds"};function Bo(e,t,o,a,n,s){const i=J("OPDSUrl");return p(),S(mt,{"max-width":"30em"},{activator:h(({props:l})=>[r(Xe,W({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),_:2},1040)]),default:h(()=>[A("div",Vo,[A("h2",null,[r(U,{size:"x=small",class:"inline"},{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),r(i,{title:"v1.2",url:n.opdsV1URL},null,8,["url"]),r(i,{title:"v2.0",url:n.opdsV2URL,subtitle:"OPDS v2 is experimental and not widely or well supported by clients"},null,8,["url"])])]),_:1})}const Do=M(Ro,[["render",Bo],["__scopeId","data-v-741734ce"]]),xo={name:"SettingsFooter",components:{OPDSDialog:Do},data(){return{mdiOpenInNew:Ge,mdiSourceRepository:Lt}},computed:{...ue($,["isCodexViewable"])}},Eo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Io(e,t,o,a,n,s){const i=J("OPDSDialog");return p(),S(ft,{id:"settingsFooter"},{default:h(()=>[e.isCodexViewable?(p(),S(i,{key:0})):N("",!0),A("a",Eo,[r(U,{id:"repoIcon",size:"x-small"},{default:h(()=>[T(P(n.mdiSourceRepository),1)]),_:1}),T(" repository"),r(U,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:h(()=>[T(P(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const bt=M(xo,[["render",Io],["__scopeId","data-v-f9eb593e"]]),Lo=ee({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...co(),...mo()},"VSwitch"),Ao=te()({name:"VSwitch",inheritAttrs:!1,props:Lo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=be(e,"indeterminate"),s=be(e,"modelValue"),{loaderClasses:i}=At(e),{isFocused:l,focus:k,blur:v}=go(e),u=qe(),g=_(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),m=Nt(),b=_(()=>e.id||`switch-${m}`);function C(){n.value&&(n.value=!1)}function y(x){var R,V;x.stopPropagation(),x.preventDefault(),(V=(R=u.value)==null?void 0:R.input)==null||V.click()}return oe(()=>{const[x,R]=$t(o),V=$e.filterProps(e),B=Oe.filterProps(e);return r($e,W({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},x,V,{modelValue:s.value,"onUpdate:modelValue":E=>s.value=E,id:b.value,focused:l.value,style:e.style}),{...a,default:E=>{let{id:d,messagesId:c,isDisabled:f,isReadonly:w,isValid:D}=E;const I={model:s,isValid:D};return r(Oe,W({ref:u},B,{modelValue:s.value,"onUpdate:modelValue":[F=>s.value=F,C],id:d.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:f.value,readonly:w.value,onFocus:k,onBlur:v},R),{...a,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:O}=F;return r("div",{class:["v-switch__track",...j.value],style:O.value,onClick:y},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](I)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](I)])])},input:F=>{let{inputNode:j,icon:O,backgroundColorClasses:ne,backgroundColorStyles:de}=F;return r(Ve,null,[j,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset?void 0:ne.value],style:e.inset?void 0:de.value},[a.thumb?r(Z,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...I,icon:O})]}):r(Ot,null,{default:()=>[e.loading?r(Mt,{name:"v-switch",active:!0,color:D.value===!1?void 0:g.value},{default:G=>a.loader?a.loader(G):r(Ut,{active:G.isActive,color:G.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(U,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),No={name:"AuthLoginDialog",components:{SubmitFooter:ht},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,showDialog:!1,registerMode:!1,mdiLogin:Ft}},computed:{...z(re,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...z($,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),submitButtonLabel:function(){return this.registerMode?"Register":"Login"}},watch:{showDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>this.submitButtonEnabled=t).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){window.addEventListener("keyup",this._keyListener)},beforeUnmount(){window.removeEventListener("keyup",this._keyListener)},methods:{...ce($,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>this.showDialog=this.formErrors&&this.formErrors.length>0).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyListener(e){e.stopImmediatePropagation()}}};function $o(e,t,o,a,n,s){const i=ht;return p(),S(mt,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:h(({props:l})=>[r(Ze,Ht(zt(l)),{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiLogin),1)]),_:1}),T(" Login ")]),_:1})]),_:2},1040)]),default:h(()=>[r(uo,{id:"authDialog",ref:"form"},{default:h(()=>[r(fe,{modelValue:n.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>n.credentials.username=l),autocomplete:"username",label:"Username",rules:n.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=me(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(fe,{ref:"password",modelValue:n.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>n.credentials.password=l),autocomplete:n.registerMode?"new-password":"current-password",label:"Password",rules:n.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=me(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(Qe,null,{default:h(()=>[n.registerMode?(p(),S(fe,{key:0,ref:"passwordConfirm",modelValue:n.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>n.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:n.rules.passwordConfirm,clearable:"",type:"password",onKeydown:me(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):N("",!0)]),_:1}),e.adminFlags.registration?(p(),S(Ao,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:h(()=>[T(" Register ")]),_:1},8,["modelValue"])):N("",!0),r(i,{verb:n.registerMode?"Register":"Login",table:"",disabled:!n.submitButtonEnabled,onSubmit:s.submit,onCancel:t[6]||(t[6]=l=>n.showDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const Oo=M(No,[["render",$o],["__scopeId","data-v-ef06f84f"]]),Mo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Wt}},computed:{...z($,{username:e=>e.user.username})},methods:{...ce($,["logout"])}};function Uo(e,t,o,a,n,s){return p(),S(Ze,{onClick:e.logout},{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(e.mdiLogout),1)]),_:1}),T("Logout "+P(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Fo=M(Mo,[["render",Uo]]),Ho={name:"AuthMenu",components:{ChangePasswordDialog:gt,AuthLoginDialog:Oo,AuthLogoutItem:Fo},computed:{...z($,{user:e=>e.user})},methods:{...ce($,["logout"])}};function zo(e,t,o,a,n,s){const i=J("AuthLogoutItem"),l=gt,k=J("AuthLoginDialog");return p(),q(Ve,null,[e.user?(p(),S(i,{key:0})):N("",!0),e.user?(p(),S(l,{key:1,user:e.user},null,8,["user"])):(p(),S(k,{key:2}))],64)}const pt=M(Ho,[["render",zo]]),Me=Je(et(()=>dt(()=>import("./admin-drawer-panel-UQNBz5Mr.js").then(e=>e.dx),__vite__mapDeps([0,1])))),Wo={name:"SettingsCommonPanel",components:{AuthMenu:pt,AdminMenu:Me},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:Me}},computed:{...ue($,["isUserAdmin"])}},jo={id:"commonPanel"};function Go(e,t,o,a,n,s){const i=pt;return p(),q("div",jo,[r(i),e.isUserAdmin?(p(),S(pe,{key:0})):N("",!0),e.isUserAdmin?(p(),S(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):N("",!0)])}const Yo=M(Wo,[["render",Go],["__scopeId","data-v-a21632a4"]]),Xo=e=>{const t=e.pk,o=ot();return e={...e,...o},delete e.pk,De.get(`c/${t}`,{params:e})},qo=()=>{const e=ot();return De.get("c/settings",{params:e})},Ko=e=>De.put("c/settings",e),In=({pk:e,mtime:t})=>`${nt(e)}/download/comic-${e}.cbz?mtime=${t}`,Ln=({pk:e,page:t,mtime:o})=>`${nt(e)}/${t}/page.jpg?mtime=${o}`,Ue=({pk:e,page:t,mtime:o})=>`${tt(e)}/${t}/page.jpg?mtime=${o}`,Zo=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,ve={getPdfBookSource:Zo,getReaderBasePath:tt,getReaderInfo:Xo,getReaderSettings:qo,setReaderSettings:Ko},Qo=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},Jo=function({issueNumber:e,issueSuffix:t},o){let a;try{e==null&&!t&&(e=0);const n=Number.parseFloat(e),s=Math.floor(n);o===void 0&&(o=0),n===s?a=s.toString():(a=n.toString(),o+=a.split(".")[1].length+1),a=a.padStart(o,"0")}catch{a=""}return t&&(a+=t),a},en=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+Jo({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},tn=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=Qo(t),l=en({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},_t={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(_t);const kt={cacheBook:!1};Object.freeze(kt);const se=new Set(["",null,void 0]);Object.freeze(se);const wt={prev:"next",next:"prev"};Object.freeze(wt);const _e={rel:"prefetch",as:"image"};Object.freeze(_e);const xe=new Set(["ttb","btt"]);Object.freeze(xe);const St=new Set(["rtl","btt"]);Object.freeze(St);const Fe=1,yt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(yt);const on=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",He=e=>{xe.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},nn=jt("reader",{state:()=>({choices:{fitTo:Ae.reader.fitTo,readingDirection:Ae.reader.readingDirection,nullValues:se},readerSettings:{fitTo:on(),twoPages:!1,readingDirection:"ltr",readRtlInReverse:!1},books:{current:void 0,prev:!1,next:!1},arcs:[],arc:{},page:void 0,routes:{prev:!1,next:!1,books:{prev:!1,next:!1}},bookChange:void 0,reactWithScroll:!1,clientSettings:{cacheBook:!1,scale:Fe}}),getters:{groupBooks(e){const t=[];return e.books.prev[0]&&t.push[e.books.prev[0]],t.push[e.books.current],e.books.next[0]&&t.push[e.books.next[0]],t},activeSettings(e){return e.getSettings(e.books.current)||{}},activeTitle(e){var a;const t=e.books.current;let o;return((a=e.arcs[0])==null?void 0:a.group)==="f"&&(o=t==null?void 0:t.filename),o||(o=t?tn(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return xe.has(e.activeSettings.readingDirection)},isPDF(e){var t,o;return((o=(t=e.books)==null?void 0:t.current)==null?void 0:o.fileType)=="PDF"},cacheBook(e){return e.clientSettings.cacheBook&&!(this.isPDF&&this.isVertical)},isPagesNotRoutes(e){return e.isVertical||this.cacheBook},isReadInReverse(e){return St.has(e.activeSettings.readingDirection)},isBTT(e){return e.activeSettings.readingDirection==="btt"},isFirstPage(e){return e.page===0},isLastPage(e){const t=e.books.current?e.books.current.maxPage:0,o=e.activeSettings.twoPages?1:0,a=t-o;return this.page>=a}},actions:{setReadRTLInReverse(e){return this.readerSettings.readRtlInReverse&&e.readingDirection==="rtl"?{...e,readingDirection:"ltr"}:e},getSettings(e){const t={...se};let o=e?e.settings:{};o=this.setReadRTLInReverse(o);const a=[this.readerSettings,o];for(const n of a)for(const[s,i]of Object.entries(n))se.has(i)||(t[s]=i);return He(t),t},bookChangeLocation(e){let t;return this.isBTT?t=e==="next"?"left":"right":t=e==="next"?"right":"left",t},bookChangeCursorClass(e){let t;return this.isReadInReverse?t=e==="next"?"up":"down":t=e==="next"?"down":"up",t+"Cursor"},bookChangeShow(e){return e==="prev"?this.books.prev&&this.isFirstPage:this.books.next&&this.isLastPage},bookChangeIcon(e){let t=e==="next";return this.isBTT&&(t=!t),t?Gt:Yt},isCoverPage(e,t){return e.readLtr!==!1&&t===0||e.readLtr&&t===e.maxPage},_getRouteParams(e,t,o){const a=o==="prev"?-1:1;let n=1;this.getSettings(e).twoPages&&!this.isCoverPage(e,+t+a)&&(n=2),n=n*a;const i=+t+n;let l=!1;return i>=0&&i<=e.maxPage&&(l={pk:e.pk,page:i}),l},fitToClass(e){const t=this.getSettings(e),o={};let a;if(this.clientSettings.scale>Fe?a="Orig":a=yt[t.fitTo],a){let n="fitTo";n+=io(a),this.isVertical?n+="Vertical":t.twoPages&&(n+="Two"),o[n]=!0}return o},_updateSettings(e,t){t?(this.books.current.settings={...this.books.current.settings,...e},He(this.books.current.settings)):this.readerSettings={...this.readerSettings,...e}},_getBookRoutePage(e,t){let o=0;if(t&&e.readLtr!==!1||!t&&e.readLtr===!1){const n=this.getSettings(e).twoPages?-1:0;o=e.maxPage+n}return o},_getBookRoute(e,t){if(!e)return!1;const o=this._getBookRoutePage(e,t);return{pk:e.pk,page:o}},_getBookRoutes(e,t){return{prev:this._getBookRoute(e,!0),next:this._getBookRoute(t,!1)}},async setRoutesAndBookmarkPage(e){const t=this.books.current;this.$patch(o=>{o.routes.prev=this._getRouteParams(t,e,"prev"),o.routes.next=this._getRouteParams(t,e,"next")}),await this._setBookmarkPage(e).then(()=>(this.bookChange=void 0,!0))},setActivePage(e,t=!0){if(e<0)return console.warn("Page out of bounds. Redirecting to 0."),this.routeToPage(0);if(e>this.books.current.maxPage)return console.warn(`Page out of bounds. Redirecting to ${this.books.current.maxPage}.`),this.routeToPage(this.books.current.maxPage);if(this.reactWithScroll=!!t,this.page=+e,this.setRoutesAndBookmarkPage(e),this.isPagesNotRoutes){const o={params:{pk:this.books.current.pk,page:e}},{href:a}=he.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return ve.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await ve.getReaderInfo(e).then(t=>{const o=t.data,a=[o.books.prevBook,o.books.current,o.books.nextBook];for(const s of a)s&&!s.settings&&(s.settings={});const n=this._getBookRoutes(o.books.prevBook,o.books.nextBook);return this.$patch(s=>{s.books.current=o.books.current,s.books.prev=o.books.prevBook,s.books.next=o.books.nextBook,s.arcs=o.arcs,s.arc=o.arc,s.routes.prev=this._getRouteParams(s.books.current,e.page,"prev"),s.routes.next=this._getRouteParams(s.books.current,e.page,"next"),s.routes.books=n}),!0}).catch(t=>{console.debug(t);const o=no().page,a=o&&o.routes?o.routes.last:{name:"home"};return he.push(a)})},async _setBookmarkPage(e){const t={group:"c",pk:this.books.current.pk};e=Math.max(Math.min(this.books.current.maxPage,e),0);const o={page:e};await Ne.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Ne.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(_t),this.setSettingsClient(kt)},async setSettingsGlobal(e){this._updateSettings(e,!1),await ve.setReaderSettings(this.readerSettings),await this.clearSettingsLocal()},setBookChangeFlag(e){e=this.normalizeDirection(e),this.bookChange=this.routes.books[e]?e:void 0},normalizeDirection(e){return this.isReadInReverse?wt[e]:e},_validateRoute(e,t){if(t||(t=this.books.current),!t)return{};const o=t.maxPage??0;return e.page>o?(e.page=o,console.warn("Tried to navigate past the end of the book.")):e.page<0&&(e.page=0,console.warn("Tried to navigate before the beginning of the book.")),e},_routeTo(e,t){if(e=this._validateRoute(e,t),this.isPagesNotRoutes&&+e.pk===this.books.current.pk)this.setActivePage(+e.page,!0);else{const o={name:"reader",params:e};he.push(o).catch(console.debug)}},routeToDirectionOne(e){e=this.normalizeDirection(e);const t=e==="prev"?-1:1,o=this.page+=t;if(o<0||o>this.books.current.maxPage)return;const a={pk:this.books.current.pk,page:o};this._routeTo(a)},routeToDirection(e){if(e=this.normalizeDirection(e),this.routes[e]){const t=this.routes[e];this._routeTo(t)}else this.routes.books[e]?this.bookChange===e?this._routeTo(this.routes.books[e],this.books[e]):this.setBookChangeFlag(e):console.debug("No route to direction",e)},routeToPage(e){const t={pk:this.books.current.pk,page:e};this._routeTo(t)},routeToBook(e){this._routeTo(this.routes.books[e],this.books[e])},_prefetchSrc(e,t,o=!1,a=!1){if(!e)return!1;const n=o?this.books[t]:this.books.current;if(!n)return!1;let s=e.page;if(a){if(!this.getSettings(n).twoPages)return!1;s+=1}if(s>n.maxPage)return!1;const i={pk:e.pk,page:s,mtime:n.mtime};return Ue(i)},prefetchLinks(e,t,o=!1){if(!o&&this.cacheBook)return{};const a=[this._prefetchSrc(e,t,o,!1),this._prefetchSrc(e,t,o,!0)],n=[];for(const s of a)s&&n.push({..._e,href:s});return{link:n}},prefetchBook(e){if(!this.cacheBook||e.fileType=="PDF")return{};const t=e.pk,o=[];for(let a=0;a<=e.maxPage;a++){const n={pk:t,page:a,mtime:e.mtime},s=Ue(n);s&&o.push({..._e,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function sn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=H(!1),s=H(0),i=_(()=>{const v=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[v]:X(s.value)}:{top:a.value.top}]});st(()=>{K(o,v=>{v?window.addEventListener("scroll",k,{passive:!0}):window.removeEventListener("scroll",k)},{immediate:!0})}),at(()=>{window.removeEventListener("scroll",k)});let l=0;function k(){const v=l>window.scrollY?"up":"down",u=t.value.getBoundingClientRect(),g=parseFloat(a.value.top??0),m=window.scrollY-Math.max(0,s.value-g),b=u.height+Math.max(s.value,g)-window.scrollY-window.innerHeight,C=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;u.height<window.innerHeight-g?(n.value="top",s.value=g):v==="up"&&n.value==="bottom"||v==="down"&&n.value==="top"?(s.value=window.scrollY+u.top-C,n.value=!0):v==="down"&&b<=0?(s.value=0,n.value="bottom"):v==="up"&&m<=0&&(C?n.value!=="top"&&(s.value=-m+C+g,n.value="top"):(s.value=u.top+m,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const an=100,rn=20;function ze(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function We(e){if(e.length<2)return 0;if(e.length===2)return e[1].t===e[0].t?0:(e[1].d-e[0].d)/(e[1].t-e[0].t);let t=0;for(let o=e.length-1;o>0;o--){if(e[o].t===e[o-1].t)continue;const a=ze(t),n=(e[o].d-e[o-1].d)/(e[o].t-e[o-1].t);t+=(n-a)*Math.abs(n),o===e.length-1&&(t*=.5)}return ze(t)*1e3}function ln(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Xt(rn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var v;const s=(v=e[n])==null?void 0:v.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],k=[];for(const u of s){if(i[0]-u[0]>an)break;l.push({t:u[0],d:u[1].clientX}),k.push({t:u[0],d:u[1].clientY})}return{x:We(l),y:We(k),get direction(){const{x:u,y:g}=this,[m,b]=[Math.abs(u),Math.abs(g)];return m>b&&u>=0?"right":m>b&&u<=0?"left":b>m&&g>=0?"down":b>m&&g<=0?"up":un()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function un(){throw new Error}function cn(e){let{isActive:t,isTemporary:o,width:a,touchless:n,position:s}=e;st(()=>{window.addEventListener("touchstart",R,{passive:!0}),window.addEventListener("touchmove",V,{passive:!1}),window.addEventListener("touchend",B,{passive:!0})}),at(()=>{window.removeEventListener("touchstart",R),window.removeEventListener("touchmove",V),window.removeEventListener("touchend",B)});const i=_(()=>["left","right"].includes(s.value)),{addMovement:l,endTouch:k,getVelocity:v}=ln();let u=!1;const g=H(!1),m=H(0),b=H(0);let C;function y(d,c){return(s.value==="left"?d:s.value==="right"?document.documentElement.clientWidth-d:s.value==="top"?d:s.value==="bottom"?document.documentElement.clientHeight-d:Y())-(c?a.value:0)}function x(d){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const f=s.value==="left"?(d-b.value)/a.value:s.value==="right"?(document.documentElement.clientWidth-d-b.value)/a.value:s.value==="top"?(d-b.value)/a.value:s.value==="bottom"?(document.documentElement.clientHeight-d-b.value)/a.value:Y();return c?Math.max(0,Math.min(1,f)):f}function R(d){if(n.value)return;const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY,w=25,D=s.value==="left"?c<w:s.value==="right"?c>document.documentElement.clientWidth-w:s.value==="top"?f<w:s.value==="bottom"?f>document.documentElement.clientHeight-w:Y(),I=t.value&&(s.value==="left"?c<a.value:s.value==="right"?c>document.documentElement.clientWidth-a.value:s.value==="top"?f<a.value:s.value==="bottom"?f>document.documentElement.clientHeight-a.value:Y());(D||I||t.value&&o.value)&&(u=!0,C=[c,f],b.value=y(i.value?c:f,t.value),m.value=x(i.value?c:f),k(d),l(d))}function V(d){const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY;if(u){if(!d.cancelable){u=!1;return}const D=Math.abs(c-C[0]),I=Math.abs(f-C[1]);(i.value?D>I&&D>3:I>D&&I>3)?(g.value=!0,u=!1):(i.value?I:D)>3&&(u=!1)}if(!g.value)return;d.preventDefault(),l(d);const w=x(i.value?c:f,!1);m.value=Math.max(0,Math.min(1,w)),w>1?b.value=y(i.value?c:f,!0):w<0&&(b.value=y(i.value?c:f,!1))}function B(d){if(u=!1,!g.value)return;l(d),g.value=!1;const c=v(d.changedTouches[0].identifier),f=Math.abs(c.x),w=Math.abs(c.y);(i.value?f>w&&f>400:w>f&&w>3)?t.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[s.value]||Y()):t.value=m.value>.5}const E=_(()=>g.value?{transform:s.value==="left"?`translateX(calc(-100% + ${m.value*a.value}px))`:s.value==="right"?`translateX(calc(100% - ${m.value*a.value}px))`:s.value==="top"?`translateY(calc(-100% + ${m.value*a.value}px))`:s.value==="bottom"?`translateY(calc(100% - ${m.value*a.value}px))`:Y(),transition:"none"}:void 0);return{isDragging:g,dragProgress:m,dragStyles:E}}function Y(){throw new Error}const dn=["start","end","left","right","top","bottom"],mn=ee({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>dn.includes(e)},sticky:Boolean,...ke(),...ie(),...so(),...we(),...ut(),...Se(),...le({tag:"nav"}),...ye()},"VNavigationDrawer"),gn=te()({name:"VNavigationDrawer",props:mn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=rt(),{themeClasses:i}=Pe(e),{borderClasses:l}=Te(e),{backgroundColorClasses:k,backgroundColorStyles:v}=ae(Q(e,"color")),{elevationClasses:u}=Ce(e),{displayClasses:g,mobile:m}=ao(e),{roundedClasses:b}=Re(e),C=qt(),y=be(e,"modelValue",null,L=>!!L),{ssrBootStyles:x}=Kt(),{scopeId:R}=lo(),V=qe(),B=H(!1),E=_(()=>e.rail&&e.expandOnHover&&B.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),d=_(()=>Zt(e.location,s.value)),c=_(()=>!e.permanent&&(m.value||e.temporary)),f=_(()=>e.sticky&&!c.value&&d.value!=="bottom");ge(()=>e.expandOnHover&&e.rail!=null,()=>{K(B,L=>a("update:rail",!L))}),ge(()=>!e.disableResizeWatcher,()=>{K(c,L=>!e.permanent&&eo(()=>y.value=!L))}),ge(()=>!e.disableRouteWatcher&&!!C,()=>{K(C.currentRoute,()=>c.value&&(y.value=!1))}),K(()=>e.permanent,L=>{L&&(y.value=!0)}),Qt(()=>{e.modelValue!=null||c.value||(y.value=e.permanent||!m.value)});const{isDragging:w,dragProgress:D,dragStyles:I}=cn({isActive:y,isTemporary:c,width:E,touchless:Q(e,"touchless"),position:d}),F=_(()=>{const L=c.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):E.value;return w.value?L*D.value:L}),{layoutItemStyles:j,layoutItemScrimStyles:O}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:d,layoutSize:F,elementSize:E,active:_(()=>y.value||w.value),disableTransitions:_(()=>w.value),absolute:_(()=>e.absolute||f.value&&typeof ne.value!="string")}),{isStuck:ne,stickyStyles:de}=sn({rootEl:V,isSticky:f,layoutItemStyles:j}),G=ae(_(()=>typeof e.scrim=="string"?e.scrim:null)),Pt=_(()=>({...w.value?{opacity:D.value*.2,transition:"none"}:void 0,...O.value}));it({VList:{bgColor:"transparent"}});function Tt(){B.value=!0}function Ct(){B.value=!1}return oe(()=>{const L=n.image||e.image;return r(Ve,null,[r(e.tag,W({ref:V,onMouseenter:Tt,onMouseleave:Ct,class:["v-navigation-drawer",`v-navigation-drawer--${d.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":B.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":c.value,"v-navigation-drawer--active":y.value,"v-navigation-drawer--sticky":f.value},i.value,k.value,l.value,g.value,u.value,b.value,e.class],style:[v.value,j.value,I.value,x.value,de.value,e.style]},R,o),{default:()=>{var Ee,Ie,Le;return[L&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(lt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ee=n.prepend)==null?void 0:Ee.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ie=n.default)==null?void 0:Ie.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[(Le=n.append)==null?void 0:Le.call(n)])]}}),r(Jt,{name:"fade-transition"},{default:()=>[c.value&&(w.value||y.value)&&!!e.scrim&&r("div",W({class:["v-navigation-drawer__scrim",G.backgroundColorClasses.value],style:[Pt.value,G.backgroundColorStyles.value],onClick:()=>y.value=!1},R),null)]})])}),{isStuck:ne}}}),hn={name:"SettingsDrawer",components:{SettingsCommonPanel:Yo,SettingsFooter:bt,VersionFooter:vt},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...ue($,["isCodexViewable"]),...to(re,["isSettingsDrawerOpen"]),...z(nn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},fn={class:"settingsDrawerContainer"},vn={id:"topBlock"},bn={class:"settingsHeader"},pn={id:"footerGroup"};function _n(e,t,o,a,n,s){const i=J("SettingsCommonPanel"),l=bt,k=vt;return p(),S(gn,W(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=v=>e.isSettingsDrawerOpen=v),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:h(()=>[r(k)]),default:h(()=>[A("div",fn,[A("div",vn,[A("header",bn,[A("h3",null,P(o.title),1)]),e.isCodexViewable?(p(),S(Be(o.panel),{key:0})):N("",!0),e.isCodexViewable?(p(),S(pe,{key:1})):N("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(pe)]),A("div",pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const An=M(hn,[["render",_n],["__scopeId","data-v-a38da0ea"]]),je=Je(et(()=>dt(()=>import("./admin-drawer-panel-UQNBz5Mr.js").then(e=>e.dy),__vite__mapDeps([0,1])))),kn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:je},data(){return{mdiMenu:oo,AdminSettingsButtonProgress:je}},computed:{...z($,["isUserAdmin"])}};function wn(e,t,o,a,n,s){return p(),S(Xe,W(e.$attrs,{icon:"",title:"Settings"}),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(p(),S(Be(n.AdminSettingsButtonProgress),{key:0})):N("",!0)]),_:1},16)}const Nn=M(kn,[["render",wn]]),Sn=ee({text:String,...ie(),...le()},"VToolbarTitle"),yn=te()({name:"VToolbarTitle",props:Sn(),setup(e,t){let{slots:o}=t;return oe(()=>{const a=!!(o.default||o.text||e.text);return r(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var n;return[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,(n=o.default)==null?void 0:n.call(o)])]}})}),{}}}),Pn=[null,"prominent","default","comfortable","compact"],Tn=ee({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Pn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...ke(),...ie(),...we(),...Se(),...le({tag:"header"}),...ye()},"VToolbar"),$n=te()({name:"VToolbar",props:Tn(),setup(e,t){var b;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ae(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Ce(e),{roundedClasses:l}=Re(e),{themeClasses:k}=Pe(e),{rtlClasses:v}=rt(),u=H(!!(e.extended||(b=o.extension)!=null&&b.call(o))),g=_(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),m=_(()=>u.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return it({VBtn:{variant:"text"}}),oe(()=>{var R;const C=!!(e.title||o.title),y=!!(o.image||e.image),x=(R=o.extension)==null?void 0:R.call(o);return u.value=!!(e.extended||x),r(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,s.value,i.value,l.value,k.value,v.value,e.class],style:[n.value,e.style]},{default:()=>[y&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(lt,{key:"image-img",cover:!0,src:e.image},null)]),r(Z,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>{var V,B,E;return[r("div",{class:"v-toolbar__content",style:{height:X(g.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(V=o.prepend)==null?void 0:V.call(o)]),C&&r(yn,{key:"title",text:e.title},{text:o.title}),(B=o.default)==null?void 0:B.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(E=o.append)==null?void 0:E.call(o)])])]}}),r(Z,{defaults:{VTabs:{height:X(m.value)}}},{default:()=>[r(Qe,null,{default:()=>[u.value&&r("div",{class:"v-toolbar__extension",style:{height:X(m.value)}},[x])]})]})]})}),{contentHeight:g,extensionHeight:m}}});export{Nn as S,yn as V,An as _,$n as a,en as b,Fe as c,Ue as d,gn as e,Qo as f,tn as g,In as h,Ln as i,Jo as j,nn as u};
7
+ import{x as ee,bY as ke,E as ie,bL as we,bK as Se,aq as le,F as ye,G as te,I as Pe,at as ae,au as Q,bZ as Te,bP as Ce,bS as Re,s as H,y as Rt,h as _,K as oe,L as r,z as X,a$ as Ge,b_ as Vt,M as z,k as re,ax as ue,m as $,N as ce,_ as M,R as p,O as S,P as h,aD as A,ae as P,ay as q,aB as N,b$ as Ye,c0 as Bt,c1 as Dt,aa as T,ad as U,be as xt,bh as Et,c2 as It,Q as J,am as W,ak as Xe,c3 as Lt,ar as be,c4 as At,r as qe,C as Nt,c5 as $t,al as Ve,c6 as Z,bQ as Ot,c7 as Mt,bT as Ut,c8 as Ft,af as Ke,b1 as Ht,b2 as zt,ag as Ze,aX as me,c9 as Qe,ca as Wt,aC as Je,bn as et,aA as Be,aT as pe,bU as tt,cb as ot,H as De,cc as nt,l as jt,cd as Gt,ce as Yt,B as st,a as K,o as at,cf as Xt,J as rt,cg as qt,bI as Kt,ch as Zt,ci as ge,cj as Qt,av as it,bV as lt,ck as Jt,n as eo,a9 as to,bi as oo}from"./admin-drawer-panel-CzxhSiRn.js";import{m as ut,b as ct,_ as dt,C as Ae,r as he,u as no,A as Ne,c as so,d as ao}from"./main-JHk9CBom.js";import{c as ro,t as io}from"./index-DUjeNg4x.js";import{V as mt,a as lo}from"./confirm-footer-4RE1GmaG.js";import{_ as gt}from"./change-password-dialog-DxrgqKSG.js";import{_ as ht,a as fe,b as uo}from"./VSlideGroup-BpKJ2pWX.js";import{a as co,c as mo,u as go,V as $e,d as Oe}from"./VSelectionControl-K1Fk4HTO.js";const ho=ee({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...ke(),...ie(),...we(),...ut(),...Se(),...le({tag:"footer"}),...ye()},"VFooter"),ft=te()({name:"VFooter",props:ho(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Pe(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ae(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Ce(e),{roundedClasses:k}=Re(e),v=H(32),{resizeRef:u}=Rt(b=>{b.length&&(v.value=b[0].target.clientHeight)}),g=_(()=>e.height==="auto"?v.value:parseInt(e.height,10)),{layoutItemStyles:m}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:_(()=>"bottom"),layoutSize:g,elementSize:_(()=>e.height==="auto"?void 0:g.value),active:_(()=>e.app),absolute:Q(e,"absolute")});return oe(()=>r(e.tag,{ref:u,class:["v-footer",a.value,n.value,i.value,l.value,k.value,e.class],style:[s.value,e.app?m.value:{height:X(e.height)},e.style]},o)),{}}}),fo={name:"VersionFooter",data(){return{mdiOpenInNew:Ge,mdiContentCopy:Vt}},computed:{...z(re,{versions:e=>e.versions}),...ue($,["isUserAdmin"]),outdated:function(){return this.isUserAdmin&&this.semverGreaterThan(this.versions.latest>this.versions.installed)},versionTitle:function(){return this.outdated?`v${this.versions.latest} is available`:"up to date"}},created(){this.loadVersions()},methods:{...ce(re,["loadVersions"]),semverGreaterThan(e,t){try{if(!e||!t)return!1;const o=e.split("."),a=t.split(".");for(const[n,s]of o.entries())if(+s>+a[n])return!0}catch(o){console.debug("compare codex versions",e,">",t,o)}return!1}}},vo={id:"version"},bo={key:0,id:"latest"};function po(e,t,o,a,n,s){return p(),S(ft,{id:"version-footer",title:s.versionTitle},{default:h(()=>[A("div",vo,"codex v"+P(e.versions.installed),1),s.outdated?(p(),q("div",bo," codex v"+P(e.versions.latest)+" is available ",1)):N("",!0)]),_:1},8,["title"])}const vt=M(fo,[["render",po],["__scopeId","data-v-cd481730"]]),_o={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ye,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?Bt:Dt},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&ro(this.url,this.showTooltip)}}},ko=["title"],wo={key:0},So={class:"copied"},yo={key:0,class:"subtitle"},Po={class:"opdsUrl"};function To(e,t,o,a,n,s){return p(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[A("h3",null,[T(P(o.title)+" ",1),s.clipBoardEnabled?(p(),q("span",wo,[r(U,{class:"clipBoardIcon",size:"small"},{default:h(()=>[T(P(s.clipBoardIcon),1)]),_:1}),r(It,null,{default:h(()=>[xt(A("span",So,"Copied",512),[[Et,n.showTooltip.show]])]),_:1})])):N("",!0)]),o.subtitle?(p(),q("div",yo,P(o.subtitle),1)):N("",!0),A("div",Po,P(o.url),1)],8,ko)}const Co=M(_o,[["render",To],["__scopeId","data-v-68a52a66"]]),Ro={name:"OPDSDialog",components:{OPDSUrl:Co},data(){return{mdiRss:Ye,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Vo={id:"opds"};function Bo(e,t,o,a,n,s){const i=J("OPDSUrl");return p(),S(mt,{"max-width":"30em"},{activator:h(({props:l})=>[r(Xe,W({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),_:2},1040)]),default:h(()=>[A("div",Vo,[A("h2",null,[r(U,{size:"x=small",class:"inline"},{default:h(()=>[T(P(n.mdiRss),1)]),_:1}),T(" OPDS ")]),r(i,{title:"v1.2",url:n.opdsV1URL},null,8,["url"]),r(i,{title:"v2.0",url:n.opdsV2URL,subtitle:"OPDS v2 is experimental and not widely or well supported by clients"},null,8,["url"])])]),_:1})}const Do=M(Ro,[["render",Bo],["__scopeId","data-v-741734ce"]]),xo={name:"SettingsFooter",components:{OPDSDialog:Do},data(){return{mdiOpenInNew:Ge,mdiSourceRepository:Lt}},computed:{...ue($,["isCodexViewable"])}},Eo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Io(e,t,o,a,n,s){const i=J("OPDSDialog");return p(),S(ft,{id:"settingsFooter"},{default:h(()=>[e.isCodexViewable?(p(),S(i,{key:0})):N("",!0),A("a",Eo,[r(U,{id:"repoIcon",size:"x-small"},{default:h(()=>[T(P(n.mdiSourceRepository),1)]),_:1}),T(" repository"),r(U,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:h(()=>[T(P(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const bt=M(xo,[["render",Io],["__scopeId","data-v-f9eb593e"]]),Lo=ee({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...co(),...mo()},"VSwitch"),Ao=te()({name:"VSwitch",inheritAttrs:!1,props:Lo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=be(e,"indeterminate"),s=be(e,"modelValue"),{loaderClasses:i}=At(e),{isFocused:l,focus:k,blur:v}=go(e),u=qe(),g=_(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),m=Nt(),b=_(()=>e.id||`switch-${m}`);function C(){n.value&&(n.value=!1)}function y(x){var R,V;x.stopPropagation(),x.preventDefault(),(V=(R=u.value)==null?void 0:R.input)==null||V.click()}return oe(()=>{const[x,R]=$t(o),V=$e.filterProps(e),B=Oe.filterProps(e);return r($e,W({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},x,V,{modelValue:s.value,"onUpdate:modelValue":E=>s.value=E,id:b.value,focused:l.value,style:e.style}),{...a,default:E=>{let{id:d,messagesId:c,isDisabled:f,isReadonly:w,isValid:D}=E;const I={model:s,isValid:D};return r(Oe,W({ref:u},B,{modelValue:s.value,"onUpdate:modelValue":[F=>s.value=F,C],id:d.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:f.value,readonly:w.value,onFocus:k,onBlur:v},R),{...a,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:O}=F;return r("div",{class:["v-switch__track",...j.value],style:O.value,onClick:y},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](I)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](I)])])},input:F=>{let{inputNode:j,icon:O,backgroundColorClasses:ne,backgroundColorStyles:de}=F;return r(Ve,null,[j,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset?void 0:ne.value],style:e.inset?void 0:de.value},[a.thumb?r(Z,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...I,icon:O})]}):r(Ot,null,{default:()=>[e.loading?r(Mt,{name:"v-switch",active:!0,color:D.value===!1?void 0:g.value},{default:G=>a.loader?a.loader(G):r(Ut,{active:G.isActive,color:G.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(U,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),No={name:"AuthLoginDialog",components:{SubmitFooter:ht},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,showDialog:!1,registerMode:!1,mdiLogin:Ft}},computed:{...z(re,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...z($,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),submitButtonLabel:function(){return this.registerMode?"Register":"Login"}},watch:{showDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>this.submitButtonEnabled=t).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){window.addEventListener("keyup",this._keyListener)},beforeUnmount(){window.removeEventListener("keyup",this._keyListener)},methods:{...ce($,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>this.showDialog=this.formErrors&&this.formErrors.length>0).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyListener(e){e.stopImmediatePropagation()}}};function $o(e,t,o,a,n,s){const i=ht;return p(),S(mt,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:h(({props:l})=>[r(Ze,Ht(zt(l)),{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiLogin),1)]),_:1}),T(" Login ")]),_:1})]),_:2},1040)]),default:h(()=>[r(uo,{id:"authDialog",ref:"form"},{default:h(()=>[r(fe,{modelValue:n.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>n.credentials.username=l),autocomplete:"username",label:"Username",rules:n.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=me(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(fe,{ref:"password",modelValue:n.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>n.credentials.password=l),autocomplete:n.registerMode?"new-password":"current-password",label:"Password",rules:n.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=me(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(Qe,null,{default:h(()=>[n.registerMode?(p(),S(fe,{key:0,ref:"passwordConfirm",modelValue:n.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>n.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:n.rules.passwordConfirm,clearable:"",type:"password",onKeydown:me(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):N("",!0)]),_:1}),e.adminFlags.registration?(p(),S(Ao,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:h(()=>[T(" Register ")]),_:1},8,["modelValue"])):N("",!0),r(i,{verb:n.registerMode?"Register":"Login",table:"",disabled:!n.submitButtonEnabled,onSubmit:s.submit,onCancel:t[6]||(t[6]=l=>n.showDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const Oo=M(No,[["render",$o],["__scopeId","data-v-ef06f84f"]]),Mo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Wt}},computed:{...z($,{username:e=>e.user.username})},methods:{...ce($,["logout"])}};function Uo(e,t,o,a,n,s){return p(),S(Ze,{onClick:e.logout},{default:h(()=>[r(Ke,null,{default:h(()=>[r(U,null,{default:h(()=>[T(P(e.mdiLogout),1)]),_:1}),T("Logout "+P(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Fo=M(Mo,[["render",Uo]]),Ho={name:"AuthMenu",components:{ChangePasswordDialog:gt,AuthLoginDialog:Oo,AuthLogoutItem:Fo},computed:{...z($,{user:e=>e.user})},methods:{...ce($,["logout"])}};function zo(e,t,o,a,n,s){const i=J("AuthLogoutItem"),l=gt,k=J("AuthLoginDialog");return p(),q(Ve,null,[e.user?(p(),S(i,{key:0})):N("",!0),e.user?(p(),S(l,{key:1,user:e.user},null,8,["user"])):(p(),S(k,{key:2}))],64)}const pt=M(Ho,[["render",zo]]),Me=Je(et(()=>dt(()=>import("./admin-drawer-panel-CzxhSiRn.js").then(e=>e.dx),__vite__mapDeps([0,1])))),Wo={name:"SettingsCommonPanel",components:{AuthMenu:pt,AdminMenu:Me},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:Me}},computed:{...ue($,["isUserAdmin"])}},jo={id:"commonPanel"};function Go(e,t,o,a,n,s){const i=pt;return p(),q("div",jo,[r(i),e.isUserAdmin?(p(),S(pe,{key:0})):N("",!0),e.isUserAdmin?(p(),S(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):N("",!0)])}const Yo=M(Wo,[["render",Go],["__scopeId","data-v-a21632a4"]]),Xo=e=>{const t=e.pk,o=ot();return e={...e,...o},delete e.pk,De.get(`c/${t}`,{params:e})},qo=()=>{const e=ot();return De.get("c/settings",{params:e})},Ko=e=>De.put("c/settings",e),In=({pk:e,mtime:t})=>`${nt(e)}/download/comic-${e}.cbz?mtime=${t}`,Ln=({pk:e,page:t,mtime:o})=>`${nt(e)}/${t}/page.jpg?mtime=${o}`,Ue=({pk:e,page:t,mtime:o})=>`${tt(e)}/${t}/page.jpg?mtime=${o}`,Zo=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,ve={getPdfBookSource:Zo,getReaderBasePath:tt,getReaderInfo:Xo,getReaderSettings:qo,setReaderSettings:Ko},Qo=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},Jo=function({issueNumber:e,issueSuffix:t},o){let a;try{e==null&&!t&&(e=0);const n=Number.parseFloat(e),s=Math.floor(n);o===void 0&&(o=0),n===s?a=s.toString():(a=n.toString(),o+=a.split(".")[1].length+1),a=a.padStart(o,"0")}catch{a=""}return t&&(a+=t),a},en=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+Jo({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},tn=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=Qo(t),l=en({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},_t={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(_t);const kt={cacheBook:!1};Object.freeze(kt);const se=new Set(["",null,void 0]);Object.freeze(se);const wt={prev:"next",next:"prev"};Object.freeze(wt);const _e={rel:"prefetch",as:"image"};Object.freeze(_e);const xe=new Set(["ttb","btt"]);Object.freeze(xe);const St=new Set(["rtl","btt"]);Object.freeze(St);const Fe=1,yt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(yt);const on=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",He=e=>{xe.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},nn=jt("reader",{state:()=>({choices:{fitTo:Ae.reader.fitTo,readingDirection:Ae.reader.readingDirection,nullValues:se},readerSettings:{fitTo:on(),twoPages:!1,readingDirection:"ltr",readRtlInReverse:!1},books:{current:void 0,prev:!1,next:!1},arcs:[],arc:{},page:void 0,routes:{prev:!1,next:!1,books:{prev:!1,next:!1}},bookChange:void 0,reactWithScroll:!1,clientSettings:{cacheBook:!1,scale:Fe}}),getters:{groupBooks(e){const t=[];return e.books.prev[0]&&t.push[e.books.prev[0]],t.push[e.books.current],e.books.next[0]&&t.push[e.books.next[0]],t},activeSettings(e){return e.getSettings(e.books.current)||{}},activeTitle(e){var a;const t=e.books.current;let o;return((a=e.arcs[0])==null?void 0:a.group)==="f"&&(o=t==null?void 0:t.filename),o||(o=t?tn(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return xe.has(e.activeSettings.readingDirection)},isPDF(e){var t,o;return((o=(t=e.books)==null?void 0:t.current)==null?void 0:o.fileType)=="PDF"},cacheBook(e){return e.clientSettings.cacheBook&&!(this.isPDF&&this.isVertical)},isPagesNotRoutes(e){return e.isVertical||this.cacheBook},isReadInReverse(e){return St.has(e.activeSettings.readingDirection)},isBTT(e){return e.activeSettings.readingDirection==="btt"},isFirstPage(e){return e.page===0},isLastPage(e){const t=e.books.current?e.books.current.maxPage:0,o=e.activeSettings.twoPages?1:0,a=t-o;return this.page>=a}},actions:{setReadRTLInReverse(e){return this.readerSettings.readRtlInReverse&&e.readingDirection==="rtl"?{...e,readingDirection:"ltr"}:e},getSettings(e){const t={...se};let o=e?e.settings:{};o=this.setReadRTLInReverse(o);const a=[this.readerSettings,o];for(const n of a)for(const[s,i]of Object.entries(n))se.has(i)||(t[s]=i);return He(t),t},bookChangeLocation(e){let t;return this.isBTT?t=e==="next"?"left":"right":t=e==="next"?"right":"left",t},bookChangeCursorClass(e){let t;return this.isReadInReverse?t=e==="next"?"up":"down":t=e==="next"?"down":"up",t+"Cursor"},bookChangeShow(e){return e==="prev"?this.books.prev&&this.isFirstPage:this.books.next&&this.isLastPage},bookChangeIcon(e){let t=e==="next";return this.isBTT&&(t=!t),t?Gt:Yt},isCoverPage(e,t){return e.readLtr!==!1&&t===0||e.readLtr&&t===e.maxPage},_getRouteParams(e,t,o){const a=o==="prev"?-1:1;let n=1;this.getSettings(e).twoPages&&!this.isCoverPage(e,+t+a)&&(n=2),n=n*a;const i=+t+n;let l=!1;return i>=0&&i<=e.maxPage&&(l={pk:e.pk,page:i}),l},fitToClass(e){const t=this.getSettings(e),o={};let a;if(this.clientSettings.scale>Fe?a="Orig":a=yt[t.fitTo],a){let n="fitTo";n+=io(a),this.isVertical?n+="Vertical":t.twoPages&&(n+="Two"),o[n]=!0}return o},_updateSettings(e,t){t?(this.books.current.settings={...this.books.current.settings,...e},He(this.books.current.settings)):this.readerSettings={...this.readerSettings,...e}},_getBookRoutePage(e,t){let o=0;if(t&&e.readLtr!==!1||!t&&e.readLtr===!1){const n=this.getSettings(e).twoPages?-1:0;o=e.maxPage+n}return o},_getBookRoute(e,t){if(!e)return!1;const o=this._getBookRoutePage(e,t);return{pk:e.pk,page:o}},_getBookRoutes(e,t){return{prev:this._getBookRoute(e,!0),next:this._getBookRoute(t,!1)}},async setRoutesAndBookmarkPage(e){const t=this.books.current;this.$patch(o=>{o.routes.prev=this._getRouteParams(t,e,"prev"),o.routes.next=this._getRouteParams(t,e,"next")}),await this._setBookmarkPage(e).then(()=>(this.bookChange=void 0,!0))},setActivePage(e,t=!0){if(e<0)return console.warn("Page out of bounds. Redirecting to 0."),this.routeToPage(0);if(e>this.books.current.maxPage)return console.warn(`Page out of bounds. Redirecting to ${this.books.current.maxPage}.`),this.routeToPage(this.books.current.maxPage);if(this.reactWithScroll=!!t,this.page=+e,this.setRoutesAndBookmarkPage(e),this.isPagesNotRoutes){const o={params:{pk:this.books.current.pk,page:e}},{href:a}=he.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return ve.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await ve.getReaderInfo(e).then(t=>{const o=t.data,a=[o.books.prevBook,o.books.current,o.books.nextBook];for(const s of a)s&&!s.settings&&(s.settings={});const n=this._getBookRoutes(o.books.prevBook,o.books.nextBook);return this.$patch(s=>{s.books.current=o.books.current,s.books.prev=o.books.prevBook,s.books.next=o.books.nextBook,s.arcs=o.arcs,s.arc=o.arc,s.routes.prev=this._getRouteParams(s.books.current,e.page,"prev"),s.routes.next=this._getRouteParams(s.books.current,e.page,"next"),s.routes.books=n}),!0}).catch(t=>{console.debug(t);const o=no().page,a=o&&o.routes?o.routes.last:{name:"home"};return he.push(a)})},async _setBookmarkPage(e){const t={group:"c",pk:this.books.current.pk};e=Math.max(Math.min(this.books.current.maxPage,e),0);const o={page:e};await Ne.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Ne.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(_t),this.setSettingsClient(kt)},async setSettingsGlobal(e){this._updateSettings(e,!1),await ve.setReaderSettings(this.readerSettings),await this.clearSettingsLocal()},setBookChangeFlag(e){e=this.normalizeDirection(e),this.bookChange=this.routes.books[e]?e:void 0},normalizeDirection(e){return this.isReadInReverse?wt[e]:e},_validateRoute(e,t){if(t||(t=this.books.current),!t)return{};const o=t.maxPage??0;return e.page>o?(e.page=o,console.warn("Tried to navigate past the end of the book.")):e.page<0&&(e.page=0,console.warn("Tried to navigate before the beginning of the book.")),e},_routeTo(e,t){if(e=this._validateRoute(e,t),this.isPagesNotRoutes&&+e.pk===this.books.current.pk)this.setActivePage(+e.page,!0);else{const o={name:"reader",params:e};he.push(o).catch(console.debug)}},routeToDirectionOne(e){e=this.normalizeDirection(e);const t=e==="prev"?-1:1,o=this.page+=t;if(o<0||o>this.books.current.maxPage)return;const a={pk:this.books.current.pk,page:o};this._routeTo(a)},routeToDirection(e){if(e=this.normalizeDirection(e),this.routes[e]){const t=this.routes[e];this._routeTo(t)}else this.routes.books[e]?this.bookChange===e?this._routeTo(this.routes.books[e],this.books[e]):this.setBookChangeFlag(e):console.debug("No route to direction",e)},routeToPage(e){const t={pk:this.books.current.pk,page:e};this._routeTo(t)},routeToBook(e){this._routeTo(this.routes.books[e],this.books[e])},_prefetchSrc(e,t,o=!1,a=!1){if(!e)return!1;const n=o?this.books[t]:this.books.current;if(!n)return!1;let s=e.page;if(a){if(!this.getSettings(n).twoPages)return!1;s+=1}if(s>n.maxPage)return!1;const i={pk:e.pk,page:s,mtime:n.mtime};return Ue(i)},prefetchLinks(e,t,o=!1){if(!o&&this.cacheBook)return{};const a=[this._prefetchSrc(e,t,o,!1),this._prefetchSrc(e,t,o,!0)],n=[];for(const s of a)s&&n.push({..._e,href:s});return{link:n}},prefetchBook(e){if(!this.cacheBook||e.fileType=="PDF")return{};const t=e.pk,o=[];for(let a=0;a<=e.maxPage;a++){const n={pk:t,page:a,mtime:e.mtime},s=Ue(n);s&&o.push({..._e,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function sn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=H(!1),s=H(0),i=_(()=>{const v=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[v]:X(s.value)}:{top:a.value.top}]});st(()=>{K(o,v=>{v?window.addEventListener("scroll",k,{passive:!0}):window.removeEventListener("scroll",k)},{immediate:!0})}),at(()=>{window.removeEventListener("scroll",k)});let l=0;function k(){const v=l>window.scrollY?"up":"down",u=t.value.getBoundingClientRect(),g=parseFloat(a.value.top??0),m=window.scrollY-Math.max(0,s.value-g),b=u.height+Math.max(s.value,g)-window.scrollY-window.innerHeight,C=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;u.height<window.innerHeight-g?(n.value="top",s.value=g):v==="up"&&n.value==="bottom"||v==="down"&&n.value==="top"?(s.value=window.scrollY+u.top-C,n.value=!0):v==="down"&&b<=0?(s.value=0,n.value="bottom"):v==="up"&&m<=0&&(C?n.value!=="top"&&(s.value=-m+C+g,n.value="top"):(s.value=u.top+m,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const an=100,rn=20;function ze(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function We(e){if(e.length<2)return 0;if(e.length===2)return e[1].t===e[0].t?0:(e[1].d-e[0].d)/(e[1].t-e[0].t);let t=0;for(let o=e.length-1;o>0;o--){if(e[o].t===e[o-1].t)continue;const a=ze(t),n=(e[o].d-e[o-1].d)/(e[o].t-e[o-1].t);t+=(n-a)*Math.abs(n),o===e.length-1&&(t*=.5)}return ze(t)*1e3}function ln(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Xt(rn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var v;const s=(v=e[n])==null?void 0:v.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],k=[];for(const u of s){if(i[0]-u[0]>an)break;l.push({t:u[0],d:u[1].clientX}),k.push({t:u[0],d:u[1].clientY})}return{x:We(l),y:We(k),get direction(){const{x:u,y:g}=this,[m,b]=[Math.abs(u),Math.abs(g)];return m>b&&u>=0?"right":m>b&&u<=0?"left":b>m&&g>=0?"down":b>m&&g<=0?"up":un()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function un(){throw new Error}function cn(e){let{isActive:t,isTemporary:o,width:a,touchless:n,position:s}=e;st(()=>{window.addEventListener("touchstart",R,{passive:!0}),window.addEventListener("touchmove",V,{passive:!1}),window.addEventListener("touchend",B,{passive:!0})}),at(()=>{window.removeEventListener("touchstart",R),window.removeEventListener("touchmove",V),window.removeEventListener("touchend",B)});const i=_(()=>["left","right"].includes(s.value)),{addMovement:l,endTouch:k,getVelocity:v}=ln();let u=!1;const g=H(!1),m=H(0),b=H(0);let C;function y(d,c){return(s.value==="left"?d:s.value==="right"?document.documentElement.clientWidth-d:s.value==="top"?d:s.value==="bottom"?document.documentElement.clientHeight-d:Y())-(c?a.value:0)}function x(d){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const f=s.value==="left"?(d-b.value)/a.value:s.value==="right"?(document.documentElement.clientWidth-d-b.value)/a.value:s.value==="top"?(d-b.value)/a.value:s.value==="bottom"?(document.documentElement.clientHeight-d-b.value)/a.value:Y();return c?Math.max(0,Math.min(1,f)):f}function R(d){if(n.value)return;const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY,w=25,D=s.value==="left"?c<w:s.value==="right"?c>document.documentElement.clientWidth-w:s.value==="top"?f<w:s.value==="bottom"?f>document.documentElement.clientHeight-w:Y(),I=t.value&&(s.value==="left"?c<a.value:s.value==="right"?c>document.documentElement.clientWidth-a.value:s.value==="top"?f<a.value:s.value==="bottom"?f>document.documentElement.clientHeight-a.value:Y());(D||I||t.value&&o.value)&&(u=!0,C=[c,f],b.value=y(i.value?c:f,t.value),m.value=x(i.value?c:f),k(d),l(d))}function V(d){const c=d.changedTouches[0].clientX,f=d.changedTouches[0].clientY;if(u){if(!d.cancelable){u=!1;return}const D=Math.abs(c-C[0]),I=Math.abs(f-C[1]);(i.value?D>I&&D>3:I>D&&I>3)?(g.value=!0,u=!1):(i.value?I:D)>3&&(u=!1)}if(!g.value)return;d.preventDefault(),l(d);const w=x(i.value?c:f,!1);m.value=Math.max(0,Math.min(1,w)),w>1?b.value=y(i.value?c:f,!0):w<0&&(b.value=y(i.value?c:f,!1))}function B(d){if(u=!1,!g.value)return;l(d),g.value=!1;const c=v(d.changedTouches[0].identifier),f=Math.abs(c.x),w=Math.abs(c.y);(i.value?f>w&&f>400:w>f&&w>3)?t.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[s.value]||Y()):t.value=m.value>.5}const E=_(()=>g.value?{transform:s.value==="left"?`translateX(calc(-100% + ${m.value*a.value}px))`:s.value==="right"?`translateX(calc(100% - ${m.value*a.value}px))`:s.value==="top"?`translateY(calc(-100% + ${m.value*a.value}px))`:s.value==="bottom"?`translateY(calc(100% - ${m.value*a.value}px))`:Y(),transition:"none"}:void 0);return{isDragging:g,dragProgress:m,dragStyles:E}}function Y(){throw new Error}const dn=["start","end","left","right","top","bottom"],mn=ee({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>dn.includes(e)},sticky:Boolean,...ke(),...ie(),...so(),...we(),...ut(),...Se(),...le({tag:"nav"}),...ye()},"VNavigationDrawer"),gn=te()({name:"VNavigationDrawer",props:mn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=rt(),{themeClasses:i}=Pe(e),{borderClasses:l}=Te(e),{backgroundColorClasses:k,backgroundColorStyles:v}=ae(Q(e,"color")),{elevationClasses:u}=Ce(e),{displayClasses:g,mobile:m}=ao(e),{roundedClasses:b}=Re(e),C=qt(),y=be(e,"modelValue",null,L=>!!L),{ssrBootStyles:x}=Kt(),{scopeId:R}=lo(),V=qe(),B=H(!1),E=_(()=>e.rail&&e.expandOnHover&&B.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),d=_(()=>Zt(e.location,s.value)),c=_(()=>!e.permanent&&(m.value||e.temporary)),f=_(()=>e.sticky&&!c.value&&d.value!=="bottom");ge(()=>e.expandOnHover&&e.rail!=null,()=>{K(B,L=>a("update:rail",!L))}),ge(()=>!e.disableResizeWatcher,()=>{K(c,L=>!e.permanent&&eo(()=>y.value=!L))}),ge(()=>!e.disableRouteWatcher&&!!C,()=>{K(C.currentRoute,()=>c.value&&(y.value=!1))}),K(()=>e.permanent,L=>{L&&(y.value=!0)}),Qt(()=>{e.modelValue!=null||c.value||(y.value=e.permanent||!m.value)});const{isDragging:w,dragProgress:D,dragStyles:I}=cn({isActive:y,isTemporary:c,width:E,touchless:Q(e,"touchless"),position:d}),F=_(()=>{const L=c.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):E.value;return w.value?L*D.value:L}),{layoutItemStyles:j,layoutItemScrimStyles:O}=ct({id:e.name,order:_(()=>parseInt(e.order,10)),position:d,layoutSize:F,elementSize:E,active:_(()=>y.value||w.value),disableTransitions:_(()=>w.value),absolute:_(()=>e.absolute||f.value&&typeof ne.value!="string")}),{isStuck:ne,stickyStyles:de}=sn({rootEl:V,isSticky:f,layoutItemStyles:j}),G=ae(_(()=>typeof e.scrim=="string"?e.scrim:null)),Pt=_(()=>({...w.value?{opacity:D.value*.2,transition:"none"}:void 0,...O.value}));it({VList:{bgColor:"transparent"}});function Tt(){B.value=!0}function Ct(){B.value=!1}return oe(()=>{const L=n.image||e.image;return r(Ve,null,[r(e.tag,W({ref:V,onMouseenter:Tt,onMouseleave:Ct,class:["v-navigation-drawer",`v-navigation-drawer--${d.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":B.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":c.value,"v-navigation-drawer--active":y.value,"v-navigation-drawer--sticky":f.value},i.value,k.value,l.value,g.value,u.value,b.value,e.class],style:[v.value,j.value,I.value,x.value,de.value,e.style]},R,o),{default:()=>{var Ee,Ie,Le;return[L&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(lt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ee=n.prepend)==null?void 0:Ee.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ie=n.default)==null?void 0:Ie.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[(Le=n.append)==null?void 0:Le.call(n)])]}}),r(Jt,{name:"fade-transition"},{default:()=>[c.value&&(w.value||y.value)&&!!e.scrim&&r("div",W({class:["v-navigation-drawer__scrim",G.backgroundColorClasses.value],style:[Pt.value,G.backgroundColorStyles.value],onClick:()=>y.value=!1},R),null)]})])}),{isStuck:ne}}}),hn={name:"SettingsDrawer",components:{SettingsCommonPanel:Yo,SettingsFooter:bt,VersionFooter:vt},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...ue($,["isCodexViewable"]),...to(re,["isSettingsDrawerOpen"]),...z(nn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},fn={class:"settingsDrawerContainer"},vn={id:"topBlock"},bn={class:"settingsHeader"},pn={id:"footerGroup"};function _n(e,t,o,a,n,s){const i=J("SettingsCommonPanel"),l=bt,k=vt;return p(),S(gn,W(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=v=>e.isSettingsDrawerOpen=v),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:h(()=>[r(k)]),default:h(()=>[A("div",fn,[A("div",vn,[A("header",bn,[A("h3",null,P(o.title),1)]),e.isCodexViewable?(p(),S(Be(o.panel),{key:0})):N("",!0),e.isCodexViewable?(p(),S(pe,{key:1})):N("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(pe)]),A("div",pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const An=M(hn,[["render",_n],["__scopeId","data-v-a38da0ea"]]),je=Je(et(()=>dt(()=>import("./admin-drawer-panel-CzxhSiRn.js").then(e=>e.dy),__vite__mapDeps([0,1])))),kn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:je},data(){return{mdiMenu:oo,AdminSettingsButtonProgress:je}},computed:{...z($,["isUserAdmin"])}};function wn(e,t,o,a,n,s){return p(),S(Xe,W(e.$attrs,{icon:"",title:"Settings"}),{default:h(()=>[r(U,null,{default:h(()=>[T(P(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(p(),S(Be(n.AdminSettingsButtonProgress),{key:0})):N("",!0)]),_:1},16)}const Nn=M(kn,[["render",wn]]),Sn=ee({text:String,...ie(),...le()},"VToolbarTitle"),yn=te()({name:"VToolbarTitle",props:Sn(),setup(e,t){let{slots:o}=t;return oe(()=>{const a=!!(o.default||o.text||e.text);return r(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var n;return[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,(n=o.default)==null?void 0:n.call(o)])]}})}),{}}}),Pn=[null,"prominent","default","comfortable","compact"],Tn=ee({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Pn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...ke(),...ie(),...we(),...Se(),...le({tag:"header"}),...ye()},"VToolbar"),$n=te()({name:"VToolbar",props:Tn(),setup(e,t){var b;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ae(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Ce(e),{roundedClasses:l}=Re(e),{themeClasses:k}=Pe(e),{rtlClasses:v}=rt(),u=H(!!(e.extended||(b=o.extension)!=null&&b.call(o))),g=_(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),m=_(()=>u.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return it({VBtn:{variant:"text"}}),oe(()=>{var R;const C=!!(e.title||o.title),y=!!(o.image||e.image),x=(R=o.extension)==null?void 0:R.call(o);return u.value=!!(e.extended||x),r(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,s.value,i.value,l.value,k.value,v.value,e.class],style:[n.value,e.style]},{default:()=>[y&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(Z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(lt,{key:"image-img",cover:!0,src:e.image},null)]),r(Z,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>{var V,B,E;return[r("div",{class:"v-toolbar__content",style:{height:X(g.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(V=o.prepend)==null?void 0:V.call(o)]),C&&r(yn,{key:"title",text:e.title},{text:o.title}),(B=o.default)==null?void 0:B.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(E=o.append)==null?void 0:E.call(o)])])]}}),r(Z,{defaults:{VTabs:{height:X(m.value)}}},{default:()=>[r(Qe,null,{default:()=>[u.value&&r("div",{class:"v-toolbar__extension",style:{height:X(m.value)}},[x])]})]})]})}),{contentHeight:g,extensionHeight:m}}});export{Nn as S,yn as V,An as _,$n as a,en as b,Fe as c,Ue as d,gn as e,Qo as f,tn as g,In as h,Ln as i,Jo as j,nn as u};
@@ -1 +1 @@
1
- import{bD as Y,x as H,E as _,aq as M,F as A,G as k,I as F,J as j,bE as O,bF as z,r as S,h,s as x,a as D,p as q,L as m,ak as w,K as R,be as V,bf as J,bG as K,i as U,bH as Q,bI as Z,bh as N,bg as p,z as X,n as ee}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as te,u as ne}from"./confirm-footer-CLcqjnLg.js";const oe=e=>{const{touchstartX:o,touchendX:t,touchstartY:n,touchendY:i}=e,u=.5,s=16;e.offsetX=t-o,e.offsetY=i-n,Math.abs(e.offsetY)<u*Math.abs(e.offsetX)&&(e.left&&t<o-s&&e.left(e),e.right&&t>o+s&&e.right(e)),Math.abs(e.offsetX)<u*Math.abs(e.offsetY)&&(e.up&&i<n-s&&e.up(e),e.down&&i>n+s&&e.down(e))};function se(e,o){var n;const t=e.changedTouches[0];o.touchstartX=t.clientX,o.touchstartY=t.clientY,(n=o.start)==null||n.call(o,{originalEvent:e,...o})}function ie(e,o){var n;const t=e.changedTouches[0];o.touchendX=t.clientX,o.touchendY=t.clientY,(n=o.end)==null||n.call(o,{originalEvent:e,...o}),oe(o)}function ae(e,o){var n;const t=e.changedTouches[0];o.touchmoveX=t.clientX,o.touchmoveY=t.clientY,(n=o.move)==null||n.call(o,{originalEvent:e,...o})}function ue(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:t=>se(t,o),touchend:t=>ie(t,o),touchmove:t=>ae(t,o)}}function ce(e,o){var v;const t=o.value,n=t!=null&&t.parent?e.parentElement:e,i=(t==null?void 0:t.options)??{passive:!0},u=(v=o.instance)==null?void 0:v.$.uid;if(!n||!u)return;const s=ue(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=s,Y(s).forEach(r=>{n.addEventListener(r,s[r],i)})}function le(e,o){var u,s;const t=(u=o.value)!=null&&u.parent?e.parentElement:e,n=(s=o.instance)==null?void 0:s.$.uid;if(!(t!=null&&t._touchHandlers)||!n)return;const i=t._touchHandlers[n];Y(i).forEach(v=>{t.removeEventListener(v,i[v])}),delete t._touchHandlers[n]}const W={mounted:ce,unmounted:le},re=W,$=Symbol.for("vuetify:v-window"),L=Symbol.for("vuetify:v-window-group"),ve=H({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},..._(),...M(),...A()},"VWindow"),me=k()({name:"VWindow",directives:{Touch:W},props:ve(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=F(e),{isRtl:i}=j(),{t:u}=O(),s=z(e,L),v=S(),r=h(()=>i.value?!e.reverse:e.reverse),d=x(!1),y=h(()=>{const a=e.direction==="vertical"?"y":"x",f=(r.value?!d.value:d.value)?"-reverse":"";return`v-window-${a}${f}-transition`}),T=x(0),b=S(void 0),g=h(()=>s.items.value.findIndex(a=>s.selected.value.includes(a.id)));D(g,(a,l)=>{const f=s.items.value.length,C=f-1;f<=2?d.value=a<l:a===C&&l===0?d.value=!0:a===0&&l===C?d.value=!1:d.value=a<l}),q($,{transition:y,isReversed:d,transitionCount:T,transitionHeight:b,rootRef:v});const c=h(()=>e.continuous||g.value!==0),I=h(()=>e.continuous||g.value!==s.items.value.length-1);function E(){c.value&&s.prev()}function B(){I.value&&s.next()}const P=h(()=>{const a=[],l={icon:i.value?e.nextIcon:e.prevIcon,class:`v-window__${r.value?"right":"left"}`,onClick:s.prev,"aria-label":u("$vuetify.carousel.prev")};a.push(c.value?t.prev?t.prev({props:l}):m(w,l,null):m("div",null,null));const f={icon:i.value?e.prevIcon:e.nextIcon,class:`v-window__${r.value?"left":"right"}`,onClick:s.next,"aria-label":u("$vuetify.carousel.next")};return a.push(I.value?t.next?t.next({props:f}):m(w,f,null):m("div",null,null)),a}),G=h(()=>e.touch===!1?e.touch:{...{left:()=>{r.value?E():B()},right:()=>{r.value?B():E()},start:l=>{let{originalEvent:f}=l;f.stopPropagation()}},...e.touch===!0?{}:e.touch});return R(()=>V(m(e.tag,{ref:v,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},n.value,e.class],style:e.style},{default:()=>{var a,l;return[m("div",{class:"v-window__container",style:{height:b.value}},[(a=t.default)==null?void 0:a.call(t,{group:s}),e.showArrows!==!1&&m("div",{class:"v-window__controls"},[P.value])]),(l=t.additional)==null?void 0:l.call(t,{group:s})]}}),[[J("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...K(),...te()},"VWindowItem"),ge=k()({name:"VWindowItem",directives:{Touch:re},props:de(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=U($),i=Q(e,L),{isBooted:u}=Z();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const s=x(!1),v=h(()=>u.value&&(n.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function r(){!s.value||!n||(s.value=!1,n.transitionCount.value>0&&(n.transitionCount.value-=1,n.transitionCount.value===0&&(n.transitionHeight.value=void 0)))}function d(){var c;s.value||!n||(s.value=!0,n.transitionCount.value===0&&(n.transitionHeight.value=X((c=n.rootRef.value)==null?void 0:c.clientHeight)),n.transitionCount.value+=1)}function y(){r()}function T(c){s.value&&ee(()=>{!v.value||!s.value||!n||(n.transitionHeight.value=X(c.clientHeight))})}const b=h(()=>{const c=n.isReversed.value?e.reverseTransition:e.transition;return v.value?{name:typeof c!="string"?n.transition.value:c,onBeforeEnter:d,onAfterEnter:r,onEnterCancelled:y,onBeforeLeave:d,onAfterLeave:r,onLeaveCancelled:y,onEnter:T}:!1}),{hasContent:g}=ne(e,i.isSelected);return R(()=>m(p,{transition:b.value,disabled:!u.value},{default:()=>{var c;return[V(m("div",{class:["v-window-item",i.selectedClass.value,e.class],style:e.style},[g.value&&((c=t.default)==null?void 0:c.call(t))]),[[N,i.isSelected.value]])]}})),{groupItem:i}}});export{ge as V,me as a};
1
+ import{bD as Y,x as H,E as _,aq as M,F as A,G as k,I as F,J as j,bE as O,bF as z,r as S,h,s as x,a as D,p as q,L as m,ak as w,K as R,be as V,bf as J,bG as K,i as U,bH as Q,bI as Z,bh as N,bg as p,z as X,n as ee}from"./admin-drawer-panel-CzxhSiRn.js";import{m as te,u as ne}from"./confirm-footer-4RE1GmaG.js";const oe=e=>{const{touchstartX:o,touchendX:t,touchstartY:n,touchendY:i}=e,u=.5,s=16;e.offsetX=t-o,e.offsetY=i-n,Math.abs(e.offsetY)<u*Math.abs(e.offsetX)&&(e.left&&t<o-s&&e.left(e),e.right&&t>o+s&&e.right(e)),Math.abs(e.offsetX)<u*Math.abs(e.offsetY)&&(e.up&&i<n-s&&e.up(e),e.down&&i>n+s&&e.down(e))};function se(e,o){var n;const t=e.changedTouches[0];o.touchstartX=t.clientX,o.touchstartY=t.clientY,(n=o.start)==null||n.call(o,{originalEvent:e,...o})}function ie(e,o){var n;const t=e.changedTouches[0];o.touchendX=t.clientX,o.touchendY=t.clientY,(n=o.end)==null||n.call(o,{originalEvent:e,...o}),oe(o)}function ae(e,o){var n;const t=e.changedTouches[0];o.touchmoveX=t.clientX,o.touchmoveY=t.clientY,(n=o.move)==null||n.call(o,{originalEvent:e,...o})}function ue(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:t=>se(t,o),touchend:t=>ie(t,o),touchmove:t=>ae(t,o)}}function ce(e,o){var v;const t=o.value,n=t!=null&&t.parent?e.parentElement:e,i=(t==null?void 0:t.options)??{passive:!0},u=(v=o.instance)==null?void 0:v.$.uid;if(!n||!u)return;const s=ue(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=s,Y(s).forEach(r=>{n.addEventListener(r,s[r],i)})}function le(e,o){var u,s;const t=(u=o.value)!=null&&u.parent?e.parentElement:e,n=(s=o.instance)==null?void 0:s.$.uid;if(!(t!=null&&t._touchHandlers)||!n)return;const i=t._touchHandlers[n];Y(i).forEach(v=>{t.removeEventListener(v,i[v])}),delete t._touchHandlers[n]}const W={mounted:ce,unmounted:le},re=W,$=Symbol.for("vuetify:v-window"),L=Symbol.for("vuetify:v-window-group"),ve=H({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},..._(),...M(),...A()},"VWindow"),me=k()({name:"VWindow",directives:{Touch:W},props:ve(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=F(e),{isRtl:i}=j(),{t:u}=O(),s=z(e,L),v=S(),r=h(()=>i.value?!e.reverse:e.reverse),d=x(!1),y=h(()=>{const a=e.direction==="vertical"?"y":"x",f=(r.value?!d.value:d.value)?"-reverse":"";return`v-window-${a}${f}-transition`}),T=x(0),b=S(void 0),g=h(()=>s.items.value.findIndex(a=>s.selected.value.includes(a.id)));D(g,(a,l)=>{const f=s.items.value.length,C=f-1;f<=2?d.value=a<l:a===C&&l===0?d.value=!0:a===0&&l===C?d.value=!1:d.value=a<l}),q($,{transition:y,isReversed:d,transitionCount:T,transitionHeight:b,rootRef:v});const c=h(()=>e.continuous||g.value!==0),I=h(()=>e.continuous||g.value!==s.items.value.length-1);function E(){c.value&&s.prev()}function B(){I.value&&s.next()}const P=h(()=>{const a=[],l={icon:i.value?e.nextIcon:e.prevIcon,class:`v-window__${r.value?"right":"left"}`,onClick:s.prev,"aria-label":u("$vuetify.carousel.prev")};a.push(c.value?t.prev?t.prev({props:l}):m(w,l,null):m("div",null,null));const f={icon:i.value?e.prevIcon:e.nextIcon,class:`v-window__${r.value?"left":"right"}`,onClick:s.next,"aria-label":u("$vuetify.carousel.next")};return a.push(I.value?t.next?t.next({props:f}):m(w,f,null):m("div",null,null)),a}),G=h(()=>e.touch===!1?e.touch:{...{left:()=>{r.value?E():B()},right:()=>{r.value?B():E()},start:l=>{let{originalEvent:f}=l;f.stopPropagation()}},...e.touch===!0?{}:e.touch});return R(()=>V(m(e.tag,{ref:v,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},n.value,e.class],style:e.style},{default:()=>{var a,l;return[m("div",{class:"v-window__container",style:{height:b.value}},[(a=t.default)==null?void 0:a.call(t,{group:s}),e.showArrows!==!1&&m("div",{class:"v-window__controls"},[P.value])]),(l=t.additional)==null?void 0:l.call(t,{group:s})]}}),[[J("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...K(),...te()},"VWindowItem"),ge=k()({name:"VWindowItem",directives:{Touch:re},props:de(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=U($),i=Q(e,L),{isBooted:u}=Z();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const s=x(!1),v=h(()=>u.value&&(n.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function r(){!s.value||!n||(s.value=!1,n.transitionCount.value>0&&(n.transitionCount.value-=1,n.transitionCount.value===0&&(n.transitionHeight.value=void 0)))}function d(){var c;s.value||!n||(s.value=!0,n.transitionCount.value===0&&(n.transitionHeight.value=X((c=n.rootRef.value)==null?void 0:c.clientHeight)),n.transitionCount.value+=1)}function y(){r()}function T(c){s.value&&ee(()=>{!v.value||!s.value||!n||(n.transitionHeight.value=X(c.clientHeight))})}const b=h(()=>{const c=n.isReversed.value?e.reverseTransition:e.transition;return v.value?{name:typeof c!="string"?n.transition.value:c,onBeforeEnter:d,onAfterEnter:r,onEnterCancelled:y,onBeforeLeave:d,onAfterLeave:r,onLeaveCancelled:y,onEnter:T}:!1}),{hasContent:g}=ne(e,i.isSelected);return R(()=>m(p,{transition:b.value,disabled:!u.value},{default:()=>{var c;return[V(m("div",{class:["v-window-item",i.selectedClass.value,e.class],style:e.style},[g.value&&((c=t.default)==null?void 0:c.call(t))]),[[N,i.isSelected.value]])]}})),{groupItem:i}}});export{ge as V,me as a};
@@ -1 +1 @@
1
- import{bD as Y,x as H,E as _,aq as M,F as A,G as k,I as F,J as j,bE as O,bF as z,r as S,h,s as x,a as D,p as q,L as m,ak as w,K as R,be as V,bf as J,bG as K,i as U,bH as Q,bI as Z,bh as N,bg as p,z as X,n as ee}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as te,u as ne}from"./confirm-footer-CLcqjnLg.js";const oe=e=>{const{touchstartX:o,touchendX:t,touchstartY:n,touchendY:i}=e,u=.5,s=16;e.offsetX=t-o,e.offsetY=i-n,Math.abs(e.offsetY)<u*Math.abs(e.offsetX)&&(e.left&&t<o-s&&e.left(e),e.right&&t>o+s&&e.right(e)),Math.abs(e.offsetX)<u*Math.abs(e.offsetY)&&(e.up&&i<n-s&&e.up(e),e.down&&i>n+s&&e.down(e))};function se(e,o){var n;const t=e.changedTouches[0];o.touchstartX=t.clientX,o.touchstartY=t.clientY,(n=o.start)==null||n.call(o,{originalEvent:e,...o})}function ie(e,o){var n;const t=e.changedTouches[0];o.touchendX=t.clientX,o.touchendY=t.clientY,(n=o.end)==null||n.call(o,{originalEvent:e,...o}),oe(o)}function ae(e,o){var n;const t=e.changedTouches[0];o.touchmoveX=t.clientX,o.touchmoveY=t.clientY,(n=o.move)==null||n.call(o,{originalEvent:e,...o})}function ue(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:t=>se(t,o),touchend:t=>ie(t,o),touchmove:t=>ae(t,o)}}function ce(e,o){var v;const t=o.value,n=t!=null&&t.parent?e.parentElement:e,i=(t==null?void 0:t.options)??{passive:!0},u=(v=o.instance)==null?void 0:v.$.uid;if(!n||!u)return;const s=ue(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=s,Y(s).forEach(r=>{n.addEventListener(r,s[r],i)})}function le(e,o){var u,s;const t=(u=o.value)!=null&&u.parent?e.parentElement:e,n=(s=o.instance)==null?void 0:s.$.uid;if(!(t!=null&&t._touchHandlers)||!n)return;const i=t._touchHandlers[n];Y(i).forEach(v=>{t.removeEventListener(v,i[v])}),delete t._touchHandlers[n]}const W={mounted:ce,unmounted:le},re=W,$=Symbol.for("vuetify:v-window"),L=Symbol.for("vuetify:v-window-group"),ve=H({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},..._(),...M(),...A()},"VWindow"),me=k()({name:"VWindow",directives:{Touch:W},props:ve(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=F(e),{isRtl:i}=j(),{t:u}=O(),s=z(e,L),v=S(),r=h(()=>i.value?!e.reverse:e.reverse),d=x(!1),y=h(()=>{const a=e.direction==="vertical"?"y":"x",f=(r.value?!d.value:d.value)?"-reverse":"";return`v-window-${a}${f}-transition`}),T=x(0),b=S(void 0),g=h(()=>s.items.value.findIndex(a=>s.selected.value.includes(a.id)));D(g,(a,l)=>{const f=s.items.value.length,C=f-1;f<=2?d.value=a<l:a===C&&l===0?d.value=!0:a===0&&l===C?d.value=!1:d.value=a<l}),q($,{transition:y,isReversed:d,transitionCount:T,transitionHeight:b,rootRef:v});const c=h(()=>e.continuous||g.value!==0),I=h(()=>e.continuous||g.value!==s.items.value.length-1);function E(){c.value&&s.prev()}function B(){I.value&&s.next()}const P=h(()=>{const a=[],l={icon:i.value?e.nextIcon:e.prevIcon,class:`v-window__${r.value?"right":"left"}`,onClick:s.prev,"aria-label":u("$vuetify.carousel.prev")};a.push(c.value?t.prev?t.prev({props:l}):m(w,l,null):m("div",null,null));const f={icon:i.value?e.prevIcon:e.nextIcon,class:`v-window__${r.value?"left":"right"}`,onClick:s.next,"aria-label":u("$vuetify.carousel.next")};return a.push(I.value?t.next?t.next({props:f}):m(w,f,null):m("div",null,null)),a}),G=h(()=>e.touch===!1?e.touch:{...{left:()=>{r.value?E():B()},right:()=>{r.value?B():E()},start:l=>{let{originalEvent:f}=l;f.stopPropagation()}},...e.touch===!0?{}:e.touch});return R(()=>V(m(e.tag,{ref:v,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},n.value,e.class],style:e.style},{default:()=>{var a,l;return[m("div",{class:"v-window__container",style:{height:b.value}},[(a=t.default)==null?void 0:a.call(t,{group:s}),e.showArrows!==!1&&m("div",{class:"v-window__controls"},[P.value])]),(l=t.additional)==null?void 0:l.call(t,{group:s})]}}),[[J("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...K(),...te()},"VWindowItem"),ge=k()({name:"VWindowItem",directives:{Touch:re},props:de(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=U($),i=Q(e,L),{isBooted:u}=Z();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const s=x(!1),v=h(()=>u.value&&(n.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function r(){!s.value||!n||(s.value=!1,n.transitionCount.value>0&&(n.transitionCount.value-=1,n.transitionCount.value===0&&(n.transitionHeight.value=void 0)))}function d(){var c;s.value||!n||(s.value=!0,n.transitionCount.value===0&&(n.transitionHeight.value=X((c=n.rootRef.value)==null?void 0:c.clientHeight)),n.transitionCount.value+=1)}function y(){r()}function T(c){s.value&&ee(()=>{!v.value||!s.value||!n||(n.transitionHeight.value=X(c.clientHeight))})}const b=h(()=>{const c=n.isReversed.value?e.reverseTransition:e.transition;return v.value?{name:typeof c!="string"?n.transition.value:c,onBeforeEnter:d,onAfterEnter:r,onEnterCancelled:y,onBeforeLeave:d,onAfterLeave:r,onLeaveCancelled:y,onEnter:T}:!1}),{hasContent:g}=ne(e,i.isSelected);return R(()=>m(p,{transition:b.value,disabled:!u.value},{default:()=>{var c;return[V(m("div",{class:["v-window-item",i.selectedClass.value,e.class],style:e.style},[g.value&&((c=t.default)==null?void 0:c.call(t))]),[[N,i.isSelected.value]])]}})),{groupItem:i}}});export{ge as V,me as a};
1
+ import{bD as Y,x as H,E as _,aq as M,F as A,G as k,I as F,J as j,bE as O,bF as z,r as S,h,s as x,a as D,p as q,L as m,ak as w,K as R,be as V,bf as J,bG as K,i as U,bH as Q,bI as Z,bh as N,bg as p,z as X,n as ee}from"./admin-drawer-panel-CzxhSiRn.js";import{m as te,u as ne}from"./confirm-footer-4RE1GmaG.js";const oe=e=>{const{touchstartX:o,touchendX:t,touchstartY:n,touchendY:i}=e,u=.5,s=16;e.offsetX=t-o,e.offsetY=i-n,Math.abs(e.offsetY)<u*Math.abs(e.offsetX)&&(e.left&&t<o-s&&e.left(e),e.right&&t>o+s&&e.right(e)),Math.abs(e.offsetX)<u*Math.abs(e.offsetY)&&(e.up&&i<n-s&&e.up(e),e.down&&i>n+s&&e.down(e))};function se(e,o){var n;const t=e.changedTouches[0];o.touchstartX=t.clientX,o.touchstartY=t.clientY,(n=o.start)==null||n.call(o,{originalEvent:e,...o})}function ie(e,o){var n;const t=e.changedTouches[0];o.touchendX=t.clientX,o.touchendY=t.clientY,(n=o.end)==null||n.call(o,{originalEvent:e,...o}),oe(o)}function ae(e,o){var n;const t=e.changedTouches[0];o.touchmoveX=t.clientX,o.touchmoveY=t.clientY,(n=o.move)==null||n.call(o,{originalEvent:e,...o})}function ue(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:t=>se(t,o),touchend:t=>ie(t,o),touchmove:t=>ae(t,o)}}function ce(e,o){var v;const t=o.value,n=t!=null&&t.parent?e.parentElement:e,i=(t==null?void 0:t.options)??{passive:!0},u=(v=o.instance)==null?void 0:v.$.uid;if(!n||!u)return;const s=ue(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=s,Y(s).forEach(r=>{n.addEventListener(r,s[r],i)})}function le(e,o){var u,s;const t=(u=o.value)!=null&&u.parent?e.parentElement:e,n=(s=o.instance)==null?void 0:s.$.uid;if(!(t!=null&&t._touchHandlers)||!n)return;const i=t._touchHandlers[n];Y(i).forEach(v=>{t.removeEventListener(v,i[v])}),delete t._touchHandlers[n]}const W={mounted:ce,unmounted:le},re=W,$=Symbol.for("vuetify:v-window"),L=Symbol.for("vuetify:v-window-group"),ve=H({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},..._(),...M(),...A()},"VWindow"),me=k()({name:"VWindow",directives:{Touch:W},props:ve(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=F(e),{isRtl:i}=j(),{t:u}=O(),s=z(e,L),v=S(),r=h(()=>i.value?!e.reverse:e.reverse),d=x(!1),y=h(()=>{const a=e.direction==="vertical"?"y":"x",f=(r.value?!d.value:d.value)?"-reverse":"";return`v-window-${a}${f}-transition`}),T=x(0),b=S(void 0),g=h(()=>s.items.value.findIndex(a=>s.selected.value.includes(a.id)));D(g,(a,l)=>{const f=s.items.value.length,C=f-1;f<=2?d.value=a<l:a===C&&l===0?d.value=!0:a===0&&l===C?d.value=!1:d.value=a<l}),q($,{transition:y,isReversed:d,transitionCount:T,transitionHeight:b,rootRef:v});const c=h(()=>e.continuous||g.value!==0),I=h(()=>e.continuous||g.value!==s.items.value.length-1);function E(){c.value&&s.prev()}function B(){I.value&&s.next()}const P=h(()=>{const a=[],l={icon:i.value?e.nextIcon:e.prevIcon,class:`v-window__${r.value?"right":"left"}`,onClick:s.prev,"aria-label":u("$vuetify.carousel.prev")};a.push(c.value?t.prev?t.prev({props:l}):m(w,l,null):m("div",null,null));const f={icon:i.value?e.prevIcon:e.nextIcon,class:`v-window__${r.value?"left":"right"}`,onClick:s.next,"aria-label":u("$vuetify.carousel.next")};return a.push(I.value?t.next?t.next({props:f}):m(w,f,null):m("div",null,null)),a}),G=h(()=>e.touch===!1?e.touch:{...{left:()=>{r.value?E():B()},right:()=>{r.value?B():E()},start:l=>{let{originalEvent:f}=l;f.stopPropagation()}},...e.touch===!0?{}:e.touch});return R(()=>V(m(e.tag,{ref:v,class:["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover"},n.value,e.class],style:e.style},{default:()=>{var a,l;return[m("div",{class:"v-window__container",style:{height:b.value}},[(a=t.default)==null?void 0:a.call(t,{group:s}),e.showArrows!==!1&&m("div",{class:"v-window__controls"},[P.value])]),(l=t.additional)==null?void 0:l.call(t,{group:s})]}}),[[J("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...K(),...te()},"VWindowItem"),ge=k()({name:"VWindowItem",directives:{Touch:re},props:de(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=U($),i=Q(e,L),{isBooted:u}=Z();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const s=x(!1),v=h(()=>u.value&&(n.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function r(){!s.value||!n||(s.value=!1,n.transitionCount.value>0&&(n.transitionCount.value-=1,n.transitionCount.value===0&&(n.transitionHeight.value=void 0)))}function d(){var c;s.value||!n||(s.value=!0,n.transitionCount.value===0&&(n.transitionHeight.value=X((c=n.rootRef.value)==null?void 0:c.clientHeight)),n.transitionCount.value+=1)}function y(){r()}function T(c){s.value&&ee(()=>{!v.value||!s.value||!n||(n.transitionHeight.value=X(c.clientHeight))})}const b=h(()=>{const c=n.isReversed.value?e.reverseTransition:e.transition;return v.value?{name:typeof c!="string"?n.transition.value:c,onBeforeEnter:d,onAfterEnter:r,onEnterCancelled:y,onBeforeLeave:d,onAfterLeave:r,onLeaveCancelled:y,onEnter:T}:!1}),{hasContent:g}=ne(e,i.isSelected);return R(()=>m(p,{transition:b.value,disabled:!u.value},{default:()=>{var c;return[V(m("div",{class:["v-window-item",i.selectedClass.value,e.class],style:e.style},[g.value&&((c=t.default)==null?void 0:c.call(t))]),[[N,i.isSelected.value]])]}})),{groupItem:i}}});export{ge as V,me as a};
@@ -1 +1 @@
1
- import{S as oe,V as ne,a as re,_ as N}from"./VToolbar-qYCVOLXR.js";import{a9 as ie,_ as k,k as le,Q as w,R as l,O as T,P as d,L as a,aa as y,ab as B,ac as de,M as ce,ad as ue,ae as W,af as me,ag as be,x as F,ah as fe,ai as pe,G as j,aj as ge,r as z,h as A,K as q,ak as R,al as P,am as D,an as ve,ao as _e,ap as he,aq as Se,ar as ye,as as Te,at as Ve,au as f,av as Ce,z as we,aw as ke,ax as H,t as O,N as xe,ay as p,az as G,aA as $e,aB as Be,aC as Ae,m as Pe,aD as De}from"./admin-drawer-panel-UQNBz5Mr.js";import{u as Le}from"./main-CTJQvqMb.js";import{t as Ie}from"./index-DUjeNg4x.js";import{f as Me}from"./confirm-footer-CLcqjnLg.js";import{m as Ee,V as U}from"./VSlideGroup-r8lyA6_4.js";import{V as ze,a as Re}from"./VWindowItem-DAPhfogt.js";import{V as Oe}from"./VMain-CDWaq_uU.js";import"./change-password-dialog-D80TfT-n.js";import"./VSelectionControl-CEOyDLZC.js";const Ge={name:"AdminTitleToolbar",components:{SettingsDrawerButton:oe},computed:{...ie(le,["isSettingsDrawerOpen"])}};function Ue(e,t,r,u,o,m){const i=w("SettingsDrawerButton");return l(),T(re,{id:"titleBar",class:B(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:d(()=>[a(ne,{class:"codexToolbarTitle"},{default:d(()=>[y(" Codex Administration ")]),_:1}),a(i,{class:B({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:t[0]||(t[0]=s=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const X=k(Ge,[["render",Ue],["__scopeId","data-v-15c77dc3"]]),Ne={name:"AdminSettingsPanel",data(){return{mdiBookshelf:de}},computed:{...ce(Le,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function We(e,t,r,u,o,m){return l(),T(be,{ref:"browserLink",to:e.browserRoute},{default:d(()=>[a(me,null,{default:d(()=>[a(ue,null,{default:d(()=>[y(W(o.mdiBookshelf),1)]),_:1}),y("Browser ")]),_:1})]),_:1},8,["to"])}const Fe=k(Ne,[["render",We]]),Y=Symbol.for("vuetify:v-tabs"),je=F({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...fe(pe({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),K=j()({name:"VTab",props:je(),setup(e,t){let{slots:r,attrs:u}=t;const{textColorClasses:o,textColorStyles:m}=ge(e,"sliderColor"),i=z(),s=z(),n=A(()=>e.direction==="horizontal"),c=A(()=>{var g,b;return((b=(g=i.value)==null?void 0:g.group)==null?void 0:b.isSelected.value)??!1});function Q(g){var L,I;let{value:b}=g;if(b){const x=(I=(L=i.value)==null?void 0:L.$el.parentElement)==null?void 0:I.querySelector(".v-tab--selected .v-tab__slider"),$=s.value;if(!x||!$)return;const J=getComputedStyle(x).color,v=x.getBoundingClientRect(),_=$.getBoundingClientRect(),V=n.value?"x":"y",C=n.value?"X":"Y",M=n.value?"right":"bottom",h=n.value?"width":"height",Z=v[V],ee=_[V],S=Z>ee?v[M]-_[M]:v[V]-_[V],te=Math.sign(S)>0?n.value?"right":"bottom":Math.sign(S)<0?n.value?"left":"top":"center",ae=(Math.abs(S)+(Math.sign(S)<0?v[h]:_[h]))/Math.max(v[h],_[h])||0,se=v[h]/_[h]||0,E=1.5;ve($,{backgroundColor:[J,"currentcolor"],transform:[`translate${C}(${S}px) scale${C}(${se})`,`translate${C}(${S/E}px) scale${C}(${(ae-1)/E+1})`,"none"],transformOrigin:Array(3).fill(te)},{duration:225,easing:_e})}}return q(()=>{const g=R.filterProps(e);return a(R,D({symbol:Y,ref:i,class:["v-tab",e.class],style:e.style,tabindex:c.value?0:-1,role:"tab","aria-selected":String(c.value),active:!1},g,u,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":Q}),{...r,default:()=>{var b;return a(P,null,[((b=r.default)==null?void 0:b.call(r))??e.text,!e.hideSlider&&a("div",{ref:s,class:["v-tab__slider",o.value],style:m.value},null)])}})}),Me({},i)}});function qe(e){return e?e.map(t=>ke(t)?t:{text:t,value:t}):[]}const He=F({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...Ee({mandatory:"force"}),...he(),...Se()},"VTabs"),Xe=j()({name:"VTabs",props:He(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:r}=t;const u=ye(e,"modelValue"),o=A(()=>qe(e.items)),{densityClasses:m}=Te(e),{backgroundColorClasses:i,backgroundColorStyles:s}=Ve(f(e,"bgColor"));return Ce({VTab:{color:f(e,"color"),direction:f(e,"direction"),stacked:f(e,"stacked"),fixed:f(e,"fixedTabs"),sliderColor:f(e,"sliderColor"),hideSlider:f(e,"hideSlider")}}),q(()=>{const n=U.filterProps(e);return a(U,D(n,{modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},m.value,i.value,e.class],style:[{"--v-tabs-height":we(e.height)},s.value,e.style],role:"tablist",symbol:Y}),{default:()=>[r.default?r.default():o.value.map(c=>a(K,D(c,{key:c.text}),null))]})}),{}}}),Ye={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...H(O,["librariesExist"])},watch:{$route(e){const r=e.path.split("/").at(-1);this.activeTab=Ie(r)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...xe(O,["loadTables"])}},Ke={id:"tabContainer"},Qe={key:0,id:"noLibraries"};function Je(e,t,r,u,o,m){const i=w("router-view");return l(),p("div",Ke,[a(Xe,{id:"tabs",class:B({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(K,{key:s,modelValue:o.activeTab,"onUpdate:modelValue":t[0]||(t[0]=n=>o.activeTab=n),to:s.toLowerCase()},{default:d(()=>[y(W(s),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),a(Re,{id:"tabItems",modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=s=>o.activeTab=s),touch:!1},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(i,{key:s},{default:d(({Component:n})=>[a(ze,{value:s,class:"tabItemContainer"},{default:d(()=>[(l(),T($e(n)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Be("",!0):(l(),p("div",Qe," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const Ze=k(Ye,[["render",Je],["__scopeId","data-v-03b1c9e5"]]),et={name:"MainAdmin",components:{AdminTitleToolbar:X,AdminTabs:Ze,SettingsDrawer:N},data(){return{AdminSettingsPanel:Ae(Fe)}},computed:{...H(Pe,["isUserAdmin"])}},tt={id:"adminWrapper"},at={key:0,id:"adminContainer"},st={key:1,id:"announcement"};function ot(e,t,r,u,o,m){const i=X,s=w("AdminTabs"),n=N,c=w("router-link");return l(),p("div",tt,[e.isUserAdmin?(l(),p("div",at,[a(Oe,null,{default:d(()=>[a(i),a(s)]),_:1}),a(n,{title:"Admin Status",admin:!0,panel:o.AdminSettingsPanel},null,8,["panel"])])):(l(),p("div",st,[De("h1",null,[a(c,{to:{name:"home"}},{default:d(()=>[y(" Log in ")]),_:1}),y(" as an Administrator to use this panel ")])]))])}const gt=k(et,[["render",ot],["__scopeId","data-v-0605704c"]]);export{gt as default};
1
+ import{S as oe,V as ne,a as re,_ as N}from"./VToolbar-BgYY-L1O.js";import{a9 as ie,_ as k,k as le,Q as w,R as l,O as T,P as d,L as a,aa as y,ab as B,ac as de,M as ce,ad as ue,ae as W,af as me,ag as be,x as F,ah as fe,ai as pe,G as j,aj as ge,r as z,h as A,K as q,ak as R,al as P,am as D,an as ve,ao as _e,ap as he,aq as Se,ar as ye,as as Te,at as Ve,au as f,av as Ce,z as we,aw as ke,ax as H,t as O,N as xe,ay as p,az as G,aA as $e,aB as Be,aC as Ae,m as Pe,aD as De}from"./admin-drawer-panel-CzxhSiRn.js";import{u as Le}from"./main-JHk9CBom.js";import{t as Ie}from"./index-DUjeNg4x.js";import{f as Me}from"./confirm-footer-4RE1GmaG.js";import{m as Ee,V as U}from"./VSlideGroup-BpKJ2pWX.js";import{V as ze,a as Re}from"./VWindowItem-30SgsTJ6.js";import{V as Oe}from"./VMain-BNpmVWfH.js";import"./change-password-dialog-DxrgqKSG.js";import"./VSelectionControl-K1Fk4HTO.js";const Ge={name:"AdminTitleToolbar",components:{SettingsDrawerButton:oe},computed:{...ie(le,["isSettingsDrawerOpen"])}};function Ue(e,t,r,u,o,m){const i=w("SettingsDrawerButton");return l(),T(re,{id:"titleBar",class:B(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:d(()=>[a(ne,{class:"codexToolbarTitle"},{default:d(()=>[y(" Codex Administration ")]),_:1}),a(i,{class:B({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:t[0]||(t[0]=s=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const X=k(Ge,[["render",Ue],["__scopeId","data-v-15c77dc3"]]),Ne={name:"AdminSettingsPanel",data(){return{mdiBookshelf:de}},computed:{...ce(Le,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function We(e,t,r,u,o,m){return l(),T(be,{ref:"browserLink",to:e.browserRoute},{default:d(()=>[a(me,null,{default:d(()=>[a(ue,null,{default:d(()=>[y(W(o.mdiBookshelf),1)]),_:1}),y("Browser ")]),_:1})]),_:1},8,["to"])}const Fe=k(Ne,[["render",We]]),Y=Symbol.for("vuetify:v-tabs"),je=F({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...fe(pe({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),K=j()({name:"VTab",props:je(),setup(e,t){let{slots:r,attrs:u}=t;const{textColorClasses:o,textColorStyles:m}=ge(e,"sliderColor"),i=z(),s=z(),n=A(()=>e.direction==="horizontal"),c=A(()=>{var g,b;return((b=(g=i.value)==null?void 0:g.group)==null?void 0:b.isSelected.value)??!1});function Q(g){var L,I;let{value:b}=g;if(b){const x=(I=(L=i.value)==null?void 0:L.$el.parentElement)==null?void 0:I.querySelector(".v-tab--selected .v-tab__slider"),$=s.value;if(!x||!$)return;const J=getComputedStyle(x).color,v=x.getBoundingClientRect(),_=$.getBoundingClientRect(),V=n.value?"x":"y",C=n.value?"X":"Y",M=n.value?"right":"bottom",h=n.value?"width":"height",Z=v[V],ee=_[V],S=Z>ee?v[M]-_[M]:v[V]-_[V],te=Math.sign(S)>0?n.value?"right":"bottom":Math.sign(S)<0?n.value?"left":"top":"center",ae=(Math.abs(S)+(Math.sign(S)<0?v[h]:_[h]))/Math.max(v[h],_[h])||0,se=v[h]/_[h]||0,E=1.5;ve($,{backgroundColor:[J,"currentcolor"],transform:[`translate${C}(${S}px) scale${C}(${se})`,`translate${C}(${S/E}px) scale${C}(${(ae-1)/E+1})`,"none"],transformOrigin:Array(3).fill(te)},{duration:225,easing:_e})}}return q(()=>{const g=R.filterProps(e);return a(R,D({symbol:Y,ref:i,class:["v-tab",e.class],style:e.style,tabindex:c.value?0:-1,role:"tab","aria-selected":String(c.value),active:!1},g,u,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":Q}),{...r,default:()=>{var b;return a(P,null,[((b=r.default)==null?void 0:b.call(r))??e.text,!e.hideSlider&&a("div",{ref:s,class:["v-tab__slider",o.value],style:m.value},null)])}})}),Me({},i)}});function qe(e){return e?e.map(t=>ke(t)?t:{text:t,value:t}):[]}const He=F({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...Ee({mandatory:"force"}),...he(),...Se()},"VTabs"),Xe=j()({name:"VTabs",props:He(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:r}=t;const u=ye(e,"modelValue"),o=A(()=>qe(e.items)),{densityClasses:m}=Te(e),{backgroundColorClasses:i,backgroundColorStyles:s}=Ve(f(e,"bgColor"));return Ce({VTab:{color:f(e,"color"),direction:f(e,"direction"),stacked:f(e,"stacked"),fixed:f(e,"fixedTabs"),sliderColor:f(e,"sliderColor"),hideSlider:f(e,"hideSlider")}}),q(()=>{const n=U.filterProps(e);return a(U,D(n,{modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},m.value,i.value,e.class],style:[{"--v-tabs-height":we(e.height)},s.value,e.style],role:"tablist",symbol:Y}),{default:()=>[r.default?r.default():o.value.map(c=>a(K,D(c,{key:c.text}),null))]})}),{}}}),Ye={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...H(O,["librariesExist"])},watch:{$route(e){const r=e.path.split("/").at(-1);this.activeTab=Ie(r)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...xe(O,["loadTables"])}},Ke={id:"tabContainer"},Qe={key:0,id:"noLibraries"};function Je(e,t,r,u,o,m){const i=w("router-view");return l(),p("div",Ke,[a(Xe,{id:"tabs",class:B({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(K,{key:s,modelValue:o.activeTab,"onUpdate:modelValue":t[0]||(t[0]=n=>o.activeTab=n),to:s.toLowerCase()},{default:d(()=>[y(W(s),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),a(Re,{id:"tabItems",modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=s=>o.activeTab=s),touch:!1},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(i,{key:s},{default:d(({Component:n})=>[a(ze,{value:s,class:"tabItemContainer"},{default:d(()=>[(l(),T($e(n)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Be("",!0):(l(),p("div",Qe," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const Ze=k(Ye,[["render",Je],["__scopeId","data-v-03b1c9e5"]]),et={name:"MainAdmin",components:{AdminTitleToolbar:X,AdminTabs:Ze,SettingsDrawer:N},data(){return{AdminSettingsPanel:Ae(Fe)}},computed:{...H(Pe,["isUserAdmin"])}},tt={id:"adminWrapper"},at={key:0,id:"adminContainer"},st={key:1,id:"announcement"};function ot(e,t,r,u,o,m){const i=X,s=w("AdminTabs"),n=N,c=w("router-link");return l(),p("div",tt,[e.isUserAdmin?(l(),p("div",at,[a(Oe,null,{default:d(()=>[a(i),a(s)]),_:1}),a(n,{title:"Admin Status",admin:!0,panel:o.AdminSettingsPanel},null,8,["panel"])])):(l(),p("div",st,[De("h1",null,[a(c,{to:{name:"home"}},{default:d(()=>[y(" Log in ")]),_:1}),y(" as an Administrator to use this panel ")])]))])}const gt=k(et,[["render",ot],["__scopeId","data-v-0605704c"]]);export{gt as default};
@@ -1 +1 @@
1
- import{S as oe,V as ne,a as re,_ as N}from"./VToolbar-qYCVOLXR.js";import{a9 as ie,_ as k,k as le,Q as w,R as l,O as T,P as d,L as a,aa as y,ab as B,ac as de,M as ce,ad as ue,ae as W,af as me,ag as be,x as F,ah as fe,ai as pe,G as j,aj as ge,r as z,h as A,K as q,ak as R,al as P,am as D,an as ve,ao as _e,ap as he,aq as Se,ar as ye,as as Te,at as Ve,au as f,av as Ce,z as we,aw as ke,ax as H,t as O,N as xe,ay as p,az as G,aA as $e,aB as Be,aC as Ae,m as Pe,aD as De}from"./admin-drawer-panel-UQNBz5Mr.js";import{u as Le}from"./main-CTJQvqMb.js";import{t as Ie}from"./index-DUjeNg4x.js";import{f as Me}from"./confirm-footer-CLcqjnLg.js";import{m as Ee,V as U}from"./VSlideGroup-r8lyA6_4.js";import{V as ze,a as Re}from"./VWindowItem-DAPhfogt.js";import{V as Oe}from"./VMain-CDWaq_uU.js";import"./change-password-dialog-D80TfT-n.js";import"./VSelectionControl-CEOyDLZC.js";const Ge={name:"AdminTitleToolbar",components:{SettingsDrawerButton:oe},computed:{...ie(le,["isSettingsDrawerOpen"])}};function Ue(e,t,r,u,o,m){const i=w("SettingsDrawerButton");return l(),T(re,{id:"titleBar",class:B(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:d(()=>[a(ne,{class:"codexToolbarTitle"},{default:d(()=>[y(" Codex Administration ")]),_:1}),a(i,{class:B({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:t[0]||(t[0]=s=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const X=k(Ge,[["render",Ue],["__scopeId","data-v-15c77dc3"]]),Ne={name:"AdminSettingsPanel",data(){return{mdiBookshelf:de}},computed:{...ce(Le,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function We(e,t,r,u,o,m){return l(),T(be,{ref:"browserLink",to:e.browserRoute},{default:d(()=>[a(me,null,{default:d(()=>[a(ue,null,{default:d(()=>[y(W(o.mdiBookshelf),1)]),_:1}),y("Browser ")]),_:1})]),_:1},8,["to"])}const Fe=k(Ne,[["render",We]]),Y=Symbol.for("vuetify:v-tabs"),je=F({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...fe(pe({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),K=j()({name:"VTab",props:je(),setup(e,t){let{slots:r,attrs:u}=t;const{textColorClasses:o,textColorStyles:m}=ge(e,"sliderColor"),i=z(),s=z(),n=A(()=>e.direction==="horizontal"),c=A(()=>{var g,b;return((b=(g=i.value)==null?void 0:g.group)==null?void 0:b.isSelected.value)??!1});function Q(g){var L,I;let{value:b}=g;if(b){const x=(I=(L=i.value)==null?void 0:L.$el.parentElement)==null?void 0:I.querySelector(".v-tab--selected .v-tab__slider"),$=s.value;if(!x||!$)return;const J=getComputedStyle(x).color,v=x.getBoundingClientRect(),_=$.getBoundingClientRect(),V=n.value?"x":"y",C=n.value?"X":"Y",M=n.value?"right":"bottom",h=n.value?"width":"height",Z=v[V],ee=_[V],S=Z>ee?v[M]-_[M]:v[V]-_[V],te=Math.sign(S)>0?n.value?"right":"bottom":Math.sign(S)<0?n.value?"left":"top":"center",ae=(Math.abs(S)+(Math.sign(S)<0?v[h]:_[h]))/Math.max(v[h],_[h])||0,se=v[h]/_[h]||0,E=1.5;ve($,{backgroundColor:[J,"currentcolor"],transform:[`translate${C}(${S}px) scale${C}(${se})`,`translate${C}(${S/E}px) scale${C}(${(ae-1)/E+1})`,"none"],transformOrigin:Array(3).fill(te)},{duration:225,easing:_e})}}return q(()=>{const g=R.filterProps(e);return a(R,D({symbol:Y,ref:i,class:["v-tab",e.class],style:e.style,tabindex:c.value?0:-1,role:"tab","aria-selected":String(c.value),active:!1},g,u,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":Q}),{...r,default:()=>{var b;return a(P,null,[((b=r.default)==null?void 0:b.call(r))??e.text,!e.hideSlider&&a("div",{ref:s,class:["v-tab__slider",o.value],style:m.value},null)])}})}),Me({},i)}});function qe(e){return e?e.map(t=>ke(t)?t:{text:t,value:t}):[]}const He=F({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...Ee({mandatory:"force"}),...he(),...Se()},"VTabs"),Xe=j()({name:"VTabs",props:He(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:r}=t;const u=ye(e,"modelValue"),o=A(()=>qe(e.items)),{densityClasses:m}=Te(e),{backgroundColorClasses:i,backgroundColorStyles:s}=Ve(f(e,"bgColor"));return Ce({VTab:{color:f(e,"color"),direction:f(e,"direction"),stacked:f(e,"stacked"),fixed:f(e,"fixedTabs"),sliderColor:f(e,"sliderColor"),hideSlider:f(e,"hideSlider")}}),q(()=>{const n=U.filterProps(e);return a(U,D(n,{modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},m.value,i.value,e.class],style:[{"--v-tabs-height":we(e.height)},s.value,e.style],role:"tablist",symbol:Y}),{default:()=>[r.default?r.default():o.value.map(c=>a(K,D(c,{key:c.text}),null))]})}),{}}}),Ye={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...H(O,["librariesExist"])},watch:{$route(e){const r=e.path.split("/").at(-1);this.activeTab=Ie(r)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...xe(O,["loadTables"])}},Ke={id:"tabContainer"},Qe={key:0,id:"noLibraries"};function Je(e,t,r,u,o,m){const i=w("router-view");return l(),p("div",Ke,[a(Xe,{id:"tabs",class:B({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(K,{key:s,modelValue:o.activeTab,"onUpdate:modelValue":t[0]||(t[0]=n=>o.activeTab=n),to:s.toLowerCase()},{default:d(()=>[y(W(s),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),a(Re,{id:"tabItems",modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=s=>o.activeTab=s),touch:!1},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(i,{key:s},{default:d(({Component:n})=>[a(ze,{value:s,class:"tabItemContainer"},{default:d(()=>[(l(),T($e(n)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Be("",!0):(l(),p("div",Qe," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const Ze=k(Ye,[["render",Je],["__scopeId","data-v-03b1c9e5"]]),et={name:"MainAdmin",components:{AdminTitleToolbar:X,AdminTabs:Ze,SettingsDrawer:N},data(){return{AdminSettingsPanel:Ae(Fe)}},computed:{...H(Pe,["isUserAdmin"])}},tt={id:"adminWrapper"},at={key:0,id:"adminContainer"},st={key:1,id:"announcement"};function ot(e,t,r,u,o,m){const i=X,s=w("AdminTabs"),n=N,c=w("router-link");return l(),p("div",tt,[e.isUserAdmin?(l(),p("div",at,[a(Oe,null,{default:d(()=>[a(i),a(s)]),_:1}),a(n,{title:"Admin Status",admin:!0,panel:o.AdminSettingsPanel},null,8,["panel"])])):(l(),p("div",st,[De("h1",null,[a(c,{to:{name:"home"}},{default:d(()=>[y(" Log in ")]),_:1}),y(" as an Administrator to use this panel ")])]))])}const gt=k(et,[["render",ot],["__scopeId","data-v-0605704c"]]);export{gt as default};
1
+ import{S as oe,V as ne,a as re,_ as N}from"./VToolbar-BgYY-L1O.js";import{a9 as ie,_ as k,k as le,Q as w,R as l,O as T,P as d,L as a,aa as y,ab as B,ac as de,M as ce,ad as ue,ae as W,af as me,ag as be,x as F,ah as fe,ai as pe,G as j,aj as ge,r as z,h as A,K as q,ak as R,al as P,am as D,an as ve,ao as _e,ap as he,aq as Se,ar as ye,as as Te,at as Ve,au as f,av as Ce,z as we,aw as ke,ax as H,t as O,N as xe,ay as p,az as G,aA as $e,aB as Be,aC as Ae,m as Pe,aD as De}from"./admin-drawer-panel-CzxhSiRn.js";import{u as Le}from"./main-JHk9CBom.js";import{t as Ie}from"./index-DUjeNg4x.js";import{f as Me}from"./confirm-footer-4RE1GmaG.js";import{m as Ee,V as U}from"./VSlideGroup-BpKJ2pWX.js";import{V as ze,a as Re}from"./VWindowItem-30SgsTJ6.js";import{V as Oe}from"./VMain-BNpmVWfH.js";import"./change-password-dialog-DxrgqKSG.js";import"./VSelectionControl-K1Fk4HTO.js";const Ge={name:"AdminTitleToolbar",components:{SettingsDrawerButton:oe},computed:{...ie(le,["isSettingsDrawerOpen"])}};function Ue(e,t,r,u,o,m){const i=w("SettingsDrawerButton");return l(),T(re,{id:"titleBar",class:B(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:d(()=>[a(ne,{class:"codexToolbarTitle"},{default:d(()=>[y(" Codex Administration ")]),_:1}),a(i,{class:B({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:t[0]||(t[0]=s=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const X=k(Ge,[["render",Ue],["__scopeId","data-v-15c77dc3"]]),Ne={name:"AdminSettingsPanel",data(){return{mdiBookshelf:de}},computed:{...ce(Le,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function We(e,t,r,u,o,m){return l(),T(be,{ref:"browserLink",to:e.browserRoute},{default:d(()=>[a(me,null,{default:d(()=>[a(ue,null,{default:d(()=>[y(W(o.mdiBookshelf),1)]),_:1}),y("Browser ")]),_:1})]),_:1},8,["to"])}const Fe=k(Ne,[["render",We]]),Y=Symbol.for("vuetify:v-tabs"),je=F({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...fe(pe({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),K=j()({name:"VTab",props:je(),setup(e,t){let{slots:r,attrs:u}=t;const{textColorClasses:o,textColorStyles:m}=ge(e,"sliderColor"),i=z(),s=z(),n=A(()=>e.direction==="horizontal"),c=A(()=>{var g,b;return((b=(g=i.value)==null?void 0:g.group)==null?void 0:b.isSelected.value)??!1});function Q(g){var L,I;let{value:b}=g;if(b){const x=(I=(L=i.value)==null?void 0:L.$el.parentElement)==null?void 0:I.querySelector(".v-tab--selected .v-tab__slider"),$=s.value;if(!x||!$)return;const J=getComputedStyle(x).color,v=x.getBoundingClientRect(),_=$.getBoundingClientRect(),V=n.value?"x":"y",C=n.value?"X":"Y",M=n.value?"right":"bottom",h=n.value?"width":"height",Z=v[V],ee=_[V],S=Z>ee?v[M]-_[M]:v[V]-_[V],te=Math.sign(S)>0?n.value?"right":"bottom":Math.sign(S)<0?n.value?"left":"top":"center",ae=(Math.abs(S)+(Math.sign(S)<0?v[h]:_[h]))/Math.max(v[h],_[h])||0,se=v[h]/_[h]||0,E=1.5;ve($,{backgroundColor:[J,"currentcolor"],transform:[`translate${C}(${S}px) scale${C}(${se})`,`translate${C}(${S/E}px) scale${C}(${(ae-1)/E+1})`,"none"],transformOrigin:Array(3).fill(te)},{duration:225,easing:_e})}}return q(()=>{const g=R.filterProps(e);return a(R,D({symbol:Y,ref:i,class:["v-tab",e.class],style:e.style,tabindex:c.value?0:-1,role:"tab","aria-selected":String(c.value),active:!1},g,u,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":Q}),{...r,default:()=>{var b;return a(P,null,[((b=r.default)==null?void 0:b.call(r))??e.text,!e.hideSlider&&a("div",{ref:s,class:["v-tab__slider",o.value],style:m.value},null)])}})}),Me({},i)}});function qe(e){return e?e.map(t=>ke(t)?t:{text:t,value:t}):[]}const He=F({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...Ee({mandatory:"force"}),...he(),...Se()},"VTabs"),Xe=j()({name:"VTabs",props:He(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:r}=t;const u=ye(e,"modelValue"),o=A(()=>qe(e.items)),{densityClasses:m}=Te(e),{backgroundColorClasses:i,backgroundColorStyles:s}=Ve(f(e,"bgColor"));return Ce({VTab:{color:f(e,"color"),direction:f(e,"direction"),stacked:f(e,"stacked"),fixed:f(e,"fixedTabs"),sliderColor:f(e,"sliderColor"),hideSlider:f(e,"hideSlider")}}),q(()=>{const n=U.filterProps(e);return a(U,D(n,{modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},m.value,i.value,e.class],style:[{"--v-tabs-height":we(e.height)},s.value,e.style],role:"tablist",symbol:Y}),{default:()=>[r.default?r.default():o.value.map(c=>a(K,D(c,{key:c.text}),null))]})}),{}}}),Ye={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...H(O,["librariesExist"])},watch:{$route(e){const r=e.path.split("/").at(-1);this.activeTab=Ie(r)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...xe(O,["loadTables"])}},Ke={id:"tabContainer"},Qe={key:0,id:"noLibraries"};function Je(e,t,r,u,o,m){const i=w("router-view");return l(),p("div",Ke,[a(Xe,{id:"tabs",class:B({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(K,{key:s,modelValue:o.activeTab,"onUpdate:modelValue":t[0]||(t[0]=n=>o.activeTab=n),to:s.toLowerCase()},{default:d(()=>[y(W(s),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),a(Re,{id:"tabItems",modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=s=>o.activeTab=s),touch:!1},{default:d(()=>[(l(!0),p(P,null,G(o.tabs,s=>(l(),T(i,{key:s},{default:d(({Component:n})=>[a(ze,{value:s,class:"tabItemContainer"},{default:d(()=>[(l(),T($e(n)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Be("",!0):(l(),p("div",Qe," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const Ze=k(Ye,[["render",Je],["__scopeId","data-v-03b1c9e5"]]),et={name:"MainAdmin",components:{AdminTitleToolbar:X,AdminTabs:Ze,SettingsDrawer:N},data(){return{AdminSettingsPanel:Ae(Fe)}},computed:{...H(Pe,["isUserAdmin"])}},tt={id:"adminWrapper"},at={key:0,id:"adminContainer"},st={key:1,id:"announcement"};function ot(e,t,r,u,o,m){const i=X,s=w("AdminTabs"),n=N,c=w("router-link");return l(),p("div",tt,[e.isUserAdmin?(l(),p("div",at,[a(Oe,null,{default:d(()=>[a(i),a(s)]),_:1}),a(n,{title:"Admin Status",admin:!0,panel:o.AdminSettingsPanel},null,8,["panel"])])):(l(),p("div",st,[De("h1",null,[a(c,{to:{name:"home"}},{default:d(()=>[y(" Log in ")]),_:1}),y(" as an Administrator to use this panel ")])]))])}const gt=k(et,[["render",ot],["__scopeId","data-v-0605704c"]]);export{gt as default};