codex 1.5.13a2__py3-none-any.whl → 1.5.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of codex might be problematic. Click here for more details.

Files changed (396) hide show
  1. codex/librarian/importer/create_fks.py +13 -9
  2. codex/librarian/importer/importerd.py +2 -2
  3. codex/models/comic.py +4 -0
  4. codex/search/backend.py +9 -1
  5. codex/search/indexes.py +2 -0
  6. codex/settings/settings.py +34 -22
  7. codex/settings/whitenoise.py +1 -1
  8. codex/static_root/assets/{VCheckbox-BR-5qiW4.d4e12b9a3549.js → VCheckbox-CJQL54i9.0296823df6ca.js} +1 -1
  9. codex/static_root/assets/VCheckbox-CJQL54i9.0296823df6ca.js.br +0 -0
  10. codex/static_root/assets/VCheckbox-CJQL54i9.0296823df6ca.js.gz +0 -0
  11. codex/static_root/assets/{VCheckbox-BR-5qiW4.js → VCheckbox-CJQL54i9.js} +1 -1
  12. codex/static_root/assets/VCheckbox-CJQL54i9.js.br +0 -0
  13. codex/static_root/assets/VCheckbox-CJQL54i9.js.gz +0 -0
  14. codex/static_root/assets/{VCheckboxBtn-C7T6Tf80.597cfcc88998.js → VCheckboxBtn-tlNM-0ad.d65f170bccff.js} +1 -1
  15. codex/static_root/assets/VCheckboxBtn-tlNM-0ad.d65f170bccff.js.br +0 -0
  16. codex/static_root/assets/VCheckboxBtn-tlNM-0ad.d65f170bccff.js.gz +0 -0
  17. codex/static_root/assets/{VCheckboxBtn-C7T6Tf80.js → VCheckboxBtn-tlNM-0ad.js} +1 -1
  18. codex/static_root/assets/VCheckboxBtn-tlNM-0ad.js.br +0 -0
  19. codex/static_root/assets/VCheckboxBtn-tlNM-0ad.js.gz +0 -0
  20. codex/static_root/assets/{VCombobox-CA6L757N.c9c01cbc12eb.js → VCombobox-CkY5XApP.aaba85cdee5f.js} +1 -1
  21. codex/static_root/assets/VCombobox-CkY5XApP.aaba85cdee5f.js.br +0 -0
  22. codex/static_root/assets/VCombobox-CkY5XApP.aaba85cdee5f.js.gz +0 -0
  23. codex/static_root/assets/{VCombobox-CA6L757N.js → VCombobox-CkY5XApP.js} +1 -1
  24. codex/static_root/assets/VCombobox-CkY5XApP.js.br +0 -0
  25. codex/static_root/assets/VCombobox-CkY5XApP.js.gz +0 -0
  26. codex/static_root/assets/{VDataTableVirtual-DgdQqVhC.118522d90dfd.js → VDataTableVirtual-BJGcTO-T.44d8d103caee.js} +1 -1
  27. codex/static_root/assets/VDataTableVirtual-BJGcTO-T.44d8d103caee.js.br +0 -0
  28. codex/static_root/assets/VDataTableVirtual-BJGcTO-T.44d8d103caee.js.gz +0 -0
  29. codex/static_root/assets/{VDataTableVirtual-DgdQqVhC.js → VDataTableVirtual-BJGcTO-T.js} +1 -1
  30. codex/static_root/assets/VDataTableVirtual-BJGcTO-T.js.br +0 -0
  31. codex/static_root/assets/VDataTableVirtual-BJGcTO-T.js.gz +0 -0
  32. codex/static_root/assets/{VExpansionPanel-DSgyCbMu.ce806293d8ad.js → VExpansionPanel-iuNlRDRN.32914d43b986.js} +1 -1
  33. codex/static_root/assets/VExpansionPanel-iuNlRDRN.32914d43b986.js.br +0 -0
  34. codex/static_root/assets/VExpansionPanel-iuNlRDRN.32914d43b986.js.gz +0 -0
  35. codex/static_root/assets/{VExpansionPanel-DSgyCbMu.js → VExpansionPanel-iuNlRDRN.js} +1 -1
  36. codex/static_root/assets/VExpansionPanel-iuNlRDRN.js.br +0 -0
  37. codex/static_root/assets/VExpansionPanel-iuNlRDRN.js.gz +0 -0
  38. codex/static_root/assets/{VMain-CDWaq_uU.9350720f2523.js → VMain-KVBhuT21.5b0d88cd01a9.js} +1 -1
  39. codex/static_root/assets/VMain-KVBhuT21.5b0d88cd01a9.js.br +0 -0
  40. codex/static_root/assets/VMain-KVBhuT21.5b0d88cd01a9.js.gz +0 -0
  41. codex/static_root/assets/{VMain-CDWaq_uU.js → VMain-KVBhuT21.js} +1 -1
  42. codex/static_root/assets/VMain-KVBhuT21.js.br +0 -0
  43. codex/static_root/assets/VMain-KVBhuT21.js.gz +0 -0
  44. codex/static_root/assets/{VRadioGroup-1KnJv1YV.c78bc794333b.js → VRadioGroup-CSbyI7OY.3fca1f8a79a9.js} +1 -1
  45. codex/static_root/assets/VRadioGroup-CSbyI7OY.3fca1f8a79a9.js.br +0 -0
  46. codex/static_root/assets/VRadioGroup-CSbyI7OY.3fca1f8a79a9.js.gz +0 -0
  47. codex/static_root/assets/{VRadioGroup-1KnJv1YV.js → VRadioGroup-CSbyI7OY.js} +1 -1
  48. codex/static_root/assets/VRadioGroup-CSbyI7OY.js.br +0 -0
  49. codex/static_root/assets/VRadioGroup-CSbyI7OY.js.gz +0 -0
  50. codex/static_root/assets/VSelect-Bng0oQPD.7e78a191f34b.js +1 -0
  51. codex/static_root/assets/VSelect-Bng0oQPD.7e78a191f34b.js.br +0 -0
  52. codex/static_root/assets/VSelect-Bng0oQPD.7e78a191f34b.js.gz +0 -0
  53. codex/static_root/assets/VSelect-Bng0oQPD.js +1 -0
  54. codex/static_root/assets/VSelect-Bng0oQPD.js.br +0 -0
  55. codex/static_root/assets/VSelect-Bng0oQPD.js.gz +0 -0
  56. codex/static_root/assets/{VSelectionControl-CEOyDLZC.60a1d02bebde.js → VSelectionControl-BgzeMswJ.1379ba73dcb2.js} +1 -1
  57. codex/static_root/assets/VSelectionControl-BgzeMswJ.1379ba73dcb2.js.br +0 -0
  58. codex/static_root/assets/VSelectionControl-BgzeMswJ.1379ba73dcb2.js.gz +0 -0
  59. codex/static_root/assets/{VSelectionControl-CEOyDLZC.js → VSelectionControl-BgzeMswJ.js} +1 -1
  60. codex/static_root/assets/VSelectionControl-BgzeMswJ.js.br +0 -0
  61. codex/static_root/assets/VSelectionControl-BgzeMswJ.js.gz +0 -0
  62. codex/static_root/assets/{VSlideGroup-r8lyA6_4.d51fe70b8cfa.js → VSlideGroup-r0m4k0_1.5acebfb723b6.js} +1 -1
  63. codex/static_root/assets/VSlideGroup-r0m4k0_1.5acebfb723b6.js.br +0 -0
  64. codex/static_root/assets/VSlideGroup-r0m4k0_1.5acebfb723b6.js.gz +0 -0
  65. codex/static_root/assets/{VSlideGroup-r8lyA6_4.js → VSlideGroup-r0m4k0_1.js} +1 -1
  66. codex/static_root/assets/VSlideGroup-r0m4k0_1.js.br +0 -0
  67. codex/static_root/assets/VSlideGroup-r0m4k0_1.js.gz +0 -0
  68. codex/static_root/assets/{VTable-CyZmujCR.5d4fdcc0324d.js → VTable-DibtRyqi.8af08167ae77.js} +1 -1
  69. codex/static_root/assets/VTable-DibtRyqi.8af08167ae77.js.br +0 -0
  70. codex/static_root/assets/VTable-DibtRyqi.8af08167ae77.js.gz +0 -0
  71. codex/static_root/assets/{VTable-CyZmujCR.js → VTable-DibtRyqi.js} +1 -1
  72. codex/static_root/assets/VTable-DibtRyqi.js.br +0 -0
  73. codex/static_root/assets/VTable-DibtRyqi.js.gz +0 -0
  74. codex/static_root/assets/{VToolbar-qYCVOLXR.07eda01fd108.js → VToolbar-qC6PomNj.f738e6696804.js} +2 -2
  75. codex/static_root/assets/VToolbar-qC6PomNj.f738e6696804.js.br +0 -0
  76. codex/static_root/assets/VToolbar-qC6PomNj.f738e6696804.js.gz +0 -0
  77. codex/static_root/assets/{VToolbar-qYCVOLXR.js → VToolbar-qC6PomNj.js} +2 -2
  78. codex/static_root/assets/VToolbar-qC6PomNj.js.br +0 -0
  79. codex/static_root/assets/VToolbar-qC6PomNj.js.gz +0 -0
  80. codex/static_root/assets/{VWindowItem-DAPhfogt.d9e874ecf5be.js → VWindowItem-DtPdrKkO.df3cecc6ea62.js} +1 -1
  81. codex/static_root/assets/VWindowItem-DtPdrKkO.df3cecc6ea62.js.br +0 -0
  82. codex/static_root/assets/VWindowItem-DtPdrKkO.df3cecc6ea62.js.gz +0 -0
  83. codex/static_root/assets/{VWindowItem-DAPhfogt.js → VWindowItem-DtPdrKkO.js} +1 -1
  84. codex/static_root/assets/VWindowItem-DtPdrKkO.js.br +0 -0
  85. codex/static_root/assets/VWindowItem-DtPdrKkO.js.gz +0 -0
  86. codex/static_root/assets/{admin-CfqyTXqy.b073b6fa7ebd.js → admin-BaX1b6zJ.38832467c7a9.js} +1 -1
  87. codex/static_root/assets/admin-BaX1b6zJ.38832467c7a9.js.br +0 -0
  88. codex/static_root/assets/admin-BaX1b6zJ.38832467c7a9.js.gz +0 -0
  89. codex/static_root/assets/{admin-CfqyTXqy.js → admin-BaX1b6zJ.js} +1 -1
  90. codex/static_root/assets/admin-BaX1b6zJ.js.br +0 -0
  91. codex/static_root/assets/admin-BaX1b6zJ.js.gz +0 -0
  92. codex/static_root/assets/{admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js → admin-drawer-panel-Bd8JDQcd.a639a777a3cb.js} +2 -2
  93. codex/static_root/assets/admin-drawer-panel-Bd8JDQcd.a639a777a3cb.js.br +0 -0
  94. codex/static_root/assets/admin-drawer-panel-Bd8JDQcd.a639a777a3cb.js.gz +0 -0
  95. codex/static_root/assets/{admin-drawer-panel-UQNBz5Mr.js → admin-drawer-panel-Bd8JDQcd.js} +2 -2
  96. codex/static_root/assets/admin-drawer-panel-Bd8JDQcd.js.br +0 -0
  97. codex/static_root/assets/admin-drawer-panel-Bd8JDQcd.js.gz +0 -0
  98. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css +1 -0
  99. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css.br +0 -0
  100. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.b519336cb005.css.gz +0 -0
  101. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css +1 -0
  102. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css.br +0 -0
  103. codex/static_root/assets/admin-drawer-panel-Cr-0BCQv.css.gz +0 -0
  104. codex/static_root/assets/{browser-CTxEKlCx.211d729d9165.css → browser-Bnfe7deQ.ca3f3bb6c77c.css} +1 -1
  105. codex/static_root/assets/browser-Bnfe7deQ.ca3f3bb6c77c.css.br +0 -0
  106. codex/static_root/assets/browser-Bnfe7deQ.ca3f3bb6c77c.css.gz +0 -0
  107. codex/static_root/assets/{browser-CTxEKlCx.css → browser-Bnfe7deQ.css} +1 -1
  108. codex/static_root/assets/browser-Bnfe7deQ.css.br +0 -0
  109. codex/static_root/assets/browser-Bnfe7deQ.css.gz +0 -0
  110. codex/static_root/assets/browser-CViSPlzZ.ff279ffe86e0.js +1 -0
  111. codex/static_root/assets/browser-CViSPlzZ.ff279ffe86e0.js.br +0 -0
  112. codex/static_root/assets/browser-CViSPlzZ.ff279ffe86e0.js.gz +0 -0
  113. codex/static_root/assets/browser-CViSPlzZ.js +1 -0
  114. codex/static_root/assets/browser-CViSPlzZ.js.br +0 -0
  115. codex/static_root/assets/browser-CViSPlzZ.js.gz +0 -0
  116. codex/static_root/assets/{change-password-dialog-D80TfT-n.284c707d3d79.js → change-password-dialog-2SRI8ZTS.d2faf818d88a.js} +1 -1
  117. codex/static_root/assets/change-password-dialog-2SRI8ZTS.d2faf818d88a.js.br +0 -0
  118. codex/static_root/assets/change-password-dialog-2SRI8ZTS.d2faf818d88a.js.gz +0 -0
  119. codex/static_root/assets/{change-password-dialog-D80TfT-n.js → change-password-dialog-2SRI8ZTS.js} +1 -1
  120. codex/static_root/assets/change-password-dialog-2SRI8ZTS.js.br +0 -0
  121. codex/static_root/assets/change-password-dialog-2SRI8ZTS.js.gz +0 -0
  122. codex/static_root/assets/{confirm-dialog-CTwvsrD2.8de12739f859.js → confirm-dialog-Z5DZqsRj.4154bccd3717.js} +1 -1
  123. codex/static_root/assets/confirm-dialog-Z5DZqsRj.4154bccd3717.js.br +0 -0
  124. codex/static_root/assets/confirm-dialog-Z5DZqsRj.4154bccd3717.js.gz +0 -0
  125. codex/static_root/assets/{confirm-dialog-CTwvsrD2.js → confirm-dialog-Z5DZqsRj.js} +1 -1
  126. codex/static_root/assets/confirm-dialog-Z5DZqsRj.js.br +0 -0
  127. codex/static_root/assets/confirm-dialog-Z5DZqsRj.js.gz +0 -0
  128. codex/static_root/assets/{confirm-footer-CLcqjnLg.ebed69027134.js → confirm-footer-bZLoGqQV.2e75995120d4.js} +1 -1
  129. codex/static_root/assets/confirm-footer-bZLoGqQV.2e75995120d4.js.br +0 -0
  130. codex/static_root/assets/confirm-footer-bZLoGqQV.2e75995120d4.js.gz +0 -0
  131. codex/static_root/assets/{confirm-footer-CLcqjnLg.js → confirm-footer-bZLoGqQV.js} +1 -1
  132. codex/static_root/assets/confirm-footer-bZLoGqQV.js.br +0 -0
  133. codex/static_root/assets/confirm-footer-bZLoGqQV.js.gz +0 -0
  134. codex/static_root/assets/{datetime-column-DPVO98E2.27e26fb391ca.js → datetime-column-C0IBXj-b.15ec505c39d1.js} +1 -1
  135. codex/static_root/assets/datetime-column-C0IBXj-b.15ec505c39d1.js.br +0 -0
  136. codex/static_root/assets/datetime-column-C0IBXj-b.15ec505c39d1.js.gz +0 -0
  137. codex/static_root/assets/{datetime-column-DPVO98E2.js → datetime-column-C0IBXj-b.js} +1 -1
  138. codex/static_root/assets/datetime-column-C0IBXj-b.js.br +0 -0
  139. codex/static_root/assets/datetime-column-C0IBXj-b.js.gz +0 -0
  140. codex/static_root/assets/{filter-Cqjy01SO.71710ea1c7f8.js → filter-C9a1yuyT.8246be2d72e0.js} +1 -1
  141. codex/static_root/assets/filter-C9a1yuyT.8246be2d72e0.js.br +0 -0
  142. codex/static_root/assets/filter-C9a1yuyT.8246be2d72e0.js.gz +0 -0
  143. codex/static_root/assets/{filter-Cqjy01SO.js → filter-C9a1yuyT.js} +1 -1
  144. codex/static_root/assets/filter-C9a1yuyT.js.br +0 -0
  145. codex/static_root/assets/filter-C9a1yuyT.js.gz +0 -0
  146. codex/static_root/assets/flag-tab-CTkQVifL.3777e0ad02e2.js +1 -0
  147. codex/static_root/assets/flag-tab-CTkQVifL.3777e0ad02e2.js.br +0 -0
  148. codex/static_root/assets/flag-tab-CTkQVifL.3777e0ad02e2.js.gz +0 -0
  149. codex/static_root/assets/flag-tab-CTkQVifL.js +1 -0
  150. codex/static_root/assets/flag-tab-CTkQVifL.js.br +0 -0
  151. codex/static_root/assets/flag-tab-CTkQVifL.js.gz +0 -0
  152. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css +1 -0
  153. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.br +0 -0
  154. codex/static_root/assets/flag-tab-D_HjkAta.203bedf35ce7.css.gz +0 -0
  155. codex/static_root/assets/flag-tab-D_HjkAta.css +1 -0
  156. codex/static_root/assets/flag-tab-D_HjkAta.css.br +0 -0
  157. codex/static_root/assets/flag-tab-D_HjkAta.css.gz +0 -0
  158. codex/static_root/assets/{group-tab-DknI2YL3.7b2e5d32ee7e.js → group-tab-DNlUAhCM.78003689c3a2.js} +1 -1
  159. codex/static_root/assets/group-tab-DNlUAhCM.78003689c3a2.js.br +0 -0
  160. codex/static_root/assets/group-tab-DNlUAhCM.78003689c3a2.js.gz +0 -0
  161. codex/static_root/assets/{group-tab-DknI2YL3.js → group-tab-DNlUAhCM.js} +1 -1
  162. codex/static_root/assets/group-tab-DNlUAhCM.js.br +0 -0
  163. codex/static_root/assets/group-tab-DNlUAhCM.js.gz +0 -0
  164. codex/static_root/assets/{http-error-DxxoT0wf.8f26afe5c1dd.js → http-error-CB3r_6Rg.817fa263671d.js} +1 -1
  165. codex/static_root/assets/http-error-CB3r_6Rg.817fa263671d.js.br +0 -0
  166. codex/static_root/assets/http-error-CB3r_6Rg.817fa263671d.js.gz +0 -0
  167. codex/static_root/assets/{http-error-DxxoT0wf.js → http-error-CB3r_6Rg.js} +1 -1
  168. codex/static_root/assets/http-error-CB3r_6Rg.js.br +0 -0
  169. codex/static_root/assets/http-error-CB3r_6Rg.js.gz +0 -0
  170. codex/static_root/assets/{library-tab-DXCuu0zS.6a7b7e48a6f5.js → library-tab-Bn0w-GQL.5820f057238d.js} +1 -1
  171. codex/static_root/assets/library-tab-Bn0w-GQL.5820f057238d.js.br +0 -0
  172. codex/static_root/assets/library-tab-Bn0w-GQL.5820f057238d.js.gz +0 -0
  173. codex/static_root/assets/{library-tab-DXCuu0zS.js → library-tab-Bn0w-GQL.js} +1 -1
  174. codex/static_root/assets/library-tab-Bn0w-GQL.js.br +0 -0
  175. codex/static_root/assets/library-tab-Bn0w-GQL.js.gz +0 -0
  176. codex/static_root/assets/{main-CacfwsKA.4f849ef1c5db.css → main-ClKzvaJK.04ea1888c6b4.css} +1 -1
  177. codex/static_root/assets/main-ClKzvaJK.04ea1888c6b4.css.br +0 -0
  178. codex/static_root/assets/{main-CacfwsKA.4f849ef1c5db.css.gz → main-ClKzvaJK.04ea1888c6b4.css.gz} +0 -0
  179. codex/static_root/assets/{main-CacfwsKA.css → main-ClKzvaJK.css} +1 -1
  180. codex/static_root/assets/main-ClKzvaJK.css.br +0 -0
  181. codex/static_root/assets/{main-CacfwsKA.css.gz → main-ClKzvaJK.css.gz} +0 -0
  182. codex/static_root/assets/main-YL3nS1Ml.e60fb4d9fcf6.js +37 -0
  183. codex/static_root/assets/main-YL3nS1Ml.e60fb4d9fcf6.js.br +0 -0
  184. codex/static_root/assets/main-YL3nS1Ml.e60fb4d9fcf6.js.gz +0 -0
  185. codex/static_root/assets/main-YL3nS1Ml.js +37 -0
  186. codex/static_root/assets/main-YL3nS1Ml.js.br +0 -0
  187. codex/static_root/assets/main-YL3nS1Ml.js.gz +0 -0
  188. codex/static_root/assets/{metadata-dialog-CZDWNVCD.js → metadata-dialog-C7rQOEVd.ceb8516fb954.js} +1 -1
  189. codex/static_root/assets/metadata-dialog-C7rQOEVd.ceb8516fb954.js.br +0 -0
  190. codex/static_root/assets/metadata-dialog-C7rQOEVd.ceb8516fb954.js.gz +0 -0
  191. codex/static_root/assets/{metadata-dialog-CZDWNVCD.b78ed72bc090.js → metadata-dialog-C7rQOEVd.js} +1 -1
  192. codex/static_root/assets/metadata-dialog-C7rQOEVd.js.br +0 -0
  193. codex/static_root/assets/metadata-dialog-C7rQOEVd.js.gz +0 -0
  194. codex/static_root/assets/{pdf-doc-C_LEA8HV.6bd1dba60a0b.js → pdf-doc-ti4yO5IP.42f93d4dbbaa.js} +1 -1
  195. codex/static_root/assets/pdf-doc-ti4yO5IP.42f93d4dbbaa.js.br +0 -0
  196. codex/static_root/assets/pdf-doc-ti4yO5IP.42f93d4dbbaa.js.gz +0 -0
  197. codex/static_root/assets/{pdf-doc-C_LEA8HV.js → pdf-doc-ti4yO5IP.js} +1 -1
  198. codex/static_root/assets/pdf-doc-ti4yO5IP.js.br +0 -0
  199. codex/static_root/assets/pdf-doc-ti4yO5IP.js.gz +0 -0
  200. codex/static_root/assets/{reader-DXk46jdF.0a2b0809bd02.js → reader-BlLttrze.056690fb7544.js} +2 -2
  201. codex/static_root/assets/reader-BlLttrze.056690fb7544.js.br +0 -0
  202. codex/static_root/assets/reader-BlLttrze.056690fb7544.js.gz +0 -0
  203. codex/static_root/assets/{reader-DXk46jdF.js → reader-BlLttrze.js} +2 -2
  204. codex/static_root/assets/reader-BlLttrze.js.br +0 -0
  205. codex/static_root/assets/reader-BlLttrze.js.gz +0 -0
  206. codex/static_root/assets/{stats-tab-Dy0YEoJ4.f24c8ddba0d3.js → stats-tab-WNjGvBtl.f4b6069bbd59.js} +1 -1
  207. codex/static_root/assets/stats-tab-WNjGvBtl.f4b6069bbd59.js.br +0 -0
  208. codex/static_root/assets/stats-tab-WNjGvBtl.f4b6069bbd59.js.gz +0 -0
  209. codex/static_root/assets/{stats-tab-Dy0YEoJ4.js → stats-tab-WNjGvBtl.js} +1 -1
  210. codex/static_root/assets/stats-tab-WNjGvBtl.js.br +0 -0
  211. codex/static_root/assets/stats-tab-WNjGvBtl.js.gz +0 -0
  212. codex/static_root/assets/{task-tab-Bv3B4rCC.1546850899dc.js → task-tab-D7YR7Dg8.e5fa5faea233.js} +1 -1
  213. codex/static_root/assets/task-tab-D7YR7Dg8.e5fa5faea233.js.br +0 -0
  214. codex/static_root/assets/task-tab-D7YR7Dg8.e5fa5faea233.js.gz +0 -0
  215. codex/static_root/assets/{task-tab-Bv3B4rCC.js → task-tab-D7YR7Dg8.js} +1 -1
  216. codex/static_root/assets/task-tab-D7YR7Dg8.js.br +0 -0
  217. codex/static_root/assets/task-tab-D7YR7Dg8.js.gz +0 -0
  218. codex/static_root/assets/{user-tab-CSF2DZe5.8e65aaed43b2.js → user-tab-yg1892EK.6d2036fa37e0.js} +1 -1
  219. codex/static_root/assets/user-tab-yg1892EK.6d2036fa37e0.js.br +0 -0
  220. codex/static_root/assets/user-tab-yg1892EK.6d2036fa37e0.js.gz +0 -0
  221. codex/static_root/assets/{user-tab-CSF2DZe5.js → user-tab-yg1892EK.js} +1 -1
  222. codex/static_root/assets/user-tab-yg1892EK.js.br +0 -0
  223. codex/static_root/assets/user-tab-yg1892EK.js.gz +0 -0
  224. codex/static_root/{manifest.24ec466b9bcf.json → manifest.ae8037157171.json} +210 -210
  225. codex/static_root/manifest.ae8037157171.json.br +0 -0
  226. codex/static_root/manifest.ae8037157171.json.gz +0 -0
  227. codex/static_root/manifest.json +210 -210
  228. codex/static_root/manifest.json.br +0 -0
  229. codex/static_root/manifest.json.gz +0 -0
  230. codex/static_root/staticfiles.json +1 -1
  231. codex/status.py +7 -3
  232. codex/templates/search/indexes/codex/comic_text.txt +1 -0
  233. codex/views/browser/browser_annotations.py +44 -34
  234. codex/views/browser/metadata.py +7 -5
  235. codex/views/error.py +3 -1
  236. {codex-1.5.13a2.dist-info → codex-1.5.14.dist-info}/METADATA +2 -1
  237. {codex-1.5.13a2.dist-info → codex-1.5.14.dist-info}/RECORD +240 -240
  238. codex/static_root/assets/VCheckbox-BR-5qiW4.d4e12b9a3549.js.br +0 -0
  239. codex/static_root/assets/VCheckbox-BR-5qiW4.d4e12b9a3549.js.gz +0 -0
  240. codex/static_root/assets/VCheckbox-BR-5qiW4.js.br +0 -0
  241. codex/static_root/assets/VCheckbox-BR-5qiW4.js.gz +0 -0
  242. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.597cfcc88998.js.br +0 -0
  243. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.597cfcc88998.js.gz +0 -0
  244. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.js.br +0 -0
  245. codex/static_root/assets/VCheckboxBtn-C7T6Tf80.js.gz +0 -0
  246. codex/static_root/assets/VCombobox-CA6L757N.c9c01cbc12eb.js.br +0 -0
  247. codex/static_root/assets/VCombobox-CA6L757N.c9c01cbc12eb.js.gz +0 -0
  248. codex/static_root/assets/VCombobox-CA6L757N.js.br +0 -0
  249. codex/static_root/assets/VCombobox-CA6L757N.js.gz +0 -0
  250. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.118522d90dfd.js.br +0 -0
  251. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.118522d90dfd.js.gz +0 -0
  252. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.js.br +0 -0
  253. codex/static_root/assets/VDataTableVirtual-DgdQqVhC.js.gz +0 -0
  254. codex/static_root/assets/VExpansionPanel-DSgyCbMu.ce806293d8ad.js.br +0 -0
  255. codex/static_root/assets/VExpansionPanel-DSgyCbMu.ce806293d8ad.js.gz +0 -0
  256. codex/static_root/assets/VExpansionPanel-DSgyCbMu.js.br +0 -0
  257. codex/static_root/assets/VExpansionPanel-DSgyCbMu.js.gz +0 -0
  258. codex/static_root/assets/VMain-CDWaq_uU.9350720f2523.js.br +0 -0
  259. codex/static_root/assets/VMain-CDWaq_uU.9350720f2523.js.gz +0 -0
  260. codex/static_root/assets/VMain-CDWaq_uU.js.br +0 -0
  261. codex/static_root/assets/VMain-CDWaq_uU.js.gz +0 -0
  262. codex/static_root/assets/VRadioGroup-1KnJv1YV.c78bc794333b.js.br +0 -0
  263. codex/static_root/assets/VRadioGroup-1KnJv1YV.c78bc794333b.js.gz +0 -0
  264. codex/static_root/assets/VRadioGroup-1KnJv1YV.js.br +0 -0
  265. codex/static_root/assets/VRadioGroup-1KnJv1YV.js.gz +0 -0
  266. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js +0 -1
  267. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js.br +0 -0
  268. codex/static_root/assets/VSelect-CLw1oGQg.37122543e75e.js.gz +0 -0
  269. codex/static_root/assets/VSelect-CLw1oGQg.js +0 -1
  270. codex/static_root/assets/VSelect-CLw1oGQg.js.br +0 -0
  271. codex/static_root/assets/VSelect-CLw1oGQg.js.gz +0 -0
  272. codex/static_root/assets/VSelectionControl-CEOyDLZC.60a1d02bebde.js.br +0 -0
  273. codex/static_root/assets/VSelectionControl-CEOyDLZC.60a1d02bebde.js.gz +0 -0
  274. codex/static_root/assets/VSelectionControl-CEOyDLZC.js.br +0 -0
  275. codex/static_root/assets/VSelectionControl-CEOyDLZC.js.gz +0 -0
  276. codex/static_root/assets/VSlideGroup-r8lyA6_4.d51fe70b8cfa.js.br +0 -0
  277. codex/static_root/assets/VSlideGroup-r8lyA6_4.d51fe70b8cfa.js.gz +0 -0
  278. codex/static_root/assets/VSlideGroup-r8lyA6_4.js.br +0 -0
  279. codex/static_root/assets/VSlideGroup-r8lyA6_4.js.gz +0 -0
  280. codex/static_root/assets/VTable-CyZmujCR.5d4fdcc0324d.js.br +0 -0
  281. codex/static_root/assets/VTable-CyZmujCR.5d4fdcc0324d.js.gz +0 -0
  282. codex/static_root/assets/VTable-CyZmujCR.js.br +0 -0
  283. codex/static_root/assets/VTable-CyZmujCR.js.gz +0 -0
  284. codex/static_root/assets/VToolbar-qYCVOLXR.07eda01fd108.js.br +0 -0
  285. codex/static_root/assets/VToolbar-qYCVOLXR.07eda01fd108.js.gz +0 -0
  286. codex/static_root/assets/VToolbar-qYCVOLXR.js.br +0 -0
  287. codex/static_root/assets/VToolbar-qYCVOLXR.js.gz +0 -0
  288. codex/static_root/assets/VWindowItem-DAPhfogt.d9e874ecf5be.js.br +0 -0
  289. codex/static_root/assets/VWindowItem-DAPhfogt.d9e874ecf5be.js.gz +0 -0
  290. codex/static_root/assets/VWindowItem-DAPhfogt.js.br +0 -0
  291. codex/static_root/assets/VWindowItem-DAPhfogt.js.gz +0 -0
  292. codex/static_root/assets/admin-CfqyTXqy.b073b6fa7ebd.js.br +0 -0
  293. codex/static_root/assets/admin-CfqyTXqy.b073b6fa7ebd.js.gz +0 -0
  294. codex/static_root/assets/admin-CfqyTXqy.js.br +0 -0
  295. codex/static_root/assets/admin-CfqyTXqy.js.gz +0 -0
  296. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css +0 -1
  297. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css.br +0 -0
  298. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.1531b747003f.css.gz +0 -0
  299. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css +0 -1
  300. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css.br +0 -0
  301. codex/static_root/assets/admin-drawer-panel-Bk7z8uTR.css.gz +0 -0
  302. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js.br +0 -0
  303. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.4f87b323dcdc.js.gz +0 -0
  304. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.js.br +0 -0
  305. codex/static_root/assets/admin-drawer-panel-UQNBz5Mr.js.gz +0 -0
  306. codex/static_root/assets/browser-CTxEKlCx.211d729d9165.css.br +0 -0
  307. codex/static_root/assets/browser-CTxEKlCx.211d729d9165.css.gz +0 -0
  308. codex/static_root/assets/browser-CTxEKlCx.css.br +0 -0
  309. codex/static_root/assets/browser-CTxEKlCx.css.gz +0 -0
  310. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js +0 -1
  311. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js.br +0 -0
  312. codex/static_root/assets/browser-CWqU3TI5.4583f12be6b9.js.gz +0 -0
  313. codex/static_root/assets/browser-CWqU3TI5.js +0 -1
  314. codex/static_root/assets/browser-CWqU3TI5.js.br +0 -0
  315. codex/static_root/assets/browser-CWqU3TI5.js.gz +0 -0
  316. codex/static_root/assets/change-password-dialog-D80TfT-n.284c707d3d79.js.br +0 -0
  317. codex/static_root/assets/change-password-dialog-D80TfT-n.284c707d3d79.js.gz +0 -0
  318. codex/static_root/assets/change-password-dialog-D80TfT-n.js.br +0 -0
  319. codex/static_root/assets/change-password-dialog-D80TfT-n.js.gz +0 -0
  320. codex/static_root/assets/confirm-dialog-CTwvsrD2.8de12739f859.js.br +0 -0
  321. codex/static_root/assets/confirm-dialog-CTwvsrD2.8de12739f859.js.gz +0 -0
  322. codex/static_root/assets/confirm-dialog-CTwvsrD2.js.br +0 -0
  323. codex/static_root/assets/confirm-dialog-CTwvsrD2.js.gz +0 -0
  324. codex/static_root/assets/confirm-footer-CLcqjnLg.ebed69027134.js.br +0 -0
  325. codex/static_root/assets/confirm-footer-CLcqjnLg.ebed69027134.js.gz +0 -0
  326. codex/static_root/assets/confirm-footer-CLcqjnLg.js.br +0 -0
  327. codex/static_root/assets/confirm-footer-CLcqjnLg.js.gz +0 -0
  328. codex/static_root/assets/datetime-column-DPVO98E2.27e26fb391ca.js.br +0 -0
  329. codex/static_root/assets/datetime-column-DPVO98E2.27e26fb391ca.js.gz +0 -0
  330. codex/static_root/assets/datetime-column-DPVO98E2.js.br +0 -0
  331. codex/static_root/assets/datetime-column-DPVO98E2.js.gz +0 -0
  332. codex/static_root/assets/filter-Cqjy01SO.71710ea1c7f8.js.br +0 -0
  333. codex/static_root/assets/filter-Cqjy01SO.71710ea1c7f8.js.gz +0 -0
  334. codex/static_root/assets/filter-Cqjy01SO.js.br +0 -0
  335. codex/static_root/assets/filter-Cqjy01SO.js.gz +0 -0
  336. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js +0 -1
  337. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js.br +0 -0
  338. codex/static_root/assets/flag-tab-BERamYWo.52c4bc9b4243.js.gz +0 -0
  339. codex/static_root/assets/flag-tab-BERamYWo.js +0 -1
  340. codex/static_root/assets/flag-tab-BERamYWo.js.br +0 -0
  341. codex/static_root/assets/flag-tab-BERamYWo.js.gz +0 -0
  342. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css +0 -1
  343. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css.br +0 -1
  344. codex/static_root/assets/flag-tab-DUXtbpA2.8d52c0d4f9e2.css.gz +0 -0
  345. codex/static_root/assets/flag-tab-DUXtbpA2.css +0 -1
  346. codex/static_root/assets/flag-tab-DUXtbpA2.css.br +0 -1
  347. codex/static_root/assets/flag-tab-DUXtbpA2.css.gz +0 -0
  348. codex/static_root/assets/group-tab-DknI2YL3.7b2e5d32ee7e.js.br +0 -0
  349. codex/static_root/assets/group-tab-DknI2YL3.7b2e5d32ee7e.js.gz +0 -0
  350. codex/static_root/assets/group-tab-DknI2YL3.js.br +0 -0
  351. codex/static_root/assets/group-tab-DknI2YL3.js.gz +0 -0
  352. codex/static_root/assets/http-error-DxxoT0wf.8f26afe5c1dd.js.br +0 -0
  353. codex/static_root/assets/http-error-DxxoT0wf.8f26afe5c1dd.js.gz +0 -0
  354. codex/static_root/assets/http-error-DxxoT0wf.js.br +0 -0
  355. codex/static_root/assets/http-error-DxxoT0wf.js.gz +0 -0
  356. codex/static_root/assets/library-tab-DXCuu0zS.6a7b7e48a6f5.js.br +0 -0
  357. codex/static_root/assets/library-tab-DXCuu0zS.6a7b7e48a6f5.js.gz +0 -0
  358. codex/static_root/assets/library-tab-DXCuu0zS.js.br +0 -0
  359. codex/static_root/assets/library-tab-DXCuu0zS.js.gz +0 -0
  360. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js +0 -37
  361. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js.br +0 -0
  362. codex/static_root/assets/main-CTJQvqMb.1d5f619166b3.js.gz +0 -0
  363. codex/static_root/assets/main-CTJQvqMb.js +0 -37
  364. codex/static_root/assets/main-CTJQvqMb.js.br +0 -0
  365. codex/static_root/assets/main-CTJQvqMb.js.gz +0 -0
  366. codex/static_root/assets/main-CacfwsKA.4f849ef1c5db.css.br +0 -0
  367. codex/static_root/assets/main-CacfwsKA.css.br +0 -0
  368. codex/static_root/assets/metadata-dialog-CZDWNVCD.b78ed72bc090.js.br +0 -0
  369. codex/static_root/assets/metadata-dialog-CZDWNVCD.b78ed72bc090.js.gz +0 -0
  370. codex/static_root/assets/metadata-dialog-CZDWNVCD.js.br +0 -0
  371. codex/static_root/assets/metadata-dialog-CZDWNVCD.js.gz +0 -0
  372. codex/static_root/assets/pdf-doc-C_LEA8HV.6bd1dba60a0b.js.br +0 -0
  373. codex/static_root/assets/pdf-doc-C_LEA8HV.6bd1dba60a0b.js.gz +0 -0
  374. codex/static_root/assets/pdf-doc-C_LEA8HV.js.br +0 -0
  375. codex/static_root/assets/pdf-doc-C_LEA8HV.js.gz +0 -0
  376. codex/static_root/assets/reader-DXk46jdF.0a2b0809bd02.js.br +0 -0
  377. codex/static_root/assets/reader-DXk46jdF.0a2b0809bd02.js.gz +0 -0
  378. codex/static_root/assets/reader-DXk46jdF.js.br +0 -0
  379. codex/static_root/assets/reader-DXk46jdF.js.gz +0 -0
  380. codex/static_root/assets/stats-tab-Dy0YEoJ4.f24c8ddba0d3.js.br +0 -0
  381. codex/static_root/assets/stats-tab-Dy0YEoJ4.f24c8ddba0d3.js.gz +0 -0
  382. codex/static_root/assets/stats-tab-Dy0YEoJ4.js.br +0 -0
  383. codex/static_root/assets/stats-tab-Dy0YEoJ4.js.gz +0 -0
  384. codex/static_root/assets/task-tab-Bv3B4rCC.1546850899dc.js.br +0 -0
  385. codex/static_root/assets/task-tab-Bv3B4rCC.1546850899dc.js.gz +0 -0
  386. codex/static_root/assets/task-tab-Bv3B4rCC.js.br +0 -0
  387. codex/static_root/assets/task-tab-Bv3B4rCC.js.gz +0 -0
  388. codex/static_root/assets/user-tab-CSF2DZe5.8e65aaed43b2.js.br +0 -0
  389. codex/static_root/assets/user-tab-CSF2DZe5.8e65aaed43b2.js.gz +0 -0
  390. codex/static_root/assets/user-tab-CSF2DZe5.js.br +0 -0
  391. codex/static_root/assets/user-tab-CSF2DZe5.js.gz +0 -0
  392. codex/static_root/manifest.24ec466b9bcf.json.br +0 -0
  393. codex/static_root/manifest.24ec466b9bcf.json.gz +0 -0
  394. {codex-1.5.13a2.dist-info → codex-1.5.14.dist-info}/LICENSE +0 -0
  395. {codex-1.5.13a2.dist-info → codex-1.5.14.dist-info}/WHEEL +0 -0
  396. {codex-1.5.13a2.dist-info → codex-1.5.14.dist-info}/entry_points.txt +0 -0
@@ -86,7 +86,7 @@ class CreateForeignKeysMixin(QueuedThread):
86
86
  return obj
87
87
 
88
88
  @status_notify()
89
- def _bulk_group_create(self, group_tree_counts, group_class, status=None):
89
+ def _bulk_group_create(self, group_tree_counts, group_class, status=None) -> int:
90
90
  """Bulk creates groups."""
91
91
  count = 0
92
92
  if not group_tree_counts:
@@ -292,11 +292,10 @@ class CreateForeignKeysMixin(QueuedThread):
292
292
  )
293
293
  return total_fks
294
294
 
295
- def create_all_fks(self, library, create_data):
295
+ def create_all_fks(self, library, create_data) -> int:
296
296
  """Bulk create all foreign keys."""
297
297
  total_fks = self._get_create_fks_totals(create_data)
298
298
  status = Status(ImportStatusTypes.CREATE_FKS, 0, total_fks)
299
- status.complete = 0 # Helps the type checker.
300
299
  try:
301
300
  self.status_controller.start(status)
302
301
  (
@@ -310,31 +309,35 @@ class CreateForeignKeysMixin(QueuedThread):
310
309
  ) = create_data
311
310
 
312
311
  for group_class, group_tree_counts in create_groups.items():
313
- status.complete += self._bulk_group_create(
312
+ count = self._bulk_group_create(
314
313
  group_tree_counts,
315
314
  group_class,
316
315
  status=status,
317
316
  )
317
+ status.add_complete(count)
318
318
 
319
319
  for group_class, group_tree_counts in update_groups.items():
320
- status.complete += self._bulk_group_updater(
320
+ count = self._bulk_group_updater(
321
321
  group_tree_counts,
322
322
  group_class,
323
323
  status=status,
324
324
  )
325
+ status.add_complete(count)
325
326
 
326
- status.complete += self.bulk_folders_create(
327
+ count = self.bulk_folders_create(
327
328
  sorted(create_folder_paths),
328
329
  library,
329
330
  status=status,
330
331
  )
332
+ status.add_complete(count)
331
333
 
332
334
  for named_class, names in create_fks.items():
333
- status.complete += self._bulk_create_named_models(
335
+ count = self._bulk_create_named_models(
334
336
  names,
335
337
  named_class,
336
338
  status=status,
337
339
  )
340
+ status.add_complete(count)
338
341
 
339
342
  # These all depend on bulk_create_named_models running first
340
343
  create_dict_data = (
@@ -347,13 +350,14 @@ class CreateForeignKeysMixin(QueuedThread):
347
350
  (Identifier, create_identifiers, self._create_identifier),
348
351
  )
349
352
  for model, create_objs, func in create_dict_data:
350
- status.complete += self._bulk_create_dict_models(
353
+ count = self._bulk_create_dict_models(
351
354
  create_objs,
352
355
  func,
353
356
  model,
354
357
  status=status,
355
358
  )
359
+ status.add_complete(count)
356
360
 
357
361
  finally:
358
362
  self.status_controller.finish(status)
359
- return status.complete
363
+ return status.complete if status.complete else 0
@@ -193,7 +193,7 @@ class ComicImporterThread(
193
193
  self._log_task(library.path, task)
194
194
  self._init_librarian_status(task, library.path)
195
195
 
196
- def _create_comic_relations(self, library, fks):
196
+ def _create_comic_relations(self, library, fks) -> int:
197
197
  """Query all foreign keys to determine what needs creating, then create them."""
198
198
  if not fks:
199
199
  return 0
@@ -240,7 +240,7 @@ class ComicImporterThread(
240
240
  try:
241
241
  self._init_apply(library, task)
242
242
 
243
- changed = 0
243
+ changed: int = 0
244
244
  changed += self.move_and_modify_dirs(library, task)
245
245
 
246
246
  modified_paths = task.files_modified
codex/models/comic.py CHANGED
@@ -279,3 +279,7 @@ class Comic(WatchedPath):
279
279
  if self.issue_suffix:
280
280
  res += self.issue_suffix
281
281
  return res
282
+
283
+ def search_path(self) -> str:
284
+ """Relative path for search index."""
285
+ return self.path.removeprefix(self.library.path)
codex/search/backend.py CHANGED
@@ -35,7 +35,7 @@ from codex._vendor.haystack.exceptions import SearchBackendError, SkipDocument
35
35
  from codex.librarian.search.status import SearchIndexStatusTypes
36
36
  from codex.logger.logging import get_logger
37
37
  from codex.memory import get_mem_limit
38
- from codex.models import Comic
38
+ from codex.models import AdminFlag, Comic
39
39
  from codex.search.indexes import ComicIndex
40
40
  from codex.search.writing import CodexWriter
41
41
  from codex.settings.settings import (
@@ -131,6 +131,7 @@ class CodexSearchBackend(WhooshSearchBackend, WorkerBaseMixin):
131
131
  "original_format": ("format",),
132
132
  "page_count": ("pages",),
133
133
  "reading_direction": ("direction",),
134
+ "search_path": ("path", *gen_multipart_field_aliases("folders")),
134
135
  "series_groups": gen_multipart_field_aliases("series_groups"),
135
136
  "scan_info": ("scan",),
136
137
  "stories": ("story",),
@@ -460,12 +461,19 @@ class CodexSearchBackend(WhooshSearchBackend, WorkerBaseMixin):
460
461
  )
461
462
  return count
462
463
 
464
+ folder_view_enabled = AdminFlag.objects.get(
465
+ key=AdminFlag.FlagChoices.FOLDER_VIEW.value
466
+ ).on
463
467
  for obj in iterable:
464
468
  if abort_event and abort_event.is_set():
465
469
  self.log.debug(
466
470
  f"Stopped search index update batch {batch_num} at {count} updates."
467
471
  )
468
472
  break
473
+ if not folder_view_enabled:
474
+ # Hide path if folder view is disabled.
475
+ # This also affects field search.
476
+ obj.search_path = "" # type: ignore
469
477
  count += self._update_obj(index, writer, batch_num, obj)
470
478
  return self._update_finish(count, batch_num, writer)
471
479
 
codex/search/indexes.py CHANGED
@@ -48,6 +48,8 @@ class ComicIndex(ModelSearchIndex, Indexable):
48
48
  community_rating = FloatField(model_attr="community_rating", null=True)
49
49
  critical_rating = FloatField(model_attr="critical_rating", null=True)
50
50
 
51
+ search_path = CharField(model_attr="search_path", null=True)
52
+
51
53
  class Meta:
52
54
  """Model & field include list."""
53
55
 
@@ -41,6 +41,24 @@ LOGLEVEL = get_loglevel(DEBUG)
41
41
  LOG_DIR = Path(environ.get("CODEX_LOG_DIR", CONFIG_PATH / "logs"))
42
42
  LOG_TO_CONSOLE = environ.get("CODEX_LOG_TO_CONSOLE") != "0"
43
43
  LOG_TO_FILE = environ.get("CODEX_LOG_TO_FILE") != "0"
44
+ BUILD = environ.get("BUILD", False)
45
+ # Slow query middleware
46
+ # limit in seconds
47
+ SLOW_QUERY_LIMIT = float(environ.get("CODEX_SLOW_QUERY_LIMIT", 0.5))
48
+ LOG_RESPONSE_TIME = bool(environ.get("CODEX_LOG_RESPONSE_TIME", False))
49
+ TZ = environ.get("TIMEZONE", environ.get("TZ"))
50
+ # Search indexing memory controls
51
+ MMAP_RATIO = int(environ.get("CODEX_MMAP_RATIO", 240))
52
+ WRITER_MEMORY_PERCENT = float(environ.get("CODEX_WRITER_MEMORY_PERCENT", 0.6))
53
+ CPU_MULTIPLIER = float(environ.get("CODEX_CPU_MULTIPLIER", 1.25))
54
+ CHUNK_PER_GB = int(environ.get("CODEX_CHUNK_PER_GB", 250))
55
+ MAX_CHUNK_SIZE = int(environ.get("CODEX_MAX_CHUNK_SIZE", 1000))
56
+ # sqlite parser breaks with more than 1000 variables in a query and django only
57
+ # fixes this in the bulk_create & bulk_update functions. So for complicated
58
+ # queries I gotta batch them myself. Filter arg count is a proxy, but it works.
59
+ FILTER_BATCH_SIZE = int(environ.get("CODEX_FILTER_BATCH_SIZE", 990))
60
+ VITE_HOST = environ.get("VITE_HOST", socket.gethostname())
61
+
44
62
  if not DEBUG:
45
63
  LOGGING = {
46
64
  "version": 1,
@@ -80,8 +98,14 @@ INSTALLED_APPS += [
80
98
  "rest_framework",
81
99
  "rest_registration",
82
100
  "corsheaders",
83
- "django_vite",
101
+ ]
102
+ if not BUILD:
103
+ INSTALLED_APPS += [
104
+ "django_vite",
105
+ ]
106
+ INSTALLED_APPS += [
84
107
  "codex",
108
+ "cachalot",
85
109
  "drf_spectacular",
86
110
  ]
87
111
 
@@ -100,11 +124,14 @@ MIDDLEWARE = [
100
124
  if DEBUG:
101
125
  MIDDLEWARE += [
102
126
  "nplusone.ext.django.NPlusOneMiddleware",
103
- "codex.middleware.LogResponseTimeMiddleware",
104
127
  ]
105
128
  NPLUSONE_LOGGER = getLogger("nplusone")
106
129
  NPLUSONE_LOG_LEVEL = WARN
107
130
 
131
+ if LOG_RESPONSE_TIME:
132
+ MIDDLEWARE += [
133
+ "codex.middleware.LogResponseTimeMiddleware",
134
+ ]
108
135
 
109
136
  ROOT_URLCONF = "codex.urls.root"
110
137
 
@@ -176,7 +203,6 @@ AUTH_PASSWORD_VALIDATORS = [
176
203
  # https://docs.djangoproject.com/en/dev/topics/i18n/
177
204
  LANGUAGE_CODE = "en-us"
178
205
  USE_I18N = True
179
- TZ = environ.get("TIMEZONE", environ.get("TZ"))
180
206
  TIME_ZONE = get_time_zone(TZ)
181
207
 
182
208
  # Hypercorn
@@ -205,7 +231,6 @@ STORAGES = {
205
231
  }
206
232
  }
207
233
  STATICFILES_DIRS = []
208
- BUILD = environ.get("BUILD", False)
209
234
  if DEBUG or BUILD:
210
235
  STATIC_SRC = CODEX_PATH / "static_src"
211
236
  STATIC_SRC.mkdir(exist_ok=True, parents=True)
@@ -295,31 +320,18 @@ HAYSTACK_CONNECTIONS = {
295
320
  },
296
321
  }
297
322
  HAYSTACK_LOGGING = False
298
- # Search indexing memory controls
299
- MMAP_RATIO = int(environ.get("CODEX_MMAP_RATIO", 240))
300
- WRITER_MEMORY_PERCENT = float(environ.get("CODEX_WRITER_MEMORY_PERCENT", 0.6))
301
- CPU_MULTIPLIER = float(environ.get("CODEX_CPU_MULTIPLIER", 1.25))
302
- CHUNK_PER_GB = int(environ.get("CODEX_CHUNK_PER_GB", 250))
303
- MAX_CHUNK_SIZE = int(environ.get("CODEX_MAX_CHUNK_SIZE", 1000))
304
-
305
323
  CHANNEL_LAYERS = {
306
324
  "default": {"BACKEND": "channels.layers.InMemoryChannelLayer"},
307
325
  }
308
326
 
309
- if DEBUG:
327
+ if DEBUG and not BUILD:
310
328
  DJANGO_VITE = {
311
329
  "default": {
312
330
  "dev_mode": DEBUG,
313
- "dev_server_host": environ.get("VITE_HOST", socket.gethostname()),
331
+ "dev_server_host": VITE_HOST,
314
332
  }
315
333
  }
316
334
 
317
- # sqlite parser breaks with more than 1000 variables in a query and django only
318
- # fixes this in the bulk_create & bulk_update functions. So for complicated
319
- # queries I gotta batch them myself. Filter arg count is a proxy, but it works.
320
- FILTER_BATCH_SIZE = int(environ.get("CODEX_FILTER_BATCH_SIZE", 990))
321
-
322
- # Slow query middleware
323
- # limit in seconds
324
- SLOW_QUERY_LIMIT = float(environ.get("CODEX_SLOW_QUERY_LIMIT", 0.5))
325
- LOG_RESPONSE_TIME = bool(environ.get("CODEX_LOG_RESPONSE_TIME", False))
335
+ CACHALOT_UNCACHABLE_TABLES = frozenset(
336
+ {"django_migrations", "django_session", "codex_useractive"}
337
+ )
@@ -2,7 +2,7 @@
2
2
 
3
3
  import re
4
4
 
5
- IMF_RE = re.compile(r"^.+\.[0-9a-f]{8,12}\..+$")
5
+ IMF_RE = re.compile(r"^.+[.-][0-9a-zA-Z_-]{8,12}\..+$")
6
6
 
7
7
 
8
8
  def immutable_file_test(_path, url):
@@ -1 +1 @@
1
- import{m as A,V as t}from"./VCheckboxBtn-C7T6Tf80.js";import{a as F,u as I,V as l}from"./VSelectionControl-CEOyDLZC.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-UQNBz5Mr.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w as V};
1
+ import{m as A,V as t}from"./VCheckboxBtn-tlNM-0ad.js";import{a as F,u as I,V as l}from"./VSelectionControl-BgzeMswJ.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-Bd8JDQcd.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w as V};
@@ -1 +1 @@
1
- import{m as A,V as t}from"./VCheckboxBtn-C7T6Tf80.js";import{a as F,u as I,V as l}from"./VSelectionControl-CEOyDLZC.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-UQNBz5Mr.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w as V};
1
+ import{m as A,V as t}from"./VCheckboxBtn-tlNM-0ad.js";import{a as F,u as I,V as l}from"./VSelectionControl-BgzeMswJ.js";import{x as B,ah as U,G as R,ar as D,C as G,h as K,K as L,c5 as M,L as u,am as r}from"./admin-drawer-panel-Bd8JDQcd.js";const N=B({...F(),...U(A(),["inline"])},"VCheckbox"),w=R()({name:"VCheckbox",inheritAttrs:!1,props:N(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,c){let{attrs:d,slots:a}=c;const s=D(e,"modelValue"),{isFocused:n,focus:i,blur:m}=I(e),V=G(),p=K(()=>e.id||`checkbox-${V}`);return L(()=>{const[b,f]=M(d),v=l.filterProps(e),h=t.filterProps(e);return u(l,r({class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:p.value,focused:n.value,style:e.style}),{...a,default:o=>{let{id:k,messagesId:x,isDisabled:P,isReadonly:C,isValid:y}=o;return u(t,r(h,{id:k.value,"aria-describedby":x.value,disabled:P.value,readonly:C.value},f,{error:y.value===!1,modelValue:s.value,"onUpdate:modelValue":g=>s.value=g,onFocus:i,onBlur:m}),a)}})}),{}}});export{w as V};
@@ -1 +1 @@
1
- import{c as f,d as o}from"./VSelectionControl-CEOyDLZC.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-UQNBz5Mr.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
1
+ import{c as f,d as o}from"./VSelectionControl-BgzeMswJ.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-Bd8JDQcd.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
@@ -1 +1 @@
1
- import{c as f,d as o}from"./VSelectionControl-CEOyDLZC.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-UQNBz5Mr.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
1
+ import{c as f,d as o}from"./VSelectionControl-BgzeMswJ.js";import{x as V,co as h,G as v,ar as c,h as l,K as x,ah as I,L as k,am as b}from"./admin-drawer-panel-Bd8JDQcd.js";const C=V({indeterminate:Boolean,indeterminateIcon:{type:h,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=v()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(a){t.value&&(t.value=!1)}const i=l(()=>t.value?e.indeterminateIcon:e.falseIcon),m=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return x(()=>{const a=I(o.filterProps(e),["modelValue"]);return k(o,b(a,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:i.value,trueIcon:m.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m};
@@ -1 +1 @@
1
- import{m as pe,u as Ce,a as ke,b as we,c as Se}from"./VSelect-CLw1oGQg.js";import{c as Fe,a as X}from"./VSlideGroup-r8lyA6_4.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as b,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Ee,K as Me,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as He,u as $e}from"./filter-Cqjy01SO.js";import{g as qe}from"./VSelectionControl-CEOyDLZC.js";import{f as Ge}from"./confirm-footer-CLcqjnLg.js";import{V as We}from"./VCheckboxBtn-C7T6Tf80.js";function Je(e,g,R){if(g==null)return e;if(Array.isArray(g))throw new Error("Multiple matches is not implemented");return typeof g=="number"&&~g?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,g)]),s("span",{class:"v-combobox__mask"},[e.substr(g,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(g+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,g){var W;let{emit:R,slots:n}=g;const{t:B}=Re(),V=O(),x=P(!1),p=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=b({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=b(()=>{var l;return(l=V.value)==null?void 0:l.color}),G=b(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=b(()=>!!(e.chips||n.chip)),C=b(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=b({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&m(D(e,a))}),k.value="")}l||(r.value=-1),p.value=!l}}),se=b(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):x.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:E,getMatches:re}=$e(e,te,()=>p.value?"":v.value),y=b(()=>e.hideSelected?E.value.filter(l=>!u.value.some(t=>t.value===l.value)):E.value),ce=b(()=>u.value.map(l=>l.value)),M=b(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=y.value[0])==null?void 0:t.title))&&y.value.length>0&&!p.value&&!_.value}),z=b(()=>e.hideNoData&&!y.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=Ce(H,V);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(x.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=V.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(M.value&&["Enter","Tab"].includes(l.key)&&m(E.value[0]),p.value=!0),l.key==="ArrowDown"&&M.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(m(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return m(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;m(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(0,0))}}}function ge(){var l;x.value&&(p.value=!0,(l=V.value)==null||l.focus())}function m(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,p.value=!0})}}function xe(l){x.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(x,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,M.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===y.value[0].value})){m(y.value[0]);return}if(v.value){if(e.multiple){m(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":m(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=y.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Ee&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||x.value&&!t.length&&l.length&&(c.value=!0)}),Me(()=>{const l=!!(!e.hideNoData||y.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:V},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:x.value,"onUpdate:focused":a=>x.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(ke,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,h;return[(a=n["prepend-item"])==null?void 0:a.call(n),!y.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:y.value},{default:w=>{var Q;let{item:d,index:S,itemRef:f}=w;const J=I(d.props,{ref:f,key:S,active:M.value&&S===0?!0:void 0,onClick:()=>m(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:S,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return p.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(h=n["append-item"])==null?void 0:h.call(n)]}})]}),u.value.map((a,o)=>{function h(f){f.stopPropagation(),f.preventDefault(),m(a,!1)}const w={"onClick:close":h,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),h(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,S=d?Oe(T.value?n.chip({item:a,index:o,props:w}):n.selection({item:a,index:o})):void 0;if(!(d&&!S))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},w),null):S??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var w;for(var a=arguments.length,o=new Array(a),h=0;h<a;h++)o[h]=arguments[h];return s(K,null,[(w=n["append-inner"])==null?void 0:w.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:x,isPristine:p,menu:c,search:v,selectionIndex:r,filteredItems:E,select:m},V)}});export{ul as V};
1
+ import{m as pe,u as Ce,a as ke,b as we,c as Se}from"./VSelect-Bng0oQPD.js";import{c as Fe,a as X}from"./VSlideGroup-r0m4k0_1.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as b,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Ee,K as Me,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-Bd8JDQcd.js";import{m as He,u as $e}from"./filter-C9a1yuyT.js";import{g as qe}from"./VSelectionControl-BgzeMswJ.js";import{f as Ge}from"./confirm-footer-bZLoGqQV.js";import{V as We}from"./VCheckboxBtn-tlNM-0ad.js";function Je(e,g,R){if(g==null)return e;if(Array.isArray(g))throw new Error("Multiple matches is not implemented");return typeof g=="number"&&~g?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,g)]),s("span",{class:"v-combobox__mask"},[e.substr(g,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(g+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,g){var W;let{emit:R,slots:n}=g;const{t:B}=Re(),V=O(),x=P(!1),p=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=b({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=b(()=>{var l;return(l=V.value)==null?void 0:l.color}),G=b(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=b(()=>!!(e.chips||n.chip)),C=b(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=b({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&m(D(e,a))}),k.value="")}l||(r.value=-1),p.value=!l}}),se=b(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):x.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:E,getMatches:re}=$e(e,te,()=>p.value?"":v.value),y=b(()=>e.hideSelected?E.value.filter(l=>!u.value.some(t=>t.value===l.value)):E.value),ce=b(()=>u.value.map(l=>l.value)),M=b(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=y.value[0])==null?void 0:t.title))&&y.value.length>0&&!p.value&&!_.value}),z=b(()=>e.hideNoData&&!y.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=Ce(H,V);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(x.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=V.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(M.value&&["Enter","Tab"].includes(l.key)&&m(E.value[0]),p.value=!0),l.key==="ArrowDown"&&M.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(m(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return m(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;m(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(0,0))}}}function ge(){var l;x.value&&(p.value=!0,(l=V.value)==null||l.focus())}function m(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,p.value=!0})}}function xe(l){x.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(x,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,M.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===y.value[0].value})){m(y.value[0]);return}if(v.value){if(e.multiple){m(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":m(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=y.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Ee&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||x.value&&!t.length&&l.length&&(c.value=!0)}),Me(()=>{const l=!!(!e.hideNoData||y.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:V},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:x.value,"onUpdate:focused":a=>x.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(ke,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,h;return[(a=n["prepend-item"])==null?void 0:a.call(n),!y.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:y.value},{default:w=>{var Q;let{item:d,index:S,itemRef:f}=w;const J=I(d.props,{ref:f,key:S,active:M.value&&S===0?!0:void 0,onClick:()=>m(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:S,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return p.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(h=n["append-item"])==null?void 0:h.call(n)]}})]}),u.value.map((a,o)=>{function h(f){f.stopPropagation(),f.preventDefault(),m(a,!1)}const w={"onClick:close":h,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),h(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,S=d?Oe(T.value?n.chip({item:a,index:o,props:w}):n.selection({item:a,index:o})):void 0;if(!(d&&!S))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},w),null):S??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var w;for(var a=arguments.length,o=new Array(a),h=0;h<a;h++)o[h]=arguments[h];return s(K,null,[(w=n["append-inner"])==null?void 0:w.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:x,isPristine:p,menu:c,search:v,selectionIndex:r,filteredItems:E,select:m},V)}});export{ul as V};
@@ -1 +1 @@
1
- import{m as pe,u as Ce,a as ke,b as we,c as Se}from"./VSelect-CLw1oGQg.js";import{c as Fe,a as X}from"./VSlideGroup-r8lyA6_4.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as b,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Ee,K as Me,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-UQNBz5Mr.js";import{m as He,u as $e}from"./filter-Cqjy01SO.js";import{g as qe}from"./VSelectionControl-CEOyDLZC.js";import{f as Ge}from"./confirm-footer-CLcqjnLg.js";import{V as We}from"./VCheckboxBtn-C7T6Tf80.js";function Je(e,g,R){if(g==null)return e;if(Array.isArray(g))throw new Error("Multiple matches is not implemented");return typeof g=="number"&&~g?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,g)]),s("span",{class:"v-combobox__mask"},[e.substr(g,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(g+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,g){var W;let{emit:R,slots:n}=g;const{t:B}=Re(),V=O(),x=P(!1),p=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=b({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=b(()=>{var l;return(l=V.value)==null?void 0:l.color}),G=b(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=b(()=>!!(e.chips||n.chip)),C=b(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=b({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&m(D(e,a))}),k.value="")}l||(r.value=-1),p.value=!l}}),se=b(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):x.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:E,getMatches:re}=$e(e,te,()=>p.value?"":v.value),y=b(()=>e.hideSelected?E.value.filter(l=>!u.value.some(t=>t.value===l.value)):E.value),ce=b(()=>u.value.map(l=>l.value)),M=b(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=y.value[0])==null?void 0:t.title))&&y.value.length>0&&!p.value&&!_.value}),z=b(()=>e.hideNoData&&!y.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=Ce(H,V);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(x.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=V.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(M.value&&["Enter","Tab"].includes(l.key)&&m(E.value[0]),p.value=!0),l.key==="ArrowDown"&&M.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(m(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return m(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;m(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(0,0))}}}function ge(){var l;x.value&&(p.value=!0,(l=V.value)==null||l.focus())}function m(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,p.value=!0})}}function xe(l){x.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(x,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,M.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===y.value[0].value})){m(y.value[0]);return}if(v.value){if(e.multiple){m(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":m(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=y.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Ee&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||x.value&&!t.length&&l.length&&(c.value=!0)}),Me(()=>{const l=!!(!e.hideNoData||y.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:V},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:x.value,"onUpdate:focused":a=>x.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(ke,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,h;return[(a=n["prepend-item"])==null?void 0:a.call(n),!y.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:y.value},{default:w=>{var Q;let{item:d,index:S,itemRef:f}=w;const J=I(d.props,{ref:f,key:S,active:M.value&&S===0?!0:void 0,onClick:()=>m(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:S,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return p.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(h=n["append-item"])==null?void 0:h.call(n)]}})]}),u.value.map((a,o)=>{function h(f){f.stopPropagation(),f.preventDefault(),m(a,!1)}const w={"onClick:close":h,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),h(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,S=d?Oe(T.value?n.chip({item:a,index:o,props:w}):n.selection({item:a,index:o})):void 0;if(!(d&&!S))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},w),null):S??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var w;for(var a=arguments.length,o=new Array(a),h=0;h<a;h++)o[h]=arguments[h];return s(K,null,[(w=n["append-inner"])==null?void 0:w.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:x,isPristine:p,menu:c,search:v,selectionIndex:r,filteredItems:E,select:m},V)}});export{ul as V};
1
+ import{m as pe,u as Ce,a as ke,b as we,c as Se}from"./VSelect-Bng0oQPD.js";import{c as Fe,a as X}from"./VSlideGroup-r0m4k0_1.js";import{x as Ie,ah as Pe,bb as De,G as Ae,bE as Re,r as O,s as P,ar as Y,h as b,cs as _e,aj as Te,ct as D,a as A,n as Z,V as Ee,K as Me,L as s,al as K,am as I,aO as Le,ag as ee,cu as Ne,ad as le,cv as Oe,c6 as Ke,aa as Be,cw as Ue,cx as je,cy as ze}from"./admin-drawer-panel-Bd8JDQcd.js";import{m as He,u as $e}from"./filter-C9a1yuyT.js";import{g as qe}from"./VSelectionControl-BgzeMswJ.js";import{f as Ge}from"./confirm-footer-bZLoGqQV.js";import{V as We}from"./VCheckboxBtn-tlNM-0ad.js";function Je(e,g,R){if(g==null)return e;if(Array.isArray(g))throw new Error("Multiple matches is not implemented");return typeof g=="number"&&~g?s(K,null,[s("span",{class:"v-combobox__unmask"},[e.substr(0,g)]),s("span",{class:"v-combobox__mask"},[e.substr(g,R)]),s("span",{class:"v-combobox__unmask"},[e.substr(g+R)])]):e}const Qe=Ie({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...He({filterKeys:["title"]}),...pe({hideNoData:!0,returnObject:!0}),...Pe(Fe({modelValue:null,role:"combobox"}),["validationValue","dirty","appendInnerIcon"]),...De({transition:!1})},"VCombobox"),ul=Ae()({name:"VCombobox",props:Qe(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,g){var W;let{emit:R,slots:n}=g;const{t:B}=Re(),V=O(),x=P(!1),p=P(!0),_=P(!1),$=O(),q=O(),U=Y(e,"menu"),c=b({get:()=>U.value,set:l=>{var t;U.value&&!l&&((t=$.value)!=null&&t.ΨopenChildren)||(U.value=l)}}),r=P(-1);let j=!1;const ae=b(()=>{var l;return(l=V.value)==null?void 0:l.color}),G=b(()=>c.value?e.closeText:e.openText),{items:te,transformIn:ue,transformOut:ne}=_e(e),{textColorClasses:oe,textColorStyles:ie}=Te(ae),u=Y(e,"modelValue",[],l=>ue(ze(l)),l=>{const t=ne(l);return e.multiple?t:t[0]??null}),F=qe(),T=b(()=>!!(e.chips||n.chip)),C=b(()=>T.value||!!n.selection),k=P(!e.multiple&&!C.value?((W=u.value[0])==null?void 0:W.title)??"":""),v=b({get:()=>k.value,set:l=>{var t;if(k.value=l??"",!e.multiple&&!C.value&&(u.value=[D(e,l)]),l&&e.multiple&&((t=e.delimiters)!=null&&t.length)){const i=l.split(new RegExp(`(?:${e.delimiters.join("|")})+`));i.length>1&&(i.forEach(a=>{a=a.trim(),a&&m(D(e,a))}),k.value="")}l||(r.value=-1),p.value=!l}}),se=b(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?u.value.length:v.value.length);A(k,l=>{j?Z(()=>j=!1):x.value&&!c.value&&(c.value=!0),R("update:search",l)}),A(u,l=>{var t;!e.multiple&&!C.value&&(k.value=((t=l[0])==null?void 0:t.title)??"")});const{filteredItems:E,getMatches:re}=$e(e,te,()=>p.value?"":v.value),y=b(()=>e.hideSelected?E.value.filter(l=>!u.value.some(t=>t.value===l.value)):E.value),ce=b(()=>u.value.map(l=>l.value)),M=b(()=>{var t;return(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&v.value===((t=y.value[0])==null?void 0:t.title))&&y.value.length>0&&!p.value&&!_.value}),z=b(()=>e.hideNoData&&!y.value.length||e.readonly||(F==null?void 0:F.isReadonly.value)),H=O(),{onListScroll:ve,onListKeydown:de}=Ce(H,V);function fe(l){j=!0,e.openOnClear&&(c.value=!0)}function me(){z.value||(c.value=!0)}function be(l){z.value||(x.value&&(l.preventDefault(),l.stopPropagation()),c.value=!c.value)}function he(l){var a;if(je(l)||e.readonly||F!=null&&F.isReadonly.value)return;const t=V.value.selectionStart,i=u.value.length;if((r.value>-1||["Enter","ArrowDown","ArrowUp"].includes(l.key))&&l.preventDefault(),["Enter","ArrowDown"].includes(l.key)&&(c.value=!0),["Escape"].includes(l.key)&&(c.value=!1),["Enter","Escape","Tab"].includes(l.key)&&(M.value&&["Enter","Tab"].includes(l.key)&&m(E.value[0]),p.value=!0),l.key==="ArrowDown"&&M.value&&((a=H.value)==null||a.focus("next")),l.key==="Enter"&&v.value&&(m(D(e,v.value)),C.value&&(k.value="")),["Backspace","Delete"].includes(l.key)){if(!e.multiple&&C.value&&u.value.length>0)return m(u.value[0],!1);if(r.value<0){l.key==="Backspace"&&!v.value&&(r.value=i-1);return}const o=r.value;m(u.value[r.value],!1),r.value=o>=i-1?i-2:o}if(e.multiple){if(l.key==="ArrowLeft"){if(r.value<0&&t>0)return;const o=r.value>-1?r.value-1:i-1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(v.value.length,v.value.length))}if(l.key==="ArrowRight"){if(r.value<0)return;const o=r.value+1;u.value[o]?r.value=o:(r.value=-1,V.value.setSelectionRange(0,0))}}}function ge(){var l;x.value&&(p.value=!0,(l=V.value)==null||l.focus())}function m(l){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!l||l.props.disabled))if(e.multiple){const i=u.value.findIndex(o=>e.valueComparator(o.value,l.value)),a=t??!~i;if(~i){const o=a?[...u.value,l]:[...u.value];o.splice(i,1),u.value=o}else a&&(u.value=[...u.value,l]);e.clearOnSelect&&(v.value="")}else{const i=t!==!1;u.value=i?[l]:[],k.value=i&&!C.value?l.title:"",Z(()=>{c.value=!1,p.value=!0})}}function xe(l){x.value=!0,setTimeout(()=>{_.value=!0})}function ye(l){_.value=!1}function Ve(l){(l==null||l===""&&!e.multiple)&&(u.value=[])}return A(x,(l,t)=>{if(!(l||l===t)){if(r.value=-1,c.value=!1,M.value&&!_.value&&!u.value.some(i=>{let{value:a}=i;return a===y.value[0].value})){m(y.value[0]);return}if(v.value){if(e.multiple){m(D(e,v.value));return}if(!C.value)return;u.value.some(i=>{let{title:a}=i;return a===v.value})?k.value="":m(D(e,v.value))}}}),A(c,()=>{if(!e.hideSelected&&c.value&&u.value.length){const l=y.value.findIndex(t=>u.value.some(i=>e.valueComparator(i.value,t.value)));Ee&&window.requestAnimationFrame(()=>{var t;l>=0&&((t=q.value)==null||t.scrollToIndex(l))})}}),A(()=>e.items,(l,t)=>{c.value||x.value&&!t.length&&l.length&&(c.value=!0)}),Me(()=>{const l=!!(!e.hideNoData||y.value.length||n["prepend-item"]||n["append-item"]||n["no-data"]),t=u.value.length>0,i=X.filterProps(e);return s(X,I({ref:V},i,{modelValue:v.value,"onUpdate:modelValue":[a=>v.value=a,Ve],focused:x.value,"onUpdate:focused":a=>x.value=a,validationValue:u.externalValue,counterValue:se.value,dirty:t,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!C.value,"v-combobox--selecting-index":r.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:e.readonly,placeholder:t?void 0:e.placeholder,"onClick:clear":fe,"onMousedown:control":me,onKeydown:he}),{...n,default:()=>s(K,null,[s(ke,I({ref:$,modelValue:c.value,"onUpdate:modelValue":a=>c.value=a,activator:"parent",contentClass:"v-combobox__content",disabled:z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterLeave:ge},e.menuProps),{default:()=>[l&&s(Le,I({ref:H,selected:ce.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:a=>a.preventDefault(),onKeydown:de,onFocusin:xe,onFocusout:ye,onScrollPassive:ve,tabindex:"-1","aria-live":"polite",color:e.itemColor??e.color},e.listProps),{default:()=>{var a,o,h;return[(a=n["prepend-item"])==null?void 0:a.call(n),!y.value.length&&!e.hideNoData&&(((o=n["no-data"])==null?void 0:o.call(n))??s(ee,{title:B(e.noDataText)},null)),s(we,{ref:q,renderless:!0,items:y.value},{default:w=>{var Q;let{item:d,index:S,itemRef:f}=w;const J=I(d.props,{ref:f,key:S,active:M.value&&S===0?!0:void 0,onClick:()=>m(d,null)});return((Q=n.item)==null?void 0:Q.call(n,{item:d,index:S,props:J}))??s(ee,I(J,{role:"option"}),{prepend:L=>{let{isSelected:N}=L;return s(K,null,[e.multiple&&!e.hideSelected?s(We,{key:d.value,modelValue:N,ripple:!1,tabindex:"-1"},null):void 0,d.props.prependAvatar&&s(Ne,{image:d.props.prependAvatar},null),d.props.prependIcon&&s(le,{icon:d.props.prependIcon},null)])},title:()=>{var L,N;return p.value?d.title:Je(d.title,(L=re(d))==null?void 0:L.title,((N=v.value)==null?void 0:N.length)??0)}})}}),(h=n["append-item"])==null?void 0:h.call(n)]}})]}),u.value.map((a,o)=>{function h(f){f.stopPropagation(),f.preventDefault(),m(a,!1)}const w={"onClick:close":h,onKeydown(f){f.key!=="Enter"&&f.key!==" "||(f.preventDefault(),f.stopPropagation(),h(f))},onMousedown(f){f.preventDefault(),f.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0},d=T.value?!!n.chip:!!n.selection,S=d?Oe(T.value?n.chip({item:a,index:o,props:w}):n.selection({item:a,index:o})):void 0;if(!(d&&!S))return s("div",{key:a.value,class:["v-combobox__selection",o===r.value&&["v-combobox__selection--selected",oe.value]],style:o===r.value?ie.value:{}},[T.value?n.chip?s(Ke,{key:"chip-defaults",defaults:{VChip:{closable:e.closableChips,size:"small",text:a.title}}},{default:()=>[S]}):s(Se,I({key:"chip",closable:e.closableChips,size:"small",text:a.title,disabled:a.props.disabled},w),null):S??s("span",{class:"v-combobox__selection-text"},[a.title,e.multiple&&o<u.value.length-1&&s("span",{class:"v-combobox__selection-comma"},[Be(",")])])])})]),"append-inner":function(){var w;for(var a=arguments.length,o=new Array(a),h=0;h<a;h++)o[h]=arguments[h];return s(K,null,[(w=n["append-inner"])==null?void 0:w.call(n,...o),(!e.hideNoData||e.items.length)&&e.menuIcon?s(le,{class:"v-combobox__menu-icon",icon:e.menuIcon,onMousedown:be,onClick:Ue,"aria-label":B(G.value),title:B(G.value)},null):void 0])}})}),Ge({isFocused:x,isPristine:p,menu:c,search:v,selectionIndex:r,filteredItems:E,select:m},V)}});export{ul as V};