codex 1.7.11__py3-none-any.whl → 1.7.12__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 (624) hide show
  1. codex/choices/reader.py +1 -0
  2. codex/librarian/bookmark/bookmarkd.py +46 -14
  3. codex/librarian/bookmark/tasks.py +7 -0
  4. codex/librarian/bookmark/update.py +1 -22
  5. codex/librarian/bookmark/user_active.py +37 -0
  6. codex/serializers/reader.py +1 -0
  7. codex/settings/settings.py +14 -14
  8. codex/static_root/assets/VCheckbox-DtuP7Cwl.38fc4eb148cb.js +1 -0
  9. codex/static_root/assets/VCheckbox-DtuP7Cwl.38fc4eb148cb.js.br +0 -0
  10. codex/static_root/assets/VCheckbox-DtuP7Cwl.38fc4eb148cb.js.gz +0 -0
  11. codex/static_root/assets/VCheckbox-DtuP7Cwl.js +1 -0
  12. codex/static_root/assets/VCheckbox-DtuP7Cwl.js.br +0 -0
  13. codex/static_root/assets/VCheckbox-DtuP7Cwl.js.gz +0 -0
  14. codex/static_root/assets/{VCheckboxBtn-wiuE0DJ7.7bf28584c99f.js → VCheckboxBtn-D8jQ_2In.7c4ec3e3d71a.js} +1 -1
  15. codex/static_root/assets/VCheckboxBtn-D8jQ_2In.7c4ec3e3d71a.js.br +0 -0
  16. codex/static_root/assets/VCheckboxBtn-D8jQ_2In.7c4ec3e3d71a.js.gz +0 -0
  17. codex/static_root/assets/{VCheckboxBtn-wiuE0DJ7.js → VCheckboxBtn-D8jQ_2In.js} +1 -1
  18. codex/static_root/assets/VCheckboxBtn-D8jQ_2In.js.br +0 -0
  19. codex/static_root/assets/VCheckboxBtn-D8jQ_2In.js.gz +0 -0
  20. codex/static_root/assets/{VCombobox-BQHELb_o.9f25a34994e2.css → VCombobox-Ckm4HgDu.css} +1 -1
  21. codex/static_root/assets/VCombobox-Ckm4HgDu.css.br +0 -0
  22. codex/static_root/assets/VCombobox-Ckm4HgDu.css.gz +0 -0
  23. codex/static_root/assets/{VCombobox-BQHELb_o.css → VCombobox-Ckm4HgDu.ece2fa32eddd.css} +1 -1
  24. codex/static_root/assets/VCombobox-Ckm4HgDu.ece2fa32eddd.css.br +0 -0
  25. codex/static_root/assets/VCombobox-Ckm4HgDu.ece2fa32eddd.css.gz +0 -0
  26. codex/static_root/assets/VCombobox-Da-CC3-D.7ce605203632.js +1 -0
  27. codex/static_root/assets/VCombobox-Da-CC3-D.7ce605203632.js.br +0 -0
  28. codex/static_root/assets/VCombobox-Da-CC3-D.7ce605203632.js.gz +0 -0
  29. codex/static_root/assets/VCombobox-Da-CC3-D.js +1 -0
  30. codex/static_root/assets/VCombobox-Da-CC3-D.js.br +0 -0
  31. codex/static_root/assets/VCombobox-Da-CC3-D.js.gz +0 -0
  32. codex/static_root/assets/VDialog-Cj6z437E.cf3163940528.css +1 -0
  33. codex/static_root/assets/VDialog-Cj6z437E.cf3163940528.css.br +0 -0
  34. codex/static_root/assets/VDialog-Cj6z437E.cf3163940528.css.gz +0 -0
  35. codex/static_root/assets/VDialog-Cj6z437E.css +1 -0
  36. codex/static_root/assets/VDialog-Cj6z437E.css.br +0 -0
  37. codex/static_root/assets/VDialog-Cj6z437E.css.gz +0 -0
  38. codex/static_root/assets/VDialog-CoOMSEbM.ef9258719fe6.js +1 -0
  39. codex/static_root/assets/VDialog-CoOMSEbM.ef9258719fe6.js.br +0 -0
  40. codex/static_root/assets/VDialog-CoOMSEbM.ef9258719fe6.js.gz +0 -0
  41. codex/static_root/assets/VDialog-CoOMSEbM.js +1 -0
  42. codex/static_root/assets/VDialog-CoOMSEbM.js.br +0 -0
  43. codex/static_root/assets/VDialog-CoOMSEbM.js.gz +0 -0
  44. codex/static_root/assets/{VDivider-JdO15t-G.37359224a349.js → VDivider-BXrVdmrm.94f80a82fabf.js} +1 -1
  45. codex/static_root/assets/VDivider-BXrVdmrm.94f80a82fabf.js.br +0 -0
  46. codex/static_root/assets/VDivider-BXrVdmrm.94f80a82fabf.js.gz +0 -0
  47. codex/static_root/assets/{VDivider-JdO15t-G.js → VDivider-BXrVdmrm.js} +1 -1
  48. codex/static_root/assets/VDivider-BXrVdmrm.js.br +0 -0
  49. codex/static_root/assets/VDivider-BXrVdmrm.js.gz +0 -0
  50. codex/static_root/assets/{VExpansionPanels-vIBE1NDV.6a3323984fb8.js → VExpansionPanels-BvZsXmp0.288d3ac96c36.js} +1 -1
  51. codex/static_root/assets/VExpansionPanels-BvZsXmp0.288d3ac96c36.js.br +0 -0
  52. codex/static_root/assets/VExpansionPanels-BvZsXmp0.288d3ac96c36.js.gz +0 -0
  53. codex/static_root/assets/{VExpansionPanels-vIBE1NDV.js → VExpansionPanels-BvZsXmp0.js} +1 -1
  54. codex/static_root/assets/VExpansionPanels-BvZsXmp0.js.br +0 -0
  55. codex/static_root/assets/VExpansionPanels-BvZsXmp0.js.gz +0 -0
  56. codex/static_root/assets/{VForm-dmDeV5_M.d487bb4a6a43.js → VForm-DXrmSq46.940c782abacb.js} +1 -1
  57. codex/static_root/assets/VForm-DXrmSq46.940c782abacb.js.br +0 -0
  58. codex/static_root/assets/VForm-DXrmSq46.940c782abacb.js.gz +0 -0
  59. codex/static_root/assets/{VForm-dmDeV5_M.js → VForm-DXrmSq46.js} +1 -1
  60. codex/static_root/assets/VForm-DXrmSq46.js.br +0 -0
  61. codex/static_root/assets/VForm-DXrmSq46.js.gz +0 -0
  62. codex/static_root/assets/{VRadioGroup-D-95qXAG.a1e32c668c7b.js → VRadioGroup-DgtijQjG.a3093b0a1608.js} +1 -1
  63. codex/static_root/assets/VRadioGroup-DgtijQjG.a3093b0a1608.js.br +0 -0
  64. codex/static_root/assets/VRadioGroup-DgtijQjG.a3093b0a1608.js.gz +0 -0
  65. codex/static_root/assets/{VRadioGroup-D-95qXAG.js → VRadioGroup-DgtijQjG.js} +1 -1
  66. codex/static_root/assets/VRadioGroup-DgtijQjG.js.br +0 -0
  67. codex/static_root/assets/VRadioGroup-DgtijQjG.js.gz +0 -0
  68. codex/static_root/assets/VSelect-BpkoCPsm.b9086059c2ef.js +1 -0
  69. codex/static_root/assets/VSelect-BpkoCPsm.b9086059c2ef.js.br +0 -0
  70. codex/static_root/assets/VSelect-BpkoCPsm.b9086059c2ef.js.gz +0 -0
  71. codex/static_root/assets/VSelect-BpkoCPsm.js +1 -0
  72. codex/static_root/assets/VSelect-BpkoCPsm.js.br +0 -0
  73. codex/static_root/assets/VSelect-BpkoCPsm.js.gz +0 -0
  74. codex/static_root/assets/{VSelect-CP_CVb8s.css → VSelect-CBNrI-XP.css} +1 -1
  75. codex/static_root/assets/VSelect-CBNrI-XP.css.br +0 -0
  76. codex/static_root/assets/VSelect-CBNrI-XP.css.gz +0 -0
  77. codex/static_root/assets/{VSelect-CP_CVb8s.6309f7bf17bb.css → VSelect-CBNrI-XP.f03b50289345.css} +1 -1
  78. codex/static_root/assets/VSelect-CBNrI-XP.f03b50289345.css.br +0 -0
  79. codex/static_root/assets/VSelect-CBNrI-XP.f03b50289345.css.gz +0 -0
  80. codex/static_root/assets/VSelectionControl-DvYb3Pi4.39440575ef06.js +1 -0
  81. codex/static_root/assets/VSelectionControl-DvYb3Pi4.39440575ef06.js.br +0 -0
  82. codex/static_root/assets/VSelectionControl-DvYb3Pi4.39440575ef06.js.gz +0 -0
  83. codex/static_root/assets/VSelectionControl-DvYb3Pi4.js +1 -0
  84. codex/static_root/assets/VSelectionControl-DvYb3Pi4.js.br +0 -0
  85. codex/static_root/assets/VSelectionControl-DvYb3Pi4.js.gz +0 -0
  86. codex/static_root/assets/VSelectionControl-RqBzwjYi.css +1 -0
  87. codex/static_root/assets/VSelectionControl-RqBzwjYi.css.br +0 -0
  88. codex/static_root/assets/VSelectionControl-RqBzwjYi.css.gz +0 -0
  89. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css +1 -0
  90. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.br +0 -0
  91. codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.gz +0 -0
  92. codex/static_root/assets/{VTable-DdAIbK7T.297df0a81277.js → VTable-DbFt9lJE.9ef6aa0ef98b.js} +1 -1
  93. codex/static_root/assets/VTable-DbFt9lJE.9ef6aa0ef98b.js.br +0 -0
  94. codex/static_root/assets/VTable-DbFt9lJE.9ef6aa0ef98b.js.gz +0 -0
  95. codex/static_root/assets/{VTable-DdAIbK7T.js → VTable-DbFt9lJE.js} +1 -1
  96. codex/static_root/assets/VTable-DbFt9lJE.js.br +0 -0
  97. codex/static_root/assets/VTable-DbFt9lJE.js.gz +0 -0
  98. codex/static_root/assets/{VWindowItem-DDjwD_H9.712a45940238.js → VWindowItem-rXg83yw2.0fd72e50001d.js} +1 -1
  99. codex/static_root/assets/VWindowItem-rXg83yw2.0fd72e50001d.js.br +0 -0
  100. codex/static_root/assets/VWindowItem-rXg83yw2.0fd72e50001d.js.gz +0 -0
  101. codex/static_root/assets/{VWindowItem-DDjwD_H9.js → VWindowItem-rXg83yw2.js} +1 -1
  102. codex/static_root/assets/VWindowItem-rXg83yw2.js.br +0 -0
  103. codex/static_root/assets/VWindowItem-rXg83yw2.js.gz +0 -0
  104. codex/static_root/assets/{admin-i6V__Ibr.022e55cde6a4.js → admin--bDFN8Oq.a4abe921cf7c.js} +1 -1
  105. codex/static_root/assets/admin--bDFN8Oq.a4abe921cf7c.js.br +0 -0
  106. codex/static_root/assets/admin--bDFN8Oq.a4abe921cf7c.js.gz +0 -0
  107. codex/static_root/assets/{admin-i6V__Ibr.js → admin--bDFN8Oq.js} +1 -1
  108. codex/static_root/assets/admin--bDFN8Oq.js.br +0 -0
  109. codex/static_root/assets/admin--bDFN8Oq.js.gz +0 -0
  110. codex/static_root/assets/admin-BNNYZVYA.4628d2f169aa.css +1 -0
  111. codex/static_root/assets/admin-BNNYZVYA.4628d2f169aa.css.br +0 -0
  112. codex/static_root/assets/admin-BNNYZVYA.4628d2f169aa.css.gz +0 -0
  113. codex/static_root/assets/admin-BNNYZVYA.css +1 -0
  114. codex/static_root/assets/admin-BNNYZVYA.css.br +0 -0
  115. codex/static_root/assets/admin-BNNYZVYA.css.gz +0 -0
  116. codex/static_root/assets/{admin-DD2SkqRx.039722adfae5.js → admin-BpE7-fB4.8c4508dad617.js} +1 -1
  117. codex/static_root/assets/admin-BpE7-fB4.8c4508dad617.js.br +0 -0
  118. codex/static_root/assets/admin-BpE7-fB4.8c4508dad617.js.gz +0 -0
  119. codex/static_root/assets/{admin-DD2SkqRx.js → admin-BpE7-fB4.js} +1 -1
  120. codex/static_root/assets/admin-BpE7-fB4.js.br +0 -0
  121. codex/static_root/assets/admin-BpE7-fB4.js.gz +0 -0
  122. codex/static_root/assets/{admin-menu-B4SzsUdK.6639a1cbf4e7.js → admin-menu-DEQXJH4i.bac02d0bea36.js} +1 -1
  123. codex/static_root/assets/admin-menu-DEQXJH4i.bac02d0bea36.js.br +0 -0
  124. codex/static_root/assets/admin-menu-DEQXJH4i.bac02d0bea36.js.gz +0 -0
  125. codex/static_root/assets/{admin-menu-B4SzsUdK.js → admin-menu-DEQXJH4i.js} +1 -1
  126. codex/static_root/assets/admin-menu-DEQXJH4i.js.br +0 -0
  127. codex/static_root/assets/admin-menu-DEQXJH4i.js.gz +0 -0
  128. codex/static_root/assets/{admin-settings-button-progress-DhAZCqmL.04743416c2a4.js → admin-settings-button-progress-wIXv-9g2.33b5b24000b2.js} +1 -1
  129. codex/static_root/assets/admin-settings-button-progress-wIXv-9g2.33b5b24000b2.js.br +0 -0
  130. codex/static_root/assets/admin-settings-button-progress-wIXv-9g2.33b5b24000b2.js.gz +0 -0
  131. codex/static_root/assets/{admin-settings-button-progress-DhAZCqmL.js → admin-settings-button-progress-wIXv-9g2.js} +1 -1
  132. codex/static_root/assets/admin-settings-button-progress-wIXv-9g2.js.br +0 -0
  133. codex/static_root/assets/admin-settings-button-progress-wIXv-9g2.js.gz +0 -0
  134. codex/static_root/assets/{browser-BJ95cpa4.e30f8b92b0c7.js → browser-Bu37CzsR.483b0af62dd4.js} +1 -1
  135. codex/static_root/assets/browser-Bu37CzsR.483b0af62dd4.js.br +0 -0
  136. codex/static_root/assets/browser-Bu37CzsR.483b0af62dd4.js.gz +0 -0
  137. codex/static_root/assets/{browser-BJ95cpa4.js → browser-Bu37CzsR.js} +1 -1
  138. codex/static_root/assets/browser-Bu37CzsR.js.br +0 -0
  139. codex/static_root/assets/browser-Bu37CzsR.js.gz +0 -0
  140. codex/static_root/assets/{browser-Bf8JG2CE.3af978c1f766.css → browser-ClPcbrsf.c8620affa34d.css} +1 -1
  141. codex/static_root/assets/browser-ClPcbrsf.c8620affa34d.css.br +0 -0
  142. codex/static_root/assets/browser-ClPcbrsf.c8620affa34d.css.gz +0 -0
  143. codex/static_root/assets/{browser-Bf8JG2CE.css → browser-ClPcbrsf.css} +1 -1
  144. codex/static_root/assets/browser-ClPcbrsf.css.br +0 -0
  145. codex/static_root/assets/browser-ClPcbrsf.css.gz +0 -0
  146. codex/static_root/assets/{change-password-dialog-By3fj_TQ.c5eac945e204.js → change-password-dialog-DOioR_QK.75126226aeee.js} +1 -1
  147. codex/static_root/assets/change-password-dialog-DOioR_QK.75126226aeee.js.br +0 -0
  148. codex/static_root/assets/change-password-dialog-DOioR_QK.75126226aeee.js.gz +0 -0
  149. codex/static_root/assets/{change-password-dialog-By3fj_TQ.js → change-password-dialog-DOioR_QK.js} +1 -1
  150. codex/static_root/assets/change-password-dialog-DOioR_QK.js.br +0 -0
  151. codex/static_root/assets/change-password-dialog-DOioR_QK.js.gz +0 -0
  152. codex/static_root/assets/{confirm-dialog-dLx7MoUh.06fae90da0ac.js → confirm-dialog-BRUkbajJ.9670ca0df005.js} +1 -1
  153. codex/static_root/assets/confirm-dialog-BRUkbajJ.9670ca0df005.js.br +0 -0
  154. codex/static_root/assets/confirm-dialog-BRUkbajJ.9670ca0df005.js.gz +0 -0
  155. codex/static_root/assets/{confirm-dialog-dLx7MoUh.js → confirm-dialog-BRUkbajJ.js} +1 -1
  156. codex/static_root/assets/confirm-dialog-BRUkbajJ.js.br +0 -0
  157. codex/static_root/assets/confirm-dialog-BRUkbajJ.js.gz +0 -0
  158. codex/static_root/assets/{datetime-column-CYEe6t74.2500e9a7b4a4.js → datetime-column-CdYfgPon.662194dbed49.js} +1 -1
  159. codex/static_root/assets/datetime-column-CdYfgPon.662194dbed49.js.br +0 -0
  160. codex/static_root/assets/datetime-column-CdYfgPon.662194dbed49.js.gz +0 -0
  161. codex/static_root/assets/{datetime-column-CYEe6t74.js → datetime-column-CdYfgPon.js} +1 -1
  162. codex/static_root/assets/datetime-column-CdYfgPon.js.br +0 -0
  163. codex/static_root/assets/datetime-column-CdYfgPon.js.gz +0 -0
  164. codex/static_root/assets/filter-D-aPctKp.c9b14ffd360c.js +1 -0
  165. codex/static_root/assets/filter-D-aPctKp.c9b14ffd360c.js.br +0 -0
  166. codex/static_root/assets/filter-D-aPctKp.c9b14ffd360c.js.gz +0 -0
  167. codex/static_root/assets/filter-D-aPctKp.js +1 -0
  168. codex/static_root/assets/filter-D-aPctKp.js.br +0 -0
  169. codex/static_root/assets/filter-D-aPctKp.js.gz +0 -0
  170. codex/static_root/assets/{flag-tab-ElQxMWbZ.e5ba707bac09.js → flag-tab-kMgSs3vx.7ca3ec2db15e.js} +1 -1
  171. codex/static_root/assets/flag-tab-kMgSs3vx.7ca3ec2db15e.js.br +0 -0
  172. codex/static_root/assets/flag-tab-kMgSs3vx.7ca3ec2db15e.js.gz +0 -0
  173. codex/static_root/assets/{flag-tab-ElQxMWbZ.js → flag-tab-kMgSs3vx.js} +1 -1
  174. codex/static_root/assets/flag-tab-kMgSs3vx.js.br +0 -0
  175. codex/static_root/assets/flag-tab-kMgSs3vx.js.gz +0 -0
  176. codex/static_root/assets/{forwardRefs-Dyi06MPF.601ab1fd99b1.css → forwardRefs-BhPKpkYY.1032af9ac8fd.css} +1 -1
  177. codex/static_root/assets/forwardRefs-BhPKpkYY.1032af9ac8fd.css.br +0 -0
  178. codex/static_root/assets/forwardRefs-BhPKpkYY.1032af9ac8fd.css.gz +0 -0
  179. codex/static_root/assets/{forwardRefs-Dyi06MPF.css → forwardRefs-BhPKpkYY.css} +1 -1
  180. codex/static_root/assets/forwardRefs-BhPKpkYY.css.br +0 -0
  181. codex/static_root/assets/forwardRefs-BhPKpkYY.css.gz +0 -0
  182. codex/static_root/assets/forwardRefs-BxFNqo8E.00b94d8b82bf.js +1 -0
  183. codex/static_root/assets/forwardRefs-BxFNqo8E.00b94d8b82bf.js.br +0 -0
  184. codex/static_root/assets/forwardRefs-BxFNqo8E.00b94d8b82bf.js.gz +0 -0
  185. codex/static_root/assets/forwardRefs-BxFNqo8E.js +1 -0
  186. codex/static_root/assets/forwardRefs-BxFNqo8E.js.br +0 -0
  187. codex/static_root/assets/forwardRefs-BxFNqo8E.js.gz +0 -0
  188. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css +1 -0
  189. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css.br +0 -0
  190. codex/static_root/assets/group-tab-Bi681uR0.3246ac0f7cec.css.gz +0 -0
  191. codex/static_root/assets/group-tab-Bi681uR0.css +1 -0
  192. codex/static_root/assets/group-tab-Bi681uR0.css.br +0 -0
  193. codex/static_root/assets/group-tab-Bi681uR0.css.gz +0 -0
  194. codex/static_root/assets/{group-tab-CqVQHStZ.4c72ec7c5179.js → group-tab-DK0pQx_6.e02dab76e8e6.js} +1 -1
  195. codex/static_root/assets/group-tab-DK0pQx_6.e02dab76e8e6.js.br +0 -0
  196. codex/static_root/assets/group-tab-DK0pQx_6.e02dab76e8e6.js.gz +0 -0
  197. codex/static_root/assets/{group-tab-CqVQHStZ.js → group-tab-DK0pQx_6.js} +1 -1
  198. codex/static_root/assets/group-tab-DK0pQx_6.js.br +0 -0
  199. codex/static_root/assets/group-tab-DK0pQx_6.js.gz +0 -0
  200. codex/static_root/assets/{http-error-D9X2r_ts.71a1241440db.js → http-error-D4kgjRm6.71e8ec284567.js} +1 -1
  201. codex/static_root/assets/http-error-D4kgjRm6.71e8ec284567.js.br +0 -0
  202. codex/static_root/assets/http-error-D4kgjRm6.71e8ec284567.js.gz +0 -0
  203. codex/static_root/assets/{http-error-D9X2r_ts.js → http-error-D4kgjRm6.js} +1 -1
  204. codex/static_root/assets/http-error-D4kgjRm6.js.br +0 -0
  205. codex/static_root/assets/http-error-D4kgjRm6.js.gz +0 -0
  206. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css +1 -0
  207. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.br +3 -0
  208. codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.gz +0 -0
  209. codex/static_root/assets/index-Czf-fUM7.css +1 -0
  210. codex/static_root/assets/index-Czf-fUM7.css.br +3 -0
  211. codex/static_root/assets/index-Czf-fUM7.css.gz +0 -0
  212. codex/static_root/assets/index-D3gnYqT3.c326544f2853.js +1 -0
  213. codex/static_root/assets/index-D3gnYqT3.c326544f2853.js.br +0 -0
  214. codex/static_root/assets/index-D3gnYqT3.c326544f2853.js.gz +0 -0
  215. codex/static_root/assets/index-D3gnYqT3.js +1 -0
  216. codex/static_root/assets/index-D3gnYqT3.js.br +0 -0
  217. codex/static_root/assets/index-D3gnYqT3.js.gz +0 -0
  218. codex/static_root/assets/{library-tab-gTOFQ_iR.43484dac2129.js → library-tab-MhD2T2Fw.052fe1d43941.js} +1 -1
  219. codex/static_root/assets/library-tab-MhD2T2Fw.052fe1d43941.js.br +0 -0
  220. codex/static_root/assets/library-tab-MhD2T2Fw.052fe1d43941.js.gz +0 -0
  221. codex/static_root/assets/{library-tab-gTOFQ_iR.js → library-tab-MhD2T2Fw.js} +1 -1
  222. codex/static_root/assets/library-tab-MhD2T2Fw.js.br +0 -0
  223. codex/static_root/assets/library-tab-MhD2T2Fw.js.gz +0 -0
  224. codex/static_root/assets/main-JUy8mnXG.d8a52b6ef508.js +35 -0
  225. codex/static_root/assets/main-JUy8mnXG.d8a52b6ef508.js.br +0 -0
  226. codex/static_root/assets/main-JUy8mnXG.d8a52b6ef508.js.gz +0 -0
  227. codex/static_root/assets/main-JUy8mnXG.js +35 -0
  228. codex/static_root/assets/main-JUy8mnXG.js.br +0 -0
  229. codex/static_root/assets/main-JUy8mnXG.js.gz +0 -0
  230. codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css → main-Of3aYkZ7.91c75c4fbaa6.css} +1 -1
  231. codex/static_root/assets/main-Of3aYkZ7.91c75c4fbaa6.css.br +0 -0
  232. codex/static_root/assets/{main-K8cER0IH.d529e8b3f52a.css.gz → main-Of3aYkZ7.91c75c4fbaa6.css.gz} +0 -0
  233. codex/static_root/assets/{main-K8cER0IH.css → main-Of3aYkZ7.css} +1 -1
  234. codex/static_root/assets/main-Of3aYkZ7.css.br +0 -0
  235. codex/static_root/assets/{main-K8cER0IH.css.gz → main-Of3aYkZ7.css.gz} +0 -0
  236. codex/static_root/assets/pager-full-pdf-CcORwqD4.78c861366624.js +1 -0
  237. codex/static_root/assets/pager-full-pdf-CcORwqD4.78c861366624.js.br +0 -0
  238. codex/static_root/assets/pager-full-pdf-CcORwqD4.78c861366624.js.gz +0 -0
  239. codex/static_root/assets/pager-full-pdf-CcORwqD4.js +1 -0
  240. codex/static_root/assets/pager-full-pdf-CcORwqD4.js.br +0 -0
  241. codex/static_root/assets/pager-full-pdf-CcORwqD4.js.gz +0 -0
  242. codex/static_root/assets/{pagination-toolbar-BwTjydSq.3086700f965d.js → pagination-toolbar-Cufj0Rqv.3f3244ad0590.js} +1 -1
  243. codex/static_root/assets/pagination-toolbar-Cufj0Rqv.3f3244ad0590.js.br +0 -0
  244. codex/static_root/assets/pagination-toolbar-Cufj0Rqv.3f3244ad0590.js.gz +0 -0
  245. codex/static_root/assets/{pagination-toolbar-BwTjydSq.js → pagination-toolbar-Cufj0Rqv.js} +1 -1
  246. codex/static_root/assets/pagination-toolbar-Cufj0Rqv.js.br +0 -0
  247. codex/static_root/assets/pagination-toolbar-Cufj0Rqv.js.gz +0 -0
  248. codex/static_root/assets/pagination-toolbar-DkYjhdVb.css +1 -0
  249. codex/static_root/assets/pagination-toolbar-DkYjhdVb.css.br +0 -0
  250. codex/static_root/assets/pagination-toolbar-DkYjhdVb.css.gz +0 -0
  251. codex/static_root/assets/pagination-toolbar-DkYjhdVb.d431a5b140aa.css +1 -0
  252. codex/static_root/assets/pagination-toolbar-DkYjhdVb.d431a5b140aa.css.br +0 -0
  253. codex/static_root/assets/pagination-toolbar-DkYjhdVb.d431a5b140aa.css.gz +0 -0
  254. codex/static_root/assets/{pdf-doc-cr8rSW0K.42089de27088.js → pdf-doc-HpDB0I3q.a991cdc377eb.js} +1 -1
  255. codex/static_root/assets/pdf-doc-HpDB0I3q.a991cdc377eb.js.br +0 -0
  256. codex/static_root/assets/pdf-doc-HpDB0I3q.a991cdc377eb.js.gz +0 -0
  257. codex/static_root/assets/{pdf-doc-cr8rSW0K.js → pdf-doc-HpDB0I3q.js} +1 -1
  258. codex/static_root/assets/pdf-doc-HpDB0I3q.js.br +0 -0
  259. codex/static_root/assets/pdf-doc-HpDB0I3q.js.gz +0 -0
  260. codex/static_root/assets/reader-BIqif2zL.755da5eee67d.css +1 -0
  261. codex/static_root/assets/reader-BIqif2zL.755da5eee67d.css.br +0 -0
  262. codex/static_root/assets/reader-BIqif2zL.755da5eee67d.css.gz +0 -0
  263. codex/static_root/assets/reader-BIqif2zL.css +1 -0
  264. codex/static_root/assets/reader-BIqif2zL.css.br +0 -0
  265. codex/static_root/assets/reader-BIqif2zL.css.gz +0 -0
  266. codex/static_root/assets/reader-CgmGRxud.dd7fceeb36e4.js +2 -0
  267. codex/static_root/assets/reader-CgmGRxud.dd7fceeb36e4.js.br +0 -0
  268. codex/static_root/assets/reader-CgmGRxud.dd7fceeb36e4.js.gz +0 -0
  269. codex/static_root/assets/reader-CgmGRxud.js +2 -0
  270. codex/static_root/assets/reader-CgmGRxud.js.br +0 -0
  271. codex/static_root/assets/reader-CgmGRxud.js.gz +0 -0
  272. codex/static_root/assets/relation-chips-CV_iMj1X.de28053775a6.js +1 -0
  273. codex/static_root/assets/relation-chips-CV_iMj1X.de28053775a6.js.br +0 -0
  274. codex/static_root/assets/relation-chips-CV_iMj1X.de28053775a6.js.gz +0 -0
  275. codex/static_root/assets/relation-chips-CV_iMj1X.js +1 -0
  276. codex/static_root/assets/relation-chips-CV_iMj1X.js.br +0 -0
  277. codex/static_root/assets/relation-chips-CV_iMj1X.js.gz +0 -0
  278. codex/static_root/assets/relation-chips-D7i-g7Zv.57d1814a9e7a.css +1 -0
  279. codex/static_root/assets/relation-chips-D7i-g7Zv.57d1814a9e7a.css.br +0 -0
  280. codex/static_root/assets/relation-chips-D7i-g7Zv.57d1814a9e7a.css.gz +0 -0
  281. codex/static_root/assets/relation-chips-D7i-g7Zv.css +1 -0
  282. codex/static_root/assets/relation-chips-D7i-g7Zv.css.br +0 -0
  283. codex/static_root/assets/relation-chips-D7i-g7Zv.css.gz +0 -0
  284. codex/static_root/assets/settings-drawer-Cz7dC3Ew.c9ed8ca4d859.css +1 -0
  285. codex/static_root/assets/settings-drawer-Cz7dC3Ew.c9ed8ca4d859.css.br +0 -0
  286. codex/static_root/assets/settings-drawer-Cz7dC3Ew.c9ed8ca4d859.css.gz +0 -0
  287. codex/static_root/assets/settings-drawer-Cz7dC3Ew.css +1 -0
  288. codex/static_root/assets/settings-drawer-Cz7dC3Ew.css.br +0 -0
  289. codex/static_root/assets/settings-drawer-Cz7dC3Ew.css.gz +0 -0
  290. codex/static_root/assets/settings-drawer-p6ZjyJ07.128e2c761104.js +2 -0
  291. codex/static_root/assets/settings-drawer-p6ZjyJ07.128e2c761104.js.br +0 -0
  292. codex/static_root/assets/settings-drawer-p6ZjyJ07.128e2c761104.js.gz +0 -0
  293. codex/static_root/assets/settings-drawer-p6ZjyJ07.js +2 -0
  294. codex/static_root/assets/settings-drawer-p6ZjyJ07.js.br +0 -0
  295. codex/static_root/assets/settings-drawer-p6ZjyJ07.js.gz +0 -0
  296. codex/static_root/assets/{ssrBoot-CAsgsyDf.726bc1a727b7.js → ssrBoot-B73_e82Z.3d5063c17c68.js} +1 -1
  297. codex/static_root/assets/ssrBoot-B73_e82Z.3d5063c17c68.js.br +0 -0
  298. codex/static_root/assets/ssrBoot-B73_e82Z.3d5063c17c68.js.gz +0 -0
  299. codex/static_root/assets/{ssrBoot-CAsgsyDf.js → ssrBoot-B73_e82Z.js} +1 -1
  300. codex/static_root/assets/ssrBoot-B73_e82Z.js.br +0 -0
  301. codex/static_root/assets/ssrBoot-B73_e82Z.js.gz +0 -0
  302. codex/static_root/assets/{stats-tab-B6L711cO.b6a42655cd70.css → stats-tab-CGY8r-es.b06c55bdaeaa.css} +1 -1
  303. codex/static_root/assets/stats-tab-CGY8r-es.b06c55bdaeaa.css.br +0 -0
  304. codex/static_root/assets/stats-tab-CGY8r-es.b06c55bdaeaa.css.gz +0 -0
  305. codex/static_root/assets/{stats-tab-B6L711cO.css → stats-tab-CGY8r-es.css} +1 -1
  306. codex/static_root/assets/stats-tab-CGY8r-es.css.br +0 -0
  307. codex/static_root/assets/stats-tab-CGY8r-es.css.gz +0 -0
  308. codex/static_root/assets/{stats-tab-B2rq8Yvl.3d1cb4751160.js → stats-tab-Kt45gqtN.858a124412d0.js} +1 -1
  309. codex/static_root/assets/stats-tab-Kt45gqtN.858a124412d0.js.br +0 -0
  310. codex/static_root/assets/stats-tab-Kt45gqtN.858a124412d0.js.gz +0 -0
  311. codex/static_root/assets/{stats-tab-B2rq8Yvl.js → stats-tab-Kt45gqtN.js} +1 -1
  312. codex/static_root/assets/stats-tab-Kt45gqtN.js.br +0 -0
  313. codex/static_root/assets/stats-tab-Kt45gqtN.js.gz +0 -0
  314. codex/static_root/assets/{task-tab-DL6WROkd.6c75d2f501ad.js → task-tab-DDKv2JN0.ea54c5cf8e0f.js} +1 -1
  315. codex/static_root/assets/task-tab-DDKv2JN0.ea54c5cf8e0f.js.br +0 -0
  316. codex/static_root/assets/task-tab-DDKv2JN0.ea54c5cf8e0f.js.gz +0 -0
  317. codex/static_root/assets/{task-tab-DL6WROkd.js → task-tab-DDKv2JN0.js} +1 -1
  318. codex/static_root/assets/task-tab-DDKv2JN0.js.br +0 -0
  319. codex/static_root/assets/task-tab-DDKv2JN0.js.gz +0 -0
  320. codex/static_root/assets/unauthorized-CvdCW-Cq.a7bd69980089.js +1 -0
  321. codex/static_root/assets/unauthorized-CvdCW-Cq.a7bd69980089.js.br +0 -0
  322. codex/static_root/assets/unauthorized-CvdCW-Cq.a7bd69980089.js.gz +0 -0
  323. codex/static_root/assets/unauthorized-CvdCW-Cq.js +1 -0
  324. codex/static_root/assets/unauthorized-CvdCW-Cq.js.br +0 -0
  325. codex/static_root/assets/unauthorized-CvdCW-Cq.js.gz +0 -0
  326. codex/static_root/assets/unauthorized-DeuhBNVr.6261a283874e.css +1 -0
  327. codex/static_root/assets/unauthorized-DeuhBNVr.6261a283874e.css.br +0 -0
  328. codex/static_root/assets/unauthorized-DeuhBNVr.6261a283874e.css.gz +0 -0
  329. codex/static_root/assets/unauthorized-DeuhBNVr.css +1 -0
  330. codex/static_root/assets/unauthorized-DeuhBNVr.css.br +0 -0
  331. codex/static_root/assets/unauthorized-DeuhBNVr.css.gz +0 -0
  332. codex/static_root/assets/{user-tab-pnWYdoCh.b8b1c35dc74b.js → user-tab-77Bjv-sy.994ac66245a1.js} +1 -1
  333. codex/static_root/assets/user-tab-77Bjv-sy.994ac66245a1.js.br +0 -0
  334. codex/static_root/assets/user-tab-77Bjv-sy.994ac66245a1.js.gz +0 -0
  335. codex/static_root/assets/{user-tab-pnWYdoCh.js → user-tab-77Bjv-sy.js} +1 -1
  336. codex/static_root/assets/user-tab-77Bjv-sy.js.br +0 -0
  337. codex/static_root/assets/user-tab-77Bjv-sy.js.gz +0 -0
  338. codex/static_root/manifest.800f1750bf03.json +757 -0
  339. codex/static_root/manifest.800f1750bf03.json.br +0 -0
  340. codex/static_root/manifest.800f1750bf03.json.gz +0 -0
  341. codex/static_root/manifest.json +339 -339
  342. codex/static_root/manifest.json.br +0 -0
  343. codex/static_root/manifest.json.gz +0 -0
  344. codex/static_root/staticfiles.json +1 -1
  345. codex/views/browser/bookmark.py +1 -1
  346. codex/views/download.py +1 -0
  347. codex/views/frontend.py +3 -1
  348. codex/views/mixins.py +13 -0
  349. codex/views/opds/v1/feed.py +3 -1
  350. codex/views/opds/v2/feed.py +3 -1
  351. {codex-1.7.11.dist-info → codex-1.7.12.dist-info}/METADATA +7 -4
  352. {codex-1.7.11.dist-info → codex-1.7.12.dist-info}/RECORD +355 -354
  353. {codex-1.7.11.dist-info → codex-1.7.12.dist-info}/WHEEL +1 -1
  354. codex/static_root/assets/VCheckbox-BWg23XH7.1d0de86f89e8.js +0 -1
  355. codex/static_root/assets/VCheckbox-BWg23XH7.1d0de86f89e8.js.br +0 -0
  356. codex/static_root/assets/VCheckbox-BWg23XH7.1d0de86f89e8.js.gz +0 -0
  357. codex/static_root/assets/VCheckbox-BWg23XH7.js +0 -1
  358. codex/static_root/assets/VCheckbox-BWg23XH7.js.br +0 -0
  359. codex/static_root/assets/VCheckbox-BWg23XH7.js.gz +0 -0
  360. codex/static_root/assets/VCheckboxBtn-wiuE0DJ7.7bf28584c99f.js.br +0 -0
  361. codex/static_root/assets/VCheckboxBtn-wiuE0DJ7.7bf28584c99f.js.gz +0 -0
  362. codex/static_root/assets/VCheckboxBtn-wiuE0DJ7.js.br +0 -0
  363. codex/static_root/assets/VCheckboxBtn-wiuE0DJ7.js.gz +0 -0
  364. codex/static_root/assets/VCombobox-BQHELb_o.9f25a34994e2.css.br +0 -0
  365. codex/static_root/assets/VCombobox-BQHELb_o.9f25a34994e2.css.gz +0 -0
  366. codex/static_root/assets/VCombobox-BQHELb_o.css.br +0 -0
  367. codex/static_root/assets/VCombobox-BQHELb_o.css.gz +0 -0
  368. codex/static_root/assets/VCombobox-x6zK3RJ3.c7241fcc5a64.js +0 -1
  369. codex/static_root/assets/VCombobox-x6zK3RJ3.c7241fcc5a64.js.br +0 -0
  370. codex/static_root/assets/VCombobox-x6zK3RJ3.c7241fcc5a64.js.gz +0 -0
  371. codex/static_root/assets/VCombobox-x6zK3RJ3.js +0 -1
  372. codex/static_root/assets/VCombobox-x6zK3RJ3.js.br +0 -0
  373. codex/static_root/assets/VCombobox-x6zK3RJ3.js.gz +0 -0
  374. codex/static_root/assets/VDialog-DYkXmPin.3991696c6a81.css +0 -1
  375. codex/static_root/assets/VDialog-DYkXmPin.3991696c6a81.css.br +0 -0
  376. codex/static_root/assets/VDialog-DYkXmPin.3991696c6a81.css.gz +0 -0
  377. codex/static_root/assets/VDialog-DYkXmPin.css +0 -1
  378. codex/static_root/assets/VDialog-DYkXmPin.css.br +0 -0
  379. codex/static_root/assets/VDialog-DYkXmPin.css.gz +0 -0
  380. codex/static_root/assets/VDialog-OthWhLDZ.deedc659cbb7.js +0 -1
  381. codex/static_root/assets/VDialog-OthWhLDZ.deedc659cbb7.js.br +0 -0
  382. codex/static_root/assets/VDialog-OthWhLDZ.deedc659cbb7.js.gz +0 -0
  383. codex/static_root/assets/VDialog-OthWhLDZ.js +0 -1
  384. codex/static_root/assets/VDialog-OthWhLDZ.js.br +0 -0
  385. codex/static_root/assets/VDialog-OthWhLDZ.js.gz +0 -0
  386. codex/static_root/assets/VDivider-JdO15t-G.37359224a349.js.br +0 -0
  387. codex/static_root/assets/VDivider-JdO15t-G.37359224a349.js.gz +0 -0
  388. codex/static_root/assets/VDivider-JdO15t-G.js.br +0 -0
  389. codex/static_root/assets/VDivider-JdO15t-G.js.gz +0 -0
  390. codex/static_root/assets/VExpansionPanels-vIBE1NDV.6a3323984fb8.js.br +0 -0
  391. codex/static_root/assets/VExpansionPanels-vIBE1NDV.6a3323984fb8.js.gz +0 -0
  392. codex/static_root/assets/VExpansionPanels-vIBE1NDV.js.br +0 -0
  393. codex/static_root/assets/VExpansionPanels-vIBE1NDV.js.gz +0 -0
  394. codex/static_root/assets/VForm-dmDeV5_M.d487bb4a6a43.js.br +0 -0
  395. codex/static_root/assets/VForm-dmDeV5_M.d487bb4a6a43.js.gz +0 -0
  396. codex/static_root/assets/VForm-dmDeV5_M.js.br +0 -0
  397. codex/static_root/assets/VForm-dmDeV5_M.js.gz +0 -0
  398. codex/static_root/assets/VRadioGroup-D-95qXAG.a1e32c668c7b.js.br +0 -0
  399. codex/static_root/assets/VRadioGroup-D-95qXAG.a1e32c668c7b.js.gz +0 -0
  400. codex/static_root/assets/VRadioGroup-D-95qXAG.js.br +0 -0
  401. codex/static_root/assets/VRadioGroup-D-95qXAG.js.gz +0 -0
  402. codex/static_root/assets/VSelect-CP_CVb8s.6309f7bf17bb.css.br +0 -0
  403. codex/static_root/assets/VSelect-CP_CVb8s.6309f7bf17bb.css.gz +0 -0
  404. codex/static_root/assets/VSelect-CP_CVb8s.css.br +0 -0
  405. codex/static_root/assets/VSelect-CP_CVb8s.css.gz +0 -0
  406. codex/static_root/assets/VSelect-CQoVHUk_.b126cfd240df.js +0 -1
  407. codex/static_root/assets/VSelect-CQoVHUk_.b126cfd240df.js.br +0 -0
  408. codex/static_root/assets/VSelect-CQoVHUk_.b126cfd240df.js.gz +0 -0
  409. codex/static_root/assets/VSelect-CQoVHUk_.js +0 -1
  410. codex/static_root/assets/VSelect-CQoVHUk_.js.br +0 -0
  411. codex/static_root/assets/VSelect-CQoVHUk_.js.gz +0 -0
  412. codex/static_root/assets/VSelectionControl-DR3WB2kF.8e2b62af4420.js +0 -1
  413. codex/static_root/assets/VSelectionControl-DR3WB2kF.8e2b62af4420.js.br +0 -0
  414. codex/static_root/assets/VSelectionControl-DR3WB2kF.8e2b62af4420.js.gz +0 -0
  415. codex/static_root/assets/VSelectionControl-DR3WB2kF.js +0 -1
  416. codex/static_root/assets/VSelectionControl-DR3WB2kF.js.br +0 -0
  417. codex/static_root/assets/VSelectionControl-DR3WB2kF.js.gz +0 -0
  418. codex/static_root/assets/VSelectionControl-DtEh26JD.css +0 -1
  419. codex/static_root/assets/VSelectionControl-DtEh26JD.css.br +0 -0
  420. codex/static_root/assets/VSelectionControl-DtEh26JD.css.gz +0 -0
  421. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css +0 -1
  422. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css.br +0 -0
  423. codex/static_root/assets/VSelectionControl-DtEh26JD.eec621947209.css.gz +0 -0
  424. codex/static_root/assets/VTable-DdAIbK7T.297df0a81277.js.br +0 -0
  425. codex/static_root/assets/VTable-DdAIbK7T.297df0a81277.js.gz +0 -0
  426. codex/static_root/assets/VTable-DdAIbK7T.js.br +0 -0
  427. codex/static_root/assets/VTable-DdAIbK7T.js.gz +0 -0
  428. codex/static_root/assets/VWindowItem-DDjwD_H9.712a45940238.js.br +0 -0
  429. codex/static_root/assets/VWindowItem-DDjwD_H9.712a45940238.js.gz +0 -0
  430. codex/static_root/assets/VWindowItem-DDjwD_H9.js.br +0 -0
  431. codex/static_root/assets/VWindowItem-DDjwD_H9.js.gz +0 -0
  432. codex/static_root/assets/admin-C3iCIUnm.06cb213f624d.css +0 -1
  433. codex/static_root/assets/admin-C3iCIUnm.06cb213f624d.css.br +0 -0
  434. codex/static_root/assets/admin-C3iCIUnm.06cb213f624d.css.gz +0 -0
  435. codex/static_root/assets/admin-C3iCIUnm.css +0 -1
  436. codex/static_root/assets/admin-C3iCIUnm.css.br +0 -0
  437. codex/static_root/assets/admin-C3iCIUnm.css.gz +0 -0
  438. codex/static_root/assets/admin-DD2SkqRx.039722adfae5.js.br +0 -0
  439. codex/static_root/assets/admin-DD2SkqRx.039722adfae5.js.gz +0 -0
  440. codex/static_root/assets/admin-DD2SkqRx.js.br +0 -0
  441. codex/static_root/assets/admin-DD2SkqRx.js.gz +0 -0
  442. codex/static_root/assets/admin-i6V__Ibr.022e55cde6a4.js.br +0 -0
  443. codex/static_root/assets/admin-i6V__Ibr.022e55cde6a4.js.gz +0 -0
  444. codex/static_root/assets/admin-i6V__Ibr.js.br +0 -0
  445. codex/static_root/assets/admin-i6V__Ibr.js.gz +0 -0
  446. codex/static_root/assets/admin-menu-B4SzsUdK.6639a1cbf4e7.js.br +0 -0
  447. codex/static_root/assets/admin-menu-B4SzsUdK.6639a1cbf4e7.js.gz +0 -0
  448. codex/static_root/assets/admin-menu-B4SzsUdK.js.br +0 -0
  449. codex/static_root/assets/admin-menu-B4SzsUdK.js.gz +0 -0
  450. codex/static_root/assets/admin-settings-button-progress-DhAZCqmL.04743416c2a4.js.br +0 -0
  451. codex/static_root/assets/admin-settings-button-progress-DhAZCqmL.04743416c2a4.js.gz +0 -0
  452. codex/static_root/assets/admin-settings-button-progress-DhAZCqmL.js.br +0 -0
  453. codex/static_root/assets/admin-settings-button-progress-DhAZCqmL.js.gz +0 -0
  454. codex/static_root/assets/browser-BJ95cpa4.e30f8b92b0c7.js.br +0 -0
  455. codex/static_root/assets/browser-BJ95cpa4.e30f8b92b0c7.js.gz +0 -0
  456. codex/static_root/assets/browser-BJ95cpa4.js.br +0 -0
  457. codex/static_root/assets/browser-BJ95cpa4.js.gz +0 -0
  458. codex/static_root/assets/browser-Bf8JG2CE.3af978c1f766.css.br +0 -0
  459. codex/static_root/assets/browser-Bf8JG2CE.3af978c1f766.css.gz +0 -0
  460. codex/static_root/assets/browser-Bf8JG2CE.css.br +0 -0
  461. codex/static_root/assets/browser-Bf8JG2CE.css.gz +0 -0
  462. codex/static_root/assets/change-password-dialog-By3fj_TQ.c5eac945e204.js.br +0 -0
  463. codex/static_root/assets/change-password-dialog-By3fj_TQ.c5eac945e204.js.gz +0 -0
  464. codex/static_root/assets/change-password-dialog-By3fj_TQ.js.br +0 -0
  465. codex/static_root/assets/change-password-dialog-By3fj_TQ.js.gz +0 -0
  466. codex/static_root/assets/confirm-dialog-dLx7MoUh.06fae90da0ac.js.br +0 -0
  467. codex/static_root/assets/confirm-dialog-dLx7MoUh.06fae90da0ac.js.gz +0 -0
  468. codex/static_root/assets/confirm-dialog-dLx7MoUh.js.br +0 -0
  469. codex/static_root/assets/confirm-dialog-dLx7MoUh.js.gz +0 -0
  470. codex/static_root/assets/datetime-column-CYEe6t74.2500e9a7b4a4.js.br +0 -0
  471. codex/static_root/assets/datetime-column-CYEe6t74.2500e9a7b4a4.js.gz +0 -0
  472. codex/static_root/assets/datetime-column-CYEe6t74.js.br +0 -0
  473. codex/static_root/assets/datetime-column-CYEe6t74.js.gz +0 -0
  474. codex/static_root/assets/filter-CX5R_mAN.0fd3b1a14779.js +0 -1
  475. codex/static_root/assets/filter-CX5R_mAN.0fd3b1a14779.js.br +0 -0
  476. codex/static_root/assets/filter-CX5R_mAN.0fd3b1a14779.js.gz +0 -0
  477. codex/static_root/assets/filter-CX5R_mAN.js +0 -1
  478. codex/static_root/assets/filter-CX5R_mAN.js.br +0 -0
  479. codex/static_root/assets/filter-CX5R_mAN.js.gz +0 -0
  480. codex/static_root/assets/flag-tab-ElQxMWbZ.e5ba707bac09.js.br +0 -0
  481. codex/static_root/assets/flag-tab-ElQxMWbZ.e5ba707bac09.js.gz +0 -0
  482. codex/static_root/assets/flag-tab-ElQxMWbZ.js.br +0 -0
  483. codex/static_root/assets/flag-tab-ElQxMWbZ.js.gz +0 -0
  484. codex/static_root/assets/forwardRefs-DlsL_f4M.662d81eac923.js +0 -1
  485. codex/static_root/assets/forwardRefs-DlsL_f4M.662d81eac923.js.br +0 -0
  486. codex/static_root/assets/forwardRefs-DlsL_f4M.662d81eac923.js.gz +0 -0
  487. codex/static_root/assets/forwardRefs-DlsL_f4M.js +0 -1
  488. codex/static_root/assets/forwardRefs-DlsL_f4M.js.br +0 -0
  489. codex/static_root/assets/forwardRefs-DlsL_f4M.js.gz +0 -0
  490. codex/static_root/assets/forwardRefs-Dyi06MPF.601ab1fd99b1.css.br +0 -0
  491. codex/static_root/assets/forwardRefs-Dyi06MPF.601ab1fd99b1.css.gz +0 -0
  492. codex/static_root/assets/forwardRefs-Dyi06MPF.css.br +0 -0
  493. codex/static_root/assets/forwardRefs-Dyi06MPF.css.gz +0 -0
  494. codex/static_root/assets/group-tab-CqVQHStZ.4c72ec7c5179.js.br +0 -0
  495. codex/static_root/assets/group-tab-CqVQHStZ.4c72ec7c5179.js.gz +0 -0
  496. codex/static_root/assets/group-tab-CqVQHStZ.js.br +0 -0
  497. codex/static_root/assets/group-tab-CqVQHStZ.js.gz +0 -0
  498. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css +0 -1
  499. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css.br +0 -0
  500. codex/static_root/assets/group-tab-_vKWzoyd.948e907b1e6b.css.gz +0 -0
  501. codex/static_root/assets/group-tab-_vKWzoyd.css +0 -1
  502. codex/static_root/assets/group-tab-_vKWzoyd.css.br +0 -0
  503. codex/static_root/assets/group-tab-_vKWzoyd.css.gz +0 -0
  504. codex/static_root/assets/http-error-D9X2r_ts.71a1241440db.js.br +0 -0
  505. codex/static_root/assets/http-error-D9X2r_ts.71a1241440db.js.gz +0 -0
  506. codex/static_root/assets/http-error-D9X2r_ts.js.br +0 -0
  507. codex/static_root/assets/http-error-D9X2r_ts.js.gz +0 -0
  508. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css +0 -1
  509. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css.br +0 -0
  510. codex/static_root/assets/index-BHXJTQ4V.523d7b3d350f.css.gz +0 -0
  511. codex/static_root/assets/index-BHXJTQ4V.css +0 -1
  512. codex/static_root/assets/index-BHXJTQ4V.css.br +0 -0
  513. codex/static_root/assets/index-BHXJTQ4V.css.gz +0 -0
  514. codex/static_root/assets/index-Ciy2g1_l.a4d7e7a1851a.js +0 -1
  515. codex/static_root/assets/index-Ciy2g1_l.a4d7e7a1851a.js.br +0 -0
  516. codex/static_root/assets/index-Ciy2g1_l.a4d7e7a1851a.js.gz +0 -0
  517. codex/static_root/assets/index-Ciy2g1_l.js +0 -1
  518. codex/static_root/assets/index-Ciy2g1_l.js.br +0 -0
  519. codex/static_root/assets/index-Ciy2g1_l.js.gz +0 -0
  520. codex/static_root/assets/library-tab-gTOFQ_iR.43484dac2129.js.br +0 -0
  521. codex/static_root/assets/library-tab-gTOFQ_iR.43484dac2129.js.gz +0 -0
  522. codex/static_root/assets/library-tab-gTOFQ_iR.js.br +0 -0
  523. codex/static_root/assets/library-tab-gTOFQ_iR.js.gz +0 -0
  524. codex/static_root/assets/main-Bh4TRBe6.eabe3bd7c355.js +0 -35
  525. codex/static_root/assets/main-Bh4TRBe6.eabe3bd7c355.js.br +0 -0
  526. codex/static_root/assets/main-Bh4TRBe6.eabe3bd7c355.js.gz +0 -0
  527. codex/static_root/assets/main-Bh4TRBe6.js +0 -35
  528. codex/static_root/assets/main-Bh4TRBe6.js.br +0 -0
  529. codex/static_root/assets/main-Bh4TRBe6.js.gz +0 -0
  530. codex/static_root/assets/main-K8cER0IH.css.br +0 -0
  531. codex/static_root/assets/main-K8cER0IH.d529e8b3f52a.css.br +0 -0
  532. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.fb70d1a2caab.js +0 -1
  533. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.fb70d1a2caab.js.br +0 -0
  534. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.fb70d1a2caab.js.gz +0 -0
  535. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.js +0 -1
  536. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.js.br +0 -0
  537. codex/static_root/assets/pager-full-pdf-BJ2ugo4Y.js.gz +0 -0
  538. codex/static_root/assets/pagination-toolbar-BwTjydSq.3086700f965d.js.br +0 -0
  539. codex/static_root/assets/pagination-toolbar-BwTjydSq.3086700f965d.js.gz +0 -0
  540. codex/static_root/assets/pagination-toolbar-BwTjydSq.js.br +0 -0
  541. codex/static_root/assets/pagination-toolbar-BwTjydSq.js.gz +0 -0
  542. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.487e647604e2.css +0 -1
  543. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.487e647604e2.css.br +0 -0
  544. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.487e647604e2.css.gz +0 -0
  545. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.css +0 -1
  546. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.css.br +0 -0
  547. codex/static_root/assets/pagination-toolbar-CzT9Hc3f.css.gz +0 -0
  548. codex/static_root/assets/pdf-doc-cr8rSW0K.42089de27088.js.br +0 -0
  549. codex/static_root/assets/pdf-doc-cr8rSW0K.42089de27088.js.gz +0 -0
  550. codex/static_root/assets/pdf-doc-cr8rSW0K.js.br +0 -0
  551. codex/static_root/assets/pdf-doc-cr8rSW0K.js.gz +0 -0
  552. codex/static_root/assets/reader-B2vknx-p.b97c9147c346.js +0 -2
  553. codex/static_root/assets/reader-B2vknx-p.b97c9147c346.js.br +0 -0
  554. codex/static_root/assets/reader-B2vknx-p.b97c9147c346.js.gz +0 -0
  555. codex/static_root/assets/reader-B2vknx-p.js +0 -2
  556. codex/static_root/assets/reader-B2vknx-p.js.br +0 -0
  557. codex/static_root/assets/reader-B2vknx-p.js.gz +0 -0
  558. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css +0 -1
  559. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css.br +0 -0
  560. codex/static_root/assets/reader-DdWNjEED.97c15f661faf.css.gz +0 -0
  561. codex/static_root/assets/reader-DdWNjEED.css +0 -1
  562. codex/static_root/assets/reader-DdWNjEED.css.br +0 -0
  563. codex/static_root/assets/reader-DdWNjEED.css.gz +0 -0
  564. codex/static_root/assets/relation-chips-BJETO4cu.5cc9f906ae86.js +0 -1
  565. codex/static_root/assets/relation-chips-BJETO4cu.5cc9f906ae86.js.br +0 -0
  566. codex/static_root/assets/relation-chips-BJETO4cu.5cc9f906ae86.js.gz +0 -0
  567. codex/static_root/assets/relation-chips-BJETO4cu.js +0 -1
  568. codex/static_root/assets/relation-chips-BJETO4cu.js.br +0 -0
  569. codex/static_root/assets/relation-chips-BJETO4cu.js.gz +0 -0
  570. codex/static_root/assets/relation-chips-eQkZvJcT.6b52d3f66aed.css +0 -1
  571. codex/static_root/assets/relation-chips-eQkZvJcT.6b52d3f66aed.css.br +0 -0
  572. codex/static_root/assets/relation-chips-eQkZvJcT.6b52d3f66aed.css.gz +0 -0
  573. codex/static_root/assets/relation-chips-eQkZvJcT.css +0 -1
  574. codex/static_root/assets/relation-chips-eQkZvJcT.css.br +0 -0
  575. codex/static_root/assets/relation-chips-eQkZvJcT.css.gz +0 -0
  576. codex/static_root/assets/settings-drawer-DGxdcvk4.30900a8bc3ff.js +0 -2
  577. codex/static_root/assets/settings-drawer-DGxdcvk4.30900a8bc3ff.js.br +0 -0
  578. codex/static_root/assets/settings-drawer-DGxdcvk4.30900a8bc3ff.js.gz +0 -0
  579. codex/static_root/assets/settings-drawer-DGxdcvk4.js +0 -2
  580. codex/static_root/assets/settings-drawer-DGxdcvk4.js.br +0 -0
  581. codex/static_root/assets/settings-drawer-DGxdcvk4.js.gz +0 -0
  582. codex/static_root/assets/settings-drawer-WyG6HLH-.css +0 -1
  583. codex/static_root/assets/settings-drawer-WyG6HLH-.css.br +0 -0
  584. codex/static_root/assets/settings-drawer-WyG6HLH-.css.gz +0 -0
  585. codex/static_root/assets/settings-drawer-WyG6HLH-.fe251f6d0a75.css +0 -1
  586. codex/static_root/assets/settings-drawer-WyG6HLH-.fe251f6d0a75.css.br +0 -0
  587. codex/static_root/assets/settings-drawer-WyG6HLH-.fe251f6d0a75.css.gz +0 -0
  588. codex/static_root/assets/ssrBoot-CAsgsyDf.726bc1a727b7.js.br +0 -0
  589. codex/static_root/assets/ssrBoot-CAsgsyDf.726bc1a727b7.js.gz +0 -0
  590. codex/static_root/assets/ssrBoot-CAsgsyDf.js.br +0 -0
  591. codex/static_root/assets/ssrBoot-CAsgsyDf.js.gz +0 -0
  592. codex/static_root/assets/stats-tab-B2rq8Yvl.3d1cb4751160.js.br +0 -0
  593. codex/static_root/assets/stats-tab-B2rq8Yvl.3d1cb4751160.js.gz +0 -0
  594. codex/static_root/assets/stats-tab-B2rq8Yvl.js.br +0 -0
  595. codex/static_root/assets/stats-tab-B2rq8Yvl.js.gz +0 -0
  596. codex/static_root/assets/stats-tab-B6L711cO.b6a42655cd70.css.br +0 -2
  597. codex/static_root/assets/stats-tab-B6L711cO.b6a42655cd70.css.gz +0 -0
  598. codex/static_root/assets/stats-tab-B6L711cO.css.br +0 -2
  599. codex/static_root/assets/stats-tab-B6L711cO.css.gz +0 -0
  600. codex/static_root/assets/task-tab-DL6WROkd.6c75d2f501ad.js.br +0 -0
  601. codex/static_root/assets/task-tab-DL6WROkd.6c75d2f501ad.js.gz +0 -0
  602. codex/static_root/assets/task-tab-DL6WROkd.js.br +0 -0
  603. codex/static_root/assets/task-tab-DL6WROkd.js.gz +0 -0
  604. codex/static_root/assets/unauthorized-CGmdx8H3.88f8cccac020.js +0 -1
  605. codex/static_root/assets/unauthorized-CGmdx8H3.88f8cccac020.js.br +0 -0
  606. codex/static_root/assets/unauthorized-CGmdx8H3.88f8cccac020.js.gz +0 -0
  607. codex/static_root/assets/unauthorized-CGmdx8H3.js +0 -1
  608. codex/static_root/assets/unauthorized-CGmdx8H3.js.br +0 -0
  609. codex/static_root/assets/unauthorized-CGmdx8H3.js.gz +0 -0
  610. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css +0 -1
  611. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css.br +0 -0
  612. codex/static_root/assets/unauthorized-CtkV01lw.8668ffe7b306.css.gz +0 -0
  613. codex/static_root/assets/unauthorized-CtkV01lw.css +0 -1
  614. codex/static_root/assets/unauthorized-CtkV01lw.css.br +0 -0
  615. codex/static_root/assets/unauthorized-CtkV01lw.css.gz +0 -0
  616. codex/static_root/assets/user-tab-pnWYdoCh.b8b1c35dc74b.js.br +0 -0
  617. codex/static_root/assets/user-tab-pnWYdoCh.b8b1c35dc74b.js.gz +0 -0
  618. codex/static_root/assets/user-tab-pnWYdoCh.js.br +0 -0
  619. codex/static_root/assets/user-tab-pnWYdoCh.js.gz +0 -0
  620. codex/static_root/manifest.b023317c84d2.json +0 -757
  621. codex/static_root/manifest.b023317c84d2.json.br +0 -0
  622. codex/static_root/manifest.b023317c84d2.json.gz +0 -0
  623. {codex-1.7.11.dist-info → codex-1.7.12.dist-info}/LICENSE +0 -0
  624. {codex-1.7.11.dist-info → codex-1.7.12.dist-info}/entry_points.txt +0 -0
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)
@@ -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):
@@ -34,24 +34,24 @@ 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
55
 
56
56
  ####################################
57
57
  # Documented Environment Variables #
@@ -63,12 +63,12 @@ RESET_ADMIN = not_falsy_env("CODEX_RESET_ADMIN")
63
63
  LOG_DIR = Path(environ.get("CODEX_LOG_DIR", CONFIG_PATH / "logs"))
64
64
  LOG_TO_CONSOLE = environ.get("CODEX_LOG_TO_CONSOLE") != "0"
65
65
  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))
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"))
70
70
  FIX_FOREIGN_KEYS = not_falsy_env("CODEX_FIX_FOREIGN_KEYS")
71
- INTEGRITY_CHECK = environ.get("CODEX_INTEGRITY_CHECK", False)
71
+ INTEGRITY_CHECK = not_falsy_env("CODEX_INTEGRITY_CHECK")
72
72
  FTS_INTEGRITY_CHECK = not_falsy_env("CODEX_FTS_INTEGRITY_CHECK")
73
73
  FTS_REBUILD = not_falsy_env("CODEX_FTS_REBUILD")
74
74
 
@@ -0,0 +1 @@
1
+ import{m as g,V as t}from"./VCheckboxBtn-D8jQ_2In.js";import{u as A,m as F,h as l}from"./VSelectionControl-DvYb3Pi4.js";import{g as B,p as R,b as U,c as D,br as M,u as N,o as $,bs as j,a as u,m as r}from"./main-JUy8mnXG.js";const q=R({...F(),...$(g(),["inline"])},"VCheckbox"),G=B()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=U(e,"modelValue"),{isFocused:n,focus:i,blur:m}=A(e),V=M(),b=D(()=>e.id||`checkbox-${V}`);return N(()=>{const[p,f]=j(d),v=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},p,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:b.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:h,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(k,{id:h.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":I=>s.value=I,onFocus:i,onBlur:m}),a)}})}),{}}});export{G as V};
@@ -0,0 +1 @@
1
+ import{m as g,V as t}from"./VCheckboxBtn-D8jQ_2In.js";import{u as A,m as F,h as l}from"./VSelectionControl-DvYb3Pi4.js";import{g as B,p as R,b as U,c as D,br as M,u as N,o as $,bs as j,a as u,m as r}from"./main-JUy8mnXG.js";const q=R({...F(),...$(g(),["inline"])},"VCheckbox"),G=B()({name:"VCheckbox",inheritAttrs:!1,props:q(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=U(e,"modelValue"),{isFocused:n,focus:i,blur:m}=A(e),V=M(),b=D(()=>e.id||`checkbox-${V}`);return N(()=>{const[p,f]=j(d),v=l.filterProps(e),k=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},p,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:b.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:h,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(k,{id:h.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":I=>s.value=I,onFocus:i,onBlur:m}),a)}})}),{}}});export{G as V};
@@ -1 +1 @@
1
- import{l as f,k as a}from"./VSelectionControl-DR3WB2kF.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-Bh4TRBe6.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(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 b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
1
+ import{l as f,k as a}from"./VSelectionControl-DvYb3Pi4.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-JUy8mnXG.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(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 b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
@@ -1 +1 @@
1
- import{l as f,k as a}from"./VSelectionControl-DR3WB2kF.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-Bh4TRBe6.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(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 b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
1
+ import{l as f,k as a}from"./VSelectionControl-DvYb3Pi4.js";import{p as V,K as k,g as v,b as c,c as l,u as I,o as x,a as b,m as h}from"./main-JUy8mnXG.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:k,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),y=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:u}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function s(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 b(a,h(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,s],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),u)}),{}}});export{y as V,C as m};
@@ -1 +1 @@
1
- .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--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--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{opacity:var(--v-high-emphasis-opacity);transform:rotate(180deg)}
1
+ .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--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--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)}
@@ -1 +1 @@
1
- .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--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--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{opacity:var(--v-high-emphasis-opacity);transform:rotate(180deg)}
1
+ .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--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--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{u as we,t as F,e as Se,m as Fe,a as Ie,V as De,b as Pe,d as Re}from"./VSelect-BpkoCPsm.js";import{p as Ae,q as Ee,c as Q}from"./VSelectionControl-DvYb3Pi4.js";import{u as Te,f as Me,p as _e,k as W,l as Ne}from"./forwardRefs-BxFNqo8E.js";import{u as Ke,m as Le,h as Oe}from"./filter-D-aPctKp.js";import{g as Be,p as Ue,aQ as qe,r as M,aR as I,c as h,b as J,bB as ze,aS as D,bC as X,aV as Y,u as je,o as He,a as v,m as S,bD as $e,bE as Z,bq as Ge,F as q,bF as Qe,bG as We,x as Je}from"./main-JUy8mnXG.js";import{a as ee,g as Xe}from"./VDialog-CoOMSEbM.js";import{V as Ye}from"./VCheckboxBtn-D8jQ_2In.js";const Ze=Ue({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Le({filterKeys:["title"]}),...Fe({hideNoData:!0,returnObject:!0}),...He(Ee({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),..._e({transition:!1})},"VCombobox"),il=Be()({name:"VCombobox",props:Ze(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,le){var H;let{emit:te,slots:o}=le;const{t:_}=qe(),b=M(),V=I(!1),C=I(!0),N=I(!1),z=M(),K=M(),i=I(-1);let L=!1;const ae=h(()=>{var e;return(e=b.value)==null?void 0:e.color}),{items:ue,transformIn:ne,transformOut:oe}=we(l),{textColorClasses:ie,textColorStyles:se}=Te(ae),u=J(l,"modelValue",[],e=>ne(ze(e)),e=>{const t=oe(e);return l.multiple?t:t[0]??null}),P=Ae(l),R=h(()=>!!(l.chips||o.chip)),y=h(()=>R.value||!!o.selection),p=I(!l.multiple&&!y.value?((H=u.value[0])==null?void 0:H.title)??"":""),d=h({get:()=>p.value,set:e=>{var t;if(p.value=e??"",!l.multiple&&!y.value&&(u.value=[F(l,e)]),e&&l.multiple&&((t=l.delimiters)!=null&&t.length)){const s=e.split(new RegExp(`(?:${l.delimiters.join("|")})+`));s.length>1&&(s.forEach(a=>{a=a.trim(),a&&g(F(l,a))}),p.value="")}e||(i.value=-1),C.value=!e}}),re=h(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:d.value.length),{filteredItems:A,getMatches:ce}=Ke(l,ue,()=>C.value?"":d.value),k=h(()=>l.hideSelected?A.value.filter(e=>!u.value.some(t=>t.value===e.value)):A.value),E=h(()=>l.hideNoData&&!k.value.length||P.isReadonly.value||P.isDisabled.value),O=J(l,"menu"),r=h({get:()=>O.value,set:e=>{var t;O.value&&!e&&((t=z.value)!=null&&t.ΨopenChildren.size)||e&&E.value||(O.value=e)}}),j=h(()=>r.value?l.closeText:l.openText);D(p,e=>{L?Y(()=>L=!1):V.value&&!r.value&&(r.value=!0),te("update:search",e)}),D(u,e=>{var t;!l.multiple&&!y.value&&(p.value=((t=e[0])==null?void 0:t.title)??"")});const ve=h(()=>u.value.map(e=>e.value)),B=h(()=>{var t;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&d.value===((t=k.value[0])==null?void 0:t.title))&&k.value.length>0&&!C.value&&!N.value}),U=M(),de=Se(U,b);function fe(e){L=!0,l.openOnClear&&(r.value=!0)}function me(){E.value||(r.value=!0)}function he(e){E.value||(V.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function be(e){var t;e.key!==" "&&Z(e)&&((t=b.value)==null||t.focus())}function ge(e){var a,c,f,x;if($e(e)||P.isReadonly.value)return;const t=(a=b.value)==null?void 0:a.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)&&(B.value&&["Enter","Tab"].includes(e.key)&&!u.value.some(n=>{let{value:w}=n;return w===k.value[0].value})&&g(A.value[0]),C.value=!0),e.key==="ArrowDown"&&B.value&&((c=U.value)==null||c.focus("next")),e.key==="Enter"&&d.value&&(g(F(l,d.value)),y.value&&(p.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&y.value&&u.value.length>0&&!d.value)return g(u.value[0],!1);if(~i.value){e.preventDefault();const n=i.value;g(u.value[i.value],!1),i.value=n>=s-1?s-2:n}else e.key==="Backspace"&&!d.value&&(i.value=s-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&t&&t>0)return;const n=i.value>-1?i.value-1:s-1;u.value[n]?i.value=n:(i.value=-1,(f=b.value)==null||f.setSelectionRange(d.value.length,d.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,(x=b.value)==null||x.setSelectionRange(0,0))}else~i.value&&Z(e)&&(i.value=-1)}function xe(){var e;l.eager&&((e=K.value)==null||e.calculateVisibleItems())}function Ve(){var e;V.value&&(C.value=!0,(e=b.value)==null||e.focus())}function g(e){let t=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||X)(c.value,e.value)),a=t??!~s;if(~s){const c=a?[...u.value,e]:[...u.value];c.splice(s,1),u.value=c}else a&&(u.value=[...u.value,e]);l.clearOnSelect&&(d.value="")}else{const s=t!==!1;u.value=s?[e]:[],p.value=s&&!y.value?e.title:"",Y(()=>{r.value=!1,C.value=!0})}}function ye(e){V.value=!0,setTimeout(()=>{N.value=!0})}function Ce(e){N.value=!1}function pe(e){(e==null||e===""&&!l.multiple&&!y.value)&&(u.value=[])}return D(V,(e,t)=>{if(!(e||e===t)&&(i.value=-1,r.value=!1,d.value)){if(l.multiple){g(F(l,d.value));return}if(!y.value)return;u.value.some(s=>{let{title:a}=s;return a===d.value})?p.value="":g(F(l,d.value))}}),D(r,()=>{if(!l.hideSelected&&r.value&&u.value.length){const e=k.value.findIndex(t=>u.value.some(s=>(l.valueComparator||X)(s.value,t.value)));Ge&&window.requestAnimationFrame(()=>{var t;e>=0&&((t=K.value)==null||t.scrollToIndex(e))})}}),D(()=>l.items,(e,t)=>{r.value||V.value&&!t.length&&e.length&&(r.value=!0)}),je(()=>{const e=!!(!l.hideNoData||k.value.length||o["prepend-item"]||o["append-item"]||o["no-data"]),t=u.value.length>0,s=Q.filterProps(l);return v(Q,S({ref:b},s,{modelValue:d.value,"onUpdate:modelValue":[a=>d.value=a,pe],focused:V.value,"onUpdate:focused":a=>V.value=a,validationValue:u.externalValue,counterValue:re.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":r.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!y.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:P.isReadonly.value,placeholder:t?void 0:l.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:ge}),{...o,default:()=>v(q,null,[v(Ie,S({ref:z,modelValue:r.value,"onUpdate:modelValue":a=>r.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:E.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:l.transition,onAfterEnter:xe,onAfterLeave:Ve},l.menuProps),{default:()=>[e&&v(De,S({ref:U,selected:ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:be,onFocusin:ye,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:l.itemColor??l.color},de,l.listProps),{default:()=>{var a,c,f;return[(a=o["prepend-item"])==null?void 0:a.call(o),!k.value.length&&!l.hideNoData&&(((c=o["no-data"])==null?void 0:c.call(o))??v(ee,{key:"no-data",title:_(l.noDataText)},null)),v(Pe,{ref:K,renderless:!0,items:k.value,itemKey:"value"},{default:x=>{var G;let{item:n,index:w,itemRef:m}=x;const $=S(n.props,{ref:m,key:n.value,active:B.value&&w===0?!0:void 0,onClick:()=>g(n,null)});return((G=o.item)==null?void 0:G.call(o,{item:n,index:w,props:$}))??v(ee,S($,{role:"option"}),{prepend:T=>{let{isSelected:ke}=T;return v(q,null,[l.multiple&&!l.hideSelected?v(Ye,{key:n.value,modelValue:ke,ripple:!1,tabindex:"-1"},null):void 0,n.props.prependAvatar&&v(Xe,{image:n.props.prependAvatar},null),n.props.prependIcon&&v(W,{icon:n.props.prependIcon},null)])},title:()=>{var T;return C.value?n.title:Oe("v-combobox",n.title,(T=ce(n))==null?void 0:T.title)}})}}),(f=o["append-item"])==null?void 0:f.call(o)]}})]}),u.value.map((a,c)=>{function f(m){m.stopPropagation(),m.preventDefault(),g(a,!1)}const x={"onClick:close":f,onKeydown(m){m.key!=="Enter"&&m.key!==" "||(m.preventDefault(),m.stopPropagation(),f(m))},onMousedown(m){m.preventDefault(),m.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},n=R.value?!!o.chip:!!o.selection,w=n?We(R.value?o.chip({item:a,index:c,props:x}):o.selection({item:a,index:c})):void 0;if(!(n&&!w))return v("div",{key:a.value,class:["v-combobox__selection",c===i.value&&["v-combobox__selection--selected",ie.value]],style:c===i.value?se.value:{}},[R.value?o.chip?v(Ne,{key:"chip-defaults",defaults:{VChip:{closable:l.closableChips,size:"small",text:a.title}}},{default:()=>[w]}):v(Re,S({key:"chip",closable:l.closableChips,size:"small",text:a.title,disabled:a.props.disabled},x),null):w??v("span",{class:"v-combobox__selection-text"},[a.title,l.multiple&&c<u.value.length-1&&v("span",{class:"v-combobox__selection-comma"},[Je(",")])])])})]),"append-inner":function(){var x,n;for(var a=arguments.length,c=new Array(a),f=0;f<a;f++)c[f]=arguments[f];return v(q,null,[(x=o["append-inner"])==null?void 0:x.call(o,...c),(!l.hideNoData||l.items.length)&&l.menuIcon?v(W,{class:"v-combobox__menu-icon",color:(n=b.value)==null?void 0:n.fieldIconColor,icon:l.menuIcon,onMousedown:he,onClick:Qe,"aria-label":_(j.value),title:_(j.value),tabindex:"-1"},null):void 0])}})}),Me({isFocused:V,isPristine:C,menu:r,search:d,selectionIndex:i,filteredItems:A,select:g},b)}});export{il as V};
@@ -0,0 +1 @@
1
+ import{u as we,t as F,e as Se,m as Fe,a as Ie,V as De,b as Pe,d as Re}from"./VSelect-BpkoCPsm.js";import{p as Ae,q as Ee,c as Q}from"./VSelectionControl-DvYb3Pi4.js";import{u as Te,f as Me,p as _e,k as W,l as Ne}from"./forwardRefs-BxFNqo8E.js";import{u as Ke,m as Le,h as Oe}from"./filter-D-aPctKp.js";import{g as Be,p as Ue,aQ as qe,r as M,aR as I,c as h,b as J,bB as ze,aS as D,bC as X,aV as Y,u as je,o as He,a as v,m as S,bD as $e,bE as Z,bq as Ge,F as q,bF as Qe,bG as We,x as Je}from"./main-JUy8mnXG.js";import{a as ee,g as Xe}from"./VDialog-CoOMSEbM.js";import{V as Ye}from"./VCheckboxBtn-D8jQ_2In.js";const Ze=Ue({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Le({filterKeys:["title"]}),...Fe({hideNoData:!0,returnObject:!0}),...He(Ee({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),..._e({transition:!1})},"VCombobox"),il=Be()({name:"VCombobox",props:Ze(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,le){var H;let{emit:te,slots:o}=le;const{t:_}=qe(),b=M(),V=I(!1),C=I(!0),N=I(!1),z=M(),K=M(),i=I(-1);let L=!1;const ae=h(()=>{var e;return(e=b.value)==null?void 0:e.color}),{items:ue,transformIn:ne,transformOut:oe}=we(l),{textColorClasses:ie,textColorStyles:se}=Te(ae),u=J(l,"modelValue",[],e=>ne(ze(e)),e=>{const t=oe(e);return l.multiple?t:t[0]??null}),P=Ae(l),R=h(()=>!!(l.chips||o.chip)),y=h(()=>R.value||!!o.selection),p=I(!l.multiple&&!y.value?((H=u.value[0])==null?void 0:H.title)??"":""),d=h({get:()=>p.value,set:e=>{var t;if(p.value=e??"",!l.multiple&&!y.value&&(u.value=[F(l,e)]),e&&l.multiple&&((t=l.delimiters)!=null&&t.length)){const s=e.split(new RegExp(`(?:${l.delimiters.join("|")})+`));s.length>1&&(s.forEach(a=>{a=a.trim(),a&&g(F(l,a))}),p.value="")}e||(i.value=-1),C.value=!e}}),re=h(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:d.value.length),{filteredItems:A,getMatches:ce}=Ke(l,ue,()=>C.value?"":d.value),k=h(()=>l.hideSelected?A.value.filter(e=>!u.value.some(t=>t.value===e.value)):A.value),E=h(()=>l.hideNoData&&!k.value.length||P.isReadonly.value||P.isDisabled.value),O=J(l,"menu"),r=h({get:()=>O.value,set:e=>{var t;O.value&&!e&&((t=z.value)!=null&&t.ΨopenChildren.size)||e&&E.value||(O.value=e)}}),j=h(()=>r.value?l.closeText:l.openText);D(p,e=>{L?Y(()=>L=!1):V.value&&!r.value&&(r.value=!0),te("update:search",e)}),D(u,e=>{var t;!l.multiple&&!y.value&&(p.value=((t=e[0])==null?void 0:t.title)??"")});const ve=h(()=>u.value.map(e=>e.value)),B=h(()=>{var t;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&d.value===((t=k.value[0])==null?void 0:t.title))&&k.value.length>0&&!C.value&&!N.value}),U=M(),de=Se(U,b);function fe(e){L=!0,l.openOnClear&&(r.value=!0)}function me(){E.value||(r.value=!0)}function he(e){E.value||(V.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function be(e){var t;e.key!==" "&&Z(e)&&((t=b.value)==null||t.focus())}function ge(e){var a,c,f,x;if($e(e)||P.isReadonly.value)return;const t=(a=b.value)==null?void 0:a.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)&&(B.value&&["Enter","Tab"].includes(e.key)&&!u.value.some(n=>{let{value:w}=n;return w===k.value[0].value})&&g(A.value[0]),C.value=!0),e.key==="ArrowDown"&&B.value&&((c=U.value)==null||c.focus("next")),e.key==="Enter"&&d.value&&(g(F(l,d.value)),y.value&&(p.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&y.value&&u.value.length>0&&!d.value)return g(u.value[0],!1);if(~i.value){e.preventDefault();const n=i.value;g(u.value[i.value],!1),i.value=n>=s-1?s-2:n}else e.key==="Backspace"&&!d.value&&(i.value=s-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&t&&t>0)return;const n=i.value>-1?i.value-1:s-1;u.value[n]?i.value=n:(i.value=-1,(f=b.value)==null||f.setSelectionRange(d.value.length,d.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,(x=b.value)==null||x.setSelectionRange(0,0))}else~i.value&&Z(e)&&(i.value=-1)}function xe(){var e;l.eager&&((e=K.value)==null||e.calculateVisibleItems())}function Ve(){var e;V.value&&(C.value=!0,(e=b.value)==null||e.focus())}function g(e){let t=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||X)(c.value,e.value)),a=t??!~s;if(~s){const c=a?[...u.value,e]:[...u.value];c.splice(s,1),u.value=c}else a&&(u.value=[...u.value,e]);l.clearOnSelect&&(d.value="")}else{const s=t!==!1;u.value=s?[e]:[],p.value=s&&!y.value?e.title:"",Y(()=>{r.value=!1,C.value=!0})}}function ye(e){V.value=!0,setTimeout(()=>{N.value=!0})}function Ce(e){N.value=!1}function pe(e){(e==null||e===""&&!l.multiple&&!y.value)&&(u.value=[])}return D(V,(e,t)=>{if(!(e||e===t)&&(i.value=-1,r.value=!1,d.value)){if(l.multiple){g(F(l,d.value));return}if(!y.value)return;u.value.some(s=>{let{title:a}=s;return a===d.value})?p.value="":g(F(l,d.value))}}),D(r,()=>{if(!l.hideSelected&&r.value&&u.value.length){const e=k.value.findIndex(t=>u.value.some(s=>(l.valueComparator||X)(s.value,t.value)));Ge&&window.requestAnimationFrame(()=>{var t;e>=0&&((t=K.value)==null||t.scrollToIndex(e))})}}),D(()=>l.items,(e,t)=>{r.value||V.value&&!t.length&&e.length&&(r.value=!0)}),je(()=>{const e=!!(!l.hideNoData||k.value.length||o["prepend-item"]||o["append-item"]||o["no-data"]),t=u.value.length>0,s=Q.filterProps(l);return v(Q,S({ref:b},s,{modelValue:d.value,"onUpdate:modelValue":[a=>d.value=a,pe],focused:V.value,"onUpdate:focused":a=>V.value=a,validationValue:u.externalValue,counterValue:re.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":r.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!y.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:P.isReadonly.value,placeholder:t?void 0:l.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:ge}),{...o,default:()=>v(q,null,[v(Ie,S({ref:z,modelValue:r.value,"onUpdate:modelValue":a=>r.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:E.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:l.transition,onAfterEnter:xe,onAfterLeave:Ve},l.menuProps),{default:()=>[e&&v(De,S({ref:U,selected:ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:be,onFocusin:ye,onFocusout:Ce,tabindex:"-1","aria-live":"polite",color:l.itemColor??l.color},de,l.listProps),{default:()=>{var a,c,f;return[(a=o["prepend-item"])==null?void 0:a.call(o),!k.value.length&&!l.hideNoData&&(((c=o["no-data"])==null?void 0:c.call(o))??v(ee,{key:"no-data",title:_(l.noDataText)},null)),v(Pe,{ref:K,renderless:!0,items:k.value,itemKey:"value"},{default:x=>{var G;let{item:n,index:w,itemRef:m}=x;const $=S(n.props,{ref:m,key:n.value,active:B.value&&w===0?!0:void 0,onClick:()=>g(n,null)});return((G=o.item)==null?void 0:G.call(o,{item:n,index:w,props:$}))??v(ee,S($,{role:"option"}),{prepend:T=>{let{isSelected:ke}=T;return v(q,null,[l.multiple&&!l.hideSelected?v(Ye,{key:n.value,modelValue:ke,ripple:!1,tabindex:"-1"},null):void 0,n.props.prependAvatar&&v(Xe,{image:n.props.prependAvatar},null),n.props.prependIcon&&v(W,{icon:n.props.prependIcon},null)])},title:()=>{var T;return C.value?n.title:Oe("v-combobox",n.title,(T=ce(n))==null?void 0:T.title)}})}}),(f=o["append-item"])==null?void 0:f.call(o)]}})]}),u.value.map((a,c)=>{function f(m){m.stopPropagation(),m.preventDefault(),g(a,!1)}const x={"onClick:close":f,onKeydown(m){m.key!=="Enter"&&m.key!==" "||(m.preventDefault(),m.stopPropagation(),f(m))},onMousedown(m){m.preventDefault(),m.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},n=R.value?!!o.chip:!!o.selection,w=n?We(R.value?o.chip({item:a,index:c,props:x}):o.selection({item:a,index:c})):void 0;if(!(n&&!w))return v("div",{key:a.value,class:["v-combobox__selection",c===i.value&&["v-combobox__selection--selected",ie.value]],style:c===i.value?se.value:{}},[R.value?o.chip?v(Ne,{key:"chip-defaults",defaults:{VChip:{closable:l.closableChips,size:"small",text:a.title}}},{default:()=>[w]}):v(Re,S({key:"chip",closable:l.closableChips,size:"small",text:a.title,disabled:a.props.disabled},x),null):w??v("span",{class:"v-combobox__selection-text"},[a.title,l.multiple&&c<u.value.length-1&&v("span",{class:"v-combobox__selection-comma"},[Je(",")])])])})]),"append-inner":function(){var x,n;for(var a=arguments.length,c=new Array(a),f=0;f<a;f++)c[f]=arguments[f];return v(q,null,[(x=o["append-inner"])==null?void 0:x.call(o,...c),(!l.hideNoData||l.items.length)&&l.menuIcon?v(W,{class:"v-combobox__menu-icon",color:(n=b.value)==null?void 0:n.fieldIconColor,icon:l.menuIcon,onMousedown:he,onClick:Qe,"aria-label":_(j.value),title:_(j.value),tabindex:"-1"},null):void 0])}})}),Me({isFocused:V,isPristine:C,menu:r,search:d,selectionIndex:i,filteredItems:A,select:g},b)}});export{il as V};
@@ -0,0 +1 @@
1
+ .v-img{--v-theme-overlay-multiplier: 3;z-index:0}.v-img.v-img--absolute{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-img--booting .v-responsive__sizer{transition:none}.v-img--rounded{border-radius:4px}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{z-index:-1}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{object-fit:contain}.v-img__img--cover{object-fit:cover}.v-img__gradient{background-repeat:no-repeat}.v-responsive{display:flex;flex:1 0 auto;max-height:100%;max-width:100%;overflow:hidden;position:relative}.v-responsive--inline{display:inline-flex;flex:0 0 auto}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-list-item{align-items:center;display:grid;flex:none;grid-template-areas:"prepend content append";grid-template-columns:max-content 1fr auto;outline:none;max-width:100%;padding:4px 16px;position:relative;text-decoration:none}.v-list-item{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-list-item--border{border-width:thin;box-shadow:none}.v-list-item:hover>.v-list-item__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item:focus-visible>.v-list-item__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-list-item:focus>.v-list-item__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-list-item--active>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]>.v-list-item__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item--active:hover>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:hover>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-list-item--active:focus-visible>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-list-item--active:focus>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:focus>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-list-item{border-radius:0}.v-list-item--variant-plain,.v-list-item--variant-outlined,.v-list-item--variant-text,.v-list-item--variant-tonal{background:transparent;color:inherit}.v-list-item--variant-plain{opacity:.62}.v-list-item--variant-plain:focus,.v-list-item--variant-plain:hover{opacity:1}.v-list-item--variant-plain .v-list-item__overlay{display:none}.v-list-item--variant-elevated,.v-list-item--variant-flat{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-list-item--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-list-item--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-list-item--variant-outlined{border:thin solid currentColor}.v-list-item--variant-text .v-list-item__overlay{background:currentColor}.v-list-item--variant-tonal .v-list-item__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-list-item .v-list-item__underlay{position:absolute}@supports selector(:focus-visible){.v-list-item:after{pointer-events:none;border:2px solid currentColor;border-radius:4px;opacity:0;transition:opacity .2s ease-in-out}.v-list-item:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-list-item:focus-visible:after{opacity:calc(.15 * var(--v-theme-overlay-multiplier))}}.v-list-item__prepend>.v-badge .v-icon,.v-list-item__prepend>.v-icon,.v-list-item__append>.v-badge .v-icon,.v-list-item__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-list-item--active .v-list-item__prepend>.v-badge .v-icon,.v-list-item--active .v-list-item__prepend>.v-icon,.v-list-item--active .v-list-item__append>.v-badge .v-icon,.v-list-item--active .v-list-item__append>.v-icon{opacity:1}.v-list-item--active:not(.v-list-item--link) .v-list-item__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item--rounded{border-radius:4px}.v-list-item--disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.6}.v-list-item--link{cursor:pointer}.v-navigation-drawer--rail:not(.v-navigation-drawer--expand-on-hover) .v-list-item .v-avatar,.v-navigation-drawer--rail.v-navigation-drawer--expand-on-hover:not(.v-navigation-drawer--is-hovering) .v-list-item .v-avatar{--v-avatar-height: 24px}.v-list-item__prepend{align-items:center;align-self:center;display:flex;grid-area:prepend}.v-list-item__prepend>.v-badge~.v-list-item__spacer,.v-list-item__prepend>.v-icon~.v-list-item__spacer,.v-list-item__prepend>.v-tooltip~.v-list-item__spacer{width:32px}.v-list-item__prepend>.v-avatar~.v-list-item__spacer,.v-list-item__prepend>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:16px}.v-list-item--slim .v-list-item__prepend>.v-badge~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-icon~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-tooltip~.v-list-item__spacer{width:20px}.v-list-item--slim .v-list-item__prepend>.v-avatar~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:4px}.v-list-item--slim .v-list-item__prepend>.v-list-item-action~.v-list-item__spacer{width:4px}.v-list-item--three-line .v-list-item__prepend{align-self:start}.v-list-item__append{align-self:center;display:flex;align-items:center;grid-area:append}.v-list-item__append .v-list-item__spacer{order:-1;transition:.15s width cubic-bezier(.4,0,.2,1)}.v-list-item__append>.v-badge~.v-list-item__spacer,.v-list-item__append>.v-icon~.v-list-item__spacer,.v-list-item__append>.v-tooltip~.v-list-item__spacer{width:32px}.v-list-item__append>.v-avatar~.v-list-item__spacer,.v-list-item__append>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:16px}.v-list-item__append>.v-list-item-action~.v-list-item__spacer{width:16px}.v-list-item--slim .v-list-item__append>.v-badge~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-icon~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-tooltip~.v-list-item__spacer{width:20px}.v-list-item--slim .v-list-item__append>.v-avatar~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:4px}.v-list-item--slim .v-list-item__append>.v-list-item-action~.v-list-item__spacer{width:4px}.v-list-item--three-line .v-list-item__append{align-self:start}.v-list-item__content{align-self:center;grid-area:content;overflow:hidden}.v-list-item-action{align-self:center;display:flex;align-items:center;flex:none;transition:inherit;transition-property:height,width}.v-list-item-action--start{margin-inline-end:8px;margin-inline-start:-8px}.v-list-item-action--end{margin-inline-start:8px;margin-inline-end:-8px}.v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-media--start{margin-inline-end:16px}.v-list-item-media--end{margin-inline-start:16px}.v-list-item--two-line .v-list-item-media{margin-top:-4px;margin-bottom:-4px}.v-list-item--three-line .v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-subtitle{-webkit-box-orient:vertical;display:-webkit-box;opacity:var(--v-list-item-subtitle-opacity, var(--v-medium-emphasis-opacity));overflow:hidden;padding:0;text-overflow:ellipsis;overflow-wrap:break-word;word-break:initial}.v-list-item--one-line .v-list-item-subtitle{-webkit-line-clamp:1}.v-list-item--two-line .v-list-item-subtitle{-webkit-line-clamp:2}.v-list-item--three-line .v-list-item-subtitle{-webkit-line-clamp:3}.v-list-item-subtitle{font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem;text-transform:none}.v-list-item--nav .v-list-item-subtitle{font-size:.75rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem}.v-list-item-title{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:normal;overflow:hidden;padding:0;white-space:nowrap;text-overflow:ellipsis;word-break:normal;word-wrap:break-word}.v-list-item-title{font-size:1rem;font-weight:400;letter-spacing:.009375em;line-height:1.5;text-transform:none}.v-list-item--nav .v-list-item-title{font-size:.8125rem;font-weight:500;letter-spacing:normal;line-height:1rem}.v-list-item--density-default{min-height:40px}.v-list-item--density-default.v-list-item--one-line{min-height:48px;padding-top:4px;padding-bottom:4px}.v-list-item--density-default.v-list-item--two-line{min-height:64px;padding-top:12px;padding-bottom:12px}.v-list-item--density-default.v-list-item--three-line{min-height:88px;padding-top:16px;padding-bottom:16px}.v-list-item--density-default.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-default.v-list-item--three-line .v-list-item__append{padding-top:8px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--density-comfortable{min-height:36px}.v-list-item--density-comfortable.v-list-item--one-line{min-height:44px}.v-list-item--density-comfortable.v-list-item--two-line{min-height:60px;padding-top:8px;padding-bottom:8px}.v-list-item--density-comfortable.v-list-item--three-line{min-height:84px;padding-top:12px;padding-bottom:12px}.v-list-item--density-comfortable.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-comfortable.v-list-item--three-line .v-list-item__append{padding-top:6px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--density-compact{min-height:32px}.v-list-item--density-compact.v-list-item--one-line{min-height:40px}.v-list-item--density-compact.v-list-item--two-line{min-height:56px;padding-top:4px;padding-bottom:4px}.v-list-item--density-compact.v-list-item--three-line{min-height:80px;padding-top:8px;padding-bottom:8px}.v-list-item--density-compact.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-compact.v-list-item--three-line .v-list-item__append{padding-top:4px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--nav{padding-inline:8px}.v-list .v-list-item--nav:not(:only-child){margin-bottom:4px}.v-list-item__underlay{position:absolute}.v-list-item__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item--active.v-list-item--variant-elevated .v-list-item__overlay{--v-theme-overlay-multiplier: 0}.v-list{--indent-padding: 0px}.v-list--nav{--indent-padding: -8px}.v-list-group{--list-indent-size: 16px;--parent-padding: var(--indent-padding);--prepend-width: 40px}.v-list--slim .v-list-group{--prepend-width: 28px}.v-list-group--fluid{--list-indent-size: 0px}.v-list-group--prepend{--parent-padding: calc(var(--indent-padding) + var(--prepend-width))}.v-list-group--fluid.v-list-group--prepend{--parent-padding: var(--indent-padding)}.v-list-group__items{--indent-padding: calc(var(--parent-padding) + var(--list-indent-size))}.v-list-group__items .v-list-item{padding-inline-start:calc(16px + var(--indent-padding))!important}.v-list-group__header:not(.v-treeview-item--activatable-group-activator).v-list-item--active:not(:focus-visible) .v-list-item__overlay{opacity:0}.v-list-group__header:not(.v-treeview-item--activatable-group-activator).v-list-item--active:hover .v-list-item__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-avatar{flex:none;align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:width,height;vertical-align:middle}.v-avatar.v-avatar--size-x-small{--v-avatar-height: 24px}.v-avatar.v-avatar--size-small{--v-avatar-height: 32px}.v-avatar.v-avatar--size-default{--v-avatar-height: 40px}.v-avatar.v-avatar--size-large{--v-avatar-height: 48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height: 56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height) + 0px);width:calc(var(--v-avatar-height) + 0px)}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) + -4px);width:calc(var(--v-avatar-height) + -4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) + -8px);width:calc(var(--v-avatar-height) + -8px)}.v-avatar{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-avatar--border{border-width:thin;box-shadow:none}.v-avatar{border-radius:50%}.v-avatar--variant-plain,.v-avatar--variant-outlined,.v-avatar--variant-text,.v-avatar--variant-tonal{background:transparent;color:inherit}.v-avatar--variant-plain{opacity:.62}.v-avatar--variant-plain:focus,.v-avatar--variant-plain:hover{opacity:1}.v-avatar--variant-plain .v-avatar__overlay{display:none}.v-avatar--variant-elevated,.v-avatar--variant-flat{background:var(--v-theme-surface);color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity))}.v-avatar--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-outlined{border:thin solid currentColor}.v-avatar--variant-text .v-avatar__overlay{background:currentColor}.v-avatar--variant-tonal .v-avatar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-avatar .v-avatar__underlay{position:absolute}.v-avatar--rounded{border-radius:4px}.v-avatar--start{margin-inline-end:8px}.v-avatar--end{margin-inline-start:8px}.v-avatar .v-img{height:100%;width:100%}.codexListItem[data-v-63b84802]>.v-list-item__prepend>.v-list-item__spacer{display:none}.confirmFooter[data-v-24df1550]{display:flex;justify-content:space-between;margin:1em auto auto}.v-dialog{align-items:center;justify-content:center;margin:auto}.v-dialog>.v-overlay__content{max-height:calc(100% - 48px);width:calc(100% - 48px);max-width:calc(100% - 48px);margin:24px}.v-dialog>.v-overlay__content,.v-dialog>.v-overlay__content>form{display:flex;flex-direction:column;min-height:0}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{--v-scrollbar-offset: 0px;border-radius:4px;overflow-y:auto;flex:1 1 100%}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>form>.v-card{display:flex;flex-direction:column}.v-dialog>.v-overlay__content>.v-card>.v-card-item,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item{padding:16px 24px}.v-dialog>.v-overlay__content>.v-card>.v-card-item+.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item+.v-card-text{padding-top:0}.v-dialog>.v-overlay__content>.v-card>.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 24px}.v-dialog>.v-overlay__content>.v-card>.v-card-actions,.v-dialog>.v-overlay__content>form>.v-card>.v-card-actions{justify-content:flex-end}.v-dialog--fullscreen{--v-scrollbar-offset: 0px}.v-dialog--fullscreen>.v-overlay__content{border-radius:0;margin:0;padding:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow-y:auto;top:0;left:0}.v-dialog--fullscreen>.v-overlay__content>.v-card,.v-dialog--fullscreen>.v-overlay__content>.v-sheet,.v-dialog--fullscreen>.v-overlay__content>form>.v-card,.v-dialog--fullscreen>.v-overlay__content>form>.v-sheet{min-height:100%;min-width:100%;border-radius:0}.v-dialog--scrollable>.v-overlay__content>form,.v-dialog--scrollable>.v-overlay__content>form>.v-card{max-height:100%;max-width:100%}.v-dialog--scrollable>.v-overlay__content,.v-dialog--scrollable>.v-overlay__content>.v-card,.v-dialog--scrollable>.v-overlay__content>form,.v-dialog--scrollable>.v-overlay__content>form>.v-card{display:flex;flex:1 1 100%;flex-direction:column}.v-dialog--scrollable>.v-overlay__content>.v-card>.v-card-text,.v-dialog--scrollable>.v-overlay__content>form>.v-card>.v-card-text{backface-visibility:hidden;overflow-y:auto}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{--v-overlay-opacity: .32;border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}
@@ -0,0 +1 @@
1
+ .v-img{--v-theme-overlay-multiplier: 3;z-index:0}.v-img.v-img--absolute{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-img--booting .v-responsive__sizer{transition:none}.v-img--rounded{border-radius:4px}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{z-index:-1}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{object-fit:contain}.v-img__img--cover{object-fit:cover}.v-img__gradient{background-repeat:no-repeat}.v-responsive{display:flex;flex:1 0 auto;max-height:100%;max-width:100%;overflow:hidden;position:relative}.v-responsive--inline{display:inline-flex;flex:0 0 auto}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-list-item{align-items:center;display:grid;flex:none;grid-template-areas:"prepend content append";grid-template-columns:max-content 1fr auto;outline:none;max-width:100%;padding:4px 16px;position:relative;text-decoration:none}.v-list-item{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-list-item--border{border-width:thin;box-shadow:none}.v-list-item:hover>.v-list-item__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item:focus-visible>.v-list-item__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-list-item:focus>.v-list-item__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-list-item--active>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]>.v-list-item__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item--active:hover>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:hover>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-list-item--active:focus-visible>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-list-item--active:focus>.v-list-item__overlay,.v-list-item[aria-haspopup=menu][aria-expanded=true]:focus>.v-list-item__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-list-item{border-radius:0}.v-list-item--variant-plain,.v-list-item--variant-outlined,.v-list-item--variant-text,.v-list-item--variant-tonal{background:transparent;color:inherit}.v-list-item--variant-plain{opacity:.62}.v-list-item--variant-plain:focus,.v-list-item--variant-plain:hover{opacity:1}.v-list-item--variant-plain .v-list-item__overlay{display:none}.v-list-item--variant-elevated,.v-list-item--variant-flat{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-list-item--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-list-item--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-list-item--variant-outlined{border:thin solid currentColor}.v-list-item--variant-text .v-list-item__overlay{background:currentColor}.v-list-item--variant-tonal .v-list-item__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-list-item .v-list-item__underlay{position:absolute}@supports selector(:focus-visible){.v-list-item:after{pointer-events:none;border:2px solid currentColor;border-radius:4px;opacity:0;transition:opacity .2s ease-in-out}.v-list-item:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-list-item:focus-visible:after{opacity:calc(.15 * var(--v-theme-overlay-multiplier))}}.v-list-item__prepend>.v-badge .v-icon,.v-list-item__prepend>.v-icon,.v-list-item__append>.v-badge .v-icon,.v-list-item__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-list-item--active .v-list-item__prepend>.v-badge .v-icon,.v-list-item--active .v-list-item__prepend>.v-icon,.v-list-item--active .v-list-item__append>.v-badge .v-icon,.v-list-item--active .v-list-item__append>.v-icon{opacity:1}.v-list-item--active:not(.v-list-item--link) .v-list-item__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-list-item--rounded{border-radius:4px}.v-list-item--disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.6}.v-list-item--link{cursor:pointer}.v-navigation-drawer--rail:not(.v-navigation-drawer--expand-on-hover) .v-list-item .v-avatar,.v-navigation-drawer--rail.v-navigation-drawer--expand-on-hover:not(.v-navigation-drawer--is-hovering) .v-list-item .v-avatar{--v-avatar-height: 24px}.v-list-item__prepend{align-items:center;align-self:center;display:flex;grid-area:prepend}.v-list-item__prepend>.v-badge~.v-list-item__spacer,.v-list-item__prepend>.v-icon~.v-list-item__spacer,.v-list-item__prepend>.v-tooltip~.v-list-item__spacer{width:32px}.v-list-item__prepend>.v-avatar~.v-list-item__spacer,.v-list-item__prepend>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:16px}.v-list-item--slim .v-list-item__prepend>.v-badge~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-icon~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-tooltip~.v-list-item__spacer{width:20px}.v-list-item--slim .v-list-item__prepend>.v-avatar~.v-list-item__spacer,.v-list-item--slim .v-list-item__prepend>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:4px}.v-list-item--slim .v-list-item__prepend>.v-list-item-action~.v-list-item__spacer{width:4px}.v-list-item--three-line .v-list-item__prepend{align-self:start}.v-list-item__append{align-self:center;display:flex;align-items:center;grid-area:append}.v-list-item__append .v-list-item__spacer{order:-1;transition:.15s width cubic-bezier(.4,0,.2,1)}.v-list-item__append>.v-badge~.v-list-item__spacer,.v-list-item__append>.v-icon~.v-list-item__spacer,.v-list-item__append>.v-tooltip~.v-list-item__spacer{width:32px}.v-list-item__append>.v-avatar~.v-list-item__spacer,.v-list-item__append>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:16px}.v-list-item__append>.v-list-item-action~.v-list-item__spacer{width:16px}.v-list-item--slim .v-list-item__append>.v-badge~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-icon~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-tooltip~.v-list-item__spacer{width:20px}.v-list-item--slim .v-list-item__append>.v-avatar~.v-list-item__spacer,.v-list-item--slim .v-list-item__append>.v-badge:is(:has(.v-avatar))~.v-list-item__spacer{width:4px}.v-list-item--slim .v-list-item__append>.v-list-item-action~.v-list-item__spacer{width:4px}.v-list-item--three-line .v-list-item__append{align-self:start}.v-list-item__content{align-self:center;grid-area:content;overflow:hidden}.v-list-item-action{align-self:center;display:flex;align-items:center;flex:none;transition:inherit;transition-property:height,width}.v-list-item-action--start{margin-inline-end:8px;margin-inline-start:-8px}.v-list-item-action--end{margin-inline-start:8px;margin-inline-end:-8px}.v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-media--start{margin-inline-end:16px}.v-list-item-media--end{margin-inline-start:16px}.v-list-item--two-line .v-list-item-media{margin-top:-4px;margin-bottom:-4px}.v-list-item--three-line .v-list-item-media{margin-top:0;margin-bottom:0}.v-list-item-subtitle{-webkit-box-orient:vertical;display:-webkit-box;opacity:var(--v-list-item-subtitle-opacity, var(--v-medium-emphasis-opacity));overflow:hidden;padding:0;text-overflow:ellipsis;overflow-wrap:break-word;word-break:initial}.v-list-item--one-line .v-list-item-subtitle{-webkit-line-clamp:1}.v-list-item--two-line .v-list-item-subtitle{-webkit-line-clamp:2}.v-list-item--three-line .v-list-item-subtitle{-webkit-line-clamp:3}.v-list-item-subtitle{font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem;text-transform:none}.v-list-item--nav .v-list-item-subtitle{font-size:.75rem;font-weight:400;letter-spacing:.0178571429em;line-height:1rem}.v-list-item-title{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:normal;overflow:hidden;padding:0;white-space:nowrap;text-overflow:ellipsis;word-break:normal;word-wrap:break-word}.v-list-item-title{font-size:1rem;font-weight:400;letter-spacing:.009375em;line-height:1.5;text-transform:none}.v-list-item--nav .v-list-item-title{font-size:.8125rem;font-weight:500;letter-spacing:normal;line-height:1rem}.v-list-item--density-default{min-height:40px}.v-list-item--density-default.v-list-item--one-line{min-height:48px;padding-top:4px;padding-bottom:4px}.v-list-item--density-default.v-list-item--two-line{min-height:64px;padding-top:12px;padding-bottom:12px}.v-list-item--density-default.v-list-item--three-line{min-height:88px;padding-top:16px;padding-bottom:16px}.v-list-item--density-default.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-default.v-list-item--three-line .v-list-item__append{padding-top:8px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-default:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--density-comfortable{min-height:36px}.v-list-item--density-comfortable.v-list-item--one-line{min-height:44px}.v-list-item--density-comfortable.v-list-item--two-line{min-height:60px;padding-top:8px;padding-bottom:8px}.v-list-item--density-comfortable.v-list-item--three-line{min-height:84px;padding-top:12px;padding-bottom:12px}.v-list-item--density-comfortable.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-comfortable.v-list-item--three-line .v-list-item__append{padding-top:6px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--density-compact{min-height:32px}.v-list-item--density-compact.v-list-item--one-line{min-height:40px}.v-list-item--density-compact.v-list-item--two-line{min-height:56px;padding-top:4px;padding-bottom:4px}.v-list-item--density-compact.v-list-item--three-line{min-height:80px;padding-top:8px;padding-bottom:8px}.v-list-item--density-compact.v-list-item--three-line .v-list-item__prepend,.v-list-item--density-compact.v-list-item--three-line .v-list-item__append{padding-top:4px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--one-line{padding-inline:16px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--two-line{padding-inline:16px}.v-list-item--density-compact:not(.v-list-item--nav).v-list-item--three-line{padding-inline:16px}.v-list-item--nav{padding-inline:8px}.v-list .v-list-item--nav:not(:only-child){margin-bottom:4px}.v-list-item__underlay{position:absolute}.v-list-item__overlay{background-color:currentColor;border-radius:inherit;bottom:0;left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .2s ease-in-out}.v-list-item--active.v-list-item--variant-elevated .v-list-item__overlay{--v-theme-overlay-multiplier: 0}.v-list{--indent-padding: 0px}.v-list--nav{--indent-padding: -8px}.v-list-group{--list-indent-size: 16px;--parent-padding: var(--indent-padding);--prepend-width: 40px}.v-list--slim .v-list-group{--prepend-width: 28px}.v-list-group--fluid{--list-indent-size: 0px}.v-list-group--prepend{--parent-padding: calc(var(--indent-padding) + var(--prepend-width))}.v-list-group--fluid.v-list-group--prepend{--parent-padding: var(--indent-padding)}.v-list-group__items{--indent-padding: calc(var(--parent-padding) + var(--list-indent-size))}.v-list-group__items .v-list-item{padding-inline-start:calc(16px + var(--indent-padding))!important}.v-list-group__header:not(.v-treeview-item--activatable-group-activator).v-list-item--active:not(:focus-visible) .v-list-item__overlay{opacity:0}.v-list-group__header:not(.v-treeview-item--activatable-group-activator).v-list-item--active:hover .v-list-item__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-avatar{flex:none;align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:width,height;vertical-align:middle}.v-avatar.v-avatar--size-x-small{--v-avatar-height: 24px}.v-avatar.v-avatar--size-small{--v-avatar-height: 32px}.v-avatar.v-avatar--size-default{--v-avatar-height: 40px}.v-avatar.v-avatar--size-large{--v-avatar-height: 48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height: 56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height) + 0px);width:calc(var(--v-avatar-height) + 0px)}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) + -4px);width:calc(var(--v-avatar-height) + -4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) + -8px);width:calc(var(--v-avatar-height) + -8px)}.v-avatar{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-avatar--border{border-width:thin;box-shadow:none}.v-avatar{border-radius:50%}.v-avatar--variant-plain,.v-avatar--variant-outlined,.v-avatar--variant-text,.v-avatar--variant-tonal{background:transparent;color:inherit}.v-avatar--variant-plain{opacity:.62}.v-avatar--variant-plain:focus,.v-avatar--variant-plain:hover{opacity:1}.v-avatar--variant-plain .v-avatar__overlay{display:none}.v-avatar--variant-elevated,.v-avatar--variant-flat{background:var(--v-theme-surface);color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity))}.v-avatar--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-outlined{border:thin solid currentColor}.v-avatar--variant-text .v-avatar__overlay{background:currentColor}.v-avatar--variant-tonal .v-avatar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-avatar .v-avatar__underlay{position:absolute}.v-avatar--rounded{border-radius:4px}.v-avatar--start{margin-inline-end:8px}.v-avatar--end{margin-inline-start:8px}.v-avatar .v-img{height:100%;width:100%}.codexListItem[data-v-63b84802]>.v-list-item__prepend>.v-list-item__spacer{display:none}.confirmFooter[data-v-24df1550]{display:flex;justify-content:space-between;margin:1em auto auto}.v-dialog{align-items:center;justify-content:center;margin:auto}.v-dialog>.v-overlay__content{max-height:calc(100% - 48px);width:calc(100% - 48px);max-width:calc(100% - 48px);margin:24px}.v-dialog>.v-overlay__content,.v-dialog>.v-overlay__content>form{display:flex;flex-direction:column;min-height:0}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{--v-scrollbar-offset: 0px;border-radius:4px;overflow-y:auto;flex:1 1 100%}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>form>.v-card{display:flex;flex-direction:column}.v-dialog>.v-overlay__content>.v-card>.v-card-item,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item{padding:16px 24px}.v-dialog>.v-overlay__content>.v-card>.v-card-item+.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item+.v-card-text{padding-top:0}.v-dialog>.v-overlay__content>.v-card>.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 24px}.v-dialog>.v-overlay__content>.v-card>.v-card-actions,.v-dialog>.v-overlay__content>form>.v-card>.v-card-actions{justify-content:flex-end}.v-dialog--fullscreen{--v-scrollbar-offset: 0px}.v-dialog--fullscreen>.v-overlay__content{border-radius:0;margin:0;padding:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow-y:auto;top:0;left:0}.v-dialog--fullscreen>.v-overlay__content>.v-card,.v-dialog--fullscreen>.v-overlay__content>.v-sheet,.v-dialog--fullscreen>.v-overlay__content>form>.v-card,.v-dialog--fullscreen>.v-overlay__content>form>.v-sheet{min-height:100%;min-width:100%;border-radius:0}.v-dialog--scrollable>.v-overlay__content>form,.v-dialog--scrollable>.v-overlay__content>form>.v-card{max-height:100%;max-width:100%}.v-dialog--scrollable>.v-overlay__content,.v-dialog--scrollable>.v-overlay__content>.v-card,.v-dialog--scrollable>.v-overlay__content>form,.v-dialog--scrollable>.v-overlay__content>form>.v-card{display:flex;flex:1 1 100%;flex-direction:column}.v-dialog--scrollable>.v-overlay__content>.v-card>.v-card-text,.v-dialog--scrollable>.v-overlay__content>form>.v-card>.v-card-text{backface-visibility:hidden;overflow-y:auto}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{--v-overlay-opacity: .32;border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}