codex 1.7.11a0__py3-none-any.whl → 1.7.13__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 (652) hide show
  1. codex/choices/choices_to_json.py +1 -1
  2. codex/choices/reader.py +1 -0
  3. codex/librarian/bookmark/bookmarkd.py +46 -14
  4. codex/librarian/bookmark/tasks.py +7 -0
  5. codex/librarian/bookmark/update.py +1 -22
  6. codex/librarian/bookmark/user_active.py +37 -0
  7. codex/migrations/0013_int_issue_count_longer_charfields.py +1 -1
  8. codex/run.py +1 -1
  9. codex/serializers/reader.py +1 -0
  10. codex/serializers/route.py +3 -1
  11. codex/settings/settings.py +15 -14
  12. codex/startup.py +1 -2
  13. codex/static_root/assets/VCheckbox-CmDJN2RH.c0c8660af177.js +1 -0
  14. codex/static_root/assets/VCheckbox-CmDJN2RH.c0c8660af177.js.br +0 -0
  15. codex/static_root/assets/VCheckbox-CmDJN2RH.c0c8660af177.js.gz +0 -0
  16. codex/static_root/assets/VCheckbox-CmDJN2RH.js +1 -0
  17. codex/static_root/assets/VCheckbox-CmDJN2RH.js.br +0 -0
  18. codex/static_root/assets/VCheckbox-CmDJN2RH.js.gz +0 -0
  19. codex/static_root/assets/VCheckboxBtn-07Vspsxn.377350162ca6.js +1 -0
  20. codex/static_root/assets/VCheckboxBtn-07Vspsxn.377350162ca6.js.br +0 -0
  21. codex/static_root/assets/VCheckboxBtn-07Vspsxn.377350162ca6.js.gz +0 -0
  22. codex/static_root/assets/VCheckboxBtn-07Vspsxn.js +1 -0
  23. codex/static_root/assets/VCheckboxBtn-07Vspsxn.js.br +0 -0
  24. codex/static_root/assets/VCheckboxBtn-07Vspsxn.js.gz +0 -0
  25. codex/static_root/assets/VCombobox-CuTDA3lY.b53f8e0b7d58.js +1 -0
  26. codex/static_root/assets/VCombobox-CuTDA3lY.b53f8e0b7d58.js.br +0 -0
  27. codex/static_root/assets/VCombobox-CuTDA3lY.b53f8e0b7d58.js.gz +0 -0
  28. codex/static_root/assets/VCombobox-CuTDA3lY.js +1 -0
  29. codex/static_root/assets/VCombobox-CuTDA3lY.js.br +0 -0
  30. codex/static_root/assets/VCombobox-CuTDA3lY.js.gz +0 -0
  31. codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css +1 -0
  32. codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.br +0 -0
  33. codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.gz +0 -0
  34. codex/static_root/assets/VCombobox-DHFthaP6.css +1 -0
  35. codex/static_root/assets/VCombobox-DHFthaP6.css.br +0 -0
  36. codex/static_root/assets/VCombobox-DHFthaP6.css.gz +0 -0
  37. codex/static_root/assets/VDialog-DRj4eBrO.e2ce5d20029b.js +1 -0
  38. codex/static_root/assets/VDialog-DRj4eBrO.e2ce5d20029b.js.br +0 -0
  39. codex/static_root/assets/VDialog-DRj4eBrO.e2ce5d20029b.js.gz +0 -0
  40. codex/static_root/assets/VDialog-DRj4eBrO.js +1 -0
  41. codex/static_root/assets/VDialog-DRj4eBrO.js.br +0 -0
  42. codex/static_root/assets/VDialog-DRj4eBrO.js.gz +0 -0
  43. codex/static_root/assets/VDivider-D1t2hkjV.a9cd2d5b286a.js +1 -0
  44. codex/static_root/assets/VDivider-D1t2hkjV.a9cd2d5b286a.js.br +0 -0
  45. codex/static_root/assets/VDivider-D1t2hkjV.a9cd2d5b286a.js.gz +0 -0
  46. codex/static_root/assets/VDivider-D1t2hkjV.js +1 -0
  47. codex/static_root/assets/VDivider-D1t2hkjV.js.br +0 -0
  48. codex/static_root/assets/VDivider-D1t2hkjV.js.gz +0 -0
  49. codex/static_root/assets/VExpansionPanels-B-5dXRRB.b71e928c960a.js +1 -0
  50. codex/static_root/assets/VExpansionPanels-B-5dXRRB.b71e928c960a.js.br +0 -0
  51. codex/static_root/assets/VExpansionPanels-B-5dXRRB.b71e928c960a.js.gz +0 -0
  52. codex/static_root/assets/VExpansionPanels-B-5dXRRB.js +1 -0
  53. codex/static_root/assets/VExpansionPanels-B-5dXRRB.js.br +0 -0
  54. codex/static_root/assets/VExpansionPanels-B-5dXRRB.js.gz +0 -0
  55. codex/static_root/assets/VForm-Be9DdO0x.0b54c0d9e7ff.js +1 -0
  56. codex/static_root/assets/VForm-Be9DdO0x.0b54c0d9e7ff.js.br +0 -0
  57. codex/static_root/assets/VForm-Be9DdO0x.0b54c0d9e7ff.js.gz +0 -0
  58. codex/static_root/assets/VForm-Be9DdO0x.js +1 -0
  59. codex/static_root/assets/VForm-Be9DdO0x.js.br +0 -0
  60. codex/static_root/assets/VForm-Be9DdO0x.js.gz +0 -0
  61. codex/static_root/assets/VRadioGroup-_mPqHM3O.41b7c1801cfc.js +1 -0
  62. codex/static_root/assets/VRadioGroup-_mPqHM3O.41b7c1801cfc.js.br +0 -0
  63. codex/static_root/assets/VRadioGroup-_mPqHM3O.41b7c1801cfc.js.gz +0 -0
  64. codex/static_root/assets/VRadioGroup-_mPqHM3O.js +1 -0
  65. codex/static_root/assets/VRadioGroup-_mPqHM3O.js.br +0 -0
  66. codex/static_root/assets/VRadioGroup-_mPqHM3O.js.gz +0 -0
  67. codex/static_root/assets/VSelect-BbT1aJkP.ab9bbb187356.js +1 -0
  68. codex/static_root/assets/VSelect-BbT1aJkP.ab9bbb187356.js.br +0 -0
  69. codex/static_root/assets/VSelect-BbT1aJkP.ab9bbb187356.js.gz +0 -0
  70. codex/static_root/assets/VSelect-BbT1aJkP.js +1 -0
  71. codex/static_root/assets/VSelect-BbT1aJkP.js.br +0 -0
  72. codex/static_root/assets/VSelect-BbT1aJkP.js.gz +0 -0
  73. codex/static_root/assets/{VSelect-CP_CVb8s.6309f7bf17bb.css → VSelect-CKXqRkBF.a8be1e193eba.css} +1 -1
  74. codex/static_root/assets/VSelect-CKXqRkBF.a8be1e193eba.css.br +0 -0
  75. codex/static_root/assets/VSelect-CKXqRkBF.a8be1e193eba.css.gz +0 -0
  76. codex/static_root/assets/{VSelect-CP_CVb8s.css → VSelect-CKXqRkBF.css} +1 -1
  77. codex/static_root/assets/VSelect-CKXqRkBF.css.br +0 -0
  78. codex/static_root/assets/VSelect-CKXqRkBF.css.gz +0 -0
  79. codex/static_root/assets/VSelectionControl-DbdMme4i.c547026ebdce.js +1 -0
  80. codex/static_root/assets/VSelectionControl-DbdMme4i.c547026ebdce.js.br +0 -0
  81. codex/static_root/assets/VSelectionControl-DbdMme4i.c547026ebdce.js.gz +0 -0
  82. codex/static_root/assets/VSelectionControl-DbdMme4i.js +1 -0
  83. codex/static_root/assets/VSelectionControl-DbdMme4i.js.br +0 -0
  84. codex/static_root/assets/VSelectionControl-DbdMme4i.js.gz +0 -0
  85. codex/static_root/assets/VSelectionControl-RqBzwjYi.css +1 -0
  86. codex/static_root/assets/VSelectionControl-RqBzwjYi.css.br +0 -0
  87. codex/static_root/assets/VSelectionControl-RqBzwjYi.css.gz +0 -0
  88. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css +1 -0
  89. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.br +0 -0
  90. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.gz +0 -0
  91. codex/static_root/assets/VTable-C7Pj2AU0.9358b74f1ec2.js +1 -0
  92. codex/static_root/assets/VTable-C7Pj2AU0.9358b74f1ec2.js.br +0 -0
  93. codex/static_root/assets/VTable-C7Pj2AU0.9358b74f1ec2.js.gz +0 -0
  94. codex/static_root/assets/VTable-C7Pj2AU0.js +1 -0
  95. codex/static_root/assets/VTable-C7Pj2AU0.js.br +0 -0
  96. codex/static_root/assets/VTable-C7Pj2AU0.js.gz +0 -0
  97. codex/static_root/assets/{VTable-BnxSZ_W5.c36f0a6a30cf.css → VTable-CHRVGI94.0a75643f6486.css} +1 -1
  98. codex/static_root/assets/VTable-CHRVGI94.0a75643f6486.css.br +0 -0
  99. codex/static_root/assets/VTable-CHRVGI94.0a75643f6486.css.gz +0 -0
  100. codex/static_root/assets/{VTable-BnxSZ_W5.css → VTable-CHRVGI94.css} +1 -1
  101. codex/static_root/assets/VTable-CHRVGI94.css.br +0 -0
  102. codex/static_root/assets/VTable-CHRVGI94.css.gz +0 -0
  103. codex/static_root/assets/VWindowItem-B9xi23cd.ee96259ae03d.js +1 -0
  104. codex/static_root/assets/VWindowItem-B9xi23cd.ee96259ae03d.js.br +0 -0
  105. codex/static_root/assets/VWindowItem-B9xi23cd.ee96259ae03d.js.gz +0 -0
  106. codex/static_root/assets/VWindowItem-B9xi23cd.js +1 -0
  107. codex/static_root/assets/VWindowItem-B9xi23cd.js.br +0 -0
  108. codex/static_root/assets/VWindowItem-B9xi23cd.js.gz +0 -0
  109. codex/static_root/assets/{admin-Bxwc8451.b2a8c85c5c82.js → admin-C78J3iIT.e0499821711c.js} +1 -1
  110. codex/static_root/assets/admin-C78J3iIT.e0499821711c.js.br +0 -0
  111. codex/static_root/assets/admin-C78J3iIT.e0499821711c.js.gz +0 -0
  112. codex/static_root/assets/{admin-Bxwc8451.js → admin-C78J3iIT.js} +1 -1
  113. codex/static_root/assets/admin-C78J3iIT.js.br +0 -0
  114. codex/static_root/assets/admin-C78J3iIT.js.gz +0 -0
  115. codex/static_root/assets/admin-DycvhYet.33740bd797c9.js +1 -0
  116. codex/static_root/assets/admin-DycvhYet.33740bd797c9.js.br +0 -0
  117. codex/static_root/assets/admin-DycvhYet.33740bd797c9.js.gz +0 -0
  118. codex/static_root/assets/admin-DycvhYet.js +1 -0
  119. codex/static_root/assets/admin-DycvhYet.js.br +0 -0
  120. codex/static_root/assets/admin-DycvhYet.js.gz +0 -0
  121. codex/static_root/assets/{admin-C3iCIUnm.06cb213f624d.css → admin-klMr_GZK.3784e4f1d624.css} +1 -1
  122. codex/static_root/assets/admin-klMr_GZK.3784e4f1d624.css.br +0 -0
  123. codex/static_root/assets/admin-klMr_GZK.3784e4f1d624.css.gz +0 -0
  124. codex/static_root/assets/{admin-C3iCIUnm.css → admin-klMr_GZK.css} +1 -1
  125. codex/static_root/assets/admin-klMr_GZK.css.br +0 -0
  126. codex/static_root/assets/admin-klMr_GZK.css.gz +0 -0
  127. codex/static_root/assets/admin-menu-g8qk-zrV.945e67b971e8.js +1 -0
  128. codex/static_root/assets/admin-menu-g8qk-zrV.945e67b971e8.js.br +0 -0
  129. codex/static_root/assets/admin-menu-g8qk-zrV.945e67b971e8.js.gz +0 -0
  130. codex/static_root/assets/admin-menu-g8qk-zrV.js +1 -0
  131. codex/static_root/assets/admin-menu-g8qk-zrV.js.br +0 -0
  132. codex/static_root/assets/admin-menu-g8qk-zrV.js.gz +0 -0
  133. codex/static_root/assets/{admin-settings-button-progress-CLrIYn4d.cec2cfd322a1.js → admin-settings-button-progress-CPzM-FJJ.1d6d002ada95.js} +1 -1
  134. codex/static_root/assets/admin-settings-button-progress-CPzM-FJJ.1d6d002ada95.js.br +0 -0
  135. codex/static_root/assets/admin-settings-button-progress-CPzM-FJJ.1d6d002ada95.js.gz +0 -0
  136. codex/static_root/assets/{admin-settings-button-progress-CLrIYn4d.js → admin-settings-button-progress-CPzM-FJJ.js} +1 -1
  137. codex/static_root/assets/admin-settings-button-progress-CPzM-FJJ.js.br +0 -0
  138. codex/static_root/assets/admin-settings-button-progress-CPzM-FJJ.js.gz +0 -0
  139. codex/static_root/assets/browser-DJgssiJu.018d043b36a0.js +1 -0
  140. codex/static_root/assets/browser-DJgssiJu.018d043b36a0.js.br +0 -0
  141. codex/static_root/assets/browser-DJgssiJu.018d043b36a0.js.gz +0 -0
  142. codex/static_root/assets/browser-DJgssiJu.js +1 -0
  143. codex/static_root/assets/browser-DJgssiJu.js.br +0 -0
  144. codex/static_root/assets/browser-DJgssiJu.js.gz +0 -0
  145. codex/static_root/assets/{browser-Bf8JG2CE.3af978c1f766.css → browser-sNm790x9.305a6a4f38fd.css} +1 -1
  146. codex/static_root/assets/browser-sNm790x9.305a6a4f38fd.css.br +0 -0
  147. codex/static_root/assets/browser-sNm790x9.305a6a4f38fd.css.gz +0 -0
  148. codex/static_root/assets/{browser-Bf8JG2CE.css → browser-sNm790x9.css} +1 -1
  149. codex/static_root/assets/browser-sNm790x9.css.br +0 -0
  150. codex/static_root/assets/browser-sNm790x9.css.gz +0 -0
  151. codex/static_root/assets/{change-password-dialog-Bw5_buVm.d199b40591de.js → change-password-dialog-CNWUpsff.2a6249951bb6.js} +1 -1
  152. codex/static_root/assets/change-password-dialog-CNWUpsff.2a6249951bb6.js.br +0 -0
  153. codex/static_root/assets/change-password-dialog-CNWUpsff.2a6249951bb6.js.gz +0 -0
  154. codex/static_root/assets/{change-password-dialog-Bw5_buVm.js → change-password-dialog-CNWUpsff.js} +1 -1
  155. codex/static_root/assets/change-password-dialog-CNWUpsff.js.br +0 -0
  156. codex/static_root/assets/change-password-dialog-CNWUpsff.js.gz +0 -0
  157. codex/static_root/assets/confirm-dialog-B4fmqtXn.d78277f0b265.js +1 -0
  158. codex/static_root/assets/confirm-dialog-B4fmqtXn.d78277f0b265.js.br +0 -0
  159. codex/static_root/assets/confirm-dialog-B4fmqtXn.d78277f0b265.js.gz +0 -0
  160. codex/static_root/assets/confirm-dialog-B4fmqtXn.js +1 -0
  161. codex/static_root/assets/confirm-dialog-B4fmqtXn.js.br +0 -0
  162. codex/static_root/assets/confirm-dialog-B4fmqtXn.js.gz +0 -0
  163. codex/static_root/assets/datetime-column-BC6Dncpu.cdbf0b2cdc9a.js +1 -0
  164. codex/static_root/assets/datetime-column-BC6Dncpu.cdbf0b2cdc9a.js.br +0 -0
  165. codex/static_root/assets/datetime-column-BC6Dncpu.cdbf0b2cdc9a.js.gz +0 -0
  166. codex/static_root/assets/datetime-column-BC6Dncpu.js +1 -0
  167. codex/static_root/assets/datetime-column-BC6Dncpu.js.br +0 -0
  168. codex/static_root/assets/datetime-column-BC6Dncpu.js.gz +0 -0
  169. codex/static_root/assets/filter-wbh_0cB-.a2b2422906d8.js +1 -0
  170. codex/static_root/assets/filter-wbh_0cB-.a2b2422906d8.js.br +0 -0
  171. codex/static_root/assets/filter-wbh_0cB-.a2b2422906d8.js.gz +0 -0
  172. codex/static_root/assets/filter-wbh_0cB-.js +1 -0
  173. codex/static_root/assets/filter-wbh_0cB-.js.br +0 -0
  174. codex/static_root/assets/filter-wbh_0cB-.js.gz +0 -0
  175. codex/static_root/assets/{flag-tab-Bfd3wqbW.eb77780e8a45.js → flag-tab-BhehN8hQ.584e909ecdd6.js} +1 -1
  176. codex/static_root/assets/flag-tab-BhehN8hQ.584e909ecdd6.js.br +0 -0
  177. codex/static_root/assets/flag-tab-BhehN8hQ.584e909ecdd6.js.gz +0 -0
  178. codex/static_root/assets/{flag-tab-Bfd3wqbW.js → flag-tab-BhehN8hQ.js} +1 -1
  179. codex/static_root/assets/flag-tab-BhehN8hQ.js.br +0 -0
  180. codex/static_root/assets/flag-tab-BhehN8hQ.js.gz +0 -0
  181. codex/static_root/assets/forwardRefs-CXZy2GSt.0ea45a864dd0.css +1 -0
  182. codex/static_root/assets/forwardRefs-CXZy2GSt.0ea45a864dd0.css.br +0 -0
  183. codex/static_root/assets/forwardRefs-CXZy2GSt.0ea45a864dd0.css.gz +0 -0
  184. codex/static_root/assets/forwardRefs-CXZy2GSt.css +1 -0
  185. codex/static_root/assets/forwardRefs-CXZy2GSt.css.br +0 -0
  186. codex/static_root/assets/forwardRefs-CXZy2GSt.css.gz +0 -0
  187. codex/static_root/assets/forwardRefs-DG6cgrKs.63214695fc2a.js +1 -0
  188. codex/static_root/assets/forwardRefs-DG6cgrKs.63214695fc2a.js.br +0 -0
  189. codex/static_root/assets/forwardRefs-DG6cgrKs.63214695fc2a.js.gz +0 -0
  190. codex/static_root/assets/forwardRefs-DG6cgrKs.js +1 -0
  191. codex/static_root/assets/forwardRefs-DG6cgrKs.js.br +0 -0
  192. codex/static_root/assets/forwardRefs-DG6cgrKs.js.gz +0 -0
  193. codex/static_root/assets/group-tab-BZExFXC-.e99510b0aa5e.js +1 -0
  194. codex/static_root/assets/group-tab-BZExFXC-.e99510b0aa5e.js.br +0 -0
  195. codex/static_root/assets/group-tab-BZExFXC-.e99510b0aa5e.js.gz +0 -0
  196. codex/static_root/assets/group-tab-BZExFXC-.js +1 -0
  197. codex/static_root/assets/group-tab-BZExFXC-.js.br +0 -0
  198. codex/static_root/assets/group-tab-BZExFXC-.js.gz +0 -0
  199. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css +1 -0
  200. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css.br +0 -0
  201. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css.gz +0 -0
  202. codex/static_root/assets/group-tab-Bi681uR0.css +1 -0
  203. codex/static_root/assets/group-tab-Bi681uR0.css.br +0 -0
  204. codex/static_root/assets/group-tab-Bi681uR0.css.gz +0 -0
  205. codex/static_root/assets/http-error-BHy1v31U.516903532e16.js +1 -0
  206. codex/static_root/assets/http-error-BHy1v31U.516903532e16.js.br +0 -0
  207. codex/static_root/assets/http-error-BHy1v31U.516903532e16.js.gz +0 -0
  208. codex/static_root/assets/http-error-BHy1v31U.js +1 -0
  209. codex/static_root/assets/http-error-BHy1v31U.js.br +0 -0
  210. codex/static_root/assets/http-error-BHy1v31U.js.gz +0 -0
  211. codex/static_root/assets/index-BxnlX5gb.b6443a0b48e3.js +1 -0
  212. codex/static_root/assets/index-BxnlX5gb.b6443a0b48e3.js.br +0 -0
  213. codex/static_root/assets/index-BxnlX5gb.b6443a0b48e3.js.gz +0 -0
  214. codex/static_root/assets/index-BxnlX5gb.js +1 -0
  215. codex/static_root/assets/index-BxnlX5gb.js.br +0 -0
  216. codex/static_root/assets/index-BxnlX5gb.js.gz +0 -0
  217. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css +1 -0
  218. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.br +3 -0
  219. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.gz +0 -0
  220. codex/static_root/assets/index-Czf-fUM7.css +1 -0
  221. codex/static_root/assets/index-Czf-fUM7.css.br +3 -0
  222. codex/static_root/assets/index-Czf-fUM7.css.gz +0 -0
  223. codex/static_root/assets/library-tab-Cq-D776f.89f410e10a27.js +1 -0
  224. codex/static_root/assets/library-tab-Cq-D776f.89f410e10a27.js.br +0 -0
  225. codex/static_root/assets/library-tab-Cq-D776f.89f410e10a27.js.gz +0 -0
  226. codex/static_root/assets/library-tab-Cq-D776f.js +1 -0
  227. codex/static_root/assets/library-tab-Cq-D776f.js.br +0 -0
  228. codex/static_root/assets/library-tab-Cq-D776f.js.gz +0 -0
  229. codex/static_root/assets/main-NV7Sm4nK.ef4ca8f0fd9f.js +39 -0
  230. codex/static_root/assets/main-NV7Sm4nK.ef4ca8f0fd9f.js.br +0 -0
  231. codex/static_root/assets/main-NV7Sm4nK.ef4ca8f0fd9f.js.gz +0 -0
  232. codex/static_root/assets/main-NV7Sm4nK.js +39 -0
  233. codex/static_root/assets/main-NV7Sm4nK.js.br +0 -0
  234. codex/static_root/assets/main-NV7Sm4nK.js.gz +0 -0
  235. codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css → main-Of3aYkZ7.91c75c4fbaa6.css} +1 -1
  236. codex/static_root/assets/main-Of3aYkZ7.91c75c4fbaa6.css.br +0 -0
  237. codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css.gz → main-Of3aYkZ7.91c75c4fbaa6.css.gz} +0 -0
  238. codex/static_root/assets/{main-K8cER0IH.css → main-Of3aYkZ7.css} +1 -1
  239. codex/static_root/assets/main-Of3aYkZ7.css.br +0 -0
  240. codex/static_root/assets/{main-K8cER0IH.css.gz → main-Of3aYkZ7.css.gz} +0 -0
  241. codex/static_root/assets/pager-full-pdf-DOYtfHYl.55ef88bc32dd.js +1 -0
  242. codex/static_root/assets/pager-full-pdf-DOYtfHYl.55ef88bc32dd.js.br +0 -0
  243. codex/static_root/assets/pager-full-pdf-DOYtfHYl.55ef88bc32dd.js.gz +0 -0
  244. codex/static_root/assets/pager-full-pdf-DOYtfHYl.js +1 -0
  245. codex/static_root/assets/pager-full-pdf-DOYtfHYl.js.br +0 -0
  246. codex/static_root/assets/pager-full-pdf-DOYtfHYl.js.gz +0 -0
  247. codex/static_root/assets/pagination-toolbar-BpWqCTpI.eae1ff66607a.js +1 -0
  248. codex/static_root/assets/pagination-toolbar-BpWqCTpI.eae1ff66607a.js.br +0 -0
  249. codex/static_root/assets/pagination-toolbar-BpWqCTpI.eae1ff66607a.js.gz +0 -0
  250. codex/static_root/assets/pagination-toolbar-BpWqCTpI.js +1 -0
  251. codex/static_root/assets/pagination-toolbar-BpWqCTpI.js.br +0 -0
  252. codex/static_root/assets/pagination-toolbar-BpWqCTpI.js.gz +0 -0
  253. codex/static_root/assets/{pagination-toolbar-CzT9Hc3f.487e647604e2.css → pagination-toolbar-aHRrdz48.2cbd38f9256c.css} +1 -1
  254. codex/static_root/assets/pagination-toolbar-aHRrdz48.2cbd38f9256c.css.br +0 -0
  255. codex/static_root/assets/pagination-toolbar-aHRrdz48.2cbd38f9256c.css.gz +0 -0
  256. codex/static_root/assets/{pagination-toolbar-CzT9Hc3f.css → pagination-toolbar-aHRrdz48.css} +1 -1
  257. codex/static_root/assets/pagination-toolbar-aHRrdz48.css.br +0 -0
  258. codex/static_root/assets/pagination-toolbar-aHRrdz48.css.gz +0 -0
  259. codex/static_root/assets/{pdf-doc-CW06S-ga.e7c567b9d4cd.js → pdf-doc-DAUp5U7y.821d344d6401.js} +1 -1
  260. codex/static_root/assets/pdf-doc-DAUp5U7y.821d344d6401.js.br +0 -0
  261. codex/static_root/assets/pdf-doc-DAUp5U7y.821d344d6401.js.gz +0 -0
  262. codex/static_root/assets/{pdf-doc-CW06S-ga.js → pdf-doc-DAUp5U7y.js} +1 -1
  263. codex/static_root/assets/pdf-doc-DAUp5U7y.js.br +0 -0
  264. codex/static_root/assets/pdf-doc-DAUp5U7y.js.gz +0 -0
  265. codex/static_root/assets/reader-BjIgRfH2.e9fae80f3d09.js +2 -0
  266. codex/static_root/assets/reader-BjIgRfH2.e9fae80f3d09.js.br +0 -0
  267. codex/static_root/assets/reader-BjIgRfH2.e9fae80f3d09.js.gz +0 -0
  268. codex/static_root/assets/reader-BjIgRfH2.js +2 -0
  269. codex/static_root/assets/reader-BjIgRfH2.js.br +0 -0
  270. codex/static_root/assets/reader-BjIgRfH2.js.gz +0 -0
  271. codex/static_root/assets/reader-D7Bx0Vcv.34af07084fcb.css +1 -0
  272. codex/static_root/assets/reader-D7Bx0Vcv.34af07084fcb.css.br +0 -0
  273. codex/static_root/assets/reader-D7Bx0Vcv.34af07084fcb.css.gz +0 -0
  274. codex/static_root/assets/reader-D7Bx0Vcv.css +1 -0
  275. codex/static_root/assets/reader-D7Bx0Vcv.css.br +0 -0
  276. codex/static_root/assets/reader-D7Bx0Vcv.css.gz +0 -0
  277. codex/static_root/assets/relation-chips-Bp-GmsDz.fdd18ac6b6f7.js +1 -0
  278. codex/static_root/assets/relation-chips-Bp-GmsDz.fdd18ac6b6f7.js.br +0 -0
  279. codex/static_root/assets/relation-chips-Bp-GmsDz.fdd18ac6b6f7.js.gz +0 -0
  280. codex/static_root/assets/relation-chips-Bp-GmsDz.js +1 -0
  281. codex/static_root/assets/relation-chips-Bp-GmsDz.js.br +0 -0
  282. codex/static_root/assets/relation-chips-Bp-GmsDz.js.gz +0 -0
  283. codex/static_root/assets/{relation-chips-eQkZvJcT.6b52d3f66aed.css → relation-chips-DvAOMwcd.css} +1 -1
  284. codex/static_root/assets/relation-chips-DvAOMwcd.css.br +0 -0
  285. codex/static_root/assets/relation-chips-DvAOMwcd.css.gz +0 -0
  286. codex/static_root/assets/{relation-chips-eQkZvJcT.css → relation-chips-DvAOMwcd.ebc505834f81.css} +1 -1
  287. codex/static_root/assets/relation-chips-DvAOMwcd.ebc505834f81.css.br +0 -0
  288. codex/static_root/assets/relation-chips-DvAOMwcd.ebc505834f81.css.gz +0 -0
  289. codex/static_root/assets/settings-drawer-ynpXH44c.ee12b51a7b5d.js +2 -0
  290. codex/static_root/assets/settings-drawer-ynpXH44c.ee12b51a7b5d.js.br +0 -0
  291. codex/static_root/assets/settings-drawer-ynpXH44c.ee12b51a7b5d.js.gz +0 -0
  292. codex/static_root/assets/settings-drawer-ynpXH44c.js +2 -0
  293. codex/static_root/assets/settings-drawer-ynpXH44c.js.br +0 -0
  294. codex/static_root/assets/settings-drawer-ynpXH44c.js.gz +0 -0
  295. codex/static_root/assets/{ssrBoot-B6yWBylJ.27fba7483f5d.js → ssrBoot-CTyNesCO.03ec3bf85a27.js} +1 -1
  296. codex/static_root/assets/ssrBoot-CTyNesCO.03ec3bf85a27.js.br +0 -0
  297. codex/static_root/assets/ssrBoot-CTyNesCO.03ec3bf85a27.js.gz +0 -0
  298. codex/static_root/assets/{ssrBoot-B6yWBylJ.js → ssrBoot-CTyNesCO.js} +1 -1
  299. codex/static_root/assets/ssrBoot-CTyNesCO.js.br +0 -0
  300. codex/static_root/assets/ssrBoot-CTyNesCO.js.gz +0 -0
  301. codex/static_root/assets/{stats-tab-B6L711cO.b6a42655cd70.css → stats-tab-CGY8r-es.b06c55bdaeaa.css} +1 -1
  302. codex/static_root/assets/stats-tab-CGY8r-es.b06c55bdaeaa.css.br +0 -0
  303. codex/static_root/assets/stats-tab-CGY8r-es.b06c55bdaeaa.css.gz +0 -0
  304. codex/static_root/assets/{stats-tab-B6L711cO.css → stats-tab-CGY8r-es.css} +1 -1
  305. codex/static_root/assets/stats-tab-CGY8r-es.css.br +0 -0
  306. codex/static_root/assets/stats-tab-CGY8r-es.css.gz +0 -0
  307. codex/static_root/assets/{stats-tab-DC24C65C.58280bd367e1.js → stats-tab-ZfoK3F_k.7565c9bbd336.js} +1 -1
  308. codex/static_root/assets/stats-tab-ZfoK3F_k.7565c9bbd336.js.br +0 -0
  309. codex/static_root/assets/stats-tab-ZfoK3F_k.7565c9bbd336.js.gz +0 -0
  310. codex/static_root/assets/{stats-tab-DC24C65C.js → stats-tab-ZfoK3F_k.js} +1 -1
  311. codex/static_root/assets/stats-tab-ZfoK3F_k.js.br +0 -0
  312. codex/static_root/assets/stats-tab-ZfoK3F_k.js.gz +0 -0
  313. codex/static_root/assets/{task-tab-DI9bXb-m.52aad0736a2b.js → task-tab-DNGSwaO3.273261947a02.js} +1 -1
  314. codex/static_root/assets/task-tab-DNGSwaO3.273261947a02.js.br +0 -0
  315. codex/static_root/assets/task-tab-DNGSwaO3.273261947a02.js.gz +0 -0
  316. codex/static_root/assets/{task-tab-DI9bXb-m.js → task-tab-DNGSwaO3.js} +1 -1
  317. codex/static_root/assets/task-tab-DNGSwaO3.js.br +0 -0
  318. codex/static_root/assets/task-tab-DNGSwaO3.js.gz +0 -0
  319. codex/static_root/assets/unauthorized-DE63n2Pi.b0357009b13d.css +1 -0
  320. codex/static_root/assets/unauthorized-DE63n2Pi.b0357009b13d.css.br +0 -0
  321. codex/static_root/assets/unauthorized-DE63n2Pi.b0357009b13d.css.gz +0 -0
  322. codex/static_root/assets/unauthorized-DE63n2Pi.css +1 -0
  323. codex/static_root/assets/unauthorized-DE63n2Pi.css.br +0 -0
  324. codex/static_root/assets/unauthorized-DE63n2Pi.css.gz +0 -0
  325. codex/static_root/assets/unauthorized-bi5K10vQ.32373df36436.js +1 -0
  326. codex/static_root/assets/unauthorized-bi5K10vQ.32373df36436.js.br +0 -0
  327. codex/static_root/assets/unauthorized-bi5K10vQ.32373df36436.js.gz +0 -0
  328. codex/static_root/assets/unauthorized-bi5K10vQ.js +1 -0
  329. codex/static_root/assets/unauthorized-bi5K10vQ.js.br +0 -0
  330. codex/static_root/assets/unauthorized-bi5K10vQ.js.gz +0 -0
  331. codex/static_root/assets/{user-tab-B7e9oz0-.03fd3875c9e3.js → user-tab-BASy3q9X.3a7f9fc383e1.js} +1 -1
  332. codex/static_root/assets/user-tab-BASy3q9X.3a7f9fc383e1.js.br +0 -0
  333. codex/static_root/assets/user-tab-BASy3q9X.3a7f9fc383e1.js.gz +0 -0
  334. codex/static_root/assets/{user-tab-B7e9oz0-.js → user-tab-BASy3q9X.js} +1 -1
  335. codex/static_root/assets/user-tab-BASy3q9X.js.br +0 -0
  336. codex/static_root/assets/user-tab-BASy3q9X.js.gz +0 -0
  337. codex/static_root/manifest.3057b90c8c8c.json +757 -0
  338. codex/static_root/manifest.3057b90c8c8c.json.br +0 -0
  339. codex/static_root/manifest.3057b90c8c8c.json.gz +0 -0
  340. codex/static_root/manifest.json +348 -348
  341. codex/static_root/manifest.json.br +0 -0
  342. codex/static_root/manifest.json.gz +0 -0
  343. codex/static_root/staticfiles.json +1 -1
  344. codex/views/browser/bookmark.py +1 -1
  345. codex/views/browser/breadcrumbs.py +8 -3
  346. codex/views/browser/browser.py +1 -1
  347. codex/views/browser/filters/search/parse.py +1 -1
  348. codex/views/browser/paginate.py +1 -1
  349. codex/views/const.py +0 -1
  350. codex/views/download.py +1 -0
  351. codex/views/frontend.py +3 -1
  352. codex/views/mixins.py +13 -0
  353. codex/views/opds/v1/feed.py +4 -3
  354. codex/views/opds/v2/feed.py +4 -2
  355. codex/views/reader/books.py +1 -1
  356. codex/views/util.py +10 -11
  357. {codex-1.7.11a0.dist-info → codex-1.7.13.dist-info}/METADATA +8 -5
  358. {codex-1.7.11a0.dist-info → codex-1.7.13.dist-info}/RECORD +361 -360
  359. {codex-1.7.11a0.dist-info → codex-1.7.13.dist-info}/WHEEL +1 -1
  360. codex/static_root/assets/VCheckbox-t1haz9-P.38cb3995b2f3.js +0 -1
  361. codex/static_root/assets/VCheckbox-t1haz9-P.38cb3995b2f3.js.br +0 -0
  362. codex/static_root/assets/VCheckbox-t1haz9-P.38cb3995b2f3.js.gz +0 -0
  363. codex/static_root/assets/VCheckbox-t1haz9-P.js +0 -1
  364. codex/static_root/assets/VCheckbox-t1haz9-P.js.br +0 -0
  365. codex/static_root/assets/VCheckbox-t1haz9-P.js.gz +0 -0
  366. codex/static_root/assets/VCheckboxBtn-1PexCc2F.ac78c4bfe6bd.js +0 -1
  367. codex/static_root/assets/VCheckboxBtn-1PexCc2F.ac78c4bfe6bd.js.br +0 -0
  368. codex/static_root/assets/VCheckboxBtn-1PexCc2F.ac78c4bfe6bd.js.gz +0 -0
  369. codex/static_root/assets/VCheckboxBtn-1PexCc2F.js +0 -1
  370. codex/static_root/assets/VCheckboxBtn-1PexCc2F.js.br +0 -0
  371. codex/static_root/assets/VCheckboxBtn-1PexCc2F.js.gz +0 -0
  372. codex/static_root/assets/VCombobox-BQHELb_o.9f25a34994e2.css +0 -1
  373. codex/static_root/assets/VCombobox-BQHELb_o.9f25a34994e2.css.br +0 -0
  374. codex/static_root/assets/VCombobox-BQHELb_o.9f25a34994e2.css.gz +0 -0
  375. codex/static_root/assets/VCombobox-BQHELb_o.css +0 -1
  376. codex/static_root/assets/VCombobox-BQHELb_o.css.br +0 -0
  377. codex/static_root/assets/VCombobox-BQHELb_o.css.gz +0 -0
  378. codex/static_root/assets/VCombobox-DpadV2-4.ea605785117d.js +0 -1
  379. codex/static_root/assets/VCombobox-DpadV2-4.ea605785117d.js.br +0 -0
  380. codex/static_root/assets/VCombobox-DpadV2-4.ea605785117d.js.gz +0 -0
  381. codex/static_root/assets/VCombobox-DpadV2-4.js +0 -1
  382. codex/static_root/assets/VCombobox-DpadV2-4.js.br +0 -0
  383. codex/static_root/assets/VCombobox-DpadV2-4.js.gz +0 -0
  384. codex/static_root/assets/VDialog-BR4MrJeK.a2c876dbfac0.js +0 -1
  385. codex/static_root/assets/VDialog-BR4MrJeK.a2c876dbfac0.js.br +0 -0
  386. codex/static_root/assets/VDialog-BR4MrJeK.a2c876dbfac0.js.gz +0 -0
  387. codex/static_root/assets/VDialog-BR4MrJeK.js +0 -1
  388. codex/static_root/assets/VDialog-BR4MrJeK.js.br +0 -0
  389. codex/static_root/assets/VDialog-BR4MrJeK.js.gz +0 -0
  390. codex/static_root/assets/VDivider-CGYMLgJf.fbcb910c5e2b.js +0 -1
  391. codex/static_root/assets/VDivider-CGYMLgJf.fbcb910c5e2b.js.br +0 -0
  392. codex/static_root/assets/VDivider-CGYMLgJf.fbcb910c5e2b.js.gz +0 -0
  393. codex/static_root/assets/VDivider-CGYMLgJf.js +0 -1
  394. codex/static_root/assets/VDivider-CGYMLgJf.js.br +0 -0
  395. codex/static_root/assets/VDivider-CGYMLgJf.js.gz +0 -0
  396. codex/static_root/assets/VExpansionPanels-ape8k2o6.235735bba3cc.js +0 -1
  397. codex/static_root/assets/VExpansionPanels-ape8k2o6.235735bba3cc.js.br +0 -0
  398. codex/static_root/assets/VExpansionPanels-ape8k2o6.235735bba3cc.js.gz +0 -0
  399. codex/static_root/assets/VExpansionPanels-ape8k2o6.js +0 -1
  400. codex/static_root/assets/VExpansionPanels-ape8k2o6.js.br +0 -0
  401. codex/static_root/assets/VExpansionPanels-ape8k2o6.js.gz +0 -0
  402. codex/static_root/assets/VForm-ZManiwIB.a4ee873a7650.js +0 -1
  403. codex/static_root/assets/VForm-ZManiwIB.a4ee873a7650.js.br +0 -0
  404. codex/static_root/assets/VForm-ZManiwIB.a4ee873a7650.js.gz +0 -0
  405. codex/static_root/assets/VForm-ZManiwIB.js +0 -1
  406. codex/static_root/assets/VForm-ZManiwIB.js.br +0 -0
  407. codex/static_root/assets/VForm-ZManiwIB.js.gz +0 -0
  408. codex/static_root/assets/VRadioGroup-BqJIH3Pa.22a036a63862.js +0 -1
  409. codex/static_root/assets/VRadioGroup-BqJIH3Pa.22a036a63862.js.br +0 -0
  410. codex/static_root/assets/VRadioGroup-BqJIH3Pa.22a036a63862.js.gz +0 -0
  411. codex/static_root/assets/VRadioGroup-BqJIH3Pa.js +0 -1
  412. codex/static_root/assets/VRadioGroup-BqJIH3Pa.js.br +0 -0
  413. codex/static_root/assets/VRadioGroup-BqJIH3Pa.js.gz +0 -0
  414. codex/static_root/assets/VSelect-Bi5KABMc.1268bafd6469.js +0 -1
  415. codex/static_root/assets/VSelect-Bi5KABMc.1268bafd6469.js.br +0 -0
  416. codex/static_root/assets/VSelect-Bi5KABMc.1268bafd6469.js.gz +0 -0
  417. codex/static_root/assets/VSelect-Bi5KABMc.js +0 -1
  418. codex/static_root/assets/VSelect-Bi5KABMc.js.br +0 -0
  419. codex/static_root/assets/VSelect-Bi5KABMc.js.gz +0 -0
  420. codex/static_root/assets/VSelect-CP_CVb8s.6309f7bf17bb.css.br +0 -0
  421. codex/static_root/assets/VSelect-CP_CVb8s.6309f7bf17bb.css.gz +0 -0
  422. codex/static_root/assets/VSelect-CP_CVb8s.css.br +0 -0
  423. codex/static_root/assets/VSelect-CP_CVb8s.css.gz +0 -0
  424. codex/static_root/assets/VSelectionControl-CRVWANOr.bac2136c7c25.js +0 -1
  425. codex/static_root/assets/VSelectionControl-CRVWANOr.bac2136c7c25.js.br +0 -0
  426. codex/static_root/assets/VSelectionControl-CRVWANOr.bac2136c7c25.js.gz +0 -0
  427. codex/static_root/assets/VSelectionControl-CRVWANOr.js +0 -1
  428. codex/static_root/assets/VSelectionControl-CRVWANOr.js.br +0 -0
  429. codex/static_root/assets/VSelectionControl-CRVWANOr.js.gz +0 -0
  430. codex/static_root/assets/VSelectionControl-DtEh26JD.css +0 -1
  431. codex/static_root/assets/VSelectionControl-DtEh26JD.css.br +0 -0
  432. codex/static_root/assets/VSelectionControl-DtEh26JD.css.gz +0 -0
  433. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css +0 -1
  434. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css.br +0 -0
  435. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css.gz +0 -0
  436. codex/static_root/assets/VTable-BnxSZ_W5.c36f0a6a30cf.css.br +0 -0
  437. codex/static_root/assets/VTable-BnxSZ_W5.c36f0a6a30cf.css.gz +0 -0
  438. codex/static_root/assets/VTable-BnxSZ_W5.css.br +0 -0
  439. codex/static_root/assets/VTable-BnxSZ_W5.css.gz +0 -0
  440. codex/static_root/assets/VTable-DWCA1lvG.1562d6d70dbe.js +0 -1
  441. codex/static_root/assets/VTable-DWCA1lvG.1562d6d70dbe.js.br +0 -0
  442. codex/static_root/assets/VTable-DWCA1lvG.1562d6d70dbe.js.gz +0 -0
  443. codex/static_root/assets/VTable-DWCA1lvG.js +0 -1
  444. codex/static_root/assets/VTable-DWCA1lvG.js.br +0 -0
  445. codex/static_root/assets/VTable-DWCA1lvG.js.gz +0 -0
  446. codex/static_root/assets/VWindowItem-DSXaWHkP.89ac2ece629a.js +0 -1
  447. codex/static_root/assets/VWindowItem-DSXaWHkP.89ac2ece629a.js.br +0 -0
  448. codex/static_root/assets/VWindowItem-DSXaWHkP.89ac2ece629a.js.gz +0 -0
  449. codex/static_root/assets/VWindowItem-DSXaWHkP.js +0 -1
  450. codex/static_root/assets/VWindowItem-DSXaWHkP.js.br +0 -0
  451. codex/static_root/assets/VWindowItem-DSXaWHkP.js.gz +0 -0
  452. codex/static_root/assets/admin-Bxwc8451.b2a8c85c5c82.js.br +0 -0
  453. codex/static_root/assets/admin-Bxwc8451.b2a8c85c5c82.js.gz +0 -0
  454. codex/static_root/assets/admin-Bxwc8451.js.br +0 -0
  455. codex/static_root/assets/admin-Bxwc8451.js.gz +0 -0
  456. codex/static_root/assets/admin-C3iCIUnm.06cb213f624d.css.br +0 -0
  457. codex/static_root/assets/admin-C3iCIUnm.06cb213f624d.css.gz +0 -0
  458. codex/static_root/assets/admin-C3iCIUnm.css.br +0 -0
  459. codex/static_root/assets/admin-C3iCIUnm.css.gz +0 -0
  460. codex/static_root/assets/admin-C81J8xOG.772d05753583.js +0 -1
  461. codex/static_root/assets/admin-C81J8xOG.772d05753583.js.br +0 -0
  462. codex/static_root/assets/admin-C81J8xOG.772d05753583.js.gz +0 -0
  463. codex/static_root/assets/admin-C81J8xOG.js +0 -1
  464. codex/static_root/assets/admin-C81J8xOG.js.br +0 -0
  465. codex/static_root/assets/admin-C81J8xOG.js.gz +0 -0
  466. codex/static_root/assets/admin-menu-Bts5DypF.83389408d5df.js +0 -1
  467. codex/static_root/assets/admin-menu-Bts5DypF.83389408d5df.js.br +0 -0
  468. codex/static_root/assets/admin-menu-Bts5DypF.83389408d5df.js.gz +0 -0
  469. codex/static_root/assets/admin-menu-Bts5DypF.js +0 -1
  470. codex/static_root/assets/admin-menu-Bts5DypF.js.br +0 -0
  471. codex/static_root/assets/admin-menu-Bts5DypF.js.gz +0 -0
  472. codex/static_root/assets/admin-settings-button-progress-CLrIYn4d.cec2cfd322a1.js.br +0 -0
  473. codex/static_root/assets/admin-settings-button-progress-CLrIYn4d.cec2cfd322a1.js.gz +0 -0
  474. codex/static_root/assets/admin-settings-button-progress-CLrIYn4d.js.br +0 -0
  475. codex/static_root/assets/admin-settings-button-progress-CLrIYn4d.js.gz +0 -0
  476. codex/static_root/assets/browser-Bf8JG2CE.3af978c1f766.css.br +0 -0
  477. codex/static_root/assets/browser-Bf8JG2CE.3af978c1f766.css.gz +0 -0
  478. codex/static_root/assets/browser-Bf8JG2CE.css.br +0 -0
  479. codex/static_root/assets/browser-Bf8JG2CE.css.gz +0 -0
  480. codex/static_root/assets/browser-yJ6Noi8Y.624ef6fbd20b.js +0 -1
  481. codex/static_root/assets/browser-yJ6Noi8Y.624ef6fbd20b.js.br +0 -0
  482. codex/static_root/assets/browser-yJ6Noi8Y.624ef6fbd20b.js.gz +0 -0
  483. codex/static_root/assets/browser-yJ6Noi8Y.js +0 -1
  484. codex/static_root/assets/browser-yJ6Noi8Y.js.br +0 -0
  485. codex/static_root/assets/browser-yJ6Noi8Y.js.gz +0 -0
  486. codex/static_root/assets/change-password-dialog-Bw5_buVm.d199b40591de.js.br +0 -0
  487. codex/static_root/assets/change-password-dialog-Bw5_buVm.d199b40591de.js.gz +0 -0
  488. codex/static_root/assets/change-password-dialog-Bw5_buVm.js.br +0 -0
  489. codex/static_root/assets/change-password-dialog-Bw5_buVm.js.gz +0 -0
  490. codex/static_root/assets/confirm-dialog-CDmsC-9_.cb51658bfb81.js +0 -1
  491. codex/static_root/assets/confirm-dialog-CDmsC-9_.cb51658bfb81.js.br +0 -0
  492. codex/static_root/assets/confirm-dialog-CDmsC-9_.cb51658bfb81.js.gz +0 -0
  493. codex/static_root/assets/confirm-dialog-CDmsC-9_.js +0 -1
  494. codex/static_root/assets/confirm-dialog-CDmsC-9_.js.br +0 -0
  495. codex/static_root/assets/confirm-dialog-CDmsC-9_.js.gz +0 -0
  496. codex/static_root/assets/datetime-column-PBwaoZso.4b7946b97468.js +0 -1
  497. codex/static_root/assets/datetime-column-PBwaoZso.4b7946b97468.js.br +0 -1
  498. codex/static_root/assets/datetime-column-PBwaoZso.4b7946b97468.js.gz +0 -0
  499. codex/static_root/assets/datetime-column-PBwaoZso.js +0 -1
  500. codex/static_root/assets/datetime-column-PBwaoZso.js.br +0 -1
  501. codex/static_root/assets/datetime-column-PBwaoZso.js.gz +0 -0
  502. codex/static_root/assets/filter-D2ELuNq3.2b1c1f24a6b4.js +0 -1
  503. codex/static_root/assets/filter-D2ELuNq3.2b1c1f24a6b4.js.br +0 -0
  504. codex/static_root/assets/filter-D2ELuNq3.2b1c1f24a6b4.js.gz +0 -0
  505. codex/static_root/assets/filter-D2ELuNq3.js +0 -1
  506. codex/static_root/assets/filter-D2ELuNq3.js.br +0 -0
  507. codex/static_root/assets/filter-D2ELuNq3.js.gz +0 -0
  508. codex/static_root/assets/flag-tab-Bfd3wqbW.eb77780e8a45.js.br +0 -0
  509. codex/static_root/assets/flag-tab-Bfd3wqbW.eb77780e8a45.js.gz +0 -0
  510. codex/static_root/assets/flag-tab-Bfd3wqbW.js.br +0 -0
  511. codex/static_root/assets/flag-tab-Bfd3wqbW.js.gz +0 -0
  512. codex/static_root/assets/forwardRefs-Cvn3Vptr.26250646de8c.js +0 -1
  513. codex/static_root/assets/forwardRefs-Cvn3Vptr.26250646de8c.js.br +0 -0
  514. codex/static_root/assets/forwardRefs-Cvn3Vptr.26250646de8c.js.gz +0 -0
  515. codex/static_root/assets/forwardRefs-Cvn3Vptr.js +0 -1
  516. codex/static_root/assets/forwardRefs-Cvn3Vptr.js.br +0 -0
  517. codex/static_root/assets/forwardRefs-Cvn3Vptr.js.gz +0 -0
  518. codex/static_root/assets/forwardRefs-Dyi06MPF.601ab1fd99b1.css +0 -1
  519. codex/static_root/assets/forwardRefs-Dyi06MPF.601ab1fd99b1.css.br +0 -0
  520. codex/static_root/assets/forwardRefs-Dyi06MPF.601ab1fd99b1.css.gz +0 -0
  521. codex/static_root/assets/forwardRefs-Dyi06MPF.css +0 -1
  522. codex/static_root/assets/forwardRefs-Dyi06MPF.css.br +0 -0
  523. codex/static_root/assets/forwardRefs-Dyi06MPF.css.gz +0 -0
  524. codex/static_root/assets/group-tab-J2MqClVb.ff59e8269756.js +0 -1
  525. codex/static_root/assets/group-tab-J2MqClVb.ff59e8269756.js.br +0 -0
  526. codex/static_root/assets/group-tab-J2MqClVb.ff59e8269756.js.gz +0 -0
  527. codex/static_root/assets/group-tab-J2MqClVb.js +0 -1
  528. codex/static_root/assets/group-tab-J2MqClVb.js.br +0 -0
  529. codex/static_root/assets/group-tab-J2MqClVb.js.gz +0 -0
  530. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css +0 -1
  531. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css.br +0 -0
  532. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css.gz +0 -0
  533. codex/static_root/assets/group-tab-_vKWzoyd.css +0 -1
  534. codex/static_root/assets/group-tab-_vKWzoyd.css.br +0 -0
  535. codex/static_root/assets/group-tab-_vKWzoyd.css.gz +0 -0
  536. codex/static_root/assets/http-error-BYu6Kcz7.9e6d6753260e.js +0 -1
  537. codex/static_root/assets/http-error-BYu6Kcz7.9e6d6753260e.js.br +0 -0
  538. codex/static_root/assets/http-error-BYu6Kcz7.9e6d6753260e.js.gz +0 -0
  539. codex/static_root/assets/http-error-BYu6Kcz7.js +0 -1
  540. codex/static_root/assets/http-error-BYu6Kcz7.js.br +0 -0
  541. codex/static_root/assets/http-error-BYu6Kcz7.js.gz +0 -0
  542. codex/static_root/assets/index-70Ak1yZF.6341f252a26f.js +0 -1
  543. codex/static_root/assets/index-70Ak1yZF.6341f252a26f.js.br +0 -0
  544. codex/static_root/assets/index-70Ak1yZF.6341f252a26f.js.gz +0 -0
  545. codex/static_root/assets/index-70Ak1yZF.js +0 -1
  546. codex/static_root/assets/index-70Ak1yZF.js.br +0 -0
  547. codex/static_root/assets/index-70Ak1yZF.js.gz +0 -0
  548. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css +0 -1
  549. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css.br +0 -0
  550. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css.gz +0 -0
  551. codex/static_root/assets/index-BHXJTQ4V.css +0 -1
  552. codex/static_root/assets/index-BHXJTQ4V.css.br +0 -0
  553. codex/static_root/assets/index-BHXJTQ4V.css.gz +0 -0
  554. codex/static_root/assets/library-tab-B5EpvS2Z.ce7f598b989c.js +0 -1
  555. codex/static_root/assets/library-tab-B5EpvS2Z.ce7f598b989c.js.br +0 -0
  556. codex/static_root/assets/library-tab-B5EpvS2Z.ce7f598b989c.js.gz +0 -0
  557. codex/static_root/assets/library-tab-B5EpvS2Z.js +0 -1
  558. codex/static_root/assets/library-tab-B5EpvS2Z.js.br +0 -0
  559. codex/static_root/assets/library-tab-B5EpvS2Z.js.gz +0 -0
  560. codex/static_root/assets/main-K8cER0IH.css.br +0 -0
  561. codex/static_root/assets/main-K8cER0IH.d529e8b3f52a.css.br +0 -0
  562. codex/static_root/assets/main-nb_FhQoD.5279ea775ff6.js +0 -35
  563. codex/static_root/assets/main-nb_FhQoD.5279ea775ff6.js.br +0 -0
  564. codex/static_root/assets/main-nb_FhQoD.5279ea775ff6.js.gz +0 -0
  565. codex/static_root/assets/main-nb_FhQoD.js +0 -35
  566. codex/static_root/assets/main-nb_FhQoD.js.br +0 -0
  567. codex/static_root/assets/main-nb_FhQoD.js.gz +0 -0
  568. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.015647f33ab1.js +0 -1
  569. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.015647f33ab1.js.br +0 -0
  570. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.015647f33ab1.js.gz +0 -0
  571. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.js +0 -1
  572. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.js.br +0 -0
  573. codex/static_root/assets/pager-full-pdf-vSb0Gv-4.js.gz +0 -0
  574. codex/static_root/assets/pagination-toolbar-2endB3w1.f94e6a3535e4.js +0 -1
  575. codex/static_root/assets/pagination-toolbar-2endB3w1.f94e6a3535e4.js.br +0 -0
  576. codex/static_root/assets/pagination-toolbar-2endB3w1.f94e6a3535e4.js.gz +0 -0
  577. codex/static_root/assets/pagination-toolbar-2endB3w1.js +0 -1
  578. codex/static_root/assets/pagination-toolbar-2endB3w1.js.br +0 -0
  579. codex/static_root/assets/pagination-toolbar-2endB3w1.js.gz +0 -0
  580. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.487e647604e2.css.br +0 -0
  581. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.487e647604e2.css.gz +0 -0
  582. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.css.br +0 -0
  583. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.css.gz +0 -0
  584. codex/static_root/assets/pdf-doc-CW06S-ga.e7c567b9d4cd.js.br +0 -0
  585. codex/static_root/assets/pdf-doc-CW06S-ga.e7c567b9d4cd.js.gz +0 -0
  586. codex/static_root/assets/pdf-doc-CW06S-ga.js.br +0 -0
  587. codex/static_root/assets/pdf-doc-CW06S-ga.js.gz +0 -0
  588. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css +0 -1
  589. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css.br +0 -0
  590. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css.gz +0 -0
  591. codex/static_root/assets/reader-DdWNjEED.css +0 -1
  592. codex/static_root/assets/reader-DdWNjEED.css.br +0 -0
  593. codex/static_root/assets/reader-DdWNjEED.css.gz +0 -0
  594. codex/static_root/assets/reader-myd-70jV.2a363255ca47.js +0 -2
  595. codex/static_root/assets/reader-myd-70jV.2a363255ca47.js.br +0 -0
  596. codex/static_root/assets/reader-myd-70jV.2a363255ca47.js.gz +0 -0
  597. codex/static_root/assets/reader-myd-70jV.js +0 -2
  598. codex/static_root/assets/reader-myd-70jV.js.br +0 -0
  599. codex/static_root/assets/reader-myd-70jV.js.gz +0 -0
  600. codex/static_root/assets/relation-chips-Bd8Jicbj.35d8fe15b532.js +0 -1
  601. codex/static_root/assets/relation-chips-Bd8Jicbj.35d8fe15b532.js.br +0 -0
  602. codex/static_root/assets/relation-chips-Bd8Jicbj.35d8fe15b532.js.gz +0 -0
  603. codex/static_root/assets/relation-chips-Bd8Jicbj.js +0 -1
  604. codex/static_root/assets/relation-chips-Bd8Jicbj.js.br +0 -0
  605. codex/static_root/assets/relation-chips-Bd8Jicbj.js.gz +0 -0
  606. codex/static_root/assets/relation-chips-eQkZvJcT.6b52d3f66aed.css.br +0 -0
  607. codex/static_root/assets/relation-chips-eQkZvJcT.6b52d3f66aed.css.gz +0 -0
  608. codex/static_root/assets/relation-chips-eQkZvJcT.css.br +0 -0
  609. codex/static_root/assets/relation-chips-eQkZvJcT.css.gz +0 -0
  610. codex/static_root/assets/settings-drawer-DBftv9u0.afd25184f6d8.js +0 -2
  611. codex/static_root/assets/settings-drawer-DBftv9u0.afd25184f6d8.js.br +0 -0
  612. codex/static_root/assets/settings-drawer-DBftv9u0.afd25184f6d8.js.gz +0 -0
  613. codex/static_root/assets/settings-drawer-DBftv9u0.js +0 -2
  614. codex/static_root/assets/settings-drawer-DBftv9u0.js.br +0 -0
  615. codex/static_root/assets/settings-drawer-DBftv9u0.js.gz +0 -0
  616. codex/static_root/assets/ssrBoot-B6yWBylJ.27fba7483f5d.js.br +0 -0
  617. codex/static_root/assets/ssrBoot-B6yWBylJ.27fba7483f5d.js.gz +0 -0
  618. codex/static_root/assets/ssrBoot-B6yWBylJ.js.br +0 -0
  619. codex/static_root/assets/ssrBoot-B6yWBylJ.js.gz +0 -0
  620. codex/static_root/assets/stats-tab-B6L711cO.b6a42655cd70.css.br +0 -2
  621. codex/static_root/assets/stats-tab-B6L711cO.b6a42655cd70.css.gz +0 -0
  622. codex/static_root/assets/stats-tab-B6L711cO.css.br +0 -2
  623. codex/static_root/assets/stats-tab-B6L711cO.css.gz +0 -0
  624. codex/static_root/assets/stats-tab-DC24C65C.58280bd367e1.js.br +0 -0
  625. codex/static_root/assets/stats-tab-DC24C65C.58280bd367e1.js.gz +0 -0
  626. codex/static_root/assets/stats-tab-DC24C65C.js.br +0 -0
  627. codex/static_root/assets/stats-tab-DC24C65C.js.gz +0 -0
  628. codex/static_root/assets/task-tab-DI9bXb-m.52aad0736a2b.js.br +0 -0
  629. codex/static_root/assets/task-tab-DI9bXb-m.52aad0736a2b.js.gz +0 -0
  630. codex/static_root/assets/task-tab-DI9bXb-m.js.br +0 -0
  631. codex/static_root/assets/task-tab-DI9bXb-m.js.gz +0 -0
  632. codex/static_root/assets/unauthorized-C0p00au3.983dc96cbe2b.js +0 -1
  633. codex/static_root/assets/unauthorized-C0p00au3.983dc96cbe2b.js.br +0 -0
  634. codex/static_root/assets/unauthorized-C0p00au3.983dc96cbe2b.js.gz +0 -0
  635. codex/static_root/assets/unauthorized-C0p00au3.js +0 -1
  636. codex/static_root/assets/unauthorized-C0p00au3.js.br +0 -0
  637. codex/static_root/assets/unauthorized-C0p00au3.js.gz +0 -0
  638. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css +0 -1
  639. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css.br +0 -0
  640. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css.gz +0 -0
  641. codex/static_root/assets/unauthorized-CtkV01lw.css +0 -1
  642. codex/static_root/assets/unauthorized-CtkV01lw.css.br +0 -0
  643. codex/static_root/assets/unauthorized-CtkV01lw.css.gz +0 -0
  644. codex/static_root/assets/user-tab-B7e9oz0-.03fd3875c9e3.js.br +0 -0
  645. codex/static_root/assets/user-tab-B7e9oz0-.03fd3875c9e3.js.gz +0 -0
  646. codex/static_root/assets/user-tab-B7e9oz0-.js.br +0 -0
  647. codex/static_root/assets/user-tab-B7e9oz0-.js.gz +0 -0
  648. codex/static_root/manifest.fd580176863a.json +0 -757
  649. codex/static_root/manifest.fd580176863a.json.br +0 -0
  650. codex/static_root/manifest.fd580176863a.json.gz +0 -0
  651. {codex-1.7.11a0.dist-info → codex-1.7.13.dist-info}/LICENSE +0 -0
  652. {codex-1.7.11a0.dist-info → codex-1.7.13.dist-info}/entry_points.txt +0 -0
@@ -109,7 +109,7 @@ def _make_websocket_messages():
109
109
 
110
110
  def main():
111
111
  """Dump all files."""
112
- import sys
112
+ import sys # noqa: PLC0415
113
113
 
114
114
  parent_path = sys.argv[1] if len(sys.argv) > 1 else "."
115
115
  parent_path = Path(parent_path)
codex/choices/reader.py CHANGED
@@ -29,5 +29,6 @@ READER_DEFAULTS = MappingProxyType(
29
29
  "reading_direction": "ltr",
30
30
  "read_rtl_in_reverse": False,
31
31
  "two_pages": False,
32
+ "page_transition": True,
32
33
  }
33
34
  )
@@ -1,11 +1,42 @@
1
1
  """Sends notifications to connections, reading from a queue."""
2
2
 
3
- from codex.librarian.bookmark.tasks import BookmarkUpdateTask
3
+ from collections.abc import Mapping
4
+ from dataclasses import dataclass
5
+
6
+ from codex.librarian.bookmark.tasks import (
7
+ BookmarkUpdateTask,
8
+ UserActiveTask,
9
+ )
4
10
  from codex.librarian.bookmark.update import BookmarkUpdate
11
+ from codex.librarian.bookmark.user_active import UserActiveMixin
5
12
  from codex.threads import AggregateMessageQueuedThread
6
13
 
7
14
 
8
- class BookmarkThread(AggregateMessageQueuedThread, BookmarkUpdate):
15
+ @dataclass
16
+ class BookmarkKey:
17
+ """Bookmark queue item key."""
18
+
19
+ auth_filter: Mapping[str, int | str | None] | None = None
20
+ comic_pks: tuple = ()
21
+ user_pk: int = 0
22
+
23
+ def __hash__(self):
24
+ """Hash the dict as a tuple."""
25
+ auth_filters = (
26
+ None if self.auth_filter is None else tuple(self.auth_filter.items())
27
+ )
28
+ return hash((auth_filters, self.comic_pks, self.user_pk))
29
+
30
+ def __eq__(self, other):
31
+ """Equal uses hashes."""
32
+ return self.__hash__() == other.__hash__()
33
+
34
+
35
+ class BookmarkThread(
36
+ UserActiveMixin,
37
+ AggregateMessageQueuedThread,
38
+ BookmarkUpdate,
39
+ ):
9
40
  """Aggregates Bookmark updates preventing floods updates db in batches.."""
10
41
 
11
42
  FLOOD_DELAY = 3.0
@@ -13,28 +44,29 @@ class BookmarkThread(AggregateMessageQueuedThread, BookmarkUpdate):
13
44
 
14
45
  def aggregate_items(self, item):
15
46
  """Aggregate bookmark updates."""
16
- if isinstance(item, BookmarkUpdateTask):
17
- key = (tuple(item.auth_filter.items()), item.comic_pks)
47
+ if isinstance(item, UserActiveTask):
48
+ # Wedge the user active recorer into the bookmark thread because it
49
+ # it also wants to be done offline and low priority.
50
+ key = BookmarkKey(user_pk=item.pk)
51
+ self.cache[key] = None
52
+ elif isinstance(item, BookmarkUpdateTask):
53
+ key = BookmarkKey(item.auth_filter, item.comic_pks)
18
54
  if key not in self.cache:
19
55
  self.cache[key] = {}
20
56
  self.cache[key].update(item.updates)
21
57
  else:
22
58
  self.log.warning(f"Unknown Bookmark task {item}")
23
59
 
24
- def _send_item(self, filters, updates):
25
- """Process one item."""
26
- auth_filter, comic_pks = filters
27
- auth_filter = dict(auth_filter)
28
- self.update_bookmarks(auth_filter, comic_pks, updates, self.log)
29
- self.log.debug(f"updated {auth_filter} pk__in={comic_pks}")
30
-
31
60
  def send_all_items(self):
32
61
  """Run the task method."""
33
62
  cleanup = set()
34
- for filters, updates in self.cache.items():
63
+ for key, value in self.cache.items():
35
64
  try:
36
- self._send_item(filters, updates)
37
- cleanup.add(filters)
65
+ if key.user_pk:
66
+ self.update_user_active(key.user_pk, self.log)
67
+ elif key.comic_pks:
68
+ self.update_bookmarks(key.auth_filter, key.comic_pks, value)
69
+ cleanup.add(key)
38
70
  except Exception:
39
71
  self.log.exception("Updating bookmarks")
40
72
 
@@ -17,3 +17,10 @@ class BookmarkUpdateTask(BookmarkTask):
17
17
  auth_filter: Mapping[str, int | str | None]
18
18
  comic_pks: tuple[int]
19
19
  updates: Mapping[str, Any]
20
+
21
+
22
+ @dataclass
23
+ class UserActiveTask(BookmarkTask):
24
+ """Update the user's last active status."""
25
+
26
+ pk: int
@@ -1,6 +1,5 @@
1
1
  """Sends notifications to connections, reading from a queue."""
2
2
 
3
- from django.contrib.auth.models import User
4
3
  from django.db.models.expressions import F
5
4
  from django.db.models.functions import Now
6
5
  from django.db.models.query import Q
@@ -9,7 +8,6 @@ from codex.choices.notifications import Notifications
9
8
  from codex.librarian.mp_queue import LIBRARIAN_QUEUE
10
9
  from codex.librarian.notifier.tasks import NotifierTask
11
10
  from codex.models import Bookmark, Comic
12
- from codex.models.admin import UserActive
13
11
  from codex.views.auth import GroupACLMixin
14
12
 
15
13
  _VERTICAL_READING_DIRECTIONS = frozenset({"ttb", "btt"})
@@ -159,29 +157,10 @@ class BookmarkUpdate(GroupACLMixin):
159
157
  return count
160
158
 
161
159
  @classmethod
162
- def _update_user_active(cls, auth_filter, log):
163
- """Update user active."""
164
- # Offline because profile gets hit rapidly in succession.
165
- try:
166
- user = None
167
- for key, value in auth_filter.items():
168
- if key == "user":
169
- user = User.objects.get(pk=value)
170
- if user:
171
- UserActive.objects.update_or_create(user=user)
172
- break
173
- except User.DoesNotExist:
174
- pass
175
- except Exception as exc:
176
- reason = f"Update user activity {exc}"
177
- log.warning(reason)
178
-
179
- @classmethod
180
- def update_bookmarks(cls, auth_filter, comic_pks, updates, log):
160
+ def update_bookmarks(cls, auth_filter, comic_pks, updates):
181
161
  """Update a user bookmark."""
182
162
  count = cls._update_bookmarks(auth_filter, comic_pks, updates)
183
163
  count += cls._create_bookmarks(auth_filter, comic_pks, updates)
184
- cls._update_user_active(auth_filter, log)
185
164
  if count:
186
165
  uid = next(iter(auth_filter.values()))
187
166
  cls._notify_library_changed(uid)
@@ -0,0 +1,37 @@
1
+ """Mixin for recording user active entry."""
2
+
3
+ from datetime import timedelta
4
+
5
+ from django.contrib.auth.models import User
6
+ from django.utils import timezone as django_timezone
7
+
8
+ from codex.models.admin import UserActive
9
+ from codex.views.const import EPOCH_START
10
+
11
+
12
+ class UserActiveMixin:
13
+ """Record user active entry."""
14
+
15
+ # only hit the disk to record user activity every so often
16
+ USER_ACTIVE_RESOLUTION = timedelta(hours=1)
17
+
18
+ def __init__(self, *args, **kwargs):
19
+ """Init the last recorded dict."""
20
+ super().__init__(*args, **kwargs)
21
+ self._user_active_recorded = {}
22
+
23
+ def update_user_active(self, pk: int, log):
24
+ """Update user active."""
25
+ # Offline because profile gets hit rapidly in succession.
26
+ try:
27
+ last_recorded = self._user_active_recorded.get(pk, EPOCH_START)
28
+ now = django_timezone.now()
29
+ if now - last_recorded > self.USER_ACTIVE_RESOLUTION:
30
+ user = User.objects.get(pk=pk)
31
+ UserActive.objects.update_or_create(user=user)
32
+ self._user_active_recorded[pk] = now
33
+ except User.DoesNotExist:
34
+ pass
35
+ except Exception as exc:
36
+ reason = f"Update user activity {exc}"
37
+ log.warning(reason)
@@ -81,7 +81,7 @@ class Migration(migrations.Migration):
81
81
  model_name="comic",
82
82
  name="issue",
83
83
  field=models.DecimalField(
84
- db_index=True, decimal_places=2, default=Decimal("0"), max_digits=10
84
+ db_index=True, decimal_places=2, default=Decimal(0), max_digits=10
85
85
  ),
86
86
  ),
87
87
  migrations.AlterField(
codex/run.py CHANGED
@@ -38,7 +38,7 @@ def _database_checkpoint():
38
38
 
39
39
  def restart():
40
40
  """Restart this process."""
41
- from sys import argv
41
+ from sys import argv # noqa: PLC0415
42
42
 
43
43
  print("Restarting Codex. Hold on to your butts...", flush=True) # noqa: T201
44
44
  execv(__file__, argv) # noqa: S606
@@ -33,6 +33,7 @@ class ReaderSettingsSerializer(Serializer):
33
33
  read_rtl_in_reverse = BooleanField(allow_null=True, required=False)
34
34
  finish_on_last_page = BooleanField(allow_null=True, required=False)
35
35
  mtime = TimestampField(read_only=True)
36
+ page_transition = BooleanField(allow_null=True, required=False)
36
37
 
37
38
 
38
39
  class ReaderComicSerializer(Serializer):
@@ -1,5 +1,7 @@
1
1
  """Vue Route Serializer."""
2
2
 
3
+ from dataclasses import asdict
4
+
3
5
  from rest_framework.fields import CharField, IntegerField
4
6
  from rest_framework.serializers import Serializer
5
7
 
@@ -17,7 +19,7 @@ class SimpleRouteSerializer(Serializer):
17
19
  def to_representation(self, instance):
18
20
  """Allow submission of sequences instead of strings for pks."""
19
21
  if isinstance(instance, Route):
20
- instance = instance.dict()
22
+ instance = asdict(instance)
21
23
  pks = instance["pks"]
22
24
  if not pks:
23
25
  instance["pks"] = "0"
@@ -34,24 +34,25 @@ def not_falsy_env(name):
34
34
 
35
35
 
36
36
  DEBUG = not_falsy_env("DEBUG")
37
- BUILD = environ.get("BUILD", False)
37
+ BUILD = not_falsy_env("BUILD")
38
38
  # Slow query middleware
39
39
  # limit in seconds
40
- SLOW_QUERY_LIMIT = float(environ.get("CODEX_SLOW_QUERY_LIMIT", 0.5))
40
+ SLOW_QUERY_LIMIT = float(environ.get("CODEX_SLOW_QUERY_LIMIT", "0.5"))
41
41
  LOG_RESPONSE_TIME = not_falsy_env("CODEX_LOG_RESPONSE_TIME")
42
42
  # Search indexing memory controls
43
- MMAP_RATIO = int(environ.get("CODEX_MMAP_RATIO", 240))
44
- WRITER_MEMORY_PERCENT = float(environ.get("CODEX_WRITER_MEMORY_PERCENT", 0.6))
45
- CPU_MULTIPLIER = float(environ.get("CODEX_CPU_MULTIPLIER", 1.25))
46
- CHUNK_PER_GB = int(environ.get("CODEX_CHUNK_PER_GB", 250))
47
- MAX_CHUNK_SIZE = int(environ.get("CODEX_MAX_CHUNK_SIZE", 1000))
43
+ MMAP_RATIO = int(environ.get("CODEX_MMAP_RATIO", "240"))
44
+ WRITER_MEMORY_PERCENT = float(environ.get("CODEX_WRITER_MEMORY_PERCENT", "0.6"))
45
+ CPU_MULTIPLIER = float(environ.get("CODEX_CPU_MULTIPLIER", "1.25"))
46
+ CHUNK_PER_GB = int(environ.get("CODEX_CHUNK_PER_GB", "250"))
47
+ MAX_CHUNK_SIZE = int(environ.get("CODEX_MAX_CHUNK_SIZE", "1000"))
48
48
  # sqlite parser breaks with more than 1000 variables in a query and
49
49
  # django only fixes this in the bulk_create & bulk_update functions.
50
50
  # So for complicated queries I gotta batch them myself. Filter arg
51
51
  # count is a proxy, but it works. 990 errors sometimes.
52
- FILTER_BATCH_SIZE = int(environ.get("CODEX_FILTER_BATCH_SIZE", 900))
52
+ FILTER_BATCH_SIZE = int(environ.get("CODEX_FILTER_BATCH_SIZE", "900"))
53
53
  VITE_HOST = environ.get("VITE_HOST")
54
- SEARCH_INDEX_BATCH_SIZE = int(environ.get("CODEX_SEARCH_INDEX_BATCH_SIZE", 10000))
54
+ SEARCH_INDEX_BATCH_SIZE = int(environ.get("CODEX_SEARCH_INDEX_BATCH_SIZE", "10000"))
55
+ MAX_OBJ_PER_PAGE = int(environ.get("CODEX_BROWSER_MAX_OBJ_PER_PAGE", "100"))
55
56
 
56
57
  ####################################
57
58
  # Documented Environment Variables #
@@ -63,12 +64,12 @@ RESET_ADMIN = not_falsy_env("CODEX_RESET_ADMIN")
63
64
  LOG_DIR = Path(environ.get("CODEX_LOG_DIR", CONFIG_PATH / "logs"))
64
65
  LOG_TO_CONSOLE = environ.get("CODEX_LOG_TO_CONSOLE") != "0"
65
66
  LOG_TO_FILE = environ.get("CODEX_LOG_TO_FILE") != "0"
66
- THROTTLE_ANON = int(environ.get("CODEX_THROTTLE_ANON", 0))
67
- THROTTLE_USER = int(environ.get("CODEX_THROTTLE_USER", 0))
68
- THROTTLE_OPDS = int(environ.get("CODEX_THROTTLE_OPDS", 0))
69
- THROTTLE_OPENSEARCH = int(environ.get("CODEX_THROTTLE_OPENSEARCH", 0))
67
+ THROTTLE_ANON = int(environ.get("CODEX_THROTTLE_ANON", "0"))
68
+ THROTTLE_USER = int(environ.get("CODEX_THROTTLE_USER", "0"))
69
+ THROTTLE_OPDS = int(environ.get("CODEX_THROTTLE_OPDS", "0"))
70
+ THROTTLE_OPENSEARCH = int(environ.get("CODEX_THROTTLE_OPENSEARCH", "0"))
70
71
  FIX_FOREIGN_KEYS = not_falsy_env("CODEX_FIX_FOREIGN_KEYS")
71
- INTEGRITY_CHECK = environ.get("CODEX_INTEGRITY_CHECK", False)
72
+ INTEGRITY_CHECK = not_falsy_env("CODEX_INTEGRITY_CHECK")
72
73
  FTS_INTEGRITY_CHECK = not_falsy_env("CODEX_FTS_INTEGRITY_CHECK")
73
74
  FTS_REBUILD = not_falsy_env("CODEX_FTS_REBUILD")
74
75
 
codex/startup.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from pathlib import Path
4
4
 
5
+ from django.contrib.auth.models import User
5
6
  from django.core.cache import cache
6
7
  from django.db.models import F, Q
7
8
  from django.db.models.functions import Now
@@ -24,8 +25,6 @@ LOG = get_logger(__name__)
24
25
 
25
26
  def ensure_superuser():
26
27
  """Ensure there is a valid superuser."""
27
- from django.contrib.auth.models import User
28
-
29
28
  if RESET_ADMIN or not User.objects.filter(is_superuser=True).exists():
30
29
  admin_user, created = User.objects.update_or_create(
31
30
  username="admin",
@@ -0,0 +1 @@
1
+ import{m as I,V as t}from"./VCheckboxBtn-07Vspsxn.js";import{u as g,m as A,h as l}from"./VSelectionControl-DbdMme4i.js";import{g as F,p as B,e as R,u as U,o as D,br as M,bs as N,a as u,m as r}from"./main-NV7Sm4nK.js";const $=B({...A(),...D(I(),["inline"])},"VCheckbox"),z=F()({name:"VCheckbox",inheritAttrs:!1,props:$(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,d){let{attrs:c,slots:a}=d;const s=R(e,"modelValue"),{isFocused:n,focus:i,blur:m}=g(e),V=M();return U(()=>{const[b,p]=N(c),f=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,f,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:e.id||`checkbox-${V}`,focused:n.value,style:e.style}),{...a,default:o=>{let{id:v,messagesId:h,isDisabled:x,isReadonly:P,isValid:C}=o;return u(t,r(k,{id:v.value,"aria-describedby":h.value,disabled:x.value,readonly:P.value},p,{error:C.value===!1,modelValue:s.value,"onUpdate:modelValue":y=>s.value=y,onFocus:i,onBlur:m}),a)}})}),{}}});export{z as V};
@@ -0,0 +1 @@
1
+ import{m as I,V as t}from"./VCheckboxBtn-07Vspsxn.js";import{u as g,m as A,h as l}from"./VSelectionControl-DbdMme4i.js";import{g as F,p as B,e as R,u as U,o as D,br as M,bs as N,a as u,m as r}from"./main-NV7Sm4nK.js";const $=B({...A(),...D(I(),["inline"])},"VCheckbox"),z=F()({name:"VCheckbox",inheritAttrs:!1,props:$(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,d){let{attrs:c,slots:a}=d;const s=R(e,"modelValue"),{isFocused:n,focus:i,blur:m}=g(e),V=M();return U(()=>{const[b,p]=N(c),f=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,f,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:e.id||`checkbox-${V}`,focused:n.value,style:e.style}),{...a,default:o=>{let{id:v,messagesId:h,isDisabled:x,isReadonly:P,isValid:C}=o;return u(t,r(k,{id:v.value,"aria-describedby":h.value,disabled:x.value,readonly:P.value},p,{error:C.value===!1,modelValue:s.value,"onUpdate:modelValue":y=>s.value=y,onFocus:i,onBlur:m}),a)}})}),{}}});export{z as V};
@@ -0,0 +1 @@
1
+ import{l as f,k as a}from"./VSelectionControl-DbdMme4i.js";import{p as V,L as k,g as v,e as c,t as l,u as I,o as x,a as h,m as b}from"./main-NV7Sm4nK.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(o){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return I(()=>{const o=x(a.filterProps(e),["modelValue"]);return h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
@@ -0,0 +1 @@
1
+ import{l as f,k as a}from"./VSelectionControl-DbdMme4i.js";import{p as V,L as k,g as v,e as c,t as l,u as I,o as x,a as h,m as b}from"./main-NV7Sm4nK.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(o){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return I(()=>{const o=x(a.filterProps(e),["modelValue"]);return h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
@@ -0,0 +1 @@
1
+ import{u as we,t as I,e as Se,m as Fe,a as Ie,V as De,b as Pe,d as Re}from"./VSelect-BbT1aJkP.js";import{p as Ae,q as Ee,c as W}from"./VSelectionControl-DbdMme4i.js";import{u as Te,f as Me,p as _e,k as J,l as Ne}from"./forwardRefs-DG6cgrKs.js";import{u as Be,m as Ke,h as Le}from"./filter-wbh_0cB-.js";import{g as Oe,p as Ue,aQ as ze,r as _,aR as D,e as X,bB as qe,c as y,t as je,aS as P,bC as Y,aV as Z,u as He,o as $e,a as m,m as S,bD as Ge,bE as ee,bq as Qe,b as F,bF as We,F as q,bG as Je,n as Xe,d as Ye,y as Ze}from"./main-NV7Sm4nK.js";import{a as le,g as el}from"./VDialog-DRj4eBrO.js";import{V as ll}from"./VCheckboxBtn-07Vspsxn.js";const al=Ue({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Ke({filterKeys:["title"]}),...Fe({hideNoData:!0,returnObject:!0}),...$e(Ee({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),..._e({transition:!1})},"VCombobox"),cl=Oe()({name:"VCombobox",props:al(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,ae){var $;let{emit:te,slots:o}=ae;const{t:N}=ze(),h=_(),x=D(!1),C=D(!0),B=D(!1),j=_(),K=_(),i=D(-1);let L=!1;const{items:ue,transformIn:ne,transformOut:oe}=we(l),{textColorClasses:ie,textColorStyles:se}=Te(()=>{var e;return(e=h.value)==null?void 0:e.color}),u=X(l,"modelValue",[],e=>ne(qe(e)),e=>{const a=oe(e);return l.multiple?a:a[0]??null}),R=Ae(l),A=y(()=>!!(l.chips||o.chip)),V=y(()=>A.value||!!o.selection),p=D(!l.multiple&&!V.value?(($=u.value[0])==null?void 0:$.title)??"":""),v=y({get:()=>p.value,set:e=>{var a;if(p.value=e??"",!l.multiple&&!V.value&&(u.value=[I(l,e)]),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const s=e.split(new RegExp(`(?:${l.delimiters.join("|")})+`));s.length>1&&(s.forEach(t=>{t=t.trim(),t&&b(I(l,t))}),p.value="")}e||(i.value=-1),C.value=!e}}),re=y(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:v.value.length),{filteredItems:E,getMatches:ce}=Be(l,ue,()=>C.value?"":v.value),k=y(()=>l.hideSelected?E.value.filter(e=>!u.value.some(a=>a.value===e.value)):E.value),T=y(()=>l.hideNoData&&!k.value.length||R.isReadonly.value||R.isDisabled.value),O=X(l,"menu"),r=y({get:()=>O.value,set:e=>{var a;O.value&&!e&&((a=j.value)!=null&&a.ΨopenChildren.size)||e&&T.value||(O.value=e)}}),H=je(()=>r.value?l.closeText:l.openText);P(p,e=>{L?Z(()=>L=!1):x.value&&!r.value&&(r.value=!0),te("update:search",e)}),P(u,e=>{var a;!l.multiple&&!V.value&&(p.value=((a=e[0])==null?void 0:a.title)??"")});const ve=y(()=>u.value.map(e=>e.value)),U=y(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&v.value===((a=k.value[0])==null?void 0:a.title))&&k.value.length>0&&!C.value&&!B.value}),z=_(),de=Se(z,h);function fe(e){L=!0,l.openOnClear&&(r.value=!0)}function me(){T.value||(r.value=!0)}function he(e){T.value||(x.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function be(e){var a;e.key!==" "&&ee(e)&&((a=h.value)==null||a.focus())}function ge(e){var t,c,d,g;if(Ge(e)||R.isReadonly.value)return;const a=(t=h.value)==null?void 0:t.selectionStart,s=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(r.value=!0),["Escape"].includes(e.key)&&(r.value=!1),["Enter","Escape","Tab"].includes(e.key)&&(U.value&&["Enter","Tab"].includes(e.key)&&!u.value.some(n=>{let{value:w}=n;return w===k.value[0].value})&&b(E.value[0]),C.value=!0),e.key==="ArrowDown"&&U.value&&((c=z.value)==null||c.focus("next")),e.key==="Enter"&&v.value&&(b(I(l,v.value)),V.value&&(p.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&V.value&&u.value.length>0&&!v.value)return b(u.value[0],!1);if(~i.value){e.preventDefault();const n=i.value;b(u.value[i.value],!1),i.value=n>=s-1?s-2:n}else e.key==="Backspace"&&!v.value&&(i.value=s-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const n=i.value>-1?i.value-1:s-1;u.value[n]?i.value=n:(i.value=-1,(d=h.value)==null||d.setSelectionRange(v.value.length,v.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const n=i.value+1;u.value[n]?i.value=n:(i.value=-1,(g=h.value)==null||g.setSelectionRange(0,0))}else~i.value&&ee(e)&&(i.value=-1)}function xe(){var e;l.eager&&((e=K.value)==null||e.calculateVisibleItems())}function Ve(){var e;x.value&&(C.value=!0,(e=h.value)==null||e.focus())}function b(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!e||e.props.disabled))if(l.multiple){const s=u.value.findIndex(c=>(l.valueComparator||Y)(c.value,e.value)),t=a??!~s;if(~s){const c=t?[...u.value,e]:[...u.value];c.splice(s,1),u.value=c}else t&&(u.value=[...u.value,e]);l.clearOnSelect&&(v.value="")}else{const s=a!==!1;u.value=s?[e]:[],p.value=s&&!V.value?e.title:"",Z(()=>{r.value=!1,C.value=!0})}}function ye(e){x.value=!0,setTimeout(()=>{B.value=!0})}function Ce(e){B.value=!1}function pe(e){(e==null||e===""&&!l.multiple&&!V.value)&&(u.value=[])}return P(x,(e,a)=>{if(!(e||e===a)&&(i.value=-1,r.value=!1,v.value)){if(l.multiple){b(I(l,v.value));return}if(!V.value)return;u.value.some(s=>{let{title:t}=s;return t===v.value})?p.value="":b(I(l,v.value))}}),P(r,()=>{if(!l.hideSelected&&r.value&&u.value.length){const e=k.value.findIndex(a=>u.value.some(s=>(l.valueComparator||Y)(s.value,a.value)));Qe&&window.requestAnimationFrame(()=>{var a;e>=0&&((a=K.value)==null||a.scrollToIndex(e))})}}),P(()=>l.items,(e,a)=>{r.value||x.value&&!a.length&&e.length&&(r.value=!0)}),He(()=>{const e=!!(!l.hideNoData||k.value.length||o["prepend-item"]||o["append-item"]||o["no-data"]),a=u.value.length>0,s=W.filterProps(l);return m(W,S({ref:h},s,{modelValue:v.value,"onUpdate:modelValue":[t=>v.value=t,pe],focused:x.value,"onUpdate:focused":t=>x.value=t,validationValue:u.externalValue,counterValue:re.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":r.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!V.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:ge}),{...o,default:()=>F(q,null,[m(Ie,S({ref:j,modelValue:r.value,"onUpdate:modelValue":t=>r.value=t,activator:"parent",contentClass:"v-combobox__content",disabled:T.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:l.transition,onAfterEnter:xe,onAfterLeave:Ve},l.menuProps),{default:()=>[e&&m(De,S({ref:z,selected:ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:t=>t.preventDefault(),onKeydown:be,onFocusin:ye,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:l.itemColor??l.color},de,l.listProps),{default:()=>{var t,c,d;return[(t=o["prepend-item"])==null?void 0:t.call(o),!k.value.length&&!l.hideNoData&&(((c=o["no-data"])==null?void 0:c.call(o))??m(le,{key:"no-data",title:N(l.noDataText)},null)),m(Pe,{ref:K,renderless:!0,items:k.value,itemKey:"value"},{default:g=>{var Q;let{item:n,index:w,itemRef:f}=g;const G=S(n.props,{ref:f,key:n.value,active:U.value&&w===0?!0:void 0,onClick:()=>b(n,null)});return((Q=o.item)==null?void 0:Q.call(o,{item:n,index:w,props:G}))??m(le,S(G,{role:"option"}),{prepend:M=>{let{isSelected:ke}=M;return F(q,null,[l.multiple&&!l.hideSelected?m(ll,{key:n.value,modelValue:ke,ripple:!1,tabindex:"-1"},null):void 0,n.props.prependAvatar&&m(el,{image:n.props.prependAvatar},null),n.props.prependIcon&&m(J,{icon:n.props.prependIcon},null)])},title:()=>{var M;return C.value?n.title:Le("v-combobox",n.title,(M=ce(n))==null?void 0:M.title)}})}}),(d=o["append-item"])==null?void 0:d.call(o)]}})]}),u.value.map((t,c)=>{function d(f){f.stopPropagation(),f.preventDefault(),b(t,!1)}const g={"onClick:close":d,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),d(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},n=A.value?!!o.chip:!!o.selection,w=n?Je(A.value?o.chip({item:t,index:c,props:g}):o.selection({item:t,index:c})):void 0;if(!(n&&!w))return F("div",{key:t.value,class:Ye(["v-combobox__selection",c===i.value&&["v-combobox__selection--selected",ie.value]]),style:Xe(c===i.value?se.value:{})},[A.value?o.chip?m(Ne,{key:"chip-defaults",defaults:{VChip:{closable:l.closableChips,size:"small",text:t.title}}},{default:()=>[w]}):m(Re,S({key:"chip",closable:l.closableChips,size:"small",text:t.title,disabled:t.props.disabled},g),null):w??F("span",{class:"v-combobox__selection-text"},[t.title,l.multiple&&c<u.value.length-1&&F("span",{class:"v-combobox__selection-comma"},[Ze(",")])])])})]),"append-inner":function(){var g,n;for(var t=arguments.length,c=new Array(t),d=0;d<t;d++)c[d]=arguments[d];return F(q,null,[(g=o["append-inner"])==null?void 0:g.call(o,...c),(!l.hideNoData||l.items.length)&&l.menuIcon?m(J,{class:"v-combobox__menu-icon",color:(n=h.value)==null?void 0:n.fieldIconColor,icon:l.menuIcon,onMousedown:he,onClick:We,"aria-label":N(H.value),title:N(H.value),tabindex:"-1"},null):void 0])}})}),Me({isFocused:x,isPristine:C,menu:r,search:v,selectionIndex:i,filteredItems:E,select:b},h)}});export{cl as V};
@@ -0,0 +1 @@
1
+ import{u as we,t as I,e as Se,m as Fe,a as Ie,V as De,b as Pe,d as Re}from"./VSelect-BbT1aJkP.js";import{p as Ae,q as Ee,c as W}from"./VSelectionControl-DbdMme4i.js";import{u as Te,f as Me,p as _e,k as J,l as Ne}from"./forwardRefs-DG6cgrKs.js";import{u as Be,m as Ke,h as Le}from"./filter-wbh_0cB-.js";import{g as Oe,p as Ue,aQ as ze,r as _,aR as D,e as X,bB as qe,c as y,t as je,aS as P,bC as Y,aV as Z,u as He,o as $e,a as m,m as S,bD as Ge,bE as ee,bq as Qe,b as F,bF as We,F as q,bG as Je,n as Xe,d as Ye,y as Ze}from"./main-NV7Sm4nK.js";import{a as le,g as el}from"./VDialog-DRj4eBrO.js";import{V as ll}from"./VCheckboxBtn-07Vspsxn.js";const al=Ue({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Ke({filterKeys:["title"]}),...Fe({hideNoData:!0,returnObject:!0}),...$e(Ee({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),..._e({transition:!1})},"VCombobox"),cl=Oe()({name:"VCombobox",props:al(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,ae){var $;let{emit:te,slots:o}=ae;const{t:N}=ze(),h=_(),x=D(!1),C=D(!0),B=D(!1),j=_(),K=_(),i=D(-1);let L=!1;const{items:ue,transformIn:ne,transformOut:oe}=we(l),{textColorClasses:ie,textColorStyles:se}=Te(()=>{var e;return(e=h.value)==null?void 0:e.color}),u=X(l,"modelValue",[],e=>ne(qe(e)),e=>{const a=oe(e);return l.multiple?a:a[0]??null}),R=Ae(l),A=y(()=>!!(l.chips||o.chip)),V=y(()=>A.value||!!o.selection),p=D(!l.multiple&&!V.value?(($=u.value[0])==null?void 0:$.title)??"":""),v=y({get:()=>p.value,set:e=>{var a;if(p.value=e??"",!l.multiple&&!V.value&&(u.value=[I(l,e)]),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const s=e.split(new RegExp(`(?:${l.delimiters.join("|")})+`));s.length>1&&(s.forEach(t=>{t=t.trim(),t&&b(I(l,t))}),p.value="")}e||(i.value=-1),C.value=!e}}),re=y(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:v.value.length),{filteredItems:E,getMatches:ce}=Be(l,ue,()=>C.value?"":v.value),k=y(()=>l.hideSelected?E.value.filter(e=>!u.value.some(a=>a.value===e.value)):E.value),T=y(()=>l.hideNoData&&!k.value.length||R.isReadonly.value||R.isDisabled.value),O=X(l,"menu"),r=y({get:()=>O.value,set:e=>{var a;O.value&&!e&&((a=j.value)!=null&&a.ΨopenChildren.size)||e&&T.value||(O.value=e)}}),H=je(()=>r.value?l.closeText:l.openText);P(p,e=>{L?Z(()=>L=!1):x.value&&!r.value&&(r.value=!0),te("update:search",e)}),P(u,e=>{var a;!l.multiple&&!V.value&&(p.value=((a=e[0])==null?void 0:a.title)??"")});const ve=y(()=>u.value.map(e=>e.value)),U=y(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&v.value===((a=k.value[0])==null?void 0:a.title))&&k.value.length>0&&!C.value&&!B.value}),z=_(),de=Se(z,h);function fe(e){L=!0,l.openOnClear&&(r.value=!0)}function me(){T.value||(r.value=!0)}function he(e){T.value||(x.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function be(e){var a;e.key!==" "&&ee(e)&&((a=h.value)==null||a.focus())}function ge(e){var t,c,d,g;if(Ge(e)||R.isReadonly.value)return;const a=(t=h.value)==null?void 0:t.selectionStart,s=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(r.value=!0),["Escape"].includes(e.key)&&(r.value=!1),["Enter","Escape","Tab"].includes(e.key)&&(U.value&&["Enter","Tab"].includes(e.key)&&!u.value.some(n=>{let{value:w}=n;return w===k.value[0].value})&&b(E.value[0]),C.value=!0),e.key==="ArrowDown"&&U.value&&((c=z.value)==null||c.focus("next")),e.key==="Enter"&&v.value&&(b(I(l,v.value)),V.value&&(p.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&V.value&&u.value.length>0&&!v.value)return b(u.value[0],!1);if(~i.value){e.preventDefault();const n=i.value;b(u.value[i.value],!1),i.value=n>=s-1?s-2:n}else e.key==="Backspace"&&!v.value&&(i.value=s-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const n=i.value>-1?i.value-1:s-1;u.value[n]?i.value=n:(i.value=-1,(d=h.value)==null||d.setSelectionRange(v.value.length,v.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const n=i.value+1;u.value[n]?i.value=n:(i.value=-1,(g=h.value)==null||g.setSelectionRange(0,0))}else~i.value&&ee(e)&&(i.value=-1)}function xe(){var e;l.eager&&((e=K.value)==null||e.calculateVisibleItems())}function Ve(){var e;x.value&&(C.value=!0,(e=h.value)==null||e.focus())}function b(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!e||e.props.disabled))if(l.multiple){const s=u.value.findIndex(c=>(l.valueComparator||Y)(c.value,e.value)),t=a??!~s;if(~s){const c=t?[...u.value,e]:[...u.value];c.splice(s,1),u.value=c}else t&&(u.value=[...u.value,e]);l.clearOnSelect&&(v.value="")}else{const s=a!==!1;u.value=s?[e]:[],p.value=s&&!V.value?e.title:"",Z(()=>{r.value=!1,C.value=!0})}}function ye(e){x.value=!0,setTimeout(()=>{B.value=!0})}function Ce(e){B.value=!1}function pe(e){(e==null||e===""&&!l.multiple&&!V.value)&&(u.value=[])}return P(x,(e,a)=>{if(!(e||e===a)&&(i.value=-1,r.value=!1,v.value)){if(l.multiple){b(I(l,v.value));return}if(!V.value)return;u.value.some(s=>{let{title:t}=s;return t===v.value})?p.value="":b(I(l,v.value))}}),P(r,()=>{if(!l.hideSelected&&r.value&&u.value.length){const e=k.value.findIndex(a=>u.value.some(s=>(l.valueComparator||Y)(s.value,a.value)));Qe&&window.requestAnimationFrame(()=>{var a;e>=0&&((a=K.value)==null||a.scrollToIndex(e))})}}),P(()=>l.items,(e,a)=>{r.value||x.value&&!a.length&&e.length&&(r.value=!0)}),He(()=>{const e=!!(!l.hideNoData||k.value.length||o["prepend-item"]||o["append-item"]||o["no-data"]),a=u.value.length>0,s=W.filterProps(l);return m(W,S({ref:h},s,{modelValue:v.value,"onUpdate:modelValue":[t=>v.value=t,pe],focused:x.value,"onUpdate:focused":t=>x.value=t,validationValue:u.externalValue,counterValue:re.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":r.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!V.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:ge}),{...o,default:()=>F(q,null,[m(Ie,S({ref:j,modelValue:r.value,"onUpdate:modelValue":t=>r.value=t,activator:"parent",contentClass:"v-combobox__content",disabled:T.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:l.transition,onAfterEnter:xe,onAfterLeave:Ve},l.menuProps),{default:()=>[e&&m(De,S({ref:z,selected:ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:t=>t.preventDefault(),onKeydown:be,onFocusin:ye,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:l.itemColor??l.color},de,l.listProps),{default:()=>{var t,c,d;return[(t=o["prepend-item"])==null?void 0:t.call(o),!k.value.length&&!l.hideNoData&&(((c=o["no-data"])==null?void 0:c.call(o))??m(le,{key:"no-data",title:N(l.noDataText)},null)),m(Pe,{ref:K,renderless:!0,items:k.value,itemKey:"value"},{default:g=>{var Q;let{item:n,index:w,itemRef:f}=g;const G=S(n.props,{ref:f,key:n.value,active:U.value&&w===0?!0:void 0,onClick:()=>b(n,null)});return((Q=o.item)==null?void 0:Q.call(o,{item:n,index:w,props:G}))??m(le,S(G,{role:"option"}),{prepend:M=>{let{isSelected:ke}=M;return F(q,null,[l.multiple&&!l.hideSelected?m(ll,{key:n.value,modelValue:ke,ripple:!1,tabindex:"-1"},null):void 0,n.props.prependAvatar&&m(el,{image:n.props.prependAvatar},null),n.props.prependIcon&&m(J,{icon:n.props.prependIcon},null)])},title:()=>{var M;return C.value?n.title:Le("v-combobox",n.title,(M=ce(n))==null?void 0:M.title)}})}}),(d=o["append-item"])==null?void 0:d.call(o)]}})]}),u.value.map((t,c)=>{function d(f){f.stopPropagation(),f.preventDefault(),b(t,!1)}const g={"onClick:close":d,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),d(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},n=A.value?!!o.chip:!!o.selection,w=n?Je(A.value?o.chip({item:t,index:c,props:g}):o.selection({item:t,index:c})):void 0;if(!(n&&!w))return F("div",{key:t.value,class:Ye(["v-combobox__selection",c===i.value&&["v-combobox__selection--selected",ie.value]]),style:Xe(c===i.value?se.value:{})},[A.value?o.chip?m(Ne,{key:"chip-defaults",defaults:{VChip:{closable:l.closableChips,size:"small",text:t.title}}},{default:()=>[w]}):m(Re,S({key:"chip",closable:l.closableChips,size:"small",text:t.title,disabled:t.props.disabled},g),null):w??F("span",{class:"v-combobox__selection-text"},[t.title,l.multiple&&c<u.value.length-1&&F("span",{class:"v-combobox__selection-comma"},[Ze(",")])])])})]),"append-inner":function(){var g,n;for(var t=arguments.length,c=new Array(t),d=0;d<t;d++)c[d]=arguments[d];return F(q,null,[(g=o["append-inner"])==null?void 0:g.call(o,...c),(!l.hideNoData||l.items.length)&&l.menuIcon?m(J,{class:"v-combobox__menu-icon",color:(n=h.value)==null?void 0:n.fieldIconColor,icon:l.menuIcon,onMousedown:he,onClick:We,"aria-label":N(H.value),title:N(H.value),tabindex:"-1"},null):void 0])}})}),Me({isFocused:x,isPristine:C,menu:r,search:v,selectionIndex:i,filteredItems:E,select:b},h)}});export{cl as V};
@@ -0,0 +1 @@
1
+ .v-combobox--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-combobox .v-field .v-text-field__prefix,.v-combobox .v-field .v-text-field__suffix,.v-combobox .v-field .v-field__input,.v-combobox .v-field.v-field{cursor:text}.v-combobox .v-field .v-field__input>input{flex:1 1}.v-combobox .v-field input{min-width:64px}.v-combobox .v-field:not(.v-field--focused) input{min-width:0}.v-combobox .v-field--dirty .v-combobox__selection{margin-inline-end:2px}.v-combobox .v-combobox__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-combobox__content{overflow:hidden}.v-combobox__content{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-combobox__content{border-radius:4px}.v-combobox__mask{background:rgb(var(--v-theme-surface-light))}.v-combobox__selection{display:inline-flex;align-items:center;height:1.5rem;letter-spacing:inherit;line-height:inherit;max-width:calc(100% - 4px)}.v-combobox__selection:first-child{margin-inline-start:0}.v-combobox--selecting-index .v-combobox__selection{opacity:var(--v-medium-emphasis-opacity)}.v-combobox--selecting-index .v-combobox__selection--selected{opacity:1}.v-combobox--selecting-index .v-field__input>input{caret-color:transparent}.v-combobox--single:not(.v-combobox--selection-slot).v-text-field input{flex:1 1;position:absolute;left:0;right:0;width:100%;padding-inline:inherit}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--active input{transition:none}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--dirty:not(.v-field--focused) input{opacity:0}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--focused .v-combobox__selection{opacity:0}.v-combobox__menu-icon{margin-inline-start:4px;transition:.2s cubic-bezier(.4,0,.2,1)}.v-combobox--active-menu .v-combobox__menu-icon{transform:rotate(180deg)}
@@ -0,0 +1 @@
1
+ .v-combobox--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-combobox .v-field .v-text-field__prefix,.v-combobox .v-field .v-text-field__suffix,.v-combobox .v-field .v-field__input,.v-combobox .v-field.v-field{cursor:text}.v-combobox .v-field .v-field__input>input{flex:1 1}.v-combobox .v-field input{min-width:64px}.v-combobox .v-field:not(.v-field--focused) input{min-width:0}.v-combobox .v-field--dirty .v-combobox__selection{margin-inline-end:2px}.v-combobox .v-combobox__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-combobox__content{overflow:hidden}.v-combobox__content{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-combobox__content{border-radius:4px}.v-combobox__mask{background:rgb(var(--v-theme-surface-light))}.v-combobox__selection{display:inline-flex;align-items:center;height:1.5rem;letter-spacing:inherit;line-height:inherit;max-width:calc(100% - 4px)}.v-combobox__selection:first-child{margin-inline-start:0}.v-combobox--selecting-index .v-combobox__selection{opacity:var(--v-medium-emphasis-opacity)}.v-combobox--selecting-index .v-combobox__selection--selected{opacity:1}.v-combobox--selecting-index .v-field__input>input{caret-color:transparent}.v-combobox--single:not(.v-combobox--selection-slot).v-text-field input{flex:1 1;position:absolute;left:0;right:0;width:100%;padding-inline:inherit}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--active input{transition:none}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--dirty:not(.v-field--focused) input{opacity:0}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--focused .v-combobox__selection{opacity:0}.v-combobox__menu-icon{margin-inline-start:4px;transition:.2s cubic-bezier(.4,0,.2,1)}.v-combobox--active-menu .v-combobox__menu-icon{transform:rotate(180deg)}
@@ -0,0 +1 @@
1
+ import{bJ as Ot,cj as _t,g as Q,K as oe,bP as rn,c8 as sn,c9 as cn,p as j,a as A,m as W,bp as Me,u as re,b as T,n as Pe,d as ue,c as O,bN as de,aR as $,r as M,aS as z,cc as qe,ck as un,aV as be,bj as we,t as X,T as xe,j as Y,F as Ce,aL as Vt,i as ve,aU as ke,bB as Bt,cl as F,cm as Fe,e as he,aO as Ue,aT as Ge,L as Ne,bT as lt,cn as dn,A as ze,_ as Lt,x as vn,v as Tt,q as fn,w as it,y as ot,co as gn,bk as mn,bl as ee,bC as yn,b5 as rt,bq as le,bd as Ke,bg as Ye,cp as pt,cq as hn,cr as st,c4 as Sn,bm as bn,bi as wn,cs as It,bn as kn,aP as En,ct as An,c0 as Pn}from"./main-NV7Sm4nK.js";import{a as me,P as Rt,O as Mt,Q as xn,S as Cn,s as $e,q as Xe,o as Je,I as ct,c as Ft,i as Ze,p as Nt,j as Qe,M as ye,d as et,z as zt,K as $t,b as Dt,J as On,N as jt,k as De,l as Oe,w as Ht,F as _n,e as Wt,A as qt,R as ut,g as Vn,y as Bn,h as Ln,x as Tn,V as dt,T as vt,U as Be,W as Le,X as ft,Y as Te,Z as pn,_ as gt,$ as mt,B as In,a0 as Rn,f as Mn}from"./forwardRefs-DG6cgrKs.js";const Ee=new WeakMap;function Fn(e,a){Object.keys(a).forEach(t=>{if(Ot(t)){const n=_t(t),l=Ee.get(e);if(a[t]==null)l==null||l.forEach(i=>{const[o,r]=i;o===n&&(e.removeEventListener(n,r),l.delete(i))});else if(!l||![...l].some(i=>i[0]===n&&i[1]===a[t])){e.addEventListener(n,a[t]);const i=l||new Set;i.add([n,a[t]]),Ee.has(e)||Ee.set(e,i)}}else a[t]==null?e.removeAttribute(t):e.setAttribute(t,a[t])})}function Nn(e,a){Object.keys(a).forEach(t=>{if(Ot(t)){const n=_t(t),l=Ee.get(e);l==null||l.forEach(i=>{const[o,r]=i;o===n&&(e.removeEventListener(n,r),l.delete(i))})}else e.removeAttribute(t)})}function zn(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",t=arguments.length>2?arguments[2]:void 0;return Q()({name:t??rn(cn(e.replace(/__/g,"-"))),props:{tag:{type:String,default:a},...oe()},setup(n,l){let{slots:i}=l;return()=>{var o;return sn(n.tag,{class:[e,n.class],style:n.style},(o=i.default)==null?void 0:o.call(i))}}})}function Ut(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const a=e.getRootNode();return a!==document&&a.getRootNode({composed:!0})!==document?null:a}function $n(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(a?Dn(e):tt(e))return e;e=e.parentElement}return document.scrollingElement}function _e(e,a){const t=[];if(a&&e&&!a.contains(e))return t;for(;e&&(tt(e)&&t.push(e),e!==a);)e=e.parentElement;return t}function tt(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const a=window.getComputedStyle(e);return a.overflowY==="scroll"||a.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function Dn(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const a=window.getComputedStyle(e);return["scroll","auto"].includes(a.overflowY)}function jn(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}const Hn=j({target:[Object,Array]},"v-dialog-transition"),pe=new WeakMap,Wn=Q()({name:"VDialogTransition",props:Hn(),setup(e,a){let{slots:t}=a;const n={onBeforeEnter(l){l.style.pointerEvents="none",l.style.visibility="hidden"},async onEnter(l,i){var y;await new Promise(s=>requestAnimationFrame(s)),await new Promise(s=>requestAnimationFrame(s)),l.style.visibility="";const o=ht(e.target,l),{x:r,y:u,sx:d,sy:c,speed:f}=o;pe.set(l,o);const b=me(l,[{transform:`translate(${r}px, ${u}px) scale(${d}, ${c})`,opacity:0},{}],{duration:225*f,easing:Cn});(y=yt(l))==null||y.forEach(s=>{me(s,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*f,easing:$e})}),b.finished.then(()=>i())},onAfterEnter(l){l.style.removeProperty("pointer-events")},onBeforeLeave(l){l.style.pointerEvents="none"},async onLeave(l,i){var y;await new Promise(s=>requestAnimationFrame(s));let o;!pe.has(l)||Array.isArray(e.target)||e.target.offsetParent||e.target.getClientRects().length?o=ht(e.target,l):o=pe.get(l);const{x:r,y:u,sx:d,sy:c,speed:f}=o;me(l,[{},{transform:`translate(${r}px, ${u}px) scale(${d}, ${c})`,opacity:0}],{duration:125*f,easing:xn}).finished.then(()=>i()),(y=yt(l))==null||y.forEach(s=>{me(s,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*f,easing:$e})})},onAfterLeave(l){l.style.removeProperty("pointer-events")}};return()=>e.target?A(Me,W({name:"dialog-transition"},n,{css:!1}),t):A(Me,{name:"dialog-transition"},t)}});function yt(e){var t;const a=(t=e.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list"))==null?void 0:t.children;return a&&[...a]}function ht(e,a){const t=Rt(e),n=Mt(a),[l,i]=getComputedStyle(a).transformOrigin.split(" ").map(v=>parseFloat(v)),[o,r]=getComputedStyle(a).getPropertyValue("--v-overlay-anchor-origin").split(" ");let u=t.left+t.width/2;o==="left"||r==="left"?u-=t.width/2:(o==="right"||r==="right")&&(u+=t.width/2);let d=t.top+t.height/2;o==="top"||r==="top"?d-=t.height/2:(o==="bottom"||r==="bottom")&&(d+=t.height/2);const c=t.width/n.width,f=t.height/n.height,b=Math.max(1,c,f),y=c/b||0,s=f/b||0,g=n.width*n.height/(window.innerWidth*window.innerHeight),h=g>.12?Math.min(1.5,(g-.12)*10+1):1;return{x:u-(l+n.left),y:d-(i+n.top),sx:y,sy:s,speed:h}}function qn(e){return{aspectStyles:O(()=>{const a=Number(e.aspectRatio);return a?{paddingBottom:String(1/a*100)+"%"}:void 0})}}const Gt=j({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...oe(),...Xe()},"VResponsive"),St=Q()({name:"VResponsive",props:Gt(),setup(e,a){let{slots:t}=a;const{aspectStyles:n}=qn(e),{dimensionStyles:l}=Je(e);return re(()=>{var i;return T("div",{class:ue(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:Pe([l.value,e.style])},[T("div",{class:"v-responsive__sizer",style:Pe(n.value)},null),(i=t.additional)==null?void 0:i.call(t),t.default&&T("div",{class:ue(["v-responsive__content",e.contentClass])},[t.default()])])}),{}}}),Un=j({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...Gt(),...oe(),...Qe(),...Nt()},"VImg"),Gn=Q()({name:"VImg",directives:{vIntersect:ct},props:Un(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,a){let{emit:t,slots:n}=a;const{backgroundColorClasses:l,backgroundColorStyles:i}=Ft(()=>e.color),{roundedClasses:o}=Ze(e),r=de("VImg"),u=$(""),d=M(),c=$(e.eager?"loading":"idle"),f=$(),b=$(),y=O(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),s=O(()=>y.value.aspect||f.value/b.value||0);z(()=>e.src,()=>{g(c.value!=="idle")}),z(s,(E,k)=>{!E&&k&&d.value&&x(d.value)}),qe(()=>g());function g(E){if(!(e.eager&&E)&&!(un&&!E&&!e.eager)){if(c.value="loading",y.value.lazySrc){const k=new Image;k.src=y.value.lazySrc,x(k,null)}y.value.src&&be(()=>{var k;t("loadstart",((k=d.value)==null?void 0:k.currentSrc)||y.value.src),setTimeout(()=>{var B;if(!r.isUnmounted)if((B=d.value)!=null&&B.complete){if(d.value.naturalWidth||v(),c.value==="error")return;s.value||x(d.value,null),c.value==="loading"&&h()}else s.value||x(d.value),S()})})}}function h(){var E;r.isUnmounted||(S(),x(d.value),c.value="loaded",t("load",((E=d.value)==null?void 0:E.currentSrc)||y.value.src))}function v(){var E;r.isUnmounted||(c.value="error",t("error",((E=d.value)==null?void 0:E.currentSrc)||y.value.src))}function S(){const E=d.value;E&&(u.value=E.currentSrc||E.src)}let _=-1;we(()=>{clearTimeout(_)});function x(E){let k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const B=()=>{if(clearTimeout(_),r.isUnmounted)return;const{naturalHeight:w,naturalWidth:R}=E;w||R?(f.value=R,b.value=w):!E.complete&&c.value==="loading"&&k!=null?_=window.setTimeout(B,k):(E.currentSrc.endsWith(".svg")||E.currentSrc.startsWith("data:image/svg+xml"))&&(f.value=1,b.value=1)};B()}const V=X(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),p=()=>{var B;if(!y.value.src||c.value==="idle")return null;const E=T("img",{class:ue(["v-img__img",V.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:y.value.src,srcset:y.value.srcset,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:d,onLoad:h,onError:v},null),k=(B=n.sources)==null?void 0:B.call(n);return A(ye,{transition:e.transition,appear:!0},{default:()=>[xe(k?T("picture",{class:"v-img__picture"},[k,E]):E,[[Vt,c.value==="loaded"]])]})},I=()=>A(ye,{transition:e.transition},{default:()=>[y.value.lazySrc&&c.value!=="loaded"&&T("img",{class:ue(["v-img__img","v-img__img--preload",V.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:y.value.lazySrc,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),m=()=>n.placeholder?A(ye,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!n.error)&&T("div",{class:"v-img__placeholder"},[n.placeholder()])]}):null,L=()=>n.error?A(ye,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&T("div",{class:"v-img__error"},[n.error()])]}):null,G=()=>e.gradient?T("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,te=$(!1);{const E=z(s,k=>{k&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{te.value=!0})}),E())})}return re(()=>{const E=St.filterProps(e);return xe(A(St,W({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!te.value},l.value,o.value,e.class],style:[{width:Y(e.width==="auto"?f.value:e.width)},i.value,e.style]},E,{aspectRatio:s.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>T(Ce,null,[A(p,null,null),A(I,null,null),A(G,null,null),A(m,null,null),A(L,null,null)]),default:n.default}),[[ct,{handler:g,options:e.options},null,{once:!0}]])}),{currentSrc:u,image:d,state:c,naturalWidth:f,naturalHeight:b}}}),Kn=j({eager:Boolean},"lazy");function Yn(e,a){const t=$(!1),n=X(()=>t.value||e.eager||a.value);z(a,()=>t.value=!0);function l(){e.eager||(t.value=!1)}return{isBooted:t,hasContent:n,onAfterLeave:l}}function Kt(){const a=de("useScopeId").vnode.scopeId;return{scopeId:a?{[a]:""}:void 0}}const je=Symbol.for("vuetify:list");function Ha(){const e=ve(je,{hasPrepend:$(!1),updateHasPrepend:()=>null}),a={hasPrepend:$(!1),updateHasPrepend:t=>{t&&(a.hasPrepend.value=t)}};return ke(je,a),e}function Xn(){return ve(je,null)}const nt=e=>{const a={activate:t=>{let{id:n,value:l,activated:i}=t;return n=F(n),e&&!l&&i.size===1&&i.has(n)||(l?i.add(n):i.delete(n)),i},in:(t,n,l)=>{let i=new Set;if(t!=null)for(const o of Bt(t))i=a.activate({id:o,value:!0,activated:new Set(i),children:n,parents:l});return i},out:t=>Array.from(t)};return a},Yt=e=>{const a=nt(e);return{activate:n=>{let{activated:l,id:i,...o}=n;i=F(i);const r=l.has(i)?new Set([i]):new Set;return a.activate({...o,id:i,activated:r})},in:(n,l,i)=>{let o=new Set;if(n!=null){const r=Bt(n);r.length&&(o=a.in(r.slice(0,1),l,i))}return o},out:(n,l,i)=>a.out(n,l,i)}},Jn=e=>{const a=nt(e);return{activate:n=>{let{id:l,activated:i,children:o,...r}=n;return l=F(l),o.has(l)?i:a.activate({id:l,activated:i,children:o,...r})},in:a.in,out:a.out}},Zn=e=>{const a=Yt(e);return{activate:n=>{let{id:l,activated:i,children:o,...r}=n;return l=F(l),o.has(l)?i:a.activate({id:l,activated:i,children:o,...r})},in:a.in,out:a.out}},Qn={open:e=>{let{id:a,value:t,opened:n,parents:l}=e;if(t){const i=new Set;i.add(a);let o=l.get(a);for(;o!=null;)i.add(o),o=l.get(o);return i}else return n.delete(a),n},select:()=>null},Xt={open:e=>{let{id:a,value:t,opened:n,parents:l}=e;if(t){let i=l.get(a);for(n.add(a);i!=null&&i!==a;)n.add(i),i=l.get(i);return n}else n.delete(a);return n},select:()=>null},ea={open:Xt.open,select:e=>{let{id:a,value:t,opened:n,parents:l}=e;if(!t)return n;const i=[];let o=l.get(a);for(;o!=null;)i.push(o),o=l.get(o);return new Set(i)}},at=e=>{const a={select:t=>{let{id:n,value:l,selected:i}=t;if(n=F(n),e&&!l){const o=Array.from(i.entries()).reduce((r,u)=>{let[d,c]=u;return c==="on"&&r.push(d),r},[]);if(o.length===1&&o[0]===n)return i}return i.set(n,l?"on":"off"),i},in:(t,n,l)=>{const i=new Map;for(const o of t||[])a.select({id:o,value:!0,selected:i,children:n,parents:l});return i},out:t=>{const n=[];for(const[l,i]of t.entries())i==="on"&&n.push(l);return n}};return a},Jt=e=>{const a=at(e);return{select:n=>{let{selected:l,id:i,...o}=n;i=F(i);const r=l.has(i)?new Map([[i,l.get(i)]]):new Map;return a.select({...o,id:i,selected:r})},in:(n,l,i)=>n!=null&&n.length?a.in(n.slice(0,1),l,i):new Map,out:(n,l,i)=>a.out(n,l,i)}},ta=e=>{const a=at(e);return{select:n=>{let{id:l,selected:i,children:o,...r}=n;return l=F(l),o.has(l)?i:a.select({id:l,selected:i,children:o,...r})},in:a.in,out:a.out}},na=e=>{const a=Jt(e);return{select:n=>{let{id:l,selected:i,children:o,...r}=n;return l=F(l),o.has(l)?i:a.select({id:l,selected:i,children:o,...r})},in:a.in,out:a.out}},Zt=e=>{const a={select:t=>{let{id:n,value:l,selected:i,children:o,parents:r}=t;n=F(n);const u=new Map(i),d=[n];for(;d.length;){const f=d.shift();i.set(F(f),l?"on":"off"),o.has(f)&&d.push(...o.get(f))}let c=F(r.get(n));for(;c;){const f=o.get(c),b=f.every(s=>i.get(F(s))==="on"),y=f.every(s=>!i.has(F(s))||i.get(F(s))==="off");i.set(c,b?"on":y?"off":"indeterminate"),c=F(r.get(c))}return e&&!l&&Array.from(i.entries()).reduce((b,y)=>{let[s,g]=y;return g==="on"&&b.push(s),b},[]).length===0?u:i},in:(t,n,l)=>{let i=new Map;for(const o of t||[])i=a.select({id:o,value:!0,selected:i,children:n,parents:l});return i},out:(t,n)=>{const l=[];for(const[i,o]of t.entries())o==="on"&&!n.has(i)&&l.push(i);return l}};return a},aa=e=>{const a=Zt(e);return{select:a.select,in:a.in,out:(n,l,i)=>{const o=[];for(const[r,u]of n.entries())if(u==="on"){if(i.has(r)){const d=i.get(r);if(n.get(d)==="on")continue}o.push(r)}return o}}},Se=Symbol.for("vuetify:nested"),Qt={id:$(),root:{register:()=>null,unregister:()=>null,parents:M(new Map),children:M(new Map),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:M(!1),selectable:M(!1),opened:M(new Set),activated:M(new Set),selected:M(new Map),selectedValues:M([]),getPath:()=>[]}},Wa=j({activatable:Boolean,selectable:Boolean,activeStrategy:[String,Function,Object],selectStrategy:[String,Function,Object],openStrategy:[String,Object],opened:null,activated:null,selected:null,mandatory:Boolean},"nested"),qa=e=>{let a=!1;const t=M(new Map),n=M(new Map),l=he(e,"opened",e.opened,s=>new Set(s),s=>[...s.values()]),i=O(()=>{if(typeof e.activeStrategy=="object")return e.activeStrategy;if(typeof e.activeStrategy=="function")return e.activeStrategy(e.mandatory);switch(e.activeStrategy){case"leaf":return Jn(e.mandatory);case"single-leaf":return Zn(e.mandatory);case"independent":return nt(e.mandatory);case"single-independent":default:return Yt(e.mandatory)}}),o=O(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;if(typeof e.selectStrategy=="function")return e.selectStrategy(e.mandatory);switch(e.selectStrategy){case"single-leaf":return na(e.mandatory);case"leaf":return ta(e.mandatory);case"independent":return at(e.mandatory);case"single-independent":return Jt(e.mandatory);case"trunk":return aa(e.mandatory);case"classic":default:return Zt(e.mandatory)}}),r=O(()=>{if(typeof e.openStrategy=="object")return e.openStrategy;switch(e.openStrategy){case"list":return ea;case"single":return Qn;case"multiple":default:return Xt}}),u=he(e,"activated",e.activated,s=>i.value.in(s,t.value,n.value),s=>i.value.out(s,t.value,n.value)),d=he(e,"selected",e.selected,s=>o.value.in(s,t.value,n.value),s=>o.value.out(s,t.value,n.value));we(()=>{a=!0});function c(s){const g=[];let h=s;for(;h!=null;)g.unshift(h),h=n.value.get(h);return g}const f=de("nested"),b=new Set,y={id:$(),root:{opened:l,activatable:X(()=>e.activatable),selectable:X(()=>e.selectable),activated:u,selected:d,selectedValues:O(()=>{const s=[];for(const[g,h]of d.value.entries())h==="on"&&s.push(g);return s}),register:(s,g,h)=>{if(b.has(s)){c(s).map(String).join(" -> "),c(g).concat(s).map(String).join(" -> ");return}else b.add(s);g&&s!==g&&n.value.set(s,g),h&&t.value.set(s,[]),g!=null&&t.value.set(g,[...t.value.get(g)||[],s])},unregister:s=>{if(a)return;b.delete(s),t.value.delete(s);const g=n.value.get(s);if(g){const h=t.value.get(g)??[];t.value.set(g,h.filter(v=>v!==s))}n.value.delete(s)},open:(s,g,h)=>{f.emit("click:open",{id:s,value:g,path:c(s),event:h});const v=r.value.open({id:s,value:g,opened:new Set(l.value),children:t.value,parents:n.value,event:h});v&&(l.value=v)},openOnSelect:(s,g,h)=>{const v=r.value.select({id:s,value:g,selected:new Map(d.value),opened:new Set(l.value),children:t.value,parents:n.value,event:h});v&&(l.value=v)},select:(s,g,h)=>{f.emit("click:select",{id:s,value:g,path:c(s),event:h});const v=o.value.select({id:s,value:g,selected:new Map(d.value),children:t.value,parents:n.value,event:h});v&&(d.value=v),y.root.openOnSelect(s,g,h)},activate:(s,g,h)=>{if(!e.activatable)return y.root.select(s,!0,h);f.emit("click:activate",{id:s,value:g,path:c(s),event:h});const v=i.value.activate({id:s,value:g,activated:new Set(u.value),children:t.value,parents:n.value,event:h});if(v.size!==u.value.size)u.value=v;else{for(const S of v)if(!u.value.has(S)){u.value=v;return}for(const S of u.value)if(!v.has(S)){u.value=v;return}}},children:t,parents:n,getPath:c}};return ke(Se,y),y.root},la=(e,a)=>{const t=ve(Se,Qt),n=Symbol("nested item"),l=O(()=>Fe(e)??n),i={...t,id:l,open:(o,r)=>t.root.open(l.value,o,r),openOnSelect:(o,r)=>t.root.openOnSelect(l.value,o,r),isOpen:O(()=>t.root.opened.value.has(l.value)),parent:O(()=>t.root.parents.value.get(l.value)),activate:(o,r)=>t.root.activate(l.value,o,r),isActivated:O(()=>t.root.activated.value.has(F(l.value))),select:(o,r)=>t.root.select(l.value,o,r),isSelected:O(()=>t.root.selected.value.get(F(l.value))==="on"),isIndeterminate:O(()=>t.root.selected.value.get(F(l.value))==="indeterminate"),isLeaf:O(()=>!t.root.children.value.get(l.value)),isGroupActivator:t.isGroupActivator};return qe(()=>{!t.isGroupActivator&&t.root.register(l.value,t.id.value,a)}),we(()=>{!t.isGroupActivator&&t.root.unregister(l.value)}),a&&ke(Se,i),i},Ua=()=>{const e=ve(Se,Qt);ke(Se,{...e,isGroupActivator:!0})},ia=j({opacity:[Number,String],...oe(),...et()},"VListItemSubtitle"),oa=Q()({name:"VListItemSubtitle",props:ia(),setup(e,a){let{slots:t}=a;return re(()=>A(e.tag,{class:ue(["v-list-item-subtitle",e.class]),style:Pe([{"--v-list-item-subtitle-opacity":e.opacity},e.style])},t)),{}}}),ra=zn("v-list-item-title"),sa=j({start:Boolean,end:Boolean,icon:Ne,image:String,text:String,...qt(),...oe(),...Wt(),...Qe(),..._n(),...et(),...Ge(),...Ht({variant:"flat"})},"VAvatar"),bt=Q()({name:"VAvatar",props:sa(),setup(e,a){let{slots:t}=a;const{themeClasses:n}=Ue(e),{borderClasses:l}=zt(e),{colorClasses:i,colorStyles:o,variantClasses:r}=$t(e),{densityClasses:u}=Dt(e),{roundedClasses:d}=Ze(e),{sizeClasses:c,sizeStyles:f}=On(e);return re(()=>A(e.tag,{class:ue(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},n.value,l.value,i.value,u.value,d.value,c.value,r.value,e.class]),style:Pe([o.value,f.value,e.style])},{default:()=>[t.default?A(Oe,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[t.default()]}):e.image?A(Gn,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?A(De,{key:"icon",icon:e.icon},null):e.text,jt(!1,"v-avatar")]})),{}}}),ca=j({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:Ne,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:Ne,ripple:{type:[Boolean,Object],default:!0},slim:Boolean,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},value:null,onClick:lt(),onClickOnce:lt(),...qt(),...oe(),...Wt(),...Xe(),...Tn(),...Qe(),...Ln(),...et(),...Ge(),...Ht({variant:"text"})},"VListItem"),ua=Q()({name:"VListItem",directives:{vRipple:ut},props:ca(),emits:{click:e=>!0},setup(e,a){let{attrs:t,slots:n,emit:l}=a;const i=Vn(e,t),o=O(()=>e.value===void 0?i.href.value:e.value),{activate:r,isActivated:u,select:d,isOpen:c,isSelected:f,isIndeterminate:b,isGroupActivator:y,root:s,parent:g,openOnSelect:h,id:v}=la(o,!1),S=Xn(),_=O(()=>{var C;return e.active!==!1&&(e.active||((C=i.isActive)==null?void 0:C.value)||(s.activatable.value?u.value:f.value))}),x=X(()=>e.link!==!1&&i.isLink.value),V=O(()=>!!S&&(s.selectable.value||s.activatable.value||e.value!=null)),p=O(()=>!e.disabled&&e.link!==!1&&(e.link||i.isClickable.value||V.value)),I=X(()=>e.rounded||e.nav),m=X(()=>e.color??e.activeColor),L=X(()=>({color:_.value?m.value??e.baseColor:e.baseColor,variant:e.variant}));z(()=>{var C;return(C=i.isActive)==null?void 0:C.value},C=>{C&&G()}),qe(()=>{var C;(C=i.isActive)!=null&&C.value&&G()});function G(){g.value!=null&&s.open(g.value,!0),h(!0)}const{themeClasses:te}=Ue(e),{borderClasses:E}=zt(e),{colorClasses:k,colorStyles:B,variantClasses:w}=$t(L),{densityClasses:R}=Dt(e),{dimensionStyles:H}=Je(e),{elevationClasses:q}=Bn(e),{roundedClasses:ie}=Ze(I),N=X(()=>e.lines?`v-list-item--${e.lines}-line`:void 0),U=O(()=>({isActive:_.value,select:d,isOpen:c.value,isSelected:f.value,isIndeterminate:b.value}));function se(C){var ne,ce;l("click",C),!["INPUT","TEXTAREA"].includes((ne=C.target)==null?void 0:ne.tagName)&&p.value&&((ce=i.navigate)==null||ce.call(i,C),!y&&(s.activatable.value?r(!u.value,C):(s.selectable.value||e.value!=null)&&d(!f.value,C)))}function J(C){const ne=C.target;["INPUT","TEXTAREA"].includes(ne.tagName)||(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),C.target.dispatchEvent(new MouseEvent("click",C)))}return re(()=>{const C=x.value?"a":e.tag,ne=n.title||e.title!=null,ce=n.subtitle||e.subtitle!=null,P=!!(e.appendAvatar||e.appendIcon),D=!!(P||n.append),ae=!!(e.prependAvatar||e.prependIcon),Z=!!(ae||n.prepend);return S==null||S.updateHasPrepend(Z),e.activeColor&&dn("active-color",["color","base-color"]),xe(A(C,W({class:["v-list-item",{"v-list-item--active":_.value,"v-list-item--disabled":e.disabled,"v-list-item--link":p.value,"v-list-item--nav":e.nav,"v-list-item--prepend":!Z&&(S==null?void 0:S.hasPrepend.value),"v-list-item--slim":e.slim,[`${e.activeClass}`]:e.activeClass&&_.value},te.value,E.value,k.value,R.value,q.value,N.value,ie.value,w.value,e.class],style:[B.value,H.value,e.style],tabindex:p.value?S?-2:0:void 0,"aria-selected":V.value?s.activatable.value?u.value:s.selectable.value?f.value:_.value:void 0,onClick:se,onKeydown:p.value&&!x.value&&J},i.linkProps),{default:()=>{var fe;return[jt(p.value||_.value,"v-list-item"),Z&&T("div",{key:"prepend",class:"v-list-item__prepend"},[n.prepend?A(Oe,{key:"prepend-defaults",disabled:!ae,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon},VListItemAction:{start:!0}}},{default:()=>{var K;return[(K=n.prepend)==null?void 0:K.call(n,U.value)]}}):T(Ce,null,[e.prependAvatar&&A(bt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&A(De,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)]),T("div",{class:"v-list-item__spacer"},null)]),T("div",{class:"v-list-item__content","data-no-activator":""},[ne&&A(ra,{key:"title"},{default:()=>{var K;return[((K=n.title)==null?void 0:K.call(n,{title:e.title}))??ze(e.title)]}}),ce&&A(oa,{key:"subtitle"},{default:()=>{var K;return[((K=n.subtitle)==null?void 0:K.call(n,{subtitle:e.subtitle}))??ze(e.subtitle)]}}),(fe=n.default)==null?void 0:fe.call(n,U.value)]),D&&T("div",{key:"append",class:"v-list-item__append"},[n.append?A(Oe,{key:"append-defaults",disabled:!P,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon},VListItemAction:{end:!0}}},{default:()=>{var K;return[(K=n.append)==null?void 0:K.call(n,U.value)]}}):T(Ce,null,[e.appendIcon&&A(De,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&A(bt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)]),T("div",{class:"v-list-item__spacer"},null)])]}}),[[ut,p.value&&e.ripple]])}),{activate:r,isActivated:u,isGroupActivator:y,isSelected:f,list:S,select:d,root:s,id:v,link:i}}}),da={name:"CodexListItem"};function va(e,a,t,n,l,i){return Tt(),vn(ua,{class:"codexListItem",slim:"",compact:""})}const Ga=Lt(da,[["render",va],["__scopeId","data-v-63b84802"]]),fa={name:"ConfirmFooter",props:{confirmText:{type:String,required:!0},disabled:{type:Boolean,default:!1}},emits:["confirm","cancel"]},ga={class:"confirmFooter"};function ma(e,a,t,n,l,i){return Tt(),fn("footer",ga,[A(dt,{class:"confirmButton",disabled:t.disabled,onClick:a[0]||(a[0]=o=>e.$emit("confirm"))},{default:it(()=>[ot(ze(t.confirmText),1)]),_:1},8,["disabled"]),A(dt,{class:"cancelButton",onClick:a[1]||(a[1]=o=>e.$emit("cancel"))},{default:it(()=>a[2]||(a[2]=[ot(" Cancel ")])),_:1,__:[2]})])}const Ka=Lt(fa,[["render",ma],["__scopeId","data-v-24df1550"]]);function Ie(e,a){return{x:e.x+a.x,y:e.y+a.y}}function ya(e,a){return{x:e.x-a.x,y:e.y-a.y}}function wt(e,a){if(e.side==="top"||e.side==="bottom"){const{side:t,align:n}=e,l=n==="left"?0:n==="center"?a.width/2:n==="right"?a.width:n,i=t==="top"?0:t==="bottom"?a.height:t;return Ie({x:l,y:i},a)}else if(e.side==="left"||e.side==="right"){const{side:t,align:n}=e,l=t==="left"?0:t==="right"?a.width:t,i=n==="top"?0:n==="center"?a.height/2:n==="bottom"?a.height:n;return Ie({x:l,y:i},a)}return Ie({x:a.width/2,y:a.height/2},a)}const en={static:ba,connected:ka},ha=j({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in en},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function Sa(e,a){const t=M({}),n=M();le&&Ke(()=>!!(a.isActive.value&&e.locationStrategy),r=>{var u,d;z(()=>e.locationStrategy,r),ee(()=>{window.removeEventListener("resize",l),visualViewport==null||visualViewport.removeEventListener("resize",i),visualViewport==null||visualViewport.removeEventListener("scroll",o),n.value=void 0}),window.addEventListener("resize",l,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",i,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",o,{passive:!0}),typeof e.locationStrategy=="function"?n.value=(u=e.locationStrategy(a,e,t))==null?void 0:u.updateLocation:n.value=(d=en[e.locationStrategy](a,e,t))==null?void 0:d.updateLocation});function l(r){var u;(u=n.value)==null||u.call(n,r)}function i(r){var u;(u=n.value)==null||u.call(n,r)}function o(r){var u;(u=n.value)==null||u.call(n,r)}return{contentStyles:t,updateLocation:n}}function ba(){}function wa(e,a){const t=Mt(e);return a?t.x+=parseFloat(e.style.right||0):t.x-=parseFloat(e.style.left||0),t.y-=parseFloat(e.style.top||0),t}function ka(e,a,t){(Array.isArray(e.target.value)||jn(e.target.value))&&Object.assign(t.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:l,preferredOrigin:i}=gn(()=>{const v=vt(a.location,e.isRtl.value),S=a.origin==="overlap"?v:a.origin==="auto"?Be(v):vt(a.origin,e.isRtl.value);return v.side===S.side&&v.align===Le(S).align?{preferredAnchor:ft(v),preferredOrigin:ft(S)}:{preferredAnchor:v,preferredOrigin:S}}),[o,r,u,d]=["minWidth","minHeight","maxWidth","maxHeight"].map(v=>O(()=>{const S=parseFloat(a[v]);return isNaN(S)?1/0:S})),c=O(()=>{if(Array.isArray(a.offset))return a.offset;if(typeof a.offset=="string"){const v=a.offset.split(" ").map(parseFloat);return v.length<2&&v.push(0),v}return typeof a.offset=="number"?[a.offset,0]:[0,0]});let f=!1,b=-1;const y=new mn(4),s=new ResizeObserver(()=>{if(!f)return;if(requestAnimationFrame(S=>{S!==b&&y.clear(),requestAnimationFrame(_=>{b=_})}),y.isFull){const S=y.values();if(yn(S.at(-1),S.at(-3)))return}const v=h();v&&y.push(v.flipped)});z([e.target,e.contentEl],(v,S)=>{let[_,x]=v,[V,p]=S;V&&!Array.isArray(V)&&s.unobserve(V),_&&!Array.isArray(_)&&s.observe(_),p&&s.unobserve(p),x&&s.observe(x)},{immediate:!0}),ee(()=>{s.disconnect()});let g=new Te({x:0,y:0,width:0,height:0});function h(){if(f=!1,requestAnimationFrame(()=>f=!0),!e.target.value||!e.contentEl.value)return;(Array.isArray(e.target.value)||e.target.value.offsetParent||e.target.value.getClientRects().length)&&(g=Rt(e.target.value));const v=wa(e.contentEl.value,e.isRtl.value),S=_e(e.contentEl.value),_=12;S.length||(S.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(v.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),v.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const x=S.reduce((k,B)=>{const w=pn(B);return k?new Te({x:Math.max(k.left,w.left),y:Math.max(k.top,w.top),width:Math.min(k.right,w.right)-Math.max(k.left,w.left),height:Math.min(k.bottom,w.bottom)-Math.max(k.top,w.top)}):w},void 0);x.x+=_,x.y+=_,x.width-=_*2,x.height-=_*2;let V={anchor:l.value,origin:i.value};function p(k){const B=new Te(v),w=wt(k.anchor,g),R=wt(k.origin,B);let{x:H,y:q}=ya(w,R);switch(k.anchor.side){case"top":q-=c.value[0];break;case"bottom":q+=c.value[0];break;case"left":H-=c.value[0];break;case"right":H+=c.value[0];break}switch(k.anchor.align){case"top":q-=c.value[1];break;case"bottom":q+=c.value[1];break;case"left":H-=c.value[1];break;case"right":H+=c.value[1];break}return B.x+=H,B.y+=q,B.width=Math.min(B.width,u.value),B.height=Math.min(B.height,d.value),{overflows:mt(B,x),x:H,y:q}}let I=0,m=0;const L={x:0,y:0},G={x:!1,y:!1};let te=-1;for(;!(te++>10);){const{x:k,y:B,overflows:w}=p(V);I+=k,m+=B,v.x+=k,v.y+=B;{const R=gt(V.anchor),H=w.x.before||w.x.after,q=w.y.before||w.y.after;let ie=!1;if(["x","y"].forEach(N=>{if(N==="x"&&H&&!G.x||N==="y"&&q&&!G.y){const U={anchor:{...V.anchor},origin:{...V.origin}},se=N==="x"?R==="y"?Le:Be:R==="y"?Be:Le;U.anchor=se(U.anchor),U.origin=se(U.origin);const{overflows:J}=p(U);(J[N].before<=w[N].before&&J[N].after<=w[N].after||J[N].before+J[N].after<(w[N].before+w[N].after)/2)&&(V=U,ie=G[N]=!0)}}),ie)continue}w.x.before&&(I+=w.x.before,v.x+=w.x.before),w.x.after&&(I-=w.x.after,v.x-=w.x.after),w.y.before&&(m+=w.y.before,v.y+=w.y.before),w.y.after&&(m-=w.y.after,v.y-=w.y.after);{const R=mt(v,x);L.x=x.width-R.x.before-R.x.after,L.y=x.height-R.y.before-R.y.after,I+=R.x.before,v.x+=R.x.before,m+=R.y.before,v.y+=R.y.before}break}const E=gt(V.anchor);return Object.assign(t.value,{"--v-overlay-anchor-origin":`${V.anchor.side} ${V.anchor.align}`,transformOrigin:`${V.origin.side} ${V.origin.align}`,top:Y(Re(m)),left:e.isRtl.value?void 0:Y(Re(I)),right:e.isRtl.value?Y(Re(-I)):void 0,minWidth:Y(E==="y"?Math.min(o.value,g.width):o.value),maxWidth:Y(kt(rt(L.x,o.value===1/0?0:o.value,u.value))),maxHeight:Y(kt(rt(L.y,r.value===1/0?0:r.value,d.value)))}),{available:L,contentBox:v,flipped:G}}return z(()=>[l.value,i.value,a.offset,a.minWidth,a.minHeight,a.maxWidth,a.maxHeight],()=>h()),be(()=>{const v=h();if(!v)return;const{available:S,contentBox:_}=v;_.height>S.y&&requestAnimationFrame(()=>{h(),requestAnimationFrame(()=>{h()})})}),{updateLocation:h}}function Re(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function kt(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let He=!0;const Ve=[];function Ea(e){!He||Ve.length?(Ve.push(e),We()):(He=!1,e(),We())}let Et=-1;function We(){cancelAnimationFrame(Et),Et=requestAnimationFrame(()=>{const e=Ve.shift();e&&e(),Ve.length?We():He=!0})}const Ae={none:null,close:xa,block:Ca,reposition:Oa},Aa=j({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in Ae}},"VOverlay-scroll-strategies");function Pa(e,a){if(!le)return;let t;Ye(async()=>{t==null||t.stop(),a.isActive.value&&e.scrollStrategy&&(t=pt(),await new Promise(n=>setTimeout(n)),t.active&&t.run(()=>{var n;typeof e.scrollStrategy=="function"?e.scrollStrategy(a,e,t):(n=Ae[e.scrollStrategy])==null||n.call(Ae,a,e,t)}))}),ee(()=>{t==null||t.stop()})}function xa(e){function a(t){e.isActive.value=!1}tn(e.targetEl.value??e.contentEl.value,a)}function Ca(e,a){var o;const t=(o=e.root.value)==null?void 0:o.offsetParent,n=[...new Set([..._e(e.targetEl.value,a.contained?t:void 0),..._e(e.contentEl.value,a.contained?t:void 0)])].filter(r=>!r.classList.contains("v-overlay-scroll-blocked")),l=window.innerWidth-document.documentElement.offsetWidth,i=(r=>tt(r)&&r)(t||document.documentElement);i&&e.root.value.classList.add("v-overlay--scroll-blocked"),n.forEach((r,u)=>{r.style.setProperty("--v-body-scroll-x",Y(-r.scrollLeft)),r.style.setProperty("--v-body-scroll-y",Y(-r.scrollTop)),r!==document.documentElement&&r.style.setProperty("--v-scrollbar-offset",Y(l)),r.classList.add("v-overlay-scroll-blocked")}),ee(()=>{n.forEach((r,u)=>{const d=parseFloat(r.style.getPropertyValue("--v-body-scroll-x")),c=parseFloat(r.style.getPropertyValue("--v-body-scroll-y")),f=r.style.scrollBehavior;r.style.scrollBehavior="auto",r.style.removeProperty("--v-body-scroll-x"),r.style.removeProperty("--v-body-scroll-y"),r.style.removeProperty("--v-scrollbar-offset"),r.classList.remove("v-overlay-scroll-blocked"),r.scrollLeft=-d,r.scrollTop=-c,r.style.scrollBehavior=f}),i&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function Oa(e,a,t){let n=!1,l=-1,i=-1;function o(r){Ea(()=>{var c,f;const u=performance.now();(f=(c=e.updateLocation).value)==null||f.call(c,r),n=(performance.now()-u)/(1e3/60)>2})}i=(typeof requestIdleCallback>"u"?r=>r():requestIdleCallback)(()=>{t.run(()=>{tn(e.targetEl.value??e.contentEl.value,r=>{n?(cancelAnimationFrame(l),l=requestAnimationFrame(()=>{l=requestAnimationFrame(()=>{o(r)})})):o(r)})})}),ee(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(i),cancelAnimationFrame(l)})}function tn(e,a){const t=[document,..._e(e)];t.forEach(n=>{n.addEventListener("scroll",a,{passive:!0})}),ee(()=>{t.forEach(n=>{n.removeEventListener("scroll",a)})})}const _a=Symbol.for("vuetify:v-menu"),Va=j({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function Ba(e,a){let t=()=>{};function n(o){t==null||t();const r=Number(o?e.openDelay:e.closeDelay);return new Promise(u=>{t=hn(r,()=>{a==null||a(o),u(o)})})}function l(){return n(!0)}function i(){return n(!1)}return{clearDelay:t,runOpenDelay:l,runCloseDelay:i}}const La=j({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...Va()},"VOverlay-activator");function Ta(e,a){let{isActive:t,isTop:n,contentEl:l}=a;const i=de("useActivator"),o=M();let r=!1,u=!1,d=!0;const c=O(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),f=O(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:b,runCloseDelay:y}=Ba(e,m=>{m===(e.openOnHover&&r||c.value&&u)&&!(e.openOnHover&&t.value&&!n.value)&&(t.value!==m&&(d=!0),t.value=m)}),s=M(),g={onClick:m=>{m.stopPropagation(),o.value=m.currentTarget||m.target,t.value||(s.value=[m.clientX,m.clientY]),t.value=!t.value},onMouseenter:m=>{var L;(L=m.sourceCapabilities)!=null&&L.firesTouchEvents||(r=!0,o.value=m.currentTarget||m.target,b())},onMouseleave:m=>{r=!1,y()},onFocus:m=>{Sn(m.target,":focus-visible")!==!1&&(u=!0,m.stopPropagation(),o.value=m.currentTarget||m.target,b())},onBlur:m=>{u=!1,m.stopPropagation(),y()}},h=O(()=>{const m={};return f.value&&(m.onClick=g.onClick),e.openOnHover&&(m.onMouseenter=g.onMouseenter,m.onMouseleave=g.onMouseleave),c.value&&(m.onFocus=g.onFocus,m.onBlur=g.onBlur),m}),v=O(()=>{const m={};if(e.openOnHover&&(m.onMouseenter=()=>{r=!0,b()},m.onMouseleave=()=>{r=!1,y()}),c.value&&(m.onFocusin=()=>{u=!0,b()},m.onFocusout=()=>{u=!1,y()}),e.closeOnContentClick){const L=ve(_a,null);m.onClick=()=>{t.value=!1,L==null||L.closeParents()}}return m}),S=O(()=>{const m={};return e.openOnHover&&(m.onMouseenter=()=>{d&&(r=!0,d=!1,b())},m.onMouseleave=()=>{r=!1,y()}),m});z(n,m=>{var L;m&&(e.openOnHover&&!r&&(!c.value||!u)||c.value&&!u&&(!e.openOnHover||!r))&&!((L=l.value)!=null&&L.contains(document.activeElement))&&(t.value=!1)}),z(t,m=>{m||setTimeout(()=>{s.value=void 0})},{flush:"post"});const _=st();Ye(()=>{_.value&&be(()=>{o.value=_.el})});const x=st(),V=O(()=>e.target==="cursor"&&s.value?s.value:x.value?x.el:nn(e.target,i)||o.value),p=O(()=>Array.isArray(V.value)?void 0:V.value);let I;return z(()=>!!e.activator,m=>{m&&le?(I=pt(),I.run(()=>{pa(e,i,{activatorEl:o,activatorEvents:h})})):I&&I.stop()},{flush:"post",immediate:!0}),ee(()=>{I==null||I.stop()}),{activatorEl:o,activatorRef:_,target:V,targetEl:p,targetRef:x,activatorEvents:h,contentEvents:v,scrimEvents:S}}function pa(e,a,t){let{activatorEl:n,activatorEvents:l}=t;z(()=>e.activator,(u,d)=>{if(d&&u!==d){const c=r(d);c&&o(c)}u&&be(()=>i())},{immediate:!0}),z(()=>e.activatorProps,()=>{i()}),ee(()=>{o()});function i(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:r(),d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;u&&Fn(u,W(l.value,d))}function o(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:r(),d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;u&&Nn(u,W(l.value,d))}function r(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const d=nn(u,a);return n.value=(d==null?void 0:d.nodeType)===Node.ELEMENT_NODE?d:void 0,n.value}}function nn(e,a){var n,l;if(!e)return;let t;if(e==="parent"){let i=(l=(n=a==null?void 0:a.proxy)==null?void 0:n.$el)==null?void 0:l.parentNode;for(;i!=null&&i.hasAttribute("data-no-activator");)i=i.parentNode;t=i}else typeof e=="string"?t=document.querySelector(e):"$el"in e?t=e.$el:t=e;return t}function Ia(){if(!le)return $(!1);const{ssr:e}=bn();if(e){const a=$(!1);return wn(()=>{a.value=!0}),a}else return $(!0)}const At=Symbol.for("vuetify:stack"),ge=It([]);function Ra(e,a,t){const n=de("useStack"),l=!t,i=ve(At,void 0),o=It({activeChildren:new Set});ke(At,o);const r=$(Number(Fe(a)));Ke(e,()=>{var f;const c=(f=ge.at(-1))==null?void 0:f[1];r.value=c?c+10:Number(Fe(a)),l&&ge.push([n.uid,r.value]),i==null||i.activeChildren.add(n.uid),ee(()=>{if(l){const b=F(ge).findIndex(y=>y[0]===n.uid);ge.splice(b,1)}i==null||i.activeChildren.delete(n.uid)})});const u=$(!0);l&&Ye(()=>{var f;const c=((f=ge.at(-1))==null?void 0:f[0])===n.uid;setTimeout(()=>u.value=c)});const d=X(()=>!o.activeChildren.size);return{globalTop:kn(u),localTop:d,stackStyles:X(()=>({zIndex:r.value}))}}function Ma(e){return{teleportTarget:O(()=>{const t=e();if(t===!0||!le)return;const n=t===!1?document.body:typeof t=="string"?document.querySelector(t):t;if(n==null)return;let l=[...n.children].find(i=>i.matches(".v-overlay-container"));return l||(l=document.createElement("div"),l.className="v-overlay-container",n.appendChild(l)),l})}}function Fa(){return!0}function an(e,a,t){if(!e||ln(e,t)===!1)return!1;const n=Ut(a);if(typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&n.host===e.target)return!1;const l=(typeof t.value=="object"&&t.value.include||(()=>[]))();return l.push(a),!l.some(i=>i==null?void 0:i.contains(e.target))}function ln(e,a){return(typeof a.value=="object"&&a.value.closeConditional||Fa)(e)}function Na(e,a,t){const n=typeof t.value=="function"?t.value:t.value.handler;e.shadowTarget=e.target,a._clickOutside.lastMousedownWasOutside&&an(e,a,t)&&setTimeout(()=>{ln(e,t)&&n&&n(e)},0)}function Pt(e,a){const t=Ut(e);a(document),typeof ShadowRoot<"u"&&t instanceof ShadowRoot&&a(t)}const xt={mounted(e,a){const t=l=>Na(l,e,a),n=l=>{e._clickOutside.lastMousedownWasOutside=an(l,e,a)};Pt(e,l=>{l.addEventListener("click",t,!0),l.addEventListener("mousedown",n,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[a.instance.$.uid]={onClick:t,onMousedown:n}},beforeUnmount(e,a){e._clickOutside&&(Pt(e,t=>{var i;if(!t||!((i=e._clickOutside)!=null&&i[a.instance.$.uid]))return;const{onClick:n,onMousedown:l}=e._clickOutside[a.instance.$.uid];t.removeEventListener("click",n,!0),t.removeEventListener("mousedown",l,!0)}),delete e._clickOutside[a.instance.$.uid])}};function za(e){const{modelValue:a,color:t,...n}=e;return A(Me,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&T("div",W({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},n),null)]})}const on=j({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...La(),...oe(),...Xe(),...Kn(),...ha(),...Aa(),...Ge(),...Nt()},"VOverlay"),Ct=Q()({name:"VOverlay",directives:{vClickOutside:xt},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...on()},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,keydown:e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,a){let{slots:t,attrs:n,emit:l}=a;const i=de("VOverlay"),o=M(),r=M(),u=M(),d=he(e,"modelValue"),c=O({get:()=>d.value,set:P=>{P&&e.disabled||(d.value=P)}}),{themeClasses:f}=Ue(e),{rtlClasses:b,isRtl:y}=En(),{hasContent:s,onAfterLeave:g}=Yn(e,c),h=Ft(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:v,localTop:S,stackStyles:_}=Ra(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:x,activatorRef:V,target:p,targetEl:I,targetRef:m,activatorEvents:L,contentEvents:G,scrimEvents:te}=Ta(e,{isActive:c,isTop:S,contentEl:u}),{teleportTarget:E}=Ma(()=>{var ae,Z,fe;const P=e.attach||e.contained;if(P)return P;const D=((ae=x==null?void 0:x.value)==null?void 0:ae.getRootNode())||((fe=(Z=i.proxy)==null?void 0:Z.$el)==null?void 0:fe.getRootNode());return D instanceof ShadowRoot?D:!1}),{dimensionStyles:k}=Je(e),B=Ia(),{scopeId:w}=Kt();z(()=>e.disabled,P=>{P&&(c.value=!1)});const{contentStyles:R,updateLocation:H}=Sa(e,{isRtl:y,contentEl:u,target:p,isActive:c});Pa(e,{root:o,contentEl:u,targetEl:I,isActive:c,updateLocation:H});function q(P){l("click:outside",P),e.persistent?C():c.value=!1}function ie(P){return c.value&&v.value&&(!e.scrim||P.target===r.value||P instanceof MouseEvent&&P.shadowTarget===r.value)}le&&z(c,P=>{P?window.addEventListener("keydown",N):window.removeEventListener("keydown",N)},{immediate:!0}),we(()=>{le&&window.removeEventListener("keydown",N)});function N(P){var D,ae,Z;P.key==="Escape"&&v.value&&((D=u.value)!=null&&D.contains(document.activeElement)||l("keydown",P),e.persistent?C():(c.value=!1,(ae=u.value)!=null&&ae.contains(document.activeElement)&&((Z=x.value)==null||Z.focus())))}function U(P){P.key==="Escape"&&!v.value||l("keydown",P)}const se=In();Ke(()=>e.closeOnBack,()=>{Rn(se,P=>{v.value&&c.value?(P(!1),e.persistent?C():c.value=!1):P()})});const J=M();z(()=>c.value&&(e.absolute||e.contained)&&E.value==null,P=>{if(P){const D=$n(o.value);D&&D!==document.scrollingElement&&(J.value=D.scrollTop)}});function C(){e.noClickAnimation||u.value&&me(u.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:$e})}function ne(){l("afterEnter")}function ce(){g(),l("afterLeave")}return re(()=>{var P;return T(Ce,null,[(P=t.activator)==null?void 0:P.call(t,{isActive:c.value,targetRef:m,props:W({ref:V},L.value,e.activatorProps)}),B.value&&s.value&&A(An,{disabled:!E.value,to:E.value},{default:()=>[T("div",W({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":c.value,"v-overlay--contained":e.contained},f.value,b.value,e.class],style:[_.value,{"--v-overlay-opacity":e.opacity,top:Y(J.value)},e.style],ref:o,onKeydown:U},w,n),[A(za,W({color:h,modelValue:c.value&&!!e.scrim,ref:r},te.value),null),A(ye,{appear:!0,persisted:!0,transition:e.transition,target:p.value,onAfterEnter:ne,onAfterLeave:ce},{default:()=>{var D;return[xe(T("div",W({ref:u,class:["v-overlay__content",e.contentClass],style:[k.value,R.value]},G.value,e.contentProps),[(D=t.default)==null?void 0:D.call(t,{isActive:c})]),[[Vt,c.value],[xt,{handler:q,closeConditional:ie,include:()=>[x.value]}]])]}})])]})])}),{activatorEl:x,scrimEl:r,target:p,animateClick:C,contentEl:u,globalTop:v,localTop:S,updateLocation:H}}}),$a=j({fullscreen:Boolean,retainFocus:{type:Boolean,default:!0},scrollable:Boolean,...on({origin:"center center",scrollStrategy:"block",transition:{component:Wn},zIndex:2400})},"VDialog"),Ya=Q()({name:"VDialog",props:$a(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,a){let{emit:t,slots:n}=a;const l=he(e,"modelValue"),{scopeId:i}=Kt(),o=M();function r(c){var y,s;const f=c.relatedTarget,b=c.target;if(f!==b&&((y=o.value)!=null&&y.contentEl)&&((s=o.value)!=null&&s.globalTop)&&![document,o.value.contentEl].includes(b)&&!o.value.contentEl.contains(b)){const g=Pn(o.value.contentEl);if(!g.length)return;const h=g[0],v=g[g.length-1];f===h?v.focus():h.focus()}}we(()=>{document.removeEventListener("focusin",r)}),le&&z(()=>l.value&&e.retainFocus,c=>{c?document.addEventListener("focusin",r):document.removeEventListener("focusin",r)},{immediate:!0});function u(){var c;t("afterEnter"),(e.scrim||e.retainFocus)&&((c=o.value)!=null&&c.contentEl)&&!o.value.contentEl.contains(document.activeElement)&&o.value.contentEl.focus({preventScroll:!0})}function d(){t("afterLeave")}return z(l,async c=>{var f;c||(await be(),(f=o.value.activatorEl)==null||f.focus({preventScroll:!0}))}),re(()=>{const c=Ct.filterProps(e),f=W({"aria-haspopup":"dialog"},e.activatorProps),b=W({tabindex:-1},e.contentProps);return A(Ct,W({ref:o,class:["v-dialog",{"v-dialog--fullscreen":e.fullscreen,"v-dialog--scrollable":e.scrollable},e.class],style:e.style},c,{modelValue:l.value,"onUpdate:modelValue":y=>l.value=y,"aria-modal":"true",activatorProps:f,contentProps:b,height:e.fullscreen?void 0:e.height,width:e.fullscreen?void 0:e.width,maxHeight:e.fullscreen?void 0:e.maxHeight,maxWidth:e.fullscreen?void 0:e.maxWidth,role:"dialog",onAfterEnter:u,onAfterLeave:d},i),{activator:n.activator,default:function(){for(var y=arguments.length,s=new Array(y),g=0;g<y;g++)s[g]=arguments[g];return A(Oe,{root:"VDialog"},{default:()=>{var h;return[(h=n.default)==null?void 0:h.call(n,...s)]}})}})}),Mn({},o)}});export{Ga as C,Ya as V,ua as a,Yn as b,zn as c,Gn as d,Va as e,Ba as f,bt as g,Ka as h,la as i,Xn as j,Ua as k,Ha as l,Kn as m,qa as n,Wa as o,on as p,Wn as q,Ct as r,_a as s,$n as t,Kt as u,ra as v};