codex 1.8.14__py3-none-any.whl → 1.8.16__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 (466) hide show
  1. codex/__init__.py +1 -1
  2. codex/librarian/scribe/importer/link/delete.py +2 -2
  3. codex/librarian/scribe/importer/tasks.py +3 -3
  4. codex/librarian/telemeter/scheduled_time.py +2 -1
  5. codex/serializers/browser/choices.py +1 -1
  6. codex/startup/__init__.py +2 -2
  7. codex/startup/logger_init.py +2 -2
  8. codex/static_root/assets/{VCheckbox-DSiToISz.36b2c3106f70.js → VCheckbox-BY6G_rgf.269e45107a7a.js} +1 -1
  9. codex/static_root/assets/VCheckbox-BY6G_rgf.269e45107a7a.js.br +0 -0
  10. codex/static_root/assets/VCheckbox-BY6G_rgf.269e45107a7a.js.gz +0 -0
  11. codex/static_root/assets/{VCheckbox-DSiToISz.js → VCheckbox-BY6G_rgf.js} +1 -1
  12. codex/static_root/assets/VCheckbox-BY6G_rgf.js.br +0 -0
  13. codex/static_root/assets/VCheckbox-BY6G_rgf.js.gz +0 -0
  14. codex/static_root/assets/{VCheckboxBtn-CYmOhPsT.064f0ca6833f.js → VCheckboxBtn-zhUZJChm.9761785b500b.js} +1 -1
  15. codex/static_root/assets/VCheckboxBtn-zhUZJChm.9761785b500b.js.br +0 -0
  16. codex/static_root/assets/VCheckboxBtn-zhUZJChm.9761785b500b.js.gz +0 -0
  17. codex/static_root/assets/{VCheckboxBtn-CYmOhPsT.js → VCheckboxBtn-zhUZJChm.js} +1 -1
  18. codex/static_root/assets/VCheckboxBtn-zhUZJChm.js.br +0 -0
  19. codex/static_root/assets/VCheckboxBtn-zhUZJChm.js.gz +0 -0
  20. codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js +1 -0
  21. codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js.br +0 -0
  22. codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js.gz +0 -0
  23. codex/static_root/assets/VCombobox-O2BHnDUr.js +1 -0
  24. codex/static_root/assets/VCombobox-O2BHnDUr.js.br +0 -0
  25. codex/static_root/assets/VCombobox-O2BHnDUr.js.gz +0 -0
  26. codex/static_root/assets/{VDialog-cfA1435M.css → VDialog-BN4XvYQH.b7408d9d3262.css} +1 -1
  27. codex/static_root/assets/VDialog-BN4XvYQH.b7408d9d3262.css.br +0 -0
  28. codex/static_root/assets/VDialog-BN4XvYQH.b7408d9d3262.css.gz +0 -0
  29. codex/static_root/assets/{VDialog-cfA1435M.9d74582347d0.css → VDialog-BN4XvYQH.css} +1 -1
  30. codex/static_root/assets/VDialog-BN4XvYQH.css.br +0 -0
  31. codex/static_root/assets/VDialog-BN4XvYQH.css.gz +0 -0
  32. codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js +1 -0
  33. codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js.br +0 -0
  34. codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js.gz +0 -0
  35. codex/static_root/assets/VDialog-mZQ1Va-c.js +1 -0
  36. codex/static_root/assets/VDialog-mZQ1Va-c.js.br +0 -0
  37. codex/static_root/assets/VDialog-mZQ1Va-c.js.gz +0 -0
  38. codex/static_root/assets/{VDivider-DU47sRrT.3d2e17799e5c.css → VDivider-CCqJA_fj.b56fac1426ae.css} +1 -1
  39. codex/static_root/assets/VDivider-CCqJA_fj.b56fac1426ae.css.br +0 -0
  40. codex/static_root/assets/VDivider-CCqJA_fj.b56fac1426ae.css.gz +0 -0
  41. codex/static_root/assets/{VDivider-DU47sRrT.css → VDivider-CCqJA_fj.css} +1 -1
  42. codex/static_root/assets/VDivider-CCqJA_fj.css.br +0 -0
  43. codex/static_root/assets/VDivider-CCqJA_fj.css.gz +0 -0
  44. codex/static_root/assets/{VDivider-Dtis_q2S.9e74f9b00677.js → VDivider-CHTeIL4W.13805a003963.js} +1 -1
  45. codex/static_root/assets/VDivider-CHTeIL4W.13805a003963.js.br +0 -0
  46. codex/static_root/assets/VDivider-CHTeIL4W.13805a003963.js.gz +0 -0
  47. codex/static_root/assets/{VDivider-Dtis_q2S.js → VDivider-CHTeIL4W.js} +1 -1
  48. codex/static_root/assets/VDivider-CHTeIL4W.js.br +0 -0
  49. codex/static_root/assets/VDivider-CHTeIL4W.js.gz +0 -0
  50. codex/static_root/assets/{VExpansionPanels-DFJglYob.df0a5305e017.js → VExpansionPanels-B8bQXRWn.de33285def27.js} +1 -1
  51. codex/static_root/assets/VExpansionPanels-B8bQXRWn.de33285def27.js.br +0 -0
  52. codex/static_root/assets/VExpansionPanels-B8bQXRWn.de33285def27.js.gz +0 -0
  53. codex/static_root/assets/{VExpansionPanels-DFJglYob.js → VExpansionPanels-B8bQXRWn.js} +1 -1
  54. codex/static_root/assets/VExpansionPanels-B8bQXRWn.js.br +0 -0
  55. codex/static_root/assets/VExpansionPanels-B8bQXRWn.js.gz +0 -0
  56. codex/static_root/assets/{VForm-BNXhV_uk.f87afb6d84da.js → VForm-Dt0Uesri.5f3eb2e10d58.js} +1 -1
  57. codex/static_root/assets/VForm-Dt0Uesri.5f3eb2e10d58.js.br +0 -0
  58. codex/static_root/assets/VForm-Dt0Uesri.5f3eb2e10d58.js.gz +0 -0
  59. codex/static_root/assets/{VForm-BNXhV_uk.js → VForm-Dt0Uesri.js} +1 -1
  60. codex/static_root/assets/VForm-Dt0Uesri.js.br +0 -0
  61. codex/static_root/assets/VForm-Dt0Uesri.js.gz +0 -0
  62. codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js +1 -0
  63. codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js.br +0 -0
  64. codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js.gz +0 -0
  65. codex/static_root/assets/VRadioGroup-CU9nYUHk.js +1 -0
  66. codex/static_root/assets/VRadioGroup-CU9nYUHk.js.br +0 -0
  67. codex/static_root/assets/VRadioGroup-CU9nYUHk.js.gz +0 -0
  68. codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js +1 -0
  69. codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js.br +0 -0
  70. codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js.gz +0 -0
  71. codex/static_root/assets/VSelect-DpnHasju.js +1 -0
  72. codex/static_root/assets/VSelect-DpnHasju.js.br +0 -0
  73. codex/static_root/assets/VSelect-DpnHasju.js.gz +0 -0
  74. codex/static_root/assets/{VSelectionControl-xYnmeS9J.279721e1b13d.js → VSelectionControl-DFaQ_klW.4c77eed94aca.js} +1 -1
  75. codex/static_root/assets/VSelectionControl-DFaQ_klW.4c77eed94aca.js.br +0 -0
  76. codex/static_root/assets/VSelectionControl-DFaQ_klW.4c77eed94aca.js.gz +0 -0
  77. codex/static_root/assets/{VSelectionControl-xYnmeS9J.js → VSelectionControl-DFaQ_klW.js} +1 -1
  78. codex/static_root/assets/VSelectionControl-DFaQ_klW.js.br +0 -0
  79. codex/static_root/assets/VSelectionControl-DFaQ_klW.js.gz +0 -0
  80. codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js +1 -0
  81. codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js.br +0 -0
  82. codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js.gz +0 -0
  83. codex/static_root/assets/VTable-MenML-QS.js +1 -0
  84. codex/static_root/assets/VTable-MenML-QS.js.br +0 -0
  85. codex/static_root/assets/VTable-MenML-QS.js.gz +0 -0
  86. codex/static_root/assets/{VWindowItem-0tN6eYpd.773c981aa12a.js → VWindowItem-62YwEvjG.b8bdaea824b5.js} +1 -1
  87. codex/static_root/assets/VWindowItem-62YwEvjG.b8bdaea824b5.js.br +0 -0
  88. codex/static_root/assets/VWindowItem-62YwEvjG.b8bdaea824b5.js.gz +0 -0
  89. codex/static_root/assets/{VWindowItem-0tN6eYpd.js → VWindowItem-62YwEvjG.js} +1 -1
  90. codex/static_root/assets/VWindowItem-62YwEvjG.js.br +0 -0
  91. codex/static_root/assets/VWindowItem-62YwEvjG.js.gz +0 -0
  92. codex/static_root/assets/{admin-C6VbbEgi.1b7afd86e270.js → admin-BStn9kk0.b50ab54d4a08.js} +1 -1
  93. codex/static_root/assets/admin-BStn9kk0.b50ab54d4a08.js.br +0 -0
  94. codex/static_root/assets/admin-BStn9kk0.b50ab54d4a08.js.gz +0 -0
  95. codex/static_root/assets/{admin-C6VbbEgi.js → admin-BStn9kk0.js} +1 -1
  96. codex/static_root/assets/admin-BStn9kk0.js.br +0 -0
  97. codex/static_root/assets/admin-BStn9kk0.js.gz +0 -0
  98. codex/static_root/assets/{admin-menu-CJIeXccy.a8f894508762.js → admin-menu-8MqbD6SS.de80d9c3a174.js} +1 -1
  99. codex/static_root/assets/admin-menu-8MqbD6SS.de80d9c3a174.js.br +0 -0
  100. codex/static_root/assets/admin-menu-8MqbD6SS.de80d9c3a174.js.gz +0 -0
  101. codex/static_root/assets/{admin-menu-CJIeXccy.js → admin-menu-8MqbD6SS.js} +1 -1
  102. codex/static_root/assets/admin-menu-8MqbD6SS.js.br +0 -0
  103. codex/static_root/assets/admin-menu-8MqbD6SS.js.gz +0 -0
  104. codex/static_root/assets/{admin-BSeSK58M.5e0ec404b68a.js → admin-ri1JM4_Z.fc516b4b96f2.js} +1 -1
  105. codex/static_root/assets/admin-ri1JM4_Z.fc516b4b96f2.js.br +0 -0
  106. codex/static_root/assets/admin-ri1JM4_Z.fc516b4b96f2.js.gz +0 -0
  107. codex/static_root/assets/{admin-BSeSK58M.js → admin-ri1JM4_Z.js} +1 -1
  108. codex/static_root/assets/admin-ri1JM4_Z.js.br +0 -0
  109. codex/static_root/assets/admin-ri1JM4_Z.js.gz +0 -0
  110. codex/static_root/assets/{admin-settings-button-progress-vOeMypwd.5db8039f1f8b.js → admin-settings-button-progress-HmQvm62f.6d2798eb3429.js} +1 -1
  111. codex/static_root/assets/admin-settings-button-progress-HmQvm62f.6d2798eb3429.js.br +0 -0
  112. codex/static_root/assets/admin-settings-button-progress-HmQvm62f.6d2798eb3429.js.gz +0 -0
  113. codex/static_root/assets/{admin-settings-button-progress-vOeMypwd.js → admin-settings-button-progress-HmQvm62f.js} +1 -1
  114. codex/static_root/assets/admin-settings-button-progress-HmQvm62f.js.br +0 -0
  115. codex/static_root/assets/admin-settings-button-progress-HmQvm62f.js.gz +0 -0
  116. codex/static_root/assets/{browser-CKD3rgcs.31efed76525d.js → browser-BQva2GCO.2748e733040b.js} +1 -1
  117. codex/static_root/assets/browser-BQva2GCO.2748e733040b.js.br +0 -0
  118. codex/static_root/assets/browser-BQva2GCO.2748e733040b.js.gz +0 -0
  119. codex/static_root/assets/{browser-CKD3rgcs.js → browser-BQva2GCO.js} +1 -1
  120. codex/static_root/assets/browser-BQva2GCO.js.br +0 -0
  121. codex/static_root/assets/browser-BQva2GCO.js.gz +0 -0
  122. codex/static_root/assets/{change-password-dialog-DoBLv9WU.2f5b656e6981.js → change-password-dialog-CEdhZwC3.c41faf4b7311.js} +1 -1
  123. codex/static_root/assets/change-password-dialog-CEdhZwC3.c41faf4b7311.js.br +0 -0
  124. codex/static_root/assets/change-password-dialog-CEdhZwC3.c41faf4b7311.js.gz +0 -0
  125. codex/static_root/assets/{change-password-dialog-DoBLv9WU.js → change-password-dialog-CEdhZwC3.js} +1 -1
  126. codex/static_root/assets/change-password-dialog-CEdhZwC3.js.br +0 -0
  127. codex/static_root/assets/change-password-dialog-CEdhZwC3.js.gz +0 -0
  128. codex/static_root/assets/{confirm-dialog-WKjj039l.7945cc0aca6f.js → confirm-dialog-X8W3euvh.d9b87f1eeefe.js} +1 -1
  129. codex/static_root/assets/confirm-dialog-X8W3euvh.d9b87f1eeefe.js.br +0 -0
  130. codex/static_root/assets/confirm-dialog-X8W3euvh.d9b87f1eeefe.js.gz +0 -0
  131. codex/static_root/assets/{confirm-dialog-WKjj039l.js → confirm-dialog-X8W3euvh.js} +1 -1
  132. codex/static_root/assets/confirm-dialog-X8W3euvh.js.br +0 -0
  133. codex/static_root/assets/confirm-dialog-X8W3euvh.js.gz +0 -0
  134. codex/static_root/assets/{datetime-column-cHNNkd7r.0fa4cabd2ff5.js → datetime-column-CzIyyJDK.f9be11efa2e2.js} +1 -1
  135. codex/static_root/assets/datetime-column-CzIyyJDK.f9be11efa2e2.js.br +0 -0
  136. codex/static_root/assets/datetime-column-CzIyyJDK.f9be11efa2e2.js.gz +0 -0
  137. codex/static_root/assets/{datetime-column-cHNNkd7r.js → datetime-column-CzIyyJDK.js} +1 -1
  138. codex/static_root/assets/datetime-column-CzIyyJDK.js.br +0 -0
  139. codex/static_root/assets/datetime-column-CzIyyJDK.js.gz +0 -0
  140. codex/static_root/assets/{filter-Bu2xCEP4.d632e004db3e.js → filter-BfEbIpVl.ec48ef2a75bc.js} +1 -1
  141. codex/static_root/assets/filter-BfEbIpVl.ec48ef2a75bc.js.br +0 -0
  142. codex/static_root/assets/filter-BfEbIpVl.ec48ef2a75bc.js.gz +0 -0
  143. codex/static_root/assets/{filter-Bu2xCEP4.js → filter-BfEbIpVl.js} +1 -1
  144. codex/static_root/assets/filter-BfEbIpVl.js.br +0 -0
  145. codex/static_root/assets/filter-BfEbIpVl.js.gz +0 -0
  146. codex/static_root/assets/flag-tab-BtZ098bQ.2c417cda39c8.js +1 -0
  147. codex/static_root/assets/flag-tab-BtZ098bQ.2c417cda39c8.js.br +0 -0
  148. codex/static_root/assets/flag-tab-BtZ098bQ.2c417cda39c8.js.gz +0 -0
  149. codex/static_root/assets/flag-tab-BtZ098bQ.js +1 -0
  150. codex/static_root/assets/flag-tab-BtZ098bQ.js.br +0 -0
  151. codex/static_root/assets/flag-tab-BtZ098bQ.js.gz +0 -0
  152. codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js +1 -0
  153. codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js.br +0 -0
  154. codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js.gz +0 -0
  155. codex/static_root/assets/forwardRefs-CnxuGwpi.js +1 -0
  156. codex/static_root/assets/forwardRefs-CnxuGwpi.js.br +0 -0
  157. codex/static_root/assets/forwardRefs-CnxuGwpi.js.gz +0 -0
  158. codex/static_root/assets/{group-tab-CqHKA3Rv.bd829d9ff902.js → group-tab-FI6afuX5.a569809fb228.js} +1 -1
  159. codex/static_root/assets/group-tab-FI6afuX5.a569809fb228.js.br +0 -0
  160. codex/static_root/assets/group-tab-FI6afuX5.a569809fb228.js.gz +0 -0
  161. codex/static_root/assets/{group-tab-CqHKA3Rv.js → group-tab-FI6afuX5.js} +1 -1
  162. codex/static_root/assets/group-tab-FI6afuX5.js.br +0 -0
  163. codex/static_root/assets/group-tab-FI6afuX5.js.gz +0 -0
  164. codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js +1 -0
  165. codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js.br +0 -0
  166. codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js.gz +0 -0
  167. codex/static_root/assets/http-error-BmuMBbvn.js +1 -0
  168. codex/static_root/assets/http-error-BmuMBbvn.js.br +0 -0
  169. codex/static_root/assets/http-error-BmuMBbvn.js.gz +0 -0
  170. codex/static_root/assets/index-DXqyJRWg.58b55c49a1ba.js +1 -0
  171. codex/static_root/assets/index-DXqyJRWg.58b55c49a1ba.js.br +0 -0
  172. codex/static_root/assets/index-DXqyJRWg.58b55c49a1ba.js.gz +0 -0
  173. codex/static_root/assets/index-DXqyJRWg.js +1 -0
  174. codex/static_root/assets/index-DXqyJRWg.js.br +0 -0
  175. codex/static_root/assets/index-DXqyJRWg.js.gz +0 -0
  176. codex/static_root/assets/{library-tab-DHtd9G39.a6068c595e8f.js → library-tab-DlGRxHD-.e2e3049de8fe.js} +1 -1
  177. codex/static_root/assets/library-tab-DlGRxHD-.e2e3049de8fe.js.br +0 -0
  178. codex/static_root/assets/library-tab-DlGRxHD-.e2e3049de8fe.js.gz +0 -0
  179. codex/static_root/assets/{library-tab-DHtd9G39.js → library-tab-DlGRxHD-.js} +1 -1
  180. codex/static_root/assets/library-tab-DlGRxHD-.js.br +0 -0
  181. codex/static_root/assets/library-tab-DlGRxHD-.js.gz +0 -0
  182. codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js +34 -0
  183. codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js.br +0 -0
  184. codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js.gz +0 -0
  185. codex/static_root/assets/main-CWTxsB_K.js +34 -0
  186. codex/static_root/assets/main-CWTxsB_K.js.br +0 -0
  187. codex/static_root/assets/main-CWTxsB_K.js.gz +0 -0
  188. codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js +1 -0
  189. codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js.br +0 -0
  190. codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js.gz +0 -0
  191. codex/static_root/assets/pager-full-pdf-BPlguGsn.js +1 -0
  192. codex/static_root/assets/pager-full-pdf-BPlguGsn.js.br +0 -0
  193. codex/static_root/assets/pager-full-pdf-BPlguGsn.js.gz +0 -0
  194. codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js +1 -0
  195. codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js.br +0 -0
  196. codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js.gz +0 -0
  197. codex/static_root/assets/pagination-toolbar-BBoV7kGz.js +1 -0
  198. codex/static_root/assets/pagination-toolbar-BBoV7kGz.js.br +0 -0
  199. codex/static_root/assets/pagination-toolbar-BBoV7kGz.js.gz +0 -0
  200. codex/static_root/assets/{pdf-doc-CAzVDc80.440339054422.js → pdf-doc-DY8a-Suh.4ef483220f83.js} +1 -1
  201. codex/static_root/assets/pdf-doc-DY8a-Suh.4ef483220f83.js.br +0 -0
  202. codex/static_root/assets/pdf-doc-DY8a-Suh.4ef483220f83.js.gz +0 -0
  203. codex/static_root/assets/{pdf-doc-CAzVDc80.js → pdf-doc-DY8a-Suh.js} +1 -1
  204. codex/static_root/assets/pdf-doc-DY8a-Suh.js.br +0 -0
  205. codex/static_root/assets/pdf-doc-DY8a-Suh.js.gz +0 -0
  206. codex/static_root/assets/{reader-Bi_CT2rk.2048477e3d9a.js → reader-Dqa95yj4.a16f078ebed6.js} +2 -2
  207. codex/static_root/assets/reader-Dqa95yj4.a16f078ebed6.js.br +0 -0
  208. codex/static_root/assets/reader-Dqa95yj4.a16f078ebed6.js.gz +0 -0
  209. codex/static_root/assets/{reader-Bi_CT2rk.js → reader-Dqa95yj4.js} +2 -2
  210. codex/static_root/assets/reader-Dqa95yj4.js.br +0 -0
  211. codex/static_root/assets/reader-Dqa95yj4.js.gz +0 -0
  212. codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js +1 -0
  213. codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js.br +0 -0
  214. codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js.gz +0 -0
  215. codex/static_root/assets/relation-chips-DnkUXW6y.js +1 -0
  216. codex/static_root/assets/relation-chips-DnkUXW6y.js.br +0 -0
  217. codex/static_root/assets/relation-chips-DnkUXW6y.js.gz +0 -0
  218. codex/static_root/assets/{settings-drawer-CjqFmP5f.a1c27430b554.js → settings-drawer-CrJwaDTj.0ea90e35f48a.js} +2 -2
  219. codex/static_root/assets/settings-drawer-CrJwaDTj.0ea90e35f48a.js.br +0 -0
  220. codex/static_root/assets/settings-drawer-CrJwaDTj.0ea90e35f48a.js.gz +0 -0
  221. codex/static_root/assets/{settings-drawer-CjqFmP5f.js → settings-drawer-CrJwaDTj.js} +2 -2
  222. codex/static_root/assets/settings-drawer-CrJwaDTj.js.br +0 -0
  223. codex/static_root/assets/settings-drawer-CrJwaDTj.js.gz +0 -0
  224. codex/static_root/assets/{ssrBoot-Bn2PfqMS.a3d5b2b28349.js → ssrBoot-yM9n-WhK.33a34fb51966.js} +1 -1
  225. codex/static_root/assets/ssrBoot-yM9n-WhK.33a34fb51966.js.br +0 -0
  226. codex/static_root/assets/ssrBoot-yM9n-WhK.33a34fb51966.js.gz +0 -0
  227. codex/static_root/assets/{ssrBoot-Bn2PfqMS.js → ssrBoot-yM9n-WhK.js} +1 -1
  228. codex/static_root/assets/ssrBoot-yM9n-WhK.js.br +0 -0
  229. codex/static_root/assets/ssrBoot-yM9n-WhK.js.gz +0 -0
  230. codex/static_root/assets/{stats-tab-CQYF0r5W.3eeaa933ecfd.js → stats-tab-R3_2S5KJ.1b8dcb544e56.js} +1 -1
  231. codex/static_root/assets/stats-tab-R3_2S5KJ.1b8dcb544e56.js.br +0 -0
  232. codex/static_root/assets/stats-tab-R3_2S5KJ.1b8dcb544e56.js.gz +0 -0
  233. codex/static_root/assets/{stats-tab-CQYF0r5W.js → stats-tab-R3_2S5KJ.js} +1 -1
  234. codex/static_root/assets/stats-tab-R3_2S5KJ.js.br +0 -0
  235. codex/static_root/assets/stats-tab-R3_2S5KJ.js.gz +0 -0
  236. codex/static_root/assets/{task-tab-DZ6XCKiv.11d725b52725.js → task-tab-DcwExi-z.7745f5bdd4f6.js} +1 -1
  237. codex/static_root/assets/task-tab-DcwExi-z.7745f5bdd4f6.js.br +0 -0
  238. codex/static_root/assets/task-tab-DcwExi-z.7745f5bdd4f6.js.gz +0 -0
  239. codex/static_root/assets/{task-tab-DZ6XCKiv.js → task-tab-DcwExi-z.js} +1 -1
  240. codex/static_root/assets/task-tab-DcwExi-z.js.br +0 -0
  241. codex/static_root/assets/task-tab-DcwExi-z.js.gz +0 -0
  242. codex/static_root/assets/{unauthorized-B0KN5ef3.3e4c44632a20.js → unauthorized-DQOfB_66.153b77e5dba9.js} +1 -1
  243. codex/static_root/assets/unauthorized-DQOfB_66.153b77e5dba9.js.br +0 -0
  244. codex/static_root/assets/unauthorized-DQOfB_66.153b77e5dba9.js.gz +0 -0
  245. codex/static_root/assets/{unauthorized-B0KN5ef3.js → unauthorized-DQOfB_66.js} +1 -1
  246. codex/static_root/assets/unauthorized-DQOfB_66.js.br +0 -0
  247. codex/static_root/assets/unauthorized-DQOfB_66.js.gz +0 -0
  248. codex/static_root/assets/{user-tab-WoOwFzFw.2e07ebc79118.js → user-tab-BKyrq81A.7412792291c7.js} +1 -1
  249. codex/static_root/assets/user-tab-BKyrq81A.7412792291c7.js.br +0 -0
  250. codex/static_root/assets/user-tab-BKyrq81A.7412792291c7.js.gz +0 -0
  251. codex/static_root/assets/{user-tab-WoOwFzFw.js → user-tab-BKyrq81A.js} +1 -1
  252. codex/static_root/assets/user-tab-BKyrq81A.js.br +0 -0
  253. codex/static_root/assets/user-tab-BKyrq81A.js.gz +0 -0
  254. codex/static_root/img/missing-cover-165.ef301b6fcf8c.webp +0 -0
  255. codex/static_root/img/missing-cover-165.webp +0 -0
  256. codex/static_root/{manifest.69541e47c159.json → manifest.d1e85b766092.json} +314 -314
  257. codex/static_root/manifest.d1e85b766092.json.br +0 -0
  258. codex/static_root/manifest.d1e85b766092.json.gz +0 -0
  259. codex/static_root/manifest.json +314 -314
  260. codex/static_root/manifest.json.br +0 -0
  261. codex/static_root/manifest.json.gz +0 -0
  262. codex/static_root/staticfiles.json +1 -1
  263. codex/templates/headers-icons.html +0 -5
  264. codex/templates/pwa/headers.html +1 -1
  265. codex/templates/pwa/serviceworker.js +0 -1
  266. codex/urls/root.py +1 -1
  267. codex/views/browser/annotate/order.py +1 -1
  268. codex/views/browser/group_mtime.py +1 -1
  269. {codex-1.8.14.dist-info → codex-1.8.16.dist-info}/METADATA +3 -3
  270. codex-1.8.16.dist-info/RECORD +1102 -0
  271. {codex-1.8.14.dist-info → codex-1.8.16.dist-info}/WHEEL +1 -1
  272. codex/static_root/assets/VCheckbox-DSiToISz.36b2c3106f70.js.br +0 -0
  273. codex/static_root/assets/VCheckbox-DSiToISz.36b2c3106f70.js.gz +0 -0
  274. codex/static_root/assets/VCheckbox-DSiToISz.js.br +0 -0
  275. codex/static_root/assets/VCheckbox-DSiToISz.js.gz +0 -0
  276. codex/static_root/assets/VCheckboxBtn-CYmOhPsT.064f0ca6833f.js.br +0 -0
  277. codex/static_root/assets/VCheckboxBtn-CYmOhPsT.064f0ca6833f.js.gz +0 -0
  278. codex/static_root/assets/VCheckboxBtn-CYmOhPsT.js.br +0 -0
  279. codex/static_root/assets/VCheckboxBtn-CYmOhPsT.js.gz +0 -0
  280. codex/static_root/assets/VCombobox-BPA3Li01.560d65a1fd9e.js +0 -1
  281. codex/static_root/assets/VCombobox-BPA3Li01.560d65a1fd9e.js.br +0 -0
  282. codex/static_root/assets/VCombobox-BPA3Li01.560d65a1fd9e.js.gz +0 -0
  283. codex/static_root/assets/VCombobox-BPA3Li01.js +0 -1
  284. codex/static_root/assets/VCombobox-BPA3Li01.js.br +0 -0
  285. codex/static_root/assets/VCombobox-BPA3Li01.js.gz +0 -0
  286. codex/static_root/assets/VDialog-BFf48e97.3689a9d36779.js +0 -1
  287. codex/static_root/assets/VDialog-BFf48e97.3689a9d36779.js.br +0 -0
  288. codex/static_root/assets/VDialog-BFf48e97.3689a9d36779.js.gz +0 -0
  289. codex/static_root/assets/VDialog-BFf48e97.js +0 -1
  290. codex/static_root/assets/VDialog-BFf48e97.js.br +0 -0
  291. codex/static_root/assets/VDialog-BFf48e97.js.gz +0 -0
  292. codex/static_root/assets/VDialog-cfA1435M.9d74582347d0.css.br +0 -0
  293. codex/static_root/assets/VDialog-cfA1435M.9d74582347d0.css.gz +0 -0
  294. codex/static_root/assets/VDialog-cfA1435M.css.br +0 -0
  295. codex/static_root/assets/VDialog-cfA1435M.css.gz +0 -0
  296. codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.br +0 -0
  297. codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.gz +0 -0
  298. codex/static_root/assets/VDivider-DU47sRrT.css.br +0 -0
  299. codex/static_root/assets/VDivider-DU47sRrT.css.gz +0 -0
  300. codex/static_root/assets/VDivider-Dtis_q2S.9e74f9b00677.js.br +0 -0
  301. codex/static_root/assets/VDivider-Dtis_q2S.9e74f9b00677.js.gz +0 -0
  302. codex/static_root/assets/VDivider-Dtis_q2S.js.br +0 -0
  303. codex/static_root/assets/VDivider-Dtis_q2S.js.gz +0 -0
  304. codex/static_root/assets/VExpansionPanels-DFJglYob.df0a5305e017.js.br +0 -0
  305. codex/static_root/assets/VExpansionPanels-DFJglYob.df0a5305e017.js.gz +0 -0
  306. codex/static_root/assets/VExpansionPanels-DFJglYob.js.br +0 -0
  307. codex/static_root/assets/VExpansionPanels-DFJglYob.js.gz +0 -0
  308. codex/static_root/assets/VForm-BNXhV_uk.f87afb6d84da.js.br +0 -0
  309. codex/static_root/assets/VForm-BNXhV_uk.f87afb6d84da.js.gz +0 -0
  310. codex/static_root/assets/VForm-BNXhV_uk.js.br +0 -0
  311. codex/static_root/assets/VForm-BNXhV_uk.js.gz +0 -0
  312. codex/static_root/assets/VRadioGroup-BlGhrl3W.93a79cebc3eb.js +0 -1
  313. codex/static_root/assets/VRadioGroup-BlGhrl3W.93a79cebc3eb.js.br +0 -0
  314. codex/static_root/assets/VRadioGroup-BlGhrl3W.93a79cebc3eb.js.gz +0 -0
  315. codex/static_root/assets/VRadioGroup-BlGhrl3W.js +0 -1
  316. codex/static_root/assets/VRadioGroup-BlGhrl3W.js.br +0 -0
  317. codex/static_root/assets/VRadioGroup-BlGhrl3W.js.gz +0 -0
  318. codex/static_root/assets/VSelect-DIXHkKJm.22846e456715.js +0 -1
  319. codex/static_root/assets/VSelect-DIXHkKJm.22846e456715.js.br +0 -0
  320. codex/static_root/assets/VSelect-DIXHkKJm.22846e456715.js.gz +0 -0
  321. codex/static_root/assets/VSelect-DIXHkKJm.js +0 -1
  322. codex/static_root/assets/VSelect-DIXHkKJm.js.br +0 -0
  323. codex/static_root/assets/VSelect-DIXHkKJm.js.gz +0 -0
  324. codex/static_root/assets/VSelectionControl-xYnmeS9J.279721e1b13d.js.br +0 -0
  325. codex/static_root/assets/VSelectionControl-xYnmeS9J.279721e1b13d.js.gz +0 -0
  326. codex/static_root/assets/VSelectionControl-xYnmeS9J.js.br +0 -0
  327. codex/static_root/assets/VSelectionControl-xYnmeS9J.js.gz +0 -0
  328. codex/static_root/assets/VTable-BK7gXlps.d1758b79332d.js +0 -1
  329. codex/static_root/assets/VTable-BK7gXlps.d1758b79332d.js.br +0 -0
  330. codex/static_root/assets/VTable-BK7gXlps.d1758b79332d.js.gz +0 -0
  331. codex/static_root/assets/VTable-BK7gXlps.js +0 -1
  332. codex/static_root/assets/VTable-BK7gXlps.js.br +0 -0
  333. codex/static_root/assets/VTable-BK7gXlps.js.gz +0 -0
  334. codex/static_root/assets/VWindowItem-0tN6eYpd.773c981aa12a.js.br +0 -0
  335. codex/static_root/assets/VWindowItem-0tN6eYpd.773c981aa12a.js.gz +0 -0
  336. codex/static_root/assets/VWindowItem-0tN6eYpd.js.br +0 -0
  337. codex/static_root/assets/VWindowItem-0tN6eYpd.js.gz +0 -0
  338. codex/static_root/assets/admin-BSeSK58M.5e0ec404b68a.js.br +0 -0
  339. codex/static_root/assets/admin-BSeSK58M.5e0ec404b68a.js.gz +0 -0
  340. codex/static_root/assets/admin-BSeSK58M.js.br +0 -0
  341. codex/static_root/assets/admin-BSeSK58M.js.gz +0 -0
  342. codex/static_root/assets/admin-C6VbbEgi.1b7afd86e270.js.br +0 -0
  343. codex/static_root/assets/admin-C6VbbEgi.1b7afd86e270.js.gz +0 -0
  344. codex/static_root/assets/admin-C6VbbEgi.js.br +0 -0
  345. codex/static_root/assets/admin-C6VbbEgi.js.gz +0 -0
  346. codex/static_root/assets/admin-menu-CJIeXccy.a8f894508762.js.br +0 -0
  347. codex/static_root/assets/admin-menu-CJIeXccy.a8f894508762.js.gz +0 -0
  348. codex/static_root/assets/admin-menu-CJIeXccy.js.br +0 -0
  349. codex/static_root/assets/admin-menu-CJIeXccy.js.gz +0 -0
  350. codex/static_root/assets/admin-settings-button-progress-vOeMypwd.5db8039f1f8b.js.br +0 -3
  351. codex/static_root/assets/admin-settings-button-progress-vOeMypwd.5db8039f1f8b.js.gz +0 -0
  352. codex/static_root/assets/admin-settings-button-progress-vOeMypwd.js.br +0 -3
  353. codex/static_root/assets/admin-settings-button-progress-vOeMypwd.js.gz +0 -0
  354. codex/static_root/assets/browser-CKD3rgcs.31efed76525d.js.br +0 -0
  355. codex/static_root/assets/browser-CKD3rgcs.31efed76525d.js.gz +0 -0
  356. codex/static_root/assets/browser-CKD3rgcs.js.br +0 -0
  357. codex/static_root/assets/browser-CKD3rgcs.js.gz +0 -0
  358. codex/static_root/assets/change-password-dialog-DoBLv9WU.2f5b656e6981.js.br +0 -0
  359. codex/static_root/assets/change-password-dialog-DoBLv9WU.2f5b656e6981.js.gz +0 -0
  360. codex/static_root/assets/change-password-dialog-DoBLv9WU.js.br +0 -0
  361. codex/static_root/assets/change-password-dialog-DoBLv9WU.js.gz +0 -0
  362. codex/static_root/assets/confirm-dialog-WKjj039l.7945cc0aca6f.js.br +0 -0
  363. codex/static_root/assets/confirm-dialog-WKjj039l.7945cc0aca6f.js.gz +0 -0
  364. codex/static_root/assets/confirm-dialog-WKjj039l.js.br +0 -0
  365. codex/static_root/assets/confirm-dialog-WKjj039l.js.gz +0 -0
  366. codex/static_root/assets/datetime-column-cHNNkd7r.0fa4cabd2ff5.js.br +0 -1
  367. codex/static_root/assets/datetime-column-cHNNkd7r.0fa4cabd2ff5.js.gz +0 -0
  368. codex/static_root/assets/datetime-column-cHNNkd7r.js.br +0 -1
  369. codex/static_root/assets/datetime-column-cHNNkd7r.js.gz +0 -0
  370. codex/static_root/assets/filter-Bu2xCEP4.d632e004db3e.js.br +0 -0
  371. codex/static_root/assets/filter-Bu2xCEP4.d632e004db3e.js.gz +0 -0
  372. codex/static_root/assets/filter-Bu2xCEP4.js.br +0 -0
  373. codex/static_root/assets/filter-Bu2xCEP4.js.gz +0 -0
  374. codex/static_root/assets/flag-tab-COY8uzS6.05e7ab1f0aef.js +0 -1
  375. codex/static_root/assets/flag-tab-COY8uzS6.05e7ab1f0aef.js.br +0 -0
  376. codex/static_root/assets/flag-tab-COY8uzS6.05e7ab1f0aef.js.gz +0 -0
  377. codex/static_root/assets/flag-tab-COY8uzS6.js +0 -1
  378. codex/static_root/assets/flag-tab-COY8uzS6.js.br +0 -0
  379. codex/static_root/assets/flag-tab-COY8uzS6.js.gz +0 -0
  380. codex/static_root/assets/forwardRefs-BXEe8ItZ.a2cf13851d8e.js +0 -1
  381. codex/static_root/assets/forwardRefs-BXEe8ItZ.a2cf13851d8e.js.br +0 -0
  382. codex/static_root/assets/forwardRefs-BXEe8ItZ.a2cf13851d8e.js.gz +0 -0
  383. codex/static_root/assets/forwardRefs-BXEe8ItZ.js +0 -1
  384. codex/static_root/assets/forwardRefs-BXEe8ItZ.js.br +0 -0
  385. codex/static_root/assets/forwardRefs-BXEe8ItZ.js.gz +0 -0
  386. codex/static_root/assets/group-tab-CqHKA3Rv.bd829d9ff902.js.br +0 -0
  387. codex/static_root/assets/group-tab-CqHKA3Rv.bd829d9ff902.js.gz +0 -0
  388. codex/static_root/assets/group-tab-CqHKA3Rv.js.br +0 -0
  389. codex/static_root/assets/group-tab-CqHKA3Rv.js.gz +0 -0
  390. codex/static_root/assets/http-error-BAYySiBp.392f8e13b8a9.js +0 -1
  391. codex/static_root/assets/http-error-BAYySiBp.392f8e13b8a9.js.br +0 -0
  392. codex/static_root/assets/http-error-BAYySiBp.392f8e13b8a9.js.gz +0 -0
  393. codex/static_root/assets/http-error-BAYySiBp.js +0 -1
  394. codex/static_root/assets/http-error-BAYySiBp.js.br +0 -0
  395. codex/static_root/assets/http-error-BAYySiBp.js.gz +0 -0
  396. codex/static_root/assets/index-CuPwxeMJ.096be94db12c.js +0 -1
  397. codex/static_root/assets/index-CuPwxeMJ.096be94db12c.js.br +0 -0
  398. codex/static_root/assets/index-CuPwxeMJ.096be94db12c.js.gz +0 -0
  399. codex/static_root/assets/index-CuPwxeMJ.js +0 -1
  400. codex/static_root/assets/index-CuPwxeMJ.js.br +0 -0
  401. codex/static_root/assets/index-CuPwxeMJ.js.gz +0 -0
  402. codex/static_root/assets/library-tab-DHtd9G39.a6068c595e8f.js.br +0 -0
  403. codex/static_root/assets/library-tab-DHtd9G39.a6068c595e8f.js.gz +0 -0
  404. codex/static_root/assets/library-tab-DHtd9G39.js.br +0 -0
  405. codex/static_root/assets/library-tab-DHtd9G39.js.gz +0 -0
  406. codex/static_root/assets/main-d46UvpG6.9af3aed7efe8.js +0 -39
  407. codex/static_root/assets/main-d46UvpG6.9af3aed7efe8.js.br +0 -0
  408. codex/static_root/assets/main-d46UvpG6.9af3aed7efe8.js.gz +0 -0
  409. codex/static_root/assets/main-d46UvpG6.js +0 -39
  410. codex/static_root/assets/main-d46UvpG6.js.br +0 -0
  411. codex/static_root/assets/main-d46UvpG6.js.gz +0 -0
  412. codex/static_root/assets/pager-full-pdf-8uR2kH3x.2618772c88d6.js +0 -1
  413. codex/static_root/assets/pager-full-pdf-8uR2kH3x.2618772c88d6.js.br +0 -0
  414. codex/static_root/assets/pager-full-pdf-8uR2kH3x.2618772c88d6.js.gz +0 -0
  415. codex/static_root/assets/pager-full-pdf-8uR2kH3x.js +0 -1
  416. codex/static_root/assets/pager-full-pdf-8uR2kH3x.js.br +0 -0
  417. codex/static_root/assets/pager-full-pdf-8uR2kH3x.js.gz +0 -0
  418. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.b956898491b1.js +0 -1
  419. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.b956898491b1.js.br +0 -0
  420. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.b956898491b1.js.gz +0 -0
  421. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.js +0 -1
  422. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.js.br +0 -0
  423. codex/static_root/assets/pagination-toolbar-Bj2tvIp6.js.gz +0 -0
  424. codex/static_root/assets/pdf-doc-CAzVDc80.440339054422.js.br +0 -0
  425. codex/static_root/assets/pdf-doc-CAzVDc80.440339054422.js.gz +0 -0
  426. codex/static_root/assets/pdf-doc-CAzVDc80.js.br +0 -0
  427. codex/static_root/assets/pdf-doc-CAzVDc80.js.gz +0 -0
  428. codex/static_root/assets/reader-Bi_CT2rk.2048477e3d9a.js.br +0 -0
  429. codex/static_root/assets/reader-Bi_CT2rk.2048477e3d9a.js.gz +0 -0
  430. codex/static_root/assets/reader-Bi_CT2rk.js.br +0 -0
  431. codex/static_root/assets/reader-Bi_CT2rk.js.gz +0 -0
  432. codex/static_root/assets/relation-chips-D2XLYFHm.c0c38d2a39ae.js +0 -1
  433. codex/static_root/assets/relation-chips-D2XLYFHm.c0c38d2a39ae.js.br +0 -0
  434. codex/static_root/assets/relation-chips-D2XLYFHm.c0c38d2a39ae.js.gz +0 -0
  435. codex/static_root/assets/relation-chips-D2XLYFHm.js +0 -1
  436. codex/static_root/assets/relation-chips-D2XLYFHm.js.br +0 -0
  437. codex/static_root/assets/relation-chips-D2XLYFHm.js.gz +0 -0
  438. codex/static_root/assets/settings-drawer-CjqFmP5f.a1c27430b554.js.br +0 -0
  439. codex/static_root/assets/settings-drawer-CjqFmP5f.a1c27430b554.js.gz +0 -0
  440. codex/static_root/assets/settings-drawer-CjqFmP5f.js.br +0 -0
  441. codex/static_root/assets/settings-drawer-CjqFmP5f.js.gz +0 -0
  442. codex/static_root/assets/ssrBoot-Bn2PfqMS.a3d5b2b28349.js.br +0 -0
  443. codex/static_root/assets/ssrBoot-Bn2PfqMS.a3d5b2b28349.js.gz +0 -0
  444. codex/static_root/assets/ssrBoot-Bn2PfqMS.js.br +0 -0
  445. codex/static_root/assets/ssrBoot-Bn2PfqMS.js.gz +0 -0
  446. codex/static_root/assets/stats-tab-CQYF0r5W.3eeaa933ecfd.js.br +0 -0
  447. codex/static_root/assets/stats-tab-CQYF0r5W.3eeaa933ecfd.js.gz +0 -0
  448. codex/static_root/assets/stats-tab-CQYF0r5W.js.br +0 -0
  449. codex/static_root/assets/stats-tab-CQYF0r5W.js.gz +0 -0
  450. codex/static_root/assets/task-tab-DZ6XCKiv.11d725b52725.js.br +0 -0
  451. codex/static_root/assets/task-tab-DZ6XCKiv.11d725b52725.js.gz +0 -0
  452. codex/static_root/assets/task-tab-DZ6XCKiv.js.br +0 -0
  453. codex/static_root/assets/task-tab-DZ6XCKiv.js.gz +0 -0
  454. codex/static_root/assets/unauthorized-B0KN5ef3.3e4c44632a20.js.br +0 -0
  455. codex/static_root/assets/unauthorized-B0KN5ef3.3e4c44632a20.js.gz +0 -0
  456. codex/static_root/assets/unauthorized-B0KN5ef3.js.br +0 -0
  457. codex/static_root/assets/unauthorized-B0KN5ef3.js.gz +0 -0
  458. codex/static_root/assets/user-tab-WoOwFzFw.2e07ebc79118.js.br +0 -0
  459. codex/static_root/assets/user-tab-WoOwFzFw.2e07ebc79118.js.gz +0 -0
  460. codex/static_root/assets/user-tab-WoOwFzFw.js.br +0 -0
  461. codex/static_root/assets/user-tab-WoOwFzFw.js.gz +0 -0
  462. codex/static_root/img/missing-cover-165.f4bb7740084c.webp +0 -0
  463. codex/static_root/manifest.69541e47c159.json.br +0 -0
  464. codex/static_root/manifest.69541e47c159.json.gz +0 -0
  465. codex-1.8.14.dist-info/RECORD +0 -1102
  466. {codex-1.8.14.dist-info → codex-1.8.16.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- import{_ as g,D as b,G as C,v as r,w as s,b as l,C as c,F as u,B as h,E as x,x as S,d as R,z as f,a as v}from"./main-d46UvpG6.js";import{C as A}from"./confirm-dialog-WKjj039l.js";import{useAdminStore as I}from"./admin-C6VbbEgi.js";import{V as y}from"./forwardRefs-BXEe8ItZ.js";import{c as N}from"./VSelect-DIXHkKJm.js";import"./VDialog-BFf48e97.js";import"./VSelectionControl-xYnmeS9J.js";import"./ssrBoot-Bn2PfqMS.js";import"./VDivider-Dtis_q2S.js";import"./VCheckboxBtn-CYmOhPsT.js";const _=[{title:"Libraries",tasks:[{value:"poll",title:"Poll All Libraries",desc:"Update Libraries if changes detected"},{value:"poll_force",title:"Force Update All Libraries",desc:"Forcibly update all comics in all libraries",confirm:"This can take a long time"},{value:"force_update_all_failed_imports",title:"Update All Failed Imports",desc:"Forcibly update all failed imports in all libraries",confirm:"This can take a long time"},{value:"watchdog_sync",title:"Sync Watchdog with DB",desc:"Ensure the Watchdog file watcher is enabled per database preferences for each library"},{value:"import_abort",title:"Abort Running Import",desc:"Abort the current running import after the current import subtask is complete"}]},{title:"Covers",tasks:[{value:"purge_comic_covers",title:"Remove Comic Covers",desc:"from every library",confirm:"Are you sure?"},{value:"create_all_comic_covers",title:"Create All Comic Covers",desc:"Pre-generate covers for every comic in every library and all custom covers",confirm:"Are you sure?"},{value:"force_update_groups",title:"Update Group Timestamps",desc:"Force the update of group timestamps. Will bust the browser cache for browser views and covers."}]},{title:"Search Index",tasks:[{value:"search_index_optimize",title:"Optimize Search Index",desc:"Merge Search Index for optimal lookup time. Runs nightly."},{value:"search_index_remove_stale",title:"Clean Stale Index Entries",desc:"Clean search index entries that are no longer in the library."},{value:"search_index_clear",title:"Clear Search Index",desc:"of all entries",confirm:"Are you sure? Resyncing the search index can take a while."},{value:"db_fts_integrity_check",title:"Integrity Check Search Index",desc:"Repairs Search Index on failure. Runs nightly"},{value:"db_fts_rebuild",title:"Repair Search Index",desc:"Probably faster than Rebuild if the integrity check fails."},{value:"search_index_abort",title:"Abort Search Index Sync",desc:"Aborts search index sync tasks."},{value:"search_index_update",title:"Sync Search Index",desc:"with recently changed comics.",confirm:"This can take a long time"},{value:"search_index_rebuild",title:"Rebuild Search Index Using Sync.",desc:"Delete and rebuild the search index from scratch using the syncer.",confirm:"This can take a long time"}]},{title:"Database",tasks:[{value:"db_vacuum",title:"Optimize & Compact Database",desc:"Run the sqlite3 OPTIMIZE and VACUUM pragmas. Runs nightly"},{value:"db_backup",title:"Backup Database",desc:"Runs nightly"},{value:"db_foreign_key_check",title:"Remove Illegal Foreign Keys",desc:"Check for and remove illegal foreign keys. Mark affected comics for update. Runs nightly."},{value:"db_integrity_check",title:"Check Database Integrity",desc:"Check logs for results. Runs nightly.",confirm:"Can take a while on large databases, Are you sure?"}]},{title:"Codex Software",tasks:[{value:"codex_latest_version",title:"Check for Codex Latest Version",desc:"Check PyPi for the latest version of Codex"},{value:"codex_update",title:"Update Codex",desc:"If Codex updates to a new version, it will restart",confirm:"Are you sure?"},{value:"codex_restart",title:"Restart Codex Server",desc:"Immediately",confirm:"Are you sure?"},{value:"codex_shutdown",title:"Shutdown Codex Server",desc:"Immediately",confirm:"Are you sure?"}]},{title:"Cleanup",tasks:[{value:"cleanup_fks",title:"Remove Orphan Tags",desc:"After deleting comics, unused linked objects remain in case new comics use them. Runs nightly."},{value:"cleanup_db_custom_covers",title:"Remove Orphan Database Custom Covers",desc:"Remove Custom Covers from the db that no longer represent custom cover images on disk. Runs nightly."},{value:"cleanup_sessions",title:"Cleanup Sessions",desc:"Remove corrupt and expired sessions. Runs nightly."},{value:"cleanup_covers",title:"Remove Orphan Cover Thumbnails",desc:"no longer have source comics or custom images. Runs nightly."},{value:"cleanup_bookmarks",title:"Remove Orphan Bookmarks",desc:"Owned by no session or user. Runs nightly."},{value:"adopt_folders",title:"Adopt Orphan Folders",desc:"Move orphaned folders from the top of the folder tree to under their correct parent. Runs nightly and at startup."},{value:"librarian_clear_status",title:"Clear Librarian Statuses",desc:"Mark all Librarian tasks finished."},{value:"janitor_nightly",title:"Run Nightly Maintenance",desc:"Runs several tasks above that also run nightly.",confirm:"Launches several tasks that run nightly anyway."}]},{title:"Notify",tasks:[{value:"notify_admin_flags_changed",title:"Notify Admin Flags Changed",desc:"Notify all users that admin flags have changed."},{value:"notify_bookmark_changed",title:"Notify Bookmark Changed",desc:"Notify only your user that a bookmark changed."},{value:"notify_covers_changed",title:"Notify Covers Changed",desc:"Notify all users that covers have changed."},{value:"notify_failed_imports_changed",title:"Notify Failed Imports Changed",desc:"Notify admin users that failed imports have changed"},{value:"notify_groups_changed",title:"Notify Groups Changed",desc:"Notify all users that ACL groups have changed."},{value:"notify_library_changed",title:"Notify Library Changed ",desc:"Notify all users libraries have changed."},{value:"notify_librarian_status",title:"Notify Librarian Status",desc:"Notify admin users that a librarian job status changed.."},{value:"notify_users_changed",title:"Notify Users Changed",desc:"Notify one user that their users changed or all users if a user was deleted."}]}],m=["Notify"];Object.freeze(m);const w={name:"AdminTasksTab",components:{ConfirmDialog:A},data(){return{SELECT_GROUPS:m,selectValues:{Notify:"notify_library_changed"},tasks:_}},computed:{...C(x,{formSuccess:e=>e.form.success,formErrors:e=>e.form.errors}),selectMaps(){const e={};for(const i of _)if(m.includes(i.title)){e[i.title]={};for(const o of i.tasks)e[i.title][o.value]=o}return e}},methods:{...b(I,["librarianTask"]),selectAttr(e,i){const o=this.selectValues[e];return this.selectMaps[e][o][i]}}},T={id:"tasks"},L={key:0,id:"success"},D={key:1,id:"error"},V={key:2,id:"noRecentTask"},E={key:0},U={class:"taskBox"},B={class:"taskDesc"},O={key:1,class:"taskBox"},F={class:"taskDesc"};function M(e,i,o,P,n,d){const p=S("ConfirmDialog");return s(),r("div",T,[l("div",null,[i[0]||(i[0]=l("span",{id:"lastTaskLabel"},"Last Task Queued:",-1)),l("span",null,[e.formSuccess?(s(),r("span",L,c(e.formSuccess),1)):e.formErrors&&e.formErrors.length>0?(s(),r("span",D,[(s(!0),r(u,null,h(e.formErrors,t=>(s(),r("span",{key:t},c(t),1))),128))])):(s(),r("span",V,"No recent task"))])]),(s(!0),r(u,null,h(n.tasks,t=>(s(),r("div",{key:t.title,"fixed-header":"",class:"taskGroup"},[l("h3",null,c(t.title),1),n.SELECT_GROUPS.includes(t.title)?(s(),r("div",O,[v(N,{items:t.tasks,"model-value":n.selectValues[t.title],"onUpdate:modelValue":a=>n.selectValues[t.title]=a},null,8,["items","model-value","onUpdate:modelValue"]),v(y,{block:"",onClick:a=>e.librarianTask(n.selectValues[t.title],d.selectAttr(t.title,"title")),text:d.selectAttr(t.title,"title")},null,8,["onClick","text"]),l("div",F,c(d.selectAttr(t.title,"desc")),1)])):(s(),r("div",E,[(s(!0),r(u,null,h(t.tasks,a=>(s(),r("div",{key:a.value,class:R(["trow",{selected:!1}])},[l("div",U,[a.confirm?(s(),f(p,{key:0,"button-text":a.title,"title-text":a.title,text:a.confirm,block:!0,"confirm-text":"Confirm",onConfirm:k=>e.librarianTask(a.value,a.title)},null,8,["button-text","title-text","text","onConfirm"])):(s(),f(y,{key:1,block:"",onClick:k=>e.librarianTask(a.value,a.title),text:a.title},null,8,["onClick","text"])),l("div",B,c(a.desc),1)])]))),128))]))]))),128))])}const X=g(w,[["render",M],["__scopeId","data-v-8cd7a7dc"]]);export{X as default};
1
+ import{_ as g,D as b,G as C,v as r,b as l,C as c,F as u,B as h,E as x,w as S,y as s,d as R,z as f,a as v}from"./main-CWTxsB_K.js";import{C as A}from"./confirm-dialog-X8W3euvh.js";import{useAdminStore as I}from"./admin-BStn9kk0.js";import{V as y}from"./forwardRefs-CnxuGwpi.js";import{c as N}from"./VSelect-DpnHasju.js";import"./VDialog-mZQ1Va-c.js";import"./VSelectionControl-DFaQ_klW.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./VCheckboxBtn-zhUZJChm.js";const _=[{title:"Libraries",tasks:[{value:"poll",title:"Poll All Libraries",desc:"Update Libraries if changes detected"},{value:"poll_force",title:"Force Update All Libraries",desc:"Forcibly update all comics in all libraries",confirm:"This can take a long time"},{value:"force_update_all_failed_imports",title:"Update All Failed Imports",desc:"Forcibly update all failed imports in all libraries",confirm:"This can take a long time"},{value:"watchdog_sync",title:"Sync Watchdog with DB",desc:"Ensure the Watchdog file watcher is enabled per database preferences for each library"},{value:"import_abort",title:"Abort Running Import",desc:"Abort the current running import after the current import subtask is complete"}]},{title:"Covers",tasks:[{value:"purge_comic_covers",title:"Remove Comic Covers",desc:"from every library",confirm:"Are you sure?"},{value:"create_all_comic_covers",title:"Create All Comic Covers",desc:"Pre-generate covers for every comic in every library and all custom covers",confirm:"Are you sure?"},{value:"force_update_groups",title:"Update Group Timestamps",desc:"Force the update of group timestamps. Will bust the browser cache for browser views and covers."}]},{title:"Search Index",tasks:[{value:"search_index_optimize",title:"Optimize Search Index",desc:"Merge Search Index for optimal lookup time. Runs nightly."},{value:"search_index_remove_stale",title:"Clean Stale Index Entries",desc:"Clean search index entries that are no longer in the library."},{value:"search_index_clear",title:"Clear Search Index",desc:"of all entries",confirm:"Are you sure? Resyncing the search index can take a while."},{value:"db_fts_integrity_check",title:"Integrity Check Search Index",desc:"Repairs Search Index on failure. Runs nightly"},{value:"db_fts_rebuild",title:"Repair Search Index",desc:"Probably faster than Rebuild if the integrity check fails."},{value:"search_index_abort",title:"Abort Search Index Sync",desc:"Aborts search index sync tasks."},{value:"search_index_update",title:"Sync Search Index",desc:"with recently changed comics.",confirm:"This can take a long time"},{value:"search_index_rebuild",title:"Rebuild Search Index Using Sync.",desc:"Delete and rebuild the search index from scratch using the syncer.",confirm:"This can take a long time"}]},{title:"Database",tasks:[{value:"db_vacuum",title:"Optimize & Compact Database",desc:"Run the sqlite3 OPTIMIZE and VACUUM pragmas. Runs nightly"},{value:"db_backup",title:"Backup Database",desc:"Runs nightly"},{value:"db_foreign_key_check",title:"Remove Illegal Foreign Keys",desc:"Check for and remove illegal foreign keys. Mark affected comics for update. Runs nightly."},{value:"db_integrity_check",title:"Check Database Integrity",desc:"Check logs for results. Runs nightly.",confirm:"Can take a while on large databases, Are you sure?"}]},{title:"Codex Software",tasks:[{value:"codex_latest_version",title:"Check for Codex Latest Version",desc:"Check PyPi for the latest version of Codex"},{value:"codex_update",title:"Update Codex",desc:"If Codex updates to a new version, it will restart",confirm:"Are you sure?"},{value:"codex_restart",title:"Restart Codex Server",desc:"Immediately",confirm:"Are you sure?"},{value:"codex_shutdown",title:"Shutdown Codex Server",desc:"Immediately",confirm:"Are you sure?"}]},{title:"Cleanup",tasks:[{value:"cleanup_fks",title:"Remove Orphan Tags",desc:"After deleting comics, unused linked objects remain in case new comics use them. Runs nightly."},{value:"cleanup_db_custom_covers",title:"Remove Orphan Database Custom Covers",desc:"Remove Custom Covers from the db that no longer represent custom cover images on disk. Runs nightly."},{value:"cleanup_sessions",title:"Cleanup Sessions",desc:"Remove corrupt and expired sessions. Runs nightly."},{value:"cleanup_covers",title:"Remove Orphan Cover Thumbnails",desc:"no longer have source comics or custom images. Runs nightly."},{value:"cleanup_bookmarks",title:"Remove Orphan Bookmarks",desc:"Owned by no session or user. Runs nightly."},{value:"adopt_folders",title:"Adopt Orphan Folders",desc:"Move orphaned folders from the top of the folder tree to under their correct parent. Runs nightly and at startup."},{value:"librarian_clear_status",title:"Clear Librarian Statuses",desc:"Mark all Librarian tasks finished."},{value:"janitor_nightly",title:"Run Nightly Maintenance",desc:"Runs several tasks above that also run nightly.",confirm:"Launches several tasks that run nightly anyway."}]},{title:"Notify",tasks:[{value:"notify_admin_flags_changed",title:"Notify Admin Flags Changed",desc:"Notify all users that admin flags have changed."},{value:"notify_bookmark_changed",title:"Notify Bookmark Changed",desc:"Notify only your user that a bookmark changed."},{value:"notify_covers_changed",title:"Notify Covers Changed",desc:"Notify all users that covers have changed."},{value:"notify_failed_imports_changed",title:"Notify Failed Imports Changed",desc:"Notify admin users that failed imports have changed"},{value:"notify_groups_changed",title:"Notify Groups Changed",desc:"Notify all users that ACL groups have changed."},{value:"notify_library_changed",title:"Notify Library Changed ",desc:"Notify all users libraries have changed."},{value:"notify_librarian_status",title:"Notify Librarian Status",desc:"Notify admin users that a librarian job status changed.."},{value:"notify_users_changed",title:"Notify Users Changed",desc:"Notify one user that their users changed or all users if a user was deleted."}]}],m=["Notify"];Object.freeze(m);const w={name:"AdminTasksTab",components:{ConfirmDialog:A},data(){return{SELECT_GROUPS:m,selectValues:{Notify:"notify_library_changed"},tasks:_}},computed:{...C(x,{formSuccess:e=>e.form.success,formErrors:e=>e.form.errors}),selectMaps(){const e={};for(const i of _)if(m.includes(i.title)){e[i.title]={};for(const o of i.tasks)e[i.title][o.value]=o}return e}},methods:{...b(I,["librarianTask"]),selectAttr(e,i){const o=this.selectValues[e];return this.selectMaps[e][o][i]}}},T={id:"tasks"},L={key:0,id:"success"},D={key:1,id:"error"},V={key:2,id:"noRecentTask"},E={key:0},U={class:"taskBox"},B={class:"taskDesc"},O={key:1,class:"taskBox"},F={class:"taskDesc"};function M(e,i,o,P,n,d){const p=S("ConfirmDialog");return s(),r("div",T,[l("div",null,[i[0]||(i[0]=l("span",{id:"lastTaskLabel"},"Last Task Queued:",-1)),l("span",null,[e.formSuccess?(s(),r("span",L,c(e.formSuccess),1)):e.formErrors&&e.formErrors.length>0?(s(),r("span",D,[(s(!0),r(u,null,h(e.formErrors,t=>(s(),r("span",{key:t},c(t),1))),128))])):(s(),r("span",V,"No recent task"))])]),(s(!0),r(u,null,h(n.tasks,t=>(s(),r("div",{key:t.title,"fixed-header":"",class:"taskGroup"},[l("h3",null,c(t.title),1),n.SELECT_GROUPS.includes(t.title)?(s(),r("div",O,[v(N,{items:t.tasks,"model-value":n.selectValues[t.title],"onUpdate:modelValue":a=>n.selectValues[t.title]=a},null,8,["items","model-value","onUpdate:modelValue"]),v(y,{block:"",onClick:a=>e.librarianTask(n.selectValues[t.title],d.selectAttr(t.title,"title")),text:d.selectAttr(t.title,"title")},null,8,["onClick","text"]),l("div",F,c(d.selectAttr(t.title,"desc")),1)])):(s(),r("div",E,[(s(!0),r(u,null,h(t.tasks,a=>(s(),r("div",{key:a.value,class:R(["trow",{selected:!1}])},[l("div",U,[a.confirm?(s(),f(p,{key:0,"button-text":a.title,"title-text":a.title,text:a.confirm,block:!0,"confirm-text":"Confirm",onConfirm:k=>e.librarianTask(a.value,a.title)},null,8,["button-text","title-text","text","onConfirm"])):(s(),f(y,{key:1,block:"",onClick:k=>e.librarianTask(a.value,a.title),text:a.title},null,8,["onClick","text"])),l("div",B,c(a.desc),1)])]))),128))]))]))),128))])}const X=g(w,[["render",M],["__scopeId","data-v-8cd7a7dc"]]);export{X as default};
@@ -1 +1 @@
1
- import{_ as g,D as b,G as C,v as r,w as s,b as l,C as c,F as u,B as h,E as x,x as S,d as R,z as f,a as v}from"./main-d46UvpG6.js";import{C as A}from"./confirm-dialog-WKjj039l.js";import{useAdminStore as I}from"./admin-C6VbbEgi.js";import{V as y}from"./forwardRefs-BXEe8ItZ.js";import{c as N}from"./VSelect-DIXHkKJm.js";import"./VDialog-BFf48e97.js";import"./VSelectionControl-xYnmeS9J.js";import"./ssrBoot-Bn2PfqMS.js";import"./VDivider-Dtis_q2S.js";import"./VCheckboxBtn-CYmOhPsT.js";const _=[{title:"Libraries",tasks:[{value:"poll",title:"Poll All Libraries",desc:"Update Libraries if changes detected"},{value:"poll_force",title:"Force Update All Libraries",desc:"Forcibly update all comics in all libraries",confirm:"This can take a long time"},{value:"force_update_all_failed_imports",title:"Update All Failed Imports",desc:"Forcibly update all failed imports in all libraries",confirm:"This can take a long time"},{value:"watchdog_sync",title:"Sync Watchdog with DB",desc:"Ensure the Watchdog file watcher is enabled per database preferences for each library"},{value:"import_abort",title:"Abort Running Import",desc:"Abort the current running import after the current import subtask is complete"}]},{title:"Covers",tasks:[{value:"purge_comic_covers",title:"Remove Comic Covers",desc:"from every library",confirm:"Are you sure?"},{value:"create_all_comic_covers",title:"Create All Comic Covers",desc:"Pre-generate covers for every comic in every library and all custom covers",confirm:"Are you sure?"},{value:"force_update_groups",title:"Update Group Timestamps",desc:"Force the update of group timestamps. Will bust the browser cache for browser views and covers."}]},{title:"Search Index",tasks:[{value:"search_index_optimize",title:"Optimize Search Index",desc:"Merge Search Index for optimal lookup time. Runs nightly."},{value:"search_index_remove_stale",title:"Clean Stale Index Entries",desc:"Clean search index entries that are no longer in the library."},{value:"search_index_clear",title:"Clear Search Index",desc:"of all entries",confirm:"Are you sure? Resyncing the search index can take a while."},{value:"db_fts_integrity_check",title:"Integrity Check Search Index",desc:"Repairs Search Index on failure. Runs nightly"},{value:"db_fts_rebuild",title:"Repair Search Index",desc:"Probably faster than Rebuild if the integrity check fails."},{value:"search_index_abort",title:"Abort Search Index Sync",desc:"Aborts search index sync tasks."},{value:"search_index_update",title:"Sync Search Index",desc:"with recently changed comics.",confirm:"This can take a long time"},{value:"search_index_rebuild",title:"Rebuild Search Index Using Sync.",desc:"Delete and rebuild the search index from scratch using the syncer.",confirm:"This can take a long time"}]},{title:"Database",tasks:[{value:"db_vacuum",title:"Optimize & Compact Database",desc:"Run the sqlite3 OPTIMIZE and VACUUM pragmas. Runs nightly"},{value:"db_backup",title:"Backup Database",desc:"Runs nightly"},{value:"db_foreign_key_check",title:"Remove Illegal Foreign Keys",desc:"Check for and remove illegal foreign keys. Mark affected comics for update. Runs nightly."},{value:"db_integrity_check",title:"Check Database Integrity",desc:"Check logs for results. Runs nightly.",confirm:"Can take a while on large databases, Are you sure?"}]},{title:"Codex Software",tasks:[{value:"codex_latest_version",title:"Check for Codex Latest Version",desc:"Check PyPi for the latest version of Codex"},{value:"codex_update",title:"Update Codex",desc:"If Codex updates to a new version, it will restart",confirm:"Are you sure?"},{value:"codex_restart",title:"Restart Codex Server",desc:"Immediately",confirm:"Are you sure?"},{value:"codex_shutdown",title:"Shutdown Codex Server",desc:"Immediately",confirm:"Are you sure?"}]},{title:"Cleanup",tasks:[{value:"cleanup_fks",title:"Remove Orphan Tags",desc:"After deleting comics, unused linked objects remain in case new comics use them. Runs nightly."},{value:"cleanup_db_custom_covers",title:"Remove Orphan Database Custom Covers",desc:"Remove Custom Covers from the db that no longer represent custom cover images on disk. Runs nightly."},{value:"cleanup_sessions",title:"Cleanup Sessions",desc:"Remove corrupt and expired sessions. Runs nightly."},{value:"cleanup_covers",title:"Remove Orphan Cover Thumbnails",desc:"no longer have source comics or custom images. Runs nightly."},{value:"cleanup_bookmarks",title:"Remove Orphan Bookmarks",desc:"Owned by no session or user. Runs nightly."},{value:"adopt_folders",title:"Adopt Orphan Folders",desc:"Move orphaned folders from the top of the folder tree to under their correct parent. Runs nightly and at startup."},{value:"librarian_clear_status",title:"Clear Librarian Statuses",desc:"Mark all Librarian tasks finished."},{value:"janitor_nightly",title:"Run Nightly Maintenance",desc:"Runs several tasks above that also run nightly.",confirm:"Launches several tasks that run nightly anyway."}]},{title:"Notify",tasks:[{value:"notify_admin_flags_changed",title:"Notify Admin Flags Changed",desc:"Notify all users that admin flags have changed."},{value:"notify_bookmark_changed",title:"Notify Bookmark Changed",desc:"Notify only your user that a bookmark changed."},{value:"notify_covers_changed",title:"Notify Covers Changed",desc:"Notify all users that covers have changed."},{value:"notify_failed_imports_changed",title:"Notify Failed Imports Changed",desc:"Notify admin users that failed imports have changed"},{value:"notify_groups_changed",title:"Notify Groups Changed",desc:"Notify all users that ACL groups have changed."},{value:"notify_library_changed",title:"Notify Library Changed ",desc:"Notify all users libraries have changed."},{value:"notify_librarian_status",title:"Notify Librarian Status",desc:"Notify admin users that a librarian job status changed.."},{value:"notify_users_changed",title:"Notify Users Changed",desc:"Notify one user that their users changed or all users if a user was deleted."}]}],m=["Notify"];Object.freeze(m);const w={name:"AdminTasksTab",components:{ConfirmDialog:A},data(){return{SELECT_GROUPS:m,selectValues:{Notify:"notify_library_changed"},tasks:_}},computed:{...C(x,{formSuccess:e=>e.form.success,formErrors:e=>e.form.errors}),selectMaps(){const e={};for(const i of _)if(m.includes(i.title)){e[i.title]={};for(const o of i.tasks)e[i.title][o.value]=o}return e}},methods:{...b(I,["librarianTask"]),selectAttr(e,i){const o=this.selectValues[e];return this.selectMaps[e][o][i]}}},T={id:"tasks"},L={key:0,id:"success"},D={key:1,id:"error"},V={key:2,id:"noRecentTask"},E={key:0},U={class:"taskBox"},B={class:"taskDesc"},O={key:1,class:"taskBox"},F={class:"taskDesc"};function M(e,i,o,P,n,d){const p=S("ConfirmDialog");return s(),r("div",T,[l("div",null,[i[0]||(i[0]=l("span",{id:"lastTaskLabel"},"Last Task Queued:",-1)),l("span",null,[e.formSuccess?(s(),r("span",L,c(e.formSuccess),1)):e.formErrors&&e.formErrors.length>0?(s(),r("span",D,[(s(!0),r(u,null,h(e.formErrors,t=>(s(),r("span",{key:t},c(t),1))),128))])):(s(),r("span",V,"No recent task"))])]),(s(!0),r(u,null,h(n.tasks,t=>(s(),r("div",{key:t.title,"fixed-header":"",class:"taskGroup"},[l("h3",null,c(t.title),1),n.SELECT_GROUPS.includes(t.title)?(s(),r("div",O,[v(N,{items:t.tasks,"model-value":n.selectValues[t.title],"onUpdate:modelValue":a=>n.selectValues[t.title]=a},null,8,["items","model-value","onUpdate:modelValue"]),v(y,{block:"",onClick:a=>e.librarianTask(n.selectValues[t.title],d.selectAttr(t.title,"title")),text:d.selectAttr(t.title,"title")},null,8,["onClick","text"]),l("div",F,c(d.selectAttr(t.title,"desc")),1)])):(s(),r("div",E,[(s(!0),r(u,null,h(t.tasks,a=>(s(),r("div",{key:a.value,class:R(["trow",{selected:!1}])},[l("div",U,[a.confirm?(s(),f(p,{key:0,"button-text":a.title,"title-text":a.title,text:a.confirm,block:!0,"confirm-text":"Confirm",onConfirm:k=>e.librarianTask(a.value,a.title)},null,8,["button-text","title-text","text","onConfirm"])):(s(),f(y,{key:1,block:"",onClick:k=>e.librarianTask(a.value,a.title),text:a.title},null,8,["onClick","text"])),l("div",B,c(a.desc),1)])]))),128))]))]))),128))])}const X=g(w,[["render",M],["__scopeId","data-v-8cd7a7dc"]]);export{X as default};
1
+ import{_ as g,D as b,G as C,v as r,b as l,C as c,F as u,B as h,E as x,w as S,y as s,d as R,z as f,a as v}from"./main-CWTxsB_K.js";import{C as A}from"./confirm-dialog-X8W3euvh.js";import{useAdminStore as I}from"./admin-BStn9kk0.js";import{V as y}from"./forwardRefs-CnxuGwpi.js";import{c as N}from"./VSelect-DpnHasju.js";import"./VDialog-mZQ1Va-c.js";import"./VSelectionControl-DFaQ_klW.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./VCheckboxBtn-zhUZJChm.js";const _=[{title:"Libraries",tasks:[{value:"poll",title:"Poll All Libraries",desc:"Update Libraries if changes detected"},{value:"poll_force",title:"Force Update All Libraries",desc:"Forcibly update all comics in all libraries",confirm:"This can take a long time"},{value:"force_update_all_failed_imports",title:"Update All Failed Imports",desc:"Forcibly update all failed imports in all libraries",confirm:"This can take a long time"},{value:"watchdog_sync",title:"Sync Watchdog with DB",desc:"Ensure the Watchdog file watcher is enabled per database preferences for each library"},{value:"import_abort",title:"Abort Running Import",desc:"Abort the current running import after the current import subtask is complete"}]},{title:"Covers",tasks:[{value:"purge_comic_covers",title:"Remove Comic Covers",desc:"from every library",confirm:"Are you sure?"},{value:"create_all_comic_covers",title:"Create All Comic Covers",desc:"Pre-generate covers for every comic in every library and all custom covers",confirm:"Are you sure?"},{value:"force_update_groups",title:"Update Group Timestamps",desc:"Force the update of group timestamps. Will bust the browser cache for browser views and covers."}]},{title:"Search Index",tasks:[{value:"search_index_optimize",title:"Optimize Search Index",desc:"Merge Search Index for optimal lookup time. Runs nightly."},{value:"search_index_remove_stale",title:"Clean Stale Index Entries",desc:"Clean search index entries that are no longer in the library."},{value:"search_index_clear",title:"Clear Search Index",desc:"of all entries",confirm:"Are you sure? Resyncing the search index can take a while."},{value:"db_fts_integrity_check",title:"Integrity Check Search Index",desc:"Repairs Search Index on failure. Runs nightly"},{value:"db_fts_rebuild",title:"Repair Search Index",desc:"Probably faster than Rebuild if the integrity check fails."},{value:"search_index_abort",title:"Abort Search Index Sync",desc:"Aborts search index sync tasks."},{value:"search_index_update",title:"Sync Search Index",desc:"with recently changed comics.",confirm:"This can take a long time"},{value:"search_index_rebuild",title:"Rebuild Search Index Using Sync.",desc:"Delete and rebuild the search index from scratch using the syncer.",confirm:"This can take a long time"}]},{title:"Database",tasks:[{value:"db_vacuum",title:"Optimize & Compact Database",desc:"Run the sqlite3 OPTIMIZE and VACUUM pragmas. Runs nightly"},{value:"db_backup",title:"Backup Database",desc:"Runs nightly"},{value:"db_foreign_key_check",title:"Remove Illegal Foreign Keys",desc:"Check for and remove illegal foreign keys. Mark affected comics for update. Runs nightly."},{value:"db_integrity_check",title:"Check Database Integrity",desc:"Check logs for results. Runs nightly.",confirm:"Can take a while on large databases, Are you sure?"}]},{title:"Codex Software",tasks:[{value:"codex_latest_version",title:"Check for Codex Latest Version",desc:"Check PyPi for the latest version of Codex"},{value:"codex_update",title:"Update Codex",desc:"If Codex updates to a new version, it will restart",confirm:"Are you sure?"},{value:"codex_restart",title:"Restart Codex Server",desc:"Immediately",confirm:"Are you sure?"},{value:"codex_shutdown",title:"Shutdown Codex Server",desc:"Immediately",confirm:"Are you sure?"}]},{title:"Cleanup",tasks:[{value:"cleanup_fks",title:"Remove Orphan Tags",desc:"After deleting comics, unused linked objects remain in case new comics use them. Runs nightly."},{value:"cleanup_db_custom_covers",title:"Remove Orphan Database Custom Covers",desc:"Remove Custom Covers from the db that no longer represent custom cover images on disk. Runs nightly."},{value:"cleanup_sessions",title:"Cleanup Sessions",desc:"Remove corrupt and expired sessions. Runs nightly."},{value:"cleanup_covers",title:"Remove Orphan Cover Thumbnails",desc:"no longer have source comics or custom images. Runs nightly."},{value:"cleanup_bookmarks",title:"Remove Orphan Bookmarks",desc:"Owned by no session or user. Runs nightly."},{value:"adopt_folders",title:"Adopt Orphan Folders",desc:"Move orphaned folders from the top of the folder tree to under their correct parent. Runs nightly and at startup."},{value:"librarian_clear_status",title:"Clear Librarian Statuses",desc:"Mark all Librarian tasks finished."},{value:"janitor_nightly",title:"Run Nightly Maintenance",desc:"Runs several tasks above that also run nightly.",confirm:"Launches several tasks that run nightly anyway."}]},{title:"Notify",tasks:[{value:"notify_admin_flags_changed",title:"Notify Admin Flags Changed",desc:"Notify all users that admin flags have changed."},{value:"notify_bookmark_changed",title:"Notify Bookmark Changed",desc:"Notify only your user that a bookmark changed."},{value:"notify_covers_changed",title:"Notify Covers Changed",desc:"Notify all users that covers have changed."},{value:"notify_failed_imports_changed",title:"Notify Failed Imports Changed",desc:"Notify admin users that failed imports have changed"},{value:"notify_groups_changed",title:"Notify Groups Changed",desc:"Notify all users that ACL groups have changed."},{value:"notify_library_changed",title:"Notify Library Changed ",desc:"Notify all users libraries have changed."},{value:"notify_librarian_status",title:"Notify Librarian Status",desc:"Notify admin users that a librarian job status changed.."},{value:"notify_users_changed",title:"Notify Users Changed",desc:"Notify one user that their users changed or all users if a user was deleted."}]}],m=["Notify"];Object.freeze(m);const w={name:"AdminTasksTab",components:{ConfirmDialog:A},data(){return{SELECT_GROUPS:m,selectValues:{Notify:"notify_library_changed"},tasks:_}},computed:{...C(x,{formSuccess:e=>e.form.success,formErrors:e=>e.form.errors}),selectMaps(){const e={};for(const i of _)if(m.includes(i.title)){e[i.title]={};for(const o of i.tasks)e[i.title][o.value]=o}return e}},methods:{...b(I,["librarianTask"]),selectAttr(e,i){const o=this.selectValues[e];return this.selectMaps[e][o][i]}}},T={id:"tasks"},L={key:0,id:"success"},D={key:1,id:"error"},V={key:2,id:"noRecentTask"},E={key:0},U={class:"taskBox"},B={class:"taskDesc"},O={key:1,class:"taskBox"},F={class:"taskDesc"};function M(e,i,o,P,n,d){const p=S("ConfirmDialog");return s(),r("div",T,[l("div",null,[i[0]||(i[0]=l("span",{id:"lastTaskLabel"},"Last Task Queued:",-1)),l("span",null,[e.formSuccess?(s(),r("span",L,c(e.formSuccess),1)):e.formErrors&&e.formErrors.length>0?(s(),r("span",D,[(s(!0),r(u,null,h(e.formErrors,t=>(s(),r("span",{key:t},c(t),1))),128))])):(s(),r("span",V,"No recent task"))])]),(s(!0),r(u,null,h(n.tasks,t=>(s(),r("div",{key:t.title,"fixed-header":"",class:"taskGroup"},[l("h3",null,c(t.title),1),n.SELECT_GROUPS.includes(t.title)?(s(),r("div",O,[v(N,{items:t.tasks,"model-value":n.selectValues[t.title],"onUpdate:modelValue":a=>n.selectValues[t.title]=a},null,8,["items","model-value","onUpdate:modelValue"]),v(y,{block:"",onClick:a=>e.librarianTask(n.selectValues[t.title],d.selectAttr(t.title,"title")),text:d.selectAttr(t.title,"title")},null,8,["onClick","text"]),l("div",F,c(d.selectAttr(t.title,"desc")),1)])):(s(),r("div",E,[(s(!0),r(u,null,h(t.tasks,a=>(s(),r("div",{key:a.value,class:R(["trow",{selected:!1}])},[l("div",U,[a.confirm?(s(),f(p,{key:0,"button-text":a.title,"title-text":a.title,text:a.confirm,block:!0,"confirm-text":"Confirm",onConfirm:k=>e.librarianTask(a.value,a.title)},null,8,["button-text","title-text","text","onConfirm"])):(s(),f(y,{key:1,block:"",onClick:k=>e.librarianTask(a.value,a.title),text:a.title},null,8,["onClick","text"])),l("div",B,c(a.desc),1)])]))),128))]))]))),128))])}const X=g(w,[["render",M],["__scopeId","data-v-8cd7a7dc"]]);export{X as default};
@@ -1 +1 @@
1
- import{g as E,p as $,u as D,a as n,n as C,d as L,L as R,b as r,aB as Y,aE as we,aV as pe,c as q,f as Ve,aC as ee,h as A,_ as V,G as p,H as v,z as m,I as T,w as c,O as Se,Q as Ce,x as g,e as G,r as Q,bv as Le,t as X,bw as xe,bx as Be,m as I,F as te,D as ae,l as Pe,E as Ae,K as Te,y as w,Z as W,A as Ie,by as Ee,v as $e,ac as De,br as Me,M as Re,X as Fe,B as Ne,a7 as Ue,bz as ze,an as We}from"./main-d46UvpG6.js";import{d as se,C as H,V as Oe}from"./VDialog-BFf48e97.js";import{a as He}from"./change-password-dialog-DoBLv9WU.js";import{S as Ke,V as je}from"./VForm-BNXhV_uk.js";import{d as oe,u as qe,g as Z,k as J,l as Ge,m as Qe,f as Xe,c as O}from"./VSelectionControl-xYnmeS9J.js";import{d as K,c as ne,r as Ze,s as Je,i as Ye,j as et,t as tt,v as at,l as S,D as st,f as ot,k as le,L as nt,E as ie,o as re,F as lt,q as de,V as it}from"./forwardRefs-BXEe8ItZ.js";import{u as rt}from"./ssrBoot-Bn2PfqMS.js";const dt=$({text:String,...R(),...K()},"VToolbarTitle"),ut=E()({name:"VToolbarTitle",props:dt(),setup(e,t){let{slots:o}=t;return D(()=>{const a=!!(o.default||o.text||e.text);return n(e.tag,{class:L(["v-toolbar-title",e.class]),style:C(e.style)},{default:()=>[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,o.default?.()])]})}),{}}}),ct=[null,"prominent","default","comfortable","compact"],mt=$({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>ct.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...at(),...R(),...tt(),...et(),...K({tag:"header"}),...ee()},"VToolbar"),ft=E()({name:"VToolbar",props:mt(),setup(e,t){let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:s}=ne(()=>e.color),{borderClasses:i}=Ze(e),{elevationClasses:d}=Je(e),{roundedClasses:u}=Ye(e),{themeClasses:l}=Y(e),{rtlClasses:b}=we(),f=pe(e.extended===null?!!o.extension?.():e.extended),y=q(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),_=q(()=>f.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return Ve({VBtn:{variant:"text"}}),D(()=>{const x=!!(e.title||o.title),B=!!(o.image||e.image),h=o.extension?.();return f.value=e.extended===null?!!h:e.extended,n(e.tag,{class:L(["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,i.value,d.value,u.value,l.value,b.value,e.class]),style:C([s.value,e.style])},{default:()=>[B&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?n(S,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):n(se,{key:"image-img",cover:!0,src:e.image},null)]),n(S,{defaults:{VTabs:{height:A(y.value)}}},{default:()=>[r("div",{class:"v-toolbar__content",style:{height:A(y.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[o.prepend?.()]),x&&n(ut,{key:"title",text:e.title},{text:o.title}),o.default?.(),o.append&&r("div",{class:"v-toolbar__append"},[o.append?.()])])]}),n(S,{defaults:{VTabs:{height:A(_.value)}}},{default:()=>[n(oe,null,{default:()=>[f.value&&r("div",{class:"v-toolbar__extension",style:{height:A(_.value)}},[h])]})]})]})}),{contentHeight:y,extensionHeight:_}}}),gt={name:"AppBanner",computed:{...p(v,["isBanner"]),...p(v,{banner:e=>e.adminFlags.bannerText})}};function ht(e,t,o,a,s,i){return e.isBanner?(c(),m(ft,{key:0,id:"banner",height:"36",density:"compact",flat:"",title:e.banner},null,8,["title"])):T("",!0)}const vt=V(gt,[["render",ht],["__scopeId","data-v-2458e7e5"]]),bt={name:"AdminBrowserLink",components:{CodexListItem:H},data(){return{mdiBookshelf:Ce}},computed:{...p(Se,["lastRoute"])}};function yt(e,t,o,a,s,i){const d=g("CodexListItem");return c(),m(d,{to:e.lastRoute,"prepend-icon":s.mdiBookshelf,title:"Browser"},null,8,["to","prepend-icon"])}const _t=V(bt,[["render",yt]]),kt=$({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...Qe(),...Ge()},"VSwitch"),wt=E()({name:"VSwitch",inheritAttrs:!1,props:kt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=G(e,"indeterminate"),i=G(e,"modelValue"),{loaderClasses:d}=st(e),{isFocused:u,focus:l,blur:b}=qe(e),f=Q(),y=Q(),_=Le&&window.matchMedia("(forced-colors: active)").matches,x=X(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),B=xe(),h=X(()=>e.id||`switch-${B}`);function ue(){s.value&&(s.value=!1)}function ce(M){M.stopPropagation(),M.preventDefault(),f.value?.input?.click()}return D(()=>{const[M,me]=Be(o),fe=Z.filterProps(e),ge=J.filterProps(e);return n(Z,I({ref:y,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":s.value},d.value,e.class]},M,fe,{modelValue:i.value,"onUpdate:modelValue":F=>i.value=F,id:h.value,focused:u.value,style:e.style}),{...a,default:F=>{let{id:he,messagesId:ve,isDisabled:be,isReadonly:ye,isValid:j}=F;const N={model:i,isValid:j};return n(J,I({ref:f},ge,{modelValue:i.value,"onUpdate:modelValue":[P=>i.value=P,ue],id:he.value,"aria-describedby":ve.value,type:"checkbox","aria-checked":s.value?"mixed":void 0,disabled:be.value,readonly:ye.value,onFocus:l,onBlur:b},me),{...a,default:P=>{let{backgroundColorClasses:U,backgroundColorStyles:k}=P;return r("div",{class:L(["v-switch__track",_?void 0:U.value]),style:C(k.value),onClick:ce},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](N)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](N)])])},input:P=>{let{inputNode:U,icon:k,backgroundColorClasses:_e,backgroundColorStyles:ke}=P;return r(te,null,[U,r("div",{class:L(["v-switch__thumb",{"v-switch__thumb--filled":k||e.loading},e.inset||_?void 0:_e.value]),style:C(e.inset?void 0:ke.value)},[a.thumb?n(S,{defaults:{VIcon:{icon:k,size:"x-small"}}},{default:()=>[a.thumb({...N,icon:k})]}):n(Xe,null,{default:()=>[e.loading?n(nt,{name:"v-switch",active:!0,color:j.value===!1?void 0:x.value},{default:z=>a.loader?a.loader(z):n(ie,{active:z.isActive,color:z.color,indeterminate:!0,size:"16",width:"2"},null)}):k&&n(le,{key:String(k),icon:k,size:"x-small"},null)]})])])}})}})}),ot({},y)}}),pt={name:"AuthLoginDialog",components:{SubmitFooter:Ke,CodexListItem:H},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,registerMode:!1,mdiLogin:Te}},computed:{...p(Ae,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...p(v,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),...Pe(v,["showLoginDialog"]),submitButtonLabel(){return this.registerMode?"Register":"Login"},loginLabel(){let e="Login";return this.adminFlags.registration&&(e+=" or Register"),e}},watch:{showLoginDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>(this.submitButtonEnabled=t,this.submitButtonEnabled)).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){globalThis.addEventListener("keyup",this._keyUpListener)},beforeUnmount(){globalThis.removeEventListener("keyup",this._keyUpListener)},methods:{...ae(v,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>(this.showLoginDialog=this.formErrors&&this.formErrors.length>0,this.showLoginDialog)).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyUpListener(e){e.stopImmediatePropagation()}}};function Vt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("SubmitFooter");return c(),m(Oe,{modelValue:e.showLoginDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>e.showLoginDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:w(({props:l})=>[n(d,I(l,{"prepend-icon":s.mdiLogin,title:i.loginLabel}),null,16,["prepend-icon","title"])]),default:w(()=>[n(je,{id:"authDialog",ref:"form"},{default:w(()=>[n(O,{modelValue:s.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>s.credentials.username=l),autocomplete:"username",label:"Username",rules:s.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=W(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),n(O,{ref:"password",modelValue:s.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>s.credentials.password=l),autocomplete:s.registerMode?"new-password":"current-password",label:"Password",rules:s.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=W(l=>{s.registerMode?e.$refs.passwordConfirm.focus():i.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),n(oe,null,{default:w(()=>[s.registerMode?(c(),m(O,{key:0,ref:"passwordConfirm",modelValue:s.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>s.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:s.rules.passwordConfirm,clearable:"",type:"password",onKeydown:W(i.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):T("",!0)]),_:1}),e.adminFlags.registration?(c(),m(wt,{key:0,modelValue:s.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>s.registerMode=l),label:"Register"},{default:w(()=>[...t[8]||(t[8]=[Ie(" Register ",-1)])]),_:1},8,["modelValue"])):T("",!0),n(u,{verb:s.registerMode?"Register":"Login",table:"",disabled:!s.submitButtonEnabled,onSubmit:i.submit,onCancel:t[6]||(t[6]=l=>e.showLoginDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const St=V(pt,[["render",Vt],["__scopeId","data-v-f5e28bf6"]]),Ct={name:"AuthMenu",components:{AuthLoginDialog:St,ChangePasswordDialog:He,CodexListItem:H},props:{showChangePassword:{type:Boolean,default:!0}},data(){return{mdiLogout:Ee}},computed:{...p(v,{user:e=>e.user}),logoutTitle(){return`Logout ${this.user.username}`}},methods:{...ae(v,["logout"])}},Lt={key:0};function xt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("ChangePasswordDialog"),l=g("AuthLoginDialog");return e.user?(c(),$e("div",Lt,[n(d,{"prepend-icon":s.mdiLogout,title:i.logoutTitle,onClick:De(e.logout,["stop"])},null,8,["prepend-icon","title","onClick"]),o.showChangePassword?(c(),m(u,{key:0,user:e.user},null,8,["user"])):T("",!0)])):(c(),m(l,{key:1}))}const Bt=V(Ct,[["render",xt]]),Pt={name:"PlaceholderLoading",props:{indeterminate:{type:Boolean,default:!0}}};function At(e,t,o,a,s,i){return c(),m(ie,I({"aria-label":"loading",class:"codexProgressCircular",indeterminate:o.indeterminate},e.$attrs),null,16,["indeterminate"])}const Tt=V(Pt,[["render",At],["__scopeId","data-v-7bb4cf22"]]),It=$({actionText:String,bgColor:String,color:String,icon:Re,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...R(),...de(),...lt({size:void 0}),...ee()},"VEmptyState"),Et=E()({name:"VEmptyState",props:It(),emits:{"click:action":e=>!0},setup(e,t){let{emit:o,slots:a}=t;const{themeClasses:s}=Y(e),{backgroundColorClasses:i,backgroundColorStyles:d}=ne(()=>e.bgColor),{dimensionStyles:u}=re(e),{displayClasses:l}=Me();function b(f){o("click:action",f)}return D(()=>{const f=!!(a.actions||e.actionText),y=!!(a.headline||e.headline),_=!!(a.title||e.title),x=!!(a.text||e.text),B=!!(a.media||e.image||e.icon),h=e.size||(e.image?200:96);return r("div",{class:L(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},s.value,i.value,l.value,e.class]),style:C([d.value,u.value,e.style])},[B&&r("div",{key:"media",class:"v-empty-state__media"},[a.media?n(S,{key:"media-defaults",defaults:{VImg:{src:e.image,height:h},VIcon:{size:h,icon:e.icon}}},{default:()=>[a.media()]}):r(te,null,[e.image?n(se,{key:"image",src:e.image,height:h},null):e.icon?n(le,{key:"icon",color:e.color,size:h,icon:e.icon},null):void 0])]),y&&r("div",{key:"headline",class:"v-empty-state__headline"},[a.headline?.()??e.headline]),_&&r("div",{key:"title",class:"v-empty-state__title"},[a.title?.()??e.title]),x&&r("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:A(e.textWidth)}},[a.text?.()??e.text]),a.default&&r("div",{key:"content",class:"v-empty-state__content"},[a.default()]),f&&r("div",{key:"actions",class:"v-empty-state__actions"},[n(S,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>[a.actions?.({props:{onClick:b}})??n(it,{onClick:b},null)]})])])}),{}}}),$t={name:"EmptyState"};function Dt(e,t,o,a,s,i){return c(),m(Et,{class:"empty"},Fe({_:2},[Ne(e.$slots,(d,u)=>({name:u,fn:w(l=>[Ue(e.$slots,u,I({props:d},l),void 0,!0)])}))]),1024)}const Mt=V($t,[["render",Dt],["__scopeId","data-v-c7e33c8c"]]),Rt=$({scrollable:Boolean,...R(),...de(),...K({tag:"main"})},"VMain"),Ft=E()({name:"VMain",props:Rt(),setup(e,t){let{slots:o}=t;const{dimensionStyles:a}=re(e),{mainStyles:s}=ze(),{ssrBootStyles:i}=rt();return D(()=>n(e.tag,{class:L(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:C([s.value,i.value,a.value,e.style])},{default:()=>[e.scrollable?r("div",{class:"v-main__scroller"},[o.default?.()]):o.default?.()]})),{}}}),Nt={name:"UnauthorizedEmptyState",components:{AppBanner:vt,AdminBrowserLink:_t,AuthMenu:Bt,PlaceholderLoading:Tt,EmptyState:Mt},props:{admin:{type:Boolean,default:!1}},data(){return{mdiLockOutline:We}},computed:{...p(v,["isAuthChecked","isAuthorized","isUserAdmin"]),...p(v,{showAdminBrowserLink(e){return this.$router.currentRoute?.value?.name?.startsWith("admin")&&e.adminFlags.nonUsers},text(e){return e.adminFlags.registration?"":"Registration is disabled"}})}},Ut={class:"login"};function zt(e,t,o,a,s,i){const d=g("AppBanner"),u=g("AdminBrowserLink"),l=g("AuthMenu"),b=g("EmptyState"),f=g("PlaceholderLoading");return c(),m(Ft,{id:"unauthorized"},{default:w(()=>[n(d),e.isAuthChecked?(c(),m(b,{key:0,class:"empty",headline:"Unauthorized",text:e.text,icon:s.mdiLockOutline},{default:w(()=>[r("div",Ut,[e.showAdminBrowserLink?(c(),m(u,{key:0})):T("",!0),n(l,{"show-change-password":!1})])]),_:1},8,["text","icon"])):(c(),m(f,{key:1,id:"unauthorizedPlaceholder"}))]),_:1})}const Qt=V(Nt,[["render",zt],["__scopeId","data-v-4d9418eb"]]);export{vt as A,Mt as E,Tt as P,Qt as U,ft as V,ut as a,_t as b,Ft as c,Bt as d};
1
+ import{g as E,p as $,u as D,a as n,n as C,d as L,L as R,b as r,aB as Y,aE as we,aV as pe,c as q,f as Ve,aC as ee,h as A,_ as V,G as p,H as v,z as m,I as T,y as c,O as Se,Q as Ce,w as g,e as G,r as Q,bv as Le,t as X,bw as xe,bx as Be,m as I,F as te,D as ae,l as Pe,E as Ae,K as Te,x as w,Z as W,A as Ie,by as Ee,v as $e,ac as De,br as Me,M as Re,X as Fe,B as Ue,a7 as Ne,bz as ze,an as We}from"./main-CWTxsB_K.js";import{d as se,C as O,V as He}from"./VDialog-mZQ1Va-c.js";import{a as Oe}from"./change-password-dialog-CEdhZwC3.js";import{S as Ke,V as je}from"./VForm-Dt0Uesri.js";import{d as oe,g as qe,h as Z,l as J,n as Ge,m as Qe,f as Xe,c as H}from"./VSelectionControl-DFaQ_klW.js";import{d as K,c as ne,r as Ze,s as Je,i as Ye,j as et,t as tt,v as at,l as S,D as st,f as ot,k as le,L as nt,E as ie,o as re,F as lt,q as de,V as it}from"./forwardRefs-CnxuGwpi.js";import{u as rt}from"./ssrBoot-yM9n-WhK.js";const dt=$({text:String,...R(),...K()},"VToolbarTitle"),ut=E()({name:"VToolbarTitle",props:dt(),setup(e,t){let{slots:o}=t;return D(()=>{const a=!!(o.default||o.text||e.text);return n(e.tag,{class:L(["v-toolbar-title",e.class]),style:C(e.style)},{default:()=>[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,o.default?.()])]})}),{}}}),ct=[null,"prominent","default","comfortable","compact"],mt=$({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>ct.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...at(),...R(),...tt(),...et(),...K({tag:"header"}),...ee()},"VToolbar"),ft=E()({name:"VToolbar",props:mt(),setup(e,t){let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:s}=ne(()=>e.color),{borderClasses:i}=Ze(e),{elevationClasses:d}=Je(e),{roundedClasses:u}=Ye(e),{themeClasses:l}=Y(e),{rtlClasses:b}=we(),f=pe(e.extended===null?!!o.extension?.():e.extended),y=q(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),_=q(()=>f.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return Ve({VBtn:{variant:"text"}}),D(()=>{const x=!!(e.title||o.title),B=!!(o.image||e.image),h=o.extension?.();return f.value=e.extended===null?!!h:e.extended,n(e.tag,{class:L(["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,i.value,d.value,u.value,l.value,b.value,e.class]),style:C([s.value,e.style])},{default:()=>[B&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?n(S,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):n(se,{key:"image-img",cover:!0,src:e.image},null)]),n(S,{defaults:{VTabs:{height:A(y.value)}}},{default:()=>[r("div",{class:"v-toolbar__content",style:{height:A(y.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[o.prepend?.()]),x&&n(ut,{key:"title",text:e.title},{text:o.title}),o.default?.(),o.append&&r("div",{class:"v-toolbar__append"},[o.append?.()])])]}),n(S,{defaults:{VTabs:{height:A(_.value)}}},{default:()=>[n(oe,null,{default:()=>[f.value&&r("div",{class:"v-toolbar__extension",style:{height:A(_.value)}},[h])]})]})]})}),{contentHeight:y,extensionHeight:_}}}),gt={name:"AppBanner",computed:{...p(v,["isBanner"]),...p(v,{banner:e=>e.adminFlags.bannerText})}};function ht(e,t,o,a,s,i){return e.isBanner?(c(),m(ft,{key:0,id:"banner",height:"36",density:"compact",flat:"",title:e.banner},null,8,["title"])):T("",!0)}const vt=V(gt,[["render",ht],["__scopeId","data-v-2458e7e5"]]),bt={name:"AdminBrowserLink",components:{CodexListItem:O},data(){return{mdiBookshelf:Ce}},computed:{...p(Se,["lastRoute"])}};function yt(e,t,o,a,s,i){const d=g("CodexListItem");return c(),m(d,{to:e.lastRoute,"prepend-icon":s.mdiBookshelf,title:"Browser"},null,8,["to","prepend-icon"])}const _t=V(bt,[["render",yt]]),kt=$({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...Qe(),...Ge()},"VSwitch"),wt=E()({name:"VSwitch",inheritAttrs:!1,props:kt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=G(e,"indeterminate"),i=G(e,"modelValue"),{loaderClasses:d}=st(e),{isFocused:u,focus:l,blur:b}=qe(e),f=Q(),y=Q(),_=Le&&window.matchMedia("(forced-colors: active)").matches,x=X(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),B=xe(),h=X(()=>e.id||`switch-${B}`);function ue(){s.value&&(s.value=!1)}function ce(M){M.stopPropagation(),M.preventDefault(),f.value?.input?.click()}return D(()=>{const[M,me]=Be(o),fe=Z.filterProps(e),ge=J.filterProps(e);return n(Z,I({ref:y,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":s.value},d.value,e.class]},M,fe,{modelValue:i.value,"onUpdate:modelValue":F=>i.value=F,id:h.value,focused:u.value,style:e.style}),{...a,default:F=>{let{id:he,messagesId:ve,isDisabled:be,isReadonly:ye,isValid:j}=F;const U={model:i,isValid:j};return n(J,I({ref:f},ge,{modelValue:i.value,"onUpdate:modelValue":[P=>i.value=P,ue],id:he.value,"aria-describedby":ve.value,type:"checkbox","aria-checked":s.value?"mixed":void 0,disabled:be.value,readonly:ye.value,onFocus:l,onBlur:b},me),{...a,default:P=>{let{backgroundColorClasses:N,backgroundColorStyles:k}=P;return r("div",{class:L(["v-switch__track",_?void 0:N.value]),style:C(k.value),onClick:ce},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](U)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](U)])])},input:P=>{let{inputNode:N,icon:k,backgroundColorClasses:_e,backgroundColorStyles:ke}=P;return r(te,null,[N,r("div",{class:L(["v-switch__thumb",{"v-switch__thumb--filled":k||e.loading},e.inset||_?void 0:_e.value]),style:C(e.inset?void 0:ke.value)},[a.thumb?n(S,{defaults:{VIcon:{icon:k,size:"x-small"}}},{default:()=>[a.thumb({...U,icon:k})]}):n(Xe,null,{default:()=>[e.loading?n(nt,{name:"v-switch",active:!0,color:j.value===!1?void 0:x.value},{default:z=>a.loader?a.loader(z):n(ie,{active:z.isActive,color:z.color,indeterminate:!0,size:"16",width:"2"},null)}):k&&n(le,{key:String(k),icon:k,size:"x-small"},null)]})])])}})}})}),ot({},y)}}),pt={name:"AuthLoginDialog",components:{SubmitFooter:Ke,CodexListItem:O},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,registerMode:!1,mdiLogin:Te}},computed:{...p(Ae,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...p(v,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),...Pe(v,["showLoginDialog"]),submitButtonLabel(){return this.registerMode?"Register":"Login"},loginLabel(){let e="Login";return this.adminFlags.registration&&(e+=" or Register"),e}},watch:{showLoginDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>(this.submitButtonEnabled=t,this.submitButtonEnabled)).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){globalThis.addEventListener("keyup",this._keyUpListener)},beforeUnmount(){globalThis.removeEventListener("keyup",this._keyUpListener)},methods:{...ae(v,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>(this.showLoginDialog=this.formErrors&&this.formErrors.length>0,this.showLoginDialog)).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyUpListener(e){e.stopImmediatePropagation()}}};function Vt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("SubmitFooter");return c(),m(He,{modelValue:e.showLoginDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>e.showLoginDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:w(({props:l})=>[n(d,I(l,{"prepend-icon":s.mdiLogin,title:i.loginLabel}),null,16,["prepend-icon","title"])]),default:w(()=>[n(je,{id:"authDialog",ref:"form"},{default:w(()=>[n(H,{modelValue:s.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>s.credentials.username=l),autocomplete:"username",label:"Username",rules:s.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=W(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),n(H,{ref:"password",modelValue:s.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>s.credentials.password=l),autocomplete:s.registerMode?"new-password":"current-password",label:"Password",rules:s.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=W(l=>{s.registerMode?e.$refs.passwordConfirm.focus():i.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),n(oe,null,{default:w(()=>[s.registerMode?(c(),m(H,{key:0,ref:"passwordConfirm",modelValue:s.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>s.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:s.rules.passwordConfirm,clearable:"",type:"password",onKeydown:W(i.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):T("",!0)]),_:1}),e.adminFlags.registration?(c(),m(wt,{key:0,modelValue:s.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>s.registerMode=l),label:"Register"},{default:w(()=>[...t[8]||(t[8]=[Ie(" Register ",-1)])]),_:1},8,["modelValue"])):T("",!0),n(u,{verb:s.registerMode?"Register":"Login",table:"",disabled:!s.submitButtonEnabled,onSubmit:i.submit,onCancel:t[6]||(t[6]=l=>e.showLoginDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const St=V(pt,[["render",Vt],["__scopeId","data-v-f5e28bf6"]]),Ct={name:"AuthMenu",components:{AuthLoginDialog:St,ChangePasswordDialog:Oe,CodexListItem:O},props:{showChangePassword:{type:Boolean,default:!0}},data(){return{mdiLogout:Ee}},computed:{...p(v,{user:e=>e.user}),logoutTitle(){return`Logout ${this.user.username}`}},methods:{...ae(v,["logout"])}},Lt={key:0};function xt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("ChangePasswordDialog"),l=g("AuthLoginDialog");return e.user?(c(),$e("div",Lt,[n(d,{"prepend-icon":s.mdiLogout,title:i.logoutTitle,onClick:De(e.logout,["stop"])},null,8,["prepend-icon","title","onClick"]),o.showChangePassword?(c(),m(u,{key:0,user:e.user},null,8,["user"])):T("",!0)])):(c(),m(l,{key:1}))}const Bt=V(Ct,[["render",xt]]),Pt={name:"PlaceholderLoading",props:{indeterminate:{type:Boolean,default:!0}}};function At(e,t,o,a,s,i){return c(),m(ie,I({"aria-label":"loading",class:"codexProgressCircular",indeterminate:o.indeterminate},e.$attrs),null,16,["indeterminate"])}const Tt=V(Pt,[["render",At],["__scopeId","data-v-7bb4cf22"]]),It=$({actionText:String,bgColor:String,color:String,icon:Re,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...R(),...de(),...lt({size:void 0}),...ee()},"VEmptyState"),Et=E()({name:"VEmptyState",props:It(),emits:{"click:action":e=>!0},setup(e,t){let{emit:o,slots:a}=t;const{themeClasses:s}=Y(e),{backgroundColorClasses:i,backgroundColorStyles:d}=ne(()=>e.bgColor),{dimensionStyles:u}=re(e),{displayClasses:l}=Me();function b(f){o("click:action",f)}return D(()=>{const f=!!(a.actions||e.actionText),y=!!(a.headline||e.headline),_=!!(a.title||e.title),x=!!(a.text||e.text),B=!!(a.media||e.image||e.icon),h=e.size||(e.image?200:96);return r("div",{class:L(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},s.value,i.value,l.value,e.class]),style:C([d.value,u.value,e.style])},[B&&r("div",{key:"media",class:"v-empty-state__media"},[a.media?n(S,{key:"media-defaults",defaults:{VImg:{src:e.image,height:h},VIcon:{size:h,icon:e.icon}}},{default:()=>[a.media()]}):r(te,null,[e.image?n(se,{key:"image",src:e.image,height:h},null):e.icon?n(le,{key:"icon",color:e.color,size:h,icon:e.icon},null):void 0])]),y&&r("div",{key:"headline",class:"v-empty-state__headline"},[a.headline?.()??e.headline]),_&&r("div",{key:"title",class:"v-empty-state__title"},[a.title?.()??e.title]),x&&r("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:A(e.textWidth)}},[a.text?.()??e.text]),a.default&&r("div",{key:"content",class:"v-empty-state__content"},[a.default()]),f&&r("div",{key:"actions",class:"v-empty-state__actions"},[n(S,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>[a.actions?.({props:{onClick:b}})??n(it,{onClick:b},null)]})])])}),{}}}),$t={name:"EmptyState"};function Dt(e,t,o,a,s,i){return c(),m(Et,{class:"empty"},Fe({_:2},[Ue(e.$slots,(d,u)=>({name:u,fn:w(l=>[Ne(e.$slots,u,I({props:d},l),void 0,!0)])}))]),1024)}const Mt=V($t,[["render",Dt],["__scopeId","data-v-c7e33c8c"]]),Rt=$({scrollable:Boolean,...R(),...de(),...K({tag:"main"})},"VMain"),Ft=E()({name:"VMain",props:Rt(),setup(e,t){let{slots:o}=t;const{dimensionStyles:a}=re(e),{mainStyles:s}=ze(),{ssrBootStyles:i}=rt();return D(()=>n(e.tag,{class:L(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:C([s.value,i.value,a.value,e.style])},{default:()=>[e.scrollable?r("div",{class:"v-main__scroller"},[o.default?.()]):o.default?.()]})),{}}}),Ut={name:"UnauthorizedEmptyState",components:{AppBanner:vt,AdminBrowserLink:_t,AuthMenu:Bt,PlaceholderLoading:Tt,EmptyState:Mt},props:{admin:{type:Boolean,default:!1}},data(){return{mdiLockOutline:We}},computed:{...p(v,["isAuthChecked","isAuthorized","isUserAdmin"]),...p(v,{showAdminBrowserLink(e){return this.$router.currentRoute?.value?.name?.startsWith("admin")&&e.adminFlags.nonUsers},text(e){return e.adminFlags.registration?"":"Registration is disabled"}})}},Nt={class:"login"};function zt(e,t,o,a,s,i){const d=g("AppBanner"),u=g("AdminBrowserLink"),l=g("AuthMenu"),b=g("EmptyState"),f=g("PlaceholderLoading");return c(),m(Ft,{id:"unauthorized"},{default:w(()=>[n(d),e.isAuthChecked?(c(),m(b,{key:0,class:"empty",headline:"Unauthorized",text:e.text,icon:s.mdiLockOutline},{default:w(()=>[r("div",Nt,[e.showAdminBrowserLink?(c(),m(u,{key:0})):T("",!0),n(l,{"show-change-password":!1})])]),_:1},8,["text","icon"])):(c(),m(f,{key:1,id:"unauthorizedPlaceholder"}))]),_:1})}const Qt=V(Ut,[["render",zt],["__scopeId","data-v-4d9418eb"]]);export{vt as A,Mt as E,Tt as P,Qt as U,ft as V,ut as a,_t as b,Ft as c,Bt as d};
@@ -1 +1 @@
1
- import{g as E,p as $,u as D,a as n,n as C,d as L,L as R,b as r,aB as Y,aE as we,aV as pe,c as q,f as Ve,aC as ee,h as A,_ as V,G as p,H as v,z as m,I as T,w as c,O as Se,Q as Ce,x as g,e as G,r as Q,bv as Le,t as X,bw as xe,bx as Be,m as I,F as te,D as ae,l as Pe,E as Ae,K as Te,y as w,Z as W,A as Ie,by as Ee,v as $e,ac as De,br as Me,M as Re,X as Fe,B as Ne,a7 as Ue,bz as ze,an as We}from"./main-d46UvpG6.js";import{d as se,C as H,V as Oe}from"./VDialog-BFf48e97.js";import{a as He}from"./change-password-dialog-DoBLv9WU.js";import{S as Ke,V as je}from"./VForm-BNXhV_uk.js";import{d as oe,u as qe,g as Z,k as J,l as Ge,m as Qe,f as Xe,c as O}from"./VSelectionControl-xYnmeS9J.js";import{d as K,c as ne,r as Ze,s as Je,i as Ye,j as et,t as tt,v as at,l as S,D as st,f as ot,k as le,L as nt,E as ie,o as re,F as lt,q as de,V as it}from"./forwardRefs-BXEe8ItZ.js";import{u as rt}from"./ssrBoot-Bn2PfqMS.js";const dt=$({text:String,...R(),...K()},"VToolbarTitle"),ut=E()({name:"VToolbarTitle",props:dt(),setup(e,t){let{slots:o}=t;return D(()=>{const a=!!(o.default||o.text||e.text);return n(e.tag,{class:L(["v-toolbar-title",e.class]),style:C(e.style)},{default:()=>[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,o.default?.()])]})}),{}}}),ct=[null,"prominent","default","comfortable","compact"],mt=$({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>ct.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...at(),...R(),...tt(),...et(),...K({tag:"header"}),...ee()},"VToolbar"),ft=E()({name:"VToolbar",props:mt(),setup(e,t){let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:s}=ne(()=>e.color),{borderClasses:i}=Ze(e),{elevationClasses:d}=Je(e),{roundedClasses:u}=Ye(e),{themeClasses:l}=Y(e),{rtlClasses:b}=we(),f=pe(e.extended===null?!!o.extension?.():e.extended),y=q(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),_=q(()=>f.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return Ve({VBtn:{variant:"text"}}),D(()=>{const x=!!(e.title||o.title),B=!!(o.image||e.image),h=o.extension?.();return f.value=e.extended===null?!!h:e.extended,n(e.tag,{class:L(["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,i.value,d.value,u.value,l.value,b.value,e.class]),style:C([s.value,e.style])},{default:()=>[B&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?n(S,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):n(se,{key:"image-img",cover:!0,src:e.image},null)]),n(S,{defaults:{VTabs:{height:A(y.value)}}},{default:()=>[r("div",{class:"v-toolbar__content",style:{height:A(y.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[o.prepend?.()]),x&&n(ut,{key:"title",text:e.title},{text:o.title}),o.default?.(),o.append&&r("div",{class:"v-toolbar__append"},[o.append?.()])])]}),n(S,{defaults:{VTabs:{height:A(_.value)}}},{default:()=>[n(oe,null,{default:()=>[f.value&&r("div",{class:"v-toolbar__extension",style:{height:A(_.value)}},[h])]})]})]})}),{contentHeight:y,extensionHeight:_}}}),gt={name:"AppBanner",computed:{...p(v,["isBanner"]),...p(v,{banner:e=>e.adminFlags.bannerText})}};function ht(e,t,o,a,s,i){return e.isBanner?(c(),m(ft,{key:0,id:"banner",height:"36",density:"compact",flat:"",title:e.banner},null,8,["title"])):T("",!0)}const vt=V(gt,[["render",ht],["__scopeId","data-v-2458e7e5"]]),bt={name:"AdminBrowserLink",components:{CodexListItem:H},data(){return{mdiBookshelf:Ce}},computed:{...p(Se,["lastRoute"])}};function yt(e,t,o,a,s,i){const d=g("CodexListItem");return c(),m(d,{to:e.lastRoute,"prepend-icon":s.mdiBookshelf,title:"Browser"},null,8,["to","prepend-icon"])}const _t=V(bt,[["render",yt]]),kt=$({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...Qe(),...Ge()},"VSwitch"),wt=E()({name:"VSwitch",inheritAttrs:!1,props:kt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=G(e,"indeterminate"),i=G(e,"modelValue"),{loaderClasses:d}=st(e),{isFocused:u,focus:l,blur:b}=qe(e),f=Q(),y=Q(),_=Le&&window.matchMedia("(forced-colors: active)").matches,x=X(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),B=xe(),h=X(()=>e.id||`switch-${B}`);function ue(){s.value&&(s.value=!1)}function ce(M){M.stopPropagation(),M.preventDefault(),f.value?.input?.click()}return D(()=>{const[M,me]=Be(o),fe=Z.filterProps(e),ge=J.filterProps(e);return n(Z,I({ref:y,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":s.value},d.value,e.class]},M,fe,{modelValue:i.value,"onUpdate:modelValue":F=>i.value=F,id:h.value,focused:u.value,style:e.style}),{...a,default:F=>{let{id:he,messagesId:ve,isDisabled:be,isReadonly:ye,isValid:j}=F;const N={model:i,isValid:j};return n(J,I({ref:f},ge,{modelValue:i.value,"onUpdate:modelValue":[P=>i.value=P,ue],id:he.value,"aria-describedby":ve.value,type:"checkbox","aria-checked":s.value?"mixed":void 0,disabled:be.value,readonly:ye.value,onFocus:l,onBlur:b},me),{...a,default:P=>{let{backgroundColorClasses:U,backgroundColorStyles:k}=P;return r("div",{class:L(["v-switch__track",_?void 0:U.value]),style:C(k.value),onClick:ce},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](N)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](N)])])},input:P=>{let{inputNode:U,icon:k,backgroundColorClasses:_e,backgroundColorStyles:ke}=P;return r(te,null,[U,r("div",{class:L(["v-switch__thumb",{"v-switch__thumb--filled":k||e.loading},e.inset||_?void 0:_e.value]),style:C(e.inset?void 0:ke.value)},[a.thumb?n(S,{defaults:{VIcon:{icon:k,size:"x-small"}}},{default:()=>[a.thumb({...N,icon:k})]}):n(Xe,null,{default:()=>[e.loading?n(nt,{name:"v-switch",active:!0,color:j.value===!1?void 0:x.value},{default:z=>a.loader?a.loader(z):n(ie,{active:z.isActive,color:z.color,indeterminate:!0,size:"16",width:"2"},null)}):k&&n(le,{key:String(k),icon:k,size:"x-small"},null)]})])])}})}})}),ot({},y)}}),pt={name:"AuthLoginDialog",components:{SubmitFooter:Ke,CodexListItem:H},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,registerMode:!1,mdiLogin:Te}},computed:{...p(Ae,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...p(v,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),...Pe(v,["showLoginDialog"]),submitButtonLabel(){return this.registerMode?"Register":"Login"},loginLabel(){let e="Login";return this.adminFlags.registration&&(e+=" or Register"),e}},watch:{showLoginDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>(this.submitButtonEnabled=t,this.submitButtonEnabled)).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){globalThis.addEventListener("keyup",this._keyUpListener)},beforeUnmount(){globalThis.removeEventListener("keyup",this._keyUpListener)},methods:{...ae(v,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>(this.showLoginDialog=this.formErrors&&this.formErrors.length>0,this.showLoginDialog)).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyUpListener(e){e.stopImmediatePropagation()}}};function Vt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("SubmitFooter");return c(),m(Oe,{modelValue:e.showLoginDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>e.showLoginDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:w(({props:l})=>[n(d,I(l,{"prepend-icon":s.mdiLogin,title:i.loginLabel}),null,16,["prepend-icon","title"])]),default:w(()=>[n(je,{id:"authDialog",ref:"form"},{default:w(()=>[n(O,{modelValue:s.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>s.credentials.username=l),autocomplete:"username",label:"Username",rules:s.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=W(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),n(O,{ref:"password",modelValue:s.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>s.credentials.password=l),autocomplete:s.registerMode?"new-password":"current-password",label:"Password",rules:s.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=W(l=>{s.registerMode?e.$refs.passwordConfirm.focus():i.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),n(oe,null,{default:w(()=>[s.registerMode?(c(),m(O,{key:0,ref:"passwordConfirm",modelValue:s.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>s.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:s.rules.passwordConfirm,clearable:"",type:"password",onKeydown:W(i.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):T("",!0)]),_:1}),e.adminFlags.registration?(c(),m(wt,{key:0,modelValue:s.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>s.registerMode=l),label:"Register"},{default:w(()=>[...t[8]||(t[8]=[Ie(" Register ",-1)])]),_:1},8,["modelValue"])):T("",!0),n(u,{verb:s.registerMode?"Register":"Login",table:"",disabled:!s.submitButtonEnabled,onSubmit:i.submit,onCancel:t[6]||(t[6]=l=>e.showLoginDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const St=V(pt,[["render",Vt],["__scopeId","data-v-f5e28bf6"]]),Ct={name:"AuthMenu",components:{AuthLoginDialog:St,ChangePasswordDialog:He,CodexListItem:H},props:{showChangePassword:{type:Boolean,default:!0}},data(){return{mdiLogout:Ee}},computed:{...p(v,{user:e=>e.user}),logoutTitle(){return`Logout ${this.user.username}`}},methods:{...ae(v,["logout"])}},Lt={key:0};function xt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("ChangePasswordDialog"),l=g("AuthLoginDialog");return e.user?(c(),$e("div",Lt,[n(d,{"prepend-icon":s.mdiLogout,title:i.logoutTitle,onClick:De(e.logout,["stop"])},null,8,["prepend-icon","title","onClick"]),o.showChangePassword?(c(),m(u,{key:0,user:e.user},null,8,["user"])):T("",!0)])):(c(),m(l,{key:1}))}const Bt=V(Ct,[["render",xt]]),Pt={name:"PlaceholderLoading",props:{indeterminate:{type:Boolean,default:!0}}};function At(e,t,o,a,s,i){return c(),m(ie,I({"aria-label":"loading",class:"codexProgressCircular",indeterminate:o.indeterminate},e.$attrs),null,16,["indeterminate"])}const Tt=V(Pt,[["render",At],["__scopeId","data-v-7bb4cf22"]]),It=$({actionText:String,bgColor:String,color:String,icon:Re,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...R(),...de(),...lt({size:void 0}),...ee()},"VEmptyState"),Et=E()({name:"VEmptyState",props:It(),emits:{"click:action":e=>!0},setup(e,t){let{emit:o,slots:a}=t;const{themeClasses:s}=Y(e),{backgroundColorClasses:i,backgroundColorStyles:d}=ne(()=>e.bgColor),{dimensionStyles:u}=re(e),{displayClasses:l}=Me();function b(f){o("click:action",f)}return D(()=>{const f=!!(a.actions||e.actionText),y=!!(a.headline||e.headline),_=!!(a.title||e.title),x=!!(a.text||e.text),B=!!(a.media||e.image||e.icon),h=e.size||(e.image?200:96);return r("div",{class:L(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},s.value,i.value,l.value,e.class]),style:C([d.value,u.value,e.style])},[B&&r("div",{key:"media",class:"v-empty-state__media"},[a.media?n(S,{key:"media-defaults",defaults:{VImg:{src:e.image,height:h},VIcon:{size:h,icon:e.icon}}},{default:()=>[a.media()]}):r(te,null,[e.image?n(se,{key:"image",src:e.image,height:h},null):e.icon?n(le,{key:"icon",color:e.color,size:h,icon:e.icon},null):void 0])]),y&&r("div",{key:"headline",class:"v-empty-state__headline"},[a.headline?.()??e.headline]),_&&r("div",{key:"title",class:"v-empty-state__title"},[a.title?.()??e.title]),x&&r("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:A(e.textWidth)}},[a.text?.()??e.text]),a.default&&r("div",{key:"content",class:"v-empty-state__content"},[a.default()]),f&&r("div",{key:"actions",class:"v-empty-state__actions"},[n(S,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>[a.actions?.({props:{onClick:b}})??n(it,{onClick:b},null)]})])])}),{}}}),$t={name:"EmptyState"};function Dt(e,t,o,a,s,i){return c(),m(Et,{class:"empty"},Fe({_:2},[Ne(e.$slots,(d,u)=>({name:u,fn:w(l=>[Ue(e.$slots,u,I({props:d},l),void 0,!0)])}))]),1024)}const Mt=V($t,[["render",Dt],["__scopeId","data-v-c7e33c8c"]]),Rt=$({scrollable:Boolean,...R(),...de(),...K({tag:"main"})},"VMain"),Ft=E()({name:"VMain",props:Rt(),setup(e,t){let{slots:o}=t;const{dimensionStyles:a}=re(e),{mainStyles:s}=ze(),{ssrBootStyles:i}=rt();return D(()=>n(e.tag,{class:L(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:C([s.value,i.value,a.value,e.style])},{default:()=>[e.scrollable?r("div",{class:"v-main__scroller"},[o.default?.()]):o.default?.()]})),{}}}),Nt={name:"UnauthorizedEmptyState",components:{AppBanner:vt,AdminBrowserLink:_t,AuthMenu:Bt,PlaceholderLoading:Tt,EmptyState:Mt},props:{admin:{type:Boolean,default:!1}},data(){return{mdiLockOutline:We}},computed:{...p(v,["isAuthChecked","isAuthorized","isUserAdmin"]),...p(v,{showAdminBrowserLink(e){return this.$router.currentRoute?.value?.name?.startsWith("admin")&&e.adminFlags.nonUsers},text(e){return e.adminFlags.registration?"":"Registration is disabled"}})}},Ut={class:"login"};function zt(e,t,o,a,s,i){const d=g("AppBanner"),u=g("AdminBrowserLink"),l=g("AuthMenu"),b=g("EmptyState"),f=g("PlaceholderLoading");return c(),m(Ft,{id:"unauthorized"},{default:w(()=>[n(d),e.isAuthChecked?(c(),m(b,{key:0,class:"empty",headline:"Unauthorized",text:e.text,icon:s.mdiLockOutline},{default:w(()=>[r("div",Ut,[e.showAdminBrowserLink?(c(),m(u,{key:0})):T("",!0),n(l,{"show-change-password":!1})])]),_:1},8,["text","icon"])):(c(),m(f,{key:1,id:"unauthorizedPlaceholder"}))]),_:1})}const Qt=V(Nt,[["render",zt],["__scopeId","data-v-4d9418eb"]]);export{vt as A,Mt as E,Tt as P,Qt as U,ft as V,ut as a,_t as b,Ft as c,Bt as d};
1
+ import{g as E,p as $,u as D,a as n,n as C,d as L,L as R,b as r,aB as Y,aE as we,aV as pe,c as q,f as Ve,aC as ee,h as A,_ as V,G as p,H as v,z as m,I as T,y as c,O as Se,Q as Ce,w as g,e as G,r as Q,bv as Le,t as X,bw as xe,bx as Be,m as I,F as te,D as ae,l as Pe,E as Ae,K as Te,x as w,Z as W,A as Ie,by as Ee,v as $e,ac as De,br as Me,M as Re,X as Fe,B as Ue,a7 as Ne,bz as ze,an as We}from"./main-CWTxsB_K.js";import{d as se,C as O,V as He}from"./VDialog-mZQ1Va-c.js";import{a as Oe}from"./change-password-dialog-CEdhZwC3.js";import{S as Ke,V as je}from"./VForm-Dt0Uesri.js";import{d as oe,g as qe,h as Z,l as J,n as Ge,m as Qe,f as Xe,c as H}from"./VSelectionControl-DFaQ_klW.js";import{d as K,c as ne,r as Ze,s as Je,i as Ye,j as et,t as tt,v as at,l as S,D as st,f as ot,k as le,L as nt,E as ie,o as re,F as lt,q as de,V as it}from"./forwardRefs-CnxuGwpi.js";import{u as rt}from"./ssrBoot-yM9n-WhK.js";const dt=$({text:String,...R(),...K()},"VToolbarTitle"),ut=E()({name:"VToolbarTitle",props:dt(),setup(e,t){let{slots:o}=t;return D(()=>{const a=!!(o.default||o.text||e.text);return n(e.tag,{class:L(["v-toolbar-title",e.class]),style:C(e.style)},{default:()=>[a&&r("div",{class:"v-toolbar-title__placeholder"},[o.text?o.text():e.text,o.default?.()])]})}),{}}}),ct=[null,"prominent","default","comfortable","compact"],mt=$({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>ct.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...at(),...R(),...tt(),...et(),...K({tag:"header"}),...ee()},"VToolbar"),ft=E()({name:"VToolbar",props:mt(),setup(e,t){let{slots:o}=t;const{backgroundColorClasses:a,backgroundColorStyles:s}=ne(()=>e.color),{borderClasses:i}=Ze(e),{elevationClasses:d}=Je(e),{roundedClasses:u}=Ye(e),{themeClasses:l}=Y(e),{rtlClasses:b}=we(),f=pe(e.extended===null?!!o.extension?.():e.extended),y=q(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),_=q(()=>f.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return Ve({VBtn:{variant:"text"}}),D(()=>{const x=!!(e.title||o.title),B=!!(o.image||e.image),h=o.extension?.();return f.value=e.extended===null?!!h:e.extended,n(e.tag,{class:L(["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},a.value,i.value,d.value,u.value,l.value,b.value,e.class]),style:C([s.value,e.style])},{default:()=>[B&&r("div",{key:"image",class:"v-toolbar__image"},[o.image?n(S,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},o.image):n(se,{key:"image-img",cover:!0,src:e.image},null)]),n(S,{defaults:{VTabs:{height:A(y.value)}}},{default:()=>[r("div",{class:"v-toolbar__content",style:{height:A(y.value)}},[o.prepend&&r("div",{class:"v-toolbar__prepend"},[o.prepend?.()]),x&&n(ut,{key:"title",text:e.title},{text:o.title}),o.default?.(),o.append&&r("div",{class:"v-toolbar__append"},[o.append?.()])])]}),n(S,{defaults:{VTabs:{height:A(_.value)}}},{default:()=>[n(oe,null,{default:()=>[f.value&&r("div",{class:"v-toolbar__extension",style:{height:A(_.value)}},[h])]})]})]})}),{contentHeight:y,extensionHeight:_}}}),gt={name:"AppBanner",computed:{...p(v,["isBanner"]),...p(v,{banner:e=>e.adminFlags.bannerText})}};function ht(e,t,o,a,s,i){return e.isBanner?(c(),m(ft,{key:0,id:"banner",height:"36",density:"compact",flat:"",title:e.banner},null,8,["title"])):T("",!0)}const vt=V(gt,[["render",ht],["__scopeId","data-v-2458e7e5"]]),bt={name:"AdminBrowserLink",components:{CodexListItem:O},data(){return{mdiBookshelf:Ce}},computed:{...p(Se,["lastRoute"])}};function yt(e,t,o,a,s,i){const d=g("CodexListItem");return c(),m(d,{to:e.lastRoute,"prepend-icon":s.mdiBookshelf,title:"Browser"},null,8,["to","prepend-icon"])}const _t=V(bt,[["render",yt]]),kt=$({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...Qe(),...Ge()},"VSwitch"),wt=E()({name:"VSwitch",inheritAttrs:!1,props:kt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,t){let{attrs:o,slots:a}=t;const s=G(e,"indeterminate"),i=G(e,"modelValue"),{loaderClasses:d}=st(e),{isFocused:u,focus:l,blur:b}=qe(e),f=Q(),y=Q(),_=Le&&window.matchMedia("(forced-colors: active)").matches,x=X(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),B=xe(),h=X(()=>e.id||`switch-${B}`);function ue(){s.value&&(s.value=!1)}function ce(M){M.stopPropagation(),M.preventDefault(),f.value?.input?.click()}return D(()=>{const[M,me]=Be(o),fe=Z.filterProps(e),ge=J.filterProps(e);return n(Z,I({ref:y,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":s.value},d.value,e.class]},M,fe,{modelValue:i.value,"onUpdate:modelValue":F=>i.value=F,id:h.value,focused:u.value,style:e.style}),{...a,default:F=>{let{id:he,messagesId:ve,isDisabled:be,isReadonly:ye,isValid:j}=F;const U={model:i,isValid:j};return n(J,I({ref:f},ge,{modelValue:i.value,"onUpdate:modelValue":[P=>i.value=P,ue],id:he.value,"aria-describedby":ve.value,type:"checkbox","aria-checked":s.value?"mixed":void 0,disabled:be.value,readonly:ye.value,onFocus:l,onBlur:b},me),{...a,default:P=>{let{backgroundColorClasses:N,backgroundColorStyles:k}=P;return r("div",{class:L(["v-switch__track",_?void 0:N.value]),style:C(k.value),onClick:ce},[a["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](U)]),a["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](U)])])},input:P=>{let{inputNode:N,icon:k,backgroundColorClasses:_e,backgroundColorStyles:ke}=P;return r(te,null,[N,r("div",{class:L(["v-switch__thumb",{"v-switch__thumb--filled":k||e.loading},e.inset||_?void 0:_e.value]),style:C(e.inset?void 0:ke.value)},[a.thumb?n(S,{defaults:{VIcon:{icon:k,size:"x-small"}}},{default:()=>[a.thumb({...U,icon:k})]}):n(Xe,null,{default:()=>[e.loading?n(nt,{name:"v-switch",active:!0,color:j.value===!1?void 0:x.value},{default:z=>a.loader?a.loader(z):n(ie,{active:z.isActive,color:z.color,indeterminate:!0,size:"16",width:"2"},null)}):k&&n(le,{key:String(k),icon:k,size:"x-small"},null)]})])])}})}})}),ot({},y)}}),pt={name:"AuthLoginDialog",components:{SubmitFooter:Ke,CodexListItem:O},data(){return{rules:{username:[e=>!!e||"Username is required"],password:[e=>e?this.registerMode&&e.length<this.MIN_PASSWORD_LEN?`Password must be ${this.MIN_PASSWORD_LEN} characters long`:!0:"Password is required"],passwordConfirm:[e=>e===this.credentials.password||"Passwords must match"]},formModel:{},credentials:{username:"",password:"",passwordConfirm:""},submitButtonEnabled:!1,registerMode:!1,mdiLogin:Te}},computed:{...p(Ae,{formErrors:e=>e.form.errors,formSuccess:e=>e.form.success}),...p(v,{adminFlags:e=>e.adminFlags,MIN_PASSWORD_LEN:e=>e.MIN_PASSWORD_LEN}),...Pe(v,["showLoginDialog"]),submitButtonLabel(){return this.registerMode?"Register":"Login"},loginLabel(){let e="Login";return this.adminFlags.registration&&(e+=" or Register"),e}},watch:{showLoginDialog(e){e&&(this.loadAdminFlags(),this.$refs.form&&this.$refs.form.reset())},credentials:{handler(){const e=this.$refs.form;e?e.validate().then(({valid:t})=>(this.submitButtonEnabled=t,this.submitButtonEnabled)).catch(console.error):this.submitButtonEnabled=!1},deep:!0}},mounted(){globalThis.addEventListener("keyup",this._keyUpListener)},beforeUnmount(){globalThis.removeEventListener("keyup",this._keyUpListener)},methods:{...ae(v,["loadAdminFlags","login","register"]),doAuth(e){return this[e](this.credentials).then(()=>(this.showLoginDialog=this.formErrors&&this.formErrors.length>0,this.showLoginDialog)).catch(console.error)},submit(){this.$refs.form.validate().then(({valid:t})=>{if(!t)return;const o=this.registerMode?"register":"login";return this.doAuth(o)}).catch(console.error)},_keyUpListener(e){e.stopImmediatePropagation()}}};function Vt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("SubmitFooter");return c(),m(He,{modelValue:e.showLoginDialog,"onUpdate:modelValue":t[7]||(t[7]=l=>e.showLoginDialog=l),origin:"center-top",transition:"slide-y-transition","max-width":"20em"},{activator:w(({props:l})=>[n(d,I(l,{"prepend-icon":s.mdiLogin,title:i.loginLabel}),null,16,["prepend-icon","title"])]),default:w(()=>[n(je,{id:"authDialog",ref:"form"},{default:w(()=>[n(H,{modelValue:s.credentials.username,"onUpdate:modelValue":t[0]||(t[0]=l=>s.credentials.username=l),autocomplete:"username",label:"Username",rules:s.rules.username,clearable:"",autofocus:"",onKeydown:t[1]||(t[1]=W(l=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),n(H,{ref:"password",modelValue:s.credentials.password,"onUpdate:modelValue":t[2]||(t[2]=l=>s.credentials.password=l),autocomplete:s.registerMode?"new-password":"current-password",label:"Password",rules:s.rules.password,clearable:"",type:"password",onKeydown:t[3]||(t[3]=W(l=>{s.registerMode?e.$refs.passwordConfirm.focus():i.submit()},["enter"]))},null,8,["modelValue","autocomplete","rules"]),n(oe,null,{default:w(()=>[s.registerMode?(c(),m(H,{key:0,ref:"passwordConfirm",modelValue:s.credentials.passwordConfirm,"onUpdate:modelValue":t[4]||(t[4]=l=>s.credentials.passwordConfirm=l),autocomplete:"new-password",label:"Confirm Password",rules:s.rules.passwordConfirm,clearable:"",type:"password",onKeydown:W(i.submit,["enter"])},null,8,["modelValue","rules","onKeydown"])):T("",!0)]),_:1}),e.adminFlags.registration?(c(),m(wt,{key:0,modelValue:s.registerMode,"onUpdate:modelValue":t[5]||(t[5]=l=>s.registerMode=l),label:"Register"},{default:w(()=>[...t[8]||(t[8]=[Ie(" Register ",-1)])]),_:1},8,["modelValue"])):T("",!0),n(u,{verb:s.registerMode?"Register":"Login",table:"",disabled:!s.submitButtonEnabled,onSubmit:i.submit,onCancel:t[6]||(t[6]=l=>e.showLoginDialog=!1)},null,8,["verb","disabled","onSubmit"])]),_:1},512)]),_:1},8,["modelValue"])}const St=V(pt,[["render",Vt],["__scopeId","data-v-f5e28bf6"]]),Ct={name:"AuthMenu",components:{AuthLoginDialog:St,ChangePasswordDialog:Oe,CodexListItem:O},props:{showChangePassword:{type:Boolean,default:!0}},data(){return{mdiLogout:Ee}},computed:{...p(v,{user:e=>e.user}),logoutTitle(){return`Logout ${this.user.username}`}},methods:{...ae(v,["logout"])}},Lt={key:0};function xt(e,t,o,a,s,i){const d=g("CodexListItem"),u=g("ChangePasswordDialog"),l=g("AuthLoginDialog");return e.user?(c(),$e("div",Lt,[n(d,{"prepend-icon":s.mdiLogout,title:i.logoutTitle,onClick:De(e.logout,["stop"])},null,8,["prepend-icon","title","onClick"]),o.showChangePassword?(c(),m(u,{key:0,user:e.user},null,8,["user"])):T("",!0)])):(c(),m(l,{key:1}))}const Bt=V(Ct,[["render",xt]]),Pt={name:"PlaceholderLoading",props:{indeterminate:{type:Boolean,default:!0}}};function At(e,t,o,a,s,i){return c(),m(ie,I({"aria-label":"loading",class:"codexProgressCircular",indeterminate:o.indeterminate},e.$attrs),null,16,["indeterminate"])}const Tt=V(Pt,[["render",At],["__scopeId","data-v-7bb4cf22"]]),It=$({actionText:String,bgColor:String,color:String,icon:Re,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...R(),...de(),...lt({size:void 0}),...ee()},"VEmptyState"),Et=E()({name:"VEmptyState",props:It(),emits:{"click:action":e=>!0},setup(e,t){let{emit:o,slots:a}=t;const{themeClasses:s}=Y(e),{backgroundColorClasses:i,backgroundColorStyles:d}=ne(()=>e.bgColor),{dimensionStyles:u}=re(e),{displayClasses:l}=Me();function b(f){o("click:action",f)}return D(()=>{const f=!!(a.actions||e.actionText),y=!!(a.headline||e.headline),_=!!(a.title||e.title),x=!!(a.text||e.text),B=!!(a.media||e.image||e.icon),h=e.size||(e.image?200:96);return r("div",{class:L(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},s.value,i.value,l.value,e.class]),style:C([d.value,u.value,e.style])},[B&&r("div",{key:"media",class:"v-empty-state__media"},[a.media?n(S,{key:"media-defaults",defaults:{VImg:{src:e.image,height:h},VIcon:{size:h,icon:e.icon}}},{default:()=>[a.media()]}):r(te,null,[e.image?n(se,{key:"image",src:e.image,height:h},null):e.icon?n(le,{key:"icon",color:e.color,size:h,icon:e.icon},null):void 0])]),y&&r("div",{key:"headline",class:"v-empty-state__headline"},[a.headline?.()??e.headline]),_&&r("div",{key:"title",class:"v-empty-state__title"},[a.title?.()??e.title]),x&&r("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:A(e.textWidth)}},[a.text?.()??e.text]),a.default&&r("div",{key:"content",class:"v-empty-state__content"},[a.default()]),f&&r("div",{key:"actions",class:"v-empty-state__actions"},[n(S,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>[a.actions?.({props:{onClick:b}})??n(it,{onClick:b},null)]})])])}),{}}}),$t={name:"EmptyState"};function Dt(e,t,o,a,s,i){return c(),m(Et,{class:"empty"},Fe({_:2},[Ue(e.$slots,(d,u)=>({name:u,fn:w(l=>[Ne(e.$slots,u,I({props:d},l),void 0,!0)])}))]),1024)}const Mt=V($t,[["render",Dt],["__scopeId","data-v-c7e33c8c"]]),Rt=$({scrollable:Boolean,...R(),...de(),...K({tag:"main"})},"VMain"),Ft=E()({name:"VMain",props:Rt(),setup(e,t){let{slots:o}=t;const{dimensionStyles:a}=re(e),{mainStyles:s}=ze(),{ssrBootStyles:i}=rt();return D(()=>n(e.tag,{class:L(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:C([s.value,i.value,a.value,e.style])},{default:()=>[e.scrollable?r("div",{class:"v-main__scroller"},[o.default?.()]):o.default?.()]})),{}}}),Ut={name:"UnauthorizedEmptyState",components:{AppBanner:vt,AdminBrowserLink:_t,AuthMenu:Bt,PlaceholderLoading:Tt,EmptyState:Mt},props:{admin:{type:Boolean,default:!1}},data(){return{mdiLockOutline:We}},computed:{...p(v,["isAuthChecked","isAuthorized","isUserAdmin"]),...p(v,{showAdminBrowserLink(e){return this.$router.currentRoute?.value?.name?.startsWith("admin")&&e.adminFlags.nonUsers},text(e){return e.adminFlags.registration?"":"Registration is disabled"}})}},Nt={class:"login"};function zt(e,t,o,a,s,i){const d=g("AppBanner"),u=g("AdminBrowserLink"),l=g("AuthMenu"),b=g("EmptyState"),f=g("PlaceholderLoading");return c(),m(Ft,{id:"unauthorized"},{default:w(()=>[n(d),e.isAuthChecked?(c(),m(b,{key:0,class:"empty",headline:"Unauthorized",text:e.text,icon:s.mdiLockOutline},{default:w(()=>[r("div",Nt,[e.showAdminBrowserLink?(c(),m(u,{key:0})):T("",!0),n(l,{"show-change-password":!1})])]),_:1},8,["text","icon"])):(c(),m(f,{key:1,id:"unauthorizedPlaceholder"}))]),_:1})}const Qt=V(Ut,[["render",zt],["__scopeId","data-v-4d9418eb"]]);export{vt as A,Mt as E,Tt as P,Qt as U,ft as V,ut as a,_t as b,Ft as c,Bt as d};
@@ -1 +1 @@
1
- import{_ as V,D as y,G as c,v as b,w as u,a as r,I as v,Z as h,x as i,N as C,b as n,y as l,H as E,ap as I,z as j,A as m}from"./main-d46UvpG6.js";import{A as x,R as N,a as z,b as B,c as L}from"./relation-chips-D2XLYFHm.js";import{useAdminStore as p}from"./admin-C6VbbEgi.js";import{c as f}from"./VSelectionControl-xYnmeS9J.js";import{V as U}from"./VCheckbox-DSiToISz.js";import{D as O}from"./datetime-column-cHNNkd7r.js";import{a as G}from"./change-password-dialog-DoBLv9WU.js";import{V as k}from"./VCheckboxBtn-CYmOhPsT.js";import"./forwardRefs-BXEe8ItZ.js";import"./VForm-BNXhV_uk.js";import"./VDialog-BFf48e97.js";import"./VSelect-DIXHkKJm.js";import"./ssrBoot-Bn2PfqMS.js";import"./VDivider-Dtis_q2S.js";import"./VTable-BK7gXlps.js";import"./filter-Bu2xCEP4.js";import"./confirm-dialog-WKjj039l.js";const D=["username","isStaff","isActive","groups"];Object.freeze(D);const A={username:"",password:"",passwordConfirm:"",isStaff:!1,isActive:!0,groups:[]};Object.freeze(A);const J={name:"AdminUserCreateUpdateInputs",components:{AdminRelationPicker:x},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{username:[e=>!!e||"Username is required",e=>!!e&&!this.usernames.has(e.trim())||"Username already used"],password:[e=>!!e||"Password is required"],passwordConfirm:[e=>e===this.row.password||"Passwords must match"]},row:C(this.oldRow||A)}},computed:{...c(p,{groups:e=>e.groups,users:e=>e.users}),usernames(){return this.nameSet(this.users,"username",this.oldRow,!0)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=C(e)},deep:!0}},methods:{...y(p,["nameSet"])},UPDATE_KEYS:D,EMPTY_ROW:A},K={key:0};function Y(e,s,g,R,o,S){const d=i("AdminRelationPicker");return u(),b("div",null,[r(f,{modelValue:o.row.username,"onUpdate:modelValue":s[0]||(s[0]=a=>o.row.username=a),autocomplete:"username",label:"Username",rules:o.rules.username,clearable:"",autofocus:"",onKeydown:s[1]||(s[1]=h(a=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),g.oldRow?v("",!0):(u(),b("div",K,[r(f,{ref:"password",modelValue:o.row.password,"onUpdate:modelValue":s[2]||(s[2]=a=>o.row.password=a),autocomplete:"new-password",label:"Password",rules:o.rules.password,clearable:"",type:"password",onKeydown:s[3]||(s[3]=h(a=>e.$refs.passwordConfirm.focus(),["enter"]))},null,8,["modelValue","rules"]),r(f,{ref:"passwordConfirm",modelValue:o.row.passwordConfirm,"onUpdate:modelValue":s[4]||(s[4]=a=>o.row.passwordConfirm=a),autocomplete:"new-password",label:"Confirm Password",rules:o.rules.passwordConfirm,clearable:"",type:"password"},null,8,["modelValue","rules"])])),r(U,{modelValue:o.row.isStaff,"onUpdate:modelValue":s[5]||(s[5]=a=>o.row.isStaff=a),label:"Is Staff"},null,8,["modelValue"]),r(U,{modelValue:o.row.isActive,"onUpdate:modelValue":s[6]||(s[6]=a=>o.row.isActive=a),label:"Is Active"},null,8,["modelValue"]),r(d,{modelValue:o.row.groups,"onUpdate:modelValue":s[7]||(s[7]=a=>o.row.groups=a),label:"Groups",objs:e.groups,"title-key":"name","group-type":""},null,8,["modelValue","objs"])])}const M=V(J,[["render",Y]]),q={name:"AdminUsersTab",components:{AdminTable:L,AdminDeleteRowDialog:B,ChangePasswordDialog:G,AdminCreateUpdateDialog:z,DateTimeColumn:O,RelationChips:N},data(){return{AdminUserCreateUpdateInputs:I(M),headers:[{title:"Username",key:"username",align:"start"},{title:"Staff",key:"isStaff"},{title:"Active",key:"isActive"},{title:"Groups",key:"groups"},{title:"Last Active",key:"lastActive"},{title:"Last Login",key:"lastLogin"},{title:"Joined",key:"dateJoined"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...c(p,{users:e=>e.users,groups:e=>e.groups}),...c(E,{me:e=>e.user})},mounted(){this.loadTables(["Group","User"])},methods:{...y(p,["loadTables"])}},H={class:"tabHeader"};function F(e,s,g,R,o,S){const d=i("AdminCreateUpdateDialog"),a=i("RelationChips"),w=i("DateTimeColumn"),T=i("ChangePasswordDialog"),_=i("AdminDeleteRowDialog"),P=i("AdminTable");return u(),b("div",null,[n("header",H,[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"max-width":"20em"},null,8,["inputs"])]),r(P,{"item-title":"username",headers:o.headers,items:e.users},{"no-data":l(()=>[...s[0]||(s[0]=[n("td",{class:"adminNoData",colspan:"100%"},[m(" No Users. "),n("div",null,[m(" This is an error. There should always be at least one Staff user."),n("br"),m(" You should not be able to see this page"),n("br"),m(" You should restart Codex with the CODEX_RESET_ADMIN=1 variable set."),n("br"),m(" See the "),n("a",{href:"https://github.com/ajslater/codex#reset-the-admin-password",target:"_blank"}," README ")])],-1)])]),"item.isStaff":l(({item:t})=>[r(k,{"model-value":t.isStaff,disabled:""},null,8,["model-value"])]),"item.isActive":l(({item:t})=>[r(k,{"model-value":t.isActive,disabled:""},null,8,["model-value"])]),"item.groups":l(({item:t})=>[r(a,{pks:t.groups,objs:e.groups,"title-key":"name","group-type":""},null,8,["pks","objs"])]),"item.lastActive":l(({item:t})=>[r(w,{dttm:t.lastActive},null,8,["dttm"])]),"item.lastLogin":l(({item:t})=>[r(w,{dttm:t.lastLogin},null,8,["dttm"])]),"item.dateJoined":l(({item:t})=>[r(w,{dttm:t.dateJoined},null,8,["dttm"])]),"item.actions":l(({item:t})=>[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"old-row":t,"max-width":"20em",size:"small",density:"compact"},null,8,["inputs","old-row"]),r(T,{user:t,"is-admin-mode":!0,size:"small",density:"compact"},null,8,["user"]),e.me.id!==t.pk?(u(),j(_,{key:0,table:"User",pk:t.pk,name:t.username,size:"small",density:"compact"},null,8,["pk","name"])):v("",!0)]),_:2},1032,["headers","items"])])}const pe=V(q,[["render",F]]);export{pe as default};
1
+ import{_ as V,D as y,G as c,v as b,y as u,a as r,I as v,Z as h,w as i,N as C,b as n,x as l,H as E,ap as I,z as j,A as m}from"./main-CWTxsB_K.js";import{A as x,R as N,a as z,b as B,c as L}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as p}from"./admin-BStn9kk0.js";import{c as f}from"./VSelectionControl-DFaQ_klW.js";import{V as U}from"./VCheckbox-BY6G_rgf.js";import{D as O}from"./datetime-column-CzIyyJDK.js";import{a as G}from"./change-password-dialog-CEdhZwC3.js";import{V as k}from"./VCheckboxBtn-zhUZJChm.js";import"./forwardRefs-CnxuGwpi.js";import"./VForm-Dt0Uesri.js";import"./VDialog-mZQ1Va-c.js";import"./VSelect-DpnHasju.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./VTable-MenML-QS.js";import"./filter-BfEbIpVl.js";import"./confirm-dialog-X8W3euvh.js";const D=["username","isStaff","isActive","groups"];Object.freeze(D);const A={username:"",password:"",passwordConfirm:"",isStaff:!1,isActive:!0,groups:[]};Object.freeze(A);const J={name:"AdminUserCreateUpdateInputs",components:{AdminRelationPicker:x},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{username:[e=>!!e||"Username is required",e=>!!e&&!this.usernames.has(e.trim())||"Username already used"],password:[e=>!!e||"Password is required"],passwordConfirm:[e=>e===this.row.password||"Passwords must match"]},row:C(this.oldRow||A)}},computed:{...c(p,{groups:e=>e.groups,users:e=>e.users}),usernames(){return this.nameSet(this.users,"username",this.oldRow,!0)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=C(e)},deep:!0}},methods:{...y(p,["nameSet"])},UPDATE_KEYS:D,EMPTY_ROW:A},K={key:0};function Y(e,s,g,R,o,S){const d=i("AdminRelationPicker");return u(),b("div",null,[r(f,{modelValue:o.row.username,"onUpdate:modelValue":s[0]||(s[0]=a=>o.row.username=a),autocomplete:"username",label:"Username",rules:o.rules.username,clearable:"",autofocus:"",onKeydown:s[1]||(s[1]=h(a=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),g.oldRow?v("",!0):(u(),b("div",K,[r(f,{ref:"password",modelValue:o.row.password,"onUpdate:modelValue":s[2]||(s[2]=a=>o.row.password=a),autocomplete:"new-password",label:"Password",rules:o.rules.password,clearable:"",type:"password",onKeydown:s[3]||(s[3]=h(a=>e.$refs.passwordConfirm.focus(),["enter"]))},null,8,["modelValue","rules"]),r(f,{ref:"passwordConfirm",modelValue:o.row.passwordConfirm,"onUpdate:modelValue":s[4]||(s[4]=a=>o.row.passwordConfirm=a),autocomplete:"new-password",label:"Confirm Password",rules:o.rules.passwordConfirm,clearable:"",type:"password"},null,8,["modelValue","rules"])])),r(U,{modelValue:o.row.isStaff,"onUpdate:modelValue":s[5]||(s[5]=a=>o.row.isStaff=a),label:"Is Staff"},null,8,["modelValue"]),r(U,{modelValue:o.row.isActive,"onUpdate:modelValue":s[6]||(s[6]=a=>o.row.isActive=a),label:"Is Active"},null,8,["modelValue"]),r(d,{modelValue:o.row.groups,"onUpdate:modelValue":s[7]||(s[7]=a=>o.row.groups=a),label:"Groups",objs:e.groups,"title-key":"name","group-type":""},null,8,["modelValue","objs"])])}const M=V(J,[["render",Y]]),q={name:"AdminUsersTab",components:{AdminTable:L,AdminDeleteRowDialog:B,ChangePasswordDialog:G,AdminCreateUpdateDialog:z,DateTimeColumn:O,RelationChips:N},data(){return{AdminUserCreateUpdateInputs:I(M),headers:[{title:"Username",key:"username",align:"start"},{title:"Staff",key:"isStaff"},{title:"Active",key:"isActive"},{title:"Groups",key:"groups"},{title:"Last Active",key:"lastActive"},{title:"Last Login",key:"lastLogin"},{title:"Joined",key:"dateJoined"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...c(p,{users:e=>e.users,groups:e=>e.groups}),...c(E,{me:e=>e.user})},mounted(){this.loadTables(["Group","User"])},methods:{...y(p,["loadTables"])}},H={class:"tabHeader"};function F(e,s,g,R,o,S){const d=i("AdminCreateUpdateDialog"),a=i("RelationChips"),w=i("DateTimeColumn"),T=i("ChangePasswordDialog"),_=i("AdminDeleteRowDialog"),P=i("AdminTable");return u(),b("div",null,[n("header",H,[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"max-width":"20em"},null,8,["inputs"])]),r(P,{"item-title":"username",headers:o.headers,items:e.users},{"no-data":l(()=>[...s[0]||(s[0]=[n("td",{class:"adminNoData",colspan:"100%"},[m(" No Users. "),n("div",null,[m(" This is an error. There should always be at least one Staff user."),n("br"),m(" You should not be able to see this page"),n("br"),m(" You should restart Codex with the CODEX_RESET_ADMIN=1 variable set."),n("br"),m(" See the "),n("a",{href:"https://github.com/ajslater/codex#reset-the-admin-password",target:"_blank"}," README ")])],-1)])]),"item.isStaff":l(({item:t})=>[r(k,{"model-value":t.isStaff,disabled:""},null,8,["model-value"])]),"item.isActive":l(({item:t})=>[r(k,{"model-value":t.isActive,disabled:""},null,8,["model-value"])]),"item.groups":l(({item:t})=>[r(a,{pks:t.groups,objs:e.groups,"title-key":"name","group-type":""},null,8,["pks","objs"])]),"item.lastActive":l(({item:t})=>[r(w,{dttm:t.lastActive},null,8,["dttm"])]),"item.lastLogin":l(({item:t})=>[r(w,{dttm:t.lastLogin},null,8,["dttm"])]),"item.dateJoined":l(({item:t})=>[r(w,{dttm:t.dateJoined},null,8,["dttm"])]),"item.actions":l(({item:t})=>[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"old-row":t,"max-width":"20em",size:"small",density:"compact"},null,8,["inputs","old-row"]),r(T,{user:t,"is-admin-mode":!0,size:"small",density:"compact"},null,8,["user"]),e.me.id!==t.pk?(u(),j(_,{key:0,table:"User",pk:t.pk,name:t.username,size:"small",density:"compact"},null,8,["pk","name"])):v("",!0)]),_:2},1032,["headers","items"])])}const pe=V(q,[["render",F]]);export{pe as default};
@@ -1 +1 @@
1
- import{_ as V,D as y,G as c,v as b,w as u,a as r,I as v,Z as h,x as i,N as C,b as n,y as l,H as E,ap as I,z as j,A as m}from"./main-d46UvpG6.js";import{A as x,R as N,a as z,b as B,c as L}from"./relation-chips-D2XLYFHm.js";import{useAdminStore as p}from"./admin-C6VbbEgi.js";import{c as f}from"./VSelectionControl-xYnmeS9J.js";import{V as U}from"./VCheckbox-DSiToISz.js";import{D as O}from"./datetime-column-cHNNkd7r.js";import{a as G}from"./change-password-dialog-DoBLv9WU.js";import{V as k}from"./VCheckboxBtn-CYmOhPsT.js";import"./forwardRefs-BXEe8ItZ.js";import"./VForm-BNXhV_uk.js";import"./VDialog-BFf48e97.js";import"./VSelect-DIXHkKJm.js";import"./ssrBoot-Bn2PfqMS.js";import"./VDivider-Dtis_q2S.js";import"./VTable-BK7gXlps.js";import"./filter-Bu2xCEP4.js";import"./confirm-dialog-WKjj039l.js";const D=["username","isStaff","isActive","groups"];Object.freeze(D);const A={username:"",password:"",passwordConfirm:"",isStaff:!1,isActive:!0,groups:[]};Object.freeze(A);const J={name:"AdminUserCreateUpdateInputs",components:{AdminRelationPicker:x},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{username:[e=>!!e||"Username is required",e=>!!e&&!this.usernames.has(e.trim())||"Username already used"],password:[e=>!!e||"Password is required"],passwordConfirm:[e=>e===this.row.password||"Passwords must match"]},row:C(this.oldRow||A)}},computed:{...c(p,{groups:e=>e.groups,users:e=>e.users}),usernames(){return this.nameSet(this.users,"username",this.oldRow,!0)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=C(e)},deep:!0}},methods:{...y(p,["nameSet"])},UPDATE_KEYS:D,EMPTY_ROW:A},K={key:0};function Y(e,s,g,R,o,S){const d=i("AdminRelationPicker");return u(),b("div",null,[r(f,{modelValue:o.row.username,"onUpdate:modelValue":s[0]||(s[0]=a=>o.row.username=a),autocomplete:"username",label:"Username",rules:o.rules.username,clearable:"",autofocus:"",onKeydown:s[1]||(s[1]=h(a=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),g.oldRow?v("",!0):(u(),b("div",K,[r(f,{ref:"password",modelValue:o.row.password,"onUpdate:modelValue":s[2]||(s[2]=a=>o.row.password=a),autocomplete:"new-password",label:"Password",rules:o.rules.password,clearable:"",type:"password",onKeydown:s[3]||(s[3]=h(a=>e.$refs.passwordConfirm.focus(),["enter"]))},null,8,["modelValue","rules"]),r(f,{ref:"passwordConfirm",modelValue:o.row.passwordConfirm,"onUpdate:modelValue":s[4]||(s[4]=a=>o.row.passwordConfirm=a),autocomplete:"new-password",label:"Confirm Password",rules:o.rules.passwordConfirm,clearable:"",type:"password"},null,8,["modelValue","rules"])])),r(U,{modelValue:o.row.isStaff,"onUpdate:modelValue":s[5]||(s[5]=a=>o.row.isStaff=a),label:"Is Staff"},null,8,["modelValue"]),r(U,{modelValue:o.row.isActive,"onUpdate:modelValue":s[6]||(s[6]=a=>o.row.isActive=a),label:"Is Active"},null,8,["modelValue"]),r(d,{modelValue:o.row.groups,"onUpdate:modelValue":s[7]||(s[7]=a=>o.row.groups=a),label:"Groups",objs:e.groups,"title-key":"name","group-type":""},null,8,["modelValue","objs"])])}const M=V(J,[["render",Y]]),q={name:"AdminUsersTab",components:{AdminTable:L,AdminDeleteRowDialog:B,ChangePasswordDialog:G,AdminCreateUpdateDialog:z,DateTimeColumn:O,RelationChips:N},data(){return{AdminUserCreateUpdateInputs:I(M),headers:[{title:"Username",key:"username",align:"start"},{title:"Staff",key:"isStaff"},{title:"Active",key:"isActive"},{title:"Groups",key:"groups"},{title:"Last Active",key:"lastActive"},{title:"Last Login",key:"lastLogin"},{title:"Joined",key:"dateJoined"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...c(p,{users:e=>e.users,groups:e=>e.groups}),...c(E,{me:e=>e.user})},mounted(){this.loadTables(["Group","User"])},methods:{...y(p,["loadTables"])}},H={class:"tabHeader"};function F(e,s,g,R,o,S){const d=i("AdminCreateUpdateDialog"),a=i("RelationChips"),w=i("DateTimeColumn"),T=i("ChangePasswordDialog"),_=i("AdminDeleteRowDialog"),P=i("AdminTable");return u(),b("div",null,[n("header",H,[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"max-width":"20em"},null,8,["inputs"])]),r(P,{"item-title":"username",headers:o.headers,items:e.users},{"no-data":l(()=>[...s[0]||(s[0]=[n("td",{class:"adminNoData",colspan:"100%"},[m(" No Users. "),n("div",null,[m(" This is an error. There should always be at least one Staff user."),n("br"),m(" You should not be able to see this page"),n("br"),m(" You should restart Codex with the CODEX_RESET_ADMIN=1 variable set."),n("br"),m(" See the "),n("a",{href:"https://github.com/ajslater/codex#reset-the-admin-password",target:"_blank"}," README ")])],-1)])]),"item.isStaff":l(({item:t})=>[r(k,{"model-value":t.isStaff,disabled:""},null,8,["model-value"])]),"item.isActive":l(({item:t})=>[r(k,{"model-value":t.isActive,disabled:""},null,8,["model-value"])]),"item.groups":l(({item:t})=>[r(a,{pks:t.groups,objs:e.groups,"title-key":"name","group-type":""},null,8,["pks","objs"])]),"item.lastActive":l(({item:t})=>[r(w,{dttm:t.lastActive},null,8,["dttm"])]),"item.lastLogin":l(({item:t})=>[r(w,{dttm:t.lastLogin},null,8,["dttm"])]),"item.dateJoined":l(({item:t})=>[r(w,{dttm:t.dateJoined},null,8,["dttm"])]),"item.actions":l(({item:t})=>[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"old-row":t,"max-width":"20em",size:"small",density:"compact"},null,8,["inputs","old-row"]),r(T,{user:t,"is-admin-mode":!0,size:"small",density:"compact"},null,8,["user"]),e.me.id!==t.pk?(u(),j(_,{key:0,table:"User",pk:t.pk,name:t.username,size:"small",density:"compact"},null,8,["pk","name"])):v("",!0)]),_:2},1032,["headers","items"])])}const pe=V(q,[["render",F]]);export{pe as default};
1
+ import{_ as V,D as y,G as c,v as b,y as u,a as r,I as v,Z as h,w as i,N as C,b as n,x as l,H as E,ap as I,z as j,A as m}from"./main-CWTxsB_K.js";import{A as x,R as N,a as z,b as B,c as L}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as p}from"./admin-BStn9kk0.js";import{c as f}from"./VSelectionControl-DFaQ_klW.js";import{V as U}from"./VCheckbox-BY6G_rgf.js";import{D as O}from"./datetime-column-CzIyyJDK.js";import{a as G}from"./change-password-dialog-CEdhZwC3.js";import{V as k}from"./VCheckboxBtn-zhUZJChm.js";import"./forwardRefs-CnxuGwpi.js";import"./VForm-Dt0Uesri.js";import"./VDialog-mZQ1Va-c.js";import"./VSelect-DpnHasju.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./VTable-MenML-QS.js";import"./filter-BfEbIpVl.js";import"./confirm-dialog-X8W3euvh.js";const D=["username","isStaff","isActive","groups"];Object.freeze(D);const A={username:"",password:"",passwordConfirm:"",isStaff:!1,isActive:!0,groups:[]};Object.freeze(A);const J={name:"AdminUserCreateUpdateInputs",components:{AdminRelationPicker:x},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{username:[e=>!!e||"Username is required",e=>!!e&&!this.usernames.has(e.trim())||"Username already used"],password:[e=>!!e||"Password is required"],passwordConfirm:[e=>e===this.row.password||"Passwords must match"]},row:C(this.oldRow||A)}},computed:{...c(p,{groups:e=>e.groups,users:e=>e.users}),usernames(){return this.nameSet(this.users,"username",this.oldRow,!0)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=C(e)},deep:!0}},methods:{...y(p,["nameSet"])},UPDATE_KEYS:D,EMPTY_ROW:A},K={key:0};function Y(e,s,g,R,o,S){const d=i("AdminRelationPicker");return u(),b("div",null,[r(f,{modelValue:o.row.username,"onUpdate:modelValue":s[0]||(s[0]=a=>o.row.username=a),autocomplete:"username",label:"Username",rules:o.rules.username,clearable:"",autofocus:"",onKeydown:s[1]||(s[1]=h(a=>e.$refs.password.focus(),["enter"]))},null,8,["modelValue","rules"]),g.oldRow?v("",!0):(u(),b("div",K,[r(f,{ref:"password",modelValue:o.row.password,"onUpdate:modelValue":s[2]||(s[2]=a=>o.row.password=a),autocomplete:"new-password",label:"Password",rules:o.rules.password,clearable:"",type:"password",onKeydown:s[3]||(s[3]=h(a=>e.$refs.passwordConfirm.focus(),["enter"]))},null,8,["modelValue","rules"]),r(f,{ref:"passwordConfirm",modelValue:o.row.passwordConfirm,"onUpdate:modelValue":s[4]||(s[4]=a=>o.row.passwordConfirm=a),autocomplete:"new-password",label:"Confirm Password",rules:o.rules.passwordConfirm,clearable:"",type:"password"},null,8,["modelValue","rules"])])),r(U,{modelValue:o.row.isStaff,"onUpdate:modelValue":s[5]||(s[5]=a=>o.row.isStaff=a),label:"Is Staff"},null,8,["modelValue"]),r(U,{modelValue:o.row.isActive,"onUpdate:modelValue":s[6]||(s[6]=a=>o.row.isActive=a),label:"Is Active"},null,8,["modelValue"]),r(d,{modelValue:o.row.groups,"onUpdate:modelValue":s[7]||(s[7]=a=>o.row.groups=a),label:"Groups",objs:e.groups,"title-key":"name","group-type":""},null,8,["modelValue","objs"])])}const M=V(J,[["render",Y]]),q={name:"AdminUsersTab",components:{AdminTable:L,AdminDeleteRowDialog:B,ChangePasswordDialog:G,AdminCreateUpdateDialog:z,DateTimeColumn:O,RelationChips:N},data(){return{AdminUserCreateUpdateInputs:I(M),headers:[{title:"Username",key:"username",align:"start"},{title:"Staff",key:"isStaff"},{title:"Active",key:"isActive"},{title:"Groups",key:"groups"},{title:"Last Active",key:"lastActive"},{title:"Last Login",key:"lastLogin"},{title:"Joined",key:"dateJoined"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...c(p,{users:e=>e.users,groups:e=>e.groups}),...c(E,{me:e=>e.user})},mounted(){this.loadTables(["Group","User"])},methods:{...y(p,["loadTables"])}},H={class:"tabHeader"};function F(e,s,g,R,o,S){const d=i("AdminCreateUpdateDialog"),a=i("RelationChips"),w=i("DateTimeColumn"),T=i("ChangePasswordDialog"),_=i("AdminDeleteRowDialog"),P=i("AdminTable");return u(),b("div",null,[n("header",H,[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"max-width":"20em"},null,8,["inputs"])]),r(P,{"item-title":"username",headers:o.headers,items:e.users},{"no-data":l(()=>[...s[0]||(s[0]=[n("td",{class:"adminNoData",colspan:"100%"},[m(" No Users. "),n("div",null,[m(" This is an error. There should always be at least one Staff user."),n("br"),m(" You should not be able to see this page"),n("br"),m(" You should restart Codex with the CODEX_RESET_ADMIN=1 variable set."),n("br"),m(" See the "),n("a",{href:"https://github.com/ajslater/codex#reset-the-admin-password",target:"_blank"}," README ")])],-1)])]),"item.isStaff":l(({item:t})=>[r(k,{"model-value":t.isStaff,disabled:""},null,8,["model-value"])]),"item.isActive":l(({item:t})=>[r(k,{"model-value":t.isActive,disabled:""},null,8,["model-value"])]),"item.groups":l(({item:t})=>[r(a,{pks:t.groups,objs:e.groups,"title-key":"name","group-type":""},null,8,["pks","objs"])]),"item.lastActive":l(({item:t})=>[r(w,{dttm:t.lastActive},null,8,["dttm"])]),"item.lastLogin":l(({item:t})=>[r(w,{dttm:t.lastLogin},null,8,["dttm"])]),"item.dateJoined":l(({item:t})=>[r(w,{dttm:t.dateJoined},null,8,["dttm"])]),"item.actions":l(({item:t})=>[r(d,{table:"User",inputs:o.AdminUserCreateUpdateInputs,"old-row":t,"max-width":"20em",size:"small",density:"compact"},null,8,["inputs","old-row"]),r(T,{user:t,"is-admin-mode":!0,size:"small",density:"compact"},null,8,["user"]),e.me.id!==t.pk?(u(),j(_,{key:0,table:"User",pk:t.pk,name:t.username,size:"small",density:"compact"},null,8,["pk","name"])):v("",!0)]),_:2},1032,["headers","items"])])}const pe=V(q,[["render",F]]);export{pe as default};