codex 1.4.0a0__py3-none-any.whl → 1.4.1__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 (279) hide show
  1. codex/config_default.yaml +12 -4
  2. codex/db_functions.py +4 -2
  3. codex/integrity.py +17 -6
  4. codex/librarian/covers/coverd.py +3 -11
  5. codex/librarian/covers/create.py +15 -21
  6. codex/librarian/covers/tasks.py +2 -16
  7. codex/librarian/importer/aggregate_metadata.py +75 -41
  8. codex/librarian/importer/clean_metadata.py +30 -7
  9. codex/librarian/importer/create_fks.py +154 -55
  10. codex/librarian/importer/deleted.py +11 -2
  11. codex/librarian/importer/failed_imports.py +44 -5
  12. codex/librarian/importer/importerd.py +37 -12
  13. codex/librarian/importer/link_comics.py +54 -31
  14. codex/librarian/importer/moved.py +55 -11
  15. codex/librarian/importer/query_fks.py +210 -48
  16. codex/librarian/importer/tasks.py +7 -7
  17. codex/librarian/janitor/cleanup.py +17 -5
  18. codex/librarian/librariand.py +10 -0
  19. codex/librarian/watchdog/events.py +11 -14
  20. codex/librarian/watchdog/observers.py +5 -1
  21. codex/logger/loggerd.py +7 -3
  22. codex/logger/logging.py +1 -1
  23. codex/migrations/0024_comic_gtin_comic_story_arc_number.py +24 -0
  24. codex/migrations/0025_add_story_arc_number.py +83 -0
  25. codex/models.py +21 -11
  26. codex/search/backend.py +1 -1
  27. codex/search/indexes.py +1 -1
  28. codex/serializers/browser.py +1 -0
  29. codex/serializers/metadata.py +5 -1
  30. codex/serializers/models.py +16 -1
  31. codex/serializers/opds/v1.py +1 -0
  32. codex/serializers/opds/v2.py +5 -2
  33. codex/serializers/reader.py +55 -16
  34. codex/settings/settings.py +1 -1
  35. codex/static_root/assets/admin-12749881.ef0f50bac290.js +41 -0
  36. codex/static_root/assets/admin-12749881.ef0f50bac290.js.br +0 -0
  37. codex/static_root/assets/admin-12749881.ef0f50bac290.js.gz +0 -0
  38. codex/static_root/assets/admin-12749881.js +41 -0
  39. codex/static_root/assets/admin-12749881.js.br +0 -0
  40. codex/static_root/assets/admin-12749881.js.gz +0 -0
  41. codex/static_root/assets/admin-beda768d.a614eee46307.css +1 -0
  42. codex/static_root/assets/admin-beda768d.a614eee46307.css.br +0 -0
  43. codex/static_root/assets/admin-beda768d.a614eee46307.css.gz +0 -0
  44. codex/static_root/assets/admin-beda768d.css +1 -0
  45. codex/static_root/assets/admin-beda768d.css.br +0 -0
  46. codex/static_root/assets/admin-beda768d.css.gz +0 -0
  47. codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css +1 -0
  48. codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.br +0 -0
  49. codex/static_root/assets/admin-drawer-panel-41c225cc.3f84583b435b.css.gz +0 -0
  50. codex/static_root/assets/admin-drawer-panel-41c225cc.css +1 -0
  51. codex/static_root/assets/admin-drawer-panel-41c225cc.css.br +0 -0
  52. codex/static_root/assets/admin-drawer-panel-41c225cc.css.gz +0 -0
  53. codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js +1 -0
  54. codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js.br +0 -0
  55. codex/static_root/assets/admin-drawer-panel-522f1e6c.089d70878270.js.gz +0 -0
  56. codex/static_root/assets/admin-drawer-panel-522f1e6c.js +1 -0
  57. codex/static_root/assets/admin-drawer-panel-522f1e6c.js.br +0 -0
  58. codex/static_root/assets/admin-drawer-panel-522f1e6c.js.gz +0 -0
  59. codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css +1 -0
  60. codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css.br +0 -0
  61. codex/static_root/assets/browser-7f7d7134.0fe3749b0f2f.css.gz +0 -0
  62. codex/static_root/assets/browser-7f7d7134.css +1 -0
  63. codex/static_root/assets/browser-7f7d7134.css.br +0 -0
  64. codex/static_root/assets/browser-7f7d7134.css.gz +0 -0
  65. codex/static_root/assets/browser-af622672.d51aca96d64d.js +1 -0
  66. codex/static_root/assets/browser-af622672.d51aca96d64d.js.br +0 -0
  67. codex/static_root/assets/browser-af622672.d51aca96d64d.js.gz +0 -0
  68. codex/static_root/assets/browser-af622672.js +1 -0
  69. codex/static_root/assets/browser-af622672.js.br +0 -0
  70. codex/static_root/assets/browser-af622672.js.gz +0 -0
  71. codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js +1 -0
  72. codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js.br +0 -0
  73. codex/static_root/assets/http-error-5e17b794.77ceeb2d4641.js.gz +0 -0
  74. codex/static_root/assets/http-error-5e17b794.js +1 -0
  75. codex/static_root/assets/http-error-5e17b794.js.br +0 -0
  76. codex/static_root/assets/http-error-5e17b794.js.gz +0 -0
  77. codex/static_root/assets/{main-a6ac9581.2fd9e52cbcc3.css → main-0898f4bb.181e0145c642.css} +1 -1
  78. codex/static_root/assets/main-0898f4bb.181e0145c642.css.br +0 -0
  79. codex/static_root/assets/{main-a6ac9581.2fd9e52cbcc3.css.gz → main-0898f4bb.181e0145c642.css.gz} +0 -0
  80. codex/static_root/assets/{main-a6ac9581.css → main-0898f4bb.css} +1 -1
  81. codex/static_root/assets/main-0898f4bb.css.br +0 -0
  82. codex/static_root/assets/{main-a6ac9581.css.gz → main-0898f4bb.css.gz} +0 -0
  83. codex/static_root/assets/main-9e76a4c3.6844a407d14c.js +1 -0
  84. codex/static_root/assets/main-9e76a4c3.6844a407d14c.js.br +0 -0
  85. codex/static_root/assets/main-9e76a4c3.6844a407d14c.js.gz +0 -0
  86. codex/static_root/assets/main-9e76a4c3.js +1 -0
  87. codex/static_root/assets/main-9e76a4c3.js.br +0 -0
  88. codex/static_root/assets/main-9e76a4c3.js.gz +0 -0
  89. codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js +1 -0
  90. codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js.br +0 -0
  91. codex/static_root/assets/metadata-dialog-62c29ce0.8418785c0453.js.gz +0 -0
  92. codex/static_root/assets/metadata-dialog-62c29ce0.js +1 -0
  93. codex/static_root/assets/metadata-dialog-62c29ce0.js.br +0 -0
  94. codex/static_root/assets/metadata-dialog-62c29ce0.js.gz +0 -0
  95. codex/static_root/assets/{metadata-dialog-785c4cfc.694a251cda37.css → metadata-dialog-cb306ffd.cc304996d7bb.css} +1 -1
  96. codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.br +0 -0
  97. codex/static_root/assets/metadata-dialog-cb306ffd.cc304996d7bb.css.gz +0 -0
  98. codex/static_root/assets/{metadata-dialog-785c4cfc.css → metadata-dialog-cb306ffd.css} +1 -1
  99. codex/static_root/assets/metadata-dialog-cb306ffd.css.br +0 -0
  100. codex/static_root/assets/metadata-dialog-cb306ffd.css.gz +0 -0
  101. codex/static_root/assets/{page-pdf-abfd509d.3870dab8eaf4.js → page-pdf-157ba97e.613d7c2beb77.js} +61 -51
  102. codex/static_root/assets/page-pdf-157ba97e.613d7c2beb77.js.br +0 -0
  103. codex/static_root/assets/page-pdf-157ba97e.613d7c2beb77.js.gz +0 -0
  104. codex/static_root/assets/{page-pdf-abfd509d.js → page-pdf-157ba97e.js} +61 -51
  105. codex/static_root/assets/page-pdf-157ba97e.js.br +0 -0
  106. codex/static_root/assets/page-pdf-157ba97e.js.gz +0 -0
  107. codex/static_root/assets/reader-36266549.0b2cf1291f27.js +1 -0
  108. codex/static_root/assets/reader-36266549.0b2cf1291f27.js.br +0 -0
  109. codex/static_root/assets/reader-36266549.0b2cf1291f27.js.gz +0 -0
  110. codex/static_root/assets/reader-36266549.js +1 -0
  111. codex/static_root/assets/reader-36266549.js.br +0 -0
  112. codex/static_root/assets/reader-36266549.js.gz +0 -0
  113. codex/static_root/assets/reader-7f004141.506eecc6954b.css +1 -0
  114. codex/static_root/assets/reader-7f004141.506eecc6954b.css.br +0 -0
  115. codex/static_root/assets/reader-7f004141.506eecc6954b.css.gz +0 -0
  116. codex/static_root/assets/reader-7f004141.css +1 -0
  117. codex/static_root/assets/reader-7f004141.css.br +0 -0
  118. codex/static_root/assets/reader-7f004141.css.gz +0 -0
  119. codex/static_root/js/choices-admin.24cecf0a0568.json +1 -0
  120. codex/static_root/js/choices-admin.24cecf0a0568.json.br +0 -0
  121. codex/static_root/js/choices-admin.24cecf0a0568.json.gz +0 -0
  122. codex/static_root/js/choices-admin.json +1 -1
  123. codex/static_root/js/choices-admin.json.br +0 -0
  124. codex/static_root/js/choices-admin.json.gz +0 -0
  125. codex/static_root/js/choices.8c58714cf5b2.json +1 -0
  126. codex/static_root/js/choices.8c58714cf5b2.json.br +5 -0
  127. codex/static_root/js/choices.8c58714cf5b2.json.gz +0 -0
  128. codex/static_root/js/choices.json +1 -1
  129. codex/static_root/js/choices.json.br +0 -0
  130. codex/static_root/js/choices.json.gz +0 -0
  131. codex/static_root/{manifest.64a989215af8.json → manifest.d2f93a519ada.json} +34 -34
  132. codex/static_root/manifest.d2f93a519ada.json.br +0 -0
  133. codex/static_root/manifest.d2f93a519ada.json.gz +0 -0
  134. codex/static_root/manifest.json +34 -34
  135. codex/static_root/manifest.json.br +0 -0
  136. codex/static_root/manifest.json.gz +0 -0
  137. codex/static_root/staticfiles.json +1 -1
  138. codex/templates/headers-script-globals.html +1 -1
  139. codex/templates/{opds → opds_v1}/index.xml +3 -1
  140. codex/templates/{opds/opensearch.xml → opds_v1/opensearch_v1.xml} +1 -1
  141. codex/templates/search/indexes/codex/comic_text.txt +2 -2
  142. codex/urls/converters.py +1 -1
  143. codex/urls/opds/authentication.py +1 -1
  144. codex/urls/opds/root.py +8 -12
  145. codex/urls/opds/v1.py +12 -5
  146. codex/urls/opds/v2.py +2 -2
  147. codex/views/admin/tasks.py +6 -1
  148. codex/views/bookmark.py +2 -2
  149. codex/views/browser/base.py +23 -7
  150. codex/views/browser/browser.py +66 -56
  151. codex/views/browser/browser_annotations.py +159 -50
  152. codex/views/browser/browser_order_by.py +51 -105
  153. codex/views/browser/choices.py +75 -38
  154. codex/views/browser/filters/bookmark.py +6 -9
  155. codex/views/browser/filters/field.py +9 -6
  156. codex/views/browser/filters/group.py +12 -27
  157. codex/views/browser/filters/search.py +5 -10
  158. codex/views/browser/metadata.py +44 -19
  159. codex/views/download.py +1 -1
  160. codex/views/frontend.py +2 -3
  161. codex/views/mixins.py +15 -2
  162. codex/views/opds/const.py +8 -1
  163. codex/views/opds/util.py +37 -1
  164. codex/views/opds/v1/__init__.py +1 -1
  165. codex/views/opds/v1/data.py +21 -0
  166. codex/views/opds/v1/entry/__init__.py +1 -0
  167. codex/views/opds/v1/entry/data.py +23 -0
  168. codex/views/opds/v1/entry/entry.py +151 -0
  169. codex/views/opds/v1/entry/links.py +135 -0
  170. codex/views/opds/v1/facets.py +190 -0
  171. codex/views/opds/v1/feed.py +199 -0
  172. codex/views/opds/v1/links.py +198 -0
  173. codex/views/opds/{opensearch.py → v1/opensearch_v1.py} +3 -3
  174. codex/views/opds/v2/__init__.py +1 -1
  175. codex/views/opds/v2/const.py +10 -2
  176. codex/views/opds/v2/feed.py +82 -21
  177. codex/views/opds/v2/links.py +1 -1
  178. codex/views/opds/v2/publications.py +1 -1
  179. codex/views/opds/v2/top_links.py +1 -1
  180. codex/views/reader/page.py +6 -7
  181. codex/views/reader/reader.py +191 -61
  182. codex/views/session.py +2 -1
  183. {codex-1.4.0a0.dist-info → codex-1.4.1.dist-info}/METADATA +10 -41
  184. {codex-1.4.0a0.dist-info → codex-1.4.1.dist-info}/RECORD +187 -185
  185. codex/librarian/importer/db_ops.py +0 -248
  186. codex/pdf.py +0 -115
  187. codex/static_root/assets/admin-73d93dc7.2c3eb62e50a0.js +0 -48
  188. codex/static_root/assets/admin-73d93dc7.2c3eb62e50a0.js.br +0 -0
  189. codex/static_root/assets/admin-73d93dc7.2c3eb62e50a0.js.gz +0 -0
  190. codex/static_root/assets/admin-73d93dc7.js +0 -48
  191. codex/static_root/assets/admin-73d93dc7.js.br +0 -0
  192. codex/static_root/assets/admin-73d93dc7.js.gz +0 -0
  193. codex/static_root/assets/admin-79555229.5f2c4cb3a73c.css +0 -1
  194. codex/static_root/assets/admin-79555229.5f2c4cb3a73c.css.br +0 -0
  195. codex/static_root/assets/admin-79555229.5f2c4cb3a73c.css.gz +0 -0
  196. codex/static_root/assets/admin-79555229.css +0 -1
  197. codex/static_root/assets/admin-79555229.css.br +0 -0
  198. codex/static_root/assets/admin-79555229.css.gz +0 -0
  199. codex/static_root/assets/admin-drawer-panel-64bcc083.a85324c9ccd8.js +0 -1
  200. codex/static_root/assets/admin-drawer-panel-64bcc083.a85324c9ccd8.js.br +0 -0
  201. codex/static_root/assets/admin-drawer-panel-64bcc083.a85324c9ccd8.js.gz +0 -0
  202. codex/static_root/assets/admin-drawer-panel-64bcc083.js +0 -1
  203. codex/static_root/assets/admin-drawer-panel-64bcc083.js.br +0 -0
  204. codex/static_root/assets/admin-drawer-panel-64bcc083.js.gz +0 -0
  205. codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css +0 -1
  206. codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css.br +0 -2
  207. codex/static_root/assets/admin-drawer-panel-cce8c0aa.2c0814fa2a9b.css.gz +0 -0
  208. codex/static_root/assets/admin-drawer-panel-cce8c0aa.css +0 -1
  209. codex/static_root/assets/admin-drawer-panel-cce8c0aa.css.br +0 -2
  210. codex/static_root/assets/admin-drawer-panel-cce8c0aa.css.gz +0 -0
  211. codex/static_root/assets/browser-7325db61.css +0 -1
  212. codex/static_root/assets/browser-7325db61.css.br +0 -0
  213. codex/static_root/assets/browser-7325db61.css.gz +0 -0
  214. codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css +0 -1
  215. codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css.br +0 -0
  216. codex/static_root/assets/browser-7325db61.ed2cfbf8e8ee.css.gz +0 -0
  217. codex/static_root/assets/browser-d2caeed7.2262000a6d55.js +0 -1
  218. codex/static_root/assets/browser-d2caeed7.2262000a6d55.js.br +0 -0
  219. codex/static_root/assets/browser-d2caeed7.2262000a6d55.js.gz +0 -0
  220. codex/static_root/assets/browser-d2caeed7.js +0 -1
  221. codex/static_root/assets/browser-d2caeed7.js.br +0 -0
  222. codex/static_root/assets/browser-d2caeed7.js.gz +0 -0
  223. codex/static_root/assets/http-error-0221c37d.480d5066da92.js +0 -1
  224. codex/static_root/assets/http-error-0221c37d.480d5066da92.js.br +0 -0
  225. codex/static_root/assets/http-error-0221c37d.480d5066da92.js.gz +0 -0
  226. codex/static_root/assets/http-error-0221c37d.js +0 -1
  227. codex/static_root/assets/http-error-0221c37d.js.br +0 -0
  228. codex/static_root/assets/http-error-0221c37d.js.gz +0 -0
  229. codex/static_root/assets/main-a6ac9581.2fd9e52cbcc3.css.br +0 -0
  230. codex/static_root/assets/main-a6ac9581.css.br +0 -0
  231. codex/static_root/assets/main-e33dcfb0.a65044fc1a08.js +0 -1
  232. codex/static_root/assets/main-e33dcfb0.a65044fc1a08.js.br +0 -0
  233. codex/static_root/assets/main-e33dcfb0.a65044fc1a08.js.gz +0 -0
  234. codex/static_root/assets/main-e33dcfb0.js +0 -1
  235. codex/static_root/assets/main-e33dcfb0.js.br +0 -0
  236. codex/static_root/assets/main-e33dcfb0.js.gz +0 -0
  237. codex/static_root/assets/metadata-dialog-785c4cfc.694a251cda37.css.br +0 -0
  238. codex/static_root/assets/metadata-dialog-785c4cfc.694a251cda37.css.gz +0 -0
  239. codex/static_root/assets/metadata-dialog-785c4cfc.css.br +0 -0
  240. codex/static_root/assets/metadata-dialog-785c4cfc.css.gz +0 -0
  241. codex/static_root/assets/metadata-dialog-8b0e8aaa.d12b42b1c9da.js +0 -1
  242. codex/static_root/assets/metadata-dialog-8b0e8aaa.d12b42b1c9da.js.br +0 -0
  243. codex/static_root/assets/metadata-dialog-8b0e8aaa.d12b42b1c9da.js.gz +0 -0
  244. codex/static_root/assets/metadata-dialog-8b0e8aaa.js +0 -1
  245. codex/static_root/assets/metadata-dialog-8b0e8aaa.js.br +0 -0
  246. codex/static_root/assets/metadata-dialog-8b0e8aaa.js.gz +0 -0
  247. codex/static_root/assets/page-pdf-abfd509d.3870dab8eaf4.js.br +0 -0
  248. codex/static_root/assets/page-pdf-abfd509d.3870dab8eaf4.js.gz +0 -0
  249. codex/static_root/assets/page-pdf-abfd509d.js.br +0 -0
  250. codex/static_root/assets/page-pdf-abfd509d.js.gz +0 -0
  251. codex/static_root/assets/reader-a8b8f766.875abdd0d22e.css +0 -1
  252. codex/static_root/assets/reader-a8b8f766.875abdd0d22e.css.br +0 -0
  253. codex/static_root/assets/reader-a8b8f766.875abdd0d22e.css.gz +0 -0
  254. codex/static_root/assets/reader-a8b8f766.css +0 -1
  255. codex/static_root/assets/reader-a8b8f766.css.br +0 -0
  256. codex/static_root/assets/reader-a8b8f766.css.gz +0 -0
  257. codex/static_root/assets/reader-fe9345d2.759c31f82998.js +0 -1
  258. codex/static_root/assets/reader-fe9345d2.759c31f82998.js.br +0 -0
  259. codex/static_root/assets/reader-fe9345d2.759c31f82998.js.gz +0 -0
  260. codex/static_root/assets/reader-fe9345d2.js +0 -1
  261. codex/static_root/assets/reader-fe9345d2.js.br +0 -0
  262. codex/static_root/assets/reader-fe9345d2.js.gz +0 -0
  263. codex/static_root/js/choices-admin.3d958ea7f83b.json +0 -1
  264. codex/static_root/js/choices-admin.3d958ea7f83b.json.br +0 -0
  265. codex/static_root/js/choices-admin.3d958ea7f83b.json.gz +0 -0
  266. codex/static_root/js/choices.6bfc2a3d293f.json +0 -1
  267. codex/static_root/js/choices.6bfc2a3d293f.json.br +0 -0
  268. codex/static_root/js/choices.6bfc2a3d293f.json.gz +0 -0
  269. codex/static_root/manifest.64a989215af8.json.br +0 -0
  270. codex/static_root/manifest.64a989215af8.json.gz +0 -0
  271. codex/urls/opds/opensearch.py +0 -18
  272. codex/views/opds/v1/browser.py +0 -346
  273. codex/views/opds/v1/entry.py +0 -278
  274. codex/views/opds/v1/start.py +0 -28
  275. codex/views/opds/v1/util.py +0 -162
  276. codex/views/opds/v2/start.py +0 -28
  277. {codex-1.4.0a0.dist-info → codex-1.4.1.dist-info}/LICENSE +0 -0
  278. {codex-1.4.0a0.dist-info → codex-1.4.1.dist-info}/WHEEL +0 -0
  279. {codex-1.4.0a0.dist-info → codex-1.4.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1 @@
1
+ import{_ as A,m as B,a as k,u as m,b as v,s as L,N,c as y,o as a,d as o,e as p,V,f as u,g as n,w as r,h as C,F as T,r as w,i as g,j as d,t as c,k as O,l as h,n as S,p as P,q as M,v as F,x,y as E,z as $,A as j,B as z,C as D,D as b,E as R}from"./admin-12749881.js";const U={name:"AdminStatusList",components:{CloseButton:A},data(){return{mdiCloseCircleOutline:B}},computed:{...k(m,{librarianStatuses:e=>e.librarianStatuses,show:e=>e.librarianStatuses.length>0})},created(){this.load()},methods:{...v(m,["loadTable","librarianTask"]),showComplete:e=>Number.isInteger(e.complete),indeterminate:e=>!e.preactive&&(!e.total||!Number.isInteger(e.complete)),progress(e){return e.preactive||self.indeterminate?0:100*+e.complete/+e.total},load(){this.loadTable("LibrarianStatus")},clear(){this.librarianTask("librarian_clear_status","")},title(e){return L[e.statusType]},nf(e){return Number.isInteger(e)?N.format(e):"?"}}},q=e=>(P("data-v-af1a8109"),e=e(),M(),e),G={key:0},H=q(()=>g("h4",null,"Librarian Tasks",-1)),J={nav:"",class:"statusItem"},K={class:"statusItemTitle"},Q={key:0,class:"statusItemSubtitle"},W={key:1,class:"statusItemSubtitle"},X={key:0};function Y(e,l,i,I,_,t){const f=A;return a(),o(T,null,[e.show?(a(),p(V,{key:0})):u("",!0),n(S,{onClick:t.load},{default:r(()=>[n(C,null,{default:r(()=>[e.show?(a(),o("div",G,[n(f,{id:"clearButton",title:"Clear Librarian Statuses",size:"small",onClick:t.clear},null,8,["onClick"]),H,(a(!0),o(T,null,w(e.librarianStatuses,s=>(a(),p(C,{key:s.statusType},{default:r(()=>[g("div",J,[g("div",K,[d(c(t.title(s))+" ",1),s.subtitle?(a(),o("div",Q,c(s.subtitle),1)):u("",!0),t.showComplete(s)||Number.isInteger(s.total)?(a(),o("div",W,[t.showComplete(s)?(a(),o("span",X,c(t.nf(s.complete))+" / ",1)):u("",!0),d(" "+c(t.nf(s.total)),1)])):u("",!0)]),n(O,{indeterminate:t.indeterminate(s),"model-value":t.progress(s),bottom:""},null,8,["indeterminate","model-value"])])]),_:2},1024))),128))])):(a(),p(h,{key:1,id:"noTasksRunning"},{default:r(()=>[d(" No librarian tasks running ")]),_:1}))]),_:1})]),_:1},8,["onClick"])],64)}const Z=y(U,[["render",Y],["__scopeId","data-v-af1a8109"]]);const ee={name:"AdminMenu",components:{AdminStatusList:Z},props:{menu:{type:Boolean,default:!0}},data(){return{mdiBookAlert:F,mdiOpenInNew:x,mdiDatabaseClockOutline:E,mdiCogOutline:$}},computed:{...j(z,["isUserAdmin"]),...k(m,["unseenFailedImports"])},methods:{...v(m,["clearFailedImports","librarianTask"])}},te={key:0},ae={key:0};function se(e,l,i,I,_,t){const f=D("AdminStatusList");return e.isUserAdmin?(a(),o("div",te,[n(S,{onClick:l[0]||(l[0]=s=>e.librarianTask("poll"))},{default:r(()=>[n(h,null,{default:r(()=>[n(b,null,{default:r(()=>[d(c(_.mdiDatabaseClockOutline),1)]),_:1}),d("Poll All Libraries")]),_:1})]),_:1}),i.menu?(a(),o("div",ae,[n(S,{to:{name:"admin"}},{default:r(()=>[n(h,null,{default:r(()=>[n(b,null,{default:r(()=>[d(c(_.mdiCogOutline),1)]),_:1}),d("Admin Panel "),e.unseenFailedImports?(a(),p(b,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:r(()=>[d(c(_.mdiBookAlert),1)]),_:1})):u("",!0)]),_:1})]),_:1})])):u("",!0),n(f)])):u("",!0)}const ne=y(ee,[["render",se],["__scopeId","data-v-f179af3f"]]),de=Object.freeze(Object.defineProperty({__proto__:null,default:ne},Symbol.toStringTag,{value:"Module"}));const re={name:"AdminSettingsButtonProgress",computed:{...k(m,["librarianStatuses"]),progressEnabled:function(){return this.librarianStatuses.length>0},progress:function(){let e=0,l=0;if(!(!this.librarianStatuses||this.librarianStatuses.length===0)){for(const i of this.librarianStatuses){if(i.total===null||i.total===void 0||i.complete===void 0)return;e+=+i.complete,l+=+i.total}if(!(l<=0))return 100*e/l}}},created(){this.loadTable("LibrarianStatus")},methods:{...v(m,["loadTable"])}};function ie(e,l,i,I,_,t){return t.progressEnabled?(a(),p(R,{key:0,indeterminate:t.progress==null,"model-value":t.progress,class:"progress",size:"36","aria-label":"`Librarian tasks in progress ${Math.round(progress)}%`"},null,8,["indeterminate","model-value"])):u("",!0)}const le=y(re,[["render",ie],["__scopeId","data-v-8db54809"]]),ue=Object.freeze(Object.defineProperty({__proto__:null,default:le},Symbol.toStringTag,{value:"Module"}));export{de as a,ue as b};
@@ -0,0 +1 @@
1
+ .flipHoriz[data-v-7b8e4ba4]{transform:scaleX(-1)}#titleToolbar[data-v-b5efed9f]{width:100vw;padding-left:10px;padding-right:10px}[data-v-b5efed9f] #upButton.v-btn{width:64px}[data-v-b5efed9f] .codexToolbarTitle{margin:auto;padding-top:4px;text-align:center;line-height:120%;text-overflow:clip}#titleToolbarPrefix[data-v-b5efed9f],#titleToolbarSuffix[data-v-b5efed9f]{color:rgb(var(--v-theme-textDisabled));font-size:smaller}@media (max-width: 959.98px){#titleToolbar[data-v-b5efed9f]{padding-left:5px;padding-right:5px}[data-v-b5efed9f] .codexToolbarTitle{font-size:1rem}}a[data-v-08501668],a>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-primary))!important}a[data-v-08501668]:hover,a:hover>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-textPrimary))!important}a.v-btn>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-textPrimary))}[data-v-08501668] .browserSearchHelp{overflow-y:auto!important}#searchHelp[data-v-08501668]{max-width:850px;padding:20px;margin:auto;color:rgb(var(--v-theme-textSecondary))}h1[data-v-08501668],h2[data-v-08501668],h3[data-v-08501668]{margin-top:.5em;color:rgb(var(--v-theme-textHeader))}h1[data-v-08501668]{padding-bottom:1em}.closeButton[data-v-08501668]{float:right}#fieldTableContainer[data-v-08501668]{float:left}#fieldTable[data-v-08501668]{width:fit-content;text-align:left;margin-bottom:1em;margin-right:2em;color:rgb(var(--v-theme-textSecondary))}#fieldTable th[data-v-08501668]{font-size:larger;font-weight:700;color:rgb(var(--v-theme-textHeader))}#fieldTable th[data-v-08501668],#fieldTable td[data-v-08501668]{padding:5px}code[data-v-08501668]{width:fit-content;background-color:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-textHeader))!important}#groupCaption[data-v-9312ed19],.browserGroupCheckbox[data-v-9312ed19]{padding-right:10px;padding-left:15px}#groupCaption[data-v-9312ed19]{padding-top:10px;color:rgb(var(--v-theme-textDisabled))}[data-v-3a4c9e75] .v-field-label{top:12px}[data-v-3a4c9e75] .v-label.v-field-label--floating{opacity:var(--v-disabled-opacity)!important}[data-v-3a4c9e75] .v-field:hover .v-label.v-field-label--floating,[data-v-3a4c9e75] .v-field--focused .v-label.v-field-label--floating{opacity:var(--v-medium-emphasis-opacity)!important}@media (max-width: 959.98px){[data-v-3a4c9e75] .v-field{--v-field-padding-start: 4px;--v-field-padding-end: 0px}[data-v-3a4c9e75] .v-field--appended{padding-inline-end:0px}[data-v-3a4c9e75] .v-icon{margin-left:0}}.filterMenu[data-v-c4219ce9]{line-height:24px!important}.nameChevron[data-v-c4219ce9]{float:right}.filterTitle[data-v-c4219ce9]{font-variant:small-caps;color:rbg(var(--v-theme-textDisabled));font-weight:700;font-size:1.6rem!important}.filterGroup[data-v-c4219ce9]{max-height:80vh}[data-v-c4219ce9] .noneItem .v-item-title{color:rbg(var(--v-theme-textDisabled))!important}.filterValuesProgress[data-v-c4219ce9]{margin:10px;width:88%}.noneItem[data-v-c4219ce9]{opacity:.5}[data-v-404ecbd3] .v-field-label{margin-left:8px}[data-v-404ecbd3] .v-field__input{padding-left:8px}.filterSuffix[data-v-404ecbd3]{margin-left:.25em}[data-v-404ecbd3] .v-field__clearable{margin-inline-start:0;margin-inline-end:0}.noChoices[data-v-404ecbd3]{color:rgb(var(--v-theme-textDisabled))}@media (max-width: 959.98px){[data-v-404ecbd3] .v-field-label{margin-left:0}[data-v-404ecbd3] .v-field__input{padding-left:0}[data-v-404ecbd3] .v-field__input{padding-left:4px}}.orderReverseButton[data-v-44032796]{border-radius:5px}[data-v-62496858] .v-field-label--floating{padding-left:calc(env(safe-area-inset-left) / 3)}#browserToolbar[data-v-cdef4956]{padding-top:env(safe-area-inset-top);padding-left:calc(10px + env(safe-area-inset-left)/4);padding-right:calc(10px + env(safe-area-inset-right)/4)}#browserToolbarLeftItems[data-v-cdef4956]{padding-top:4px}#searchToolbarItems[data-v-cdef4956]{width:100%}.emptyToolbar[data-v-cdef4956]{position:fixed}@media (max-width: 959.98px){#browserToolbar[data-v-cdef4956]{padding-left:calc(5px + env(safe-area-inset-left)/4);padding-right:calc(5px + env(safe-area-inset-right)/4)}}.orderCaption[data-v-abfb903c]{color:rgb(var(--v-theme-textDisabled));text-align:center}.cardControls[data-v-dc469596]{height:100%;width:100%;opacity:0}.eye[data-v-dc469596]{position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%);color:rgb(var(--v-theme-linkHover))}.cardControls:hover .eye[data-v-dc469596]{color:rgb(var(--v-theme-linkHover))}.cardControls:has(> .tagButton:hover) .eye[data-v-dc469596],.cardControls:has(> .browserCardMenuIcon:hover) .eye[data-v-dc469596]{color:rgb(var(--v-theme-textSecondary))}[data-v-dc469596] .cardControlButton{position:absolute!important;bottom:0px!important;color:rgb(var(--v-theme-textSecondary))!important}[data-v-dc469596] .tagButton{left:0px!important}[data-v-dc469596] .browserCardMenuIcon{right:0px!important}[data-v-dc469596] .cardControlButton:hover{color:rgb(var(--v-theme-linkHover))!important}.cardSubtitle[data-v-2485e87e]{width:100%;margin-top:10px;text-align:center}.headerName[data-v-2485e87e]{padding-top:5px;color:rgb(var(--v-theme-textDisabled))}.headerName[data-v-2485e87e],.displayName[data-v-2485e87e]{overflow-wrap:break-word}.displayName[data-v-2485e87e]{min-height:1em}.browserCardCoverWrapper[data-v-f9f9dd56]{position:relative;height:100%;display:flex;flex-direction:column;justify-content:space-between}.cardCoverOverlay[data-v-f9f9dd56]{position:absolute;top:0px;left:0px;height:254px;width:165px;border-radius:5px;border:solid thin transparent}.browserCardCoverWrapper:hover>.browserCardTop>.cardCoverOverlay[data-v-f9f9dd56]{background-color:#0000008c;border:solid thin;border-color:rbg(var(--v-theme-primary))}.browserCardCoverWrapper:hover>.browserCardTop>.cardCoverOverlay *[data-v-f9f9dd56]{opacity:1}.bookCoverProgress[data-v-f9f9dd56]{margin-top:1px}@media (max-width: 959.98px){.cardCoverOverlay[data-v-f9f9dd56]{height:154px;width:100px}}#browsePane[data-v-b023c894]{margin-top:160px;margin-left:max(32px,env(safe-area-inset-left));margin-right:max(32px,env(safe-area-inset-right));margin-bottom:max(32px,env(safe-area-inset-bottom));overflow:auto}#browsePaneContainer[data-v-b023c894]{margin-top:32px;display:grid;grid-template-columns:repeat(auto-fit,165px);grid-gap:32px;align-content:flex-start}#announce[data-v-b023c894]{text-align:center}#noComicsFound[data-v-b023c894]{font-size:x-large;padding:1em;color:rbg(var(--v-theme-textDisabled))}.padFooter[data-v-b023c894]{padding-bottom:45px!important}.placeholder[data-v-b023c894]{position:fixed;height:50vh!important;width:50vw!important;top:calc(50% + 75px);left:50%;transform:translate(-50%,-50%)}@media (max-width: 959.98px){#browsePane[data-v-b023c894]{margin-left:max(16px,env(safe-area-inset-left));margin-right:max(16px,env(safe-area-inset-right));margin-bottom:max(16px,env(safe-area-inset-bottom))}#browsePaneContainer[data-v-b023c894]{grid-template-columns:repeat(auto-fit,100px);grid-gap:16px;justify-content:space-evenly}#noComicsFound[data-v-b023c894]{font-size:large}}#browser[data-v-2b4da8f0]{display:flex;flex-direction:column;min-height:100vh}.codexToolbar[data-v-2b4da8f0]{z-index:100}
@@ -0,0 +1 @@
1
+ .flipHoriz[data-v-7b8e4ba4]{transform:scaleX(-1)}#titleToolbar[data-v-b5efed9f]{width:100vw;padding-left:10px;padding-right:10px}[data-v-b5efed9f] #upButton.v-btn{width:64px}[data-v-b5efed9f] .codexToolbarTitle{margin:auto;padding-top:4px;text-align:center;line-height:120%;text-overflow:clip}#titleToolbarPrefix[data-v-b5efed9f],#titleToolbarSuffix[data-v-b5efed9f]{color:rgb(var(--v-theme-textDisabled));font-size:smaller}@media (max-width: 959.98px){#titleToolbar[data-v-b5efed9f]{padding-left:5px;padding-right:5px}[data-v-b5efed9f] .codexToolbarTitle{font-size:1rem}}a[data-v-08501668],a>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-primary))!important}a[data-v-08501668]:hover,a:hover>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-textPrimary))!important}a.v-btn>.v-icon[data-v-08501668]{color:rgb(var(--v-theme-textPrimary))}[data-v-08501668] .browserSearchHelp{overflow-y:auto!important}#searchHelp[data-v-08501668]{max-width:850px;padding:20px;margin:auto;color:rgb(var(--v-theme-textSecondary))}h1[data-v-08501668],h2[data-v-08501668],h3[data-v-08501668]{margin-top:.5em;color:rgb(var(--v-theme-textHeader))}h1[data-v-08501668]{padding-bottom:1em}.closeButton[data-v-08501668]{float:right}#fieldTableContainer[data-v-08501668]{float:left}#fieldTable[data-v-08501668]{width:fit-content;text-align:left;margin-bottom:1em;margin-right:2em;color:rgb(var(--v-theme-textSecondary))}#fieldTable th[data-v-08501668]{font-size:larger;font-weight:700;color:rgb(var(--v-theme-textHeader))}#fieldTable th[data-v-08501668],#fieldTable td[data-v-08501668]{padding:5px}code[data-v-08501668]{width:fit-content;background-color:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-textHeader))!important}#groupCaption[data-v-9312ed19],.browserGroupCheckbox[data-v-9312ed19]{padding-right:10px;padding-left:15px}#groupCaption[data-v-9312ed19]{padding-top:10px;color:rgb(var(--v-theme-textDisabled))}[data-v-3a4c9e75] .v-field-label{top:12px}[data-v-3a4c9e75] .v-label.v-field-label--floating{opacity:var(--v-disabled-opacity)!important}[data-v-3a4c9e75] .v-field:hover .v-label.v-field-label--floating,[data-v-3a4c9e75] .v-field--focused .v-label.v-field-label--floating{opacity:var(--v-medium-emphasis-opacity)!important}@media (max-width: 959.98px){[data-v-3a4c9e75] .v-field{--v-field-padding-start: 4px;--v-field-padding-end: 0px}[data-v-3a4c9e75] .v-field--appended{padding-inline-end:0px}[data-v-3a4c9e75] .v-icon{margin-left:0}}.filterMenu[data-v-c4219ce9]{line-height:24px!important}.nameChevron[data-v-c4219ce9]{float:right}.filterTitle[data-v-c4219ce9]{font-variant:small-caps;color:rbg(var(--v-theme-textDisabled));font-weight:700;font-size:1.6rem!important}.filterGroup[data-v-c4219ce9]{max-height:80vh}[data-v-c4219ce9] .noneItem .v-item-title{color:rbg(var(--v-theme-textDisabled))!important}.filterValuesProgress[data-v-c4219ce9]{margin:10px;width:88%}.noneItem[data-v-c4219ce9]{opacity:.5}[data-v-404ecbd3] .v-field-label{margin-left:8px}[data-v-404ecbd3] .v-field__input{padding-left:8px}.filterSuffix[data-v-404ecbd3]{margin-left:.25em}[data-v-404ecbd3] .v-field__clearable{margin-inline-start:0;margin-inline-end:0}.noChoices[data-v-404ecbd3]{color:rgb(var(--v-theme-textDisabled))}@media (max-width: 959.98px){[data-v-404ecbd3] .v-field-label{margin-left:0}[data-v-404ecbd3] .v-field__input{padding-left:0}[data-v-404ecbd3] .v-field__input{padding-left:4px}}.orderReverseButton[data-v-44032796]{border-radius:5px}[data-v-62496858] .v-field-label--floating{padding-left:calc(env(safe-area-inset-left) / 3)}#browserToolbar[data-v-cdef4956]{padding-top:env(safe-area-inset-top);padding-left:calc(10px + env(safe-area-inset-left)/4);padding-right:calc(10px + env(safe-area-inset-right)/4)}#browserToolbarLeftItems[data-v-cdef4956]{padding-top:4px}#searchToolbarItems[data-v-cdef4956]{width:100%}.emptyToolbar[data-v-cdef4956]{position:fixed}@media (max-width: 959.98px){#browserToolbar[data-v-cdef4956]{padding-left:calc(5px + env(safe-area-inset-left)/4);padding-right:calc(5px + env(safe-area-inset-right)/4)}}.orderCaption[data-v-abfb903c]{color:rgb(var(--v-theme-textDisabled));text-align:center}.cardControls[data-v-dc469596]{height:100%;width:100%;opacity:0}.eye[data-v-dc469596]{position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%);color:rgb(var(--v-theme-linkHover))}.cardControls:hover .eye[data-v-dc469596]{color:rgb(var(--v-theme-linkHover))}.cardControls:has(> .tagButton:hover) .eye[data-v-dc469596],.cardControls:has(> .browserCardMenuIcon:hover) .eye[data-v-dc469596]{color:rgb(var(--v-theme-textSecondary))}[data-v-dc469596] .cardControlButton{position:absolute!important;bottom:0px!important;color:rgb(var(--v-theme-textSecondary))!important}[data-v-dc469596] .tagButton{left:0px!important}[data-v-dc469596] .browserCardMenuIcon{right:0px!important}[data-v-dc469596] .cardControlButton:hover{color:rgb(var(--v-theme-linkHover))!important}.cardSubtitle[data-v-2485e87e]{width:100%;margin-top:10px;text-align:center}.headerName[data-v-2485e87e]{padding-top:5px;color:rgb(var(--v-theme-textDisabled))}.headerName[data-v-2485e87e],.displayName[data-v-2485e87e]{overflow-wrap:break-word}.displayName[data-v-2485e87e]{min-height:1em}.browserCardCoverWrapper[data-v-f9f9dd56]{position:relative;height:100%;display:flex;flex-direction:column;justify-content:space-between}.cardCoverOverlay[data-v-f9f9dd56]{position:absolute;top:0px;left:0px;height:254px;width:165px;border-radius:5px;border:solid thin transparent}.browserCardCoverWrapper:hover>.browserCardTop>.cardCoverOverlay[data-v-f9f9dd56]{background-color:#0000008c;border:solid thin;border-color:rbg(var(--v-theme-primary))}.browserCardCoverWrapper:hover>.browserCardTop>.cardCoverOverlay *[data-v-f9f9dd56]{opacity:1}.bookCoverProgress[data-v-f9f9dd56]{margin-top:1px}@media (max-width: 959.98px){.cardCoverOverlay[data-v-f9f9dd56]{height:154px;width:100px}}#browsePane[data-v-b023c894]{margin-top:160px;margin-left:max(32px,env(safe-area-inset-left));margin-right:max(32px,env(safe-area-inset-right));margin-bottom:max(32px,env(safe-area-inset-bottom));overflow:auto}#browsePaneContainer[data-v-b023c894]{margin-top:32px;display:grid;grid-template-columns:repeat(auto-fit,165px);grid-gap:32px;align-content:flex-start}#announce[data-v-b023c894]{text-align:center}#noComicsFound[data-v-b023c894]{font-size:x-large;padding:1em;color:rbg(var(--v-theme-textDisabled))}.padFooter[data-v-b023c894]{padding-bottom:45px!important}.placeholder[data-v-b023c894]{position:fixed;height:50vh!important;width:50vw!important;top:calc(50% + 75px);left:50%;transform:translate(-50%,-50%)}@media (max-width: 959.98px){#browsePane[data-v-b023c894]{margin-left:max(16px,env(safe-area-inset-left));margin-right:max(16px,env(safe-area-inset-right));margin-bottom:max(16px,env(safe-area-inset-bottom))}#browsePaneContainer[data-v-b023c894]{grid-template-columns:repeat(auto-fit,100px);grid-gap:16px;justify-content:space-evenly}#noComicsFound[data-v-b023c894]{font-size:large}}#browser[data-v-2b4da8f0]{display:flex;flex-direction:column;min-height:100vh}.codexToolbar[data-v-2b4da8f0]{z-index:100}
@@ -0,0 +1 @@
1
+ import{aq as Z,a as w,L as p,c as y,o as i,e as _,w as d,g as l,j as r,t as f,ar as O,D as S,b as C,f as v,A as T,as as Se,at as Be,au as U,B as x,av as ee,d as g,i as o,aw as Ce,ax as te,p as D,q as L,_ as oe,x as se,ay as ke,l as R,az as Te,aA as Ve,n as V,r as F,F as M,aB as $e,aC as xe,aD as z,V as N,aE as Me,aF as Ie,aG as I,aH as Fe,aI as Pe,aJ as Re,aK as A,aL as Ne,aM as Oe,I as De,aN as Le,aO as He,aP as Ue,aQ as Ae,k as G,aR as Ge,aS as Ee,C as B,aT as qe,aU as je,aV as ne,aW as Y,aX as ze,aY as Ye,aZ as We,a_ as Qe,J as E,a$ as H,b0 as Ke,N as W,b1 as Xe,b2 as re,b3 as Je,b4 as Ze,b5 as et,b6 as Q,b7 as K,b8 as tt,b9 as ot,M as st,O as nt,ba as rt,bb as at,bc as it,R as lt,bd as ut,be as dt,bf as ct,W as mt,bg as ae,bh as _t,bi as pt,bj as ht,bk as ft,bl as ie,bm as le,bn as gt}from"./admin-12749881.js";import{_ as ue,a as de,b as ce,t as bt,p as yt,c as vt,d as me,g as wt,P as _e}from"./metadata-dialog-62c29ce0.js";const St={name:"BrowserNavButton",components:{PaginationNavButton:ue},props:{back:{type:Boolean,required:!0}},data(){return{mdiChevronLeft:Z}},computed:{...w(p,{numPages:e=>e.page.numPages}),increment(){return this.back?-1:1},toPage(){return+this.$route.params.page+this.increment},title(){return"to page"+this.toPage},toRoute(){return{params:{...this.$route.params,page:this.toPage}}},disabled(){return this.back&&+this.$route.params.page<=1||!this.back&&+this.$route.params.page>=this.numPages}}};function Bt(e,t,n,h,a,s){const u=ue;return i(),_(u,{disabled:s.disabled,title:s.title,to:s.toRoute},{default:d(()=>[l(S,{class:O({flipHoriz:!n.back})},{default:d(()=>[r(f(a.mdiChevronLeft),1)]),_:1},8,["class"])]),_:1},8,["disabled","title","to"])}const pe=y(St,[["render",Bt],["__scopeId","data-v-7b8e4ba4"]]),Ct={name:"BrowserNavToolbar",components:{BrowserNavButton:pe,PaginationSlider:de,PaginationToolbar:ce},computed:{...w(p,{numPages:e=>e.page.numPages})},methods:{...C(p,["routeToPage"]),onUpdate(e){this.routeToPage(e)}}};function kt(e,t,n,h,a,s){const u=pe,c=de,b=ce;return e.numPages>1?(i(),_(b,{key:0},{default:d(()=>[l(u,{back:!0}),l(c,{"model-value":+e.$route.params.page,min:1,max:e.numPages,step:1,"onUpdate:modelValue":t[0]||(t[0]=$=>e.routeToPage($))},null,8,["model-value","max"]),l(u,{back:!1})]),_:1})):v("",!0)}const he=y(Ct,[["render",kt]]),Tt=new Set(["a","f"]),Vt={name:"BrowserUpButton",props:{top:{type:Boolean,default:!1}},computed:{...T(p,["parentModelGroup"]),...w(p,{upRoute:e=>e.page.routes.up,title(e){const t=this.top?e.settings.topGroup:this.parentModelGroup;return`Up to ${e.choices.static.groupNames[t]||"All"}`}}),show(){return this.upRoute&&"group"in this.upRoute},icon(){return this.top?Se:Be},to(){let e;if(this.top){let t=this.upRoute.group;Tt.has(t)||(t="r"),e={group:t,pk:0,page:1}}else e=this.upRoute;return{params:e}}}};function $t(e,t,n,h,a,s){return s.show?(i(),_(U,{key:0,icon:"",size:"x-large",title:e.title,to:s.to,variant:"plain"},{default:d(()=>[l(S,null,{default:d(()=>[r(f(s.icon),1)]),_:1})]),_:1},8,["title","to"])):v("",!0)}const fe=y(Vt,[["render",$t]]);const xt={name:"BrowserHeader",components:{BrowserUpButton:fe},head(){return{meta:[{hid:"description",name:"description",content:["browse comics",this.longBrowserTitlePrefix,this.longBrowseTitleMain,this.longBrowseTitleSuffix].filter(Boolean).join(" ")}]}},computed:{...w(p,{groupNames:e=>e.choices.static.groupNames,browserTitle:e=>e.page.browserTitle,modelGroup:e=>e.page.modelGroup}),...T(x,["isCodexViewable","isUserAdmin"]),longBrowserTitlePrefix:function(){return this.$route.params.group==="f"?this.browserTitle.parentName:""},longBrowseTitleMain:function(){let e;if(Number(this.$route.params.pk)===0)e="All";else{let t=[];const{parentName:n,groupName:h,groupCount:a}=this.browserTitle;n&&t.push(n);const s=this.$route.params.group,u=s==="v"?ee(h):h;if(u&&t.push(u),a){const b=`of ${a}`;t.push(b)}const c=s==="f"?"/":" ";e=t.join(c)}return e},longBrowseTitleSuffix:function(){return this.$route.params.group==="f"?"":this.groupNames[this.modelGroup]}}},ge=e=>(D("data-v-b5efed9f"),e=e(),L(),e),Mt={key:0,id:"titleToolbarPrefix"},It=ge(()=>o("br",null,null,-1)),Ft={id:"titleToolbarMain"},Pt={key:1,id:"titleToolbarSuffix"},Rt=ge(()=>o("br",null,null,-1));function Nt(e,t,n,h,a,s){const u=fe;return e.isCodexViewable?(i(),_(te,{key:0,id:"titleToolbar",elevation:"8"},{default:d(()=>[l(u),l(Ce,{class:"codexToolbarTitle"},{default:d(()=>[s.longBrowserTitlePrefix?(i(),g("span",Mt,[r(f(s.longBrowserTitlePrefix)+" ",1),It])):v("",!0),o("span",Ft,f(s.longBrowseTitleMain),1),s.longBrowseTitleSuffix?(i(),g("span",Pt,[Rt,r(" "+f(s.longBrowseTitleSuffix),1)])):v("",!0)]),_:1}),l(u,{top:""})]),_:1})):v("",!0)}const be=y(xt,[["render",Nt],["__scopeId","data-v-b5efed9f"]]);const Ot=[["characters","CSV","category"],["community_rating","Decimal","communityrating"],["country","String",""],["created_at","DateTime","created"],["creators","CSV","authors, contributors"],["critical_rating","Decimal","criticalrating"],["day","Integer",""],["date","Date",""],["decade","Integer",""],["description","String",""],["file_type","String","format"],["genres","CSV","genre"],["imprint","String",""],["issue","Decimal",""],["language","String",""],["location[s]","CSV","location"],["maturity_rating","String",""],["month","Integer",""],["read_ltr","Boolean","ltr"],["name","String","title"],["notes","String",""],["original_format","String","format"],["page_count","Integer","pages"],["publisher","String",""],["scan_info","String","scan"],["series","String",""],["series_group[s]","CSV","seriesgroups"],["size","Integer",""],["story_arcs","CSV","storyarcs"],["summary","String",""],["tags","CSV","tag"],["teams","CSV","team"],["updated_at","Date","updated"],["volume","String",""],["web","String",""],["year","Integer",""]],Dt={name:"SearchHelp",components:{CloseButton:oe},data(){return{mdiOpenInNew:se,mdiArchiveSearchOutline:ke,dialog:!1,FIELD_ROWS:Ot}}},m=e=>(D("data-v-08501668"),e=e(),L(),e),Lt={id:"searchHelp"},Ht=m(()=>o("h1",null,"Search Syntax Help",-1)),Ut={id:"fieldTableContainer"},At=m(()=>o("h2",null,"Search Fields",-1)),Gt=m(()=>o("thead",null,[o("tr",null,[o("th",null,"Field"),o("th",null,"Type"),o("th",null,"Aliases")])],-1)),Et={id:"textContainer"},qt=m(()=>o("h2",null,"Whoosh Query Parser",-1)),jt={href:"https://whoosh.readthedocs.io/en/latest/querylang.html",target:"_blank"},zt=m(()=>o("h2",null,"Operators",-1)),Yt=m(()=>o("code",null,"and",-1)),Wt=m(()=>o("code",null,"or",-1)),Qt=m(()=>o("code",null,"not",-1)),Kt=m(()=>o("code",null,"andnot",-1)),Xt=m(()=>o("code",null,"andmaybe",-1)),Jt=m(()=>o("code",null,"require",-1)),Zt=m(()=>o("h2",null,"Searching Fields",-1)),eo=m(()=>o("p",null,[r(" Like Codex's filter selector menu, but more powerful. You may search on individual comic metadata fields. using a search token like "),o("code",null,"field:value"),r(". ")],-1)),to=m(()=>o("h3",null,"Dates and DateTimes",-1)),oo={href:"https://whoosh.readthedocs.io/en/latest/dates.html#parsing-date-queries",target:"_blank"},so=m(()=>o("code",null,"YYYYMMDD",-1)),no=m(()=>o("code",null,"YYYMMDDHHmmSS",-1)),ro=m(()=>o("h3",null,"Single Quote complex field Queries",-1)),ao=m(()=>o("p",null,[r(" Use "),o("em",null,"single"),r(" quotes to tell Codex that a complex or natural language phrase should be applied to a specific field ")],-1)),io=m(()=>o("code",null," created:'this year' ",-1)),lo=m(()=>o("h3",null,"Size Byte Multipliers",-1)),uo=m(()=>o("p",null,[r(" The size field can make use of convenient byte multiplier suffixes like "),o("code",null,"kb"),r(" and "),o("code",null,"mb"),r(" as well as binary suffixes like "),o("code",null,"gib"),r(" and "),o("code",null,"tib"),r(". ")],-1)),co=m(()=>o("h3",null,"Ranges of Fields",-1)),mo=m(()=>o("p",null,[r(" Whoosh uses brackets and the "),o("em",null,"uppercase"),r(" "),o("code",null,"TO"),r(" operator to delineate a range search. ")],-1)),_o=m(()=>o("code",null,"updated:[last sunday TO 10am]",-1)),po=m(()=>o("p",null," You may leave out the upper or lower bound or use >, <, >=, <= operators. ",-1)),ho=m(()=>o("code",null,"size:<50mb",-1)),fo=m(()=>o("h3",null,"Multi Value Fields",-1)),go=m(()=>o("p",null,[r(" Fields marked type "),o("code",null,"CSV"),r(" in the table to the left may contain comma separated values. This filters by all the supplied values. Multi Value tokens look like: "),o("code",null,"field:term1,term2,term3")],-1)),bo=m(()=>o("h2",null,"Grouped Queries",-1)),yo=m(()=>o("p",null,"Whoosh allows grouping of queries with parenthesis.",-1)),vo=m(()=>o("h2",null,"Example Search",-1)),wo=m(()=>o("p",null," This example search is more convoluted than most searches but uses many features for demonstration: ",-1)),So=m(()=>o("code",null,' (Holmes and Tesla date:>=1999-1-2 size:[10mib TO 1gb] Gadzooks) or "Captain Nemo" -Quartermain ',-1)),Bo=m(()=>o("p",{style:{"margin-top":"1em"}},' Search for comics that contain Holmes and Tesla published after the second day of 1999 that are between 10 Mebibytes and 10 Gigabytes that also contain the word "Gadzooks" but also all comics with the the phrase "Captain Nemo" but no comics will contain the word "Quartermain". ',-1)),Co=m(()=>o("h2",null,"Group and Sorting Behavior",-1)),ko=m(()=>o("p",null," If the search field is empty and then you supply a search query for the first time, Codex navigates you to the to All Issues view and your sets your Sorted By selection to Search Score. If you prefer a different view you may change the group and sort selections after your you make your first search. ",-1)),To=m(()=>o("h2",null,"Filter Behavior",-1)),Vo=m(()=>o("p",null,[r(" Codex applies "),o("em",null,"both"),r(" the Filter selection menu filters "),o("em",null,"and"),r(" the search query field filters to the search. Be sure to clear the filter selector or the search field if you prefer to apply only one of them. ")],-1));function $o(e,t,n,h,a,s){const u=oe;return i(),_(xe,{modelValue:a.dialog,"onUpdate:modelValue":t[2]||(t[2]=c=>a.dialog=c),"content-class":"browserSearchHelp",fullscreen:"",scrim:!1,transition:"dialog-bottom-transition"},{activator:d(({props:c})=>[l(V,Te(Ve(c)),{default:d(()=>[l(R,null,{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiArchiveSearchOutline),1)]),_:1}),r("Search Syntax Help ")]),_:1})]),_:2},1040)]),default:d(()=>[o("div",Lt,[l(u,{class:"closeButton",title:"Close Help (esc)",size:"x-large",onClick:t[0]||(t[0]=c=>a.dialog=!1)}),Ht,o("div",Ut,[At,l($e,{id:"fieldTable",class:"highlight-table"},{default:d(()=>[Gt,o("tbody",null,[(i(!0),g(M,null,F(a.FIELD_ROWS,c=>(i(),g("tr",{key:c[0]},[o("td",null,f(c[0]),1),o("td",null,f(c[1]),1),o("td",null,f(c[2]),1)]))),128))])]),_:1})]),o("div",Et,[qt,o("p",null,[r(" Codex uses the Whoosh search engine to execute your text search queries. Whoosh operates much like other familiar search engines. As such, only some special features are documented on this page. To understand its full power, users are encouraged to read the "),o("a",jt,[r("Whoosh Query Language "),l(S,{size:"small"},{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" documentation. ")]),zt,r(" Whoosh has the "),Yt,r(", "),Wt,r(", "),Qt,r(", "),Kt,r(", "),Xt,r(", and "),Jt,r(" operators. "),Zt,eo,to,o("p",null,[r(" Whoosh parses Dates and DateTime values liberally. Read "),o("a",oo,[r("Whoosh Parsing Date Queries "),l(S,{size:"small"},{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" documentation for what formats and natural language phrases are accepted. If the format you try fails, the "),so,r(" and "),no,r(" formats are reliable. ")]),ro,ao,io,lo,uo,co,mo,_o,r(". "),po,ho,r(". "),fo,go,bo,yo,vo,wo,So,Bo,Co,ko,To,Vo]),l(u,{class:"closeButton",title:"Close Help (esc)",size:"x-large",onClick:t[1]||(t[1]=c=>a.dialog=!1)})])]),_:1},8,["modelValue"])}const ye=y(Dt,[["render",$o],["__scopeId","data-v-08501668"]]);const xo={name:"BrowserSettingsPanel",components:{SearchHelp:ye},computed:{...T(x,["isCodexViewable"]),...w(p,{groupChoices:e=>e.choices.static.settingsGroup,twentyFourHourTimeTitle:e=>e.choices.static.twentyFourHourTime.title,showSettings:e=>e.settings.show,twentyFourHourTime:e=>e.settings.twentyFourHourTime})},methods:{...C(p,["setSettings"]),setShow(e,t){const n={show:{[e]:t===!0}};this.setSettings(n)},set24HourTime(e){const t={twentyFourHourTime:e===!0};this.setSettings(t)}}},Mo=e=>(D("data-v-9312ed19"),e=e(),L(),e),Io=Mo(()=>o("div",{id:"groupCaption",class:"text-caption"}," Show these groups when navigating the browse tree. ",-1));function Fo(e,t,n,h,a,s){const u=ye;return i(),g(M,null,[Io,(i(!0),g(M,null,F(e.groupChoices,c=>(i(),_(z,{key:c.title,class:"browserGroupCheckbox",density:"compact","hide-details":"auto","model-value":e.showSettings[c.value],"true-value":!0,label:`Show ${c.title}`,"onUpdate:modelValue":b=>s.setShow(c.value,b)},null,8,["model-value","label","onUpdate:modelValue"]))),128)),l(N),l(z,{class:"browserGroupCheckbox",density:"compact","hide-details":"auto","model-value":e.twentyFourHourTime,"true-value":!0,indeterminate:"",label:"Force 24 Hour Time","onUpdate:modelValue":t[0]||(t[0]=c=>s.set24HourTime(c))},null,8,["model-value"]),l(N),l(u)],64)}const Po=y(xo,[["render",Fo],["__scopeId","data-v-9312ed19"]]);const Ro={name:"ToolbarSelect",props:{selectLabel:{type:String,default:""},maxSelectLen:{type:Number,default:0},mobileLenAdj:{type:Number,default:0},variant:{type:String,default:"plain"}},computed:{style(){const e=this.$vuetify.display.smAndDown?this.mobileLenAdj:0,n=this.maxSelectLen+e+"em";return`width: ${n}; min-width: ${n}; max-width: ${n}`}}};function No(e,t,n,h,a,s){return i(),_(Fe,I(e.$attrs,{label:n.selectLabel,"aria-label":n.selectLabel,class:"toolbarSelect",density:"compact","full-width":"","menu-props":{maxHeight:void 0},"hide-details":"auto",style:s.style,variant:n.variant}),Me({_:2},[F(e.$slots,(u,c)=>({name:c,fn:d(b=>[Ie(e.$slots,c,I({props:u},b),void 0,!0)])}))]),1040,["label","aria-label","style","variant"])}const k=y(Ro,[["render",No],["__scopeId","data-v-3a4c9e75"]]);const Oo=De.browser.vuetifyNullCode,Do={name:"BrowserFilterSubMenu",props:{name:{type:String,required:!0}},emits:["selected"],data(){return{mdiChevronLeft:Z,mdiChevronRight:Pe,mdiChevronRightCircle:Re,query:"",nullCode:Oo}},computed:{...w(p,{choices:function(e){return e.choices.dynamic[this.name]},filter:function(e){return e.settings.filters[this.name]}}),...A(p,["filterMode"]),vuetifyItems(){return bt(this.choices,this.query,Oe.includes(this.name),Ne.includes(this.name))},title:function(){let e=this.name.replaceAll(/[A-Z]/g,t=>` ${t}`);return e=e.replace("Ltr","LTR"),e=e[0].toUpperCase()+e.slice(1),e},lowerTitle:function(){return this.title.toLowerCase()}},methods:{...C(p,["loadFilterChoices"]),setUIFilterMode(e){this.filterMode=e,this.query="",e!=="base"&&typeof this.choices!="object"&&this.loadFilterChoices(e)},selected(e){const t={filters:{[this.name]:e}};this.$emit("selected",t)}}},Lo={key:0},Ho={class:"filterHeader"};function Uo(e,t,n,h,a,s){return i(),g("div",null,[l(Le,{"hide-on-leave":""},{default:d(()=>[e.filterMode==="base"?(i(),_(V,{key:0,onClick:t[0]||(t[0]=u=>s.setUIFilterMode(n.name))},{default:d(()=>[l(R,{class:"filterMenu"},{default:d(()=>[r(f(s.title)+" ",1),e.filter&&e.filter.length>0?(i(),_(S,{key:0,class:"nameChevron"},{default:d(()=>[r(f(a.mdiChevronRightCircle),1)]),_:1})):(i(),_(S,{key:1,class:"nameChevron"},{default:d(()=>[r(f(a.mdiChevronRight),1)]),_:1}))]),_:1})]),_:1})):v("",!0)]),_:1}),l(Ae,{"hide-on-leave":""},{default:d(()=>[e.filterMode===n.name?(i(),g("div",Lo,[o("header",Ho,[l(V,{onClick:t[1]||(t[1]=u=>s.setUIFilterMode("base"))},{default:d(()=>[l(R,{class:"filterTitle"},{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiChevronLeft),1)]),_:1}),r(f(s.lowerTitle),1)]),_:1})]),_:1}),typeof e.choices=="object"?(i(),_(He,{key:0,modelValue:a.query,"onUpdate:modelValue":t[2]||(t[2]=u=>a.query=u),placeholder:"Filter","full-width":"",density:"compact",filled:"",rounded:"","hide-details":"auto",onFocus:t[3]||(t[3]=u=>e.filterMode=n.name)},null,8,["modelValue"])):(i(),_(G,{key:1,class:"filterValuesProgress",rounded:"",indeterminate:""}))]),typeof e.choices=="object"?(i(),_(Ue,{key:0,"model-value":e.filter,class:"filterGroup overflow-y-auto",density:"compact",multiple:"",items:s.vuetifyItems,"onUpdate:selected":s.selected},{default:d(()=>[(i(!0),g(M,null,F(s.vuetifyItems,u=>(i(),_(V,{key:u.pk,title:u.title,value:u.value,class:O({noneItem:+u.value==a.nullCode})},null,8,["title","value","class"]))),128))]),_:1},8,["model-value","items","onUpdate:selected"])):v("",!0)])):v("",!0)]),_:1})])}const Ao=y(Do,[["render",Uo],["__scopeId","data-v-c4219ce9"]]);const Go={name:"BrowserFilterBySelect",components:{BrowserFilterSubMenu:Ao,ToolbarSelect:k},extends:k,data(){return{mdiFilterMultipleOutline:Ge,menu:!1}},computed:{...T(p,["filterByChoicesMaxLen","isDefaultBookmarkValueSelected"]),...w(p,{bookmarkChoices:e=>e.choices.static.bookmark,bookmarkFilter:e=>e.settings.filters.bookmark||e.choices.static.bookmark[0],filters:e=>e.settings.filters,isDynamicFiltersSelected:function(e){for(const[t,n]of Object.entries(e.settings.filters))if(t!=="bookmark"&&n&&n.length>0)return!0;return!1},isFiltersClearable:function(){return!this.isDefaultBookmarkValueSelected||this.isDynamicFiltersSelected},filterMenuClass:function(e){let t="filterMenu";return e.filterMode!=="base"&&(t+="Hidden"),t},dynamicChoiceNames:function(e){if(e.choices.dynamic===void 0)return;const t=[];for(const[n,h]of Object.entries(e.choices.dynamic))h&&t.push(n);return t}}),...A(p,["filterMode"]),filterInnerIcon:function(){return this.isFiltersClearable?Ee:""}},methods:{...C(p,["clearFilters","loadAvailableFilterChoices","setSettings"]),onUpdateModelValue(e){const t={filters:{bookmark:e}};this.onSubMenuSelected(t)},onSubMenuSelected(e){this.menu=!1,this.setSettings(e),this.filterMode="base"},onClear(){this.clearFilters()},onMenu(e){e&&this.dynamicChoiceNames===void 0&&this.loadAvailableFilterChoices()}}},Eo={key:1};function qo(e,t,n,h,a,s){const u=B("BrowserFilterSubMenu"),c=k;return i(),_(c,{menu:a.menu,"onUpdate:menu":[t[0]||(t[0]=b=>a.menu=b),s.onMenu],class:"filterBySelect","select-label":"filter by",clearable:e.isFiltersClearable,items:e.bookmarkChoices,"menu-props":{contentClass:e.filterMenuClass,maxHeight:void 0},"model-value":e.bookmarkFilter,"max-select-len":e.filterByChoicesMaxLen+1.5,"mobile-len-adj":-1.5,variant:"solo","onClick:clear":s.onClear,"onUpdate:modelValue":s.onUpdateModelValue},{selection:d(({item:b})=>[r(f(b.title)+" ",1),e.isDynamicFiltersSelected?(i(),_(S,{key:0,class:"filterSuffix"},{default:d(()=>[r(f(a.mdiFilterMultipleOutline),1)]),_:1})):v("",!0)]),"append-item":d(()=>[l(N),e.dynamicChoiceNames===void 0?(i(),_(V,{key:0},{default:d(()=>[l(G,{indeterminate:"",rounded:""})]),_:1})):e.dynamicChoiceNames.length>0?(i(),g("div",Eo,[(i(!0),g(M,null,F(e.dynamicChoiceNames,b=>(i(),_(u,{key:b,name:b,onSelected:s.onSubMenuSelected},null,8,["name","onSelected"]))),128))])):(i(),_(V,{key:2,class:"noChoices"},{default:d(()=>[r(" No filters available ")]),_:1}))]),_:1},8,["menu","clearable","items","menu-props","model-value","max-select-len","onClick:clear","onUpdate:modelValue","onUpdate:menu"])}const jo=y(Go,[["render",qo],["__scopeId","data-v-404ecbd3"]]),zo={name:"BrowseOrderBySelect",components:{ToolbarSelect:k},extends:k,computed:{...T(p,["orderByChoices","orderByChoicesMaxLen"]),...w(p,{orderBySetting:e=>e.settings.orderBy}),reverseValues(){const e=new Set;for(const t of this.orderByChoices)t.reverse&&e.add(t.value);return e},orderBy:{get(){return this.orderBySetting},set(e){const t={orderBy:e,orderReverse:this.reverseValues.has(e)};this.setSettings(t)}}},methods:{...C(p,["setSettings"])}};function Yo(e,t,n,h,a,s){const u=k;return i(),_(u,I({modelValue:s.orderBy,"onUpdate:modelValue":t[0]||(t[0]=c=>s.orderBy=c),class:"orderBySelect","select-label":"order by",items:e.orderByChoices,"max-select-len":e.orderByChoicesMaxLen-3.5,"mobile-len-adj":-2},e.$attrs),null,16,["modelValue","items","max-select-len"])}const Wo=y(zo,[["render",Yo]]);const Qo={name:"BrowseOrderReverseButton",computed:{...w(p,{orderReverseSetting:e=>e.settings.orderReverse,orderIcon:e=>e.settings.orderReverse?qe:je}),density(){return this.$vuetify.display.smAndDown?"compact":"default"},title(){return this.orderReverseSetting?"order descending":"order ascending"}},methods:{...C(p,["setSettings"]),toggleOrderReverse(){const e={orderReverse:!this.orderReverseSetting};this.setSettings(e)}}};function Ko(e,t,n,h,a,s){return i(),_(U,I({class:"orderReverseButton",density:s.density,height:"46",icon:"",variant:"text"},e.$attrs,{title:s.title,onClick:s.toggleOrderReverse}),{default:d(()=>[l(S,null,{default:d(()=>[r(f(e.orderIcon),1)]),_:1})]),_:1},16,["density","title","onClick"])}const Xo=y(Qo,[["render",Ko],["__scopeId","data-v-44032796"]]),Jo=10,Zo={name:"BrowserSearchCombobox",data(){return{mdiMagnify:ne,menu:!1,query:"",items:[""]}},computed:{...w(p,{stateQ:e=>e.settings.q})},watch:{stateQ(e){this.query=e,this.addToMenu(e)}},methods:{...C(p,["setSettings"]),addToMenu(e){if(!e||this.items.includes(e))return;const t=this.items[0]===""?[]:this.items;t.unshift(e),this.items=t.slice(0,Jo)},doSearch(){this.menu=!1;const e=this.query?this.query.trim():"";this.setSettings({q:e}),this.addToMenu(e)}}};function es(e,t,n,h,a,s){return i(),_(ze,{ref:"searchbox",modelValue:a.query,"onUpdate:modelValue":t[0]||(t[0]=u=>a.query=u),menu:a.menu,"onUpdate:menu":t[1]||(t[1]=u=>a.menu=u),items:a.items,autofocus:"","aria-label":"search",clearable:"",density:"compact","full-width":"","hide-details":"auto","hide-selected":"","menu-props":{maxHeight:void 0},"no-filter":"","prepend-inner-icon":a.mdiMagnify,variant:"solo","onClick:clear":s.doSearch,"onClick:prependInner":s.doSearch,onKeydown:[Y(s.doSearch,["enter"]),t[2]||(t[2]=Y(u=>a.menu=!1,["esc"]))]},null,8,["modelValue","menu","items","prepend-inner-icon","onClick:clear","onClick:prependInner","onKeydown"])}const ts=y(Zo,[["render",es]]);const os={params:{group:"f",pk:0,page:1}},X=new Set(["a","f"]),ss={name:"BrowserTopGroupSelect",components:{ToolbarSelect:k},extends:k,data(){return{FOLDER_ROUTE:os,DIVIDED_VALUES:X}},computed:{...w(p,{topGroupSetting:e=>e.settings.topGroup}),...T(p,["topGroupChoices","topGroupChoicesMaxLen"]),topGroup:{get(){return this.topGroupSetting},set(e){const n={params:{group:X.has(e)?e:"r",pk:0,page:1}},h={topGroup:e};this.$router.push(n).then(()=>this.setSettings(h)).catch(console.error)}}},methods:{...C(p,["setSettings"])}};function ns(e,t,n,h,a,s){const u=k;return i(),_(u,I(e.$attrs,{modelValue:s.topGroup,"onUpdate:modelValue":t[0]||(t[0]=c=>s.topGroup=c),class:"topGroupSelect","select-label":"top group",items:e.topGroupChoices,"max-select-len":e.topGroupChoicesMaxLen-1,"mobile-len-adj":-2.5}),{item:d(({item:c,props:b})=>[a.DIVIDED_VALUES.has(c.value)?(i(),_(N,{key:0})):v("",!0),l(V,I(b,{title:c.title,value:c.value}),null,16,["title","value"])]),_:1},16,["modelValue","items","max-select-len"])}const rs=y(ss,[["render",ns],["__scopeId","data-v-62496858"]]);const as=Ye("flex-grow-1","div","VSpacer"),is={name:"BrowserHeader",components:{BrowserFilterBySelect:jo,BrowserTopGroupSelect:rs,BrowserSearchCombobox:ts,BrowserOrderBySelect:Wo,BrowserOrderReverseButton:Xo,SettingsDrawerButton:We},data(){return{mdiMagnify:ne,mdiFamilyTree:Qe,browseMode:"filter"}},computed:{...T(x,["isCodexViewable"]),...A(E,["isSettingsDrawerOpen"])}};function ls(e,t,n,h,a,s){const u=B("BrowserTopGroupSelect"),c=B("BrowserOrderBySelect"),b=B("BrowserOrderReverseButton"),$=B("SettingsDrawerButton"),P=B("BrowserFilterBySelect"),j=B("BrowserSearchCombobox");return i(),_(te,{id:"browserToolbar",class:O(["toolbar",{emptyToolbar:!e.isCodexViewable}]),density:"compact","extension-height":"48px"},{extension:d(()=>[e.isCodexViewable?(i(),_(H,{key:0,id:"searchToolbarItems"},{default:d(()=>[l(P,{id:"filterSelect"}),l(j,{id:"searchField"})]),_:1})):v("",!0)]),default:d(()=>[e.isCodexViewable?(i(),_(H,{key:0,id:"browserToolbarLeftItems"},{default:d(()=>[l(u,{id:"topGroupSelect"}),l(c,{id:"orderBySelect"}),l(b,{id:"orderReverseButton"})]),_:1})):v("",!0),l(as),l(H,null,{default:d(()=>[l($,{onClick:t[0]||(t[0]=an=>e.isSettingsDrawerOpen=!0)})]),_:1})]),_:1},8,["class"])}const us=y(is,[["render",ls],["__scopeId","data-v-cdef4956"]]);const ds=new Set(["community_rating","critical_rating"]),cs=new Set(["date"]),ms=new Set(["bookmark_updated_at","created_at","updated_at"]),_s={name:"OrderByCaption",props:{item:{type:Object,required:!0}},computed:{...w(p,{orderBy:e=>e.settings.orderBy,twentyFourHourTime:e=>e.settings.twentyFourHourTime,topGroup:e=>e.settings.topGroup}),orderValue(){let e=this.item.orderValue;if(this.orderBy===void 0||this.orderBy===null||this.orderBy==="sort_name"&&(this.item.group!=="c"||this.topGroup!=="f")||e===null||e===void 0)e="";else if(cs.has(this.orderBy)){const t=new Date(e);e=Ke.format(t)}else this.orderBy=="search_score"?e=W.format(Math.round(Number.parseFloat(e)*10)):ms.has(this.orderBy)?e=Xe(e,this.twentyFourHourTime,!0):this.orderBy=="page_count"?e=`${W.format(e)} pages`:this.orderBy=="size"?e=yt(Number.parseInt(e,10)):ds.has(this.orderBy)&&(e=`★ ${e}`);return e}}},ps=["innerHTML"];function hs(e,t,n,h,a,s){return s.orderValue?(i(),g("div",{key:0,class:"orderCaption text-caption",innerHTML:s.orderValue},null,8,ps)):v("",!0)}const ve=y(_s,[["render",hs],["__scopeId","data-v-abfb903c"]]),fs={name:"BrowserContainerMenu",components:{ConfirmDialog:re},props:{item:{type:Object,required:!0}},data(){return{mdiDotsVertical:Je,showMenu:!1}},computed:{...w(p,{groupNames:e=>e.choices.static.groupNames}),verb(){return this.item.finished?"Unread":"Read"},confirmText(){return`Mark ${this.verb}`},markReadText(){const e=["Mark"];this.item.group!="c"&&e.push("Entire");let t=this.groupNames[this.item.group];return this.item.group!=="s"&&(t=t.slice(0,-1)),e.push(t,this.verb),e.join(" ")}},methods:{...C(p,["setBookmarkFinished"]),...C(E,["downloadIOSPWAFix"]),toggleRead:function(){this.setBookmarkFinished(this.item,!this.item.finished),this.showMenu=!1}}},gs={class:"background-soft-highlight"};function bs(e,t,n,h,a,s){const u=re;return i(),_(et,{modelValue:a.showMenu,"onUpdate:modelValue":t[2]||(t[2]=c=>a.showMenu=c),"offset-y":"",top:""},{activator:d(({props:c})=>[l(U,I({"aria-label":"action menu",class:"browserCardMenuIcon cardControlButton",icon:"",title:"Action Menu",variant:"text"},c,{onClick:t[0]||(t[0]=Ze(()=>{},["prevent"]))}),{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiDotsVertical),1)]),_:1})]),_:2},1040)]),default:d(()=>[o("div",gs,[n.item.group==="c"?(i(),_(V,{key:0,onClick:s.toggleRead},{default:d(()=>[l(R,null,{default:d(()=>[r(f(s.markReadText),1)]),_:1})]),_:1},8,["onClick"])):(i(),_(u,{key:1,"button-text":s.markReadText,"title-text":s.markReadText,"confirm-text":s.confirmText,"object-name":n.item.name,onConfirm:s.toggleRead,onCancel:t[1]||(t[1]=c=>a.showMenu=!1)},null,8,["button-text","title-text","confirm-text","object-name","onConfirm"]))])]),_:1},8,["modelValue"])}const we=y(fs,[["render",bs]]);const ys={name:"BrowserCardControls",components:{BrowserCardMenu:we,MetadataButton:vt},props:{item:{type:Object,required:!0},eyeOpen:{type:Boolean,required:!0}},data(){return{mdiEye:Q,mdiEyeOff:K}},computed:{eyeIcon:function(){return this.eyeOpen?Q:K}}},vs={class:"cardControls"};function ws(e,t,n,h,a,s){const u=B("MetadataButton"),c=we;return i(),g("div",vs,[n.item.group==="c"?(i(),_(S,{key:0,class:"eye"},{default:d(()=>[r(f(s.eyeIcon),1)]),_:1})):v("",!0),l(u,{group:n.item.group,pk:n.item.pk,children:n.item.childCount},null,8,["group","pk","children"]),l(c,{item:n.item},null,8,["item"])])}const Ss=y(ys,[["render",ws],["__scopeId","data-v-dc469596"]]);const Bs={name:"BrowserCardSubtitle",props:{item:{type:Object,required:!0}},orderByCache:"sort_name",computed:{...w(p,{orderBy:e=>e.settings.orderBy,zeroPad:e=>e.page.zeroPad}),headerName:function(){let e;switch(this.item.group){case"i":e=this.item.publisherName;break;case"v":e=this.item.seriesName;break;case"c":e=this.$route.params.group==="f"?tt(this.item,this.zeroPad):ot(this.item,this.zeroPad);break;default:e=""}return e},displayName:function(){return this.item.group==="v"?ee(this.item.name):this.item.name},linkLabel:function(){let e="";return e+=this.item.group==="c"?"Read":"Browse to",e+=" "+this.headerName,e}}},Cs={class:"browserLink cardSubtitle text-caption"},ks={key:0,class:"headerName"},Ts={class:"displayName"};function Vs(e,t,n,h,a,s){return i(),g("div",Cs,[s.headerName?(i(),g("div",ks,f(s.headerName),1)):v("",!0),o("div",Ts,f(s.displayName),1)])}const $s=y(Bs,[["render",Vs],["__scopeId","data-v-2485e87e"]]),xs=new Set(["iPad","iPad Simulator","iPhone","iPhone Simulator","iPod","iPod Simulator"]),Ms=xs.has(navigator.platform),Is="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0||window.matchMedia("(any-hover: none)").matches;const Fs=st({modelValue:Boolean,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},...nt(),...rt(),...at(),...it({transition:"fade-transition"})},"VLazy"),Ps=lt()({name:"VLazy",directives:{intersect:ut},props:Fs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{dimensionStyles:h}=dt(e),a=ct(e,"modelValue");function s(u){a.value||(a.value=u)}return mt(()=>ae(l(e.tag,{class:["v-lazy",e.class],style:[h.value,e.style]},{default:()=>[a.value&&l(pt,{transition:e.transition,appear:!0},{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n)]}})]}),[[_t("intersect"),{handler:s,options:e.options},null]])),{}}}),J=100,Rs=-170,Ns={name:"BrowserCard",components:{BookCover:me,BrowserCardControls:Ss,BrowserCardSubtitle:$s,OrderByCaption:ve},props:{item:{type:Object,required:!0}},data(){return{doubleTapHovered:!Is||Ms}},computed:{linkLabel:function(){let e="";return e+=this.item.group==="c"?"Read":"Browse to",e+=" "+this.item.headerName,e},toRoute:function(){return this.doubleTapHovered?this.item.group==="c"?wt(this.item):{name:"browser",params:{group:this.item.group,pk:this.item.pk,page:1}}:{}},progressBackgroundColor:function(){return this.item.progress?this.$vuetify.theme.current.colors.row:"inherit"}},mounted(){this.scrollToMe()},methods:{scrollToMe:function(){if(!this.$route.hash||this.$route.hash.split("-")[1]!==String(this.item.pk))return;const e=this.$el;if(!e){console.warn("No element found to scroll to!");return}setTimeout(function(){e.scrollIntoView(),setTimeout(function(){window.scrollBy(0,Rs)},J)},J)}}},Os={class:"browserCardTop"},Ds={key:1,class:"cardCoverOverlay"};function Ls(e,t,n,h,a,s){const u=me,c=B("BrowserCardControls"),b=B("router-link"),$=B("BrowserCardSubtitle"),P=ve;return i(),_(Ps,{id:`card-${n.item.pk}`,transition:"scale-transition"},{default:d(()=>[o("div",{class:"browserCardCoverWrapper",onClick:t[0]||(t[0]=j=>a.doubleTapHovered=!0)},[o("div",Os,[l(u,{"cover-pk":n.item.coverPk,group:n.item.group,"child-count":n.item.childCount,finished:n.item.finished},null,8,["cover-pk","group","child-count","finished"]),s.toRoute?(i(),_(b,{key:0,class:"cardCoverOverlay",to:s.toRoute,"aria-label":s.linkLabel},{default:d(()=>[l(c,{item:n.item,"eye-open":!0},null,8,["item"])]),_:1},8,["to","aria-label"])):(i(),g("div",Ds,[l(c,{item:n.item,"eye-open":!1},null,8,["item"])])),ae(l(G,{class:"bookCoverProgress","background-color":s.progressBackgroundColor,"model-value":n.item.progress,"aria-label":`${n.item.progress}% read`,rounded:"",height:"2"},null,8,["background-color","model-value","aria-label"]),[[ht,n.item.progress]]),l($,{item:n.item},null,8,["item"])]),l(P,{item:n.item},null,8,["item"])])]),_:1},8,["id"])}const Hs=y(Ns,[["render",Ls],["__scopeId","data-v-f9f9dd56"]]);const Us={name:"BrowserMain",components:{BrowserCard:Hs,PlaceholderLoading:_e},data(){return{mdiMenu:ft,mdiOpenInNew:se}},computed:{...w(x,{adminFlags:e=>e.adminFlags}),...T(x,["isUserAdmin","isCodexViewable"]),...w(p,{librariesExist:e=>e.page.librariesExist,showPlaceHolder:function(e){return this.adminFlags.nonUsers===void 0||this.isCodexViewable&&(this.librariesExist==null||!e.browserPageLoaded)},cards:e=>[...e.page.groups??[],...e.page.books??[]],padFooter:e=>e.page.numPages>1}),showBrowseItems(){return this.cards&&this.cards.length>0&&this.isCodexViewable&&!this.showPlaceHolder}}},q=e=>(D("data-v-b023c894"),e=e(),L(),e),As={key:0,id:"browsePaneContainer"},Gs={key:1,id:"announce"},Es={key:2,id:"announce"},qs={key:0},js={key:0},zs={key:3,id:"announce"},Ys=q(()=>o("div",{id:"noComicsFound"},"No comics found for these filters",-1)),Ws=[Ys],Qs={key:4,id:"announce"},Ks=q(()=>o("h1",null,"No libraries have been added to Codex yet",-1)),Xs={key:0},Js={key:1},Zs=q(()=>o("h2",null," An administrator must login to add some libraries that contain comics ",-1)),en={href:"https://github.com/ajslater/codex#-administration",target:"_blank"};function tn(e,t,n,h,a,s){const u=B("BrowserCard"),c=_e;return i(),_(ie,{id:"browsePane",class:O({padFooter:e.padFooter})},{default:d(()=>[s.showBrowseItems?(i(),g("div",As,[(i(!0),g(M,null,F(e.cards,b=>(i(),_(u,{key:`${b.group}${b.pk}`,item:b},null,8,["item"]))),128))])):e.showPlaceHolder?(i(),g("div",Gs,[l(c,{class:"placeholder"})])):e.isCodexViewable?e.librariesExist?(i(),g("div",zs,Ws)):(i(),g("div",Qs,[Ks,e.isUserAdmin?(i(),g("h2",Xs,[r(" Use the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r(" menu to navigate to the admin panel and add a comic library. ")])):(i(),g("div",Js,[Zs,o("h3",null,[r(" You may log in or register with the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r("menu ")])])),o("a",en,[r("See the README "),l(S,null,{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" for detailed instructions. ")])):(i(),g("div",Es,[o("h1",null,[r(" You may log in "),e.adminFlags.register?(i(),g("span",qs,"or register")):v("",!0),r(" with the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r(" menu ")]),e.adminFlags.register?v("",!0):(i(),g("h1",js,"Registration is disabled"))]))]),_:1},8,["class"])}const on=y(Us,[["render",tn],["__scopeId","data-v-b023c894"]]);const sn={name:"MainBrowser",components:{BrowserFilterToolbar:us,BrowserMain:on,BrowserNavToolbar:he,BrowserTitleToolbar:be,SettingsDrawer:le},data(){return{BrowserSettingsPanel:gt(Po)}},computed:{...w(x,{user:e=>e.user}),...T(x,["isCodexViewable"])},watch:{$route:function(){window.scrollTo(0,0),this.loadBrowserPage()},user:function(){this.loadSettings()},isCodexViewable:function(){this.loadSettings()}},created(){E().isSettingsDrawerOpen=!1,this.loadSettings()},methods:{...C(p,["loadBrowserPage","loadSettings","getVersions"])}},nn={class:"codexToolbar"};function rn(e,t,n,h,a,s){const u=B("BrowserFilterToolbar"),c=be,b=B("BrowserMain"),$=he,P=le;return i(),g(M,null,[l(ie,{id:"browser"},{default:d(()=>[o("header",nn,[l(u),l(c)]),l(b),l($)]),_:1}),l(P,{title:"Browser Settings",panel:a.BrowserSettingsPanel,temporary:""},null,8,["panel"])],64)}const dn=y(sn,[["render",rn],["__scopeId","data-v-2b4da8f0"]]);export{dn as default};
@@ -0,0 +1 @@
1
+ import{aq as Z,a as w,L as p,c as y,o as i,e as _,w as d,g as l,j as r,t as f,ar as O,D as S,b as C,f as v,A as T,as as Se,at as Be,au as U,B as x,av as ee,d as g,i as o,aw as Ce,ax as te,p as D,q as L,_ as oe,x as se,ay as ke,l as R,az as Te,aA as Ve,n as V,r as F,F as M,aB as $e,aC as xe,aD as z,V as N,aE as Me,aF as Ie,aG as I,aH as Fe,aI as Pe,aJ as Re,aK as A,aL as Ne,aM as Oe,I as De,aN as Le,aO as He,aP as Ue,aQ as Ae,k as G,aR as Ge,aS as Ee,C as B,aT as qe,aU as je,aV as ne,aW as Y,aX as ze,aY as Ye,aZ as We,a_ as Qe,J as E,a$ as H,b0 as Ke,N as W,b1 as Xe,b2 as re,b3 as Je,b4 as Ze,b5 as et,b6 as Q,b7 as K,b8 as tt,b9 as ot,M as st,O as nt,ba as rt,bb as at,bc as it,R as lt,bd as ut,be as dt,bf as ct,W as mt,bg as ae,bh as _t,bi as pt,bj as ht,bk as ft,bl as ie,bm as le,bn as gt}from"./admin-12749881.js";import{_ as ue,a as de,b as ce,t as bt,p as yt,c as vt,d as me,g as wt,P as _e}from"./metadata-dialog-62c29ce0.js";const St={name:"BrowserNavButton",components:{PaginationNavButton:ue},props:{back:{type:Boolean,required:!0}},data(){return{mdiChevronLeft:Z}},computed:{...w(p,{numPages:e=>e.page.numPages}),increment(){return this.back?-1:1},toPage(){return+this.$route.params.page+this.increment},title(){return"to page"+this.toPage},toRoute(){return{params:{...this.$route.params,page:this.toPage}}},disabled(){return this.back&&+this.$route.params.page<=1||!this.back&&+this.$route.params.page>=this.numPages}}};function Bt(e,t,n,h,a,s){const u=ue;return i(),_(u,{disabled:s.disabled,title:s.title,to:s.toRoute},{default:d(()=>[l(S,{class:O({flipHoriz:!n.back})},{default:d(()=>[r(f(a.mdiChevronLeft),1)]),_:1},8,["class"])]),_:1},8,["disabled","title","to"])}const pe=y(St,[["render",Bt],["__scopeId","data-v-7b8e4ba4"]]),Ct={name:"BrowserNavToolbar",components:{BrowserNavButton:pe,PaginationSlider:de,PaginationToolbar:ce},computed:{...w(p,{numPages:e=>e.page.numPages})},methods:{...C(p,["routeToPage"]),onUpdate(e){this.routeToPage(e)}}};function kt(e,t,n,h,a,s){const u=pe,c=de,b=ce;return e.numPages>1?(i(),_(b,{key:0},{default:d(()=>[l(u,{back:!0}),l(c,{"model-value":+e.$route.params.page,min:1,max:e.numPages,step:1,"onUpdate:modelValue":t[0]||(t[0]=$=>e.routeToPage($))},null,8,["model-value","max"]),l(u,{back:!1})]),_:1})):v("",!0)}const he=y(Ct,[["render",kt]]),Tt=new Set(["a","f"]),Vt={name:"BrowserUpButton",props:{top:{type:Boolean,default:!1}},computed:{...T(p,["parentModelGroup"]),...w(p,{upRoute:e=>e.page.routes.up,title(e){const t=this.top?e.settings.topGroup:this.parentModelGroup;return`Up to ${e.choices.static.groupNames[t]||"All"}`}}),show(){return this.upRoute&&"group"in this.upRoute},icon(){return this.top?Se:Be},to(){let e;if(this.top){let t=this.upRoute.group;Tt.has(t)||(t="r"),e={group:t,pk:0,page:1}}else e=this.upRoute;return{params:e}}}};function $t(e,t,n,h,a,s){return s.show?(i(),_(U,{key:0,icon:"",size:"x-large",title:e.title,to:s.to,variant:"plain"},{default:d(()=>[l(S,null,{default:d(()=>[r(f(s.icon),1)]),_:1})]),_:1},8,["title","to"])):v("",!0)}const fe=y(Vt,[["render",$t]]);const xt={name:"BrowserHeader",components:{BrowserUpButton:fe},head(){return{meta:[{hid:"description",name:"description",content:["browse comics",this.longBrowserTitlePrefix,this.longBrowseTitleMain,this.longBrowseTitleSuffix].filter(Boolean).join(" ")}]}},computed:{...w(p,{groupNames:e=>e.choices.static.groupNames,browserTitle:e=>e.page.browserTitle,modelGroup:e=>e.page.modelGroup}),...T(x,["isCodexViewable","isUserAdmin"]),longBrowserTitlePrefix:function(){return this.$route.params.group==="f"?this.browserTitle.parentName:""},longBrowseTitleMain:function(){let e;if(Number(this.$route.params.pk)===0)e="All";else{let t=[];const{parentName:n,groupName:h,groupCount:a}=this.browserTitle;n&&t.push(n);const s=this.$route.params.group,u=s==="v"?ee(h):h;if(u&&t.push(u),a){const b=`of ${a}`;t.push(b)}const c=s==="f"?"/":" ";e=t.join(c)}return e},longBrowseTitleSuffix:function(){return this.$route.params.group==="f"?"":this.groupNames[this.modelGroup]}}},ge=e=>(D("data-v-b5efed9f"),e=e(),L(),e),Mt={key:0,id:"titleToolbarPrefix"},It=ge(()=>o("br",null,null,-1)),Ft={id:"titleToolbarMain"},Pt={key:1,id:"titleToolbarSuffix"},Rt=ge(()=>o("br",null,null,-1));function Nt(e,t,n,h,a,s){const u=fe;return e.isCodexViewable?(i(),_(te,{key:0,id:"titleToolbar",elevation:"8"},{default:d(()=>[l(u),l(Ce,{class:"codexToolbarTitle"},{default:d(()=>[s.longBrowserTitlePrefix?(i(),g("span",Mt,[r(f(s.longBrowserTitlePrefix)+" ",1),It])):v("",!0),o("span",Ft,f(s.longBrowseTitleMain),1),s.longBrowseTitleSuffix?(i(),g("span",Pt,[Rt,r(" "+f(s.longBrowseTitleSuffix),1)])):v("",!0)]),_:1}),l(u,{top:""})]),_:1})):v("",!0)}const be=y(xt,[["render",Nt],["__scopeId","data-v-b5efed9f"]]);const Ot=[["characters","CSV","category"],["community_rating","Decimal","communityrating"],["country","String",""],["created_at","DateTime","created"],["creators","CSV","authors, contributors"],["critical_rating","Decimal","criticalrating"],["day","Integer",""],["date","Date",""],["decade","Integer",""],["description","String",""],["file_type","String","format"],["genres","CSV","genre"],["imprint","String",""],["issue","Decimal",""],["language","String",""],["location[s]","CSV","location"],["maturity_rating","String",""],["month","Integer",""],["read_ltr","Boolean","ltr"],["name","String","title"],["notes","String",""],["original_format","String","format"],["page_count","Integer","pages"],["publisher","String",""],["scan_info","String","scan"],["series","String",""],["series_group[s]","CSV","seriesgroups"],["size","Integer",""],["story_arcs","CSV","storyarcs"],["summary","String",""],["tags","CSV","tag"],["teams","CSV","team"],["updated_at","Date","updated"],["volume","String",""],["web","String",""],["year","Integer",""]],Dt={name:"SearchHelp",components:{CloseButton:oe},data(){return{mdiOpenInNew:se,mdiArchiveSearchOutline:ke,dialog:!1,FIELD_ROWS:Ot}}},m=e=>(D("data-v-08501668"),e=e(),L(),e),Lt={id:"searchHelp"},Ht=m(()=>o("h1",null,"Search Syntax Help",-1)),Ut={id:"fieldTableContainer"},At=m(()=>o("h2",null,"Search Fields",-1)),Gt=m(()=>o("thead",null,[o("tr",null,[o("th",null,"Field"),o("th",null,"Type"),o("th",null,"Aliases")])],-1)),Et={id:"textContainer"},qt=m(()=>o("h2",null,"Whoosh Query Parser",-1)),jt={href:"https://whoosh.readthedocs.io/en/latest/querylang.html",target:"_blank"},zt=m(()=>o("h2",null,"Operators",-1)),Yt=m(()=>o("code",null,"and",-1)),Wt=m(()=>o("code",null,"or",-1)),Qt=m(()=>o("code",null,"not",-1)),Kt=m(()=>o("code",null,"andnot",-1)),Xt=m(()=>o("code",null,"andmaybe",-1)),Jt=m(()=>o("code",null,"require",-1)),Zt=m(()=>o("h2",null,"Searching Fields",-1)),eo=m(()=>o("p",null,[r(" Like Codex's filter selector menu, but more powerful. You may search on individual comic metadata fields. using a search token like "),o("code",null,"field:value"),r(". ")],-1)),to=m(()=>o("h3",null,"Dates and DateTimes",-1)),oo={href:"https://whoosh.readthedocs.io/en/latest/dates.html#parsing-date-queries",target:"_blank"},so=m(()=>o("code",null,"YYYYMMDD",-1)),no=m(()=>o("code",null,"YYYMMDDHHmmSS",-1)),ro=m(()=>o("h3",null,"Single Quote complex field Queries",-1)),ao=m(()=>o("p",null,[r(" Use "),o("em",null,"single"),r(" quotes to tell Codex that a complex or natural language phrase should be applied to a specific field ")],-1)),io=m(()=>o("code",null," created:'this year' ",-1)),lo=m(()=>o("h3",null,"Size Byte Multipliers",-1)),uo=m(()=>o("p",null,[r(" The size field can make use of convenient byte multiplier suffixes like "),o("code",null,"kb"),r(" and "),o("code",null,"mb"),r(" as well as binary suffixes like "),o("code",null,"gib"),r(" and "),o("code",null,"tib"),r(". ")],-1)),co=m(()=>o("h3",null,"Ranges of Fields",-1)),mo=m(()=>o("p",null,[r(" Whoosh uses brackets and the "),o("em",null,"uppercase"),r(" "),o("code",null,"TO"),r(" operator to delineate a range search. ")],-1)),_o=m(()=>o("code",null,"updated:[last sunday TO 10am]",-1)),po=m(()=>o("p",null," You may leave out the upper or lower bound or use >, <, >=, <= operators. ",-1)),ho=m(()=>o("code",null,"size:<50mb",-1)),fo=m(()=>o("h3",null,"Multi Value Fields",-1)),go=m(()=>o("p",null,[r(" Fields marked type "),o("code",null,"CSV"),r(" in the table to the left may contain comma separated values. This filters by all the supplied values. Multi Value tokens look like: "),o("code",null,"field:term1,term2,term3")],-1)),bo=m(()=>o("h2",null,"Grouped Queries",-1)),yo=m(()=>o("p",null,"Whoosh allows grouping of queries with parenthesis.",-1)),vo=m(()=>o("h2",null,"Example Search",-1)),wo=m(()=>o("p",null," This example search is more convoluted than most searches but uses many features for demonstration: ",-1)),So=m(()=>o("code",null,' (Holmes and Tesla date:>=1999-1-2 size:[10mib TO 1gb] Gadzooks) or "Captain Nemo" -Quartermain ',-1)),Bo=m(()=>o("p",{style:{"margin-top":"1em"}},' Search for comics that contain Holmes and Tesla published after the second day of 1999 that are between 10 Mebibytes and 10 Gigabytes that also contain the word "Gadzooks" but also all comics with the the phrase "Captain Nemo" but no comics will contain the word "Quartermain". ',-1)),Co=m(()=>o("h2",null,"Group and Sorting Behavior",-1)),ko=m(()=>o("p",null," If the search field is empty and then you supply a search query for the first time, Codex navigates you to the to All Issues view and your sets your Sorted By selection to Search Score. If you prefer a different view you may change the group and sort selections after your you make your first search. ",-1)),To=m(()=>o("h2",null,"Filter Behavior",-1)),Vo=m(()=>o("p",null,[r(" Codex applies "),o("em",null,"both"),r(" the Filter selection menu filters "),o("em",null,"and"),r(" the search query field filters to the search. Be sure to clear the filter selector or the search field if you prefer to apply only one of them. ")],-1));function $o(e,t,n,h,a,s){const u=oe;return i(),_(xe,{modelValue:a.dialog,"onUpdate:modelValue":t[2]||(t[2]=c=>a.dialog=c),"content-class":"browserSearchHelp",fullscreen:"",scrim:!1,transition:"dialog-bottom-transition"},{activator:d(({props:c})=>[l(V,Te(Ve(c)),{default:d(()=>[l(R,null,{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiArchiveSearchOutline),1)]),_:1}),r("Search Syntax Help ")]),_:1})]),_:2},1040)]),default:d(()=>[o("div",Lt,[l(u,{class:"closeButton",title:"Close Help (esc)",size:"x-large",onClick:t[0]||(t[0]=c=>a.dialog=!1)}),Ht,o("div",Ut,[At,l($e,{id:"fieldTable",class:"highlight-table"},{default:d(()=>[Gt,o("tbody",null,[(i(!0),g(M,null,F(a.FIELD_ROWS,c=>(i(),g("tr",{key:c[0]},[o("td",null,f(c[0]),1),o("td",null,f(c[1]),1),o("td",null,f(c[2]),1)]))),128))])]),_:1})]),o("div",Et,[qt,o("p",null,[r(" Codex uses the Whoosh search engine to execute your text search queries. Whoosh operates much like other familiar search engines. As such, only some special features are documented on this page. To understand its full power, users are encouraged to read the "),o("a",jt,[r("Whoosh Query Language "),l(S,{size:"small"},{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" documentation. ")]),zt,r(" Whoosh has the "),Yt,r(", "),Wt,r(", "),Qt,r(", "),Kt,r(", "),Xt,r(", and "),Jt,r(" operators. "),Zt,eo,to,o("p",null,[r(" Whoosh parses Dates and DateTime values liberally. Read "),o("a",oo,[r("Whoosh Parsing Date Queries "),l(S,{size:"small"},{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" documentation for what formats and natural language phrases are accepted. If the format you try fails, the "),so,r(" and "),no,r(" formats are reliable. ")]),ro,ao,io,lo,uo,co,mo,_o,r(". "),po,ho,r(". "),fo,go,bo,yo,vo,wo,So,Bo,Co,ko,To,Vo]),l(u,{class:"closeButton",title:"Close Help (esc)",size:"x-large",onClick:t[1]||(t[1]=c=>a.dialog=!1)})])]),_:1},8,["modelValue"])}const ye=y(Dt,[["render",$o],["__scopeId","data-v-08501668"]]);const xo={name:"BrowserSettingsPanel",components:{SearchHelp:ye},computed:{...T(x,["isCodexViewable"]),...w(p,{groupChoices:e=>e.choices.static.settingsGroup,twentyFourHourTimeTitle:e=>e.choices.static.twentyFourHourTime.title,showSettings:e=>e.settings.show,twentyFourHourTime:e=>e.settings.twentyFourHourTime})},methods:{...C(p,["setSettings"]),setShow(e,t){const n={show:{[e]:t===!0}};this.setSettings(n)},set24HourTime(e){const t={twentyFourHourTime:e===!0};this.setSettings(t)}}},Mo=e=>(D("data-v-9312ed19"),e=e(),L(),e),Io=Mo(()=>o("div",{id:"groupCaption",class:"text-caption"}," Show these groups when navigating the browse tree. ",-1));function Fo(e,t,n,h,a,s){const u=ye;return i(),g(M,null,[Io,(i(!0),g(M,null,F(e.groupChoices,c=>(i(),_(z,{key:c.title,class:"browserGroupCheckbox",density:"compact","hide-details":"auto","model-value":e.showSettings[c.value],"true-value":!0,label:`Show ${c.title}`,"onUpdate:modelValue":b=>s.setShow(c.value,b)},null,8,["model-value","label","onUpdate:modelValue"]))),128)),l(N),l(z,{class:"browserGroupCheckbox",density:"compact","hide-details":"auto","model-value":e.twentyFourHourTime,"true-value":!0,indeterminate:"",label:"Force 24 Hour Time","onUpdate:modelValue":t[0]||(t[0]=c=>s.set24HourTime(c))},null,8,["model-value"]),l(N),l(u)],64)}const Po=y(xo,[["render",Fo],["__scopeId","data-v-9312ed19"]]);const Ro={name:"ToolbarSelect",props:{selectLabel:{type:String,default:""},maxSelectLen:{type:Number,default:0},mobileLenAdj:{type:Number,default:0},variant:{type:String,default:"plain"}},computed:{style(){const e=this.$vuetify.display.smAndDown?this.mobileLenAdj:0,n=this.maxSelectLen+e+"em";return`width: ${n}; min-width: ${n}; max-width: ${n}`}}};function No(e,t,n,h,a,s){return i(),_(Fe,I(e.$attrs,{label:n.selectLabel,"aria-label":n.selectLabel,class:"toolbarSelect",density:"compact","full-width":"","menu-props":{maxHeight:void 0},"hide-details":"auto",style:s.style,variant:n.variant}),Me({_:2},[F(e.$slots,(u,c)=>({name:c,fn:d(b=>[Ie(e.$slots,c,I({props:u},b),void 0,!0)])}))]),1040,["label","aria-label","style","variant"])}const k=y(Ro,[["render",No],["__scopeId","data-v-3a4c9e75"]]);const Oo=De.browser.vuetifyNullCode,Do={name:"BrowserFilterSubMenu",props:{name:{type:String,required:!0}},emits:["selected"],data(){return{mdiChevronLeft:Z,mdiChevronRight:Pe,mdiChevronRightCircle:Re,query:"",nullCode:Oo}},computed:{...w(p,{choices:function(e){return e.choices.dynamic[this.name]},filter:function(e){return e.settings.filters[this.name]}}),...A(p,["filterMode"]),vuetifyItems(){return bt(this.choices,this.query,Oe.includes(this.name),Ne.includes(this.name))},title:function(){let e=this.name.replaceAll(/[A-Z]/g,t=>` ${t}`);return e=e.replace("Ltr","LTR"),e=e[0].toUpperCase()+e.slice(1),e},lowerTitle:function(){return this.title.toLowerCase()}},methods:{...C(p,["loadFilterChoices"]),setUIFilterMode(e){this.filterMode=e,this.query="",e!=="base"&&typeof this.choices!="object"&&this.loadFilterChoices(e)},selected(e){const t={filters:{[this.name]:e}};this.$emit("selected",t)}}},Lo={key:0},Ho={class:"filterHeader"};function Uo(e,t,n,h,a,s){return i(),g("div",null,[l(Le,{"hide-on-leave":""},{default:d(()=>[e.filterMode==="base"?(i(),_(V,{key:0,onClick:t[0]||(t[0]=u=>s.setUIFilterMode(n.name))},{default:d(()=>[l(R,{class:"filterMenu"},{default:d(()=>[r(f(s.title)+" ",1),e.filter&&e.filter.length>0?(i(),_(S,{key:0,class:"nameChevron"},{default:d(()=>[r(f(a.mdiChevronRightCircle),1)]),_:1})):(i(),_(S,{key:1,class:"nameChevron"},{default:d(()=>[r(f(a.mdiChevronRight),1)]),_:1}))]),_:1})]),_:1})):v("",!0)]),_:1}),l(Ae,{"hide-on-leave":""},{default:d(()=>[e.filterMode===n.name?(i(),g("div",Lo,[o("header",Ho,[l(V,{onClick:t[1]||(t[1]=u=>s.setUIFilterMode("base"))},{default:d(()=>[l(R,{class:"filterTitle"},{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiChevronLeft),1)]),_:1}),r(f(s.lowerTitle),1)]),_:1})]),_:1}),typeof e.choices=="object"?(i(),_(He,{key:0,modelValue:a.query,"onUpdate:modelValue":t[2]||(t[2]=u=>a.query=u),placeholder:"Filter","full-width":"",density:"compact",filled:"",rounded:"","hide-details":"auto",onFocus:t[3]||(t[3]=u=>e.filterMode=n.name)},null,8,["modelValue"])):(i(),_(G,{key:1,class:"filterValuesProgress",rounded:"",indeterminate:""}))]),typeof e.choices=="object"?(i(),_(Ue,{key:0,"model-value":e.filter,class:"filterGroup overflow-y-auto",density:"compact",multiple:"",items:s.vuetifyItems,"onUpdate:selected":s.selected},{default:d(()=>[(i(!0),g(M,null,F(s.vuetifyItems,u=>(i(),_(V,{key:u.pk,title:u.title,value:u.value,class:O({noneItem:+u.value==a.nullCode})},null,8,["title","value","class"]))),128))]),_:1},8,["model-value","items","onUpdate:selected"])):v("",!0)])):v("",!0)]),_:1})])}const Ao=y(Do,[["render",Uo],["__scopeId","data-v-c4219ce9"]]);const Go={name:"BrowserFilterBySelect",components:{BrowserFilterSubMenu:Ao,ToolbarSelect:k},extends:k,data(){return{mdiFilterMultipleOutline:Ge,menu:!1}},computed:{...T(p,["filterByChoicesMaxLen","isDefaultBookmarkValueSelected"]),...w(p,{bookmarkChoices:e=>e.choices.static.bookmark,bookmarkFilter:e=>e.settings.filters.bookmark||e.choices.static.bookmark[0],filters:e=>e.settings.filters,isDynamicFiltersSelected:function(e){for(const[t,n]of Object.entries(e.settings.filters))if(t!=="bookmark"&&n&&n.length>0)return!0;return!1},isFiltersClearable:function(){return!this.isDefaultBookmarkValueSelected||this.isDynamicFiltersSelected},filterMenuClass:function(e){let t="filterMenu";return e.filterMode!=="base"&&(t+="Hidden"),t},dynamicChoiceNames:function(e){if(e.choices.dynamic===void 0)return;const t=[];for(const[n,h]of Object.entries(e.choices.dynamic))h&&t.push(n);return t}}),...A(p,["filterMode"]),filterInnerIcon:function(){return this.isFiltersClearable?Ee:""}},methods:{...C(p,["clearFilters","loadAvailableFilterChoices","setSettings"]),onUpdateModelValue(e){const t={filters:{bookmark:e}};this.onSubMenuSelected(t)},onSubMenuSelected(e){this.menu=!1,this.setSettings(e),this.filterMode="base"},onClear(){this.clearFilters()},onMenu(e){e&&this.dynamicChoiceNames===void 0&&this.loadAvailableFilterChoices()}}},Eo={key:1};function qo(e,t,n,h,a,s){const u=B("BrowserFilterSubMenu"),c=k;return i(),_(c,{menu:a.menu,"onUpdate:menu":[t[0]||(t[0]=b=>a.menu=b),s.onMenu],class:"filterBySelect","select-label":"filter by",clearable:e.isFiltersClearable,items:e.bookmarkChoices,"menu-props":{contentClass:e.filterMenuClass,maxHeight:void 0},"model-value":e.bookmarkFilter,"max-select-len":e.filterByChoicesMaxLen+1.5,"mobile-len-adj":-1.5,variant:"solo","onClick:clear":s.onClear,"onUpdate:modelValue":s.onUpdateModelValue},{selection:d(({item:b})=>[r(f(b.title)+" ",1),e.isDynamicFiltersSelected?(i(),_(S,{key:0,class:"filterSuffix"},{default:d(()=>[r(f(a.mdiFilterMultipleOutline),1)]),_:1})):v("",!0)]),"append-item":d(()=>[l(N),e.dynamicChoiceNames===void 0?(i(),_(V,{key:0},{default:d(()=>[l(G,{indeterminate:"",rounded:""})]),_:1})):e.dynamicChoiceNames.length>0?(i(),g("div",Eo,[(i(!0),g(M,null,F(e.dynamicChoiceNames,b=>(i(),_(u,{key:b,name:b,onSelected:s.onSubMenuSelected},null,8,["name","onSelected"]))),128))])):(i(),_(V,{key:2,class:"noChoices"},{default:d(()=>[r(" No filters available ")]),_:1}))]),_:1},8,["menu","clearable","items","menu-props","model-value","max-select-len","onClick:clear","onUpdate:modelValue","onUpdate:menu"])}const jo=y(Go,[["render",qo],["__scopeId","data-v-404ecbd3"]]),zo={name:"BrowseOrderBySelect",components:{ToolbarSelect:k},extends:k,computed:{...T(p,["orderByChoices","orderByChoicesMaxLen"]),...w(p,{orderBySetting:e=>e.settings.orderBy}),reverseValues(){const e=new Set;for(const t of this.orderByChoices)t.reverse&&e.add(t.value);return e},orderBy:{get(){return this.orderBySetting},set(e){const t={orderBy:e,orderReverse:this.reverseValues.has(e)};this.setSettings(t)}}},methods:{...C(p,["setSettings"])}};function Yo(e,t,n,h,a,s){const u=k;return i(),_(u,I({modelValue:s.orderBy,"onUpdate:modelValue":t[0]||(t[0]=c=>s.orderBy=c),class:"orderBySelect","select-label":"order by",items:e.orderByChoices,"max-select-len":e.orderByChoicesMaxLen-3.5,"mobile-len-adj":-2},e.$attrs),null,16,["modelValue","items","max-select-len"])}const Wo=y(zo,[["render",Yo]]);const Qo={name:"BrowseOrderReverseButton",computed:{...w(p,{orderReverseSetting:e=>e.settings.orderReverse,orderIcon:e=>e.settings.orderReverse?qe:je}),density(){return this.$vuetify.display.smAndDown?"compact":"default"},title(){return this.orderReverseSetting?"order descending":"order ascending"}},methods:{...C(p,["setSettings"]),toggleOrderReverse(){const e={orderReverse:!this.orderReverseSetting};this.setSettings(e)}}};function Ko(e,t,n,h,a,s){return i(),_(U,I({class:"orderReverseButton",density:s.density,height:"46",icon:"",variant:"text"},e.$attrs,{title:s.title,onClick:s.toggleOrderReverse}),{default:d(()=>[l(S,null,{default:d(()=>[r(f(e.orderIcon),1)]),_:1})]),_:1},16,["density","title","onClick"])}const Xo=y(Qo,[["render",Ko],["__scopeId","data-v-44032796"]]),Jo=10,Zo={name:"BrowserSearchCombobox",data(){return{mdiMagnify:ne,menu:!1,query:"",items:[""]}},computed:{...w(p,{stateQ:e=>e.settings.q})},watch:{stateQ(e){this.query=e,this.addToMenu(e)}},methods:{...C(p,["setSettings"]),addToMenu(e){if(!e||this.items.includes(e))return;const t=this.items[0]===""?[]:this.items;t.unshift(e),this.items=t.slice(0,Jo)},doSearch(){this.menu=!1;const e=this.query?this.query.trim():"";this.setSettings({q:e}),this.addToMenu(e)}}};function es(e,t,n,h,a,s){return i(),_(ze,{ref:"searchbox",modelValue:a.query,"onUpdate:modelValue":t[0]||(t[0]=u=>a.query=u),menu:a.menu,"onUpdate:menu":t[1]||(t[1]=u=>a.menu=u),items:a.items,autofocus:"","aria-label":"search",clearable:"",density:"compact","full-width":"","hide-details":"auto","hide-selected":"","menu-props":{maxHeight:void 0},"no-filter":"","prepend-inner-icon":a.mdiMagnify,variant:"solo","onClick:clear":s.doSearch,"onClick:prependInner":s.doSearch,onKeydown:[Y(s.doSearch,["enter"]),t[2]||(t[2]=Y(u=>a.menu=!1,["esc"]))]},null,8,["modelValue","menu","items","prepend-inner-icon","onClick:clear","onClick:prependInner","onKeydown"])}const ts=y(Zo,[["render",es]]);const os={params:{group:"f",pk:0,page:1}},X=new Set(["a","f"]),ss={name:"BrowserTopGroupSelect",components:{ToolbarSelect:k},extends:k,data(){return{FOLDER_ROUTE:os,DIVIDED_VALUES:X}},computed:{...w(p,{topGroupSetting:e=>e.settings.topGroup}),...T(p,["topGroupChoices","topGroupChoicesMaxLen"]),topGroup:{get(){return this.topGroupSetting},set(e){const n={params:{group:X.has(e)?e:"r",pk:0,page:1}},h={topGroup:e};this.$router.push(n).then(()=>this.setSettings(h)).catch(console.error)}}},methods:{...C(p,["setSettings"])}};function ns(e,t,n,h,a,s){const u=k;return i(),_(u,I(e.$attrs,{modelValue:s.topGroup,"onUpdate:modelValue":t[0]||(t[0]=c=>s.topGroup=c),class:"topGroupSelect","select-label":"top group",items:e.topGroupChoices,"max-select-len":e.topGroupChoicesMaxLen-1,"mobile-len-adj":-2.5}),{item:d(({item:c,props:b})=>[a.DIVIDED_VALUES.has(c.value)?(i(),_(N,{key:0})):v("",!0),l(V,I(b,{title:c.title,value:c.value}),null,16,["title","value"])]),_:1},16,["modelValue","items","max-select-len"])}const rs=y(ss,[["render",ns],["__scopeId","data-v-62496858"]]);const as=Ye("flex-grow-1","div","VSpacer"),is={name:"BrowserHeader",components:{BrowserFilterBySelect:jo,BrowserTopGroupSelect:rs,BrowserSearchCombobox:ts,BrowserOrderBySelect:Wo,BrowserOrderReverseButton:Xo,SettingsDrawerButton:We},data(){return{mdiMagnify:ne,mdiFamilyTree:Qe,browseMode:"filter"}},computed:{...T(x,["isCodexViewable"]),...A(E,["isSettingsDrawerOpen"])}};function ls(e,t,n,h,a,s){const u=B("BrowserTopGroupSelect"),c=B("BrowserOrderBySelect"),b=B("BrowserOrderReverseButton"),$=B("SettingsDrawerButton"),P=B("BrowserFilterBySelect"),j=B("BrowserSearchCombobox");return i(),_(te,{id:"browserToolbar",class:O(["toolbar",{emptyToolbar:!e.isCodexViewable}]),density:"compact","extension-height":"48px"},{extension:d(()=>[e.isCodexViewable?(i(),_(H,{key:0,id:"searchToolbarItems"},{default:d(()=>[l(P,{id:"filterSelect"}),l(j,{id:"searchField"})]),_:1})):v("",!0)]),default:d(()=>[e.isCodexViewable?(i(),_(H,{key:0,id:"browserToolbarLeftItems"},{default:d(()=>[l(u,{id:"topGroupSelect"}),l(c,{id:"orderBySelect"}),l(b,{id:"orderReverseButton"})]),_:1})):v("",!0),l(as),l(H,null,{default:d(()=>[l($,{onClick:t[0]||(t[0]=an=>e.isSettingsDrawerOpen=!0)})]),_:1})]),_:1},8,["class"])}const us=y(is,[["render",ls],["__scopeId","data-v-cdef4956"]]);const ds=new Set(["community_rating","critical_rating"]),cs=new Set(["date"]),ms=new Set(["bookmark_updated_at","created_at","updated_at"]),_s={name:"OrderByCaption",props:{item:{type:Object,required:!0}},computed:{...w(p,{orderBy:e=>e.settings.orderBy,twentyFourHourTime:e=>e.settings.twentyFourHourTime,topGroup:e=>e.settings.topGroup}),orderValue(){let e=this.item.orderValue;if(this.orderBy===void 0||this.orderBy===null||this.orderBy==="sort_name"&&(this.item.group!=="c"||this.topGroup!=="f")||e===null||e===void 0)e="";else if(cs.has(this.orderBy)){const t=new Date(e);e=Ke.format(t)}else this.orderBy=="search_score"?e=W.format(Math.round(Number.parseFloat(e)*10)):ms.has(this.orderBy)?e=Xe(e,this.twentyFourHourTime,!0):this.orderBy=="page_count"?e=`${W.format(e)} pages`:this.orderBy=="size"?e=yt(Number.parseInt(e,10)):ds.has(this.orderBy)&&(e=`★ ${e}`);return e}}},ps=["innerHTML"];function hs(e,t,n,h,a,s){return s.orderValue?(i(),g("div",{key:0,class:"orderCaption text-caption",innerHTML:s.orderValue},null,8,ps)):v("",!0)}const ve=y(_s,[["render",hs],["__scopeId","data-v-abfb903c"]]),fs={name:"BrowserContainerMenu",components:{ConfirmDialog:re},props:{item:{type:Object,required:!0}},data(){return{mdiDotsVertical:Je,showMenu:!1}},computed:{...w(p,{groupNames:e=>e.choices.static.groupNames}),verb(){return this.item.finished?"Unread":"Read"},confirmText(){return`Mark ${this.verb}`},markReadText(){const e=["Mark"];this.item.group!="c"&&e.push("Entire");let t=this.groupNames[this.item.group];return this.item.group!=="s"&&(t=t.slice(0,-1)),e.push(t,this.verb),e.join(" ")}},methods:{...C(p,["setBookmarkFinished"]),...C(E,["downloadIOSPWAFix"]),toggleRead:function(){this.setBookmarkFinished(this.item,!this.item.finished),this.showMenu=!1}}},gs={class:"background-soft-highlight"};function bs(e,t,n,h,a,s){const u=re;return i(),_(et,{modelValue:a.showMenu,"onUpdate:modelValue":t[2]||(t[2]=c=>a.showMenu=c),"offset-y":"",top:""},{activator:d(({props:c})=>[l(U,I({"aria-label":"action menu",class:"browserCardMenuIcon cardControlButton",icon:"",title:"Action Menu",variant:"text"},c,{onClick:t[0]||(t[0]=Ze(()=>{},["prevent"]))}),{default:d(()=>[l(S,null,{default:d(()=>[r(f(a.mdiDotsVertical),1)]),_:1})]),_:2},1040)]),default:d(()=>[o("div",gs,[n.item.group==="c"?(i(),_(V,{key:0,onClick:s.toggleRead},{default:d(()=>[l(R,null,{default:d(()=>[r(f(s.markReadText),1)]),_:1})]),_:1},8,["onClick"])):(i(),_(u,{key:1,"button-text":s.markReadText,"title-text":s.markReadText,"confirm-text":s.confirmText,"object-name":n.item.name,onConfirm:s.toggleRead,onCancel:t[1]||(t[1]=c=>a.showMenu=!1)},null,8,["button-text","title-text","confirm-text","object-name","onConfirm"]))])]),_:1},8,["modelValue"])}const we=y(fs,[["render",bs]]);const ys={name:"BrowserCardControls",components:{BrowserCardMenu:we,MetadataButton:vt},props:{item:{type:Object,required:!0},eyeOpen:{type:Boolean,required:!0}},data(){return{mdiEye:Q,mdiEyeOff:K}},computed:{eyeIcon:function(){return this.eyeOpen?Q:K}}},vs={class:"cardControls"};function ws(e,t,n,h,a,s){const u=B("MetadataButton"),c=we;return i(),g("div",vs,[n.item.group==="c"?(i(),_(S,{key:0,class:"eye"},{default:d(()=>[r(f(s.eyeIcon),1)]),_:1})):v("",!0),l(u,{group:n.item.group,pk:n.item.pk,children:n.item.childCount},null,8,["group","pk","children"]),l(c,{item:n.item},null,8,["item"])])}const Ss=y(ys,[["render",ws],["__scopeId","data-v-dc469596"]]);const Bs={name:"BrowserCardSubtitle",props:{item:{type:Object,required:!0}},orderByCache:"sort_name",computed:{...w(p,{orderBy:e=>e.settings.orderBy,zeroPad:e=>e.page.zeroPad}),headerName:function(){let e;switch(this.item.group){case"i":e=this.item.publisherName;break;case"v":e=this.item.seriesName;break;case"c":e=this.$route.params.group==="f"?tt(this.item,this.zeroPad):ot(this.item,this.zeroPad);break;default:e=""}return e},displayName:function(){return this.item.group==="v"?ee(this.item.name):this.item.name},linkLabel:function(){let e="";return e+=this.item.group==="c"?"Read":"Browse to",e+=" "+this.headerName,e}}},Cs={class:"browserLink cardSubtitle text-caption"},ks={key:0,class:"headerName"},Ts={class:"displayName"};function Vs(e,t,n,h,a,s){return i(),g("div",Cs,[s.headerName?(i(),g("div",ks,f(s.headerName),1)):v("",!0),o("div",Ts,f(s.displayName),1)])}const $s=y(Bs,[["render",Vs],["__scopeId","data-v-2485e87e"]]),xs=new Set(["iPad","iPad Simulator","iPhone","iPhone Simulator","iPod","iPod Simulator"]),Ms=xs.has(navigator.platform),Is="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0||window.matchMedia("(any-hover: none)").matches;const Fs=st({modelValue:Boolean,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},...nt(),...rt(),...at(),...it({transition:"fade-transition"})},"VLazy"),Ps=lt()({name:"VLazy",directives:{intersect:ut},props:Fs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{dimensionStyles:h}=dt(e),a=ct(e,"modelValue");function s(u){a.value||(a.value=u)}return mt(()=>ae(l(e.tag,{class:["v-lazy",e.class],style:[h.value,e.style]},{default:()=>[a.value&&l(pt,{transition:e.transition,appear:!0},{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n)]}})]}),[[_t("intersect"),{handler:s,options:e.options},null]])),{}}}),J=100,Rs=-170,Ns={name:"BrowserCard",components:{BookCover:me,BrowserCardControls:Ss,BrowserCardSubtitle:$s,OrderByCaption:ve},props:{item:{type:Object,required:!0}},data(){return{doubleTapHovered:!Is||Ms}},computed:{linkLabel:function(){let e="";return e+=this.item.group==="c"?"Read":"Browse to",e+=" "+this.item.headerName,e},toRoute:function(){return this.doubleTapHovered?this.item.group==="c"?wt(this.item):{name:"browser",params:{group:this.item.group,pk:this.item.pk,page:1}}:{}},progressBackgroundColor:function(){return this.item.progress?this.$vuetify.theme.current.colors.row:"inherit"}},mounted(){this.scrollToMe()},methods:{scrollToMe:function(){if(!this.$route.hash||this.$route.hash.split("-")[1]!==String(this.item.pk))return;const e=this.$el;if(!e){console.warn("No element found to scroll to!");return}setTimeout(function(){e.scrollIntoView(),setTimeout(function(){window.scrollBy(0,Rs)},J)},J)}}},Os={class:"browserCardTop"},Ds={key:1,class:"cardCoverOverlay"};function Ls(e,t,n,h,a,s){const u=me,c=B("BrowserCardControls"),b=B("router-link"),$=B("BrowserCardSubtitle"),P=ve;return i(),_(Ps,{id:`card-${n.item.pk}`,transition:"scale-transition"},{default:d(()=>[o("div",{class:"browserCardCoverWrapper",onClick:t[0]||(t[0]=j=>a.doubleTapHovered=!0)},[o("div",Os,[l(u,{"cover-pk":n.item.coverPk,group:n.item.group,"child-count":n.item.childCount,finished:n.item.finished},null,8,["cover-pk","group","child-count","finished"]),s.toRoute?(i(),_(b,{key:0,class:"cardCoverOverlay",to:s.toRoute,"aria-label":s.linkLabel},{default:d(()=>[l(c,{item:n.item,"eye-open":!0},null,8,["item"])]),_:1},8,["to","aria-label"])):(i(),g("div",Ds,[l(c,{item:n.item,"eye-open":!1},null,8,["item"])])),ae(l(G,{class:"bookCoverProgress","background-color":s.progressBackgroundColor,"model-value":n.item.progress,"aria-label":`${n.item.progress}% read`,rounded:"",height:"2"},null,8,["background-color","model-value","aria-label"]),[[ht,n.item.progress]]),l($,{item:n.item},null,8,["item"])]),l(P,{item:n.item},null,8,["item"])])]),_:1},8,["id"])}const Hs=y(Ns,[["render",Ls],["__scopeId","data-v-f9f9dd56"]]);const Us={name:"BrowserMain",components:{BrowserCard:Hs,PlaceholderLoading:_e},data(){return{mdiMenu:ft,mdiOpenInNew:se}},computed:{...w(x,{adminFlags:e=>e.adminFlags}),...T(x,["isUserAdmin","isCodexViewable"]),...w(p,{librariesExist:e=>e.page.librariesExist,showPlaceHolder:function(e){return this.adminFlags.nonUsers===void 0||this.isCodexViewable&&(this.librariesExist==null||!e.browserPageLoaded)},cards:e=>[...e.page.groups??[],...e.page.books??[]],padFooter:e=>e.page.numPages>1}),showBrowseItems(){return this.cards&&this.cards.length>0&&this.isCodexViewable&&!this.showPlaceHolder}}},q=e=>(D("data-v-b023c894"),e=e(),L(),e),As={key:0,id:"browsePaneContainer"},Gs={key:1,id:"announce"},Es={key:2,id:"announce"},qs={key:0},js={key:0},zs={key:3,id:"announce"},Ys=q(()=>o("div",{id:"noComicsFound"},"No comics found for these filters",-1)),Ws=[Ys],Qs={key:4,id:"announce"},Ks=q(()=>o("h1",null,"No libraries have been added to Codex yet",-1)),Xs={key:0},Js={key:1},Zs=q(()=>o("h2",null," An administrator must login to add some libraries that contain comics ",-1)),en={href:"https://github.com/ajslater/codex#-administration",target:"_blank"};function tn(e,t,n,h,a,s){const u=B("BrowserCard"),c=_e;return i(),_(ie,{id:"browsePane",class:O({padFooter:e.padFooter})},{default:d(()=>[s.showBrowseItems?(i(),g("div",As,[(i(!0),g(M,null,F(e.cards,b=>(i(),_(u,{key:`${b.group}${b.pk}`,item:b},null,8,["item"]))),128))])):e.showPlaceHolder?(i(),g("div",Gs,[l(c,{class:"placeholder"})])):e.isCodexViewable?e.librariesExist?(i(),g("div",zs,Ws)):(i(),g("div",Qs,[Ks,e.isUserAdmin?(i(),g("h2",Xs,[r(" Use the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r(" menu to navigate to the admin panel and add a comic library. ")])):(i(),g("div",Js,[Zs,o("h3",null,[r(" You may log in or register with the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r("menu ")])])),o("a",en,[r("See the README "),l(S,null,{default:d(()=>[r(f(a.mdiOpenInNew),1)]),_:1})]),r(" for detailed instructions. ")])):(i(),g("div",Es,[o("h1",null,[r(" You may log in "),e.adminFlags.register?(i(),g("span",qs,"or register")):v("",!0),r(" with the top right "),l(S,null,{default:d(()=>[r(f(a.mdiMenu),1)]),_:1}),r(" menu ")]),e.adminFlags.register?v("",!0):(i(),g("h1",js,"Registration is disabled"))]))]),_:1},8,["class"])}const on=y(Us,[["render",tn],["__scopeId","data-v-b023c894"]]);const sn={name:"MainBrowser",components:{BrowserFilterToolbar:us,BrowserMain:on,BrowserNavToolbar:he,BrowserTitleToolbar:be,SettingsDrawer:le},data(){return{BrowserSettingsPanel:gt(Po)}},computed:{...w(x,{user:e=>e.user}),...T(x,["isCodexViewable"])},watch:{$route:function(){window.scrollTo(0,0),this.loadBrowserPage()},user:function(){this.loadSettings()},isCodexViewable:function(){this.loadSettings()}},created(){E().isSettingsDrawerOpen=!1,this.loadSettings()},methods:{...C(p,["loadBrowserPage","loadSettings","getVersions"])}},nn={class:"codexToolbar"};function rn(e,t,n,h,a,s){const u=B("BrowserFilterToolbar"),c=be,b=B("BrowserMain"),$=he,P=le;return i(),g(M,null,[l(ie,{id:"browser"},{default:d(()=>[o("header",nn,[l(u),l(c)]),l(b),l($)]),_:1}),l(P,{title:"Browser Settings",panel:a.BrowserSettingsPanel,temporary:""},null,8,["panel"])],64)}const dn=y(sn,[["render",rn],["__scopeId","data-v-2b4da8f0"]]);export{dn as default};
@@ -0,0 +1 @@
1
+ import{c as s,C as d,o as _,e as i,w as r,bl as p,i as t,t as a,g as u,p as l,q as h}from"./admin-12749881.js";const n={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(n);const f={name:"HttpError",data(){return{}},computed:{code:function(){return+this.$route.params.code},title:function(){let e=n[this.code];return e||(e="Unknown Error"),e}}},m=e=>(l("data-v-e215aa2c"),e=e(),h(),e),k={id:"httpCode"},v={id:"title"},x=m(()=>t("h2",null,"Codex Home",-1));function E(e,S,C,I,g,o){const c=d("router-link");return _(),i(p,{id:"main"},{default:r(()=>[t("h1",k,a(o.code),1),t("h1",v,a(o.title),1),u(c,{id:"link",to:{name:"home"}},{default:r(()=>[x]),_:1})]),_:1})}const B=s(f,[["render",E],["__scopeId","data-v-e215aa2c"]]);export{B as default};
@@ -0,0 +1 @@
1
+ import{c as s,C as d,o as _,e as i,w as r,bl as p,i as t,t as a,g as u,p as l,q as h}from"./admin-12749881.js";const n={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(n);const f={name:"HttpError",data(){return{}},computed:{code:function(){return+this.$route.params.code},title:function(){let e=n[this.code];return e||(e="Unknown Error"),e}}},m=e=>(l("data-v-e215aa2c"),e=e(),h(),e),k={id:"httpCode"},v={id:"title"},x=m(()=>t("h2",null,"Codex Home",-1));function E(e,S,C,I,g,o){const c=d("router-link");return _(),i(p,{id:"main"},{default:r(()=>[t("h1",k,a(o.code),1),t("h1",v,a(o.title),1),u(c,{id:"link",to:{name:"home"}},{default:r(()=>[x]),_:1})]),_:1})}const B=s(f,[["render",E],["__scopeId","data-v-e215aa2c"]]);export{B as default};