codex 1.6.1__py3-none-any.whl → 1.6.2__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/static_root/assets/{VCheckbox-fu1ny9Cc.7f2b43d1ce47.js → VCheckbox-DUxuAZcY.46ab94043464.js} +1 -1
- codex/static_root/assets/VCheckbox-DUxuAZcY.46ab94043464.js.br +0 -0
- codex/static_root/assets/VCheckbox-DUxuAZcY.46ab94043464.js.gz +0 -0
- codex/static_root/assets/{VCheckbox-fu1ny9Cc.js → VCheckbox-DUxuAZcY.js} +1 -1
- codex/static_root/assets/VCheckbox-DUxuAZcY.js.br +0 -0
- codex/static_root/assets/VCheckbox-DUxuAZcY.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-ssJU_z8r.7469708eff4e.js → VCheckboxBtn-BTFFFGx3.0cbde4eb9a65.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-BTFFFGx3.0cbde4eb9a65.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-BTFFFGx3.0cbde4eb9a65.js.gz +0 -0
- codex/static_root/assets/{VCheckboxBtn-ssJU_z8r.js → VCheckboxBtn-BTFFFGx3.js} +1 -1
- codex/static_root/assets/VCheckboxBtn-BTFFFGx3.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-BTFFFGx3.js.gz +0 -0
- codex/static_root/assets/{VCombobox-pHa6iBaZ.ff88fede19d6.js → VCombobox-CGyBgdqr.2f85598cc1a4.js} +1 -1
- codex/static_root/assets/VCombobox-CGyBgdqr.2f85598cc1a4.js.br +0 -0
- codex/static_root/assets/VCombobox-CGyBgdqr.2f85598cc1a4.js.gz +0 -0
- codex/static_root/assets/{VCombobox-pHa6iBaZ.js → VCombobox-CGyBgdqr.js} +1 -1
- codex/static_root/assets/VCombobox-CGyBgdqr.js.br +0 -0
- codex/static_root/assets/VCombobox-CGyBgdqr.js.gz +0 -0
- codex/static_root/assets/{VDialog-PmbYIKIh.c0fb4c6eb906.js → VDialog-DTWAoZBU.b8c4c276e9b2.js} +1 -1
- codex/static_root/assets/VDialog-DTWAoZBU.b8c4c276e9b2.js.br +0 -0
- codex/static_root/assets/VDialog-DTWAoZBU.b8c4c276e9b2.js.gz +0 -0
- codex/static_root/assets/{VDialog-PmbYIKIh.js → VDialog-DTWAoZBU.js} +1 -1
- codex/static_root/assets/VDialog-DTWAoZBU.js.br +0 -0
- codex/static_root/assets/VDialog-DTWAoZBU.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-DhRGJRFB.d1fb2c18424b.js → VExpansionPanels-D4psrz4h.b55b901da65f.js} +1 -1
- codex/static_root/assets/VExpansionPanels-D4psrz4h.b55b901da65f.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-D4psrz4h.b55b901da65f.js.gz +0 -0
- codex/static_root/assets/{VExpansionPanels-DhRGJRFB.js → VExpansionPanels-D4psrz4h.js} +1 -1
- codex/static_root/assets/VExpansionPanels-D4psrz4h.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-D4psrz4h.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-ClT4cR8E.1aa488b49221.js → VRadioGroup-BY572TP-.6d47a94795de.js} +1 -1
- codex/static_root/assets/VRadioGroup-BY572TP-.6d47a94795de.js.br +2 -0
- codex/static_root/assets/VRadioGroup-BY572TP-.6d47a94795de.js.gz +0 -0
- codex/static_root/assets/{VRadioGroup-ClT4cR8E.js → VRadioGroup-BY572TP-.js} +1 -1
- codex/static_root/assets/VRadioGroup-BY572TP-.js.br +2 -0
- codex/static_root/assets/VRadioGroup-BY572TP-.js.gz +0 -0
- codex/static_root/assets/{VSelect-BBy4FHPj.7421f9feb46b.js → VSelect-Bnhj5kBc.fdcd87c9e253.js} +1 -1
- codex/static_root/assets/VSelect-Bnhj5kBc.fdcd87c9e253.js.br +0 -0
- codex/static_root/assets/VSelect-Bnhj5kBc.fdcd87c9e253.js.gz +0 -0
- codex/static_root/assets/{VSelect-BBy4FHPj.js → VSelect-Bnhj5kBc.js} +1 -1
- codex/static_root/assets/VSelect-Bnhj5kBc.js.br +0 -0
- codex/static_root/assets/VSelect-Bnhj5kBc.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-D4e-QshF.38721ba52d00.js → VSelectionControl-DXxRmssH.252890f79cc6.js} +1 -1
- codex/static_root/assets/VSelectionControl-DXxRmssH.252890f79cc6.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DXxRmssH.252890f79cc6.js.gz +0 -0
- codex/static_root/assets/{VSelectionControl-D4e-QshF.js → VSelectionControl-DXxRmssH.js} +1 -1
- codex/static_root/assets/VSelectionControl-DXxRmssH.js.br +0 -0
- codex/static_root/assets/VSelectionControl-DXxRmssH.js.gz +0 -0
- codex/static_root/assets/{VSlideGroup-BQv5m0ZY.2adc55157521.js → VSlideGroup-DYJ3EYZI.a2542c5f90c4.js} +1 -1
- codex/static_root/assets/VSlideGroup-DYJ3EYZI.a2542c5f90c4.js.br +0 -0
- codex/static_root/assets/VSlideGroup-DYJ3EYZI.a2542c5f90c4.js.gz +0 -0
- codex/static_root/assets/{VSlideGroup-BQv5m0ZY.js → VSlideGroup-DYJ3EYZI.js} +1 -1
- codex/static_root/assets/VSlideGroup-DYJ3EYZI.js.br +0 -0
- codex/static_root/assets/VSlideGroup-DYJ3EYZI.js.gz +0 -0
- codex/static_root/assets/{VTable-BPFJigN3.2b5f59873063.js → VTable-BveGtxei.7f76f4ef812b.js} +1 -1
- codex/static_root/assets/VTable-BveGtxei.7f76f4ef812b.js.br +0 -0
- codex/static_root/assets/VTable-BveGtxei.7f76f4ef812b.js.gz +0 -0
- codex/static_root/assets/{VTable-BPFJigN3.js → VTable-BveGtxei.js} +1 -1
- codex/static_root/assets/VTable-BveGtxei.js.br +0 -0
- codex/static_root/assets/VTable-BveGtxei.js.gz +0 -0
- codex/static_root/assets/{VTextField-DuT-8VmG.04e65c2610a4.js → VTextField-BayL7C1D.6e53c61b3760.js} +1 -1
- codex/static_root/assets/VTextField-BayL7C1D.6e53c61b3760.js.br +0 -0
- codex/static_root/assets/VTextField-BayL7C1D.6e53c61b3760.js.gz +0 -0
- codex/static_root/assets/{VTextField-DuT-8VmG.js → VTextField-BayL7C1D.js} +1 -1
- codex/static_root/assets/VTextField-BayL7C1D.js.br +0 -0
- codex/static_root/assets/VTextField-BayL7C1D.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-C1xK_Fwc.6a80dfed4beb.js → VWindowItem-FBuIO_rT.8610c7e83905.js} +1 -1
- codex/static_root/assets/VWindowItem-FBuIO_rT.8610c7e83905.js.br +0 -0
- codex/static_root/assets/VWindowItem-FBuIO_rT.8610c7e83905.js.gz +0 -0
- codex/static_root/assets/{VWindowItem-C1xK_Fwc.js → VWindowItem-FBuIO_rT.js} +1 -1
- codex/static_root/assets/VWindowItem-FBuIO_rT.js.br +0 -0
- codex/static_root/assets/VWindowItem-FBuIO_rT.js.gz +0 -0
- codex/static_root/assets/{admin-DAexM4mM.2fa224507884.js → admin-BH6uiYBb.d51c720fa05c.js} +1 -1
- codex/static_root/assets/admin-BH6uiYBb.d51c720fa05c.js.br +0 -0
- codex/static_root/assets/admin-BH6uiYBb.d51c720fa05c.js.gz +0 -0
- codex/static_root/assets/{admin-DAexM4mM.js → admin-BH6uiYBb.js} +1 -1
- codex/static_root/assets/admin-BH6uiYBb.js.br +0 -0
- codex/static_root/assets/admin-BH6uiYBb.js.gz +0 -0
- codex/static_root/assets/{admin-drawer-panel-SpPhIMP4.b9a6113090c9.js → admin-drawer-panel-DsgLbfnD.7c409b430d79.js} +1 -1
- codex/static_root/assets/admin-drawer-panel-DsgLbfnD.7c409b430d79.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-DsgLbfnD.7c409b430d79.js.gz +0 -0
- codex/static_root/assets/{admin-drawer-panel-SpPhIMP4.js → admin-drawer-panel-DsgLbfnD.js} +1 -1
- codex/static_root/assets/admin-drawer-panel-DsgLbfnD.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-DsgLbfnD.js.gz +0 -0
- codex/static_root/assets/{browser-CWfL6gLS.js → browser-BVciW8XB.ab1d75272aa7.js} +1 -1
- codex/static_root/assets/browser-BVciW8XB.ab1d75272aa7.js.br +0 -0
- codex/static_root/assets/browser-BVciW8XB.ab1d75272aa7.js.gz +0 -0
- codex/static_root/assets/{browser-CWfL6gLS.92842e328420.js → browser-BVciW8XB.js} +1 -1
- codex/static_root/assets/browser-BVciW8XB.js.br +0 -0
- codex/static_root/assets/browser-BVciW8XB.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-BJHFtdXE.0a718e633507.js → change-password-dialog-B-Sd5U5p.adf0a0f02866.js} +1 -1
- codex/static_root/assets/change-password-dialog-B-Sd5U5p.adf0a0f02866.js.br +0 -0
- codex/static_root/assets/change-password-dialog-B-Sd5U5p.adf0a0f02866.js.gz +0 -0
- codex/static_root/assets/{change-password-dialog-BJHFtdXE.js → change-password-dialog-B-Sd5U5p.js} +1 -1
- codex/static_root/assets/change-password-dialog-B-Sd5U5p.js.br +0 -0
- codex/static_root/assets/change-password-dialog-B-Sd5U5p.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-BEiVusri.e3d017feba41.js → confirm-dialog-CYEBgtj5.a5f142656c12.js} +1 -1
- codex/static_root/assets/confirm-dialog-CYEBgtj5.a5f142656c12.js.br +0 -0
- codex/static_root/assets/confirm-dialog-CYEBgtj5.a5f142656c12.js.gz +0 -0
- codex/static_root/assets/{confirm-dialog-BEiVusri.js → confirm-dialog-CYEBgtj5.js} +1 -1
- codex/static_root/assets/confirm-dialog-CYEBgtj5.js.br +0 -0
- codex/static_root/assets/confirm-dialog-CYEBgtj5.js.gz +0 -0
- codex/static_root/assets/{datetime-column-CYmuurug.0f5658d9b9e2.js → datetime-column-uaXWFgF_.29c6d50b483e.js} +1 -1
- codex/static_root/assets/datetime-column-uaXWFgF_.29c6d50b483e.js.br +0 -0
- codex/static_root/assets/datetime-column-uaXWFgF_.29c6d50b483e.js.gz +0 -0
- codex/static_root/assets/{datetime-column-CYmuurug.js → datetime-column-uaXWFgF_.js} +1 -1
- codex/static_root/assets/datetime-column-uaXWFgF_.js.br +0 -0
- codex/static_root/assets/datetime-column-uaXWFgF_.js.gz +0 -0
- codex/static_root/assets/{filter-D0YNadTH.e6ee9bc95c0f.js → filter-DS84uTvk.4fbebd4832bc.js} +1 -1
- codex/static_root/assets/filter-DS84uTvk.4fbebd4832bc.js.br +0 -0
- codex/static_root/assets/filter-DS84uTvk.4fbebd4832bc.js.gz +0 -0
- codex/static_root/assets/{filter-D0YNadTH.js → filter-DS84uTvk.js} +1 -1
- codex/static_root/assets/filter-DS84uTvk.js.br +0 -0
- codex/static_root/assets/filter-DS84uTvk.js.gz +0 -0
- codex/static_root/assets/{flag-tab-CAsMFvQO.9cc9cd124ee9.js → flag-tab-iJTJldQ1.213201f8e03b.js} +1 -1
- codex/static_root/assets/flag-tab-iJTJldQ1.213201f8e03b.js.br +0 -0
- codex/static_root/assets/flag-tab-iJTJldQ1.213201f8e03b.js.gz +0 -0
- codex/static_root/assets/{flag-tab-CAsMFvQO.js → flag-tab-iJTJldQ1.js} +1 -1
- codex/static_root/assets/flag-tab-iJTJldQ1.js.br +0 -0
- codex/static_root/assets/flag-tab-iJTJldQ1.js.gz +0 -0
- codex/static_root/assets/{group-tab-Cr0hebSY.22e6025c588f.js → group-tab-DdmGE4gB.48ef83a4c7cd.js} +1 -1
- codex/static_root/assets/group-tab-DdmGE4gB.48ef83a4c7cd.js.br +0 -0
- codex/static_root/assets/group-tab-DdmGE4gB.48ef83a4c7cd.js.gz +0 -0
- codex/static_root/assets/{group-tab-Cr0hebSY.js → group-tab-DdmGE4gB.js} +1 -1
- codex/static_root/assets/group-tab-DdmGE4gB.js.br +0 -0
- codex/static_root/assets/group-tab-DdmGE4gB.js.gz +0 -0
- codex/static_root/assets/{http-error-BkvLxw68.a5f561d36571.js → http-error-HtOe8jPa.141ad665f81d.js} +1 -1
- codex/static_root/assets/http-error-HtOe8jPa.141ad665f81d.js.br +0 -0
- codex/static_root/assets/http-error-HtOe8jPa.141ad665f81d.js.gz +0 -0
- codex/static_root/assets/{http-error-BkvLxw68.js → http-error-HtOe8jPa.js} +1 -1
- codex/static_root/assets/http-error-HtOe8jPa.js.br +0 -0
- codex/static_root/assets/http-error-HtOe8jPa.js.gz +0 -0
- codex/static_root/assets/{library-tab-r6YdFmlk.js → library-tab-DLAJV6j2.dae6292bbf28.js} +1 -1
- codex/static_root/assets/library-tab-DLAJV6j2.dae6292bbf28.js.br +0 -0
- codex/static_root/assets/library-tab-DLAJV6j2.dae6292bbf28.js.gz +0 -0
- codex/static_root/assets/{library-tab-r6YdFmlk.d136e20e3501.js → library-tab-DLAJV6j2.js} +1 -1
- codex/static_root/assets/library-tab-DLAJV6j2.js.br +0 -0
- codex/static_root/assets/library-tab-DLAJV6j2.js.gz +0 -0
- codex/static_root/assets/{main-BMxHA4IB.js → main-BjGE3kSi.22c1b19a9e19.js} +3 -3
- codex/static_root/assets/main-BjGE3kSi.22c1b19a9e19.js.br +0 -0
- codex/static_root/assets/main-BjGE3kSi.22c1b19a9e19.js.gz +0 -0
- codex/static_root/assets/{main-BMxHA4IB.19ea7128bc87.js → main-BjGE3kSi.js} +3 -3
- codex/static_root/assets/main-BjGE3kSi.js.br +0 -0
- codex/static_root/assets/main-BjGE3kSi.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-BO02XyZj.js → pagination-toolbar-C8CSryCU.9b61f95fd710.js} +1 -1
- codex/static_root/assets/pagination-toolbar-C8CSryCU.9b61f95fd710.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-C8CSryCU.9b61f95fd710.js.gz +0 -0
- codex/static_root/assets/{pagination-toolbar-BO02XyZj.b1574d505e3c.js → pagination-toolbar-C8CSryCU.js} +1 -1
- codex/static_root/assets/pagination-toolbar-C8CSryCU.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-C8CSryCU.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-MjpbXXnS.85038ab4cb8e.js → pdf-doc-C-4EM9-d.ce9cf66bd4c3.js} +1 -1
- codex/static_root/assets/pdf-doc-C-4EM9-d.ce9cf66bd4c3.js.br +0 -0
- codex/static_root/assets/pdf-doc-C-4EM9-d.ce9cf66bd4c3.js.gz +0 -0
- codex/static_root/assets/{pdf-doc-MjpbXXnS.js → pdf-doc-C-4EM9-d.js} +1 -1
- codex/static_root/assets/pdf-doc-C-4EM9-d.js.br +0 -0
- codex/static_root/assets/pdf-doc-C-4EM9-d.js.gz +0 -0
- codex/static_root/assets/{reader-AMeiJSE6.556392e64785.js → reader-C5OTEQ7N.fae52c1fee51.js} +2 -2
- codex/static_root/assets/reader-C5OTEQ7N.fae52c1fee51.js.br +0 -0
- codex/static_root/assets/reader-C5OTEQ7N.fae52c1fee51.js.gz +0 -0
- codex/static_root/assets/{reader-AMeiJSE6.js → reader-C5OTEQ7N.js} +2 -2
- codex/static_root/assets/reader-C5OTEQ7N.js.br +0 -0
- codex/static_root/assets/reader-C5OTEQ7N.js.gz +0 -0
- codex/static_root/assets/{relation-chips-DKzjmNPq.js → relation-chips-C4LQSHRc.3c85433df91c.js} +1 -1
- codex/static_root/assets/relation-chips-C4LQSHRc.3c85433df91c.js.br +0 -0
- codex/static_root/assets/relation-chips-C4LQSHRc.3c85433df91c.js.gz +0 -0
- codex/static_root/assets/{relation-chips-DKzjmNPq.de2203c11719.js → relation-chips-C4LQSHRc.js} +1 -1
- codex/static_root/assets/relation-chips-C4LQSHRc.js.br +0 -0
- codex/static_root/assets/relation-chips-C4LQSHRc.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-DuR_I-os.d1754da85f24.js → settings-drawer-aTAAoX2A.2f21008ade35.js} +2 -2
- codex/static_root/assets/settings-drawer-aTAAoX2A.2f21008ade35.js.br +0 -0
- codex/static_root/assets/settings-drawer-aTAAoX2A.2f21008ade35.js.gz +0 -0
- codex/static_root/assets/{settings-drawer-DuR_I-os.js → settings-drawer-aTAAoX2A.js} +2 -2
- codex/static_root/assets/settings-drawer-aTAAoX2A.js.br +0 -0
- codex/static_root/assets/settings-drawer-aTAAoX2A.js.gz +0 -0
- codex/static_root/assets/{stats-tab-CgBniikR.ce1c6941c844.js → stats-tab-DL4J3pvZ.b9056e70a70f.js} +1 -1
- codex/static_root/assets/stats-tab-DL4J3pvZ.b9056e70a70f.js.br +0 -0
- codex/static_root/assets/stats-tab-DL4J3pvZ.b9056e70a70f.js.gz +0 -0
- codex/static_root/assets/{stats-tab-CgBniikR.js → stats-tab-DL4J3pvZ.js} +1 -1
- codex/static_root/assets/stats-tab-DL4J3pvZ.js.br +0 -0
- codex/static_root/assets/stats-tab-DL4J3pvZ.js.gz +0 -0
- codex/static_root/assets/{task-tab-JjKaS7pI.c01782978325.js → task-tab-0t7ZJlwL.1ff1cc14a6aa.js} +1 -1
- codex/static_root/assets/task-tab-0t7ZJlwL.1ff1cc14a6aa.js.br +0 -0
- codex/static_root/assets/task-tab-0t7ZJlwL.1ff1cc14a6aa.js.gz +0 -0
- codex/static_root/assets/{task-tab-JjKaS7pI.js → task-tab-0t7ZJlwL.js} +1 -1
- codex/static_root/assets/task-tab-0t7ZJlwL.js.br +0 -0
- codex/static_root/assets/task-tab-0t7ZJlwL.js.gz +0 -0
- codex/static_root/assets/to-case-BCB751sX.4afb5ae1b77d.js +1 -0
- codex/static_root/assets/to-case-BCB751sX.js +1 -0
- codex/static_root/assets/{unauthorized-Cz-M4lP9.d11776d78241.js → unauthorized-Ovy_BO5R.598527e8e4fe.js} +1 -1
- codex/static_root/assets/unauthorized-Ovy_BO5R.598527e8e4fe.js.br +0 -0
- codex/static_root/assets/unauthorized-Ovy_BO5R.598527e8e4fe.js.gz +0 -0
- codex/static_root/assets/{unauthorized-Cz-M4lP9.js → unauthorized-Ovy_BO5R.js} +1 -1
- codex/static_root/assets/unauthorized-Ovy_BO5R.js.br +0 -0
- codex/static_root/assets/unauthorized-Ovy_BO5R.js.gz +0 -0
- codex/static_root/assets/{user-tab-HnLW9C3q.7f44c7f960c2.js → user-tab-Cdspo8ie.8e886a1a28e8.js} +1 -1
- codex/static_root/assets/user-tab-Cdspo8ie.8e886a1a28e8.js.br +0 -0
- codex/static_root/assets/user-tab-Cdspo8ie.8e886a1a28e8.js.gz +0 -0
- codex/static_root/assets/{user-tab-HnLW9C3q.js → user-tab-Cdspo8ie.js} +1 -1
- codex/static_root/assets/user-tab-Cdspo8ie.js.br +0 -0
- codex/static_root/assets/user-tab-Cdspo8ie.js.gz +0 -0
- codex/static_root/{manifest.c852d4a311e1.json → manifest.80e911824648.json} +219 -219
- codex/static_root/manifest.80e911824648.json.br +0 -0
- codex/static_root/manifest.80e911824648.json.gz +0 -0
- codex/static_root/manifest.json +219 -219
- codex/static_root/manifest.json.br +0 -0
- codex/static_root/manifest.json.gz +0 -0
- codex/static_root/staticfiles.json +1 -1
- codex/views/browser/annotations.py +7 -4
- codex/views/browser/browser.py +4 -4
- codex/views/browser/cover.py +0 -2
- codex/views/browser/metadata.py +6 -9
- {codex-1.6.1.dist-info → codex-1.6.2.dist-info}/METADATA +1 -1
- {codex-1.6.1.dist-info → codex-1.6.2.dist-info}/RECORD +216 -216
- codex/static_root/assets/VCheckbox-fu1ny9Cc.7f2b43d1ce47.js.br +0 -0
- codex/static_root/assets/VCheckbox-fu1ny9Cc.7f2b43d1ce47.js.gz +0 -0
- codex/static_root/assets/VCheckbox-fu1ny9Cc.js.br +0 -0
- codex/static_root/assets/VCheckbox-fu1ny9Cc.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-ssJU_z8r.7469708eff4e.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-ssJU_z8r.7469708eff4e.js.gz +0 -0
- codex/static_root/assets/VCheckboxBtn-ssJU_z8r.js.br +0 -0
- codex/static_root/assets/VCheckboxBtn-ssJU_z8r.js.gz +0 -0
- codex/static_root/assets/VCombobox-pHa6iBaZ.ff88fede19d6.js.br +0 -0
- codex/static_root/assets/VCombobox-pHa6iBaZ.ff88fede19d6.js.gz +0 -0
- codex/static_root/assets/VCombobox-pHa6iBaZ.js.br +0 -0
- codex/static_root/assets/VCombobox-pHa6iBaZ.js.gz +0 -0
- codex/static_root/assets/VDialog-PmbYIKIh.c0fb4c6eb906.js.br +0 -0
- codex/static_root/assets/VDialog-PmbYIKIh.c0fb4c6eb906.js.gz +0 -0
- codex/static_root/assets/VDialog-PmbYIKIh.js.br +0 -0
- codex/static_root/assets/VDialog-PmbYIKIh.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-DhRGJRFB.d1fb2c18424b.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DhRGJRFB.d1fb2c18424b.js.gz +0 -0
- codex/static_root/assets/VExpansionPanels-DhRGJRFB.js.br +0 -0
- codex/static_root/assets/VExpansionPanels-DhRGJRFB.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-ClT4cR8E.1aa488b49221.js.br +0 -0
- codex/static_root/assets/VRadioGroup-ClT4cR8E.1aa488b49221.js.gz +0 -0
- codex/static_root/assets/VRadioGroup-ClT4cR8E.js.br +0 -0
- codex/static_root/assets/VRadioGroup-ClT4cR8E.js.gz +0 -0
- codex/static_root/assets/VSelect-BBy4FHPj.7421f9feb46b.js.br +0 -0
- codex/static_root/assets/VSelect-BBy4FHPj.7421f9feb46b.js.gz +0 -0
- codex/static_root/assets/VSelect-BBy4FHPj.js.br +0 -0
- codex/static_root/assets/VSelect-BBy4FHPj.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-D4e-QshF.38721ba52d00.js.br +0 -0
- codex/static_root/assets/VSelectionControl-D4e-QshF.38721ba52d00.js.gz +0 -0
- codex/static_root/assets/VSelectionControl-D4e-QshF.js.br +0 -0
- codex/static_root/assets/VSelectionControl-D4e-QshF.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-BQv5m0ZY.2adc55157521.js.br +0 -0
- codex/static_root/assets/VSlideGroup-BQv5m0ZY.2adc55157521.js.gz +0 -0
- codex/static_root/assets/VSlideGroup-BQv5m0ZY.js.br +0 -0
- codex/static_root/assets/VSlideGroup-BQv5m0ZY.js.gz +0 -0
- codex/static_root/assets/VTable-BPFJigN3.2b5f59873063.js.br +0 -0
- codex/static_root/assets/VTable-BPFJigN3.2b5f59873063.js.gz +0 -0
- codex/static_root/assets/VTable-BPFJigN3.js.br +0 -0
- codex/static_root/assets/VTable-BPFJigN3.js.gz +0 -0
- codex/static_root/assets/VTextField-DuT-8VmG.04e65c2610a4.js.br +0 -0
- codex/static_root/assets/VTextField-DuT-8VmG.04e65c2610a4.js.gz +0 -0
- codex/static_root/assets/VTextField-DuT-8VmG.js.br +0 -0
- codex/static_root/assets/VTextField-DuT-8VmG.js.gz +0 -0
- codex/static_root/assets/VWindowItem-C1xK_Fwc.6a80dfed4beb.js.br +0 -0
- codex/static_root/assets/VWindowItem-C1xK_Fwc.6a80dfed4beb.js.gz +0 -0
- codex/static_root/assets/VWindowItem-C1xK_Fwc.js.br +0 -0
- codex/static_root/assets/VWindowItem-C1xK_Fwc.js.gz +0 -0
- codex/static_root/assets/admin-DAexM4mM.2fa224507884.js.br +0 -0
- codex/static_root/assets/admin-DAexM4mM.2fa224507884.js.gz +0 -0
- codex/static_root/assets/admin-DAexM4mM.js.br +0 -0
- codex/static_root/assets/admin-DAexM4mM.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-SpPhIMP4.b9a6113090c9.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-SpPhIMP4.b9a6113090c9.js.gz +0 -0
- codex/static_root/assets/admin-drawer-panel-SpPhIMP4.js.br +0 -0
- codex/static_root/assets/admin-drawer-panel-SpPhIMP4.js.gz +0 -0
- codex/static_root/assets/browser-CWfL6gLS.92842e328420.js.br +0 -0
- codex/static_root/assets/browser-CWfL6gLS.92842e328420.js.gz +0 -0
- codex/static_root/assets/browser-CWfL6gLS.js.br +0 -0
- codex/static_root/assets/browser-CWfL6gLS.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-BJHFtdXE.0a718e633507.js.br +0 -0
- codex/static_root/assets/change-password-dialog-BJHFtdXE.0a718e633507.js.gz +0 -0
- codex/static_root/assets/change-password-dialog-BJHFtdXE.js.br +0 -0
- codex/static_root/assets/change-password-dialog-BJHFtdXE.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-BEiVusri.e3d017feba41.js.br +0 -0
- codex/static_root/assets/confirm-dialog-BEiVusri.e3d017feba41.js.gz +0 -0
- codex/static_root/assets/confirm-dialog-BEiVusri.js.br +0 -0
- codex/static_root/assets/confirm-dialog-BEiVusri.js.gz +0 -0
- codex/static_root/assets/datetime-column-CYmuurug.0f5658d9b9e2.js.br +0 -0
- codex/static_root/assets/datetime-column-CYmuurug.0f5658d9b9e2.js.gz +0 -0
- codex/static_root/assets/datetime-column-CYmuurug.js.br +0 -0
- codex/static_root/assets/datetime-column-CYmuurug.js.gz +0 -0
- codex/static_root/assets/filter-D0YNadTH.e6ee9bc95c0f.js.br +0 -0
- codex/static_root/assets/filter-D0YNadTH.e6ee9bc95c0f.js.gz +0 -0
- codex/static_root/assets/filter-D0YNadTH.js.br +0 -0
- codex/static_root/assets/filter-D0YNadTH.js.gz +0 -0
- codex/static_root/assets/flag-tab-CAsMFvQO.9cc9cd124ee9.js.br +0 -0
- codex/static_root/assets/flag-tab-CAsMFvQO.9cc9cd124ee9.js.gz +0 -0
- codex/static_root/assets/flag-tab-CAsMFvQO.js.br +0 -0
- codex/static_root/assets/flag-tab-CAsMFvQO.js.gz +0 -0
- codex/static_root/assets/group-tab-Cr0hebSY.22e6025c588f.js.br +0 -0
- codex/static_root/assets/group-tab-Cr0hebSY.22e6025c588f.js.gz +0 -0
- codex/static_root/assets/group-tab-Cr0hebSY.js.br +0 -0
- codex/static_root/assets/group-tab-Cr0hebSY.js.gz +0 -0
- codex/static_root/assets/http-error-BkvLxw68.a5f561d36571.js.br +0 -0
- codex/static_root/assets/http-error-BkvLxw68.a5f561d36571.js.gz +0 -0
- codex/static_root/assets/http-error-BkvLxw68.js.br +0 -0
- codex/static_root/assets/http-error-BkvLxw68.js.gz +0 -0
- codex/static_root/assets/library-tab-r6YdFmlk.d136e20e3501.js.br +0 -0
- codex/static_root/assets/library-tab-r6YdFmlk.d136e20e3501.js.gz +0 -0
- codex/static_root/assets/library-tab-r6YdFmlk.js.br +0 -0
- codex/static_root/assets/library-tab-r6YdFmlk.js.gz +0 -0
- codex/static_root/assets/main-BMxHA4IB.19ea7128bc87.js.br +0 -0
- codex/static_root/assets/main-BMxHA4IB.19ea7128bc87.js.gz +0 -0
- codex/static_root/assets/main-BMxHA4IB.js.br +0 -0
- codex/static_root/assets/main-BMxHA4IB.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-BO02XyZj.b1574d505e3c.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-BO02XyZj.b1574d505e3c.js.gz +0 -0
- codex/static_root/assets/pagination-toolbar-BO02XyZj.js.br +0 -0
- codex/static_root/assets/pagination-toolbar-BO02XyZj.js.gz +0 -0
- codex/static_root/assets/pdf-doc-MjpbXXnS.85038ab4cb8e.js.br +0 -0
- codex/static_root/assets/pdf-doc-MjpbXXnS.85038ab4cb8e.js.gz +0 -0
- codex/static_root/assets/pdf-doc-MjpbXXnS.js.br +0 -0
- codex/static_root/assets/pdf-doc-MjpbXXnS.js.gz +0 -0
- codex/static_root/assets/reader-AMeiJSE6.556392e64785.js.br +0 -0
- codex/static_root/assets/reader-AMeiJSE6.556392e64785.js.gz +0 -0
- codex/static_root/assets/reader-AMeiJSE6.js.br +0 -0
- codex/static_root/assets/reader-AMeiJSE6.js.gz +0 -0
- codex/static_root/assets/relation-chips-DKzjmNPq.de2203c11719.js.br +0 -0
- codex/static_root/assets/relation-chips-DKzjmNPq.de2203c11719.js.gz +0 -0
- codex/static_root/assets/relation-chips-DKzjmNPq.js.br +0 -0
- codex/static_root/assets/relation-chips-DKzjmNPq.js.gz +0 -0
- codex/static_root/assets/settings-drawer-DuR_I-os.d1754da85f24.js.br +0 -0
- codex/static_root/assets/settings-drawer-DuR_I-os.d1754da85f24.js.gz +0 -0
- codex/static_root/assets/settings-drawer-DuR_I-os.js.br +0 -0
- codex/static_root/assets/settings-drawer-DuR_I-os.js.gz +0 -0
- codex/static_root/assets/stats-tab-CgBniikR.ce1c6941c844.js.br +0 -0
- codex/static_root/assets/stats-tab-CgBniikR.ce1c6941c844.js.gz +0 -0
- codex/static_root/assets/stats-tab-CgBniikR.js.br +0 -0
- codex/static_root/assets/stats-tab-CgBniikR.js.gz +0 -0
- codex/static_root/assets/task-tab-JjKaS7pI.c01782978325.js.br +0 -0
- codex/static_root/assets/task-tab-JjKaS7pI.c01782978325.js.gz +0 -0
- codex/static_root/assets/task-tab-JjKaS7pI.js.br +0 -0
- codex/static_root/assets/task-tab-JjKaS7pI.js.gz +0 -0
- codex/static_root/assets/to-case-CMMdeNjM.64cd6ddff339.js +0 -1
- codex/static_root/assets/to-case-CMMdeNjM.js +0 -1
- codex/static_root/assets/unauthorized-Cz-M4lP9.d11776d78241.js.br +0 -0
- codex/static_root/assets/unauthorized-Cz-M4lP9.d11776d78241.js.gz +0 -0
- codex/static_root/assets/unauthorized-Cz-M4lP9.js.br +0 -0
- codex/static_root/assets/unauthorized-Cz-M4lP9.js.gz +0 -0
- codex/static_root/assets/user-tab-HnLW9C3q.7f44c7f960c2.js.br +0 -0
- codex/static_root/assets/user-tab-HnLW9C3q.7f44c7f960c2.js.gz +0 -0
- codex/static_root/assets/user-tab-HnLW9C3q.js.br +0 -0
- codex/static_root/assets/user-tab-HnLW9C3q.js.gz +0 -0
- codex/static_root/manifest.c852d4a311e1.json.br +0 -0
- codex/static_root/manifest.c852d4a311e1.json.gz +0 -0
- {codex-1.6.1.dist-info → codex-1.6.2.dist-info}/LICENSE +0 -0
- {codex-1.6.1.dist-info → codex-1.6.2.dist-info}/WHEEL +0 -0
- {codex-1.6.1.dist-info → codex-1.6.2.dist-info}/entry_points.txt +0 -0
codex/static_root/assets/{http-error-BkvLxw68.a5f561d36571.js → http-error-HtOe8jPa.141ad665f81d.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as u,an as _,m as h,X as r,$ as a,Y as n,Z as s,aO as e,aH as d,S as m,aQ as l,aR as f}from"./admin-drawer-panel-
|
|
1
|
+
import{_ as u,an as _,m as h,X as r,$ as a,Y as n,Z as s,aO as e,aH as d,S as m,aQ as l,aR as f}from"./admin-drawer-panel-DsgLbfnD.js";import{U as k,V as S}from"./unauthorized-Ovy_BO5R.js";import"./change-password-dialog-B-Sd5U5p.js";import"./VTextField-BayL7C1D.js";import"./VDialog-DTWAoZBU.js";import"./VSelectionControl-DXxRmssH.js";import"./main-BjGE3kSi.js";const i={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(i);const z={name:"HttpError",components:{Unauthorized:k},data(){return{}},computed:{..._(h,["isAuthorized"]),code:function(){return+this.$route.params.code},title:function(){let t=i[this.code];return t||(t="Unknown Error"),t}}},E=t=>(l("data-v-c7d80e26"),t=t(),f(),t),I={id:"httpCode"},U={id:"title"},v=E(()=>e("h2",null,"Codex Home",-1));function x(t,B,C,V,$,o){const c=n("router-link"),p=n("Unauthorized");return t.isAuthorized?(s(),r(S,{key:0,id:"httpError"},{default:a(()=>[e("h1",I,d(o.code),1),e("h1",U,d(o.title),1),m(c,{id:"link",to:{name:"home"}},{default:a(()=>[v]),_:1})]),_:1})):(s(),r(p,{key:1}))}const F=u(z,[["render",x],["__scopeId","data-v-c7d80e26"]]);export{F as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as u,an as _,m as h,X as r,$ as a,Y as n,Z as s,aO as e,aH as d,S as m,aQ as l,aR as f}from"./admin-drawer-panel-
|
|
1
|
+
import{_ as u,an as _,m as h,X as r,$ as a,Y as n,Z as s,aO as e,aH as d,S as m,aQ as l,aR as f}from"./admin-drawer-panel-DsgLbfnD.js";import{U as k,V as S}from"./unauthorized-Ovy_BO5R.js";import"./change-password-dialog-B-Sd5U5p.js";import"./VTextField-BayL7C1D.js";import"./VDialog-DTWAoZBU.js";import"./VSelectionControl-DXxRmssH.js";import"./main-BjGE3kSi.js";const i={400:"Bad Request",403:"Forbidden",404:"Page Not Found",500:"Server Error"};Object.freeze(i);const z={name:"HttpError",components:{Unauthorized:k},data(){return{}},computed:{..._(h,["isAuthorized"]),code:function(){return+this.$route.params.code},title:function(){let t=i[this.code];return t||(t="Unknown Error"),t}}},E=t=>(l("data-v-c7d80e26"),t=t(),f(),t),I={id:"httpCode"},U={id:"title"},v=E(()=>e("h2",null,"Codex Home",-1));function x(t,B,C,V,$,o){const c=n("router-link"),p=n("Unauthorized");return t.isAuthorized?(s(),r(S,{key:0,id:"httpError"},{default:a(()=>[e("h1",I,d(o.code),1),e("h1",U,d(o.title),1),m(c,{id:"link",to:{name:"home"}},{default:a(()=>[v]),_:1})]),_:1})):(s(),r(p,{key:1}))}const F=u(z,[["render",x],["__scopeId","data-v-c7d80e26"]]);export{F as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as y,B as _,D as V,W as I,_ as C,Z as p,aF as g,S as r,$ as s,aY as Z,as as $,bn as ee,X as w,Y as m,aH as F,aJ as A,U as B,cJ as te,cK as oe,cL as re,aM as W,bD as G,b1 as le,aO as o,ak as se,aQ as E,aR as R,aj as d,cM as ae,br as ne,aP as S,aG as ie,bQ as U}from"./admin-drawer-panel-SpPhIMP4.js";import{A as de,a as ce,b as me,c as N,R as ue}from"./relation-chips-DKzjmNPq.js";import{d as H,u as pe}from"./main-BMxHA4IB.js";import{V as he}from"./VCombobox-pHa6iBaZ.js";import{V as O}from"./VCheckbox-fu1ny9Cc.js";import{V as fe}from"./VTextField-DuT-8VmG.js";import{D as K}from"./datetime-column-CYmuurug.js";import{C as be}from"./confirm-dialog-BEiVusri.js";import{V as z}from"./VCheckboxBtn-ssJU_z8r.js";import{a as P,b as T,c as x,V as D}from"./VExpansionPanels-DhRGJRFB.js";import{V as _e}from"./VTable-BPFJigN3.js";import"./VDialog-PmbYIKIh.js";import"./VSelect-BBy4FHPj.js";import"./VSelectionControl-D4e-QshF.js";import"./VSlideGroup-BQv5m0ZY.js";import"./filter-D0YNadTH.js";const ye={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(_,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(V,{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:{...I(_,["clearFolders","loadFolders"]),...I(V,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,a=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=a;let n="";return this.formErrors.length===0&&(this.path=n=this.rootFolder),this.$emit("change",n)}).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)}}},ve={id:"folderPicker"};function ge(e,t,a,n,l,u){return p(),g("div",ve,[r(he,$({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=c=>l.path=c),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=c=>l.menuOpen=c)},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:u.onBlur,"onClick:clear":u.onClear,onKeydown:ee(u.onKeyDownEnter,["enter"])}),{item:s(({item:c,props:f})=>[r(Z,$(f,{title:c.title,value:c.value,onClick:v=>u.onItemClick(c.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(O,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=c=>l.showHidden=c),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const we=C(ye,[["render",ge],["__scopeId","data-v-49f10642"]]),Ce={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function ke(e,t,a,n,l,u){return p(),w(fe,$({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=C(Ce,[["render",ke]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const L={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(L);const j=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Ie={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:de,AdminServerFolderPicker:we,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(j(t,e))return"Path is a child of an existing library";if(j(e,t))return"Path is a parent of an existing library"}return!0}]},row:H.cloneDeep(this.oldRow||L)}},computed:{...y(_,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=H.cloneDeep(e)},deep:!0}},methods:{...I(_,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:L},Ae={key:1};function Pe(e,t,a,n,l,u){const c=m("AdminServerFolderPicker"),f=m("TimeTextField"),v=m("AdminRelationPicker");return p(),g(B,null,[a.oldRow?(p(),g("div",Ae,F(a.oldRow.path),1)):(p(),w(c,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=h=>l.row.path=h)},null,8,["rules"])),r(O,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=h=>l.row.events=h),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(O,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=h=>l.row.poll=h),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]=h=>l.row.pollEvery=h),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?A("",!0):(p(),w(v,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=h=>l.row.groups=h),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))],64)}const Y=C(Ie,[["render",Pe]]),Te={name:"AdminLibrariesTab",components:{AdminTable:ce,AdminDeleteRowDialog:me,AdminCreateUpdateDialog:N,RelationChips:ue,ConfirmDialog:be,DateTimeColumn:K},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:te,mdiDatabaseClockOutline:oe,mdiDatabaseSyncOutline:re,mdiOpenInNew:W,AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{groups:e=>e.groups,items(e){const t=[];for(const a of e.libraries){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t},headers(){const e=[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}];return this.coversDir||e.push({title:"Groups",key:"groups"}),e.push({title:"Actions",key:"actions",sortable:!1}),e}}),...y(V,{formErrors:e=>{var t;return(t=e.form)==null?void 0:t.errors}}),...y(pe,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?le(e,(void 0).twentyFourHourTime):"",changeCol(e,t,a){this.lastUpdate.pk=e,this.lastUpdate.field=t;const n={[t]:a};this.updateRow("Library",e,n)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let a="";return e.coversOnly?(t&&(a+="Custom Group "),a+="Cover Dir"):a+="Library",a},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)}`},updateLabel(e){return e.coversOnly?"Cover Dir":""}}},xe=e=>(E("data-v-f591e3db"),e=e(),R(),e),De=xe(()=>o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ve(e,t,a,n,l,u){const c=m("DateTimeColumn"),f=m("RelationChips"),v=m("ConfirmDialog"),h=m("AdminCreateUpdateDialog"),Q=m("AdminDeleteRowDialog"),q=m("AdminTable");return p(),w(q,{headers:e.headers},{"no-data":s(()=>[De]),"item.events":s(({item:i})=>[r(z,{"model-value":i.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:i})=>[r(z,{"model-value":i.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:i})=>[o("span",{class:se({disabled:!i.poll})},F(i.pollEvery),3)]),"item.lastPoll":s(({item:i})=>[r(c,{dttm:i.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:i})=>[r(f,{pks:i.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:i})=>[r(v,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.label}s`,"object-name":i.path,"confirm-text":u.pollConfirmText(i),size:"small",density:"compact",onConfirm:X=>u.poll(i)},null,8,["icon","title-text","object-name","confirm-text","onConfirm"]),r(v,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update every ${i.label}`,"object-name":i.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:X=>u.forcePoll(i)},null,8,["icon","title-text","object-name","onConfirm"]),r(h,{table:"Library","old-row":i,inputs:l.AdminLibraryCreateUpdateInputs,label:u.updateLabel(i),"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs","label"]),i.coversOnly?A("",!0):(p(),w(Q,{key:0,table:"Library",pk:i.pk,name:i.path,size:"small",density:"compact"},null,8,["pk","name"]))]),_:2},1032,["headers"])}const J=C(Te,[["render",Ve],["__scopeId","data-v-f591e3db"]]),$e={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:J},computed:{...y(_,{coverDirItems(e){const t=[];for(const a of e.libraries)if(a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})}},b=e=>(E("data-v-eb37c40b"),e=e(),R(),e),Oe=b(()=>o("h4",{id:"coverDirHeader"},"Custom Covers",-1)),Le=b(()=>o("h4",null,"Custom Covers Help",-1)),Ee=b(()=>o("p",null,"Custom covers may be added to the browser in two locations:",-1)),Re=b(()=>o("h4",null,"Folders",-1)),Se=b(()=>o("p",null,[d(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),d(" 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)),Ue=b(()=>o("h4",null,"Custom Covers Dir",-1)),He=b(()=>o("p",null,[d(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),d(" 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"),d(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),d(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),d(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),d(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1)),ze=b(()=>o("h4",null,"Image Formats & Size",-1)),je=b(()=>o("p",null,[d(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),d(". ")],-1)),Be=b(()=>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)),We=b(()=>o("h4",null,"Priority",-1)),Ge=b(()=>o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1));function Ne(e,t,a,n,l,u){const c=m("AdminLibraryTable");return p(),w(x,null,{default:s(()=>[r(D,null,{default:s(()=>[r(P,null,{default:s(()=>[Oe]),_:1}),r(T,null,{default:s(()=>[r(c,{items:e.coverDirItems,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(x,null,{default:s(()=>[r(D,{id:"customCoversHelp"},{default:s(()=>[r(P,null,{default:s(()=>[Le]),_:1}),r(T,null,{default:s(()=>[Ee,Re,Se,Ue,He,ze,je,Be,We,Ge]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ke=C($e,[["render",Ne],["__scopeId","data-v-eb37c40b"]]),Me={name:"AdminFailedImportsPanel",components:{DateTimeColumn:K},data(){return{mdiBookAlert:ae,mdiOpenInNew:W}},computed:{...y(_,["failedImports"]),...ne(_,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},k=e=>(E("data-v-a99d09dc"),e=e(),R(),e),Ye={key:0},Je=k(()=>o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),Qe={class:"dateCol"},qe=k(()=>o("h4",null,"Failed Imports Help",-1)),Xe=k(()=>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)),Ze=k(()=>o("h4",null,"Fixing comics",-1)),et=k(()=>o("p",null,[d(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),o("code",null,"zip -FF"),d(" 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)),tt=k(()=>o("h4",null,"Reporting Issues",-1)),ot={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},rt=k(()=>o("code",null,"config/logs/codex.log",-1));function lt(e,t,a,n,l,u){const c=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(p(),g("div",Ye,[r(x,null,{default:s(()=>[r(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(P,null,{default:s(()=>[o("h4",null,"Failed Imports: "+F(e.failedImports.length),1),e.unseenFailedImports?(p(),w(S,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(F(l.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),r(T,null,{default:s(()=>[r(_e,{class:"highlight-table"},{default:s(()=>[Je,o("tbody",null,[(p(!0),g(B,null,ie(e.failedImports,f=>(p(),g("tr",{key:`fi:${f.path}`},[o("td",null,F(f.path),1),o("td",Qe,[r(c,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(x,null,{default:s(()=>[r(D,{id:"failedImportsHelp"},{default:s(()=>[r(P,null,{default:s(()=>[qe]),_:1}),r(T,null,{default:s(()=>[Xe,Ze,et,tt,o("p",null,[d(" 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 "),o("a",ot,[d("Issue Report"),r(S,{size:"small"},{default:s(()=>[d(F(l.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),rt,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const st=C(Me,[["render",lt],["__scopeId","data-v-a99d09dc"]]),at={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:st,AdminLibraryTable:J,AdminCreateUpdateDialog:N,AdminCustomCoversPanel:Ke},data(){return{AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{libraryItems(e){const t=[];for(const a of e.libraries)if(!a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["loadTables"])}},nt={class:"tabHeader"};function it(e,t,a,n,l,u){const c=m("AdminCreateUpdateDialog"),f=m("AdminLibraryTable"),v=m("AdminFailedImportsPanel"),h=m("AdminCustomCoversPanel");return p(),g("div",null,[o("header",nt,[r(c,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.libraryItems,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(v,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(h,{id:"customCovers"})]),_:1})])}const It=C(at,[["render",it],["__scopeId","data-v-ad90b1b8"]]);export{It as default};
|
|
1
|
+
import{V as y,B as _,D as V,W as I,_ as C,Z as p,aF as g,S as r,$ as s,aY as Z,as as $,bn as ee,X as w,Y as m,aH as F,aJ as A,U as B,cJ as te,cK as oe,cL as re,aM as W,bD as G,b1 as le,aO as o,ak as se,aQ as E,aR as R,aj as d,cM as ae,br as ne,aP as S,aG as ie,bQ as U}from"./admin-drawer-panel-DsgLbfnD.js";import{A as de,a as ce,b as me,c as N,R as ue}from"./relation-chips-C4LQSHRc.js";import{d as H,u as pe}from"./main-BjGE3kSi.js";import{V as he}from"./VCombobox-CGyBgdqr.js";import{V as O}from"./VCheckbox-DUxuAZcY.js";import{V as fe}from"./VTextField-BayL7C1D.js";import{D as K}from"./datetime-column-uaXWFgF_.js";import{C as be}from"./confirm-dialog-CYEBgtj5.js";import{V as z}from"./VCheckboxBtn-BTFFFGx3.js";import{a as P,b as T,c as x,V as D}from"./VExpansionPanels-D4psrz4h.js";import{V as _e}from"./VTable-BveGtxei.js";import"./VDialog-DTWAoZBU.js";import"./VSelect-Bnhj5kBc.js";import"./VSelectionControl-DXxRmssH.js";import"./VSlideGroup-DYJ3EYZI.js";import"./filter-DS84uTvk.js";const ye={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(_,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(V,{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:{...I(_,["clearFolders","loadFolders"]),...I(V,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,a=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=a;let n="";return this.formErrors.length===0&&(this.path=n=this.rootFolder),this.$emit("change",n)}).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)}}},ve={id:"folderPicker"};function ge(e,t,a,n,l,u){return p(),g("div",ve,[r(he,$({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=c=>l.path=c),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=c=>l.menuOpen=c)},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:u.onBlur,"onClick:clear":u.onClear,onKeydown:ee(u.onKeyDownEnter,["enter"])}),{item:s(({item:c,props:f})=>[r(Z,$(f,{title:c.title,value:c.value,onClick:v=>u.onItemClick(c.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(O,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=c=>l.showHidden=c),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const we=C(ye,[["render",ge],["__scopeId","data-v-49f10642"]]),Ce={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function ke(e,t,a,n,l,u){return p(),w(fe,$({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=C(Ce,[["render",ke]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const L={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(L);const j=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Ie={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:de,AdminServerFolderPicker:we,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(j(t,e))return"Path is a child of an existing library";if(j(e,t))return"Path is a parent of an existing library"}return!0}]},row:H.cloneDeep(this.oldRow||L)}},computed:{...y(_,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=H.cloneDeep(e)},deep:!0}},methods:{...I(_,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:L},Ae={key:1};function Pe(e,t,a,n,l,u){const c=m("AdminServerFolderPicker"),f=m("TimeTextField"),v=m("AdminRelationPicker");return p(),g(B,null,[a.oldRow?(p(),g("div",Ae,F(a.oldRow.path),1)):(p(),w(c,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=h=>l.row.path=h)},null,8,["rules"])),r(O,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=h=>l.row.events=h),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(O,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=h=>l.row.poll=h),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]=h=>l.row.pollEvery=h),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?A("",!0):(p(),w(v,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=h=>l.row.groups=h),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))],64)}const Y=C(Ie,[["render",Pe]]),Te={name:"AdminLibrariesTab",components:{AdminTable:ce,AdminDeleteRowDialog:me,AdminCreateUpdateDialog:N,RelationChips:ue,ConfirmDialog:be,DateTimeColumn:K},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:te,mdiDatabaseClockOutline:oe,mdiDatabaseSyncOutline:re,mdiOpenInNew:W,AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{groups:e=>e.groups,items(e){const t=[];for(const a of e.libraries){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t},headers(){const e=[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}];return this.coversDir||e.push({title:"Groups",key:"groups"}),e.push({title:"Actions",key:"actions",sortable:!1}),e}}),...y(V,{formErrors:e=>{var t;return(t=e.form)==null?void 0:t.errors}}),...y(pe,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?le(e,(void 0).twentyFourHourTime):"",changeCol(e,t,a){this.lastUpdate.pk=e,this.lastUpdate.field=t;const n={[t]:a};this.updateRow("Library",e,n)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let a="";return e.coversOnly?(t&&(a+="Custom Group "),a+="Cover Dir"):a+="Library",a},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)}`},updateLabel(e){return e.coversOnly?"Cover Dir":""}}},xe=e=>(E("data-v-f591e3db"),e=e(),R(),e),De=xe(()=>o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ve(e,t,a,n,l,u){const c=m("DateTimeColumn"),f=m("RelationChips"),v=m("ConfirmDialog"),h=m("AdminCreateUpdateDialog"),Q=m("AdminDeleteRowDialog"),q=m("AdminTable");return p(),w(q,{headers:e.headers},{"no-data":s(()=>[De]),"item.events":s(({item:i})=>[r(z,{"model-value":i.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:i})=>[r(z,{"model-value":i.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:i})=>[o("span",{class:se({disabled:!i.poll})},F(i.pollEvery),3)]),"item.lastPoll":s(({item:i})=>[r(c,{dttm:i.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:i})=>[r(f,{pks:i.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:i})=>[r(v,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.label}s`,"object-name":i.path,"confirm-text":u.pollConfirmText(i),size:"small",density:"compact",onConfirm:X=>u.poll(i)},null,8,["icon","title-text","object-name","confirm-text","onConfirm"]),r(v,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update every ${i.label}`,"object-name":i.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:X=>u.forcePoll(i)},null,8,["icon","title-text","object-name","onConfirm"]),r(h,{table:"Library","old-row":i,inputs:l.AdminLibraryCreateUpdateInputs,label:u.updateLabel(i),"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs","label"]),i.coversOnly?A("",!0):(p(),w(Q,{key:0,table:"Library",pk:i.pk,name:i.path,size:"small",density:"compact"},null,8,["pk","name"]))]),_:2},1032,["headers"])}const J=C(Te,[["render",Ve],["__scopeId","data-v-f591e3db"]]),$e={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:J},computed:{...y(_,{coverDirItems(e){const t=[];for(const a of e.libraries)if(a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})}},b=e=>(E("data-v-eb37c40b"),e=e(),R(),e),Oe=b(()=>o("h4",{id:"coverDirHeader"},"Custom Covers",-1)),Le=b(()=>o("h4",null,"Custom Covers Help",-1)),Ee=b(()=>o("p",null,"Custom covers may be added to the browser in two locations:",-1)),Re=b(()=>o("h4",null,"Folders",-1)),Se=b(()=>o("p",null,[d(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),d(" 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)),Ue=b(()=>o("h4",null,"Custom Covers Dir",-1)),He=b(()=>o("p",null,[d(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),d(" 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"),d(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),d(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),d(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),d(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1)),ze=b(()=>o("h4",null,"Image Formats & Size",-1)),je=b(()=>o("p",null,[d(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),d(". ")],-1)),Be=b(()=>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)),We=b(()=>o("h4",null,"Priority",-1)),Ge=b(()=>o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1));function Ne(e,t,a,n,l,u){const c=m("AdminLibraryTable");return p(),w(x,null,{default:s(()=>[r(D,null,{default:s(()=>[r(P,null,{default:s(()=>[Oe]),_:1}),r(T,null,{default:s(()=>[r(c,{items:e.coverDirItems,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(x,null,{default:s(()=>[r(D,{id:"customCoversHelp"},{default:s(()=>[r(P,null,{default:s(()=>[Le]),_:1}),r(T,null,{default:s(()=>[Ee,Re,Se,Ue,He,ze,je,Be,We,Ge]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ke=C($e,[["render",Ne],["__scopeId","data-v-eb37c40b"]]),Me={name:"AdminFailedImportsPanel",components:{DateTimeColumn:K},data(){return{mdiBookAlert:ae,mdiOpenInNew:W}},computed:{...y(_,["failedImports"]),...ne(_,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},k=e=>(E("data-v-a99d09dc"),e=e(),R(),e),Ye={key:0},Je=k(()=>o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),Qe={class:"dateCol"},qe=k(()=>o("h4",null,"Failed Imports Help",-1)),Xe=k(()=>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)),Ze=k(()=>o("h4",null,"Fixing comics",-1)),et=k(()=>o("p",null,[d(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),o("code",null,"zip -FF"),d(" 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)),tt=k(()=>o("h4",null,"Reporting Issues",-1)),ot={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},rt=k(()=>o("code",null,"config/logs/codex.log",-1));function lt(e,t,a,n,l,u){const c=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(p(),g("div",Ye,[r(x,null,{default:s(()=>[r(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(P,null,{default:s(()=>[o("h4",null,"Failed Imports: "+F(e.failedImports.length),1),e.unseenFailedImports?(p(),w(S,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(F(l.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),r(T,null,{default:s(()=>[r(_e,{class:"highlight-table"},{default:s(()=>[Je,o("tbody",null,[(p(!0),g(B,null,ie(e.failedImports,f=>(p(),g("tr",{key:`fi:${f.path}`},[o("td",null,F(f.path),1),o("td",Qe,[r(c,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(x,null,{default:s(()=>[r(D,{id:"failedImportsHelp"},{default:s(()=>[r(P,null,{default:s(()=>[qe]),_:1}),r(T,null,{default:s(()=>[Xe,Ze,et,tt,o("p",null,[d(" 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 "),o("a",ot,[d("Issue Report"),r(S,{size:"small"},{default:s(()=>[d(F(l.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),rt,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const st=C(Me,[["render",lt],["__scopeId","data-v-a99d09dc"]]),at={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:st,AdminLibraryTable:J,AdminCreateUpdateDialog:N,AdminCustomCoversPanel:Ke},data(){return{AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{libraryItems(e){const t=[];for(const a of e.libraries)if(!a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["loadTables"])}},nt={class:"tabHeader"};function it(e,t,a,n,l,u){const c=m("AdminCreateUpdateDialog"),f=m("AdminLibraryTable"),v=m("AdminFailedImportsPanel"),h=m("AdminCustomCoversPanel");return p(),g("div",null,[o("header",nt,[r(c,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.libraryItems,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(v,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(h,{id:"customCovers"})]),_:1})])}const It=C(at,[["render",it],["__scopeId","data-v-ad90b1b8"]]);export{It as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{V as y,B as _,D as V,W as I,_ as C,Z as p,aF as g,S as r,$ as s,aY as Z,as as $,bn as ee,X as w,Y as m,aH as F,aJ as A,U as B,cJ as te,cK as oe,cL as re,aM as W,bD as G,b1 as le,aO as o,ak as se,aQ as E,aR as R,aj as d,cM as ae,br as ne,aP as S,aG as ie,bQ as U}from"./admin-drawer-panel-SpPhIMP4.js";import{A as de,a as ce,b as me,c as N,R as ue}from"./relation-chips-DKzjmNPq.js";import{d as H,u as pe}from"./main-BMxHA4IB.js";import{V as he}from"./VCombobox-pHa6iBaZ.js";import{V as O}from"./VCheckbox-fu1ny9Cc.js";import{V as fe}from"./VTextField-DuT-8VmG.js";import{D as K}from"./datetime-column-CYmuurug.js";import{C as be}from"./confirm-dialog-BEiVusri.js";import{V as z}from"./VCheckboxBtn-ssJU_z8r.js";import{a as P,b as T,c as x,V as D}from"./VExpansionPanels-DhRGJRFB.js";import{V as _e}from"./VTable-BPFJigN3.js";import"./VDialog-PmbYIKIh.js";import"./VSelect-BBy4FHPj.js";import"./VSelectionControl-D4e-QshF.js";import"./VSlideGroup-BQv5m0ZY.js";import"./filter-D0YNadTH.js";const ye={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(_,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(V,{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:{...I(_,["clearFolders","loadFolders"]),...I(V,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,a=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=a;let n="";return this.formErrors.length===0&&(this.path=n=this.rootFolder),this.$emit("change",n)}).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)}}},ve={id:"folderPicker"};function ge(e,t,a,n,l,u){return p(),g("div",ve,[r(he,$({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=c=>l.path=c),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=c=>l.menuOpen=c)},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:u.onBlur,"onClick:clear":u.onClear,onKeydown:ee(u.onKeyDownEnter,["enter"])}),{item:s(({item:c,props:f})=>[r(Z,$(f,{title:c.title,value:c.value,onClick:v=>u.onItemClick(c.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(O,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=c=>l.showHidden=c),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const we=C(ye,[["render",ge],["__scopeId","data-v-49f10642"]]),Ce={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function ke(e,t,a,n,l,u){return p(),w(fe,$({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=C(Ce,[["render",ke]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const L={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(L);const j=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Ie={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:de,AdminServerFolderPicker:we,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(j(t,e))return"Path is a child of an existing library";if(j(e,t))return"Path is a parent of an existing library"}return!0}]},row:H.cloneDeep(this.oldRow||L)}},computed:{...y(_,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=H.cloneDeep(e)},deep:!0}},methods:{...I(_,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:L},Ae={key:1};function Pe(e,t,a,n,l,u){const c=m("AdminServerFolderPicker"),f=m("TimeTextField"),v=m("AdminRelationPicker");return p(),g(B,null,[a.oldRow?(p(),g("div",Ae,F(a.oldRow.path),1)):(p(),w(c,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=h=>l.row.path=h)},null,8,["rules"])),r(O,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=h=>l.row.events=h),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(O,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=h=>l.row.poll=h),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]=h=>l.row.pollEvery=h),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?A("",!0):(p(),w(v,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=h=>l.row.groups=h),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))],64)}const Y=C(Ie,[["render",Pe]]),Te={name:"AdminLibrariesTab",components:{AdminTable:ce,AdminDeleteRowDialog:me,AdminCreateUpdateDialog:N,RelationChips:ue,ConfirmDialog:be,DateTimeColumn:K},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:te,mdiDatabaseClockOutline:oe,mdiDatabaseSyncOutline:re,mdiOpenInNew:W,AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{groups:e=>e.groups,items(e){const t=[];for(const a of e.libraries){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t},headers(){const e=[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}];return this.coversDir||e.push({title:"Groups",key:"groups"}),e.push({title:"Actions",key:"actions",sortable:!1}),e}}),...y(V,{formErrors:e=>{var t;return(t=e.form)==null?void 0:t.errors}}),...y(pe,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?le(e,(void 0).twentyFourHourTime):"",changeCol(e,t,a){this.lastUpdate.pk=e,this.lastUpdate.field=t;const n={[t]:a};this.updateRow("Library",e,n)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let a="";return e.coversOnly?(t&&(a+="Custom Group "),a+="Cover Dir"):a+="Library",a},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)}`},updateLabel(e){return e.coversOnly?"Cover Dir":""}}},xe=e=>(E("data-v-f591e3db"),e=e(),R(),e),De=xe(()=>o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ve(e,t,a,n,l,u){const c=m("DateTimeColumn"),f=m("RelationChips"),v=m("ConfirmDialog"),h=m("AdminCreateUpdateDialog"),Q=m("AdminDeleteRowDialog"),q=m("AdminTable");return p(),w(q,{headers:e.headers},{"no-data":s(()=>[De]),"item.events":s(({item:i})=>[r(z,{"model-value":i.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:i})=>[r(z,{"model-value":i.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:i})=>[o("span",{class:se({disabled:!i.poll})},F(i.pollEvery),3)]),"item.lastPoll":s(({item:i})=>[r(c,{dttm:i.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:i})=>[r(f,{pks:i.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:i})=>[r(v,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.label}s`,"object-name":i.path,"confirm-text":u.pollConfirmText(i),size:"small",density:"compact",onConfirm:X=>u.poll(i)},null,8,["icon","title-text","object-name","confirm-text","onConfirm"]),r(v,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update every ${i.label}`,"object-name":i.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:X=>u.forcePoll(i)},null,8,["icon","title-text","object-name","onConfirm"]),r(h,{table:"Library","old-row":i,inputs:l.AdminLibraryCreateUpdateInputs,label:u.updateLabel(i),"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs","label"]),i.coversOnly?A("",!0):(p(),w(Q,{key:0,table:"Library",pk:i.pk,name:i.path,size:"small",density:"compact"},null,8,["pk","name"]))]),_:2},1032,["headers"])}const J=C(Te,[["render",Ve],["__scopeId","data-v-f591e3db"]]),$e={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:J},computed:{...y(_,{coverDirItems(e){const t=[];for(const a of e.libraries)if(a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})}},b=e=>(E("data-v-eb37c40b"),e=e(),R(),e),Oe=b(()=>o("h4",{id:"coverDirHeader"},"Custom Covers",-1)),Le=b(()=>o("h4",null,"Custom Covers Help",-1)),Ee=b(()=>o("p",null,"Custom covers may be added to the browser in two locations:",-1)),Re=b(()=>o("h4",null,"Folders",-1)),Se=b(()=>o("p",null,[d(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),d(" 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)),Ue=b(()=>o("h4",null,"Custom Covers Dir",-1)),He=b(()=>o("p",null,[d(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),d(" 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"),d(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),d(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),d(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),d(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1)),ze=b(()=>o("h4",null,"Image Formats & Size",-1)),je=b(()=>o("p",null,[d(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),d(". ")],-1)),Be=b(()=>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)),We=b(()=>o("h4",null,"Priority",-1)),Ge=b(()=>o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1));function Ne(e,t,a,n,l,u){const c=m("AdminLibraryTable");return p(),w(x,null,{default:s(()=>[r(D,null,{default:s(()=>[r(P,null,{default:s(()=>[Oe]),_:1}),r(T,null,{default:s(()=>[r(c,{items:e.coverDirItems,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(x,null,{default:s(()=>[r(D,{id:"customCoversHelp"},{default:s(()=>[r(P,null,{default:s(()=>[Le]),_:1}),r(T,null,{default:s(()=>[Ee,Re,Se,Ue,He,ze,je,Be,We,Ge]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ke=C($e,[["render",Ne],["__scopeId","data-v-eb37c40b"]]),Me={name:"AdminFailedImportsPanel",components:{DateTimeColumn:K},data(){return{mdiBookAlert:ae,mdiOpenInNew:W}},computed:{...y(_,["failedImports"]),...ne(_,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},k=e=>(E("data-v-a99d09dc"),e=e(),R(),e),Ye={key:0},Je=k(()=>o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),Qe={class:"dateCol"},qe=k(()=>o("h4",null,"Failed Imports Help",-1)),Xe=k(()=>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)),Ze=k(()=>o("h4",null,"Fixing comics",-1)),et=k(()=>o("p",null,[d(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),o("code",null,"zip -FF"),d(" 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)),tt=k(()=>o("h4",null,"Reporting Issues",-1)),ot={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},rt=k(()=>o("code",null,"config/logs/codex.log",-1));function lt(e,t,a,n,l,u){const c=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(p(),g("div",Ye,[r(x,null,{default:s(()=>[r(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(P,null,{default:s(()=>[o("h4",null,"Failed Imports: "+F(e.failedImports.length),1),e.unseenFailedImports?(p(),w(S,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(F(l.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),r(T,null,{default:s(()=>[r(_e,{class:"highlight-table"},{default:s(()=>[Je,o("tbody",null,[(p(!0),g(B,null,ie(e.failedImports,f=>(p(),g("tr",{key:`fi:${f.path}`},[o("td",null,F(f.path),1),o("td",Qe,[r(c,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(x,null,{default:s(()=>[r(D,{id:"failedImportsHelp"},{default:s(()=>[r(P,null,{default:s(()=>[qe]),_:1}),r(T,null,{default:s(()=>[Xe,Ze,et,tt,o("p",null,[d(" 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 "),o("a",ot,[d("Issue Report"),r(S,{size:"small"},{default:s(()=>[d(F(l.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),rt,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const st=C(Me,[["render",lt],["__scopeId","data-v-a99d09dc"]]),at={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:st,AdminLibraryTable:J,AdminCreateUpdateDialog:N,AdminCustomCoversPanel:Ke},data(){return{AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{libraryItems(e){const t=[];for(const a of e.libraries)if(!a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["loadTables"])}},nt={class:"tabHeader"};function it(e,t,a,n,l,u){const c=m("AdminCreateUpdateDialog"),f=m("AdminLibraryTable"),v=m("AdminFailedImportsPanel"),h=m("AdminCustomCoversPanel");return p(),g("div",null,[o("header",nt,[r(c,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.libraryItems,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(v,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(h,{id:"customCovers"})]),_:1})])}const It=C(at,[["render",it],["__scopeId","data-v-ad90b1b8"]]);export{It as default};
|
|
1
|
+
import{V as y,B as _,D as V,W as I,_ as C,Z as p,aF as g,S as r,$ as s,aY as Z,as as $,bn as ee,X as w,Y as m,aH as F,aJ as A,U as B,cJ as te,cK as oe,cL as re,aM as W,bD as G,b1 as le,aO as o,ak as se,aQ as E,aR as R,aj as d,cM as ae,br as ne,aP as S,aG as ie,bQ as U}from"./admin-drawer-panel-DsgLbfnD.js";import{A as de,a as ce,b as me,c as N,R as ue}from"./relation-chips-C4LQSHRc.js";import{d as H,u as pe}from"./main-BjGE3kSi.js";import{V as he}from"./VCombobox-CGyBgdqr.js";import{V as O}from"./VCheckbox-DUxuAZcY.js";import{V as fe}from"./VTextField-BayL7C1D.js";import{D as K}from"./datetime-column-uaXWFgF_.js";import{C as be}from"./confirm-dialog-CYEBgtj5.js";import{V as z}from"./VCheckboxBtn-BTFFFGx3.js";import{a as P,b as T,c as x,V as D}from"./VExpansionPanels-D4psrz4h.js";import{V as _e}from"./VTable-BveGtxei.js";import"./VDialog-DTWAoZBU.js";import"./VSelect-Bnhj5kBc.js";import"./VSelectionControl-DXxRmssH.js";import"./VSlideGroup-DYJ3EYZI.js";import"./filter-DS84uTvk.js";const ye={name:"AdminServerFolderPicker",emits:["change","menu"],data(){return{path:"",originalPath:"",showHidden:!1,menuOpen:!1}},computed:{...y(_,{folders:e=>e.folderPicker.folders,rootFolder:e=>e.folderPicker.rootFolder}),...y(V,{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:{...I(_,["clearFolders","loadFolders"]),...I(V,["clearErrors"]),change(e){const t=e?e.startsWith("/")||e.startsWith("\\")?e:[this.rootFolder,e].join("/"):this.rootFolder,a=this.menuOpen;this.clearErrors(),this.loadFolders(t,this.showHidden).then(()=>{this.menuOpen=a;let n="";return this.formErrors.length===0&&(this.path=n=this.rootFolder),this.$emit("change",n)}).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)}}},ve={id:"folderPicker"};function ge(e,t,a,n,l,u){return p(),g("div",ve,[r(he,$({modelValue:l.path,"onUpdate:modelValue":t[0]||(t[0]=c=>l.path=c),menu:l.menuOpen,"onUpdate:menu":t[1]||(t[1]=c=>l.menuOpen=c)},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:u.onBlur,"onClick:clear":u.onClear,onKeydown:ee(u.onKeyDownEnter,["enter"])}),{item:s(({item:c,props:f})=>[r(Z,$(f,{title:c.title,value:c.value,onClick:v=>u.onItemClick(c.value)}),null,16,["title","value","onClick"])]),_:1},16,["modelValue","menu","error-messages","items","onBlur","onClick:clear","onKeydown"]),r(O,{modelValue:l.showHidden,"onUpdate:modelValue":t[2]||(t[2]=c=>l.showHidden=c),density:"compact",class:"showHidden","hide-details":"auto",label:"Show Hidden Folders"},null,8,["modelValue"])])}const we=C(ye,[["render",ge],["__scopeId","data-v-49f10642"]]),Ce={name:"TimeTextField",data(){return{FORMAT:"DDD HH:mm:SS",timeRules:[e=>/^(\d{1,3} )?([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(e)||`Invalid time format ${this.FORMAT}`]}}};function ke(e,t,a,n,l,u){return p(),w(fe,$({ref:"timeField",density:"compact",filled:"",hint:l.FORMAT,round:"",rules:l.timeRules},e.$attrs),null,16,["hint","rules"])}const Fe=C(Ce,[["render",ke]]),M=["events","poll","pollEvery","groups"];Object.freeze(M);const L={path:"",events:!0,poll:!0,pollEvery:"01:00:00",groups:[]};Object.freeze(L);const j=(e,t)=>(e=e.replaceAll("\\","/"),t=t.replaceAll("\\","/"),e.endsWith("/")||(e+="/"),t.endsWith("/")||(t+="/"),t.startsWith(e)),Ie={name:"AdminLibraryCreateUpdateInputs",components:{AdminRelationPicker:de,AdminServerFolderPicker:we,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(j(t,e))return"Path is a child of an existing library";if(j(e,t))return"Path is a parent of an existing library"}return!0}]},row:H.cloneDeep(this.oldRow||L)}},computed:{...y(_,{groups:e=>e.groups,libraries:e=>e.libraries}),paths(){return this.nameSet(this.libraries,"path",this.oldRow,!1)}},watch:{row:{handler(e){this.$emit("change",e)},deep:!0},oldRow:{handler(e){this.row=H.cloneDeep(e)},deep:!0}},methods:{...I(_,["nameSet"])},UPDATE_KEYS:M,EMPTY_ROW:L},Ae={key:1};function Pe(e,t,a,n,l,u){const c=m("AdminServerFolderPicker"),f=m("TimeTextField"),v=m("AdminRelationPicker");return p(),g(B,null,[a.oldRow?(p(),g("div",Ae,F(a.oldRow.path),1)):(p(),w(c,{key:0,rules:l.rules.path,autofocus:"",label:"Library Folder",onChange:t[0]||(t[0]=h=>l.row.path=h)},null,8,["rules"])),r(O,{modelValue:l.row.events,"onUpdate:modelValue":t[1]||(t[1]=h=>l.row.events=h),"hide-details":"auto",hint:"Update Codex instantly when the filesystem changes",label:"Watch Filesystem Events","persistent-hint":!0},null,8,["modelValue"]),r(O,{modelValue:l.row.poll,"onUpdate:modelValue":t[2]||(t[2]=h=>l.row.poll=h),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]=h=>l.row.pollEvery=h),label:"Poll Every",disabled:!l.row.poll},null,8,["modelValue","disabled"]),l.row.coversOnly?A("",!0):(p(),w(v,{key:2,modelValue:l.row.groups,"onUpdate:modelValue":t[4]||(t[4]=h=>l.row.groups=h),label:"Groups",objs:e.groups,"group-type":"","title-key":"name"},null,8,["modelValue","objs"]))],64)}const Y=C(Ie,[["render",Pe]]),Te={name:"AdminLibrariesTab",components:{AdminTable:ce,AdminDeleteRowDialog:me,AdminCreateUpdateDialog:N,RelationChips:ue,ConfirmDialog:be,DateTimeColumn:K},props:{coversDir:{type:Boolean,default:!1}},data(){return{lastUpdate:{pk:0,field:void 0},mdiCircleOffOutline:te,mdiDatabaseClockOutline:oe,mdiDatabaseSyncOutline:re,mdiOpenInNew:W,AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{groups:e=>e.groups,items(e){const t=[];for(const a of e.libraries){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t},headers(){const e=[{title:"Path",key:"path",align:"start"},{title:"Watch File Events",key:"events"},{title:"Poll Files Periodically",key:"poll"},{title:"Poll Every",key:"pollEvery"},{title:"Last Poll",key:"lastPoll"}];return this.coversDir||e.push({title:"Groups",key:"groups"}),e.push({title:"Actions",key:"actions",sortable:!1}),e}}),...y(V,{formErrors:e=>{var t;return(t=e.form)==null?void 0:t.errors}}),...y(pe,{twentyFourHourTime:e=>e.settings.twentyFourHourTime})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["updateRow","clearErrors","librarianTask","loadTables"]),formatDateTime:e=>e?le(e,(void 0).twentyFourHourTime):"",changeCol(e,t,a){this.lastUpdate.pk=e,this.lastUpdate.field=t;const n={[t]:a};this.updateRow("Library",e,n)},getFormErrors(e,t){if(e===this.lastUpdate.pk&&t===this.lastUpdate.field)return this.formErrors},libraryLabel(e,t=!0){let a="";return e.coversOnly?(t&&(a+="Custom Group "),a+="Cover Dir"):a+="Library",a},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)}`},updateLabel(e){return e.coversOnly?"Cover Dir":""}}},xe=e=>(E("data-v-f591e3db"),e=e(),R(),e),De=xe(()=>o("td",{class:"adminNoData",colspan:"100%"}," Add a Library to start using Codex ",-1));function Ve(e,t,a,n,l,u){const c=m("DateTimeColumn"),f=m("RelationChips"),v=m("ConfirmDialog"),h=m("AdminCreateUpdateDialog"),Q=m("AdminDeleteRowDialog"),q=m("AdminTable");return p(),w(q,{headers:e.headers},{"no-data":s(()=>[De]),"item.events":s(({item:i})=>[r(z,{"model-value":i.events,disabled:""},null,8,["model-value"])]),"item.poll":s(({item:i})=>[r(z,{"model-value":i.poll,disabled:""},null,8,["model-value"])]),"item.pollEvery":s(({item:i})=>[o("span",{class:se({disabled:!i.poll})},F(i.pollEvery),3)]),"item.lastPoll":s(({item:i})=>[r(c,{dttm:i.lastPoll},null,8,["dttm"])]),"item.groups":s(({item:i})=>[r(f,{pks:i.groups,objs:e.groups,"group-type":"","title-key":"name"},null,8,["pks","objs"])]),"item.actions":s(({item:i})=>[r(v,{icon:l.mdiDatabaseClockOutline,"title-text":`Poll for updated ${i.label}s`,"object-name":i.path,"confirm-text":u.pollConfirmText(i),size:"small",density:"compact",onConfirm:X=>u.poll(i)},null,8,["icon","title-text","object-name","confirm-text","onConfirm"]),r(v,{icon:l.mdiDatabaseSyncOutline,"title-text":`Force update every ${i.label}`,"object-name":i.path,"confirm-text":"Force Update",size:"small",density:"compact",onConfirm:X=>u.forcePoll(i)},null,8,["icon","title-text","object-name","onConfirm"]),r(h,{table:"Library","old-row":i,inputs:l.AdminLibraryCreateUpdateInputs,label:u.updateLabel(i),"max-width":"22em",size:"small",density:"compact"},null,8,["old-row","inputs","label"]),i.coversOnly?A("",!0):(p(),w(Q,{key:0,table:"Library",pk:i.pk,name:i.path,size:"small",density:"compact"},null,8,["pk","name"]))]),_:2},1032,["headers"])}const J=C(Te,[["render",Ve],["__scopeId","data-v-f591e3db"]]),$e={name:"AdminCustomCoversPanel",components:{AdminLibraryTable:J},computed:{...y(_,{coverDirItems(e){const t=[];for(const a of e.libraries)if(a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})}},b=e=>(E("data-v-eb37c40b"),e=e(),R(),e),Oe=b(()=>o("h4",{id:"coverDirHeader"},"Custom Covers",-1)),Le=b(()=>o("h4",null,"Custom Covers Help",-1)),Ee=b(()=>o("p",null,"Custom covers may be added to the browser in two locations:",-1)),Re=b(()=>o("h4",null,"Folders",-1)),Se=b(()=>o("p",null,[d(" A library folder with a file named "),o("code",null,".codex-cover.jpg"),d(" 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)),Ue=b(()=>o("h4",null,"Custom Covers Dir",-1)),He=b(()=>o("p",null,[d(" The Codex config directory has a special folder named "),o("code",null,"custom-covers"),d(" 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"),d(' would be used as the cover for the publisher "American Comics Group". '),o("code",null,".../custom-covers/series/arrow.png"),d(' would be used as the cover for every series named "Arrow", for '),o("em",null,"every"),d(" publisher. Similar to a comic library, the "),o("code",null,"custom-covers"),d(" directory may be watched and polled for changes. By default it is neither watched nor polled and must be enabled by the admin. ")],-1)),ze=b(()=>o("h4",null,"Image Formats & Size",-1)),je=b(()=>o("p",null,[d(" Custom covers are detected only for files with the extensions: "),o("code",null,".bmp, .gif, .jpeg, .jpg, .png, .webp"),d(". ")],-1)),Be=b(()=>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)),We=b(()=>o("h4",null,"Priority",-1)),Ge=b(()=>o("p",null," Custom covers supersede covers set by the user's individual browser settings. ",-1));function Ne(e,t,a,n,l,u){const c=m("AdminLibraryTable");return p(),w(x,null,{default:s(()=>[r(D,null,{default:s(()=>[r(P,null,{default:s(()=>[Oe]),_:1}),r(T,null,{default:s(()=>[r(c,{items:e.coverDirItems,"disable-sort":"","covers-dir":!0},null,8,["items"]),r(x,null,{default:s(()=>[r(D,{id:"customCoversHelp"},{default:s(()=>[r(P,null,{default:s(()=>[Le]),_:1}),r(T,null,{default:s(()=>[Ee,Re,Se,Ue,He,ze,je,Be,We,Ge]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const Ke=C($e,[["render",Ne],["__scopeId","data-v-eb37c40b"]]),Me={name:"AdminFailedImportsPanel",components:{DateTimeColumn:K},data(){return{mdiBookAlert:ae,mdiOpenInNew:W}},computed:{...y(_,["failedImports"]),...ne(_,["unseenFailedImports"])},created(){this.unseenFailedImports=!0}},k=e=>(E("data-v-a99d09dc"),e=e(),R(),e),Ye={key:0},Je=k(()=>o("thead",null,[o("tr",null,[o("th",null,"Path"),o("th",null,"Created")])],-1)),Qe={class:"dateCol"},qe=k(()=>o("h4",null,"Failed Imports Help",-1)),Xe=k(()=>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)),Ze=k(()=>o("h4",null,"Fixing comics",-1)),et=k(()=>o("p",null,[d(" Try using the zip fixer to fix comics: "),o("code",{class:"cli"},[d(" cp problem-comic.cbz /somewhere/safe/problem-comic.cbz.backup"),o("br"),d(" zip -F problem-comic.cbz --out fixed.zip"),o("br"),d(" mv fixed.zip problem-comic.cbz ")]),d(" You may also try "),o("code",null,"zip -FF"),d(" 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)),tt=k(()=>o("h4",null,"Reporting Issues",-1)),ot={href:"https://github.com/ajslater/codex/issues/",target:"_blank"},rt=k(()=>o("code",null,"config/logs/codex.log",-1));function lt(e,t,a,n,l,u){const c=m("DateTimeColumn");return e.failedImports&&e.failedImports.length>0?(p(),g("div",Ye,[r(x,null,{default:s(()=>[r(D,{id:"failedImportsPanel",onClick:t[0]||(t[0]=f=>e.unseenFailedImports=!1)},{default:s(()=>[r(P,null,{default:s(()=>[o("h4",null,"Failed Imports: "+F(e.failedImports.length),1),e.unseenFailedImports?(p(),w(S,{key:0,id:"failedImportsIcon",title:"New Failed Imports"},{default:s(()=>[d(F(l.mdiBookAlert),1)]),_:1})):A("",!0)]),_:1}),r(T,null,{default:s(()=>[r(_e,{class:"highlight-table"},{default:s(()=>[Je,o("tbody",null,[(p(!0),g(B,null,ie(e.failedImports,f=>(p(),g("tr",{key:`fi:${f.path}`},[o("td",null,F(f.path),1),o("td",Qe,[r(c,{dttm:f.createdAt},null,8,["dttm"])])]))),128))])]),_:1}),r(x,null,{default:s(()=>[r(D,{id:"failedImportsHelp"},{default:s(()=>[r(P,null,{default:s(()=>[qe]),_:1}),r(T,null,{default:s(()=>[Xe,Ze,et,tt,o("p",null,[d(" 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 "),o("a",ot,[d("Issue Report"),r(S,{size:"small"},{default:s(()=>[d(F(l.mdiOpenInNew),1)]),_:1})]),d(" and include the stack trace from the logs at "),rt,d(" if you can. ")])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})])):A("",!0)}const st=C(Me,[["render",lt],["__scopeId","data-v-a99d09dc"]]),at={name:"AdminLibrariesTab",components:{AdminFailedImportsPanel:st,AdminLibraryTable:J,AdminCreateUpdateDialog:N,AdminCustomCoversPanel:Ke},data(){return{AdminLibraryCreateUpdateInputs:G(Y)}},computed:{...y(_,{libraryItems(e){const t=[];for(const a of e.libraries)if(!a.coversOnly){const n={...a};n.label=n.coversOnly?"custom group cover":"comic",t.push(n)}return t}})},mounted(){this.loadTables(["Group","Library","FailedImport"])},methods:{...I(_,["loadTables"])}},nt={class:"tabHeader"};function it(e,t,a,n,l,u){const c=m("AdminCreateUpdateDialog"),f=m("AdminLibraryTable"),v=m("AdminFailedImportsPanel"),h=m("AdminCustomCoversPanel");return p(),g("div",null,[o("header",nt,[r(c,{table:"Library",inputs:l.AdminLibraryCreateUpdateInputs},null,8,["inputs"])]),r(f,{items:e.libraryItems,"sort-by":[{key:"path",order:"asc"}]},null,8,["items"]),r(U,null,{default:s(()=>[r(v,{id:"failedImports"})]),_:1}),r(U,null,{default:s(()=>[r(h,{id:"customCovers"})]),_:1})])}const It=C(at,[["render",it],["__scopeId","data-v-ad90b1b8"]]);export{It as default};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const __vite__fileDeps=["assets/admin-
|
|
2
|
-
import{n as Hn,v as dm,i as It,u as pn,r as so,w as pm,a as Qi,g as Ic,o as Pc,b as Oc,c as Cc,s as Mc,d as gm,e as Dc,f as en,h as De,j as Fc,p as sr,k as tn,H as Wt,l as Ji,m as Ui,C as ar,q as vm,t as qi,x as Hc,y as mm,z as ym,A as Sm,B as Vi,D as xm,E as es,F as Bc,G as kc,I as bm,J as Nu,K as no,L as Em,M as Tm,N as Lm,O as Rm,P as wm,Q as Nc,R as Am,S as or,T as Im,U as Pm,V as $u,W as Om,_ as Cm,X as Mm,Y as Dm,Z as Fm,$ as Hm,a0 as Bm,a1 as Wu,a2 as Mn,a3 as km,a4 as Nm,a5 as $m,a6 as Wm,a7 as Gm,a8 as Um,a9 as Vm,aa as Km,ab as Gu,ac as Uu,ad as Vu,ae as Ku,af as ju,ag as jm,ah as zm,ai as Ym}from"./admin-drawer-panel-SpPhIMP4.js";function Ki(n,r={},o){for(const i in n){const a=n[i],c=o?`${o}:${i}`:i;typeof a=="object"&&a!==null?Ki(a,r,c):typeof a=="function"&&(r[c]=a)}return r}const Zm={run:n=>n()},Xm=()=>Zm,$c=typeof console.createTask<"u"?console.createTask:Xm;function _m(n,r){const o=r.shift(),i=$c(o);return n.reduce((a,c)=>a.then(()=>i.run(()=>c(...r))),Promise.resolve())}function Qm(n,r){const o=r.shift(),i=$c(o);return Promise.all(n.map(a=>i.run(()=>a(...r))))}function Hi(n,r){for(const o of[...n])o(r)}class Jm{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(r,o,i={}){if(!r||typeof o!="function")return()=>{};const a=r;let c;for(;this._deprecatedHooks[r];)c=this._deprecatedHooks[r],r=c.to;if(c&&!i.allowDeprecated){let f=c.message;f||(f=`${a} hook has been deprecated`+(c.to?`, please use ${c.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(f)||(console.warn(f),this._deprecatedMessages.add(f))}if(!o.name)try{Object.defineProperty(o,"name",{get:()=>"_"+r.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[r]=this._hooks[r]||[],this._hooks[r].push(o),()=>{o&&(this.removeHook(r,o),o=void 0)}}hookOnce(r,o){let i,a=(...c)=>(typeof i=="function"&&i(),i=void 0,a=void 0,o(...c));return i=this.hook(r,a),i}removeHook(r,o){if(this._hooks[r]){const i=this._hooks[r].indexOf(o);i!==-1&&this._hooks[r].splice(i,1),this._hooks[r].length===0&&delete this._hooks[r]}}deprecateHook(r,o){this._deprecatedHooks[r]=typeof o=="string"?{to:o}:o;const i=this._hooks[r]||[];delete this._hooks[r];for(const a of i)this.hook(r,a)}deprecateHooks(r){Object.assign(this._deprecatedHooks,r);for(const o in r)this.deprecateHook(o,r[o])}addHooks(r){const o=Ki(r),i=Object.keys(o).map(a=>this.hook(a,o[a]));return()=>{for(const a of i.splice(0,i.length))a()}}removeHooks(r){const o=Ki(r);for(const i in o)this.removeHook(i,o[i])}removeAllHooks(){for(const r in this._hooks)delete this._hooks[r]}callHook(r,...o){return o.unshift(r),this.callHookWith(_m,r,...o)}callHookParallel(r,...o){return o.unshift(r),this.callHookWith(Qm,r,...o)}callHookWith(r,o,...i){const a=this._before||this._after?{name:o,args:i,context:{}}:void 0;this._before&&Hi(this._before,a);const c=r(o in this._hooks?[...this._hooks[o]]:[],i);return c instanceof Promise?c.finally(()=>{this._after&&a&&Hi(this._after,a)}):(this._after&&a&&Hi(this._after,a),c)}beforeEach(r){return this._before=this._before||[],this._before.push(r),()=>{if(this._before!==void 0){const o=this._before.indexOf(r);o!==-1&&this._before.splice(o,1)}}}afterEach(r){return this._after=this._after||[],this._after.push(r),()=>{if(this._after!==void 0){const o=this._after.indexOf(r);o!==-1&&this._after.splice(o,1)}}}}function qm(){return new Jm}function e0(n){return Array.isArray(n)?n:[n]}const t0=["title","titleTemplate","script","style","noscript"],ro=["base","meta","link","style","script","noscript"],n0=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],r0=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Wc=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],o0=typeof window<"u";function ts(n){let r=9;for(let o=0;o<n.length;)r=Math.imul(r^n.charCodeAt(o++),9**9);return((r^r>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function zu(n){return n._h||ts(n._d?n._d:`${n.tag}:${n.textContent||n.innerHTML||""}:${Object.entries(n.props).map(([r,o])=>`${r}:${String(o)}`).join(",")}`)}function Gc(n,r){const{props:o,tag:i}=n;if(r0.includes(i))return i;if(i==="link"&&o.rel==="canonical")return"canonical";if(o.charset)return"charset";const a=["id"];i==="meta"&&a.push("name","property","http-equiv");for(const c of a)if(typeof o[c]<"u"){const f=String(o[c]);return`${i}:${c}:${f}`}return!1}function Yu(n,r){return n==null?r||null:typeof n=="function"?n(r):n}async function i0(n,r,o){const i={tag:n,props:await Uc(typeof r=="object"&&typeof r!="function"&&!(r instanceof Promise)?{...r}:{[["script","noscript","style"].includes(n)?"innerHTML":"textContent"]:r},["templateParams","titleTemplate"].includes(n))};return Wc.forEach(a=>{const c=typeof i.props[a]<"u"?i.props[a]:o[a];typeof c<"u"&&((!["innerHTML","textContent","children"].includes(a)||t0.includes(i.tag))&&(i[a==="children"?"innerHTML":a]=c),delete i.props[a])}),i.props.body&&(i.tagPosition="bodyClose",delete i.props.body),i.tag==="script"&&typeof i.innerHTML=="object"&&(i.innerHTML=JSON.stringify(i.innerHTML),i.props.type=i.props.type||"application/json"),Array.isArray(i.props.content)?i.props.content.map(a=>({...i,props:{...i.props,content:a}})):i}function s0(n,r){var i;const o=n==="class"?" ":";";return typeof r=="object"&&!Array.isArray(r)&&(r=Object.entries(r).filter(([,a])=>a).map(([a,c])=>n==="style"?`${a}:${c}`:a)),(i=String(Array.isArray(r)?r.join(o):r))==null?void 0:i.split(o).filter(a=>a.trim()).filter(Boolean).join(o)}async function Uc(n,r){for(const o of Object.keys(n)){if(["class","style"].includes(o)){n[o]=s0(o,n[o]);continue}if(n[o]instanceof Promise&&(n[o]=await n[o]),!r&&!Wc.includes(o)){const i=String(n[o]),a=o.startsWith("data-");i==="true"||i===""?n[o]=a?"true":!0:n[o]||(a&&i==="false"?n[o]="false":delete n[o])}}return n}const a0=10;async function u0(n){const r=[];return Object.entries(n.resolvedInput).filter(([o,i])=>typeof i<"u"&&n0.includes(o)).forEach(([o,i])=>{const a=e0(i);r.push(...a.map(c=>i0(o,c,n)).flat())}),(await Promise.all(r)).flat().filter(Boolean).map((o,i)=>(o._e=n._i,n.mode&&(o._m=n.mode),o._p=(n._i<<a0)+i,o))}const Zu={base:-10,title:10},Xu={critical:-80,high:-10,low:20};function ao(n){let r=100;const o=n.tagPriority;return typeof o=="number"?o:(n.tag==="meta"?(n.props["http-equiv"]==="content-security-policy"&&(r=-30),n.props.charset&&(r=-20),n.props.name==="viewport"&&(r=-15)):n.tag==="link"&&n.props.rel==="preconnect"?r=20:n.tag in Zu&&(r=Zu[n.tag]),typeof o=="string"&&o in Xu?r+Xu[o]:r)}const c0=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],_u=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function oo(n,r,o){if(typeof n!="string"||!n.includes("%"))return n;function i(f){let d;return["s","pageTitle"].includes(f)?d=r.pageTitle:f.includes(".")?d=f.split(".").reduce((h,v)=>h&&h[v]||void 0,r):d=r[f],typeof d<"u"?(d||"").replace(/"/g,'\\"'):!1}let a=n;try{a=decodeURI(n)}catch{}return(a.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(f=>{const d=i(f.slice(1));typeof d=="string"&&(n=n.replace(new RegExp(`\\${f}(\\W|$)`,"g"),(h,v)=>`${d}${v}`).trim())}),n.includes(Qt)&&(n.endsWith(Qt)&&(n=n.slice(0,-Qt.length).trim()),n.startsWith(Qt)&&(n=n.slice(Qt.length).trim()),n=n.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),n=oo(n,{separator:o},o)),n}async function f0(n,r={}){var g;const o=r.document||n.resolvedOptions.document;if(!o||!n.dirty)return;const i={shouldRender:!0,tags:[]};if(await n.hooks.callHook("dom:beforeRender",i),!i.shouldRender)return;const a=(await n.resolveTags()).map(y=>({tag:y,id:ro.includes(y.tag)?zu(y):y.tag,shouldRender:!0}));let c=n._dom;if(!c){c={elMap:{htmlAttrs:o.documentElement,bodyAttrs:o.body}};for(const y of["body","head"]){const S=(g=o[y])==null?void 0:g.children,b=[];for(const R of[...S].filter(E=>ro.includes(E.tagName.toLowerCase()))){const E={tag:R.tagName.toLowerCase(),props:await Uc(R.getAttributeNames().reduce((I,C)=>({...I,[C]:R.getAttribute(C)}),{})),innerHTML:R.innerHTML};let L=1,P=Gc(E);for(;P&&b.find(I=>I._d===P);)P=`${P}:${L++}`;E._d=P||void 0,b.push(E),c.elMap[R.getAttribute("data-hid")||zu(E)]=R}}}c.pendingSideEffects={...c.sideEffects||{}},c.sideEffects={};function f(y,S,b){const R=`${y}:${S}`;c.sideEffects[R]=b,delete c.pendingSideEffects[R]}function d({id:y,$el:S,tag:b}){const R=b.tag.endsWith("Attrs");c.elMap[y]=S,R||(["textContent","innerHTML"].forEach(E=>{b[E]&&b[E]!==S[E]&&(S[E]=b[E])}),f(y,"el",()=>{var E;(E=c.elMap[y])==null||E.remove(),delete c.elMap[y]}));for(const[E,L]of Object.entries(b._eventHandlers||{}))S.getAttribute(`data-${E}`)!==""&&((b.tag==="bodyAttrs"?o.defaultView:S).addEventListener(E.replace("on",""),L.bind(S)),S.setAttribute(`data-${E}`,""));Object.entries(b.props).forEach(([E,L])=>{const P=`attr:${E}`;if(E==="class")for(const I of(L||"").split(" ").filter(Boolean))R&&f(y,`${P}:${I}`,()=>S.classList.remove(I)),!S.classList.contains(I)&&S.classList.add(I);else if(E==="style")for(const I of(L||"").split(";").filter(Boolean)){const[C,...N]=I.split(":").map(U=>U.trim());f(y,`${P}:${I}:${C}`,()=>{S.style.removeProperty(C)}),S.style.setProperty(C,N.join(":"))}else S.getAttribute(E)!==L&&S.setAttribute(E,L===!0?"":String(L)),R&&f(y,P,()=>S.removeAttribute(E))})}const h=[],v={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of a){const{tag:S,shouldRender:b,id:R}=y;if(b){if(S.tag==="title"){o.title=S.textContent;continue}y.$el=y.$el||c.elMap[R],y.$el?d(y):ro.includes(S.tag)&&h.push(y)}}for(const y of h){const S=y.tag.tagPosition||"head";y.$el=o.createElement(y.tag.tag),d(y),v[S]=v[S]||o.createDocumentFragment(),v[S].appendChild(y.$el)}for(const y of a)await n.hooks.callHook("dom:renderTag",y,o,f);v.head&&o.head.appendChild(v.head),v.bodyOpen&&o.body.insertBefore(v.bodyOpen,o.body.firstChild),v.bodyClose&&o.body.appendChild(v.bodyClose),Object.values(c.pendingSideEffects).forEach(y=>y()),n._dom=c,n.dirty=!1,await n.hooks.callHook("dom:rendered",{renders:a})}async function l0(n,r={}){const o=r.delayFn||(i=>setTimeout(i,10));return n._domUpdatePromise=n._domUpdatePromise||new Promise(i=>o(async()=>{await f0(n,r),delete n._domUpdatePromise,i()}))}function h0(n){return r=>{var i,a;const o=((a=(i=r.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:a.innerHTML)||!1;return o&&r.push(JSON.parse(o)),{mode:"client",hooks:{"entries:updated":function(c){l0(c,n)}}}}}const d0=["templateParams","htmlAttrs","bodyAttrs"],p0={hooks:{"tag:normalise":function({tag:n}){["hid","vmid","key"].forEach(i=>{n.props[i]&&(n.key=n.props[i],delete n.props[i])});const o=Gc(n)||(n.key?`${n.tag}:${n.key}`:!1);o&&(n._d=o)},"tags:resolve":function(n){const r={};n.tags.forEach(i=>{const a=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,c=r[a];if(c){let d=i==null?void 0:i.tagDuplicateStrategy;if(!d&&d0.includes(i.tag)&&(d="merge"),d==="merge"){const h=c.props;["class","style"].forEach(v=>{h[v]&&(i.props[v]?(v==="style"&&!h[v].endsWith(";")&&(h[v]+=";"),i.props[v]=`${h[v]} ${i.props[v]}`):i.props[v]=h[v])}),r[a].props={...h,...i.props};return}else if(i._e===c._e){c._duped=c._duped||[],i._d=`${c._d}:${c._duped.length+1}`,c._duped.push(i);return}else if(ao(i)>ao(c))return}const f=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(ro.includes(i.tag)&&f===0){delete r[a];return}r[a]=i});const o=[];Object.values(r).forEach(i=>{const a=i._duped;delete i._duped,o.push(i),a&&o.push(...a)}),n.tags=o,n.tags=n.tags.filter(i=>!(i.tag==="meta"&&(i.props.name||i.props.property)&&!i.props.content))}}},g0={mode:"server",hooks:{"tags:resolve":function(n){const r={};n.tags.filter(o=>["titleTemplate","templateParams","title"].includes(o.tag)&&o._m==="server").forEach(o=>{r[o.tag]=o.tag.startsWith("title")?o.textContent:o.props}),Object.keys(r).length&&n.tags.push({tag:"script",innerHTML:JSON.stringify(r),props:{id:"unhead:payload",type:"application/json"}})}}},v0=["script","link","bodyAttrs"],m0=n=>({hooks:{"tags:resolve":function(r){for(const o of r.tags.filter(i=>v0.includes(i.tag)))Object.entries(o.props).forEach(([i,a])=>{i.startsWith("on")&&typeof a=="function"&&(n.ssr&&_u.includes(i)?o.props[i]=`this.dataset.${i}fired = true`:delete o.props[i],o._eventHandlers=o._eventHandlers||{},o._eventHandlers[i]=a)}),n.ssr&&o._eventHandlers&&(o.props.src||o.props.href)&&(o.key=o.key||ts(o.props.src||o.props.href))},"dom:renderTag":function({$el:r,tag:o}){var i,a;for(const c of Object.keys((r==null?void 0:r.dataset)||{}).filter(f=>_u.some(d=>`${d}fired`===f))){const f=c.replace("fired","");(a=(i=o._eventHandlers)==null?void 0:i[f])==null||a.call(r,new Event(f.replace("on","")))}}}}),y0=["link","style","script","noscript"],S0={hooks:{"tag:normalise":({tag:n})=>{n.key&&y0.includes(n.tag)&&(n.props["data-hid"]=n._h=ts(n.key))}}},x0={hooks:{"tags:resolve":n=>{const r=o=>{var i;return(i=n.tags.find(a=>a._d===o))==null?void 0:i._p};for(const{prefix:o,offset:i}of c0)for(const a of n.tags.filter(c=>typeof c.tagPriority=="string"&&c.tagPriority.startsWith(o))){const c=r(a.tagPriority.replace(o,""));typeof c<"u"&&(a._p=c+i)}n.tags.sort((o,i)=>o._p-i._p).sort((o,i)=>ao(o)-ao(i))}}},b0={meta:"content",link:"href",htmlAttrs:"lang"},E0=n=>({hooks:{"tags:resolve":r=>{var d;const{tags:o}=r,i=(d=o.find(h=>h.tag==="title"))==null?void 0:d.textContent,a=o.findIndex(h=>h.tag==="templateParams"),c=a!==-1?o[a].props:{},f=c.separator||"|";delete c.separator,c.pageTitle=oo(c.pageTitle||i||"",c,f);for(const h of o.filter(v=>v.processTemplateParams!==!1)){const v=b0[h.tag];v&&typeof h.props[v]=="string"?h.props[v]=oo(h.props[v],c,f):(h.processTemplateParams===!0||["titleTemplate","title"].includes(h.tag))&&["innerHTML","textContent"].forEach(g=>{typeof h[g]=="string"&&(h[g]=oo(h[g],c,f))})}n._templateParams=c,n._separator=f,r.tags=o.filter(h=>h.tag!=="templateParams")}}}),T0={hooks:{"tags:resolve":n=>{const{tags:r}=n;let o=r.findIndex(a=>a.tag==="titleTemplate");const i=r.findIndex(a=>a.tag==="title");if(i!==-1&&o!==-1){const a=Yu(r[o].textContent,r[i].textContent);a!==null?r[i].textContent=a||r[i].textContent:delete r[i]}else if(o!==-1){const a=Yu(r[o].textContent);a!==null&&(r[o].textContent=a,r[o].tag="title",o=-1)}o!==-1&&delete r[o],n.tags=r.filter(Boolean)}}},L0={hooks:{"tags:afterResolve":function(n){for(const r of n.tags)typeof r.innerHTML=="string"&&(r.innerHTML&&["application/ld+json","application/json"].includes(r.props.type)?r.innerHTML=r.innerHTML.replace(/</g,"\\u003C"):r.innerHTML=r.innerHTML.replace(new RegExp(`</${r.tag}`,"g"),`<\\/${r.tag}`))}}};let Vc;function R0(n={}){const r=w0(n);return r.use(h0()),Vc=r}function Qu(n,r){return!n||n==="server"&&r||n==="client"&&!r}function w0(n={}){const r=qm();r.addHooks(n.hooks||{}),n.document=n.document||(o0?document:void 0);const o=!n.document,i=()=>{d.dirty=!0,r.callHook("entries:updated",d)};let a=0,c=[];const f=[],d={plugins:f,dirty:!1,resolvedOptions:n,hooks:r,headEntries(){return c},use(h){const v=typeof h=="function"?h(d):h;(!v.key||!f.some(g=>g.key===v.key))&&(f.push(v),Qu(v.mode,o)&&r.addHooks(v.hooks||{}))},push(h,v){v==null||delete v.head;const g={_i:a++,input:h,...v};return Qu(g.mode,o)&&(c.push(g),i()),{dispose(){c=c.filter(y=>y._i!==g._i),r.callHook("entries:updated",d),i()},patch(y){c=c.map(S=>(S._i===g._i&&(S.input=g.input=y),S)),i()}}},async resolveTags(){const h={tags:[],entries:[...c]};await r.callHook("entries:resolve",h);for(const v of h.entries){const g=v.resolvedInput||v.input;if(v.resolvedInput=await(v.transform?v.transform(g):g),v.resolvedInput)for(const y of await u0(v)){const S={tag:y,entry:v,resolvedOptions:d.resolvedOptions};await r.callHook("tag:normalise",S),h.tags.push(S.tag)}}return await r.callHook("tags:beforeResolve",h),await r.callHook("tags:resolve",h),await r.callHook("tags:afterResolve",h),h.tags},ssr:o};return[p0,g0,m0,S0,x0,E0,T0,L0,...(n==null?void 0:n.plugins)||[]].forEach(h=>d.use(h)),d.hooks.callHook("init",d),d}function A0(){return Vc}const Kc=dm.startsWith("3");function I0(n){return typeof n=="function"?n():pn(n)}function uo(n,r=""){if(n instanceof Promise)return n;const o=I0(n);return!n||!o?o:Array.isArray(o)?o.map(i=>uo(i,r)):typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,a])=>i==="titleTemplate"||i.startsWith("on")?[i,pn(a)]:[i,uo(a,i)])):o}const P0={hooks:{"entries:resolve":function(n){for(const r of n.entries)r.resolvedInput=uo(r.input)}}},jc="usehead";function O0(n){return{install(o){Kc&&(o.config.globalProperties.$unhead=n,o.config.globalProperties.$head=n,o.provide(jc,n))}}.install}function C0(n={}){n.domDelayFn=n.domDelayFn||(o=>Hn(()=>setTimeout(()=>o(),0)));const r=R0(n);return r.use(P0),r.install=O0(r),r}const Ju=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},qu="__unhead_injection_handler__";function M0(){if(qu in Ju)return Ju[qu]();const n=It(jc);return n||A0()}function D0(n,r={}){const o=r.head||M0();if(o)return o.ssr?o.push(n,r):F0(o,n,r)}function F0(n,r,o={}){const i=so(!1),a=so({});pm(()=>{a.value=i.value?{}:uo(r)});const c=n.push(a.value,o);return Qi(a,d=>{c.patch(d)}),Ic()&&(Pc(()=>{c.dispose()}),Oc(()=>{i.value=!0}),Cc(()=>{i.value=!1})),c}const H0={created(){let n=!1;if(Kc){const r=Ic();if(!r)return;const o=r.type;if(!o||!("head"in o))return;n=typeof o.head=="function"?()=>o.head.call(r.proxy):o.head}else{const r=this.$options.head;r&&(n=typeof r=="function"?()=>r.call(this):r)}n&&D0(n)}},B0="drag-scroller-disable",k0=(()=>{const n=new WeakMap;return{mounted(r,o){let i=!1;const{onlyX:a,onlyY:c,disablechild:f}=o.modifiers,d=o.value??{},h=new Event("scrollStart",{bubbles:!0}),v=new Event("scrollMoving",{bubbles:!0}),g=new Event("scrollEnd",{bubbles:!0});d.hideScrollbar===!0&&(r.style.overflow="hidden");const y=E=>{if(f)return E===r;for(;E&&E.parentNode;){if(E&&E!=null&&E.hasAttribute(B0))return!1;if(E===r)return!0;E=E.parentNode}return!1},S=E=>{i=y(E.target),r.dispatchEvent(h),i&&d!=null&&d.startScroll&&typeof(d==null?void 0:d.startScroll)=="function"&&d.startScroll(E)},b=E=>{r.dispatchEvent(g),i&&d!=null&&d.endScroll&&typeof(d==null?void 0:d.endScroll)=="function"&&d.endScroll(E),i=!1},R=E=>{if(!i)return!1;r.dispatchEvent(v),d!=null&&d.onScrolling&&typeof(d==null?void 0:d.onScrolling)=="function"&&d.onScrolling(E),E.stopPropagation&&E.stopPropagation(),E.preventDefault&&E.preventDefault(),E.cancelBubble=!0,E.returnValue=!1;const L=(d==null?void 0:d.speed)||1,P=d.reverseDirection?E.movementX*L:-E.movementX*L,I=d.reverseDirection?E.movementY*L:-E.movementY*L;a?r.scrollLeft+=P:(c||(r.scrollLeft+=P),r.scrollTop+=I)};n.set(r,{dragStart:S,dragEnd:b,drag:R}),r.addEventListener("pointerdown",S),addEventListener("pointerup",b),addEventListener("pointermove",R)},unmounted(r){const{dragStart:o,dragEnd:i,drag:a}=n.get(r);r.removeEventListener("pointerdown",o),removeEventListener("pointerup",i),removeEventListener("pointermove",a)}}})(),N0={install(n){n.directive("drag-scroller",k0)}},zc={bookmarkFilter:[{title:"All",value:"",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],breadcrumbs:[{group:"r",pks:"0",page:1}],q:"",topGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s"},{title:"Volumes",value:"v"},{title:"Issues",value:"c"},{title:"Folders",value:"f"},{title:"Story Arcs",value:"a"}],searchResultsLimit:100,settingsGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s",default:!0},{title:"Volumes",value:"v"}],orderBy:[{title:"Name",value:"sort_name",default:!0},{title:"Publish Date",value:"date"},{title:"Added Time",value:"created_at",reverse:!0},{title:"Last Read",value:"bookmark_updated_at",reverse:!0},{title:"Updated Time",value:"updated_at",reverse:!0},{title:"Page Count",value:"page_count",reverse:!0},{title:"File Size",value:"size",reverse:!0},{title:"Filename",value:"filename"},{title:"Critical Rating",value:"critical_rating",reverse:!0},{title:"Community Rating",value:"community_rating",reverse:!0},{title:"Age Rating",value:"age_rating"},{title:"Search Score",value:"search_score",reverse:!0},{title:"Story Arc Number",value:"story_arc_number"}],orderReverse:!1,vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"},dynamicCovers:!0,customCovers:!0,twentyFourHourTime:!1},$0={finishOnLastPage:!0,fitTo:[{title:"Fit to Screen",value:"S",default:!0},{title:"Fit to Width",value:"W"},{title:"Fit to Height",value:"H"},{title:"Original Size",value:"O"},{title:"",value:""}],readingDirection:[{title:"Left to Right",value:"ltr",default:!0},{title:"Right to Left",value:"rtl"},{title:"Top to Bottom",value:"ttb"},{title:"Bottom to Top",value:"btt"},{title:"",value:""}],readRtlInReverse:!1,twoPages:!1},W0={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Ie={browser:zc,reader:$0,websockets:W0},G0="modulepreload",U0=function(n){return window.CODEX.APP_PATH + "static"+"/"+n},ec={},Pt=function(r,o,i){let a=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),f=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));a=Promise.all(o.map(d=>{if(d=U0(d),d in ec)return;ec[d]=!0;const h=d.endsWith(".css"),v=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${v}`))return;const g=document.createElement("link");if(g.rel=h?"stylesheet":G0,h||(g.as="script",g.crossOrigin=""),g.href=d,f&&g.setAttribute("nonce",f),document.head.appendChild(g),h)return new Promise((y,S)=>{g.addEventListener("load",y),g.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${d}`)))})}))}return a.then(()=>r()).catch(c=>{const f=new Event("vite:preloadError",{cancelable:!0});if(f.payload=c,window.dispatchEvent(f),!f.defaultPrevented)throw c})};/*!
|
|
1
|
+
const __vite__fileDeps=["assets/admin-BH6uiYBb.js","assets/admin-drawer-panel-DsgLbfnD.js","assets/admin-drawer-panel-mne3FIj6.css","assets/settings-drawer-aTAAoX2A.js","assets/unauthorized-Ovy_BO5R.js","assets/change-password-dialog-B-Sd5U5p.js","assets/VTextField-BayL7C1D.js","assets/VDialog-DTWAoZBU.js","assets/VDialog-lQ13FnRR.css","assets/VSelectionControl-DXxRmssH.js","assets/VSelectionControl-BFq--28I.css","assets/VTextField-BssVoDhB.css","assets/change-password-dialog-0u6IJA87.css","assets/unauthorized-DWDO1s6-.css","assets/copy-to-clipboard-DoUvDJVx.js","assets/settings-drawer-nZ9HvKSZ.css","assets/VWindowItem-FBuIO_rT.js","assets/VWindowItem-ByIod57Y.css","assets/VSlideGroup-DYJ3EYZI.js","assets/VSlideGroup-Dk_1upHt.css","assets/admin-B8Bp2Uih.css","assets/browser-BVciW8XB.js","assets/VTable-BveGtxei.js","assets/VTable-DflzroDq.css","assets/VCheckbox-DUxuAZcY.js","assets/VCheckboxBtn-BTFFFGx3.js","assets/VCheckbox-CMKdyl0R.css","assets/pagination-toolbar-C8CSryCU.js","assets/VSelect-Bnhj5kBc.js","assets/VSelect-ARDhJiQK.css","assets/to-case-BCB751sX.js","assets/pagination-toolbar-BA9ifTed.css","assets/confirm-dialog-CYEBgtj5.js","assets/confirm-dialog-BmhedLCx.css","assets/VCombobox-CGyBgdqr.js","assets/filter-DS84uTvk.js","assets/VCombobox-BksEr4D_.css","assets/browser-DP9eEJ0M.css","assets/http-error-HtOe8jPa.js","assets/http-error-DKulXuTl.css","assets/reader-C5OTEQ7N.js","assets/VExpansionPanels-D4psrz4h.js","assets/VExpansionPanels-DsEXVcCv.css","assets/VRadioGroup-BY572TP-.js","assets/VRadioGroup-i2qP9Wu9.css","assets/reader-DOQuhDYO.css","assets/flag-tab-iJTJldQ1.js","assets/flag-tab-BNwbLfrN.css","assets/user-tab-Cdspo8ie.js","assets/relation-chips-C4LQSHRc.js","assets/relation-chips-Bsc-gUxE.css","assets/datetime-column-uaXWFgF_.js","assets/datetime-column-DeCthByU.css","assets/group-tab-DdmGE4gB.js","assets/group-tab-CBKuS3Iv.css","assets/library-tab-DLAJV6j2.js","assets/library-tab-BN0SfPcH.css","assets/task-tab-0t7ZJlwL.js","assets/task-tab-1XiWn9xP.css","assets/stats-tab-DL4J3pvZ.js","assets/stats-tab-B4yKuY0c.css"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
|
|
2
|
+
import{n as Hn,v as dm,i as It,u as pn,r as so,w as pm,a as Qi,g as Ic,o as Pc,b as Oc,c as Cc,s as Mc,d as gm,e as Dc,f as en,h as De,j as Fc,p as sr,k as tn,H as Wt,l as Ji,m as Ui,C as ar,q as vm,t as qi,x as Hc,y as mm,z as ym,A as Sm,B as Vi,D as xm,E as es,F as Bc,G as kc,I as bm,J as Nu,K as no,L as Em,M as Tm,N as Lm,O as Rm,P as wm,Q as Nc,R as Am,S as or,T as Im,U as Pm,V as $u,W as Om,_ as Cm,X as Mm,Y as Dm,Z as Fm,$ as Hm,a0 as Bm,a1 as Wu,a2 as Mn,a3 as km,a4 as Nm,a5 as $m,a6 as Wm,a7 as Gm,a8 as Um,a9 as Vm,aa as Km,ab as Gu,ac as Uu,ad as Vu,ae as Ku,af as ju,ag as jm,ah as zm,ai as Ym}from"./admin-drawer-panel-DsgLbfnD.js";function Ki(n,r={},o){for(const i in n){const a=n[i],c=o?`${o}:${i}`:i;typeof a=="object"&&a!==null?Ki(a,r,c):typeof a=="function"&&(r[c]=a)}return r}const Zm={run:n=>n()},Xm=()=>Zm,$c=typeof console.createTask<"u"?console.createTask:Xm;function _m(n,r){const o=r.shift(),i=$c(o);return n.reduce((a,c)=>a.then(()=>i.run(()=>c(...r))),Promise.resolve())}function Qm(n,r){const o=r.shift(),i=$c(o);return Promise.all(n.map(a=>i.run(()=>a(...r))))}function Hi(n,r){for(const o of[...n])o(r)}class Jm{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(r,o,i={}){if(!r||typeof o!="function")return()=>{};const a=r;let c;for(;this._deprecatedHooks[r];)c=this._deprecatedHooks[r],r=c.to;if(c&&!i.allowDeprecated){let f=c.message;f||(f=`${a} hook has been deprecated`+(c.to?`, please use ${c.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(f)||(console.warn(f),this._deprecatedMessages.add(f))}if(!o.name)try{Object.defineProperty(o,"name",{get:()=>"_"+r.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[r]=this._hooks[r]||[],this._hooks[r].push(o),()=>{o&&(this.removeHook(r,o),o=void 0)}}hookOnce(r,o){let i,a=(...c)=>(typeof i=="function"&&i(),i=void 0,a=void 0,o(...c));return i=this.hook(r,a),i}removeHook(r,o){if(this._hooks[r]){const i=this._hooks[r].indexOf(o);i!==-1&&this._hooks[r].splice(i,1),this._hooks[r].length===0&&delete this._hooks[r]}}deprecateHook(r,o){this._deprecatedHooks[r]=typeof o=="string"?{to:o}:o;const i=this._hooks[r]||[];delete this._hooks[r];for(const a of i)this.hook(r,a)}deprecateHooks(r){Object.assign(this._deprecatedHooks,r);for(const o in r)this.deprecateHook(o,r[o])}addHooks(r){const o=Ki(r),i=Object.keys(o).map(a=>this.hook(a,o[a]));return()=>{for(const a of i.splice(0,i.length))a()}}removeHooks(r){const o=Ki(r);for(const i in o)this.removeHook(i,o[i])}removeAllHooks(){for(const r in this._hooks)delete this._hooks[r]}callHook(r,...o){return o.unshift(r),this.callHookWith(_m,r,...o)}callHookParallel(r,...o){return o.unshift(r),this.callHookWith(Qm,r,...o)}callHookWith(r,o,...i){const a=this._before||this._after?{name:o,args:i,context:{}}:void 0;this._before&&Hi(this._before,a);const c=r(o in this._hooks?[...this._hooks[o]]:[],i);return c instanceof Promise?c.finally(()=>{this._after&&a&&Hi(this._after,a)}):(this._after&&a&&Hi(this._after,a),c)}beforeEach(r){return this._before=this._before||[],this._before.push(r),()=>{if(this._before!==void 0){const o=this._before.indexOf(r);o!==-1&&this._before.splice(o,1)}}}afterEach(r){return this._after=this._after||[],this._after.push(r),()=>{if(this._after!==void 0){const o=this._after.indexOf(r);o!==-1&&this._after.splice(o,1)}}}}function qm(){return new Jm}function e0(n){return Array.isArray(n)?n:[n]}const t0=["title","titleTemplate","script","style","noscript"],ro=["base","meta","link","style","script","noscript"],n0=["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"],r0=["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"],Wc=["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"],o0=typeof window<"u";function ts(n){let r=9;for(let o=0;o<n.length;)r=Math.imul(r^n.charCodeAt(o++),9**9);return((r^r>>>9)+65536).toString(16).substring(1,8).toLowerCase()}function zu(n){return n._h||ts(n._d?n._d:`${n.tag}:${n.textContent||n.innerHTML||""}:${Object.entries(n.props).map(([r,o])=>`${r}:${String(o)}`).join(",")}`)}function Gc(n,r){const{props:o,tag:i}=n;if(r0.includes(i))return i;if(i==="link"&&o.rel==="canonical")return"canonical";if(o.charset)return"charset";const a=["id"];i==="meta"&&a.push("name","property","http-equiv");for(const c of a)if(typeof o[c]<"u"){const f=String(o[c]);return`${i}:${c}:${f}`}return!1}function Yu(n,r){return n==null?r||null:typeof n=="function"?n(r):n}async function i0(n,r,o){const i={tag:n,props:await Uc(typeof r=="object"&&typeof r!="function"&&!(r instanceof Promise)?{...r}:{[["script","noscript","style"].includes(n)?"innerHTML":"textContent"]:r},["templateParams","titleTemplate"].includes(n))};return Wc.forEach(a=>{const c=typeof i.props[a]<"u"?i.props[a]:o[a];typeof c<"u"&&((!["innerHTML","textContent","children"].includes(a)||t0.includes(i.tag))&&(i[a==="children"?"innerHTML":a]=c),delete i.props[a])}),i.props.body&&(i.tagPosition="bodyClose",delete i.props.body),i.tag==="script"&&typeof i.innerHTML=="object"&&(i.innerHTML=JSON.stringify(i.innerHTML),i.props.type=i.props.type||"application/json"),Array.isArray(i.props.content)?i.props.content.map(a=>({...i,props:{...i.props,content:a}})):i}function s0(n,r){var i;const o=n==="class"?" ":";";return typeof r=="object"&&!Array.isArray(r)&&(r=Object.entries(r).filter(([,a])=>a).map(([a,c])=>n==="style"?`${a}:${c}`:a)),(i=String(Array.isArray(r)?r.join(o):r))==null?void 0:i.split(o).filter(a=>a.trim()).filter(Boolean).join(o)}async function Uc(n,r){for(const o of Object.keys(n)){if(["class","style"].includes(o)){n[o]=s0(o,n[o]);continue}if(n[o]instanceof Promise&&(n[o]=await n[o]),!r&&!Wc.includes(o)){const i=String(n[o]),a=o.startsWith("data-");i==="true"||i===""?n[o]=a?"true":!0:n[o]||(a&&i==="false"?n[o]="false":delete n[o])}}return n}const a0=10;async function u0(n){const r=[];return Object.entries(n.resolvedInput).filter(([o,i])=>typeof i<"u"&&n0.includes(o)).forEach(([o,i])=>{const a=e0(i);r.push(...a.map(c=>i0(o,c,n)).flat())}),(await Promise.all(r)).flat().filter(Boolean).map((o,i)=>(o._e=n._i,n.mode&&(o._m=n.mode),o._p=(n._i<<a0)+i,o))}const Zu={base:-10,title:10},Xu={critical:-80,high:-10,low:20};function ao(n){let r=100;const o=n.tagPriority;return typeof o=="number"?o:(n.tag==="meta"?(n.props["http-equiv"]==="content-security-policy"&&(r=-30),n.props.charset&&(r=-20),n.props.name==="viewport"&&(r=-15)):n.tag==="link"&&n.props.rel==="preconnect"?r=20:n.tag in Zu&&(r=Zu[n.tag]),typeof o=="string"&&o in Xu?r+Xu[o]:r)}const c0=[{prefix:"before:",offset:-1},{prefix:"after:",offset:1}],_u=["onload","onerror","onabort","onprogress","onloadstart"],Qt="%separator";function oo(n,r,o){if(typeof n!="string"||!n.includes("%"))return n;function i(f){let d;return["s","pageTitle"].includes(f)?d=r.pageTitle:f.includes(".")?d=f.split(".").reduce((h,v)=>h&&h[v]||void 0,r):d=r[f],typeof d<"u"?(d||"").replace(/"/g,'\\"'):!1}let a=n;try{a=decodeURI(n)}catch{}return(a.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(f=>{const d=i(f.slice(1));typeof d=="string"&&(n=n.replace(new RegExp(`\\${f}(\\W|$)`,"g"),(h,v)=>`${d}${v}`).trim())}),n.includes(Qt)&&(n.endsWith(Qt)&&(n=n.slice(0,-Qt.length).trim()),n.startsWith(Qt)&&(n=n.slice(Qt.length).trim()),n=n.replace(new RegExp(`\\${Qt}\\s*\\${Qt}`,"g"),Qt),n=oo(n,{separator:o},o)),n}async function f0(n,r={}){var g;const o=r.document||n.resolvedOptions.document;if(!o||!n.dirty)return;const i={shouldRender:!0,tags:[]};if(await n.hooks.callHook("dom:beforeRender",i),!i.shouldRender)return;const a=(await n.resolveTags()).map(y=>({tag:y,id:ro.includes(y.tag)?zu(y):y.tag,shouldRender:!0}));let c=n._dom;if(!c){c={elMap:{htmlAttrs:o.documentElement,bodyAttrs:o.body}};for(const y of["body","head"]){const S=(g=o[y])==null?void 0:g.children,b=[];for(const R of[...S].filter(E=>ro.includes(E.tagName.toLowerCase()))){const E={tag:R.tagName.toLowerCase(),props:await Uc(R.getAttributeNames().reduce((I,C)=>({...I,[C]:R.getAttribute(C)}),{})),innerHTML:R.innerHTML};let L=1,P=Gc(E);for(;P&&b.find(I=>I._d===P);)P=`${P}:${L++}`;E._d=P||void 0,b.push(E),c.elMap[R.getAttribute("data-hid")||zu(E)]=R}}}c.pendingSideEffects={...c.sideEffects||{}},c.sideEffects={};function f(y,S,b){const R=`${y}:${S}`;c.sideEffects[R]=b,delete c.pendingSideEffects[R]}function d({id:y,$el:S,tag:b}){const R=b.tag.endsWith("Attrs");c.elMap[y]=S,R||(["textContent","innerHTML"].forEach(E=>{b[E]&&b[E]!==S[E]&&(S[E]=b[E])}),f(y,"el",()=>{var E;(E=c.elMap[y])==null||E.remove(),delete c.elMap[y]}));for(const[E,L]of Object.entries(b._eventHandlers||{}))S.getAttribute(`data-${E}`)!==""&&((b.tag==="bodyAttrs"?o.defaultView:S).addEventListener(E.replace("on",""),L.bind(S)),S.setAttribute(`data-${E}`,""));Object.entries(b.props).forEach(([E,L])=>{const P=`attr:${E}`;if(E==="class")for(const I of(L||"").split(" ").filter(Boolean))R&&f(y,`${P}:${I}`,()=>S.classList.remove(I)),!S.classList.contains(I)&&S.classList.add(I);else if(E==="style")for(const I of(L||"").split(";").filter(Boolean)){const[C,...N]=I.split(":").map(U=>U.trim());f(y,`${P}:${I}:${C}`,()=>{S.style.removeProperty(C)}),S.style.setProperty(C,N.join(":"))}else S.getAttribute(E)!==L&&S.setAttribute(E,L===!0?"":String(L)),R&&f(y,P,()=>S.removeAttribute(E))})}const h=[],v={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const y of a){const{tag:S,shouldRender:b,id:R}=y;if(b){if(S.tag==="title"){o.title=S.textContent;continue}y.$el=y.$el||c.elMap[R],y.$el?d(y):ro.includes(S.tag)&&h.push(y)}}for(const y of h){const S=y.tag.tagPosition||"head";y.$el=o.createElement(y.tag.tag),d(y),v[S]=v[S]||o.createDocumentFragment(),v[S].appendChild(y.$el)}for(const y of a)await n.hooks.callHook("dom:renderTag",y,o,f);v.head&&o.head.appendChild(v.head),v.bodyOpen&&o.body.insertBefore(v.bodyOpen,o.body.firstChild),v.bodyClose&&o.body.appendChild(v.bodyClose),Object.values(c.pendingSideEffects).forEach(y=>y()),n._dom=c,n.dirty=!1,await n.hooks.callHook("dom:rendered",{renders:a})}async function l0(n,r={}){const o=r.delayFn||(i=>setTimeout(i,10));return n._domUpdatePromise=n._domUpdatePromise||new Promise(i=>o(async()=>{await f0(n,r),delete n._domUpdatePromise,i()}))}function h0(n){return r=>{var i,a;const o=((a=(i=r.resolvedOptions.document)==null?void 0:i.head.querySelector('script[id="unhead:payload"]'))==null?void 0:a.innerHTML)||!1;return o&&r.push(JSON.parse(o)),{mode:"client",hooks:{"entries:updated":function(c){l0(c,n)}}}}}const d0=["templateParams","htmlAttrs","bodyAttrs"],p0={hooks:{"tag:normalise":function({tag:n}){["hid","vmid","key"].forEach(i=>{n.props[i]&&(n.key=n.props[i],delete n.props[i])});const o=Gc(n)||(n.key?`${n.tag}:${n.key}`:!1);o&&(n._d=o)},"tags:resolve":function(n){const r={};n.tags.forEach(i=>{const a=(i.key?`${i.tag}:${i.key}`:i._d)||i._p,c=r[a];if(c){let d=i==null?void 0:i.tagDuplicateStrategy;if(!d&&d0.includes(i.tag)&&(d="merge"),d==="merge"){const h=c.props;["class","style"].forEach(v=>{h[v]&&(i.props[v]?(v==="style"&&!h[v].endsWith(";")&&(h[v]+=";"),i.props[v]=`${h[v]} ${i.props[v]}`):i.props[v]=h[v])}),r[a].props={...h,...i.props};return}else if(i._e===c._e){c._duped=c._duped||[],i._d=`${c._d}:${c._duped.length+1}`,c._duped.push(i);return}else if(ao(i)>ao(c))return}const f=Object.keys(i.props).length+(i.innerHTML?1:0)+(i.textContent?1:0);if(ro.includes(i.tag)&&f===0){delete r[a];return}r[a]=i});const o=[];Object.values(r).forEach(i=>{const a=i._duped;delete i._duped,o.push(i),a&&o.push(...a)}),n.tags=o,n.tags=n.tags.filter(i=>!(i.tag==="meta"&&(i.props.name||i.props.property)&&!i.props.content))}}},g0={mode:"server",hooks:{"tags:resolve":function(n){const r={};n.tags.filter(o=>["titleTemplate","templateParams","title"].includes(o.tag)&&o._m==="server").forEach(o=>{r[o.tag]=o.tag.startsWith("title")?o.textContent:o.props}),Object.keys(r).length&&n.tags.push({tag:"script",innerHTML:JSON.stringify(r),props:{id:"unhead:payload",type:"application/json"}})}}},v0=["script","link","bodyAttrs"],m0=n=>({hooks:{"tags:resolve":function(r){for(const o of r.tags.filter(i=>v0.includes(i.tag)))Object.entries(o.props).forEach(([i,a])=>{i.startsWith("on")&&typeof a=="function"&&(n.ssr&&_u.includes(i)?o.props[i]=`this.dataset.${i}fired = true`:delete o.props[i],o._eventHandlers=o._eventHandlers||{},o._eventHandlers[i]=a)}),n.ssr&&o._eventHandlers&&(o.props.src||o.props.href)&&(o.key=o.key||ts(o.props.src||o.props.href))},"dom:renderTag":function({$el:r,tag:o}){var i,a;for(const c of Object.keys((r==null?void 0:r.dataset)||{}).filter(f=>_u.some(d=>`${d}fired`===f))){const f=c.replace("fired","");(a=(i=o._eventHandlers)==null?void 0:i[f])==null||a.call(r,new Event(f.replace("on","")))}}}}),y0=["link","style","script","noscript"],S0={hooks:{"tag:normalise":({tag:n})=>{n.key&&y0.includes(n.tag)&&(n.props["data-hid"]=n._h=ts(n.key))}}},x0={hooks:{"tags:resolve":n=>{const r=o=>{var i;return(i=n.tags.find(a=>a._d===o))==null?void 0:i._p};for(const{prefix:o,offset:i}of c0)for(const a of n.tags.filter(c=>typeof c.tagPriority=="string"&&c.tagPriority.startsWith(o))){const c=r(a.tagPriority.replace(o,""));typeof c<"u"&&(a._p=c+i)}n.tags.sort((o,i)=>o._p-i._p).sort((o,i)=>ao(o)-ao(i))}}},b0={meta:"content",link:"href",htmlAttrs:"lang"},E0=n=>({hooks:{"tags:resolve":r=>{var d;const{tags:o}=r,i=(d=o.find(h=>h.tag==="title"))==null?void 0:d.textContent,a=o.findIndex(h=>h.tag==="templateParams"),c=a!==-1?o[a].props:{},f=c.separator||"|";delete c.separator,c.pageTitle=oo(c.pageTitle||i||"",c,f);for(const h of o.filter(v=>v.processTemplateParams!==!1)){const v=b0[h.tag];v&&typeof h.props[v]=="string"?h.props[v]=oo(h.props[v],c,f):(h.processTemplateParams===!0||["titleTemplate","title"].includes(h.tag))&&["innerHTML","textContent"].forEach(g=>{typeof h[g]=="string"&&(h[g]=oo(h[g],c,f))})}n._templateParams=c,n._separator=f,r.tags=o.filter(h=>h.tag!=="templateParams")}}}),T0={hooks:{"tags:resolve":n=>{const{tags:r}=n;let o=r.findIndex(a=>a.tag==="titleTemplate");const i=r.findIndex(a=>a.tag==="title");if(i!==-1&&o!==-1){const a=Yu(r[o].textContent,r[i].textContent);a!==null?r[i].textContent=a||r[i].textContent:delete r[i]}else if(o!==-1){const a=Yu(r[o].textContent);a!==null&&(r[o].textContent=a,r[o].tag="title",o=-1)}o!==-1&&delete r[o],n.tags=r.filter(Boolean)}}},L0={hooks:{"tags:afterResolve":function(n){for(const r of n.tags)typeof r.innerHTML=="string"&&(r.innerHTML&&["application/ld+json","application/json"].includes(r.props.type)?r.innerHTML=r.innerHTML.replace(/</g,"\\u003C"):r.innerHTML=r.innerHTML.replace(new RegExp(`</${r.tag}`,"g"),`<\\/${r.tag}`))}}};let Vc;function R0(n={}){const r=w0(n);return r.use(h0()),Vc=r}function Qu(n,r){return!n||n==="server"&&r||n==="client"&&!r}function w0(n={}){const r=qm();r.addHooks(n.hooks||{}),n.document=n.document||(o0?document:void 0);const o=!n.document,i=()=>{d.dirty=!0,r.callHook("entries:updated",d)};let a=0,c=[];const f=[],d={plugins:f,dirty:!1,resolvedOptions:n,hooks:r,headEntries(){return c},use(h){const v=typeof h=="function"?h(d):h;(!v.key||!f.some(g=>g.key===v.key))&&(f.push(v),Qu(v.mode,o)&&r.addHooks(v.hooks||{}))},push(h,v){v==null||delete v.head;const g={_i:a++,input:h,...v};return Qu(g.mode,o)&&(c.push(g),i()),{dispose(){c=c.filter(y=>y._i!==g._i),r.callHook("entries:updated",d),i()},patch(y){c=c.map(S=>(S._i===g._i&&(S.input=g.input=y),S)),i()}}},async resolveTags(){const h={tags:[],entries:[...c]};await r.callHook("entries:resolve",h);for(const v of h.entries){const g=v.resolvedInput||v.input;if(v.resolvedInput=await(v.transform?v.transform(g):g),v.resolvedInput)for(const y of await u0(v)){const S={tag:y,entry:v,resolvedOptions:d.resolvedOptions};await r.callHook("tag:normalise",S),h.tags.push(S.tag)}}return await r.callHook("tags:beforeResolve",h),await r.callHook("tags:resolve",h),await r.callHook("tags:afterResolve",h),h.tags},ssr:o};return[p0,g0,m0,S0,x0,E0,T0,L0,...(n==null?void 0:n.plugins)||[]].forEach(h=>d.use(h)),d.hooks.callHook("init",d),d}function A0(){return Vc}const Kc=dm.startsWith("3");function I0(n){return typeof n=="function"?n():pn(n)}function uo(n,r=""){if(n instanceof Promise)return n;const o=I0(n);return!n||!o?o:Array.isArray(o)?o.map(i=>uo(i,r)):typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,a])=>i==="titleTemplate"||i.startsWith("on")?[i,pn(a)]:[i,uo(a,i)])):o}const P0={hooks:{"entries:resolve":function(n){for(const r of n.entries)r.resolvedInput=uo(r.input)}}},jc="usehead";function O0(n){return{install(o){Kc&&(o.config.globalProperties.$unhead=n,o.config.globalProperties.$head=n,o.provide(jc,n))}}.install}function C0(n={}){n.domDelayFn=n.domDelayFn||(o=>Hn(()=>setTimeout(()=>o(),0)));const r=R0(n);return r.use(P0),r.install=O0(r),r}const Ju=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},qu="__unhead_injection_handler__";function M0(){if(qu in Ju)return Ju[qu]();const n=It(jc);return n||A0()}function D0(n,r={}){const o=r.head||M0();if(o)return o.ssr?o.push(n,r):F0(o,n,r)}function F0(n,r,o={}){const i=so(!1),a=so({});pm(()=>{a.value=i.value?{}:uo(r)});const c=n.push(a.value,o);return Qi(a,d=>{c.patch(d)}),Ic()&&(Pc(()=>{c.dispose()}),Oc(()=>{i.value=!0}),Cc(()=>{i.value=!1})),c}const H0={created(){let n=!1;if(Kc){const r=Ic();if(!r)return;const o=r.type;if(!o||!("head"in o))return;n=typeof o.head=="function"?()=>o.head.call(r.proxy):o.head}else{const r=this.$options.head;r&&(n=typeof r=="function"?()=>r.call(this):r)}n&&D0(n)}},B0="drag-scroller-disable",k0=(()=>{const n=new WeakMap;return{mounted(r,o){let i=!1;const{onlyX:a,onlyY:c,disablechild:f}=o.modifiers,d=o.value??{},h=new Event("scrollStart",{bubbles:!0}),v=new Event("scrollMoving",{bubbles:!0}),g=new Event("scrollEnd",{bubbles:!0});d.hideScrollbar===!0&&(r.style.overflow="hidden");const y=E=>{if(f)return E===r;for(;E&&E.parentNode;){if(E&&E!=null&&E.hasAttribute(B0))return!1;if(E===r)return!0;E=E.parentNode}return!1},S=E=>{i=y(E.target),r.dispatchEvent(h),i&&d!=null&&d.startScroll&&typeof(d==null?void 0:d.startScroll)=="function"&&d.startScroll(E)},b=E=>{r.dispatchEvent(g),i&&d!=null&&d.endScroll&&typeof(d==null?void 0:d.endScroll)=="function"&&d.endScroll(E),i=!1},R=E=>{if(!i)return!1;r.dispatchEvent(v),d!=null&&d.onScrolling&&typeof(d==null?void 0:d.onScrolling)=="function"&&d.onScrolling(E),E.stopPropagation&&E.stopPropagation(),E.preventDefault&&E.preventDefault(),E.cancelBubble=!0,E.returnValue=!1;const L=(d==null?void 0:d.speed)||1,P=d.reverseDirection?E.movementX*L:-E.movementX*L,I=d.reverseDirection?E.movementY*L:-E.movementY*L;a?r.scrollLeft+=P:(c||(r.scrollLeft+=P),r.scrollTop+=I)};n.set(r,{dragStart:S,dragEnd:b,drag:R}),r.addEventListener("pointerdown",S),addEventListener("pointerup",b),addEventListener("pointermove",R)},unmounted(r){const{dragStart:o,dragEnd:i,drag:a}=n.get(r);r.removeEventListener("pointerdown",o),removeEventListener("pointerup",i),removeEventListener("pointermove",a)}}})(),N0={install(n){n.directive("drag-scroller",k0)}},zc={bookmarkFilter:[{title:"All",value:"",default:!0},{title:"Unread",value:"UNREAD"},{title:"In Progress",value:"IN_PROGRESS"},{title:"Read",value:"READ"}],breadcrumbs:[{group:"r",pks:"0",page:1}],q:"",topGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s"},{title:"Volumes",value:"v"},{title:"Issues",value:"c"},{title:"Folders",value:"f"},{title:"Story Arcs",value:"a"}],searchResultsLimit:100,settingsGroup:[{title:"Publishers",value:"p",default:!0},{title:"Imprints",value:"i"},{title:"Series",value:"s",default:!0},{title:"Volumes",value:"v"}],orderBy:[{title:"Name",value:"sort_name",default:!0},{title:"Publish Date",value:"date"},{title:"Added Time",value:"created_at",reverse:!0},{title:"Last Read",value:"bookmark_updated_at",reverse:!0},{title:"Updated Time",value:"updated_at",reverse:!0},{title:"Page Count",value:"page_count",reverse:!0},{title:"File Size",value:"size",reverse:!0},{title:"Filename",value:"filename"},{title:"Critical Rating",value:"critical_rating",reverse:!0},{title:"Community Rating",value:"community_rating",reverse:!0},{title:"Age Rating",value:"age_rating"},{title:"Search Score",value:"search_score",reverse:!0},{title:"Story Arc Number",value:"story_arc_number"}],orderReverse:!1,vuetifyNullCode:-1,groupNames:{p:"Publishers",i:"Imprints",s:"Series",v:"Volumes",c:"Issues",f:"Folders",a:"Story Arcs"},identifierTypes:{comicvine:"Comic Vine",comixology:"Comixology",asin:"Amazon",gtin:"GTIN",isbn:"ISBN",upc:"UPC"},dynamicCovers:!0,customCovers:!0,twentyFourHourTime:!1},$0={finishOnLastPage:!0,fitTo:[{title:"Fit to Screen",value:"S",default:!0},{title:"Fit to Width",value:"W"},{title:"Fit to Height",value:"H"},{title:"Original Size",value:"O"},{title:"",value:""}],readingDirection:[{title:"Left to Right",value:"ltr",default:!0},{title:"Right to Left",value:"rtl"},{title:"Top to Bottom",value:"ttb"},{title:"Bottom to Top",value:"btt"},{title:"",value:""}],readRtlInReverse:!1,twoPages:!1},W0={LIBRARY_CHANGED:"LIBRARY_CHANGED",LIBRARIAN_STATUS:"LIBRARIAN_STATUS",FAILED_IMPORTS:"FAILED_IMPORTS"},Ie={browser:zc,reader:$0,websockets:W0},G0="modulepreload",U0=function(n){return window.CODEX.APP_PATH + "static"+"/"+n},ec={},Pt=function(r,o,i){let a=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const c=document.querySelector("meta[property=csp-nonce]"),f=(c==null?void 0:c.nonce)||(c==null?void 0:c.getAttribute("nonce"));a=Promise.all(o.map(d=>{if(d=U0(d),d in ec)return;ec[d]=!0;const h=d.endsWith(".css"),v=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${v}`))return;const g=document.createElement("link");if(g.rel=h?"stylesheet":G0,h||(g.as="script",g.crossOrigin=""),g.href=d,f&&g.setAttribute("nonce",f),document.head.appendChild(g),h)return new Promise((y,S)=>{g.addEventListener("load",y),g.addEventListener("error",()=>S(new Error(`Unable to preload CSS for ${d}`)))})}))}return a.then(()=>r()).catch(c=>{const f=new Event("vite:preloadError",{cancelable:!0});if(f.payload=c,window.dispatchEvent(f),!f.defaultPrevented)throw c})};/*!
|
|
3
3
|
* vue-router v4.3.3
|
|
4
4
|
* (c) 2024 Eduardo San Martin Morote
|
|
5
5
|
* @license MIT
|
|
6
|
-
*/const Cn=typeof document<"u";function V0(n){return n.__esModule||n[Symbol.toStringTag]==="Module"}const xe=Object.assign;function Bi(n,r){const o={};for(const i in r){const a=r[i];o[i]=Tt(a)?a.map(n):n(a)}return o}const ur=()=>{},Tt=Array.isArray,Yc=/#/g,K0=/&/g,j0=/\//g,z0=/=/g,Y0=/\?/g,Zc=/\+/g,Z0=/%5B/g,X0=/%5D/g,Xc=/%5E/g,_0=/%60/g,_c=/%7B/g,Q0=/%7C/g,Qc=/%7D/g,J0=/%20/g;function ns(n){return encodeURI(""+n).replace(Q0,"|").replace(Z0,"[").replace(X0,"]")}function q0(n){return ns(n).replace(_c,"{").replace(Qc,"}").replace(Xc,"^")}function ji(n){return ns(n).replace(Zc,"%2B").replace(J0,"+").replace(Yc,"%23").replace(K0,"%26").replace(_0,"`").replace(_c,"{").replace(Qc,"}").replace(Xc,"^")}function ey(n){return ji(n).replace(z0,"%3D")}function ty(n){return ns(n).replace(Yc,"%23").replace(Y0,"%3F")}function ny(n){return n==null?"":ty(n).replace(j0,"%2F")}function fr(n){try{return decodeURIComponent(""+n)}catch{}return""+n}const ry=/\/$/,oy=n=>n.replace(ry,"");function ki(n,r,o="/"){let i,a={},c="",f="";const d=r.indexOf("#");let h=r.indexOf("?");return d<h&&d>=0&&(h=-1),h>-1&&(i=r.slice(0,h),c=r.slice(h+1,d>-1?d:r.length),a=n(c)),d>-1&&(i=i||r.slice(0,d),f=r.slice(d,r.length)),i=uy(i??r,o),{fullPath:i+(c&&"?")+c+f,path:i,query:a,hash:fr(f)}}function iy(n,r){const o=r.query?n(r.query):"";return r.path+(o&&"?")+o+(r.hash||"")}function tc(n,r){return!r||!n.toLowerCase().startsWith(r.toLowerCase())?n:n.slice(r.length)||"/"}function sy(n,r,o){const i=r.matched.length-1,a=o.matched.length-1;return i>-1&&i===a&&Dn(r.matched[i],o.matched[a])&&Jc(r.params,o.params)&&n(r.query)===n(o.query)&&r.hash===o.hash}function Dn(n,r){return(n.aliasOf||n)===(r.aliasOf||r)}function Jc(n,r){if(Object.keys(n).length!==Object.keys(r).length)return!1;for(const o in n)if(!ay(n[o],r[o]))return!1;return!0}function ay(n,r){return Tt(n)?nc(n,r):Tt(r)?nc(r,n):n===r}function nc(n,r){return Tt(r)?n.length===r.length&&n.every((o,i)=>o===r[i]):n.length===1&&n[0]===r}function uy(n,r){if(n.startsWith("/"))return n;if(!n)return r;const o=r.split("/"),i=n.split("/"),a=i[i.length-1];(a===".."||a===".")&&i.push("");let c=o.length-1,f,d;for(f=0;f<i.length;f++)if(d=i[f],d!==".")if(d==="..")c>1&&c--;else break;return o.slice(0,c).join("/")+"/"+i.slice(f).join("/")}var lr;(function(n){n.pop="pop",n.push="push"})(lr||(lr={}));var cr;(function(n){n.back="back",n.forward="forward",n.unknown=""})(cr||(cr={}));function cy(n){if(!n)if(Cn){const r=document.querySelector("base");n=r&&r.getAttribute("href")||"/",n=n.replace(/^\w+:\/\/[^\/]+/,"")}else n="/";return n[0]!=="/"&&n[0]!=="#"&&(n="/"+n),oy(n)}const fy=/^[^#]+#/;function ly(n,r){return n.replace(fy,"#")+r}function hy(n,r){const o=document.documentElement.getBoundingClientRect(),i=n.getBoundingClientRect();return{behavior:r.behavior,left:i.left-o.left-(r.left||0),top:i.top-o.top-(r.top||0)}}const ho=()=>({left:window.scrollX,top:window.scrollY});function dy(n){let r;if("el"in n){const o=n.el,i=typeof o=="string"&&o.startsWith("#"),a=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!a)return;r=hy(a,n)}else r=n;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function rc(n,r){return(history.state?history.state.position-r:-1)+n}const zi=new Map;function py(n,r){zi.set(n,r)}function gy(n){const r=zi.get(n);return zi.delete(n),r}let vy=()=>location.protocol+"//"+location.host;function qc(n,r){const{pathname:o,search:i,hash:a}=r,c=n.indexOf("#");if(c>-1){let d=a.includes(n.slice(c))?n.slice(c).length:1,h=a.slice(d);return h[0]!=="/"&&(h="/"+h),tc(h,"")}return tc(o,n)+i+a}function my(n,r,o,i){let a=[],c=[],f=null;const d=({state:S})=>{const b=qc(n,location),R=o.value,E=r.value;let L=0;if(S){if(o.value=b,r.value=S,f&&f===R){f=null;return}L=E?S.position-E.position:0}else i(b);a.forEach(P=>{P(o.value,R,{delta:L,type:lr.pop,direction:L?L>0?cr.forward:cr.back:cr.unknown})})};function h(){f=o.value}function v(S){a.push(S);const b=()=>{const R=a.indexOf(S);R>-1&&a.splice(R,1)};return c.push(b),b}function g(){const{history:S}=window;S.state&&S.replaceState(xe({},S.state,{scroll:ho()}),"")}function y(){for(const S of c)S();c=[],window.removeEventListener("popstate",d),window.removeEventListener("beforeunload",g)}return window.addEventListener("popstate",d),window.addEventListener("beforeunload",g,{passive:!0}),{pauseListeners:h,listen:v,destroy:y}}function oc(n,r,o,i=!1,a=!1){return{back:n,current:r,forward:o,replaced:i,position:window.history.length,scroll:a?ho():null}}function yy(n){const{history:r,location:o}=window,i={value:qc(n,o)},a={value:r.state};a.value||c(i.value,{back:null,current:i.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function c(h,v,g){const y=n.indexOf("#"),S=y>-1?(o.host&&document.querySelector("base")?n:n.slice(y))+h:vy()+n+h;try{r[g?"replaceState":"pushState"](v,"",S),a.value=v}catch(b){console.error(b),o[g?"replace":"assign"](S)}}function f(h,v){const g=xe({},r.state,oc(a.value.back,h,a.value.forward,!0),v,{position:a.value.position});c(h,g,!0),i.value=h}function d(h,v){const g=xe({},a.value,r.state,{forward:h,scroll:ho()});c(g.current,g,!0);const y=xe({},oc(i.value,h,null),{position:g.position+1},v);c(h,y,!1),i.value=h}return{location:i,state:a,push:d,replace:f}}function Sy(n){n=cy(n);const r=yy(n),o=my(n,r.state,r.location,r.replace);function i(c,f=!0){f||o.pauseListeners(),history.go(c)}const a=xe({location:"",base:n,go:i,createHref:ly.bind(null,n)},r,o);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>r.state.value}),a}function xy(n){return typeof n=="string"||n&&typeof n=="object"}function ef(n){return typeof n=="string"||typeof n=="symbol"}const Jt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},tf=Symbol("");var ic;(function(n){n[n.aborted=4]="aborted",n[n.cancelled=8]="cancelled",n[n.duplicated=16]="duplicated"})(ic||(ic={}));function Fn(n,r){return xe(new Error,{type:n,[tf]:!0},r)}function $t(n,r){return n instanceof Error&&tf in n&&(r==null||!!(n.type&r))}const sc="[^/]+?",by={sensitive:!1,strict:!1,start:!0,end:!0},Ey=/[.+*?^${}()[\]/\\]/g;function Ty(n,r){const o=xe({},by,r),i=[];let a=o.start?"^":"";const c=[];for(const v of n){const g=v.length?[]:[90];o.strict&&!v.length&&(a+="/");for(let y=0;y<v.length;y++){const S=v[y];let b=40+(o.sensitive?.25:0);if(S.type===0)y||(a+="/"),a+=S.value.replace(Ey,"\\$&"),b+=40;else if(S.type===1){const{value:R,repeatable:E,optional:L,regexp:P}=S;c.push({name:R,repeatable:E,optional:L});const I=P||sc;if(I!==sc){b+=10;try{new RegExp(`(${I})`)}catch(N){throw new Error(`Invalid custom RegExp for param "${R}" (${I}): `+N.message)}}let C=E?`((?:${I})(?:/(?:${I}))*)`:`(${I})`;y||(C=L&&v.length<2?`(?:/${C})`:"/"+C),L&&(C+="?"),a+=C,b+=20,L&&(b+=-8),E&&(b+=-20),I===".*"&&(b+=-50)}g.push(b)}i.push(g)}if(o.strict&&o.end){const v=i.length-1;i[v][i[v].length-1]+=.7000000000000001}o.strict||(a+="/?"),o.end?a+="$":o.strict&&(a+="(?:/|$)");const f=new RegExp(a,o.sensitive?"":"i");function d(v){const g=v.match(f),y={};if(!g)return null;for(let S=1;S<g.length;S++){const b=g[S]||"",R=c[S-1];y[R.name]=b&&R.repeatable?b.split("/"):b}return y}function h(v){let g="",y=!1;for(const S of n){(!y||!g.endsWith("/"))&&(g+="/"),y=!1;for(const b of S)if(b.type===0)g+=b.value;else if(b.type===1){const{value:R,repeatable:E,optional:L}=b,P=R in v?v[R]:"";if(Tt(P)&&!E)throw new Error(`Provided param "${R}" is an array but it is not repeatable (* or + modifiers)`);const I=Tt(P)?P.join("/"):P;if(!I)if(L)S.length<2&&(g.endsWith("/")?g=g.slice(0,-1):y=!0);else throw new Error(`Missing required param "${R}"`);g+=I}}return g||"/"}return{re:f,score:i,keys:c,parse:d,stringify:h}}function Ly(n,r){let o=0;for(;o<n.length&&o<r.length;){const i=r[o]-n[o];if(i)return i;o++}return n.length<r.length?n.length===1&&n[0]===80?-1:1:n.length>r.length?r.length===1&&r[0]===80?1:-1:0}function nf(n,r){let o=0;const i=n.score,a=r.score;for(;o<i.length&&o<a.length;){const c=Ly(i[o],a[o]);if(c)return c;o++}if(Math.abs(a.length-i.length)===1){if(ac(i))return 1;if(ac(a))return-1}return a.length-i.length}function ac(n){const r=n[n.length-1];return n.length>0&&r[r.length-1]<0}const Ry={type:0,value:""},wy=/[a-zA-Z0-9_]/;function Ay(n){if(!n)return[[]];if(n==="/")return[[Ry]];if(!n.startsWith("/"))throw new Error(`Invalid path "${n}"`);function r(b){throw new Error(`ERR (${o})/"${v}": ${b}`)}let o=0,i=o;const a=[];let c;function f(){c&&a.push(c),c=[]}let d=0,h,v="",g="";function y(){v&&(o===0?c.push({type:0,value:v}):o===1||o===2||o===3?(c.length>1&&(h==="*"||h==="+")&&r(`A repeatable param (${v}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:v,regexp:g,repeatable:h==="*"||h==="+",optional:h==="*"||h==="?"})):r("Invalid state to consume buffer"),v="")}function S(){v+=h}for(;d<n.length;){if(h=n[d++],h==="\\"&&o!==2){i=o,o=4;continue}switch(o){case 0:h==="/"?(v&&y(),f()):h===":"?(y(),o=1):S();break;case 4:S(),o=i;break;case 1:h==="("?o=2:wy.test(h)?S():(y(),o=0,h!=="*"&&h!=="?"&&h!=="+"&&d--);break;case 2:h===")"?g[g.length-1]=="\\"?g=g.slice(0,-1)+h:o=3:g+=h;break;case 3:y(),o=0,h!=="*"&&h!=="?"&&h!=="+"&&d--,g="";break;default:r("Unknown state");break}}return o===2&&r(`Unfinished custom RegExp for param "${v}"`),y(),f(),a}function Iy(n,r,o){const i=Ty(Ay(n.path),o),a=xe(i,{record:n,parent:r,children:[],alias:[]});return r&&!a.record.aliasOf==!r.record.aliasOf&&r.children.push(a),a}function Py(n,r){const o=[],i=new Map;r=fc({strict:!1,end:!0,sensitive:!1},r);function a(g){return i.get(g)}function c(g,y,S){const b=!S,R=Oy(g);R.aliasOf=S&&S.record;const E=fc(r,g),L=[R];if("alias"in g){const C=typeof g.alias=="string"?[g.alias]:g.alias;for(const N of C)L.push(xe({},R,{components:S?S.record.components:R.components,path:N,aliasOf:S?S.record:R}))}let P,I;for(const C of L){const{path:N}=C;if(y&&N[0]!=="/"){const U=y.record.path,W=U[U.length-1]==="/"?"":"/";C.path=y.record.path+(N&&W+N)}if(P=Iy(C,y,E),S?S.alias.push(P):(I=I||P,I!==P&&I.alias.push(P),b&&g.name&&!cc(P)&&f(g.name)),rf(P)&&h(P),R.children){const U=R.children;for(let W=0;W<U.length;W++)c(U[W],P,S&&S.children[W])}S=S||P}return I?()=>{f(I)}:ur}function f(g){if(ef(g)){const y=i.get(g);y&&(i.delete(g),o.splice(o.indexOf(y),1),y.children.forEach(f),y.alias.forEach(f))}else{const y=o.indexOf(g);y>-1&&(o.splice(y,1),g.record.name&&i.delete(g.record.name),g.children.forEach(f),g.alias.forEach(f))}}function d(){return o}function h(g){const y=Dy(g,o);o.splice(y,0,g),g.record.name&&!cc(g)&&i.set(g.record.name,g)}function v(g,y){let S,b={},R,E;if("name"in g&&g.name){if(S=i.get(g.name),!S)throw Fn(1,{location:g});E=S.record.name,b=xe(uc(y.params,S.keys.filter(I=>!I.optional).concat(S.parent?S.parent.keys.filter(I=>I.optional):[]).map(I=>I.name)),g.params&&uc(g.params,S.keys.map(I=>I.name))),R=S.stringify(b)}else if(g.path!=null)R=g.path,S=o.find(I=>I.re.test(R)),S&&(b=S.parse(R),E=S.record.name);else{if(S=y.name?i.get(y.name):o.find(I=>I.re.test(y.path)),!S)throw Fn(1,{location:g,currentLocation:y});E=S.record.name,b=xe({},y.params,g.params),R=S.stringify(b)}const L=[];let P=S;for(;P;)L.unshift(P.record),P=P.parent;return{name:E,path:R,params:b,matched:L,meta:My(L)}}return n.forEach(g=>c(g)),{addRoute:c,resolve:v,removeRoute:f,getRoutes:d,getRecordMatcher:a}}function uc(n,r){const o={};for(const i of r)i in n&&(o[i]=n[i]);return o}function Oy(n){return{path:n.path,redirect:n.redirect,name:n.name,meta:n.meta||{},aliasOf:void 0,beforeEnter:n.beforeEnter,props:Cy(n),children:n.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in n?n.components||null:n.component&&{default:n.component}}}function Cy(n){const r={},o=n.props||!1;if("component"in n)r.default=o;else for(const i in n.components)r[i]=typeof o=="object"?o[i]:o;return r}function cc(n){for(;n;){if(n.record.aliasOf)return!0;n=n.parent}return!1}function My(n){return n.reduce((r,o)=>xe(r,o.meta),{})}function fc(n,r){const o={};for(const i in n)o[i]=i in r?r[i]:n[i];return o}function Dy(n,r){let o=0,i=r.length;for(;o!==i;){const c=o+i>>1;nf(n,r[c])<0?i=c:o=c+1}const a=Fy(n);return a&&(i=r.lastIndexOf(a,i-1)),i}function Fy(n){let r=n;for(;r=r.parent;)if(rf(r)&&nf(n,r)===0)return r}function rf({record:n}){return!!(n.name||n.components&&Object.keys(n.components).length||n.redirect)}function Hy(n){const r={};if(n===""||n==="?")return r;const i=(n[0]==="?"?n.slice(1):n).split("&");for(let a=0;a<i.length;++a){const c=i[a].replace(Zc," "),f=c.indexOf("="),d=fr(f<0?c:c.slice(0,f)),h=f<0?null:fr(c.slice(f+1));if(d in r){let v=r[d];Tt(v)||(v=r[d]=[v]),v.push(h)}else r[d]=h}return r}function lc(n){let r="";for(let o in n){const i=n[o];if(o=ey(o),i==null){i!==void 0&&(r+=(r.length?"&":"")+o);continue}(Tt(i)?i.map(c=>c&&ji(c)):[i&&ji(i)]).forEach(c=>{c!==void 0&&(r+=(r.length?"&":"")+o,c!=null&&(r+="="+c))})}return r}function By(n){const r={};for(const o in n){const i=n[o];i!==void 0&&(r[o]=Tt(i)?i.map(a=>a==null?null:""+a):i==null?i:""+i)}return r}const ky=Symbol(""),hc=Symbol(""),rs=Symbol(""),of=Symbol(""),Yi=Symbol("");function tr(){let n=[];function r(i){return n.push(i),()=>{const a=n.indexOf(i);a>-1&&n.splice(a,1)}}function o(){n=[]}return{add:r,list:()=>n.slice(),reset:o}}function qt(n,r,o,i,a,c=f=>f()){const f=i&&(i.enterCallbacks[a]=i.enterCallbacks[a]||[]);return()=>new Promise((d,h)=>{const v=S=>{S===!1?h(Fn(4,{from:o,to:r})):S instanceof Error?h(S):xy(S)?h(Fn(2,{from:r,to:S})):(f&&i.enterCallbacks[a]===f&&typeof S=="function"&&f.push(S),d())},g=c(()=>n.call(i&&i.instances[a],r,o,v));let y=Promise.resolve(g);n.length<3&&(y=y.then(v)),y.catch(S=>h(S))})}function Ni(n,r,o,i,a=c=>c()){const c=[];for(const f of n)for(const d in f.components){let h=f.components[d];if(!(r!=="beforeRouteEnter"&&!f.instances[d]))if(Ny(h)){const g=(h.__vccOpts||h)[r];g&&c.push(qt(g,o,i,f,d,a))}else{let v=h();c.push(()=>v.then(g=>{if(!g)return Promise.reject(new Error(`Couldn't resolve component "${d}" at "${f.path}"`));const y=V0(g)?g.default:g;f.components[d]=y;const b=(y.__vccOpts||y)[r];return b&&qt(b,o,i,f,d,a)()}))}}return c}function Ny(n){return typeof n=="object"||"displayName"in n||"props"in n||"__vccOpts"in n}function dc(n){const r=It(rs),o=It(of),i=De(()=>{const h=pn(n.to);return r.resolve(h)}),a=De(()=>{const{matched:h}=i.value,{length:v}=h,g=h[v-1],y=o.matched;if(!g||!y.length)return-1;const S=y.findIndex(Dn.bind(null,g));if(S>-1)return S;const b=pc(h[v-2]);return v>1&&pc(g)===b&&y[y.length-1].path!==b?y.findIndex(Dn.bind(null,h[v-2])):S}),c=De(()=>a.value>-1&&Uy(o.params,i.value.params)),f=De(()=>a.value>-1&&a.value===o.matched.length-1&&Jc(o.params,i.value.params));function d(h={}){return Gy(h)?r[pn(n.replace)?"replace":"push"](pn(n.to)).catch(ur):Promise.resolve()}return{route:i,href:De(()=>i.value.href),isActive:c,isExactActive:f,navigate:d}}const $y=Dc({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:dc,setup(n,{slots:r}){const o=en(dc(n)),{options:i}=It(rs),a=De(()=>({[gc(n.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[gc(n.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{const c=r.default&&r.default(o);return n.custom?c:Fc("a",{"aria-current":o.isExactActive?n.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:a.value},c)}}}),Wy=$y;function Gy(n){if(!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)&&!n.defaultPrevented&&!(n.button!==void 0&&n.button!==0)){if(n.currentTarget&&n.currentTarget.getAttribute){const r=n.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return n.preventDefault&&n.preventDefault(),!0}}function Uy(n,r){for(const o in r){const i=r[o],a=n[o];if(typeof i=="string"){if(i!==a)return!1}else if(!Tt(a)||a.length!==i.length||i.some((c,f)=>c!==a[f]))return!1}return!0}function pc(n){return n?n.aliasOf?n.aliasOf.path:n.path:""}const gc=(n,r,o)=>n??r??o,Vy=Dc({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:o}){const i=It(Yi),a=De(()=>n.route||i.value),c=It(hc,0),f=De(()=>{let v=pn(c);const{matched:g}=a.value;let y;for(;(y=g[v])&&!y.components;)v++;return v}),d=De(()=>a.value.matched[f.value]);sr(hc,De(()=>f.value+1)),sr(ky,d),sr(Yi,a);const h=so();return Qi(()=>[h.value,d.value,n.name],([v,g,y],[S,b,R])=>{g&&(g.instances[y]=v,b&&b!==g&&v&&v===S&&(g.leaveGuards.size||(g.leaveGuards=b.leaveGuards),g.updateGuards.size||(g.updateGuards=b.updateGuards))),v&&g&&(!b||!Dn(g,b)||!S)&&(g.enterCallbacks[y]||[]).forEach(E=>E(v))},{flush:"post"}),()=>{const v=a.value,g=n.name,y=d.value,S=y&&y.components[g];if(!S)return vc(o.default,{Component:S,route:v});const b=y.props[g],R=b?b===!0?v.params:typeof b=="function"?b(v):b:null,L=Fc(S,xe({},R,r,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(y.instances[g]=null)},ref:h}));return vc(o.default,{Component:L,route:v})||L}}});function vc(n,r){if(!n)return null;const o=n(r);return o.length===1?o[0]:o}const Ky=Vy;function jy(n){const r=Py(n.routes,n),o=n.parseQuery||Hy,i=n.stringifyQuery||lc,a=n.history,c=tr(),f=tr(),d=tr(),h=Mc(Jt);let v=Jt;Cn&&n.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const g=Bi.bind(null,D=>""+D),y=Bi.bind(null,ny),S=Bi.bind(null,fr);function b(D,X){let j,J;return ef(D)?(j=r.getRecordMatcher(D),J=X):J=D,r.addRoute(J,j)}function R(D){const X=r.getRecordMatcher(D);X&&r.removeRoute(X)}function E(){return r.getRoutes().map(D=>D.record)}function L(D){return!!r.getRecordMatcher(D)}function P(D,X){if(X=xe({},X||h.value),typeof D=="string"){const ee=ki(o,D,X.path),we=r.resolve({path:ee.path},X),nn=a.createHref(ee.fullPath);return xe(ee,we,{params:S(we.params),hash:fr(ee.hash),redirectedFrom:void 0,href:nn})}let j;if(D.path!=null)j=xe({},D,{path:ki(o,D.path,X.path).path});else{const ee=xe({},D.params);for(const we in ee)ee[we]==null&&delete ee[we];j=xe({},D,{params:y(ee)}),X.params=y(X.params)}const J=r.resolve(j,X),ge=D.hash||"";J.params=g(S(J.params));const Re=iy(i,xe({},D,{hash:q0(ge),path:J.path})),fe=a.createHref(Re);return xe({fullPath:Re,hash:ge,query:i===lc?By(D.query):D.query||{}},J,{redirectedFrom:void 0,href:fe})}function I(D){return typeof D=="string"?ki(o,D,h.value.path):xe({},D)}function C(D,X){if(v!==D)return Fn(8,{from:X,to:D})}function N(D){return B(D)}function U(D){return N(xe(I(D),{replace:!0}))}function W(D){const X=D.matched[D.matched.length-1];if(X&&X.redirect){const{redirect:j}=X;let J=typeof j=="function"?j(D):j;return typeof J=="string"&&(J=J.includes("?")||J.includes("#")?J=I(J):{path:J},J.params={}),xe({query:D.query,hash:D.hash,params:J.path!=null?{}:D.params},J)}}function B(D,X){const j=v=P(D),J=h.value,ge=D.state,Re=D.force,fe=D.replace===!0,ee=W(j);if(ee)return B(xe(I(ee),{state:typeof ee=="object"?xe({},ge,ee.state):ge,force:Re,replace:fe}),X||j);const we=j;we.redirectedFrom=X;let nn;return!Re&&sy(i,J,j)&&(nn=Fn(16,{to:we,from:J}),Ee(J,J,!0,!1)),(nn?Promise.resolve(nn):V(we,J)).catch(Pe=>$t(Pe)?$t(Pe,2)?Pe:pe(Pe):ce(Pe,we,J)).then(Pe=>{if(Pe){if($t(Pe,2))return B(xe({replace:fe},I(Pe.to),{state:typeof Pe.to=="object"?xe({},ge,Pe.to.state):ge,force:Re}),X||we)}else Pe=Z(we,J,!0,fe,ge);return K(we,J,Pe),Pe})}function k(D,X){const j=C(D,X);return j?Promise.reject(j):Promise.resolve()}function $(D){const X=tt.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(D):D()}function V(D,X){let j;const[J,ge,Re]=zy(D,X);j=Ni(J.reverse(),"beforeRouteLeave",D,X);for(const ee of J)ee.leaveGuards.forEach(we=>{j.push(qt(we,D,X))});const fe=k.bind(null,D,X);return j.push(fe),nt(j).then(()=>{j=[];for(const ee of c.list())j.push(qt(ee,D,X));return j.push(fe),nt(j)}).then(()=>{j=Ni(ge,"beforeRouteUpdate",D,X);for(const ee of ge)ee.updateGuards.forEach(we=>{j.push(qt(we,D,X))});return j.push(fe),nt(j)}).then(()=>{j=[];for(const ee of Re)if(ee.beforeEnter)if(Tt(ee.beforeEnter))for(const we of ee.beforeEnter)j.push(qt(we,D,X));else j.push(qt(ee.beforeEnter,D,X));return j.push(fe),nt(j)}).then(()=>(D.matched.forEach(ee=>ee.enterCallbacks={}),j=Ni(Re,"beforeRouteEnter",D,X,$),j.push(fe),nt(j))).then(()=>{j=[];for(const ee of f.list())j.push(qt(ee,D,X));return j.push(fe),nt(j)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(D,X,j){d.list().forEach(J=>$(()=>J(D,X,j)))}function Z(D,X,j,J,ge){const Re=C(D,X);if(Re)return Re;const fe=X===Jt,ee=Cn?history.state:{};j&&(J||fe?a.replace(D.fullPath,xe({scroll:fe&&ee&&ee.scroll},ge)):a.push(D.fullPath,ge)),h.value=D,Ee(D,X,j,fe),pe()}let Y;function me(){Y||(Y=a.listen((D,X,j)=>{const J=P(D),ge=W(J);if(ge){B(xe(ge,{replace:!0}),J).catch(ur);return}v=J;const Re=h.value;Cn&&py(rc(Re.fullPath,j.delta),ho()),V(J,Re).catch(fe=>$t(fe,12)?fe:$t(fe,2)?(B(fe.to,J).then(ee=>{$t(ee,20)&&!j.delta&&j.type===lr.pop&&a.go(-1,!1)}).catch(ur),Promise.reject()):(j.delta&&a.go(-j.delta,!1),ce(fe,J,Re))).then(fe=>{fe=fe||Z(J,Re,!1),fe&&(j.delta&&!$t(fe,8)?a.go(-j.delta,!1):j.type===lr.pop&&$t(fe,20)&&a.go(-1,!1)),K(J,Re,fe)}).catch(ur)}))}let be=tr(),Fe=tr(),ue;function ce(D,X,j){pe(D);const J=Fe.list();return J.length?J.forEach(ge=>ge(D,X,j)):console.error(D),Promise.reject(D)}function ke(){return ue&&h.value!==Jt?Promise.resolve():new Promise((D,X)=>{be.add([D,X])})}function pe(D){return ue||(ue=!D,me(),be.list().forEach(([X,j])=>D?j(D):X()),be.reset()),D}function Ee(D,X,j,J){const{scrollBehavior:ge}=n;if(!Cn||!ge)return Promise.resolve();const Re=!j&&gy(rc(D.fullPath,0))||(J||!j)&&history.state&&history.state.scroll||null;return Hn().then(()=>ge(D,X,Re)).then(fe=>fe&&dy(fe)).catch(fe=>ce(fe,D,X))}const _e=D=>a.go(D);let Ke;const tt=new Set,Lt={currentRoute:h,listening:!0,addRoute:b,removeRoute:R,hasRoute:L,getRoutes:E,resolve:P,options:n,push:N,replace:U,go:_e,back:()=>_e(-1),forward:()=>_e(1),beforeEach:c.add,beforeResolve:f.add,afterEach:d.add,onError:Fe.add,isReady:ke,install(D){const X=this;D.component("RouterLink",Wy),D.component("RouterView",Ky),D.config.globalProperties.$router=X,Object.defineProperty(D.config.globalProperties,"$route",{enumerable:!0,get:()=>pn(h)}),Cn&&!Ke&&h.value===Jt&&(Ke=!0,N(a.location).catch(ge=>{}));const j={};for(const ge in Jt)Object.defineProperty(j,ge,{get:()=>h.value[ge],enumerable:!0});D.provide(rs,X),D.provide(of,gm(j)),D.provide(Yi,h);const J=D.unmount;tt.add(D),D.unmount=function(){tt.delete(D),tt.size<1&&(v=Jt,Y&&Y(),Y=null,h.value=Jt,Ke=!1,ue=!1),J()}}};function nt(D){return D.reduce((X,j)=>X.then(()=>$(j)),Promise.resolve())}return Lt}function zy(n,r){const o=[],i=[],a=[],c=Math.max(r.matched.length,n.matched.length);for(let f=0;f<c;f++){const d=r.matched[f];d&&(n.matched.find(v=>Dn(v,d))?i.push(d):o.push(d));const h=n.matched[f];h&&(r.matched.find(v=>Dn(v,h))||a.push(h))}return[o,i,a]}const Yy=()=>Pt(()=>import("./admin-DAexM4mM.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),Zy=()=>Pt(()=>import("./browser-CWfL6gLS.js"),__vite__mapDeps([21,1,2,22,23,7,8,24,25,9,10,26,3,4,5,6,11,12,13,14,15,27,28,18,19,29,30,31,32,33,34,35,36,37])),Xy=()=>Pt(()=>import("./http-error-BkvLxw68.js"),__vite__mapDeps([38,1,2,4,5,6,7,8,9,10,11,12,13,39])),_y=()=>Pt(()=>import("./reader-AMeiJSE6.js"),__vite__mapDeps([40,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,28,25,18,19,29,41,42,43,44,24,26,27,30,31,45])),Qy=()=>Pt(()=>import("./flag-tab-CAsMFvQO.js"),__vite__mapDeps([46,1,2,22,23,24,25,9,10,26,47])),Jy=()=>Pt(()=>import("./user-tab-HnLW9C3q.js"),__vite__mapDeps([48,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,24,26,51,52,5,12])),qy=()=>Pt(()=>import("./group-tab-Cr0hebSY.js"),__vite__mapDeps([53,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,43,44,54])),e2=()=>Pt(()=>import("./library-tab-r6YdFmlk.js"),__vite__mapDeps([55,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,34,36,24,26,51,52,41,42,56])),t2=()=>Pt(()=>import("./task-tab-JjKaS7pI.js"),__vite__mapDeps([57,1,2,32,7,8,33,58])),n2=()=>Pt(()=>import("./stats-tab-CgBniikR.js"),__vite__mapDeps([59,1,2,32,7,8,33,14,30,22,23,60])),r2={name:"browser",params:window.CODEX.LAST_ROUTE||zc.route},o2=[{name:"home",path:"/",redirect:r2},{name:"reader",path:"/c/:pk/:page",component:_y},{name:"browser",path:"/:group/:pks/:page",component:Zy},{name:"admin",path:"/admin",component:Yy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:Jy},{name:"admin-groups",path:"groups",component:qy},{name:"admin-libraries",path:"libraries",component:e2},{name:"admin-flags",path:"flags",component:Qy},{name:"admin-tasks",path:"tasks",component:t2},{name:"admin-stats",path:"stats",component:n2}]},{name:"error",path:"/error/:code",component:Xy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Ne=new jy({history:Sy(window.CODEX.APP_PATH),routes:o2});var nr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sf(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var co={exports:{}};/**
|
|
6
|
+
*/const Cn=typeof document<"u";function V0(n){return n.__esModule||n[Symbol.toStringTag]==="Module"}const xe=Object.assign;function Bi(n,r){const o={};for(const i in r){const a=r[i];o[i]=Tt(a)?a.map(n):n(a)}return o}const ur=()=>{},Tt=Array.isArray,Yc=/#/g,K0=/&/g,j0=/\//g,z0=/=/g,Y0=/\?/g,Zc=/\+/g,Z0=/%5B/g,X0=/%5D/g,Xc=/%5E/g,_0=/%60/g,_c=/%7B/g,Q0=/%7C/g,Qc=/%7D/g,J0=/%20/g;function ns(n){return encodeURI(""+n).replace(Q0,"|").replace(Z0,"[").replace(X0,"]")}function q0(n){return ns(n).replace(_c,"{").replace(Qc,"}").replace(Xc,"^")}function ji(n){return ns(n).replace(Zc,"%2B").replace(J0,"+").replace(Yc,"%23").replace(K0,"%26").replace(_0,"`").replace(_c,"{").replace(Qc,"}").replace(Xc,"^")}function ey(n){return ji(n).replace(z0,"%3D")}function ty(n){return ns(n).replace(Yc,"%23").replace(Y0,"%3F")}function ny(n){return n==null?"":ty(n).replace(j0,"%2F")}function fr(n){try{return decodeURIComponent(""+n)}catch{}return""+n}const ry=/\/$/,oy=n=>n.replace(ry,"");function ki(n,r,o="/"){let i,a={},c="",f="";const d=r.indexOf("#");let h=r.indexOf("?");return d<h&&d>=0&&(h=-1),h>-1&&(i=r.slice(0,h),c=r.slice(h+1,d>-1?d:r.length),a=n(c)),d>-1&&(i=i||r.slice(0,d),f=r.slice(d,r.length)),i=uy(i??r,o),{fullPath:i+(c&&"?")+c+f,path:i,query:a,hash:fr(f)}}function iy(n,r){const o=r.query?n(r.query):"";return r.path+(o&&"?")+o+(r.hash||"")}function tc(n,r){return!r||!n.toLowerCase().startsWith(r.toLowerCase())?n:n.slice(r.length)||"/"}function sy(n,r,o){const i=r.matched.length-1,a=o.matched.length-1;return i>-1&&i===a&&Dn(r.matched[i],o.matched[a])&&Jc(r.params,o.params)&&n(r.query)===n(o.query)&&r.hash===o.hash}function Dn(n,r){return(n.aliasOf||n)===(r.aliasOf||r)}function Jc(n,r){if(Object.keys(n).length!==Object.keys(r).length)return!1;for(const o in n)if(!ay(n[o],r[o]))return!1;return!0}function ay(n,r){return Tt(n)?nc(n,r):Tt(r)?nc(r,n):n===r}function nc(n,r){return Tt(r)?n.length===r.length&&n.every((o,i)=>o===r[i]):n.length===1&&n[0]===r}function uy(n,r){if(n.startsWith("/"))return n;if(!n)return r;const o=r.split("/"),i=n.split("/"),a=i[i.length-1];(a===".."||a===".")&&i.push("");let c=o.length-1,f,d;for(f=0;f<i.length;f++)if(d=i[f],d!==".")if(d==="..")c>1&&c--;else break;return o.slice(0,c).join("/")+"/"+i.slice(f).join("/")}var lr;(function(n){n.pop="pop",n.push="push"})(lr||(lr={}));var cr;(function(n){n.back="back",n.forward="forward",n.unknown=""})(cr||(cr={}));function cy(n){if(!n)if(Cn){const r=document.querySelector("base");n=r&&r.getAttribute("href")||"/",n=n.replace(/^\w+:\/\/[^\/]+/,"")}else n="/";return n[0]!=="/"&&n[0]!=="#"&&(n="/"+n),oy(n)}const fy=/^[^#]+#/;function ly(n,r){return n.replace(fy,"#")+r}function hy(n,r){const o=document.documentElement.getBoundingClientRect(),i=n.getBoundingClientRect();return{behavior:r.behavior,left:i.left-o.left-(r.left||0),top:i.top-o.top-(r.top||0)}}const ho=()=>({left:window.scrollX,top:window.scrollY});function dy(n){let r;if("el"in n){const o=n.el,i=typeof o=="string"&&o.startsWith("#"),a=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!a)return;r=hy(a,n)}else r=n;"scrollBehavior"in document.documentElement.style?window.scrollTo(r):window.scrollTo(r.left!=null?r.left:window.scrollX,r.top!=null?r.top:window.scrollY)}function rc(n,r){return(history.state?history.state.position-r:-1)+n}const zi=new Map;function py(n,r){zi.set(n,r)}function gy(n){const r=zi.get(n);return zi.delete(n),r}let vy=()=>location.protocol+"//"+location.host;function qc(n,r){const{pathname:o,search:i,hash:a}=r,c=n.indexOf("#");if(c>-1){let d=a.includes(n.slice(c))?n.slice(c).length:1,h=a.slice(d);return h[0]!=="/"&&(h="/"+h),tc(h,"")}return tc(o,n)+i+a}function my(n,r,o,i){let a=[],c=[],f=null;const d=({state:S})=>{const b=qc(n,location),R=o.value,E=r.value;let L=0;if(S){if(o.value=b,r.value=S,f&&f===R){f=null;return}L=E?S.position-E.position:0}else i(b);a.forEach(P=>{P(o.value,R,{delta:L,type:lr.pop,direction:L?L>0?cr.forward:cr.back:cr.unknown})})};function h(){f=o.value}function v(S){a.push(S);const b=()=>{const R=a.indexOf(S);R>-1&&a.splice(R,1)};return c.push(b),b}function g(){const{history:S}=window;S.state&&S.replaceState(xe({},S.state,{scroll:ho()}),"")}function y(){for(const S of c)S();c=[],window.removeEventListener("popstate",d),window.removeEventListener("beforeunload",g)}return window.addEventListener("popstate",d),window.addEventListener("beforeunload",g,{passive:!0}),{pauseListeners:h,listen:v,destroy:y}}function oc(n,r,o,i=!1,a=!1){return{back:n,current:r,forward:o,replaced:i,position:window.history.length,scroll:a?ho():null}}function yy(n){const{history:r,location:o}=window,i={value:qc(n,o)},a={value:r.state};a.value||c(i.value,{back:null,current:i.value,forward:null,position:r.length-1,replaced:!0,scroll:null},!0);function c(h,v,g){const y=n.indexOf("#"),S=y>-1?(o.host&&document.querySelector("base")?n:n.slice(y))+h:vy()+n+h;try{r[g?"replaceState":"pushState"](v,"",S),a.value=v}catch(b){console.error(b),o[g?"replace":"assign"](S)}}function f(h,v){const g=xe({},r.state,oc(a.value.back,h,a.value.forward,!0),v,{position:a.value.position});c(h,g,!0),i.value=h}function d(h,v){const g=xe({},a.value,r.state,{forward:h,scroll:ho()});c(g.current,g,!0);const y=xe({},oc(i.value,h,null),{position:g.position+1},v);c(h,y,!1),i.value=h}return{location:i,state:a,push:d,replace:f}}function Sy(n){n=cy(n);const r=yy(n),o=my(n,r.state,r.location,r.replace);function i(c,f=!0){f||o.pauseListeners(),history.go(c)}const a=xe({location:"",base:n,go:i,createHref:ly.bind(null,n)},r,o);return Object.defineProperty(a,"location",{enumerable:!0,get:()=>r.location.value}),Object.defineProperty(a,"state",{enumerable:!0,get:()=>r.state.value}),a}function xy(n){return typeof n=="string"||n&&typeof n=="object"}function ef(n){return typeof n=="string"||typeof n=="symbol"}const Jt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},tf=Symbol("");var ic;(function(n){n[n.aborted=4]="aborted",n[n.cancelled=8]="cancelled",n[n.duplicated=16]="duplicated"})(ic||(ic={}));function Fn(n,r){return xe(new Error,{type:n,[tf]:!0},r)}function $t(n,r){return n instanceof Error&&tf in n&&(r==null||!!(n.type&r))}const sc="[^/]+?",by={sensitive:!1,strict:!1,start:!0,end:!0},Ey=/[.+*?^${}()[\]/\\]/g;function Ty(n,r){const o=xe({},by,r),i=[];let a=o.start?"^":"";const c=[];for(const v of n){const g=v.length?[]:[90];o.strict&&!v.length&&(a+="/");for(let y=0;y<v.length;y++){const S=v[y];let b=40+(o.sensitive?.25:0);if(S.type===0)y||(a+="/"),a+=S.value.replace(Ey,"\\$&"),b+=40;else if(S.type===1){const{value:R,repeatable:E,optional:L,regexp:P}=S;c.push({name:R,repeatable:E,optional:L});const I=P||sc;if(I!==sc){b+=10;try{new RegExp(`(${I})`)}catch(N){throw new Error(`Invalid custom RegExp for param "${R}" (${I}): `+N.message)}}let C=E?`((?:${I})(?:/(?:${I}))*)`:`(${I})`;y||(C=L&&v.length<2?`(?:/${C})`:"/"+C),L&&(C+="?"),a+=C,b+=20,L&&(b+=-8),E&&(b+=-20),I===".*"&&(b+=-50)}g.push(b)}i.push(g)}if(o.strict&&o.end){const v=i.length-1;i[v][i[v].length-1]+=.7000000000000001}o.strict||(a+="/?"),o.end?a+="$":o.strict&&(a+="(?:/|$)");const f=new RegExp(a,o.sensitive?"":"i");function d(v){const g=v.match(f),y={};if(!g)return null;for(let S=1;S<g.length;S++){const b=g[S]||"",R=c[S-1];y[R.name]=b&&R.repeatable?b.split("/"):b}return y}function h(v){let g="",y=!1;for(const S of n){(!y||!g.endsWith("/"))&&(g+="/"),y=!1;for(const b of S)if(b.type===0)g+=b.value;else if(b.type===1){const{value:R,repeatable:E,optional:L}=b,P=R in v?v[R]:"";if(Tt(P)&&!E)throw new Error(`Provided param "${R}" is an array but it is not repeatable (* or + modifiers)`);const I=Tt(P)?P.join("/"):P;if(!I)if(L)S.length<2&&(g.endsWith("/")?g=g.slice(0,-1):y=!0);else throw new Error(`Missing required param "${R}"`);g+=I}}return g||"/"}return{re:f,score:i,keys:c,parse:d,stringify:h}}function Ly(n,r){let o=0;for(;o<n.length&&o<r.length;){const i=r[o]-n[o];if(i)return i;o++}return n.length<r.length?n.length===1&&n[0]===80?-1:1:n.length>r.length?r.length===1&&r[0]===80?1:-1:0}function nf(n,r){let o=0;const i=n.score,a=r.score;for(;o<i.length&&o<a.length;){const c=Ly(i[o],a[o]);if(c)return c;o++}if(Math.abs(a.length-i.length)===1){if(ac(i))return 1;if(ac(a))return-1}return a.length-i.length}function ac(n){const r=n[n.length-1];return n.length>0&&r[r.length-1]<0}const Ry={type:0,value:""},wy=/[a-zA-Z0-9_]/;function Ay(n){if(!n)return[[]];if(n==="/")return[[Ry]];if(!n.startsWith("/"))throw new Error(`Invalid path "${n}"`);function r(b){throw new Error(`ERR (${o})/"${v}": ${b}`)}let o=0,i=o;const a=[];let c;function f(){c&&a.push(c),c=[]}let d=0,h,v="",g="";function y(){v&&(o===0?c.push({type:0,value:v}):o===1||o===2||o===3?(c.length>1&&(h==="*"||h==="+")&&r(`A repeatable param (${v}) must be alone in its segment. eg: '/:ids+.`),c.push({type:1,value:v,regexp:g,repeatable:h==="*"||h==="+",optional:h==="*"||h==="?"})):r("Invalid state to consume buffer"),v="")}function S(){v+=h}for(;d<n.length;){if(h=n[d++],h==="\\"&&o!==2){i=o,o=4;continue}switch(o){case 0:h==="/"?(v&&y(),f()):h===":"?(y(),o=1):S();break;case 4:S(),o=i;break;case 1:h==="("?o=2:wy.test(h)?S():(y(),o=0,h!=="*"&&h!=="?"&&h!=="+"&&d--);break;case 2:h===")"?g[g.length-1]=="\\"?g=g.slice(0,-1)+h:o=3:g+=h;break;case 3:y(),o=0,h!=="*"&&h!=="?"&&h!=="+"&&d--,g="";break;default:r("Unknown state");break}}return o===2&&r(`Unfinished custom RegExp for param "${v}"`),y(),f(),a}function Iy(n,r,o){const i=Ty(Ay(n.path),o),a=xe(i,{record:n,parent:r,children:[],alias:[]});return r&&!a.record.aliasOf==!r.record.aliasOf&&r.children.push(a),a}function Py(n,r){const o=[],i=new Map;r=fc({strict:!1,end:!0,sensitive:!1},r);function a(g){return i.get(g)}function c(g,y,S){const b=!S,R=Oy(g);R.aliasOf=S&&S.record;const E=fc(r,g),L=[R];if("alias"in g){const C=typeof g.alias=="string"?[g.alias]:g.alias;for(const N of C)L.push(xe({},R,{components:S?S.record.components:R.components,path:N,aliasOf:S?S.record:R}))}let P,I;for(const C of L){const{path:N}=C;if(y&&N[0]!=="/"){const U=y.record.path,W=U[U.length-1]==="/"?"":"/";C.path=y.record.path+(N&&W+N)}if(P=Iy(C,y,E),S?S.alias.push(P):(I=I||P,I!==P&&I.alias.push(P),b&&g.name&&!cc(P)&&f(g.name)),rf(P)&&h(P),R.children){const U=R.children;for(let W=0;W<U.length;W++)c(U[W],P,S&&S.children[W])}S=S||P}return I?()=>{f(I)}:ur}function f(g){if(ef(g)){const y=i.get(g);y&&(i.delete(g),o.splice(o.indexOf(y),1),y.children.forEach(f),y.alias.forEach(f))}else{const y=o.indexOf(g);y>-1&&(o.splice(y,1),g.record.name&&i.delete(g.record.name),g.children.forEach(f),g.alias.forEach(f))}}function d(){return o}function h(g){const y=Dy(g,o);o.splice(y,0,g),g.record.name&&!cc(g)&&i.set(g.record.name,g)}function v(g,y){let S,b={},R,E;if("name"in g&&g.name){if(S=i.get(g.name),!S)throw Fn(1,{location:g});E=S.record.name,b=xe(uc(y.params,S.keys.filter(I=>!I.optional).concat(S.parent?S.parent.keys.filter(I=>I.optional):[]).map(I=>I.name)),g.params&&uc(g.params,S.keys.map(I=>I.name))),R=S.stringify(b)}else if(g.path!=null)R=g.path,S=o.find(I=>I.re.test(R)),S&&(b=S.parse(R),E=S.record.name);else{if(S=y.name?i.get(y.name):o.find(I=>I.re.test(y.path)),!S)throw Fn(1,{location:g,currentLocation:y});E=S.record.name,b=xe({},y.params,g.params),R=S.stringify(b)}const L=[];let P=S;for(;P;)L.unshift(P.record),P=P.parent;return{name:E,path:R,params:b,matched:L,meta:My(L)}}return n.forEach(g=>c(g)),{addRoute:c,resolve:v,removeRoute:f,getRoutes:d,getRecordMatcher:a}}function uc(n,r){const o={};for(const i of r)i in n&&(o[i]=n[i]);return o}function Oy(n){return{path:n.path,redirect:n.redirect,name:n.name,meta:n.meta||{},aliasOf:void 0,beforeEnter:n.beforeEnter,props:Cy(n),children:n.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in n?n.components||null:n.component&&{default:n.component}}}function Cy(n){const r={},o=n.props||!1;if("component"in n)r.default=o;else for(const i in n.components)r[i]=typeof o=="object"?o[i]:o;return r}function cc(n){for(;n;){if(n.record.aliasOf)return!0;n=n.parent}return!1}function My(n){return n.reduce((r,o)=>xe(r,o.meta),{})}function fc(n,r){const o={};for(const i in n)o[i]=i in r?r[i]:n[i];return o}function Dy(n,r){let o=0,i=r.length;for(;o!==i;){const c=o+i>>1;nf(n,r[c])<0?i=c:o=c+1}const a=Fy(n);return a&&(i=r.lastIndexOf(a,i-1)),i}function Fy(n){let r=n;for(;r=r.parent;)if(rf(r)&&nf(n,r)===0)return r}function rf({record:n}){return!!(n.name||n.components&&Object.keys(n.components).length||n.redirect)}function Hy(n){const r={};if(n===""||n==="?")return r;const i=(n[0]==="?"?n.slice(1):n).split("&");for(let a=0;a<i.length;++a){const c=i[a].replace(Zc," "),f=c.indexOf("="),d=fr(f<0?c:c.slice(0,f)),h=f<0?null:fr(c.slice(f+1));if(d in r){let v=r[d];Tt(v)||(v=r[d]=[v]),v.push(h)}else r[d]=h}return r}function lc(n){let r="";for(let o in n){const i=n[o];if(o=ey(o),i==null){i!==void 0&&(r+=(r.length?"&":"")+o);continue}(Tt(i)?i.map(c=>c&&ji(c)):[i&&ji(i)]).forEach(c=>{c!==void 0&&(r+=(r.length?"&":"")+o,c!=null&&(r+="="+c))})}return r}function By(n){const r={};for(const o in n){const i=n[o];i!==void 0&&(r[o]=Tt(i)?i.map(a=>a==null?null:""+a):i==null?i:""+i)}return r}const ky=Symbol(""),hc=Symbol(""),rs=Symbol(""),of=Symbol(""),Yi=Symbol("");function tr(){let n=[];function r(i){return n.push(i),()=>{const a=n.indexOf(i);a>-1&&n.splice(a,1)}}function o(){n=[]}return{add:r,list:()=>n.slice(),reset:o}}function qt(n,r,o,i,a,c=f=>f()){const f=i&&(i.enterCallbacks[a]=i.enterCallbacks[a]||[]);return()=>new Promise((d,h)=>{const v=S=>{S===!1?h(Fn(4,{from:o,to:r})):S instanceof Error?h(S):xy(S)?h(Fn(2,{from:r,to:S})):(f&&i.enterCallbacks[a]===f&&typeof S=="function"&&f.push(S),d())},g=c(()=>n.call(i&&i.instances[a],r,o,v));let y=Promise.resolve(g);n.length<3&&(y=y.then(v)),y.catch(S=>h(S))})}function Ni(n,r,o,i,a=c=>c()){const c=[];for(const f of n)for(const d in f.components){let h=f.components[d];if(!(r!=="beforeRouteEnter"&&!f.instances[d]))if(Ny(h)){const g=(h.__vccOpts||h)[r];g&&c.push(qt(g,o,i,f,d,a))}else{let v=h();c.push(()=>v.then(g=>{if(!g)return Promise.reject(new Error(`Couldn't resolve component "${d}" at "${f.path}"`));const y=V0(g)?g.default:g;f.components[d]=y;const b=(y.__vccOpts||y)[r];return b&&qt(b,o,i,f,d,a)()}))}}return c}function Ny(n){return typeof n=="object"||"displayName"in n||"props"in n||"__vccOpts"in n}function dc(n){const r=It(rs),o=It(of),i=De(()=>{const h=pn(n.to);return r.resolve(h)}),a=De(()=>{const{matched:h}=i.value,{length:v}=h,g=h[v-1],y=o.matched;if(!g||!y.length)return-1;const S=y.findIndex(Dn.bind(null,g));if(S>-1)return S;const b=pc(h[v-2]);return v>1&&pc(g)===b&&y[y.length-1].path!==b?y.findIndex(Dn.bind(null,h[v-2])):S}),c=De(()=>a.value>-1&&Uy(o.params,i.value.params)),f=De(()=>a.value>-1&&a.value===o.matched.length-1&&Jc(o.params,i.value.params));function d(h={}){return Gy(h)?r[pn(n.replace)?"replace":"push"](pn(n.to)).catch(ur):Promise.resolve()}return{route:i,href:De(()=>i.value.href),isActive:c,isExactActive:f,navigate:d}}const $y=Dc({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:dc,setup(n,{slots:r}){const o=en(dc(n)),{options:i}=It(rs),a=De(()=>({[gc(n.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[gc(n.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{const c=r.default&&r.default(o);return n.custom?c:Fc("a",{"aria-current":o.isExactActive?n.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:a.value},c)}}}),Wy=$y;function Gy(n){if(!(n.metaKey||n.altKey||n.ctrlKey||n.shiftKey)&&!n.defaultPrevented&&!(n.button!==void 0&&n.button!==0)){if(n.currentTarget&&n.currentTarget.getAttribute){const r=n.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(r))return}return n.preventDefault&&n.preventDefault(),!0}}function Uy(n,r){for(const o in r){const i=r[o],a=n[o];if(typeof i=="string"){if(i!==a)return!1}else if(!Tt(a)||a.length!==i.length||i.some((c,f)=>c!==a[f]))return!1}return!0}function pc(n){return n?n.aliasOf?n.aliasOf.path:n.path:""}const gc=(n,r,o)=>n??r??o,Vy=Dc({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:o}){const i=It(Yi),a=De(()=>n.route||i.value),c=It(hc,0),f=De(()=>{let v=pn(c);const{matched:g}=a.value;let y;for(;(y=g[v])&&!y.components;)v++;return v}),d=De(()=>a.value.matched[f.value]);sr(hc,De(()=>f.value+1)),sr(ky,d),sr(Yi,a);const h=so();return Qi(()=>[h.value,d.value,n.name],([v,g,y],[S,b,R])=>{g&&(g.instances[y]=v,b&&b!==g&&v&&v===S&&(g.leaveGuards.size||(g.leaveGuards=b.leaveGuards),g.updateGuards.size||(g.updateGuards=b.updateGuards))),v&&g&&(!b||!Dn(g,b)||!S)&&(g.enterCallbacks[y]||[]).forEach(E=>E(v))},{flush:"post"}),()=>{const v=a.value,g=n.name,y=d.value,S=y&&y.components[g];if(!S)return vc(o.default,{Component:S,route:v});const b=y.props[g],R=b?b===!0?v.params:typeof b=="function"?b(v):b:null,L=Fc(S,xe({},R,r,{onVnodeUnmounted:P=>{P.component.isUnmounted&&(y.instances[g]=null)},ref:h}));return vc(o.default,{Component:L,route:v})||L}}});function vc(n,r){if(!n)return null;const o=n(r);return o.length===1?o[0]:o}const Ky=Vy;function jy(n){const r=Py(n.routes,n),o=n.parseQuery||Hy,i=n.stringifyQuery||lc,a=n.history,c=tr(),f=tr(),d=tr(),h=Mc(Jt);let v=Jt;Cn&&n.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const g=Bi.bind(null,D=>""+D),y=Bi.bind(null,ny),S=Bi.bind(null,fr);function b(D,X){let j,J;return ef(D)?(j=r.getRecordMatcher(D),J=X):J=D,r.addRoute(J,j)}function R(D){const X=r.getRecordMatcher(D);X&&r.removeRoute(X)}function E(){return r.getRoutes().map(D=>D.record)}function L(D){return!!r.getRecordMatcher(D)}function P(D,X){if(X=xe({},X||h.value),typeof D=="string"){const ee=ki(o,D,X.path),we=r.resolve({path:ee.path},X),nn=a.createHref(ee.fullPath);return xe(ee,we,{params:S(we.params),hash:fr(ee.hash),redirectedFrom:void 0,href:nn})}let j;if(D.path!=null)j=xe({},D,{path:ki(o,D.path,X.path).path});else{const ee=xe({},D.params);for(const we in ee)ee[we]==null&&delete ee[we];j=xe({},D,{params:y(ee)}),X.params=y(X.params)}const J=r.resolve(j,X),ge=D.hash||"";J.params=g(S(J.params));const Re=iy(i,xe({},D,{hash:q0(ge),path:J.path})),fe=a.createHref(Re);return xe({fullPath:Re,hash:ge,query:i===lc?By(D.query):D.query||{}},J,{redirectedFrom:void 0,href:fe})}function I(D){return typeof D=="string"?ki(o,D,h.value.path):xe({},D)}function C(D,X){if(v!==D)return Fn(8,{from:X,to:D})}function N(D){return B(D)}function U(D){return N(xe(I(D),{replace:!0}))}function W(D){const X=D.matched[D.matched.length-1];if(X&&X.redirect){const{redirect:j}=X;let J=typeof j=="function"?j(D):j;return typeof J=="string"&&(J=J.includes("?")||J.includes("#")?J=I(J):{path:J},J.params={}),xe({query:D.query,hash:D.hash,params:J.path!=null?{}:D.params},J)}}function B(D,X){const j=v=P(D),J=h.value,ge=D.state,Re=D.force,fe=D.replace===!0,ee=W(j);if(ee)return B(xe(I(ee),{state:typeof ee=="object"?xe({},ge,ee.state):ge,force:Re,replace:fe}),X||j);const we=j;we.redirectedFrom=X;let nn;return!Re&&sy(i,J,j)&&(nn=Fn(16,{to:we,from:J}),Ee(J,J,!0,!1)),(nn?Promise.resolve(nn):V(we,J)).catch(Pe=>$t(Pe)?$t(Pe,2)?Pe:pe(Pe):ce(Pe,we,J)).then(Pe=>{if(Pe){if($t(Pe,2))return B(xe({replace:fe},I(Pe.to),{state:typeof Pe.to=="object"?xe({},ge,Pe.to.state):ge,force:Re}),X||we)}else Pe=Z(we,J,!0,fe,ge);return K(we,J,Pe),Pe})}function k(D,X){const j=C(D,X);return j?Promise.reject(j):Promise.resolve()}function $(D){const X=tt.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(D):D()}function V(D,X){let j;const[J,ge,Re]=zy(D,X);j=Ni(J.reverse(),"beforeRouteLeave",D,X);for(const ee of J)ee.leaveGuards.forEach(we=>{j.push(qt(we,D,X))});const fe=k.bind(null,D,X);return j.push(fe),nt(j).then(()=>{j=[];for(const ee of c.list())j.push(qt(ee,D,X));return j.push(fe),nt(j)}).then(()=>{j=Ni(ge,"beforeRouteUpdate",D,X);for(const ee of ge)ee.updateGuards.forEach(we=>{j.push(qt(we,D,X))});return j.push(fe),nt(j)}).then(()=>{j=[];for(const ee of Re)if(ee.beforeEnter)if(Tt(ee.beforeEnter))for(const we of ee.beforeEnter)j.push(qt(we,D,X));else j.push(qt(ee.beforeEnter,D,X));return j.push(fe),nt(j)}).then(()=>(D.matched.forEach(ee=>ee.enterCallbacks={}),j=Ni(Re,"beforeRouteEnter",D,X,$),j.push(fe),nt(j))).then(()=>{j=[];for(const ee of f.list())j.push(qt(ee,D,X));return j.push(fe),nt(j)}).catch(ee=>$t(ee,8)?ee:Promise.reject(ee))}function K(D,X,j){d.list().forEach(J=>$(()=>J(D,X,j)))}function Z(D,X,j,J,ge){const Re=C(D,X);if(Re)return Re;const fe=X===Jt,ee=Cn?history.state:{};j&&(J||fe?a.replace(D.fullPath,xe({scroll:fe&&ee&&ee.scroll},ge)):a.push(D.fullPath,ge)),h.value=D,Ee(D,X,j,fe),pe()}let Y;function me(){Y||(Y=a.listen((D,X,j)=>{const J=P(D),ge=W(J);if(ge){B(xe(ge,{replace:!0}),J).catch(ur);return}v=J;const Re=h.value;Cn&&py(rc(Re.fullPath,j.delta),ho()),V(J,Re).catch(fe=>$t(fe,12)?fe:$t(fe,2)?(B(fe.to,J).then(ee=>{$t(ee,20)&&!j.delta&&j.type===lr.pop&&a.go(-1,!1)}).catch(ur),Promise.reject()):(j.delta&&a.go(-j.delta,!1),ce(fe,J,Re))).then(fe=>{fe=fe||Z(J,Re,!1),fe&&(j.delta&&!$t(fe,8)?a.go(-j.delta,!1):j.type===lr.pop&&$t(fe,20)&&a.go(-1,!1)),K(J,Re,fe)}).catch(ur)}))}let be=tr(),Fe=tr(),ue;function ce(D,X,j){pe(D);const J=Fe.list();return J.length?J.forEach(ge=>ge(D,X,j)):console.error(D),Promise.reject(D)}function ke(){return ue&&h.value!==Jt?Promise.resolve():new Promise((D,X)=>{be.add([D,X])})}function pe(D){return ue||(ue=!D,me(),be.list().forEach(([X,j])=>D?j(D):X()),be.reset()),D}function Ee(D,X,j,J){const{scrollBehavior:ge}=n;if(!Cn||!ge)return Promise.resolve();const Re=!j&&gy(rc(D.fullPath,0))||(J||!j)&&history.state&&history.state.scroll||null;return Hn().then(()=>ge(D,X,Re)).then(fe=>fe&&dy(fe)).catch(fe=>ce(fe,D,X))}const _e=D=>a.go(D);let Ke;const tt=new Set,Lt={currentRoute:h,listening:!0,addRoute:b,removeRoute:R,hasRoute:L,getRoutes:E,resolve:P,options:n,push:N,replace:U,go:_e,back:()=>_e(-1),forward:()=>_e(1),beforeEach:c.add,beforeResolve:f.add,afterEach:d.add,onError:Fe.add,isReady:ke,install(D){const X=this;D.component("RouterLink",Wy),D.component("RouterView",Ky),D.config.globalProperties.$router=X,Object.defineProperty(D.config.globalProperties,"$route",{enumerable:!0,get:()=>pn(h)}),Cn&&!Ke&&h.value===Jt&&(Ke=!0,N(a.location).catch(ge=>{}));const j={};for(const ge in Jt)Object.defineProperty(j,ge,{get:()=>h.value[ge],enumerable:!0});D.provide(rs,X),D.provide(of,gm(j)),D.provide(Yi,h);const J=D.unmount;tt.add(D),D.unmount=function(){tt.delete(D),tt.size<1&&(v=Jt,Y&&Y(),Y=null,h.value=Jt,Ke=!1,ue=!1),J()}}};function nt(D){return D.reduce((X,j)=>X.then(()=>$(j)),Promise.resolve())}return Lt}function zy(n,r){const o=[],i=[],a=[],c=Math.max(r.matched.length,n.matched.length);for(let f=0;f<c;f++){const d=r.matched[f];d&&(n.matched.find(v=>Dn(v,d))?i.push(d):o.push(d));const h=n.matched[f];h&&(r.matched.find(v=>Dn(v,h))||a.push(h))}return[o,i,a]}const Yy=()=>Pt(()=>import("./admin-BH6uiYBb.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])),Zy=()=>Pt(()=>import("./browser-BVciW8XB.js"),__vite__mapDeps([21,1,2,22,23,7,8,24,25,9,10,26,3,4,5,6,11,12,13,14,15,27,28,18,19,29,30,31,32,33,34,35,36,37])),Xy=()=>Pt(()=>import("./http-error-HtOe8jPa.js"),__vite__mapDeps([38,1,2,4,5,6,7,8,9,10,11,12,13,39])),_y=()=>Pt(()=>import("./reader-C5OTEQ7N.js"),__vite__mapDeps([40,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,28,25,18,19,29,41,42,43,44,24,26,27,30,31,45])),Qy=()=>Pt(()=>import("./flag-tab-iJTJldQ1.js"),__vite__mapDeps([46,1,2,22,23,24,25,9,10,26,47])),Jy=()=>Pt(()=>import("./user-tab-Cdspo8ie.js"),__vite__mapDeps([48,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,24,26,51,52,5,12])),qy=()=>Pt(()=>import("./group-tab-DdmGE4gB.js"),__vite__mapDeps([53,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,43,44,54])),e2=()=>Pt(()=>import("./library-tab-DLAJV6j2.js"),__vite__mapDeps([55,1,2,49,6,7,8,9,10,11,28,25,18,19,29,22,23,35,32,33,50,34,36,24,26,51,52,41,42,56])),t2=()=>Pt(()=>import("./task-tab-0t7ZJlwL.js"),__vite__mapDeps([57,1,2,32,7,8,33,58])),n2=()=>Pt(()=>import("./stats-tab-DL4J3pvZ.js"),__vite__mapDeps([59,1,2,32,7,8,33,14,30,22,23,60])),r2={name:"browser",params:window.CODEX.LAST_ROUTE||zc.route},o2=[{name:"home",path:"/",redirect:r2},{name:"reader",path:"/c/:pk/:page",component:_y},{name:"browser",path:"/:group/:pks/:page",component:Zy},{name:"admin",path:"/admin",component:Yy,redirect:"/admin/libraries",children:[{name:"admin-users",path:"users",component:Jy},{name:"admin-groups",path:"groups",component:qy},{name:"admin-libraries",path:"libraries",component:e2},{name:"admin-flags",path:"flags",component:Qy},{name:"admin-tasks",path:"tasks",component:t2},{name:"admin-stats",path:"stats",component:n2}]},{name:"error",path:"/error/:code",component:Xy,props:!0},{name:"404",path:"/:pathMatch(.*)*",redirect:"/error/404"}],Ne=new jy({history:Sy(window.CODEX.APP_PATH),routes:o2});var nr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sf(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var co={exports:{}};/**
|
|
7
7
|
* @license
|
|
8
8
|
* Lodash <https://lodash.com/>
|
|
9
9
|
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
Binary file
|
|
Binary file
|