codex 1.8.13__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.
- codex/__init__.py +1 -1
- codex/librarian/scribe/importer/link/delete.py +2 -2
- codex/librarian/scribe/importer/read/foreign_keys.py +1 -1
- codex/librarian/scribe/importer/tasks.py +3 -3
- codex/librarian/telemeter/scheduled_time.py +2 -1
- codex/serializers/browser/choices.py +1 -1
- codex/signals/os_signals.py +8 -3
- codex/startup/__init__.py +2 -2
- codex/startup/logger_init.py +2 -2
- codex/static_root/assets/VCheckbox-BY6G_rgf.269e45107a7a.js +1 -0
- codex/static_root/assets/VCheckbox-BY6G_rgf.269e45107a7a.js.br +0 -0
- codex/static_root/assets/VCheckbox-BY6G_rgf.269e45107a7a.js.gz +0 -0
- codex/static_root/assets/VCheckbox-BY6G_rgf.js +1 -0
- codex/static_root/assets/VCheckbox-BY6G_rgf.js.br +0 -0
- codex/static_root/assets/VCheckbox-BY6G_rgf.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-CqdpagcB.890842fbdebe.js → VCheckboxBtn-zhUZJChm.9761785b500b.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-zhUZJChm.9761785b500b.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-zhUZJChm.9761785b500b.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-CqdpagcB.js → VCheckboxBtn-zhUZJChm.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-zhUZJChm.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-zhUZJChm.js.gz +0 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.341d3f641979.css +1 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.341d3f641979.css.br +0 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.341d3f641979.css.gz +0 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.css +1 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.css.br +0 -0
- codex/static_root/assets/VCombobox-D3yUbBJX.css.gz +0 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js +1 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js.br +0 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.88a9aab6b95b.js.gz +0 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.js +1 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.js.br +0 -0
- codex/static_root/assets/VCombobox-O2BHnDUr.js.gz +0 -0
- codex/static_root/assets/{VDialog-CpWjrJ0R.610ffc6302d4.css → VDialog-BN4XvYQH.b7408d9d3262.css} +1 -1
- codex/static_root/assets/VDialog-BN4XvYQH.b7408d9d3262.css.br +0 -0
- codex/static_root/assets/VDialog-BN4XvYQH.b7408d9d3262.css.gz +0 -0
- codex/static_root/assets/{VDialog-CpWjrJ0R.css → VDialog-BN4XvYQH.css} +1 -1
- codex/static_root/assets/VDialog-BN4XvYQH.css.br +0 -0
- codex/static_root/assets/VDialog-BN4XvYQH.css.gz +0 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js +1 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js.br +0 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.d771d0ac6517.js.gz +0 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.js +1 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.js.br +0 -0
- codex/static_root/assets/VDialog-mZQ1Va-c.js.gz +0 -0
- codex/static_root/assets/{VDivider-DU47sRrT.3d2e17799e5c.css → VDivider-CCqJA_fj.b56fac1426ae.css} +1 -1
- codex/static_root/assets/VDivider-CCqJA_fj.b56fac1426ae.css.br +0 -0
- codex/static_root/assets/VDivider-CCqJA_fj.b56fac1426ae.css.gz +0 -0
- codex/static_root/assets/{VDivider-DU47sRrT.css → VDivider-CCqJA_fj.css} +1 -1
- codex/static_root/assets/VDivider-CCqJA_fj.css.br +0 -0
- codex/static_root/assets/VDivider-CCqJA_fj.css.gz +0 -0
- codex/static_root/assets/VDivider-CHTeIL4W.13805a003963.js +1 -0
- codex/static_root/assets/VDivider-CHTeIL4W.13805a003963.js.br +0 -0
- codex/static_root/assets/VDivider-CHTeIL4W.13805a003963.js.gz +0 -0
- codex/static_root/assets/VDivider-CHTeIL4W.js +1 -0
- codex/static_root/assets/VDivider-CHTeIL4W.js.br +0 -0
- codex/static_root/assets/VDivider-CHTeIL4W.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.css +1 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.css.br +0 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.css.gz +0 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.e4aca21014f2.css +1 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.e4aca21014f2.css.br +0 -0
- codex/static_root/assets/VExpansionPanels-B8KjM0Qi.e4aca21014f2.css.gz +0 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.de33285def27.js +1 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.de33285def27.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.de33285def27.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.js +1 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-B8bQXRWn.js.gz +0 -0
- codex/static_root/assets/{VForm-J2mEa_og.ff05ef3e7ff4.js → VForm-Dt0Uesri.5f3eb2e10d58.js} +1 -1
- codex/static_root/assets/VForm-Dt0Uesri.5f3eb2e10d58.js.br +0 -0
- codex/static_root/assets/VForm-Dt0Uesri.5f3eb2e10d58.js.gz +0 -0
- codex/static_root/assets/{VForm-J2mEa_og.js → VForm-Dt0Uesri.js} +1 -1
- codex/static_root/assets/VForm-Dt0Uesri.js.br +0 -0
- codex/static_root/assets/VForm-Dt0Uesri.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js +1 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js.br +0 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.a25611eb0aff.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.js +1 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.js.br +0 -0
- codex/static_root/assets/VRadioGroup-CU9nYUHk.js.gz +0 -0
- codex/static_root/assets/{VSelect-BbzE_-2K.a86df90a9d55.css → VSelect-BvTTr4RP.be69766e6916.css} +1 -1
- codex/static_root/assets/VSelect-BvTTr4RP.be69766e6916.css.br +0 -0
- codex/static_root/assets/VSelect-BvTTr4RP.be69766e6916.css.gz +0 -0
- codex/static_root/assets/{VSelect-BbzE_-2K.css → VSelect-BvTTr4RP.css} +1 -1
- codex/static_root/assets/VSelect-BvTTr4RP.css.br +0 -0
- codex/static_root/assets/VSelect-BvTTr4RP.css.gz +0 -0
- codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js +1 -0
- codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js.br +0 -0
- codex/static_root/assets/VSelect-DpnHasju.6b0e31d58987.js.gz +0 -0
- codex/static_root/assets/VSelect-DpnHasju.js +1 -0
- codex/static_root/assets/VSelect-DpnHasju.js.br +0 -0
- codex/static_root/assets/VSelect-DpnHasju.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.4c77eed94aca.js +1 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.4c77eed94aca.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.4c77eed94aca.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.js +1 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DFaQ_klW.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.css +1 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.css.br +0 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.css.gz +0 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.f3ebc2149a3a.css +1 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.f3ebc2149a3a.css.br +0 -0
- codex/static_root/assets/VSelectionControl-R4GtShoa.f3ebc2149a3a.css.gz +0 -0
- codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js +1 -0
- codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js.br +0 -0
- codex/static_root/assets/VTable-MenML-QS.8d54c08274e1.js.gz +0 -0
- codex/static_root/assets/VTable-MenML-QS.js +1 -0
- codex/static_root/assets/VTable-MenML-QS.js.br +0 -0
- codex/static_root/assets/VTable-MenML-QS.js.gz +0 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.b8bdaea824b5.js +1 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.b8bdaea824b5.js.br +0 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.b8bdaea824b5.js.gz +0 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.js +1 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.js.br +0 -0
- codex/static_root/assets/VWindowItem-62YwEvjG.js.gz +0 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.css +1 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.css.br +0 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.css.gz +0 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.ddad20bc51ba.css +1 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.ddad20bc51ba.css.br +0 -0
- codex/static_root/assets/VWindowItem-CWv03gfN.ddad20bc51ba.css.gz +0 -0
- codex/static_root/assets/{admin-D7dHJsJ4.5a7b2f5af603.js → admin-BStn9kk0.b50ab54d4a08.js} +1 -1
- codex/static_root/assets/admin-BStn9kk0.b50ab54d4a08.js.br +0 -0
- codex/static_root/assets/admin-BStn9kk0.b50ab54d4a08.js.gz +0 -0
- codex/static_root/assets/{admin-D7dHJsJ4.js → admin-BStn9kk0.js} +1 -1
- codex/static_root/assets/admin-BStn9kk0.js.br +0 -0
- codex/static_root/assets/admin-BStn9kk0.js.gz +0 -0
- codex/static_root/assets/{admin-menu-Y-2f4f-t.7c6bffa811c0.js → admin-menu-8MqbD6SS.de80d9c3a174.js} +1 -1
- codex/static_root/assets/admin-menu-8MqbD6SS.de80d9c3a174.js.br +0 -0
- codex/static_root/assets/admin-menu-8MqbD6SS.de80d9c3a174.js.gz +0 -0
- codex/static_root/assets/{admin-menu-Y-2f4f-t.js → admin-menu-8MqbD6SS.js} +1 -1
- codex/static_root/assets/admin-menu-8MqbD6SS.js.br +0 -0
- codex/static_root/assets/admin-menu-8MqbD6SS.js.gz +0 -0
- codex/static_root/assets/admin-ri1JM4_Z.fc516b4b96f2.js +1 -0
- codex/static_root/assets/admin-ri1JM4_Z.fc516b4b96f2.js.br +0 -0
- codex/static_root/assets/admin-ri1JM4_Z.fc516b4b96f2.js.gz +0 -0
- codex/static_root/assets/admin-ri1JM4_Z.js +1 -0
- codex/static_root/assets/admin-ri1JM4_Z.js.br +0 -0
- codex/static_root/assets/admin-ri1JM4_Z.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-CX4KtKvA.37ae80a378e4.js → admin-settings-button-progress-HmQvm62f.6d2798eb3429.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-HmQvm62f.6d2798eb3429.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-HmQvm62f.6d2798eb3429.js.gz +0 -0
- codex/static_root/assets/{admin-settings-button-progress-CX4KtKvA.js → admin-settings-button-progress-HmQvm62f.js} +1 -1
- codex/static_root/assets/admin-settings-button-progress-HmQvm62f.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-HmQvm62f.js.gz +0 -0
- codex/static_root/assets/browser-BQva2GCO.2748e733040b.js +1 -0
- codex/static_root/assets/browser-BQva2GCO.2748e733040b.js.br +0 -0
- codex/static_root/assets/browser-BQva2GCO.2748e733040b.js.gz +0 -0
- codex/static_root/assets/browser-BQva2GCO.js +1 -0
- codex/static_root/assets/browser-BQva2GCO.js.br +0 -0
- codex/static_root/assets/browser-BQva2GCO.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.c41faf4b7311.js +1 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.c41faf4b7311.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.c41faf4b7311.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.js +1 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CEdhZwC3.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-Bc3Bw4Wf.df54617c5796.js → confirm-dialog-X8W3euvh.d9b87f1eeefe.js} +1 -1
- codex/static_root/assets/confirm-dialog-X8W3euvh.d9b87f1eeefe.js.br +0 -0
- codex/static_root/assets/confirm-dialog-X8W3euvh.d9b87f1eeefe.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-Bc3Bw4Wf.js → confirm-dialog-X8W3euvh.js} +1 -1
- codex/static_root/assets/confirm-dialog-X8W3euvh.js.br +0 -0
- codex/static_root/assets/confirm-dialog-X8W3euvh.js.gz +0 -0
- codex/static_root/assets/{datetime-column-zWcVwgyi.03ad8c8b24a1.js → datetime-column-CzIyyJDK.f9be11efa2e2.js} +1 -1
- codex/static_root/assets/datetime-column-CzIyyJDK.f9be11efa2e2.js.br +0 -0
- codex/static_root/assets/datetime-column-CzIyyJDK.f9be11efa2e2.js.gz +0 -0
- codex/static_root/assets/{datetime-column-zWcVwgyi.js → datetime-column-CzIyyJDK.js} +1 -1
- codex/static_root/assets/datetime-column-CzIyyJDK.js.br +0 -0
- codex/static_root/assets/datetime-column-CzIyyJDK.js.gz +0 -0
- codex/static_root/assets/filter-BfEbIpVl.ec48ef2a75bc.js +1 -0
- codex/static_root/assets/filter-BfEbIpVl.ec48ef2a75bc.js.br +0 -0
- codex/static_root/assets/filter-BfEbIpVl.ec48ef2a75bc.js.gz +0 -0
- codex/static_root/assets/filter-BfEbIpVl.js +1 -0
- codex/static_root/assets/filter-BfEbIpVl.js.br +0 -0
- codex/static_root/assets/filter-BfEbIpVl.js.gz +0 -0
- codex/static_root/assets/{flag-tab-GTA-yaU7.7c095722ebed.js → flag-tab-BtZ098bQ.2c417cda39c8.js} +1 -1
- codex/static_root/assets/flag-tab-BtZ098bQ.2c417cda39c8.js.br +0 -0
- codex/static_root/assets/flag-tab-BtZ098bQ.2c417cda39c8.js.gz +0 -0
- codex/static_root/assets/{flag-tab-GTA-yaU7.js → flag-tab-BtZ098bQ.js} +1 -1
- codex/static_root/assets/flag-tab-BtZ098bQ.js.br +0 -0
- codex/static_root/assets/flag-tab-BtZ098bQ.js.gz +0 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.css +1 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.css.br +0 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.css.gz +0 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.d595d41108e3.css +1 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.d595d41108e3.css.br +0 -0
- codex/static_root/assets/forwardRefs-CecUXkvN.d595d41108e3.css.gz +0 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js +1 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js.br +0 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.1c01bc84723c.js.gz +0 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.js +1 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.js.br +0 -0
- codex/static_root/assets/forwardRefs-CnxuGwpi.js.gz +0 -0
- codex/static_root/assets/{group-tab-BSr4dJJW.e36d5a728ebc.js → group-tab-FI6afuX5.a569809fb228.js} +1 -1
- codex/static_root/assets/group-tab-FI6afuX5.a569809fb228.js.br +0 -0
- codex/static_root/assets/group-tab-FI6afuX5.a569809fb228.js.gz +0 -0
- codex/static_root/assets/{group-tab-BSr4dJJW.js → group-tab-FI6afuX5.js} +1 -1
- codex/static_root/assets/group-tab-FI6afuX5.js.br +0 -0
- codex/static_root/assets/group-tab-FI6afuX5.js.gz +0 -0
- codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js +1 -0
- codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js.br +0 -0
- codex/static_root/assets/http-error-BmuMBbvn.9f6b9dc6dc16.js.gz +0 -0
- codex/static_root/assets/http-error-BmuMBbvn.js +1 -0
- codex/static_root/assets/http-error-BmuMBbvn.js.br +0 -0
- codex/static_root/assets/http-error-BmuMBbvn.js.gz +0 -0
- codex/static_root/assets/{index-DOP9KYca.5d9b48ff6f1a.js → index-DXqyJRWg.58b55c49a1ba.js} +1 -1
- codex/static_root/assets/index-DXqyJRWg.58b55c49a1ba.js.br +0 -0
- codex/static_root/assets/index-DXqyJRWg.58b55c49a1ba.js.gz +0 -0
- codex/static_root/assets/{index-DOP9KYca.js → index-DXqyJRWg.js} +1 -1
- codex/static_root/assets/index-DXqyJRWg.js.br +0 -0
- codex/static_root/assets/index-DXqyJRWg.js.gz +0 -0
- codex/static_root/assets/{library-tab-B_PHwUZ-.516218e664f8.js → library-tab-DlGRxHD-.e2e3049de8fe.js} +1 -1
- codex/static_root/assets/library-tab-DlGRxHD-.e2e3049de8fe.js.br +0 -0
- codex/static_root/assets/library-tab-DlGRxHD-.e2e3049de8fe.js.gz +0 -0
- codex/static_root/assets/{library-tab-B_PHwUZ-.js → library-tab-DlGRxHD-.js} +1 -1
- codex/static_root/assets/library-tab-DlGRxHD-.js.br +0 -0
- codex/static_root/assets/library-tab-DlGRxHD-.js.gz +0 -0
- codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js +34 -0
- codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js.br +0 -0
- codex/static_root/assets/main-CWTxsB_K.4890bf9782af.js.gz +0 -0
- codex/static_root/assets/main-CWTxsB_K.js +34 -0
- codex/static_root/assets/main-CWTxsB_K.js.br +0 -0
- codex/static_root/assets/main-CWTxsB_K.js.gz +0 -0
- codex/static_root/assets/{main-B8_0rUnw.a9be0875ae25.css → main-CZN13qLI.12debfe1e227.css} +1 -1
- codex/static_root/assets/main-CZN13qLI.12debfe1e227.css.br +0 -0
- codex/static_root/assets/{main-B8_0rUnw.a9be0875ae25.css.gz → main-CZN13qLI.12debfe1e227.css.gz} +0 -0
- codex/static_root/assets/{main-B8_0rUnw.css → main-CZN13qLI.css} +1 -1
- codex/static_root/assets/main-CZN13qLI.css.br +0 -0
- codex/static_root/assets/{main-B8_0rUnw.css.gz → main-CZN13qLI.css.gz} +0 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js +1 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.12749407ef31.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.js +1 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-BPlguGsn.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js +1 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.3812691bafd5.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.js +1 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-BBoV7kGz.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-BFFOclVi.b0ec00bfb616.js → pdf-doc-DY8a-Suh.4ef483220f83.js} +1 -1
- codex/static_root/assets/pdf-doc-DY8a-Suh.4ef483220f83.js.br +0 -0
- codex/static_root/assets/pdf-doc-DY8a-Suh.4ef483220f83.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-BFFOclVi.js → pdf-doc-DY8a-Suh.js} +1 -1
- codex/static_root/assets/pdf-doc-DY8a-Suh.js.br +0 -0
- codex/static_root/assets/pdf-doc-DY8a-Suh.js.gz +0 -0
- codex/static_root/assets/{reader-DxFZyySj.js → reader-Dqa95yj4.a16f078ebed6.js} +2 -2
- codex/static_root/assets/reader-Dqa95yj4.a16f078ebed6.js.br +0 -0
- codex/static_root/assets/reader-Dqa95yj4.a16f078ebed6.js.gz +0 -0
- codex/static_root/assets/{reader-DxFZyySj.340be27f9b2d.js → reader-Dqa95yj4.js} +2 -2
- codex/static_root/assets/reader-Dqa95yj4.js.br +0 -0
- codex/static_root/assets/reader-Dqa95yj4.js.gz +0 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js +1 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js.br +0 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.ae4d455a85e4.js.gz +0 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.js +1 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.js.br +0 -0
- codex/static_root/assets/relation-chips-DnkUXW6y.js.gz +0 -0
- codex/static_root/assets/relation-chips-WaEhcyda.870ff99b3d8b.css +1 -0
- codex/static_root/assets/relation-chips-WaEhcyda.870ff99b3d8b.css.br +0 -0
- codex/static_root/assets/relation-chips-WaEhcyda.870ff99b3d8b.css.gz +0 -0
- codex/static_root/assets/relation-chips-WaEhcyda.css +1 -0
- codex/static_root/assets/relation-chips-WaEhcyda.css.br +0 -0
- codex/static_root/assets/relation-chips-WaEhcyda.css.gz +0 -0
- codex/static_root/assets/{settings-drawer-BD44Ahju.54110f5e27ec.js → settings-drawer-CrJwaDTj.0ea90e35f48a.js} +2 -2
- codex/static_root/assets/settings-drawer-CrJwaDTj.0ea90e35f48a.js.br +0 -0
- codex/static_root/assets/settings-drawer-CrJwaDTj.0ea90e35f48a.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-BD44Ahju.js → settings-drawer-CrJwaDTj.js} +2 -2
- codex/static_root/assets/settings-drawer-CrJwaDTj.js.br +0 -0
- codex/static_root/assets/settings-drawer-CrJwaDTj.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-D7bFOc4_.9748ddd58be9.css → settings-drawer-d-7mkVdG.15838d8ecd33.css} +1 -1
- codex/static_root/assets/settings-drawer-d-7mkVdG.15838d8ecd33.css.br +0 -0
- codex/static_root/assets/settings-drawer-d-7mkVdG.15838d8ecd33.css.gz +0 -0
- codex/static_root/assets/{settings-drawer-D7bFOc4_.css → settings-drawer-d-7mkVdG.css} +1 -1
- codex/static_root/assets/settings-drawer-d-7mkVdG.css.br +0 -0
- codex/static_root/assets/settings-drawer-d-7mkVdG.css.gz +0 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.33a34fb51966.js +1 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.33a34fb51966.js.br +0 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.33a34fb51966.js.gz +0 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.js +1 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.js.br +0 -0
- codex/static_root/assets/ssrBoot-yM9n-WhK.js.gz +0 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.1b8dcb544e56.js +1 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.1b8dcb544e56.js.br +0 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.1b8dcb544e56.js.gz +0 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.js +1 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.js.br +0 -0
- codex/static_root/assets/stats-tab-R3_2S5KJ.js.gz +0 -0
- codex/static_root/assets/task-tab-DcwExi-z.7745f5bdd4f6.js +1 -0
- codex/static_root/assets/task-tab-DcwExi-z.7745f5bdd4f6.js.br +0 -0
- codex/static_root/assets/task-tab-DcwExi-z.7745f5bdd4f6.js.gz +0 -0
- codex/static_root/assets/task-tab-DcwExi-z.js +1 -0
- codex/static_root/assets/task-tab-DcwExi-z.js.br +0 -0
- codex/static_root/assets/task-tab-DcwExi-z.js.gz +0 -0
- codex/static_root/assets/task-tab-DvSJmG8K.css +1 -0
- codex/static_root/assets/{task-tab-CW4DQ3KN.81812f9208e5.css.br → task-tab-DvSJmG8K.css.br} +1 -1
- codex/static_root/assets/task-tab-DvSJmG8K.css.gz +0 -0
- codex/static_root/assets/task-tab-DvSJmG8K.daf7fb2dfecf.css +1 -0
- codex/static_root/assets/{task-tab-CW4DQ3KN.css.br → task-tab-DvSJmG8K.daf7fb2dfecf.css.br} +1 -1
- codex/static_root/assets/task-tab-DvSJmG8K.daf7fb2dfecf.css.gz +0 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.8a4ba062faeb.css +1 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.8a4ba062faeb.css.br +0 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.8a4ba062faeb.css.gz +0 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.css +1 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.css.br +0 -0
- codex/static_root/assets/unauthorized-ChdZFt-1.css.gz +0 -0
- codex/static_root/assets/{unauthorized-CN4zNUwv.6cef38be7edd.js → unauthorized-DQOfB_66.153b77e5dba9.js} +1 -1
- codex/static_root/assets/unauthorized-DQOfB_66.153b77e5dba9.js.br +0 -0
- codex/static_root/assets/unauthorized-DQOfB_66.153b77e5dba9.js.gz +0 -0
- codex/static_root/assets/{unauthorized-CN4zNUwv.js → unauthorized-DQOfB_66.js} +1 -1
- codex/static_root/assets/unauthorized-DQOfB_66.js.br +0 -0
- codex/static_root/assets/unauthorized-DQOfB_66.js.gz +0 -0
- codex/static_root/assets/{user-tab-BfK1ySCm.24ed1c97836c.js → user-tab-BKyrq81A.7412792291c7.js} +1 -1
- codex/static_root/assets/user-tab-BKyrq81A.7412792291c7.js.br +0 -0
- codex/static_root/assets/user-tab-BKyrq81A.7412792291c7.js.gz +0 -0
- codex/static_root/assets/{user-tab-BfK1ySCm.js → user-tab-BKyrq81A.js} +1 -1
- codex/static_root/assets/user-tab-BKyrq81A.js.br +0 -0
- codex/static_root/assets/user-tab-BKyrq81A.js.gz +0 -0
- codex/static_root/img/missing-cover-165.ef301b6fcf8c.webp +0 -0
- codex/static_root/img/missing-cover-165.webp +0 -0
- codex/static_root/manifest.d1e85b766092.json +760 -0
- codex/static_root/manifest.d1e85b766092.json.br +0 -0
- codex/static_root/manifest.d1e85b766092.json.gz +0 -0
- codex/static_root/manifest.json +330 -330
- codex/static_root/manifest.json.br +0 -0
- codex/static_root/manifest.json.gz +0 -0
- codex/static_root/staticfiles.json +1 -1
- codex/templates/headers-icons.html +0 -5
- codex/templates/pwa/headers.html +1 -1
- codex/templates/pwa/serviceworker.js +0 -1
- codex/urls/root.py +1 -1
- codex/views/browser/annotate/order.py +1 -1
- codex/views/browser/group_mtime.py +1 -1
- codex/views/browser/params.py +1 -1
- codex/views/reader/params.py +1 -1
- codex/views/settings.py +2 -1
- {codex-1.8.13.dist-info → codex-1.8.16.dist-info}/METADATA +5 -5
- codex-1.8.16.dist-info/RECORD +1102 -0
- {codex-1.8.13.dist-info → codex-1.8.16.dist-info}/WHEEL +1 -1
- codex/static_root/assets/VCheckbox-BwGe90i7.05dba0fbfebd.js +0 -1
- codex/static_root/assets/VCheckbox-BwGe90i7.05dba0fbfebd.js.br +0 -0
- codex/static_root/assets/VCheckbox-BwGe90i7.05dba0fbfebd.js.gz +0 -0
- codex/static_root/assets/VCheckbox-BwGe90i7.js +0 -1
- codex/static_root/assets/VCheckbox-BwGe90i7.js.br +0 -0
- codex/static_root/assets/VCheckbox-BwGe90i7.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-CqdpagcB.890842fbdebe.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-CqdpagcB.890842fbdebe.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-CqdpagcB.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-CqdpagcB.js.gz +0 -0
- codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css +0 -1
- codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.br +0 -0
- codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.gz +0 -0
- codex/static_root/assets/VCombobox-DHFthaP6.css +0 -1
- codex/static_root/assets/VCombobox-DHFthaP6.css.br +0 -0
- codex/static_root/assets/VCombobox-DHFthaP6.css.gz +0 -0
- codex/static_root/assets/VCombobox-HMiIZRsM.883f0e2ffc0a.js +0 -1
- codex/static_root/assets/VCombobox-HMiIZRsM.883f0e2ffc0a.js.br +0 -0
- codex/static_root/assets/VCombobox-HMiIZRsM.883f0e2ffc0a.js.gz +0 -0
- codex/static_root/assets/VCombobox-HMiIZRsM.js +0 -1
- codex/static_root/assets/VCombobox-HMiIZRsM.js.br +0 -0
- codex/static_root/assets/VCombobox-HMiIZRsM.js.gz +0 -0
- codex/static_root/assets/VDialog-B1OSC1f5.012d5d362d84.js +0 -1
- codex/static_root/assets/VDialog-B1OSC1f5.012d5d362d84.js.br +0 -0
- codex/static_root/assets/VDialog-B1OSC1f5.012d5d362d84.js.gz +0 -0
- codex/static_root/assets/VDialog-B1OSC1f5.js +0 -1
- codex/static_root/assets/VDialog-B1OSC1f5.js.br +0 -0
- codex/static_root/assets/VDialog-B1OSC1f5.js.gz +0 -0
- codex/static_root/assets/VDialog-CpWjrJ0R.610ffc6302d4.css.br +0 -0
- codex/static_root/assets/VDialog-CpWjrJ0R.610ffc6302d4.css.gz +0 -0
- codex/static_root/assets/VDialog-CpWjrJ0R.css.br +0 -0
- codex/static_root/assets/VDialog-CpWjrJ0R.css.gz +0 -0
- codex/static_root/assets/VDivider-6KdInZc6.c4c11ffd8782.js +0 -1
- codex/static_root/assets/VDivider-6KdInZc6.c4c11ffd8782.js.br +0 -0
- codex/static_root/assets/VDivider-6KdInZc6.c4c11ffd8782.js.gz +0 -0
- codex/static_root/assets/VDivider-6KdInZc6.js +0 -1
- codex/static_root/assets/VDivider-6KdInZc6.js.br +0 -0
- codex/static_root/assets/VDivider-6KdInZc6.js.gz +0 -0
- codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.br +0 -0
- codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.gz +0 -0
- codex/static_root/assets/VDivider-DU47sRrT.css.br +0 -0
- codex/static_root/assets/VDivider-DU47sRrT.css.gz +0 -0
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.6614e5f857f1.js +0 -1
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.6614e5f857f1.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.6614e5f857f1.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.js +0 -1
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-Bwkzb0Oy.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css +0 -1
- codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css.br +0 -0
- codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css.gz +0 -0
- codex/static_root/assets/VExpansionPanels-RsCANmDP.css +0 -1
- codex/static_root/assets/VExpansionPanels-RsCANmDP.css.br +0 -0
- codex/static_root/assets/VExpansionPanels-RsCANmDP.css.gz +0 -0
- codex/static_root/assets/VForm-J2mEa_og.ff05ef3e7ff4.js.br +0 -0
- codex/static_root/assets/VForm-J2mEa_og.ff05ef3e7ff4.js.gz +0 -0
- codex/static_root/assets/VForm-J2mEa_og.js.br +0 -0
- codex/static_root/assets/VForm-J2mEa_og.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-jPA1T3rE.b041ec78a828.js +0 -1
- codex/static_root/assets/VRadioGroup-jPA1T3rE.b041ec78a828.js.br +0 -0
- codex/static_root/assets/VRadioGroup-jPA1T3rE.b041ec78a828.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-jPA1T3rE.js +0 -1
- codex/static_root/assets/VRadioGroup-jPA1T3rE.js.br +0 -0
- codex/static_root/assets/VRadioGroup-jPA1T3rE.js.gz +0 -0
- codex/static_root/assets/VSelect-BbzE_-2K.a86df90a9d55.css.br +0 -0
- codex/static_root/assets/VSelect-BbzE_-2K.a86df90a9d55.css.gz +0 -0
- codex/static_root/assets/VSelect-BbzE_-2K.css.br +0 -0
- codex/static_root/assets/VSelect-BbzE_-2K.css.gz +0 -0
- codex/static_root/assets/VSelect-CP3Eb9Go.137c60644b7e.js +0 -1
- codex/static_root/assets/VSelect-CP3Eb9Go.137c60644b7e.js.br +0 -0
- codex/static_root/assets/VSelect-CP3Eb9Go.137c60644b7e.js.gz +0 -0
- codex/static_root/assets/VSelect-CP3Eb9Go.js +0 -1
- codex/static_root/assets/VSelect-CP3Eb9Go.js.br +0 -0
- codex/static_root/assets/VSelect-CP3Eb9Go.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-3mF3UtxV.331471e38863.js +0 -1
- codex/static_root/assets/VSelectionControl-3mF3UtxV.331471e38863.js.br +0 -0
- codex/static_root/assets/VSelectionControl-3mF3UtxV.331471e38863.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-3mF3UtxV.js +0 -1
- codex/static_root/assets/VSelectionControl-3mF3UtxV.js.br +0 -0
- codex/static_root/assets/VSelectionControl-3mF3UtxV.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-RqBzwjYi.css +0 -1
- codex/static_root/assets/VSelectionControl-RqBzwjYi.css.br +0 -0
- codex/static_root/assets/VSelectionControl-RqBzwjYi.css.gz +0 -0
- codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css +0 -1
- codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.br +0 -0
- codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.gz +0 -0
- codex/static_root/assets/VTable-KYw5fCd8.311b2d4fb655.js +0 -1
- codex/static_root/assets/VTable-KYw5fCd8.311b2d4fb655.js.br +0 -0
- codex/static_root/assets/VTable-KYw5fCd8.311b2d4fb655.js.gz +0 -0
- codex/static_root/assets/VTable-KYw5fCd8.js +0 -1
- codex/static_root/assets/VTable-KYw5fCd8.js.br +0 -0
- codex/static_root/assets/VTable-KYw5fCd8.js.gz +0 -0
- codex/static_root/assets/VWindowItem-BUML2ecc.a2574b84b5d8.js +0 -1
- codex/static_root/assets/VWindowItem-BUML2ecc.a2574b84b5d8.js.br +0 -0
- codex/static_root/assets/VWindowItem-BUML2ecc.a2574b84b5d8.js.gz +0 -0
- codex/static_root/assets/VWindowItem-BUML2ecc.js +0 -1
- codex/static_root/assets/VWindowItem-BUML2ecc.js.br +0 -0
- codex/static_root/assets/VWindowItem-BUML2ecc.js.gz +0 -0
- codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css +0 -1
- codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css.br +0 -5
- codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css.gz +0 -0
- codex/static_root/assets/VWindowItem-QQWUVqMX.css +0 -1
- codex/static_root/assets/VWindowItem-QQWUVqMX.css.br +0 -5
- codex/static_root/assets/VWindowItem-QQWUVqMX.css.gz +0 -0
- codex/static_root/assets/admin-D7dHJsJ4.5a7b2f5af603.js.br +0 -0
- codex/static_root/assets/admin-D7dHJsJ4.5a7b2f5af603.js.gz +0 -0
- codex/static_root/assets/admin-D7dHJsJ4.js.br +0 -0
- codex/static_root/assets/admin-D7dHJsJ4.js.gz +0 -0
- codex/static_root/assets/admin-DuXJR8qW.c11eb83c62fe.js +0 -1
- codex/static_root/assets/admin-DuXJR8qW.c11eb83c62fe.js.br +0 -0
- codex/static_root/assets/admin-DuXJR8qW.c11eb83c62fe.js.gz +0 -0
- codex/static_root/assets/admin-DuXJR8qW.js +0 -1
- codex/static_root/assets/admin-DuXJR8qW.js.br +0 -0
- codex/static_root/assets/admin-DuXJR8qW.js.gz +0 -0
- codex/static_root/assets/admin-menu-Y-2f4f-t.7c6bffa811c0.js.br +0 -0
- codex/static_root/assets/admin-menu-Y-2f4f-t.7c6bffa811c0.js.gz +0 -0
- codex/static_root/assets/admin-menu-Y-2f4f-t.js.br +0 -0
- codex/static_root/assets/admin-menu-Y-2f4f-t.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-CX4KtKvA.37ae80a378e4.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-CX4KtKvA.37ae80a378e4.js.gz +0 -0
- codex/static_root/assets/admin-settings-button-progress-CX4KtKvA.js.br +0 -0
- codex/static_root/assets/admin-settings-button-progress-CX4KtKvA.js.gz +0 -0
- codex/static_root/assets/browser-CqubhCxg.1e6645d0b01b.js +0 -1
- codex/static_root/assets/browser-CqubhCxg.1e6645d0b01b.js.br +0 -0
- codex/static_root/assets/browser-CqubhCxg.1e6645d0b01b.js.gz +0 -0
- codex/static_root/assets/browser-CqubhCxg.js +0 -1
- codex/static_root/assets/browser-CqubhCxg.js.br +0 -0
- codex/static_root/assets/browser-CqubhCxg.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CB7sPDF5.74381403a3ef.js +0 -1
- codex/static_root/assets/change-password-dialog-CB7sPDF5.74381403a3ef.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CB7sPDF5.74381403a3ef.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-CB7sPDF5.js +0 -1
- codex/static_root/assets/change-password-dialog-CB7sPDF5.js.br +0 -0
- codex/static_root/assets/change-password-dialog-CB7sPDF5.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-Bc3Bw4Wf.df54617c5796.js.br +0 -0
- codex/static_root/assets/confirm-dialog-Bc3Bw4Wf.df54617c5796.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-Bc3Bw4Wf.js.br +0 -0
- codex/static_root/assets/confirm-dialog-Bc3Bw4Wf.js.gz +0 -0
- codex/static_root/assets/datetime-column-zWcVwgyi.03ad8c8b24a1.js.br +0 -0
- codex/static_root/assets/datetime-column-zWcVwgyi.03ad8c8b24a1.js.gz +0 -0
- codex/static_root/assets/datetime-column-zWcVwgyi.js.br +0 -0
- codex/static_root/assets/datetime-column-zWcVwgyi.js.gz +0 -0
- codex/static_root/assets/filter-DWF4EaH3.e92b5573507a.js +0 -1
- codex/static_root/assets/filter-DWF4EaH3.e92b5573507a.js.br +0 -0
- codex/static_root/assets/filter-DWF4EaH3.e92b5573507a.js.gz +0 -0
- codex/static_root/assets/filter-DWF4EaH3.js +0 -1
- codex/static_root/assets/filter-DWF4EaH3.js.br +0 -0
- codex/static_root/assets/filter-DWF4EaH3.js.gz +0 -0
- codex/static_root/assets/flag-tab-GTA-yaU7.7c095722ebed.js.br +0 -0
- codex/static_root/assets/flag-tab-GTA-yaU7.7c095722ebed.js.gz +0 -0
- codex/static_root/assets/flag-tab-GTA-yaU7.js.br +0 -0
- codex/static_root/assets/flag-tab-GTA-yaU7.js.gz +0 -0
- codex/static_root/assets/forwardRefs-CGimG8CQ.b99b41ed1eed.js +0 -1
- codex/static_root/assets/forwardRefs-CGimG8CQ.b99b41ed1eed.js.br +0 -0
- codex/static_root/assets/forwardRefs-CGimG8CQ.b99b41ed1eed.js.gz +0 -0
- codex/static_root/assets/forwardRefs-CGimG8CQ.js +0 -1
- codex/static_root/assets/forwardRefs-CGimG8CQ.js.br +0 -0
- codex/static_root/assets/forwardRefs-CGimG8CQ.js.gz +0 -0
- codex/static_root/assets/forwardRefs-vX-mze-3.cfdcd69926d9.css +0 -1
- codex/static_root/assets/forwardRefs-vX-mze-3.cfdcd69926d9.css.br +0 -0
- codex/static_root/assets/forwardRefs-vX-mze-3.cfdcd69926d9.css.gz +0 -0
- codex/static_root/assets/forwardRefs-vX-mze-3.css +0 -1
- codex/static_root/assets/forwardRefs-vX-mze-3.css.br +0 -0
- codex/static_root/assets/forwardRefs-vX-mze-3.css.gz +0 -0
- codex/static_root/assets/group-tab-BSr4dJJW.e36d5a728ebc.js.br +0 -0
- codex/static_root/assets/group-tab-BSr4dJJW.e36d5a728ebc.js.gz +0 -0
- codex/static_root/assets/group-tab-BSr4dJJW.js.br +0 -0
- codex/static_root/assets/group-tab-BSr4dJJW.js.gz +0 -0
- codex/static_root/assets/http-error-CwCiNlwC.386c711703ef.js +0 -1
- codex/static_root/assets/http-error-CwCiNlwC.386c711703ef.js.br +0 -0
- codex/static_root/assets/http-error-CwCiNlwC.386c711703ef.js.gz +0 -0
- codex/static_root/assets/http-error-CwCiNlwC.js +0 -1
- codex/static_root/assets/http-error-CwCiNlwC.js.br +0 -0
- codex/static_root/assets/http-error-CwCiNlwC.js.gz +0 -0
- codex/static_root/assets/index-DOP9KYca.5d9b48ff6f1a.js.br +0 -0
- codex/static_root/assets/index-DOP9KYca.5d9b48ff6f1a.js.gz +0 -0
- codex/static_root/assets/index-DOP9KYca.js.br +0 -0
- codex/static_root/assets/index-DOP9KYca.js.gz +0 -0
- codex/static_root/assets/library-tab-B_PHwUZ-.516218e664f8.js.br +0 -0
- codex/static_root/assets/library-tab-B_PHwUZ-.516218e664f8.js.gz +0 -0
- codex/static_root/assets/library-tab-B_PHwUZ-.js.br +0 -0
- codex/static_root/assets/library-tab-B_PHwUZ-.js.gz +0 -0
- codex/static_root/assets/main-B8_0rUnw.a9be0875ae25.css.br +0 -0
- codex/static_root/assets/main-B8_0rUnw.css.br +0 -0
- codex/static_root/assets/main-BERoK-j2.3915bda15ee5.js +0 -39
- codex/static_root/assets/main-BERoK-j2.3915bda15ee5.js.br +0 -0
- codex/static_root/assets/main-BERoK-j2.3915bda15ee5.js.gz +0 -0
- codex/static_root/assets/main-BERoK-j2.js +0 -39
- codex/static_root/assets/main-BERoK-j2.js.br +0 -0
- codex/static_root/assets/main-BERoK-j2.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.2408a027dbe1.js +0 -1
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.2408a027dbe1.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.2408a027dbe1.js.gz +0 -0
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.js +0 -1
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.js.br +0 -0
- codex/static_root/assets/pager-full-pdf-Bs_Q1Bfa.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-CWi6EIET.c440bd1066b0.js +0 -1
- codex/static_root/assets/pagination-toolbar-CWi6EIET.c440bd1066b0.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-CWi6EIET.c440bd1066b0.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-CWi6EIET.js +0 -1
- codex/static_root/assets/pagination-toolbar-CWi6EIET.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-CWi6EIET.js.gz +0 -0
- codex/static_root/assets/pdf-doc-BFFOclVi.b0ec00bfb616.js.br +0 -0
- codex/static_root/assets/pdf-doc-BFFOclVi.b0ec00bfb616.js.gz +0 -0
- codex/static_root/assets/pdf-doc-BFFOclVi.js.br +0 -0
- codex/static_root/assets/pdf-doc-BFFOclVi.js.gz +0 -0
- codex/static_root/assets/reader-DxFZyySj.340be27f9b2d.js.br +0 -0
- codex/static_root/assets/reader-DxFZyySj.340be27f9b2d.js.gz +0 -0
- codex/static_root/assets/reader-DxFZyySj.js.br +0 -0
- codex/static_root/assets/reader-DxFZyySj.js.gz +0 -0
- codex/static_root/assets/relation-chips-C4GQrh_b.f1e80447ddb4.js +0 -1
- codex/static_root/assets/relation-chips-C4GQrh_b.f1e80447ddb4.js.br +0 -0
- codex/static_root/assets/relation-chips-C4GQrh_b.f1e80447ddb4.js.gz +0 -0
- codex/static_root/assets/relation-chips-C4GQrh_b.js +0 -1
- codex/static_root/assets/relation-chips-C4GQrh_b.js.br +0 -0
- codex/static_root/assets/relation-chips-C4GQrh_b.js.gz +0 -0
- codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css +0 -1
- codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css.br +0 -0
- codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css.gz +0 -0
- codex/static_root/assets/relation-chips-CpiT_4k-.css +0 -1
- codex/static_root/assets/relation-chips-CpiT_4k-.css.br +0 -0
- codex/static_root/assets/relation-chips-CpiT_4k-.css.gz +0 -0
- codex/static_root/assets/settings-drawer-BD44Ahju.54110f5e27ec.js.br +0 -0
- codex/static_root/assets/settings-drawer-BD44Ahju.54110f5e27ec.js.gz +0 -0
- codex/static_root/assets/settings-drawer-BD44Ahju.js.br +0 -0
- codex/static_root/assets/settings-drawer-BD44Ahju.js.gz +0 -0
- codex/static_root/assets/settings-drawer-D7bFOc4_.9748ddd58be9.css.br +0 -0
- codex/static_root/assets/settings-drawer-D7bFOc4_.9748ddd58be9.css.gz +0 -0
- codex/static_root/assets/settings-drawer-D7bFOc4_.css.br +0 -0
- codex/static_root/assets/settings-drawer-D7bFOc4_.css.gz +0 -0
- codex/static_root/assets/ssrBoot-_TndNOM6.a99eba568e94.js +0 -1
- codex/static_root/assets/ssrBoot-_TndNOM6.a99eba568e94.js.br +0 -0
- codex/static_root/assets/ssrBoot-_TndNOM6.a99eba568e94.js.gz +0 -0
- codex/static_root/assets/ssrBoot-_TndNOM6.js +0 -1
- codex/static_root/assets/ssrBoot-_TndNOM6.js.br +0 -0
- codex/static_root/assets/ssrBoot-_TndNOM6.js.gz +0 -0
- codex/static_root/assets/stats-tab-Dzy_P00k.ea54237a2011.js +0 -1
- codex/static_root/assets/stats-tab-Dzy_P00k.ea54237a2011.js.br +0 -0
- codex/static_root/assets/stats-tab-Dzy_P00k.ea54237a2011.js.gz +0 -0
- codex/static_root/assets/stats-tab-Dzy_P00k.js +0 -1
- codex/static_root/assets/stats-tab-Dzy_P00k.js.br +0 -0
- codex/static_root/assets/stats-tab-Dzy_P00k.js.gz +0 -0
- codex/static_root/assets/task-tab-CW4DQ3KN.81812f9208e5.css +0 -1
- codex/static_root/assets/task-tab-CW4DQ3KN.81812f9208e5.css.gz +0 -0
- codex/static_root/assets/task-tab-CW4DQ3KN.css +0 -1
- codex/static_root/assets/task-tab-CW4DQ3KN.css.gz +0 -0
- codex/static_root/assets/task-tab-DUpMTPbM.bf11c5676008.js +0 -1
- codex/static_root/assets/task-tab-DUpMTPbM.bf11c5676008.js.br +0 -0
- codex/static_root/assets/task-tab-DUpMTPbM.bf11c5676008.js.gz +0 -0
- codex/static_root/assets/task-tab-DUpMTPbM.js +0 -1
- codex/static_root/assets/task-tab-DUpMTPbM.js.br +0 -0
- codex/static_root/assets/task-tab-DUpMTPbM.js.gz +0 -0
- codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css +0 -1
- codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css.br +0 -0
- codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css.gz +0 -0
- codex/static_root/assets/unauthorized-BBwsmi0O.css +0 -1
- codex/static_root/assets/unauthorized-BBwsmi0O.css.br +0 -0
- codex/static_root/assets/unauthorized-BBwsmi0O.css.gz +0 -0
- codex/static_root/assets/unauthorized-CN4zNUwv.6cef38be7edd.js.br +0 -0
- codex/static_root/assets/unauthorized-CN4zNUwv.6cef38be7edd.js.gz +0 -0
- codex/static_root/assets/unauthorized-CN4zNUwv.js.br +0 -0
- codex/static_root/assets/unauthorized-CN4zNUwv.js.gz +0 -0
- codex/static_root/assets/user-tab-BfK1ySCm.24ed1c97836c.js.br +0 -0
- codex/static_root/assets/user-tab-BfK1ySCm.24ed1c97836c.js.gz +0 -0
- codex/static_root/assets/user-tab-BfK1ySCm.js.br +0 -0
- codex/static_root/assets/user-tab-BfK1ySCm.js.gz +0 -0
- codex/static_root/img/missing-cover-165.f4bb7740084c.webp +0 -0
- codex/static_root/manifest.c30398ff70cf.json +0 -760
- codex/static_root/manifest.c30398ff70cf.json.br +0 -0
- codex/static_root/manifest.c30398ff70cf.json.gz +0 -0
- codex-1.8.13.dist-info/RECORD +0 -1102
- {codex-1.8.13.dist-info → codex-1.8.16.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{cB as Y,p as C,g as O,c2 as Ct,f as $e,c as h,h as p,cv as Oe,b_ as $,cC as Ve,cD as St,cE as kt,cF as wt,cj as z,cG as fe,k as ve,cg as xt,bt as ze,m as K,cH as _t,ch as Pt,ct as We,t as m,b as S,d as _,F as Vt,aC as G,L as H,aB as ee,u as A,a as w,n as R,bU as te,bw as Bt,aY as De,i as It,bn as Ae,bo as Fe,aW as pe,cz as me,e as Me,cI as Rt,bI as Ge,bG as Et,cJ as Lt,c4 as Nt,aV as Ce,cK as Tt,cL as $t,cM as Ot,cN as zt,M as ge,r as Se,bq as He,bh as je,ba as Z,bl as he,aX as Wt,aE as qe,bi as Dt,J as At,cO as Be,bL as Ft,aZ as Ue,U as Mt,C as Gt}from"./main-CWTxsB_K.js";const Xe=["top","bottom"],Ht=["start","end","left","right"];function jt(e,t){let[n,s]=e.split(" ");return s||(s=Y(Xe,n)?"start":Y(Ht,n)?"top":"center"),{side:Ie(n,t),align:Ie(s,t)}}function Ie(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function Tn(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function $n(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function On(e){return{side:e.align,align:e.side}}function zn(e){return Y(Xe,e.side)?"y":"x"}class E{constructor(t){const n=document.body.currentCSSZoom??1,s=t instanceof DOMRect?1+(1-n)/n:1,{x:i,y:a,width:o,height:r}=t;this.x=i*s,this.y=a*s,this.width=o*s,this.height=r*s}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function Wn(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function Dn(e){if(Array.isArray(e)){const t=document.body.currentCSSZoom??1,n=1+(1-t)/t;return new E({x:e[0]*n,y:e[1]*n,width:0*n,height:0*n})}else return new E(e.getBoundingClientRect())}function An(e){if(e===document.documentElement)if(visualViewport){const t=document.body.currentCSSZoom??1;return new E({x:visualViewport.scale>1?0:visualViewport.offsetLeft,y:visualViewport.scale>1?0:visualViewport.offsetTop,width:visualViewport.width*visualViewport.scale/t,height:visualViewport.height*visualViewport.scale/t})}else return new E({x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight});else{const t=e.getBoundingClientRect();return new E({x:t.x,y:t.y,width:e.clientWidth,height:e.clientHeight})}}function Fn(e){const t=new E(e.getBoundingClientRect()),n=getComputedStyle(e),s=n.transform;if(s){let i,a,o,r,l;if(s.startsWith("matrix3d("))i=s.slice(9,-1).split(/, /),a=Number(i[0]),o=Number(i[5]),r=Number(i[12]),l=Number(i[13]);else if(s.startsWith("matrix("))i=s.slice(7,-1).split(/, /),a=Number(i[0]),o=Number(i[3]),r=Number(i[4]),l=Number(i[5]);else return new E(t);const c=n.transformOrigin,d=t.x-r-(1-a)*parseFloat(c),v=t.y-l-(1-o)*parseFloat(c.slice(c.indexOf(" ")+1)),u=a?t.width/a:e.offsetWidth+1,g=o?t.height/o:e.offsetHeight+1;return new E({x:d,y:v,width:u,height:g})}else return new E(t)}function Mn(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let s;try{s=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof s.finished>"u"&&(s.finished=new Promise(i=>{s.onfinish=()=>{i(s)}})),s}const j=C({tag:{type:[String,Object,Function],default:"div"}},"tag"),qt=C({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),oe=O(!1)({name:"VDefaultsProvider",props:qt(),setup(e,t){let{slots:n}=t;const{defaults:s,disabled:i,reset:a,root:o,scoped:r}=Ct(e);return $e(s,{reset:a,root:o,scoped:r,disabled:i}),()=>n.default?.()}}),Ut=C({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function Xt(e){return{dimensionStyles:h(()=>{const n={},s=p(e.height),i=p(e.maxHeight),a=p(e.maxWidth),o=p(e.minHeight),r=p(e.minWidth),l=p(e.width);return s!=null&&(n.height=s),i!=null&&(n.maxHeight=i),a!=null&&(n.maxWidth=a),o!=null&&(n.minHeight=o),r!=null&&(n.minWidth=r),l!=null&&(n.width=l),n})}}function ke(e){return Oe(()=>{const{class:t,style:n}=Yt(e);return{colorClasses:t,colorStyles:n}})}function J(e){const{colorClasses:t,colorStyles:n}=ke(()=>({text:$(e)}));return{textColorClasses:t,textColorStyles:n}}function re(e){const{colorClasses:t,colorStyles:n}=ke(()=>({background:$(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}function Yt(e){const t=$(e),n=[],s={};if(t.background)if(Ve(t.background)){if(s.backgroundColor=t.background,!t.text&&St(t.background)){const i=kt(t.background);if(i.a==null||i.a===1){const a=wt(i);s.color=a,s.caretColor=a}}}else n.push(`bg-${t.background}`);return t.text&&(Ve(t.text)?(s.color=t.text,s.caretColor=t.text):n.push(`text-${t.text}`)),{class:n,style:s}}const we=C({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function xe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return{roundedClasses:h(()=>{const s=fe(e)?e.value:e.rounded,i=fe(e)?!1:e.tile,a=[];if(i||s===!1)a.push("rounded-0");else if(s===!0||s==="")a.push(`${t}--rounded`);else if(typeof s=="string"||s===0)for(const o of String(s).split(" "))a.push(`rounded-${o}`);return a})}}const Gn=C({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),Hn=(e,t)=>{let{slots:n}=t;const{transition:s,disabled:i,group:a,...o}=e,{component:r=a?xt:ze,...l}=ve(s)?s:{};let c;return ve(s)?c=K(l,_t({disabled:i,group:a}),o):c=K({name:i||!s?"":s},o),Pt(r,c,n)};function Kt(e,t){if(!We)return;const n=t.modifiers||{},s=t.value,{handler:i,options:a}=typeof s=="object"?s:{handler:s,options:{}},o=new IntersectionObserver(function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],l=arguments.length>1?arguments[1]:void 0;const c=e._observe?.[t.instance.$.uid];if(!c)return;const d=r.some(v=>v.isIntersecting);i&&(!n.quiet||c.init)&&(!n.once||d||c.init)&&i(d,r,l),d&&n.once?Ye(e,t):c.init=!0},a);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:o},o.observe(e)}function Ye(e,t){const n=e._observe?.[t.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[t.instance.$.uid])}const jn={mounted:Kt,unmounted:Ye},Ke=C({border:[Boolean,Number,String]},"border");function Ze(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return{borderClasses:h(()=>{const s=e.border;return s===!0||s===""?`${t}--border`:typeof s=="string"||s===0?String(s).split(" ").map(i=>`border-${i}`):[]})}}const Je=C({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function Qe(e){return{elevationClasses:m(()=>{const n=fe(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Zt=["elevated","flat","tonal","outlined","text","plain"];function Jt(e,t){return S(Vt,null,[e&&S("span",{key:"overlay",class:_(`${t}__overlay`)},null),S("span",{key:"underlay",class:_(`${t}__underlay`)},null)])}const et=C({color:String,variant:{type:String,default:"elevated",validator:e=>Zt.includes(e)}},"variant");function Qt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();const n=m(()=>{const{variant:a}=$(e);return`${t}--variant-${a}`}),{colorClasses:s,colorStyles:i}=ke(()=>{const{variant:a,color:o}=$(e);return{[["elevated","flat"].includes(a)?"background":"text"]:o}});return{colorClasses:s,colorStyles:i,variantClasses:n}}const en=[null,"default","comfortable","compact"],tt=C({density:{type:String,default:"default",validator:e=>en.includes(e)}},"density");function nt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return{densityClasses:m(()=>`${t}--density-${e.density}`)}}const st=C({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...Ke(),...H(),...tt(),...Je(),...we(),...j(),...G(),...et()},"VBtnGroup"),Re=O()({name:"VBtnGroup",props:st(),setup(e,t){let{slots:n}=t;const{themeClasses:s}=ee(e),{densityClasses:i}=nt(e),{borderClasses:a}=Ze(e),{elevationClasses:o}=Qe(e),{roundedClasses:r}=xe(e);$e({VBtn:{height:m(()=>e.direction==="horizontal"?"auto":null),baseColor:m(()=>e.baseColor),color:m(()=>e.color),density:m(()=>e.density),flat:!0,variant:m(()=>e.variant)}}),A(()=>w(e.tag,{class:_(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},s.value,a.value,i.value,o.value,r.value,e.class]),style:R(e.style)},n))}}),tn=C({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),nn=C({value:null,disabled:Boolean,selectedClass:String},"group-item");function sn(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const s=te("useGroupItem");if(!s)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const i=Bt();De(Symbol.for(`${t.description}:id`),i);const a=It(t,null);if(!a){if(!n)return a;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const o=m(()=>e.value),r=h(()=>!!(a.disabled.value||e.disabled));function l(){a?.register({id:i,value:o,disabled:r},s)}function c(){a?.unregister(i)}Ae(()=>l()),Fe(()=>c());const d=h(()=>a.isSelected(i)),v=h(()=>a.items.value[0].id===i),u=h(()=>a.items.value[a.items.value.length-1].id===i),g=h(()=>d.value&&[a.selectedClass.value,e.selectedClass]);return pe(d,y=>{s.emit("group:selected",{value:y})},{flush:"sync"}),{id:i,isSelected:d,isFirst:v,isLast:u,toggle:()=>a.select(i,!d.value),select:y=>a.select(i,y),selectedClass:g,value:o,disabled:r,group:a,register:l,unregister:c}}function an(e,t){let n=!1;const s=me([]),i=Me(e,"modelValue",[],u=>u===void 0?[]:at(s,u===null?[null]:Et(u)),u=>{const g=rn(s,u);return e.multiple?g:g[0]}),a=te("useGroup");function o(u,g){const y=u,f=Symbol.for(`${t.description}:id`),k=Lt(f,a?.vnode).indexOf(g);Nt(y.value)===void 0&&(y.value=k,y.useIndexAsValue=!0),k>-1?s.splice(k,0,y):s.push(y)}function r(u){if(n)return;l();const g=s.findIndex(y=>y.id===u);s.splice(g,1)}function l(){const u=s.find(g=>!g.disabled);u&&e.mandatory==="force"&&!i.value.length&&(i.value=[u.id])}Ae(()=>{l()}),Fe(()=>{n=!0}),Rt(()=>{for(let u=0;u<s.length;u++)s[u].useIndexAsValue&&(s[u].value=u)});function c(u,g){const y=s.find(f=>f.id===u);if(!(g&&y?.disabled))if(e.multiple){const f=i.value.slice(),b=f.findIndex(V=>V===u),k=~b;if(g=g??!k,k&&e.mandatory&&f.length<=1||!k&&e.max!=null&&f.length+1>e.max)return;b<0&&g?f.push(u):b>=0&&!g&&f.splice(b,1),i.value=f}else{const f=i.value.includes(u);if(e.mandatory&&f||!f&&!g)return;i.value=g??!f?[u]:[]}}function d(u){if(e.multiple,i.value.length){const g=i.value[0],y=s.findIndex(k=>k.id===g);let f=(y+u)%s.length,b=s[f];for(;b.disabled&&f!==y;)f=(f+u)%s.length,b=s[f];if(b.disabled)return;i.value=[s[f].id]}else{const g=s.find(y=>!y.disabled);g&&(i.value=[g.id])}}const v={register:o,unregister:r,selected:i,select:c,disabled:m(()=>e.disabled),prev:()=>d(s.length-1),next:()=>d(1),isSelected:u=>i.value.includes(u),selectedClass:m(()=>e.selectedClass),items:m(()=>s),getItemIndex:u=>on(s,u)};return De(t,v),v}function on(e,t){const n=at(e,[t]);return n.length?e.findIndex(s=>s.id===n[0]):-1}function at(e,t){const n=[];return t.forEach(s=>{const i=e.find(o=>Ge(s,o.value)),a=e[s];i?.value!==void 0?n.push(i.id):a?.useIndexAsValue&&n.push(a.id)}),n}function rn(e,t){const n=[];return t.forEach(s=>{const i=e.findIndex(a=>a.id===s);if(~i){const a=e[i];n.push(a.value!==void 0?a.value:i)}}),n}const it=Symbol.for("vuetify:v-btn-toggle"),ln=C({...st(),...tn()},"VBtnToggle");O()({name:"VBtnToggle",props:ln(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:s,next:i,prev:a,select:o,selected:r}=an(e,it);return A(()=>{const l=Re.filterProps(e);return w(Re,K({class:["v-btn-toggle",e.class]},l,{style:e.style}),{default:()=>[n.default?.({isSelected:s,next:i,prev:a,select:o,selected:r})]})}),{next:i,prev:a,select:o}}});const un=["x-small","small","default","large","x-large"],_e=C({size:{type:[String,Number],default:"default"}},"size");function Pe(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return Oe(()=>{const n=e.size;let s,i;return Y(un,n)?s=`${t}--size-${n}`:n&&(i={width:p(n),height:p(n)}),{sizeClasses:s,sizeStyles:i}})}const cn=C({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:ge,opacity:[String,Number],...H(),..._e(),...j({tag:"i"}),...G()},"VIcon"),le=O()({name:"VIcon",props:cn(),setup(e,t){let{attrs:n,slots:s}=t;const i=Ce(),{themeClasses:a}=Tt(),{iconData:o}=$t(()=>i.value||e.icon),{sizeClasses:r}=Pe(e),{textColorClasses:l,textColorStyles:c}=J(()=>e.color);return A(()=>{const d=s.default?.();d&&(i.value=Ot(d).filter(u=>u.type===zt&&u.children&&typeof u.children=="string")[0]?.children);const v=!!(n.onClick||n.onClickOnce);return w(o.value.component,{tag:e.tag,icon:o.value.icon,class:_(["v-icon","notranslate",a.value,r.value,l.value,{"v-icon--clickable":v,"v-icon--disabled":e.disabled,"v-icon--start":e.start,"v-icon--end":e.end},e.class]),style:R([{"--v-icon-opacity":e.opacity},r.value?void 0:{fontSize:p(e.size),height:p(e.size),width:p(e.size)},c.value,e.style]),role:v?"button":void 0,"aria-hidden":!v,tabindex:v?e.disabled?-1:0:void 0},{default:()=>[d]})}),{}}});function ot(e,t){const n=Se(),s=Ce(!1);if(We){const i=new IntersectionObserver(a=>{s.value=!!a.find(o=>o.isIntersecting)},t);He(()=>{i.disconnect()}),pe(n,(a,o)=>{o&&(i.unobserve(o),s.value=!1),a&&i.observe(a)},{flush:"post"})}return{intersectionRef:n,isIntersecting:s}}const dn=C({bgColor:String,color:String,indeterminate:[Boolean,String],modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...H(),..._e(),...j({tag:"div"}),...G()},"VProgressCircular"),fn=O()({name:"VProgressCircular",props:dn(),setup(e,t){let{slots:n}=t;const s=20,i=2*Math.PI*s,a=Se(),{themeClasses:o}=ee(e),{sizeClasses:r,sizeStyles:l}=Pe(e),{textColorClasses:c,textColorStyles:d}=J(()=>e.color),{textColorClasses:v,textColorStyles:u}=J(()=>e.bgColor),{intersectionRef:g,isIntersecting:y}=ot(),{resizeRef:f,contentRect:b}=je(),k=m(()=>Z(parseFloat(e.modelValue),0,100)),V=m(()=>Number(e.width)),W=m(()=>l.value?Number(e.size):b.value?b.value.width:Math.max(V.value,32)),I=m(()=>s/(1-V.value/W.value)*2),B=m(()=>V.value/W.value*I.value),L=m(()=>p((100-k.value)/100*i));return he(()=>{g.value=a.value,f.value=a.value}),A(()=>w(e.tag,{ref:a,class:_(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":y.value,"v-progress-circular--disable-shrink":e.indeterminate&&(e.indeterminate==="disable-shrink"||Wt())},o.value,r.value,c.value,e.class]),style:R([l.value,d.value,e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:k.value},{default:()=>[S("svg",{style:{transform:`rotate(calc(-90deg + ${Number(e.rotate)}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${I.value} ${I.value}`},[S("circle",{class:_(["v-progress-circular__underlay",v.value]),style:R(u.value),fill:"transparent",cx:"50%",cy:"50%",r:s,"stroke-width":B.value,"stroke-dasharray":i,"stroke-dashoffset":0},null),S("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:s,"stroke-width":B.value,"stroke-dasharray":i,"stroke-dashoffset":L.value},null)]),n.default&&S("div",{class:"v-progress-circular__content"},[n.default({value:k.value})])]})),{}}}),Ee={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},rt=C({location:String},"location");function lt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:s}=qe();return{locationStyles:h(()=>{if(!e.location)return{};const{side:a,align:o}=jt(e.location.split(" ").length>1?e.location:`${e.location} center`,s.value);function r(c){return n?n(c):0}const l={};return a!=="center"&&(t?l[Ee[a]]=`calc(100% - ${r(a)}px)`:l[a]=0),o!=="center"?t?l[Ee[o]]=`calc(100% - ${r(o)}px)`:l[o]=0:(a==="center"?l.top=l.left="50%":l[{top:"left",bottom:"left",left:"top",right:"top"}[a]]="50%",l.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[a]),l})}}const vn=C({chunkCount:{type:[Number,String],default:null},chunkWidth:{type:[Number,String],default:null},chunkGap:{type:[Number,String],default:4}},"chunks");function mn(e,t){const n=m(()=>!!e.chunkCount||!!e.chunkWidth),s=h(()=>{const r=$(t);if(!r)return 0;if(!e.chunkCount)return Number(e.chunkWidth);const l=Number(e.chunkCount);return(r-Number(e.chunkGap)*(l-1))/l}),i=m(()=>Number(e.chunkGap)),a=h(()=>{if(!n.value)return{};const r=p(i.value),l=p(s.value);return{maskRepeat:"repeat-x",maskImage:`linear-gradient(90deg, #000, #000 ${l}, transparent ${l}, transparent)`,maskSize:`calc(${l} + ${r}) 100%`}});function o(r){const l=$(t);if(!l)return r;const c=100*i.value/l,d=100*(s.value+i.value)/l,v=Math.floor((r+c)/d);return Z(0,v*d-c/2,100)}return{hasChunks:n,chunksMaskStyles:a,snapValueToChunk:o}}const gn=C({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},bufferColor:String,bufferOpacity:[Number,String],clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},opacity:[Number,String],reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...vn(),...H(),...rt({location:"top"}),...we(),...j(),...G()},"VProgressLinear"),hn=O()({name:"VProgressLinear",props:gn(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const s=Se(),i=Me(e,"modelValue"),{isRtl:a,rtlClasses:o}=qe(),{themeClasses:r}=ee(e),{locationStyles:l}=lt(e),{textColorClasses:c,textColorStyles:d}=J(()=>e.color),{backgroundColorClasses:v,backgroundColorStyles:u}=re(()=>e.bgColor||e.color),{backgroundColorClasses:g,backgroundColorStyles:y}=re(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:f,backgroundColorStyles:b}=re(()=>e.color),{roundedClasses:k}=xe(e),{intersectionRef:V,isIntersecting:W}=ot(),I=h(()=>parseFloat(e.max)),B=h(()=>parseFloat(e.height)),L=h(()=>Z(parseFloat(e.bufferValue)/I.value*100,0,100)),N=h(()=>Z(parseFloat(i.value)/I.value*100,0,100)),D=h(()=>a.value!==e.reverse),ne=h(()=>e.indeterminate?"fade-transition":"slide-x-transition"),q=Ce(0),{hasChunks:x,chunksMaskStyles:se,snapValueToChunk:U}=mn(e,q);Dt(x,()=>{const{resizeRef:T}=je(ae=>q.value=ae[0].contentRect.width);he(()=>T.value=s.value)});const X=h(()=>x.value?U(L.value):L.value),ht=h(()=>x.value?U(N.value):N.value);function bt(T){if(!V.value)return;const{left:ae,right:yt,width:ie}=V.value.getBoundingClientRect(),pt=D.value?ie-T.clientX+(yt-ie):T.clientX-ae;i.value=Math.round(pt/ie*I.value)}return he(()=>{V.value=s.value}),A(()=>w(e.tag,{ref:s,class:_(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&W.value,"v-progress-linear--reverse":D.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped,"v-progress-linear--clickable":e.clickable},k.value,r.value,o.value,e.class]),style:R([{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?p(B.value):0,"--v-progress-linear-height":p(B.value),...e.absolute?l.value:{}},se.value,e.style]),role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:Math.min(parseFloat(i.value),I.value),onClick:e.clickable&&bt},{default:()=>[e.stream&&S("div",{key:"stream",class:_(["v-progress-linear__stream",c.value]),style:{...d.value,[D.value?"left":"right"]:p(-B.value),borderTop:`${p(B.value/2)} dotted`,opacity:parseFloat(e.bufferOpacity),top:`calc(50% - ${p(B.value/4)})`,width:p(100-L.value,"%"),"--v-progress-linear-stream-to":p(B.value*(D.value?1:-1))}},null),S("div",{class:_(["v-progress-linear__background",v.value]),style:R([u.value,{opacity:parseFloat(e.bgOpacity),width:e.stream?0:void 0}])},null),S("div",{class:_(["v-progress-linear__buffer",g.value]),style:R([y.value,{opacity:parseFloat(e.bufferOpacity),width:p(X.value,"%")}])},null),w(ze,{name:ne.value},{default:()=>[e.indeterminate?S("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(T=>S("div",{key:T,class:_(["v-progress-linear__indeterminate",T,f.value]),style:R(b.value)},null))]):S("div",{class:_(["v-progress-linear__determinate",f.value]),style:R([b.value,{width:p(ht.value,"%")}])},null)]}),n.default&&S("div",{class:"v-progress-linear__content"},[n.default({value:N.value,buffer:L.value})])]})),{}}}),bn=C({loading:[Boolean,String]},"loader");function yn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return{loaderClasses:m(()=>({[`${t}--loading`]:e.loading}))}}function qn(e,t){let{slots:n}=t;return S("div",{class:_(`${e.name}__loader`)},[n.default?.({color:e.color,isActive:e.active})||w(hn,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const pn=["static","relative","fixed","absolute","sticky"],Cn=C({position:{type:String,validator:e=>pn.includes(e)}},"position");function Sn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:z();return{positionClasses:m(()=>e.position?`${t}--${e.position}`:void 0)}}function kn(){const e=te("useRoute");return h(()=>e?.proxy?.$route)}function Un(){return te("useRouter")?.proxy?.$router}function wn(e,t){const n=At("RouterLink"),s=m(()=>!!(e.href||e.to)),i=h(()=>s?.value||Be(t,"click")||Be(e,"click"));if(typeof n=="string"||!("useLink"in n)){const v=m(()=>e.href);return{isLink:s,isRouterLink:m(()=>!1),isClickable:i,href:v,linkProps:me({href:v})}}const a=n.useLink({to:m(()=>e.to||""),replace:m(()=>e.replace)}),o=h(()=>e.to?a:void 0),r=kn(),l=h(()=>o.value?e.exact?r.value?o.value.isExactActive?.value&&Ge(o.value.route.value.query,r.value.query):o.value.isExactActive?.value??!1:o.value.isActive?.value??!1:!1),c=h(()=>e.to?o.value?.route.value.href:e.href),d=m(()=>!!e.to);return{isLink:s,isRouterLink:d,isClickable:i,isActive:l,route:o.value?.route,navigate:o.value?.navigate,href:c,linkProps:me({href:c,"aria-current":m(()=>l.value?"page":void 0),"aria-disabled":m(()=>e.disabled&&s.value?"true":void 0),tabindex:m(()=>e.disabled&&s.value?"-1":void 0)})}}const xn=C({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let ue=!1;function Xn(e,t){let n=!1,s,i;Ft&&e?.beforeEach&&(Ue(()=>{window.addEventListener("popstate",a),s=e.beforeEach((o,r,l)=>{ue?n?t(l):l():setTimeout(()=>n?t(l):l()),ue=!0}),i=e?.afterEach(()=>{ue=!1})}),He(()=>{window.removeEventListener("popstate",a),s?.(),i?.()}));function a(o){o.state?.replaced||(n=!0,setTimeout(()=>n=!1))}}function _n(e,t){pe(()=>e.isActive?.value,n=>{e.isLink.value&&n!=null&&t&&Ue(()=>{t(n)})},{immediate:!0})}const be=Symbol("rippleStop"),Pn=80;function Le(e,t){e.style.transform=t,e.style.webkitTransform=t}function ye(e){return e.constructor.name==="TouchEvent"}function ut(e){return e.constructor.name==="KeyboardEvent"}const Vn=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s=0,i=0;if(!ut(e)){const v=t.getBoundingClientRect(),u=ye(e)?e.touches[e.touches.length-1]:e;s=u.clientX-v.left,i=u.clientY-v.top}let a=0,o=.3;t._ripple?.circle?(o=.15,a=t.clientWidth/2,a=n.center?a:a+Math.sqrt((s-a)**2+(i-a)**2)/4):a=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const r=`${(t.clientWidth-a*2)/2}px`,l=`${(t.clientHeight-a*2)/2}px`,c=n.center?r:`${s-a}px`,d=n.center?l:`${i-a}px`;return{radius:a,scale:o,x:c,y:d,centerX:r,centerY:l}},Q={show(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!t?._ripple?.enabled)return;const s=document.createElement("span"),i=document.createElement("span");s.appendChild(i),s.className="v-ripple__container",n.class&&(s.className+=` ${n.class}`);const{radius:a,scale:o,x:r,y:l,centerX:c,centerY:d}=Vn(e,t,n),v=`${a*2}px`;i.className="v-ripple__animation",i.style.width=v,i.style.height=v,t.appendChild(s);const u=window.getComputedStyle(t);u&&u.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),i.classList.add("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--visible"),Le(i,`translate(${r}, ${l}) scale3d(${o},${o},${o})`),i.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.classList.remove("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--in"),Le(i,`translate(${c}, ${d}) scale3d(1,1,1)`)})})},hide(e){if(!e?._ripple?.enabled)return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=Array.from(t).findLast(a=>!a.dataset.isHiding);if(n)n.dataset.isHiding="true";else return;const s=performance.now()-Number(n.dataset.activated),i=Math.max(250-s,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),n.parentNode?.parentNode===e&&e.removeChild(n.parentNode)},300)},i)}};function ct(e){return typeof e>"u"||!!e}function F(e){const t={},n=e.currentTarget;if(!(!n?._ripple||n._ripple.touched||e[be])){if(e[be]=!0,ye(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||ut(e),n._ripple.class&&(t.class=n._ripple.class),ye(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Q.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{n?._ripple?.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},Pn)}else Q.show(e,n,t)}}function Ne(e){e[be]=!0}function P(e){const t=e.currentTarget;if(t?._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{P(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Q.hide(t)}}function dt(e){const t=e.currentTarget;t?._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let M=!1;function Te(e,t){!M&&t.includes(e.key)&&(M=!0,F(e))}function ft(e){M=!1,P(e)}function vt(e){M&&(M=!1,P(e))}function mt(e,t,n){const{value:s,modifiers:i}=t,a=ct(s);a||Q.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=a,e._ripple.centered=i.center,e._ripple.circle=i.circle;const o=ve(s)?s:{};o.class&&(e._ripple.class=o.class);const r=o.keys??["Enter","Space"];if(e._ripple.keyDownHandler=l=>Te(l,r),a&&!n){if(i.stop){e.addEventListener("touchstart",Ne,{passive:!0}),e.addEventListener("mousedown",Ne);return}e.addEventListener("touchstart",F,{passive:!0}),e.addEventListener("touchend",P,{passive:!0}),e.addEventListener("touchmove",dt,{passive:!0}),e.addEventListener("touchcancel",P),e.addEventListener("mousedown",F),e.addEventListener("mouseup",P),e.addEventListener("mouseleave",P),e.addEventListener("keydown",l=>Te(l,r)),e.addEventListener("keyup",ft),e.addEventListener("blur",vt),e.addEventListener("dragstart",P,{passive:!0})}else!a&&n&>(e)}function gt(e){e.removeEventListener("mousedown",F),e.removeEventListener("touchstart",F),e.removeEventListener("touchend",P),e.removeEventListener("touchmove",dt),e.removeEventListener("touchcancel",P),e.removeEventListener("mouseup",P),e.removeEventListener("mouseleave",P),e._ripple?.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",ft),e.removeEventListener("dragstart",P),e.removeEventListener("blur",vt)}function Bn(e,t){mt(e,t,!1)}function In(e){gt(e),delete e._ripple}function Rn(e,t){if(t.value===t.oldValue)return;const n=ct(t.oldValue);mt(e,t,n)}const En={mounted:Bn,unmounted:In,updated:Rn},Ln=C({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:it},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:ge,appendIcon:ge,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,spaced:String,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},...Ke(),...H(),...tt(),...Ut(),...Je(),...nn(),...bn(),...rt(),...Cn(),...we(),...xn(),..._e(),...j({tag:"button"}),...G(),...et({variant:"elevated"})},"VBtn"),Yn=O()({name:"VBtn",props:Ln(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:s}=t;const{themeClasses:i}=ee(e),{borderClasses:a}=Ze(e),{densityClasses:o}=nt(e),{dimensionStyles:r}=Xt(e),{elevationClasses:l}=Qe(e),{loaderClasses:c}=yn(e),{locationStyles:d}=lt(e),{positionClasses:v}=Sn(e),{roundedClasses:u}=xe(e),{sizeClasses:g,sizeStyles:y}=Pe(e),f=sn(e,e.symbol,!1),b=wn(e,n),k=h(()=>e.active!==void 0?e.active:b.isRouterLink.value?b.isActive?.value:f?.isSelected.value),V=m(()=>k.value?e.activeColor??e.color:e.color),W=h(()=>({color:f?.isSelected.value&&(!b.isLink.value||b.isActive?.value)||!f||b.isActive?.value?V.value??e.baseColor:e.baseColor,variant:e.variant})),{colorClasses:I,colorStyles:B,variantClasses:L}=Qt(W),N=h(()=>f?.disabled.value||e.disabled),D=m(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),ne=h(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function q(x){N.value||b.isLink.value&&(x.metaKey||x.ctrlKey||x.shiftKey||x.button!==0||n.target==="_blank")||(b.isRouterLink.value?b.navigate?.(x):f?.toggle())}return _n(b,f?.select),A(()=>{const x=b.isLink.value?"a":e.tag,se=!!(e.prependIcon||s.prepend),U=!!(e.appendIcon||s.append),X=!!(e.icon&&e.icon!==!0);return Mt(w(x,K(b.linkProps,{type:x==="a"?void 0:"button",class:["v-btn",f?.selectedClass.value,{"v-btn--active":k.value,"v-btn--block":e.block,"v-btn--disabled":N.value,"v-btn--elevated":D.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--readonly":e.readonly,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},e.spaced?["v-btn--spaced",`v-btn--spaced-${e.spaced}`]:[],i.value,a.value,I.value,o.value,l.value,c.value,v.value,u.value,g.value,L.value,e.class],style:[B.value,r.value,d.value,y.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:N.value&&x!=="a"||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:q,value:ne.value}),{default:()=>[Jt(!0,"v-btn"),!e.icon&&se&&S("span",{key:"prepend",class:"v-btn__prepend"},[s.prepend?w(oe,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},s.prepend):w(le,{key:"prepend-icon",icon:e.prependIcon},null)]),S("span",{class:"v-btn__content","data-no-activator":""},[!s.default&&X?w(le,{key:"content-icon",icon:e.icon},null):w(oe,{key:"content-defaults",disabled:!X,defaults:{VIcon:{icon:e.icon}}},{default:()=>[s.default?.()??Gt(e.text)]})]),!e.icon&&U&&S("span",{key:"append",class:"v-btn__append"},[s.append?w(oe,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},s.append):w(le,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&S("span",{key:"loader",class:"v-btn__loader"},[s.loader?.()??w(fn,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}),[[En,!N.value&&e.ripple,"",{center:!!e.icon}]])}),{group:f}}}),ce=Symbol("Forwarded refs");function de(e,t){let n=e;for(;n;){const s=Reflect.getOwnPropertyDescriptor(n,t);if(s)return s;n=Object.getPrototypeOf(n)}}function Kn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s<t;s++)n[s-1]=arguments[s];return e[ce]=n,new Proxy(e,{get(i,a){if(Reflect.has(i,a))return Reflect.get(i,a);if(!(typeof a=="symbol"||a.startsWith("$")||a.startsWith("__"))){for(const o of n)if(o.value&&Reflect.has(o.value,a)){const r=Reflect.get(o.value,a);return typeof r=="function"?r.bind(o.value):r}}},has(i,a){if(Reflect.has(i,a))return!0;if(typeof a=="symbol"||a.startsWith("$")||a.startsWith("__"))return!1;for(const o of n)if(o.value&&Reflect.has(o.value,a))return!0;return!1},set(i,a,o){if(Reflect.has(i,a))return Reflect.set(i,a,o);if(typeof a=="symbol"||a.startsWith("$")||a.startsWith("__"))return!1;for(const r of n)if(r.value&&Reflect.has(r.value,a))return Reflect.set(r.value,a,o);return!1},getOwnPropertyDescriptor(i,a){const o=Reflect.getOwnPropertyDescriptor(i,a);if(o)return o;if(!(typeof a=="symbol"||a.startsWith("$")||a.startsWith("__"))){for(const r of n){if(!r.value)continue;const l=de(r.value,a)??("_"in r.value?de(r.value._?.setupState,a):void 0);if(l)return l}for(const r of n){const l=r.value&&r.value[ce];if(!l)continue;const c=l.slice();for(;c.length;){const d=c.shift(),v=de(d.value,a);if(v)return v;const u=d.value&&d.value[ce];u&&c.push(...u)}}}}})}export{et as A,Un as B,Ie as C,yn as D,fn as E,_e as F,tn as G,bn as H,jn as I,Pe as J,Jt as K,qn as L,Hn as M,Fn as N,Dn as O,jt as P,Tn as Q,En as R,$n as S,On as T,E as U,Yn as V,An as W,zn as X,Wn as Y,Xn as Z,Mn as a,nt as b,re as c,j as d,tt as e,Kn as f,wn as g,xn as h,xe as i,we as j,le as k,oe as l,Ln as m,hn as n,Xt as o,Gn as p,Ut as q,Ze as r,Qe as s,Je as t,J as u,Ke as v,Qt as w,an as x,sn as y,nn as z};
|
|
Binary file
|
|
Binary file
|
codex/static_root/assets/{group-tab-BSr4dJJW.e36d5a728ebc.js → group-tab-FI6afuX5.a569809fb228.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as k,
|
|
1
|
+
import{_ as k,D as G,G as b,v as A,y as h,a as o,x as a,w as i,N as f,b as t,A as m,ap as T}from"./main-CWTxsB_K.js";import{G as C,A as v,R as I,a as V,b as D,c as j}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as d}from"./admin-BStn9kk0.js";import{c as E}from"./VSelectionControl-DFaQ_klW.js";import{a as w,V as N}from"./VRadioGroup-CU9nYUHk.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"./VCheckboxBtn-zhUZJChm.js";import"./VTable-MenML-QS.js";import"./filter-BfEbIpVl.js";import"./confirm-dialog-X8W3euvh.js";const S=["name","userSet","librarySet","exclude"];Object.freeze(S);const y={name:"",userSet:[],librarySet:[],exclude:!1};Object.freeze(y);const L={name:"AdminGroupCreateUpdateInputs",components:{AdminRelationPicker:v,GroupChip:C},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{name:[l=>!!l||"Name is required",l=>!!l&&!this.names.has(l.trim())||"Name already used"]},row:{...y,...f(this.oldRow)}}},computed:{...b(d,["normalLibraries"]),...b(d,{groups:l=>l.groups,users:l=>l.users}),names(){return this.nameSet(this.groups,"name",this.oldRow,!0)}},watch:{row:{handler(l){this.$emit("change",l)},deep:!0},oldRow:{handler(l){this.row=f(l)},deep:!0}},methods:{...G(d,["nameSet"])},UPDATE_KEYS:S,EMPTY_ROW:y};function H(l,e,c,x,s,g){const p=i("GroupChip"),u=i("AdminRelationPicker");return h(),A("div",null,[o(E,{modelValue:s.row.name,"onUpdate:modelValue":e[0]||(e[0]=r=>s.row.name=r),label:"Group Name",rules:s.rules.name,clearable:"",autofocus:""},null,8,["modelValue","rules"]),o(N,{inline:"",label:"Type","model-value":s.row.exclude,"hide-details":"auto","onUpdate:modelValue":e[1]||(e[1]=r=>s.row.exclude=r)},{default:a(()=>[o(w,{value:!1},{label:a(()=>[o(p,{item:{name:"Include",exclude:!1},"title-key":"name","group-type":""})]),_:1}),o(w,{value:!0},{label:a(()=>[o(p,{item:{name:"Exclude",exclude:!0},"title-key":"name","group-type":""})]),_:1})]),_:1},8,["model-value"]),o(u,{"model-value":s.row.userSet,label:"Users",objs:l.users,"title-key":"username","onUpdate:modelValue":e[2]||(e[2]=r=>s.row.userSet=r)},null,8,["model-value","objs"]),o(u,{"model-value":s.row.librarySet,label:"Libraries",objs:l.normalLibraries,"title-key":"path","onUpdate:modelValue":e[3]||(e[3]=r=>s.row.librarySet=r)},null,8,["model-value","objs"])])}const P=k(L,[["render",H]]),O=180,z={name:"AdminGroupsTab",components:{AdminTable:j,AdminDeleteRowDialog:D,AdminCreateUpdateDialog:V,RelationChips:I,GroupChip:C},data(){return{lastUpdate:{pk:0,field:void 0},AdminGroupCreateUpdateInputs:T(P),GROUP_HELP_HEIGHT:O,headers:[{title:"Name",key:"name",align:"start"},{title:"Type",key:"exclude",align:"start"},{title:"Users",key:"userSet"},{title:"Libraries",key:"librarySet"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...b(d,["normalLibraries"]),...b(d,{groups:l=>l.groups,users:l=>l.users})},mounted(){this.loadTables(["User","Library","Group"])},methods:{...G(d,["loadTables"]),groupType(l){const e=l.exclude;return{name:e?"Exclude ":"Include",exclude:e}}}},B={class:"tabHeader"},_={id:"groupHelp"},Y={id:"groupTable"};function q(l,e,c,x,s,g){const p=i("AdminCreateUpdateDialog"),u=i("GroupChip"),r=i("RelationChips"),U=i("AdminDeleteRowDialog"),R=i("AdminTable");return h(),A("div",null,[t("header",B,[o(p,{table:"Group","max-width":"20em",inputs:s.AdminGroupCreateUpdateInputs},null,8,["inputs"])]),o(R,{"item-title":"name",headers:s.headers,items:l.groups},{"no-data":a(()=>[...e[0]||(e[0]=[t("td",{class:"adminNoData",colspan:"100%"},"No groups",-1)])]),"item.exclude":a(({item:n})=>[o(u,{"group-type":"",item:g.groupType(n),"title-key":"name"},null,8,["item"])]),"item.userSet":a(({item:n})=>[o(r,{pks:n.userSet,objs:l.users,"title-key":"username"},null,8,["pks","objs"])]),"item.librarySet":a(({item:n})=>[o(r,{pks:n.librarySet,objs:l.normalLibraries,"title-key":"path"},null,8,["pks","objs"])]),"item.actions":a(({item:n})=>[o(p,{table:"Group","old-row":n,"max-width":"20em",inputs:s.AdminGroupCreateUpdateInputs,size:"small",density:"compact"},null,8,["old-row","inputs"]),o(U,{table:"Group",pk:n.pk,name:n.name,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),t("div",_,[e[9]||(e[9]=t("h3",null,"Group Logic",-1)),e[10]||(e[10]=t("p",null," A library in no groups is accessible to every user and non-users if those are enabled. ",-1)),e[11]||(e[11]=t("p",null,[m(" A library with "),t("em",null,"any"),m(" Include groups is accessible "),t("em",null,"only"),m(" to users who are in those groups. ")],-1)),e[12]||(e[12]=t("p",null,[m(" A library with "),t("em",null,"any"),m(" Exclude groups is not accessible to Guest users but is acccessable to any logged in users that are not in the Exclude groups. ")],-1)),e[13]||(e[13]=t("p",null," If you have libraries added and you do not see them in your browser, check to see if the library and your user are in the same group. ",-1)),t("table",Y,[e[8]||(e[8]=t("thead",null,[t("tr",null,[t("th",null,"Library in Group Type"),t("th",null,"Guest"),t("th",null,"User Out of Group"),t("th",null,"User In Group")])],-1)),t("tbody",null,[e[7]||(e[7]=t("tr",null,[t("td",null,"Not in a Group"),t("td",{class:"see"},"Can See"),t("td",{class:"see"},"Can See"),t("td",{class:"see"},"Can See")],-1)),t("tr",null,[t("td",null,[o(u,{item:{name:"Include",exclude:!1},"title-key":"name","group-type":""})]),e[1]||(e[1]=t("td",{class:"hidden"},"Hidden",-1)),e[2]||(e[2]=t("td",{class:"hidden"},"Hidden",-1)),e[3]||(e[3]=t("td",{class:"see"},"Can See",-1))]),t("tr",null,[t("td",null,[o(u,{item:{name:"Exclude",exclude:!0},"title-key":"name","group-type":""})]),e[4]||(e[4]=t("td",{class:"hidden"},"Hidden",-1)),e[5]||(e[5]=t("td",{class:"see"},"Can See",-1)),e[6]||(e[6]=t("td",{class:"hidden"},"Hidden",-1))])])])])])}const ne=k(z,[["render",q],["__scopeId","data-v-84dde1bc"]]);export{ne as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as k,
|
|
1
|
+
import{_ as k,D as G,G as b,v as A,y as h,a as o,x as a,w as i,N as f,b as t,A as m,ap as T}from"./main-CWTxsB_K.js";import{G as C,A as v,R as I,a as V,b as D,c as j}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as d}from"./admin-BStn9kk0.js";import{c as E}from"./VSelectionControl-DFaQ_klW.js";import{a as w,V as N}from"./VRadioGroup-CU9nYUHk.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"./VCheckboxBtn-zhUZJChm.js";import"./VTable-MenML-QS.js";import"./filter-BfEbIpVl.js";import"./confirm-dialog-X8W3euvh.js";const S=["name","userSet","librarySet","exclude"];Object.freeze(S);const y={name:"",userSet:[],librarySet:[],exclude:!1};Object.freeze(y);const L={name:"AdminGroupCreateUpdateInputs",components:{AdminRelationPicker:v,GroupChip:C},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{name:[l=>!!l||"Name is required",l=>!!l&&!this.names.has(l.trim())||"Name already used"]},row:{...y,...f(this.oldRow)}}},computed:{...b(d,["normalLibraries"]),...b(d,{groups:l=>l.groups,users:l=>l.users}),names(){return this.nameSet(this.groups,"name",this.oldRow,!0)}},watch:{row:{handler(l){this.$emit("change",l)},deep:!0},oldRow:{handler(l){this.row=f(l)},deep:!0}},methods:{...G(d,["nameSet"])},UPDATE_KEYS:S,EMPTY_ROW:y};function H(l,e,c,x,s,g){const p=i("GroupChip"),u=i("AdminRelationPicker");return h(),A("div",null,[o(E,{modelValue:s.row.name,"onUpdate:modelValue":e[0]||(e[0]=r=>s.row.name=r),label:"Group Name",rules:s.rules.name,clearable:"",autofocus:""},null,8,["modelValue","rules"]),o(N,{inline:"",label:"Type","model-value":s.row.exclude,"hide-details":"auto","onUpdate:modelValue":e[1]||(e[1]=r=>s.row.exclude=r)},{default:a(()=>[o(w,{value:!1},{label:a(()=>[o(p,{item:{name:"Include",exclude:!1},"title-key":"name","group-type":""})]),_:1}),o(w,{value:!0},{label:a(()=>[o(p,{item:{name:"Exclude",exclude:!0},"title-key":"name","group-type":""})]),_:1})]),_:1},8,["model-value"]),o(u,{"model-value":s.row.userSet,label:"Users",objs:l.users,"title-key":"username","onUpdate:modelValue":e[2]||(e[2]=r=>s.row.userSet=r)},null,8,["model-value","objs"]),o(u,{"model-value":s.row.librarySet,label:"Libraries",objs:l.normalLibraries,"title-key":"path","onUpdate:modelValue":e[3]||(e[3]=r=>s.row.librarySet=r)},null,8,["model-value","objs"])])}const P=k(L,[["render",H]]),O=180,z={name:"AdminGroupsTab",components:{AdminTable:j,AdminDeleteRowDialog:D,AdminCreateUpdateDialog:V,RelationChips:I,GroupChip:C},data(){return{lastUpdate:{pk:0,field:void 0},AdminGroupCreateUpdateInputs:T(P),GROUP_HELP_HEIGHT:O,headers:[{title:"Name",key:"name",align:"start"},{title:"Type",key:"exclude",align:"start"},{title:"Users",key:"userSet"},{title:"Libraries",key:"librarySet"},{title:"Actions",key:"actions",sortable:!1}]}},computed:{...b(d,["normalLibraries"]),...b(d,{groups:l=>l.groups,users:l=>l.users})},mounted(){this.loadTables(["User","Library","Group"])},methods:{...G(d,["loadTables"]),groupType(l){const e=l.exclude;return{name:e?"Exclude ":"Include",exclude:e}}}},B={class:"tabHeader"},_={id:"groupHelp"},Y={id:"groupTable"};function q(l,e,c,x,s,g){const p=i("AdminCreateUpdateDialog"),u=i("GroupChip"),r=i("RelationChips"),U=i("AdminDeleteRowDialog"),R=i("AdminTable");return h(),A("div",null,[t("header",B,[o(p,{table:"Group","max-width":"20em",inputs:s.AdminGroupCreateUpdateInputs},null,8,["inputs"])]),o(R,{"item-title":"name",headers:s.headers,items:l.groups},{"no-data":a(()=>[...e[0]||(e[0]=[t("td",{class:"adminNoData",colspan:"100%"},"No groups",-1)])]),"item.exclude":a(({item:n})=>[o(u,{"group-type":"",item:g.groupType(n),"title-key":"name"},null,8,["item"])]),"item.userSet":a(({item:n})=>[o(r,{pks:n.userSet,objs:l.users,"title-key":"username"},null,8,["pks","objs"])]),"item.librarySet":a(({item:n})=>[o(r,{pks:n.librarySet,objs:l.normalLibraries,"title-key":"path"},null,8,["pks","objs"])]),"item.actions":a(({item:n})=>[o(p,{table:"Group","old-row":n,"max-width":"20em",inputs:s.AdminGroupCreateUpdateInputs,size:"small",density:"compact"},null,8,["old-row","inputs"]),o(U,{table:"Group",pk:n.pk,name:n.name,size:"small",density:"compact"},null,8,["pk","name"])]),_:2},1032,["headers","items"]),t("div",_,[e[9]||(e[9]=t("h3",null,"Group Logic",-1)),e[10]||(e[10]=t("p",null," A library in no groups is accessible to every user and non-users if those are enabled. ",-1)),e[11]||(e[11]=t("p",null,[m(" A library with "),t("em",null,"any"),m(" Include groups is accessible "),t("em",null,"only"),m(" to users who are in those groups. ")],-1)),e[12]||(e[12]=t("p",null,[m(" A library with "),t("em",null,"any"),m(" Exclude groups is not accessible to Guest users but is acccessable to any logged in users that are not in the Exclude groups. ")],-1)),e[13]||(e[13]=t("p",null," If you have libraries added and you do not see them in your browser, check to see if the library and your user are in the same group. ",-1)),t("table",Y,[e[8]||(e[8]=t("thead",null,[t("tr",null,[t("th",null,"Library in Group Type"),t("th",null,"Guest"),t("th",null,"User Out of Group"),t("th",null,"User In Group")])],-1)),t("tbody",null,[e[7]||(e[7]=t("tr",null,[t("td",null,"Not in a Group"),t("td",{class:"see"},"Can See"),t("td",{class:"see"},"Can See"),t("td",{class:"see"},"Can See")],-1)),t("tr",null,[t("td",null,[o(u,{item:{name:"Include",exclude:!1},"title-key":"name","group-type":""})]),e[1]||(e[1]=t("td",{class:"hidden"},"Hidden",-1)),e[2]||(e[2]=t("td",{class:"hidden"},"Hidden",-1)),e[3]||(e[3]=t("td",{class:"see"},"Can See",-1))]),t("tr",null,[t("td",null,[o(u,{item:{name:"Exclude",exclude:!0},"title-key":"name","group-type":""})]),e[4]||(e[4]=t("td",{class:"hidden"},"Hidden",-1)),e[5]||(e[5]=t("td",{class:"see"},"Can See",-1)),e[6]||(e[6]=t("td",{class:"hidden"},"Hidden",-1))])])])])])}const ne=k(z,[["render",q],["__scopeId","data-v-84dde1bc"]]);export{ne as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as h,G as l,z as a,x as i,w as e,H as f,y as s,a as d,b as o,C as p}from"./main-CWTxsB_K.js";import{U as k,A as z,c as A}from"./unauthorized-DQOfB_66.js";import"./VDialog-mZQ1Va-c.js";import"./forwardRefs-CnxuGwpi.js";import"./change-password-dialog-CEdhZwC3.js";import"./VForm-Dt0Uesri.js";import"./VSelectionControl-DFaQ_klW.js";import"./admin-BStn9kk0.js";import"./ssrBoot-yM9n-WhK.js";const c={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(c);const B={name:"HttpError",components:{AppBanner:z,Unauthorized:k},data(){return{}},computed:{...l(f,["isAuthorized"]),code:function(){return+this.$route.params.code},title:function(){let t=c[this.code];return t||(t="Unknown Error"),t}}},E={id:"httpCode"},x={id:"title"};function C(t,r,S,U,y,n){const u=e("AppBanner"),m=e("router-link"),_=e("Unauthorized");return t.isAuthorized?(s(),a(A,{key:0,id:"httpError"},{default:i(()=>[d(u),o("h1",E,p(n.code),1),o("h1",x,p(n.title),1),d(m,{id:"link",to:{name:"home"}},{default:i(()=>[...r[0]||(r[0]=[o("h2",null,"Codex Home",-1)])]),_:1})]),_:1})):(s(),a(_,{key:1}))}const I=h(B,[["render",C],["__scopeId","data-v-1cd9a888"]]);export{I as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as h,G as l,z as a,x as i,w as e,H as f,y as s,a as d,b as o,C as p}from"./main-CWTxsB_K.js";import{U as k,A as z,c as A}from"./unauthorized-DQOfB_66.js";import"./VDialog-mZQ1Va-c.js";import"./forwardRefs-CnxuGwpi.js";import"./change-password-dialog-CEdhZwC3.js";import"./VForm-Dt0Uesri.js";import"./VSelectionControl-DFaQ_klW.js";import"./admin-BStn9kk0.js";import"./ssrBoot-yM9n-WhK.js";const c={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(c);const B={name:"HttpError",components:{AppBanner:z,Unauthorized:k},data(){return{}},computed:{...l(f,["isAuthorized"]),code:function(){return+this.$route.params.code},title:function(){let t=c[this.code];return t||(t="Unknown Error"),t}}},E={id:"httpCode"},x={id:"title"};function C(t,r,S,U,y,n){const u=e("AppBanner"),m=e("router-link"),_=e("Unauthorized");return t.isAuthorized?(s(),a(A,{key:0,id:"httpError"},{default:i(()=>[d(u),o("h1",E,p(n.code),1),o("h1",x,p(n.title),1),d(m,{id:"link",to:{name:"home"}},{default:i(()=>[...r[0]||(r[0]=[o("h2",null,"Codex Home",-1)])]),_:1})]),_:1})):(s(),a(_,{key:1}))}const I=h(B,[["render",C],["__scopeId","data-v-1cd9a888"]]);export{I as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as V,o as P,g as
|
|
1
|
+
import{p as V,o as P,g as T,e as O,bw as S,t as g,r as k,c as d,m,u as w,a as A,cT as h,k as $,ch as b,w as j}from"./main-CWTxsB_K.js";import{q as I,u as R,p as y}from"./VDialog-mZQ1Va-c.js";import{f as B}from"./forwardRefs-CnxuGwpi.js";const q=V({id:String,interactive:Boolean,text:String,...P(I({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:null}),["absolute","persistent"])},"VTooltip"),D=T()({name:"VTooltip",props:q(),emits:{"update:modelValue":t=>!0},setup(t,n){let{slots:a}=n;const e=O(t,"modelValue"),{scopeId:s}=R(),i=S(),o=g(()=>t.id||`v-tooltip-${i}`),r=k(),f=d(()=>t.location.split(" ").length>1?t.location:t.location+" center"),v=d(()=>t.origin==="auto"||t.origin==="overlap"||t.origin.split(" ").length>1||t.location.split(" ").length>1?t.origin:t.origin+" center"),l=g(()=>t.transition!=null?t.transition:e.value?"scale-transition":"fade-transition"),x=d(()=>m({"aria-describedby":o.value},t.activatorProps));return w(()=>{const C=y.filterProps(t);return A(y,m({ref:r,class:["v-tooltip",{"v-tooltip--interactive":t.interactive},t.class],style:t.style,id:o.value},C,{modelValue:e.value,"onUpdate:modelValue":c=>e.value=c,transition:l.value,absolute:!0,location:f.value,origin:v.value,persistent:!0,role:"tooltip",activatorProps:x.value,_disableGlobalStack:!0},s),{activator:a.activator,default:function(){for(var c=arguments.length,p=new Array(c),u=0;u<c;u++)p[u]=arguments[u];return a.default?.(...p)??t.text}})}),B({},r)}});function F(t,n){const a=typeof t=="string"?j(t):t,e=G(a,n);return{mounted:e,updated:e,unmounted(s){h(null,s)}}}function G(t,n){return function(a,e,s){const i=typeof n=="function"?n(e):n,o=e.value?.text??e.value??i?.text,r=$(e.value)?e.value:{},f=()=>o??a.textContent,v=(s.ctx===e.instance.$?H(s,e.instance.$)?.provides:s.ctx?.provides)??e.instance.$.provides,l=b(t,m(i,r),f);l.appContext=Object.assign(Object.create(null),e.instance.$.appContext,{provides:v}),h(l,a)}}function H(t,n){const a=new Set,e=i=>{for(const o of i){if(!o)continue;if(o===t||o.el&&t.el&&o.el===t.el)return!0;a.add(o);let r;if(o.suspense?r=e([o.ssContent]):Array.isArray(o.children)?r=e(o.children):o.component?.vnode&&(r=e([o.component?.subTree])),r)return r;a.delete(o)}return!1};if(!e([n.subTree]))return n;const s=Array.from(a).reverse();for(const i of s)if(i.component)return i.component;return n}const W=F(D,t=>({activator:"parent",location:t.arg?.replace("-"," "),text:typeof t.value=="boolean"?void 0:t.value}));export{W as T};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as V,o as P,g as
|
|
1
|
+
import{p as V,o as P,g as T,e as O,bw as S,t as g,r as k,c as d,m,u as w,a as A,cT as h,k as $,ch as b,w as j}from"./main-CWTxsB_K.js";import{q as I,u as R,p as y}from"./VDialog-mZQ1Va-c.js";import{f as B}from"./forwardRefs-CnxuGwpi.js";const q=V({id:String,interactive:Boolean,text:String,...P(I({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:null}),["absolute","persistent"])},"VTooltip"),D=T()({name:"VTooltip",props:q(),emits:{"update:modelValue":t=>!0},setup(t,n){let{slots:a}=n;const e=O(t,"modelValue"),{scopeId:s}=R(),i=S(),o=g(()=>t.id||`v-tooltip-${i}`),r=k(),f=d(()=>t.location.split(" ").length>1?t.location:t.location+" center"),v=d(()=>t.origin==="auto"||t.origin==="overlap"||t.origin.split(" ").length>1||t.location.split(" ").length>1?t.origin:t.origin+" center"),l=g(()=>t.transition!=null?t.transition:e.value?"scale-transition":"fade-transition"),x=d(()=>m({"aria-describedby":o.value},t.activatorProps));return w(()=>{const C=y.filterProps(t);return A(y,m({ref:r,class:["v-tooltip",{"v-tooltip--interactive":t.interactive},t.class],style:t.style,id:o.value},C,{modelValue:e.value,"onUpdate:modelValue":c=>e.value=c,transition:l.value,absolute:!0,location:f.value,origin:v.value,persistent:!0,role:"tooltip",activatorProps:x.value,_disableGlobalStack:!0},s),{activator:a.activator,default:function(){for(var c=arguments.length,p=new Array(c),u=0;u<c;u++)p[u]=arguments[u];return a.default?.(...p)??t.text}})}),B({},r)}});function F(t,n){const a=typeof t=="string"?j(t):t,e=G(a,n);return{mounted:e,updated:e,unmounted(s){h(null,s)}}}function G(t,n){return function(a,e,s){const i=typeof n=="function"?n(e):n,o=e.value?.text??e.value??i?.text,r=$(e.value)?e.value:{},f=()=>o??a.textContent,v=(s.ctx===e.instance.$?H(s,e.instance.$)?.provides:s.ctx?.provides)??e.instance.$.provides,l=b(t,m(i,r),f);l.appContext=Object.assign(Object.create(null),e.instance.$.appContext,{provides:v}),h(l,a)}}function H(t,n){const a=new Set,e=i=>{for(const o of i){if(!o)continue;if(o===t||o.el&&t.el&&o.el===t.el)return!0;a.add(o);let r;if(o.suspense?r=e([o.ssContent]):Array.isArray(o.children)?r=e(o.children):o.component?.vnode&&(r=e([o.component?.subTree])),r)return r;a.delete(o)}return!1};if(!e([n.subTree]))return n;const s=Array.from(a).reverse();for(const i of s)if(i.component)return i.component;return n}const W=F(D,t=>({activator:"parent",location:t.arg?.replace("-"," "),text:typeof t.value=="boolean"?void 0:t.value}));export{W as T};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as k,C as F,E as y,D as T,q as C,v as p,a as r,x as s,m as D,Y as q,y as w,H as _,w as u,B as v,M as E,ae as J,N as Q,ao as H,a0 as B,bA as X,bB as Z,bC as ee,W as te,b as o,d as oe,z as a,k as re,bD as le,F as se,A as ie}from"./main-BERoK-j2.js";import{A as ne,R as ae,a as $,b as de,c as me}from"./relation-chips-C4GQrh_b.js";import{useAdminStore as h}from"./admin-D7dHJsJ4.js";import{a as ue}from"./VDialog-B1OSC1f5.js";import{V as pe}from"./VCombobox-HMiIZRsM.js";import{V as L}from"./VCheckbox-BwGe90i7.js";import{c as ce,d as U}from"./VSelectionControl-3mF3UtxV.js";import{D as N}from"./datetime-column-zWcVwgyi.js";import{C as he}from"./confirm-dialog-Bc3Bw4Wf.js";import{V as R}from"./VCheckboxBtn-CqdpagcB.js";import{V as A,a as x,b as I,c as P}from"./VExpansionPanels-Bwkzb0Oy.js";import{k as z}from"./forwardRefs-CGimG8CQ.js";import{V as fe}from"./VTable-KYw5fCd8.js";import"./VForm-J2mEa_og.js";import"./VSelect-CP3Eb9Go.js";import"./ssrBoot-_TndNOM6.js";import"./VDivider-6KdInZc6.js";import"./filter-DWF4EaH3.js";const be={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(h,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(T,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...F(h,["clearFolders","loadFolders"]),...F(T,["clearErrors"]),change(e){let t;e?t=e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):t=this.rootFolder;const m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let b="";return this.formErrors.length===0&&(this.path=b=this.rootFolder),this.$emit("change",b)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},ye={id:"folderPicker"};function ve(e,t,m,b,l,i){return p(),C("div",ye,[r(pe,D({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=d=>l.path=d),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=d=>l.menuOpen=d)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:i.onBlur,"onClick:clear":i.onClear,onKeydown:q(i.onKeyDownEnter,["enter"])}),{item:s(({item:d,props:f})=>[r(ue,D(f,{title:d.title,value:d.value,onClick:g=>i.onItemClick(d.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(L,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=d=>l.showHidden=d),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const ge=k(be,[["render",ve],["__scopeId","data-v-61ca3769"]]),O="DDD HH:mm:SS",Ce=/^(?:[0-3]?\d?\d\s)?(?:[01]?\d|2[0-3])(?::[0-5]\d){2}$/,we={name:"TimeTextField",data(){return{FORMAT:O,timeRules:[e=>Ce.test(e)||`Invalid time format ${O}`]}}};function ke(e,t,m,b,l,i){return p(),w(ce,D({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=k(we,[["render",ke]]),j=["events","poll","pollEvery","groups"];Object.freeze(j);const V={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(V);const S=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),_e={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:ne,AdminServerFolderPicker:ge,TimeTextField:Fe},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(S(t,e))return"Path is a child of an existing library";if(S(e,t))return"Path is a parent of an existing library"}return!0}]},row:E(this.oldRow||V)}},computed:{...y(h,["normalLibraries"]),...y(h,{groups:e=>e.groups}),paths(){return this.nameSet(this.normalLibraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=E(e)},deep:!0}},methods:{...F(h,["nameSet"])},UPDATE_KEYS:j,EMPTY_ROW:V},Ae={key:1};function xe(e,t,m,b,l,i){const d=u("AdminServerFolderPicker"),f=u("TimeTextField"),g=u("AdminRelationPicker");return p(),C("section",null,[m.oldRow?(p(),C("div",Ae,v(m.oldRow.path),1)):(p(),w(d,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=c=>l.row.path=c)},null,8,["rules"])),r(L,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=c=>l.row.events=c),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(L,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=c=>l.row.poll=c),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),r(f,{modelValue:l.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=c=>l.row.pollEvery=c),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?_("",!0):(p(),w(g,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=c=>l.row.groups=c),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))])}const W=k(_e,[["render",xe]]),Ie={name:"AdminLibrariesTab",components:{AdminTable:me,AdminDeleteRowDialog:de,AdminCreateUpdateDialog:$,RelationChips:ae,ConfirmDialog:he,DateTimeColumn:N},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:ee,mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:X,mdiOpenInNew:B,AdminLibraryCreateUpdateInputs:H(W)}},computed:{...y(h,["normalLibraries","customCoverLibraries"]),...y(h,{groups:e=>e.groups,isFailedImports:e=>!!e?.failedImports?.length}),...y(T,{formErrors:e=>e.form?.errors}),...y(Q,{twentyFourHourTime:e=>e.settings.twentyFourHourTime}),headers(){const e=this.coversDir?"Covers":"Comics",t=[{title:"Path",key:"path",align:"start"},{title:e,key:"comicCount"}];return this.isFailedImports&&t.push({title:"Failed",key:"failedCount"}),t.push({title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}),!this.coversDir&&this.isGroups&&t.push({title:"Groups",key:"groups"}),t.push({title:"Actions",key:"actions",sortable:!1}),t},items(){return globalThis.coversDir?this.customCoverLibraries:this.normalLibraries},updateLabel(){return this.coversDir?"Cover Dir":""},itemName(){return this.coversDir?"custom covers":"comics"},iconSize(){const e=this.$vuetify.display;return e.xlAndUp?"x-large":e.lgAndUp?"large":e.mdAndUp?"default":"small"},isGroups(){return!!this.groups?.length}},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...F(h,["updateRow","clearErrors","librarianTask","loadTables"]),formatNumber(e){return J.format(e)},changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const b={[t]:m};this.updateRow("Library",e,b)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let m="";return e.coversOnly?(t&&(m+="Custom Group "),m+="Cover Dir"):m+="Library",m},poll(e){const t=this.libraryLabel(e);this.librarianTask("poll",`Poll ${t} ${e.pk}`,e.pk)},forcePoll(e){const t=this.libraryLabel(e);this.librarianTask("poll_force",`Force Poll ${t} ${e.pk}`,e.pk)},pollConfirmText(e){return`Poll ${this.libraryLabel(e,!1)}`}}},Pe={class:"failedComics"},Te={class:"actionButtonCell"};function De(e,t,m,b,l,i){const d=u("DateTimeColumn"),f=u("RelationChips"),g=u("ConfirmDialog"),c=u("AdminCreateUpdateDialog"),M=u("AdminDeleteRowDialog"),K=u("AdminTable");return p(),w(K,{headers:i.headers},te({"no-data":s(()=>[t[0]||(t[0]=o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1))]),"item.comicCount":s(({item:n})=>[a(v(i.formatNumber(n.comicCount)),1)]),"item.events":s(({item:n})=>[r(R,{"model-value":n.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:n})=>[r(R,{"model-value":n.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:n})=>[o("span",{class:oe({disabled:!n.poll})},v(n.pollEvery),3)]),"item.lastPoll":s(({item:n})=>[r(d,{dttm:n.lastPoll},null,8,["dttm"])]),"item.actions":s(({item:n})=>[o("span",Te,[r(g,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.itemName}`,text:n.path,"confirm-text":i.pollConfirmText(n),size:i.iconSize,density:"compact",onConfirm:Y=>i.poll(n)},null,8,["icon","title-text","text","confirm-text","size","onConfirm"]),r(g,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update ${i.itemName}`,text:n.path,"confirm-text":"Force Update",size:i.iconSize,density:"compact",onConfirm:Y=>i.forcePoll(n)},null,8,["icon","title-text","text","size","onConfirm"]),r(c,{table:"Library","old-row":n,inputs:l.AdminLibraryCreateUpdateInputs,label:i.updateLabel,"max-width":"22em",size:i.iconSize,density:"compact"},null,8,["old-row","inputs","label","size"]),n.coversOnly?_("",!0):(p(),w(M,{key:0,table:"Library",pk:n.pk,name:n.path,size:i.iconSize,density:"compact"},null,8,["pk","name","size"]))])]),_:2},[e.isFailedImports?{name:"item.failedCount",fn:s(({item:n})=>[o("span",Pe,v(i.formatNumber(n.failedCount)),1)]),key:"0"}:void 0,i.isGroups?{name:"item.groups",fn:s(({item:n})=>[r(f,{pks:n.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),key:"1"}:void 0]),1032,["headers"])}const G=k(Ie,[["render",De],["__scopeId","data-v-2e8006a3"]]),Le={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:G},computed:{...y(h,["customCoverLibraries"])}};function Ve(e,t,m,b,l,i){const d=u("AdminLibraryTable");return p(),w(A,null,{default:s(()=>[r(x,null,{default:s(()=>[r(I,null,{default:s(()=>[...t[0]||(t[0]=[o("h4",{id:"coverDirHeader"},"Custom Covers",-1)])]),_:1}),r(P,null,{default:s(()=>[r(d,{items:e.customCoverLibraries,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(A,null,{default:s(()=>[r(x,{id:"customCoversHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[1]||(t[1]=[o("h4",null,"Custom Covers Help",-1)])]),_:1}),r(P,null,{default:s(()=>[...t[2]||(t[2]=[o("p",null,"Custom covers may be added to the browser in two locations:",-1),o("h4",null,"Folders",-1),o("p",null,[a(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),a(" will show a custom cover for that folder in Folder view. The addition and removal of these covers by watching filesystem events and polling is handled by the library that folder belongs to. ")],-1),o("h4",null,"Custom Covers Dir",-1),o("p",null,[a(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),a(" under which are subdirectories for each of the browser groups that may adopt custom covers. Images in these subdirectories that match the name of the browser group will be used as custom covers. For instance: "),o("code",null,".../custom-covers/publishers/American Comics Group.webp"),a(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),a(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),a(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),a(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1),o("h4",null,"Image Formats & Size",-1),o("p",null,[a(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),a(". ")],-1),o("p",null," Browser covers are transformed from their sources to 165px x 254px thumbnails. Custom covers will transform most aesthetically the closer to that ratio they are. ",-1),o("h4",null,"Priority",-1),o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ee=k(Le,[["render",Ve],["__scopeId","data-v-268927b7"]]),Ue={name:"AdminFailedImportsPanel",components:{DateTimeColumn:N},data(){return{mdiBookAlert:le,mdiOpenInNew:B}},computed:{...y(h,{failedImports:e=>e.failedImports,showFailedImports:e=>e.failedImports&&e.failedImports.length>0}),...re(h,["unseenFailedImports"])}},Re={key:0},ze={class:"dateCol"},Oe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"};function Se(e,t,m,b,l,i){const d=u("DateTimeColumn");return e.showFailedImports?(p(),C("div",Re,[r(A,null,{default:s(()=>[r(x,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(I,null,{default:s(()=>[o("h4",null,"Failed Imports: "+v(e.failedImports.length),1),e.unseenFailedImports?(p(),w(z,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[a(v(l.mdiBookAlert),1)]),_:1})):_("",!0)]),_:1}),r(P,null,{default:s(()=>[r(fe,{class:"highlight-table"},{default:s(()=>[t[1]||(t[1]=o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),o("tbody",null,[(p(!0),C(se,null,ie(e.failedImports,f=>(p(),C("tr",{key:`fi:${f.path}`},[o("td",null,v(f.path),1),o("td",ze,[r(d,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(A,null,{default:s(()=>[r(x,{id:"failedImportsHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[2]||(t[2]=[o("h4",null,"Failed Imports Help",-1)])]),_:1}),r(P,null,{default:s(()=>[t[8]||(t[8]=o("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),t[9]||(t[9]=o("h4",null,"Fixing comics",-1)),t[10]||(t[10]=o("p",null,[a(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[a(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),a(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),a(" mv fixed.zip problem-comic.cbz ")]),a(" You may also try "),o("code",null,"zip -FF"),a(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),t[11]||(t[11]=o("h4",null,"Reporting Issues",-1)),o("p",null,[t[4]||(t[4]=a(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an ",-1)),o("a",Oe,[t[3]||(t[3]=a("Issue Report",-1)),r(z,{size:"small"},{default:s(()=>[a(v(l.mdiOpenInNew),1)]),_:1})]),t[5]||(t[5]=a(" and include the stack trace from the logs at ",-1)),t[6]||(t[6]=o("code",null,"config/logs/codex.log",-1)),t[7]||(t[7]=a(" if you can. ",-1))])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):_("",!0)}const He=k(Ue,[["render",Se],["__scopeId","data-v-827c9a0b"]]),Be={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:He,AdminLibraryTable:G,AdminCreateUpdateDialog:$,AdminCustomCoversPanel:Ee},data(){return{AdminLibraryCreateUpdateInputs:H(W)}},computed:{...y(h,["normalLibraries"])},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...F(h,["loadTables"])}},$e={class:"tabHeader"};function Ne(e,t,m,b,l,i){const d=u("AdminCreateUpdateDialog"),f=u("AdminLibraryTable"),g=u("AdminFailedImportsPanel"),c=u("AdminCustomCoversPanel");return p(),C("div",null,[o("header",$e,[r(d,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.normalLibraries,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(g,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(c,{id:"customCovers"})]),_:1}),t[0]||(t[0]=o("p",{id:"libraryHelp"}," Each Watched File Events box checked creates a thread to monitor the Library. An large number of watching threads may exceed the limits of your operating system or container. ",-1))])}const nt=k(Be,[["render",Ne],["__scopeId","data-v-66bb908f"]]);export{nt as default};
|
|
1
|
+
import{_ as F,D as k,G as y,E as T,v as C,y as p,a as r,x as s,m as D,Z as q,z as w,I as _,w as u,C as v,N as E,af as X,O as Z,ap as H,a1 as B,bC as J,bD as Q,bE as ee,X as te,b as o,d as oe,A as a,l as re,bF as le,F as se,B as ie}from"./main-CWTxsB_K.js";import{A as ne,R as ae,a as $,b as de,c as me}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as h}from"./admin-BStn9kk0.js";import{a as ue}from"./VDialog-mZQ1Va-c.js";import{V as pe}from"./VCombobox-O2BHnDUr.js";import{V as L}from"./VCheckbox-BY6G_rgf.js";import{c as ce,d as U}from"./VSelectionControl-DFaQ_klW.js";import{D as N}from"./datetime-column-CzIyyJDK.js";import{C as he}from"./confirm-dialog-X8W3euvh.js";import{V as O}from"./VCheckboxBtn-zhUZJChm.js";import{V as A,a as x,b as I,c as P}from"./VExpansionPanels-B8bQXRWn.js";import{k as R}from"./forwardRefs-CnxuGwpi.js";import{V as fe}from"./VTable-MenML-QS.js";import"./VForm-Dt0Uesri.js";import"./VSelect-DpnHasju.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./filter-BfEbIpVl.js";const be={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(h,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(T,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...k(h,["clearFolders","loadFolders"]),...k(T,["clearErrors"]),change(e){let t;e?t=e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):t=this.rootFolder;const m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let b="";return this.formErrors.length===0&&(this.path=b=this.rootFolder),this.$emit("change",b)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},ye={id:"folderPicker"};function ve(e,t,m,b,l,i){return p(),C("div",ye,[r(pe,D({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=d=>l.path=d),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=d=>l.menuOpen=d)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:i.onBlur,"onClick:clear":i.onClear,onKeydown:q(i.onKeyDownEnter,["enter"])}),{item:s(({item:d,props:f})=>[r(ue,D(f,{title:d.title,value:d.value,onClick:g=>i.onItemClick(d.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(L,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=d=>l.showHidden=d),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const ge=F(be,[["render",ve],["__scopeId","data-v-61ca3769"]]),z="DDD HH:mm:SS",Ce=/^(?:[0-3]?\d?\d\s)?(?:[01]?\d|2[0-3])(?::[0-5]\d){2}$/,we={name:"TimeTextField",data(){return{FORMAT:z,timeRules:[e=>Ce.test(e)||`Invalid time format ${z}`]}}};function Fe(e,t,m,b,l,i){return p(),w(ce,D({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=F(we,[["render",Fe]]),j=["events","poll","pollEvery","groups"];Object.freeze(j);const V={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(V);const S=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),_e={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:ne,AdminServerFolderPicker:ge,TimeTextField:ke},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(S(t,e))return"Path is a child of an existing library";if(S(e,t))return"Path is a parent of an existing library"}return!0}]},row:E(this.oldRow||V)}},computed:{...y(h,["normalLibraries"]),...y(h,{groups:e=>e.groups}),paths(){return this.nameSet(this.normalLibraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=E(e)},deep:!0}},methods:{...k(h,["nameSet"])},UPDATE_KEYS:j,EMPTY_ROW:V},Ae={key:1};function xe(e,t,m,b,l,i){const d=u("AdminServerFolderPicker"),f=u("TimeTextField"),g=u("AdminRelationPicker");return p(),C("section",null,[m.oldRow?(p(),C("div",Ae,v(m.oldRow.path),1)):(p(),w(d,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=c=>l.row.path=c)},null,8,["rules"])),r(L,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=c=>l.row.events=c),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(L,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=c=>l.row.poll=c),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),r(f,{modelValue:l.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=c=>l.row.pollEvery=c),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?_("",!0):(p(),w(g,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=c=>l.row.groups=c),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))])}const G=F(_e,[["render",xe]]),Ie={name:"AdminLibrariesTab",components:{AdminTable:me,AdminDeleteRowDialog:de,AdminCreateUpdateDialog:$,RelationChips:ae,ConfirmDialog:he,DateTimeColumn:N},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:ee,mdiDatabaseClockOutline:Q,mdiDatabaseSyncOutline:J,mdiOpenInNew:B,AdminLibraryCreateUpdateInputs:H(G)}},computed:{...y(h,["normalLibraries","customCoverLibraries"]),...y(h,{groups:e=>e.groups,isFailedImports:e=>!!e?.failedImports?.length}),...y(T,{formErrors:e=>e.form?.errors}),...y(Z,{twentyFourHourTime:e=>e.settings.twentyFourHourTime}),headers(){const e=this.coversDir?"Covers":"Comics",t=[{title:"Path",key:"path",align:"start"},{title:e,key:"comicCount"}];return this.isFailedImports&&t.push({title:"Failed",key:"failedCount"}),t.push({title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}),!this.coversDir&&this.isGroups&&t.push({title:"Groups",key:"groups"}),t.push({title:"Actions",key:"actions",sortable:!1}),t},items(){return globalThis.coversDir?this.customCoverLibraries:this.normalLibraries},updateLabel(){return this.coversDir?"Cover Dir":""},itemName(){return this.coversDir?"custom covers":"comics"},iconSize(){const e=this.$vuetify.display;return e.xlAndUp?"x-large":e.lgAndUp?"large":e.mdAndUp?"default":"small"},isGroups(){return!!this.groups?.length}},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...k(h,["updateRow","clearErrors","librarianTask","loadTables"]),formatNumber(e){return X.format(e)},changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const b={[t]:m};this.updateRow("Library",e,b)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let m="";return e.coversOnly?(t&&(m+="Custom Group "),m+="Cover Dir"):m+="Library",m},poll(e){const t=this.libraryLabel(e);this.librarianTask("poll",`Poll ${t} ${e.pk}`,e.pk)},forcePoll(e){const t=this.libraryLabel(e);this.librarianTask("poll_force",`Force Poll ${t} ${e.pk}`,e.pk)},pollConfirmText(e){return`Poll ${this.libraryLabel(e,!1)}`}}},Pe={class:"failedComics"},Te={class:"actionButtonCell"};function De(e,t,m,b,l,i){const d=u("DateTimeColumn"),f=u("RelationChips"),g=u("ConfirmDialog"),c=u("AdminCreateUpdateDialog"),M=u("AdminDeleteRowDialog"),K=u("AdminTable");return p(),w(K,{headers:i.headers},te({"no-data":s(()=>[t[0]||(t[0]=o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1))]),"item.comicCount":s(({item:n})=>[a(v(i.formatNumber(n.comicCount)),1)]),"item.events":s(({item:n})=>[r(O,{"model-value":n.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:n})=>[r(O,{"model-value":n.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:n})=>[o("span",{class:oe({disabled:!n.poll})},v(n.pollEvery),3)]),"item.lastPoll":s(({item:n})=>[r(d,{dttm:n.lastPoll},null,8,["dttm"])]),"item.actions":s(({item:n})=>[o("span",Te,[r(g,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.itemName}`,text:n.path,"confirm-text":i.pollConfirmText(n),size:i.iconSize,density:"compact",onConfirm:Y=>i.poll(n)},null,8,["icon","title-text","text","confirm-text","size","onConfirm"]),r(g,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update ${i.itemName}`,text:n.path,"confirm-text":"Force Update",size:i.iconSize,density:"compact",onConfirm:Y=>i.forcePoll(n)},null,8,["icon","title-text","text","size","onConfirm"]),r(c,{table:"Library","old-row":n,inputs:l.AdminLibraryCreateUpdateInputs,label:i.updateLabel,"max-width":"22em",size:i.iconSize,density:"compact"},null,8,["old-row","inputs","label","size"]),n.coversOnly?_("",!0):(p(),w(M,{key:0,table:"Library",pk:n.pk,name:n.path,size:i.iconSize,density:"compact"},null,8,["pk","name","size"]))])]),_:2},[e.isFailedImports?{name:"item.failedCount",fn:s(({item:n})=>[o("span",Pe,v(i.formatNumber(n.failedCount)),1)]),key:"0"}:void 0,i.isGroups?{name:"item.groups",fn:s(({item:n})=>[r(f,{pks:n.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),key:"1"}:void 0]),1032,["headers"])}const W=F(Ie,[["render",De],["__scopeId","data-v-2e8006a3"]]),Le={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:W},computed:{...y(h,["customCoverLibraries"])}};function Ve(e,t,m,b,l,i){const d=u("AdminLibraryTable");return p(),w(A,null,{default:s(()=>[r(x,null,{default:s(()=>[r(I,null,{default:s(()=>[...t[0]||(t[0]=[o("h4",{id:"coverDirHeader"},"Custom Covers",-1)])]),_:1}),r(P,null,{default:s(()=>[r(d,{items:e.customCoverLibraries,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(A,null,{default:s(()=>[r(x,{id:"customCoversHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[1]||(t[1]=[o("h4",null,"Custom Covers Help",-1)])]),_:1}),r(P,null,{default:s(()=>[...t[2]||(t[2]=[o("p",null,"Custom covers may be added to the browser in two locations:",-1),o("h4",null,"Folders",-1),o("p",null,[a(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),a(" will show a custom cover for that folder in Folder view. The addition and removal of these covers by watching filesystem events and polling is handled by the library that folder belongs to. ")],-1),o("h4",null,"Custom Covers Dir",-1),o("p",null,[a(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),a(" under which are subdirectories for each of the browser groups that may adopt custom covers. Images in these subdirectories that match the name of the browser group will be used as custom covers. For instance: "),o("code",null,".../custom-covers/publishers/American Comics Group.webp"),a(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),a(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),a(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),a(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1),o("h4",null,"Image Formats & Size",-1),o("p",null,[a(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),a(". ")],-1),o("p",null," Browser covers are transformed from their sources to 165px x 254px thumbnails. Custom covers will transform most aesthetically the closer to that ratio they are. ",-1),o("h4",null,"Priority",-1),o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ee=F(Le,[["render",Ve],["__scopeId","data-v-268927b7"]]),Ue={name:"AdminFailedImportsPanel",components:{DateTimeColumn:N},data(){return{mdiBookAlert:le,mdiOpenInNew:B}},computed:{...y(h,{failedImports:e=>e.failedImports,showFailedImports:e=>e.failedImports&&e.failedImports.length>0}),...re(h,["unseenFailedImports"])}},Oe={key:0},Re={class:"dateCol"},ze={href:"https://github.com/ajslater/codex/issues/",target:"_blank"};function Se(e,t,m,b,l,i){const d=u("DateTimeColumn");return e.showFailedImports?(p(),C("div",Oe,[r(A,null,{default:s(()=>[r(x,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(I,null,{default:s(()=>[o("h4",null,"Failed Imports: "+v(e.failedImports.length),1),e.unseenFailedImports?(p(),w(R,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[a(v(l.mdiBookAlert),1)]),_:1})):_("",!0)]),_:1}),r(P,null,{default:s(()=>[r(fe,{class:"highlight-table"},{default:s(()=>[t[1]||(t[1]=o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),o("tbody",null,[(p(!0),C(se,null,ie(e.failedImports,f=>(p(),C("tr",{key:`fi:${f.path}`},[o("td",null,v(f.path),1),o("td",Re,[r(d,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(A,null,{default:s(()=>[r(x,{id:"failedImportsHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[2]||(t[2]=[o("h4",null,"Failed Imports Help",-1)])]),_:1}),r(P,null,{default:s(()=>[t[8]||(t[8]=o("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),t[9]||(t[9]=o("h4",null,"Fixing comics",-1)),t[10]||(t[10]=o("p",null,[a(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[a(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),a(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),a(" mv fixed.zip problem-comic.cbz ")]),a(" You may also try "),o("code",null,"zip -FF"),a(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),t[11]||(t[11]=o("h4",null,"Reporting Issues",-1)),o("p",null,[t[4]||(t[4]=a(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an ",-1)),o("a",ze,[t[3]||(t[3]=a("Issue Report",-1)),r(R,{size:"small"},{default:s(()=>[a(v(l.mdiOpenInNew),1)]),_:1})]),t[5]||(t[5]=a(" and include the stack trace from the logs at ",-1)),t[6]||(t[6]=o("code",null,"config/logs/codex.log",-1)),t[7]||(t[7]=a(" if you can. ",-1))])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):_("",!0)}const He=F(Ue,[["render",Se],["__scopeId","data-v-827c9a0b"]]),Be={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:He,AdminLibraryTable:W,AdminCreateUpdateDialog:$,AdminCustomCoversPanel:Ee},data(){return{AdminLibraryCreateUpdateInputs:H(G)}},computed:{...y(h,["normalLibraries"])},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...k(h,["loadTables"])}},$e={class:"tabHeader"};function Ne(e,t,m,b,l,i){const d=u("AdminCreateUpdateDialog"),f=u("AdminLibraryTable"),g=u("AdminFailedImportsPanel"),c=u("AdminCustomCoversPanel");return p(),C("div",null,[o("header",$e,[r(d,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.normalLibraries,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(g,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(c,{id:"customCovers"})]),_:1}),t[0]||(t[0]=o("p",{id:"libraryHelp"}," Each Watched File Events box checked creates a thread to monitor the Library. An large number of watching threads may exceed the limits of your operating system or container. ",-1))])}const nt=F(Be,[["render",Ne],["__scopeId","data-v-66bb908f"]]);export{nt as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as k,C as F,E as y,D as T,q as C,v as p,a as r,x as s,m as D,Y as q,y as w,H as _,w as u,B as v,M as E,ae as J,N as Q,ao as H,a0 as B,bA as X,bB as Z,bC as ee,W as te,b as o,d as oe,z as a,k as re,bD as le,F as se,A as ie}from"./main-BERoK-j2.js";import{A as ne,R as ae,a as $,b as de,c as me}from"./relation-chips-C4GQrh_b.js";import{useAdminStore as h}from"./admin-D7dHJsJ4.js";import{a as ue}from"./VDialog-B1OSC1f5.js";import{V as pe}from"./VCombobox-HMiIZRsM.js";import{V as L}from"./VCheckbox-BwGe90i7.js";import{c as ce,d as U}from"./VSelectionControl-3mF3UtxV.js";import{D as N}from"./datetime-column-zWcVwgyi.js";import{C as he}from"./confirm-dialog-Bc3Bw4Wf.js";import{V as R}from"./VCheckboxBtn-CqdpagcB.js";import{V as A,a as x,b as I,c as P}from"./VExpansionPanels-Bwkzb0Oy.js";import{k as z}from"./forwardRefs-CGimG8CQ.js";import{V as fe}from"./VTable-KYw5fCd8.js";import"./VForm-J2mEa_og.js";import"./VSelect-CP3Eb9Go.js";import"./ssrBoot-_TndNOM6.js";import"./VDivider-6KdInZc6.js";import"./filter-DWF4EaH3.js";const be={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(h,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(T,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...F(h,["clearFolders","loadFolders"]),...F(T,["clearErrors"]),change(e){let t;e?t=e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):t=this.rootFolder;const m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let b="";return this.formErrors.length===0&&(this.path=b=this.rootFolder),this.$emit("change",b)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},ye={id:"folderPicker"};function ve(e,t,m,b,l,i){return p(),C("div",ye,[r(pe,D({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=d=>l.path=d),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=d=>l.menuOpen=d)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:i.onBlur,"onClick:clear":i.onClear,onKeydown:q(i.onKeyDownEnter,["enter"])}),{item:s(({item:d,props:f})=>[r(ue,D(f,{title:d.title,value:d.value,onClick:g=>i.onItemClick(d.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(L,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=d=>l.showHidden=d),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const ge=k(be,[["render",ve],["__scopeId","data-v-61ca3769"]]),O="DDD HH:mm:SS",Ce=/^(?:[0-3]?\d?\d\s)?(?:[01]?\d|2[0-3])(?::[0-5]\d){2}$/,we={name:"TimeTextField",data(){return{FORMAT:O,timeRules:[e=>Ce.test(e)||`Invalid time format ${O}`]}}};function ke(e,t,m,b,l,i){return p(),w(ce,D({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=k(we,[["render",ke]]),j=["events","poll","pollEvery","groups"];Object.freeze(j);const V={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(V);const S=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),_e={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:ne,AdminServerFolderPicker:ge,TimeTextField:Fe},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(S(t,e))return"Path is a child of an existing library";if(S(e,t))return"Path is a parent of an existing library"}return!0}]},row:E(this.oldRow||V)}},computed:{...y(h,["normalLibraries"]),...y(h,{groups:e=>e.groups}),paths(){return this.nameSet(this.normalLibraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=E(e)},deep:!0}},methods:{...F(h,["nameSet"])},UPDATE_KEYS:j,EMPTY_ROW:V},Ae={key:1};function xe(e,t,m,b,l,i){const d=u("AdminServerFolderPicker"),f=u("TimeTextField"),g=u("AdminRelationPicker");return p(),C("section",null,[m.oldRow?(p(),C("div",Ae,v(m.oldRow.path),1)):(p(),w(d,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=c=>l.row.path=c)},null,8,["rules"])),r(L,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=c=>l.row.events=c),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(L,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=c=>l.row.poll=c),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),r(f,{modelValue:l.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=c=>l.row.pollEvery=c),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?_("",!0):(p(),w(g,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=c=>l.row.groups=c),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))])}const W=k(_e,[["render",xe]]),Ie={name:"AdminLibrariesTab",components:{AdminTable:me,AdminDeleteRowDialog:de,AdminCreateUpdateDialog:$,RelationChips:ae,ConfirmDialog:he,DateTimeColumn:N},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:ee,mdiDatabaseClockOutline:Z,mdiDatabaseSyncOutline:X,mdiOpenInNew:B,AdminLibraryCreateUpdateInputs:H(W)}},computed:{...y(h,["normalLibraries","customCoverLibraries"]),...y(h,{groups:e=>e.groups,isFailedImports:e=>!!e?.failedImports?.length}),...y(T,{formErrors:e=>e.form?.errors}),...y(Q,{twentyFourHourTime:e=>e.settings.twentyFourHourTime}),headers(){const e=this.coversDir?"Covers":"Comics",t=[{title:"Path",key:"path",align:"start"},{title:e,key:"comicCount"}];return this.isFailedImports&&t.push({title:"Failed",key:"failedCount"}),t.push({title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}),!this.coversDir&&this.isGroups&&t.push({title:"Groups",key:"groups"}),t.push({title:"Actions",key:"actions",sortable:!1}),t},items(){return globalThis.coversDir?this.customCoverLibraries:this.normalLibraries},updateLabel(){return this.coversDir?"Cover Dir":""},itemName(){return this.coversDir?"custom covers":"comics"},iconSize(){const e=this.$vuetify.display;return e.xlAndUp?"x-large":e.lgAndUp?"large":e.mdAndUp?"default":"small"},isGroups(){return!!this.groups?.length}},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...F(h,["updateRow","clearErrors","librarianTask","loadTables"]),formatNumber(e){return J.format(e)},changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const b={[t]:m};this.updateRow("Library",e,b)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let m="";return e.coversOnly?(t&&(m+="Custom Group "),m+="Cover Dir"):m+="Library",m},poll(e){const t=this.libraryLabel(e);this.librarianTask("poll",`Poll ${t} ${e.pk}`,e.pk)},forcePoll(e){const t=this.libraryLabel(e);this.librarianTask("poll_force",`Force Poll ${t} ${e.pk}`,e.pk)},pollConfirmText(e){return`Poll ${this.libraryLabel(e,!1)}`}}},Pe={class:"failedComics"},Te={class:"actionButtonCell"};function De(e,t,m,b,l,i){const d=u("DateTimeColumn"),f=u("RelationChips"),g=u("ConfirmDialog"),c=u("AdminCreateUpdateDialog"),M=u("AdminDeleteRowDialog"),K=u("AdminTable");return p(),w(K,{headers:i.headers},te({"no-data":s(()=>[t[0]||(t[0]=o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1))]),"item.comicCount":s(({item:n})=>[a(v(i.formatNumber(n.comicCount)),1)]),"item.events":s(({item:n})=>[r(R,{"model-value":n.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:n})=>[r(R,{"model-value":n.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:n})=>[o("span",{class:oe({disabled:!n.poll})},v(n.pollEvery),3)]),"item.lastPoll":s(({item:n})=>[r(d,{dttm:n.lastPoll},null,8,["dttm"])]),"item.actions":s(({item:n})=>[o("span",Te,[r(g,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.itemName}`,text:n.path,"confirm-text":i.pollConfirmText(n),size:i.iconSize,density:"compact",onConfirm:Y=>i.poll(n)},null,8,["icon","title-text","text","confirm-text","size","onConfirm"]),r(g,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update ${i.itemName}`,text:n.path,"confirm-text":"Force Update",size:i.iconSize,density:"compact",onConfirm:Y=>i.forcePoll(n)},null,8,["icon","title-text","text","size","onConfirm"]),r(c,{table:"Library","old-row":n,inputs:l.AdminLibraryCreateUpdateInputs,label:i.updateLabel,"max-width":"22em",size:i.iconSize,density:"compact"},null,8,["old-row","inputs","label","size"]),n.coversOnly?_("",!0):(p(),w(M,{key:0,table:"Library",pk:n.pk,name:n.path,size:i.iconSize,density:"compact"},null,8,["pk","name","size"]))])]),_:2},[e.isFailedImports?{name:"item.failedCount",fn:s(({item:n})=>[o("span",Pe,v(i.formatNumber(n.failedCount)),1)]),key:"0"}:void 0,i.isGroups?{name:"item.groups",fn:s(({item:n})=>[r(f,{pks:n.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),key:"1"}:void 0]),1032,["headers"])}const G=k(Ie,[["render",De],["__scopeId","data-v-2e8006a3"]]),Le={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:G},computed:{...y(h,["customCoverLibraries"])}};function Ve(e,t,m,b,l,i){const d=u("AdminLibraryTable");return p(),w(A,null,{default:s(()=>[r(x,null,{default:s(()=>[r(I,null,{default:s(()=>[...t[0]||(t[0]=[o("h4",{id:"coverDirHeader"},"Custom Covers",-1)])]),_:1}),r(P,null,{default:s(()=>[r(d,{items:e.customCoverLibraries,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(A,null,{default:s(()=>[r(x,{id:"customCoversHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[1]||(t[1]=[o("h4",null,"Custom Covers Help",-1)])]),_:1}),r(P,null,{default:s(()=>[...t[2]||(t[2]=[o("p",null,"Custom covers may be added to the browser in two locations:",-1),o("h4",null,"Folders",-1),o("p",null,[a(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),a(" will show a custom cover for that folder in Folder view. The addition and removal of these covers by watching filesystem events and polling is handled by the library that folder belongs to. ")],-1),o("h4",null,"Custom Covers Dir",-1),o("p",null,[a(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),a(" under which are subdirectories for each of the browser groups that may adopt custom covers. Images in these subdirectories that match the name of the browser group will be used as custom covers. For instance: "),o("code",null,".../custom-covers/publishers/American Comics Group.webp"),a(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),a(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),a(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),a(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1),o("h4",null,"Image Formats & Size",-1),o("p",null,[a(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),a(". ")],-1),o("p",null," Browser covers are transformed from their sources to 165px x 254px thumbnails. Custom covers will transform most aesthetically the closer to that ratio they are. ",-1),o("h4",null,"Priority",-1),o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ee=k(Le,[["render",Ve],["__scopeId","data-v-268927b7"]]),Ue={name:"AdminFailedImportsPanel",components:{DateTimeColumn:N},data(){return{mdiBookAlert:le,mdiOpenInNew:B}},computed:{...y(h,{failedImports:e=>e.failedImports,showFailedImports:e=>e.failedImports&&e.failedImports.length>0}),...re(h,["unseenFailedImports"])}},Re={key:0},ze={class:"dateCol"},Oe={href:"https://github.com/ajslater/codex/issues/",target:"_blank"};function Se(e,t,m,b,l,i){const d=u("DateTimeColumn");return e.showFailedImports?(p(),C("div",Re,[r(A,null,{default:s(()=>[r(x,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(I,null,{default:s(()=>[o("h4",null,"Failed Imports: "+v(e.failedImports.length),1),e.unseenFailedImports?(p(),w(z,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[a(v(l.mdiBookAlert),1)]),_:1})):_("",!0)]),_:1}),r(P,null,{default:s(()=>[r(fe,{class:"highlight-table"},{default:s(()=>[t[1]||(t[1]=o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),o("tbody",null,[(p(!0),C(se,null,ie(e.failedImports,f=>(p(),C("tr",{key:`fi:${f.path}`},[o("td",null,v(f.path),1),o("td",ze,[r(d,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(A,null,{default:s(()=>[r(x,{id:"failedImportsHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[2]||(t[2]=[o("h4",null,"Failed Imports Help",-1)])]),_:1}),r(P,null,{default:s(()=>[t[8]||(t[8]=o("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),t[9]||(t[9]=o("h4",null,"Fixing comics",-1)),t[10]||(t[10]=o("p",null,[a(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[a(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),a(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),a(" mv fixed.zip problem-comic.cbz ")]),a(" You may also try "),o("code",null,"zip -FF"),a(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),t[11]||(t[11]=o("h4",null,"Reporting Issues",-1)),o("p",null,[t[4]||(t[4]=a(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an ",-1)),o("a",Oe,[t[3]||(t[3]=a("Issue Report",-1)),r(z,{size:"small"},{default:s(()=>[a(v(l.mdiOpenInNew),1)]),_:1})]),t[5]||(t[5]=a(" and include the stack trace from the logs at ",-1)),t[6]||(t[6]=o("code",null,"config/logs/codex.log",-1)),t[7]||(t[7]=a(" if you can. ",-1))])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):_("",!0)}const He=k(Ue,[["render",Se],["__scopeId","data-v-827c9a0b"]]),Be={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:He,AdminLibraryTable:G,AdminCreateUpdateDialog:$,AdminCustomCoversPanel:Ee},data(){return{AdminLibraryCreateUpdateInputs:H(W)}},computed:{...y(h,["normalLibraries"])},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...F(h,["loadTables"])}},$e={class:"tabHeader"};function Ne(e,t,m,b,l,i){const d=u("AdminCreateUpdateDialog"),f=u("AdminLibraryTable"),g=u("AdminFailedImportsPanel"),c=u("AdminCustomCoversPanel");return p(),C("div",null,[o("header",$e,[r(d,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.normalLibraries,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(g,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(c,{id:"customCovers"})]),_:1}),t[0]||(t[0]=o("p",{id:"libraryHelp"}," Each Watched File Events box checked creates a thread to monitor the Library. An large number of watching threads may exceed the limits of your operating system or container. ",-1))])}const nt=k(Be,[["render",Ne],["__scopeId","data-v-66bb908f"]]);export{nt as default};
|
|
1
|
+
import{_ as F,D as k,G as y,E as T,v as C,y as p,a as r,x as s,m as D,Z as q,z as w,I as _,w as u,C as v,N as E,af as X,O as Z,ap as H,a1 as B,bC as J,bD as Q,bE as ee,X as te,b as o,d as oe,A as a,l as re,bF as le,F as se,B as ie}from"./main-CWTxsB_K.js";import{A as ne,R as ae,a as $,b as de,c as me}from"./relation-chips-DnkUXW6y.js";import{useAdminStore as h}from"./admin-BStn9kk0.js";import{a as ue}from"./VDialog-mZQ1Va-c.js";import{V as pe}from"./VCombobox-O2BHnDUr.js";import{V as L}from"./VCheckbox-BY6G_rgf.js";import{c as ce,d as U}from"./VSelectionControl-DFaQ_klW.js";import{D as N}from"./datetime-column-CzIyyJDK.js";import{C as he}from"./confirm-dialog-X8W3euvh.js";import{V as O}from"./VCheckboxBtn-zhUZJChm.js";import{V as A,a as x,b as I,c as P}from"./VExpansionPanels-B8bQXRWn.js";import{k as R}from"./forwardRefs-CnxuGwpi.js";import{V as fe}from"./VTable-MenML-QS.js";import"./VForm-Dt0Uesri.js";import"./VSelect-DpnHasju.js";import"./ssrBoot-yM9n-WhK.js";import"./VDivider-CHTeIL4W.js";import"./filter-BfEbIpVl.js";const be={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(h,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(T,{formErrors:e=>e.form.errors}),appendOuterIcon(){return this.showHidden?this.mdiFolderHidden:this.mdiFolderOutline},showHiddenTooltipPrefix(){return this.showHidden?"Hide":"Show"}},watch:{menuOpen(e){e&&this.$emit("menu",e)}},created(){this.loadFolders().then(()=>(this.path=this.rootFolder,this.originalPath=this.rootFolder,!0)).catch(console.warn)},methods:{...k(h,["clearFolders","loadFolders"]),...k(T,["clearErrors"]),change(e){let t;e?t=e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):t=this.rootFolder;const m=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=m;let b="";return this.formErrors.length===0&&(this.path=b=this.rootFolder),this.$emit("change",b)}).catch(console.warn)},onBlur(){this.menuOpen=!1,this.change(this.path)},onClear(){this.clearFolders(this.orignalPath).then(()=>this.change(this.orginalPath)).catch(console.error)},onKeyDownEnter(){this.change(this.path)},onItemClick(e){this.change(e)}}},ye={id:"folderPicker"};function ve(e,t,m,b,l,i){return p(),C("div",ye,[r(pe,D({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=d=>l.path=d),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=d=>l.menuOpen=d)},e.$attrs,{"aria-label":"Library folder",clearable:"","error-messages":e.formErrors,"full-width":"","hide-details":"auto",items:e.folders,"menu-props":{maxHeight:"370px"},"validate-on":"blur",variant:"filled",onBlur:i.onBlur,"onClick:clear":i.onClear,onKeydown:q(i.onKeyDownEnter,["enter"])}),{item:s(({item:d,props:f})=>[r(ue,D(f,{title:d.title,value:d.value,onClick:g=>i.onItemClick(d.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(L,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=d=>l.showHidden=d),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const ge=F(be,[["render",ve],["__scopeId","data-v-61ca3769"]]),z="DDD HH:mm:SS",Ce=/^(?:[0-3]?\d?\d\s)?(?:[01]?\d|2[0-3])(?::[0-5]\d){2}$/,we={name:"TimeTextField",data(){return{FORMAT:z,timeRules:[e=>Ce.test(e)||`Invalid time format ${z}`]}}};function Fe(e,t,m,b,l,i){return p(),w(ce,D({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const ke=F(we,[["render",Fe]]),j=["events","poll","pollEvery","groups"];Object.freeze(j);const V={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(V);const S=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),_e={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:ne,AdminServerFolderPicker:ge,TimeTextField:ke},props:{oldRow:{type:[Object,Boolean],default:!1}},emits:["change"],data(){return{rules:{path:[e=>!!e||"Path is required",e=>{if(!e)return!1;for(const t of this.paths){if(S(t,e))return"Path is a child of an existing library";if(S(e,t))return"Path is a parent of an existing library"}return!0}]},row:E(this.oldRow||V)}},computed:{...y(h,["normalLibraries"]),...y(h,{groups:e=>e.groups}),paths(){return this.nameSet(this.normalLibraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=E(e)},deep:!0}},methods:{...k(h,["nameSet"])},UPDATE_KEYS:j,EMPTY_ROW:V},Ae={key:1};function xe(e,t,m,b,l,i){const d=u("AdminServerFolderPicker"),f=u("TimeTextField"),g=u("AdminRelationPicker");return p(),C("section",null,[m.oldRow?(p(),C("div",Ae,v(m.oldRow.path),1)):(p(),w(d,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=c=>l.row.path=c)},null,8,["rules"])),r(L,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=c=>l.row.events=c),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(L,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=c=>l.row.poll=c),label:"Poll Filesystem Periodically","hide-details":"auto",hint:"Periodically poll the library for changes","persistent-hint":!0},null,8,["modelValue"]),r(f,{modelValue:l.row.pollEvery,"onUpdate:modelValue":t[3]||(t[3]=c=>l.row.pollEvery=c),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?_("",!0):(p(),w(g,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=c=>l.row.groups=c),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))])}const G=F(_e,[["render",xe]]),Ie={name:"AdminLibrariesTab",components:{AdminTable:me,AdminDeleteRowDialog:de,AdminCreateUpdateDialog:$,RelationChips:ae,ConfirmDialog:he,DateTimeColumn:N},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:ee,mdiDatabaseClockOutline:Q,mdiDatabaseSyncOutline:J,mdiOpenInNew:B,AdminLibraryCreateUpdateInputs:H(G)}},computed:{...y(h,["normalLibraries","customCoverLibraries"]),...y(h,{groups:e=>e.groups,isFailedImports:e=>!!e?.failedImports?.length}),...y(T,{formErrors:e=>e.form?.errors}),...y(Z,{twentyFourHourTime:e=>e.settings.twentyFourHourTime}),headers(){const e=this.coversDir?"Covers":"Comics",t=[{title:"Path",key:"path",align:"start"},{title:e,key:"comicCount"}];return this.isFailedImports&&t.push({title:"Failed",key:"failedCount"}),t.push({title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}),!this.coversDir&&this.isGroups&&t.push({title:"Groups",key:"groups"}),t.push({title:"Actions",key:"actions",sortable:!1}),t},items(){return globalThis.coversDir?this.customCoverLibraries:this.normalLibraries},updateLabel(){return this.coversDir?"Cover Dir":""},itemName(){return this.coversDir?"custom covers":"comics"},iconSize(){const e=this.$vuetify.display;return e.xlAndUp?"x-large":e.lgAndUp?"large":e.mdAndUp?"default":"small"},isGroups(){return!!this.groups?.length}},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...k(h,["updateRow","clearErrors","librarianTask","loadTables"]),formatNumber(e){return X.format(e)},changeCol(e,t,m){this.lastUpdate.pk=e,this.lastUpdate.field=t;const b={[t]:m};this.updateRow("Library",e,b)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let m="";return e.coversOnly?(t&&(m+="Custom Group "),m+="Cover Dir"):m+="Library",m},poll(e){const t=this.libraryLabel(e);this.librarianTask("poll",`Poll ${t} ${e.pk}`,e.pk)},forcePoll(e){const t=this.libraryLabel(e);this.librarianTask("poll_force",`Force Poll ${t} ${e.pk}`,e.pk)},pollConfirmText(e){return`Poll ${this.libraryLabel(e,!1)}`}}},Pe={class:"failedComics"},Te={class:"actionButtonCell"};function De(e,t,m,b,l,i){const d=u("DateTimeColumn"),f=u("RelationChips"),g=u("ConfirmDialog"),c=u("AdminCreateUpdateDialog"),M=u("AdminDeleteRowDialog"),K=u("AdminTable");return p(),w(K,{headers:i.headers},te({"no-data":s(()=>[t[0]||(t[0]=o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1))]),"item.comicCount":s(({item:n})=>[a(v(i.formatNumber(n.comicCount)),1)]),"item.events":s(({item:n})=>[r(O,{"model-value":n.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:n})=>[r(O,{"model-value":n.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:n})=>[o("span",{class:oe({disabled:!n.poll})},v(n.pollEvery),3)]),"item.lastPoll":s(({item:n})=>[r(d,{dttm:n.lastPoll},null,8,["dttm"])]),"item.actions":s(({item:n})=>[o("span",Te,[r(g,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.itemName}`,text:n.path,"confirm-text":i.pollConfirmText(n),size:i.iconSize,density:"compact",onConfirm:Y=>i.poll(n)},null,8,["icon","title-text","text","confirm-text","size","onConfirm"]),r(g,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update ${i.itemName}`,text:n.path,"confirm-text":"Force Update",size:i.iconSize,density:"compact",onConfirm:Y=>i.forcePoll(n)},null,8,["icon","title-text","text","size","onConfirm"]),r(c,{table:"Library","old-row":n,inputs:l.AdminLibraryCreateUpdateInputs,label:i.updateLabel,"max-width":"22em",size:i.iconSize,density:"compact"},null,8,["old-row","inputs","label","size"]),n.coversOnly?_("",!0):(p(),w(M,{key:0,table:"Library",pk:n.pk,name:n.path,size:i.iconSize,density:"compact"},null,8,["pk","name","size"]))])]),_:2},[e.isFailedImports?{name:"item.failedCount",fn:s(({item:n})=>[o("span",Pe,v(i.formatNumber(n.failedCount)),1)]),key:"0"}:void 0,i.isGroups?{name:"item.groups",fn:s(({item:n})=>[r(f,{pks:n.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),key:"1"}:void 0]),1032,["headers"])}const W=F(Ie,[["render",De],["__scopeId","data-v-2e8006a3"]]),Le={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:W},computed:{...y(h,["customCoverLibraries"])}};function Ve(e,t,m,b,l,i){const d=u("AdminLibraryTable");return p(),w(A,null,{default:s(()=>[r(x,null,{default:s(()=>[r(I,null,{default:s(()=>[...t[0]||(t[0]=[o("h4",{id:"coverDirHeader"},"Custom Covers",-1)])]),_:1}),r(P,null,{default:s(()=>[r(d,{items:e.customCoverLibraries,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(A,null,{default:s(()=>[r(x,{id:"customCoversHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[1]||(t[1]=[o("h4",null,"Custom Covers Help",-1)])]),_:1}),r(P,null,{default:s(()=>[...t[2]||(t[2]=[o("p",null,"Custom covers may be added to the browser in two locations:",-1),o("h4",null,"Folders",-1),o("p",null,[a(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),a(" will show a custom cover for that folder in Folder view. The addition and removal of these covers by watching filesystem events and polling is handled by the library that folder belongs to. ")],-1),o("h4",null,"Custom Covers Dir",-1),o("p",null,[a(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),a(" under which are subdirectories for each of the browser groups that may adopt custom covers. Images in these subdirectories that match the name of the browser group will be used as custom covers. For instance: "),o("code",null,".../custom-covers/publishers/American Comics Group.webp"),a(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),a(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),a(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),a(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1),o("h4",null,"Image Formats & Size",-1),o("p",null,[a(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),a(". ")],-1),o("p",null," Browser covers are transformed from their sources to 165px x 254px thumbnails. Custom covers will transform most aesthetically the closer to that ratio they are. ",-1),o("h4",null,"Priority",-1),o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ee=F(Le,[["render",Ve],["__scopeId","data-v-268927b7"]]),Ue={name:"AdminFailedImportsPanel",components:{DateTimeColumn:N},data(){return{mdiBookAlert:le,mdiOpenInNew:B}},computed:{...y(h,{failedImports:e=>e.failedImports,showFailedImports:e=>e.failedImports&&e.failedImports.length>0}),...re(h,["unseenFailedImports"])}},Oe={key:0},Re={class:"dateCol"},ze={href:"https://github.com/ajslater/codex/issues/",target:"_blank"};function Se(e,t,m,b,l,i){const d=u("DateTimeColumn");return e.showFailedImports?(p(),C("div",Oe,[r(A,null,{default:s(()=>[r(x,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(I,null,{default:s(()=>[o("h4",null,"Failed Imports: "+v(e.failedImports.length),1),e.unseenFailedImports?(p(),w(R,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[a(v(l.mdiBookAlert),1)]),_:1})):_("",!0)]),_:1}),r(P,null,{default:s(()=>[r(fe,{class:"highlight-table"},{default:s(()=>[t[1]||(t[1]=o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),o("tbody",null,[(p(!0),C(se,null,ie(e.failedImports,f=>(p(),C("tr",{key:`fi:${f.path}`},[o("td",null,v(f.path),1),o("td",Re,[r(d,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(A,null,{default:s(()=>[r(x,{id:"failedImportsHelp"},{default:s(()=>[r(I,null,{default:s(()=>[...t[2]||(t[2]=[o("h4",null,"Failed Imports Help",-1)])]),_:1}),r(P,null,{default:s(()=>[t[8]||(t[8]=o("p",null," These are Comic archives that have failed to import. This list is updated every time the library updates. You should probably review these files and fix or remove them. ",-1)),t[9]||(t[9]=o("h4",null,"Fixing comics",-1)),t[10]||(t[10]=o("p",null,[a(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[a(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),a(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),a(" mv fixed.zip problem-comic.cbz ")]),a(" You may also try "),o("code",null,"zip -FF"),a(" to fix comics which uses a different (not necissarily better) algorithm. If you fix some imports, and Codex does not immediately detect the change, poll the library which contains the fixed comics. ")],-1)),t[11]||(t[11]=o("h4",null,"Reporting Issues",-1)),o("p",null,[t[4]||(t[4]=a(" If the comic looks good to you, but still shows up as a failed import, it might be Codex's fault for not importing it correctly. Please file an ",-1)),o("a",ze,[t[3]||(t[3]=a("Issue Report",-1)),r(R,{size:"small"},{default:s(()=>[a(v(l.mdiOpenInNew),1)]),_:1})]),t[5]||(t[5]=a(" and include the stack trace from the logs at ",-1)),t[6]||(t[6]=o("code",null,"config/logs/codex.log",-1)),t[7]||(t[7]=a(" if you can. ",-1))])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):_("",!0)}const He=F(Ue,[["render",Se],["__scopeId","data-v-827c9a0b"]]),Be={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:He,AdminLibraryTable:W,AdminCreateUpdateDialog:$,AdminCustomCoversPanel:Ee},data(){return{AdminLibraryCreateUpdateInputs:H(G)}},computed:{...y(h,["normalLibraries"])},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...k(h,["loadTables"])}},$e={class:"tabHeader"};function Ne(e,t,m,b,l,i){const d=u("AdminCreateUpdateDialog"),f=u("AdminLibraryTable"),g=u("AdminFailedImportsPanel"),c=u("AdminCustomCoversPanel");return p(),C("div",null,[o("header",$e,[r(d,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.normalLibraries,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(g,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(c,{id:"customCovers"})]),_:1}),t[0]||(t[0]=o("p",{id:"libraryHelp"}," Each Watched File Events box checked creates a thread to monitor the Library. An large number of watching threads may exceed the limits of your operating system or container. ",-1))])}const nt=F(Be,[["render",Ne],["__scopeId","data-v-66bb908f"]]);export{nt as default};
|
|
Binary file
|
|
Binary file
|