codex 1.5.19__py3-none-any.whl → 1.6.0__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 (911) hide show
  1. codex/exceptions.py +25 -12
  2. codex/integrity.py +66 -3
  3. codex/librarian/covers/coverd.py +2 -2
  4. codex/librarian/covers/create.py +52 -30
  5. codex/librarian/covers/path.py +9 -8
  6. codex/librarian/covers/purge.py +28 -18
  7. codex/librarian/covers/tasks.py +3 -2
  8. codex/librarian/importer/{aggregate_metadata.py → aggregate.py} +58 -88
  9. codex/librarian/importer/cache.py +93 -0
  10. codex/librarian/importer/const.py +77 -23
  11. codex/librarian/importer/create_comics.py +101 -18
  12. codex/librarian/importer/create_covers.py +96 -0
  13. codex/librarian/importer/create_fks.py +129 -150
  14. codex/librarian/importer/deleted.py +103 -28
  15. codex/librarian/importer/{clean_metadata.py → extract.py} +33 -4
  16. codex/librarian/importer/failed_imports.py +44 -66
  17. codex/librarian/importer/importer.py +96 -0
  18. codex/librarian/importer/importerd.py +71 -290
  19. codex/librarian/importer/init.py +265 -0
  20. codex/librarian/importer/link_comics.py +26 -26
  21. codex/librarian/importer/link_covers.py +73 -0
  22. codex/librarian/importer/moved.py +138 -89
  23. codex/librarian/importer/query_covers.py +52 -0
  24. codex/librarian/importer/query_fks.py +255 -189
  25. codex/librarian/importer/status.py +8 -39
  26. codex/librarian/importer/tasks.py +26 -9
  27. codex/librarian/janitor/cleanup.py +61 -16
  28. codex/librarian/janitor/failed_imports.py +1 -1
  29. codex/librarian/janitor/janitor.py +13 -1
  30. codex/librarian/janitor/janitord.py +1 -1
  31. codex/librarian/janitor/status.py +1 -0
  32. codex/librarian/janitor/tasks.py +5 -0
  33. codex/librarian/librariand.py +9 -5
  34. codex/librarian/notifier/notifierd.py +1 -1
  35. codex/librarian/notifier/tasks.py +4 -4
  36. codex/librarian/search/update.py +1 -1
  37. codex/librarian/watchdog/db_snapshot.py +9 -6
  38. codex/librarian/watchdog/emitter.py +3 -0
  39. codex/librarian/watchdog/event_batcherd.py +19 -3
  40. codex/librarian/watchdog/events.py +176 -36
  41. codex/librarian/watchdog/observers.py +13 -3
  42. codex/middleware.py +1 -2
  43. codex/migrations/0027_import_order_and_covers.py +280 -0
  44. codex/models/admin.py +0 -1
  45. codex/models/base.py +6 -0
  46. codex/models/comic.py +41 -40
  47. codex/models/functions.py +12 -0
  48. codex/models/groups.py +58 -12
  49. codex/models/library.py +11 -3
  50. codex/models/paths.py +62 -14
  51. codex/models/query.py +91 -0
  52. codex/models/util.py +31 -0
  53. codex/permissions.py +1 -1
  54. codex/search/backend.py +2 -2
  55. codex/search/backend_search.py +229 -0
  56. codex/search/engine.py +1 -9
  57. codex/search/query.py +67 -0
  58. codex/search/writing.py +1 -1
  59. codex/serializers/admin.py +56 -45
  60. codex/serializers/browser/choices.py +37 -42
  61. codex/serializers/browser/filters.py +32 -136
  62. codex/serializers/browser/metadata.py +59 -0
  63. codex/serializers/browser/mixins.py +65 -0
  64. codex/serializers/browser/mtime.py +21 -0
  65. codex/serializers/browser/page.py +6 -21
  66. codex/serializers/browser/settings.py +43 -11
  67. codex/serializers/choices.py +35 -12
  68. codex/serializers/fields.py +149 -0
  69. codex/serializers/mixins.py +0 -22
  70. codex/serializers/models/pycountry.py +11 -51
  71. codex/serializers/opds/urls.py +10 -0
  72. codex/serializers/opds/v2.py +10 -16
  73. codex/serializers/opds/v2_unused.py +5 -3
  74. codex/serializers/reader.py +24 -16
  75. codex/serializers/redirect.py +3 -2
  76. codex/serializers/route.py +45 -0
  77. codex/serializers/settings.py +12 -0
  78. codex/settings/settings.py +79 -32
  79. codex/signals/django_signals.py +6 -0
  80. codex/startup.py +77 -3
  81. codex/static_root/assets/VCheckbox-DanrzdHo.8ec5e2094cbf.js +1 -0
  82. codex/static_root/assets/VCheckbox-DanrzdHo.8ec5e2094cbf.js.br +0 -0
  83. codex/static_root/assets/VCheckbox-DanrzdHo.8ec5e2094cbf.js.gz +0 -0
  84. codex/static_root/assets/VCheckbox-DanrzdHo.js +1 -0
  85. codex/static_root/assets/VCheckbox-DanrzdHo.js.br +0 -0
  86. codex/static_root/assets/VCheckbox-DanrzdHo.js.gz +0 -0
  87. codex/static_root/assets/{VCheckboxBtn-CzTNt4cV.39d03f0eaf4b.js → VCheckboxBtn-DxNOKONG.5ab34c4c47aa.js} +1 -1
  88. codex/static_root/assets/VCheckboxBtn-DxNOKONG.5ab34c4c47aa.js.br +0 -0
  89. codex/static_root/assets/VCheckboxBtn-DxNOKONG.5ab34c4c47aa.js.gz +0 -0
  90. codex/static_root/assets/{VCheckboxBtn-CzTNt4cV.js → VCheckboxBtn-DxNOKONG.js} +1 -1
  91. codex/static_root/assets/VCheckboxBtn-DxNOKONG.js.br +0 -0
  92. codex/static_root/assets/VCheckboxBtn-DxNOKONG.js.gz +0 -0
  93. codex/static_root/assets/VCombobox-DDvdoPTG.11d080e8edd7.js +1 -0
  94. codex/static_root/assets/VCombobox-DDvdoPTG.11d080e8edd7.js.br +0 -0
  95. codex/static_root/assets/VCombobox-DDvdoPTG.11d080e8edd7.js.gz +0 -0
  96. codex/static_root/assets/VCombobox-DDvdoPTG.js +1 -0
  97. codex/static_root/assets/VCombobox-DDvdoPTG.js.br +0 -0
  98. codex/static_root/assets/VCombobox-DDvdoPTG.js.gz +0 -0
  99. codex/static_root/assets/VDialog-Bd5dN_E1.457666d7fce1.js +1 -0
  100. codex/static_root/assets/VDialog-Bd5dN_E1.457666d7fce1.js.br +0 -0
  101. codex/static_root/assets/VDialog-Bd5dN_E1.457666d7fce1.js.gz +0 -0
  102. codex/static_root/assets/VDialog-Bd5dN_E1.js +1 -0
  103. codex/static_root/assets/VDialog-Bd5dN_E1.js.br +0 -0
  104. codex/static_root/assets/VDialog-Bd5dN_E1.js.gz +0 -0
  105. codex/static_root/assets/VDialog-lQ13FnRR.1c801ad756b2.css +1 -0
  106. codex/static_root/assets/VDialog-lQ13FnRR.1c801ad756b2.css.br +0 -0
  107. codex/static_root/assets/VDialog-lQ13FnRR.1c801ad756b2.css.gz +0 -0
  108. codex/static_root/assets/VDialog-lQ13FnRR.css +1 -0
  109. codex/static_root/assets/VDialog-lQ13FnRR.css.br +0 -0
  110. codex/static_root/assets/VDialog-lQ13FnRR.css.gz +0 -0
  111. codex/static_root/assets/VExpansionPanels-DqTuYpTR.12673cf9f391.js +1 -0
  112. codex/static_root/assets/VExpansionPanels-DqTuYpTR.12673cf9f391.js.br +0 -0
  113. codex/static_root/assets/VExpansionPanels-DqTuYpTR.12673cf9f391.js.gz +0 -0
  114. codex/static_root/assets/VExpansionPanels-DqTuYpTR.js +1 -0
  115. codex/static_root/assets/VExpansionPanels-DqTuYpTR.js.br +0 -0
  116. codex/static_root/assets/VExpansionPanels-DqTuYpTR.js.gz +0 -0
  117. codex/static_root/assets/VRadioGroup-DKb8XPr-.3cf6bf5bf3bc.js +1 -0
  118. codex/static_root/assets/VRadioGroup-DKb8XPr-.3cf6bf5bf3bc.js.br +0 -0
  119. codex/static_root/assets/VRadioGroup-DKb8XPr-.3cf6bf5bf3bc.js.gz +0 -0
  120. codex/static_root/assets/VRadioGroup-DKb8XPr-.js +1 -0
  121. codex/static_root/assets/VRadioGroup-DKb8XPr-.js.br +0 -0
  122. codex/static_root/assets/VRadioGroup-DKb8XPr-.js.gz +0 -0
  123. codex/static_root/assets/VSelect-ARDhJiQK.372c098fb475.css +1 -0
  124. codex/static_root/assets/VSelect-ARDhJiQK.372c098fb475.css.br +0 -0
  125. codex/static_root/assets/VSelect-ARDhJiQK.372c098fb475.css.gz +0 -0
  126. codex/static_root/assets/VSelect-ARDhJiQK.css +1 -0
  127. codex/static_root/assets/VSelect-ARDhJiQK.css.br +0 -0
  128. codex/static_root/assets/VSelect-ARDhJiQK.css.gz +0 -0
  129. codex/static_root/assets/VSelect-C_yPbyCG.08bd6b53a7ce.js +1 -0
  130. codex/static_root/assets/VSelect-C_yPbyCG.08bd6b53a7ce.js.br +0 -0
  131. codex/static_root/assets/VSelect-C_yPbyCG.08bd6b53a7ce.js.gz +0 -0
  132. codex/static_root/assets/VSelect-C_yPbyCG.js +1 -0
  133. codex/static_root/assets/VSelect-C_yPbyCG.js.br +0 -0
  134. codex/static_root/assets/VSelect-C_yPbyCG.js.gz +0 -0
  135. codex/static_root/assets/VSelectionControl-CmFPvGMS.802c9b3e6e28.js +1 -0
  136. codex/static_root/assets/VSelectionControl-CmFPvGMS.802c9b3e6e28.js.br +0 -0
  137. codex/static_root/assets/VSelectionControl-CmFPvGMS.802c9b3e6e28.js.gz +0 -0
  138. codex/static_root/assets/VSelectionControl-CmFPvGMS.js +1 -0
  139. codex/static_root/assets/VSelectionControl-CmFPvGMS.js.br +0 -0
  140. codex/static_root/assets/VSelectionControl-CmFPvGMS.js.gz +0 -0
  141. codex/static_root/assets/VSlideGroup-D5FZWsM1.a47491fe3e6d.js +1 -0
  142. codex/static_root/assets/VSlideGroup-D5FZWsM1.a47491fe3e6d.js.br +0 -0
  143. codex/static_root/assets/VSlideGroup-D5FZWsM1.a47491fe3e6d.js.gz +0 -0
  144. codex/static_root/assets/VSlideGroup-D5FZWsM1.js +1 -0
  145. codex/static_root/assets/VSlideGroup-D5FZWsM1.js.br +0 -0
  146. codex/static_root/assets/VSlideGroup-D5FZWsM1.js.gz +0 -0
  147. codex/static_root/assets/VSlideGroup-Dk_1upHt.2c836070ec75.css +1 -0
  148. codex/static_root/assets/VSlideGroup-Dk_1upHt.2c836070ec75.css.br +0 -0
  149. codex/static_root/assets/VSlideGroup-Dk_1upHt.2c836070ec75.css.gz +0 -0
  150. codex/static_root/assets/VSlideGroup-Dk_1upHt.css +1 -0
  151. codex/static_root/assets/VSlideGroup-Dk_1upHt.css.br +0 -0
  152. codex/static_root/assets/VSlideGroup-Dk_1upHt.css.gz +0 -0
  153. codex/static_root/assets/{VTable-TEvK4Tmn.c68c176d93db.js → VTable-2RHFqfg6.f0f2106b158b.js} +1 -1
  154. codex/static_root/assets/VTable-2RHFqfg6.f0f2106b158b.js.br +0 -0
  155. codex/static_root/assets/VTable-2RHFqfg6.f0f2106b158b.js.gz +0 -0
  156. codex/static_root/assets/{VTable-TEvK4Tmn.js → VTable-2RHFqfg6.js} +1 -1
  157. codex/static_root/assets/VTable-2RHFqfg6.js.br +0 -0
  158. codex/static_root/assets/VTable-2RHFqfg6.js.gz +0 -0
  159. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css +1 -0
  160. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.br +0 -0
  161. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.gz +0 -0
  162. codex/static_root/assets/VTextField-BssVoDhB.css +1 -0
  163. codex/static_root/assets/VTextField-BssVoDhB.css.br +0 -0
  164. codex/static_root/assets/VTextField-BssVoDhB.css.gz +0 -0
  165. codex/static_root/assets/VTextField-o1N9ylIb.7fffaeff8d40.js +1 -0
  166. codex/static_root/assets/VTextField-o1N9ylIb.7fffaeff8d40.js.br +0 -0
  167. codex/static_root/assets/VTextField-o1N9ylIb.7fffaeff8d40.js.gz +0 -0
  168. codex/static_root/assets/VTextField-o1N9ylIb.js +1 -0
  169. codex/static_root/assets/VTextField-o1N9ylIb.js.br +0 -0
  170. codex/static_root/assets/VTextField-o1N9ylIb.js.gz +0 -0
  171. codex/static_root/assets/VWindowItem-C_zvuz9C.663fa48efea4.js +1 -0
  172. codex/static_root/assets/VWindowItem-C_zvuz9C.663fa48efea4.js.br +0 -0
  173. codex/static_root/assets/VWindowItem-C_zvuz9C.663fa48efea4.js.gz +0 -0
  174. codex/static_root/assets/VWindowItem-C_zvuz9C.js +1 -0
  175. codex/static_root/assets/VWindowItem-C_zvuz9C.js.br +0 -0
  176. codex/static_root/assets/VWindowItem-C_zvuz9C.js.gz +0 -0
  177. codex/static_root/assets/admin-B8Bp2Uih.82c98714bcf1.css +1 -0
  178. codex/static_root/assets/admin-B8Bp2Uih.82c98714bcf1.css.br +0 -0
  179. codex/static_root/assets/admin-B8Bp2Uih.82c98714bcf1.css.gz +0 -0
  180. codex/static_root/assets/admin-B8Bp2Uih.css +1 -0
  181. codex/static_root/assets/admin-B8Bp2Uih.css.br +0 -0
  182. codex/static_root/assets/admin-B8Bp2Uih.css.gz +0 -0
  183. codex/static_root/assets/admin-DHyHEWZ3.7a8015456c0f.js +1 -0
  184. codex/static_root/assets/admin-DHyHEWZ3.7a8015456c0f.js.br +0 -0
  185. codex/static_root/assets/admin-DHyHEWZ3.7a8015456c0f.js.gz +0 -0
  186. codex/static_root/assets/admin-DHyHEWZ3.js +1 -0
  187. codex/static_root/assets/admin-DHyHEWZ3.js.br +0 -0
  188. codex/static_root/assets/admin-DHyHEWZ3.js.gz +0 -0
  189. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.19507a95375b.js +30 -0
  190. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.19507a95375b.js.br +0 -0
  191. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.19507a95375b.js.gz +0 -0
  192. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.js +30 -0
  193. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.js.br +0 -0
  194. codex/static_root/assets/admin-drawer-panel-BXpIDQXM.js.gz +0 -0
  195. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css +1 -0
  196. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.br +0 -0
  197. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.gz +0 -0
  198. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css +1 -0
  199. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.br +0 -0
  200. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.gz +0 -0
  201. codex/static_root/assets/browser-D0Vjmmp_.a1bfaf48d65f.js +1 -0
  202. codex/static_root/assets/browser-D0Vjmmp_.a1bfaf48d65f.js.br +0 -0
  203. codex/static_root/assets/browser-D0Vjmmp_.a1bfaf48d65f.js.gz +0 -0
  204. codex/static_root/assets/browser-D0Vjmmp_.js +1 -0
  205. codex/static_root/assets/browser-D0Vjmmp_.js.br +0 -0
  206. codex/static_root/assets/browser-D0Vjmmp_.js.gz +0 -0
  207. codex/static_root/assets/browser-D7QQDneO.155cb612ed0c.css +1 -0
  208. codex/static_root/assets/browser-D7QQDneO.155cb612ed0c.css.br +0 -0
  209. codex/static_root/assets/browser-D7QQDneO.155cb612ed0c.css.gz +0 -0
  210. codex/static_root/assets/browser-D7QQDneO.css +1 -0
  211. codex/static_root/assets/browser-D7QQDneO.css.br +0 -0
  212. codex/static_root/assets/browser-D7QQDneO.css.gz +0 -0
  213. codex/static_root/assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css +1 -0
  214. codex/static_root/assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css.br +0 -0
  215. codex/static_root/assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css.gz +0 -0
  216. codex/static_root/assets/change-password-dialog-0u6IJA87.css +1 -0
  217. codex/static_root/assets/change-password-dialog-0u6IJA87.css.br +0 -0
  218. codex/static_root/assets/change-password-dialog-0u6IJA87.css.gz +0 -0
  219. codex/static_root/assets/change-password-dialog-BBsJLPXZ.e642f7e2b96f.js +1 -0
  220. codex/static_root/assets/change-password-dialog-BBsJLPXZ.e642f7e2b96f.js.br +0 -0
  221. codex/static_root/assets/change-password-dialog-BBsJLPXZ.e642f7e2b96f.js.gz +0 -0
  222. codex/static_root/assets/change-password-dialog-BBsJLPXZ.js +1 -0
  223. codex/static_root/assets/change-password-dialog-BBsJLPXZ.js.br +0 -0
  224. codex/static_root/assets/change-password-dialog-BBsJLPXZ.js.gz +0 -0
  225. codex/static_root/assets/confirm-dialog-DCKvg3ai.2a3277b3c147.js +1 -0
  226. codex/static_root/assets/confirm-dialog-DCKvg3ai.2a3277b3c147.js.br +0 -0
  227. codex/static_root/assets/confirm-dialog-DCKvg3ai.2a3277b3c147.js.gz +0 -0
  228. codex/static_root/assets/confirm-dialog-DCKvg3ai.js +1 -0
  229. codex/static_root/assets/confirm-dialog-DCKvg3ai.js.br +0 -0
  230. codex/static_root/assets/confirm-dialog-DCKvg3ai.js.gz +0 -0
  231. codex/static_root/assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js +1 -0
  232. codex/static_root/assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js.br +0 -0
  233. codex/static_root/assets/copy-to-clipboard-DoUvDJVx.js +1 -0
  234. codex/static_root/assets/copy-to-clipboard-DoUvDJVx.js.br +0 -0
  235. codex/static_root/assets/datetime-column-DeCthByU.1f3bf499e063.css +1 -0
  236. codex/static_root/assets/datetime-column-DeCthByU.css +1 -0
  237. codex/static_root/assets/datetime-column-jHKA_uNm.039c7da2036f.js +1 -0
  238. codex/static_root/assets/datetime-column-jHKA_uNm.039c7da2036f.js.br +0 -0
  239. codex/static_root/assets/datetime-column-jHKA_uNm.039c7da2036f.js.gz +0 -0
  240. codex/static_root/assets/datetime-column-jHKA_uNm.js +1 -0
  241. codex/static_root/assets/datetime-column-jHKA_uNm.js.br +0 -0
  242. codex/static_root/assets/datetime-column-jHKA_uNm.js.gz +0 -0
  243. codex/static_root/assets/filter-DgPg2ts9.af0fcf0888c6.js +1 -0
  244. codex/static_root/assets/filter-DgPg2ts9.af0fcf0888c6.js.br +0 -0
  245. codex/static_root/assets/filter-DgPg2ts9.af0fcf0888c6.js.gz +0 -0
  246. codex/static_root/assets/filter-DgPg2ts9.js +1 -0
  247. codex/static_root/assets/filter-DgPg2ts9.js.br +0 -0
  248. codex/static_root/assets/filter-DgPg2ts9.js.gz +0 -0
  249. codex/static_root/assets/{flag-tab-D380D1SI.f4bc34623651.js → flag-tab-9qxOALxP.f89bc9891671.js} +1 -1
  250. codex/static_root/assets/flag-tab-9qxOALxP.f89bc9891671.js.br +0 -0
  251. codex/static_root/assets/flag-tab-9qxOALxP.f89bc9891671.js.gz +0 -0
  252. codex/static_root/assets/{flag-tab-D380D1SI.js → flag-tab-9qxOALxP.js} +1 -1
  253. codex/static_root/assets/flag-tab-9qxOALxP.js.br +0 -0
  254. codex/static_root/assets/flag-tab-9qxOALxP.js.gz +0 -0
  255. codex/static_root/assets/flag-tab-BNwbLfrN.b755a99fff7e.css +1 -0
  256. codex/static_root/assets/flag-tab-BNwbLfrN.b755a99fff7e.css.br +0 -0
  257. codex/static_root/assets/flag-tab-BNwbLfrN.b755a99fff7e.css.gz +0 -0
  258. codex/static_root/assets/flag-tab-BNwbLfrN.css +1 -0
  259. codex/static_root/assets/flag-tab-BNwbLfrN.css.br +0 -0
  260. codex/static_root/assets/flag-tab-BNwbLfrN.css.gz +0 -0
  261. codex/static_root/assets/group-tab-CBKuS3Iv.7e4746634782.css +1 -0
  262. codex/static_root/assets/group-tab-CBKuS3Iv.7e4746634782.css.br +0 -0
  263. codex/static_root/assets/group-tab-CBKuS3Iv.7e4746634782.css.gz +0 -0
  264. codex/static_root/assets/group-tab-CBKuS3Iv.css +1 -0
  265. codex/static_root/assets/group-tab-CBKuS3Iv.css.br +0 -0
  266. codex/static_root/assets/group-tab-CBKuS3Iv.css.gz +0 -0
  267. codex/static_root/assets/group-tab-D5vWrihT.1afb2ce453ff.js +1 -0
  268. codex/static_root/assets/group-tab-D5vWrihT.1afb2ce453ff.js.br +0 -0
  269. codex/static_root/assets/group-tab-D5vWrihT.1afb2ce453ff.js.gz +0 -0
  270. codex/static_root/assets/group-tab-D5vWrihT.js +1 -0
  271. codex/static_root/assets/group-tab-D5vWrihT.js.br +0 -0
  272. codex/static_root/assets/group-tab-D5vWrihT.js.gz +0 -0
  273. codex/static_root/assets/http-error-B4FHoKfs.141fdae409bc.js +1 -0
  274. codex/static_root/assets/http-error-B4FHoKfs.141fdae409bc.js.br +0 -0
  275. codex/static_root/assets/http-error-B4FHoKfs.141fdae409bc.js.gz +0 -0
  276. codex/static_root/assets/http-error-B4FHoKfs.js +1 -0
  277. codex/static_root/assets/http-error-B4FHoKfs.js.br +0 -0
  278. codex/static_root/assets/http-error-B4FHoKfs.js.gz +0 -0
  279. codex/static_root/assets/http-error-DKulXuTl.95e42988d5d5.css +1 -0
  280. codex/static_root/assets/http-error-DKulXuTl.95e42988d5d5.css.br +0 -0
  281. codex/static_root/assets/http-error-DKulXuTl.95e42988d5d5.css.gz +0 -0
  282. codex/static_root/assets/http-error-DKulXuTl.css +1 -0
  283. codex/static_root/assets/http-error-DKulXuTl.css.br +0 -0
  284. codex/static_root/assets/http-error-DKulXuTl.css.gz +0 -0
  285. codex/static_root/assets/library-tab-BN0SfPcH.913e236f625e.css +1 -0
  286. codex/static_root/assets/library-tab-BN0SfPcH.913e236f625e.css.br +0 -0
  287. codex/static_root/assets/library-tab-BN0SfPcH.913e236f625e.css.gz +0 -0
  288. codex/static_root/assets/library-tab-BN0SfPcH.css +1 -0
  289. codex/static_root/assets/library-tab-BN0SfPcH.css.br +0 -0
  290. codex/static_root/assets/library-tab-BN0SfPcH.css.gz +0 -0
  291. codex/static_root/assets/library-tab-BWo0cmzk.0e3d67d0c41a.js +1 -0
  292. codex/static_root/assets/library-tab-BWo0cmzk.0e3d67d0c41a.js.br +0 -0
  293. codex/static_root/assets/library-tab-BWo0cmzk.0e3d67d0c41a.js.gz +0 -0
  294. codex/static_root/assets/library-tab-BWo0cmzk.js +1 -0
  295. codex/static_root/assets/library-tab-BWo0cmzk.js.br +0 -0
  296. codex/static_root/assets/library-tab-BWo0cmzk.js.gz +0 -0
  297. codex/static_root/assets/{main-ED57DJUb.css → main-Ztp855PW.css} +1 -1
  298. codex/static_root/assets/main-Ztp855PW.css.br +0 -0
  299. codex/static_root/assets/{main-ED57DJUb.css.gz → main-Ztp855PW.css.gz} +0 -0
  300. codex/static_root/assets/{main-ED57DJUb.b84231dc384d.css → main-Ztp855PW.d46d718fac45.css} +1 -1
  301. codex/static_root/assets/main-Ztp855PW.d46d718fac45.css.br +0 -0
  302. codex/static_root/assets/{main-ED57DJUb.b84231dc384d.css.gz → main-Ztp855PW.d46d718fac45.css.gz} +0 -0
  303. codex/static_root/assets/main-ipmlipkF.5e60e6e8e447.js +32 -0
  304. codex/static_root/assets/main-ipmlipkF.5e60e6e8e447.js.br +0 -0
  305. codex/static_root/assets/main-ipmlipkF.5e60e6e8e447.js.gz +0 -0
  306. codex/static_root/assets/main-ipmlipkF.js +32 -0
  307. codex/static_root/assets/main-ipmlipkF.js.br +0 -0
  308. codex/static_root/assets/main-ipmlipkF.js.gz +0 -0
  309. codex/static_root/assets/pagination-toolbar-BA9ifTed.b4865334ee08.css +1 -0
  310. codex/static_root/assets/pagination-toolbar-BA9ifTed.b4865334ee08.css.br +0 -0
  311. codex/static_root/assets/pagination-toolbar-BA9ifTed.b4865334ee08.css.gz +0 -0
  312. codex/static_root/assets/pagination-toolbar-BA9ifTed.css +1 -0
  313. codex/static_root/assets/pagination-toolbar-BA9ifTed.css.br +0 -0
  314. codex/static_root/assets/pagination-toolbar-BA9ifTed.css.gz +0 -0
  315. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.b3341b8028df.js +1 -0
  316. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.b3341b8028df.js.br +0 -0
  317. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.b3341b8028df.js.gz +0 -0
  318. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.js +1 -0
  319. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.js.br +0 -0
  320. codex/static_root/assets/pagination-toolbar-kZ-Xdv8c.js.gz +0 -0
  321. codex/static_root/assets/pdf-doc-C2StaYUz.cb848834dbe1.js +305 -0
  322. codex/static_root/assets/pdf-doc-C2StaYUz.cb848834dbe1.js.br +0 -0
  323. codex/static_root/assets/pdf-doc-C2StaYUz.cb848834dbe1.js.gz +0 -0
  324. codex/static_root/assets/pdf-doc-C2StaYUz.js +305 -0
  325. codex/static_root/assets/pdf-doc-C2StaYUz.js.br +0 -0
  326. codex/static_root/assets/pdf-doc-C2StaYUz.js.gz +0 -0
  327. codex/static_root/assets/reader-CCnq3j1-.b6b38ed5521e.js +2 -0
  328. codex/static_root/assets/reader-CCnq3j1-.b6b38ed5521e.js.br +0 -0
  329. codex/static_root/assets/reader-CCnq3j1-.b6b38ed5521e.js.gz +0 -0
  330. codex/static_root/assets/reader-CCnq3j1-.js +2 -0
  331. codex/static_root/assets/reader-CCnq3j1-.js.br +0 -0
  332. codex/static_root/assets/reader-CCnq3j1-.js.gz +0 -0
  333. codex/static_root/assets/reader-CqXFa_gE.78267e9de0c2.css +1 -0
  334. codex/static_root/assets/reader-CqXFa_gE.78267e9de0c2.css.br +0 -0
  335. codex/static_root/assets/reader-CqXFa_gE.78267e9de0c2.css.gz +0 -0
  336. codex/static_root/assets/reader-CqXFa_gE.css +1 -0
  337. codex/static_root/assets/reader-CqXFa_gE.css.br +0 -0
  338. codex/static_root/assets/reader-CqXFa_gE.css.gz +0 -0
  339. codex/static_root/assets/relation-chips-Bsc-gUxE.98e65384c3c9.css +1 -0
  340. codex/static_root/assets/relation-chips-Bsc-gUxE.98e65384c3c9.css.br +0 -0
  341. codex/static_root/assets/relation-chips-Bsc-gUxE.98e65384c3c9.css.gz +0 -0
  342. codex/static_root/assets/relation-chips-Bsc-gUxE.css +1 -0
  343. codex/static_root/assets/relation-chips-Bsc-gUxE.css.br +0 -0
  344. codex/static_root/assets/relation-chips-Bsc-gUxE.css.gz +0 -0
  345. codex/static_root/assets/relation-chips-C9ysW0tU.670f1d1f273f.js +1 -0
  346. codex/static_root/assets/relation-chips-C9ysW0tU.670f1d1f273f.js.br +0 -0
  347. codex/static_root/assets/relation-chips-C9ysW0tU.670f1d1f273f.js.gz +0 -0
  348. codex/static_root/assets/relation-chips-C9ysW0tU.js +1 -0
  349. codex/static_root/assets/relation-chips-C9ysW0tU.js.br +0 -0
  350. codex/static_root/assets/relation-chips-C9ysW0tU.js.gz +0 -0
  351. codex/static_root/assets/settings-drawer-C0ofzAhW.c0def8f383cb.js +2 -0
  352. codex/static_root/assets/settings-drawer-C0ofzAhW.c0def8f383cb.js.br +0 -0
  353. codex/static_root/assets/settings-drawer-C0ofzAhW.c0def8f383cb.js.gz +0 -0
  354. codex/static_root/assets/settings-drawer-C0ofzAhW.js +2 -0
  355. codex/static_root/assets/settings-drawer-C0ofzAhW.js.br +0 -0
  356. codex/static_root/assets/settings-drawer-C0ofzAhW.js.gz +0 -0
  357. codex/static_root/assets/settings-drawer-nZ9HvKSZ.01744e131806.css +1 -0
  358. codex/static_root/assets/settings-drawer-nZ9HvKSZ.01744e131806.css.br +0 -0
  359. codex/static_root/assets/settings-drawer-nZ9HvKSZ.01744e131806.css.gz +0 -0
  360. codex/static_root/assets/settings-drawer-nZ9HvKSZ.css +1 -0
  361. codex/static_root/assets/settings-drawer-nZ9HvKSZ.css.br +0 -0
  362. codex/static_root/assets/settings-drawer-nZ9HvKSZ.css.gz +0 -0
  363. codex/static_root/assets/stats-tab-B4yKuY0c.a5728396494b.css +1 -0
  364. codex/static_root/assets/stats-tab-B4yKuY0c.a5728396494b.css.br +0 -0
  365. codex/static_root/assets/stats-tab-B4yKuY0c.a5728396494b.css.gz +0 -0
  366. codex/static_root/assets/stats-tab-B4yKuY0c.css +1 -0
  367. codex/static_root/assets/stats-tab-B4yKuY0c.css.br +0 -0
  368. codex/static_root/assets/stats-tab-B4yKuY0c.css.gz +0 -0
  369. codex/static_root/assets/stats-tab-BqJj7j1w.38a3459d61ea.js +1 -0
  370. codex/static_root/assets/stats-tab-BqJj7j1w.38a3459d61ea.js.br +0 -0
  371. codex/static_root/assets/stats-tab-BqJj7j1w.38a3459d61ea.js.gz +0 -0
  372. codex/static_root/assets/stats-tab-BqJj7j1w.js +1 -0
  373. codex/static_root/assets/stats-tab-BqJj7j1w.js.br +0 -0
  374. codex/static_root/assets/stats-tab-BqJj7j1w.js.gz +0 -0
  375. codex/static_root/assets/task-tab-1XiWn9xP.06cb8e1b794d.css +1 -0
  376. codex/static_root/assets/{task-tab-DoX9OA37.9bb355f36dbf.css.br → task-tab-1XiWn9xP.06cb8e1b794d.css.br} +1 -1
  377. codex/static_root/assets/task-tab-1XiWn9xP.06cb8e1b794d.css.gz +0 -0
  378. codex/static_root/assets/task-tab-1XiWn9xP.css +1 -0
  379. codex/static_root/assets/{task-tab-DoX9OA37.css.br → task-tab-1XiWn9xP.css.br} +1 -1
  380. codex/static_root/assets/task-tab-1XiWn9xP.css.gz +0 -0
  381. codex/static_root/assets/task-tab-BsPzNk8S.e00630a60b43.js +1 -0
  382. codex/static_root/assets/task-tab-BsPzNk8S.e00630a60b43.js.br +0 -0
  383. codex/static_root/assets/task-tab-BsPzNk8S.e00630a60b43.js.gz +0 -0
  384. codex/static_root/assets/task-tab-BsPzNk8S.js +1 -0
  385. codex/static_root/assets/task-tab-BsPzNk8S.js.br +0 -0
  386. codex/static_root/assets/task-tab-BsPzNk8S.js.gz +0 -0
  387. codex/static_root/assets/to-case-KvqtSug2.9c02da2e47c7.js +1 -0
  388. codex/static_root/assets/to-case-KvqtSug2.9c02da2e47c7.js.br +0 -0
  389. codex/static_root/assets/to-case-KvqtSug2.js +1 -0
  390. codex/static_root/assets/to-case-KvqtSug2.js.br +0 -0
  391. codex/static_root/assets/unauthorized-CibJYD8o.4c2de98c2b53.css +1 -0
  392. codex/static_root/assets/unauthorized-CibJYD8o.4c2de98c2b53.css.br +0 -0
  393. codex/static_root/assets/unauthorized-CibJYD8o.4c2de98c2b53.css.gz +0 -0
  394. codex/static_root/assets/unauthorized-CibJYD8o.css +1 -0
  395. codex/static_root/assets/unauthorized-CibJYD8o.css.br +0 -0
  396. codex/static_root/assets/unauthorized-CibJYD8o.css.gz +0 -0
  397. codex/static_root/assets/unauthorized-DwSdNzX2.f418e69f3afe.js +1 -0
  398. codex/static_root/assets/unauthorized-DwSdNzX2.f418e69f3afe.js.br +0 -0
  399. codex/static_root/assets/unauthorized-DwSdNzX2.f418e69f3afe.js.gz +0 -0
  400. codex/static_root/assets/unauthorized-DwSdNzX2.js +1 -0
  401. codex/static_root/assets/unauthorized-DwSdNzX2.js.br +0 -0
  402. codex/static_root/assets/unauthorized-DwSdNzX2.js.gz +0 -0
  403. codex/static_root/assets/user-tab-DrJOb9Ys.083d993726d8.js +1 -0
  404. codex/static_root/assets/user-tab-DrJOb9Ys.083d993726d8.js.br +0 -0
  405. codex/static_root/assets/user-tab-DrJOb9Ys.083d993726d8.js.gz +0 -0
  406. codex/static_root/assets/user-tab-DrJOb9Ys.js +1 -0
  407. codex/static_root/assets/user-tab-DrJOb9Ys.js.br +0 -0
  408. codex/static_root/assets/user-tab-DrJOb9Ys.js.gz +0 -0
  409. codex/static_root/img/folder.f28936a3701d.svg +1 -0
  410. codex/static_root/img/folder.f28936a3701d.svg.br +0 -0
  411. codex/static_root/img/folder.f28936a3701d.svg.gz +0 -0
  412. codex/static_root/img/folder.svg +1 -0
  413. codex/static_root/img/folder.svg.br +0 -0
  414. codex/static_root/img/folder.svg.gz +0 -0
  415. codex/static_root/img/imprint.7c2adebb76d6.svg +1 -0
  416. codex/static_root/img/imprint.7c2adebb76d6.svg.br +0 -0
  417. codex/static_root/img/imprint.7c2adebb76d6.svg.gz +0 -0
  418. codex/static_root/img/imprint.svg +1 -0
  419. codex/static_root/img/imprint.svg.br +0 -0
  420. codex/static_root/img/imprint.svg.gz +0 -0
  421. codex/static_root/img/logo-32.5688944495bf.webp +0 -0
  422. codex/static_root/img/logo-32.webp +0 -0
  423. codex/static_root/img/logo-maskable-180.c58d966aa64e.webp +0 -0
  424. codex/static_root/img/logo-maskable-180.webp +0 -0
  425. codex/static_root/img/logo-maskable.8f7de7f1c6a8.svg +1 -0
  426. codex/static_root/img/logo-maskable.8f7de7f1c6a8.svg.br +0 -0
  427. codex/static_root/img/logo-maskable.8f7de7f1c6a8.svg.gz +0 -0
  428. codex/static_root/img/logo-maskable.svg +1 -83
  429. codex/static_root/img/logo-maskable.svg.br +0 -0
  430. codex/static_root/img/logo-maskable.svg.gz +0 -0
  431. codex/static_root/img/logo.0f5344a028ca.svg +1 -0
  432. codex/static_root/img/logo.0f5344a028ca.svg.br +0 -0
  433. codex/static_root/img/logo.0f5344a028ca.svg.gz +0 -0
  434. codex/static_root/img/logo.svg +1 -80
  435. codex/static_root/img/logo.svg.br +0 -0
  436. codex/static_root/img/logo.svg.gz +0 -0
  437. codex/static_root/img/missing-cover-165.0743171f2148.webp +0 -0
  438. codex/static_root/img/missing-cover-165.webp +0 -0
  439. codex/static_root/img/missing-cover.ddb038cc2c56.svg +1 -0
  440. codex/static_root/img/missing-cover.ddb038cc2c56.svg.br +0 -0
  441. codex/static_root/img/missing-cover.ddb038cc2c56.svg.gz +0 -0
  442. codex/static_root/img/missing-cover.svg +1 -0
  443. codex/static_root/img/missing-cover.svg.br +0 -0
  444. codex/static_root/img/missing-cover.svg.gz +0 -0
  445. codex/static_root/img/publisher.82d378fcd601.svg +1 -0
  446. codex/static_root/img/publisher.82d378fcd601.svg.br +0 -0
  447. codex/static_root/img/publisher.82d378fcd601.svg.gz +0 -0
  448. codex/static_root/img/publisher.svg +1 -0
  449. codex/static_root/img/publisher.svg.br +0 -0
  450. codex/static_root/img/publisher.svg.gz +0 -0
  451. codex/static_root/img/series.ec8a889b8f95.svg +1 -0
  452. codex/static_root/img/series.ec8a889b8f95.svg.br +0 -0
  453. codex/static_root/img/series.ec8a889b8f95.svg.gz +0 -0
  454. codex/static_root/img/series.svg +1 -0
  455. codex/static_root/img/series.svg.br +0 -0
  456. codex/static_root/img/series.svg.gz +0 -0
  457. codex/static_root/img/story-arc.ca10014355ef.svg +1 -0
  458. codex/static_root/img/story-arc.ca10014355ef.svg.br +1 -0
  459. codex/static_root/img/story-arc.ca10014355ef.svg.gz +0 -0
  460. codex/static_root/img/story-arc.svg +1 -0
  461. codex/static_root/img/story-arc.svg.br +1 -0
  462. codex/static_root/img/story-arc.svg.gz +0 -0
  463. codex/static_root/img/volume.814e4c79461a.svg +1 -0
  464. codex/static_root/img/volume.814e4c79461a.svg.br +0 -0
  465. codex/static_root/img/volume.814e4c79461a.svg.gz +0 -0
  466. codex/static_root/img/volume.svg +1 -0
  467. codex/static_root/img/volume.svg.br +0 -0
  468. codex/static_root/img/volume.svg.gz +0 -0
  469. codex/static_root/js/choices-admin.3521e2a863df.json +1 -0
  470. codex/static_root/js/choices-admin.3521e2a863df.json.br +0 -0
  471. codex/static_root/js/choices-admin.3521e2a863df.json.gz +0 -0
  472. codex/static_root/js/choices-admin.json +1 -1
  473. codex/static_root/js/choices-admin.json.br +0 -0
  474. codex/static_root/js/choices-admin.json.gz +0 -0
  475. codex/static_root/js/choices.2f6b0359e1ef.json +1 -0
  476. codex/static_root/js/choices.2f6b0359e1ef.json.br +0 -0
  477. codex/static_root/js/choices.2f6b0359e1ef.json.gz +0 -0
  478. codex/static_root/js/choices.json +1 -1
  479. codex/static_root/js/choices.json.br +0 -0
  480. codex/static_root/js/choices.json.gz +0 -0
  481. codex/static_root/manifest.1c84116d9a0a.json +622 -0
  482. codex/static_root/manifest.1c84116d9a0a.json.br +0 -0
  483. codex/static_root/manifest.1c84116d9a0a.json.gz +0 -0
  484. codex/static_root/manifest.json +337 -322
  485. codex/static_root/manifest.json.br +0 -0
  486. codex/static_root/manifest.json.gz +0 -0
  487. codex/static_root/staticfiles.json +1 -1
  488. codex/status_controller.py +11 -2
  489. codex/templates/headers-script-globals.html +1 -4
  490. codex/urls/api/admin.py +5 -7
  491. codex/urls/api/auth.py +2 -1
  492. codex/urls/api/browser.py +18 -9
  493. codex/urls/api/reader.py +5 -11
  494. codex/urls/api/v3.py +4 -0
  495. codex/urls/app.py +8 -3
  496. codex/urls/converters.py +39 -0
  497. codex/urls/opds/binary.py +1 -1
  498. codex/urls/opds/root.py +3 -4
  499. codex/urls/opds/v1.py +1 -1
  500. codex/urls/opds/v2.py +6 -1
  501. codex/urls/root.py +2 -1
  502. codex/util.py +12 -0
  503. codex/views/admin/api_key.py +7 -8
  504. codex/views/admin/auth.py +28 -0
  505. codex/views/admin/flag.py +2 -7
  506. codex/views/admin/group.py +2 -6
  507. codex/views/admin/library.py +44 -37
  508. codex/views/admin/stats.py +20 -83
  509. codex/views/admin/tasks.py +26 -12
  510. codex/views/admin/user.py +3 -14
  511. codex/views/auth.py +39 -64
  512. codex/views/bookmark.py +93 -72
  513. codex/views/browser/annotations.py +293 -0
  514. codex/views/browser/base.py +101 -87
  515. codex/views/browser/breadcrumbs.py +202 -0
  516. codex/views/browser/browser.py +165 -518
  517. codex/views/browser/choices.py +67 -120
  518. codex/views/browser/cover.py +165 -0
  519. codex/views/browser/filters/annotations.py +102 -0
  520. codex/views/browser/filters/bookmark.py +24 -12
  521. codex/views/browser/filters/field.py +8 -6
  522. codex/views/browser/filters/group.py +38 -16
  523. codex/views/browser/filters/search.py +169 -25
  524. codex/views/browser/metadata.py +169 -136
  525. codex/views/browser/mtime.py +61 -0
  526. codex/views/browser/order_by.py +65 -0
  527. codex/views/browser/paginate.py +106 -0
  528. codex/views/browser/settings.py +66 -0
  529. codex/views/browser/title.py +48 -0
  530. codex/views/browser/validate.py +161 -0
  531. codex/views/const.py +157 -0
  532. codex/views/download.py +8 -20
  533. codex/views/error.py +2 -2
  534. codex/views/frontend.py +8 -3
  535. codex/views/mixins.py +76 -0
  536. codex/views/opds/auth.py +17 -0
  537. codex/views/opds/authentication_v1.py +46 -45
  538. codex/views/opds/binary.py +5 -10
  539. codex/views/opds/const.py +13 -0
  540. codex/views/opds/urls.py +30 -0
  541. codex/views/opds/util.py +11 -19
  542. codex/views/opds/v1/entry/data.py +2 -2
  543. codex/views/opds/v1/entry/entry.py +5 -5
  544. codex/views/opds/v1/entry/links.py +68 -58
  545. codex/views/opds/v1/facets.py +11 -11
  546. codex/views/opds/v1/feed.py +84 -63
  547. codex/views/opds/v1/links.py +21 -19
  548. codex/views/opds/v1/opensearch_v1.py +5 -6
  549. codex/views/opds/v2/feed.py +69 -53
  550. codex/views/opds/v2/links.py +4 -2
  551. codex/views/opds/v2/publications.py +50 -68
  552. codex/views/opds/v2/top_links.py +4 -4
  553. codex/views/public.py +36 -0
  554. codex/views/reader/arcs.py +92 -0
  555. codex/views/reader/books.py +181 -0
  556. codex/views/reader/init.py +125 -0
  557. codex/views/reader/page.py +16 -5
  558. codex/views/reader/reader.py +22 -236
  559. codex/views/reader/{session.py → settings.py} +4 -2
  560. codex/views/session.py +92 -102
  561. codex/views/settings.py +47 -0
  562. codex/views/template.py +3 -3
  563. codex/views/util.py +77 -0
  564. codex/views/version.py +2 -2
  565. codex/websockets/consumers.py +14 -10
  566. {codex-1.5.19.dist-info → codex-1.6.0.dist-info}/METADATA +36 -18
  567. codex-1.6.0.dist-info/RECORD +1013 -0
  568. codex/db_functions.py +0 -25
  569. codex/img/missing-cover.webp +0 -0
  570. codex/librarian/importer/update_comics.py +0 -90
  571. codex/serializers/metadata.py +0 -15
  572. codex/static_root/assets/VCheckbox-D7WF5wMC.c98c1beb207e.js +0 -1
  573. codex/static_root/assets/VCheckbox-D7WF5wMC.c98c1beb207e.js.br +0 -0
  574. codex/static_root/assets/VCheckbox-D7WF5wMC.c98c1beb207e.js.gz +0 -0
  575. codex/static_root/assets/VCheckbox-D7WF5wMC.js +0 -1
  576. codex/static_root/assets/VCheckbox-D7WF5wMC.js.br +0 -0
  577. codex/static_root/assets/VCheckbox-D7WF5wMC.js.gz +0 -0
  578. codex/static_root/assets/VCheckboxBtn-CzTNt4cV.39d03f0eaf4b.js.br +0 -0
  579. codex/static_root/assets/VCheckboxBtn-CzTNt4cV.39d03f0eaf4b.js.gz +0 -0
  580. codex/static_root/assets/VCheckboxBtn-CzTNt4cV.js.br +0 -0
  581. codex/static_root/assets/VCheckboxBtn-CzTNt4cV.js.gz +0 -0
  582. codex/static_root/assets/VCombobox-BWrSBDP9.52f0c0067437.js +0 -1
  583. codex/static_root/assets/VCombobox-BWrSBDP9.52f0c0067437.js.br +0 -0
  584. codex/static_root/assets/VCombobox-BWrSBDP9.52f0c0067437.js.gz +0 -0
  585. codex/static_root/assets/VCombobox-BWrSBDP9.js +0 -1
  586. codex/static_root/assets/VCombobox-BWrSBDP9.js.br +0 -0
  587. codex/static_root/assets/VCombobox-BWrSBDP9.js.gz +0 -0
  588. codex/static_root/assets/VDataTableVirtual-BMondxto.8b48739e5470.js +0 -1
  589. codex/static_root/assets/VDataTableVirtual-BMondxto.8b48739e5470.js.br +0 -0
  590. codex/static_root/assets/VDataTableVirtual-BMondxto.8b48739e5470.js.gz +0 -0
  591. codex/static_root/assets/VDataTableVirtual-BMondxto.js +0 -1
  592. codex/static_root/assets/VDataTableVirtual-BMondxto.js.br +0 -0
  593. codex/static_root/assets/VDataTableVirtual-BMondxto.js.gz +0 -0
  594. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.a73a7dd5614a.css +0 -1
  595. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.a73a7dd5614a.css.br +0 -0
  596. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.a73a7dd5614a.css.gz +0 -0
  597. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.css +0 -1
  598. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.css.br +0 -0
  599. codex/static_root/assets/VDataTableVirtual-C5zDmmxd.css.gz +0 -0
  600. codex/static_root/assets/VExpansionPanels-CDS9qp1D.9fdf68e2f68f.js +0 -1
  601. codex/static_root/assets/VExpansionPanels-CDS9qp1D.9fdf68e2f68f.js.br +0 -0
  602. codex/static_root/assets/VExpansionPanels-CDS9qp1D.9fdf68e2f68f.js.gz +0 -0
  603. codex/static_root/assets/VExpansionPanels-CDS9qp1D.js +0 -1
  604. codex/static_root/assets/VExpansionPanels-CDS9qp1D.js.br +0 -0
  605. codex/static_root/assets/VExpansionPanels-CDS9qp1D.js.gz +0 -0
  606. codex/static_root/assets/VMain-8vjSGbNt.4a97ed735dc3.js +0 -1
  607. codex/static_root/assets/VMain-8vjSGbNt.4a97ed735dc3.js.br +0 -0
  608. codex/static_root/assets/VMain-8vjSGbNt.4a97ed735dc3.js.gz +0 -0
  609. codex/static_root/assets/VMain-8vjSGbNt.js +0 -1
  610. codex/static_root/assets/VMain-8vjSGbNt.js.br +0 -0
  611. codex/static_root/assets/VMain-8vjSGbNt.js.gz +0 -0
  612. codex/static_root/assets/VMain-Byt37V4c.a00e206f3cfa.css +0 -1
  613. codex/static_root/assets/VMain-Byt37V4c.a00e206f3cfa.css.br +0 -0
  614. codex/static_root/assets/VMain-Byt37V4c.a00e206f3cfa.css.gz +0 -0
  615. codex/static_root/assets/VMain-Byt37V4c.css +0 -1
  616. codex/static_root/assets/VMain-Byt37V4c.css.br +0 -0
  617. codex/static_root/assets/VMain-Byt37V4c.css.gz +0 -0
  618. codex/static_root/assets/VRadioGroup-DGplihzh.3f4a5d26a1cb.js +0 -1
  619. codex/static_root/assets/VRadioGroup-DGplihzh.3f4a5d26a1cb.js.br +0 -0
  620. codex/static_root/assets/VRadioGroup-DGplihzh.3f4a5d26a1cb.js.gz +0 -0
  621. codex/static_root/assets/VRadioGroup-DGplihzh.js +0 -1
  622. codex/static_root/assets/VRadioGroup-DGplihzh.js.br +0 -0
  623. codex/static_root/assets/VRadioGroup-DGplihzh.js.gz +0 -0
  624. codex/static_root/assets/VSelect-DfV5vhqb.d24dcc61a20f.js +0 -1
  625. codex/static_root/assets/VSelect-DfV5vhqb.d24dcc61a20f.js.br +0 -0
  626. codex/static_root/assets/VSelect-DfV5vhqb.d24dcc61a20f.js.gz +0 -0
  627. codex/static_root/assets/VSelect-DfV5vhqb.js +0 -1
  628. codex/static_root/assets/VSelect-DfV5vhqb.js.br +0 -0
  629. codex/static_root/assets/VSelect-DfV5vhqb.js.gz +0 -0
  630. codex/static_root/assets/VSelect-MGVSeLgr.7cabd30bc5e4.css +0 -1
  631. codex/static_root/assets/VSelect-MGVSeLgr.7cabd30bc5e4.css.br +0 -0
  632. codex/static_root/assets/VSelect-MGVSeLgr.7cabd30bc5e4.css.gz +0 -0
  633. codex/static_root/assets/VSelect-MGVSeLgr.css +0 -1
  634. codex/static_root/assets/VSelect-MGVSeLgr.css.br +0 -0
  635. codex/static_root/assets/VSelect-MGVSeLgr.css.gz +0 -0
  636. codex/static_root/assets/VSelectionControl-DvHEDoJy.30ca0aef8bd2.js +0 -1
  637. codex/static_root/assets/VSelectionControl-DvHEDoJy.30ca0aef8bd2.js.br +0 -0
  638. codex/static_root/assets/VSelectionControl-DvHEDoJy.30ca0aef8bd2.js.gz +0 -0
  639. codex/static_root/assets/VSelectionControl-DvHEDoJy.js +0 -1
  640. codex/static_root/assets/VSelectionControl-DvHEDoJy.js.br +0 -0
  641. codex/static_root/assets/VSelectionControl-DvHEDoJy.js.gz +0 -0
  642. codex/static_root/assets/VSlideGroup-BdgkaRxE.ba78a4e0efc0.js +0 -1
  643. codex/static_root/assets/VSlideGroup-BdgkaRxE.ba78a4e0efc0.js.br +0 -0
  644. codex/static_root/assets/VSlideGroup-BdgkaRxE.ba78a4e0efc0.js.gz +0 -0
  645. codex/static_root/assets/VSlideGroup-BdgkaRxE.js +0 -1
  646. codex/static_root/assets/VSlideGroup-BdgkaRxE.js.br +0 -0
  647. codex/static_root/assets/VSlideGroup-BdgkaRxE.js.gz +0 -0
  648. codex/static_root/assets/VSlideGroup-CTW-HJl4.8b75b66602c9.css +0 -1
  649. codex/static_root/assets/VSlideGroup-CTW-HJl4.8b75b66602c9.css.br +0 -0
  650. codex/static_root/assets/VSlideGroup-CTW-HJl4.8b75b66602c9.css.gz +0 -0
  651. codex/static_root/assets/VSlideGroup-CTW-HJl4.css +0 -1
  652. codex/static_root/assets/VSlideGroup-CTW-HJl4.css.br +0 -0
  653. codex/static_root/assets/VSlideGroup-CTW-HJl4.css.gz +0 -0
  654. codex/static_root/assets/VTable-TEvK4Tmn.c68c176d93db.js.br +0 -0
  655. codex/static_root/assets/VTable-TEvK4Tmn.c68c176d93db.js.gz +0 -0
  656. codex/static_root/assets/VTable-TEvK4Tmn.js.br +0 -0
  657. codex/static_root/assets/VTable-TEvK4Tmn.js.gz +0 -0
  658. codex/static_root/assets/VToolbar-D7BgLWdG.css +0 -1
  659. codex/static_root/assets/VToolbar-D7BgLWdG.css.br +0 -0
  660. codex/static_root/assets/VToolbar-D7BgLWdG.css.gz +0 -0
  661. codex/static_root/assets/VToolbar-D7BgLWdG.e4d8a79cc655.css +0 -1
  662. codex/static_root/assets/VToolbar-D7BgLWdG.e4d8a79cc655.css.br +0 -0
  663. codex/static_root/assets/VToolbar-D7BgLWdG.e4d8a79cc655.css.gz +0 -0
  664. codex/static_root/assets/VToolbar-DCXw9xBt.576c107a78d3.js +0 -2
  665. codex/static_root/assets/VToolbar-DCXw9xBt.576c107a78d3.js.br +0 -0
  666. codex/static_root/assets/VToolbar-DCXw9xBt.576c107a78d3.js.gz +0 -0
  667. codex/static_root/assets/VToolbar-DCXw9xBt.js +0 -2
  668. codex/static_root/assets/VToolbar-DCXw9xBt.js.br +0 -0
  669. codex/static_root/assets/VToolbar-DCXw9xBt.js.gz +0 -0
  670. codex/static_root/assets/VWindowItem-CCYriq5i.8a6d4a38dabd.js +0 -1
  671. codex/static_root/assets/VWindowItem-CCYriq5i.8a6d4a38dabd.js.br +0 -0
  672. codex/static_root/assets/VWindowItem-CCYriq5i.8a6d4a38dabd.js.gz +0 -0
  673. codex/static_root/assets/VWindowItem-CCYriq5i.js +0 -1
  674. codex/static_root/assets/VWindowItem-CCYriq5i.js.br +0 -0
  675. codex/static_root/assets/VWindowItem-CCYriq5i.js.gz +0 -0
  676. codex/static_root/assets/admin-A2T028Mn.be3fa80456de.js +0 -1
  677. codex/static_root/assets/admin-A2T028Mn.be3fa80456de.js.br +0 -0
  678. codex/static_root/assets/admin-A2T028Mn.be3fa80456de.js.gz +0 -0
  679. codex/static_root/assets/admin-A2T028Mn.js +0 -1
  680. codex/static_root/assets/admin-A2T028Mn.js.br +0 -0
  681. codex/static_root/assets/admin-A2T028Mn.js.gz +0 -0
  682. codex/static_root/assets/admin-C8Kk7_Ni.255594400b96.css +0 -1
  683. codex/static_root/assets/admin-C8Kk7_Ni.255594400b96.css.br +0 -0
  684. codex/static_root/assets/admin-C8Kk7_Ni.255594400b96.css.gz +0 -0
  685. codex/static_root/assets/admin-C8Kk7_Ni.css +0 -1
  686. codex/static_root/assets/admin-C8Kk7_Ni.css.br +0 -0
  687. codex/static_root/assets/admin-C8Kk7_Ni.css.gz +0 -0
  688. codex/static_root/assets/admin-drawer-panel-DffXGW1d.8f7f39ffb127.js +0 -30
  689. codex/static_root/assets/admin-drawer-panel-DffXGW1d.8f7f39ffb127.js.br +0 -0
  690. codex/static_root/assets/admin-drawer-panel-DffXGW1d.8f7f39ffb127.js.gz +0 -0
  691. codex/static_root/assets/admin-drawer-panel-DffXGW1d.js +0 -30
  692. codex/static_root/assets/admin-drawer-panel-DffXGW1d.js.br +0 -0
  693. codex/static_root/assets/admin-drawer-panel-DffXGW1d.js.gz +0 -0
  694. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.af4fa9980c09.css +0 -1
  695. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.af4fa9980c09.css.br +0 -0
  696. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.af4fa9980c09.css.gz +0 -0
  697. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.css +0 -1
  698. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.css.br +0 -0
  699. codex/static_root/assets/admin-drawer-panel-Dv_IY0x2.css.gz +0 -0
  700. codex/static_root/assets/browser-CY9BdW6B.c9c3e5dffcbf.js +0 -1
  701. codex/static_root/assets/browser-CY9BdW6B.c9c3e5dffcbf.js.br +0 -0
  702. codex/static_root/assets/browser-CY9BdW6B.c9c3e5dffcbf.js.gz +0 -0
  703. codex/static_root/assets/browser-CY9BdW6B.js +0 -1
  704. codex/static_root/assets/browser-CY9BdW6B.js.br +0 -0
  705. codex/static_root/assets/browser-CY9BdW6B.js.gz +0 -0
  706. codex/static_root/assets/browser-HtKThxA9.69be059a55f4.css +0 -1
  707. codex/static_root/assets/browser-HtKThxA9.69be059a55f4.css.br +0 -0
  708. codex/static_root/assets/browser-HtKThxA9.69be059a55f4.css.gz +0 -0
  709. codex/static_root/assets/browser-HtKThxA9.css +0 -1
  710. codex/static_root/assets/browser-HtKThxA9.css.br +0 -0
  711. codex/static_root/assets/browser-HtKThxA9.css.gz +0 -0
  712. codex/static_root/assets/change-password-dialog-BRmvkNir.2fead58a78c7.css +0 -1
  713. codex/static_root/assets/change-password-dialog-BRmvkNir.2fead58a78c7.css.br +0 -0
  714. codex/static_root/assets/change-password-dialog-BRmvkNir.2fead58a78c7.css.gz +0 -0
  715. codex/static_root/assets/change-password-dialog-BRmvkNir.css +0 -1
  716. codex/static_root/assets/change-password-dialog-BRmvkNir.css.br +0 -0
  717. codex/static_root/assets/change-password-dialog-BRmvkNir.css.gz +0 -0
  718. codex/static_root/assets/change-password-dialog-Dr1CYQ46.afdd502a985d.js +0 -1
  719. codex/static_root/assets/change-password-dialog-Dr1CYQ46.afdd502a985d.js.br +0 -0
  720. codex/static_root/assets/change-password-dialog-Dr1CYQ46.afdd502a985d.js.gz +0 -0
  721. codex/static_root/assets/change-password-dialog-Dr1CYQ46.js +0 -1
  722. codex/static_root/assets/change-password-dialog-Dr1CYQ46.js.br +0 -0
  723. codex/static_root/assets/change-password-dialog-Dr1CYQ46.js.gz +0 -0
  724. codex/static_root/assets/confirm-dialog-BoVvCI5y.8549e2429bdf.js +0 -1
  725. codex/static_root/assets/confirm-dialog-BoVvCI5y.8549e2429bdf.js.br +0 -0
  726. codex/static_root/assets/confirm-dialog-BoVvCI5y.8549e2429bdf.js.gz +0 -0
  727. codex/static_root/assets/confirm-dialog-BoVvCI5y.js +0 -1
  728. codex/static_root/assets/confirm-dialog-BoVvCI5y.js.br +0 -0
  729. codex/static_root/assets/confirm-dialog-BoVvCI5y.js.gz +0 -0
  730. codex/static_root/assets/confirm-footer-BPuy6r_H.3aa74b8e07c1.css +0 -1
  731. codex/static_root/assets/confirm-footer-BPuy6r_H.3aa74b8e07c1.css.br +0 -0
  732. codex/static_root/assets/confirm-footer-BPuy6r_H.3aa74b8e07c1.css.gz +0 -0
  733. codex/static_root/assets/confirm-footer-BPuy6r_H.css +0 -1
  734. codex/static_root/assets/confirm-footer-BPuy6r_H.css.br +0 -0
  735. codex/static_root/assets/confirm-footer-BPuy6r_H.css.gz +0 -0
  736. codex/static_root/assets/confirm-footer-CIu2tkFD.0aa16c0fc333.js +0 -1
  737. codex/static_root/assets/confirm-footer-CIu2tkFD.0aa16c0fc333.js.br +0 -0
  738. codex/static_root/assets/confirm-footer-CIu2tkFD.0aa16c0fc333.js.gz +0 -0
  739. codex/static_root/assets/confirm-footer-CIu2tkFD.js +0 -1
  740. codex/static_root/assets/confirm-footer-CIu2tkFD.js.br +0 -0
  741. codex/static_root/assets/confirm-footer-CIu2tkFD.js.gz +0 -0
  742. codex/static_root/assets/datetime-column-BWWfvyhn.a4a94ba57c73.css +0 -1
  743. codex/static_root/assets/datetime-column-BWWfvyhn.a4a94ba57c73.css.br +0 -0
  744. codex/static_root/assets/datetime-column-BWWfvyhn.css +0 -1
  745. codex/static_root/assets/datetime-column-BWWfvyhn.css.br +0 -0
  746. codex/static_root/assets/datetime-column-C3t430gN.97e5c5364aef.js +0 -1
  747. codex/static_root/assets/datetime-column-C3t430gN.97e5c5364aef.js.br +0 -0
  748. codex/static_root/assets/datetime-column-C3t430gN.97e5c5364aef.js.gz +0 -0
  749. codex/static_root/assets/datetime-column-C3t430gN.js +0 -1
  750. codex/static_root/assets/datetime-column-C3t430gN.js.br +0 -0
  751. codex/static_root/assets/datetime-column-C3t430gN.js.gz +0 -0
  752. codex/static_root/assets/filter-BQ_FuhIp.ee8b78c4aa55.js +0 -1
  753. codex/static_root/assets/filter-BQ_FuhIp.ee8b78c4aa55.js.br +0 -0
  754. codex/static_root/assets/filter-BQ_FuhIp.ee8b78c4aa55.js.gz +0 -0
  755. codex/static_root/assets/filter-BQ_FuhIp.js +0 -1
  756. codex/static_root/assets/filter-BQ_FuhIp.js.br +0 -0
  757. codex/static_root/assets/filter-BQ_FuhIp.js.gz +0 -0
  758. codex/static_root/assets/flag-tab-D380D1SI.f4bc34623651.js.br +0 -0
  759. codex/static_root/assets/flag-tab-D380D1SI.f4bc34623651.js.gz +0 -0
  760. codex/static_root/assets/flag-tab-D380D1SI.js.br +0 -0
  761. codex/static_root/assets/flag-tab-D380D1SI.js.gz +0 -0
  762. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css +0 -1
  763. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.br +0 -0
  764. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.gz +0 -0
  765. codex/static_root/assets/flag-tab-D_HjkAta.css +0 -1
  766. codex/static_root/assets/flag-tab-D_HjkAta.css.br +0 -0
  767. codex/static_root/assets/flag-tab-D_HjkAta.css.gz +0 -0
  768. codex/static_root/assets/group-tab-CDcOyQyw.9c85a4fb987a.js +0 -1
  769. codex/static_root/assets/group-tab-CDcOyQyw.9c85a4fb987a.js.br +0 -0
  770. codex/static_root/assets/group-tab-CDcOyQyw.9c85a4fb987a.js.gz +0 -0
  771. codex/static_root/assets/group-tab-CDcOyQyw.js +0 -1
  772. codex/static_root/assets/group-tab-CDcOyQyw.js.br +0 -0
  773. codex/static_root/assets/group-tab-CDcOyQyw.js.gz +0 -0
  774. codex/static_root/assets/group-tab-GFacGljN.98df9e04f2a7.css +0 -1
  775. codex/static_root/assets/group-tab-GFacGljN.98df9e04f2a7.css.br +0 -0
  776. codex/static_root/assets/group-tab-GFacGljN.98df9e04f2a7.css.gz +0 -0
  777. codex/static_root/assets/group-tab-GFacGljN.css +0 -1
  778. codex/static_root/assets/group-tab-GFacGljN.css.br +0 -0
  779. codex/static_root/assets/group-tab-GFacGljN.css.gz +0 -0
  780. codex/static_root/assets/http-error-C25WdjWC.1c7337ad6e1d.css +0 -1
  781. codex/static_root/assets/http-error-C25WdjWC.1c7337ad6e1d.css.br +0 -0
  782. codex/static_root/assets/http-error-C25WdjWC.1c7337ad6e1d.css.gz +0 -0
  783. codex/static_root/assets/http-error-C25WdjWC.css +0 -1
  784. codex/static_root/assets/http-error-C25WdjWC.css.br +0 -0
  785. codex/static_root/assets/http-error-C25WdjWC.css.gz +0 -0
  786. codex/static_root/assets/http-error-D4BCbtF2.d3d31021f2ca.js +0 -1
  787. codex/static_root/assets/http-error-D4BCbtF2.d3d31021f2ca.js.br +0 -0
  788. codex/static_root/assets/http-error-D4BCbtF2.d3d31021f2ca.js.gz +0 -0
  789. codex/static_root/assets/http-error-D4BCbtF2.js +0 -1
  790. codex/static_root/assets/http-error-D4BCbtF2.js.br +0 -0
  791. codex/static_root/assets/http-error-D4BCbtF2.js.gz +0 -0
  792. codex/static_root/assets/index-DUjeNg4x.36d50c91b2c1.js +0 -1
  793. codex/static_root/assets/index-DUjeNg4x.36d50c91b2c1.js.br +0 -0
  794. codex/static_root/assets/index-DUjeNg4x.36d50c91b2c1.js.gz +0 -0
  795. codex/static_root/assets/index-DUjeNg4x.js +0 -1
  796. codex/static_root/assets/index-DUjeNg4x.js.br +0 -0
  797. codex/static_root/assets/index-DUjeNg4x.js.gz +0 -0
  798. codex/static_root/assets/library-tab-BpWTK9vs.b2a752770db5.js +0 -1
  799. codex/static_root/assets/library-tab-BpWTK9vs.b2a752770db5.js.br +0 -0
  800. codex/static_root/assets/library-tab-BpWTK9vs.b2a752770db5.js.gz +0 -0
  801. codex/static_root/assets/library-tab-BpWTK9vs.js +0 -1
  802. codex/static_root/assets/library-tab-BpWTK9vs.js.br +0 -0
  803. codex/static_root/assets/library-tab-BpWTK9vs.js.gz +0 -0
  804. codex/static_root/assets/library-tab-DZKDtQ5v.c8123e4bc5a4.css +0 -1
  805. codex/static_root/assets/library-tab-DZKDtQ5v.c8123e4bc5a4.css.br +0 -3
  806. codex/static_root/assets/library-tab-DZKDtQ5v.c8123e4bc5a4.css.gz +0 -0
  807. codex/static_root/assets/library-tab-DZKDtQ5v.css +0 -1
  808. codex/static_root/assets/library-tab-DZKDtQ5v.css.br +0 -3
  809. codex/static_root/assets/library-tab-DZKDtQ5v.css.gz +0 -0
  810. codex/static_root/assets/main-DB0zDxIA.e71734100695.js +0 -32
  811. codex/static_root/assets/main-DB0zDxIA.e71734100695.js.br +0 -0
  812. codex/static_root/assets/main-DB0zDxIA.e71734100695.js.gz +0 -0
  813. codex/static_root/assets/main-DB0zDxIA.js +0 -32
  814. codex/static_root/assets/main-DB0zDxIA.js.br +0 -0
  815. codex/static_root/assets/main-DB0zDxIA.js.gz +0 -0
  816. codex/static_root/assets/main-ED57DJUb.b84231dc384d.css.br +0 -0
  817. codex/static_root/assets/main-ED57DJUb.css.br +0 -0
  818. codex/static_root/assets/metadata-dialog-BlvHIpPe.aca38025f67b.js +0 -1
  819. codex/static_root/assets/metadata-dialog-BlvHIpPe.aca38025f67b.js.br +0 -0
  820. codex/static_root/assets/metadata-dialog-BlvHIpPe.aca38025f67b.js.gz +0 -0
  821. codex/static_root/assets/metadata-dialog-BlvHIpPe.js +0 -1
  822. codex/static_root/assets/metadata-dialog-BlvHIpPe.js.br +0 -0
  823. codex/static_root/assets/metadata-dialog-BlvHIpPe.js.gz +0 -0
  824. codex/static_root/assets/metadata-dialog-CNrYFyyx.87cbe14f8752.css +0 -1
  825. codex/static_root/assets/metadata-dialog-CNrYFyyx.87cbe14f8752.css.br +0 -0
  826. codex/static_root/assets/metadata-dialog-CNrYFyyx.87cbe14f8752.css.gz +0 -0
  827. codex/static_root/assets/metadata-dialog-CNrYFyyx.css +0 -1
  828. codex/static_root/assets/metadata-dialog-CNrYFyyx.css.br +0 -0
  829. codex/static_root/assets/metadata-dialog-CNrYFyyx.css.gz +0 -0
  830. codex/static_root/assets/pdf-doc-x5fJF5N8.67b5456d222e.js +0 -35
  831. codex/static_root/assets/pdf-doc-x5fJF5N8.67b5456d222e.js.br +0 -0
  832. codex/static_root/assets/pdf-doc-x5fJF5N8.67b5456d222e.js.gz +0 -0
  833. codex/static_root/assets/pdf-doc-x5fJF5N8.js +0 -35
  834. codex/static_root/assets/pdf-doc-x5fJF5N8.js.br +0 -0
  835. codex/static_root/assets/pdf-doc-x5fJF5N8.js.gz +0 -0
  836. codex/static_root/assets/reader-BDo-P8Ww.46ce70253011.css +0 -1
  837. codex/static_root/assets/reader-BDo-P8Ww.46ce70253011.css.br +0 -0
  838. codex/static_root/assets/reader-BDo-P8Ww.46ce70253011.css.gz +0 -0
  839. codex/static_root/assets/reader-BDo-P8Ww.css +0 -1
  840. codex/static_root/assets/reader-BDo-P8Ww.css.br +0 -0
  841. codex/static_root/assets/reader-BDo-P8Ww.css.gz +0 -0
  842. codex/static_root/assets/reader-CXmsYhy4.3f98149c37d9.js +0 -2
  843. codex/static_root/assets/reader-CXmsYhy4.3f98149c37d9.js.br +0 -0
  844. codex/static_root/assets/reader-CXmsYhy4.3f98149c37d9.js.gz +0 -0
  845. codex/static_root/assets/reader-CXmsYhy4.js +0 -2
  846. codex/static_root/assets/reader-CXmsYhy4.js.br +0 -0
  847. codex/static_root/assets/reader-CXmsYhy4.js.gz +0 -0
  848. codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css +0 -1
  849. codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css.br +0 -0
  850. codex/static_root/assets/stats-tab-BTZLMBCU.7e0a9547c12e.css.gz +0 -0
  851. codex/static_root/assets/stats-tab-BTZLMBCU.css +0 -1
  852. codex/static_root/assets/stats-tab-BTZLMBCU.css.br +0 -0
  853. codex/static_root/assets/stats-tab-BTZLMBCU.css.gz +0 -0
  854. codex/static_root/assets/stats-tab-xK8fU37K.24f65a4c7479.js +0 -1
  855. codex/static_root/assets/stats-tab-xK8fU37K.24f65a4c7479.js.br +0 -0
  856. codex/static_root/assets/stats-tab-xK8fU37K.24f65a4c7479.js.gz +0 -0
  857. codex/static_root/assets/stats-tab-xK8fU37K.js +0 -1
  858. codex/static_root/assets/stats-tab-xK8fU37K.js.br +0 -0
  859. codex/static_root/assets/stats-tab-xK8fU37K.js.gz +0 -0
  860. codex/static_root/assets/task-tab-D-j9C5kb.f8defdafa5d1.js +0 -1
  861. codex/static_root/assets/task-tab-D-j9C5kb.f8defdafa5d1.js.br +0 -0
  862. codex/static_root/assets/task-tab-D-j9C5kb.f8defdafa5d1.js.gz +0 -0
  863. codex/static_root/assets/task-tab-D-j9C5kb.js +0 -1
  864. codex/static_root/assets/task-tab-D-j9C5kb.js.br +0 -0
  865. codex/static_root/assets/task-tab-D-j9C5kb.js.gz +0 -0
  866. codex/static_root/assets/task-tab-DoX9OA37.9bb355f36dbf.css +0 -1
  867. codex/static_root/assets/task-tab-DoX9OA37.9bb355f36dbf.css.gz +0 -0
  868. codex/static_root/assets/task-tab-DoX9OA37.css +0 -1
  869. codex/static_root/assets/task-tab-DoX9OA37.css.gz +0 -0
  870. codex/static_root/assets/to-case-kUm8NPpW.5b3369f511b8.js +0 -1
  871. codex/static_root/assets/to-case-kUm8NPpW.js +0 -1
  872. codex/static_root/assets/user-tab-DMcrO04A.501813c958bd.js +0 -1
  873. codex/static_root/assets/user-tab-DMcrO04A.501813c958bd.js.br +0 -0
  874. codex/static_root/assets/user-tab-DMcrO04A.501813c958bd.js.gz +0 -0
  875. codex/static_root/assets/user-tab-DMcrO04A.js +0 -1
  876. codex/static_root/assets/user-tab-DMcrO04A.js.br +0 -0
  877. codex/static_root/assets/user-tab-DMcrO04A.js.gz +0 -0
  878. codex/static_root/img/logo-32.dbb98f6dfde4.webp +0 -0
  879. codex/static_root/img/logo-maskable-180.201cbde62d55.webp +0 -0
  880. codex/static_root/img/logo-maskable.d618c2d7943f.svg +0 -83
  881. codex/static_root/img/logo-maskable.d618c2d7943f.svg.br +0 -0
  882. codex/static_root/img/logo-maskable.d618c2d7943f.svg.gz +0 -0
  883. codex/static_root/img/logo.3fb129bfbd92.svg +0 -80
  884. codex/static_root/img/logo.3fb129bfbd92.svg.br +0 -0
  885. codex/static_root/img/logo.3fb129bfbd92.svg.gz +0 -0
  886. codex/static_root/img/missing-cover.8c8c1d4f6782.webp +0 -0
  887. codex/static_root/img/missing-cover.webp +0 -0
  888. codex/static_root/img/missing-page.71bb10f7c72a.svg +0 -13
  889. codex/static_root/img/missing-page.71bb10f7c72a.svg.br +0 -0
  890. codex/static_root/img/missing-page.71bb10f7c72a.svg.gz +0 -0
  891. codex/static_root/img/missing-page.svg +0 -13
  892. codex/static_root/img/missing-page.svg.br +0 -0
  893. codex/static_root/img/missing-page.svg.gz +0 -0
  894. codex/static_root/js/choices-admin.bb730e4f26ac.json +0 -1
  895. codex/static_root/js/choices-admin.bb730e4f26ac.json.br +0 -0
  896. codex/static_root/js/choices-admin.bb730e4f26ac.json.gz +0 -0
  897. codex/static_root/js/choices.fedcbd1ec085.json +0 -1
  898. codex/static_root/js/choices.fedcbd1ec085.json.br +0 -0
  899. codex/static_root/js/choices.fedcbd1ec085.json.gz +0 -0
  900. codex/static_root/manifest.8e6c35516db7.json +0 -607
  901. codex/static_root/manifest.8e6c35516db7.json.br +0 -0
  902. codex/static_root/manifest.8e6c35516db7.json.gz +0 -0
  903. codex/views/browser/browser_annotations.py +0 -298
  904. codex/views/browser/browser_order_by.py +0 -108
  905. codex/views/browser/const.py +0 -3
  906. codex/views/browser/session.py +0 -12
  907. codex/views/cover.py +0 -59
  908. codex-1.5.19.dist-info/RECORD +0 -936
  909. {codex-1.5.19.dist-info → codex-1.6.0.dist-info}/LICENSE +0 -0
  910. {codex-1.5.19.dist-info → codex-1.6.0.dist-info}/WHEEL +0 -0
  911. {codex-1.5.19.dist-info → codex-1.6.0.dist-info}/entry_points.txt +0 -0
@@ -1,2 +0,0 @@
1
- const __vite__fileDeps=["assets/admin-drawer-panel-DffXGW1d.js","assets/admin-drawer-panel-Dv_IY0x2.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
- import{x as te,b_ as we,E as ue,bO as ye,bN as Se,au as ce,F as Pe,G as oe,I as Ce,aw as ie,ax as Q,b$ as Te,bR as Re,bU as Ve,s as W,A as Dt,h as b,K as ne,L as r,C as X,b2 as qe,c0 as Bt,N as j,k as le,aA as de,m as N,O as me,_ as M,R as k,P as C,T as v,aG as L,ai as V,aB as q,aE as A,c1 as Ke,c2 as xt,c3 as Et,ae as D,ah as H,bh as It,bk as Lt,c4 as At,Q as ee,ap as G,ao as Ze,c5 as Nt,as as pe,c6 as $t,r as Je,X as Ot,y as Mt,c7 as Ft,M as De,c8 as J,bS as Ut,c9 as Ht,bV as zt,ca as Wt,aj as Qe,b4 as jt,b5 as Gt,ak as et,a_ as he,cb as tt,cc as Yt,aF as ot,bq as nt,aD as Be,aW as _e,bW as st,cd as at,H as xe,ce as rt,l as Xt,cf as qt,cg as Kt,ch as it,a as Z,o as lt,ci as Zt,cj as ae,w as Jt,ck as Qt,J as ut,cl as eo,bL as to,cm as oo,ay as ct,bX as dt,cn as no,n as so,ad as ao,bl as ro}from"./admin-drawer-panel-DffXGW1d.js";import{m as mt,b as gt,_ as ht,C as Oe,r as fe,u as io,A as Me,c as lo,d as uo}from"./main-DB0zDxIA.js";import{c as co,t as mo}from"./index-DUjeNg4x.js";import{V as ft,b as go,u as ho,c as fo}from"./confirm-footer-CIu2tkFD.js";import{_ as vt}from"./change-password-dialog-Dr1CYQ46.js";import{_ as bt,a as ve,b as vo}from"./VSlideGroup-BdgkaRxE.js";import{a as bo,c as po,u as _o,V as Fe,d as Ue}from"./VSelectionControl-DvHEDoJy.js";const ko=te({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...we(),...ue(),...ye(),...mt(),...Se(),...ce({tag:"footer"}),...Pe()},"VFooter"),pt=oe()({name:"VFooter",props:ko(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Ce(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ie(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Re(e),{roundedClasses:y}=Ve(e),p=W(32),{resizeRef:m}=Dt(w=>{w.length&&(p.value=w[0].target.clientHeight)}),d=b(()=>e.height==="auto"?p.value:parseInt(e.height,10)),{layoutItemStyles:g,layoutIsReady:_}=gt({id:e.name,order:b(()=>parseInt(e.order,10)),position:b(()=>"bottom"),layoutSize:d,elementSize:b(()=>e.height==="auto"?void 0:d.value),active:b(()=>e.app),absolute:Q(e,"absolute")});return ne(()=>r(e.tag,{ref:m,class:["v-footer",a.value,n.value,i.value,l.value,y.value,e.class],style:[s.value,e.app?g.value:{height:X(e.height)},e.style]},o)),e.app?_:{}}}),wo={name:"VersionFooter",data(){return{mdiOpenInNew:qe,mdiContentCopy:Bt}},computed:{...j(le,{versions:e=>e.versions}),...de(N,["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:{...me(le,["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}}},yo={id:"version"},So={key:0,id:"latest"};function Po(e,t,o,a,n,s){return k(),C(pt,{id:"version-footer",title:s.versionTitle},{default:v(()=>[L("div",yo,"codex v"+V(e.versions.installed),1),s.outdated?(k(),q("div",So," codex v"+V(e.versions.latest)+" is available ",1)):A("",!0)]),_:1},8,["title"])}const _t=M(wo,[["render",Po],["__scopeId","data-v-cd481730"]]),Co={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ke,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?xt:Et},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&co(this.url,this.showTooltip)}}},To=["title"],Ro={key:0},Vo={class:"copied"},Do={key:0,class:"subtitle"},Bo={class:"opdsUrl"};function xo(e,t,o,a,n,s){return k(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[L("h3",null,[D(V(o.title)+" ",1),s.clipBoardEnabled?(k(),q("span",Ro,[r(H,{class:"clipBoardIcon",size:"small"},{default:v(()=>[D(V(s.clipBoardIcon),1)]),_:1}),r(At,null,{default:v(()=>[It(L("span",Vo,"Copied",512),[[Lt,n.showTooltip.show]])]),_:1})])):A("",!0)]),o.subtitle?(k(),q("div",Do,V(o.subtitle),1)):A("",!0),L("div",Bo,V(o.url),1)],8,To)}const Eo=M(Co,[["render",xo],["__scopeId","data-v-68a52a66"]]),Io={name:"OPDSDialog",components:{OPDSUrl:Eo},data(){return{mdiRss:Ke,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Lo={id:"opds"};function Ao(e,t,o,a,n,s){const i=ee("OPDSUrl");return k(),C(ft,{"max-width":"30em"},{activator:v(({props:l})=>[r(Ze,G({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiRss),1)]),_:1}),D(" OPDS ")]),_:2},1040)]),default:v(()=>[L("div",Lo,[L("h2",null,[r(H,{size:"x=small",class:"inline"},{default:v(()=>[D(V(n.mdiRss),1)]),_:1}),D(" 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 No=M(Io,[["render",Ao],["__scopeId","data-v-741734ce"]]),$o={name:"SettingsFooter",components:{OPDSDialog:No},data(){return{mdiOpenInNew:qe,mdiSourceRepository:Nt}},computed:{...de(N,["isCodexViewable"])}},Oo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Mo(e,t,o,a,n,s){const i=ee("OPDSDialog");return k(),C(pt,{id:"settingsFooter"},{default:v(()=>[e.isCodexViewable?(k(),C(i,{key:0})):A("",!0),L("a",Oo,[r(H,{id:"repoIcon",size:"x-small"},{default:v(()=>[D(V(n.mdiSourceRepository),1)]),_:1}),D(" repository"),r(H,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:v(()=>[D(V(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const kt=M($o,[["render",Mo],["__scopeId","data-v-f9eb593e"]]),Fo=te({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...bo(),...po()},"VSwitch"),Uo=oe()({name:"VSwitch",inheritAttrs:!1,props:Fo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=pe(e,"indeterminate"),s=pe(e,"modelValue"),{loaderClasses:i}=$t(e),{isFocused:l,focus:y,blur:p}=_o(e),m=Je(),d=Ot&&window.matchMedia("(forced-colors: active)").matches,g=b(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),_=Mt(),w=b(()=>e.id||`switch-${_}`);function T(){n.value&&(n.value=!1)}function $(E){var B,R;E.stopPropagation(),E.preventDefault(),(R=(B=m.value)==null?void 0:B.input)==null||R.click()}return ne(()=>{const[E,B]=Ft(o),R=Fe.filterProps(e),F=Ue.filterProps(e);return r(Fe,G({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},E,R,{modelValue:s.value,"onUpdate:modelValue":U=>s.value=U,id:w.value,focused:l.value,style:e.style}),{...a,default:U=>{let{id:u,messagesId:c,isDisabled:h,isReadonly:f,isValid:P}=U;const S={model:s,isValid:P};return r(Ue,G({ref:m},F,{modelValue:s.value,"onUpdate:modelValue":[I=>s.value=I,T],id:u.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:h.value,readonly:f.value,onFocus:y,onBlur:p},B),{...a,default:I=>{let{backgroundColorClasses:z,backgroundColorStyles:O}=I;return r("div",{class:["v-switch__track",d?void 0:z.value],style:O.value,onClick:$},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](S)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](S)])])},input:I=>{let{inputNode:z,icon:O,backgroundColorClasses:se,backgroundColorStyles:ge}=I;return r(De,null,[z,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset||d?void 0:se.value],style:e.inset?void 0:ge.value},[a.thumb?r(J,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...S,icon:O})]}):r(Ut,null,{default:()=>[e.loading?r(Ht,{name:"v-switch",active:!0,color:P.value===!1?void 0:g.value},{default:K=>a.loader?a.loader(K):r(zt,{active:K.isActive,color:K.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(H,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),Ho={name:"AuthLoginDialog",components:{SubmitFooter:bt},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:Wt}},computed:{...j(le,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...j(N,{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:{...me(N,["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 zo(e,t,o,a,n,s){const i=bt;return k(),C(ft,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:v(({props:l})=>[r(et,jt(Gt(l)),{default:v(()=>[r(Qe,null,{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiLogin),1)]),_:1}),D(" Login ")]),_:1})]),_:2},1040)]),default:v(()=>[r(vo,{id:"authDialog",ref:"form"},{default:v(()=>[r(ve,{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]=he(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(ve,{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]=he(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(tt,null,{default:v(()=>[n.registerMode?(k(),C(ve,{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:he(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):A("",!0)]),_:1}),e.adminFlags.registration?(k(),C(Uo,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:v(()=>[D(" Register ")]),_:1},8,["modelValue"])):A("",!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 Wo=M(Ho,[["render",zo],["__scopeId","data-v-ef06f84f"]]),jo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Yt}},computed:{...j(N,{username:e=>e.user.username})},methods:{...me(N,["logout"])}};function Go(e,t,o,a,n,s){return k(),C(et,{onClick:e.logout},{default:v(()=>[r(Qe,null,{default:v(()=>[r(H,null,{default:v(()=>[D(V(e.mdiLogout),1)]),_:1}),D("Logout "+V(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Yo=M(jo,[["render",Go]]),Xo={name:"AuthMenu",components:{ChangePasswordDialog:vt,AuthLoginDialog:Wo,AuthLogoutItem:Yo},computed:{...j(N,{user:e=>e.user})},methods:{...me(N,["logout"])}};function qo(e,t,o,a,n,s){const i=ee("AuthLogoutItem"),l=vt,y=ee("AuthLoginDialog");return k(),q(De,null,[e.user?(k(),C(i,{key:0})):A("",!0),e.user?(k(),C(l,{key:1,user:e.user},null,8,["user"])):(k(),C(y,{key:2}))],64)}const wt=M(Xo,[["render",qo]]),He=ot(nt(()=>ht(()=>import("./admin-drawer-panel-DffXGW1d.js").then(e=>e.dB),__vite__mapDeps([0,1])))),Ko={name:"SettingsCommonPanel",components:{AuthMenu:wt,AdminMenu:He},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:He}},computed:{...de(N,["isUserAdmin"])}},Zo={id:"commonPanel"};function Jo(e,t,o,a,n,s){const i=wt;return k(),q("div",Zo,[r(i),e.isUserAdmin?(k(),C(_e,{key:0})):A("",!0),e.isUserAdmin?(k(),C(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):A("",!0)])}const Qo=M(Ko,[["render",Jo],["__scopeId","data-v-a21632a4"]]),en=e=>{const t=e.pk,o=at();return e={...e,...o},delete e.pk,xe.get(`c/${t}`,{params:e})},tn=()=>{const e=at();return xe.get("c/settings",{params:e})},on=e=>xe.put("c/settings",e),Mn=({pk:e,mtime:t})=>`${rt(e)}/download/comic-${e}.cbz?mtime=${t}`,Fn=({pk:e,page:t,mtime:o})=>`${rt(e)}/${t}/page.jpg?mtime=${o}`,ze=({pk:e,page:t,mtime:o})=>`${st(e)}/${t}/page.jpg?mtime=${o}`,nn=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,be={getPdfBookSource:nn,getReaderBasePath:st,getReaderInfo:en,getReaderSettings:tn,setReaderSettings:on},sn=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},an=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},rn=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+an({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},ln=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=sn(t),l=rn({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},yt={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(yt);const St={cacheBook:!1};Object.freeze(St);const re=new Set(["",null,void 0]);Object.freeze(re);const Pt={prev:"next",next:"prev"};Object.freeze(Pt);const ke={rel:"prefetch",as:"image"};Object.freeze(ke);const Ee=new Set(["ttb","btt"]);Object.freeze(Ee);const Ct=new Set(["rtl","btt"]);Object.freeze(Ct);const We=1,Tt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(Tt);const un=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",je=e=>{Ee.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},cn=Xt("reader",{state:()=>({choices:{fitTo:Oe.reader.fitTo,readingDirection:Oe.reader.readingDirection,nullValues:re},readerSettings:{fitTo:un(),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:We}}),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?ln(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return Ee.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 Ct.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={...re};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))re.has(i)||(t[s]=i);return je(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?qt:Kt},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>We?a="Orig":a=Tt[t.fitTo],a){let n="fitTo";n+=mo(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},je(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}=fe.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return be.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await be.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=io().page,a=o&&o.routes?o.routes.last:{name:"home"};return fe.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 Me.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Me.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(yt),this.setSettingsClient(St)},async setSettingsGlobal(e){this._updateSettings(e,!1),await be.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?Pt[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};fe.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 ze(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({...ke,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=ze(n);s&&o.push({...ke,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function dn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=W(!1),s=W(0),i=b(()=>{const p=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[p]:X(s.value)}:{top:a.value.top}]});it(()=>{Z(o,p=>{p?window.addEventListener("scroll",y,{passive:!0}):window.removeEventListener("scroll",y)},{immediate:!0})}),lt(()=>{window.removeEventListener("scroll",y)});let l=0;function y(){const p=l>window.scrollY?"up":"down",m=t.value.getBoundingClientRect(),d=parseFloat(a.value.top??0),g=window.scrollY-Math.max(0,s.value-d),_=m.height+Math.max(s.value,d)-window.scrollY-window.innerHeight,w=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;m.height<window.innerHeight-d?(n.value="top",s.value=d):p==="up"&&n.value==="bottom"||p==="down"&&n.value==="top"?(s.value=window.scrollY+m.top-w,n.value=!0):p==="down"&&_<=0?(s.value=0,n.value="bottom"):p==="up"&&g<=0&&(w?n.value!=="top"&&(s.value=-g+w+d,n.value="top"):(s.value=m.top+g,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const mn=100,gn=20;function Ge(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function Ye(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=Ge(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 Ge(t)*1e3}function hn(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Zt(gn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var p;const s=(p=e[n])==null?void 0:p.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],y=[];for(const m of s){if(i[0]-m[0]>mn)break;l.push({t:m[0],d:m[1].clientX}),y.push({t:m[0],d:m[1].clientY})}return{x:Ye(l),y:Ye(y),get direction(){const{x:m,y:d}=this,[g,_]=[Math.abs(m),Math.abs(d)];return g>_&&m>=0?"right":g>_&&m<=0?"left":_>g&&d>=0?"down":_>g&&d<=0?"up":fn()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function fn(){throw new Error}function vn(e){let{el:t,isActive:o,isTemporary:a,width:n,touchless:s,position:i}=e;it(()=>{window.addEventListener("touchstart",B,{passive:!0}),window.addEventListener("touchmove",R,{passive:!1}),window.addEventListener("touchend",F,{passive:!0})}),lt(()=>{window.removeEventListener("touchstart",B),window.removeEventListener("touchmove",R),window.removeEventListener("touchend",F)});const l=b(()=>["left","right"].includes(i.value)),{addMovement:y,endTouch:p,getVelocity:m}=hn();let d=!1;const g=W(!1),_=W(0),w=W(0);let T;function $(u,c){return(i.value==="left"?u:i.value==="right"?document.documentElement.clientWidth-u:i.value==="top"?u:i.value==="bottom"?document.documentElement.clientHeight-u:Y())-(c?n.value:0)}function E(u){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const h=i.value==="left"?(u-w.value)/n.value:i.value==="right"?(document.documentElement.clientWidth-u-w.value)/n.value:i.value==="top"?(u-w.value)/n.value:i.value==="bottom"?(document.documentElement.clientHeight-u-w.value)/n.value:Y();return c?Math.max(0,Math.min(1,h)):h}function B(u){if(s.value)return;const c=u.changedTouches[0].clientX,h=u.changedTouches[0].clientY,f=25,P=i.value==="left"?c<f:i.value==="right"?c>document.documentElement.clientWidth-f:i.value==="top"?h<f:i.value==="bottom"?h>document.documentElement.clientHeight-f:Y(),S=o.value&&(i.value==="left"?c<n.value:i.value==="right"?c>document.documentElement.clientWidth-n.value:i.value==="top"?h<n.value:i.value==="bottom"?h>document.documentElement.clientHeight-n.value:Y());(P||S||o.value&&a.value)&&(T=[c,h],w.value=$(l.value?c:h,o.value),_.value=E(l.value?c:h),d=w.value>-20&&w.value<80,p(u),y(u))}function R(u){const c=u.changedTouches[0].clientX,h=u.changedTouches[0].clientY;if(d){if(!u.cancelable){d=!1;return}const P=Math.abs(c-T[0]),S=Math.abs(h-T[1]);(l.value?P>S&&P>3:S>P&&S>3)?(g.value=!0,d=!1):(l.value?S:P)>3&&(d=!1)}if(!g.value)return;u.preventDefault(),y(u);const f=E(l.value?c:h,!1);_.value=Math.max(0,Math.min(1,f)),f>1?w.value=$(l.value?c:h,!0):f<0&&(w.value=$(l.value?c:h,!1))}function F(u){if(d=!1,!g.value)return;y(u),g.value=!1;const c=m(u.changedTouches[0].identifier),h=Math.abs(c.x),f=Math.abs(c.y);(l.value?h>f&&h>400:f>h&&f>3)?o.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[i.value]||Y()):o.value=_.value>.5}const U=b(()=>g.value?{transform:i.value==="left"?`translateX(calc(-100% + ${_.value*n.value}px))`:i.value==="right"?`translateX(calc(100% - ${_.value*n.value}px))`:i.value==="top"?`translateY(calc(-100% + ${_.value*n.value}px))`:i.value==="bottom"?`translateY(calc(100% - ${_.value*n.value}px))`:Y(),transition:"none"}:void 0);return ae(g,()=>{var h,f;const u=((h=t.value)==null?void 0:h.style.transform)??null,c=((f=t.value)==null?void 0:f.style.transition)??null;Jt(()=>{var P,S,I,z;(S=t.value)==null||S.style.setProperty("transform",((P=U.value)==null?void 0:P.transform)||"none"),(z=t.value)==null||z.style.setProperty("transition",((I=U.value)==null?void 0:I.transition)||null)}),Qt(()=>{var P,S;(P=t.value)==null||P.style.setProperty("transform",u),(S=t.value)==null||S.style.setProperty("transition",c)})}),{isDragging:g,dragProgress:_,dragStyles:U}}function Y(){throw new Error}const bn=["start","end","left","right","top","bottom"],pn=te({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,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>bn.includes(e)},sticky:Boolean,...we(),...ue(),...go(),...lo({mobile:null}),...ye(),...mt(),...Se(),...ce({tag:"nav"}),...Pe()},"VNavigationDrawer"),_n=oe()({name:"VNavigationDrawer",props:pn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=ut(),{themeClasses:i}=Ce(e),{borderClasses:l}=Te(e),{backgroundColorClasses:y,backgroundColorStyles:p}=ie(Q(e,"color")),{elevationClasses:m}=Re(e),{displayClasses:d,mobile:g}=uo(e),{roundedClasses:_}=Ve(e),w=eo(),T=pe(e,"modelValue",null,x=>!!x),{ssrBootStyles:$}=to(),{scopeId:E}=ho(),B=Je(),R=W(!1),{runOpenDelay:F,runCloseDelay:U}=fo(e,x=>{R.value=x}),u=b(()=>e.rail&&e.expandOnHover&&R.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),c=b(()=>oo(e.location,s.value)),h=b(()=>e.persistent),f=b(()=>!e.permanent&&(g.value||e.temporary)),P=b(()=>e.sticky&&!f.value&&c.value!=="bottom");ae(()=>e.expandOnHover&&e.rail!=null,()=>{Z(R,x=>a("update:rail",!x))}),ae(()=>!e.disableResizeWatcher,()=>{Z(f,x=>!e.permanent&&so(()=>T.value=!x))}),ae(()=>!e.disableRouteWatcher&&!!w,()=>{Z(w.currentRoute,()=>f.value&&(T.value=!1))}),Z(()=>e.permanent,x=>{x&&(T.value=!0)}),e.modelValue==null&&!f.value&&(T.value=e.permanent||!g.value);const{isDragging:S,dragProgress:I}=vn({el:B,isActive:T,isTemporary:f,width:u,touchless:Q(e,"touchless"),position:c}),z=b(()=>{const x=f.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):u.value;return S.value?x*I.value:x}),O=b(()=>["top","bottom"].includes(e.location)?0:u.value),{layoutItemStyles:se,layoutItemScrimStyles:ge,layoutIsReady:K}=gt({id:e.name,order:b(()=>parseInt(e.order,10)),position:c,layoutSize:z,elementSize:O,active:b(()=>T.value||S.value),disableTransitions:b(()=>S.value),absolute:b(()=>e.absolute||P.value&&typeof Ie.value!="string")}),{isStuck:Ie,stickyStyles:Rt}=dn({rootEl:B,isSticky:P,layoutItemStyles:se}),Le=ie(b(()=>typeof e.scrim=="string"?e.scrim:null)),Vt=b(()=>({...S.value?{opacity:I.value*.2,transition:"none"}:void 0,...ge.value}));return ct({VList:{bgColor:"transparent"}}),ne(()=>{const x=n.image||e.image;return r(De,null,[r(e.tag,G({ref:B,onMouseenter:F,onMouseleave:U,class:["v-navigation-drawer",`v-navigation-drawer--${c.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":R.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":f.value,"v-navigation-drawer--persistent":h.value,"v-navigation-drawer--active":T.value,"v-navigation-drawer--sticky":P.value},i.value,y.value,l.value,d.value,m.value,_.value,e.class],style:[p.value,se.value,$.value,Rt.value,e.style,["top","bottom"].includes(c.value)?{height:"auto"}:{}]},E,o),{default:()=>{var Ae,Ne,$e;return[x&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(J,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(dt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ae=n.prepend)==null?void 0:Ae.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ne=n.default)==null?void 0:Ne.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[($e=n.append)==null?void 0:$e.call(n)])]}}),r(no,{name:"fade-transition"},{default:()=>[f.value&&(S.value||T.value)&&!!e.scrim&&r("div",G({class:["v-navigation-drawer__scrim",Le.backgroundColorClasses.value],style:[Vt.value,Le.backgroundColorStyles.value],onClick:()=>{h.value||(T.value=!1)}},E),null)]})])}),K.then(()=>({isStuck:Ie}))}}),kn={name:"SettingsDrawer",components:{SettingsCommonPanel:Qo,SettingsFooter:kt,VersionFooter:_t},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...de(N,["isCodexViewable"]),...ao(le,["isSettingsDrawerOpen"]),...j(cn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},wn={class:"settingsDrawerContainer"},yn={id:"topBlock"},Sn={class:"settingsHeader"},Pn={id:"footerGroup"};function Cn(e,t,o,a,n,s){const i=ee("SettingsCommonPanel"),l=kt,y=_t;return k(),C(_n,G(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=p=>e.isSettingsDrawerOpen=p),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:v(()=>[r(y)]),default:v(()=>[L("div",wn,[L("div",yn,[L("header",Sn,[L("h3",null,V(o.title),1)]),e.isCodexViewable?(k(),C(Be(o.panel),{key:0})):A("",!0),e.isCodexViewable?(k(),C(_e,{key:1})):A("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(_e)]),L("div",Pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const Un=M(kn,[["render",Cn],["__scopeId","data-v-a38da0ea"]]),Xe=ot(nt(()=>ht(()=>import("./admin-drawer-panel-DffXGW1d.js").then(e=>e.dC),__vite__mapDeps([0,1])))),Tn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:Xe},data(){return{mdiMenu:ro,AdminSettingsButtonProgress:Xe}},computed:{...j(N,["isUserAdmin"])}};function Rn(e,t,o,a,n,s){return k(),C(Ze,G(e.$attrs,{icon:"",title:"Settings"}),{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(k(),C(Be(n.AdminSettingsButtonProgress),{key:0})):A("",!0)]),_:1},16)}const Hn=M(Tn,[["render",Rn]]),Vn=te({text:String,...ue(),...ce()},"VToolbarTitle"),Dn=oe()({name:"VToolbarTitle",props:Vn(),setup(e,t){let{slots:o}=t;return ne(()=>{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)])]}})}),{}}}),Bn=[null,"prominent","default","comfortable","compact"],xn=te({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Bn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...we(),...ue(),...ye(),...Se(),...ce({tag:"header"}),...Pe()},"VToolbar"),zn=oe()({name:"VToolbar",props:xn(),setup(e,t){var _;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ie(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Re(e),{roundedClasses:l}=Ve(e),{themeClasses:y}=Ce(e),{rtlClasses:p}=ut(),m=W(!!(e.extended||(_=o.extension)!=null&&_.call(o))),d=b(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),g=b(()=>m.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 ct({VBtn:{variant:"text"}}),ne(()=>{var E;const w=!!(e.title||o.title),T=!!(o.image||e.image),$=(E=o.extension)==null?void 0:E.call(o);return m.value=!!(e.extended||$),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,y.value,p.value,e.class],style:[n.value,e.style]},{default:()=>[T&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(J,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(dt,{key:"image-img",cover:!0,src:e.image},null)]),r(J,{defaults:{VTabs:{height:X(d.value)}}},{default:()=>{var B,R,F;return[r("div",{class:"v-toolbar__content",style:{height:X(d.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(B=o.prepend)==null?void 0:B.call(o)]),w&&r(Dn,{key:"title",text:e.title},{text:o.title}),(R=o.default)==null?void 0:R.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(F=o.append)==null?void 0:F.call(o)])])]}}),r(J,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>[r(tt,null,{default:()=>[m.value&&r("div",{class:"v-toolbar__extension",style:{height:X(g.value)}},[$])]})]})]})}),{contentHeight:d,extensionHeight:g}}});export{Hn as S,Dn as V,Un as _,zn as a,rn as b,We as c,ze as d,_n as e,sn as f,ln as g,Mn as h,Fn as i,an as j,cn as u};
@@ -1,2 +0,0 @@
1
- const __vite__fileDeps=["assets/admin-drawer-panel-DffXGW1d.js","assets/admin-drawer-panel-Dv_IY0x2.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
2
- import{x as te,b_ as we,E as ue,bO as ye,bN as Se,au as ce,F as Pe,G as oe,I as Ce,aw as ie,ax as Q,b$ as Te,bR as Re,bU as Ve,s as W,A as Dt,h as b,K as ne,L as r,C as X,b2 as qe,c0 as Bt,N as j,k as le,aA as de,m as N,O as me,_ as M,R as k,P as C,T as v,aG as L,ai as V,aB as q,aE as A,c1 as Ke,c2 as xt,c3 as Et,ae as D,ah as H,bh as It,bk as Lt,c4 as At,Q as ee,ap as G,ao as Ze,c5 as Nt,as as pe,c6 as $t,r as Je,X as Ot,y as Mt,c7 as Ft,M as De,c8 as J,bS as Ut,c9 as Ht,bV as zt,ca as Wt,aj as Qe,b4 as jt,b5 as Gt,ak as et,a_ as he,cb as tt,cc as Yt,aF as ot,bq as nt,aD as Be,aW as _e,bW as st,cd as at,H as xe,ce as rt,l as Xt,cf as qt,cg as Kt,ch as it,a as Z,o as lt,ci as Zt,cj as ae,w as Jt,ck as Qt,J as ut,cl as eo,bL as to,cm as oo,ay as ct,bX as dt,cn as no,n as so,ad as ao,bl as ro}from"./admin-drawer-panel-DffXGW1d.js";import{m as mt,b as gt,_ as ht,C as Oe,r as fe,u as io,A as Me,c as lo,d as uo}from"./main-DB0zDxIA.js";import{c as co,t as mo}from"./index-DUjeNg4x.js";import{V as ft,b as go,u as ho,c as fo}from"./confirm-footer-CIu2tkFD.js";import{_ as vt}from"./change-password-dialog-Dr1CYQ46.js";import{_ as bt,a as ve,b as vo}from"./VSlideGroup-BdgkaRxE.js";import{a as bo,c as po,u as _o,V as Fe,d as Ue}from"./VSelectionControl-DvHEDoJy.js";const ko=te({app:Boolean,color:String,height:{type:[Number,String],default:"auto"},...we(),...ue(),...ye(),...mt(),...Se(),...ce({tag:"footer"}),...Pe()},"VFooter"),pt=oe()({name:"VFooter",props:ko(),setup(e,t){let{slots:o}=t;const{themeClasses:a}=Ce(e),{backgroundColorClasses:n,backgroundColorStyles:s}=ie(Q(e,"color")),{borderClasses:i}=Te(e),{elevationClasses:l}=Re(e),{roundedClasses:y}=Ve(e),p=W(32),{resizeRef:m}=Dt(w=>{w.length&&(p.value=w[0].target.clientHeight)}),d=b(()=>e.height==="auto"?p.value:parseInt(e.height,10)),{layoutItemStyles:g,layoutIsReady:_}=gt({id:e.name,order:b(()=>parseInt(e.order,10)),position:b(()=>"bottom"),layoutSize:d,elementSize:b(()=>e.height==="auto"?void 0:d.value),active:b(()=>e.app),absolute:Q(e,"absolute")});return ne(()=>r(e.tag,{ref:m,class:["v-footer",a.value,n.value,i.value,l.value,y.value,e.class],style:[s.value,e.app?g.value:{height:X(e.height)},e.style]},o)),e.app?_:{}}}),wo={name:"VersionFooter",data(){return{mdiOpenInNew:qe,mdiContentCopy:Bt}},computed:{...j(le,{versions:e=>e.versions}),...de(N,["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:{...me(le,["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}}},yo={id:"version"},So={key:0,id:"latest"};function Po(e,t,o,a,n,s){return k(),C(pt,{id:"version-footer",title:s.versionTitle},{default:v(()=>[L("div",yo,"codex v"+V(e.versions.installed),1),s.outdated?(k(),q("div",So," codex v"+V(e.versions.latest)+" is available ",1)):A("",!0)]),_:1},8,["title"])}const _t=M(wo,[["render",Po],["__scopeId","data-v-cd481730"]]),Co={name:"OPDSUrl",props:{title:{type:String,required:!0},subtitle:{type:String,default:void 0},url:{type:String,required:!0}},data(){return{mdiRss:Ke,showTooltip:{show:!1}}},computed:{clipBoardEnabled(){return location.protocol=="https:"},clipBoardIcon(){return this.showTooltip.show?xt:Et},tooltip(){return this.clipBoardEnabled}},methods:{onClickURL(){this.clipBoardEnabled&&co(this.url,this.showTooltip)}}},To=["title"],Ro={key:0},Vo={class:"copied"},Do={key:0,class:"subtitle"},Bo={class:"opdsUrl"};function xo(e,t,o,a,n,s){return k(),q("div",{class:"opdsVersion",title:s.tooltip,onClick:t[0]||(t[0]=(...i)=>s.onClickURL&&s.onClickURL(...i))},[L("h3",null,[D(V(o.title)+" ",1),s.clipBoardEnabled?(k(),q("span",Ro,[r(H,{class:"clipBoardIcon",size:"small"},{default:v(()=>[D(V(s.clipBoardIcon),1)]),_:1}),r(At,null,{default:v(()=>[It(L("span",Vo,"Copied",512),[[Lt,n.showTooltip.show]])]),_:1})])):A("",!0)]),o.subtitle?(k(),q("div",Do,V(o.subtitle),1)):A("",!0),L("div",Bo,V(o.url),1)],8,To)}const Eo=M(Co,[["render",xo],["__scopeId","data-v-68a52a66"]]),Io={name:"OPDSDialog",components:{OPDSUrl:Eo},data(){return{mdiRss:Ke,opdsV1URL:window.origin+window.CODEX.OPDS_V1_PATH,opdsV2URL:window.origin+window.CODEX.OPDS_V2_PATH}}},Lo={id:"opds"};function Ao(e,t,o,a,n,s){const i=ee("OPDSUrl");return k(),C(ft,{"max-width":"30em"},{activator:v(({props:l})=>[r(Ze,G({id:"opdsButton",icon:"",size:"small",variant:"plain"},l),{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiRss),1)]),_:1}),D(" OPDS ")]),_:2},1040)]),default:v(()=>[L("div",Lo,[L("h2",null,[r(H,{size:"x=small",class:"inline"},{default:v(()=>[D(V(n.mdiRss),1)]),_:1}),D(" 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 No=M(Io,[["render",Ao],["__scopeId","data-v-741734ce"]]),$o={name:"SettingsFooter",components:{OPDSDialog:No},data(){return{mdiOpenInNew:qe,mdiSourceRepository:Nt}},computed:{...de(N,["isCodexViewable"])}},Oo={id:"repo",href:"https://github.com/ajslater/codex",title:"Codex Source Repository",target:"_blank"};function Mo(e,t,o,a,n,s){const i=ee("OPDSDialog");return k(),C(pt,{id:"settingsFooter"},{default:v(()=>[e.isCodexViewable?(k(),C(i,{key:0})):A("",!0),L("a",Oo,[r(H,{id:"repoIcon",size:"x-small"},{default:v(()=>[D(V(n.mdiSourceRepository),1)]),_:1}),D(" repository"),r(H,{color:e.$vuetify.theme.current.colors.iconsInactive,size:"x-small"},{default:v(()=>[D(V(n.mdiOpenInNew),1)]),_:1},8,["color"])])]),_:1})}const kt=M($o,[["render",Mo],["__scopeId","data-v-f9eb593e"]]),Fo=te({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...bo(),...po()},"VSwitch"),Uo=oe()({name:"VSwitch",inheritAttrs:!1,props:Fo(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const n=pe(e,"indeterminate"),s=pe(e,"modelValue"),{loaderClasses:i}=$t(e),{isFocused:l,focus:y,blur:p}=_o(e),m=Je(),d=Ot&&window.matchMedia("(forced-colors: active)").matches,g=b(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),_=Mt(),w=b(()=>e.id||`switch-${_}`);function T(){n.value&&(n.value=!1)}function $(E){var B,R;E.stopPropagation(),E.preventDefault(),(R=(B=m.value)==null?void 0:B.input)==null||R.click()}return ne(()=>{const[E,B]=Ft(o),R=Fe.filterProps(e),F=Ue.filterProps(e);return r(Fe,G({class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":n.value},i.value,e.class]},E,R,{modelValue:s.value,"onUpdate:modelValue":U=>s.value=U,id:w.value,focused:l.value,style:e.style}),{...a,default:U=>{let{id:u,messagesId:c,isDisabled:h,isReadonly:f,isValid:P}=U;const S={model:s,isValid:P};return r(Ue,G({ref:m},F,{modelValue:s.value,"onUpdate:modelValue":[I=>s.value=I,T],id:u.value,"aria-describedby":c.value,type:"checkbox","aria-checked":n.value?"mixed":void 0,disabled:h.value,readonly:f.value,onFocus:y,onBlur:p},B),{...a,default:I=>{let{backgroundColorClasses:z,backgroundColorStyles:O}=I;return r("div",{class:["v-switch__track",d?void 0:z.value],style:O.value,onClick:$},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](S)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](S)])])},input:I=>{let{inputNode:z,icon:O,backgroundColorClasses:se,backgroundColorStyles:ge}=I;return r(De,null,[z,r("div",{class:["v-switch__thumb",{"v-switch__thumb--filled":O||e.loading},e.inset||d?void 0:se.value],style:e.inset?void 0:ge.value},[a.thumb?r(J,{defaults:{VIcon:{icon:O,size:"x-small"}}},{default:()=>[a.thumb({...S,icon:O})]}):r(Ut,null,{default:()=>[e.loading?r(Ht,{name:"v-switch",active:!0,color:P.value===!1?void 0:g.value},{default:K=>a.loader?a.loader(K):r(zt,{active:K.isActive,color:K.color,indeterminate:!0,size:"16",width:"2"},null)}):O&&r(H,{key:String(O),icon:O,size:"x-small"},null)]})])])}})}})}),{}}}),Ho={name:"AuthLoginDialog",components:{SubmitFooter:bt},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:Wt}},computed:{...j(le,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...j(N,{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:{...me(N,["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 zo(e,t,o,a,n,s){const i=bt;return k(),C(ft,{modelValue:n.showDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>n.showDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:v(({props:l})=>[r(et,jt(Gt(l)),{default:v(()=>[r(Qe,null,{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiLogin),1)]),_:1}),D(" Login ")]),_:1})]),_:2},1040)]),default:v(()=>[r(vo,{id:"authDialog",ref:"form"},{default:v(()=>[r(ve,{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]=he(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),r(ve,{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]=he(l=>{n.registerMode?e.$refs.passwordConfirm.focus():s.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),r(tt,null,{default:v(()=>[n.registerMode?(k(),C(ve,{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:he(s.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):A("",!0)]),_:1}),e.adminFlags.registration?(k(),C(Uo,{key:0,modelValue:n.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>n.registerMode=l),label:"Register"},{default:v(()=>[D(" Register ")]),_:1},8,["modelValue"])):A("",!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 Wo=M(Ho,[["render",zo],["__scopeId","data-v-ef06f84f"]]),jo={name:"AuthLogoutItem",data:function(){return{mdiLogout:Yt}},computed:{...j(N,{username:e=>e.user.username})},methods:{...me(N,["logout"])}};function Go(e,t,o,a,n,s){return k(),C(et,{onClick:e.logout},{default:v(()=>[r(Qe,null,{default:v(()=>[r(H,null,{default:v(()=>[D(V(e.mdiLogout),1)]),_:1}),D("Logout "+V(e.username),1)]),_:1})]),_:1},8,["onClick"])}const Yo=M(jo,[["render",Go]]),Xo={name:"AuthMenu",components:{ChangePasswordDialog:vt,AuthLoginDialog:Wo,AuthLogoutItem:Yo},computed:{...j(N,{user:e=>e.user})},methods:{...me(N,["logout"])}};function qo(e,t,o,a,n,s){const i=ee("AuthLogoutItem"),l=vt,y=ee("AuthLoginDialog");return k(),q(De,null,[e.user?(k(),C(i,{key:0})):A("",!0),e.user?(k(),C(l,{key:1,user:e.user},null,8,["user"])):(k(),C(y,{key:2}))],64)}const wt=M(Xo,[["render",qo]]),He=ot(nt(()=>ht(()=>import("./admin-drawer-panel-DffXGW1d.js").then(e=>e.dB),__vite__mapDeps([0,1])))),Ko={name:"SettingsCommonPanel",components:{AuthMenu:wt,AdminMenu:He},props:{adminMenu:{type:Boolean,default:!0}},data(){return{AdminMenu:He}},computed:{...de(N,["isUserAdmin"])}},Zo={id:"commonPanel"};function Jo(e,t,o,a,n,s){const i=wt;return k(),q("div",Zo,[r(i),e.isUserAdmin?(k(),C(_e,{key:0})):A("",!0),e.isUserAdmin?(k(),C(Be(n.AdminMenu),{key:1,menu:o.adminMenu},null,8,["menu"])):A("",!0)])}const Qo=M(Ko,[["render",Jo],["__scopeId","data-v-a21632a4"]]),en=e=>{const t=e.pk,o=at();return e={...e,...o},delete e.pk,xe.get(`c/${t}`,{params:e})},tn=()=>{const e=at();return xe.get("c/settings",{params:e})},on=e=>xe.put("c/settings",e),Mn=({pk:e,mtime:t})=>`${rt(e)}/download/comic-${e}.cbz?mtime=${t}`,Fn=({pk:e,page:t,mtime:o})=>`${rt(e)}/${t}/page.jpg?mtime=${o}`,ze=({pk:e,page:t,mtime:o})=>`${st(e)}/${t}/page.jpg?mtime=${o}`,nn=({pk:e,mtime:t})=>`/c/${e}/book.pdf?mtime=${t}`,be={getPdfBookSource:nn,getReaderBasePath:st,getReaderInfo:en,getReaderSettings:tn,setReaderSettings:on},sn=function(e){let t;return e?t=e.length===4&&!Number.isNaN(e)?" ("+e+")":" v"+e:t="",t},an=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},rn=function({issueNumber:e,issueSuffix:t,issueCount:o},a){let n="#"+an({issueNumber:e,issueSuffix:t},a);return o&&(n+=` of ${o}`),n},ln=function({seriesName:e,volumeName:t,issueNumber:o,issueSuffix:a,issueCount:n},s){const i=sn(t),l=rn({issueNumber:o,issueSuffix:a,issueCount:n},s);return[e,i,l].filter(Boolean).join(" ")},yt={fitTo:"",twoPages:null,readingDirection:"",readRtlInReverse:null};Object.freeze(yt);const St={cacheBook:!1};Object.freeze(St);const re=new Set(["",null,void 0]);Object.freeze(re);const Pt={prev:"next",next:"prev"};Object.freeze(Pt);const ke={rel:"prefetch",as:"image"};Object.freeze(ke);const Ee=new Set(["ttb","btt"]);Object.freeze(Ee);const Ct=new Set(["rtl","btt"]);Object.freeze(Ct);const We=1,Tt={S:"Screen",W:"Width",H:"Height",O:"Original"};Object.freeze(Tt);const un=()=>Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)>600?"HEIGHT":"WIDTH",je=e=>{Ee.has(e.readingDirection)&&e.twoPages&&(e.twoPages=!1)},cn=Xt("reader",{state:()=>({choices:{fitTo:Oe.reader.fitTo,readingDirection:Oe.reader.readingDirection,nullValues:re},readerSettings:{fitTo:un(),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:We}}),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?ln(t):""),o},routeParams(e){return{pk:+e.books.current.pk,page:+e.page}},isVertical(e){return Ee.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 Ct.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={...re};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))re.has(i)||(t[s]=i);return je(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?qt:Kt},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>We?a="Orig":a=Tt[t.fitTo],a){let n="fitTo";n+=mo(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},je(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}=fe.resolve(o);window.history.pushState({},void 0,a)}else window.scrollTo(0,0)},async loadReaderSettings(){return be.getReaderSettings().then(e=>{const t=e.data;return this._updateSettings(t,!1),!0}).catch(console.error)},async loadBooks(e){await be.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=io().page,a=o&&o.routes?o.routes.last:{name:"home"};return fe.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 Me.setGroupBookmarks(t,o)},async setSettingsLocal(e){this._updateSettings(e,!0),await Me.setGroupBookmarks({group:"c",pk:+this.books.current.pk},this.books.current.settings)},setSettingsClient(e){this.clientSettings={...this.clientSettings,...e}},async clearSettingsLocal(){await this.setSettingsLocal(yt),this.setSettingsClient(St)},async setSettingsGlobal(e){this._updateSettings(e,!1),await be.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?Pt[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};fe.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 ze(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({...ke,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=ze(n);s&&o.push({...ke,href:s})}return{link:o}},toRoute(e){return e?{params:e}:{}},linkLabel(e,t){return`${e==="prev"?"Previous":"Next"} ${t}`}}});function dn(e){let{rootEl:t,isSticky:o,layoutItemStyles:a}=e;const n=W(!1),s=W(0),i=b(()=>{const p=typeof n.value=="boolean"?"top":n.value;return[o.value?{top:"auto",bottom:"auto",height:void 0}:void 0,n.value?{[p]:X(s.value)}:{top:a.value.top}]});it(()=>{Z(o,p=>{p?window.addEventListener("scroll",y,{passive:!0}):window.removeEventListener("scroll",y)},{immediate:!0})}),lt(()=>{window.removeEventListener("scroll",y)});let l=0;function y(){const p=l>window.scrollY?"up":"down",m=t.value.getBoundingClientRect(),d=parseFloat(a.value.top??0),g=window.scrollY-Math.max(0,s.value-d),_=m.height+Math.max(s.value,d)-window.scrollY-window.innerHeight,w=parseFloat(getComputedStyle(t.value).getPropertyValue("--v-body-scroll-y"))||0;m.height<window.innerHeight-d?(n.value="top",s.value=d):p==="up"&&n.value==="bottom"||p==="down"&&n.value==="top"?(s.value=window.scrollY+m.top-w,n.value=!0):p==="down"&&_<=0?(s.value=0,n.value="bottom"):p==="up"&&g<=0&&(w?n.value!=="top"&&(s.value=-g+w+d,n.value="top"):(s.value=m.top+g,n.value="top")),l=window.scrollY}return{isStuck:n,stickyStyles:i}}const mn=100,gn=20;function Ge(e){return(e<0?-1:1)*Math.sqrt(Math.abs(e))*1.41421356237}function Ye(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=Ge(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 Ge(t)*1e3}function hn(){const e={};function t(n){Array.from(n.changedTouches).forEach(s=>{(e[s.identifier]??(e[s.identifier]=new Zt(gn))).push([n.timeStamp,s])})}function o(n){Array.from(n.changedTouches).forEach(s=>{delete e[s.identifier]})}function a(n){var p;const s=(p=e[n])==null?void 0:p.values().reverse();if(!s)throw new Error(`No samples for touch id ${n}`);const i=s[0],l=[],y=[];for(const m of s){if(i[0]-m[0]>mn)break;l.push({t:m[0],d:m[1].clientX}),y.push({t:m[0],d:m[1].clientY})}return{x:Ye(l),y:Ye(y),get direction(){const{x:m,y:d}=this,[g,_]=[Math.abs(m),Math.abs(d)];return g>_&&m>=0?"right":g>_&&m<=0?"left":_>g&&d>=0?"down":_>g&&d<=0?"up":fn()}}}return{addMovement:t,endTouch:o,getVelocity:a}}function fn(){throw new Error}function vn(e){let{el:t,isActive:o,isTemporary:a,width:n,touchless:s,position:i}=e;it(()=>{window.addEventListener("touchstart",B,{passive:!0}),window.addEventListener("touchmove",R,{passive:!1}),window.addEventListener("touchend",F,{passive:!0})}),lt(()=>{window.removeEventListener("touchstart",B),window.removeEventListener("touchmove",R),window.removeEventListener("touchend",F)});const l=b(()=>["left","right"].includes(i.value)),{addMovement:y,endTouch:p,getVelocity:m}=hn();let d=!1;const g=W(!1),_=W(0),w=W(0);let T;function $(u,c){return(i.value==="left"?u:i.value==="right"?document.documentElement.clientWidth-u:i.value==="top"?u:i.value==="bottom"?document.documentElement.clientHeight-u:Y())-(c?n.value:0)}function E(u){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const h=i.value==="left"?(u-w.value)/n.value:i.value==="right"?(document.documentElement.clientWidth-u-w.value)/n.value:i.value==="top"?(u-w.value)/n.value:i.value==="bottom"?(document.documentElement.clientHeight-u-w.value)/n.value:Y();return c?Math.max(0,Math.min(1,h)):h}function B(u){if(s.value)return;const c=u.changedTouches[0].clientX,h=u.changedTouches[0].clientY,f=25,P=i.value==="left"?c<f:i.value==="right"?c>document.documentElement.clientWidth-f:i.value==="top"?h<f:i.value==="bottom"?h>document.documentElement.clientHeight-f:Y(),S=o.value&&(i.value==="left"?c<n.value:i.value==="right"?c>document.documentElement.clientWidth-n.value:i.value==="top"?h<n.value:i.value==="bottom"?h>document.documentElement.clientHeight-n.value:Y());(P||S||o.value&&a.value)&&(T=[c,h],w.value=$(l.value?c:h,o.value),_.value=E(l.value?c:h),d=w.value>-20&&w.value<80,p(u),y(u))}function R(u){const c=u.changedTouches[0].clientX,h=u.changedTouches[0].clientY;if(d){if(!u.cancelable){d=!1;return}const P=Math.abs(c-T[0]),S=Math.abs(h-T[1]);(l.value?P>S&&P>3:S>P&&S>3)?(g.value=!0,d=!1):(l.value?S:P)>3&&(d=!1)}if(!g.value)return;u.preventDefault(),y(u);const f=E(l.value?c:h,!1);_.value=Math.max(0,Math.min(1,f)),f>1?w.value=$(l.value?c:h,!0):f<0&&(w.value=$(l.value?c:h,!1))}function F(u){if(d=!1,!g.value)return;y(u),g.value=!1;const c=m(u.changedTouches[0].identifier),h=Math.abs(c.x),f=Math.abs(c.y);(l.value?h>f&&h>400:f>h&&f>3)?o.value=c.direction===({left:"right",right:"left",top:"down",bottom:"up"}[i.value]||Y()):o.value=_.value>.5}const U=b(()=>g.value?{transform:i.value==="left"?`translateX(calc(-100% + ${_.value*n.value}px))`:i.value==="right"?`translateX(calc(100% - ${_.value*n.value}px))`:i.value==="top"?`translateY(calc(-100% + ${_.value*n.value}px))`:i.value==="bottom"?`translateY(calc(100% - ${_.value*n.value}px))`:Y(),transition:"none"}:void 0);return ae(g,()=>{var h,f;const u=((h=t.value)==null?void 0:h.style.transform)??null,c=((f=t.value)==null?void 0:f.style.transition)??null;Jt(()=>{var P,S,I,z;(S=t.value)==null||S.style.setProperty("transform",((P=U.value)==null?void 0:P.transform)||"none"),(z=t.value)==null||z.style.setProperty("transition",((I=U.value)==null?void 0:I.transition)||null)}),Qt(()=>{var P,S;(P=t.value)==null||P.style.setProperty("transform",u),(S=t.value)==null||S.style.setProperty("transition",c)})}),{isDragging:g,dragProgress:_,dragStyles:U}}function Y(){throw new Error}const bn=["start","end","left","right","top","bottom"],pn=te({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,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>bn.includes(e)},sticky:Boolean,...we(),...ue(),...go(),...lo({mobile:null}),...ye(),...mt(),...Se(),...ce({tag:"nav"}),...Pe()},"VNavigationDrawer"),_n=oe()({name:"VNavigationDrawer",props:pn(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,t){let{attrs:o,emit:a,slots:n}=t;const{isRtl:s}=ut(),{themeClasses:i}=Ce(e),{borderClasses:l}=Te(e),{backgroundColorClasses:y,backgroundColorStyles:p}=ie(Q(e,"color")),{elevationClasses:m}=Re(e),{displayClasses:d,mobile:g}=uo(e),{roundedClasses:_}=Ve(e),w=eo(),T=pe(e,"modelValue",null,x=>!!x),{ssrBootStyles:$}=to(),{scopeId:E}=ho(),B=Je(),R=W(!1),{runOpenDelay:F,runCloseDelay:U}=fo(e,x=>{R.value=x}),u=b(()=>e.rail&&e.expandOnHover&&R.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),c=b(()=>oo(e.location,s.value)),h=b(()=>e.persistent),f=b(()=>!e.permanent&&(g.value||e.temporary)),P=b(()=>e.sticky&&!f.value&&c.value!=="bottom");ae(()=>e.expandOnHover&&e.rail!=null,()=>{Z(R,x=>a("update:rail",!x))}),ae(()=>!e.disableResizeWatcher,()=>{Z(f,x=>!e.permanent&&so(()=>T.value=!x))}),ae(()=>!e.disableRouteWatcher&&!!w,()=>{Z(w.currentRoute,()=>f.value&&(T.value=!1))}),Z(()=>e.permanent,x=>{x&&(T.value=!0)}),e.modelValue==null&&!f.value&&(T.value=e.permanent||!g.value);const{isDragging:S,dragProgress:I}=vn({el:B,isActive:T,isTemporary:f,width:u,touchless:Q(e,"touchless"),position:c}),z=b(()=>{const x=f.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):u.value;return S.value?x*I.value:x}),O=b(()=>["top","bottom"].includes(e.location)?0:u.value),{layoutItemStyles:se,layoutItemScrimStyles:ge,layoutIsReady:K}=gt({id:e.name,order:b(()=>parseInt(e.order,10)),position:c,layoutSize:z,elementSize:O,active:b(()=>T.value||S.value),disableTransitions:b(()=>S.value),absolute:b(()=>e.absolute||P.value&&typeof Ie.value!="string")}),{isStuck:Ie,stickyStyles:Rt}=dn({rootEl:B,isSticky:P,layoutItemStyles:se}),Le=ie(b(()=>typeof e.scrim=="string"?e.scrim:null)),Vt=b(()=>({...S.value?{opacity:I.value*.2,transition:"none"}:void 0,...ge.value}));return ct({VList:{bgColor:"transparent"}}),ne(()=>{const x=n.image||e.image;return r(De,null,[r(e.tag,G({ref:B,onMouseenter:F,onMouseleave:U,class:["v-navigation-drawer",`v-navigation-drawer--${c.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":R.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":f.value,"v-navigation-drawer--persistent":h.value,"v-navigation-drawer--active":T.value,"v-navigation-drawer--sticky":P.value},i.value,y.value,l.value,d.value,m.value,_.value,e.class],style:[p.value,se.value,$.value,Rt.value,e.style,["top","bottom"].includes(c.value)?{height:"auto"}:{}]},E,o),{default:()=>{var Ae,Ne,$e;return[x&&r("div",{key:"image",class:"v-navigation-drawer__img"},[n.image?r(J,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},n.image):r(dt,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),n.prepend&&r("div",{class:"v-navigation-drawer__prepend"},[(Ae=n.prepend)==null?void 0:Ae.call(n)]),r("div",{class:"v-navigation-drawer__content"},[(Ne=n.default)==null?void 0:Ne.call(n)]),n.append&&r("div",{class:"v-navigation-drawer__append"},[($e=n.append)==null?void 0:$e.call(n)])]}}),r(no,{name:"fade-transition"},{default:()=>[f.value&&(S.value||T.value)&&!!e.scrim&&r("div",G({class:["v-navigation-drawer__scrim",Le.backgroundColorClasses.value],style:[Vt.value,Le.backgroundColorStyles.value],onClick:()=>{h.value||(T.value=!1)}},E),null)]})])}),K.then(()=>({isStuck:Ie}))}}),kn={name:"SettingsDrawer",components:{SettingsCommonPanel:Qo,SettingsFooter:kt,VersionFooter:_t},props:{title:{type:String,required:!0},panel:{type:Object,required:!0},admin:{type:Boolean,default:!1}},computed:{...de(N,["isCodexViewable"]),...ao(le,["isSettingsDrawerOpen"]),...j(cn,{invisibleHack:e=>e.bookChange==="next"}),adminAndNotSmall(){return this.admin&&!this.$vuetify.display.smAndDown}},mounted(){this.isSettingsDrawerOpen=this.adminAndNotSmall}},wn={class:"settingsDrawerContainer"},yn={id:"topBlock"},Sn={class:"settingsHeader"},Pn={id:"footerGroup"};function Cn(e,t,o,a,n,s){const i=ee("SettingsCommonPanel"),l=kt,y=_t;return k(),C(_n,G(e.$attrs,{modelValue:e.isSettingsDrawerOpen,"onUpdate:modelValue":t[0]||(t[0]=p=>e.isSettingsDrawerOpen=p),"disable-resize-watcher":"","disable-route-watcher":"",location:"right",scrim:!s.adminAndNotSmall,temporary:!s.adminAndNotSmall,touchless:""}),{append:v(()=>[r(y)]),default:v(()=>[L("div",wn,[L("div",yn,[L("header",Sn,[L("h3",null,V(o.title),1)]),e.isCodexViewable?(k(),C(Be(o.panel),{key:0})):A("",!0),e.isCodexViewable?(k(),C(_e,{key:1})):A("",!0),r(i,{"admin-menu":!o.admin},null,8,["admin-menu"]),r(_e)]),L("div",Pn,[r(l)])])]),_:1},16,["modelValue","scrim","temporary"])}const Un=M(kn,[["render",Cn],["__scopeId","data-v-a38da0ea"]]),Xe=ot(nt(()=>ht(()=>import("./admin-drawer-panel-DffXGW1d.js").then(e=>e.dC),__vite__mapDeps([0,1])))),Tn={name:"SettingsDrawerButton",components:{AdminSettingsButtonProgress:Xe},data(){return{mdiMenu:ro,AdminSettingsButtonProgress:Xe}},computed:{...j(N,["isUserAdmin"])}};function Rn(e,t,o,a,n,s){return k(),C(Ze,G(e.$attrs,{icon:"",title:"Settings"}),{default:v(()=>[r(H,null,{default:v(()=>[D(V(n.mdiMenu),1)]),_:1}),e.isUserAdmin?(k(),C(Be(n.AdminSettingsButtonProgress),{key:0})):A("",!0)]),_:1},16)}const Hn=M(Tn,[["render",Rn]]),Vn=te({text:String,...ue(),...ce()},"VToolbarTitle"),Dn=oe()({name:"VToolbarTitle",props:Vn(),setup(e,t){let{slots:o}=t;return ne(()=>{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)])]}})}),{}}}),Bn=[null,"prominent","default","comfortable","compact"],xn=te({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>Bn.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...we(),...ue(),...ye(),...Se(),...ce({tag:"header"}),...Pe()},"VToolbar"),zn=oe()({name:"VToolbar",props:xn(),setup(e,t){var _;let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:n}=ie(Q(e,"color")),{borderClasses:s}=Te(e),{elevationClasses:i}=Re(e),{roundedClasses:l}=Ve(e),{themeClasses:y}=Ce(e),{rtlClasses:p}=ut(),m=W(!!(e.extended||(_=o.extension)!=null&&_.call(o))),d=b(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),g=b(()=>m.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 ct({VBtn:{variant:"text"}}),ne(()=>{var E;const w=!!(e.title||o.title),T=!!(o.image||e.image),$=(E=o.extension)==null?void 0:E.call(o);return m.value=!!(e.extended||$),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,y.value,p.value,e.class],style:[n.value,e.style]},{default:()=>[T&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?r(J,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):r(dt,{key:"image-img",cover:!0,src:e.image},null)]),r(J,{defaults:{VTabs:{height:X(d.value)}}},{default:()=>{var B,R,F;return[r("div",{class:"v-toolbar__content",style:{height:X(d.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[(B=o.prepend)==null?void 0:B.call(o)]),w&&r(Dn,{key:"title",text:e.title},{text:o.title}),(R=o.default)==null?void 0:R.call(o),o.append&&r("div",{class:"v-toolbar__append"},[(F=o.append)==null?void 0:F.call(o)])])]}}),r(J,{defaults:{VTabs:{height:X(g.value)}}},{default:()=>[r(tt,null,{default:()=>[m.value&&r("div",{class:"v-toolbar__extension",style:{height:X(g.value)}},[$])]})]})]})}),{contentHeight:d,extensionHeight:g}}});export{Hn as S,Dn as V,Un as _,zn as a,rn as b,We as c,ze as d,_n as e,sn as f,ln as g,Mn as h,Fn as i,an as j,cn as u};
@@ -1 +0,0 @@
1
- import{bG as Y,x as H,E as _,au as M,F as j,G as k,I as A,J as F,bH as O,bI as z,r as S,h,s as x,a as D,p as J,L as m,ao as w,K as R,bh as V,bi as K,bJ as U,i as q,bK as Q,bL as Z,bk as N,bj as p,C as X,n as ee}from"./admin-drawer-panel-DffXGW1d.js";import{m as te,a as ne}from"./confirm-footer-CIu2tkFD.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,L=Symbol.for("vuetify:v-window"),$=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(),...j()},"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}=A(e),{isRtl:i}=F(),{t:u}=O(),s=z(e,$),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,E=f-1;f<=2?d.value=a<l:a===E&&l===0?d.value=!0:a===0&&l===E?d.value=!1:d.value=a<l}),J(L,{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 C(){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?C():B()},right:()=>{r.value?B():C()},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})]}}),[[K("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...U(),...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=q(L),i=Q(e,$),{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{me as V,de as a,ge as b,ve as m};
@@ -1 +0,0 @@
1
- import{bG as Y,x as H,E as _,au as M,F as j,G as k,I as A,J as F,bH as O,bI as z,r as S,h,s as x,a as D,p as J,L as m,ao as w,K as R,bh as V,bi as K,bJ as U,i as q,bK as Q,bL as Z,bk as N,bj as p,C as X,n as ee}from"./admin-drawer-panel-DffXGW1d.js";import{m as te,a as ne}from"./confirm-footer-CIu2tkFD.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,L=Symbol.for("vuetify:v-window"),$=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(),...j()},"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}=A(e),{isRtl:i}=F(),{t:u}=O(),s=z(e,$),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,E=f-1;f<=2?d.value=a<l:a===E&&l===0?d.value=!0:a===0&&l===E?d.value=!1:d.value=a<l}),J(L,{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 C(){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?C():B()},right:()=>{r.value?B():C()},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})]}}),[[K("touch"),G.value]])),{group:s}}}),de=H({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},..._(),...U(),...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=q(L),i=Q(e,$),{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{me as V,de as a,ge as b,ve as m};
@@ -1 +0,0 @@
1
- import{S as ie,V as de,a as ue,_ as Y}from"./VToolbar-DCXw9xBt.js";import{ad as ce,_ as I,k as me,Q as P,R as c,P as C,T as m,L as o,ae as k,af as R,ag as be,N as fe,ah as ve,ai as K,aj as pe,ak as ge,x as D,al as Q,am as _e,G as W,an as we,r as F,h as B,K as L,ao as j,M as A,ap as S,aq as Ve,ar as he,i as Te,as as J,at as ye,au as Se,av as ke,aw as Ce,ax as _,ay as xe,C as $e,az as Pe,aA as Z,t as q,O as Be,aB as w,aC as H,aD as Ae,aE as Ie,aF as De,m as We,aG as Le}from"./admin-drawer-panel-DffXGW1d.js";import{u as Ee}from"./main-DB0zDxIA.js";import{t as Me}from"./index-DUjeNg4x.js";import{f as Re,u as Ue}from"./confirm-footer-CIu2tkFD.js";import{m as ze,V as U,a as Ge,b as z}from"./VWindowItem-CCYriq5i.js";import{m as Oe,V as X}from"./VSlideGroup-BdgkaRxE.js";import{V as Ne}from"./VMain-8vjSGbNt.js";import"./change-password-dialog-Dr1CYQ46.js";import"./VSelectionControl-DvHEDoJy.js";const Fe={name:"AdminTitleToolbar",components:{SettingsDrawerButton:ie},computed:{...ce(me,["isSettingsDrawerOpen"])}};function je(e,a,i,t,s,b){const r=P("SettingsDrawerButton");return c(),C(ue,{id:"titleBar",class:R(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:m(()=>[o(de,{class:"codexToolbarTitle"},{default:m(()=>[k(" Codex Administration ")]),_:1}),o(r,{class:R({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:a[0]||(a[0]=n=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const ee=I(Fe,[["render",je],["__scopeId","data-v-15c77dc3"]]),qe={name:"AdminSettingsPanel",data(){return{mdiBookshelf:be}},computed:{...fe(Ee,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function He(e,a,i,t,s,b){return c(),C(ge,{ref:"browserLink",to:e.browserRoute},{default:m(()=>[o(pe,null,{default:m(()=>[o(ve,null,{default:m(()=>[k(K(s.mdiBookshelf),1)]),_:1}),k("Browser ")]),_:1})]),_:1},8,["to"])}const Xe=I(qe,[["render",He]]),G=Symbol.for("vuetify:v-tabs"),Ye=D({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...Q(_e({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),te=W()({name:"VTab",props:Ye(),setup(e,a){let{slots:i,attrs:t}=a;const{textColorClasses:s,textColorStyles:b}=we(e,"sliderColor"),r=F(),n=F(),d=B(()=>e.direction==="horizontal"),g=B(()=>{var v,l;return((l=(v=r.value)==null?void 0:v.group)==null?void 0:l.isSelected.value)??!1});function E(v){var u,p;let{value:l}=v;if(l){const f=(p=(u=r.value)==null?void 0:u.$el.parentElement)==null?void 0:p.querySelector(".v-tab--selected .v-tab__slider"),M=n.value;if(!f||!M)return;const ae=getComputedStyle(f).color,V=f.getBoundingClientRect(),h=M.getBoundingClientRect(),x=d.value?"x":"y",$=d.value?"X":"Y",O=d.value?"right":"bottom",T=d.value?"width":"height",se=V[x],oe=h[x],y=se>oe?V[O]-h[O]:V[x]-h[x],ne=Math.sign(y)>0?d.value?"right":"bottom":Math.sign(y)<0?d.value?"left":"top":"center",re=(Math.abs(y)+(Math.sign(y)<0?V[T]:h[T]))/Math.max(V[T],h[T])||0,le=V[T]/h[T]||0,N=1.5;Ve(M,{backgroundColor:[ae,"currentcolor"],transform:[`translate${$}(${y}px) scale${$}(${le})`,`translate${$}(${y/N}px) scale${$}(${(re-1)/N+1})`,"none"],transformOrigin:Array(3).fill(ne)},{duration:225,easing:he})}}return L(()=>{const v=j.filterProps(e);return o(j,S({symbol:G,ref:r,class:["v-tab",e.class],style:e.style,tabindex:g.value?0:-1,role:"tab","aria-selected":String(g.value),active:!1},v,t,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":E}),{...i,default:()=>{var l;return o(A,null,[((l=i.default)==null?void 0:l.call(i))??e.text,!e.hideSlider&&o("div",{ref:n,class:["v-tab__slider",s.value],style:b.value},null)])}})}),Re({},r)}}),Ke=D({...Q(ze(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),Qe=W()({name:"VTabsWindow",props:Ke(),emits:{"update:modelValue":e=>!0},setup(e,a){let{slots:i}=a;const t=Te(G,null),s=J(e,"modelValue"),b=B({get(){var r;return s.value!=null||!t?s.value:(r=t.items.value.find(n=>t.selected.value.includes(n.id)))==null?void 0:r.value},set(r){s.value=r}});return L(()=>{const r=U.filterProps(e);return o(U,S({_as:"VTabsWindow"},r,{modelValue:b.value,"onUpdate:modelValue":n=>b.value=n,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),i)}),{}}}),Je=D({...Ge()},"VTabsWindowItem"),Ze=W()({name:"VTabsWindowItem",props:Je(),setup(e,a){let{slots:i}=a;return L(()=>{const t=z.filterProps(e);return o(z,S({_as:"VTabsWindowItem"},t,{class:["v-tabs-window-item",e.class],style:e.style}),i)}),{}}});function et(e){return e?e.map(a=>Pe(a)?a:{text:a,value:a}):[]}const tt=D({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,...Oe({mandatory:"force",selectedClass:"v-tab-item--selected"}),...ye(),...Se()},"VTabs"),at=W()({name:"VTabs",props:tt(),emits:{"update:modelValue":e=>!0},setup(e,a){let{attrs:i,slots:t}=a;const s=J(e,"modelValue"),b=B(()=>et(e.items)),{densityClasses:r}=ke(e),{backgroundColorClasses:n,backgroundColorStyles:d}=Ce(_(e,"bgColor")),{scopeId:g}=Ue();return xe({VTab:{color:_(e,"color"),direction:_(e,"direction"),stacked:_(e,"stacked"),fixed:_(e,"fixedTabs"),sliderColor:_(e,"sliderColor"),hideSlider:_(e,"hideSlider")}}),L(()=>{const E=X.filterProps(e),v=!!(t.window||e.items.length>0);return o(A,null,[o(X,S(E,{modelValue:s.value,"onUpdate:modelValue":l=>s.value=l,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},r.value,n.value,e.class],style:[{"--v-tabs-height":$e(e.height)},d.value,e.style],role:"tablist",symbol:G},g,i),{default:()=>{var l;return[((l=t.default)==null?void 0:l.call(t))??b.value.map(u=>{var p;return((p=t.tab)==null?void 0:p.call(t,{item:u}))??o(te,S(u,{key:u.text,value:u.value}),{default:()=>{var f;return(f=t[`tab.${u.value}`])==null?void 0:f.call(t,{item:u})}})})]}}),v&&o(Qe,S({modelValue:s.value,"onUpdate:modelValue":l=>s.value=l,key:"tabs-window"},g),{default:()=>{var l;return[b.value.map(u=>{var p;return((p=t.item)==null?void 0:p.call(t,{item:u}))??o(Ze,{value:u.value},{default:()=>{var f;return(f=t[`item.${u.value}`])==null?void 0:f.call(t,{item:u})}})}),(l=t.window)==null?void 0:l.call(t)]}})])}),{}}}),st={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...Z(q,["librariesExist"])},watch:{$route(e){const i=e.path.split("/").at(-1);this.activeTab=Me(i)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...Be(q,["loadTables"])}},ot={id:"tabContainer"},nt={key:0,id:"noLibraries"};function rt(e,a,i,t,s,b){const r=P("router-view");return c(),w("div",ot,[o(at,{id:"tabs",class:R({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:m(()=>[(c(!0),w(A,null,H(s.tabs,n=>(c(),C(te,{key:n,modelValue:s.activeTab,"onUpdate:modelValue":a[0]||(a[0]=d=>s.activeTab=d),to:n.toLowerCase()},{default:m(()=>[k(K(n),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),o(U,{id:"tabItems",modelValue:s.activeTab,"onUpdate:modelValue":a[1]||(a[1]=n=>s.activeTab=n),touch:!1},{default:m(()=>[(c(!0),w(A,null,H(s.tabs,n=>(c(),C(r,{key:n},{default:m(({Component:d})=>[o(z,{value:n,class:"tabItemContainer"},{default:m(()=>[(c(),C(Ae(d)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Ie("",!0):(c(),w("div",nt," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const lt=I(st,[["render",rt],["__scopeId","data-v-03b1c9e5"]]),it={name:"MainAdmin",components:{AdminTitleToolbar:ee,AdminTabs:lt,SettingsDrawer:Y},data(){return{AdminSettingsPanel:De(Xe)}},computed:{...Z(We,["isUserAdmin"])}},dt={id:"adminWrapper"},ut={key:0,id:"adminContainer"},ct={key:1,id:"announcement"};function mt(e,a,i,t,s,b){const r=ee,n=P("AdminTabs"),d=Y,g=P("router-link");return c(),w("div",dt,[e.isUserAdmin?(c(),w("div",ut,[o(Ne,null,{default:m(()=>[o(r),o(n)]),_:1}),o(d,{title:"Admin Status",admin:!0,panel:s.AdminSettingsPanel},null,8,["panel"])])):(c(),w("div",ct,[Le("h1",null,[o(g,{to:{name:"home"}},{default:m(()=>[k(" Log in ")]),_:1}),k(" as an Administrator to use this panel ")])]))])}const St=I(it,[["render",mt],["__scopeId","data-v-0605704c"]]);export{St as default};
@@ -1 +0,0 @@
1
- import{S as ie,V as de,a as ue,_ as Y}from"./VToolbar-DCXw9xBt.js";import{ad as ce,_ as I,k as me,Q as P,R as c,P as C,T as m,L as o,ae as k,af as R,ag as be,N as fe,ah as ve,ai as K,aj as pe,ak as ge,x as D,al as Q,am as _e,G as W,an as we,r as F,h as B,K as L,ao as j,M as A,ap as S,aq as Ve,ar as he,i as Te,as as J,at as ye,au as Se,av as ke,aw as Ce,ax as _,ay as xe,C as $e,az as Pe,aA as Z,t as q,O as Be,aB as w,aC as H,aD as Ae,aE as Ie,aF as De,m as We,aG as Le}from"./admin-drawer-panel-DffXGW1d.js";import{u as Ee}from"./main-DB0zDxIA.js";import{t as Me}from"./index-DUjeNg4x.js";import{f as Re,u as Ue}from"./confirm-footer-CIu2tkFD.js";import{m as ze,V as U,a as Ge,b as z}from"./VWindowItem-CCYriq5i.js";import{m as Oe,V as X}from"./VSlideGroup-BdgkaRxE.js";import{V as Ne}from"./VMain-8vjSGbNt.js";import"./change-password-dialog-Dr1CYQ46.js";import"./VSelectionControl-DvHEDoJy.js";const Fe={name:"AdminTitleToolbar",components:{SettingsDrawerButton:ie},computed:{...ce(me,["isSettingsDrawerOpen"])}};function je(e,a,i,t,s,b){const r=P("SettingsDrawerButton");return c(),C(ue,{id:"titleBar",class:R(["codexToolbar",{drawerMargin:!e.$vuetify.display.mdAndDown}]),density:"compact",elevation:"8"},{default:m(()=>[o(de,{class:"codexToolbarTitle"},{default:m(()=>[k(" Codex Administration ")]),_:1}),o(r,{class:R({invisible:e.isSettingsDrawerOpen}),disabled:e.isSettingsDrawerOpen,plain:e.isSettingsDrawerOpen,onClick:a[0]||(a[0]=n=>e.isSettingsDrawerOpen=!0)},null,8,["class","disabled","plain"])]),_:1},8,["class"])}const ee=I(Fe,[["render",je],["__scopeId","data-v-15c77dc3"]]),qe={name:"AdminSettingsPanel",data(){return{mdiBookshelf:be}},computed:{...fe(Ee,{browserRoute:e=>e.page.routes.last?{name:"browser",params:e.page.routes.last}:{name:"home"}})}};function He(e,a,i,t,s,b){return c(),C(ge,{ref:"browserLink",to:e.browserRoute},{default:m(()=>[o(pe,null,{default:m(()=>[o(ve,null,{default:m(()=>[k(K(s.mdiBookshelf),1)]),_:1}),k("Browser ")]),_:1})]),_:1},8,["to"])}const Xe=I(qe,[["render",He]]),G=Symbol.for("vuetify:v-tabs"),Ye=D({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...Q(_e({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),te=W()({name:"VTab",props:Ye(),setup(e,a){let{slots:i,attrs:t}=a;const{textColorClasses:s,textColorStyles:b}=we(e,"sliderColor"),r=F(),n=F(),d=B(()=>e.direction==="horizontal"),g=B(()=>{var v,l;return((l=(v=r.value)==null?void 0:v.group)==null?void 0:l.isSelected.value)??!1});function E(v){var u,p;let{value:l}=v;if(l){const f=(p=(u=r.value)==null?void 0:u.$el.parentElement)==null?void 0:p.querySelector(".v-tab--selected .v-tab__slider"),M=n.value;if(!f||!M)return;const ae=getComputedStyle(f).color,V=f.getBoundingClientRect(),h=M.getBoundingClientRect(),x=d.value?"x":"y",$=d.value?"X":"Y",O=d.value?"right":"bottom",T=d.value?"width":"height",se=V[x],oe=h[x],y=se>oe?V[O]-h[O]:V[x]-h[x],ne=Math.sign(y)>0?d.value?"right":"bottom":Math.sign(y)<0?d.value?"left":"top":"center",re=(Math.abs(y)+(Math.sign(y)<0?V[T]:h[T]))/Math.max(V[T],h[T])||0,le=V[T]/h[T]||0,N=1.5;Ve(M,{backgroundColor:[ae,"currentcolor"],transform:[`translate${$}(${y}px) scale${$}(${le})`,`translate${$}(${y/N}px) scale${$}(${(re-1)/N+1})`,"none"],transformOrigin:Array(3).fill(ne)},{duration:225,easing:he})}}return L(()=>{const v=j.filterProps(e);return o(j,S({symbol:G,ref:r,class:["v-tab",e.class],style:e.style,tabindex:g.value?0:-1,role:"tab","aria-selected":String(g.value),active:!1},v,t,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":E}),{...i,default:()=>{var l;return o(A,null,[((l=i.default)==null?void 0:l.call(i))??e.text,!e.hideSlider&&o("div",{ref:n,class:["v-tab__slider",s.value],style:b.value},null)])}})}),Re({},r)}}),Ke=D({...Q(ze(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),Qe=W()({name:"VTabsWindow",props:Ke(),emits:{"update:modelValue":e=>!0},setup(e,a){let{slots:i}=a;const t=Te(G,null),s=J(e,"modelValue"),b=B({get(){var r;return s.value!=null||!t?s.value:(r=t.items.value.find(n=>t.selected.value.includes(n.id)))==null?void 0:r.value},set(r){s.value=r}});return L(()=>{const r=U.filterProps(e);return o(U,S({_as:"VTabsWindow"},r,{modelValue:b.value,"onUpdate:modelValue":n=>b.value=n,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),i)}),{}}}),Je=D({...Ge()},"VTabsWindowItem"),Ze=W()({name:"VTabsWindowItem",props:Je(),setup(e,a){let{slots:i}=a;return L(()=>{const t=z.filterProps(e);return o(z,S({_as:"VTabsWindowItem"},t,{class:["v-tabs-window-item",e.class],style:e.style}),i)}),{}}});function et(e){return e?e.map(a=>Pe(a)?a:{text:a,value:a}):[]}const tt=D({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,...Oe({mandatory:"force",selectedClass:"v-tab-item--selected"}),...ye(),...Se()},"VTabs"),at=W()({name:"VTabs",props:tt(),emits:{"update:modelValue":e=>!0},setup(e,a){let{attrs:i,slots:t}=a;const s=J(e,"modelValue"),b=B(()=>et(e.items)),{densityClasses:r}=ke(e),{backgroundColorClasses:n,backgroundColorStyles:d}=Ce(_(e,"bgColor")),{scopeId:g}=Ue();return xe({VTab:{color:_(e,"color"),direction:_(e,"direction"),stacked:_(e,"stacked"),fixed:_(e,"fixedTabs"),sliderColor:_(e,"sliderColor"),hideSlider:_(e,"hideSlider")}}),L(()=>{const E=X.filterProps(e),v=!!(t.window||e.items.length>0);return o(A,null,[o(X,S(E,{modelValue:s.value,"onUpdate:modelValue":l=>s.value=l,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},r.value,n.value,e.class],style:[{"--v-tabs-height":$e(e.height)},d.value,e.style],role:"tablist",symbol:G},g,i),{default:()=>{var l;return[((l=t.default)==null?void 0:l.call(t))??b.value.map(u=>{var p;return((p=t.tab)==null?void 0:p.call(t,{item:u}))??o(te,S(u,{key:u.text,value:u.value}),{default:()=>{var f;return(f=t[`tab.${u.value}`])==null?void 0:f.call(t,{item:u})}})})]}}),v&&o(Qe,S({modelValue:s.value,"onUpdate:modelValue":l=>s.value=l,key:"tabs-window"},g),{default:()=>{var l;return[b.value.map(u=>{var p;return((p=t.item)==null?void 0:p.call(t,{item:u}))??o(Ze,{value:u.value},{default:()=>{var f;return(f=t[`item.${u.value}`])==null?void 0:f.call(t,{item:u})}})}),(l=t.window)==null?void 0:l.call(t)]}})])}),{}}}),st={name:"AdminTabs",data(){return{activeTab:"Libraries",tabs:["Users","Groups","Libraries","Flags","Tasks","Stats"]}},computed:{...Z(q,["librariesExist"])},watch:{$route(e){const i=e.path.split("/").at(-1);this.activeTab=Me(i)}},mounted(){this.librariesExist||this.loadTables(["Library"])},methods:{...Be(q,["loadTables"])}},ot={id:"tabContainer"},nt={key:0,id:"noLibraries"};function rt(e,a,i,t,s,b){const r=P("router-view");return c(),w("div",ot,[o(at,{id:"tabs",class:R({rightMargin:!e.$vuetify.display.mdAndDown}),centered:"",grow:"","show-arrows":""},{default:m(()=>[(c(!0),w(A,null,H(s.tabs,n=>(c(),C(te,{key:n,modelValue:s.activeTab,"onUpdate:modelValue":a[0]||(a[0]=d=>s.activeTab=d),to:n.toLowerCase()},{default:m(()=>[k(K(n),1)]),_:2},1032,["modelValue","to"]))),128))]),_:1},8,["class"]),o(U,{id:"tabItems",modelValue:s.activeTab,"onUpdate:modelValue":a[1]||(a[1]=n=>s.activeTab=n),touch:!1},{default:m(()=>[(c(!0),w(A,null,H(s.tabs,n=>(c(),C(r,{key:n},{default:m(({Component:d})=>[o(z,{value:n,class:"tabItemContainer"},{default:m(()=>[(c(),C(Ae(d)))]),_:2},1032,["value"])]),_:2},1024))),128))]),_:1},8,["modelValue"]),e.librariesExist?Ie("",!0):(c(),w("div",nt," Codex has no libraries. Select the Libraries tab and add a comic library. "))])}const lt=I(st,[["render",rt],["__scopeId","data-v-03b1c9e5"]]),it={name:"MainAdmin",components:{AdminTitleToolbar:ee,AdminTabs:lt,SettingsDrawer:Y},data(){return{AdminSettingsPanel:De(Xe)}},computed:{...Z(We,["isUserAdmin"])}},dt={id:"adminWrapper"},ut={key:0,id:"adminContainer"},ct={key:1,id:"announcement"};function mt(e,a,i,t,s,b){const r=ee,n=P("AdminTabs"),d=Y,g=P("router-link");return c(),w("div",dt,[e.isUserAdmin?(c(),w("div",ut,[o(Ne,null,{default:m(()=>[o(r),o(n)]),_:1}),o(d,{title:"Admin Status",admin:!0,panel:s.AdminSettingsPanel},null,8,["panel"])])):(c(),w("div",ct,[Le("h1",null,[o(g,{to:{name:"home"}},{default:m(()=>[k(" Log in ")]),_:1}),k(" as an Administrator to use this panel ")])]))])}const St=I(it,[["render",mt],["__scopeId","data-v-0605704c"]]);export{St as default};
@@ -1 +0,0 @@
1
- .invisible[data-v-15c77dc3]{visibility:hidden}#titleBar[data-v-15c77dc3]{top:0;width:100%;padding-top:env(safe-area-inset-top);padding-right:calc(env(safe-area-inset-right)/2);padding-left:calc(48px + env(safe-area-inset-left)/2);z-index:10}.drawerMargin[data-v-15c77dc3]{width:calc(100% - 256px)!important}#tabs[data-v-03b1c9e5]{position:fixed;width:100%;top:48px;z-index:10;background-color:rgb(var(--v-theme-surface))}[data-v-03b1c9e5] .tabHeader{padding:10px}#tabItems[data-v-03b1c9e5]{margin-top:96px;padding-top:15px;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.tabItemContainer[data-v-03b1c9e5]{margin-left:auto;margin-right:auto;padding-left:10px;padding-right:10px}#noLibraries[data-v-03b1c9e5]{text-align:center;padding:1em}.rightMargin[data-v-03b1c9e5]{width:calc(100% - 256px)!important}[data-v-03b1c9e5] .adminTable{max-width:100vw}[data-v-03b1c9e5] .adminTable thead>tr>th{background-color:rgb(var(--v-theme-background))!important}[data-v-03b1c9e5] .adminNoData{padding:1em;text-align:center}.v-tab.v-tab.v-btn{height:var(--v-tabs-height);border-radius:0;min-width:90px}.v-slide-group--horizontal .v-tab{max-width:360px}.v-slide-group--vertical .v-tab{justify-content:start}.v-tab__slider{position:absolute;bottom:0;left:0;height:2px;width:100%;background:currentColor;pointer-events:none;opacity:0}.v-tab--selected .v-tab__slider{opacity:1}.v-slide-group--vertical .v-tab__slider{top:0;height:100%;width:2px}.v-tabs{display:flex;height:var(--v-tabs-height)}.v-tabs--density-default{--v-tabs-height: 48px}.v-tabs--density-default.v-tabs--stacked{--v-tabs-height: 72px}.v-tabs--density-comfortable{--v-tabs-height: 44px}.v-tabs--density-comfortable.v-tabs--stacked{--v-tabs-height: 68px}.v-tabs--density-compact{--v-tabs-height: 36px}.v-tabs--density-compact.v-tabs--stacked{--v-tabs-height: 60px}.v-tabs.v-slide-group--vertical{height:auto;flex:none;--v-tabs-height: 48px}.v-tabs--align-tabs-title:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:42px}.v-tabs--fixed-tabs .v-slide-group__content>*:last-child,.v-tabs--align-tabs-center .v-slide-group__content>*:last-child{margin-inline-end:auto}.v-tabs--fixed-tabs .v-slide-group__content>*:first-child,.v-tabs--align-tabs-center .v-slide-group__content>*:first-child{margin-inline-start:auto}.v-tabs--grow{flex-grow:1}.v-tabs--grow .v-tab{flex:1 0 auto;max-width:none}.v-tabs--align-tabs-end .v-tab:first-child{margin-inline-start:auto}.v-tabs--align-tabs-end .v-tab:last-child{margin-inline-end:0}@media (max-width: 1279.98px){.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:52px}.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:last-child{margin-inline-end:52px}}#adminContainer[data-v-0605704c]{padding-bottom:env(safe-area-inset-bottom)}#announcement[data-v-0605704c]{position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}
@@ -1 +0,0 @@
1
- .invisible[data-v-15c77dc3]{visibility:hidden}#titleBar[data-v-15c77dc3]{top:0;width:100%;padding-top:env(safe-area-inset-top);padding-right:calc(env(safe-area-inset-right)/2);padding-left:calc(48px + env(safe-area-inset-left)/2);z-index:10}.drawerMargin[data-v-15c77dc3]{width:calc(100% - 256px)!important}#tabs[data-v-03b1c9e5]{position:fixed;width:100%;top:48px;z-index:10;background-color:rgb(var(--v-theme-surface))}[data-v-03b1c9e5] .tabHeader{padding:10px}#tabItems[data-v-03b1c9e5]{margin-top:96px;padding-top:15px;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.tabItemContainer[data-v-03b1c9e5]{margin-left:auto;margin-right:auto;padding-left:10px;padding-right:10px}#noLibraries[data-v-03b1c9e5]{text-align:center;padding:1em}.rightMargin[data-v-03b1c9e5]{width:calc(100% - 256px)!important}[data-v-03b1c9e5] .adminTable{max-width:100vw}[data-v-03b1c9e5] .adminTable thead>tr>th{background-color:rgb(var(--v-theme-background))!important}[data-v-03b1c9e5] .adminNoData{padding:1em;text-align:center}.v-tab.v-tab.v-btn{height:var(--v-tabs-height);border-radius:0;min-width:90px}.v-slide-group--horizontal .v-tab{max-width:360px}.v-slide-group--vertical .v-tab{justify-content:start}.v-tab__slider{position:absolute;bottom:0;left:0;height:2px;width:100%;background:currentColor;pointer-events:none;opacity:0}.v-tab--selected .v-tab__slider{opacity:1}.v-slide-group--vertical .v-tab__slider{top:0;height:100%;width:2px}.v-tabs{display:flex;height:var(--v-tabs-height)}.v-tabs--density-default{--v-tabs-height: 48px}.v-tabs--density-default.v-tabs--stacked{--v-tabs-height: 72px}.v-tabs--density-comfortable{--v-tabs-height: 44px}.v-tabs--density-comfortable.v-tabs--stacked{--v-tabs-height: 68px}.v-tabs--density-compact{--v-tabs-height: 36px}.v-tabs--density-compact.v-tabs--stacked{--v-tabs-height: 60px}.v-tabs.v-slide-group--vertical{height:auto;flex:none;--v-tabs-height: 48px}.v-tabs--align-tabs-title:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:42px}.v-tabs--fixed-tabs .v-slide-group__content>*:last-child,.v-tabs--align-tabs-center .v-slide-group__content>*:last-child{margin-inline-end:auto}.v-tabs--fixed-tabs .v-slide-group__content>*:first-child,.v-tabs--align-tabs-center .v-slide-group__content>*:first-child{margin-inline-start:auto}.v-tabs--grow{flex-grow:1}.v-tabs--grow .v-tab{flex:1 0 auto;max-width:none}.v-tabs--align-tabs-end .v-tab:first-child{margin-inline-start:auto}.v-tabs--align-tabs-end .v-tab:last-child{margin-inline-end:0}@media (max-width: 1279.98px){.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:52px}.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:last-child{margin-inline-end:52px}}#adminContainer[data-v-0605704c]{padding-bottom:env(safe-area-inset-bottom)}#announcement[data-v-0605704c]{position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}